momentan hänge ich an der Implementierung einer einfachen Multi-Pass Beleuchtung und hoffe, dass
ihr mir helfen könnt :)
Wie im Bild zu sehen,
ist die Beleuchtung für den linken Mesh korrekt, während der rechte Mesh deutlich überbeleuchtet ist.
Die Meshes wurden mit unterschiedlichen Methoden erzeugt, wobei bei der zweiten vermutlich etwas
schief geht.
Leider weiss ich überhaupt nicht, was das sein könnte.
Folgende mögliche Fehlerursachen habe ich überprüft:
Die Normalenvektoren sind korrekt, das heisst die Richtungen stimmen und sie sind normalisiert.
Zudem habe ich die vom Pixelshader zurückgegebene Farbe komponentenweise auf [0, 1] geclamped.
Die beiden Meshes im Bild wurden übrigends völlig unabhängig voneinander gerendert und nicht im gleichen
Frame.
Was wären noch mögliche Fehlerquellen?
Meine Implementierung sieht in Pseudocode so aus:
Code: Alles auswählen
RenderAmbientPass();
glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE);
glDepthMask(GL_FALSE);
glDepthFunc(GL_EQUAL);
forall(lights in scene) {
RenderDiffusePass();
}
glDepthFunc(GL_LEQUAL);
glDepthMask(GL_TRUE);
glDisable(GL_BLEND);
direkt deaktiviere. Deshalb sind die Normalenvektoren vermutlich nicht das Problem.
Vielen Dank schonmal im Voraus! :)