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