153520xo6g7vgq4b1meomw.png

3、Indirect Lighting Cache

对于动态物体,Unreal 4引擎与Unity引擎采用了相似的全局光照算法。在Unreal 4引擎中,可以通过在空间中分布了点云,对间接光照进行采样计算并存储在Indirect Lighting Cache中。然后根据动态物体当前的位置插值计算间接光照。这种方式类似于Unity引擎中的Light Probe,如下图所示:

153520qmmr4eyhdro7d8wm.jpg
其中,左图是Unreal 4引擎中Indirect Lighting Sample的可视化结果,右图是Unity引擎的Light Probe的可视化结果。

Unreal vs Unity 全局光照小结

关于全局光照,Unreal 4引擎和Unity引擎采用的方法比较类似。在渲染预计算光照时,都是对静态物体采用Light Map,对动态物体采用点云(光照探针)。


操作上的不同之处在于Unreal 4引擎需要设置Importance Volume,然后Indirect Lighting Sample会自动分布。Unity引擎需要手动设置Light Probe位置。

三、阴影

Unreal 4引擎中的阴影渲染主要包含两部分:预计算阴影和实时计算阴影。本节接下来的内容将对这两部分分别进行介绍。

1、预计算阴影

Unreal 4引擎的预计算阴影渲染不仅支持不透明物体阴影渲染,而且支持半透明物体阴影渲染。在第一节介绍光源时曾介绍过,渲染不透明物体预计算阴影时,光源的大小会对阴影的软硬程度造成影响。同样,在渲染渲染半透明物体预计算阴影时,光源的大小会影响半透明物体阴影的模糊程度,如下图所示:

153520it6nin7np7nn5egg.jpg (上图取自Unreal 4官方网站)
其中左图是光源较大时的渲染结果,右图是光源较小时的渲染结果。

与Unity引擎中的全局光照系统Enlighten相同,Unreal 4引擎的全局光照系统Lightmass也支持Ambient Occlusion的计算。

2、实时阴影

Unreal 4引擎的实时阴影计算支持:Shadow Map以及Screen Space Ambient Occlusion效果。接下来本文将对它们进行介绍。

Shadow Map

在实时阴影计算时,Unreal 4采用了Shadow Map的方法,如下图所示:

153523nryu6t49zttythwg.jpg
153523d6qlkqzzhkcl7tcl.jpg
其中,上下两图分别是Unreal 4引擎和Unity引擎Directional光源开启Shadow Map阴影效果的设置界面和渲染结果。

对于Directional光源,Unreal 4引擎与Unity引擎同样支持Cascade Shadow Map。并且,通过设置“Dynamic Shadow Distance Stationary Light”可以支持将远处的物体阴影计算逐步用静态阴影替代,从而减少性能开销,如下图所示:

153522vim8iti8min84dxm.jpg
其中,左右两图分别是Unreal 4引擎和Unity引擎的Cascade Shadow设置。

Screen Space Ambient Occlusion

Unreal 4引擎内置支持SSAO的阴影效果,Unity引擎则通过AssetStore中的插件支持该效果[2][3]。如下图所示:

153522osmlvvvhfndf0zns.jpg (上图取自Unreal 4官方网站)
153523tykwcbevwuaxpxcb.jpg (上图取自Unity Asset Store [2])
其中,上排图是Unreal 4引擎SSAO效果,下图是Unity引擎插件SSAO效果。左、中、右图分别为原始结果、SSAO结果以及叠加后结果。

Unreal vs Unity阴影小结

关于阴影渲染,Unreal 4引擎比Unity引擎在预计算阴影渲染中提供了更多的面光源软影功能,以及半透明物体阴影。在实时阴影渲染中,两者提供功能相类似。

四、反射效果

Unreal 4引擎的材质系统在渲染时提供了反射效果,并通过“Metallic”和“Roughness”参数进行控制,如下图所示:


其中,球体的材质属性设置为:Metallic=1,Roughness=0。

但同时,Unreal 4引擎也提供了Reflection Capture Actor抓取场景的Cube Map以提供反射功能。该功能类似于Unity引擎中的Reflection Probe Component。下图是采用Reflection Probe渲染Glossy表面模糊的反射效果:


其中,左右两图分别是Unreal 4引擎和Unity引擎StandardShader采用Metallic=1,Roughness=0.5,并利用Reflection Probe渲染的结果。

Unreal vs Unity反射效果

关于反射效果,Unreal 4引擎的材质系统很好地支持了反射,使得在编辑场景时能够比较真实和直观地得到较好的渲染效果。在Reflection Probe的支持上,Unreal 4引擎和Unity引擎相类似。

五、其他特殊效果

除了基础功能之外,Unreal 4引擎还提供了许多高级的渲染效果。本文选取了其中一部分进行介绍。更加详细的内容请参考Unreal 4官方文档[1]。

1、Capsule Shadows

Capsule Shadow采用capsule近似表示Skeletal Mesh,并利用其渲染Soft Shadow的一种方法,如下图所示:

153524fcg63u6liiudlmly.jpg (上图取自Unreal 4官方网站)
其中,左右两图分别是采用不同大小光源渲染的结果。但是该效果需要DX11以及Compute Shader支持,目前难以在Mobile平台使用。

2、Contact Shadows

Unreal 4引擎中的Contact Shadow用途是提升平面上小突起的阴影质量。其计算方式是对每一个pixel,对每一个光源根据depth buffer的信息计算该pixel是否被遮挡,如下图所示:

153524uoj8evqvsyo0jy00.jpg (上图取自Unreal 4官方网站)
其中,左右两图分别是关闭和开启Contact Shadow的渲染。

3、Light Shaft

Unreal 4引擎原生支持Light Shaft的渲染效果。在Unity中也有类似效果的插件,通常称为God Ray或Light Shaft。Unreal 4引擎中Light Shaft功能实现分两种:Occlusion和Bloom。Occlusion方法渲染结果更加真实,而Bloom方法渲染则容易控制形态,如下图所示:

153525nyzvs010cbyy44bc.jpg (上图取自Unreal 4官方网站)
其中,左右两图分别是Occlusion和Bloom方法渲染的结果。

Unreal vs Unity特殊效果小结

关于特殊效果,Unreal 4引擎比Unity引擎在原生上支持了更多,但Unity引擎通过Asset Store的第三方插件提供了大量效果。Unreal 4引擎中的不少高级渲染效果都需要很好的硬件支持,因此在面向PC和主机的平台上更加适合。

◆◆◆◆
光照系统小结
本节主要针对Unreal 4引擎的光照系统提供的功能进行了介绍。并将其与Unity引擎中的相似功能进行了对比。总体而言,笔者认为Unreal 4引擎和Unity引擎的光照系统提供的大部分基础功能比较相似,在易用性上两者也相差无几。Unreal 4引擎比Unity引擎提供了更丰富的高级光照功能,但同时也需要更好的硬件平台支持。希望在未来,随着硬件的快速发展,这些更好的光照效果能够更广泛的得以应用。

◆◆◆◆
参考文献

[1] https://docs.unrealengine.com/latest/INT/


[2] https://www.assetstore.unity3d.com/en/#!/content/22369


[3] https://www.assetstore.unity3d.com/en/#!/content/24445

以上即为我们对Unreal 4引擎就渲染模块的光照系统的讲解,也是我们踏上虚幻引擎学习之路的第一步,之后我们会将继续分享渲染模块下的材质系统和图像后处理的学习心得,欢迎大家的关注!我们希望本系列文章能让更多的中国游戏开发者了解和理解Unreal 4引擎的重要功能和所能达到的效果,也让更多的中国游戏开发者对Unreal引擎和Unity引擎融会贯通,提升技术储备。

最后非常感谢您能阅读到这里,希望能对您的项目有所帮助,如对文中的内容有异议或者进一步的补充说明,欢迎在给我们留言,谢谢!

锐亚教育

锐亚教育,游戏开发论坛|游戏制作人|游戏策划|游戏开发|独立游戏|游戏产业|游戏研发|游戏运营| unity|unity3d|unity3d官网|unity3d 教程|金融帝国3|8k8k8k|mcafee8.5i|游戏蛮牛|蛮牛 unity|蛮牛