newLight_Point
newLight_Point
is a point entity available in Black Mesa.
It is one of the many new lighting entities available. Black Mesa incorporates a new lighting system which utilizes Deferred lighting to create dynamic lighting system with dynamic shadows, which allows to complement and quite enliven some scenes, it is also nice effect for moving objects, such as trains. It is also include fine tuning Godrays and lightcookies.
Represented by class CNewLightPoint
.
Keyvalues
- Name (targetname) <string>
- The name that other entities refer to this entity by.
- Parent (parentname) <targetname>
- The name of this entity's parent in the movement hierarchy. Entities with parents move with their parent.
- Pitch Yaw Roll (Y Z X) (angles) <angle> !FGD
- This entity's orientation in the world. Pitch is rotation around the Y axis, yaw is the rotation around the Z axis, roll is the rotation around the X axis.
- Important:Have huge differences if you use texture for your newLight_Point.
- Enabled (Enabled) <choices>
- Enable/Disable this Entity.
Determines if the light is off at level start.
- 0: Enabled
- 1: Disabled
- Appearance (FlareStyle) <choices>
- Appearance presets.
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
- Tip:Static lightmapped lights reduces performance with custom appearance (especially near displacements). If this cause problems, you can use replace your static lights with new lights, if used correctly - in most cases this will significantly preserve performance.
- Light Color (LightColor) <color255>
- This is the color of the sunlight.
Determines color of light.
- Light Ambient Color (LightColorAmbient) <color255>
- This is the ambient color of the sunlight.
Determines color of shadows that light source creates.
|
- Light Intensity (Intensity) <float>
- RGB * Intensity.
Brightness of the light.
- Note:With 0 will not draw, process and specular shader be disabled.
- SpecularMultiplier (SpecMultiplier) <float>
- 0 to 1 RGB * Intensity * SpecularMultiplier.
Brightness of the specular shader from this light source.
|
- Range (Range) <float>
- How far the light source illuminates. Measured in Hammer Units.
- Important:It greatly affects optimization, less is better.
|
- Light Type (LightType) <choices>
- Determines the light type.
- 0: Static - shadows are cast only by static objects (prop_static, geometry, etc.). Lighting does not update if it has parent (use if part scene has no large moving parts, or shadow accuracy is not important).
- 1: Stationary - shadows are cast by static and dynamic objects, lighting does not update if it has a parent.
- Important:Shadows for dynamic props update, but baked for geometry. That means that shadows from func_physbox and other dynamic geometry will never update, and shadows from other geometry on them too.
- 2: Dynamic - lighting is not baked at all. Shadows are cast by static and dynamic objects, lighting updates if it does have a parent. This light is quite expensive, and should only be used for moving light sources, or if your scene have moving geometry.
|
- HasShadow (HasShadow) <choices>
- Do you want this light to have shadows?
Determines whether the light source will cast shadows. Remember that default choices is No.
- 0: No
- 1: Yes
|
- ShadowMapLOD (ShadowLod) <choices>
- Resolution of ShadowMap used by this light.
Determines quality of shadows. 1024 is very expensive, use it only in places where it's really needed, in most cases 512 is good alternative. 256 produces the blurriest shadows, but it is also the cheapest.
- 0: 256
- 1: 512
- 2: 1024
|
- ShadowFaceX (ShadowFaceX) <choices>
- Shadow Enabled for this Face ?
Determines whether the given side lighting will display shadows.
- 0: Enabled
- 1: Disabled
- ShadowFaceX_Minus (ShadowFaceX_Minus) <choices>
- Shadow Enabled for this Face ?
Determines whether the given side lighting will display shadows.
- 0: Enabled
- 1: Disabled
- ShadowFaceY (ShadowFaceY) <choices>
- Shadow Enabled for this Face ?
Determines whether the given side lighting will display shadows.
- 0: Enabled
- 1: Disabled
- ShadowFaceY_Minus (ShadowFaceY_Minus) <choices>
- Shadow Enabled for this Face ?
Determines whether the given side lighting will display shadows.
- 0: Enabled
- 1: Disabled
- ShadowFaceZ (ShadowFaceZ) <choices>
- Shadow Enabled for this Face ?
Determines whether the given side lighting will display shadows.
- 0: Enabled
- 1: Disabled
- ShadowFaceZ_Minus (ShadowFaceZ_Minus) <choices>
- Shadow Enabled for this Face ?
Determines whether the given side lighting will display shadows.
- 0: Enabled
- 1: Disabled
- NearZ (NearZ) <float>
- NearZ used by shadowmap camera for this light.
Determines distance at which light source will cast shadows.
- DepthBias (DepthBias) <float>
- DepthBias - Offset added to depth values in shadowmaps.
|
- SlopeDepthBias (SlopeDepthBias) <float>
- Slope Depth Bias - For surfaces having aliasing due to steep angles with light.
|
- NormalBias (NormalBias) <float>
- While rendering objects into shadow maps, each vertex will be moved along -ve Normal direction, giving it an appearance of shrinking while rendering to shadow maps. This property determines the amount of Units to be moved. Helps with shadow aliasing.
|
- Bug*:Numbers lower than 0.8 can cause huge graphics problems.
|
- ShadowRadius (ShadowRadius) <float>
- Radius of shadow edges for soft shadows. If its value is negative, code will auto assign a value depending on shadowlod. These code based values can be adjusted via convars nr_shadow_rad_High,nr_shadow_rad_Med and nr_shadow_rad_Low.
Determines shadow blur. Low numbers are expensive to render.
|
- Enable Texture Light (bTexLight) <choices>
- Enable Texture Ligh.
Determines whether the given light source uses .vtf texture from game files (just like env_projectedtexture). With NewLight_Point, this technically works like a cube. The best example is the batteries that use lights/lightcookie_battery.vtf.
- 0: Disabled
- 1: Enabled
|
- Tip:Lightcookie texture works just like static cubemap textures. Follow this steps to create your own lightcookie texture.
- Note:One of the most expensive features, use wisely. If shadows enabled - it can work with lags even with powerful PC.
- Texture name for TexLight (texName) <string>
- Determines which texture will use light source. It use .vtf files, not .vmt.
- .Enable Prop Only Mode (bNegLight) <choices>
- Enable Prop Only Mode.
- 0: Disabled
- 1: Enabled
- LightnGodRayMode (LightnGodRayMode) <choices>
- 0:Light 1:Godrays 2:Both Light and GodRays.
- 0: Light
- 1: Godrays
- 2: Both Light and GodRays
|
- Note:The game will think that the godrays is used if choice is
Godrays
orBoth Light and GodRays
, even if godrays is turned off. - EnableGodRays (EnableGodRays) <choices>
- Enable GodRays.
Determines whether godrays are enabled or not at map start.
- 0: Disabled
- 1: Enabled
- Warning:You can have only 40 point lights with godrays enabled simultaneously, otherwise game will crash with this error message.
- Note:Godrays are draw and process even with closed areaportals.
|
- Density (Density) <float>
- Density Controls the length of rays/volumetric shadows. 1.0 should work in 99% cases. Good values to start from: 0.5 to 1.5.
|
- Weight (Weight) <float>
- Weight Controls the intensity of volumetric shadow. Blocking of rays by geometry. Good values to start from: 0.1 - 10.0.
|
- Decay (Decay) <float>
- Decay NOT being used.
- Exposure (Exposure) <float>
- Exposure Controls the intensity of Rays during blending pass with main scene. 2.0 is a good start. Good values are 1.0 - 10.0.
|
- DistFactor (DistFactor) <float>
- DistFactor Controls the falloff of rays / length. 1.0f is a good starting value increase or decrease in the increments of 0.1. 0.0 will make the rays dissappear only disk will be rendererd.
|
- DiskRadius (DiskRadius) <float>
- Radius of Disk/circle of sun in texturespace. 1.0 will be full screen 0.5 is half screen etc.
|
- Note:With 0 - will not render.
- ColorInner (ColorInner) <color255>
- This is the color of the inner circle.
|
- Note:Unlike lighting - brightness of inner depends on fourth number which can be written here.
- ColorRays (ColorRays) <color255>
- This is the color of the rays.
|
- Note:Unlike lighting - brightness of rays depends on fourth number which can be written here.
- GodRaysType (GodRaysType) <choices>
- GodRaysType.
- 0: Normal
- 1: Fancy
|
- DiskInnerSizePercent (DiskInnerSizePercent) <float>
- Used only in Fancy Gaphics Mode. Disk inner circle radius = DiskRadius * DiskInnerSizePercent.
|
- Note:With 0 - will not render.
- ColorOuter (ColorOuter) <color255>
- Used only in Fancy Mode. This is the color of the outer circle.
|
- Note:Unlike lighting - brightness of outer depends on fourth number which can be written here.
- Ell_FR_ConstA (Ell_FR_ConstA) <float>
- This is fancy Godrays disk size.
- Note:For fancy Godrays only.
|
- Ell_FR_ConstB (Ell_FR_ConstB) <float>
- This is fancy Godrays disk distortion.
- Note:For fancy Godrays only.
|
- EEll_SR_ConstA (EEll_SR_ConstA) <float>
- This is fancy Godrays disk hole size.
- Note:For fancy Godrays only.
|
- EEll_SR_ConstB (EEll_SR_ConstB) <float>
- This is fancy Godrays disk hole distortion.
- Note:For fancy Godrays only.
|
- Ell_RRF_ConstA (Ell_RRF_ConstA) <float>
- This is fancy Godrays inner size.
- Note:For fancy Godrays only.
|
- Ell_RRF_ConstB (Ell_RRF_ConstB) <float>
- This is fancy Godrays inner distortion.
- Note:For fancy Godrays only.
|
- RotSpeed (RotSpeed) <float>
Determines rotating speed of fancy rays, 0 - don't rotate, negative number - will rotate to left.
- Note:For fancy Godrays only.
|
- RotPatternFreq (RotPatternFreq) <float>
Determines count of fancy rays in frame, with negative number will deny RotSpeed +/- effect.
- Note:For fancy Godrays only.
|
- RenderInWorldSpace (m_bEnableWorldSpace) <choices>
- Disables disks if this enabled.
- m_fAlphaDiskInner (m_fAlphaDiskInner) <float>
- m_fAlphaDiskOuter (m_fAlphaDiskOuter) <float>
- UseToneMapRays (m_bUseToneMapRays) <choices>
- 0: Enabled
- 1: Disabled
- UseToneMapDisk (m_bUseToneMapDisk) <choices>
- 0: Enabled
- 1: Disabled
- ShadowPass_Brush (m_bSRO_Brush) <choices>
- Do we want to Render Brushes in shadow passes for this light?
- 0: YES
- 1: NO
- ShadowPass_StaticProp (m_bSRO_StaticProp) <choices>
- Do we want to Render StaticProps in shadow passes for this light?
- 0: YES
- 1: NO
- ShadowPass_DynProp (m_bSRO_DynProp) <choices>
- Do we want to Render Dynamic Props in shadow passes for this light?
- 0: YES
- 1: NO
- ShadowPass_AlphaTest (m_bSRO__Trans) <choices>
- Do we want to Render AlphaTested Objects in shadow passes for this light?
- 0: YES
- 1: NO
bUseOldFallOff (bUseOldFallOff) <choices>!FGD- Deprecated.
Enable old falloff similar to light/light_spot.
- 0: No
- 1: Yes
falloffConstant (falloffConstant) <integer>!FGD- Deprecated.
Constant (work only if bUseOldFallOff enabled). falloffLinear (falloffLinear) <integer>!FGD- Deprecated.
Linear (work only if bUseOldFallOff enabled). falloffQuadratic (falloffQuadratic) <integer>!FGD- Deprecated.
Quadratic (work only if bUseOldFallOff enabled).
Inputs
- SetColorLight <color255>
- Change Light's Color value. Doesn't affect the godrays.
- SetIntensityForLight <float>
- Change Light's intensity value. Doesn't affect the godrays.
- TurnOnGodRays <void>
- Turn the Godrays on.
- TurnOffGodRays <void>
- Turn the Godrays off.
- TurnOn <void>
- Turn the light on.
- TurnOff <void>
- Turn the light off.
- Toggle <void>
- Toggle the light's current state.
Shadow map slots
Shadow map slots is how many lights with shadows you can have per level. There are 3 separate shadow map slots, High
(for lights with 1024
value for ShadowMap LOD
property), Medium
(for lights with 512
value for ShadowMap LOD
property) and Low
(for lights with 256
value for ShadowMap LOD
property).
In High
and Medium
you can have 48 separate shadow maps, for Low
you can have 47 separate shadow maps (143 shadow maps in total).
Each spot light with shadows takes 1 shadow map slot, so you can have 48/47 spot lights with shadows, if they are using the same value for ShadowMap LOD
property.
Each point light with shadows takes 6 shadow map slots. This is due to point light isn't just omnidirectional light source, it's 6 spot lights in one entity. This means that you can have 8 point lights with shadows, if they are using the same value for ShadowMap LOD
property. You can increase this value if you need, just disable shadows for one of the shadow face properties.
If one of the shadow map slots is full - you will not be able to have shadows for more lights with such shadow quality, you will need to use other value for ShadowMap LOD
property.
Point lights and spot lights doesn't counts separately. You can't have 48 spot lights with 8 point lights, but you can have 6 spot lights with 7 point lights.
You can free up shadow map slots with Kill
input. So, you can place triggers which will Kill
lights that player can't see and spawn new lights via point_template (uncheck the second flag for point_template, this prevents some bugs). This helps a lot when you want to have many dynamic lights in different areas.
Important to note that due to some engine bugs you can't use many lights with shadows. Some tests show that 9th point light cause lights with shadows to be very glitchy. This can be done with spot lights as well. So don't be surprised if at some point you find something like this.
It looks like you can workaround it if you will switch ShadowMap LOD
property values from higher to lower.
Lighting behavior With VIS and areaportals
Static type
Static type is the most stable, since its shadows are baked in and updates only with save loads or while lighting turning on. It shows all shadows even with closed areaportal.
Stationary type
Shadows for static props and brushes are baked, but not for physics props and other dynamic models. This means that shadows from dynamic models will disappear if they are hidden by a closed areaportal or if VIS is hiding such objects. Shadows for static props and brushes will not disappear.
In some cases, this can be noticeable if dynamic model creates a large shadow.
Dynamic type
Shadows for static props and world geometry are baked, but not for dynamic models and brushes. This means that shadows from dynamic models and brushes will disappear if they are hidden by a closed areaportal or if VIS is hiding such objects. Shadows for static props and world geometry will not disappear. Moving lighting will update shadows for static props and world geometry, even with closed areaportal.
Bugs/Limitations
See also
- New Lights Editor
- newLight_Spot
- newLight_Dir
- NewLights_settings
- godrays_settings
- env_cascade_light
- New Specular
- newxog_volume
- Lighting
- Adding Light
- Intermediate Lighting
- Advanced Lighting
- Effect flags (dynamic light effects)
- Tool textures (for Block light)
- BlackMesa XenEngine: Part 4 – Lighting & Shadows (page from Black Mesa developer about new lights)
- BlackMesa XenEngine: Part2 – How a Frame is Rendered (page from Black Mesa developer about how a frame rendered, include Godrays.)
- BlackMesa XenEngine: Part1 – Heavily Modified Source Engine (page from Black Mesa developer about Black Mesa engine, better known as Xengine)