$lightwarptexture: Difference between revisions
| SirYodaJedi (talk | contribs)  (→Lightwarp textures:  not like flatshade) | SirYodaJedi (talk | contribs)  | ||
| Line 43: | Line 43: | ||
| stripalphachannel 1 // remove unnecessary alpha channel, if present | stripalphachannel 1 // remove unnecessary alpha channel, if present | ||
| </pre> | </pre> | ||
| A lightwarp texture should usually have a horizontal resolution of at least 256px (any higher will have negligble benefits). The vertical resolution can be whatever; 1px is optimal, but may be difficult to work with. | |||
| === Examples === | === Examples === | ||
Revision as of 04:28, 1 May 2025
 
   Day of Defeat: Source's snow maps, such as Kalt.
 Day of Defeat: Source's snow maps, such as Kalt.$lightwarptexture (DX9+ SM3) is a   material shader parameter for the VertexLitGeneric shader available in all  Source games since
 Source games since  Source 2006. It tints texels depending on their brightness. It can be thought of as localized color correction.
 Source 2006. It tints texels depending on their brightness. It can be thought of as localized color correction.
 Note:Also available for LightmappedGeneric, WorldVertexTransition, EyeRefract.
Note:Also available for LightmappedGeneric, WorldVertexTransition, EyeRefract.Caveats
 Important:Make sure the texture is clamped in the VTF otherwise it will render incorrectly. Use Clamp S and Clamp T image flags for that.
Important:Make sure the texture is clamped in the VTF otherwise it will render incorrectly. Use Clamp S and Clamp T image flags for that. Important:
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
Warning: This means that all parameters that don't work with $bumpmap also won't work with $lightwarptexture.
- $detailblendmode 5-9 won't work - 5 & 6 will work when $phong is used.
- $envmapmask won't work, except in  Mapbase. Mapbase.
- $selfillum_envmapmask_alpha doesn't work in any branch.
- Per-vertex lighting won't work prior to  CS:GO engine branch CS:GO engine branch
 Note:Does not work without $phong on VertexLitGeneric in
Note:Does not work without $phong on VertexLitGeneric in  Source 2013 and
 Source 2013 and  CS:GO engine branch.
 CS:GO engine branch. Workaround:Use
Workaround:Use $phongboost 0. Note:
Note:$lightwarptexture does not seem to exist at all for LightmappedGeneric in  CS:GO engine branch.
 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 $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 $selfillumfresnel without also using $phong.  [todo tested in ?] Bug:Does not work when using $seamless_scale.  [todo tested in ?]
Bug:Does not work when using $seamless_scale.  [todo tested in ?]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.
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 at 100% brightness (not overbright).
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:
 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
A lightwarp texture should usually have a horizontal resolution of at least 256px (any higher will have negligble benefits). The vertical resolution can be whatever; 1px is optimal, but may be difficult to work with.
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. 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. 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.
- Fake $phongdisablehalflambert (custom)
 
- Simulates $phongdisablehalflambertin games without that command.
Other possible uses of $lightwarptexture include contrast enhancement, tweaking vertex lighting shadow transitions, highlight softening, and more.





























