$lightwarptexture: Difference between revisions
(Replaced Shaderparam with This is a. The replacement was still incomplete as the new template doesnt support mentioning multiple shaders so I added a temporary note.) |
SirYodaJedi (talk | contribs) |
||
Line 16: | Line 16: | ||
{{Warning| This means that all parameters that don't work with {{Ent|$bumpmap}} also won't work with {{code|$lightwarptexture}}. | {{Warning| This means that all parameters that don't work with {{Ent|$bumpmap}} also won't work with {{code|$lightwarptexture}}. | ||
* [[$detail#Parameters and Effects|$detailblendmode]] 5-9 won't work - 5 & 6 will work when {{Ent|$phong}} is used. | * [[$detail#Parameters and Effects|$detailblendmode]] 5-9 won't work - 5 & 6 will work when {{Ent|$phong}} is used. | ||
* {{Ent|$envmapmask}} won't work, except in {{mapbase| | * {{Ent|$envmapmask}} won't work, except in {{mapbase|2}}. | ||
* {{Ent|$selfillum_envmapmask_alpha}} doesn't work in any branch. | * {{Ent|$selfillum_envmapmask_alpha}} doesn't work in any branch. | ||
}} }} | }} }} | ||
{{Note|Does not work without {{Ent|$phong}} on {{Ent|VertexLitGeneric}} in {{ | {{Note|Does not work without {{Ent|$phong}} on {{Ent|VertexLitGeneric}} in {{src13|2}} '''and''' {{csgobranch|2}}.}} | ||
{{Note|{{code|$lightwarptexture}} does not seem to exist at all for {{Ent|LightmappedGeneric}} in {{csgobranch| | {{Note|{{code|$lightwarptexture}} does not seem to exist at all for {{Ent|LightmappedGeneric}} in {{csgobranch|2}}.}} | ||
{{Bug|Does not work when using {{Ent|$detail}} '''or''' {{Ent|$bumpmap2}} on both {{Ent|LightmappedGeneric}} and {{Ent|WorldVertexTransition}}.}} | {{Bug|Does not work when using {{Ent|$detail}} '''or''' {{Ent|$bumpmap2}} on both {{Ent|LightmappedGeneric}} and {{Ent|WorldVertexTransition}}.}} |
Revision as of 14:41, 26 August 2024


$lightwarptexture
(DX9+ SM3) is a material shader parameter for the VertexLitGeneric shader available in all Source games since
Source 2006. It tints texels depending on their brightness. It can be thought of as localized color correction.

Caveats




- $detailblendmode 5-9 won't work - 5 & 6 will work when $phong is used.
- $envmapmask won't work, except in
Mapbase.
- $selfillum_envmapmask_alpha doesn't work in any branch.








Lightwarp textures
A lightwarp texture is a one-dimensional strip of pixels. Dark texels will be tinted with the colour on the left-hand side, and bright texels with the colour on the right. 50% gray means no tint.

VTF parameters
A lightwarp texture should use uncompressed BGR888 format to avoid undesired color banding on lighting gradients[1], and should be UV clamped.
If using VTEX, use these compile parameters:
nocompress 1 // disable texture compression, to prevent undesired color banding nomip 1 // disable mipmaps, which are unnecessary in this instance nolod 1 // always use the full resolution version of this texture (due to being low-resolution to begin with) clamps 1 // prevent tints at lighting extremes from blending together clampt 1 // optional? stripalphachannel 1 // remove unnecessary alpha channel, if present
Examples
ground/snow_warp.vtf
()
- This is the lightwarp texture used in the
Day of Defeat: Source screen above. It is designed to add a subtle bluish tint to darker snow without affecting brighter regions.
models/player/pyro/pyro_lightwarp.vtf
()
- This is applied to all
Team Fortress 2 characters, not just the Pyro. It creates the high-contrast shadows with red-tinged terminators typical of the illustrative art the game apes.
- Posterized (custom)
- This custom warp texture creates a posterized "line art" style. Enabling lightwarp alone isn't enough however: ambient lighting must be at 0 to make unlit areas black, and world lighting must become viewer-dependent to ensure that shadows are always cast.
- Cel Shading (custom)
- Cel shading can make objects look more cartoony by replacing the smooth lighting gradient with sharp steps.
Other possible uses of $lightwarptexture include contrast enhancement, tweaking vertex lighting shadow transitions, highlight softening, and more.