Shadow-Mapping in OpenGL mit einem Spotlight erzeugt einen ungewöhnlichen Effekt

9

Ich habe versucht, Shadow Mapping zu implementieren. Während ich denke, dass ich jetzt in der Nähe bin, bin ich mit einem seltsamen Effekt steckengeblieben (siehe unten):

Wie Sie sehen können, erscheint die Schattenregion zu klein. Es hat auch einen ungewöhnlichen Effekt auf den Würfel selbst.

Die gerenderte Geometrie ist ein Würfel der Dimension 1,0 auf einer quadratischen Ebene mit den Abmessungen 100,0. Die Szene enthält ein einzelnes Spotlight mit einem Winkel (von einer Seite zur anderen) von 0,5 Radianten und einem Bereich von 100,0. Dieser Scheinwerfer umkreist die y-Achse und passt seine Drehung an, um den Ursprung zu betrachten.

Ich stelle den Framebuffer und die Tiefenstruktur (512 x 512) wie folgt ein:

%Vor%

Ich rendere die Szene dann aus der Perspektive des Scheinwerfers in den Schattenbild-Framebuffer. Das scheint zu funktionieren. Bei der Überprüfung der Tiefenstruktur mit einem OpenGL-Debugging-Tool wurde Folgendes festgestellt:

Die Szene wird ein zweites Mal gerendert, wo ich die Uniformen für die Tiefenstruktur und die Schattenmatrix anwähle:

%Vor%

Ich berechne die Schattenkoordinate im Vertex-Shader:

%Vor%

Dann projiziere ich im Fragment-Shader diese Koordinate und sorge dafür, dass sie im Intervall [0, 1] liegt.

%Vor%

Bearbeiten

Ärgerlich wurde das Problem dadurch verursacht, dass die Projektionsmatrix beim Rendern auf den Schatten-Framebuffer fälschlicherweise auf die Projektionsmatrix der Kamera (anstelle der Projektionsmatrix des Lichts) eingestellt wurde.

    
Homar 09.07.2014, 04:26
quelle

0 Antworten

Tags und Links