看不懂CG语义

Cant understand CG semantic

我是 CG 初学者,做简单的着色器。我不明白这段代码是什么意思

float4 vert(float4 vertexPos : POSITION) : SV_POSITION {
  ...
}

此时此刻:我们宣布了类型为 float4.Question 的参数:这是做什么的

": POSITION" 和这个 ": SV_POSITION"

或为此提供参考

提前致谢!

只是认为以下内容可能有助于理解。

来源:http://http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter02.html

 struct C2E1v_Output {

  float4 position : POSITION;

  float4 color    : COLOR;

};

C2E1v_Output C2E1v_green(float2 position : POSITION)

{

  C2E1v_Output OUT;

  OUT.position = float4(position, 0, 1);

  OUT.color    = float4(0, 1, 0, 1);  // RGBA green

  return OUT;

}

2.1.6 语义

C2E1v_Output 结构的位置和颜色成员后跟一个冒号和一个称为语义的特殊词。从某种意义上说,语义是将 Cg 程序绑定到图形管道其余部分的粘合剂。语义 POSITION 和 COLOR 表示当 Cg 程序 returns 其输出结构时,相应成员提供的硬件资源。它们指示它们前面的变量如何连接到图形管道的其余部分。

POSITION 语义(在这种情况下,在 Cg 顶点程序使用的输出结构中)是变换顶点的剪辑-space 位置。后面的图形流水线阶段将使用与此语义关联的输出向量作为顶点的 post-变换、裁剪-space 位置,以进行图元组装、裁剪和光栅化。本章稍后将向您介绍 clip space,并在第 4 章更正式地介绍。现在,您可以将 2D 顶点的 clip-space 位置简单地视为它在 [=33 中的位置=].

在此上下文中的 COLOR 语义是 Direct3D 调用的 "diffuse vertex color" 和 OpenGL 调用的 "primary vertex color." 在光栅化期间三角形或其他几何图元的颜色插值取决于图元的逐顶点颜色。