SolidEnergy
![Broom icon.png](/w/images/thumb/7/71/Icon-broom.png/32px-Icon-broom.png)
Remember to check for any notes left by the tagger at this article's talk page.
SolidEnergy
is a Pixel shader available in all Source games since
Portal 2. (also in
) It is used for the fizzler, excursion funnel, light bridge, and laser field materials.
Supported effects
$flowmap
$flowbounds
$translucent
$additive
$refract
(only in)
Fresnel behavior
![Note.png](/w/images/thumb/c/cc/Note.png/10px-Note.png)
Powerup and vortex parameters
These material parameters are used to control the power-up animation, and up to two vortexes which normally appear when objects are nearby. They are generally set by the FizzlerVortex
proxy.
![Tip.png](/w/images/thumb/4/45/Tip.png/9px-Tip.png)
MaterialModify
proxy can instead be used to control the effects manually, for custom fizzlers.Detail
When using a basetexture, the shader also renders 2 optional detail textures, which are blended with the basetexture. Both of these detail textures use the same syntax of variant parameters as $detail, with "$detail1" or "$detail2" replacing the "$detail" prefix. (eg: $detail1scale 1) This method must be used if the material is to be used on a model, as meshes will not render if a flowmap is applied.
etc
Flowbounds
If a flowmap is used, the material uses an additional texture comprised of three greyscale masks on each of the color channels.
- Red controls the flow speed
- Green controls the tint amount from
$flow_color
- Blue controls the additive intensity, such as the ripples of a Fizzler
Refract (only in
)
These parameters control the refraction effects added in P2:CE.
![Icon-Bug.png](/w/images/thumb/b/b4/Icon-Bug.png/10px-Icon-Bug.png)
Type 1 (Flowmap) Example
The example shown below is materials/effects/fizzler.vmt
from Portal 2.
SolidEnergy { $basetexture "effects/fizzler_ripples_dim" $flowmap "effects/fizzler_flow" $flowbounds "effects/fizzler_bounds" $FLOW_NOISE_TEXTURE "effects/fizzler_noise" $FLOW_UVSCROLLDISTANCE "0.25" $FLOW_TIMEINTERVALINSECONDS "1.2" $FLOW_NOISE_SCALE 0.003 $FLOW_LERPEXP 1.5 $FLOW_WORLDUVSCALE 0.008 $FLOW_NORMALUVSCALE 0.008 $FLOW_COLOR "[0.025 0.08 0.1]" $FLOW_VORTEX_COLOR "[0.64 2.058 2.56]" $surfaceprop glass "%keywords" Portal2 $translucent 1 $additive 1 $FLOW_VORTEX_SIZE 35 "360?$outputintensity" 2.8 "SonyPS3?$outputintensity" .7 "srgb_pc?$outputintensity" 2.3 "!srgb_pc?$outputintensity" 1.7 Proxies { FizzlerVortex { } } }
Type 2 (Basetexture and Detail) Example
The example shown below is materials/effects/projected_wall.vmt
from Portal 2.
SolidEnergy { $basetexture "effects/projected_wall" $detail1 "effects/projected_wall_draw" $detail1scale 1 $DETAIL1BLENDMODE 1 $detail2 "effects/projected_wall_noise" $detail2scale 1 $detail2blendmode 0 $translucent 1 $additive 1 $vertexalpha 0 $vertexcolor 0 $nocull 1 $surfaceprop glass "%keywords" Portal2 $detailscroll1 "[0 0]" $detailscroll2 "[0 0]" $detail2componentscale "[1 1]" $basescroll "[0 0]" $basescale "[1 1]" "!srgb?$outputintensity" .75 Proxies { Sine { sinemin 0 sinemax 0.94 sineperiod 5 timeoffset 3 resultVar "$detailscroll1[0]" } LinearRamp { rate -3 initialValue 0 resultVar "$detailscroll1[1]" } LinearRamp { rate 0.18 initialValue 0 resultVar "$detailscroll2[1]" } Sine { sinemin 0.99 sinemax 1.01 sineperiod 0.125 timeoffset 0 resultVar "$detail2componentscale[0]" } Sine { sinemin 0.995 sinemax 1.005 sineperiod 0.1 timeoffset 0.05 resultVar "$basescale[0]" } LinearRamp { rate 0.15 initialValue 0 resultVar "$basescroll[1]" } TextureTransform { translateVar $detailscroll1 resultVar $detail1texturetransform } TextureTransform { translateVar $detailscroll2 scaleVar $detail2componentscale resultVar $detail2texturetransform } TextureTransform { translateVar $basescroll scaleVar $basescale resultVar $basetexturetransform } } }