我正在 Unity3D 中开发。
使用此处定义的深度蒙版着色器,不绘制使用该着色器的蒙版后面的对象(仅绘制蒙版前面的对象)。使用引用的代码,我尝试创建一个反向深度蒙版,旨在使相机仅在其后面绘制对象。
我所做的是改变
ZTest LEqual
进入
ZTest GEqual
我也试过
ZTest Greater
但是,相机会绘制所有对象,无论是在蒙版后面还是前面。如何实现反向深度蒙版?
我正在 Unity3D 中开发。
使用此处定义的深度蒙版着色器,不绘制使用该着色器的蒙版后面的对象(仅绘制蒙版前面的对象)。使用引用的代码,我尝试创建一个反向深度蒙版,旨在使相机仅在其后面绘制对象。
我所做的是改变
ZTest LEqual
进入
ZTest GEqual
我也试过
ZTest Greater
但是,相机会绘制所有对象,无论是在蒙版后面还是前面。如何实现反向深度蒙版?
您必须ZTest GEqual
在蒙版对象的着色器中使用,而不是蒙版本身。另请注意,必须在所有其他对象之前渲染深度蒙版和蒙版对象。所以你应该使用以下渲染队列:
Geometry - 20
或2080
Geometry - 10
或2090
(可以在Unity Wiki中找到关于深度遮罩的更详细说明。)
您还应该禁用被屏蔽对象的 z 缓冲区写入 ( ZWrite Off
)。这意味着如果蒙版对象重叠,它们将无法正确渲染。您可能还会遇到其他几何图形的问题。更好的方法是使用 Unity 4.2 专业版中提供的模板缓冲区。