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!