GPU渲染流程图
本图来源:Programmable_Graphics_Pipeline
上图中蓝色box为数据,灰色box为固定单元阶段,绿色box为可编程阶段。
在OpenGL ES 1.x,core OpenGL 1.x, Direct3D 7.x时期,渲染是可配置的固定单元管线(fixed-function pipelines),无法在管线中使用程序片段。到了OpenGL(ES)2.0,WebGL,Direct3D 8.0后,两阶段(vertex shader stage和fragment shader stage)管线支持编程。
Rasterization(光栅化)详见:这里
Per-Fragment Operations详见:这里
数据流
要对cg的vertex和fragment shader进行编程,对他们的输入、输出数据的理解,以及掌握图形管线不同阶段之间的数据交互是至关重要的。
注意:
SV_POSITION
中SV指“system value”
PSIZE
指点状几何体的尺寸(size of point primitives)
在Fragment shader阶段,会默认计算depth,即使不指定输出参数DEPTH
Per-Fragment Operations
执行了很多操作。详见上面提供的链接。