私が探しているのは、ピクセル シェーダーを通過する各ピクセルのワールド空間座標を取得する簡単な方法です。
このトピックを見つけました: Pixel World Position
動作しているように見えますが、私はまだシェーダー言語に慣れていないため、完全に理解できていません。
これを解決する簡単な方法はありませんか?
敬具、マリウス
私が探しているのは、ピクセル シェーダーを通過する各ピクセルのワールド空間座標を取得する簡単な方法です。
このトピックを見つけました: Pixel World Position
動作しているように見えますが、私はまだシェーダー言語に慣れていないため、完全に理解できていません。
これを解決する簡単な方法はありませんか?
敬具、マリウス
最も簡単な方法は、次のように頂点シェーダーからテクスチャ座標として渡すことです (dx9 サンプルを使用すると、10 に簡単に変換できます)。
cbuffer cbmat : register( b0 )
{
float4x4 tW; //World transform
float4x4 tWVP: //World * View * Projection
};
struct vs2ps
{
float4 Pos : POSITION;
float4 TexCd : TEXCOORD0;
float3 PosW : TEXCOORD1;
};
vs2ps VS(float4 Pos : POSITION,float4 TexCd : TEXCOORD0)
{
vs2ps Out;
Out.Pos = mul(Pos, tWVP);
Out.TexCd = TexCd;
Out.PosW = mul(Pos, tW);
return Out;
}
float4 PS(vs2ps In): COLOR
{
return float4(In.PosW,1.0f);
}