Ich habe das Problem, texture2D(shadowMap,shadowCoordinate.st) im Frag Shader ist Müll. Da muss vorher durch den w-Anteil geteilt werden.
Beiträge von source_of_truth
-
-
Erst einmal danke ich schon einmal für deine Hilfe. :thumb: Geschafft ist es aber noch nicht, denn ich habe nur ein Objekt, dass ist das Verrückte. Sprich, die Model-Matrix ist gleich.
Die cam.applyModelViewMatrix() Methode verschiebt nur mein Objekt, bzw erzeugt eine neue ModelViewMatrix für die Szene, abhängig von den Cameraeinstellungen.
CodeglLoadIdentity(); glRotatef(pitch, 1, 0, 0); glRotatef(yaw, 0, 1, 0); glRotatef(roll, 0, 0, 1); glTranslatef(-x, -y, -z);
Diese werden wie oben zu sehen in der renderShadow() überschrieben, die Kamera wird angepasst, die ShadowMap gerendert
-
Entweder du lädst diese für jedes Objekt hoch oder du verwendest gl_ModelViewMatrix und berücksichtigst die inverse View-Matrix in der gl_TextureMatrix[1] um den View-Anteil aufzuheben.Aber die gl_TextureMatrix[1] wird bei mir doch durch: bias * shadow_projection * shadow_modelview berechnet, damit werden die Vertices doch direkt entsprechend transformiert.
Standart ist doch diese Gleichung: projection * view * model * vertex = projection * modelview * vertex
Schatten mit der inversen Matrix funktioniert so: shadow_projection * shadow_modelview * modelview^⁻1 * modelview * vertex
und das ist doch gleich: shadow_projection * shadow_modelview * vertex
was mein Code (plus den bias) doch berechnet, oder bin ich wirklich zu blöde ? -
Das Problem wurde gefixt. Es handelte sich um einen bescheuerten Tipfehler im Shader.
Zur Erklärung des Shadow Mappings allgemein, bitte besuche den Post der unten mehrfach erwähnt wird.