Screenspace General: Difference between revisions
SirYodaJedi (talk | contribs) m (SirYodaJedi moved page Screenspace general to Screenspace General)  | 
				Robotboy655 (talk | contribs)   (→Parameters:  List parameters as they appear in the source files)  | 
				||
| Line 15: | Line 15: | ||
== Parameters ==  | == Parameters ==  | ||
{{MatParam|$PIXSHADER|string|Name of the pixel shader to use.  | {{MatParam|$PIXSHADER|string|Name of the pixel shader to use.  | ||
{{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.){{CodeBlock|<nowiki>	"screenspace_general_dx8"  | {{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.){{CodeBlock|<nowiki>	"screenspace_general_dx8"  | ||
| Line 22: | Line 21: | ||
	}</nowiki>}}}}  | 	}</nowiki>}}}}  | ||
}}  | }}  | ||
{{MatParam|$VERTEXSHADER|string|Name of the vertex shader to use. {{csgo|since}}{{confirm}} }}  | |||
==Custom shader inputs==  | |||
{{MatParam|$c0_x|float|}}  | |||
{{MatParam|$c0_y|float|}}  | |||
{{MatParam|$c0_z|float|}}  | |||
{{MatParam|$c0_w|float|}}  | |||
{{MatParam|$c1_x|float|}}  | |||
{{MatParam|$c1_y|float|}}  | |||
{{MatParam|$c1_z|float|}}  | |||
{{MatParam|$c1_w|float|}}  | |||
{{MatParam|$c2_x|float|}}  | |||
{{MatParam|$c2_y|float|}}  | |||
{{MatParam|$c2_z|float|}}  | |||
{{MatParam|$c2_w|float|}}  | |||
{{MatParam|$c3_x|float|}}  | |||
{{MatParam|$c3_y|float|}}  | |||
{{MatParam|$c3_z|float|}}  | |||
{{MatParam|$c3_w|float|}}  | |||
{{MatParam|$c4_x|float|{{csgo|since}}{{confirm}}}}  | |||
{{MatParam|$c4_y|float|{{csgo|since}}{{confirm}}}}  | |||
{{MatParam|$c4_z|float|{{csgo|since}}{{confirm}}}}  | |||
{{MatParam|$c4_w|float|{{csgo|since}}{{confirm}}}}  | |||
{{MatParam|$c5_x|float|{{csgo|since}}{{confirm}}}}  | |||
{{MatParam|$c5_y|float|{{csgo|since}}{{confirm}}}}  | |||
{{MatParam|$c5_z|float|{{csgo|since}}{{confirm}}}}  | |||
{{MatParam|$c5_w|float|{{csgo|since}}{{confirm}}}}  | |||
{{MatParam|$TEXTURE1|texture|}}  | |||
{{MatParam|$TEXTURE2|texture|}}  | |||
{{MatParam|$TEXTURE3|texture|}}  | |||
== Other parameters ==  | |||
{{MatParam|$DISABLE_COLOR_WRITES|integer|}}  | |||
{{MatParam|$ALPHATESTED|float|}}  | |||
{{MatParam|$ALPHA_BLEND|integer|}}  | |||
{{MatParam|$ALPHA_BLEND_COLOR_OVERLAY|integer|}}  | |||
{{MatParam|$LINEARREAD_BASETEXTURE|integer|}}  | |||
{{MatParam|$LINEARREAD_TEXTURE1|integer|}}  | |||
{{MatParam|$LINEARREAD_TEXTURE2|integer|}}  | |||
{{MatParam|$LINEARREAD_TEXTURE3|integer|}}  | |||
{{MatParam|$LINEARWRITE|integer|}}  | |||
{{MatParam|$COPYALPHA|integer|}}  | |||
{{MatParam|$VERTEXTRANSFORM|integer|verts are in world space {{csgo|since}}{{confirm}}}}  | |||
{{MatParam|$VERTEXNORMAL|integer|specify vertex normal (compressed) in material format {{csgo|since}}{{confirm}}}}  | |||
{{MatParam|$ALPHABLEND|integer|whether or not to enable alpha blend {{csgo|since}}{{confirm}}}}  | |||
{{MatParam|$MULTIPLYCOLOR|integer|whether or not to multiply src and dest color {{csgo|since}}{{confirm}}}}  | |||
{{MatParam|$WRITEALPHA|integer|whether or not to enable alpha write {{csgo|since}}{{confirm}}}}  | |||
{{MatParam|$WRITEDEPTH|integer|whether or not to enable depth write {{csgo|since}}{{confirm}}}}  | |||
{{MatParam|$TCSIZE0|integer|Number of components in texture coord0 (default is 2) {{csgo|since}}{{confirm}}}}  | |||
{{MatParam|$TCSIZE1|integer|Number of components in texture coord1 {{csgo|since}}{{confirm}}}}  | |||
{{MatParam|$TCSIZE2|integer|Number of components in texture coord2 {{csgo|since}}{{confirm}}}}  | |||
{{MatParam|$TCSIZE3|integer|Number of components in texture coord3 {{csgo|since}}{{confirm}}}}  | |||
{{MatParam|$TCSIZE4|integer|Number of components in texture coord4 {{csgo|since}}{{confirm}}}}  | |||
{{MatParam|$TCSIZE5|integer|Number of components in texture coord5 {{csgo|since}}{{confirm}}}}  | |||
{{MatParam|$TCSIZE6|integer|Number of components in texture coord6 {{csgo|since}}{{confirm}}}}  | |||
{{MatParam|$TCSIZE7|integer|Number of components in texture coord7 {{csgo|since}}{{confirm}}}}  | |||
{{MatParam|$POINTSAMPLE_BASETEXTURE|integer|{{csgo|since}}{{confirm}}}}  | |||
{{MatParam|$POINTSAMPLE_TEXTURE1|integer|{{csgo|since}}{{confirm}}}}  | |||
{{MatParam|$POINTSAMPLE_TEXTURE2|integer|{{csgo|since}}{{confirm}}}}  | |||
{{MatParam|$POINTSAMPLE_TEXTURE3|integer|{{csgo|since}}{{confirm}}}}  | |||
{{MatParam|$CULL|integer|Culling control - 0 = nocull, 1 = do cull {{csgo|since}}{{confirm}}}}  | |||
{{MatParam|$DEPTHTEST|integer|Enable Depthtest {{csgo|since}}{{confirm}}}}  | |||
{{MatParam|$VIEWPROJMAT|matrix|{{csgo|since}}{{confirm}}}}  | |||
{{MatParam|$INVVIEWPROJMAT|matrix|{{csgo|since}}{{confirm}}}}  | |||
{{MatParam|$BlendOpMin|integer|{{csgo|since}}{{confirm}}}}  | |||
== Tools ==  | == Tools ==  | ||
Revision as of 06:45, 9 January 2025
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.
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.)
$C0_X actually does what it says it is supposed to do.Parameters
Custom shader inputs
$c0_x
$c0_y
$c0_z
$c0_w
$c1_x
$c1_y
$c1_z
$c1_w
$c2_x
$c2_y
$c2_z
$c2_w
$c3_x
$c3_y
$c3_z
$c3_w
$c4_x
$c4_y
$c4_z
$c4_w
$c5_x
$c5_y
$c5_z
$c5_w
Other parameters
$ALPHATESTED
$ALPHA_BLEND
$ALPHA_BLEND_COLOR_OVERLAY
$LINEARREAD_BASETEXTURE
$LINEARREAD_TEXTURE1
$LINEARREAD_TEXTURE2
$LINEARREAD_TEXTURE3
$LINEARWRITE
$VERTEXTRANSFORM
$VERTEXNORMAL
$ALPHABLEND
$MULTIPLYCOLOR
$WRITEALPHA
$WRITEDEPTH
$TCSIZE0
$TCSIZE1
$TCSIZE2
$TCSIZE3
$TCSIZE4
$TCSIZE5
$TCSIZE6
$TCSIZE7
$POINTSAMPLE_BASETEXTURE
$POINTSAMPLE_TEXTURE1
$POINTSAMPLE_TEXTURE2
$POINTSAMPLE_TEXTURE3
$VIEWPROJMAT
$INVVIEWPROJMAT
$BlendOpMin
Tools
An SDK to easily create custom pixel shaders for any Source game is available here: ficool2/sdk_screenspace_shaders.