基于自适应迭代面光源采样的物理正确柔和阴影绘制算法

2018-06-21 06:30周文言陈纯毅
关键词:视场阴影景点

周文言,陈纯毅

(长春理工大学 计算机科学技术学院,长春 130022)

阴影由两部分构成:本影区和半影区。本影区是指在面光源的照射下所有光线均不能到达的区域,在视觉上表现为完全黑暗;半影区是指部分光线能够到达的区域,在视觉上呈现出由暗到明自然过渡的阴影效果。真实地模拟出明暗过渡的半影现象一直以来都是柔和阴影算法研究的重点。目前流行的阴影绘制算法可以分为三类:阴影图[1],阴影体[2]和全局光照算法[3]。蒙特卡罗可见性采样通过向面光源产生随机投射的阴影光线可以绘制出物理正确的柔和阴影效果,该方法可以很容易地加入到基于并行光线跟踪的全局光照算法[4]中。然而它需要为每个可视场景点均产生大量的光源采样点,造成了很大的开销。

图1 本文算法流程图

Ramamoorthi等[5]通过对不同的非自适应蒙特卡罗采样方法进行像素-光源空间的2D傅里叶分析,发现依据光源类型选择合适的可见性采样策略可以减少20-40%的阴影采样数量。基于鲁棒的误差估计,Bauszat等[6]为每个像素自适应地选取一个最优的重建滤波器,有效地减少了蒙特卡罗绘制中产生的阴影噪声。Chen等[7]基于光线跟踪算法计算出3D场景的光源可见性并通过采用盒体滤波器对可见性进行平滑处理的方式生成在点光源照射下的近似柔和阴影。Egan等[8]提出一种基于蒙特卡罗光线跟踪的4D可见性剪切滤波方法,通过复用邻近像素的采样点以较低的采样率绘制出面光源照射下高质量的柔和阴影。

为了解决蒙特卡罗可见性采样开销大的问题,本文提出了一种基于自适应迭代面光源采样的物理正确柔和阴影绘制算法,可显著减少计算量,并绘制出高效的柔和阴影。

1 自适应迭代面光源采样方法

本文算法是在并行光线跟踪框架中完成的。首先在每个可视场景点产生一个随机光源采样点,投射阴影光线后计算3D场景的面光源可见性;然后采用可见性梯度探测算法,获得半影区的启发式信息;最后对半影区进行大量采样,对非半影区(本影区和完全可视区域)进行少量采样,并采用两次迭代的方式计算出可视场景区域的面光源可见性。最终的全局光照值等于该值乘以不考虑遮挡情况下可视场景区域的直接光照值,加上间接光照值。本文算法的流程如图1所示。图2对自适应面光源采样的原理进行了说明。

柔和阴影算法的关键是模拟出半影区由明到暗自然过渡的阴影效果,为此每个可视场景点均需要进行大量的阴影光线求交计算,会造成巨大的计算开销。然而,对于位于本影区或者完全可视区域的可视场景点而言,由于其可见性是非0(不可见)即1(可见)的,因此若进行均匀采样会造成计算量上的浪费。

图2 自适应面光源采样的原理

基于可见性梯度探测算法,在确定需要进行大量采样的可视场景区域后,通过为半影区和非半影区(本影区和完全可视区域)自适应地计算出光源采样点的数量,可以显著减少面光源可见性的计算量,提高算法的性能。

下面给出本文算法的详细步骤:

(1)创建包含两个元素的一维数组atten[0]、atten[1],用于存储可视场景点连续两次迭代的面光源可见性。创建两个屏幕空间大小的2D缓冲区Vis[M×N]={1}、Grad[M×N]={0},用于存储3D场景的直接光照可见性和可见性梯度值。变量i用于记录投射主光线的次数。

(2)为可视场景点p设置一个随机的光源采样点。

(3)从视点出发向可视场景点p投射主光线,然后进行递归式光线跟踪。

①记录可视场景点p的面光源可见性V,存入缓存Vis、atten[i%2]。

②采用可见性梯度探测算法计算出缓存Vis中可视场景点p的可见性梯度值G,存入缓存Grad。

③如果可见性梯度值G大于0,则可视场景点p所在的区域为半影区,设置其光源采样点数量为k1;否则该可视场景点所在区域为本影区或者完全可视区域,设置其光源采样点数量为k2。(k1应大于k2,在本文算法中设置k1=9,k2=4)。

(4)采用分层随机抖动采样方法[9]确定多个光源采样点的位置分布情况,并重复(3)。

(5)对(4)迭代n次后计算可视场景点p的面光源可见性(atten[0]+atten[1])/2。(本文算法中迭代次数n设置为2)。

2 可见性梯度探测算法

本文采用对面光源可见性按列作差值运算的方式,通过判断可见性梯度值的大小来获得半影区的启发式信息,从而确定面光源照射下3D场景中半影区域的范围。

可见性梯度探测算法的原理如图3所示。由于每个可视场景点只向3D场景中投射一条阴影光线,因此其面光源可见性是非0(不可见)即1(可见)的。如果在这张二值面光源可见性图中存在一个连续区域,该区域内所有元素对应的可视场景点面光源可见全为0则该区域为本影区,如果全为1则为完全可视区域。由于半影区是本影区到完全可视区域的一个过渡区域,因此该区域中可视场景点的光源可见性可能为0也可能为1,是不连续的。若为每个可视场景点投射多条阴影光线,则半影区的光源可见性在[0,1]之间。对面光源可见性按列作差值运算,计算出当前可视场景点与相邻可视场景点的可见性梯度值。如果该值>0.0f,表示两者之间的可见性是不连续,即当前可视场景点处于半影区,需要为其产生更多的光源采样点;反之,只需要为其产生较少的光源采样点。图4(b)为对图4(a)经过可见性梯度检测得到的半影图。

图4 两次迭代面光源可见性效果对比

仅经过一次可见性梯度探测只能粗略地判断出半影区的范围,误差较大。因此本文采用多次迭代的方式,通过累加前一次迭代的面光源可见性,可以以更小的误差计算出3D场景的面光源可见性。

两次迭代的面光源可见性效果对比如图4所示。图4(a)为每个可视场景点只进行一次光源可见性计算得到的原始二值面光源可见性图,对其进行可见性梯度探测后得到图4(b)所示的半影图。图4(b)中白色区域即为需要进行大量光源采样的可视场景区域。图4(c)为进行第一次自适应迭代面光源采样后得到的面光源可见性图,对其进行可见性梯度探测后得到图4(d)所示的半影图。图4(e)为两次迭代后得到的面光源可见性图,同图4(a)、4(c)相比可以发现,经过多次可见性梯度探测后其半影区域的过渡更加平滑,并进一步减少了阴影区域的噪声。

3 实验结果分析

本文实验的计算机配备 Intel(R) Xeon(R)E3-1225 v3 3.2GHz CPU,8GB内存和NVIDIA Quadro K2200显示,算法采用NVIDIA OptiX SDK光线跟踪加速引擎和NVIDIA CUDA并行计算架构,并使用SBVH加速结构[10]来加速光线跟踪的求交运算。实验中的屏幕分辨率为1024×768,4个不同场景复杂度下本文算法的绘制结果如图5所示。表1对图5中场景的三角面片数和绘制时间进行了统计。实验结果表明,本文算法能高效地绘制出面光源照射下物理正确的柔和阴影。

图5 本文算法的绘制结果

表1 图5所示实验场景的绘制时间

本文以蒙特卡罗算法生成的图像作为参照,来验证采用本文算法生成的物理正确柔和阴影的有效性。如图6所示,图6(a)和图6(b)对这两种算法的绘制效果进行了比较;通过对图6(a)和图6(b)对应位置的像素值作相减计算,并放大10倍后,得到了图6(c)所示的10倍图像差。观察该图像差可以发现,图中的黑色区域(存在差异的部分)在放大10倍后才基本可见;对比两种算法的性能可以发现,本文算法的绘制时间减少了1倍左右。因此可以证明本文算法虽然极大地减少了计算量,但是绘制效果并没有明显下降。

图6 与蒙特卡罗算法性能比较

表2 不同算法的绘制时间比较(ms/帧)

表2对在不同分辨率下,本文算法与蒙特卡罗算法的绘制时间进行了比较。可以发现,在同等柔和阴影质量的情况下,本文算法的性能都明显优于蒙特卡罗算法。

4 结论

本文提出了一种基于自适应迭代面光源采样的物理正确柔和阴影绘制算法,通过自适应地计算每个可视场景点需要产生的光源采样点数量,解决了可见性计算开销大的问题,有效提高了算法的性能。与蒙特卡罗算法进行对比发现,本文算法不仅能够绘制出高质量的柔和阴影,而且在算法性能上拥有很大的优势。

[1]Liktor G,Spassov S,Dachsbacher C.Stochastic soft shadow mapping[J].Computer Graphics Forum,2015,34(4):1-11.

[2]Kolivand H,Sunar M S.Survey of shadow volume algorithms in computer graphics[J].Iete Technical Review,2013,30(1):38-46.

[3]陈纯毅,杨华民,李文辉,等.基于环境遮挡掩码的物理正确柔和阴影绘制算法[J].吉林大学学报:工学版,2012,42(4):971-978.

[4]张全贵,王普,闫健卓,等.基于光线跟踪方法的全局光照研究[J].计算机科学,2010,37(4):27-30.

[5]Ramamoorthi R,Anderson J,Meyer M,et al.A theory ofmonte carlo visibility sampling[J].Acm Transactions on Graphics,2012,31(5):1-16.

[6]Bauszat P,Eisemann M,Eisemann E,et al.General and robust error estimation and reconstruction for monte carlo rendering[J].Computer Graphics Forum,2015,34(2):597-608.

[7]Chen C Y,Yang H M,Li H.Interactive rendering of approximate soft shadows using ray tracing with visibility filtering[C].Proceedings of the 2016 International Conference on Computer Science,Technology and Application.Singapore:World Scientific Publishing,2016:68-74.

[8]Egan K,Hecht F,Durand F,et al.Frequency analysis and sheared filtering for shadow light fields of complex occluders[J].Acm Transactions on Graphics,2011,30(2):9.

[9]Mitchell D P.Consequences of stratified sampling in graphics[C].Conferenceon ComputerGraphics and Interactive Techniques.New York:ACM Press,1996:277-280.

[10]Stich M,Friedrich H,and Dietrich A.Spatial splits in bounding volume hierarchies[C].Proceedings of the Conference on High Performance Graphics.New York:ACM Press,2009:7-13.

猜你喜欢
视场阴影景点
一种晶圆自动光学检测系统的混合路径规划算法
一种基于基准视场扩散拼接的全景图像投影方法
你来了,草就没有了阴影
医用内窥镜矩形视场下入瞳视场角的测试方法研究
打卡名校景点——那些必去朝圣的大学景点
让光“驱走”阴影
英格兰十大怪异景点
阴影魔怪
没有景点 只是生活