$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 ?]
Thunder4ik (talk | contribs) m (→top: clean up, replaced: {{Language subpage → {{langsp) |
SirYodaJedi (talk | contribs) mNo edit summary |
||
Line 1: | Line 1: | ||
{{langsp}} | {{langsp}} | ||
[[File:Lightwarp snow.jpg|thumb|200px|The technique was first used in {{dods|2}}'s snow maps, such as Kalt.]] | [[File:Lightwarp snow.jpg|thumb|200px|The technique was first used in {{dods|2}}'s snow maps, such as Kalt.]] | ||
[[File:Lightwarp heavy.png|thumb|150px| | [[File:Lightwarp heavy.png|thumb|150px|{{code|$lightwarptexture}} is a cornerstone of {{tf2|2}}'s illustrative character rendering.]] | ||
[[File:Lightwarp BW.png|thumb|150px|Posterized color can be achieved, but lighting must be tightly controlled.]] | [[File:Lightwarp BW.png|thumb|150px|Posterized color can be achieved, but lighting must be tightly controlled.]] | ||
Line 7: | Line 7: | ||
== Caveats == | == Caveats == | ||
{{Important| | {{Important|{{code|$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|Make sure the texture is clamped in the VTF otherwise it will render incorrectly.}} | ||
{{Important| | {{Important|{{code|$lightwarptexture}} on {{Ent|VertexLitGeneric}} requires a {{Ent|$bumpmap}}. If not specified, a default one will be used instead! '''It will be as if a {{Ent|$bumpmap}} is in the VMT!''' | ||
{{Warning| This means that all parameters that don't work with {{Ent|$bumpmap}} also won't work with | {{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. | |||
* {{Ent|$envmapmask}} won't work, except in {{mapbase|4}}. | |||
* {{Ent|$selfillum_envmapmask_alpha}} doesn't work in any branch. | |||
}} }} | |||
{{Note|Does not work without {{Ent|$phong}} on {{Ent|VertexLitGeneric}} in {{css|2}} '''and''' {{csgobranch|4}}.}} | {{Note|Does not work without {{Ent|$phong}} on {{Ent|VertexLitGeneric}} in {{css|2}} '''and''' {{csgobranch|4}}.}} | ||
{{Note| | {{Note|{{code|$lightwarptexture}} does not seem to exist at all for {{Ent|LightmappedGeneric}} in {{csgobranch|4}}.}} | ||
{{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}}.}} | ||
Line 23: | Line 24: | ||
== 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. | ||
=== VTF parameters === | |||
A lightwarp texture should use uncompressed BGR888 format to avoid undesired color banding on lighting gradients{{ref|1}}, and should be clamped. | |||
If using {{vtex|4}}, use these compile parameters: | |||
<pre> | |||
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 | |||
</pre> | |||
=== Examples === | === Examples === | ||
; | ; {{code|snow_warp}}:[[File:Warptexture.jpg|border|dod\materials\ground\snow_warp]] | ||
: This is the lightwarp texture used in the {{dods|2}} screen | : This is the lightwarp texture used in the {{dods|2}} screen above. It is designed to add a subtle bluish tint to darker snow without affecting brighter regions. | ||
; | ; {{code|pyro_lightwarp}}:[[File:Pyro lightwarp.png|border|tf\materials\models\player\pyro\pyro_lightwarp]] | ||
: This is applied to all {{tf2|2}} characters, not just the Pyro. It creates the high-contrast shadows with red-tinged terminators typical of the illustrative art the game apes. | : This is applied to all {{tf2|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: [[File:Warp bw.png|border|Custom texture]] | ; Posterized: [[File:Warp bw.png|border|Custom texture]] | ||
: 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. | : 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. | ||
; | ; {{code|Cel Shading}}:[[File:Cel_lightwarp.png|border|Custom texture]] | ||
:Cel shading can make objects look more cartoony by replacing the smooth lighting gradient with sharp steps. | :Cel shading can make objects look more cartoony by replacing the smooth lighting gradient with sharp steps. | ||
Other possible uses of | Other possible uses of {{code|$lightwarptexture}} include contrast enhancement, tweaking vertex lighting shadow transitions, highlight softening, and more. | ||
::[[File:Celshadingpreview.png|thumb|320px|left|Cel shading in action.]] | ::[[File:Celshadingpreview.png|thumb|320px|left|Cel shading in action.]] | ||
{{clr}} | |||
== References == | |||
<ol> | |||
<li>[https://gamebanana.com/mods/466641 Lightwarp Fixes <nowiki>[Team Fortress 2] [Mods]</nowiki> on GameBanana] | |||
</ol> |
Revision as of 12:28, 5 February 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 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
- snow_warp
- 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.
- pyro_lightwarp
- 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
- 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
- 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.