一.渲染管线概述
1.概念:将数据分阶段变为屏幕图像的过程。
2.渲染管线中的数据(游戏场景的数据):
1)顶点数据:模型顶点坐标,法线向量等。
2)纹理数据:纹理贴图等。
3)光照数据:光照参数,光源信息等。
3.渲染管线阶段划分:应用阶段 > 几何阶段 > 光栅化阶段
二.应用阶段
1.CPU与GPU:CPU负责游戏逻辑处理;GPU负责渲染相关处理
2.作用:准备后续阶段所需的数据(CPU)
3.具体操作:
1)遮挡物体剔除
2)准备模型相关数据(顶点,法线,贴图等)
3)将数据加载到显存中
4)设置渲染状态(设置网格需要的Shader,材质等)
5)调用Drawcall
4.Drawcall
1)概念:CPU命令GPU渲染的一次指令。
2)性能瓶颈:CPU会花费大量时间提交Drawcall,造成CPU过载。
3)解决方式:批处理(合并网格【将静态物体合并网格】,共用材质【不同材质共用一种材质】,合并图集【2D与UI中将多张图合并为一张】)
三.几何阶段
1.图元:几何数据的基本单元(顶点组成的点,线,三角形)。
2.工作流程:顶点着色器 > 曲面细分着色器 > 几何着色器 > 裁剪 > 屏幕映射
3.顶点着色器:坐标变换,顶点属性处理(颜色,切线向量等),顶点插值等。
4.裁剪:裁剪画面外的图元。
5.屏幕映射:三维空间映射到屏幕二维坐标系中。
四.光栅化阶段
1.像素:二维图像中的一个点,每个像素占据屏幕固定位置。
2.片元(像素+信息):光栅化阶段生成的像素,每个片元代表一个像素,并具有位置信息与相关属性(颜色,深度值等)。
3.工作流程:三角形设置 > 三角形遍历 > 片元着色器 > 逐片元操作
4.三角形设置:计算三角形网格(根据顶点信息,生成三角形边界信息)的数据
5.三角形遍历:如果像素被三角形网格覆盖,则生成片元,最终得到被覆盖的片元序列。
6.片元着色器:光照计算,纹理映射(色彩纹理映射到片元),材质属性处理(计算片元最终颜色与透明度),阴影计算。
7.逐片元操作:对片元着色器输出数据进行处理与计算(决定可见性与颜色混合)
五.总结
1.应用阶段提供顶点数据。
2.几何阶段进行顶点坐标转换与图元裁剪。
3.对片元进行最终处理,完成是否渲染片元到屏幕上与最终渲染颜色。