$emissiveblend: Difference between revisions
(added warning about how emissiveblend does not adhere to the uvmap.) |
(fixed an realier mistake. Emissiveblend can be static and flowing, but they require different setups for each use.) |
||
Line 6: | Line 6: | ||
*<code>$emissiveblend</code> parameters are X+ and Y-, for both flowmap and scroll. (e.g. Giving X a positive scroll vector will have it go left and giving Y a positive scroll vector will have it go up) | *<code>$emissiveblend</code> parameters are X+ and Y-, for both flowmap and scroll. (e.g. Giving X a positive scroll vector will have it go left and giving Y a positive scroll vector will have it go up) | ||
*This effect does not need to use a flowmap, and can instead be used as a simple emissive map. Use dummy textures (<code>dev/null</code> or a pure white texture with a pure black alpha channel) for <code>$emissiveblendtexture</code> and <code>$emissiveblendflowtexture</code>, and use a value of <code>"[0 0]"</code> for <code>$emissiveblendscrollvector</code>. In this instance, illumination is solely provided by the <code>$emissiveblendbasetexture</code>, and the time proxy is not required.}} | *This effect does not need to use a flowmap, and can instead be used as a simple emissive map. Use dummy textures (<code>dev/null</code> or a pure white texture with a pure black alpha channel) for <code>$emissiveblendtexture</code> and <code>$emissiveblendflowtexture</code>, and use a value of <code>"[0 0]"</code> for <code>$emissiveblendscrollvector</code>. In this instance, illumination is solely provided by the <code>$emissiveblendbasetexture</code>, and the time proxy is not required.}} | ||
==Parameters== | ==Parameters== | ||
{{MatParam|$emissiveblendenabled|bool|Enables the effect.}} | {{MatParam|$emissiveblendenabled|bool|Enables the effect.}} | ||
Line 19: | Line 18: | ||
== Example == | == Example == | ||
=== Static=== | |||
This is an example of a static $emissiveblend texture. It will appear just like [[$selfillum]] does. | |||
<source> | |||
$EmissiveBlendEnabled 1 // Enable EmissiveBlend. Like $selfillum 1 | |||
$EmissiveBlendStrength 1 // how strong the entire glow effect is. | |||
$EmissiveBlendTexture vgui/white // This will be useless, but is required. | |||
$EmissiveBlendBaseTexture Glow_texture_color // this is the glowing texture.vtf | |||
$EmissiveBlendFlowTexture vgui/white // EmmisiveBlend can "flow" or move. But ours is static, so a white texture is used. | |||
$EmissiveBlendTint " [ 1 1 1 ] " // RGB glow intensity. Leave at 1 1 1. This can be used to change how strong each color should glow. So instead of using a darker red color, you may use [.5 1 1] to have red glow half as strong. | |||
$EmissiveBlendScrollVector " [ 0 0 ] " // makes the EmmissiveBlend flow in either direction if a proper EmissiveBlendFlowTexture were set. But ours is static, so leave at 0 0 | |||
</source> | |||
=== Flowing === | |||
This is an example of a flowing $emissiveblend texture. It will appear like as if water is flowing across a model. | |||
<source> | <source> | ||
$EmissiveBlendEnabled 1 // Enable EmissiveBlend. Like $selfillum 1 | $EmissiveBlendEnabled 1 // Enable EmissiveBlend. Like $selfillum 1 | ||
Line 25: | Line 36: | ||
$EmissiveBlendTexture Glow_texture_color // this is the glowing texture.vtf | $EmissiveBlendTexture Glow_texture_color // this is the glowing texture.vtf | ||
$EmissiveBlendBaseTexture Glow_texture_mask // This is the glowing texture's mask, like $selfillummask. SHOULD BE VTF i8 FORMAT, NOT DXT5!!! | $EmissiveBlendBaseTexture Glow_texture_mask // This is the glowing texture's mask, like $selfillummask. SHOULD BE VTF i8 FORMAT, NOT DXT5!!! | ||
$EmissiveBlendFlowTexture vgui/white // EmmisiveBlend can "flow" or move. | $EmissiveBlendFlowTexture vgui/white // EmmisiveBlend can "flow" or move. This here is the flowmap used, just like water. | ||
$EmissiveBlendTint " [ 1 1 1 ] " // RGB glow intensity. Leave at 1 1 1. This can be used to change how strong each color should glow. So instead of using a darker red color, you may use [.5 1 1] to have red glow half as strong. | $EmissiveBlendTint " [ 1 1 1 ] " // RGB glow intensity. Leave at 1 1 1. This can be used to change how strong each color should glow. So instead of using a darker red color, you may use [.5 1 1] to have red glow half as strong. | ||
$EmissiveBlendScrollVector " [ 0 0 ] " // makes the EmmissiveBlend flow in either direction if a proper EmissiveBlendFlowTexture were set. But ours is static, so leave at 0 0 | $EmissiveBlendScrollVector " [ 0 0 ] " // makes the EmmissiveBlend flow in either direction if a proper EmissiveBlendFlowTexture were set. But ours is static, so leave at 0 0 |
Revision as of 10:12, 6 March 2023



You can upload screenshots at Special:Upload. For help, see Help:Images.
Template:Shaderparam It provides advanced self-illumination that can be flowed using a flowmap. It is used for the Vortigaunts in Half-Life 2: Episode Two and succeeds the VortWarp shader from
Half-Life 2: Episode One. All parameters must be specified except for
$emissiveblendstrength
in order for the effect to work properly.
Template:ModernNote
Parameters
$emissiveblendenabled
$emissiveblendtexture
$emissiveblendbasetexture
$emissiveblendflowtexture
$emissiveblendtint
$emissiveblendstrength
$emissiveblendscrollvector
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.

"$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
Static
This is an example of a static $emissiveblend texture. It will appear just like $selfillum does.
$EmissiveBlendEnabled 1 // Enable EmissiveBlend. Like $selfillum 1
$EmissiveBlendStrength 1 // how strong the entire glow effect is.
$EmissiveBlendTexture vgui/white // This will be useless, but is required.
$EmissiveBlendBaseTexture Glow_texture_color // this is the glowing texture.vtf
$EmissiveBlendFlowTexture vgui/white // EmmisiveBlend can "flow" or move. But ours is static, so a white texture is used.
$EmissiveBlendTint " [ 1 1 1 ] " // RGB glow intensity. Leave at 1 1 1. This can be used to change how strong each color should glow. So instead of using a darker red color, you may use [.5 1 1] to have red glow half as strong.
$EmissiveBlendScrollVector " [ 0 0 ] " // makes the EmmissiveBlend flow in either direction if a proper EmissiveBlendFlowTexture were set. But ours is static, so leave at 0 0
Flowing
This is an example of a flowing $emissiveblend texture. It will appear like as if water is flowing across a model.
$EmissiveBlendEnabled 1 // Enable EmissiveBlend. Like $selfillum 1
$EmissiveBlendStrength 1 // how strong the entire glow effect is.
$EmissiveBlendTexture Glow_texture_color // this is the glowing texture.vtf
$EmissiveBlendBaseTexture Glow_texture_mask // This is the glowing texture's mask, like $selfillummask. SHOULD BE VTF i8 FORMAT, NOT DXT5!!!
$EmissiveBlendFlowTexture vgui/white // EmmisiveBlend can "flow" or move. This here is the flowmap used, just like water.
$EmissiveBlendTint " [ 1 1 1 ] " // RGB glow intensity. Leave at 1 1 1. This can be used to change how strong each color should glow. So instead of using a darker red color, you may use [.5 1 1] to have red glow half as strong.
$EmissiveBlendScrollVector " [ 0 0 ] " // makes the EmmissiveBlend flow in either direction if a proper EmissiveBlendFlowTexture were set. But ours is static, so leave at 0 0
The only known material using this shader parameter, found in Half-Life 2: Episode Two,
materials/models/vortigaunt/vortigaunt_blue.vmt
"VertexLitGeneric" { "$surfaceprop" "default" "$basetexture" "Models/vortigaunt/vortigaunt_base" "$bumpmap" "Models/vortigaunt/vortigaunt_normal" "$phong" "1" "$phongboost" "10" "$phongexponenttexture" "Models/vortigaunt/vortigaunt_exponent" "$phongalbedotint" "1" "$phongfresnelranges" "[.18 .4 1]" "$halflambert" "1" "$nodecal" "1" // Rim lighting parameters "$rimlight" "1" // To enable rim lighting (requires phong) "$rimlightexponent" "10" // Exponent for phong component of rim lighting "$rimlightboost" "3" // Boost for ambient cube component of rim lighting // Blend between color textures "$detail" "Models/Vortigaunt/vortigaunt_blue" "$detailblendmode" "3" "$detailblendfactor" "0.0" "$detailScale" "1.0" // Emissive Scroll Pass "$emissiveBlendEnabled" "1" // Enables effect "$emissiveBlendTexture" "models/vortigaunt/vortigaunt_illum" "$emissiveBlendBaseTexture" "Models/Vortigaunt/vortigaunt_blue" "$emissiveBlendFlowTexture" "models/vortigaunt/vortigaunt_flow" "$emissiveBlendTint" "[1 1 1]" "$emissiveBlendScrollVector" "[0.11 0.124]" "$time" "0" "Proxies" { "VortEmissive" { } "MaterialModify" { } "CurrentTime" { "resultVar" "$time" } } }