渲染流水线

  1. shader中的流水线分三个阶段:

应用阶段(CPU):准备场景数据,进行粗粒度剔除工作,设置渲染状态。本阶段的主要工作是输出渲染所需的集和信息,即渲染图元,然后传递给几何阶段

几何阶段(GPU):决定绘制的是什么,怎样绘制,在哪里绘制。这一阶段输出屏幕空间的二维顶点坐标,每个顶点对应的深度值,着色等相关信息并传递给下一个阶段

光栅化阶段(GPU):使用上一个阶段传递的数据来产生屏幕上的像素,并渲染出最终的图像

 

1.CPU和GPU的通信:

1.把数据加载到现存中(大部分显卡不具备访问RAM的权利),

然后设置渲染状态

2.设置渲染状态,定义网格怎样被渲染(使用哪个顶点着色器,片元着色器,光源属性,材质等等),设置好后调用渲染命令(DrawCall)告诉GPU开始渲染

 

  1. GPU流水线

几何阶段:输出屏幕坐标系下的顶点位置,以及他们的额外信息

  1. 顶点着色器:输入来自于CPU,处理得单位是顶点,其本身不创建或者销毁顶点。主要任务是坐标变换和逐顶点光照。基本的操作即:将顶点坐标从模型空间转换到齐次裁剪空间
  2. 裁剪:为了使不在视野中的物体不被渲染而进行的动作,不可变成
  3. 屏幕映射:将每个图元的,x, y坐标装换到屏幕坐标系(二维坐标系,且与显示画面的分辨率有很大关系)

光栅化阶段:计算每个图元覆盖了哪些像素,以及为这些像素计算它们的颜色

  1. 三角形设置:计算三角网格表示数据
  2. 三角形遍历:检查每个像素是否被一个三角网格所覆盖,如果覆盖就生成一个片岩,
  3. 片元着色器:完成很多重要的渲染,纹理采样也在这里进行
  4. 逐片元操作:决定每一个片元的可见性,进行深度测试,模板测试等等,通过测试的片元会与颜色缓冲区的颜色进行混合

 

3. Shader的性质

1. GPU流水线上的可高度变成的阶段,由着色器编译出来的最终代码在GPU上运行

2. 有一些特定类型的着色器

3. 依靠这些着色器我们可以控制流水线中的渲染细节,例如用顶点着色器来进行顶点变换以及传递数据,用片元着色器进行逐像素的渲染

4. 要得到出色的游戏画面,是需要包括Shader在内的所有渲染流线阶段的共同参与才可以完成:设置适当的渲染状态,使用合适的混合函数,开启还是关闭深度写入等

posted on 2020-11-10 12:02  百晓灵狐  阅读(83)  评论(0编辑  收藏  举报