基础名词解释
3D物体:由三角形组成的几何形状构成的物体
顶点:具有空间坐标和其他意义(颜色、纹理坐标)的点
纹理:映射到3D物体表面的图像,提供物体由某种材质构成的幻觉,物体定点存储的二维向量坐标,用于指定纹理如何映射到给定的表面
渲染管线:又叫渲染流水线,将数据从3D场景转换成2D图像,最终在屏幕上显示出来的总过程,其主要分为应用阶段、几何阶段、光栅阶段
片元:不是真正意义上的像素,而是很多状态的集合,这些状态用于计算每个像素的最终颜色,例如屏幕坐标、深度信息、几何阶段输出的顶点信息(法线、纹理坐标等)
渲染图元(render primitives):渲染所需的几何信息,点、线、面等,这些数据会传递给下一阶段——几何阶段
渲染流水线
渲染流水线分为三个阶段
- 应用阶段(Application Stage)
- 几何阶段(Geometry Stage)
- 光栅化阶段(Rasterizer Stage)
应用阶段(Application Stage)
三个任务:
- 准备好场景数据:摄像机位置、视锥体参数、场景中包含哪些模型、使用了哪些光源等等
- 粗粒度剔除:把不可见的物体剔除出去
- 设置模型渲染状态:包括材质、纹理、Shader等
输出内容
渲染图元(render primitives):渲染所需的几何信息,点、线、面等,这些数据会传递给下一阶段——几何阶段
由于应用阶段又CPU主导,并且下一阶段几何阶段是在GPU中进行,故而会涉及到CPU与GPU通信的问题,我们可知应用阶段的大致分为以下三步:
- 把数据加载到显存中
- 设置渲染状态
- 调用Draw Call
把数据加载到显存中
硬盘HDD ——>系统内存RAM ——>显存VRAM