1、以SV开头的语义为系统数值语义(system-value semantics),是在DirectX 10中引入的,这些语义在渲染流水线中有特殊的含义。
2、若使用SV_POSITION语义去修饰顶点着色器的输出变量pos,就表示pos包含了可用于光栅化的变换后的顶点坐标(即齐次剪裁空间中的坐标)。
3、用这些语义描述的变量是不可以随便赋值的,因为流水线需要使用它们来完成特定的目的,如渲染引擎会把用SV_POSITION修饰的变量经过光栅化后显示在屏幕上。
4、有时会出现同一个变量在不同的Shader里面使用不同的语义修饰,如一些Shader会使用POSITION而非SV_POSITION来修饰顶点着色器的输出。在大多数平台上,它和POSITION语义是等价的,但在某些平台(如索尼PS4)上必须使用SV_POSITION来修饰顶点着色器的输出,否则无法让Shader正常工作。同样的例子还有COLOR和SV_Target。
5、为了让Shader有更好的跨平台性,对于这些有特殊含义的变量,最好使用以SV开头的语义进行修饰。