1、渲染管线简介

渲染管线(Rendering Pipeline)其实就是GPU渲染流程。就是在一个三维坐标系下,基于一个视点,给定三维物体、光源以及照明模式、纹理等信息,如何绘制一幅呈现在视点画面中的二维图像的过程。

Unity官方的简介是这样的:

渲染管线执行一系列操作来获取场景的内容,并将这些内容显示在屏幕上。概括来说,这些操作如下:

  • 剔除
  • 渲染
  • 后期处理

2、渲染管线分类

经过Unity的不断迭代,现在留下的是两套:Built-In Render(内置渲染管线)和SRP(Scriptable Render Pipeline,可编程渲染管线)。

Built-In Render,兼容性较好,支持全平台,带来的弊端是效果并不是太好。

SRP是可编程渲染管线技术,可用C#脚本定制Unity的渲染过程,但自己定制渲染管线对编程要求很高,难度大,所以Unity提供里2个预制的管线:通用渲染管线URP(Universal Render Pipeline)和高清渲染管线HDRP(High Definition Render Pipeline),基本上涵盖了我们所有的需求,使用时不需要太底层的技术要求。

3、渲染管线对比

只找到了如下的对比如,基于Unity2018.3的:

接下来也主要针对这两种渲染管线做一些对比说明(关于图中的具体细节对比,后面再展开研究):

URP(前身为Lightweight Render Pipeline --- LWRP轻量级渲染管线)专注于性能,偏向移动端和低端机器,它拥有很多HDRP相同的功能,但为了在所有平台达到更好的性能,其做了一定的缩减,但这并不意味着URP做不出漂亮的东西。

HDRP专注于高端图形渲染,以画面为主 , 偏向高端机器和影视,但要想得到完成利用HDRP的完美表现能力,需要大量的贴图,漫反射贴图、高光贴图、金属贴图、平滑贴图、AO贴图、法线贴图、凹凸贴图、高度贴图,所以不是对效果有特别大需求的话慎入。

两者最大的区别是对光照的支持,HDRP提供高级和丰富的光照功能,比如实时全局光照(RealTime GI),能够模拟光线反射、体积光、能模拟光穿过空气中的粒子,还有重头戏的光线跟踪,一种新的光线反射和阴影渲染技术,其原理是跟踪光线在场景中放射的路径,模拟光线在真实世界里与物体交互的效果,这技术对硬件性能非常高,但能产生非常逼真的效果,可以直接用来做电影级别的预渲染作品。

另外一个区别是Shader,HDRP提供一系列高端的shader特效,例如高度、细节和parallax Maps,分别用于纹理的位移、细节和深度模拟,它还支持子面散射,用于模拟光线穿过很薄的物体,比如皮肤和衣物,它提供了高级的shader,像是stacklit,能够让你同时使用多个材质的属性,比如子面散射、彩虹色、各向异性和模糊参数化。

对于后处理效果,两者不相伯仲,HDRP独占的最重要效果,包括AO(环境光遮蔽)、自动曝光(模拟人眼适应不同光线条件的能力)、屏幕空间反射(模拟基于屏幕上可见物体的反射)。URP的AO支持已经在做了,但好东西不是都在HDRP,2D光照和阴影就是URP独占的,所以如果你在做2D游戏,就选URP。

另外两个管线都支持一个很Cool的特效---相机堆叠,让你能够同时用多个相机渲染。

4、渲染管线的资源创建(以URP为例)

(1)导航到  Windows > Package Manager。

        (2)Packages选择Unity Registry。

(3)找到Universal RP,Install。

(4)Project面板,右键,Crate > Rendering > Universal Render Pipeline > Pipeline Asset (Forward Renderer)

5、切换渲染管线

5.1 激活内置渲染管线

要将活动渲染管线设置为内置渲染管线,必须告知 Unity 我们未使用任何基于可编程渲染管线的渲染管线。当我们从项目设置中删除所有这些引用后,Unity 默认使用内置渲染管线。

为此需要执行以下操作:

(1)导航到 Edit > Project Settings > Quality,从而打开 Quality Settings 窗口。

(2)对于每个质量级别,将 Render Pipeline 字段设置为 None

(3)导航到 Edit > Project Settings > Graphics,从而打开 Graphics Settings 窗口。

(4)将 Scriptable Render Pipeline Setting 字段设置为 None

5.2 激活基于 SRP 的 URP、HDRP 或自定义渲染管线

要将活动渲染管线设置为基于 SRP 的渲染管线,我们必须告诉 Unity 要使用哪个渲染管线资源。渲染管线资源是一种资源,其中包含有关要使用的渲染管线以及如何配置该渲染管线的数据。

我们可以拥有多个渲染管线资源,让 Unity 以不同配置使用同一渲染管线;例如,可能有一个适合高端硬件的设置,一个适合低端硬件的设置。

在 Unity 编辑器中:

(1)导航到 Edit > Project Settings > Graphics,从而打开 Graphics Settings 窗口。

(2)在 Project 文件夹中,找到要使用的渲染管线的渲染管线资源。

(3)将渲染管线资源拖放到 Scriptable Render Pipeline Setting 字段。这样定义了默认渲染管线,在给定质量级别没有覆盖值时,Unity 使用该管线。

(4)可选,要为不同的质量级别使用不同的渲染管线资源:导航到 Edit > Project Settings > Quality 打开 Quality Settings 设置窗口。

(5)可选,要为不同的质量级别使用不同的渲染管线资源:对于每个质量级别,将渲染管线资源拖放到 Render Pipeline 字段。

在 C# 代码中:

我们以使用 C#代码设置渲染管线资源。可以在 Unity 编辑器中以编辑模式或运行模式运行此代码,或者在构建的播放器中在运行时运行此代码。

由于 SRP 是高度可配置的,因此更改活动的渲染管线资源可能会导致更改差异很大(例如从 URP 切换到 HDRP)。在运行时更改渲染管线资源的性能成本相应地有所不同。

请注意,切换到新的渲染管线资源会使 Unity 销毁当前的渲染管线实例,并调用新渲染管线资源的 CreatePipeline() 方法。根据 SRP 中的代码,此操作可能在计算上是资源密集型操作。

以下示例代码显示了如何设置存储在GraphicsSettings.renderPipelineAsset中的默认渲染管线资源。

请注意,如果已在项目的 Quality Settings 为渲染管线资源指定了质量级别,则当前质量级别的渲染管线资源将覆盖默认渲染管线资源。可以如以下代码所示的方式在 C# 代码中使用 QualitySettings-renderPipeline API 进行更新。

using UnityEngine;
using UnityEngine.Rendering;public class SwitchRenderPipelineAsset : MonoBehaviour
{public RenderPipelineAsset exampleAssetA;public RenderPipelineAsset exampleAssetB;void Update(){if (Input.GetKeyDown(KeyCode.A)){GraphicsSettings.renderPipelineAsset = exampleAssetA;Debug.Log("Default render pipeline asset is: " + GraphicsSettings.renderPipelineAsset.name);}else if (Input.GetKeyDown(KeyCode.B)){GraphicsSettings.renderPipelineAsset = exampleAssetB;Debug.Log("Default render pipeline asset is: " + GraphicsSettings.renderPipelineAsset.name);}}
}

Unity-TA 成长之路(一)初识渲染管线相关推荐

  1. python爬虫工程师 成长之路一 初识爬虫

    文章目录 爬虫简介 为什么要学习爬虫 爬虫的结构 爬虫的类型 聚焦爬虫的工作原理和过程 爬虫常用功能 搜索引擎介绍 用户爬虫 最后 爬虫简介 爬虫,就是网络爬虫,也称为网页蜘蛛.网络机器人.网络蚂蚁等 ...

  2. unity 角度限制_喵的Unity游戏开发之路 推球:游戏中的物理

    前言很多童鞋没有系统的Unity3D游戏开发基础,也不知道从何开始学.为此我们精选了一套国外优秀的Unity3D游戏开发教程,翻译整理后放送给大家,教您从零开始一步一步掌握Unity3D游戏开发. 本 ...

  3. 喵的Unity游戏开发之路 - 推球:游戏中的物理

    很多童鞋没有系统的Unity3D游戏开发基础,也不知道从何开始学.为此我们精选了一套国外优秀的Unity3D游戏开发教程,翻译整理后放送给大家,教您从零开始一步一步掌握Unity3D游戏开发. 本文不 ...

  4. Java架构师成长之路

    目录导航 前言 一.源码分析专题 1.1 设计模式详解 1.2 Mybatis源码分析 1.3 Spring5源码分析 二.分布式架构专题 2.1 漫谈分布式架构 2.2 分布式架构的基础 2.3 分 ...

  5. unity绘制管道_在Unity里写一个纯手动的渲染管线(一)

    随着Unity3D 2018的面世,Scriptable Rendering Pipeline,也就是可编程渲染管线这项新技术变得家喻户晓.官方在推出这项技术的时候,着重强调了他的各种优点,而笔者总结 ...

  6. Python成长之路【第九篇】:Python基础之面向对象

    一.三大编程范式 正本清源一:有人说,函数式编程就是用函数编程–>错误1 编程范式即编程的方法论,标识一种编程风格 大家学习了基本的Python语法后,大家就可以写Python代码了,然后每个人 ...

  7. (转)Python成长之路【第九篇】:Python基础之面向对象

    一.三大编程范式 正本清源一:有人说,函数式编程就是用函数编程-->错误1 编程范式即编程的方法论,标识一种编程风格 大家学习了基本的Python语法后,大家就可以写Python代码了,然后每个 ...

  8. JAVA程序员成长之路的总结

    JAVA程序员成长之路的总结 看了篇推荐贴,JAVA程序员成长之路的总结,大致适用于各种初级JAVA程序员规划借鉴之用, 原文地址http://tieba.baidu.com/p/2017010306 ...

  9. 一个独立开发者的逆袭成长之路

    什么是独立开发者 对于独立开发者并没有一个严格的定义,既没有人数的限制,也没有具体工作内容的说明,不过一般大家都认可的观点就是,独立开发者是指那些通过单独地开发应用而养活自己的程序员,他们没有正式工资 ...

  10. 游戏测试成长之路01-初识游戏测试

    前情简介:游戏测试成长之路这个主题将结合自身经历和经验,介绍和分享游戏测试的相关软硬件技能,希望能帮助更多选择这个从业方向的小伙伴少走弯路,快速成长.(游戏测试本身没有系统化的标准和定义,网上也缺少相 ...

最新文章

  1. 为什么socket接收大数据的时候接收不完全,出现丢包?
  2. Tkinter的Checkbutton组件的简单使用
  3. Hadoop-rpc调用案例,服务端,客户端代码案例
  4. 对C#中的Close()和Dispose()的浅析
  5. POJ NOI MATH-7833 幂的末尾
  6. python try catch语句_Java try catch语句
  7. Powerpoint中VBA编程技巧
  8. 英文java简历模板下载_java英文简历模板
  9. Firefox火狐浏览器怎么设置中文 火狐浏览器语言设置方法
  10. 工业相机:传感器尺寸与像元尺寸的关系
  11. 用Affinity画对称纹理
  12. android 后台监听按键,Android监听home键的方法详解
  13. golang开发android应用(一) - go语言android应用环境搭建
  14. for循环的auto用法
  15. struts2标签的使用(一)
  16. 【STM32】STM32CUBEMX + ADC(单通道,双通道DMA)
  17. 黑客就在你身边 - 通过名片怎么黑掉你
  18. VirtuaNES 模拟器 玩FC小游戏 热血系列集合
  19. 佛山维修S120西门子服务器,西门子S120驱动模块常见故障维修
  20. python(第二版)第五章答案

热门文章

  1. TechSmith SnagIt 9 中文破解版v9.1.0
  2. php smarty 翻译标签,Smarty自定义block标签
  3. 冲击波病毒内幕点滴(2) (转)
  4. 几款制作帮助文档的工具汇总
  5. 储能系统下垂控制,蓄电池通过双向dc/dc变换器并联负载,变换器输出电流按虚拟电阻比例分配
  6. 算术平方根计算机保留根号,根号计算器
  7. 既然谭浩强的C语言教材不好,那应该选什么书作C语言教材?
  8. Kaggle Tabular Playground Series - Jan 2022 学习笔记2(使用时间序列的线性回归)
  9. C语言程序设计基础笔记
  10. Matrix Calculus Reference Links