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?

War es hilfreich?

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.

Andere Tipps

OpenGL Lights ist ein simpeltes System, das, soweit ich weiß, bereits in der veralteten Liste befindet. Sie sollten sich mit Lichtern umgehen, indem Sie a schreiben Shader. Schau mal hier.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top