使用像素法线偏移实现折射

材质中像素法线偏移折射模式总览。

Choose your operating system:

Windows

macOS

Linux

在虚幻引擎 4 的当前版本中,我们使用了折射的非物理模型 像素法线偏移(Pixel Normal Offset) 。 内嵌代码使用 Index of Refraction 的折射物理模型,以光线在媒介之间的折射方式为基础,可能导致大量穿帮(因为场景颜色在屏幕外读取)。 可用于玻璃罐之类的小型物体(效果不甚明显),但在平面上存在问题。 像素法线偏移(Pixel Normal Offset) 可为水面之类的大型平面启用折射,此处常量偏移不会从远离屏幕之外之处进行读取。 它以顶点法线作为参考,然后通过逐像素法线和顶点法线之间的差别计算折射偏移,使这些平面不会移位。

折射的物理和非物理模型

在下方的对比中, Index of Refraction 物理模型的折射模式和 Pixel Normal Offset 的非物理模型展示了材质中 法线读取方式的差异。

可阅读 使用折射 页面,了解折射物理模型的更多内容,以及如何结合材质使用。

RefractionSettingIOR.png

RefractionSettingPNO.png

折射设置的物理模型:无法线贴图 Index of Refraction

折射设置的非物理模型: Pixel Normal Offset

折射模式:无法线贴图 Index of Refraction

折射模式:无法线贴图 Pixel Normal Offset

在此处对比 Index of Refraction 模式和 Pixel Normal Offset 模式(不从屏幕过远的地方进行读取)后, 即可发现图像出现移位。 Index of Refraction 无需法线贴图插入材质即可使用;而 Pixel Normal Offset 没有法线贴图则无法获得折射。

折射模式: 带法线贴图 Index of Refraction

折射模式: 带法线贴图 Pixel Normal Offset

添加法线贴图到材质时,大于 1 的折射值插入 Refraction 输入;使用 Pixel Normal Offset 后法线将沿表面平移。 然而你会注意到使用 Index of Refraction 后仍然会从屏幕外读取偏移,对使用折射的平面而言并非理想效果。

最终结果

在此示例中,折射量在值 1.0(完全无折射)到 2.0 之间调整, 使用 Pixel Normal Offset 时沿表面形成一些折射而不使图像发生移位。

欢迎帮助改进虚幻引擎文档!请告诉我们该如何更好地为您服务。
填写问卷调查
取消