在我见过的大多数程序中,利用像素着色器中的顶点位置数据,有将其作为float4向量处理的趋势。其他着色器似乎没有出现此限制。例如,在我正在编写的程序中,float2被输入VS和float3进入GS没有问题。但是当我尝试将这些数据输入PS时,除了float4之外,它拒绝所有形式。是否其他矢量类型不允许进入PS?如果是这样,为什么?
答案 0 :(得分:1)
在像素着色器中,SV_Position
是系统生成的值,必须为float4
。当您在顶点着色器中使用SV_Position
语义时,它基本上只是旧POSITION
语义的别名,并且以输入布局指定的任何格式来自输入汇编程序。顶点和几何着色器之间的绑定必须一致,但可以是任何值。
换句话说,它对于像素着色器具有特殊含义,因为它是由光栅化器阶段计算的像素位置。