实时光照对景物模拟真实性的影响研究

2019-07-01 02:35郑凯东冯天星王家华
智能计算机与应用 2019年3期

郑凯东 冯天星 王家华

摘 要:全局光照是指一种渲染技术,既考虑场景中来自直接光源的照明,又考虑场景中其他物体反射后的照明。而实时全局光照将在毫秒级时间单位内,考虑到光和介质本身的性质来精确计算,保证高质量输出效果。本文主要研究在景物模拟中,实时光照所产生的光影效果对其真实性的影响。

关键词: 场景光照;全局光照;实时GI; 渲染管线

文章编号: 2095-2163(2019)03-0244-04 中图分类号: TP311 文献标志码: A

1 实时全局光照

Unity 引擎 5.0中更新了实时全局照明。在旧的版本里灯光渲染烘焙一次成型,无法进行任何更改。但通过实时全局光照技术之后,可以在烘焙场景之后更改场景的灯光、环境光和材质属性,通过这种方式可以随意改变灯光的颜色和亮度,从而达到同一场景中生成不同视效的目的。光照效果如图1所示。

由图1可以看到,同样的2个小球,在不同照明方式下,颜色在光线表面之间“反弹”时传递,从而产生更加逼真的效果。

实时照明是场景中照明对象的最基本方式,用于照亮角色或其他可移动几何体[1]。而来自Unity实时灯光的光线在使用时不会反射。在单独实时灯光的效果中,只有落在聚光灯锥体内的表面才会受到影响。因为没有反射光与折射光,阴影是完全黑色的。为了使用全局照明等技术创建更逼真的场景,需要启用Unity的预计算照明解决方案[2]。

使用预计算实时GI时,就是计算Unity编辑器场景中静态几何体周围的反射光并存储此数据以供在运行时使用的过程[3]。此过程减少了必须在运行时执行的照明计算次数,允许实时反弹照明,同时保持交互式帧速率。传统静态光照贴图不响应场景中光照条件的变化,而是预先计算复杂场景源交互的实时GI操作[4]。使用预计算将会产生更精细的照明细节,与传统光照贴图相比,Unity的預计算实时GI提供了一种用于交互式地更新复杂场景照明的技术。其中所需的实时分辨率值比传统光照贴图纹理密度小几个数量级。 这是因为过程中只是捕捉这些光照贴图中的间接照明,而这往往是非常柔和或“低频率” [5]。使用预计算实时GI时,多数情况下会通过实时阴影、而不是高分辨率光照贴图提供清晰阴影。通过这种方式,用户可以创建具有丰富全局照明和反射光的照明环境,实时响应照明的变化[6]。实时光照系统采用与否的场景区别见图2。

由图2可以看到,在运用了实时GI后,因为有了反射光、折射光的加入,场景中没有直接光照的地方也不是一片漆黑,更贴近现实世界中的原貌。

2 光线追踪

光线追踪方法的主要思想是一根单一地从一个视点向成像方向平面上的像素发射出的光线,以找到与该光线相交的最近物体的交点[7]。如果该点处表面是粗糙散射面,则计算光源直接照射该点产生的颜色;如果该点处表面是光滑镜面或折射表面,则继续向反射或折射方向跟踪另一条光线,如此形成了一个递归的光线穿梭,直至光线逃逸出场景或达到设定的最大递归深度。由此,研究通过跟踪与光学表面相互作用的光来获得光线穿过路径的光的模型[8]。

渲染方程可以理解成全局光照算法的基础,可以描述由光能传输而产生的各种现象。该等式描述了从x点看到的光发射总量[9]。并可将其解读为:在一定方向的物体表面上某点在某个方向上的辐射率与场景中光能传递达到稳定状态后入射辐射亮度之间的关系。渲染方程根据光的物理学原理及能量守恒定律,完美描述了光能在场景中的传播[7]。很多真实感渲染技术都是对其进行简化的求解,以达到优化性能的目的。渲染方程的数学公式可表示如下:

其中,Li表示从半球上某一角度ω′ 入射的光。反射项ρ表示光线如何被反射到观察点,该项的取值依赖于入射角ω′和观察者的角度ω[11]。

由式(1)可知,从某一观察点看到的光是从场景中物体表面点入射的光(Le)与从观察点上方的半球入射的光的叠加。基于实时光线追踪的实时全局光照如图3所示。

默认情况下,光线跟踪通常是将每条光线视为独立的光线,每条路径在每次更新时都要重新计算[12]。这意味着该技术可为场景提供直射光,并随时更新每一帧。一旦灯光和游戏物体在场景中移动,灯光将立即更新,这可以在场景和游戏视图中观察到[13]。由此可知,光线跟踪的严重缺陷之一就是性能,其中涉及的计算量较为可观,以致于当前的硬件难以满足实时光线追踪的需求。

3 路径追踪

路径追踪算法的提出,开创了基于蒙特卡洛的全局光照这一研究领域。路径追踪的原理示意如图4所示。其基本思想是从当前视点发射出一条光线,当光线与物体表面相交时根据表面的材质属性选择继续采样一个方向,发出另一条光线,迭代直到光线照射到光源上(或逃逸出场景),然后使用蒙特卡洛的方法,计算其作为像素的颜色值的贡献[14]。光照计算时由一个递归的结构,变成一个路径函数的积分,因此蒙特卡洛的每个随机数只要产生一条路径即可。

光线从摄像机或光源出发,执行ray casting得到光线与场景的交点,在表面处对BSDF进行采样得到一个散射方向,对新的光线执行ray tracing得到新的交点[15],重复上述过程直至得到一条全路径(路径击中光源或摄像机),最后通过公式(2)、(3)计算出贡献值[16]。对此公式可表示为:

通过路径追踪的过程得到一条路径样本,因此称为路径追踪。但路径采样也仍存在不足,如完全依赖随机,有相当部分的路径组合由于表面间可能被遮挡而形成无效的路径。因此,大部分实现都是以增量的形式,在每个有效的反射或折射方向上进行随机采样,以形成更多的有效路径[17]。

同时,还将考虑到每个路径样本独立,缺乏对整个图像分布函数的了解。为了解决这个问题,可以通过将每一个顶点直接连接光源进行直接光照,从而获得确定性的子路径;或当光源与可见区域比较隔离时,采用双向路径追踪分别从光源和摄像机进行路径采样,再将2条子路径连接起来,以快速产生很多路径[18]。该方法可以产生一些传统路径追踪难以采样到的光路,因此可以有效地降低噪声。进一步地,还将以对路径积分的形式重写渲染方程,允许多路径采样方法来求解积分。

4 景物模拟仿真效果及分析

本文所做自然景物模拟实验环境为:Windows 10 professional,CPU为Intel(R) Core(TM) I7-6700 CPU @ 3.40 GHz,内存为8 GB DDR4 2400,显卡为GTX765 2GB GDDR5 配置的计算机。采用Unity 2018.3.6和C#编程实现。

在景物模拟中,由于景物的复杂性和不确定性,其真实感一直是人们研究的重点。如层峦叠嶂的群山掩映在云烟中,山脚下是一汪清潭倒映着阳光和云朵,山峰的错落有致和水波荡漾必然带来其颜色光影的不一致,如果只有直接光照,将导致阳光直射的部分较为明亮,其它部分过于昏暗。当下,通常是经过改变天空盒,或者添加遮罩层的方式予以解决。但是如果是在大型游戏或影视作品中,需要动态景物的时候就远远满足不了沉浸感的要求。

在以往的制作中,绘制光影一般选择光栅化,但光栅化在制作中即已完成,也就是说无法满足实时渲染的要求,从而对开发者提出了挑战,无法巨细无遗地对每个细节进行光影处理,这也是光栅化无法拥有更真实效果的原因[19]。

在Unity2018版本中,已经封装了RealTimeGI算法,即在Inspector面板选择着色器类型,调整SkyBox模拟天空的变化。着色器实际就是一段嵌入到渲染管线内的程序,可以控制GPU运算图像效果的算法。接下来,在Lighting面板中的Environment Lighting中制定好光源,在Preview面板可以灵活调节太阳高度、灯光类型烘焙属性等参数以模拟自然界中的日升日落[20]。

运用本文讨论的实时全局光照所模拟的山水景色的对比如图5、图6所示。其中,以光源为视点渲染的纹理和以摄像机为视点渲染的纹理大小均为 1048×424,屏幕分辨率为1920×1080。由此可以看出,运用实时光照后,因为有了反射光,一些原本模糊的细节变得较为明亮清晰,岩石上的纹路也一清二楚,更加贴近生活场景。

5 结束语

本文研究了实时全局光照及其2种追踪方法,分别是光线追踪与路径追踪。虽然实时光照有很多优点,如真实性好,代入感、沉浸感强,减少光栅化的工作量。但其庞大的计算量和对GPU极高的要求却仍不容忽视,亟待获得真正解决。因此,合理选择算法模型,兼顾真实感和计算量即已成为今后该方面的研究重点。

参考文献

[1] DACHSBACHER C, STAMMINGER M, DRETTAKIS G, et al. Implicit visibility and antiradiance for interactive global illumination[J]. ACM Transactions on Graphics,2007,26(3):61.

[2]LAINE S, SARANSAARI H, KONTKANEN J, et al. Incremental instant radiosity for real-time indirect illumination [C]// Proceedings of Eurographics Symposium on Rendering Techniques. Grenoble, France: dblp, 2007:277-286.

[3]WALTER B, ARBREE A, BALA K, et al. Multidimensional lightcuts [J]. ACM Transaction Graphics(S0730-0301),2006,25(3): 1081-1088.

[4]GAUTRON P, BOUATOUCH K, PATTANAIK S. Temporal radiance caching[J]. IEEE Transactions on Visualization and Computer Graphics, 2007,13(5):891-901.

[5]孫鑫,周昆,石教英. 可变材质的实时全局光照明绘制[J]. 软件学报, 2008,19(4):1004-1015.

[6]PAN Minghao, WANG Rui, LIU Xinguo, et al. Precomputed radiance transfer field for rendering inter reflections in dynamic scenes[J]. Computer graphics Forum,2007,26(3):485-493.

[7]WANG Rui, WANG Kun, PAN Minghao, et al. An efficient GPU-based approach for interactive global illumination[C]//ACM Transactions on Graphics, 2009,28(3):91(1-8).

[8]VIITANEN T, KOSKELA M, IMMONEN K, et al. Sparse sampling for real-time ray tracing [C]// Proceedings of the 13th International Joint Conference on Computer Vision, Imaging and Computer Graphics Theory and Applications - Volume 1: GRAPP. Funchal, Madeira, Portugal:dblp, 2018:295-302.

[9]SHIVARAJU S,PUDUR G. Splay thread cooperation on ray tracing as a load balancing technique in speculative parallelism and GPGPU[J]. The International Arab Journal of Information Technology, 2018, 15(1):167-176.

[10]LEE W J, HWANG S J, SHIN Y, et al. Fast stereoscopic rendering on mobile ray tracing GPU for virtual reality applications[C]//IEEE International Conference on Consumer Electronics. Las Vegas, NV, USA :IEEE,2017:355-357.

[11]PRARD-GAYOT A, KALOJANOV J, SLUSALLEK P. GPU ray tracing using irregular grids[J]. Computer Graphics Forum. 2017,36(2):477-486.

[12]鄭越. 大规模场景渲染下的分布式光线跟踪算法研究[D]. 长沙:湖南大学, 2014.

[13]CALAZAN R M, RODRGUEZ O C, NEDJAH N. Parallel ray tracing for underwater acoustic predictions[M]// GERVASI O. Computational Science and Its Applications-ICCSA 2017. ICCSA 2017. Lecture Notes in Computer Science. Cham :Springer,2017,10404:43-55.

[14]MONIL M A H. Stingray-HPC: A scalable parallel seismic raytracing system[C]//The 26th Euromicro International Conference on Parallel, Distributed and Network-Based Processing. Cambridge, UK:[s.n.],2018:1-11.

[15]RITSCHEL T, ENGELHARDT T, GROSCH T, et al. Micro-rendering for scalable, parallel final gathering[J]. Acm Transactions on Graphics, 2009, 28(5):132.

[16]GUZEK K, NAPIERALSKI P. Efficient rendering of caustics with streamed photon mapping[J]. Bulletin of the Polish Academy of Sciences, Technical Sciences, 2017, 65(3):361-368.

[17]陈纯毅, 杨华民, 李文辉,等. 基于帧间虚拟点光源重用的动态场景间接光照近似求解算法[J]. 吉林大学学报(工学版), 2013, 43(5):1352-1358.

[18]袁璐. 基于立即辐射度的实时全局光照算法[J]. 现代计算机(专业版), 2018(2):63-66.

[19]KAPLANYAN A, DACHSBACHER C. Cascaded light propagation volumes for real-time indirect illumination[C]// Proceedings of the 2010 ACM SIGGRAPH symposium on Interactive 3D Graphics and Games. Washington, D.C: ACM, 2010:99-107.

[20]CRASSIN C, NEYRET F, SAINZ M, et al. Efficient rendering of highly detailed volumetric scenes with GigaVoxels[M]// Crassin2010 GPU Pro.USA: AK Peters, 2010:643-676.