文章著作权归作者所有。转载请联系作者,并在文中注明出处,给出原文链接。
本系列原更新于作者的github博客,这里给出链接

这一节主要是为上一节中没有提到的一些概念作补充。

上一节提到了Unity中渲染路径的概念,为了更好地理解并使用Unity,我们有必要了解有关渲染路径的详细信息。

Unity Render Pipeline

Unity作为引擎,为我们处理了许多渲染有关的行为细节,最终留下了Built-in Renderer(内置渲染),以及配置度更高的SRP(Scriptable Render Pipeline,可编程渲染管线)

Built-in Renderer

Built-in Renderer是Unity的默认渲染设置,也是一直以来使用的渲染方式。Built-in Renderer为我们处理了绝大多数的细节。Built-in Renderer可以分为Forward(前向) Shading、Deferred(延迟) Shading和Built-in。

Built-in

这是Unity的默认渲染路径。

Forward Shading

在前向渲染中,每个作用于物体的Per-Pixel Light都会单独计算一次,Draw Call数量跟物体数量和光照数量的乘积成正比。它不受硬件限制,可以使用Multi-Sampling Anti-Aliasing(多重采样抗锯齿)等。但在这个模式下,除了Main Directional Light之外,一个物体最多接受4个Per-Pixel Light,超过的部分都会转换为Per-Vertex Light。

Deferred Shading

延迟渲染是通过G-Buffer(几何缓冲)实现的。G-Buffer储存了物体的颜色,法线,材质信息。这个渲染路径没有光照数量的限制,每一个光源都会被视为Per-Pixel Light,都会拥有cookie和shadow。在这个模式下,光照处理的性能消耗和被光照影响的像素数成正比。也就是说,我们可以通过减弱光源强度,缩小光源影响范围,进而提升性能。由于真正的渲染操作被延迟,这个模式不支持多采样抗锯齿和半透明物体的渲染,也不支持Mesh Renderer组件的Receive Shadows设置,剔除选项的受支持度也很有限。

Scriptable Render Pipeline

Unity引擎的内核是C++编写的,外壳是C#脚本构建的,脚本实现各模块之间的交互,编辑器界面等,许多行为都在内核进行了处理,作为游戏开发者只能接触到界面以及API,无法定制化渲染。随着硬件的升级,游戏体量的增加以及游戏玩家对游戏画面的要求逐渐升高,这种配置式的设置就显现出了不足之处。为了适应游戏开发者的需要,Unity决定实现一种新的架构,只在C++端保留渲染的核心功能,把更多的选择交给C#脚本,把控制权移交给开发者,并在2018中加入了SRP。

SRP是一系列C#的API,用于配置各个渲染设置。SRP有三种形式:LWRP(Lightweight Render Pipeline,轻量级渲染管线,这在目前已经得到了官方较好的支持)、HDRP(Hight Definition Render Pipeline,高清渲染管线,目前仍在试验阶段)、自定义渲染管线。LWRP和HDRP都是SRP的一套Asset,LWRP性能较好,HDRP需要更好的硬件支持,当然渲染效果也会更加真实,自定义渲染管线则是基于SRP的接口自定义的一套适用于自己工程的渲染管线配置。

1.5:Unity Render Pipeline的更多相关文章

  1. unity render pipeline

    post process v2 GUI temp8->TaregtPool0->temp8       tem8                      temp8->backbu ...

  2. 1.3:Render Pipeline and GPU Pipeline

    文章著作权归作者所有.转载请联系作者,并在文中注明出处,给出原文链接. 本系列原更新于作者的github博客,这里给出链接. 在学习SubShader之前,我们有必要对 Render Pipeline ...

  3. [Unity] Shader Graph Error 当前渲染管道与此主节点不兼容(The current render pipeline is not compatible with this master node)

    Shader Graph Error  : The current render pipeline is not compatible with this master node 问题产生环境: Un ...

  4. Lightweight Render Pipeline

    (翻译) Lightweight Render Pipeline (LWRP),轻量级渲染管线,是一个Unity预制的Scriptable Render Pipeline (SRP).LWRP可以为移 ...

  5. Scriptable Render Pipeline

    Scriptable Render Pipeline SRP的核心是一堆API集合,使得整个渲染过程及相关配置暴露给用户,使得用户可以精确地控制项目的渲染流程. SRP API为原有的Unity构件提 ...

  6. 【Unity Shaders】使用Unity Render Textures实现画面特效——建立画面特效脚本系统

    本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...

  7. WebGPU学习(十一):学习两个优化:“reuse render command buffer”和“dynamic uniform buffer offset”

    大家好,本文介绍了"reuse render command buffer"和"dynamic uniform buffer offset"这两个优化,以及Ch ...

  8. 使用Microsoft的IoC框架:Unity来对.NET应用进行解耦

    1.IoC/DI简介 IoC 即 Inversion of Control,DI 即 Dependency Injection,前一个中文含义为控制反转,后一个译为依赖注入,可以理解成一种编程模式,详 ...

  9. Cesium原理篇:6 Render模块(4: FBO)

    Cesium不仅仅提供了FBO,也就是Framebuffer类,而且整个渲染过程都是在FBO中进行的.FBO,中文就是帧缓冲区,通常都属于高级用法,但其实,如果你了解了它的基本原理后,用起来还是很简单 ...

随机推荐

  1. WinForm打包或部署

    一.新建InstallShield项目 二. 三. 四. 五. 六. 七. 最后重新生成,安装包一般在E\Setup1\Setup1\Express\SingleImage\DiskImages\DI ...

  2. CSP201312-4 有趣的数【dp】

    问题描述 试题编号: 201312-4 试题名称: 有趣的数 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1, ...

  3. python hashlib模块 md5加密 sha256加密 sha1加密 sha512加密 sha384加密 MD5加盐

      python hashlib模块   hashlib hashlib主要提供字符加密功能,将md5和sha模块整合到了一起,支持md5,sha1, sha224, sha256, sha384, ...

  4. Multi-Projector Based Display Code ---- ModelViewer

    Overview Model viewer is another application we provided for large display. It is designed for viewi ...

  5. mysql 数据库的数据类型

  6. es6的对象新增的方法

    Object.is 可以看成是=== 的加强版, 其修正了 === 的 NaN 不等于自身, 以及 +0 等于 -0 另外说下, == 会自动转型, 但是 Object.is 也是如果类型不一致也是不 ...

  7. mysql数据库的查询,添加,删除,还原,备份

    18章数据mariadb数据库 1.setup 配置网卡centos6.52.nmtui 网卡图形配置界面3.yum install mariadb mariadb-server4.systemctl ...

  8. 深度学习基础(四) Dropout_Improving neural networks by preventing co-adaptation of feature detectors

    该笔记是我快速浏览论文后的记录,部分章节并没有仔细看,所以比较粗糙. 从摘要中可以得知,论文提出在每次训练时通过随机忽略一半的feature detectors(units)可以极大地降低过拟合.该方 ...

  9. Mac上配置GTK环境

    Mac上配置GTK环境 安装command line工具, 如果安装了Xcode, 就直接跳过该步骤 安装Homebrew 使用brew install pkg-config 使用brew insta ...

  10. win10配置java环境变量,解决javac不是内部或外部命令等问题

    win10配置java环境变量,解决javac不是内部或外部命令等问题 https://www.cnblogs.com/qianji/p/6402690.html