文章著作权归作者所有。转载请联系作者,并在文中注明出处,给出原文链接。
本系列原更新于作者的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. c语言的二进制表示的是什么码

    int -1 的二进制是 1111 1111 1111 1111 1111 1111 1111 1111 int -2 的二进制是 1111 1111 1111 1111 1111 1111 1111 ...

  2. django的闪现和增、删、改、查

    使用 messages 闪现在views.py中导入 from django.contrib import messages 在html中 {% if messages %} {% for mess ...

  3. day27:反射和双下方法

    1, # 面向对象的三大特性:继承,多态和封装 # 继承: # 单继承: **** # 父类(超类,基类) # 子类(派生类) 派生方法和派生属性 # 子类的对象在调用方法和属性:先用自己的,自己没有 ...

  4. 关于VMware(虚拟机) 出现错误时处理办法

    我们在开发中难免会用到虚拟机.前段时间老有同学问我虚拟机报错解决办法,趁今天有空特随笔. 错误如下图 首先科普下VT是个啥? Intel VirtualTechnology(VT)既“虚拟化技术” V ...

  5. PDM:Training Models of Shape from Sets of Examples

    这篇论文介绍了一种创建柔性形状模型(Flexible Shape Models)的方法--点分布模型(Point Distribution Model).该方法使用一系列标记点来表示形状,重要的是根据 ...

  6. oracle学习笔记第三天

    --DML(Data Manipulation Language)--insert关键字 插入 ---语法1.元祖值式插入(一次插入一条记录)---格式:insert into 表名(列名1,列名2. ...

  7. flask学习笔记(1)-虚拟环境安装

    Mac(类Linux): pip install virtualenv mkdir testvirtualenv cd testvirtualenv virtualenv flask-env#创建虚拟 ...

  8. CentOS下软件安装与卸载常用命令总结

    最近在折腾CentOS 7操作系统,主要是下载安装文件以及解决各项依赖问题,现对此过程中用到的有效的CentOS命令进行汇总总结. 1. 安装与卸载软件:yum.rpm.wget命令 首先,在Cent ...

  9. DCDC参数测量及方法

    此文章目的为补充知识,防止遗忘,记录DCDC相关的. 1.拿到一颗DCDC芯片应该测试哪些参数:纹波.电源效率和动态响应. 1)纹波测量方法:示波器偶合方式选择AC:示波器探头的接地也不能用鳄鱼夹,这 ...

  10. gcc在64位系统上一个史诗级WARNING

    如下图所示,可以看到y的地址在传入函数并被返回后,高32位被截断了,于是发生了Segment fault. 首次是在MAC OS X上发现的,本以为是MAX OS X编译器自己的策略,后来在64位Ub ...