Hallo erstmal,
ich integriere gerade Shadowmapping in meine Engine.
Allerdings gibt es ein Problem, und zwar glaube ich das das Programm die Texturkoordinaten falsch ausrechnet.
Hier ein Screensshot der Szene:
http://dl.dropbox.com/u/4251611/Neue%20Bitmap.bmp
Die Shadowmap ist 1024x1024 Pixel groß, die Lichtquelle ein Spotlicht
und befindet sich rechts an der Seite des Bildes.
Hier der Code zum errechnen der Texturkoordinaten:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
|
float2 Tex = float2(0, 0);
// Mit der Welt/Sichtmatrix multiplizieren
float3 LightWVPos = mul (vInPosUntransformed, (float4x3)(LightWV));
// Jetzt noch mit der Projektionsmatrix
float4 LightWVPPos = mul(float4(LightWVPos, 1), LightP);
// In Texturkoordinaten umrechnen
Tex.x = 0.5f * LightWVPPos.x + 0.5f;
Tex.y = 0.5f - 0.5f * LightWVPPos.y;
|
Daber ist vInPosUntransformed die völlig untransformierte Position,
LightWV die Welt/Sichtmatrix des Lichtes und LightP die Projektionsmatrix des Lichtes.
Es wäre nett, wenn ihr mir mit euren Tipps helfen würdet.
Danke schoneinmal im voraus,
comp.