GPU渲染管线

1 渲染管线整体图

GPU渲染管线

2 几何阶段

主要是为了得到三维顶点的法线,纹理等数据信息;但是不能够
GPU渲染管线
几何阶段这个坐标系转化如下:
GPU渲染管线

(1) 顶点着色器

这个阶段主要做的事情事顶点着色器(模型变换,视图变换,顶点着色
模型变换:将建模坐标系转化为世界坐标系,相当于以物体为中心转化为以世界为中心的转化,可以理解为为模型统一一个坐标系
GPU渲染管线
视图变换:将世界坐标系转为观察坐标系。可以理解为统一坐标系后要以个人的视野去观察这堆模型,所以将世界坐标系转为为观察坐标系
GPU渲染管线

顶点着色:确定顶点上材质上的光照效果;

  • 可在每个顶点处存储各种材料数据。
  • 形式多样:颜色,向量,纹理坐标等着色数据;
    -这些数据计算完后会发送到光栅化阶段,进行插值操作

(2) 几何着色器&曲面细分着色器

几何着色器:可选,输入为顶点数据,对图元的数据进行操作,可以添加顶点,使得更接近全面;
曲面细分着色器:没有曲面细分着色器的时候,这个过程在应用程序cpu中进行计算,但是放在GPU中进行更高效

(3) 裁剪

主要进行投影变换和裁剪,这个过程由GPU自动完成,
GPU渲染管线

(4) 屏幕映射

将规范化空间中的x,y坐标转化为屏幕坐标系中。z值以及法线,纹理等数据都不会丢掉,都会发送给光栅化阶段
GPU渲染管线

3 光栅化阶段

GPU渲染管线
三角形的设置:输入的是三角网格的顶点,而之后需要得到这个三角形网格对像素的覆盖情况,需要得到三角形编边界的表示方式;就好比把顶点连接成了三角网格;
三角形遍历的输入就是前面三角形设置的结果;
以顶点信息最终覆盖三角形网格的像素的位置,对应的这些像素就形成了一个片元;而片元中每个像素的状态都是根据三个顶点的信息进行插值而得到的。其他的法线,纹理信息都是通过插值计算出来的;
注意的是三角形的设置和三角形的遍历都是渲染管线的固定部分,由管线自动完成;
目的
GPU渲染管线
片元着色器之前的光栅化阶段并不会影响屏幕上每个像素点的颜色值;而是为产生一系列的数据信息,用来描述一个三角网格是如何覆盖每个像素的,每个片元用来存储这些数据;片元着色器就可以根据这些输入数据来计算每个片元的颜色值;这个阶段可以完成很多工作;比如纹理贴图
目的:计算每个片元像素的颜色值
片元操作
真正影响像素的颜色必须进行逐片元操作;输出合并阶段或者融合阶段;
将每个片元的深度与颜色和帧缓冲结合在起来的地方,片元着色已经算出了每一个像素的颜色值;但是为啥还要融合阶段
目的:计算出每个像素的颜色值;
GPU渲染管线

4总结

GPU渲染管线
整体输入是三角形顶点,
然后得到三角形网格,
之后得到三角形网格对像素点的覆盖,
接着通过片元着色到得每个片元的颜色值,
最后通过融合计算出每个像素点的颜色值