Cull 指令
unity在区分物体的正反面是根据三角形的顶点顺序(正面顺时针)(反面逆时针)
正方体: 对于正方体这种前后看有2个正方形的,可以理解为外表面和内表面上色
平面:对于平面这种只有1个正方形的,可以理解为正面和反面上色
unity默认选择cull back,
对于 平面来说 就是只有正面看到,反面看过去是穿透什么都没有
对于 正方体 来说 就是只有 从正方体外面能看到东西, 从正方体内部往外看是什么都看不到
选择cull off
就是同时渲染正反面 ,
平面是两边都可以看到
正方体也是内外都可以看到
选择cull front
对于平面来说 只看到平面的反面
对于正方体来说 从外面能看到 对着镜头的面 ,看不到反着镜头的面(正方体可以理解为6个平面拼接)
介绍UnityShader的表面剔除(表面剪裁)技术
ShaderLab Cull命令
shaderLab语句 | 说明 |
---|---|
Cull Off | 不剔除 |
Cull Back(默认) | 剔除背面(内表面) |
Cull Front | 剔除正面(外表面) |
什么是表面剔除?为什么要进行表面剔除?
当一个mesh组件的信息被传递后,我们可以通过代码决定哪些部分渲染(render)出来,而哪些部分不要,这个过程就像把那些不要的部分剔除了,我们看不到他,虽然他的mesh信息还在,但是我们的GPU不会去处理它,肯定比剔除前GPU的性能消耗要低。
这个过程就好比我们的mesh组件是一个透明的膜,我们假设这个胶纸我们根本看不到,而片段着色器在着色的时候像毛笔选择性地上色,最后的效果是我们可能看到膜的一部分是可见的,但是不见的地方,膜还是存在的,只是我们没有给他上色,我们既看不看他们,也不需要再他们上面画宝贵的墨水(GPU并行处理能力)
引用自:
(原) 解读Unity中的CG编写Shader系列3——表面剔除与剪裁模式
表面剔除效果测试示例
==========