Difference between revisions of "TF2 Glow Effect (2013 SDK)"

From Valve Developer Community
Jump to: navigation, search
Line 12: Line 12:
 
UnlitGeneric
 
UnlitGeneric
 
{
 
{
     $basetexture red // or white, or whatever you like
+
     $basetexture white // or whatever you like
 
     $ignorez 1
 
     $ignorez 1
 
     $model 1
 
     $model 1
 
     $linearwrite 1
 
     $linearwrite 1
 +
}
 +
</source>
 +
 +
* Create another .VMT file in /materials/dev/ called "halo_add_to_screen.vmt" with the following contents:
 +
<source>
 +
"screenspace_general"
 +
{
 +
        "$PIXSHADER" "haloaddoutline_ps20"
 +
 +
        "$ALPHA_BLEND_COLOR_OVERLAY" 1
 +
        "$basetexture" "_rt_fullframefb"
 +
        "$ignorez" 1
 +
        "$linearread_basetexture" 1
 +
        "$linearwrite" 1
 +
 +
        "$texture1" "dev/glow_red"
 +
        "$texture2" "dev/glow_white"
 +
        "$texture3" "dev/glow_blue"
 
}
 
}
 
</source>
 
</source>
Line 24: Line 42:
 
CLIENTEFFECT_REGISTER_BEGIN( PrecachePostProcessingEffectsGlow )
 
CLIENTEFFECT_REGISTER_BEGIN( PrecachePostProcessingEffectsGlow )
 
CLIENTEFFECT_MATERIAL( "dev/glow_color" )
 
CLIENTEFFECT_MATERIAL( "dev/glow_color" )
 +
CLIENTEFFECT_MATERIAL( "dev/halo_add_to_screen" )
 
CLIENTEFFECT_REGISTER_END_CONDITIONAL( engine->GetDXSupportLevel() >= 90 )
 
CLIENTEFFECT_REGISTER_END_CONDITIONAL( engine->GetDXSupportLevel() >= 90 )
 
</source>
 
</source>

Revision as of 12:26, 8 April 2014

Activation

  • Add GLOWS_ENABLE to the preprocessor directives on your client and server projects (don't forget to add it for release and debug, too!)
  • Add the following line to ClientModeShared::DoPostScreenSpaceEffects:
g_GlowObjectManager.RenderGlowEffects( pSetup, 0 );
  • Create a .VMT file in /materials/dev/ called "glow_color.vmt" with the following contents:
UnlitGeneric
{
    $basetexture white // or whatever you like
    $ignorez 1
    $model 1
    $linearwrite 1
}
  • Create another .VMT file in /materials/dev/ called "halo_add_to_screen.vmt" with the following contents:
"screenspace_general"
{
        "$PIXSHADER" "haloaddoutline_ps20"
 
        "$ALPHA_BLEND_COLOR_OVERLAY" 1
        "$basetexture" "_rt_fullframefb"
        "$ignorez" 1
        "$linearread_basetexture" 1
        "$linearwrite" 1
 
        "$texture1" "dev/glow_red"
        "$texture2" "dev/glow_white"
        "$texture3" "dev/glow_blue"
}
  • Precache the effect by placing this code in clientmode_shared.cpp (search for other references of CLIENTEFFECT_REGISTER_BEGIN for usage example):
CLIENTEFFECT_REGISTER_BEGIN( PrecachePostProcessingEffectsGlow )
CLIENTEFFECT_MATERIAL( "dev/glow_color" )
CLIENTEFFECT_MATERIAL( "dev/halo_add_to_screen" )
CLIENTEFFECT_REGISTER_END_CONDITIONAL( engine->GetDXSupportLevel() >= 90 )

Usage

Objects derived from CBaseEntity are able to glow, but setters and getters for the glow effect only appear to be defined from CBaseCombatCharacter onwards.

To start a glow, call:

myObject->AddGlowEffect(); //Make it glow

To update a glow, call:

myObject->UpdateGlowEffect(); //Update glow

To stop a glow, call:

myObject->RemoveGlowEffect(); //Make it stop glowing