渲染流水线的起点是CPU,可等同于应用阶段
1. 数据加载至显存中
CPU数据流转 | GPU数据流转 |
---|---|
硬盘.HDD → 系统内存.RAM → | 显存.VRAM |
2.设置渲染状态
定义网格使用了哪个Shader、光源属性、材质
3. 调用DrawCall
CPU通知GPU可以显存从获取渲染元开始渲染工作了
cpu流水线(核心数据处理)
几何阶段 | 光栅化阶段 | |
---|---|---|
顶点数据 → | 顶点着色器 → 曲面细分着色器 → 几何着色器 → 裁剪 → 屏幕映射 → | 三角形设置 → 三角形遍历 → 片元着色器 → 逐片元操作 → 屏幕图像 |
- 顶点Shader 计算顶点空间变换,逐顶点光照
- 曲面细分Shader 用于细分图元
- 几何Shader 用于计算执行逐图元或产生更多的图元
- 片元Shader 用于实现逐片元着色操作
- 逐片元操作 不可编程,提供配置(高配置)修改颜色,深度缓冲,进行混合
顶点Shader
必选完成工作把顶点坐标从模型空间转换到齐次裁剪空间
- o.pos = mwl(UNITY_MVP, V.position);
在进行三角形遍历时,被一个三角网格所覆盖,就会形成一个片元。片元状态对顶点的信息进行插值计算得到
片元Shader
根据片元状态信息,计算片元输出颜色
局限仅可以影响单个片元
逐片元操作
又称作输出合并阶段(output – mergan)
1. 通过深度、模板等测试片元的可见性
2. 通过测试的片元色值进行合并混合
片元 → 模板测试 → 深度测试 → 混合 → 颜色缓冲区