From Valve Developer Community
Revision as of 20:33, 23 June 2012 by Rozzy85 (talk | contribs)
Jump to: navigation, search

The $surfaceprop command links the surface of either a material or model to a set of physical properties, including:

  • What sounds are emitted during collisions
  • What effects are emitted when the surface is shot
  • Mass, buoyancy, bounciness...
  • The effect of the surface on nearby sounds (reverberation, echo, absorption...)


Syntax is the same for both models and materials:

$surfaceprop <name>

Names are defined in <game>\scripts\surfaceproperties_manifest.txt (and the files it references). For a list of Valve's stock props, see Material surface properties.

NOTE: In Left 4 Dead, it appears there is a quirky problem with the brick material surface property relating to bullet decals. Specifically, Func_breakable brushes using ANY of the brick textures (those supplied in L4D) do not show bullet decals correctly. In addition, bullet decals on all brick textures, save for urban_brickwall03a, will virtually disappear when they are in light, for example, when you shine the player flashlight on them. This problem also exists in the Valve-created, survival map Last Stand (on the breakable brick wall housing the room where the event is started.) It is unknown whether this issue will be fixed, or if there are any workarounds using settings currently available. If you're OK with the bullet decals not looking quite right, and various audio and visual effects being inappropriate, you can duplicate and rename the brick texture's vtf and vmt. Then, open up the vmt and change the material type for its $suface_prop to something like sheetrock or dirt.

In materials

  • $surfaceprop is not linked to any particular shader, so can be used at any time.
  • Only brush based shaders required this parameter. A common misconception is that this parameter is required within the materials used by models. It will simply be ignored by the shader and is not required. $surfaceprop must always be defined within the collision property of the QC file if anything other than the default is to be used.

In models