渲染流水线--应用阶段详解

什么是渲染流水线

由一个三维场景出发,渲染一张二维图像

计算机从一系列的顶点数据,纹理等信息出发,把这些信息最终转换成一张人眼可见的图像。由C、GPU共同完成

 

分为下面三个阶段:

应用阶段

应用主导,开发者在此阶段有绝对控制权

负责实现:CPU

阶段任务:输出渲染图元

具体阶段:

数据准备 

渲染所需的数据都需要从硬盘加载到系统内存中,纹理、网格等数据又被加载到显卡的存储空间-显存中(显卡对显存的访问更快,且大多数显卡对内存没有访问权限)

渲染数据(顶点位置信息、法线方向、顶点颜色、纹理坐标)加载到显存中,内存中的数据就可以移除了,但一些数据CPU仍需要访问(用于碰撞检测的网格数据),所以我们不希望这部分数据被移除,因为从硬盘加载到内存的过程很耗时。

粗粒度剔除

设置渲染状态

什么叫渲染状态?---这些状态定义了场景汇总的网格是怎样被渲染的

没有更改渲染状态则所有的网格都将使用同一种渲染状态

包括不限于它使用的材质(漫反射、高光反射颜色)、纹理、shader等

此阶段最重要的输出是渲染所需要的几何信息--渲染图元(点、线、三角面等)

 通知draw call 

发起方CPU,接收方GPU

这个命令仅仅会指向一个需要被渲染的图元列表,不在包含任何材质信息,已完成

给定一个dc时,GPU根据渲染状态(材质、纹理、着色器)和所有输入的顶点数据来进行计算,最终输出屏幕上的像素,计算过程为后面的几何阶段和光栅化阶段


版权声明:本文为love_phoebe原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。