$emissiveblend: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
(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.}}
{{ModernWarning|<code>$emissiveblend</code> does not adhere to your uvmap like [[$detail]] does.}}
==Parameters==
==Parameters==
{{MatParam|$emissiveblendenabled|bool|Enables the effect.}}
{{MatParam|$emissiveblendenabled|bool|Enables the effect.}}
Line 19: Line 18:


== Example ==
== Example ==
Basic example setup of EmissiveBlend. This here acts like $selfillum and is not animated.
=== 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. But ours is static, so a white texture is used.
$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

English (en)Translate (Translate)
Nuvola apps ksnapshot.png
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.

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 Half-Life 2: Episode Two and succeeds the VortWarp shader from Half-Life 2: Episode One 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.

Note.pngNote: 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

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

See Also