Das Wasser in Half-life² wird über einen komplexen Shader dargestellt. Es ist animiert und reflektiert die Umwelt. Bei diesem komplexen System gibt es natürlich einige Richtlinien und Einschränkungen, wie man das Wasser in verschiedenen Situationen einsetzen kann.
Das aufwendige Wasser sieht am Besten aus, verbraucht dafür aber auch einiges an Ressourcen. Dieser Shader reflektiert die Welt, ist animiert und nebelt benachbarte Objekte ein wenig ein, ausserdem ist er bump-mapped. Die Ergebnisse reichen fast an Foto-Qualtität heran, allerdings ist diese Art des Wassers bei komplexeren Situationen sehr perfomancedrückend.
Bei Situationen, bei denen das aufwendige Wasser nicht angebracht ist (meistens wegen der Performance), kann einfaches Wasser benutzt werden. Diese Version des Shaders reflektiert nicht die Umwelt, was es natürlich nicht so realistisch erscheinen lässt, allerdings ist es dafür nicht so intensiv für die Engine. Das aufwendige Wasser wird automatisch auf Einfaches Wasser zurückgesetzt, wenn die Grafikkarte die notwendigen Ressourcen nicht bereitstellen kann. Es kann auch zurückgesetzt werden, indem der Benutzer in den Video Optionen die „Water Reflection“ herunterstellt.
Um das Wasser richtig anzuwenden, benötigt es einige Regeln:
Das aufwendige Wasser darf nicht mehrere, verschieden Ebene pro PVS (Potential Visibility Set) haben.
Aufwendiges und einfaches Wasser dürfen nicht gleichzeitig in einem PVS benutzt werden.
Die Wasseroberfläche sollte immer horizontal verlaufen.
Die Wassertextur darf nur auf die Oberseite eines Brushes gelegt werden. Alle anderen Seiten bekommen die tools/toolsnodraw Textur.
Wassertexturen, die auf _beneath oder _bottom enden, können nicht verwendet werden, da sie Teil einer andern Wassertextur sind.
Ein water_lod_control Entity muss vorhanden sein, es kontrolliert die Entfernung, ab welcher aufwendiges Wasser in einfaches Wasser übergeht.
Ein
env_cubemap Entity muss vorhanden sein, damit die Wasseroberfläche auf Grafikarten, die nicht DirectX 9 unterstützen, richtig dargestellt wird.
Anmerkung: Aufwändiges Wasser sollte nicht zu einem Entity gebunden werden, weil es dann Darstellungsfehler geben kann!
Um Wasser zu erstellen müsst ihr folgendes machen:
-
Wähle das Entity Tool aus.
Stelle unter
Categorie: Entities und unter
Object: env_cubemap ein.
Klicke in der 3D-Ansicht auf die obere Fläche des Wasserbrushes, um dort eine
env_cubemap Entity zu erzeugen.
Stell sicher, dass das neue
env_cubemap Entity angewählt ist und drücke
Alt+Enter, um den Properties-Dialog aufzurufen.
Wähle im Properties-Dialog in der Liste den Eintrag Brush faces aus und klicke auf Pick.
Klicke auf die obere Fläche des Wasserbrushes, auf der die Wassertextur liegt, um diese auszuwählen.
Klicke unten im Properties-Dialog auf Apply und schliesse den Properties-Dialog.
Zuletzt positionierts du das
env_cubemap Entity mittig über dem Wasserbrush und in einem vertikalen Abstand von ca. 72 Units über der Wasseroberfläche.
Wichtig: VIS und RAD müssen auf jeden Fall durchlaufen, damit das Wasser korrekt dargestellt werden kann (mögliche Fehler: Leak)
Die Verwendung aller Dokumente einschließlich der Abbildungen ausschließlich zu
nichtkommerziellen Zwecken. Verbreitung des Dokuments auf Speichermedien,
(insbesondere auf CD-ROMs als Beilage zu Zeitschriften und Magazinen oder sog.
"Mission-Packs" etc.) ist untersagt.