Привет, ребята
это должно быть легким заданием, но по какой-то причине у меня это не получается ...
Я просто хочу получить визуализацию глубины в моей сцене с помощью шейдера:
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;
, который дает удовлетворительный результат в зависимости от расстояния до объекта. Поэтому, если я подойду ближе к объекту, мне придется снова настроить значение.
Значит, что-то совсем не так ...
Спасибо за чтение!