我是CG的初学者并做简单的着色器。我无法理解这段代码的含义
float4 vert(float4 vertexPos : POSITION) : SV_POSITION {
...
}
而不是这一刻:我们宣布了类型为float4.Question的参数:这是什么
“:POSITION”且此“:SV_POSITION”
或者为此提供参考
提前致谢!
答案 0 :(得分:2)
认为以下内容可能有助于理解。
来源: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程序返回其输出结构时各个成员提供的硬件资源。它们表明它们之前的变量如何连接到图形管道的其余部分。
POSITION语义(在这种情况下,在Cg顶点程序使用的输出结构中)是变换顶点的剪辑空间位置。稍后的图形管线阶段将使用与该语义相关联的输出向量作为用于基元组装,剪切和光栅化的顶点的后变换,剪辑空间位置。本章稍后将介绍剪辑空间,更正式地介绍第4章。现在,您可以将2D顶点的剪辑空间位置简单地视为它在窗口中的位置。
此上下文中的COLOR语义是Direct3D所谓的"漫反射顶点颜色"和OpenGL调用"主要顶点颜色。"光栅化过程中三角形或其他几何图元的颜色插值取决于基元的每顶点颜色。