APP下载

基于自适应可见性滤波的近似软影绘制

2019-03-02杨超智陈纯毅曲福恒邢琦玮

图学学报 2019年1期
关键词:视场阴影光源

杨超智,陈纯毅,曲福恒,陈 胜,邢琦玮



基于自适应可见性滤波的近似软影绘制

杨超智,陈纯毅,曲福恒,陈 胜,邢琦玮

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

针对全局光照下的物理正确软影绘制较难满足交互性的难题,提出体现遮挡对象空间位置远近关系的可变半影近似绘制算法。首先,以光源中心点为参照通过基于光线跟踪的遮挡测试方法生成二值光源可见性图;并提出每个可视场景点对应自适应可见性空间平滑滤波器宽度的确定方法;然后执行带掩模计算的自适应可见性滤波来获得从可见区到非可见区平滑过渡的可见性因子;最后在光线跟踪流程中使用可见性因子动态调制相应可视场景点不考虑遮挡的直接光照值,再加上间接光照得到高真实感软影。实验结果表明:该算法效果与物理正确阴影在柔和度方面非常接近,容易绘制镜面反射间接光照,且测试场景的帧率在30帧/秒以上,满足交互性要求。

软影;可变半影;光源可见性;光线跟踪;自适应滤波

阴影提供了感知3D场景的重要视觉线索,可以显著增加画面的真实感。阴影图和阴影体算法是计算机图形学中两个经典的阴影绘制算法[1],但生成的是硬阴影,使得场景中可见区(非阴影部分)与非可见区(阴影部分)之间的过渡呈现突变特征。而现实中,在面光源照射下物体会产生完全黑暗的本影区域及柔和过渡的半影区域。真实阴影的半影是可变的,即半影宽度受阴影投射对象到阴影接收对象的距离及阴影投射对象本身的高低长短等因素影响[2]。当前可以绘制物理正确软影的方法有蒙特卡罗面光源光照积分估计算法和阴影体的变种算法等[3-4],其绘制的阴影根据遮挡对象的远近表现为不同的柔和效果,但计算开销非常大,较难满足实时交互需求。

一些基于阴影图改进的算法,可实时绘制出近似软影且对场景的复杂度依赖很小[5]。随着软阴影映射的出现,其与遮挡轮廓边背投算法结合后,可获得较高的质量和速度,但有漏光和过阴影问题[6]。百分比邻近滤波软影(percentage closer soft shadows,PCSS)算法[7]可基于单个阴影图快速产生软影,但在估计阴影遮挡物的深度时较粗糙,有时会导致漏光问题。孙明彦等[8]通过GPU几何着色器提取了阴影图中的对象轮廓并生成了内外半影图元,虽可实时绘制近似软影,但其结果与真实阴影相差较大。方差软阴影图[9]和指数软阴影图[10]均基于文献[7]算法,可获得较高质量的阴影效果,但分别存在漏光和过阴影瑕疵的问题。沈笠等[11]通过精简阴影图搜索区域并采用四叉树遍历算法提升了文献[7]中遮挡体深度估计的正确性,改善了阴影质量。LIKTOR等[12]通过采样完整的面光源存储阴影可见性,并使用多层预滤波算法重构了场景的平滑可见性,在相对较大的面光源下也有较高的绘制效率。PETERS等[13]在深度图中存储了除深度外的更多信息,有效提升了软影的质量。

上述基于阴影图的绘制算法多数是使用OpenGL光栅化流水线实现的,其不容易实现间接光照。为了渲染出更接近现实世界的光影效果,需要在渲染器中指定全局光照。CHEN等[14]通过使用光线跟踪[15]在场景中加入了间接光照,并以很小代价产生了可交互的近似软影。但也存在缺陷:在绘制结果中半影不可变,即阴影不能体现遮挡对象的空间位置和远近关系;部分阴影存在错误的可见性渗透问题。

本文针对全局光照下的物理正确软影算法较难满足交互性的问题,提出对二值光源可见性图进行带掩模计算的自适应滤波产生近似软影的算法,与经典的PCSS算法存在根本性差别:本文算法完全兼容光线跟踪技术,能够实时绘制包含全局光照的场景;在深度复杂的场景中不会出现漏光和过阴影问题;当光源面积较大时,也能保证一定效率。另外,本文算法还可以有效减少面光源采样计算所带来的巨大开销,从而在绘制出反映阴影遮挡体与阴影接收体之间远近关系的可变半影效果时,能够达到交互式绘制的速度;由自适应可见性滤波得到的可见性因子调制不考虑遮挡的直接光照值,以解决使用普通均值滤波产生的可见性渗透问题。

1 自适应可见性滤波的提出

光线跟踪算法和简单的阴影映射都可以绘制出硬阴影,产生硬阴影的核心原因是可视场景点相对光源的可见性非0即1。可视场景点为3D场景中视点透过虚拟像素平面可以直接看到的场景点。由于硬阴影场景中的可见性是二值的,使得可见区与非可见区边界处的可见性值表现为突变效果。在真实场景中,场景点的可见性一定是连续变化、非二值的结果。要想在三维场景中精确地计算出该结果,需要使用蒙特卡洛面光源采样,但其开销巨大。为了节省计算时间且满足交互式速度,本文采取绘制近似软影的方法,即使用空间平滑滤波模拟出非二值且连续变化的光源可见性。

空间平滑滤波是一种低频增强的滤波技术,包括均值滤波、中值滤波等,其主要用于模糊和去噪。一般可用来处理邻域的图像像素以及与邻域相同维数的子图像中的系数值,这些子图像被称为滤波器、掩模等[16]。为了减小图像中可见性的突变,使阴影边界变得模糊,通常采取均值滤波方法。均值滤波的原理是将邻域内所有像素的灰度平均值代替目标像素的灰度值。

文献[14]采用固定大小的均值滤波器消除了硬阴影边界的可见性突兀变化,并得到了近似软影。图1以3×3的固定滤波器为例,展示了对虚拟像素平面上某像素对应可见性的处理过程。其中,为均值滤波器,其系数值均为1,这种情况也被称为盒式滤波器[17]。

使用固定大小的滤波器进行相关操作,虽然可以产生连续变化的可见性,但阴影不会根据遮挡体的位置不同而出现不同柔和度的半影效果。因此本文提出自适应的可见性滤波方法,根据遮挡关系动态调节滤波器大小,以生成具备一定物理真实性的软影。另外,自适应可见性滤波可以解决滤波器中相邻像素对应场景点不在同一表面导致的可见性渗透问题;在虚拟相机视场角不变的情况下,当视点移动后,本文算法可使场景内阴影的柔和度保持前后一致;当某场景点被多个遮挡体作用时,优先显示距离此点最近遮挡体产生的阴影效果。

图1 均值滤波使可见性平滑过渡

2 算法实现

2.1 算法概述

本文算法基于光线跟踪框架,利用GPU渲染全局光照下包含近似软影的3D场景。算法主要分为:①跟踪相机光线并判断可视场景点的光源可见性,得到二值光源可见性图;②通过自适应可见性滤波器模型,动态确定二值光源可见性图中每个像素的滤波器宽度;③对二值光源可见性图进行带掩模的自适应可见性滤波,得到可见性因子;④使用可见性因子调制不考虑遮挡的直接光照值后,加入间接光照生成视觉近似正确的软影。算法流程如图2所示。

图2 本文算法流程图

2.2 二值光源可见性图的产生

物理正确软影在计算光源采样时带来巨大开销,为了加快渲染速度,本文选取光源中心作为唯一参考点,其他忽略。首先以光源中心点为参照获得二值光源可见性图,然后在此参考点处模拟出等效虚拟面光源对场景进行作用以产生近似软影。其二值光源可见性表示可视场景点与光源参考点之间是否有遮挡,即此场景点相对该点光源是否可见,其最终结果是二值的,非0即1。

二值光源可见性图保存了虚拟像素平面上每个像素对应可视场景点的二值光源可见性。通过使用光线跟踪中的遮挡测试方法判断可视场景点相对光源是否被某对象遮挡,并得到该点的二值光源可见性。图3为二值光源可见性的判断过程:从视点向虚拟像素平面的每个像素发射射线,并将其称作相机光线;跟踪相机光线并记录其与3D场景中几何对象的第1个交点,即可视场景点;在此点向光源中心点发射遮挡测试光线;如果遮挡测试光线不与任何对象相交,说明可视场景点相对光源可见,其二值光源可见性1设为1,否则设为0。

图3 二值光源可见性图的生成

2.3 自适应可见性滤波器模型

2.3.1 确定可视场景点对应像素的滤波器宽度

现实中,当光源面积越小或遮挡体越靠近阴影接收对象时,阴影边界一般越清晰,即本影变多而半影变少。为了绘制出更接近真实的半影效果,本文考虑了阴影投射对象到阴影接收对象的距离、面光源到阴影接收对象的距离、面光源的大小和阴影投射对象的大小等实际影响因素,并将其作用加入到滤波器宽度的确定过程中。

在阴影的产生过程中有3个关键的点:光源点、阴影投射点和阴影接收点。为了绘制出具有可变半影效果的软影,首先将遮挡体离散化成一个个阴影投射点,然后以阴影接收点对应的最近阴影投射点为圆心扩展出虚拟遮挡面,再将面光源的中心点作为圆心扩展出等效的虚拟面光源,最后通过2个面的大小和位置来产生可变的半影。根据实际情况:同一阴影点优先显示距离此点最近的遮挡体所产生的柔和效果。所以这里选取最近阴影投射点扩展出虚拟遮挡面对阴影进行作用。如图4所示,这些关系产生了2个关键角和,其可以描述等效虚拟面光源、虚拟遮挡面和阴影投射点之间的大小和位置关系,进而可以用来控制滤波器的大小去反映阴影的柔和度。比如当光源固定(角不变)时,遮挡体距离对应阴影接收体越远(角变小),软影的过渡一般越平滑,阴影接收点所要选择的滤波器越大。从中可以发现,和角度差的绝对值和滤波器的大小成正相关。

图4 基于夹角关系选取空间平滑滤波器大小

由此,本文根据关键角和建立自适应滤波器模型,来动态确定可视场景点对应像素的滤波器宽度。自适应滤波器模型表述为

其中,1为自适应空间平滑滤波器的宽度;1为等效虚拟圆形面光源的直径;2为等效虚拟圆形遮挡面的直径;d为可视场景点到光源中心点的距离;d为可视场景点到最近阴影投射点的距离,在同一阴影接收点和光源点之间存在多个阴影投射点时,会优先显示距离阴影接收点最近的投射点产生的柔和度;为3D场景位置敏感处滤波器宽度的最大值。式(2)中1的计算方式为

1=max–min(5)

2=max–min(6)

3=Zmax–Zmin(7)

其中,max,max,max是所有可视场景点三维坐标,,的最大值;min,min,min是最小值。式(3)中2的计算方式为2=1/e2。e1和e2均为常数,通过对场景效果调试得到最优值。另外,在较大的面光源下绘制软影时,和PCSS伴随大量纹理采样来计算滤波器宽度的方式不同,本文算法所需参数可在正常光线跟踪过程中轻易获得,省去了纹理采样这部分的计算开销,能保证一定效率。

2.3.2 加入视点自适应规则

在3D场景中,当虚拟相机的视场角不变,而视点远离或者靠近场景对象时,同一对象在虚拟像素平面上所占像素个数也会发生改变,导致前后的滤波效果不同。为保证视点上下移动后的软影效果显示一致,本文设计了一种变换规则,使空间平滑滤波器能够根据视点的移动进行自适应地调整。首先令三维场景中特定大小的几何对象在虚拟像素平面上所占像素的基准个数为N,令视点到可视场景点的基准深度值为D。视点移动后,得到新视点到可视场景点的实际深度值为D,此时设该特定对象所占像素个数为N。然后,以可视场景点为端点,以垂直于初始视点到可视场景点的连线2为方向,延长大小为N的距离构成线段1,并设为线段1的对角。如图5所示,视点向上移动后,得到2个相似三角形。最后根据相似关系可得tan()=N/D=N/D,即N/N=D/D。由于空间平滑滤波器的大小表示在虚拟像素平面上所占的个数,因此可以使用这个比例关系来调整视点移动后的滤波器宽度。将可视场景点初始滤波器宽度1和视点移动后滤波器宽度2分别代替NN,则视点自适应滤波器宽度为2=1×D/D,其中D为经验参数,通过场景效果反馈调试出最优值。

图5 视点自适应示意图

2.4 自适应可见性滤波

确定出每个可视场景点对应空间平滑滤波器的最终大小后,需要对二值光源可见性图进行自适应滤波来产生具有连续变化性质的可见性因子。可见性因子为可视场景点相对虚拟面光源的可见性百分比,即从可视场景点看面光源,可见的光源面积占总面积的百分比。可见性因子为0表示可视场景点相对光源完全不可见;因子为1表示此点相对光源完全可见;当因子界于0到1之间时,此点相对部分光源可见,即为半影效果。可见性因子的数值越小,对应可视场景点呈现的颜色越暗。

本文提出的自适应可见性滤波在产生可见性因子的同时,也解决了文献[14]中的可见性渗透问题。这一问题产生的原因如图6(a)所示,场景中点A,B,C和D对应在虚拟像素平面上为相邻像素,其二值光源可见性为1,0,0和1。A点和B点之间虽然存在可见性突变,但不在同一表面上,即点A在阴影投射体上,点B在阴影接收体上,对二值光源可见性图进行普通的均值滤波后,使本该保持不变的A点和B点的可见性分别变小和变大,导致错误的渗透效果,如图6(b)所示。对于正常的阴影边界,如相邻点C和D,存在可见性突变且在同一表面上,滤波后产生了正确的平滑过渡效果。在本文中,当2个相邻像素对应场景点的深度差小于设定阈值时,表示其在同一表面上,深度值为可视场景点到光源的距离。

为了在整体的滤波过程中剔除可见性渗透,以带掩模的均值滤波方法来解决这个问题,修正后效果如图6(c)所示。带掩模是为了屏蔽掉在滤波器覆盖范围内,与目标像素对应可视场景点不在同一表面上的点。在掩模计算过程中,将滤波器中被屏蔽掉的像素的系数值设为0,将被保留的像素的系数值设为1。此掩模的实现思想为:①以滤波器内目标像素为中心,从内向外逐层扩展,每个外层像素和其最近的内层像素两两判断其对应的场景点是否在同一表面。②扩展第一层时保留与目标像素对应场景点在同一表面上的点。③扩展第二至最后一层之间的某一层时,对于没有留下的内层像素则屏蔽对应外层像素的判断;若相比较的两像素对应场景点在同一表面,则表示与目标像素对应场景点也在同一表面,并保留外层该点。

图6 修正可见性渗透

自适应可见性滤波是一个使用自适应大小的滤波器对二值光源可见性图进行带掩模计算的均值滤波的过程。以2×2(奇数)为滤波模板,对虚拟像素平面上目标像素对应3D场景中可视场景点的二值光源可见性1进行自适应可见性滤波,得到此场景点的可见性因子2,步骤如下:

步骤3.以目标像素为中心点向外扩展层,遍历此层每个像素P,同时判断与其最近的内层像素位置处的same数组为何值:

步骤3.1.如果为0,则在P位置处将same数组赋0;

步骤3.2.如果为1,则计算P与最近内层像素分别对应的场景点的深度差=|dnear|,此时若<,则P与目标像素位于同一表面,并将P位置处的same数组赋1。

步骤4.更新迭代次数=+1,若>,执行下一步;否则转到步骤3。

步骤5.遍历整个滤波模板内的所有像素,判断每个像素对应same数组中的值是否为1。统计same数组中为1的个数并记为,同时累加same数组为1时对应滤波模板中像素的二值光源可见性值得到。

关于自适应可见性滤波过程中的深度差阈值,其主要受光源位置影响。由于本文深度值不是水平垂直深度,而是光源到可视场景点的距离,即使在同一平面上的相邻像素间也会存在深度差异,所以用深度差阈值来判断2个邻近像素是否位于同一表面。最优阈值需要根据不同场景调试得到,并同时适用于平面和曲面的阴影接收对象。

在图7中,对同一像素点以5×5的滤波模板为例,将自适应可见性滤波与普通均值滤波的可见性结果作对比。图中浅色像素点在同一阴影投射对象中,深色像素点在同一阴影接收对象中,目标像素为某阴影接收点;1为普通均值滤波器,2为本文算法计算出的该像素下的掩模。从结果可以看出,自适应可见性滤波在二值光源可见性图中,通过使用掩模只对与目标像素在同一表面上的像素滤波,修正了简单滤波产生的可见性渗透问题。

图7 简单滤波与自适应可见性滤波的结果对比

2.5 软影效果的生成

得到在可见区与非可见区之间平滑过渡的可见性因子后,输出最终颜色C。值得注意的是,一般在3D场景的软影绘制方面,间接光照阴影在视觉上远没有直接光照阴影明显。因此在计算视觉近似软影时,只需调制直接光照就可以获得良好的效果,对于间接光照则不做处理。本文基于光线跟踪算法,计算无需考虑遮挡情况的可视场景点直接光照颜色值C和间接光照颜色值C;然后使用上一步得到的可见性因子调制对应可视场景点的颜色缓存:C=C×2+C,得到全局光照下体现遮挡对象空间位置远近关系的半影结果。另外,对于使用阴影图算法常见的阴影瑕疵,即漏光和过阴影问题,分别是由丢失遮挡信息和叠加计算遮挡数据导致的[6]。而本文算法基于光线跟踪框架,所有可视场景点都有对应的遮挡测试光线,对于深度复杂的场景也可以准确获得遮挡信息,并且只使用距离阴影点最近遮挡点的数据来计算可见性因子,因此本文算法避免了此类问题。

3 实验结果与分析

实验所用计算机配备Intel Xeon E3-1225 v3 3.20 GHz CPU、8 GB 内存和4 GB显存NVIDIA Quadro K2200 GPU,使用NVIDIA CUDA SDK 7.5和 NVIDIA OptiX SDK 3.9.0作为GPU开发工具。测试场景均为动态场景,图像分辨率统一设置为1024×768。算法中的经验参数设置为=20,1=11,2=12,D=45,=0.3。另外,基于蒙特卡洛积分光照计算方法在正方形面光源下进行13×13的点光源采样得到物理正确阴影效果,并作为参考来检验本文算法的有效性。在光线跟踪过程中使用了层次包围盒空间加速结构[18],且算法步骤全部在GPU端运行。

3.1 绘制速率分析

图8为本文算法在全局光照下绘制的3个不同复杂度的场景。可以看出,产生的软影非常平滑,且半影随阴影遮挡对象到阴影接收对象之间距离的变大而变柔和。由于算法与光线跟踪框架完全兼容,所以容易生成包含镜面反射效果的软影。且本文算法速率较快,可达到实时交互式绘制的速度。

图8 本文算法在全局光照下的绘制结果

图9为本文算法使用相同模型在不同位置光源照射下绘制的3个场景,表1为图9中各场景的光源中心点的坐标、绘制速率和空间平滑滤波器的整体情况。可以发现随着光源位置的改变,同一阴影投射点和其对应阴影接收点之间距离变得不同,导致同一阴影接收点的滤波器大小也会不同。由于滤波器的大小影响半影质量和绘制速度,所以算法效率和光源中心点的位置有关。

图9 光源位置对空间平滑滤波器大小的影响

表1 图9中光源位置对绘制速率的影响

3.2 物理真实度对比分析

图10为本文算法绘制的软影与蒙特卡洛算法产生的物理正确阴影在体现可变半影效果上的对比图。图中bunny场景为斯坦福兔子,plant场景为绿色盆栽。可以看出,本文算法结果与物理正确阴影效果相似,且在边界柔和度方面差异很小,具有能够体现遮挡对象空间位置远近关系的可变半影效果。

图11为本文算法与蒙特卡洛算法在表现多重遮挡情况下的对比。people场景中有人物之间阴影互相重叠的情况,park场景中部分树叶的阴影与栅栏阴影出现重叠。可见当同一阴影接收点被多个遮挡体作用时,本文算法优先显示距离阴影接收点最近的遮挡体产生的阴影柔和度。比如,people场景中,一个人的腿部和另一个人的头部产生的阴影出现重叠,本文算法优先对距离阴影接受点更近的腿部遮挡体所产生的更暗的阴影进行显示;在park场景中,栅栏和树叶的阴影重叠处,本文算法优先显示栅栏的阴影效果。

图10 本文算法与蒙特卡洛算法对比可变半影效果

图11 本文算法与蒙特卡洛算法在表现多重遮挡情况时的对比

通过图10,11中2种结果对比说明,本文算法可以有效绘制视觉上近似正确的软影。虽然和物理真实阴影有所出入,但在性能方面,与蒙特卡洛算法对比有明显提升,具有实时性。表2给出了本文算法的核心部分(对二值光源可见性图进行自适应可见性滤波)在每帧绘制时的额外时间开销。另外,本文算法可以模拟普通面光源照射下的软影,但较难模拟异型面光源产生的阴影效果。主要原因是采样单个光源点产生的阴影与异型面光源的阴影范围差别很大,异型面光源生成的半影所占比例多且较难精确表示,而解决这个问题是下一步的研究工作。

表2 图10和图11中场景的绘制帧率

4 结 论

本文提出基于自适应可见性滤波的近似软影实时绘制算法。该算法取光源中心为参考点并模拟出等效虚拟面光源,有效减少了对光源大量采样所产生的开销,在测试场景中可以满足交互式绘制的速度要求。根据等效的虚拟面光源和虚拟遮挡面建立自适应滤波器模型,能够动态确定每个可视场景点的滤波器宽度;同时滤波器的大小根据可视场景点到视点的深度值自适应调整,使阴影效果在不同视点下可以保持一致。然后通过带掩模的自适应可见性滤波方法,修正了当相邻像素对应场景点不在同一表面时使用普通均值滤波产生的可见性渗透问题;完全兼容光线跟踪框架,易产生场景中带镜面反射间接光照效果的软影。另外,本文算法的绘制结果与蒙特卡洛积分光照计算方法得到的物理正确软影非常接近,没有漏光和过阴影瑕疵,但具有体现阴影遮挡体与阴影接收体之间远近关系的可变半影,并实现了多重遮挡情况下真实的阴影重叠效果。

[1] WOO A, POULIN P, FOURNIER A. A survey of shadow algorithms [J]. IEEE Computer Graphics & Applications, 1990, 10(6): 13-32.

[2] HASENFRATZ J M, LAPIERRE M, HOLZSCHUCH N, et al. A survey of real-time soft shadows algorithms [J]. Computer Graphics Forum, 2003, 22(4): 753-774.

[3] GERHARDS J, MORA F, AVENEAU L, et al. Partitioned shadow volumes [J]. Computer Graphics Forum, 2015, 34(2): 549-559.

[4] CHOROŚ K, SUDER T. Improved partitioned shadow volumes method of real-time rendering using balanced trees [C]//Proceedings of Conference on Computational Collective Intelligence Technologies and Applications. Cham: Springer International Publishing, 2017: 569-578.

[5] 过洁, 徐晓旸, 潘金贵. 基于阴影图的阴影生成算法研究现状[J]. 计算机辅助设计与图形学学报, 2010, 22(04): 579-591.

[6] 沈笠, 杨宝光, 冯结青. 多层阴影图轮廓边背投软影算法[J]. 计算机辅助设计与图形学学报, 2013, 25(9): 1265-1274.

[7] FERNANDO R. Percentage-closer soft shadows [C]// Proceedings of ACM SIGGRAPH 2005 Sketches. New York: ACM Press, 2005: 35.

[8] 孙明彦, 吕伟伟, 刘学慧, 等. 深度剥离与GPU结合的近似软影算法[J]. 中国图象图形学报, 2010, 15(9): 1391-1397.

[9] YANG B G, DONG Z, FENG J Q, et al. Variance soft shadow mapping [J]. Computer Graphics Forum, 2010, 29(7): 2127-2134.

[10] SHEN L, FENG J, YANG B. Exponential soft shadow mapping [J]. Computer Graphics Forum, 2013, 32(4): 107-116.

[11] 沈笠, 杨宝光, 冯结青. 高质量快速百分比邻近滤波软影算法[J]. 计算机辅助设计与图形学学报, 2014, 26(3): 329-338.

[12] LIKTOR G, SPASSOV S, MÜCKL G, et al. Stochastic soft shadow mapping [J]. Computer Graphics Forum, 2015, 34(4): 1-11.

[13] PETERS C, MUNSTERMANN C, WETZSTEIN N, et al. Beyond hard shadows: Moment shadow maps for single scattering, soft shadows and translucent occluders [C]//Proceedings of ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games. New York: ACM Press, 2016: 159-170.

[14] 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.

[15] SUFFERN K. 光线跟踪算法技术[M]. 刘天慧, 等, 译. 北京: 清华大学出版社, 2011: 37-38.

[16] GONZALEZ R C, WOODS R E. 数字图像处理[M]. 阮秋琦, 等, 译. 2版. 北京: 电子工业出版社, 2011: 88-93.

[17] 李丽勤, 马瑶. 均值滤波及中值滤波在速度谱曲面滤波中的应用[J]. 山西建筑, 2018(2): 214-216.

[18] 杨鑫, 王天明, 许端清. 基于GPU的层次包围盒快速构造方法[J]. 浙江大学学报: 工学版, 2012, 46(1): 84-89.

Approximate Soft Shadow Rendering Based on Adaptive Visibility Filtering

YANG Chao-zhi, CHEN Chun-yi, QU Fu-heng, CHEN Sheng, XING Qi-wei

(School of Computer Science and Technology, Changchun University of Science and Technology, Changchun Jilin 130022, China)

Focusing on the difficulty in interactively rendering physically correct soft shadows existing in global illumination effects, this study proposes an algorithm for producing approximate soft shadows, which can generate alterable penumbra reflecting spatial positions of occluders. Firstly, a binary light-visibility map is generated by using occluding detection method based on ray tracing and taking the center of light source as a reference point. Secondly, a way that adaptively determines the kernel size of spatial smoothing filter is proposed. Then, visibility factors that change smoothly from visible region to non-visible region are obtained by a method of adaptive visibility filtering. The filtering method can solve the problem ofvisibility infiltration by using mask. Finally, the visibility factors are used to dynamically modulate the direct illumination of theassociated visible points in the process of ray tracing. The highly realistic soft shadow effects are produced by adding the modulated direct illumination and ordinary indirect illumination together. Experimental results show that the algorithm is fully compatible with ray tracing and hence is easy to compute indirect illumination including mirrored visual effects. The soft shadows in images generated by our method look like physically-correct soft shadows. The rendering speed of our method is beyond 30 frames per second for all test scenes featuring specular reflections, hence satisfying the requirements of interactive applications.

soft shadows; variable penumbra; light-source visibility; ray tracing; adaptive filtering

TP 391

10.11996/JG.j.2095-302X.2019010165

A

2095-302X(2019)01-0165-08

2018-05-15;

2018-07-05

吉林省科技发展计划项目(20170101005JC,20180519012JH);吉林省省级产业创新专项资金项目(2016C091);吉林省教育厅“十三五”科学技术项目(JJKH20170629KJ,JJKH20181136KJ)

杨超智(1992-),男,山东滨州人,硕士研究生。主要研究方向为真实感三维图形绘制。E-mail:yang.chaozhi@foxmail.com

陈纯毅(1981-),男,重庆人,教授,博士,博士生导师。主要研究方向为真实感三维图形绘制、计算机仿真。E-mail:chenchunyi@hotmail.com

猜你喜欢

视场阴影光源
一种晶圆自动光学检测系统的混合路径规划算法
一种基于基准视场扩散拼接的全景图像投影方法
光源改变光环境
享受LED光源的卓越色彩 Acer(宏碁)PD1530i
你来了,草就没有了阴影
鲜艳迷人的HLD光源4K HDR新贵 BenQ(明基)X12000H
LED照明光源的温升与散热分析
阴影魔怪
Serial of Applications of Satellite Observations An Introduction to Hyper-spectral Infrared Sounders Onboard Polar-orbiting Meteorological Satellites