こんにちは皆さん、これは簡単な作業のはずですが、何らかの理由でうまくいきません...
シェーダーを使用してシーンの深度を視覚化したいだけです。
float4x4 matViewProjection;
float4x4 matWorld;
float4 eyePos;
struct VS_OUTPUT
{
float4 position : POSITION0;
float depth : TEXCOORD0;
};
VS_OUTPUT vs_main( VS_INPUT input )
{
VS_OUTPUT output;
output.position = mul( input.position, matViewProjection );
float3 posWorld = mul(input.position, matWorld);
output.depth = distance(posWorld, eyePos);
return( output );
}
深さの値を取得するには (またはそう思った)、ワールド空間内の位置とビュー位置の間の距離を計算します。
そして対応するピクセルシェーダー
float4 ps_main(VS_OUTPUT input) : COLOR0
{
float depth = input.depth;
return float4(depth, depth, depth, 1.0f);
}
白い色しか得られない
そこで、値を深さまで乗算する試行錯誤を開始しました。
float depth = input.depth * 0.005f;
対象物までの距離に応じて満足のいく結果が得られます。そのため、オブジェクトに近づくと、値を再度調整する必要があります。
だから何か非常に間違っている...
読んでくれてありがとう!