即使在自定义深度蒙版着色器UNITY中进行z检验后,某些模型仍然可见。

时间:2018-12-26 11:51:04

标签: unity3d shader depth-testing

使用某些3D模型时,z检验为“ LEqual”的深度蒙版着色器需要正常运行,如屏幕截图1中所示。

screenshot1

但是它给出的结果显示了3d模型中需要隐藏的那部分轮廓的灰度。 [参考屏幕截图2]

screenshot2

我们尝试将ZTest从LEqual更改为Always,这可以解决此问题,但是对象仍然部分可见。

Shader "Custom/mask" { 
SubShader { 
Tags {
"Queue" = "Geometry+10" 
"RenderType" = "Opaque" 
}

Lighting Off 
ZTest LEqual 
Cull Back 
ZWrite On 
ColorMask 0 
Blend One One 
Pass {Fog {Mode Off}}

} } 

1 个答案:

答案 0 :(得分:0)

似乎您从遮挡网格物体进行了早期的Z遍,我猜这是重构的或运动跟踪的面孔?那么眼镜是用正确的标准材质渲染的吗?

需要先 绘制遮罩材料,所以队列应为Geometry-10或类似的东西。除了 ColorMask 0 以外,所有其他标签都不相关。

不建议使用Lighting和Fog,Blend也没用,因为无论如何您都不会绘制到颜色缓冲区(使用ColorMask 0,它只会绘制深度)。