3D数学 学习笔记(10)背面剔除、裁切、光栅化

发表于2018-01-03
评论0 2k浏览
背面剔除(Backface Culling)

移除没有面对这镜头的三角形,只考虑三角形与摄像机的相对位置而不依赖与摄像机朝向。依靠三角形顶点顺序直接判断法向量方向(左手法则)。

顺时针法向量朝外,逆时针朝内,剔除。 

下图圈中法向量方向虽然和镜头方向大致相同(小于180度),但实际上是看得到的。 


裁切(Clipping)

把不在视锥体内或不完全在的三角形清除或剪切。输出裁切后的顶点。每条边分四种情况: 

多边形裁剪: 


光栅化(Rasterzation)

在裁切后,顶点会投影到屏幕坐标。概念性的有以下5个执行步骤: 
1. 插值(Interpolate),大部分计算如:顶点级别的纹理坐标、颜色、法线都要在着色前计算好。 
2. 深度测试(Depth test),剔除掉被遮住的像素。这里计算也可能是在着色后计算。 
3. 着色(Shader):为像素计算颜色。一般先光照后雾化,输出的颜色包含透明值,即RGBA。 
4. 透明测试(Alpha test),丢弃过度透明的物体。有透明的物体不需要写入深度缓冲。 
5. 写入(Write),通过深度和透明测试的像素,会更新帧缓存和深度缓冲。深度缓存用新值直接替换旧值。帧缓存没有开启混合,则可直接替换,否则需要用alpha值混合。

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

标签: