Source Engine Beleuchtung: Licht in GMod-Maps richtig setzen
Source Engine Beleuchtung erklärt: light, light_spot, light_environment, HDR-Compile, Lightmap Scale, Cubemaps und die häufigsten Lichtfehler.
Licht in der Source Engine ist größtenteils vorberechnet: Der Compiler VRAD rechnet aus deinen Licht-Entities Lightmaps aus und speichert sie in der BSP. Für Innenräume setzt du light und light_spot, für Sonne und Himmel ein light_environment. Danach kompilierst du mit VRAD und baust im Spiel die Cubemaps für Reflexionen.
Die wichtigsten Licht-Entities
| Entity | Wirkung | Typischer Einsatz |
|---|---|---|
light | Punktlicht, strahlt in alle Richtungen | Lampen, Grundhelligkeit in Räumen |
light_spot | Lichtkegel mit innerem und äußerem Winkel | Strahler, Deckenspots, Laternen |
light_environment | Sonnenlicht und Himmelslicht für die ganze Map | Außenbereiche |
light_dynamic | Echtzeitlicht, wird nicht vorberechnet | bewegte oder flackernde Lichter, sparsam |
env_projectedtexture | projiziertes Echtzeitlicht mit dynamischen Schatten | einzelne Akzente, teuer |
Die Helligkeit eines Lichts besteht aus vier Zahlen: Rot, Grün, Blau und Intensität. Über die Falloff-Einstellungen legst du fest, wie schnell das Licht mit der Entfernung abnimmt. Vorberechnete Lichter kosten im Spiel praktisch keine Leistung, Echtzeitlichter dagegen in jedem Bild. Baue die Stimmung deshalb mit light und light_spot und nutze dynamische Lichter nur gezielt.
Sonne und Himmel: light_environment und Skybox
Ein light_environment beleuchtet die Map über alle Flächen, die mit tools/toolsskybox belegt sind. Wichtig sind drei Werte:
- Brightness and Color: Farbe und Stärke des direkten Sonnenlichts.
- Ambient Color and Brightness: das diffuse Himmelslicht. Es hellt Schatten auf und bestimmt, wie dunkel Bereiche ohne direkte Sonne sind.
- Pitch und Yaw: die Richtung, aus der die Sonne scheint.
Mit SunSpreadAngle werden Sonnenschatten weicher. Die Skybox-Textur selbst stellst du unter Map > Map Properties ein. Lichtfarbe und Sonnenrichtung sollten zum Himmelsbild passen, sonst wirkt die Szene unstimmig. Das Entity env_sun zeichnet nur den Lichtschein der Sonne am Himmel und beleuchtet nichts.
Wenn du Landschaft in der Ferne zeigen willst, lies dazu 3D-Skybox erstellen.
HDR oder LDR kompilieren
VRAD kann Licht in zwei Varianten berechnen: LDR (klassischer Helligkeitsumfang) und HDR (erweiterter Umfang mit automatischer Belichtung). Die Parameter dafür sind -ldr, -hdr und -both. Ohne einen davon berechnet das VRAD von GMod nur LDR. Im normalen Compile-Dialog von Hammer kompiliert das Häkchen „HDR“ beides.
- Für schnelle Tests reicht LDR.
- Für das Release kompilierst du mit
-both. Dann sieht die Map bei Spielern mit und ohne HDR richtig aus. Die Lichtberechnung läuft dabei zweimal, VRAD braucht also entsprechend länger.
In HDR-Maps steuert env_tonemap_controller die automatische Belichtung. Ohne ihn gilt der Standardbereich der Engine für die Belichtung, und der passt nicht zu jeder Map. Lichter haben außerdem eigene HDR-Helligkeitswerte. Der Standardwert -1 -1 -1 1 bedeutet, dass der normale Wert übernommen wird. Wie die Compile-Schritte zusammenhängen, steht in VBSP, VVIS und VRAD erklärt.
Lightmap Scale und Schattenqualität
Die Lightmap Scale einer Fläche gibt an, wie viele Units ein Lichtpunkt der Lightmap abdeckt. Der Standardwert ist 16. Du änderst ihn im Texturwerkzeug (Shift+A).
- Kleinere Werte wie 8 oder 4 ergeben schärfere Schatten, kosten aber Speicher, Dateigröße und Compile-Zeit.
- Größere Werte wie 32 oder 64 sind günstig und reichen für große, gleichmäßig beleuchtete Flächen.
Diese VRAD-Parameter verbessern die Qualität für den finalen Compile:
-final: genauere Lichtberechnung, deutlich langsamer.-StaticPropLighting: berechnet Licht fürprop_staticpro Eckpunkt des Models statt nur an einer Stelle.-StaticPropPolys: nutzt für Schatten von Props die sichtbare Form statt des groben Kollisionsmodells.-TextureShadows: berücksichtigt transparente Texturen bei Schatten von Props, sofern die Models dafür in einer RAD-Datei eingetragen oder entsprechend kompiliert sind. Wirkt in der Regel nur zusammen mit-StaticPropPolys.
Reflexionen mit env_cubemap
Glänzende Oberflächen spiegeln nicht die echte Umgebung, sondern ein vorab aufgenommenes Rundumbild. Dafür setzt du env_cubemap-Entities:
- Platziere pro Raum oder Lichtstimmung mindestens ein
env_cubemap, etwa auf Kopfhöhe und nicht in Geometrie. - Kompiliere die Map und lade sie im Spiel.
- Gib in der Konsole
buildcubemapsein. - Hast du mit
-bothkompiliert, baust du die Cubemaps einmal für LDR und einmal für HDR. Dazwischen schaltest du mitmat_hdr_levelum und lädst die Map neu.
Nach jedem neuen Compile musst du die Cubemaps erneut bauen. Häufige Probleme behandelt Cubemaps und Reflexionen beheben.
Typische Lichtfehler
- Fullbright: Alles ist gleichmäßig hell und schattenlos. Die Map enthält dann keine Lichtdaten. Entweder gibt es kein Licht-Entity, oder VRAD wurde nicht ausgeführt oder ist abgebrochen. Prüfe das Compile-Log.
- Map zu dunkel: Oft ist der Ambient-Wert des
light_environmentzu niedrig, oder Innenräumen fehlen Fülllichter. Schwache zusätzlichelight-Entities und hellere Oberflächen helfen, denn helle Texturen werfen mehr Licht zurück. - Harte, stufige Schattenkanten: Die Lightmap Scale ist zu grob. Senke sie auf den betroffenen Flächen. Sichtbare Lichtkanten auf gerundeter Brush-Geometrie beseitigst du mit Smoothing Groups.
- Schwarze Props: Ohne
-StaticPropLightingwird einprop_statican einer einzigen Stelle beleuchtet. Liegt sie im Dunkeln oder in einer Wand, wird das ganze Model schwarz. Eininfo_lightingals Lichtursprung behebt das. - Zu viele Light Styles: Lichter mit Namen oder Flacker-Stil brauchen eigene Lightmaps. Überlagern sich viele davon auf einer Fläche, warnt VRAD.
- Leak: Bei einem Leck liefert VVIS keine Sichtbarkeitsdaten, und VRAD berechnet dann nur direktes Licht ohne zurückgeworfenes Licht. Behebe zuerst den Map-Leak-Fehler.
Meldungen aus dem VRAD-Log kannst du im Map Scanner einfügen. Er ordnet bekannte Meldungen Ursachen und Lösungswegen zu.
Häufige Fragen
Warum ist meine Map fullbright?
Die BSP enthält keine Lichtdaten. Das passiert, wenn kein einziges Licht-Entity in der Map ist oder wenn VRAD beim Compile übersprungen wurde oder mit einem Fehler abgebrochen ist. Setze ein Licht, kompiliere mit RAD auf „Normal“ und prüfe das Log.
Wie viele light_environment darf eine Map haben?
Eines. Sonne und Himmel gelten für die gesamte Map. Mehrere Entities mit unterschiedlichen Werten erzeugen kein unterschiedliches Licht in verschiedenen Bereichen.
Muss ich mit HDR kompilieren?
Nein, eine reine LDR-Map funktioniert. Für eine veröffentlichte Map ist -both aber die sichere Wahl, weil sie dann unabhängig von den Grafikeinstellungen der Spieler korrekt beleuchtet ist.
Warum sehen Reflexionen nach dem Compile falsch aus?
Die Cubemaps wurden für diesen Compile noch nicht gebaut. Jeder neue Compile verwirft sie. Lade die Map, führe buildcubemaps aus und starte die Map neu.