着色器: rendinst_blend_diffuse_decal

概述

此贴花着色器支持反照率、平滑度、金属度和法线贴图。它使用基于存储在反照率 Alpha 通道中的蒙版的混合,其中黑色表示未渲染贴花的区域,而较亮的区域逐渐显示贴花。

参数:

  • script:t="gamma_mask=1,1,0,0" – 控制albedo、法线、平滑度和金属度的强度。

    • 第一个组件配置 albedo/smoothness/metalness。

    • 第二个组件配置 normal。

    • 不使用第三个和第四个组件,但必须指定。

  • script:t="micro_detail_layer=0" – 微细节的标准语法。

  • script:t="micro_detail_layer_uv_scale=9" – UV 缩放以获得微观细节。

  • script:t="micro_detail_layer_v_scale=1" – 用于微细节的垂直刻度。

参数

  • 参数 script:t="gamma_mask=1,1,0,0" – 此参数为不同的贴图(albedo、平滑度、金属度、法线)分别配置遮罩的灰度系数(位于albedo的 Alpha 通道中)。通过配置参数值,您可以控制特定地图的可见性。

较低的 Gamma 设置值会使贴图更明显,而较高的值会使其更不可见。

  • 第一个组件配置 albedo/smoothness/metalness。

  • 第二个组件配置 normal。

  • 不使用第三个和第四个组件,但必须指定。

Important

了解其工作原理非常重要。Gamma 是一个幂函数,我们设置贴花遮罩的像素值提高到的幂。

让我们看一下只有两个边界值(’0’ - 黑色,’1’ - 白色)和一些微弱的灰色描边的贴花蒙版:


当你把 ‘0’ (黑色) 提高到 ‘0.1’ 的幂时会发生什么?你得到 ‘0’。 当你把 ‘1’ (白色) 提高到 ‘0.1’ 的幂时会发生什么?你得到 ‘1’。

我们无法影响 Diffuse 或 Normal,无论我们如何调整这些参数。以下是两个带有示例的屏幕截图:

script:t="gamma_mask=0.1,0.1,0,0"

script:t="gamma_mask=1,1,0,0"

只有字母的边缘会发生变化,由于纹理压缩,其中会出现灰色轮廓。将灰色(大约 ‘0.5’)提高到 ‘0.1’ 会导致大约 ‘0.93’(几乎是白色)。将灰度提高到 ‘1’ 会导致 ‘0.5’ - 将其截断(可能不完全,但很重要)。

但是,此设置不会全局影响纹理通道。

现在,让我们将白色值从 ‘1’ 减少到大约 ‘0.8’:


script:t="gamma_mask=0.1,0.1,0,0"

script:t="gamma_mask=1,1,0,0"

在灰度系数值最小时,贴花周围的边缘会变厚,因为由于纹理压缩,像素化的信息会更多。

Gamma 值越高,设置的效果就越明显。例如,贴花开始与波纹表面混合,从而允许法线贴图显示出来。如果我们进一步增加法线的 Gamma(例如,增加到 ‘4’),文本将更紧密地贴合波纹表面。

script:t="gamma_mask=1,4,0,0"


总结: 任何 “调整” 只有在它们能够真正影响某事时才有效。如果纹理具有边界值,则无需 “调整” 任何内容。

Important

强烈建议避免在贴花纹理中使用边界值,因为这使我们能够在更广泛的场景中应用它们。

  • Microdetail 参数

此着色器支持 microdetails替换为基于 daNetGame 的项目中使用的标准语法。

  • script:t="micro_detail_layer=0"

  • script:t="micro_detail_layer_uv_scale=9"

  • script:t="micro_detail_layer_v_scale=1"