Shader|渲染流程

  1. GPU:Graphics Processing Unit,图像处理器,GPU上有成千上万核,这些核并行运行;
  2. CPU:Central Processing Unit,*处理器,CPU通常有单核、双核、四核和八核,但这些核只能串行操作。
  3. 渲染流水线的工作任务在于由一个三维场景出发、生成(或渲染)一张二维图像,这个工作由CPU与GPU负责,如下图所示。
    Shader|渲染流程

一、应用程序阶段:
  1. 准备场景数据:所有渲染所需要的数据都需要从硬盘(HDD)中加载到系统内存(RAM)中。然后,网格和纹理等数据又被加载到显卡上的存储空间——显存(VRAM)。这是因为,显卡对于显存(VRAM)的访问速度更快,而且大多数显卡对于系统内存(RAM)没有直接的访问权利。
  2. 设置渲染状态:定义场景中的网格是怎么被渲染的。设置好之后,CPU调用渲染命令DrawCall来通知GPU开始渲染。
  3. DrawCall就是一个命令,它的发起方是CPU,接收方是GPU。当给定一个DrawCall后,GPU上会执行几何阶段与光栅化阶段。

二、GPU流水线:包括几何阶段光栅化阶段,每个阶段GPU提供了不同的可配置性或可编程性,如下图所示。

    Shader|渲染流程

  • 绿色表示该流水线阶段是完全可编程控制的。实线表示该Shader必须由开发者编程实现,虚线表示该Shader是可选的。
  • 黄色表示该流水线阶段可以配置但不是可编程的。
  • 蓝色表示该流水线阶段是由GPU固定实现的,开发者没有任何控制权。