This article's documentation is for anything that uses the Source engine. Click here for more information.

Screenspace_General

From Valve Developer Community
Jump to navigation Jump to search
English (en)Translate (Translate)

Stub

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

Screenspace_General is a Vertex shader available in all Source Source games since Source 2007 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
Note.pngNote:Garry's Mod Garry's Mod has the Counter-Strike: Global Offensive Counter-Strike: Global Offensive version of this shader.

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

Name of the pixel shader to use. Can be loaded from any directory. In Portal 2 Portal 2 and Counter-Strike: Global Offensive Counter-Strike: Global Offensive, shaders can only be loaded from the platform directory. In Garry's Mod Garry's Mod, they can only be loaded from the mod directory, packed BSP, or a workshop addon.
Note.pngNote: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 Alien Swarm)

Custom shader inputs

(in all games since Alien Swarm)(not in Garry's Mod)
(in all games since Alien Swarm)(not in Garry's Mod)
(in all games since Alien Swarm)(not in Garry's Mod)
(in all games since Alien Swarm)(not in Garry's Mod)
(in all games since Counter-Strike: Global Offensive)(not in Garry's Mod)
(in all games since Counter-Strike: Global Offensive)(not in Garry's Mod)
(in all games since Counter-Strike: Global Offensive)(not in Garry's Mod)
(in all games since Counter-Strike: Global Offensive)(not in Garry's Mod)

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 Alien Swarm)
verts are in world space (in all games since Alien Swarm)
specify vertex normal (compressed) in material format (in all games since Counter-Strike: Global Offensive)
whether or not to enable alpha blend (in all games since Alien Swarm)
whether or not to multiply src and dest color (in all games since Alien Swarm)
whether or not to enable alpha write (in all games since Alien Swarm)
whether or not to enable depth write (in all games since Alien Swarm)
Number of components in texture coord0 (default is 2) (in all games since Alien Swarm)
Number of components in texture coord1 (in all games since Alien Swarm)
Number of components in texture coord2 (in all games since Alien Swarm)
Number of components in texture coord3 (in all games since Alien Swarm)
Number of components in texture coord4 (in all games since Alien Swarm)
Number of components in texture coord5 (in all games since Alien Swarm)
Number of components in texture coord6 (in all games since Alien Swarm)
Number of components in texture coord7 (in all games since Alien Swarm)
(in all games since Alien Swarm)
(in all games since Alien Swarm)
(in all games since Alien Swarm)
Culling control where 0 is nocull, 1 is do cull (in all games since Alien Swarm)
Enable Depthtest (in all games since Alien Swarm)
(in all games since Counter-Strike: Global Offensive)
(in all games since Counter-Strike: Global Offensive)
(in all games since Counter-Strike: Global Offensive)

Tools

An SDK to easily create custom pixel shaders for any Source game is available here: ficool2/sdk_screenspace_shaders.

Note.pngNote:Although not intended. This shader also correctly displays on brushes, overlays, decals, and models (requires $softwareskin 1 and $translucent 1)
Todo: Is this sdk_screenspace_shaders exclusive?