Games101 阶段性总结①
一、GPU的渲染流水线
首先有三个阶段:
1. 分别为应用阶段(Application Stage)
2. 几何阶段(Geometry Stage)
3. 光栅化阶段(Rasterization)
应用阶段:CPU将顶点数据等从RAM加载进显存中,调用Draw Call分派顺序。
几何阶段:进行MVP矩阵变换,在裁剪不在屏幕空间中的信息,然后投影。(顶点着色器)
光栅化阶段:根据顶点画出三角形面片,且对像素进行采样、插值,渲染片元等操作。(片元着色器)
最后就能得到我们的图像了
二、MVP变换矩阵
因为我们无法对应用阶段进行操作,但是为了图像能够准确显示在我们的屏幕上,那么我们首先就要对模型以及摄像机进行Model、View变换。
根据相对运动,我们想让摄像机摆放到原点位置,其实就是对顶点经过模型变换后,在变换一次视图变换。
最后根据投影方式,选择正交矩阵或者投影矩阵。
Model变换(SRT)
将顶点等属性变换到世界空间,而组成的的复合矩阵


(关于旋转变换,自己的理解以及推导)
将上面矩阵进行复合,相当于Unity中的Transform视口

三、Projection 投影变换
正交投影:将要转换那块视图,变换、映射到[-1,1]的二次方中


透视投影:按闫老师的话解释,就是在四棱锥的最远处的矩形进行压缩,同时保持中心还是原来的中心,z不变,压缩到近平面的矩形那样。
点击查看投影矩阵代码
Eigen::Matrix4f Ptransform1;
Ptransform1 << n, 0.0, 0.0, 0.0,
0.0, n, 0.0, 0.0,
0.0, 0.0, n + f, -n * f,
0.0, 0.0, 1.0, 0.0;
Eigen::Matrix4f Ptransform2;
Ptransform2 << 1.0, 0.0, 0.0, -((b + r) / 2),
0.0, 1.0, 0.0, -((a + t) / 2),
0.0, 0.0, 1.0, -((n + f) / 2),
0.0, 0.0, 0.0, 1.0;
Eigen::Matrix4f Ptransform3;
Ptransform3 << 2.0 / (r - b), 0.0, 0.0, 0.0,
0.0, 2.0 / (t - a), 0.0, 0.0,
0.0, 0.0, 2.0 / (n - f), 0.0,
0.0, 0.0, 0.0, 1.0;
Eigen::Matrix4f o = Ptransform3 * Ptransform2;
projection = o * Ptransform1;
四、一些关于点于向量的表示
规定点:

规定向量:

有幸看到闫令琪老师的图形学课程,对我提升非常大,也是对迷迷糊糊啃完《Unity Shader 入门精要》的系统性的帮助,在此写下学习笔记,希望各路人士的锐评

浙公网安备 33010602011771号