Version: Unity 6.0 (6000.0)
语言 : 中文
摄像机输出简介
从摄像机输出运动矢量纹理

从摄像机输出深度纹理

使用 DepthTextureMode 从摄像机输出深度纹理或深度法线纹理。

DepthTextureMode.Depth 纹理

这将构建一个屏幕大小的深度纹理。

渲染深度纹理时使用的着色器通道与用于阴影投射物渲染的着色器通道相同(ShadowCaster 通道类型)。因此,通过扩展,如果着色器不支持阴影投射(即在着色器或任何后备着色器中没有阴影投射物通道),则使用该着色器的对象将不会显示在深度纹理中。

  • 让着色器回退到另一个具有阴影投射通道的着色器,或者
  • 如果您在使用表面着色器,那么添加 addshadow 指令也能让它们生成阴影通道。

请注意,仅“不透明”对象(这些对象的材质和着色器设置为使用小于等于 2500 的渲染队列)会渲染到深度纹理中。

DepthTextureMode.DepthNormals 纹理

这将构建屏幕大小的 32 位(8 位/通道)纹理,其中视图空间法线编码到 R&G 通道中,而深度编码到 B&A 通道中。法线使用立体投影进行编码,深度是打包到两个 8 位通道中的 16 位值。

UnityCG.cgincinclude 文件具有一个 helper 函数DecodeDepthNormal,可从编码的像素值中解码深度和法线。返回的深度在 0 到 1 范围内。

有关深度和法线纹理的使用示例,请参阅在运行时替换着色器后期处理和全屏效果中的环境光遮挡。

其他资源

摄像机输出简介
从摄像机输出运动矢量纹理