着色器与渲染管线
渲染管线一般是有显示芯片(GPU)内部处理图形信号的并行处理单元组成。这些并行处理单元两两之间是相互独立的,在不同型号的硬件上独立处理单元的数量也有很大的差异。
图中阴影部分是可编程的部分
1.基本处理
该阶段设定3D空间中物体的顶点坐标,顶点对应的颜色,顶点的纹理坐标等属性,并且指定绘制方式。
2.顶点着色器
顶点着色器是一个可编程的处理单元,功能为执行顶点的变换,光照,材质的应用于计算等顶点的相关操作。工作过程为首先将原始的顶点几何信息及其他属性传送到顶点着色器中,经过自己开发的顶点着色器处理后产生纹理坐标,颜色,点位置等后继流程需要的各项顶点属性信息,然后将其传递给图元装配阶段。
顶点着色器的输入主要为待处理顶点相应的attribute变量,uniform变量,采样器以及临时变量;输出主要为经过顶点着色器生成的varying变量及一些内建输出变量。
顶点着色器的输入数据由下面组成:
Attributes:使用顶点数组封装每个顶点的数据,一般用于每个顶点都各不相同的变量,如顶点位置、颜色等。
Uniforms:顶点着色器使用的常量数据,不能被着色器修改,一般用于对同一组顶点组成的单个3D物体中所有顶点都相同的变量,如当前光源的位置。
Samplers:这个是可选的,一种特殊的uniforms,表示顶点着色器使用的纹理。
Shader program:顶点着色器的源码或可执行文件,描述了将对顶点执行的操作。
输出变量-易变比那里在顶点着色器赋值后并不是将赋的值送入后后继的片元着色器中,而是在光栅化阶段由管线根据片元所属顶点对应的顶点着色器对此易变变量的赋值情况及片元与各项顶点的位置插值产生。