Shader 学习笔记(一) 渲染流水线

时间:2021-01-25 10:23:20

1. shader       

    Shader是渲染流水线中的一个环节 ,  要想知道Shader在其中扮演什么角色,就要了解渲染流水线是什么 。

2  流水线     

流水线的好处是提高了单位时间内的生产量,最后提高了整个生产流水线的生产效率。  在流水线系统中决定最后生产速   度的是最慢的工序所用的时间,因此最慢的工序是性能的瓶颈。

3  渲染流水线 

渲染流水线是由一个三维场景出发,渲染成一张二位图像显示在屏幕上。  换句话说就是计算机从一系列顶点数据,纹理等信息出发,把这些信息最终转换成人眼可以看到的图像。(由CPU和GPU一起完成)


 渲染流水线的概念阶段:应用阶段(Application Stage)-->几何阶段(Geometry Stage)-->光栅化阶段(Rasterizer Stage)

渲染流水线的每个阶段都是一个流水线系统。

 一    应用阶段:这个阶段是由我们的应用主导的,由CPU控制,我们有绝对的主导权;

(1)准备场景数据

   例如 摄像机或模型的位置信息,使用的光源等;

(2)粗粒度剔除

  为了提高渲染的性能,要把不可见得物体剔除出去,就不需要把不可见的数据交给几何阶段处理,提高了性能

(3)设置渲染状态

   包括使用的材质,漫反射  高光反射颜色  纹理   shader等。最终要的就是输出渲染所需要的几何信息,即渲染图元。渲染图元被传    递给下一个阶段---几何阶段

二    几何阶段:决定需要绘制的图元是什么,怎么绘制图元,在哪里绘制他们。 这一阶段在GPU上进行。

 几何阶段负责和每个渲染图元打交道,进行逐顶点 逐多边形操作。几何阶段的重要任务就是把顶点坐标变换到屏幕空间中,再到光栅化阶段。这一阶段将会输出屏幕空间的二维顶点坐标,每个顶点对应的深度值 着色等信息,传递给下一个阶段。

三    光栅化阶段:接受上一个阶段传来的数据来产生屏幕上的像素,渲染出图像,这一阶段在GPU上进行。

  光栅化的主要任务是决定每一个渲染图元中那些要被绘制在屏幕上,要对上一个阶段的数据(逐顶点数据  例如顶点颜色 纹理坐标等)进行插值,在进行逐像素处理。