延迟渲染管线
1.前情提要
unity在2021.2bate版本中添加了延迟渲染管线
将ForwardRenderer换成了UniversalRenderer
UniversalRenderer下可以切换是使用前向渲染还是延迟渲染。
2.延迟渲染新增内容
延迟渲染最主要就是添加了这两个pass
GBufferPass用来渲染多张纹理
DeferredPass用Gbuffer纹理绘制光影

在EnqueueDeferred方法中主要添加了四种pass
1.m_GBufferPass 渲染Gbuffer
2.m_GBufferCopyDepthPass 渲染深度图
3.m_DeferredPass 根据Gbuffer渲染光影
4.m_RenderOpaqueForwardOnlyPass 提供DrawObjectsPass方法可在延迟渲染不透明物体后用前向渲染shader中“”LightMode =” UniversalForwardOnly“的物体
3.GBufferPass

GBufferPass的运行流程大致分为三步
1.Deferred Light提供渲染目标给Pass
2.GBufferPass生成多张RT给shader赋值
3.shader渲染目标不再是一个half4的SV_Target,而是输出一个结构体里面多个Target
4.生成的Gbuffer纹理将作为临时纹理为后面的DeferredPass中渲染的Mesh中的shader所调用
4.DeferredPass
DeferredPass主要是负责设置渲染目标,而执行的pass写在了DeferredLights里面。
ExecuteDeferredPass的大致步骤
1.更新材质球的变量
2.渲染方向光
3.渲染点光源
4.渲染聚光灯
5.渲染雾
方向光的渲染方法

1.根据_gbuffer2纹理求得世界空间法线方向
2.使用深度信息得到世界空间位置
3.法线方向点乘光向得lembert,相机位置减去世界空间位置得视方向求高光
4.根据BRDF算法求光照信息