@@ -104,7 +104,7 @@ Hierfür erstellte Olivia einen weiteren Shader. Dafür verwendete sie zwei Grad
Die Durchlässigkeit des Nebels (oder der Alpha Wert) wird durch verschiedene Bedingungen beeinflusst. Der Nebel soll nicht überall gleich dicht sein, daher ließ Olivia die zwei oben genannten Noise Texturen mit in die Alpha Berechnung einfließen. Das sollte allerdings nur einen leichten Einfluss haben. Die sogenannte LightMap sollte den größten Einfluss haben. Die Lightmap sorgt zum Beispiel dafür, dass dort wo die Helden stehen kein Nebel ist. Für den Shader ist die LightMap nur eine schwarz-weiße Textur, welche vom Alpha-Wert des Nebels abgezogen wird. Das heißt an den Stellen wo die Textur weiß ist, ist der der Nebel nicht sichtbar.
Um die Lightmaptextur zu generieren und an den Shader zu übergeben erstellte Olivia eine CalculateFog Klasse. Hier wurde zu Spielbeginn eine neue schwarze Textur erstellt. Wir entschieden uns für eine geringe Auflösung der Textur. Das sorgte zwar für relativ eckige Übergänge zwischen Nebel und Licht, aber eine höhere Auflösung wäre mit mehr rechenaufwand verbunden.
Um die Lightmaptextur zu generieren und an den Shader zu übergeben erstellte Olivia eine CalculateFog Klasse. Hier wurde zu Spielbeginn eine neue schwarze Textur erstellt. Wir entschieden uns für eine geringe Auflösung der Textur. Das sorgte zwar für relativ eckige Übergänge zwischen Nebel und Licht, aber eine höhere Auflösung wäre mit mehr Rechenaufwand verbunden.
Die Helden senden ihre Position konstant an die Klasse. Dadurch werden die Pixel in der Lightmap im Umfeld der Spieler auf weiß gesetzt. Das selbe passiert bei den Pfeilen des Rangers.
Da der Nebel sich konstant verdichten soll, muss sich die Lightmap wieder verdunkeln. Die Idee war das mit einem Compute Shader zu lösen, welche die Farbe der Pixel um einen bestimmten Wert verdunkeln sollte. Die Aufgabe wäre gut geeignet für die GPU und würde die CPU entlasten. Allerdings gab es einige Schwierigkeiten, weswegen wir die Idee letztendlich verwarfen. Zum einen musste die GPU auf einem anderen Texturformat arbeiten. Die Lightmap konnten wir allerdings nicht komplett auf das Texturformat umstellen. Das Übertragen der Werte von der einen Textur in die andere wäre aber ineffizient. Zudem ist die Kommunikation von CPU und GPU nicht schnell genug dass es sich mit den anderen Einschränkungen gelohnt hätte.