第三章 光栅化操作
1.该操作为由顶点程序处理顶点进入硬件处理阶段。
2.光栅器:将顶点组装成图元 eg,三角形将其光栅化为片元集合。
3.光栅化操作包含子过程:剪裁操作,透视除法,背面剔除操作,视口转换,扫描转换。
3.1 剪裁操作
1.由硬件进行剪裁操作,主要是针对立方体视见体执行多边形剪裁操作。
3.2 透视除法
1.视椎体转换方法当中的一种。
2.将视锥体转换为2x2x1的立方体。
3.转换后的x和y的范围为(-1,1),转换后的z的范围为(-1,0)。
4.透视除法与投影矩阵转换的区别:<1>从齐次空间至笛卡尔空间的转换(由三维坐标升维为四维坐标时),转换后顶点的w坐标为-z,且无需为1. <2>各个顶点还需要除以自身的w坐标,w的值为-z,且为正值。——>确保z坐标位于(0,1)。
5.经过w除法操作后,较远处的对象通常比较小,产生透视投影或者透视收缩的效果。
3.3背面剔除操作、
1.剔除操作是指消除相机对象不可见的场景内容。
2.视椎体剔除操作消除部分不在视线中的场景内容,却不完整,还需进行背面剔除操作,以消除背向相机视点的相关多边形。【背向相机的多边形为背面】
3.判断一个三角形网格是否处于背面:该三角形的表面法线以及连接相机位置到当前三角形的法线c的点积。
4.nc为负值,两者之间构成钝角,三角形位于正面,反之为与背面。(后补图)
3.5 视口转换
1.视口:为当前场景所投影的矩形区域。
2.视口无需为全部屏幕,也可以为当前窗口的部分区域。
3.通过角顶点(MINx,MINy),宽度w,高度h,以及深度范围【minz,maxz】定义屏幕空间视口。(后补图)
4.剪裁空间到屏幕空间的转换矩阵:
5.大多数程序中,视口占全部窗口,minx,miny=(0,0)minz=0,maxz=1.则转换矩阵可简化为:
3.6扫描转换
1.各个屏幕空间图元将被划分为一组图元,该过程定义了图元所覆盖的屏幕空间的像素位置,并插值计算各顶点的属性,进而定义各个像素位置处的片元属性,该过程通常称为扫描转换。
2.线性插值计算:<1>边界线段 <2>水平扫描线【对R,G,B的值分别进行计算】
3.通过重复增加斜率可获得下一条扫描线的R值和x.(后补图)