SolidEnergy: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
(Proxies are supported by every shader)
m (Remove unnecessary all caps text)
Line 29: Line 29:
== Detail ==
== 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)
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.
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.


{{MatParam|$detail1|string|Detail texture 1}}
{{MatParam|$detail1|string|Detail texture 1}}

Revision as of 13:36, 23 November 2020

Stub

This article or section is a stub. You can help by expanding it.

Broom icon.png
This article or section needs to be updated to include current information regarding the subject.
Remember to check for any notes left by the tagger at this article's talk page.

Shader-ball.png SolidEnergy It is used for the fizzler, excursion funnel, light bridge, and laser field materials. Also available in CS:GO.

Todo: Properly document this!
Todo: Add images

Supported effects

Todo: What other effects does this shader support?

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.pngTip:A MaterialModify proxy can instead be used to control the effects manually, for custom fizzlers.

$powerup $FLOW_VORTEX1 $FLOW_VORTEX_POS1 $FLOW_VORTEX2 $FLOW_VORTEX_POS2

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.

$detail1 $detail2 etc

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
             }
      }
}