D3D10 可编程渲染管道是为实时应用设计的。它被分成7个阶段,其中3个阶段是可编程的。数据流图如下:
所有阶段都可以通过D3D10API进行配置。三个可编程阶段都建立在通用着色器内核(common shader core)之上,都使用HLSL编写。各部分功能简述如下:
1 . 输入装配器阶段(IA)
为管线提供数据(三角面,线或点)
2 . 顶点着色器阶段(VS)
输入一个顶点,执行坐标变换、蒙皮(Skinning)和光照计算,输出一个顶点。
3. 几何着色器阶段(GS)
处理整个图元(对于三角形是三个顶点,对于线是两个顶点,对于点是一个顶点),还包括相邻图元的顶点数据(对于三角形有三个相邻三角形,即额外的三个顶点,对于线则有额外两个顶点)。支持有限的几何放大和缩小。输入一个图元,GS可能丢弃该图元或输出一个至多个图元。
4. 流输出阶段(SO)
在图元数据传输到光栅器的过程中,将图元数据从管线中输出至内存。可以将图元数据同时输出至光栅器和内存,或者只输出到内存。输出到内存的数据可以作为输入返回到管线,也可以被CPU访问。
5. 光栅器阶段(RS)
光栅器执行裁剪,为PS准备数据,并决定如何调用PS。
6. 象素着色器阶段(PS)
接收经RS插值过的数据,计算逐顶点的数据
7. 输出合并阶段(OM)
将输出数据(PS输出值,深度及模板数据)与渲染目标和深度模板缓存中的数据进行合并来生成最终的管线结果。