# 着色器: rendinst_refraction ## 概述 此着色器专为具有折射效果的玻璃表面而设计。 这是一个计算成本高昂的着色器,具有多个限制,因此请谨慎使用。 - **Z 缓冲区限制:** 当具有此着色器的多个资产重叠时,着色器无法正确排序 - 多边形的绘制顺序可能不正确,离摄像机更近的几何体可能会显得更远,反之亦然。 重叠多边形也无法正确折射。 - **屏幕空间限制:** 着色器会影响整个渲染图像,无论几何体是在折射表面的后面还是前面。因此,例如,武器和角色的手也会被折射,因此最好不要使用太强的视差效果,以使这种限制不那么明显。 **建议**: - 将此着色器应用于封闭空间内的单个对象。 - 仔细定位对象以避免在帧中重叠,因为此着色器不适用于具有分层玻璃效果(例如,“水晶宫殿”设置)的场景。 - 如果使用玻璃墙或门,请谨慎使用它们,并规划布局 避免连续穿过多个玻璃物体的视线。 ## Textures - **_tex_d.tif** - **RGB** – Glass color - **A** – Opacity map - **_tex_n.tif** - **RG** – 反射和视差偏移方向的法线 - **B** – 视差的高度贴图 - **A** – 平滑度贴图,它还控制玻璃后面对象的模糊 ## 参数 - `script:t="isShell=1"` – 锐角处的折射强度 - `script:t="max_thickness=0.5"` – 最大视差厚度 - `script:t="min_thickness=0.01"` – 最小视差厚度 - `script:t="is_window=1"` – 窗玻璃参数 ## Albedo 和 Opacity Maps ```{note} 玻璃颜色用作乘数,这意味着颜色也会影响透明度。 ``` ## 法线贴图和平滑度 法线贴图会修改玻璃表面,从而影响视差(垂直和水平)的强度和反射。 平滑度也会改变表面特性。随着反射宽度的变化,折射图像(表面后面的对象)的模糊强度也会发生变化。 ## 高度图 高度贴图定义表面深度的视差强度。最佳做法是将深度范围从 '0' 到 '255' 进行烘焙。视差强度通过着色器参数单独控制。 这两个插图都具有基于法线贴图的视差。在第二个版本中,高度贴图增加了更明显的深度,尤其是在更锐利的角度下。 ```{note} 高度贴图不必与法线贴图完全对应。您可以向高度贴图添加其他元素以获得更多样化的视差效果,同时保持法线平滑,模拟玻璃背面而不是正面的不均匀性。 ``` ## Thickness 此参数定义玻璃折射的深度。深度越大,最小高度和最大高度之间的差异越大,折射效果越强。 ```{note} 折射还将影响位于表面和摄像机之间的对象,例如武器或角色手。折射越强,效果就越明显。 ```

script:t="max_thickness=0.001"
script:t="min_thickness=0"

script:t="max_thickness=1"
script:t="min_thickness=0.01"

script:t="max_thickness=5"
script:t="min_thickness=0.01"

## isShell 参数 'isShell' 参数控制较锐角的视差深度强度。 对于门、玻璃或桌面等平面,设置 'isShell=0'。用于曲面 灯泡、瓶子或罐子等表面,设置 'isShell=1'。虽然中间值是可能的,但请注意,它们并不反映物理精度。 此外,增加视差强度将使表面和摄像机之间的对象在折射效果中更加突出。

script:t="max_thickness=0.001"
script:t="isShell=0"

script:t="max_thickness=1"
script:t="isShell=1"

script:t="max_thickness=5"
script:t="isShell=3"

## is_window 参数 'is_window' 参数在大多数玻璃着色器中很常见,但在此着色器中默认处于禁用状态: `script:t="is_window=0"` 对于位于“envi_probe”边界的玻璃,启用此参数,玻璃需要反射两种环境 - 一侧是室内反射(由 enviro-probe 捕获),另一侧是室外反射。 对于仅在室内或室外使用的对象,如玻璃器皿、灯笼罩或车窗,请保持禁用此参数。 ## 示例 在下面的存档中,您可以找到模型示例、纹理、高多边形资产和包含各种贴图的“.psd”文件:[下载示例](https://drive.google.com/file/d/1LtmVeWd4o0ZKU37uaoL0uPWKzTW4PkKl/view?usp=drive_link)。