Also ich möchte mehrere Lichtquellen in meiner Szene haben. Der Grundgedanke ist, einfach eine Anordnung einer (einheitlichen) Struktur zu haben, die alle Eigenschaften von Licht hat, die Sie interessieren, wie Positionen, Farbe, Richtung, Schnitt und w/e, die Sie wünschen. Mein Problem ist, wie man darstellt, welche Lichter an/aus sind? Ich werde alle Möglichkeiten auflisten, die mir einfallen. PlWie man den Status von Lichtquellen in OpenGL darstellt
- Haben Sie eine einheitliche Int pro Lichtstruktur um anzuzeigen, ob es an/aus ist.
- Lassen Sie die Anzahl der hellen Strukturen mit Vielfachen von 2, 3 oder 4 übereinstimmen, so dass ich so viele Bool-Vektoren verwenden kann, um ihren Status anzuzeigen. Zum Beispiel 16 Lichter = 4x4 bvec4.
- Statt viele Flaggen und Zweig der Verwendung, geht immer durch jedes einzelnes Licht, sondern mit den aus Einsen auf (0,0,0,0) für die Farb
Ich bin auf den letzten Optionen lehne als es wird keine Verzweigung haben ... aber ich habe bereits gelesen, dass moderne Grafikkarten jetzt besser mit Verzweigungen umgehen.
Ich dachte, Sie können nicht über dynamische Variable im Shader Schleife und auch Verzweigung ist teuer? – ChaoSXDemon
light_count ist keine dynamische Variable. Looping über Uniformen war bereits in Glsl 120 möglich. Selbst das Umfahren dynamischer Ausdrücke ist heute kein Problem mehr. Verzweigung kann teuer sein, aber nicht so viel für einheitliche Bedingungen. Aber es gibt keine Verzweigung im vorgeschlagenen GPU-Code, Verzweigungen treten im CPU-Code auf (und nur einmal in jedem Frame). – BDL
Der allgemeine Hinweis lautet: Berechne niemals etwas in einem Shader, das vor dem Shader-Aufruf vorberechnet werden kann. – BDL