渲染与数学 · 2024-03-16

Unity Shader 从入门到入土学习随笔(二)

渲染流水线的起点是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. 通过测试的片元色值进行合并混合

片元 → 模板测试 → 深度测试 → 混合 → 颜色缓冲区