Zh/$bumpmap: Difference between revisions
< Zh
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
(3 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{translate}} | |||
{{LanguageBar}} | {{LanguageBar}} | ||
{{this is a|shader parameter|notext=1|name=$bumpmap}} | {{this is a|shader parameter|notext=1|name=$bumpmap}} | ||
[[File:Brickwall021a normalcompare.jpg|thumb| | [[File:Brickwall021a normalcompare.jpg|thumb|材质的{{L|diffuse|漫反射贴图}}(左)与其法线贴图对比。]] | ||
[[File:Example of bump mapping.jpg|thumb| | [[File:Example of bump mapping.jpg|thumb|上述材质的游戏内效果。]]该参数指定为材质提供三维光照信息的{{L|texture|纹理}}。该纹理属于{{L|bump map|凹凸贴图}},但其应用过程被称为{{w|normal mapping|法线贴图}}。不过这两个术语常被混用。 | ||
{{warning|<code>$bumpmap</code> | {{warning|<code>$bumpmap</code> 会在所有{{csgobranch|4}}之前的Source游戏中禁用{{ent|prop_static}}的逐顶点光照。<br> | ||
由于顶点中未存储足够的法线贴图数据,引擎只能回退处理。}} | |||
{{important| | {{important|使用凹凸贴图的笔刷和置换表面会为每个面生成四张光照贴图(每个光照方向一张,外加非凹凸版本),而非一张。若在VMT中添加{{code|$bumpmap}}或{{code|$normalmap}}但编译时未包含该参数,则地图必须重新编译。 | ||
{{note| | {{note|此规则不适用于使用{{code|-bumpall}} {{L|VBSP}}参数编译的地图(该参数会为所有面生成4张光照贴图,无论是否启用凹凸贴图)。但应谨慎使用此参数,因其会显著增加光照贴图占用。}} | ||
}} | }} | ||
{{Important|<code>$bumpmap</code> | {{Important|<code>$bumpmap</code> 不适用于{{code|{{L|LightmappedReflective|光照反射}}}}。请改用<code>$normalmap</code>。}} | ||
{{note| | {{note| | ||
* | * 在<code>{{L|Water_(shader)|Water|水材质}}</code>着色器中,<code>$bumpmap</code>用于DX8的{{L|Du/dv_map|du/dv贴图}}。请改用<code>$normalmap</code>。 | ||
* | * 除{{csgobranch|4}}外,贴花纹理无法使用凹凸贴图。 | ||
* | * 在{{ent|VertexLitGeneric}}中使用{{ent|$lightwarptexture}}会强制启用凹凸贴图,即使VMT中未声明<code>$bumpmap</code>。此时会绑定默认贴图,所有<code>$bumpmap</code>相关限制仍适用。}} | ||
{{bug| <code>$bumpmap</code> | {{bug| <code>$bumpmap</code> 会导致部分参数失效。受影响参数包括(但不限于): | ||
* | * 与使用{{ent|$envmapmask}}的材质不兼容。{{ent|VertexLitGeneric}}{{mapbase|仅}}和{{ent|LightmappedGeneric}}{{csgo|仅}}除外。详见{{L|$envmapmask#Alternative_methods|替代方案}}。 | ||
* | * 在{{csgo}}的{{ent|LightmappedGeneric}}中无法使用{{L|$detail#Parameters and Effects|$detailblendmode}} 9。 | ||
* | * 在{{csgo}}的{{ent|VertexLitGeneric}}中无法使用{{L|$detail#Parameters and Effects|$detailblendmode}} 5、6、8、9、10和11。若启用{{ent|$phong}}则5和6可用。 | ||
* | * 在{{src13}}{{tf2}}{{as}}的{{ent|VertexLitGeneric}}中无法使用{{L|$detail#Parameters and Effects|$detailblendmode}} 5-11。若启用{{ent|$phong}}则5和6可用。 | ||
* | * 在{{src13}}{{tf2}}{{as}}{{csgo}}中{{L|$detail#Parameters and Effects|$detailtint}}无效。 | ||
* {{ent|$distancealpha}} | * {{ent|$distancealpha}}、{{ent|$outline}}、{{ent|$softedges}}无效。 | ||
* | * 在{{ent|LightmappedGeneric}}中无法与{{ent|$basealphaenvmapmask}}共用。 | ||
}} | }} | ||
== | ==基础语法== | ||
<syntaxhighlight lang=php highlight=5> | <syntaxhighlight lang=php highlight=5> | ||
LightmappedGeneric | LightmappedGeneric | ||
Line 37: | Line 37: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== | ==附加参数== | ||
{{ | {{MatParamDef|$bumptransform|matrix|对凹凸贴图纹理进行矩阵变换。{{todo|是否必须DX9?在DX8回退着色器中存在。}} | ||
: {{bug| | : {{bug|与{{ent|$detail}}共用时失效。在{{csgobranch}}中有效。}} | ||
{{VMT UVtransform}}|dx9=1}} | {{VMT UVtransform}}|dx9=1}} | ||
{{ | {{MatParamDef|$bumpframe|int|设置动画凹凸贴图的起始帧。}} | ||
{{ | {{MatParamDef|$nodiffusebumplighting|bool|禁用凹凸贴图对材质{{L|albedo|反照率}}光照的影响,有助于缓解{{L|Material optimization#Overdraw|过度绘制}}。不影响{{L|specular|高光贴图}},适用于平面表面的扭曲反射效果。 | ||
: {{bug| | : {{bug|在{{src07|2}}之后版本失效.{{confirm}}}} | ||
: {{note| | : {{note|在{{game link|Source 2013}}中可与{{L|$ssbump}}共用,但常规法线贴图无效。需更多测试?}} | ||
|shaders=LightmappedGeneric, Lightmapped_4WayBlend, WorldVertexTransition}} | |shaders=LightmappedGeneric, Lightmapped_4WayBlend, WorldVertexTransition}} | ||
{{ | {{MatParamDef|$ssbump|bool|将凹凸贴图标记为自阴影贴图。点击查看详情。|since={{src07}}|shaders=LightmappedGeneric, Lightmapped_4WayBlend, WorldVertexTransition}} | ||
{{ | {{MatParamDef|$forcebump|bool|0:根据显卡支持情况启用凹凸贴图;1:始终强制启用。|dx8=1|removed={{l4d}}}} | ||
{{ | {{MatParamDef|$bump_force_on|bool|强制启用凹凸贴图,即使低端设备也生效。|since={{portal2}}|shaders=LightmappedGeneric, Lightmapped_4WayBlend, WorldVertexTransition}} | ||
{{ | {{MatParamDef|$addbumpmaps|bool|在{{ent|LightmappedGeneric}}中启用双凹凸贴图混合。|only={{csgobranch}}|shaders=LightmappedGeneric}} | ||
{{ | {{MatParamDef|$bumpmap2|texture|第二张凹凸贴图,用于{{ent|WorldVertexTransition}}或{{csgobranch}}中<code>LightmappedGeneric</code>的凹凸贴图混合。|dx9=1|shaders=LightmappedGeneric, Lightmapped_4WayBlend, WorldVertexTransition}} | ||
{{ | {{MatParamDef|$bumpframe2|int|同<code>$bumpframe</code>,但作用于第二张凹凸贴图。|dx9=1|shaders=LightmappedGeneric, Lightmapped_4WayBlend, WorldVertexTransition}} | ||
{{ | {{MatParamDef|$bumptransform2|matrix|同<code>$bumptransform</code>,但作用于第二张凹凸贴图。 | ||
: {{Note| | : {{Note|若<code>LightmappedGeneric</code>着色器使用<code>$addbumpmaps</code>,则{{ent|$detail}}配合<code>$detailscale</code>会覆盖此参数。}}|dx9=1|shaders=LightmappedGeneric, Lightmapped_4WayBlend, WorldVertexTransition}} | ||
{{ | {{MatParamDef|$bumpmask|texture|使用两张凹凸贴图时,可用第三张凹凸贴图作为基底,其alpha通道作为前两张的遮罩。<code>$bumpmask</code>的alpha通道也用作高光遮罩。 | ||
: {{note| | : {{note|仅被{{hl2}}的<code>materials/nature/toxicslime002a</code>使用。}} | ||
: {{note| | : {{note|与{{ent|$detail}}和{{ent|$seamless_scale}}不兼容。}}|dx9=1|shaders=LightmappedGeneric}} | ||
{{ | {{MatParamDef|$bumpdetailscale1|and=$bumpdetailscale2|normal|设置第一、第二张凹凸贴图在混合时的强度。|only={{csgobranch}}|shaders=LightmappedGeneric}} | ||
== | ==控制台命令== | ||
{{ | {{Varcom|start}} | ||
{{ | {{Varcom|mat_fastnobump||bool|快速切换法线贴图启用状态。}} | ||
{{ | {{Varcom|mat_normalmaps||bool|将所有材质的凹凸贴图显示在{{L|diffuse|漫反射}}贴图位置。}} | ||
{{Varcom|mat_bumpmap|1|bool|启用/禁用法线贴图。}} | |||
{{Varcom|end}} | |||
== | ==另见== | ||
* {{ent|$ssbump}} | * {{ent|$ssbump}} | ||
* {{L|Bump map}} | * {{L|Bump map|凹凸贴图}},了解技术细节与制作指南。 |
Latest revision as of 12:10, 23 August 2025

This page needs to be translated.
This page either contains information that is only partially or incorrectly translated, or there isn't a translation yet.
If this page cannot be translated for some reason, or is left untranslated for an extended period of time after this notice is posted, the page should be requested to be deleted.
Also, please make sure the article complies with the alternate languages guide.
This page either contains information that is only partially or incorrectly translated, or there isn't a translation yet.
If this page cannot be translated for some reason, or is left untranslated for an extended period of time after this notice is posted, the page should be requested to be deleted.
Also, please make sure the article complies with the alternate languages guide.
$bumpmap
是一个材质着色器 参数,可在所有的 起源 游戏中使用。

材质的漫反射贴图 (左)与其法线贴图对比。
该参数指定为材质提供三维光照信息的纹理 。该纹理属于凹凸贴图 ,但其应用过程被称为 法线贴图。不过这两个术语常被混用。

$bumpmap
会在所有
由于顶点中未存储足够的法线贴图数据,引擎只能回退处理。



$bumpmap
不适用于光照反射。请改用$normalmap
。
- 在
Water
着色器中,$bumpmap
用于DX8的du/dv贴图 。请改用$normalmap
。 - 除
CS:GO 引擎分支外,贴花纹理无法使用凹凸贴图。
- 在VertexLitGeneric中使用$lightwarptexture会强制启用凹凸贴图,即使VMT中未声明
$bumpmap
。此时会绑定默认贴图,所有$bumpmap
相关限制仍适用。

$bumpmap
会导致部分参数失效。受影响参数包括(但不限于):
- 与使用$envmapmask的材质不兼容。VertexLitGeneric
和LightmappedGeneric
除外。详见替代方案 。
- 在
的LightmappedGeneric中无法使用$detailblendmode 9。
- 在
的VertexLitGeneric中无法使用$detailblendmode 5、6、8、9、10和11。若启用$phong则5和6可用。
- 在
的VertexLitGeneric中无法使用$detailblendmode 5-11。若启用$phong则5和6可用。
- 在
中$detailtint 无效。
- $distancealpha、$outline、$softedges无效。
- 在LightmappedGeneric中无法与$basealphaenvmapmask共用。
基础语法
LightmappedGeneric
{
$basetexture brick/brickwall021a
$surfaceprop brick
$bumpmap brick/brickwall021a_normal
}
附加参数
对凹凸贴图纹理进行矩阵变换。
待完善: 是否必须DX9?在DX8回退着色器中存在。
- The default position is center .5 .5 scale 1 1 rotate 0 translate 0 0.
- center defines the point of rotation. Only useful if rotate is being used.
- scale fits the texture into the material the given number of times. 2 1 is a 50% scale in the horizontal X axis while the vertical Y axis is still at original scale.
- rotate rotates the texture counter-clockwise in degrees. Accepts any number, including negatives.
- translate shifts the texture by the given numbers. .5 will shift it half-way. 1 will shift it once completely over, which is the same as not moving it at all.
注意:All values must be included!
错误:Scaling the texture may cause odd issues where the Texture Lock tool in Hammer will not actually lock the texture in place. [todo tested in ?]
错误:Rotating textures applied on brushes will rotate around the map origin (confirm: Orangebox engine only?). A fix for this is to change the center position in the VMT to the brush's origin. [todo tested in ?]
$bumpframe <整数 >
设置动画凹凸贴图的起始帧。
Shader(s): LightmappedGeneric, Lightmapped_4WayBlend, WorldVertexTransition
Shader(s): LightmappedGeneric, Lightmapped_4WayBlend, WorldVertexTransition
将凹凸贴图标记为自阴影贴图。点击查看详情。
0:根据显卡支持情况启用凹凸贴图;1:始终强制启用。
Shader(s): LightmappedGeneric, Lightmapped_4WayBlend, WorldVertexTransition
强制启用凹凸贴图,即使低端设备也生效。
Shader(s): LightmappedGeneric
在LightmappedGeneric中启用双凹凸贴图混合。
Shader(s): LightmappedGeneric, Lightmapped_4WayBlend, WorldVertexTransition
Shader(s): LightmappedGeneric, Lightmapped_4WayBlend, WorldVertexTransition
同
$bumpframe
,但作用于第二张凹凸贴图。
Shader(s): LightmappedGeneric, Lightmapped_4WayBlend, WorldVertexTransition
同
$bumptransform
,但作用于第二张凹凸贴图。
注意:若
LightmappedGeneric
着色器使用$addbumpmaps
,则$detail配合$detailscale
会覆盖此参数。
使用两张凹凸贴图时,可用第三张凹凸贴图作为基底,其alpha通道作为前两张的遮罩。
$bumpmask
的alpha通道也用作高光遮罩。
注意:与$detail和$seamless_scale不兼容。
Shader(s): LightmappedGeneric
设置第一、第二张凹凸贴图在混合时的强度。
控制台命令
控制台变量/命令 | 参数或默认值 | 描述符 | 效果 |
---|---|---|---|
mat_fastnobump | bool | 快速切换法线贴图启用状态。 | |
mat_normalmaps | bool | 将所有材质的凹凸贴图显示在漫反射 贴图位置。 | |
mat_bumpmap | 1 | bool | 启用/禁用法线贴图。 |