Unity的渲染管线
Unity的渲染管线
英文原文:https://docs.unity3d.com/Manual/SL-RenderPipeline.html
着色器定义了对象的视觉效果(通过材质属性设置)以及对象如何与光线产生反应。因为光照计算必须内置到着色器中,而且光源与阴影的种类可能有很多种,所以编写能够“干活”的优质着色器是一项复杂的任务。为了使这一任务更加简单,Unity内置了表面着色器(Surface Shader),它能自动处理全部的照明、投影、光照映射、Forward与Deferred渲染。
这篇文章描述了Unity的照明与渲染管线的特异性以及发生在使用了表面着色器的场景底层的事情。
渲染通道(Rendering Path)
如何应用照明以及使用着色器的哪个Pass取决于所使用的渲染通道。着色器中的每个Pass通过Pass Tag与它们的照明类型进行通讯。
- 在Forward Rendering中,使用的Pass是
ForwardBase
和ForwardAdd
。 - 在Deferred Shading中,使用的Pass是
Deferred
。 - 在Legacy Deferred Lighting中,使用的Pass是
PrepassBase
和PrepassFinal
。 - 在Legacy Vertex Lit中,使用的Pass是
Vertex
,VertexLMRGBM
和VertexLM
。 - 上述所有情形在渲染阴影(Shadows)或者深度纹理(Depth Texture)时,使用的Pass都是
ShadowCaster
。
Forward Rendering通道
ForwardBase
同时渲染环境光(Ambient)、光照贴图(Lightmap)、主平行光(Directional Light)和Render Mode为Not Important(Vertex/SH)的光源。ForwardAdd
用于处理所有附加的Per-Pixel光源;每个通过此类光源照亮的物体都会产生一次调用(?:one invocation per object illuminated by such light is done)。
如果选用了Forward Rendering但着色器却没有适用于Forward Rendering的(Forward-suitable) Pass(例如,既没有 ForwardBase
也没有 ForwardAdd
),那么对象的渲染结果会和使用 Vectex Lit通道时一样,参见下文。
Deferred Shading通道
Deferred
渲染照明所需要的所有信息(在内置着色器中:diffuse color, specular color, smoothness, world space normal, emission),它也负责把光照贴图、反射探针和环境光照添加到Emission Channel中。
Legacy Deferred Lighting通道
PrepassBase
渲染法线&反射指数;PrepassFinal
通过合并纹理、照明&发光材质属性来渲染最终颜色。场景内所有的常规照明都在屏幕空间内分别完成。
Legacy Vertex Lit Rendering通道
自从顶点照明(Vertex Lighting)成为在不支持可编程着色器的平台上使用最多的方式后,Unity无法再在内部创建多个着色器变体来处理由光照贴图 vs. 无光照贴图的情况。因此,必须明确的编写多个Pass来处理有光照贴图和无光照贴图的对象。
Vertex
Pass用于处理无光照贴图的对象。所有光源一次性渲染,使用固定功能的 OpenGL/Direct3D 照明模型(Blinn-Phong)。VertexLMRGBM
Pass用于处理光照贴图使用RGBM编码(PC和主机)的对象。不应用实时照明;Pass要合并纹理到光照贴图(?:pass is expected to combine textures with a lightmap)。VertexLMM
Pass用于处理光照贴图使用 Double-LDR编码(移动平台)的对象。不应用实时光照;Pass要合并纹理到光照贴图(原文同上)。
参考
- 图形指令缓冲器 - 扩展Unity渲染管线
Unity的渲染管线相关推荐
- unity 可视化渲染管线_如何为高端可视化设置Unity的高清渲染管道
unity 可视化渲染管线 Prior to Unite Copenhagen in September 2019, Unity collaborated with Lexus and its age ...
- Unity HDRP渲染管线基础指南
HDRP和LWRP简介 Unity2018中引入了可编程渲染管线(Scriptable Render Pipeline,简称SRP),是一种在Unity中通过C#脚本配置和执行渲染的方式.至2018. ...
- Unity URP渲染管线下体积光的实现
随着手机硬件的提高.主流手游厂商也逐渐以3D游戏为主,游戏也开始更注重3D场景渲染氛围,对渲染技术的要求也越来越高,PBR渲染.环境光遮蔽.阴影优化.场景反射.体积光等华丽的效果也逐渐成为优质画质手游 ...
- Unity学习 渲染管线介绍
SRP:(Scriptable Render Pipeline,可编程渲染管线/脚本化渲染管线),可以在Unity通过C#脚本调用API配置或执行渲染命令的方式来实现渲染流程,SRP将这些命令传递给U ...
- Unity - 通用渲染管线(URP)1.渲染、后处理
这是一篇详细讲解URP的文章,涉及具体的使用和原理,翻译自Unity官方的文档. 本文由 祝你万事顺利 出品,转载请注明出处. 简介 URP是一种预置的可编程渲染管线.可以实现快速的渲染而不需要sha ...
- Unity 不同渲染管线添加后处理效果方式
普通项目使用后处理方式: Window->Package Manager->Post Processing->Instsll添加工程内即可 选择Main Camera->Lay ...
- Unity URP渲染管线使用边缘高亮插件
在URP渲染管线下使用物体边缘高亮插件 Outline 链接:https://pan.baidu.com/s/1r_YWCo9yxnrBdf9u_cTZmA 提取码:099y 按照上面的步骤 对Out ...
- Unity SRP自定义渲染管线 -- 5.Directional Shadows
原文:https://catlikecoding.com/unity/tutorials/scriptable-render-pipeline/directional-shadows/ 支持多个方向光 ...
- Unity SRP自定义渲染管线 -- 4.Spotlight Shadows
英文原文:https://catlikecoding.com/unity/tutorials/scriptable-render-pipeline/spotlight-shadows/ 渲染并且读取纹 ...
- 第二十章 Unity 渲染管线
渲染管线是计算机图形中最基础最核心的部分,它是将3D场景显示到2D平面的技术过程.在DirectX课程中,我们就介绍了渲染管线,分为固定渲染管线和可编程渲染管线(Shader).但是在DirectX ...
最新文章
- 自动微分到底是什么?这里有一份自我简述
- plotly基于dataframe数据绘制股票K线图并过滤非交易时间
- centos 升级4.0 内核
- 在SpringMVC中使用Jackson并格式化时间
- Linux下CMake简明教程(五)正规一点的组织结构
- vue如何发送网络请求,使用axios事半功倍!
- (Tree)二叉树基本操作
- 华为云服务产品之精华问题大集烩(四)
- json解析数组 nlohmann_json解析数组 nlohmann_Nlohmann json学习
- tensorrt安装_利用TensorRT对深度学习进行加速
- spring-页面模板配置
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_07 缓冲流_1_缓冲流的原理...
- Android TextView 右上角文字角标(TM, ©,® )
- Android 内存剖析 – 发现潜在问题
- 面了一个37岁的程序员,我很慌......
- php路由固件升级提示,【2017年整理】路由器固件修改教程(个人理解)-无线路由区-中国无线论坛 -.doc...
- 通信室计算机室采购配置co2灭火器,安全设施标准手册.doc
- 使用DiskGenius进行硬盘数据迁移
- Python自然语言处理—提取词干
- 计算机的的编码多的原因,计算机蓝屏代码0x000003b原因和解决方案