【实时渲染】图形渲染管线
渲染管线是什么?
渲染管线的核心功能就是利用给定的虚拟相机、三维物体、光源等信息,经过一系列不同的阶段来生成或渲染一张二维图像。渲染管线就是实时渲染的低层工具。最终图像中物体的位置和形状,由其几何结构,环境特征以及相机位置所决定。而物体的外观则会受到材质属性、光源、纹理(应用在物体表面上的图像)以及着色方程的影响。
渲染管线的架构
渲染管线的结构其实是一种流水线的思想,一组工人比作一个流水线,组内不同的工人代表着不同阶段的操作。比如要生产一个三文治,第一个工人准备面包传递给第二个工人,第二个工人使用面包把面包和火腿块叠好传给第三个工人,第三个工人把配料涂在三文治上,就这样完成了一个三文治。
在渲染管线中也是这样。我们把它方程几个粗糙的阶段。如下:
程序应用-》几何阶段-》光栅化-》片元阶段-》测试阶段
程序应用
这一阶段主要由CPU完成,主要是把虚拟相机、三维物体、光源等信息传递给GPU。其实它还会做一些物理碰撞检测的阶段。也可以把一些简单的计算交给GPU来做,也就是计算着色器(computer shader)。因为开发者对这个阶段的控制度是最高的,所以大部分程序性能优化都可以在这个阶段来完成,比如对顶点的剔除,减少GPU计算点,面的数量等。
几何阶段
这一阶段主要对图像的顶点进行坐标系转换,由三个矩阵进行叉乘转换坐标轴,这三个矩阵分别是模型(Model)、观察(View)、投影(Projection)。这三个矩阵代表了物体顶点坐标从局部空间转换到裁剪空间,最后以屏幕坐标的形式结束。再生成图元(点,三角形等)传递到下一个阶段
光栅化
拿到几何阶段传递过来的图元,对图元内的像素进行搜索,得到图元内的像素并把这些像素传递到片元着色器进行加工。
片元阶段
对传递过来的片元进行染色处理,决定片元的显示颜色。
测试阶段
可以对没有通过的片元进行屏蔽处理。