Cull 指令


unity在区分物体的正反面是根据三角形的顶点顺序(正面顺时针)(反面逆时针)

正方体: 对于正方体这种前后看有2个正方形的,可以理解为外表面和内表面上色

平面:对于平面这种只有1个正方形的,可以理解为正面和反面上色

unity默认选择cull back,

对于 平面来说 就是只有正面看到,反面看过去是穿透什么都没有

对于 正方体 来说  就是只有 从正方体外面能看到东西,  从正方体内部往外看是什么都看不到


选择cull off

就是同时渲染正反面   ,

平面是两边都可以看到

正方体也是内外都可以看到


选择cull front

对于平面来说 只看到平面的反面

对于正方体来说 从外面能看到  对着镜头的面 ,看不到反着镜头的面(正方体可以理解为6个平面拼接)

Cull 指令





介绍UnityShader的表面剔除(表面剪裁)技术

ShaderLab Cull命令

shaderLab语句 说明
Cull Off 不剔除
Cull Back(默认) 剔除背面(内表面)
Cull Front 剔除正面(外表面)

什么是表面剔除?为什么要进行表面剔除?

当一个mesh组件的信息被传递后,我们可以通过代码决定哪些部分渲染(render)出来,而哪些部分不要,这个过程就像把那些不要的部分剔除了,我们看不到他,虽然他的mesh信息还在,但是我们的GPU不会去处理它,肯定比剔除前GPU的性能消耗要低。 
这个过程就好比我们的mesh组件是一个透明的膜,我们假设这个胶纸我们根本看不到,而片段着色器在着色的时候像毛笔选择性地上色,最后的效果是我们可能看到膜的一部分是可见的,但是不见的地方,膜还是存在的,只是我们没有给他上色,我们既看不看他们,也不需要再他们上面画宝贵的墨水(GPU并行处理能力) 
引用自: 
(原) 解读Unity中的CG编写Shader系列3——表面剔除与剪裁模式

表面剔除效果测试示例

==========