Culling

面剔除(Culling)

​ 一个3DCube我们最多只能看到3个面,那多余的几个面就能丢弃它,能节省片段着色器的执行数,这就是面剔除(Culling),我们可以分析顶点数据的环绕顺序(Winding Order)来区分正面和背面,而反面在绝大多数情况下是不用渲染的。

在Unity中Cull有三种用于控制几何体的哪一面会被剔除

Cull Back || Front || Off

  • Cull Back——不渲染多边形的背面(默认)。
  • Cull Front——不渲染多边形的正面。这将看到原来被正面遮挡的背面内容。
  • Cull Off——禁用剔除,两个面都会被绘制。同于一些特殊的效果。(一般用于绘制比较薄的对象,如:纸)
默认情况下,逆时针顶点所定义的三角形将会被处理为正向三角形。

观察者所面向的所有三角形顶点就是我们所指定的正确环绕顺序了,而立方体另一面的三角形顶点则是以相反的环绕顺序所渲染的。这样的结果就是,我们所面向的三角形将会是正向三角形,而背面的三角形则是背向三角形。如下图:

​ 在顶点数据中,我们将两个三角形都以逆时针顺序定义(正面的三角形是1、2、3,背面的三角形也是1、2、3(如果我们从正面看这个三角形的话))。然而,如果从观察者当前视角使用1、2、3的顺序来绘制的话,从观察者的方向来看,背面的三角形将会是以顺时针顺序渲染的。虽然背面的三角形是以逆时针定义的,它现在是以顺时针顺序渲染的了。这正是我们想要剔除(Cull,丢弃)的不可见面了