使用DepthTextureMode
从相机场景中特定视点的图像创建组件。输出要么绘制到屏幕上,要么捕获为纹理。 更多信息
参见 术语表输出深度纹理或深度法线纹理。
这将构建一个屏幕大小的深度纹理。
深度纹理使用与阴影投射渲染相同的着色器在 GPU 上运行的程序。 更多信息
参见 术语表通道(ShadowCaster
通道类型)进行渲染。因此,如果着色器不支持阴影投射(即着色器或任何回退中没有阴影投射通道),则使用该着色器的对象将不会显示在深度纹理中。
请注意,只有“不透明”对象(其材质和着色器设置为使用渲染队列 <= 2500)才会渲染到深度纹理中。
这将构建一个屏幕大小的 32 位(每个通道 8 位)纹理,其中视空间法线编码在 R&G 通道中,深度编码在 B&A 通道中。法线使用立体投影进行编码,深度是打包到两个 8 位通道中的 16 位值。
UnityCG.cginc
包含文件有一个辅助函数DecodeDepthNormal
,用于从编码的像素计算机图像中的最小单位。像素大小取决于您的屏幕分辨率。像素照明是在每个屏幕像素处计算的。 更多信息
参见 术语表值解码深度和法线。返回的深度范围为 0..1。
有关如何使用深度和法线纹理的示例,请参阅运行时替换着色器或后期处理和全屏效果中的环境光遮蔽一种近似计算有多少环境光(非来自特定方向的光)可以照射到表面上的某个点的方法。
参见 术语表。