Aftershock
Aftershock
is a pixel shader available in all Source games since Source 2007.
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages)
This article is an orphan, meaning that few or no articles link to it.
You can help by adding links to this article from other relevant articles.
January 2024
You can help by adding links to this article from other relevant articles.
January 2024
This article or section needs to be cleaned up to conform to a higher standard of quality.
For help, see the VDC Editing Help and Wikipedia cleanup process. Also, remember to check for any notes left by the tagger at this article's talk page.
For help, see the VDC Editing Help and Wikipedia cleanup process. Also, remember to check for any notes left by the tagger at this article's talk page.
This article or section needs a screenshot to help visually convey the subject.
You can upload screenshots at Special:Upload. For help, see Help:Images.
You can upload screenshots at Special:Upload. For help, see Help:Images.
It draws animated and scrolling refraction. It is able to smoothly fade out with alpha blending depending on its distance to the ground (per vertex; calculated with the material parameters $GroundMin
and $GroundMax
) and the dot product of the per vertex geometry normal and world view vector (scaled by $SilhouetteThickness
). Furthermore this shader does solely support the vertexformat that studiomodels use.
Contents
Parameters
Normal map for the refraction.
The frame to start an animated bumpmap on.
Transforms the bump map texture.
- The default position is
center .5 .5 scale 1 1 rotate 0 translate 0 0
.center
defines the point of rotation. Only useful ifrotate
is being used.scale
fits the texture into the material the given number of times.2 1
is a 50% scale in the horizontal X axis while the vertical Y axis is still at original scale.rotate
rotates the texture counter-clockwise in degrees. Accepts any number, including negatives.translate
shifts the texture by the given numbers..5
will shift it half-way. 1 will shift it once completely over, which is the same as not moving it at all.
- Note:All values must be included!
- Bug:Scaling the texture may cause odd issues where the Texture Lock tool in Hammer will not actually lock the texture in place. [todo tested in?]
- Bug:Rotating textures applied on brushes will rotate around the map origin (confirm: Orangebox engine only?). A fix for this is to change the center position in the VMT to the brush's origin. [todo tested in?]
Controls the strength of the refraction by multiplying the normal map intensity.
Todo: Color tint of the refraction?
Adds a blur effect. Valid values are 0, 1 and 2.
Both describe an interval used to fade out the shader.
Silhouette color tint.
Scales the generic fade amount along the models edge.
Time Proxy
For any reason, you may want to modulate time by scale it. The below material proxy is a simple sample to work properly.
Note: you don't need to declare "CurrentTime" Proxie in cases where you don't need to relative modify time scale.
"$time" "0.0"
"$CurrentTime" "0.0" // declare a custom VMT Parameter to "CurrentTime" Proxie output
"$timeMult" "0.5" // declare a custom VMT Parameter to use at "Multiply" Proxie
"Proxies"
{
"CurrentTime"
{
// It pass CurrentTime Proxie to "$CurrentTime" variable to scale materials effects such $emissiveblendscrollvector.
"resultVar" "$CurrentTime"
}
"Multiply"
{
"srcVar1" "$CurrentTime" // get $CurrentTime VMT parameter to multiply with srcVar2
"srcVar2" "$timeMult" // get $timeMult VMT parameter to multiply with srcVar1
"resultVar" "$time" // writes multiplication product into $time, scaling "CurrentTime"
}
}
Example
The only known material using this shader, found in Half-Life 2: Episode Two, materials/models/props_combine/sphere.vmt
"Aftershock" { "<dx90" { "$fallbackmaterial" "models\props_combine\sphere_dx8" } "$normalmap" "models/props_combine/aftershock-normal" "$refractamount" "0.02" "$colortint" "[1.0 1.3 1.6]" "$SilhouetteThickness" "0.2" "$SilhouetteColor" "[0.3 0.3 0.5]" "$GroundMin" "-0.3" "$GroundMax" "-0.1" "$BlurAmount" "0.01" "$time" "0.0" "Proxies" { "CurrentTime" { "resultVar" "$time" } } }
See also