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