使用 DepthTextureMode 从摄像机输出深度纹理或深度法线纹理。
这将构建一个屏幕大小的深度纹理。
渲染深度纹理时使用的着色器通道与用于阴影投射物渲染的着色器通道相同(ShadowCaster 通道类型)。因此,通过扩展,如果着色器不支持阴影投射(即在着色器或任何后备着色器中没有阴影投射物通道),则使用该着色器的对象将不会显示在深度纹理中。
请注意,仅“不透明”对象(这些对象的材质和着色器设置为使用小于等于 2500 的渲染队列)会渲染到深度纹理中。
这将构建屏幕大小的 32 位(8 位/通道)纹理,其中视图空间法线编码到 R&G 通道中,而深度编码到 B&A 通道中。法线使用立体投影进行编码,深度是打包到两个 8 位通道中的 16 位值。
UnityCG.cgincinclude 文件具有一个 helper 函数DecodeDepthNormal,可从编码的像素值中解码深度和法线。返回的深度在 0 到 1 范围内。
有关深度和法线纹理的使用示例,请参阅在运行时替换着色器或后期处理和全屏效果中的环境光遮挡。