可视性判断是指:能够根据给定的相机位置与方向,快速地计算出一个场景中有那些内容是可见的,并对场景中的可见部分进行渲染处理。可视性判断主要进行以下几种类型的判断:
1. 判断三角形面的正面和背面。三角形面的正面和背景由手向性决定的:
左手坐标系:三角形面的三个顶点按顺时针排列时,法向量所指的方向时正面,和法向量相反的方向时背面。
右手坐标系:三角形面的三个顶点按逆时针排列时,法向量所指的方向时正面,和法向量相反的方向时背面。
判断三角形面的正面和背景的算法叫做:2D Back-Face Culling(2D背面挑选)。
2. 判断几何体中不可见的面。根据摄像机所在的位置判断一个几何体中被其他面遮挡的面。
判断几何体中不可见的面的算法叫做:3D Back-Face Culling(3D背景挑选)。
3. 判断几何体之间的遮挡情况。3D空间的几何体可以完全或者部分被其他的几何体遮挡。
4. 判断几何体是否在视截体的范围内。不在视截体范围内的几何体将会被从渲染流水线中剔除掉,不会被渲染。
有以上可以看出,可视性判断是分层来完成的。一般可以分为以下几个层次:
1. Pixel-level VSD,象素级可视性判断。此判断处在GPU阶段,GPU使用深度缓冲(depth buffer,也叫z-buffer)中的值来判断象素的遮挡情况。
2. Triangle-level VSD,三角形面级可视性判断。此判断可以处在两个不同的阶段:在GPU阶段,GPU执行2D Back-Face Culling;在CPU阶段ÿ