$lightwarptexture: Difference between revisions
Jump to navigation
Jump to search
Important:$lightwarptexture must be specified after all other textures, otherwise it will overwrite them.
Important:Make sure the texture is clamped in the VTF otherwise it will render incorrectly.
Important:$lightwarptexture on VertexLitGeneric requires a $bumpmap. If not specified, a default one will be used instead! It will be as if a $bumpmap is in the VMT!
Warning: This means that all parameters that don't work with $bumpmap also won't work with $lightwarptexture.
Note:Does not work without $phong on VertexLitGeneric in
Counter-Strike: Source and
CS:GO engine branch.
Note:$lightwarptexture does not seem to exist at all for LightmappedGeneric in
CS:GO engine branch.
Bug:Does not work when using $detail or $bumpmap2 on both LightmappedGeneric and WorldVertexTransition. [todo tested in ?]
Bug:Does not work when using $selfillumfresnel without also using $phong. [todo tested in ?]
Bug:Does not work when using $seamless_scale. [todo tested in ?]
Note:Lightwarp works slightly differently on lightmapped brushes and displacements compared to vertex-lit models. A completely 50% grey $lightwarptexture on a brush or displacement will appear as if lightwarp were not present, whereas the same $lightwarptexture on a model with no phong would result in the model being lit uniformly (like GoldSrc flatshade texture mode.
SirYodaJedi (talk | contribs) m (→Examples) |
SirYodaJedi (talk | contribs) |
||
Line 23: | Line 23: | ||
== Lightwarp textures == | == 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. | 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. | ||
{{note|Lightwarp works slightly differently on lightmapped brushes and displacements compared to vertex-lit models. A completely 50% grey {{code|$lightwarptexture}} on a brush or displacement will appear as if lightwarp were not present, whereas the same {{code|$lightwarptexture}} on a model with no [[$phong|phong]] would result in the model being lit uniformly (like GoldSrc flatshade texture mode.}} | |||
=== VTF parameters === | === VTF parameters === | ||
A lightwarp texture should use uncompressed BGR888 format to avoid undesired color banding on lighting gradients{{ref|1}}, and should be clamped. | A lightwarp texture should use uncompressed BGR888 format to avoid undesired color banding on lighting gradients{{ref|1}}, and should be UV clamped. | ||
If using {{vtex|4}}, use these compile parameters: | If using {{vtex|4}}, use these compile parameters: |
Revision as of 17:00, 26 March 2024

The technique was first used in
Day of Defeat: Source's snow maps, such as Kalt.

Template:Shaderparam 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.