Chapter 3 – The Graphics Processing Unit

3.2 GPU管线总览

GPU将会实现我们在第二章中提到的渲染管线的各个阶段,几何处理,光栅化以及像素处理。这些阶段将被划分为几个硬件阶段,而每个硬件阶段的可设置性与可编程性都有不同。下图展示了各个阶段的特点。

上图中,绿色的阶段表示完全可编程,虚线的框体表示可选阶段。黄色的阶段表示可设置但不可编程,例如,在合并阶段,我们可以设置多种blend模式。蓝色的阶段则表示它们的功能完全固定,不可编程。

在本小节中我们将学习GPU的逻辑模型(logical model),其通过API暴露给作为程序的我们。在第十八章与第二十三章中,我们将学习逻辑管线的实现以及GPU的物理模型(physical model)。在GPU端运行的一个逻辑模型中的功能固定的阶段,其可能需要相邻的可编程阶段的指令。在管线中的一个单一的程序可能要不划分为多个成员,被几个独立的子模块运行,或者被一个完全独立的通道运行。逻辑模型能够帮你理清哪一些原因会影响性能,但这并不代表GPU照着这一模式实现渲染管线的。

顶点着色器是一个可编程阶段,其用于实现几何处理阶段。几何着色器是一个可编程阶段,其处理图元的顶点。其可以被用于实现基于图元的着色操作,销毁图元或者创建新的图元。tessellation阶段与几何着色器都是可选的,并不是所有的GPU都支持这两个阶段,特别是移动平台的设备。

剪裁,三角形设置以及三角形遍历这几个阶段都由功能固定的硬件实现。屏幕映射则会被窗口以及视口的设置所影响,其会造成缩放或者改变位置。像素着色器是可编程的阶段。虽然合并阶段不是可编程的,但我们能通过各种设置实现不同的操作。其实现了“合并”的功能阶段,负责改变color buffer,z-buffer,融合(blend),stencil以及其他输出相关的buffer。像素着色器和合并阶段就是我们在上一章节中所提到的理论上的像素处理阶段。

随着时间的推移,GPU管线已经由硬编码操作进化为更灵活,控制性更强的管线。可编程的着色器阶段是这一进化轨迹中最重要的部分。

留下评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据