阴影绘制中的PSSM与VSM混合算法

2015-01-06 08:21刘松平肖德贵
计算机工程 2015年2期
关键词:走样深度图阴影

刘松平,肖德贵

(湖南大学信息科学与工程学院,长沙410001)

阴影绘制中的PSSM与VSM混合算法

刘松平,肖德贵

(湖南大学信息科学与工程学院,长沙410001)

在三维阴影绘制中,平行分割阴影图(PSSM)算法存在第一个分割区域过小而导致锯齿现象的缺陷,方差阴影图(VSM)算法则会引起严重的光渗现象。针对以上不足,提出一种结合PSSM与VSM的混合算法。通过设置扩大系数解决PSSM算法首个分割区域不足的问题,加入模糊处理,重复渲染过渡区域,以减少边界锯齿现象,采用MRT技术减少VSM算法在渲染时引起的光渗现象。由分割方法、渐进方式、纹理大小及混合算法阴影图绘制效果等方面的实验结果表明,与PSSM等算法相比,该算法绘制的阴影图质量有较大提高。

图像区域;平行分割阴影图;三维阴影绘制;混合算法;帧率

1 概述

三维阴影绘制方法[1-3]中有一种常用的基于图像区域的绘制方法,这种方法具有复杂度不依赖于场景且效率高的特点,但走样现象严重,影响其应用前景,而且在大规模实时动态的阴影绘制算法中,如何在实时性[4-5]和真实感之间取得平衡,是目前所面临的主要难题之一。

平面投射阴影算法从光源出发,通过几何变换、投影变换等获取阴影图像,这种方法仅适合简单场景的绘制。光照图算法和光照跟踪阴影算法在大规模场景中的绘制实时性较差;平行分割算法因分割区域过小,导致绘制的阴影存在锯齿现象;方差阴影绘制算法因为采用估值运算,从而导致光渗现象严重。单一的绘制方法都存在一定的缺陷与不足,本文结合平行分割阴影图(Parallel Split Shadow Map, PSSM)算法[6]与方差阴影图(Variance Shadow Map, VSM)算法的优点,采取扩大系数与MRT技术避免2种算法的不足,混合2种算法从而改善阴影绘制的效果。

2 三维阴影绘制算法现状

2.1 平行分割阴影图算法优缺点分析

Zhang Fan在2006年提出的平行分割阴影图算法是三维阴影绘制中一种较优秀的算法,这种算法从视椎体顶点出发,用平行视平面的平面将视椎体分割成若干个子椎体,获取光源与子椎体的交集,从光源的视角出发,获取每个子椎体的阴影图信息,并结合区域的深度信息进行比较,获得阴影测试结果,代入相应的光照方程,从而渲染相关阴影场景。该方法常使用多张划分的子阴影图代替一张较大规模的场景阴影图。平行分割算法在场景分割方面具有独特的优点:(1)通过分割多张图片来代替一张较大深度纹理所包含的场景内容,获取较大深度纹理的信息,减少对内存的消耗,所以,这种分割方法特别适用于大规模场景的实时阴影绘制;(2)通过使用分割的多张阴影图[6]取代原来一张较大的阴影图,弥补了单个阴影纹理采样不足的问题;(3)采用平均分配锯齿状走样在不同的子阴影图中减少走样[7]现象。但平行分割算法也存在以下缺点:(1)由于在场景中采用平均分配锯齿状的方式,使得离视点较近的分割区域过小,包含的采样点太少,因此只存在理论上的最优分割方案。如果仅使用均匀分割,使得靠近视觉的投影平面,阴影绘制中的走样会以抛物线的方式变化递增,从而导致采样不足。(2)该算法在渲染时存在光源冗余现象。如果视线方向和光源方向不垂直,则会出现位于相交区域内的场景被多次渲染在不同分割区的阴影图中,从而降低了算法的效率,严重影响阴影绘制的实时性。(3)由于将一张较大的阴影图分割成多张阴影图,虽然在渲染速度上有所提高,但阴影绘制后产生的走样现象严重,尤其是方差阴影图算法、百分比渐近滤波(Percentage Closer Filtering,PCF)算法[8]等基于图像的渲染过滤技术没有得到应用。

2.2 方差阴影图算法优缺点分析

文献[8-9]在2006年提出的方差阴影图算法也是一种经典的阴影绘制算法,该算法通过对一定区域进行过滤,得到该区域的深度值及其平方值,通过过滤的方式获取分割场景的各区域深度值的分布矩阵,再通过获取的矩阵值计算场景区域深度值的方差与期望值,最后利用切比雪夫不等式对当前绘制区域进行估值,然后将估算的数值应用于阴影渲染过程中,该方法在三维阴影绘制中可以有效地提高计算效率,并且在走样方面取得了一定的成效。不过该方法的不足也比较明显:在处理深度值复杂度较高的场景中,出现的光渗现象比较明显。在应对高频率阴影绘制时,该算法具有独特的优势,但在针对高质量的阴影绘制时,这种算法的瑕疵也就显而易见。

3 混合算法

从上述分析可以看出,PSSM算法和VSM算法在阴影绘制的过程中各有千秋,为了提升三维阴影绘制的真实感和实时性,结合上述2种算法的优点,提出一种PSSM算法和VSM算法的混合算法。主要从3个方面进行了改进:为了解决第一个分割空间不足的缺陷,提出一种新的视椎体的分割方式;通过对各层阴影图进行滤波,模糊阴影边界处理,形成软阴影[9-11],从而减少走样;结合VSM算法和PSSM算法,充分发挥VSM算法的优势,预过滤深度图,减少光渗现象。

3.1 混合算法设计步骤

本文混合算法主要从以下步骤来实现:

(1)生成模型所需的数据。

(2)通过设计的自适应函数获取λ值,根据λ值设置2种分割法所占的比例值。

(3)由新分割法得到的视椎体进行光椎体的划分。

(4)独立渲染每层次的阴影图。

(5)在缓冲器对阴影图进行VSM滤波、高斯模糊等基于图像反走样处理。

(6)渲染到整个场景中,查看阴影绘制效果。

大规模场景实时渲染常常借助对视椎体分割而产生多张阴影图,然后分别对各张阴影图进行渲染。PSSM算法使用3层分割技术对视椎体进行分割,如图1所示。

图1 视椎体的分割示意图

一般在分割视椎体的过程中,分割位置Ci是最难也是最重要的。获取场景中近平面与远平面的比值,调整比例参数λ。再调整绘制过程中对数分割所占比例,增强阴影绘制的真实感,具体按如下2个步骤进行改进:

(1)采用如下的对数分割方式:

其中,f表示裁剪的远平面;n表示裁剪的近平面。考虑到(t为分割的总层数;i为分割过程中的第i层),从而进一步推导、简化公式:

采用这种对数分割存在一个很重要的不足,那就是第一个分割块太小,从而导致此分割块中包含的像素或景物较少,影响采样。这种分割方式是一种理想状态,主要由于各像素表示的深度值z∈[n,f]都必须经运算后映射到纹理空间s∈[0,1]范围内。在实际场景中应用该分割方法时,会使得离视点近的区域出现过度采样,而离视点较远的区域出现采样不足现象。因此,仅使用对数分割在实际应用中存在较大的局限性。

(2)均匀分割正好弥补上述对数分割的不足,丈量视椎体的长度并通过变量f-n计算,然后将视椎体进行均匀划分,如下:

在标准阴影图绘制算法中,通过式(5)计算像素:

在阴影绘制中存在透视走样,通过式(6)进行计算:

上述2种分割方式各有优缺点,为了很好地结合两者的优点,优化算法,在实际的应用中,采用一种综合的方式进行计算,两者分配不同的比例系数进行分割,如式(7)所示:

在PSSM方法中,由于第一个分割空间过小,存储的信息较少,从而导致首层空间高分辨率的浪费,因此可以假设将对数分割产生的第一个分割区域采用PCF方法进行过滤,也就是将第一个分割区域扩大k倍,这样就有效地避开了第一个分割区域过小的缺陷,达到阴影反走样的目的。但该方法仅限于分层方式为PCF过滤的分割算法,而基于VSM的深度模糊算法[7]是对纹理过滤,得不到PCF过滤核所需的尺寸,也就是放大因子k值不能确定。经观察分析,发现有3种递减方式得到PCF过滤核尺寸,即等比数列渐进、等差比例渐进及半影估值方法。因此,只要合理选择第一个分割区域中的k值,根据此数值再选取渐进方式,确定下一层k值,随着不断扩大的场景分层,各层的k值需要不断调整变化,直到整个场景完成分割。综上分析可得一种混合算法,视椎体的具体分割可使用式(8)进行:

其中,δbias偏移量主要是为了预防相邻分割区域过于接近。

式(8)要得到应用,需要解决3个问题:(1)不同大小的场景对于此公式是否适用,以及该如何调整;(2)第一个分割区域的k值如何确定;(3)在分割过程中,k值采用一种怎样的渐进方式Fi进行变化。为了解决问题(1),考虑到在大规模场景中,近平面离摄像机较近,远平面比较远,导致f/n的值很大,若直接使用上述公式,则引起分割公式中的均匀分割所占比例过大,造成阴影绘制质量较低。此时,可以考虑通过改变λ值,直接扩大第一个分割区域的对数分割,因此,λ值一般设置成1。针对规模稍小而又无法通过某一张深度图单独完成场景的绘制,则可以适当地调低λ值,如设置为0.6,具体的值只有在实际应用中通过动态调整,直到取得较好的阴影效果。

视椎体的分割系数采取等比渐进方式Fi递减产生。在实现过程中,为避免2个分割区域经过扩大后出现重叠区域而引起重复渲染,因此,应该防止Ci>Cj(i<j)。经过实验分析,在使得ki/kj不能超过3的前提下,表达式均能很好地得到应用。本文实验中Fi对应的公比值为2。

经过前期优化的分割采样算法后,将采样结果所包含的信息渲染成阴影图[11-12],成了后续处理的重要过程。方差阴影图算法在绘制过程中,通过记录深度值及对应的平方值,对一定区域进行过滤,得到对应该区域深度分布的矩阵值M1,M2,具体计算如式(9)和式(10)所示:

根据M1,M2的值,使用式(11)和式(12)计算对应的方差和期望值:

根据前期计算的方差、期望值等信息,在利用切比雪夫不等式来估计待绘制的阴影图所在的滤波区域,具体计算如式(13)所示:

其中,t表示待绘制片元的深度值;pmax(t)为比率,表示当前像素对应的光照强度,取值范围为[0,1],再用该值乘以黑色,则可得最终的阴影值。

使用VSM算法对其深度值进行模糊处理,主要从水平向和垂直方向进行处理。首先获取模糊处理对象——纹理信息,渲染纹理表面;然后对纹理图信息进行垂直方向与水平方向模糊处理,保存处理结果;将经过模糊处理后的深度图渲染到场景中。获取相邻区域的像素深度变量dp_value与dp_value(dp_value的加权平均,通过这2个变量计算深度值的期望E(dp_value)以及E(dp_value2),为VSM算法过滤提供参数。

在PSSM算法中,通过可见像素的深度值来计算获取采样深度图所在的层次,然后把光源坐标转换成纹理坐标,再通过对深度图采样得到相应的光照因子,并最终渲染得到整个场景的阴影图。而VSM算法是先获取采样深度图,计算其期望及平方的期望,通过光照系数调整光照方程,从而渲染阴影。

3.2 混合算法理论分析

经过分析可得,基于PSSM与VSM的混合算法采取如下方式完成场景的渲染:(1)采用PSSM算法的方式进行采样,获取深度图的层次;(2)使用VSM算法对深度图进行反走样处理,计算得到光照系数; (3)根据光照系数相应调整光照参数方程,并渲染得到场景的阴影图。

混合算法处理边界走样和光渗等问题也有独到之处,在提高三维阴影的真实感方面做了充足的考虑。为每个子层的远裁剪平面增加一个偏移量Zbias,处理划分视椎体各层边界过渡区域,既可以减少边界走样,又可以解决因分割视椎体而引起的离视点远近不同而出现深度图表示区域面积大小不同,从而导致视点的移动而不断地向前变化。为每对相邻层设置过渡区,然后在阴影绘制过程中进行线性插值[13],有效优化阴影边界出现的走样问题。如图2所示。

图2 处理阴影边界的反走样示意图

为了减少光渗问题,常用的方法是通过多阶矩记录采样点的信息,这样导致存储容量非常大,不易推广到大规模场景。本文采用一种基于VSM算法的方式,在计算每一个子区域VSM时,借助MRT技术得到深度图的最大值和最小值,判断所要处理的片元是不是在待绘制的阴影区域内。该方法在减少光渗问题方面取得了较大的进步,很大程度上缓解了光渗对场景渲染引起的不良影响。

本文混合算法在处理场景分割时采用对数分割法,并适时地扩大分割系数,有效地解决了PSSM算法首个分割区域不足而引起采样点不够,从而导致阴影图像不清的缺陷;针对阴影绘制时场景分割的边界区域容易产生锯齿现象,设置过渡区域的偏移量,采用重复绘制分割的过渡区,增加阴影边界区域的融合度;为了减少VSM算法引起的光渗现象,从水平与垂直方向巧妙地采用深度值的模糊处理,有效提高了阴影绘制的质量。

4 实验数据分析

实验1改进视椎体分割方法,按照900×900像素,250×250像素这2种不同规模的场景进行分割,分析其分割层次对帧率的影响情况。以分层数量为2层、3层、4层为实验平台,统计不同规模、不同分层对应的帧率值。

从表1和表2的实验数据可以看出,随着分割层数的增加,消耗的时间增加,从而帧率不断降低,但下降的变化率不是很大。分析其原因,主要是因为分割层数的增加导致生成阴影图的数目不断变大,从而渲染内容不断增加。在大规模场景中将层数分割成4层时,不管是PSSM方法还是本文方法,帧率均不高于15帧,因此,渲染速度难以实现实时性,所以,一般分割成3层符合实际。其次分析数据还可发现,使用新的分割算法,在同一场景且相同分割层数的情况下,PSSM方法的帧率速度略高于本文算法。究其原因不难发现,在新的分割算法中,因为使用百分比渐近软阴影(Percentage Closer Soft Shadow,PCSS)方法,通过半影估计来获取半影区域大小,并由此计算第一个分割区域的扩大系数k,在此计算过程中,消耗了CPU运行时间,降低了速度,但下降并不特别突出,从提高阴影质量的角度分析,这种降低可以被接受。

表1 900×900像素场景规模下的绘制帧率(f·s-1)

表2 250×250像素场景规模下的绘制帧率(f·s-1)

实验2测试分割速度与渐进方式Fi之间的关系:均采用3层分割方法,分别采取等比数列方式递减、等差方式递减和基于半阴影的方法。实验检测各方法对运算帧率的影响情况如表3所示。

表3 不同渐进方式对帧率的影响(f·s-1)

从表3的实验数据可以看出,以等差数列方式或等比方式确定Fi在帧率上的影响比较小,前2种对应的帧率只与设置的公差值或公比值有关,而基于半影的方式相对较差。而通过分析发现,采用等差数列方式递减会引起第2层及后续层次的放大系数变化过快,从而降低渲染的精确度。综合阴影图像的质量与渲染的帧率2个因素,采取公比为2的等比数列递减方式确定Fi比较合理。

实验3纹理大小对帧率影响实验。选取一个较复杂的场景模型,分别将深度图的尺寸设置为1024×1024像素,512×512像素及256×256像素,PSSM使用三层分割方式,PCF采取2×2像素的过滤核,采取高斯模糊方式,分别从垂直和水平方向进行采样模糊。实验结果如表4所示。

表4 不同纹理大小的帧率情况(f·s-1)

阴影图在相同尺寸情况下,PSSM+VSM(模糊)的组合帧率明显高于PSSM+PCF算法。主要因为PCF使用的过滤技术必须对深度图中的像素点进行采样和线性插值计算,从而影响帧率。PSSM+ VSM算法是基于概率的算法,渲染过程中只多计算存储了一个深度值的平方,然后利用切比雪夫不等式完成近似计算,从原理分析来看,该算法在效率方面要比PCF组合算法高。

从实验数据可以看出,本文混合算法在不同尺寸下的帧率下降比较明显,主要是因为在本文算法中增加了模糊技术来柔化阴影。模糊处理过程要在纵向和横向进行权重采样、取均值计算,所以深度图尺寸大小对算法的影响较大。不同尺寸的纹理在绘制阴影时虽然对PSSM+PCF算法、PSSM+VSM (不加模糊)的帧率有影响,但是变化没有加入模糊处理算法明显,所以,本文混合算法对分辨率的变化更加敏感。

实验4 阴影绘制中最重要的是阴影图的绘制效果,实验对绘制阴影场景的效果进行对比分析。PSSM与PCF过滤算法绘制的阴影效果如图3所示。PSSM与VSM(不带模糊渲染)绘制的阴影效果如图4所示。本文混合方法绘制的阴影效果如图5所示。

图3 PSSM与PCF过滤算法绘制的阴影效果

图4 PSSM与VSM绘制的阴影效果

图5 本文混合方法绘制的阴影效果

图3和图4分别为采取PCF过滤方法、直接结合VSM方法形成的阴影图,虽然软化了阴影图,但不同程度上均存在比较明显的锯齿状走样现象,而图5采取PSSM+深度图模糊+VSM渲染的混合方法,软阴影的真实感更强,影域更大。直接与VSM结合的方法比PCF方法好,主要是因为VSM算法可以在预处理中进行纹理过滤,所以从渲染场景的阴影效果和算法效率来看,本文算法都取得了较为明显的改进。

5 结束语

改进的PSSM与VSM混合算法在绘制阴影时减少光渗现象,模糊阴影边界,从而提高了阴影图像的质量,增强大规模场景的真实感,一定程度上加快了计算速度,为大规模场景的实时阴影绘制提供了基础。随着场景复杂度的提高和场景规模的不断扩大,进一步提高混合算法的计算速度是后续的研究方向。

[1] Wang Rui.ShadowGeometryMapsforAlias-free Shadows[J].ScienceChina:InformationSciences, 2012,55(11):55-61.

[2] Liang Xiaohui.Light Space Cascaded Shadow Maps Algorithm for Real Time Rendering[J].Journal of Computer Science&Technology,2011,26(1):115-121.

[3] Bavoil L,Callahan S P,Silva C T.Robust Soft Shadow Mapping with Backprojection and Depth Peeling[J]. Journal of Graphics Tools,2010,13(1):19-29.

[4] Annen T,Dong Z,Mertens T,et al.Real-time Allfrequency Shadows in Dynamic Scenes[J].ACM Transactions on Graphics,2008,27(3):22-27.

[5] Wang Shicheng.Design of Image Real-time Generation SystemofSimulationofIRImagingGuidance Missiles[C]//Proceedings of the 7thInternational Conference on Electronic Measurement and Instruments. Shanghai,China:[s.n.],2012:23-28.

[6] Zhang Fan,Sun Hanqiu,Nyman O.Parallel-split Shadow Maps on Programmable GPUs[M].Boston,USA: Addison-Wesley,2006.

[7] Lefohn A E,SenguptaS,OwensJD.Resolutionmatched Shadow Maps[J].ACM Transactions on Graphics,2010,26(4):11-23.

[8] 李 军.基于GPU的大规模场景实时阴影绘制[D].长沙:湖南大学,2011.

[9] Donnelly W,Lauritzen A.Variance Shadow Maps[C]// Proceedings of Symposium on Interactive 3D Graphics and Games.New York,USA:[s.n.],2006:23-29.

[10] Lv Weiwei,Liu Xuehui,Lu Jian,et al.Practical Hybrid Pre-filtering Shadow Maps[C]//Proceedings of the11th IEEEInternationalConferenceonComputer-aided Design and Computer Graphics.Huangshan,China: [s.n.],2009:95-103.

[11] 潘 峰.基于视差估计算法的多视点视频预测方案[J].计算机科学,2011,13(6):13-16.

[12] 杨 晓.航海模拟器视景系统中阴影技术的研究[D].大连:大连海事大学,2011.

[13] Marc J.Enhancing Virtual Natural Scenes Using Quick and Dirty Image Based Recipes[C]//Proceedings of the 4th International Symposium on Plant Growth Modeling. Shanghai,China:[s.n.],2012:81-88.

编辑 任吉慧

Hybrid Algorithm of PSSM and VSM in Shadow Rendering

LIU Songping,XIAO Degui
(College of Information Science and Engineering,Hunan University,Changsha 410001,China)

In three dimensional shadow rendering,the first segmentation area in Parallel Split Shadow Map(PSSM) algorithm is too small to result in aliasing phenomenon,and Variance Shadow Map(VSM)algorithm causes the serious phenomenon of irradiation.In view of the above,this paper proposes a hybrid algorithm based on PSSM and VSM.By setting the expanding coefficient to solve the first partition problem in PSSM algorithm,and adding fuzzy processing, repeated rendering transition region reduces boundary serration phenomenon.It uses MRT technology to reduce the irradiation induced VSM algorithm when rendering.Experimental results of the segmentation method,asymptotic test, texture size and hybrid algorithm of shadow map rendering effect and other aspects show quality of the shadow map is greatly improved compared with the PSSM algorithm,etc.

image region;Parallel Split Shadow Map(PSSM);three-dimensional shadow rendering;hybrid algorithm; frame rate

刘松平,肖德贵.阴影绘制中的PSSM与VSM混合算法[J].计算机工程,2015,41(2):228-233.

英文引用格式:Liu Songping,Xiao Degui.Hybrid Algorithm of PSSM and VSM in Shadow Rendering[J].Computer Engineering,2015,41(2):228-233.

1000-3428(2015)02-0228-06

:A

:TN911.73

10.3969/j.issn.1000-3428.2015.02.044

湖南省教育厅基金资助项目“基于多信息融合处理技术的交通隧道火灾检测研究”(13C270)。

刘松平(1981-),男,硕士研究生,主研方向:图形图像处理,信息处理;肖德贵,副教授、博士、博士生导师。

2014-02-12

:2014-04-09E-mail:512032105@qq.com

猜你喜欢
走样深度图阴影
“双减”,如何确保落地实施不走样
你来了,草就没有了阴影
基于G-Buffer的深度学习反走样算法
基于深度图的3D-HEVC鲁棒视频水印算法
唐氏综合征是因为“拷贝”走样了
让光“驱走”阴影
一种基于局部直方图匹配的深度编码滤波算法
阴影魔怪
叠加速度谱在钻孔稀少地区资料解释中的应用