GPU图形绘制管线简介

(阅读GPU+编程与CG+语言之阳春白雪下里巴人所得总结)

GPU图形绘制管线是描述GPU渲染(把三维世界显示为屏幕上的二维图像)的流程,主要分为三个主要阶段应用程序阶段、几何阶段、光栅阶段。

1.应用程序阶段

使用高级编程语言进行开发,和CPU、内存交互(诸如碰撞检测、场景图建立、空间八叉树更新、视锥裁剪等经典算法都在此阶段执行)。最后把几何数据通过数据总线传到图形硬件。

2.几何阶段

主要负责顶点变换、光照、裁剪、投影以及屏幕映射以得到变换后的顶点坐标、纹理坐标、颜色。

2.1顶点坐标的空间转换

2.1.1从物体坐标到世界坐标

光照计算通常在世界坐标中进行。

顶点法向量的转换矩阵是world matrix的转置矩阵的逆矩阵。

2.1.2从世界坐标到视点坐标

视点坐标是以camera(视点或相机)为原点,由视线方向、视角和远近平面,共同组成一个梯形体的三维空间,称之为viewing frustum(视锥)。超出视锥部分进行视点去除。

2.1.3从视点坐标到屏幕坐标空间

三步组成:

1.用透视变换矩阵把顶点从视锥体中变换到裁剪空间的CVV(规范立方体,该立方体的对角顶点分别是(-1,-1,-1)和(1,1,1))中,这个过程就是我们常说的投影;

2.  在CVV进行图元裁剪;

3.屏幕映射:将经过前述过程得到的坐标映射到屏幕坐标系上。

注:视点去除也可以用高级语言在cpu上实现。

2.2图元装配

将顶点根据primitive(原始的连接关系)还原出网格结构。超出屏幕的三角形要进行裁剪,看到的部分变成四边形,也就是由两个三角形组成。

另外根据三角形顶点顺序来决定法向量(右手定则),一般顶点按逆时针排列,如果法向量朝向视点则为正面(法向量与到视点的方向的点积为正)。反面则要进行背面剔除。

3.光栅阶段

3.1光栅化本质坐标变换,几何离散化(点的位置四舍五入为整数)。通俗地讲,就是将几何信息转换成一个个的栅格组成的图像过程。

至于画线和图元填充可以参阅《计算机图形学》。

3.2像素操作

计算出每个像素的颜色。包含以下:

1.消除遮挡面

2.Texture operation,纹理操作,也就是根据像素的纹理坐标,查询对应的纹理值

3.Blending,混色

4:Filtering,将正在算的颜色经过某种Filtering(滤波或者滤镜)后输出。

猜你喜欢

转载自www.cnblogs.com/pj2933/p/11098184.html