# 着色器: rendinst_parallax_ice ## 概述 顾名思义,此着色器旨在使用视差效果模拟半透明冰。它既可以应用于平铺纹理 (如结冰的湖面),也可以应用于独特资源(如雕刻的冰山)。 此着色器以类似于 [rendinst_perlin_layered](rendinst_perlin_layered.md) 着色器的方式混合两个细节图层,但没有基于高度的渐变。第三个细节图层的混合方式不同,仅使用其漫反射纹理,该纹理偏移到表面中,并被混合细节图层的法线折射。 此着色器使用单个 UV 通道,就像 [rendinst_mask_layered](./dng-shaders/rendinst_mask_layered.md) 一样,并且适用于相对平坦的表面。在有机形状上使用它可能会导致视觉故障,因此建议使这些区域不透明。 ## 必需的纹理 - `tex0`: D1 Diffuse (RGB) + HeightMap (Alpha) - `tex1`: Diffuse of the internal layer (RGB) - `tex2`: D1 Normal (RG) + Glossiness (A) - `tex3`: D2 Diffuse (RGB) + HeightMap (Alpha) - `tex4`: D2 Normal (RG) + Glossiness (A) ## 可选纹理 - `tex5`: D1 透明度蒙版。如果存在,则此蒙版用于与内部图层混合,而不是漫反射 Alpha。如果细节需要完全透明或不透明,则可以使用黑色或白色占位符。 - `tex6`: D2 透明度蒙版。用法类似于 `tex5`。 - `tex7`: 细节混合蒙版。 ```{important} `.folder.blk`中的所有蒙版都必须具有`gamma=1`才能正确作。 ``` - `VertexColor`: 如果可用,则用于强制内部图层在黑色区域中变得不透明,而白色区域保持不变。这对于处理冰块的边缘以避免角落处出现伪影非常有用。 **仅选中红色通道**,但为简单起见,它在示例中显示为黑色和白色。
## 参数 **Color:** - `inner_layer_depth`: 表面与内层之间的距离。 `min=0.0`(无效果)。默认值:'`0.1`'
- `inner_layer_mul`: 内部图层的漫反射颜色的乘数,控制亮度。违约:`1.0`
- `inner_layer_power`: 乘法后应用于内部图层颜色的指数,用于调整对比度。违约: `1.0`
增加 '`power`' 和 '`mul`' 值可以产生不真实但具有艺术感的效果,例如增强的对比度和颜色饱和度,从而产生发光的外观。请谨慎使用这些设置。下面是一个 '`power=3`' 和 '`mul=3`' 的极端例子:
- `vcol_masked_mul`: VertexColor 中标记为白色的区域中的混合细节图层的亮度乘数。 - `vcol_masked_power`: 相同混合细节图层的对比度指数。 - `ior`: Index of refraction,控制细节层的法线扭曲内部层漫反射的程度。`min=1.0`(无效果),默认值:`1.31`. 从左到右:`ior=1.0`(无折射)、`1.31`(冰的物理精度)和夸张的`4.0`。其他参数(包括 `depth`)是相同的。
默认情况下,着色器对冰使用物理上准确的值,但您可以调整 '`ior`' 以削弱或夸大效果,以便进行视觉目的。 调整 '`depth`' 也是必要的,因为增加 '`ior`' 不仅会因细节法线而加剧内部图层的扭曲,还会使其在视觉上更接近表面。 左侧:`ior=1.31`(默认)和 `depth=0.1`。右侧:`ior=4.0`和`depth=1`。这些在物理上并不准确,但可用于艺术效果。内层变得不那么明显,这有时是可取的。

ior=1.31 and depth=0.1

ior=4.0 and depth=1

**纹理坐标:** - `inner_layer_tile_uv`: 内层的平铺。 - `inner_layer_u_offset`: 水平偏移。 - `inner_layer_v_offset`: 垂直偏移。 - `detail1_tile_uv` - `detail1_u_offset` - `detail1_v_offset` - `modify_detail1_mask_uv`: 控制是否通过上述三个参数调整此细节的透明度蒙版 UV。默认值:`1`。如果蒙版是专门为资源绘制的,则这非常有用,因此平铺/偏移调整不会破坏蒙版。 - `detail2_tile_uv` - `detail2_u_offset` - `detail2_v_offset` - `modify_detail2_mask_uv` **Micro Details:** - `micro_detail_layer1`: 第一个微细节图层的索引。 - `micro_detail_layer1_uv_scale`: 第一个微细节图层的平铺。 - `micro_detail_layer2`: 第二个微细节图层的索引。 - `micro_detail_layer2_uv_scale`: 第二个微细节图层的平铺。 **Masks:** - `mask_gamma`: 工作方式与 [rendinst_perlin_layered](./rendinst_perlin_layered.md) 中相同。前两个值控制细节蒙版的灰度系数,第三个值不执行任何作(因为没有第三个细节),第四个值设置 Perlin 杂色的平铺。 默认值: `1.0, 1.0, 0.0, 0.1`. - `heightmaps_invert`: 前两个值控制细节混合蒙版的反转,第二对值控制这些细节的透明度蒙版的反转。默认值: `0,0, 0,0`.