Shadow Mapping Projection problem
-
Hallo Leute wie der Titel schon sagt hab ich ein Problem beim Implementieren von shadow mapping, habe es schon 2 mal von neu gemacht und finde einfach den Fehler nicht. Wie das ganze funktioniert weis ich auch und sehe das Problem glaub ich in dem Teil, wo die shadowmap projeziert wirdm, um die tiefenwerte zu vergleichen.
Und zwar arbeite ich mit einem deferred rendering konzept und habe mir dafür 5 render targets erstellt. Die ersten 4 werden mit albedo,normale,position und Tiefe ( bis jetzt ungebraucht) beschrieben.
Ich render dabei zunächst die geometrie in diese 4 buffer mit einem einfachen shader. Danach setze ich das 5. Rendertarget, welches eine größe von 1024x1024 pixel im R16G16B16A16 format mit einem 2. depthstencil view, clear beides und rendere dann die vertices bzw. die tiefenwerte aus der position der Kamera...
Soweit funktioniert auch alles. Sooo dann im letzten schritt setz ich meinen letzten shader, der das ganze orthagonal auf eine screen aligned plane zeichnet.Dabei erhalte ich z.b die position ( das Produkt aus vertex der zuvor berechneten geometrie und dessen welt matrix), die ich dann mit der view und projection matrix des lichtes multipliziere. Daraus werden dann die koordinaten zum samplen der shadowmap berechnet und zwqar so ->float2 lightprojection = float2(lightposition.x/lightposition.w/2.0f + 0.5f,-lightposition.y/lightposition.w/2.0f + 0.5f);
Dann erfolgt der Test, ob sich der pixel im light frustum befindet, wenn ja werden die tiefenwerte aus der shadowmap mit der tiefe - bias vom licht ( lightposition.z / lightposition.w - bias) verglichen usw...
Leider bekomme ich nicht die richtigen ergebnisse, wenn ich z.b etwas weiter weg gehe mit dem licht hab ich gar kein schatten mehr , ob wohl es auf meine geometrie zeigt und wirklich nur eine minimale distanz weg ist.... ich hab echt ekine ahnung mehr was das sein könnte ich bitte nun jemanden mir zu helfen vielen Dank