《Real-Time Rendering 4th》读书笔记- 第二章 Rendering Pipeline

总体架构:应用阶段(Application)--几何阶段--光栅化阶段--像素处理阶段

应用程序阶段:

执行碰撞检测、加速算法、剔除算法、动画、物理仿真等任务。

CPU执行,可以完全控制该阶段发生的事。应用程序阶段结束时,几何图元(点线三角形)会被输出给几何处理阶段。

几何处理阶段:

GPU中执行。负责处理大部分逐三角形和逐顶点的操作。

可以细分为:顶点着色、投影、裁剪、屏幕映射。


顶点着色 vertex shading

1. 计算顶点位置

模型变化顺序:模型空间、世界空间、观察空间(沿-z方向看,y轴指向上方、x轴指向右方)

2. 计算需要输出的顶点数据,如normal、uv。

顶点可以储存位置、法线、颜色等着色所需的任何信息,然后对这些信息进行插值。

投影变换 

投影变换将 view volumn 转化为单元立方体,分为正交投影(view volumn为长方体)、透视投影(view volumn为视锥体)。 

投影变换用 4x4的矩阵 构造。转换后的空间为裁剪坐标(齐次坐标),发生在用w做除法前。


可选的顶点阶段

曲面细分、几何着色、流输出

曲面细分器:将面片的顶点集合转换为更大的顶点集合,然后创建新的三角形集合。摄像机动态确定需要多少个三角形(靠近时生成很多,远离时生成比较少)。

几何着色器:读取各种图元产生新的顶点。广泛的应用是例子生成,可以获取每单个顶点生成火球/正方形。

流输出:选择将其输出到数组。


裁剪 Clipping

只有全部或部分位于视锥体内的图元才会执行光栅化阶段。部分位于视锥体内的图元要进行裁剪,在边界处生成新的线段或顶点,然后丢弃掉外部的顶点。


屏幕映射

得到NDC的坐标,xy坐标转化为屏幕坐标,z坐标(OpenGL中为 [−1,+1],DirectX 中为 [0,1])

光栅化:

三角形设置

计算三角形网格的表示数据(计算了三角形的微分、边缘方程和其他数据)。

三角形遍历

检查像素是否被三角形覆盖,如果覆盖生成一个片元。

像素着色

使用插值的着色数据作为输入,此处可以执行任何逐像素的着色计算。

合并

负责解决可见性。

猜你喜欢

转载自blog.csdn.net/weixin_64540465/article/details/125935265
今日推荐