这篇条目有关 Source引擎。如需详情,点击这里。

Zh/$lightwarptexture: Difference between revisions

From Valve Developer Community
< Zh
Jump to navigation Jump to search
mNo edit summary
(deepseek translation)
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
{{LanguageBar}}
{{Source topicon}}
{{Source topicon}}
{{Translate|type=machine}}
[[File:Lightwarp snow.jpg|thumb|200px|该技术首次应用于{{L|Day of Defeat: Source|《反恐精英:起源》}}的雪地图,例如Kalt。]]
[[File:Lightwarp heavy.png|thumb|150px|{{code|$lightwarptexture}}是{{L|Team Fortress 2|《军团要塞2》}}独特角色渲染风格的重要元素。]]
[[File:Lightwarp BW.png|thumb|150px|可以实现色调分层,但需要对光照进行严格控制。]]


{{this is a|shader parameter|name=$lightwarptexture|shader=VertexLitGeneric|since=Source 2006|notitlechange=1|nocat=1|dx=dx95}} 它根据明暗程度调整[[texel|纹素]]的颜色,可以看作是局部的[[color correction|颜色校正]]
[[File:Lightwarp snow.jpg|thumb|200px|该技术首次应用于{{dods|2}}的雪地地图,例如Kalt。]]
[[File:Lightwarp heavy.png|thumb|150px|{{code|$lightwarptexture}}是{{tf2|2}}卡通风格角色渲染的核心要素。]]
[[File:Lightwarp BW.png|thumb|150px|可实现分阶色彩效果,但需严格控制光照。]]


{{Note|同样适用于[[LightmappedGeneric]][[WorldVertexTransition]]、[[EyeRefract]]。}}
{{this is a|shader parameter|name=$lightwarptexture|shader=VertexLitGeneric|since=Source 2006|notitlechange=1|nocat=1|dx=dx95}} 该参数根据[[texel]]的亮度进行染色,可视为局部化的[[color correction|色彩校正]]
 
{{Note|也可用于{{L|LightmappedGeneric}}{{L|WorldVertexTransition}}、{{L|EyeRefract}}。}}


== 注意事项 ==
== 注意事项 ==
{{Important|{{code|$lightwarptexture}} 必须在所有其他纹理之后指定,否则会覆盖它们。}}
{{Important|{{code|$lightwarptexture}}必须在所有其他纹理之后指定,否则会覆盖其他纹理。}}
{{Important|确保纹理在VTF中启用钳位模式,否则会渲染错误。为此,请使用“Clamp S”和“Clamp T”[[Texture flags|图像标志]]。}}
{{Important|确保纹理在VTF中启用钳位模式,否则渲染会异常。需使用'''Clamp S'''和'''Clamp T'''{{L|Texture flags|图像标志}}。}}
{{Important|{{Ent|VertexLitGeneric}} 中使用 {{code|$lightwarptexture}} 需要一个 {{Ent|$bumpmap}}。如果未指定,将使用默认的凹凸贴图!默认贴图将使 {{Ent|$bumpmap}} 看起来已在VMT中指定!
{{Important|{{Ent|VertexLitGeneric}}{{code|$lightwarptexture}}需要{{Ent|$bumpmap}}。若未指定,将自动使用默认法线贴图!'''效果等同于在VMT中声明了{{Ent|$bumpmap}}!'''
{{Warning|这意味着所有与 {{Ent|$bumpmap}} 不兼容的参数也无法与 {{code|$lightwarptexture}} 配合使用。
{{Warning| 这意味着所有与{{Ent|$bumpmap}}冲突的参数也会与此参数冲突:
* [[$detail#Parameters and Effects|$detailblendmode]] 参数5-9将无法正常工作(除非使用 {{Ent|$phong}} 时的5 & 6)。
* {{L|$detail#Parameters and Effects|$detailblendmode}} 5-9失效 - 使用{{Ent|$phong}}时5和6仍有效
* {{Ent|$envmapmask}} 在非 {{L|Mapbase|2}} 引擎中无法正常工作。
* {{Ent|$envmapmask}}仅在{{mapbase|2}}中有效
* {{Ent|$selfillum_envmapmask_alpha}} 在任何分支中均无法正常工作。
* {{Ent|$selfillum_envmapmask_alpha}}在所有分支中均无效
}} }}
}} }}
{{Note|在 {{src13|2}} 和 {{csgobranch|2}} 中,{{code|$lightwarptexture}} 需要与 {{Ent|$phong}} 一起使用,单独无效。}}
{{Note|在{{src13|2}}和{{csgobranch|2}}中,{{Ent|VertexLitGeneric}}必须启用{{Ent|$phong}}才能使用本参数。}}
{{Note|{{code|$lightwarptexture}} {{Ent|LightmappedGeneric}} 中似乎在 {{csgobranch|2}} 中完全不存在。}}
{{Note|{{csgobranch|2}}{{Ent|LightmappedGeneric}}似乎完全未实现{{code|$lightwarptexture}}}}


{{Bug|在 {{Ent|LightmappedGeneric}} 和 {{Ent|WorldVertexTransition}} 中同时使用 {{Ent|$detail}} 或 {{Ent|$bumpmap2}} 时无效。}}
{{Bug|在{{Ent|LightmappedGeneric}}和{{Ent|WorldVertexTransition}}上同时使用{{Ent|$detail}}或{{Ent|$bumpmap2}}会导致失效。}}
{{Bug|使用 [[Glowing_Textures#.24selfillum|$selfillumfresnel]] 但未启用 {{Ent|$phong}} 时无效。}}
{{Bug|未启用{{Ent|$phong}}时,{{L|Glowing_Textures#.24selfillum|$selfillumfresnel}}会导致失效。}}
{{Bug|{{Ent|$seamless_scale}} 一起使用时无效。}}
{{Bug|使用{{Ent|$seamless_scale}}时失效。}}


== 光偏移纹理 ==
== 光扭曲纹理 ==
光偏移纹理是一条一维像素带。暗纹素将被着色为左侧的颜色,亮纹素将被着色为右侧的颜色。50% 灰色表示无颜色偏移。
光扭曲纹理是一维像素条。暗部区域将应用左侧颜色染色,亮部则应用右侧颜色。50%灰度表示无染色。
{{note|光偏移在光照贴图的刷子和置换物上与顶点照明模型上表现略有不同。一个完全 50% 灰色的 {{code|$lightwarptexture}} 在刷子或置换物上看起来像没有光偏移一样,而在没有 [[$phong|phong]] 的模型上会表现为均匀受光(类似于GoldSrc的平面阴影纹理模式)。}}
{{note|光照贴图笔刷/位移面与顶点光照模型的光扭曲效果略有差异。完全50%灰度的{{code|$lightwarptexture}}在笔刷/位移面上会呈现无光扭曲效果,而相同纹理在未启用{{L|$phong}}的模型上会导致均匀光照(类似GoldSrc的平面着色模式)。}}


=== VTF 参数 ===
=== VTF参数 ===  
光偏移纹理应使用未压缩的 BGR888 格式,以避免光照渐变中出现不必要的颜色条纹{{ref|1}},并启用 UV 钳位。
光扭曲纹理应使用未压缩的BGR888格式以避免光照渐变中的色阶断层{{ref|1}},并启用UV钳位。


如果使用 {{vtex|4}},请使用以下编译参数:
使用{{vtex|4}}时,建议编译参数:
<pre>
<pre>
nocompress 1 // 禁用纹理压缩,防止颜色条纹
nocompress 1 // 禁用纹理压缩,防止色阶断层
nomip 1 // 禁用 mipmaps,在此情况下不必要
nomip 1     // 禁用mipmap(低分辨率纹理无需生成)
nolod 1 // 始终使用该纹理的全分辨率版本(由于本身分辨率较低)
nolod 1     // 始终使用完整分辨率版本
clamps 1 // 防止在光照极端条件下颜色混合
clamps 1     // 防止极端光照值混合
clampt 1 // 可选?
clampt 1     // 可选?
stripalphachannel 1 // 如果存在,移除不必要的 alpha 通道
stripalphachannel 1 // 移除冗余的Alpha通道(如有)
</pre>
</pre>


=== 示例 ===
=== 示例 ===
; {{file|ground/snow_warp|vtf}} ({{dods}}):[[File:Warptexture.jpg|border|dod\materials\ground\snow_warp]]
; {{file|ground/snow_warp|vtf}} ({{dods}}):[[File:Warptexture.jpg|border|dod\materials\ground\snow_warp]]
: 这是上方 {{L|Day of Defeat: Source|《反恐精英:起源》}} 屏幕截图中使用的光偏移纹理。它旨在为较暗的雪区域添加轻微的蓝色调,而不会影响较亮的区域。
: 这是上文{{dods|2}}截图中使用的光扭曲纹理,用于为暗部雪景添加微妙蓝调而不影响高光区域。
; {{file|models/player/pyro/pyro_lightwarp|vtf}} ({{tf2}}):[[File:Pyro lightwarp.png|border|tf\materials\models\player\pyro\pyro_lightwarp]]
; {{file|models/player/pyro/pyro_lightwarp|vtf}} ({{tf2}}):[[File:Pyro lightwarp.png|border|tf\materials\models\player\pyro\pyro_lightwarp]]
: 适用于所有 {{L|Team Fortress 2|《军团要塞2》}} 角色,不仅是 Pyro。这种纹理创建了红色终止线的高对比阴影,体现了游戏独特的插画风格。
: 该纹理应用于所有{{tf2|2}}角色(不仅限Pyro),创造出红调阴影边界的高对比度卡通效果。
; 色调分层(自定义):[[File:Warp bw.png|border|自定义纹理]]
; 分阶处理(自定义): [[File:Warp bw.png|border|自定义纹理]]
: 这种自定义光偏移纹理创造了一种色调分层的“线稿”风格。然而,仅启用光偏移还不够:环境光必须设置为 0 以使未受光区域为黑色,世界光照必须具有视图依赖性以确保始终投射阴影。
: 此自定义纹理实现"线稿"风格。需将环境光设为0使未照明区域变黑,并控制视角相关阴影投射。
; 卡通渲染(自定义):[[File:Cel_lightwarp.png|border|自定义纹理]]
; 卡通着色(自定义):[[File:Cel_lightwarp.png|border|自定义纹理]]
: 卡通渲染通过用清晰的光照分界替代平滑的光照渐变,让对象看起来更加卡通化。
: 通过锐利的光照阶梯替代平滑渐变,增强卡通质感。


其他可能的 {{code|$lightwarptexture}} 用途包括增强对比度、调整顶点光照阴影转换、柔化高光等。
{{code|$lightwarptexture}}还可用于增强对比度、调整顶点光照阴影过渡、柔化高光等。


::[[File:Celshadingpreview.png|thumb|320px|left|卡通渲染效果预览。]]
::[[File:Celshadingpreview.png|thumb|320px|left|卡通着色效果演示]]
{{clr}}
{{clr}}


== 参考资料 ==
== 参考资料 ==
<ol>
<ol>
<li>[https://gamebanana.com/mods/466641 Lightwarp Fixes <nowiki>[Team Fortress 2] [Mods]</nowiki>] 在 GameBanana 上</li>
<li>[https://gamebanana.com/mods/466641 Lightwarp Fixes <nowiki>[Team Fortress 2] [Mods]</nowiki> on GameBanana]
</ol>
</ol>


{{ACategory|Shader parameters|l}}
{{ACategory|Shader parameters}}

Latest revision as of 04:29, 10 March 2025

English (en)中文 (zh)Translate (Translate)

该技术首次应用于胜利之日:起源 胜利之日:起源的雪地地图,例如Kalt。
$lightwarptexture军团要塞2 军团要塞2卡通风格角色渲染的核心要素。
可实现分阶色彩效果,但需严格控制光照。

$lightwarptexture(DX9+ SM3)是一个用于着色器 VertexLitGeneric材质(en)着色器(en)参数,可在所有的 起源 起源 游戏,自从 起源2006 起源2006 以来中使用。 该参数根据texel的亮度进行染色,可视为局部化的色彩校正

Note.png注意:也可用于LightmappedGeneric(en)WorldVertexTransition(en)EyeRefract(en)

注意事项

Icon-Important.png重要:$lightwarptexture必须在所有其他纹理之后指定,否则会覆盖其他纹理。
Icon-Important.png重要:确保纹理在VTF中启用钳位模式,否则渲染会异常。需使用Clamp SClamp T图像标志(en)
Icon-Important.png重要:VertexLitGeneric$lightwarptexture需要$bumpmap。若未指定,将自动使用默认法线贴图!效果等同于在VMT中声明了$bumpmap
Warning.png警告: 这意味着所有与$bumpmap冲突的参数也会与此参数冲突:
Note.png注意:起源2013 起源2013CS:GO 引擎分支 CS:GO 引擎分支中,VertexLitGeneric必须启用$phong才能使用本参数。
Note.png注意:CS:GO 引擎分支 CS:GO 引擎分支LightmappedGeneric似乎完全未实现$lightwarptexture
Icon-Bug.png错误:LightmappedGenericWorldVertexTransition上同时使用$detail$bumpmap2会导致失效。  [todo tested in ?]
Icon-Bug.png错误:未启用$phong时,$selfillumfresnel(en)会导致失效。  [todo tested in ?]
Icon-Bug.png错误:使用$seamless_scale时失效。  [todo tested in ?]

光扭曲纹理

光扭曲纹理是一维像素条。暗部区域将应用左侧颜色染色,亮部则应用右侧颜色。50%灰度表示无染色。

Note.png注意:光照贴图笔刷/位移面与顶点光照模型的光扭曲效果略有差异。完全50%灰度的$lightwarptexture在笔刷/位移面上会呈现无光扭曲效果,而相同纹理在未启用$phong(en)的模型上会导致均匀光照(类似GoldSrc的平面着色模式)。

VTF参数

光扭曲纹理应使用未压缩的BGR888格式以避免光照渐变中的色阶断层[1],并启用UV钳位。

使用VTEX VTEX时,建议编译参数:

nocompress 1 // 禁用纹理压缩,防止色阶断层
nomip 1      // 禁用mipmap(低分辨率纹理无需生成)
nolod 1      // 始终使用完整分辨率版本
clamps 1     // 防止极端光照值混合
clampt 1     // 可选?
stripalphachannel 1 // 移除冗余的Alpha通道(如有)

示例

🖿ground/snow_warp.vtf (胜利之日:起源)
dod\materials\ground\snow_warp
这是上文胜利之日:起源 胜利之日:起源截图中使用的光扭曲纹理,用于为暗部雪景添加微妙蓝调而不影响高光区域。
🖿models/player/pyro/pyro_lightwarp.vtf (军团要塞2)
tf\materials\models\player\pyro\pyro_lightwarp
该纹理应用于所有军团要塞2 军团要塞2角色(不仅限Pyro),创造出红调阴影边界的高对比度卡通效果。
分阶处理(自定义)
自定义纹理
此自定义纹理实现"线稿"风格。需将环境光设为0使未照明区域变黑,并控制视角相关阴影投射。
卡通着色(自定义)
自定义纹理
通过锐利的光照阶梯替代平滑渐变,增强卡通质感。

$lightwarptexture还可用于增强对比度、调整顶点光照阴影过渡、柔化高光等。

卡通着色效果演示

参考资料

  1. Lightwarp Fixes [Team Fortress 2] [Mods] on GameBanana