Tutorials
Realistic Water 
Die Texturen
Als erstes die Erstellung der benötigten Texturen. Die Textur "water" ist beliebig wählbar und eine .jpg im RGB-Modus (Baseline-Standard).

meinemap/water.jpg (50%)
Die Textur "env_water" ebenso allerdings ist sie schwerer zu bekommen. Dazu müssen wir eine Testmap bauen.
Sie sollte lediglich aus der Skybox (mit Skylight), eventuell aus einem Skyportal oder eurem Grundterrain
(bei Outdoor - Maps) und einem info_playerstart bestehen. Nach dem Kompilieren startet ihr eure map
(mit dem devmap [mapname] - Befehl) und gebt in die Konsole folgendes ein:
cg_drawgun 0
Danach wechselt ihr in die Ego-Perspektive und macht 2 Screenshots von der Map. Dabei stellt ihr euch in die Mitte und macht aller 90° einen Shot (2 sollten reichen).
Tipp: nach Möglichkeit sollen nicht zu helle Stellen auf den Shots zu sehen sein. Shot1 (25%) |
Shot2 (25%) |
Jetzt müssen wir die beiden Shots mit einem Grafikprogramm noch zusammenfügen. Dann noch auf ein Texturmaß bringen (1024x1024 ist bei einer Environment - Textur günstig). Nun müssen wir noch für ein wenig Unschärfe sorgen - einfach einen Filter oder Effekt benutzen und die Textur ein bisschen unscharf machen. Zum Schluss noch aufhellen (um ca. 75%) und als .jpg speichern.

meinemap/env_water.jpg (25%)
Der Shader
| textures/mymap/water | // Name der Textur (im Radianten) |
| { | |
| qer_editorimage textures/mymap/water | // Bild der Textur im Radiant |
| sort banner | // von unten durch Wasser sehen |
| qer_trans 0.8 | // Transparenz im Radiant |
| surfaceparm nonsolid | // man kann durchgehen |
| surfaceparm nonopaque | // durchsichtig |
| surfaceparm trans | // durchsichtig 2 |
| surfaceparm water | // Wassereigenschaften |
| q3map_material Water | // Wassereigenschaften 2 |
| tessSize 128 | // zerteilt Brush in 128x128 Brushes |
| deformvertexes normal 0.1 1.85 | // Wellenbewegung |
| deformvertexes wave 128 sin 0 1 0.3 2 | // Wellenbewegung 2 |
| { | |
| map textures/mymap/water | // Grundtextur |
| blendFunc GL_ONE GL_SRC_ALPHA | // Transparenz |
| rgbGen const ( 0.5 0.5 0.5 ) | // schwächt die Farben ab |
| alphaFunc GE128 | // filtert Schwarz heraus |
| alphaGen const 1.0 | // Alpha-Channel Eigenschaft |
| tcmod scroll 0 -0.25 | // Bewegung der Textur (optional) |
| } | |
| { | |
| map textures/mymap/env_water | // Env - Textur (Spiegeleffekt) |
| tcGen environment | // Environment - Eigenschaft |
| rgbGen const ( 0.5 0.4 0.4 ) | // (Rot stärker als Grün und Blau) |
| blendFunc GL_ONE GL_ONE | // Transparenz |
| } | |
| { | |
| map textures/mymap/env_water | // Env - Textur (Spiegeleffekt) |
| tcGen environment | // Environment - Eigenschaft |
| blendFunc GL_DST_COLOR GL_ZERO | // Transparenz |
| } | |
| { | |
| map $lightmap | // Lightmapstage |
| blendFunc GL_DST_COLOR GL_ZERO | // Transparenz |
| } | |
| } |
Shader und Texturen in eine .pk3 gepackt und in den Base-Ordner verschoben.
Wichtig: Den Eintrag in die shaderlist.txt (…Base/shaders) nicht vergessen!Ingame
Um das Wasser in eure Map zu bekommen, erstellt ihr einen Brush mit der "system/caulk_water" Textur und belegt die sichtbare(n) Seite(n) mit unserer "meinemap/water" Textur.
Da wir nun das Wasser in unserer Map haben, können wir kompilieren.

Viel Spaß damit!

Shot1 (25%)
Shot2 (25%)