顶点着色程序从GPU前端模块(寄存器)中提取图元信息(顶点位置. 法向量 . 纹理坐标等),并完成顶点坐标空间转换,法向量空间转换,光照计算等操作。最后将计算好的数据传送到指定寄存器中。
然后片段着色器从种获取需要的数据,通常为“纹理坐标,光照信息等”,并根据这些信息以及从应用程序传递的纹理信息进行每个片段的颜色计算,最后将处理后的数据送到光栅操作模块。
如果只有顶点着色器程序,那么只对输入的顶点进行操作,而顶点内部的点则按照硬件默认的方式自动插值。
例如:输入一个三角面片,顶点程序对其进行phong光照计算,只计算三个顶点的光照颜色,而三角面片内部点的颜色按照硬件默认的算法(Gourand明暗处理或者快速phone明暗处理),则效果也会较好,如果图形硬件使用Gourand明暗处理算法,则会出现马赫带效应(条带化)。
由于GPU对数据进行并行处理,所以每个数据都会执行一次shader程序。即,每个顶点数据都会执行一次顶点程序,每个片段都会执行一次片段程序。