gl_Lightposition spinnt

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

gl_Lightposition spinnt
Hallo,
wir sitzen jetzt seit 2 Stunden am terrain und haben ein merkwürdiges Problem:
Die position des Lichts ist offenbar vom Blickwinkel Der Kamera abhängig und wenn man im Fragment shader testhalber die farbe auf die normalisierte glLightColor[0] setzt, ist das Terrain zuerst schwarz, wenn man allerdings die kamera rollt oder zum zenith bewegt wird es blau oder grün.
Sollte die Light Position nicht transformiert werden?

team9

re

die farbe auf die normalisierte glLightColor[0] setzt,

gl_LightSource[0].position meint er


Hi,

Prinzipiell ist diese Erkenntnis richtig und auch korrekt. Im Shader liegt die Position des Lichts in “Eye coordinates” vor, so dass der Shader damit direkt Beleuchtungsberechnung betreiben kann. Und da sich die Position des Lichts relativ zur Kamera ändert, wenn man die Kamera bewegt, ändern sich eben auch die Farben Eures Shaders. Anders formuliert: It’s not a bug, it’s a feature. :wink: Mir ist nur nicht ganz klar, was Ihr mit der Transformation der Lichtposition meint.

Die Farbe Schwarz kommt hier übrigens zustande, wenn die Koordinaten des Lichts relativ zur Kamera negativ sind und auf [0…1] normiert werden, also z.B. (-1,0,0) → (0,0,0). Und Ihr könnt auch die Farbe Rot erzeugen, wenn Ihr die Kamera mal “auf die Seite” legt.


Die Sonne und Mond kreisen ja eigentlich um die Kamera, inwiefern betrifft das dann die Position im Fragment Shader?
Es laesst sich ja dann gar nicht verhindern, dass man durch bewegen der Kamera wandernde Schatten bekommt?


Hallo,

da scheint ein Missverständnis vorzuliegen:
Die Sonne und der Mond kreisen natürlich um die Welt (Weltkoordinaten)
und die Kamera ist nur eine mögliche Abbildungsvorschrift, die diese Welt
dann von 3D → auf eye coordinates (2.5D) abbildet.

Das ist wie mit der wirklichen Welt und Webcams:
Natürlich kreist die Sonne und der Mond überall gleich. Aber in jeder Webcam
sieht es anders aus, da die Lichtrichtungen in Kamerakoordinaten ausgedrueckt
nur dann dieselben sind, wenn die Kameras dieselben sind.

Also: nochmal überdenken, wie sich Sonne und Mond und damit gleichzeitig
auch die Lichtrichtung bewegen.

Gruss,
Martin