ich habe ShadowMapping in XNA implementiert und seltsames Problem. Bei mir funktioniert soweit alles super (Windows Vista, Radeon X1700 Mobility) und bei einem Kumpel auch (Windows 7, Radeon X1600), bei allen andern leider nicht (alle Windows 7, Geforce 8600, Geforce 9600 und Radeon HD4850). Das Problem scheint zusein, dass die Tiefentextur nicht angelegt wird und damit funktioniert dann natürlich das Schattieren nicht. Wenn ich die Textur in eine Datei ausgebe ist sie dann auch einfach leer.
So erzeuge ich das Rendertarget. Hier hab ich schon alle möglichen Parameterkonstellationen durchprobiert und es können auch alle denkbaren Targets auf allen Testsystemen angelegt werden, also daran scheint es zumindest nicht zu hängen.
Code: Alles auswählen
shadowTarget = new RenderTarget2D(device, 2048, 2048, 1, SurfaceFormat.Single);
shadowDepthStencilBuffer = new DepthStencilBuffer(device, 2048, 2048, DepthFormat.Depth24Stencil8);
Code: Alles auswählen
float4x4 World;
float4x4 LightViewProjection;
...
struct CreateShadowMap_VSOut
{
float4 Position : POSITION;
float Depth : TEXCOORD0;
};
...
CreateShadowMap_VSOut CreateShadowMapVS(float4 position: POSITION)
{
CreateShadowMap_VSOut output = (CreateShadowMap_VSOut)0;
output.Position = mul(position, mul(World, LightViewProjection));
output.Depth = output.Position.z / output.Position.w;
return output;
}
float4 CreateShadowMapPS(CreateShadowMap_VSOut input) : COLOR
{
return float4(input.Depth, 0.0f, 0.0f, 0.0f);
}
Schonmal vielen Dank fürs Lesen!