Modifizieren sie den Toon-Shader aus Aufgabe 3.1 so, dass die Szene von unabhägigen und verschiedenfarbigen
Lichtquellen an unterschiedlichen Positionen beleuchtet wird. Intensität und Position der Lichtquellen
soll von der Anwendung aus über uniform
Variablen steuerbar sein. Wählen sie Geometrie und Farben so,
dass der Effekt gut zur Geltung kommt.
Der vorhandene Shader-Code wurde nahezu vollständig übernommen und lediglich erweitert.
So berechnet der Vertex-Shader statt für eine Lichtquelle die Richtung dieser nun für drei. Dabei werden die Positionsangaben wie gehabt über Uniform-Variablen an den Shader übergeben.
Im Fragment-Shader beachtet die toon()-Funktion zusätzlich die Lichtintensität für die diskretisierten, diffusen Farbabstufungen (u.A. Zeile 214). Die Outline bleibt weiterhin schwarz und auch das Glanzlicht wird nicht mit der Lichtfarbe verrechnet. Der wichtigste Unterschied im Fragment-Shader ist, das für jedes Fragment die toon()-Funktion in Abhängigkeit der Licht-Anzahl ausgeführt wird (Zeile 232-245). Dabei werden die jeweiligen Licht-Parameter übergeben und die einzelnen Ergebnisse aufsummiert, so das ein mischen der Lichtfarbe erreicht wird, sofern das Fragment von mehreren Lichtquellen getroffen wird.