3.4 顶点着色器-简介
2024-06-18
3
0
渲染管道中的第一个可编程着色器阶段是顶点着色器。如上所述,可编程着色器阶段执行用HTSL编写的自定义函数。在顶点着色器阶段的情况下,顶点着色器程序是为输入装配程序生成的顶点流中的每个顶点调用一次的函数。每个输入顶点都作为顶点着色器程序的参数接收,并且处理后的顶点作为函数的结果返回。每个顶点着色器调用都是在与其他调用完全隔离的情况下执行的,它们之间不可能进行通信。由于它对每个输入顶点执行一次,因此将存在输入顶点到顶点着色器阶段的输出顶点的一对一映射。顶点着色器在管道中的位置如图3.12所示。
此外,顶点着色器的每次调用都不知道输入装配程序生成的基元流。它的唯一目的是处理顶点数据,并将任何更高级别的处理留给管道下游的阶段。在不了解基本体的情况下,顶点着色器以相同的方式对所有不同的拓扑类型进行操作。无论是处理作为点、线、三角形还是面片提交的几何体,顶点着色器都会对各个顶点进行相同的处理。来自顶点着色器的处理后的输出与稍后在流水线中由输入装配程序阶段生成的基元信息相组合。这简化了顶点着色器阶段的工作,允许它执行完全相同的操作,而不管基本体类型如何。
顶点着色器位于输入装配程序阶段和外壳着色器阶段之间。这意味着它将在几何体数据插入管道之后以及执行任何细分之前立即处理几何体数据。通常在顶点着色器中执行的一些操作示例是将变换矩阵应用于输入几何体、执行基于骨骼的动画变换(也称为顶点蒙皮)以及执行逐顶点照明计算。在本节的剩余部分中,我们将更准确地研究顶点着色器阶段通常用于什么,以及它可以使用什么工具。我们首先考虑顶点着色器接收什么数据作为输入,然后考虑它执行的处理类型,最后考虑它产生什么数据作为输出。