Ich habe das eine Zeit lang nicht bemerkt, aber meine Tiefenkarte verhext sich. Für: schwarze Pixel = nahe Clipping-Ebene, und weiße Pixel = ferne Clipping-Ebene - Grundsätzlich, wenn ich auf ein 100x1x100 Quadrat auf dem Boden gehe und INTO gehe (erreiche Koordinaten von 99, 0 und 99), dreht sich die gesamte Tiefenkarte Weiß. Das zeigt an, dass jedes Pixel in der fernen Clipping-Ebene ist, was ich nicht will! exampleC#/XNA/HLSL - Tiefenkarte verschraubt
Dies ist der Code, der die Tiefenkarte Rendering Griffe:
GraphicsDevice.Clear(Color.White);
effect.MainEffect.CurrentTechnique = effect.MainEffect.Techniques["DepthProcess"];
GraphicsDevice.SetVertexBuffer(line);
effect.MainEffect.CurrentTechnique.Passes[0].Apply();
GraphicsDevice.DrawPrimitives(PrimitiveType.TriangleStrip, 0, 2);
Und die HLSL-Code (Vertex-Shader, Pixel-Shader):
DVOut DVShader(VIn _in)
{
DVOut o;
o.position = mul(_in.position, WorldViewProjection);
float a = o.position.z/o.position.w;
o.color = float4(a,a,a,1);
return o;
}
float4 DPShader(DVOut _in) : COLOR
{
return _in.color;
}
technique DepthProcess
{
pass Pass0
{
ZEnable = TRUE;
ZWriteEnable = TRUE;
AlphaBlendEnable = FALSE;
VertexShader = compile vs_2_0 DVShader();
PixelShader = compile ps_2_0 DPShader();
}
}
Ist dies wegen einer 1/0 Fehler? Oder stimmt etwas nicht mit der Multiplikation mit Matrizen? Oder wir?