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

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

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 时沿表面形成一些折射而不使图像发生移位。

标签
Select Skin
Light
Dark

欢迎来到全新虚幻引擎4文档站!

我们正在努力开发新功能,包括反馈系统,以便您能对我们的工作作出评价。但它目前还未正式上线。如果您对此页面有任何意见与在使用中遭遇任何问题,请前往文档反馈论坛告知我们。

新系统上线运行后,我们会及时通知您的。

发表反馈意见