1

我正在 Unity3D 中开发。

使用此处定义的深度蒙版着色器,不绘制使用该着色器的蒙版后面的对象(仅绘制蒙版前面的对象)。使用引用的代码,我尝试创建一个反向深度蒙版,旨在使相机仅在其后面绘制对象

我所做的是改变

ZTest LEqual

进入

ZTest GEqual

我也试过

ZTest Greater

但是,相机会绘制所有对象,无论是在蒙版后面还是前面。如何实现反向深度蒙版?

4

1 回答 1

0

您必须ZTest GEqual在蒙版对象的着色器中使用,而不是蒙版本身。另请注意,必须在所有其他对象之前渲染深度蒙版和蒙版对象。所以你应该使用以下渲染队列:

  • 深度遮罩:Geometry - 202080
  • 蒙面对象:Geometry - 102090

(可以在Unity Wiki中找到关于深度遮罩的更详细说明。)

您还应该禁用被屏蔽对象的 z 缓冲区写入 ( ZWrite Off)。这意味着如果蒙版对象重叠,它们将无法正确渲染。您可能还会遇到其他几何图形的问题。更好的方法是使用 Unity 4.2 专业版中提供的模板缓冲区。

于 2014-03-25T20:27:56.933 回答