Template:Archived Page History/NewLight Point: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
m (Nesciuse moved page NewLight Point/en to NewLight Point without leaving a redirect: Move en subpage to basepage)
Tag: New redirect
Line 1: Line 1:
{{LanguageBar}}
#redirect [[non-existent redirect to prevent Special:ShortPages being filled]]
{{Toc-right}}{{this is a|point entity|name=newLight_Point|game=Black Mesa|sprite=NewLight Point.png{{!}}45px}}{{Multiple issues}}
{{APH|NewLight Point}}
 
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.
{{warning|New lights use expensive [https://learnopengl.com/Advanced-Lighting/Deferred-Shading gbuffer], that means that with this entity your scene rendering at least 5 times, which makes your level very expensive, considering that [[XenEngine]] uses 32-bit architecture and [[DirectX_Versions|DirectX]] 9.5 rendering. In large quantities, new lights can greatly heat up your computer and also cause large FPS drops (depending on difficulty of your map and how your area open). Use wisely.}}
{{note|You can have only 512 point light entities placed in the map editor.}}
{{bms}} Represented by class <code>CNewLightPoint</code>.
{{back | Black Mesa Level Creation}}
<br>
<gallery mode=packed heights=450px>
File:NewLight_PointGIFNEW.gif| frame | center | 510px |NewLight_Point in <code>Endgame</code> chapter.
</gallery>
==Keyvalues==
<div style=overflow:auto;height:500px><div><!-- some template has an extra </div> thats effing with the scroll box, so here is an extra <div> to appease your hungry appetite. DO NOT REMOVE!!! Mediawiki deserves to die, Markdown superiority! -->
{{KV|Name|intn=targetname|target_source|The name that other entities refer to this entity by.}}
{{KV|Parent|intn=parentname|target_destination|The name of this entity's parent in the movement hierarchy. Entities with parents move with their parent.}}
{{KV|Pitch Yaw Roll (Y Z X)|intn=angles|angle|nofgd=1|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 {{ent|newLight_Point}}.}}
{{KV|Enabled|intn=Enabled|Choices|Enable/Disable this Entity.
Determines if the light is off at level start.
*0: Enabled
*1: Disabled}}
{{KV|Appearance|intn=FlareStyle|Choices|Appearance presets.
{{Light appearances}}
{{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.
}}
}}
{{KV|Light Color|intn=LightColor|color255|This is the color of the sunlight.
Determines color of light.}}
{{KV|Light Ambient Color|intn=LightColorAmbient|color255|This is the ambient color of the sunlight.
Determines color of shadows that light source creates.}}
{{expand|title=Examples|
<br>
<gallery mode=packed heights=500px>
File:cShadowC1.jpg| thumb | left | 510px | 0 0 0
File:cShadowC2.jpg| thumb | left | 510px | 255 0 0
File:cShadowC3.jpg| thumb | left | 510px | 255 128 128
</gallery>
}}
{{KV|Light Intensity|intn=Intensity|float|RGB * Intensity.
Brightness of the light.}}
{{Note|With 0 will not draw, process and specular shader be disabled.}}
{{KV|SpecularMultiplier|intn=SpecMultiplier|float|0 to 1 RGB * Intensity * SpecularMultiplier.
Brightness of [https://developer.valvesoftware.com/wiki/New_Specularof the specular] shader from this light source.}}
{{expand|title=Examples|
<br>
<gallery mode=packed heights=500px>
File:cBS IN1.jpg| thumb | left | 510px | SpecularMultiplier - 1
File:cBS IN10.jpg| thumb | left | 510px | SpecularMultiplier - 10
File:cBS IN20.jpg| thumb | left | 510px | SpecularMultiplier - 20
</gallery>
}}
{{KV|Range|intn=Range|float|Range.
How far the light source illuminates. Measured in Hammer Units.}}
{{Important|It greatly affects optimization, less is better.}}
{{expand|title=Examples|
<br>
<gallery mode=packed heights=500px>
File:cL1.jpg| thumb | left | 510px | Range - 150
File:cL2.jpg| thumb | left | 510px | Range - 300
File:cL3.jpg| thumb | left | 510px | Range - 500
</gallery>
}}
{{KV|Light Type|intn=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.}}
{{expand|title=Examples|
<br>
<gallery mode=packed heights=420px>
File:B-1.gif|| thumb | left | 510px | Light Type - Static
File:B0.gif| thumb | left | 510px | Light Type - Stationary
File:B1.gif| thumb | left | 510px | Light Type - Dynamic
</gallery>
}}
{{KV|HasShadow|intn=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}}
{{expand|title=Examples|
<br>
<gallery mode=packed heights=410px>
File:cBM NO.jpg| thumb | left | 510px | Has Shadow - NO
File:cBM YES.jpg| thumb | left | 510px | Has Shadow - YES
</gallery>
}}
{{KV|ShadowMapLOD|intn=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}}
{{expand|title=Examples|
<br>
<gallery mode=packed heights=500px>
File:cLOD256.jpg| thumb | left | 510px | 256
File:cLOD512.jpg| thumb | left | 510px | 512
File:cLOD1024.jpg| thumb | left | 510px | 1024
</gallery>
}}
{{KV|ShadowFaceX|intn=ShadowFaceX|choices|Shadow Enabled for this Face ?
Determines whether the given side lighting will display shadows.
*0: Enabled
*1: Disabled}}
{{KV|ShadowFaceX_Minus|intn=ShadowFaceX_Minus|choices|Shadow Enabled for this Face ?
Determines whether the given side lighting will display shadows.
*0: Enabled
*1: Disabled}}
{{KV|ShadowFaceY|intn=ShadowFaceY|choices|Shadow Enabled for this Face ?
Determines whether the given side lighting will display shadows.
*0: Enabled
*1: Disabled}}
{{KV|ShadowFaceY_Minus|intn=ShadowFaceY_Minus|choices|Shadow Enabled for this Face ?
Determines whether the given side lighting will display shadows.
*0: Enabled
*1: Disabled}}
{{KV|ShadowFaceZ|intn=ShadowFaceZ|choices|Shadow Enabled for this Face ?
Determines whether the given side lighting will display shadows.
*0: Enabled
*1: Disabled}}
{{KV|ShadowFaceZ_Minus|intn=ShadowFaceZ_Minus|choices|Shadow Enabled for this Face ?
Determines whether the given side lighting will display shadows.
*0: Enabled
*1: Disabled}}
{{KV|NearZ|intn=NearZ|float|NearZ used by shadowmap camera for this light.
Determines distance at which light source will cast shadows.}}
{{KV|DepthBias|intn=DepthBias|float|DepthBias - Offset added to depth values in shadowmaps.}}
{{expand|title=Examples|
<br>
<gallery mode=packed heights=500px>
File:DepthBias1.jpg| thumb | left | 510px | DepthBias - 0.0002
File:DepthBias2.jpg| thumb | left | 510px | DepthBias - 0.002
File:DepthBias3.jpg| thumb | left | 510px | DepthBias - 0.0000000002
</gallery>
}}
{{KV|SlopeDepthBias|intn=SlopeDepthBias|float|Slope Depth Bias - For surfaces having aliasing due to steep angles with light}}.
{{expand|title=Examples|
<br>
<gallery mode=packed heights=500px>
File:SlopeDepthBias1.jpg| thumb | left | 510px | SlopeDepthBias - 0.2
File:SlopeDepthBias2.jpg| thumb | left | 510px | SlopeDepthBias - 8
File:SlopeDepthBias3.jpg| thumb | left | 510px | SlopeDepthBias - 20
</gallery>
}}
{{KV|NormalBias|intn=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.}}
{{expand|title=Examples|
<br>
<gallery mode=packed heights=500px>
File:cNB1.jpg| thumb | left | 510px | NormalBias - 1
File:cNB2.jpg| thumb | left | 510px | NormalBias - 5
File:cNB3.jpg| thumb | left | 510px | NormalBias - 10
</gallery>
}}
{{bug|Numbers lower than 0.8 can cause huge graphics problems.}}
{{expand|title=The bug example|
<br>
<gallery mode=packed heights=720px>
File:cNormalBiasBug.gif| frame | NormalBias - 0
</gallery>
}}
{{KV|ShadowRadius|intn=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.
{{expand|title=Examples|
<br>
<gallery mode=packed heights=500px>
File:cBLUR1.jpg| thumb | left | 510px | ShadowRadius - 0.0001
File:cBLUR2.jpg| thumb | left | 510px | ShadowRadius - 1
File:cBLUR3.jpg| thumb | left | 510px | ShadowRadius - 5
</gallery>
}}
{{KV|Enable Texture Light|intn=bTexLight|choices|Enable Texture Ligh.
Determines whether the given light source uses .vtf texture from game files (just like {{ent|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}}
{{expand|title=Examples|
<br>
<gallery mode=packed heights=410px>
File:cTEDisabled.jpg |Disabled
File:cTEEnabled.jpg |Enabled
File:CLightcookie_battery.jpg |Texture that use batteries.
</gallery>
}}
{{tip|Lightcookie texture works just like static cubemap textures. Follow [[$envmap#Creating_a_custom_static_cubemap_texture|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.}}
{{KV|Texture name for TexLight|intn=texName|string|Determines which texture will use light source. It use .vtf files, not .vmt.}}
{{KV|.Enable Prop Only Mode|intn=bNegLight|choices|Enable Prop Only Mode.
{{todo|Document what it does.}}
*0: Disabled
*1: Enabled}}
{{KV|LightnGodRayMode|intn=LightnGodRayMode|choices|0:Light 1:Godrays 2:Both Light and GodRays.
*0: Light
*1: Godrays
*2: Both Light and GodRays}}
{{expand|title=Examples|
<br>
<gallery mode=packed heights=500px>
File:cGAL1.jpg| thumb | left | 510px | LightnGodRayMode - Light
File:cGAL2.jpg| thumb | left | 510px | LightnGodRayMode - Godrays
File:cGAL3.jpg| thumb | left | 510px | LightnGodRayMode - Both Light and GodRays
</gallery>
}}
{{note|The game will think that the godrays is used if choice is <code>Godrays</code> or <code>Both Light and GodRays</code>, even if godrays is turned off.}}
{{KV|EnableGodRays|intn=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.}}
<br>
<gallery mode=packed heights=180px>
File:cRaysLimit.jpg| thumb | left | 510px | If you'll try to enable forty-first light point with enabled Godrays.
</gallery>
{{note|Godrays are draw and process even with closed [[areaportals]].}}
{{expand|title=Example|
<br>
<gallery mode=packed heights=710px>
File:cRaysDraw.jpg| thumb | left | 510px | 
</gallery>
}}
{{KV|Density|intn=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.}}
{{expand|title=Examples|
<br>
<gallery mode=packed heights=710px>
File:cDEN1.gif| thumb |Density - 1.0
File:cDEN2.gif| thumb |Density - 2.0
File:cDEN3.gif| thumb |Density - 0.5
</gallery>
}}
{{KV|Weight|intn=Weight|float|Weight Controls the intensity of volumetric shadow. Blocking of rays by geometry. Good values to start from: 0.1 - 10.0.}}
{{expand|title=Examples|
<br>
<gallery mode=packed heights=710px>
File:cWEI10.gif| thumb |Weight - 1.0
File:cWEI2.gif| thumb |Weight - 2.0
File:cWEI3.gif| thumb |Weight - 5.0
</gallery>
}}
{{KV|Decay|intn=Decay|float|Decay NOT being used.}}
{{todo|Document what does it change.}}
{{KV|Exposure|intn=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.}}
{{expand|title=Examples|
<br>
<gallery mode=packed heights=710px>
File:cEXP1.jpg| thumb |Exposure - 1.00
File:cEXP2.jpg| thumb |Exposure - 10.0
File:cEXP3.jpg| thumb |Exposure - 0.10
</gallery>
}}
{{KV|DistFactor|intn=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.}}
{{expand|title=Examples|
<br>
<gallery mode=packed heights=710px>
File:cDIST1.gif| thumb |DistFactor - 1.00
File:cDIST2.gif| thumb |DistFactor - 10.0
File:cDIST3.gif| thumb |DistFactor - 50.0
</gallery>
}}
{{KV|DiskRadius|intn=DiskRadius|float|Radius of Disk/circle of sun in texturespace. 1.0 will be full screen 0.5 is half screen etc.}}
{{expand|title=Examples|
<br>
<gallery mode=packed heights=710px>
File:cDISKR1.jpg| thumb |DiskRadius - 0.02
File:cDISKR2.jpg| thumb |DiskRadius - 0.10
File:cDISKR3.jpg| thumb |DiskRadius - 1.00
</gallery>
}}
{{Note|With 0 - will not render.}}
{{KV|ColorInner|intn=ColorInner|color255| This is the color of the inner circle.}}
{{expand|title=Examples|
<br>
<gallery mode=packed heights=710px>
File:cCRAYS1.jpg| thumb |255 0 0 255
File:cCINN2.jpg| thumb |0 255 0 255
File:cCINN3.jpg| thumb |0 0 255 255
</gallery>
}}
{{Note|Unlike lighting - brightness of inner depends on fourth number which can be written here.}}
{{KV|ColorRays|intn=ColorRays|color255| This is the color of the rays.}}
{{expand|title=Examples|
<br>
<gallery mode=packed heights=710px>
File:cCRAYS1.jpg| thumb |0 0 255 120
File:cCRAYS2.jpg| thumb |0 255 0 120
File:cCRAYS3.jpg| thumb | 255 0 0 120
</gallery>
}}
{{Note|Unlike lighting - brightness of rays depends on fourth number which can be written here.}}
{{KV|GodRaysType|intn=GodRaysType|choices|GodRaysType.
*0: Normal
*1: Fancy}}
{{expand|title=Examples|
<br>
<gallery mode=packed heights=710px>
File:cGodRaysTypeNormalAlt.jpg| thumb | Normal
File:cGodRaysTypeFancyAlt.jpg| thumb | Fancy
</gallery>
}}
{{KV|DiskInnerSizePercent|intn=DiskInnerSizePercent|float|Used only in Fancy Gaphics Mode. Disk inner circle radius [[=]] DiskRadius * DiskInnerSizePercent.}}
{{expand|title=Examples|
<br>
<gallery mode=packed heights=710px>
File:cDISKIR1.jpg| thumb |DiskInnerSizePercent - 0.75
File:cDISKIR2.jpg| thumb |DiskInnerSizePercent - 0.50
File:cDISKIR3.jpg| thumb |DiskInnerSizePercent - 0.99
</gallery>
}}
{{Note|With 0 - will not render.}}
{{KV|ColorOuter|intn=ColorOuter|color255|Used only in Fancy Mode. This is the color of the outer circle.}}
{{expand|title=Examples|
<br>
<gallery mode=packed heights=710px>
File:cCRAYS1.jpg| thumb |0 255 0 255
File:cCOUT2.jpg| thumb |255 0 0 255
File:cCOUT3.jpg| thumb |0 0 255 255
</gallery>
}}
{{Note|Unlike lighting - brightness of outer depends on fourth number which can be written here.}}
{{KV|Ell_FR_ConstA|intn=Ell_FR_ConstA|float|This is fancy Godrays disk size.}}
{{Note|For fancy Godrays only.}}
{{expand|title=Examples|
<br>
<gallery mode=packed heights=500px>
File:C Ell_FR_ConstA1.jpg| thumb | left | 510px | 0.9
File:C Ell_FR_ConstA2.jpg| thumb | left | 510px | 5
File:C Ell_FR_ConstA3.jpg| thumb | left | 510px | 10
</gallery>
}}
{{KV|Ell_FR_ConstB|intn=Ell_FR_ConstB|float|This is fancy Godrays disk distortion.}}
{{Note|For fancy Godrays only.}}
{{expand|title=Examples|
<br>
<gallery mode=packed heights=500px>
File:C Ell_FR_ConstB1.jpg| thumb | left | 510px | 0.1
File:C Ell_FR_ConstB2.jpg| thumb | left | 510px | 1
File:C Ell_FR_ConstB3.jpg| thumb | left | 510px | 10
</gallery>
}}
{{KV|EEll_SR_ConstA|intn=EEll_SR_ConstA|float|This is fancy Godrays disk hole size.}}
{{Note|For fancy Godrays only.}}
{{expand|title=Examples|
<br>
<gallery mode=packed heights=500px>
File:Ell_SR_ConstA1.jpg| thumb | left | 510px | 0.9
File:Ell_SR_ConstA2.jpg| thumb | left | 510px | 5
File:Ell_SR_ConstA3.jpg| thumb | left | 510px | 20
</gallery>
}}
{{KV|EEll_SR_ConstB|intn=EEll_SR_ConstB|float|This is fancy Godrays disk hole distortion.}}
{{Note|For fancy Godrays only.}}
{{expand|title=Examples|
<br>
<gallery mode=packed heights=500px>
File:EEll_SR_ConstB1.jpg| thumb | left | 510px | 0.1
File:EEll_SR_ConstB2.jpg| thumb | left | 510px | 5
File:EEll_SR_ConstB3.jpg| thumb | left | 510px | 20
</gallery>
}}
{{KV|Ell_RRF_ConstA|intn=Ell_RRF_ConstA|float|This is fancy Godrays inner size.}}
{{Note|For fancy Godrays only.}}
{{expand|title=Examples|
<br>
<gallery mode=packed heights=500px>
File:C Ell_RRF_ConstA1.jpg| thumb | left | 510px | 0.9
File:C Ell_RRF_ConstA2.jpg| thumb | left | 510px | 1.5
File:C Ell RRF ConstA3.jpg| thumb | left | 510px | 42
</gallery>
}}
{{KV|Ell_RRF_ConstB|intn=Ell_RRF_ConstB|float|This is fancy Godrays inner distortion.}}
{{Note|For fancy Godrays only.}}
{{expand|title=Examples|
<br>
<gallery mode=packed heights=500px>
File:C Ell RRF ConstB1.jpg| thumb | left | 510px | 0.1
File:C Ell RRF ConstB2.jpg| thumb | left | 510px | 0.7
File:C Ell RRF ConstB3.jpg| thumb | left | 510px | 5.0
</gallery>
}}
{{KV|RotSpeed|intn=RotSpeed|float|}}
Determines rotating speed of fancy rays, 0 - don't rotate, negative number - will rotate to left.
{{Note|For fancy Godrays only.}}
{{expand|title=Examples|
<br>
<gallery mode=packed heights=710px>
File:cRS1.gif| thumb | left | 510px | RotSpeed - 3.14
File:cRS2.gif| thumb | left | 510px | RotSpeed - 0
File:cRS3.gif| thumb | left | 510px | RotSpeed - 40
</gallery>
}}
{{KV|RotPatternFreq|intn=RotPatternFreq|float|}}
Determines count of fancy rays in frame, with negative number will deny RotSpeed +/- effect.
{{Note|For fancy Godrays only.}}
{{expand|title=Examples|
<br>
<gallery mode=packed heights=710px>
File:cRPF1.gif| thumb | left | 510px | RotPatternFreq - -40
File:cRPF2.gif| thumb | left | 510px | RotPatternFreq - -4
</gallery>
}}
{{KV|RenderInWorldSpace|intn=m_bEnableWorldSpace|choices|Disables disks if this enabled.|
*0: Disabled
*1: Enabled}}
{{KV|m_fAlphaDiskInner|intn=m_fAlphaDiskInner|float|}}
{{KV|m_fAlphaDiskOuter|intn=m_fAlphaDiskOuter|float| }}
{{KV|UseToneMapRays|intn=m_bUseToneMapRays|choices|
*0: Enabled
*1: Disabled}}
{{KV|UseToneMapDisk|intn=m_bUseToneMapDisk |choices|
*0: Enabled
*1: Disabled}}
{{KV|ShadowPass_Brush|intn=m_bSRO_Brush|choices|Do we want to Render Brushes in shadow passes for this light?
*0: YES
*1: NO}}
{{KV|ShadowPass_StaticProp|intn=m_bSRO_StaticProp|choices|Do we want to Render StaticProps in shadow passes for this light?
*0: YES
*1: NO}}
{{KV|ShadowPass_DynProp|intn=m_bSRO_DynProp|choices|Do we want to Render Dynamic Props in shadow passes for this light?
*0: YES
*1: NO}}
{{KV|ShadowPass_AlphaTest|intn=m_bSRO__Trans|choices|Do we want to Render AlphaTested Objects in shadow passes for this light?
*0: YES
*1: NO}}
{{KV|bUseOldFallOff|intn=bUseOldFallOff|choices|Enable old falloff similar to [[light]]/[[light_spot]].
*0: No
*1: Yes
|nofgd=1|deprecated=1}}
{{KV|falloffConstant|intn=falloffConstant|integer|Constant (work only if bUseOldFallOff enabled).|nofgd=1|deprecated=1}}
{{KV|falloffLinear|intn=falloffLinear|integer|Linear (work only if bUseOldFallOff enabled).|nofgd=1|deprecated=1}}
{{KV|falloffQuadratic|intn=falloffQuadratic|integer|Quadratic (work only if bUseOldFallOff enabled).|nofgd=1|deprecated=1}}
</div>
 
==Inputs==
{{IO|SetColorLight|param=color255|Change Light's Color value. Doesn't affect the godrays.}}
{{IO|SetIntensityForLight|param=float|Change Light's intensity value. Doesn't affect the godrays.}}
{{IO|TurnOnGodRays|param=void|Turn the Godrays on.}}
{{IO|TurnOffGodRays|param=void|Turn the Godrays off.}}
{{IO|TurnOn|param=void|Turn the light on.}}
{{IO|TurnOff|param=void|Turn the light off.}}
{{IO|Toggle|param=void|Toggle the light's current state.}}
{{I BaseEntity}}
 
==Outputs==
{{O BaseEntity|}}
 
==Shadow map slots==
Shadow map slots is how many lights with shadows you can have per level. There are 3 separate shadow map slots, <code>High</code> (for lights with <code>1024</code> value for <code>ShadowMap LOD</code> property), <code>Medium</code> (for lights with <code>512</code> value for <code>ShadowMap LOD</code> property) and <code>Low</code> (for lights with <code>256</code> value for <code>ShadowMap LOD</code> property).
 
In <code>High</code> and <code>Medium</code> you can have 48 separate shadow maps, for <code>Low</code> 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 <code>ShadowMap LOD</code> 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 <code>ShadowMap LOD</code> 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 <code>ShadowMap LOD</code> 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 <code>Kill</code> input. So, you can place triggers which will <code>Kill</code> lights that player can't see and spawn new lights via {{ent|point_template}} (uncheck the second flag for {{ent|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.
<gallery mode=packed heights=410px>
File:manyshadowslotsbugg.jpg| frame |The bug example.
</gallery>
 
It looks like you can workaround it if you will switch <code>ShadowMap LOD</code> 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]].
<gallery mode=packed heights=410px>
File:staticlight_0.jpg| frame |Areaportal is open.
File:staticlight_1.jpg| frame |Areaportal is closed.
</gallery>
===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.
<gallery mode=packed heights=410px>
File:stationlight_0.jpg| frame |Areaportal is open.
File:stationlight_1.jpg| frame |Areaportal is closed.
</gallery>
 
In some cases, this can be noticeable if dynamic model creates a large shadow.
<gallery mode=packed heights=410px>
File:Theboxshadow_0.jpg| frame |Areaportal hides the box, note that there is no shadow.
</gallery>
<gallery mode=packed heights=410px>
File:Theboxshadow_1.jpg| frame |Areaportal shows the box, now there is a shadow of the box.
</gallery>
<gallery mode=packed heights=410px>
File:thewireboxshadow_0.jpg| frame |Areaportal hides the box.
</gallery>
<gallery mode=packed heights=410px>
File:thewireboxshadow_1.jpg| frame |Areaportal shows the box.
</gallery>
 
===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.
<gallery mode=packed heights=410px>
File:dynlight_0.jpg| frame |Areaportal is open.
File:dynlight_1.jpg| frame |Areaportal is closed.
</gallery>
 
==Bugs/Limitations==
{{todo|make a TOC specifically for this box to make navigation easier}}
<!-- WIP TOC HERE:
<center>{{Expand|title=Table of Contents|1=<span style=color:white>'''Table of Contents'''</span><br>
;[[#Deferred_lighting_incorrect_work_with_.24translucent|Deferred lighting incorrect work with $translucecnt]]
}}</center>
-->
<div style="overflow:auto;height:850px;width:95%;background-color:rgba(38,38,38,85%);border-radius:5px;border:2px solid rgba(82,82,82,255);padding:5px">
====Deferred lighting have issues with transparency====
Deferred lighting is incompatible with transparency. In some cases, it shows one of the lighting layers applied to the color of the transparent texture.
 
This bug is currently available by default for [[VertexLitGeneric]] and [[Lightmapped_4WayBlend]], if they are using [[$translucent]] material parameter.
<br>
<gallery mode=packed heights=250px>
File:C BugHah.jpg| frame |No [[$translucent]]. Behind the wall placed lighting and some models with small room.
File:C BugDamn.jpg| frame |With [[$translucent]]. Now player see everything, but only what lighted.
</gallery>
<br>
<gallery mode=packed heights=250px>
File:firethinghaha.jpg| frame |An example with model.
</gallery>
The same happen if used [[$decal]] material parameter.
<br>
<gallery mode=packed heights=250px>
File:GbufferDecalBrush.jpg| frame |An example.
</gallery>
This problem also applies to brushes which don't use [[$translucent]], but which is a part of a [[func]] entity with a transparency brush (the only exception is {{ent|func_detail}}). This happen even if transparency used for shader that doesn't shows one of the lighting layers.
<br>
<gallery mode=packed heights=250px>
File:C BSFL1.jpg| frame |This sticker is brush, that is part of [[func_brush]], which uses glass as part of itself. Flashlight off.
File:C BSFL2.jpg| frame |This sticker is brush, that is part of [[func_brush]], which uses glass as part of itself. Flashlight on.
</gallery>
If a func entity or model uses [[render mode]] {{code|Glow}} (3) or {{code|World Space Glow}} (9) - they will show one of the lighting layers. This means that you can't use this renders to make your brush transparent, you will have to create a separate texture.
<br>
<gallery mode=packed heights=250px>
File:WSGAGFI.jpg| frame |Clear example. The box with fire extinguisher and brush uses the render modes.
</gallery>
Other render modes will have similar effect, but only for brushes.
<br>
<gallery mode=packed heights=250px>
File:RenderModesBuggyMine.gif| frame |Clear example.
</gallery>
Similar issue happen with [[overlays]]/[[decals]] on brushes with [[$translucent]].
<br>
<gallery mode=packed heights=350px>
File:C MS1.jpg| frame |Metal speaker is overlay that use [[$alphatest]], but lighting of the health charger visible anyway, because overlay pasted on the transparency window.
</gallery>
In some cases, use [[$alphatest]], if it'll give similar to [[$translucent]] resualts, with this your surface also will cast dynamic shadows.
<br>
<gallery mode=packed heights=250px>
File:C AF1.jpg| frame |[[$translucent]].
File:C AF2.jpg| frame |[[$alphatest]].
</gallery>
{{ModernConfirm|Is there more shaders with this issue ?}}
{{ModernConfirm|Is there more ways to get this bug ?}}
----
 
====Deferred lighting doesn't shows on transparency materials====
Very noticeable with shaders that doesn't shows one of the lighting layers applied to the color of the transparent texture. Properly works with [[$alphatest]].
<gallery mode=packed heights=250px>
File:LDSOTM_.jpg| frame |An example. Expected that you will see shadows from the ropes and the plastic road cone on the window.
File:LDSOTM_p2ce.jpg| frame |The same moment, but in {{p2ce|4}} (this game uses {{ent|env_cascade_light}} from {{csgo|4}}.)
</gallery>
----
 
====Flicker near light volume edges====
Often meeting strange clipping/flickering, strange bug that was in early stages of the game (this can be seen even in videos before new lights release in public). Somehow related to <code>Range</code> value, since changing its value halfway fixes this bug, because it move away the bugged area. With [https://store.steampowered.com/news/app/362890/view/4174347361777844150?l Necro Patch], this is fixed for {{ent|newLight_Spot}}.
<br>
<gallery mode=packed heights=350px>
File:cWC1.gif| frame |One of many examples.
File:cWC3.gif| frame |One of many examples.
</gallery>
----
 
====Brush polygons may clip deferred lighting====
Rare phenomenon, sometimes brush polygons clip deferred lighting, the reason that cause this is unknown. Can be easy fixed if divide invalid brush into two parts.
{{note|Most often happen if map used fast compile settings.}}
<br>
<gallery mode=packed heights=250px>
File:C BPl0.jpg| frame |One of examples (mat_wireframe 0).
File:C BPl1.jpg| frame |One of examples (mat_wireframe 1).
</gallery>
<br>
<gallery mode=packed heights=250px>
File:C BPb0.jpg| frame |One of examples (mat_wireframe 0).
File:C BPb1.jpg| frame |One of examples (mat_wireframe 1).
</gallery>
----
 
====Deferred lighting shines through [[nodraw]] texture====
Not a bug, but a pattern. Unfortunately, this cannot be controlled in any way, you should keep in mind this before paint [[nodraw]] to escape situations like in the gifs.
{{workaround|If your dynamic light source illuminates face that player never see - use cheap textures with low resolution and which don't use material shader parameters, a good solution would be tools/toolsblack or any [[UnlitGeneric]] texture.}}
<br>
<gallery mode=packed heights=350px>
File:cSLB1.gif| frame |Black Mesa - bm_c2a2a.
File:cSLB2.gif| frame |Black Mesa: Blue Shift - bs_c0m0c.
</gallery>
----
 
====Objects with [[refract]] shader self refract if illuminated by deferred render====
Objects with [[refract]] shader in their own refraction disable self, to escape some problems. However - objects with [[refract]] shader illuminated by deferred render refract self because of game can't tell the depth of objects because of the transparency, what you are see in the pictures is just the lighting layer applied to the color of transparency texture.
<br>
<gallery mode=packed heights=250px>
File:as_c3map01_1.jpg| frame |as_c3map01 - flashlight disabled, everything looks fine.
File:as_c3map01_2.jpg| frame |as_c3map01 - flashlight enabled, now this magnifying lamp refract self.
</gallery>
<br>
Similar issue happen if model with refraction behind wall with refraction.
<br>
<gallery mode=packed heights=250px>
File:RefractBugs_1.jpg| frame |Flashlight disabled, everything looks fine.
File:RefractBugs_2.jpg| frame |Flashlight enabled, now this wall show one of magnifying lamp deferred lighting layers.
</gallery>
{{workaround|Divide model into two separate parts, one should use only textures with refraction, the second without textures with refractions.}}
----
 
====[[Viewmodel]] illuminated by deferred render draw in [[refract]] shader====
Refract shader and [[Water_(shader)|Water]] shader take and refract player screen space without taking into account viewmodel. However - viewmodel illuminated by deferred render draw in refract shader because of game can't tell the depth of viewmodel because of the transparency, what you are see in the pictures is just the lighting layer applied to the color of transparency texture.
<br>
<gallery mode=packed heights=250px>
File:C DFS1Alt.jpg| frame |Clear example in test map, the hivehand illuminated by deferred render draw in the refract texture, plus it's completely discolored there..
File:C DFS2.jpg| frame |Black Mesa - bm_c4a1a.
File:C DFS3.jpg| frame |Black Mesa: Blue Shift - bs_c2m0a.
</gallery>
----
 
====<code>Motion Blur</code> blurring viewmodel lighting layer====
For some reason <code>Motion Blur</code> blurring viewmodel lighting layer, you can notice this when you just rotate camera.
<br>
<gallery mode=packed heights=550px>
File: cVLLBASUalt.gif| frame |An example.
</gallery>
----
 
====Strange "holes" when player's camera is at a great distance====
In some cases may will appear strange "holes" when player's camera is at a great distance. Strange bug that occurs quite rarely. It is affected by game resolution, for example in <code>bm_c4a1b1</code> this bug shows up well with a resolution wtih <code>1920x1080</code>, but with <code>3840x2160</code> the light source from the teleporter flickers, but does not form a hole.
{{ModernConfirm|Does it happen with [[newLight_Spot]] ?}}
{{workaround|Can be fixed with <code>NormalBias</code> value increasing.}}
<br>
<gallery mode=packed heights=350px>
File:C_BMSH42.jpg| frame |Example in bm_c4a1b1, the green teleporter light source starts to glitch when player move certain distance (crossbow zoom doesn't effect to this bug, unlike HEV zoom).
</gallery>
<br>
<gallery mode=packed heights=250px>
File:C_BMSH_1.jpg| frame |Black Mesa, map bm_c4a1b1. NormalBias - 1.
File:C_BMSH_2.jpg| frame |Black Mesa, map bm_c4a1b1. NormalBias - 5.
</gallery>
<br>
<gallery mode=packed heights=250px>
File:C_BMOBSH_1.jpg| frame |Black Mesa: Black Ops - Restored, bmops_map_2. NormalBias - 0.5.
File:C_BMOBSH_2.jpg| frame |Black Mesa: Black Ops - Restored, bmops_map_2. NormalBias - 1.5.
</gallery>
----
 
====Gbuffer doesn't draw while cubemaps is building====
Deferred lighting, godrays, xog and other gbuffer effects doesn't draw while cubemaps is building. This means that you will not see any lighting from new lights in cubemaps.
<br>
<gallery mode=packed heights=250px>
File:GDDWCiB_1.jpg| frame |This is what see player.
File:GDDWCiB_2.jpg| frame |This is what shows cubemap reflection (note the reflection on the [[weapon_rpg|RPG]] doesn't shows any lighting from this crystal).
File:GDDWCiB_3.jpg| frame |This is how it looks while cubemaps is building.
</gallery>
----
 
====New lights doesn't work with [[3D Skybox]]====
Don't use new lights in your 3D skyboxes, none of them will work at all.
<br>
<gallery mode=packed heights=350px>
File:C NLDW3DS.jpg| frame |An example. We see that deferred lighting and Godrays works fine, but 3D Skybox doesn't draw both.
</gallery>
----
 
====Materials reload cause new lights disappear====
Only for new lights which uses shadows. This issue happen when you open Hammer while game is opened, when you disable speculars with <code>mat_specular 0</code>, when you reload all matelias with <code>mat_reloadallmaterials</code>, e. t. c. Can be fixed with save reload.
<br>
<gallery mode=packed heights=250px>
File:DLDAMR_1.jpg| frame |Before <code>mat_reloadallmaterials</code>.
File:DLDAMR_2.jpg| frame |After <code>mat_reloadallmaterials</code>.
</gallery>
----
 
====Gbuffer incorrect work with cloak====
Cloak is a material shader parameter for <code>VertexLitGeneric</code> shader, female assassins uses it to make self transparent when they need it. Godrays all time fully render through them, same for deferred lighting and xog, even
<br>
<gallery mode=packed heights=250px>
File:C_ASSASINRAYS.jpg| frame |bm_c2a3c, the sun's rays are not cut off despite the fact that she is completely untransparent right now.
File:C_ASSASINDF.jpg| frame |bm_c2a3c, she is completely untransparent, but we still can see one of lighting layers.
</gallery>
----
 
====Deferred lighting incorrect work with [[Customize Character]] window====
For some reason [[Customize Character]] take player's screen, inserts it into character preview window and show one of deferred lighting layers.
<br>
<gallery mode=packed heights=350px>
File: BruhCharacter.jpg| thumb |An example with zombie scientist model.
</gallery>
----
 
====Deferred lighting does not draw with <code>-tools</code>====
If you don't use <code>Full Screen</code> - deferred lighting will not draw.
<br>
<gallery mode=packed heights=250px>
File:DLDNDWT_1.jpg| frame |In <code>Full Screen</code>.
File:DLDNDWT_2.jpg| frame |Out <code>Full Screen</code>.
</gallery>
----
 
====Broken water transition in [[viewmodel]]====
You can note the broken lighting transition when you go into water (only if water is world geometry and uses refractions).
<gallery mode=packed heights=450px>
File:watertransbug.gif| frame |An example.
</gallery>
----
 
====Godrays incorrect work with [[$translucent]]====
Godrays (also disk) all time fully rendering through textures with [[material]] [[shader]] parameter [[$translucent]], because of this you will see unexpected results like in the picture (the same issue happen if used material shader parameter [[$decal]]). Disable godrays when you need or use [[$alphatest]] if it'll give resualts similar to [[$translucent]]. You also can try use some other tricks to escape this problem.
<br>
<gallery mode=packed heights=250px>
File:cGodraysTransBug.jpg| frame |Bug example in bm_c1a3c.
File:cGodraysTransBugSide.jpg| frame |Sign from other side.
</gallery>
----
 
====Godrays fully draws through water====
Deferred lighting doesn't fully draws through water, unlike godrays.
<br>
<gallery mode=packed heights=350px>
File:C C3m0c.jpg| frame |Black Mesa: Blue Shift - bs_c3m0c.
</gallery>
----
 
====Godrays leaks====
Due to way how godrays works, in some cases you can note the leaking. Can be drawn even through walls, appearing where they should not be visible at all. Disable rays with triggers or minimize effect.
<br>
<gallery mode=packed heights=450px>
File:BmsCodeWeNEED(Someone_from_Valve_please_allow_to_BM_devs_to_publish_the_game_code_to_make_possible_for_us_fix_this_bugs_please).gif| frame |An example.
</gallery>
----
 
====Godrays doesn't process [[viewmodel]] if player is underwater====
[https://store.steampowered.com/news/app/362890/view/4174347361777844150?l Necro Patch] fixed the old issue with godrays that wasn't processing models above water. This fix caused new issue, now godrays doesn't process [[viewmodel]] if player is underwater. Doesn't happen with [[func_water]] and [[func_water_analog]].
<br>
<gallery mode=packed heights=250px>
File:GDPVIPUU_0.jpg| frame |Player is not underwater.
File:GDPVIPUU_1.jpg| frame |Player is underwater.
</gallery>
----
 
====Godrays can't be displayed in monitors and reflections====
Godrays is post process effect that depends on player screen. That means that they can't water reflections or monitors can't show it.
{{note|Godrays for monitors and reflections was added with [https://store.steampowered.com/news/app/362890/view/4174347361777844150?l Necro Patch]. However, this is disabled in the code by default, because it didn't work correctly. There is no way to enable this feature.}}
<br>
<gallery mode=packed heights=250px>
File:C GodraysInWater.jpg| frame |An example.
File:C GodraysInMonitor.jpg| frame |An example.
</gallery>
----
 
====Godrays doesn't refracting by refract shader and fully draws through====
Unlike deferred lighting, godrays doesn't refracting by refract shader, also fully draws through.
<br>
<gallery mode=packed heights=350px>
File:AnGodexample.gif| frame |An example.
</gallery>
----
 
====Moving lights with shadows are buggy====
In some cases, your attached lights may have buggy shadows if parent is moving.
<br>
<gallery mode=packed heights=350px>
File:CSDAIWALOLWS1.gif| frame |An example.
File:cDLWSMB2.gif| frame |bm_c1a1c.
</gallery>
Can be partially fixed with <code>NormalBias</code> value increasing. Also, if your moving light is just simple decoration (the puzzle crystals from [[Xen]] is great example) - highly recommended to leave shadows disabled to save limits and performance.
<gallery mode=packed heights=350px>
File:MLWSAR1.jpg| frame |<code>NormalBias</code> - 1
File:MLWSAR2.jpg| frame |<code>NormalBias</code> - 10
</gallery>
----
 
====Shadows incorrect work with [[newLight_Point]] cube edges====
Because [[newLight_Point]] is cube technically - we get shadows incorrect behavior with edges of this cube, this cause their serious distortion a.k.a. clipping. You only can minimize this if set shadow quality to maximum.
<br>
<gallery mode=packed heights=350px>
File:cC SIWENCE0.jpg| frame |One of many examples.
File:Ccc_SIWENCE1.jpg| frame |One of many examples.
File:cC SIWENCE_2.jpg| frame |One of many examples.
</gallery>
----
 
====Shadows have noise====
This noise appeared with [https://store.steampowered.com/news/app/362890/view/4174347361777844150?l Necro Patch], greatly spoils blurry shadows. The only workaround is to make <code>ShadowRadius</code> value very low, but then the shadows will become extremely sharp and stepped.
<br>
<gallery mode=packed heights=450px>
File:20240320202853_1.jpg| frame |An example.
</gallery>
----
 
====Shadows doesn't appear immediately after reload====
After game save and load shadows don't appear for short time, maybe it has something to do with caching. This appearance duration may vary depending on power of user PC and how much of lights with enabled shadows are turned on at level, but in any case user will get this issue even with most powerful PC.
{{workaround|Enable in [[worldspawn]] settings <code>Level Fade In</code> to hide this problem, this setting also will hide some other issues with loads that avaible in {{bms|4}}.}}
<br>
<gallery mode=packed heights=450px>
File:cSDAIAR1.gif| frame |With no <code>Level Fade In</code>. It seems like the shadows flicker, which makes it unpleasant for eyes.
File:cSDAIAR2.gif| frame |With <code>Level Fade In</code>. Everything looks fine.
</gallery>
----
 
====Shadows don't appear immediately with a lot of lights with shadows====
If your level use a lot of lights with shadows - shadows from enabling lights will not appear immediately, this happens if light source was disabled and if player's camera did not see this light source enabled initially.
{{workaround|Before turning on light, set the intensity for light (via <code>SetIntensityForLight</code> input) to 0, then turn on light source and set the intensity to the desired value with delay of 0.5 seconds. Also, {{command|nr_shadow_max_passes_per_frame}} set to 25 can help in some cases.}}
<br>
<gallery mode=packed heights=450px>
File:cSDAIWALOLWS1alt.gif| frame |An example.
File:cSDAIWALOLWS2.gif| frame |bm_c2a1a.
</gallery>
----
====Shadows low passes per frame if used a lot of lights with shadows====
Sometimes many lights with shadows sets low values for {{command|nr_shadow_max_passes_per_frame}} cvar. This cause shadows to be looking a lot less natural.
{{workaround|Very easy to fix with {{ent|point_servercommand}}, just place {{ent|logic_timer}} which will fire {{command|nr_shadow_max_passes_per_frame|28}} command each 2 seconds.}}
<br>
<gallery mode=packed heights=420px>
File:shadowpascom.gif| frame |nr_shadow_max_passes_per_frame - 16
File:shadowpascom2.gif| frame |nr_shadow_max_passes_per_frame - 28
</gallery>
----
 
====Viewmodel doesn't support self-shadowing with deferred ligths====
Unlike cascade shadows - viewmodel doesn't support self-shadowing with deferred ligths. Not a bug, but this is not what you expect from real life, it also isn't so with [[env_projectedtexture]].
<br>
<gallery mode=packed heights=250px>
File:C CSMSF.jpg| frame |Here you can see how one of gluon gun switches create shadow that fall on other part of gun.
File:C DFSF.jpg| frame |Light spot illuminates gluon gun, but lighting just ignore viewmodel and fully shine through, although only the side of the gun should be light.
</gallery>
----
 
====Weapons dynamic light incorrect work with damaged [[func_breakable_surf]]====
For some reason weapons dynamic light can illuminate damaged [[func_breakable_surf]] even if position of it very far from position of damaged [[func_breakable_surf]].
{{ModernConfirm|Is there a way to fix this?}}
<br>
<gallery mode=packed heights=450px>
File:cAnSexample.gif| frame |An example.
</gallery>
----
<br>
</div>
 
== See also ==
* [[New Lights Editor]]
* {{ent|newLight_Spot}}
* {{ent|newLight_Dir}}
* {{ent|NewLights_settings}}
* {{ent|godrays_settings}}
* {{ent|env_cascade_light}}
* [[New_Specular|New Specular]]
* [[newxog_volume]]
* [[Lighting]]
* [[Adding Light]]
* [[Intermediate Lighting]]
* [[Advanced Lighting]]
* [[Effect flags]] (dynamic light effects)
* [[Tool textures]] (for Block light)
* [https://chetanjags.wordpress.com/2023/07/18/blackmesa-xenengine-part-4-lighting-shadows/ BlackMesa XenEngine: Part 4 – Lighting & Shadows] (page from Black Mesa developer about new lights)
* [https://chetanjags.wordpress.com/2023/07/11/blackmesa-xenengine-part2-how-a-frame-is-rendered/ BlackMesa XenEngine: Part2 – How a Frame is Rendered] (page from Black Mesa developer about how a frame rendered, include Godrays.)
* [https://chetanjags.wordpress.com/2022/06/01/blackmesa-xenengine-part1-a-heavily-modified-source-engine/ BlackMesa XenEngine: Part1 – Heavily Modified Source Engine] (page from Black Mesa developer about Black Mesa engine, better known as [[Xengine]])
{{todo|Investigate and document some keyvalues and functions. Clean up english. Add more issues if you'll find.}}

Revision as of 19:29, 15 July 2024

Note.pngNote:Archived rest of page history of page NewLight Point
Icon-Important.pngImportant:These pages are linked often from page history logs so Special:WhatLinksHere will not show anything.