prop_static is a internal point entity available in all Source games. It is used to cheaply add a model to the world. It cannot move, animate, or accept input (with the limited exception of
$treesway). In fact, it doesn't exist as an entity after the map has been compiled. The vast majority of models in a typical map are
prop_static will collide with other objects assuming it has a collision mesh, and, unlike all other model entities, can be lit per-vertex and cast shadows onto lightmaps.
Note:In Source 2013 Multiplayer and Garry's Mod, static props can use lightmaps using the static prop's UVs. They come with the same limitations as per-vertex lit props, and cannot be used on models with bump maps.
Warning:Models use the same UVs for lightmaps as $basetexture; as such, lightmapping on models with overlapping or tiling UVs may not appear as intended! Warning:Lightmaps for models with multiple materials do not compile properly in VRAD![Clarify] Warning:Model lightmaps generated with VRAD are compiled as RGBA8888, which can result in noticeable color banding when brightly lit in HDR mode. Workaround:
Note:This issue may also appear when placing any light source too close to a surface. Warning:Models using $bumpmap cannot receive lightmaps, they will fall back to vertex-lighting.
Note:There is an in-engine check that confirms whether or not the $bumpmap parameter is defined for a material, a custom shader cannot simply use both as there are a dozen technicalities that have to be overcome.
If $bumpmap or $phong is defined, the engine will not send the lightmap data to the shader.
This in-engine check also exists for $phong, however getting around the issue is more tricky. The default value of the integer parameter will be 0 even if not set in the vmt. Thus making $phong always be defined in a way.
For $bumpmap, a workaround for this is to use a differently named parameter. ( $NormalTexture ) to get the normal map and undefining $bumpmap.
However no static lighting data can be received by the shader, if the $bumpmap parameter is not set to anything. This refers to lights that are not named and are not inherently dynamic.
This may be prefered as the static light information is ALREADY prebaked in the lightmap, however it means you cannot receive direction information from the lights.
No light direction means no bumped lighting from the lightmap. Aka no specular highlights.
A fix for this would be modifying VRAD to spit out a lightmap that is *2 the size on the U axis and then storing an average light direction there or doing some other smart technique to 'memorize' light directions.
prop_static does not support selectable
$bodygroup submodels (although it does support selectable
$texturegroup skins); only the first one will be used. Despite this, VRAD will generate lightmap shadows from all submodels present in the MDL! (tested in )
Workaround: Do one of the following:
- Compile a separate model for each desired variation (cheaper, better lighting)
prop_dynamic (easier, less file duplication)
In order to enforce consistency of behavior, models with embedded physics data cannot be
prop_static. Use the Hammer Model Browser's info tab to check for support.
Workaround: This is not an engine limitation, but rather an arbitrary restriction imposed by the compile tools, and can be bypassed with a modified VBSP, such as VBSP prop_static fix.
- How the prop should interact with other objects.
- Not solid
- Use bounding box
- Use VPhysics (default)
Note:Using this setting on models without a collision mesh will cause the engine to throw a warning upon loading the map. If you see such a warning, reset the collision of all props using the noted model to one of the other two choices.
- Screen Space Fade
- If enabled, the prop will fade out based on how many screen pixels it covers. The start and end fade distances come to represent the pixels that the prop covers at the start and end of its fade when this is enabled.
- Lighting Origin
info_lighting from which to sample lighting (instead of the model's origin). Disables per-vertex lighting.
- Disable Vertex lighting
- Prop will be lit uniformly with a lighting value sampled from its origin. Enable this if the entity is not shadowed by another object.
- Disable Self-Shadowing with vertex lighting
- When vertex lighting is enabled, prevent the geometry from self-shadowing (casting shadows onto itself).
- Ignore surface normal for computing vertex lighting
- When vertex lighting is enabled, ignore the surface normal of faces when calculating the vertex lighting.
Tip:Useful for thin, translucent objects such as leaves on foliage props.
(renderamt) <integer> (in all games since )
- Alpha of the fade, where 0 is fully transparent and 255 is fully opaque.
- Render Color (R G B)
(rendercolor) <color255> (in all games since )
- Tint the model with this color.
- Generate (and use) lightmaps for this static prop
(generatelightmaps) <boolean> (only in ) (also in )
- Generate a lightmap for this prop. Requires
-StaticPropLighting to be enabled in VRAD. For more information, visit tf2maps.net.
Note:Lightmapping can be also faked on static props using the Modulate shader in all games, although syncing the lighting can be difficult.
Bug: This setting doesn't work on models with multiple skins. Warning:Several caveats and limitations; see note and warnings above.
- Lightmap Resolution X
(lightmapresolutionx) <integer> (only in ) (also in )
- The resolution of the generated lightmap in the X (or U) direction. (Only used if Generate Lightmaps is Yes.)
- Lightmap Resolution Y
(lightmapresolutiony) <integer> (only in ) (also in )
- The resolution of the generated lightmap in the Y (or V) direction. (Only used if Generate Lightmaps is Yes.)
- Enable Bounced Lighting
(enablelightbounce) <boolean> (only in )
- Whether VRAD should create indirect lighting from this prop.
- Disable Prop Combine
(preventpropcombine) <boolean> (only in )
- Prevent this static prop from combining with any other static props in vbsp.
- Uniform Scaling
(uniformscale) <float> (only in )
- Evenly scales a given model along the X Y Z axis.
Bug:In Hammer, undoing/redoing any changes (whether they are slight unit movements or scale changes) will result in the prop appearing "normal" sized in the 3D Textured Viewport (the model only appears normal sized and the value given is still shown upon reload of the VMF).
(targetname) <targetname> (only in )
- The name that
ship_base_interaction/postcompile entities refer to this entity by.
- Start Fade Dist
- Distance at which the prop starts to fade.
- End Fade Dist
- Max fade distance at which the prop is visible.
- If start fade is <0, the prop will disappear instantly when end fade is hit.
- If end fade is <0, the prop won't disappear at all. (This is the default behavior.)
- The values will scale appropriately if the prop is in a 3D Skybox.
- Fade Scale
- If you specify so in
worldspawn, or if the engine is running below DirectX 8 (DX7 in ), props will fade out even if the fade distances above aren't specified. This value gives you some control over when this happens: numbers smaller than 1 cause the prop to fade out at further distances, while those greater than 1 cause it to fade out at closer distances. Using 0 turns off the forced fade altogether. See also the QC command
- Minimum DX Level
(mindxlevel) <choices> (removed since )
- The entity will not exist if the engine is running outside the given range of DirectX Versions.
Warning:If these are used, the object may break when the user switches their DirectX settings.
- Maximum DX Level
(maxdxlevel) <choices> (removed since )
- Minimum Effect Details Level
(mincpulevel) <choices> (in all games since )
- Maximum Effect Details Level
(maxcpulevel) <choices> (in all games since )
- Don't render for players with Effect Details levels that exceed the minimum or maximum.
- 0: Default ("Low" for
mincpulevel, "High" for
- 1: Low
- 2: Medium
- 3: High
Note:The keys' names are because of the
cpu_level command, the command Effect Details uses.
- Minimum Shader Details Level
(mingpulevel) <choices> (in all games since )
- Maximum Shader Details Level
(maxgpulevel) <choices> (in all games since )
- Don't render for players with Shader Details levels that exceed the minimum or maximum.
- 0: Default ("Low" for
mingpulevel, "Very High" for
- 1: Low
- 2: Medium
- 3: High
- 4: Very High
Note:The keys' names are because of the
gpu_level command, the command Shader Details uses.
- Pitch Yaw Roll (Y Z X)
- 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.
Error! prop_static using model "[model]", which must be used on a dynamic entity (i.e. prop_physics). Deleted.
The prop is not compatible to be used as
prop_static. You need to use
prop_dynamic_override instead, or
prop_physics if you want it to have physics.
If it's your custom model:
- Either your model is missing
$staticprop or there is no
allowstatic 1 in the
prop_data QC file.
- If for some reason your model located incorrectly, check declared bone name in
$definebone of a model; it should be without any slashes. Also check position there, values should be zeroed.