OpenGL: Mehr als 8 Lichter, wie?
Frage
Wie soll ich mehr als 8 Lichter in OpenGL implementieren?
Ich möchte unbegrenzte Lichtmengen effizient machen.
Also, was ist die bevorzugte Methode dafür?
Lösung
Aufgeschobene Schattierung.
Kurz gesagt, Sie rendern Ihre Szene ohne Lichter. Stattdessen speichern Sie die Normalen und Weltpositionen zusammen mit den strukturierten Pixeln in mehrere Frame-Puffer (so genannte Render-Ziele). Sie können dies sogar in einem einzigen Pass tun, wenn Sie eine Erweiterung mehrerer Render-Target-Erweiterungen verwenden.
Sobald Sie Ihre Puffer vorbereitet haben, beginnen Sie, eine Reihe von Full-Screen-Quads mit einem Pixel-Shader-Programm zu rendern, das die Normalen und Positionen vorliest und das Licht für eine oder mehrere Lichtquellen berechnet.
Da Licht additiv ist, können Sie so viel Vollbildquads wie Sie möchten und das Licht für so viele Lichtqualzen ansammeln, wie Sie möchten.
Ein letzter Schritt führt eine Komposition zwischen Ihrem Licht und dem nicht beleuchteten texturierten Frame-Puffer aus.
Das ist mehr oder weniger die hochmoderne Art, dies zu tun. Nebel und Transparenz mit einem solchen System zu bekommen, ist jedoch eine Herausforderung.