概念流水线
应用阶段
把数据加载到显存:把顶点、纹理、法线等数据准备好。
设置渲染状态:使用哪些着色器、光源属性、材质等。
调用DrawCall:告诉GPU开始渲染工作。
几何阶段
顶点着色器把顶点坐标从模型空间转换成齐次裁剪空间。
硬件做透视除法,得到归一化的设备坐标(NDC)。
屏幕映射转换成屏幕坐标系。
光栅化阶段
说明
几何阶段 + 光栅化阶段 = GPU流水线。
简化的GPU流水线
1. 逐顶点操作
使用顶点着色器操作顶点,比如进行坐标变换、顶点光照、生成纹理坐标
2. 图元装配
将顶点连成相应的图形
3. 光栅化
找到图元覆盖的像素点,并对属性值进行插值
(片元 = 像素 + 属性)
4. 片元处理
使用片元着色器来操作片元
5. 逐片段操作
该阶段也叫输出合并阶段。
决定每个片元的可见性:深度测试、模板测试等。
将通过测试的片元与颜色缓冲区的颜色进行混合。
(源颜色指片元着色器得到的颜色,目标颜色指已存在于颜色缓冲区的颜色)
其他:提前测试
在逐片段操作阶段,可能会把辛辛苦苦计算出来的片元直接丢弃,十分浪费,因此有时候会使用Early-Z技术把深度测试提前执行。但是只有在片元着色器与提前测试没有冲突时才会执行,如果片元着色器进行了丢弃片元等操作,则不能提前测试。(所以透明度测试会导致性能下降)
总述
前一个阶段的输出是下一个阶段的输入,因此管线的速度取决于最慢的那个阶段。因为采用的是流水线的工作方式,因此某个阶段完成当前的任务后,可以接手下一个渲染的任务。
作者:Kaima_Chen
链接:https://www.jianshu.com/p/4911763b626d
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。