「UnityShader入门精要」第二章 渲染流水线
2.3 GPU流水线
2.3.2 顶点着色器
输入来自于CPU,处理顶点数据。输入的每个顶点都会调用一次顶点着色器,所以每次都是对单个顶点进行运算。
主要任务:坐标变换、逐顶点光照。
坐标变换:修改顶点的位置,例如模拟水面波纹效果、果冻效果等。
必须完成的工作,把顶点坐标从模型空间转换到齐次裁剪空间。
常见的如:o.pos = mul(UNITY_MVP, v.position);
2.3.3 裁剪
摄像机视野有限,视野外的物体不需要被处理,可以直接裁剪掉。
2.3.4 屏幕映射
将单位立方体内的三维坐标转换到二维屏幕坐标,与分辨率有较大关系。
2.3.5 三角形设置
将网格点连成线,计算得到三角形网格。
2.3.6 三角形遍历
计算每个像素是否被三角网格覆盖,覆盖则生成片元。
2.3.7 片元着色器
输入:上一个阶段(顶点着色器)对顶点信息插值的结果
输出:一个或多个颜色值
渲染技术:纹理采样
2.3.8 逐片元操作
1.决定每个片元的可见性,例如,深度测试、模版测试
2.将通过测试的片元颜色值与缓冲区内的颜色进行混合
3.混合,不透明物体直接覆盖原缓冲区的像素值,透明物体与原缓冲区像素值进行混合。
2.4 一些容易困惑的地方
2.4.3 什么是Draw Call
CPU调用图像编程接口命令GPU进行渲染的操作,Draw Call多了导致CPU大量执行重复的命令而过载,掉帧。