GPU、CPU渲染流水线

1、流水线:
制作一个玩具赛车:五道工序,第一步制作玩具的躯干、第二步添加轮子、第三步上色,第四步添加电源,第五步最后的产品封装
早期玩具赛车,是所有的五个工序完成才能做下一个赛车,每个步骤一小时,那就需要5个小时完成一辆赛车。
后来流水线出现,每个部分专门的人完成,所有步骤同步进行,这样,第一步的人完成交给下一步的负责人后,又可以重新开始第一步制作。
简单类比可以发现,一个工序分成N道流水线,且每个阶段用时相同,就可提升N倍速度。

2、渲染流水线
应用阶段(CPU):
1、把所有数据加载到显存中:
准备场景数据: 摄影机、模型、光源等,为了提高渲染粗粒度剔除(一般数据都是硬盘)-->系统内存(RAM)------>CPU------>网格、纹理(顶点位置、法向方向、顶点颜色、纹理坐标等)-->显卡的显存上(VRAM)------(GPU)
备注:一般到了显存后,RAM中的数据就可以剔除了,但是有些数据需要CPU访问,例如检测碰撞的网格数据

2、设置渲染状态:材质、纹理、光源属性,顶点着色器,片元着色器、是否开启混合等

3、最后输出这些渲染图元,这些图元可以是点线面三角 ,这些图元将会传递给下一个阶段"几何阶段” 调用Draw Call命令

几何阶段(GPU):
1、【顶点着色器】、曲面细分着色器、几何着色器、
利用顶点着色器 把顶点坐标从模型空间转换到齐次裁剪空间
2、裁剪 完全视野内、部分视野内、完全视野外
3、屏幕映射: 缩放过程 上面的单位坐标系,屏幕分辨率进行缩放即可,与z坐标一起组成了窗口坐标系(后面会传给光栅化阶段)

光栅化阶段(GPU):
1、三角形设置 三角形遍历
会生成很多三角顶点坐标,这些顶点坐标还带有像素
3、片元着色器
很重要的可编程着色器,纹理采样,计算顶点差值。
4、逐片源着色器
主要任务
(1)决定每个片元的可见性,利用了模板测试、深度测试等,例如 透明效果,小于某值就舍弃掉
(2)一个片元通过测试,然后就会把这个片元的颜色值与缓冲区的颜色值进行混合,最后输出

屏幕图像
为了避免我们看到正在进行的光栅化图元,我们使用双重缓冲,对场景的渲染是发生在后置缓冲中的,GPU交换后置缓冲众多的图元到前置缓冲 这样我们看到的图像就是连续的了。


猜你喜欢

转载自blog.csdn.net/yuewei19/article/details/79311220
今日推荐