2017-07-27 22 views
0

Pixel Shaderで頂点位置データを使用するプログラムのほとんどで、float4ベクトルとして処理する傾向があります。この制限は他のシェーダには現れていないようです。たとえば、現在書いているプログラムでは、float2はVSに入力され、float3はGSに問題なく入力されます。しかし、このデータをPSに入力しようとすると、float4を除くすべての形式が拒否されます。 PSに他のベクタータイプは許可されていませんか?もしそうなら、なぜですか?Pixel Shaderに位置を入力

答えて

1

ピクセルシェーダでは、SV_Positionはシステム生成値で、float4でなければなりません。頂点シェーダでSV_Positionセマンティックを使用すると、それは基本的に古いPOSITIONセマンティックのエイリアスに過ぎず、入力配列に指定されているどのような形式の入力アセンブラからも得られます。頂点シェーダとジオメトリシェーダの間の結合は一致しなければなりませんが、どんな値でもかまいません。

つまり、ラスタライザステージで計算されるピクセル位置であるため、ピクセルシェーダには特別な意味があります。

関連する問題