2017-07-27 82 views
0

在我看到的大多数程序中,都使用了像素着色器中的顶点位置数据,但有一种将其作为float4矢量处理的趋势。这个限制似乎并不存在于其他着色器中。例如,在我正在编写的程序中,float2被输入到VS中,float3被输入到GS中,没有任何问题。但是当我尝试将这些数据输入PS时,它会拒绝除float4之外的所有表单。其他矢量类型是否不允许进入PS?如果是这样,为什么?将位置输入到像素着色器中

回答

1

在像素着色器中,SV_Position是系统生成的值,必须是float4。当您在顶点着色器中使用SV_Position语义时,它基本上只是旧的POSITION语义的别名,并且以输入布局指定的任何格式来自输入组装器。顶点和几何着色器之间的绑定必须一致,但可以是任何值。

换句话说,它对像素着色器有特殊意义,因为它是像素位置,由光栅阶段计算出来。