light
Jump to navigation
Jump to search

AltNames: light, light_spot, light_glspot, and (in all games since
) light_directional are all tied to the same C++ class in game, and only differ in VRAD.
Note: When building Cubemaps, this entity will be rendered as a sprite on the generated cubemaps. Sometime this might be unwanted, in which case modifying
| CLight |
This article is about the light entity. For general information about using lights, see Lighting.

light is a semi-internal point entity available in all
Source games.
It creates an invisible static light source that shines in all directions.
engine/lightsprite.vmt is necessary to prevent the sprite from appearing. Try changing the sprite's $basetexture to tools/toolsblack instead. Keyvalues
- Name (targetname) <string>
-
The name that other entities refer to this entity by, via Inputs/Outputs or other keyvalues (e.g.
parentnameortarget).
Also displayed in Hammer's 2D views and Entity Report.See also: Generic Keyvalues, Inputs and Outputs available to all entities
Important: Naming a static light radically changes its behavior. See Naming Lights for details.
-
Entity To Point At (target) <targetname>
-
Deprecated.
Entity to point this light at. Non-functional, as this entity casts light in all directions, regardless of if it has a target; use light_spot instead.
- Maximum Distance (_distance) <integer>
- This is the distance that light is allowed to cast, in inches. Non-functional in Source 2013 and later, use 50 and 0 percent falloff instead.
- Appearance (lightstyle) (style) <integer choices>
-
Various lightstyle presets.
Warning: On some modern drivers[Which?] this will degrade performance by causing frequent stutters. There is no workaround for this other than not using styled lights. The symptoms of this are high spikes in Dynamic Light Renderingwhen using +showbudget. When togglingr_dynamiclightingoff, these spikes will disappear. DXVK is not affected by this problem.Lightstyle presets (epilepsy warning) Literal Value Description Sequence Preview 0 Normal m
10 Fluorescent flicker mmamammmmammamamaaamammma
2 Slow, strong pulse abcdefghijklmnopqrstuvwxyzyxwvutsrqponmlkjihgfedcba
11 Slow pulse, noblack abcdefghijklmnopqrrqponmlkjihgfedcba
5 Gentle pulse jklmnopqrstuvwxyzyxwvutsrqponmlkj
1 Flicker A mmnmmommommnonmmonqnmmo
6 Flicker B nmonqnmomnmomomno
3 Candle A mmmmmaaaaammmmmaaaaaabcdefgabcdefg
7 Candle B mmmaaaabcdefgmmmmaaaammmaamm
8 Candle C mmmaaammmaaammmabcdefaaaammmmabcdefmmmaaaa
4 Fast strobe mamamamamama
9 Slow strobe aaaaaaaazzzzzzzz
12 !FGD Underwater light mutation mmnnmmnnnmmnn
63 !FGD Testing (Off) a
Values 32-62 are written automatically by VBSP for named lights.
- Default Style (defaultstyle) <integer choices> !FGD
-
Written by VBSP automatically for any named lights with a non-zero
style.
- Custom Appearance (pattern) <string>
- A string of english letters, like a sequence of piano keys, that define a pattern of brightness. a is 0%, m is 100%, and z is 200%. Updates at 10 Hz. Requires light to have a targetname.
Internal keyvalues used only by VRAD:
- Brightness (_light) <color255 + int>
-
The RGB color of the light, and a multiplicative scalar for brightness (applied after gamma correction). Colors should be between 0 and 255; brightness can be anything (even absent). If only one value is provided, light will be greyscale.
Note: Brightness values below zero are clamped; this can be fixed by modifying VRAD.
Code Fix: In utils/vrad/lightmap.cpp, look for the comment saying "// make sure light is legal", then remove the following if statement, including all its contents.
- BrightnessHDR (_lightHDR) <color255 + int>
-
RGB color and brightness override used in HDR mode. Default is
-1 -1 -1 1, which means no change.
Warning: The fourth digit must be positive. Otherwise all light will be sucked out of your map!
- BrightnessScaleHDR (_lightHDRscale) <float>
-
A simple intensity multiplier used when compiling HDR lighting.
Note: Unlike _lightand_lightHDR, negative values are supported. Negative brightness will suck out the amount of lighting that the equivalent positive brightness would cast. Use sparingly; set falloff to linear instead of quadratic to make it more like an ordinary shadow and less like a black hole. Since this only applies to HDR mode, it should be reserved for games that don't officially support disabling HDR.
- Constant (_constant_attn) <float>
- Linear (_linear_attn) <float>
- Quadratic (_quadratic_attn) <float>
- These three values determine how the intensity of the emitted light falls off over distance. See Constant-Linear-Quadratic Falloff.
- 50 percent falloff distance (_fifty_percent_distance) <float>
- 0 percent falloff distance (_zero_percent_distance) <float>
-
Distances at which brightness should have fallen to 50% and (1/256)% respectively. Overrides Linear/Constant/Quadratic parameters if non-zero.
Bug:Using this setting will sometimes not work, which may or may not be related to using the light inside of an instance. Collapsing the instance and messing with the light's falloff values seems to help.
- Hard falloff (_hardfalloff) <boolean>
- Causes lights to fall to exactly zero beyond the 0% distance. May cause unrealistic lighting if not used carefully.
-
Cast entity shadows (_castentityshadow) <boolean> (in all games since
) (also in
)
-
Allows the light to modify the direction of nearby render-to-texture shadows so that they always point away from its origin. See also shadow_control. !FGD in some games.
Note: This keyvalue is also in
VRAD++, but will only affect the map when loaded in third party engines such as
, or post-
engines (such as 
).
-
Shadow cast offset (_shadoworiginoffset) <vector> (in all games since
)
-
A world-space offset that gets applied to the light origin when casting entity shadows. Useful for dealing with funny-looking shadows from very low lights: Just offset up the z axis. Default
0 0 0. !FGD in some games.
-
Pitch Yaw Roll (Y Z X) (angles) <angles>!FGD
-
Deprecated.
Written by VRAD to the worldlights lump, but is unused, as light from this entity is omnidirectional.
Flags
- Initially dark : [1]
- Spawns with the light turned off, so a light switch or similar can turn it on.
Inputs
- TurnOn <void>
- Turn the light on (sets pattern to
m). - TurnOff <void>
- Turn the light off (sets pattern to
a). - Toggle <void>
- Toggle the light's current state.
Code: Uses the current state of the m_spawnflagsto determine whether to turn on or off. As such, if the light has been manually turned off (such as by setting pattern toainSetPatternorFadeToPattern), this input will appear to have no effect.
- SetPattern <string>
- Set a custom pattern of light brightness for this light. Flags the light to game code as being "on".
- FadeToPattern <string>
- Fades from first value in old pattern, to first value in the new given pattern.
Fade occurs 0.1 seconds per letter, the same speed as the pattern itself. Flags the light to game code as being "on".
Tip: This can be used to have a light turn on and off slowly (over the span of 1.3 seconds), by setting the pattern to mto turn on, andato turn off.- Kill <void>
- Killing lights will leave their associated lightmaps and worldlights in whatever state they were in prior to the entity being killed.
If the light is on, it will stay on; if the light is off, it will stay off. If a pattern is playing, the pattern will continue to play. If FadeToPattern was used, and the target pattern hasn't been reached, the light will remain at whatever level of partial fade it was at.
Tip: Used carefully, killing a light when it can no longer change state can clean up entity slots, which may be useful if running close to entity limits.
Idea: If there are specific lights wherein bounced light is undesirable, give them all the same targetname, then kill them with logic_auto.
See also
- light_spot
- light_deferred
- Lighting
- Adding Light
- Intermediate Lighting
- Advanced Lighting
- Effect flags (dynamic light effects)
- Tool textures (for Block light)
$reflectivity(controlling reflected light off surfaces)