光栅化

在进过MVP变换之后,把模型缩放到[-1,1]3的立方体内后,就需要把物体画到屏幕上了,这个就是光栅化

需要把立方体缩放到屏幕尺寸大小,然后把立方体的中心平移到屏幕的中心,这个时候先暂时忽略z轴,即得到视口变换矩阵:

在屏幕上显示一个物体时,这个物体由很多个三角形组成,然后就要考虑如何在屏幕上显示出三角形。通过采样的方法来显示三角形,用所有的像素来表示屏幕,然后判断哪些像素在三角形内,让这些像素显示出颜色即可显示出三角形。

 

 

 如何判断一个像素在三角形内,使用叉乘,以下图为例,以三个顶点的逆时针为例,即P0,P1,P2与Q点做叉乘,分别就是P0P1*P0Q,  P1P2*P1Q,  P2P0*P2Q,判断得到的三个向量是否同时朝外或者朝里,如果是则在三角形内,否则则不在。

 

 

但最后得到的结果是这样的:

产生了锯齿或者叫走样,反走样的方法是先模糊再采样。

SSAA:把一个父像素再进行分割,分割成2*2或者4*4,然后判断这些子像素是否在三角形内,为每个子像素计算颜色,然后求平均值赋给父像素点。

MSAA反走样法:是对SSAA的优化,求得父像素点的颜色后,在计算有多少子像素点在三角形内,然后把父像素点的颜色乘以子像素点在三角形内的百分比。

 

posted @ 2022-08-12 17:02  捞的不谈  阅读(199)  评论(0编辑  收藏  举报