Computergrafik

Lichtquellen Zeichnen

Abschwaechung | | Beleuchtung Standard-Codesequenz

Lichtquellen selber sind in OpenGL nicht sichtbar!

Das ist praktisch für Lichtquellen, die nur zur Verbesserung der Beleuchtung eingesetzt werden; aber unpraktisch für “Hauptlichtquellen”, die sichtbar sein sollten.

Um Lichtquellen darzustellen, müssen diese über eine Proxy-Geometrie dargestellt werden. Diese wird typ. mit rein emmissiven Materialeigenschaften gerendert. Die Proxy-Geometrie wird über die Modellview-Matrix an die Position der Lichtquelle verschoben.

1. Im Shader: die emmissive Farbe Ce durch einen uniform ersetzen

2. Die emmissive Farbe für die Hauptgeometrie für 0 setzen

3. Danach eine Proxy-Geometrie mit emmissiver Farbe Weiß zeichnen

Um die Proxy-Geometrie an der richtigen Stelle zu zeichnen muss die entsprechende MV-Matrix berechnet und gesetzt werden.

Von der Punktlichtquelle wissen wir die Position - da die Proxygeometrie (z.B. Kugel) normalerweise um den Ursprung (0,0,0) gezeichnet wird, wird die Position als zusätzliche Translation dargestellt; eine Skalierung hilft oft auch:

mat4 mv_proxy = view * mat4::translate (lightpos) * mat4::scale (0.1);
lglUniformfv ("Ce", vec4(1,1,1,0));
lglModelView (mv_proxy);
lglRender    (sphere);


Abschwaechung | | Beleuchtung Standard-Codesequenz

Options: