管道阶段 (Direct3D 10)
Direct3D 10 可编程管道专为实时游戏应用程序生成图形而设计。 下图显示了从输入到输出到每个可编程阶段的数据流。
direct3d 10 可编程管道中数据流的
可以使用 API 配置所有阶段。 具有常见着色器核心(圆角矩形块)的阶段是可编程的,使用 HLSL 编程语言。 正如你所看到的,这使得管道非常灵活和适应性强。 下面列出了每个阶段的用途。
- Input-Assembler 阶段 - 输入装配器阶段负责向管道提供数据(三角形、线条和点)。
- Vertex-Shader 阶段 - 顶点着色器阶段处理顶点,通常执行转换、外观和照明等作。 顶点着色器始终采用单个输入顶点并生成单个输出顶点。
- Geometry-Shader 阶段 - 几何着色器阶段处理整个基元。 它的输入是一个完整的基元(它是三角形的三个顶点、一条线的两个顶点或一个点的单个顶点)。 此外,每个基元还可以包括任何边缘相邻基元的顶点数据。 这最多可以包括三个三角形的顶点,或者另外两个顶点用于一条线。 几何着色器还支持有限的几何放大和取消放大。 给定输入基元,几何着色器可以放弃基元,或发出一个或多个新基元。
- Stream-Output 阶段 - 流输出阶段设计用于将基元数据从管道流式传输到内存,以将其传输到光栅器。 可以流出和/或传入光栅器中的数据。 流式传输到内存的数据可以作为输入数据重新流回到管道中,也可以从 CPU 进行读回。
- 光栅器阶段 - 光栅器负责剪裁基元、为像素着色器准备基元并确定如何调用像素着色器。
- Pixel-Shader 阶段 - 像素着色器阶段接收基元的内插数据,并生成每像素数据(如颜色)。
- Output-Merger 阶段 - 输出合并阶段负责将各种类型的输出数据(像素着色器值、深度和模具信息)与呈现目标和深度/模具缓冲区的内容相结合,以生成最终管道结果。
相关主题