$surfaceprop: Difference between revisions
Jump to navigation
Jump to search
Bug:In
Counter-Strike: Source, not including a
Workaround:Use $surfaceprop "default".
Bug:
Left 4 Dead does not display bullet decals properly on brick surfaces. If you're okay with the decals and visual effects being inappropriate, you can change the
Note:This has been fixed in
Left 4 Dead 2.
(→Syntax: confirmed, it has been fixed in l4d2) |
SirYodaJedi (talk | contribs) (→In Models: seems to use both?) |
||
| (One intermediate revision by one other user not shown) | |||
| Line 9: | Line 9: | ||
* The effect of the surface on nearby sounds (reverberation, echo, absorption...) | * The effect of the surface on nearby sounds (reverberation, echo, absorption...) | ||
{{bug|{{css| | {{bug|In {{css|4}}, not including a <code>$surfaceprop</code> in a vmt for brushes will cause the material to take on the sound (and perhaps the other properties as well) of whatever the last material that was interacted with which did have a $surfaceprop defined. | ||
{{workaround|Use {{mono|$surfaceprop "default"}}.}} }} | {{workaround|Use {{mono|$surfaceprop "default"}}.}}|only=css|hidetested=1}} | ||
== Syntax == | == Syntax == | ||
| Line 19: | Line 19: | ||
Names are defined in <code><game>\scripts\surfaceproperties_manifest.txt</code> (and the files it references). For a list of Valve's stock props, see [[Material surface properties]]. | Names are defined in <code><game>\scripts\surfaceproperties_manifest.txt</code> (and the files it references). For a list of Valve's stock props, see [[Material surface properties]]. | ||
{{bug|{{l4d|4}} does not display bullet decals properly on brick surfaces. If you're okay with the decals and visual effects being inappropriate, you can change the <code>$surfaceprop</code> to something else to fix it, such as <code>concrete</code>. | {{bug|{{l4d|4}} does not display bullet decals properly on brick surfaces. If you're okay with the decals and visual effects being inappropriate, you can change the <code>$surfaceprop</code> to something else to fix it, such as <code>concrete</code>. | ||
{{note|This has been fixed in {{l4d2|2}}.}}|only=l4d|hidetested=1}} | |||
== In Materials == | == In Materials == | ||
| Line 28: | Line 29: | ||
== In Models == | == In Models == | ||
* Surface props can be defined for individual [[bone]]s with <code>[[$jointsurfaceprop]]</code>. | * Surface props can be defined for individual [[bone]]s with <code>[[$jointsurfaceprop]]</code>. | ||
* A static prop can only have one $surfaceprop. | * A static prop can only have one $surfaceprop. | ||
{{clarify|It is unclear whether a model's {{cmd|$automass}} is calculated from <code>$surfaceprop</code> or <code>[[Prop Data|prop_data]]</code>. Relevant code is in <tt>[https://github.com/Source-SDK-Archives/source-sdk-2006-ep1/blob/e0b3d19b206ccf3764d851d63963471b30bb5451/utils/studiomdl/collisionmodel.cpp#L590 CJointedModel::ComputeMass()]</tt> in the 2006 SDK.}} | |||
== See also == | == See also == | ||
Latest revision as of 14:11, 25 November 2025
$surfaceprop is a QC command available in all
Source games.
It is also available as a shader parameter. It 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...)
$surfaceprop in a vmt for brushes will cause the material to take on the sound (and perhaps the other properties as well) of whatever the last material that was interacted with which did have a $surfaceprop defined.
Syntax
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.
$surfaceprop to something else to fix it, such as concrete.
In Materials
$surfacepropis not linked to any particular shader, so it can be used at any time.- Only brush based shaders require this parameter.
$surfacepropmust always be defined within the collision property of the QC file if anything other than the default is to be used, however.
In Models
- Surface props can be defined for individual bones with
$jointsurfaceprop. - A static prop can only have one $surfaceprop.
Clarify: It is unclear whether a model's
$automass is calculated from $surfaceprop or prop_data. Relevant code is in CJointedModel::ComputeMass() in the 2006 SDK.