TA百人计划 图形 1.1 渲染流水线
开始从零开始跟着计划学习
笔记/作业
应用阶段
在CPU上执行,主要操作:
- 做数据准备操作,加载mesh、贴图等
- 粗粒度剔除,减少不必要计算
- 渲染设置(使用哪个纹理、设置使用的顶点着色器、设置使用的片元着色器等...)
- 调用图形API进行
Draw Call
将任务提交到渲染队列中,GPU将会从队列里取出任务进行后续操作
几何阶段
在GPU上执行。进行顶点坐标转换,将物体坐标转换到屏幕坐标
- 执行顶点着色器,将物体坐标转换到齐次裁剪坐标下
- 进行曲面细分着色器、几何着色器操作(如果有的话)
- 在裁剪空间下裁切,去除不需要的顶点,同时在边缘新增必要的顶点?(不可操作,GPU自己执行)
- 转换顶点坐标到屏幕空间下(同样GPU自动完成)
光栅化阶段
- 设置三角形,根据顶点信息生成每个三角形的边(GPU自动完成)
- 三角形遍历,遍历每个三角形所覆盖的片元(GPU自动完成)
- Early-Z(如果有的话)。提前计算深度,剔除不必要的片元,减少片元着色器的计算量。如果有需要手动clip掉片元的情况下不适用。
- 执行片元着色器(可以不需要)
- 各种测试。模板测试、深度测试等...。
- 混合。半透明物体颜色和后面物体颜色混合
后处理
对最后的输出帧缓冲进行处理。因为包含额外深度等信息,所以能做的事比常规CV操作多。
- 描边
- FXAA、TXAA等后处理进行的抗锯齿
- bloom
- 景深