Difference between revisions of "$lightwarptexture"

From Valve Developer Community
Jump to: navigation, search
(Wait a moment, they look shaded in Gmod on DX8 graphics cards! This means $halflambert + $lightwarptexture is fine!)
(Added shaders)
 
(8 intermediate revisions by 3 users not shown)
Line 2: Line 2:
 
[[File:Lightwarp heavy.png|thumb|150px|It is the cornerstone of TF2's illustrative character rendering.]]
 
[[File:Lightwarp heavy.png|thumb|150px|It is the cornerstone of TF2's illustrative character rendering.]]
 
[[File:Lightwarp BW.png|thumb|150px|Posterised colour can be achieved, but lighting must be tightly controlled.]]
 
[[File:Lightwarp BW.png|thumb|150px|Posterised colour can be achieved, but lighting must be tightly controlled.]]
 
+
[[File:Celshadingpreview.png|thumb|250px|Cel shading in action.]]
'''<code>$lightwarptexture</code>''' is a [[material]] parameter that tints [[texel]]s depending on their brightness. It can be thought of as localised [[color correction]]. It requires at least DirectX 9.
+
{{Shaderparam|$lightwarptexture|dx9=1|since=Source 2006|shader1=VertexLitGeneric|shader2=LightmappedGeneric|shader3=WorldVertexTransition|shader4=EyeRefract}} It tints [[texel]]s depending on their brightness. It can be thought of as localised [[color correction]].
 
+
{{note|<code>$lightwarptexture</code> must be specified ''after'' all other textures, otherwise it will overwrite them.}}
{{note|$lightwarptexture can be used together with [[$halflambert]], as the $halflambert will be used in case of DirectX 8.1 or lower.)}}
+
{{warning|Requires [[phong]] on <code>[[VertexLitGeneric]]</code> in {{css}}.}}
 +
:{{todo|Do games other than {{css}} require phong for this to work?}}
  
 
== Lightwarp textures ==
 
== Lightwarp textures ==
Line 18: Line 19:
 
; <code>pyro_lightwarp</code>
 
; <code>pyro_lightwarp</code>
 
: [[File:Pyro lightwarp.png|border|tf\materials\models\player\pyro\pyro_lightwarp]]
 
: [[File:Pyro lightwarp.png|border|tf\materials\models\player\pyro\pyro_lightwarp]]
: This is applied to all [[Team Fortress 2|TF2]] characters, not just Pyro. It creates the high-contrast shadows with red-tinged terminators typical of the illustrative art the game apes.
+
: This is applied to all [[Team Fortress 2|TF2]] characters, not just the Pyro. It creates the high-contrast shadows with red-tinged terminators typical of the illustrative art the game apes.
 
; Posterised
 
; Posterised
 
: [[File:Warp bw.png|border|Custom texture]]
 
: [[File:Warp bw.png|border|Custom texture]]
 
:This custom warp texture creates a posterised "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 posterised "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.
  
Other possible uses of <code>$lightwarptexture</code> include toon shading, contrast enhancement and highlight softening.
+
; <code>Cel Shading</code>
 +
: [[File:Cel_lightwarp.png|border|Custom texture]]
 +
:Cel shading can make objects look more cartoony, by replacing the smooth lighting gradient with sharp steps.
 +
 
 +
Other possible uses of <code>$lightwarptexture</code> include contrast enhancement, tweaking vertex lighting shadow transitions, highlight softening and more.
  
 
[[Category:List of Shader Parameters|L]]
 
[[Category:List of Shader Parameters|L]]

Latest revision as of 19:01, 30 July 2019

The technique was first used in Day of Defeat's snow maps, such as Kalt.
It is the cornerstone of TF2's illustrative character rendering.
Posterised colour can be achieved, but lighting must be tightly controlled.
Cel shading in action.

$lightwarptexture (DX9+) is a material shader parameter available in all Source games since <Source><Source> Source 2006 for VertexLitGeneric, LightmappedGeneric, WorldVertexTransition, EyeRefract. It tints texels depending on their brightness. It can be thought of as localised color correction.

Note:$lightwarptexture must be specified after all other textures, otherwise it will overwrite them.

Warning: Requires phong on VertexLitGeneric in <Counter-Strike: Source>.

To do: Do games other than <Counter-Strike: Source> require phong for this to work?

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.

Examples

snow_warp
dod\materials\ground\snow_warp
This is the lightwarp texture used in the DOD Source screen to the right. It is designed to add a subtle bluish tint to darker snow, without affecting brighter regions.
pyro_lightwarp
tf\materials\models\player\pyro\pyro_lightwarp
This is applied to all TF2 characters, not just the Pyro. It creates the high-contrast shadows with red-tinged terminators typical of the illustrative art the game apes.
Posterised
Custom texture
This custom warp texture creates a posterised "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 texture
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.