Stub
This article or section is a stub. You can help by expanding it.
Screenspace_General
is a Vertex shader available in all
Source games since
Source 2007.[confirm] It is most commonly used to draw generic screenspace effects.
Unlike other shaders using screenspaceeffect as its vertex shader, screenspace_general allows developers to easily access and modify its pixel shader, 4 texture samplers and 4 shader register constants.[Clarify]
This can be useful for quickly iterating and testing screen effects, without having to reload all shaders, or recompile stdshaders to define/modify parameters.
Todo: Document available constants and inputs
Notable usage
dev/halo_add_to_screen
Used by the TF2 Glow Effect (2013 SDK) to help create an outline around models using stencils.
It uses the haloaddoutline_ps20 pixel shader to apply cheap blur. $C0_X controls the glow fade value (restricted to 1.0f in code.)
Todo: Test if changing $C0_X actually does what it says it is supposed to do.
Parameters
Note:If you intent to draw your shader on DX8, you'll have to add the following code your material file (inside the "screenspace_general" keyvalue.) "screenspace_general_dx8"
{
"$PIXSHADER" "YOUR_DX8_PIXSHADER_HERE"
}
Name of the vertex shader to use.
(in all games since
)
Custom shader inputs
(in all games since
)(not in
)
(in all games since
)(not in
)
(in all games since
)(not in
)
(in all games since
)(not in
)
(in all games since
)(not in
)
(in all games since
)(not in
)
(in all games since
)(not in
)
(in all games since
)(not in
)
Other parameters
Dictates if vertex color should be used and if they should be transformed from world space. In later games, this is replaced by the usage of
$vertexcolor material flag and
$vertextransform
.
(removed since
)
specify vertex normal (compressed) in material format
(in all games since
)
whether or not to enable alpha blend
(in all games since
)
whether or not to multiply src and dest color
(in all games since
)
whether or not to enable alpha write
(in all games since
)
whether or not to enable depth write
(in all games since
)
Number of components in texture coord0 (default is 2)
(in all games since
)
Number of components in texture coord1
(in all games since
)
Number of components in texture coord2
(in all games since
)
Number of components in texture coord3
(in all games since
)
Number of components in texture coord4
(in all games since
)
Number of components in texture coord5
(in all games since
)
Number of components in texture coord6
(in all games since
)
Number of components in texture coord7
(in all games since
)
Culling control where 0 is nocull, 1 is do cull
(in all games since
)
Enable Depthtest
(in all games since
)
Tools
An SDK to easily create custom pixel shaders for any Source game is available here: ficool2/sdk_screenspace_shaders.
Todo: Is this sdk_screenspace_shaders exclusive?