1. shader
Shader是渲染流水线中的一个环节 , 要想知道Shader在其中扮演什么角色,就要了解渲染流水线是什么 。
2 流水线
流水线的好处是提高了单位时间内的生产量,最后提高了整个生产流水线的生产效率。 在流水线系统中决定最后生产速 度的是最慢的工序所用的时间,因此最慢的工序是性能的瓶颈。
3 渲染流水线
渲染流水线是由一个三维场景出发,渲染成一张二位图像显示在屏幕上。 换句话说就是计算机从一系列顶点数据,纹理等信息出发,把这些信息最终转换成人眼可以看到的图像。(由CPU和GPU一起完成)
渲染流水线的概念阶段:应用阶段(Application Stage)-->几何阶段(Geometry Stage)-->光栅化阶段(Rasterizer Stage)
渲染流水线的每个阶段都是一个流水线系统。
一 应用阶段:这个阶段是由我们的应用主导的,由CPU控制,我们有绝对的主导权;
(1)准备场景数据
例如 摄像机或模型的位置信息,使用的光源等;
(2)粗粒度剔除
为了提高渲染的性能,要把不可见得物体剔除出去,就不需要把不可见的数据交给几何阶段处理,提高了性能
(3)设置渲染状态
包括使用的材质,漫反射 高光反射颜色 纹理 shader等。最终要的就是输出渲染所需要的几何信息,即渲染图元。渲染图元被传 递给下一个阶段---几何阶段
二 几何阶段:决定需要绘制的图元是什么,怎么绘制图元,在哪里绘制他们。 这一阶段在GPU上进行。
几何阶段负责和每个渲染图元打交道,进行逐顶点 逐多边形操作。几何阶段的重要任务就是把顶点坐标变换到屏幕空间中,再到光栅化阶段。这一阶段将会输出屏幕空间的二维顶点坐标,每个顶点对应的深度值 着色等信息,传递给下一个阶段。
三 光栅化阶段:接受上一个阶段传来的数据来产生屏幕上的像素,渲染出图像,这一阶段在GPU上进行。
光栅化的主要任务是决定每一个渲染图元中那些要被绘制在屏幕上,要对上一个阶段的数据(逐顶点数据 例如顶点颜色 纹理坐标等)进行插值,在进行逐像素处理。