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即可

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容