还在魔改UE4?GPU现已支持在UE4中生成光线追踪焦散效果

2021-02-03 09:47:18

焦散是现实世界中常见的光学现象,从水面闪烁的浪花到透明玻璃背光的弧形高光,无处不在。

但是,在3D图形中精确模拟焦散并非易事。那些参与创建光线追踪渲染器的人,可能会知道要模拟焦散的话,困难重重:要追踪从高度抛光的表面反射回来或多次穿过透明物体的光线,计算会变得很耗时,并且调整这种非直观的设置需要艺术家要付出额外的努力。

如今的游戏引擎是基于光栅化管道的,开发人员通常会选择忽略焦散线,或者是用其他“作弊”的方式来进行焦散造假,让渲染图看起来逼真。

近年来,GPU光线追踪的出现,为加速“光子映射(photon mapping)”(或“光子贴图”)的实时渲染来了可能性。(光子映射是用于渲染精确焦散的最流行技术。)

从那时起,英伟达就开发了一些使用快速GPU光子映射生成焦散的新方法。这些开发工作是在虚幻引擎4上实现的,终端用户使用虚幻引擎产品就可以得到焦散的效果,同时,还可以享受一些开源的资源库。

焦散效果集中在两个方面:

1、金属和透明网格周围的精细焦散,称为网格焦散(mesh caustics)(如图1)

2、水面上方和下方的焦散,强调流体运动并能够覆盖大面积,称为水体焦散(water caustics)(如图2)

两种方法对于高帧率使用都是低成本的,与动态环境完全交互,并且无需数据预处理即可使用。

还在魔改UE4?GPU现已支持在UE4中生成光线追踪焦散效果

图1-1. UE4编辑器中的网格焦散截图。此图为Gilles Tran提供的经典“ POV-Ray玻璃”中的玻璃焦散线,其中焦散线和玻璃网格是通过12次的折射和反射来追踪的光线。

还在魔改UE4?GPU现已支持在UE4中生成光线追踪焦散效果

图1-2. UE4编辑器中的网格焦散截图。此图为一个简单的测试场景,显示了通过多个棱镜的色散效果。

还在魔改UE4?GPU现已支持在UE4中生成光线追踪焦散效果

图2. 水体焦散截图。上面是游泳池的UE4测试场景,下面是海边城镇场景,被海面覆盖。在两个场景中,都可以在水面(反射)和水下(折射)看到焦散。

今天,我们就先来看看网格焦散如何实现?

一、网格焦散

英伟达从一种称为光子溅射(photon splatting)的光传播方法的类别开始,通过重构技术来模拟网格焦散,这是经典光子映射的一种变体。

最初,光子映射使用的方法有两个阶段:

跟踪阶段(Tracing】从光源到场景的光粒子(即光子)的正向跟踪。

密度估计阶段(Density estimation)】在表面上的指定点周围计算光子的密度,以进行照明信息重建。

在英伟达的解决方案中,第二阶段被替换为了光子溅射。它没有找出局部光子密度,而是在光子撞击不透明表面后使用加色混合的方法直接绘制颜色。

与传统方法相比,喷溅具有多个优点。它使用GPU光栅化来加快速度,只需要简单的数据结构就可以来存储光子了,最重要的是,它允许与光子微分耦合,这是一种以较低的计算成本提高图像质量的重要技术。

| 在UE4中使用网格焦散 |

Beta版发布通知:本文中讨论的参数,编辑UI和命令行在最终发布版本中可能会更改。在使用焦散功能之前,请确保已正确配置UE4中的光线追踪设置。

要在UE4编辑器中启用网格焦散,请首先完成以下设置:

1、检查当前post-process volume 后期盒子」中的「Ray Tracing Mesh Caustics 光线追踪网格焦散」是否勾选,选择启用打开网格焦散效果

2、勾选光源属性表中的「Cast Mesh Caustics 投射网格焦散」,选择用于投射焦散的光源。

3、选择网格并导航至材质来选择要产生焦散的对象。如果材质是透明的,则将材质编辑器打开到Details 详细信息选项卡,并勾选Cast Ray Traced Reflection Caustics 投射光线追踪反射焦散「Cast Ray Traced Refraction Caustics 投射光线追踪折射焦散」

配置完这些设置后,下图显示可以在玻璃和金属物体周围看到默认的焦散效果。大多数光属性(包括强度,颜色,纹理蒙版和衰减)都会对焦散的外观产生直接影响。到目前为止,支持四种类型的光源:平行光、点光源、聚光灯、区域光。在同一视图中,最多可以有八个灯光投射焦散。

来看看启用焦散效果的步骤:

还在魔改UE4?GPU现已支持在UE4中生成光线追踪焦散效果

最开始是一个简单的组合:一个平行光、一个不透明盒子、一个玻璃球和一个金属球。

还在魔改UE4?GPU现已支持在UE4中生成光线追踪焦散效果

然后,后期盒子、光源和材料都配置了焦散特征,可以在玻璃和金属球体周围分别看到折射和反射的焦散。

还在魔改UE4?GPU现已支持在UE4中生成光线追踪焦散效果

最后,添加了一个点光源以创建一组附加的焦散光线。

除了光源,焦散线的形状、强度和颜色也受到网格材质的基色、不透明度、法线贴图、折射率、粗糙度和金属值的影响。具有较高粗糙度或较低金属值的不透明物体会产生较弱的焦散。透明物体可以投射反射和折射焦散,实现方式:在材质编辑器的「Details 详细信息」选项卡中勾选Cast Ray Traced Reflection Caustics 投射光线追踪反射焦散」「Cast Ray Traced Refraction Caustics 投射光线追踪折射焦散」

「post-process volume 后期盒子」中,还添加了可以调整网格焦散的一组参数:

Intensity 强度】可缩放焦散图案的强度。

Max Trace Depth 最大跟踪深度】限制每条射线的最大反弹次数,这可能会影响光线追踪的性能。

Enable Temporal Filtering 启用时间过滤】可切换时间过滤,从而减少闪烁效果并提高性能。

| 光子调试 |

另外,如要要检查实际的光子密度,在viewport」菜单中,选择View」, Ray Tracing Debug」, Mesh Caustics Debug Data」,然后在post-process volume」中设置调试屏幕数据类型为photon」(见下图)。

还在魔改UE4?GPU现已支持在UE4中生成光线追踪焦散效果

自适应光子大小设置为20(左上)和80(右上) 的对比。第二行显示了光子密度的调试视图。

光线追踪调试菜单也提供了一个嵌入的实时图表来显示前面的帧的总光子数(如下图)。它可以通过在post-process volume后期盒子」中设置Debug Light Data Type调试光数据类型」Photon Count」来打开光子计数。

还在魔改UE4?GPU现已支持在UE4中生成光线追踪焦散效果

总光子数实时图表

| 色散 |

若要启用色散,在材质编辑器的细节选项卡中,在材质编辑器的Details详细信息」选项卡中将Ray Traced Caustics Dispersion Amount光线追踪焦散量」设置为大于0的值即可。为了避免色带分离,需要勾选Ray Traced Caustics Jittered Dispersion射线追踪焦散抖动色散(见下图)。

还在魔改UE4?GPU现已支持在UE4中生成光线追踪焦散效果

模拟光色散。左:分散量设置为0。中间:分散量设置为0.5。右: 启用「Ray Traced Caustics Jittered Dispersion射线追踪焦散抖动色散」后能实现连续频谱。

到这里,你是不是已经能初步做出焦散效果了呢?

电话咨询
最新产品
官方商城
QQ客服