$detail
$detail是一个材质着色器参数,可在所有的
起源 游戏中使用。 指定了一个纹理,当材质被近距离观察时,Source引擎将使用它通过适当地加深或减轻反照率来增加材质的高分辨率细节,具体取决于$detailblendmode。您还可以使用全彩色(而非灰度)图像,并通过$detailblendmode 2进行混合。这种方法非常有效,可以增加纹理的表观分辨率,并广泛应用于半衰期2:第二章以及传送门2中的白瓷砖纹理凸起效果。
$detail纹理在与某些参数结合时不起作用:
- 在



中,使用LightmappedGeneric时,与$seamless_scale不兼容。 - 在



中,使用VertexLitGeneric时,与$selfillumfresnel不兼容(如果使用了$bumpmap)。 - 在


中,使用LightmappedGeneric时,与$lightwarptexture不兼容。
注意:
- 在
中,LightmappedGeneric似乎根本没有$lightwarptexture参数,因此不能“不起作用”。 - 在

中,使用VertexLitGeneric时,与$desaturatewithbasealpha不兼容。 - 在
中,与$blendmodulatetexture和$bumpmap不兼容。
- 在
- 待完善: 记录其他Source分支的相关问题。
错误:在使用$detail和$blendmodulatetexture时会导致图形问题(表面出现条纹),仅在
和
中能正常工作。 [todo tested in ?]
语法
$detail <texture>
您可能需要至少使用$detailscale(详见下文)。
参数和效果
{{MatParam |$detailblendmode| int | 细节材质与漫反射或反照率的结合方式。
- 可以使用12种不同的细节混合方法,但并非所有模式都适用于所有着色器(详见下文)。
- 混合模式在

stdshaders/common_ps_fxc.h中实现。
| 模式 | 效果 | 描述 |
|---|---|---|
| 0 | DecalModulate | 此模式与DecalModulate着色器功能相同——颜色低于128会使图像变暗,高于128会使图像变亮。
|
| 1 | 加法模式 | 细节纹理的颜色会添加到基础纹理上。这与$additive类似,但它会受到光照的影响(参见模式5)。 |
| 2 | 半透明细节 | 细节纹理作为半透明覆盖层应用于基础纹理之上。 |
| 3 | 混合因子渐隐 | 细节纹理作为半透明覆盖层应用,但忽略其Alpha通道,而是使用混合因子来决定基础纹理的显示程度。 |
| 4(?) | 半透明基础 | 实质上颠倒了两种纹理的正常叠加顺序。细节纹理显示在“下方”,基础纹理的Alpha通道控制其作为半透明覆盖层的效果。细节纹理的Alpha通道控制整体材质的Alpha值——用于半透明、遮罩或其他用途。$basetexture。 |
| 5 | 无光照加法 | 细节纹理的颜色与基础纹理以模式1相同的方式相加,但细节纹理的颜色不受光照影响,因此看起来会发光。 |
| 6 | 无光照加法阈值渐隐 | 类似于模式5,但首先根据混合因子是否高于0.5来以两种模式修改添加的颜色。 澄清: 如何修改? |
| 7 | 双模式DecalModulate | 仅使用细节纹理的红色和Alpha通道。与DecalModulate着色器或模式0类似,但基础纹理的Alpha通道会在使用红色(0)或Alpha(255)细节通道作为调制源之间进行渐隐。这实质上允许两个细节材质,但两者都是灰度的。
|
| 8 | 乘法模式 | 基础通道的颜色乘以细节纹理的颜色。 |
| 9 | 基础遮罩通过细节Alpha | 仅使用细节的Alpha通道,并将其与基础纹理的Alpha通道相乘,生成最终的Alpha值。 |
| 10 | 自阴影凹凸贴图 | 细节纹理作为(可能额外的)$ssbump凹凸贴图使用。忽略混合因子。
|
| 11 | SSBump反照率 | 类似于环境光遮蔽纹理,使用SSBump纹理。通过计算SSBump的高于平均值的“亮度”实现。
计算公式为 |
| 分支 | 着色器 | 限制 |
|---|---|---|
| |
LightmappedGeneric | 模式1-6和8不支持。 模式9无法与$bumpmap、$envmap、$selfillum一起使用。 |
| |
WorldVertexTransition | 模式1-6、8-9不支持。 模式7无法与$blendmodulatetexture一起使用。 |
| |
VertexLitGeneric | 模式10和11不支持。 模式0-4和7始终有效(无论是否有$bumpmap)。 模式5和6仅在使用$phong或没有$bumpmap时有效。 模式8和9仅在没有$bumpmap时有效。 |
| |
Lightmapped_4WayBlend | 模式1-6不支持。 |
| |
LightmappedGeneric WorldVertexTransition |
模式2-9不支持。 模式0和1始终有效。 模式10无法与$ssbump一起使用。 {| class="mw-collapsible mw-collapsed" style="background:rgba(0,0,0,0.05) ;float:no;margin-bottom:1em;margin-left:0;padding-right:0.5em;border:1px solid rgba(255,255,255,0.1); border-left:solid 1px #8bb9e0; padding-left:1em;" |+ style="text-align:left; white-space:nowrap; font-weight:bold; color:#ddd; " | 解决方法
| 对于模式2,使用WorldTwoTextureBlend。 |
| |
VertexLitGeneric | 模式10和11不支持。 模式0-4始终有效(无论是否有$bumpmap)。 模式5和6仅在使用$phong或没有$bumpmap时有效。 模式7-9仅在没有$bumpmap时有效。 |
| |
LightmappedGeneric WorldVertexTransition |
模式6不支持。 模式7无法与$bumpmap2、$softedges和$blendmodulatetexture一起使用。 |
| |
所有着色器 | 模式1、4、6、9和10不支持。 |
$detail_alpha_mask_base_texture
WorldVertexTransition 参数
$detailscale2
$detailblendfactor2
$detailframe2
$detailtint2

SolidEnergy 参数
$detail1tint 和 $detail2tint 在此着色器中不存在,因此故意未列出!$detail 的参数名称非常相似,但实际不同!Valve 的细节纹理
Valve 的库存细节纹理(仅限 OB 使用)最好与以下预配置值一起使用:
$detail detail\noise_detail_01 // 例如,用于砖墙、混凝土等... $detailscale 7.74 $detailblendfactor 0.8 $detailblendmode 0
$detail detail\metal_detail_01 $detailscale 4.283 $detailblendfactor 0.65 $detailblendmode 0
$detail detail\rock_detail_01 $detailscale 11 $detailblendfactor 1 $detailblendmode 0
$detail detail\plaster_detail_01 $detailscale 6.783 $detailblendfactor 0.8 $detailblendmode 0
以下参数来自 models\props_forest\LadderWood.vmt。这是 唯一 Valve 股票纹理 VMT 文件使用此特定细节纹理的文件。由于细节纹理(detail\wood_detail_01)为高分辨率(1024×1024),因此 $detailscale 低于其他纹理,除非是 rock_detail_01。
$detail detail\wood_detail_01 $detailscale 2.563 $detailblendfactor 0.8 $detailblendmode 0
此外,还有 2 个其他的库存细节纹理。detail\detailash001a 和 detail\detaildirt001a。这些文件在《泄露版 HL2|2》中以及《HL2 EP1|2》中使用,并且使用以下参数。
Concrete/concretefloor009a 在 Episode One 材料中:
$detail detail/detaildirt001a $detailscale 0.27
Metal/metalfloor005a 在 Episode One 材料中:
$detail detail/detailash001a $detailscale 0.50
另请参阅
隐藏大规模重复图案的细节纹理 - 使用 $detail 使纹理重复现象不那么明显的技巧
