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);