# 着色器系列: rendinst_layered ## 概述 在撰写本文时,`rendinst_layered`系列包括四个着色器: - [`rendinst_layered`](#rendinst_layered): 系列的基础着色器。 - [`dynamic_layered`](#dynamic_layered): 专为 destrs 设计的动态版本。 - [`rendinst_layered_atest`](#rendinst_layered_atest): 支持对细节纹理进行 alpha 测试的版本。 - [`rendinst_layered_hmap_blend`](#rendinst_layered_hmap_blend): 包含高度贴图混合功能的版本。 让我们检查一下每个着色器的参数。 ## rendinst_layered ```{seealso} 有关详细信息,请参阅[rendinst_layered](rendinst_layered.md) 着色器。 ``` ## dynamic_layered 此着色器的功能类似于`rendinst_layered`,但它针对动态对象 (destrs) 进行了优化。 ## rendinst_layered_atest 此版本支持对一个或两个细节纹理进行 alpha 测试。 ### 参数 - `blended_atest`: 0/1 (禁用/启用) - `detail1_atest_weight`: 第一个细节纹理的 Alpha 测试级别(默认值:127) - `detail2_atest_weight`: 第二个细节纹理的 Alpha 测试级别(默认值:127) ## rendinst_layered_lightmap 这是标准的 `rendinst_layered` 着色器,增加了对自发光贴图的支持。 ```{seealso} 有关详细信息,请参阅[rendinst_layered_lightmap](rendinst_layered_lightmap.md)着色器。 ``` ## rendinst_layered_hmap_blend 此版本引入了高度贴图混合功能,允许在模型和地形之间无缝过渡。它还支持使用自上而下的投影将裁剪图投影到模型上。裁剪图通过两个图层混合到材质中:第一个图层从地面混合到指定高度,第二个图层在具有正法线的水平表面上应用 Perlin 噪声遮罩,也可以通过与地面的距离进行修改。 此着色器非常适合岩石、悬崖和碎屑堆等需要融入地形或隐藏与地面接缝的对象。 以下是说明该效果的屏幕截图:

Without heightmap blend

With heightmap blend

Without clipmap projection

With clipmap projection

### 参数 ```{note} `hmp_blend_height`参数已弃用!如果您遇到它,请将其删除。 ``` - `land_blend_dist`: 指定裁剪图混合的第一个图层从地面开始的高度(以米为单位)。如果未指定,则默认值为 0.3 米。 - `land_perlin_height`: 指定裁剪图投影的第二个图层的最大高度(以米为单位),该图层使用 Perlin 噪声并应用于具有正法线的水平表面。 - `land_perlin_scale`: 控制 Perlin 杂色的比例。值越低,杂色越粗糙。从值 0.2 开始进行优化。 - `land_perlin_blend`: 定义 Perlin 噪声从 `land_blend_perlin_height` 参数开始从 1 到 0 淡化的范围(以米为单位)。例如,如果 `land_blend_perlin_height` 设置为 20 米,并且您希望 Perlin 噪声在离地面 1 米处开始淡化,请将 `land_blend_perlin_blend` 设置为 19。 - `land_blend_normal_start`: 裁剪图投影开始的法线值。默认值为 1。大于 1 的值会降低完全水平表面上的不透明度。 - `land_blend_normal_end`: 裁剪图投影结束的法线值。默认值为 0.5。 下图显示了 Perlin 噪声强度梯度如何从 `land_blend_perlin_height`(上限) 到 `land_blend_perlin_blend` (下限) 运行:
### 盐沉积物 `rendinst_layered_hmap_blend`着色器通常用于岩石和悬崖。它包括一个名为 Salt Sediments (盐沉积物) 的功能,用于模拟水线痕迹、铁锈或藻类生长等效果。此效果如下所示:
在上面的示例中,使用了以下纹理:
此纹理具有控制透明度的 Alpha 通道。它替换了第一个细节纹理和叠加层的组合反照率。 ```{note} 它仅影响第一个细节纹理。 ``` 在该示例中,效果在石头上可见,但橙色苔藓(第二个细节纹理)保持不变。 使用叠加层的 AlbedoAO 减去纹理,并在水位以下无限向下拉伸。如果不需要此效果,请将纹理中像素的底部两行完全透明。
**参数:** 在`level.blk` 中,设置以下内容: - `saltSedimentsStart:r=-0.25`: 沉淀物效果的起始高度。 - `saltSedimentsEnd:r=4`: 沉淀物效果的结束高度。 - `saltSedimentsTile:r=15`: 纹理的水平平铺比例(以米为单位)。 - `saltSedimentsTex:t="waterline_grdnt_a_tex_d"`: 投影纹理的名称。 着色器还支持可选命令: - `script:t="salt_sediments_opacity=1"`: 控制纹理的 Alpha 通道的乘数。您可以使用其他值,但通常没有必要。