unity shader(剔除及深度测试)

参考风宇冲Unity3D教程学院 Shader第十一讲 剔除及深度测试

作者写的很好,我摘抄一部分

一 Culling阴影面剔除

Culling阴影面剔除是一种优化技术。所有的多边形都有正反两面,而你永远只能看见其中一面,不信的话拿张纸板或者一面镜子看看你能不能同时看到两面。通常多边形面向屏幕里面的背面,我们看不见,所以会将该面剔除。

Cull Off 关闭阴影面剔除

Cull Back 剔除背面

Cull Front剔除正面

二 Depth Testing深度测试

Depth Testing:深度测试,也叫深度缓冲。只有最靠近观察者的物体会被绘制。深度即Z,该值越小表示离观察者越近,该值越大表示离观察者越远。

Shader里默认有如下代码

ZWrite On

ZTest LEqual

意思即使Shader里没有写任何关于Depth Testing的代码,Shader也会执行深度写入及深度测试。

但是Unity官方所有半透明Shader都是不写深度的

因此半透明物体透明度很低的话, 物体被遮挡部分就显示不了。

【显示被半透明物遮挡的东西】

拷贝半透明Shader,保留

Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}Blend SrcAlpha OneMinusSrcAlpha

把ZWrite Off

改成ZWrite On即可

你可能感兴趣的:(unity shader(剔除及深度测试))