最新正在学习shader中,正巧翻阅到了霜狼大大的视频,因此写一份学习笔记当做作业,文章末尾放了视频的链接,文章中有错误希望大家能够指出 谢谢!
总流程
- 应用阶段 ——> 几何阶段 ——> 光栅化阶段 ——> 逐片源阶段 ——> 后处理
应用阶段
- 设置场景基本数据:收集模型的大小,位置和旋转信息、光源类型和光照信息、摄像机参数
- 粗粒度剔除和算法加速:剔除不需要发给几何阶段的物体信息 例:视椎体剔除和遮挡剔除
- 设置渲染状态,准备渲染参数:渲染类型是从后往前还是从前往后等
- 调用Draw Call:CPU通知GPU可以开始渲染
几何阶段
- 顶点着色器(可编程):
- 顶点变换:模型坐标系 ——> 世界坐标系 ——> 观察坐标系 ——> 投影坐标系 俗称:MVP矩阵
- 顶点着色:计算顶点光照等数据 并设置顶点颜色
- 可选顶点处理(可编程):曲面细分和几何着色器
- 投影(Unity完成):将投影坐标系根据摄像机的设置(正交或者透视)转换到归一化的设备坐标(简称NDC),该坐标值的x,y分量是[-1,1]之间,z分量在再openGL下是[-1,1],在Direct3D下是[0,1]
- 裁剪(可配置): 裁剪掉屏幕外的顶点(同时也可能生成新的顶点) 该阶段是可以配置的,可以使用自定的裁剪屏幕来排至裁剪区域,也可以通过指令控制裁剪正面还是背面
- 屏幕映射:从-1到1的投影坐标系,映射到正式的屏幕的坐标位置,