glsl sampler2DShadow und shadow2D Klärung

Schnelle hintergrund von wo ich bin (um sicherzugehen, dass wir auf der gleichen Seite, und Plausibilitätsprüfung, wenn ich bin fehlt/Annahme etwas dumm):

  • Ziel: ich möchte meine Szene Rendern mit Schatten, mit deferred lighting
    und shadowmaps.
  • Kampf: finden Sie eine klare und konsistente Dokumentation über wie zu verwenden shadow2D und sampler2DShadow.

Hier ist, was ich bin derzeit dabei:

In der fragment-shader von meinem letzten rendering pass (die eine, die tatsächlich berechnet final frag Werte), habe ich die MVP-Matrizen vom pass aus das Licht, die Sicht, die Tiefe textur von Sprach-pass (auch bekannt als die "Schatten-map"), und die position/normal/Farbe Texturen aus meiner geometrie-Puffer.

Aus, was ich verstehe, ich brauche zu finden, was UV-von der Schatten-map die position des aktuellen fragments entspricht. Ich mache das indem die folgenden:

//Bring position value at fragment (in world space) to screen space from lights POV
vec4 UVinShadowMap = (lightProjMat * lightViewMat * vec4(texture(pos_tex, UV).xyz,1.0)).xy; 
//Convert screen space to 'texture space' (from -1to1 to 0to1)
UVinShadowMap = (UVinShadowMap+1)/2;

Nun, dass ich diesen UV -, ich kann die percieved 'Tiefe' aus dem Licht ' s pov mit

float depFromLightPOV = texture2D(shadowMap, UVinShadowMap).r;

und vergleichen Sie das mit der Entfernung zwischen der position zum aktuellen fragment und das Licht:

float actualDistance = distance(texture2D(pos_tex, UV).xyz, lightPos);

Das problem kommt aus dieser 'Tiefe' gespeichert ist, in Werte von 0-1, und der tatsächliche Abstand ist in Welt-Koordinaten. Ich habe versucht zu tun, die Konvertierung manuell, aber konnte es nicht zu funktionieren. Und bei der Suche online, es sieht aus wie die Art, wie ich dies tun SOLLTE, ist mit einem sampler2DShadow...


Hier also meine Frage(N):

Welche änderungen muss ich vornehmen, verwenden Sie stattdessen shadow2D? Was bedeutet shadow2D auch tun? Ist es nur mehr-oder-weniger-ein-auto-Umwandlung-von-zu-Tiefe-zur-Welt-textur? Kann ich die gleiche Tiefe textur? Oder muss ich das Rendern der Tiefe, textur einen anderen Weg? Was gebe ich in shadow2D? Der Welt-Raum-position des fragment-ich will das überprüfen? Oder die gleiche UV wie vorher?

Wenn alle diese Fragen beantwortet werden können, in eine einfache Dokumentation Seite würde ich gerne, wenn jemand nur post, dass. Aber ich schwöre ich habe die Suche nach Stunden und kann nichts finden, dass Sie einfach sagt, was eigentlich Los ist mit shadow2D!

Dank!

InformationsquelleAutor Phildo | 2014-03-15
Schreibe einen Kommentar