着色器: 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”文件:下载示例