1.5:Unity Render Pipeline
文章著作权归作者所有。转载请联系作者,并在文中注明出处,给出原文链接。
本系列原更新于作者的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的更多相关文章
- unity render pipeline
post process v2 GUI temp8->TaregtPool0->temp8 tem8 temp8->backbu ...
- 1.3:Render Pipeline and GPU Pipeline
文章著作权归作者所有.转载请联系作者,并在文中注明出处,给出原文链接. 本系列原更新于作者的github博客,这里给出链接. 在学习SubShader之前,我们有必要对 Render Pipeline ...
- [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 ...
- Lightweight Render Pipeline
(翻译) Lightweight Render Pipeline (LWRP),轻量级渲染管线,是一个Unity预制的Scriptable Render Pipeline (SRP).LWRP可以为移 ...
- Scriptable Render Pipeline
Scriptable Render Pipeline SRP的核心是一堆API集合,使得整个渲染过程及相关配置暴露给用户,使得用户可以精确地控制项目的渲染流程. SRP API为原有的Unity构件提 ...
- 【Unity Shaders】使用Unity Render Textures实现画面特效——建立画面特效脚本系统
本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...
- WebGPU学习(十一):学习两个优化:“reuse render command buffer”和“dynamic uniform buffer offset”
大家好,本文介绍了"reuse render command buffer"和"dynamic uniform buffer offset"这两个优化,以及Ch ...
- 使用Microsoft的IoC框架:Unity来对.NET应用进行解耦
1.IoC/DI简介 IoC 即 Inversion of Control,DI 即 Dependency Injection,前一个中文含义为控制反转,后一个译为依赖注入,可以理解成一种编程模式,详 ...
- Cesium原理篇:6 Render模块(4: FBO)
Cesium不仅仅提供了FBO,也就是Framebuffer类,而且整个渲染过程都是在FBO中进行的.FBO,中文就是帧缓冲区,通常都属于高级用法,但其实,如果你了解了它的基本原理后,用起来还是很简单 ...
随机推荐
- socket(套接字)初使用
socket层 socket:是应用层与TCP/IP协议通信的中间软件抽象层,是一组接口,在设计模式中,socket其实就是一个门面模式,它把复杂的TCP/IP协议隐藏在socket接口后面. 基于T ...
- table表格固定前几列,其余的滚动
我查了好多资料,只找到一个demo <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""h ...
- corefx 源码学习:SqlClient 是如何同步建立 Socket 连接的
在昨天的技术周会上发现 EnyimMemcached 中建立 Socket 连接的代码有问题,今天坐车的时候在手机上阅读 .net core 2.2 的 SqlClient 中同步建立 Socket ...
- 出现errSecInternalComponent
出现errSecInternalComponent Xcode签名机制(code signing mechanism) 的 bug, Xcode 中账号多了,就会产生很多过期的描述文件,Xcode 没 ...
- STA 463 Simple Linear Regression Report
STA 463 Simple Linear Regression ReportSpring 2019 The goal of this part of the project is to perfor ...
- 树状数组-逆序对-HDU6318
Swaps and Inversions Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- 配置环境变量及jdk
1.配置虚拟机nat默认为yes:cd /etc/sysconfig/network-scripts/ ll(查看下面ifcfg文件名称) vim ifcfg-eno16777736(按 ...
- Linux自动化命令工具expect
expect是Unix系统中用来进行自动化控制和测试的软件工具,应用在交互式软件中如telnet,ftp,Passwd,fsck,rlogin,tip,ssh等等. 用法 Linux中我们经常写脚本处 ...
- PowerBI功能发布时间线
DAX/PowerBI系列 - PowerBI功能发布时间线 PowerBI从GA/上线以来,每月发布的功能收集起来做成了一个报表:(耐心等待PowerBI 出来,噔噔噔噔~~~) 上图显示: 1)D ...
- JavaScript实现RSA加解密
在GitHub上找到jsencrypt.js对RSA加解密的工具文件,地址分别是:https://github.com/travist/jsencrypt和https://github.com/ope ...