Lighting: Difference between revisions
TomEdwards (talk | contribs) |
TomEdwards (talk | contribs) (cleanup) |
||
Line 1: | Line 1: | ||
{{Abstract Mapping}} | {{Abstract Mapping}} | ||
== Guides == | == Guides == | ||
* [[Adding Light]] - A beginners tutorial on how to set up a basic [[light]] entity. | * [[Adding Light]] - A beginners tutorial on how to set up a basic [[light]] entity. | ||
Line 11: | Line 9: | ||
== Entities == | == Entities == | ||
=== Static light sources === | === Static light sources === | ||
{{tip|Static lighting is compiled into [[Lightmap]]s | |||
{{tip|Static lighting is compiled into [[Lightmap]]s, which illuminate [[brush]]es and [[model]]s, and [[Cubemaps]], which provide static [[reflection]]s. | |||
It is [[free]] to render, as additional static lights only ''alter'' that which is already being processed.}} | |||
;[[light]]:A static, omni-directional point light source. (e.g. a naked light bulb or flame.) | ;[[light]]:A static, omni-directional point light source. (e.g. a naked light bulb or flame.) | ||
;[[light_spot]]:A static, uni-directional point light source. (e.g. a torch) The conical beam angle cannot exceed 90°. | ;[[light_spot]]:A static, uni-directional point light source. (e.g. a torch) The conical beam angle cannot exceed 90°. | ||
;[[light_environment]]: Provides two linked light sources | ;[[light_environment]]: Provides two linked light sources: | ||
:*A diffuse 'ambient' light (representing reflected light from clouds and the atmosphere in general) that emits from all skybox surfaces | |||
:*A directional 'brightness' light (representing sunlight or moonlight) that is only cast in a single direction. | |||
:Both are emitted from the [[Tool textures#skybox|toolsskybox]] material wherever it is used on a map. See also [[Skybox]]. | |||
;[[env_particlelight]]: Illuminates particles produced by [[env_smokestack]]. Particles are not affected by normal lighting. Use (no more than) two of these to make (only) [[env_smokestack]] particles appear to reflect ambient lighting. | ;[[env_particlelight]]: Illuminates particles produced by [[env_smokestack]]. Particles are not affected by normal lighting. Use (no more than) two of these to make (only) [[env_smokestack]] particles appear to reflect ambient lighting. | ||
;luminous materials | ;luminous materials | ||
:[[Brush]] surfaces with a light-emitting material (as defined in <code>game_dir/lights.rad</code>) applied will cast volumetric light in a 180° cone. | :[[Brush]] surfaces with a light-emitting material (as defined in <code>game_dir/lights.rad</code>) applied will cast volumetric light in a 180° cone. | ||
=== Static light receivers === | |||
;[[Brush]]es | |||
:This [[Hammer Face Edit Dialog]] tool '[[Lightmap Scale]]' can be used to control how sharp or diffuse the lightmap of a brush surface will be - an effect most noticeable between areas of high contrast, e.g. shadows. | |||
;[[prop_static]] | |||
:Unlike other model entities, prop_static are lit statically: a lighting value is stored for every [[vertex]], and the model's [[collision mesh]] (or, optionally, [[reference mesh]]) is used to calculate lightmap shadows. | |||
:There are the following options: | |||
:*<code>disableshadows</code> - Do not cast lightmap shadows | |||
:*<code>disablevertexlighting</code> - Only store a single lighting value for the entire model | |||
:*<code>disableselfshadowing</code> - Prevents the entity from casting shadows on itself | |||
:*<code>ignorenormals</code> - Unknown | |||
=== Dynamic light sources === | === Dynamic light sources === | ||
Line 28: | Line 44: | ||
;[[point_spotlight]]:A dynamic spotlight beam effect, with an optional dynamic light source where it hits a surface. | ;[[point_spotlight]]:A dynamic spotlight beam effect, with an optional dynamic light source where it hits a surface. | ||
;[[npc_spotlight]]:A spotlight [[NPC]], similar to point_spotlight but with the capability of tracking targets. | ;[[npc_spotlight]]:A spotlight [[NPC]], similar to point_spotlight but with the capability of tracking targets. | ||
;[[env_projectedtexture]]:A dynamic light that lights | ;[[env_projectedtexture]]:A dynamic light that lights with a texture rather than a solid colour, and which also 'subtracts' realistic dynamic shadows. Affects all surfaces that can accept lighting, and is used for the player [[flashlight]] in [[Episode Two]]. | ||
=== | === Dynamic shadows === | ||
;[[shadow_control]]:Point entity used to control Dynamic Shadow projections for the entire map. | {{tip|Dynamic Shadows are cast only by world [[model]]s (NPCs, phys-props, etc), and only onto [[brush]] surfaces (from both Static and Dynamic light sources). They are calculated at runtime, so they are quite crude and relatively [[showbudget|expensive]] to render.}} | ||
{{warning|Dynamic Shadows can sometimes project through walls and floors, giving away the location of players or objects. Use [[info_no_dynamic_shadow]] to workaround this problem if you encounter it.}} | |||
{{note|Dynamic Shadows do not merge with each other or with Lightmaps when they overlap. This can produce undesirable 'doubling up' effects when, for instance, phys props are placed on a phys prop table. You can enable and disable shadows on dynamic entities to work around this.}} | |||
;[[shadow_control]]:Point entity used to control Dynamic Shadow projections for the entire map, including maximum distance cast, direction cast, and sharpness/diffuseness. | |||
;[[info_no_dynamic_shadow]]:Point entity used to list [[Brush]] surfaces that should ''not'' receive Dynamic Shadows. | ;[[info_no_dynamic_shadow]]:Point entity used to list [[Brush]] surfaces that should ''not'' receive Dynamic Shadows. | ||
;[[prop_physics]] entities : have a "shadowcastdist" keyvalue to override how far this object casts Dynamic Shadows. | ;[[prop_physics]] entities : have a "shadowcastdist" keyvalue to override how far this object casts Dynamic Shadows. | ||
;[[prop_dynamic]] entities : have a "disableshadows" keyvalue, and "enableshadows" and "disableshadows" inputs to control Dynamic Shadows cast by them. | ;[[prop_dynamic]] entities : have a "disableshadows" keyvalue, and "enableshadows" and "disableshadows" inputs to control Dynamic Shadows cast by them. | ||
;NPC entities : have the prop_dynamic shadow controls, plus a "disablereceiveshadows" {{todo|to prevent...?}} | ;NPC entities : have the prop_dynamic shadow controls, plus a "disablereceiveshadows" {{todo|to prevent...?}} | ||
=== Tyndall effects === | === Tyndall effects === | ||
[ | [[Wikipedia:Tyndall effect|Tyndall effects]] are caused by light scattering on suspended (colloid) particles in a transparent medium. Eg car headlights in fog. | ||
* [ | * [[Wikipedia:Halo_(optical_phenomenon)|Halo]] (Glow Sprite) effects : | ||
:*[[env_sprite]] - entity used to create omni-directional glow or flare effects. | :*[[env_sprite]] - entity used to create omni-directional glow or flare effects. | ||
:*[[env_lightglow]] - an asymmetrical glow (for areas of contrasting light). | :*[[env_lightglow]] - an asymmetrical glow (for areas of contrasting light). | ||
:*[[env_sun]] - adds a bright haloed spot to the [[Skybox]] to represent the position of the Sun or Moon. | :*[[env_sun]] - adds a bright haloed spot to the [[Skybox]] to represent the position of the Sun or Moon. | ||
* [ | * [[Wikipedia:Light beam|Lightbeam]] (Volumetric Light) effects : | ||
:*Brush texture : <code>models/effects/vol_light001</code> | :*Brush texture : <code>models/effects/vol_light001</code> | ||
:*Brush texture : <code>models/effects/vol_light002</code> | :*Brush texture : <code>models/effects/vol_light002</code> | ||
Line 90: | Line 106: | ||
:<code>0</code> is normal lighting. | :<code>0</code> is normal lighting. | ||
:<code>1</code> is 'full bright' lighting, where everything is 100% lit. | :<code>1</code> is 'full bright' lighting, where everything is 100% lit. | ||
:<code>2</code> has been introduced with the Orange Box and is 'lighting only'. It replaces all textures' images with a | :<code>2</code> has been introduced with the Orange Box and is 'lighting only'. It replaces all textures' images with a colourless monotone, allowing you to see exactly what is lit, where, and probably how. | ||
== See also == | == See also == | ||
Line 107: | Line 123: | ||
*[http://www.sdknuts.net/akg/?sdk=tutlights HDR/Shaped Light/Burning Light/Darkness/Sun/Volumetric] | *[http://www.sdknuts.net/akg/?sdk=tutlights HDR/Shaped Light/Burning Light/Darkness/Sun/Volumetric] | ||
--> | --> | ||
[[Category:Level design]] | |||
__NOTOC__ |
Revision as of 04:11, 31 May 2008
Abstract Mapping series Discuss your thoughts - Help us develop the articles or ideas you want |
---|
Ammunition | List of HL2 Animals and Creatures | Mapping with Antlions | Beams and Lasers | Cables and Ropes | Moving Clouds | Color Theory in Level Design | Combat | Combine | Compression (Source 1) | Doors | Dust, Fog, & Smoke | Elevators | Level Transitions | Environmental Lighting, Sun, Weather, & Outdoors | Explosions | Fire | Half-Life 2 Foliage | Glass & Windows | Headcrab | Health | Ladders | Lighting | Optimization (level design) | Physics | Retinal scanners | Sound and Music | Special effects | Terrain | Trains | Turrets | Water | Weapons | Zombie |
Guides
- Adding Light - A beginners tutorial on how to set up a basic light entity.
- Intermediate Lighting - A tutorial dealing with all the light sources in more detail.
- Advanced Lighting
- Constant-Linear-Quadratic Falloff - An easy-to-read explanation of the old C-L-Q light attenuation system.
- HDR - High Dynamic Range Lighting.
Entities
Static light sources

- light
- A static, omni-directional point light source. (e.g. a naked light bulb or flame.)
- light_spot
- A static, uni-directional point light source. (e.g. a torch) The conical beam angle cannot exceed 90°.
- light_environment
- Provides two linked light sources:
- A diffuse 'ambient' light (representing reflected light from clouds and the atmosphere in general) that emits from all skybox surfaces
- A directional 'brightness' light (representing sunlight or moonlight) that is only cast in a single direction.
- Both are emitted from the toolsskybox material wherever it is used on a map. See also Skybox.
- env_particlelight
- Illuminates particles produced by env_smokestack. Particles are not affected by normal lighting. Use (no more than) two of these to make (only) env_smokestack particles appear to reflect ambient lighting.
- luminous materials
- Brush surfaces with a light-emitting material (as defined in
game_dir/lights.rad
) applied will cast volumetric light in a 180° cone.
Static light receivers
- Brushes
- This Hammer Face Edit Dialog tool 'Lightmap Scale' can be used to control how sharp or diffuse the lightmap of a brush surface will be - an effect most noticeable between areas of high contrast, e.g. shadows.
- prop_static
- Unlike other model entities, prop_static are lit statically: a lighting value is stored for every vertex, and the model's collision mesh (or, optionally, reference mesh) is used to calculate lightmap shadows.
- There are the following options:
disableshadows
- Do not cast lightmap shadowsdisablevertexlighting
- Only store a single lighting value for the entire modeldisableselfshadowing
- Prevents the entity from casting shadows on itselfignorenormals
- Unknown
Dynamic light sources


- light_dynamic
- A simple, uni-directional dynamic light that can be moved, turned, and adjusted.
- point_spotlight
- A dynamic spotlight beam effect, with an optional dynamic light source where it hits a surface.
- npc_spotlight
- A spotlight NPC, similar to point_spotlight but with the capability of tracking targets.
- env_projectedtexture
- A dynamic light that lights with a texture rather than a solid colour, and which also 'subtracts' realistic dynamic shadows. Affects all surfaces that can accept lighting, and is used for the player flashlight in Episode Two.
Dynamic shadows



- shadow_control
- Point entity used to control Dynamic Shadow projections for the entire map, including maximum distance cast, direction cast, and sharpness/diffuseness.
- info_no_dynamic_shadow
- Point entity used to list Brush surfaces that should not receive Dynamic Shadows.
- prop_physics entities
- have a "shadowcastdist" keyvalue to override how far this object casts Dynamic Shadows.
- prop_dynamic entities
- have a "disableshadows" keyvalue, and "enableshadows" and "disableshadows" inputs to control Dynamic Shadows cast by them.
- NPC entities
- have the prop_dynamic shadow controls, plus a "disablereceiveshadows" Todo: to prevent...?
Tyndall effects
Tyndall effects are caused by light scattering on suspended (colloid) particles in a transparent medium. Eg car headlights in fog.
- Halo (Glow Sprite) effects :
- env_sprite - entity used to create omni-directional glow or flare effects.
- env_lightglow - an asymmetrical glow (for areas of contrasting light).
- env_sun - adds a bright haloed spot to the Skybox to represent the position of the Sun or Moon.
- Lightbeam (Volumetric Light) effects :
- Brush texture :
models/effects/vol_light001
- Brush texture :
models/effects/vol_light002
- Model :
models/Effects/vol_light.mdl
- use with prop_static.
- Brush texture :
- See also Render Modes for sprites, particularly World Space Glow.
Common values
- City 17 day
- Brightness
237 218 143 800
- Ambience
190 201 220 100
- Ravenholm night
- Brightness
175 230 239 50
- Ambience
43 45 57 5
- Combine lamp
- Brightness
147 226 240 3000
- Ambience N/A
- Tungsten bulb
- Brightness
254 216 146
- Ambience N/A
- Fluorescent bulb
- Brightness
159 237 215
- Ambience N/A
For values to accompany the stock skybox materials, see Sky List.
Notes
- Naming a light makes it more expensive. Only name lights when you need to. Multiple lights sharing the same name are cheaper than lights with separate names.
- light_dynamic is especially expensive, and will not even show up on some systems
- The basic light entities do not come with a visible representation (e.g. a lightbulb). For that you need a prop. See HL2 light props for a list.
- The basic light entities do not come with a "glow" as you'd expect to see in a foggy or misty area. To provide this, either compile and run the map with HDR enabled, or add a point_spotlight (with dynamic lighting off unless needed) or env_lightglow entity.
- Maps will not be lit unless you run vrad (or equivalent). Vrad will not run properly and will not calculate realistic light bounces unless the level is free of leaks.
- Several textures provide their own light & can do so using
lights.rad
in a mod's directory or the one insourcesdk/bin
. - Moving brushed-based objects will not change the way they are lit. Their lighting will be calculated only according to their positions in Hammer. (e.g. a brush in a dark room will not become bright if it is brought into a bright room.)
Console commands
mat_fullbright <0-2>
0
is normal lighting.1
is 'full bright' lighting, where everything is 100% lit.2
has been introduced with the Orange Box and is 'lighting only'. It replaces all textures' images with a colourless monotone, allowing you to see exactly what is lit, where, and probably how.
See also
- HL2 light props
- Color theory (level design)
- Light entities - A list of light entities.
External links
- Lighting Tutorial - Covers entities & variables with examples
- Quadratic/Linear/Constant in Lights