一种基于凝视点的随机光切方法

文档序号:32312067发布日期:2022-11-23 12:03阅读:43来源:国知局
一种基于凝视点的随机光切方法
p.seidel,k.myszkowski,and p.didyk.luminance-contrast-aware foveated rendering.acm transactions on graphics(tog),38(4):1

14,2019.
7.[3]l.wang,r.li,x.shi,l.-q.yan,and z.li.foveated instant radiosity.in 2020 ieee international symposium on mixed and augmented reality(ismar),pp.1

11.ieee,2020.
[0008]
[4]walter b,fernandez s,arbree a,et al.lightcuts:a scalable approach to illumination[m]//acm siggraph 2005papers.2005:1098-1107.
[0009]
[5]d.lin and c.yuksel.real-time stochastic lightcuts.proceedings of the acm on computer graphics and interactive techniques,3(1):1

18,2020.


技术实现要素:

[0010]
本发明解决的技术问题是:克服现有技术的不足,提供一种基于凝视点的随机光切方法,以高帧率在vr头戴式显示器中为高感知敏感区域渲染高质量光照,且支持具有超过25万动态光源和漫反射、镜面反射、光泽对象的全动态场景。
[0011]
本发明涉及主要创新点是:
[0012]
(1)实现了一种基于凝视点的时空-亮度感知敏感度图和光切构建方法,结合人眼视觉系统对于时空和亮度的感知敏感度,构建基于凝视点的时空-亮度感知敏感度图,并在不牺牲可感知的渲染质量的情况下,为不同的视觉感知敏感区域生成不同精度的光切以提升渲染效率。
[0013]
(2)实现了一种基于多分辨率光源样本选择方法,可以更高效地为光切中的每个节点选择光源样本。
[0014]
本发明采用的技术方案为:一种基于凝视点的随机光切方法,包括以下步骤:
[0015]
步骤1:光源树的构建:给定一个虚拟场景,为当前场景的光源构建基于平衡二叉树的光源树tree;
[0016]
步骤2:g缓冲区的构建:给定当前帧和上一帧的视角,构建当前帧的g缓冲区fbg;所述g缓冲区fbg包含法线帧缓冲fbn、反照率帧缓冲fba、速度帧缓冲fbv和亮度帧缓冲所述法线帧缓冲fbn中的每个像素存储该像素在虚拟场景中对应物体上的法线;所述反照率帧缓冲fba存储该像素在虚拟场景中对应物体上的反照率;所述速度帧缓冲fbv存储该像素在虚拟场景中对应物体上的移动速度;所述亮度帧缓冲存储该像素在虚拟场景中对应物体上的亮度,通过渲染一个当前帧的低分辨率渲染图像来计算得到,在低分辨率图像计算中同时保存了渲染过程中构建的光切lc

和选择的光源样本ls

用于步骤4进行基于多分辨率的光照样本的选择,且低分辨率的大小为当前帧输出图像分辨率的1/8;
[0017]
步骤3:基于凝视点的时空-亮度感知敏感度图和光切的构建:利用步骤2构建的g缓冲区fbg提取基于凝视点的时空特征图fsfm和基于凝视点的亮度特征图flfm,然后基于fsfm和flfm构建基于凝视点的时空-亮度感知敏感度图sl-fpsm;fsfm中每个像素存储一个0-1的值,用于表示该像素对应的时空特征敏感度;flfm中每个像素存储一个0-1的值,用于表示该像素对应的亮度特征敏感度;sl-fpsm中的每个像素存储一个0-1的值,值越大说明时空-亮度感知敏感度越高,渲染质量越高;然后根据每个像素在sl-fpsm中的值为每个像
素生成不同精度的光切lc;
[0018]
步骤4:基于多分辨率的光照样本的选择:利用步骤1构建的光源树tree,步骤2渲染低分辨率渲染图像的过程中构建的光切lc

和选择的光源样本ls

,步骤3构建的基于凝视点的时空-亮度感知敏感度图sl-fpsm,根据sl-fpsm和lc

,为lc中的部分节点复用ls

中的光源样本,为lc中剩余节点对光源树tree进行遍历并选择光源样本;
[0019]
步骤5:光照渲染:利用步骤4选择的光源样本,对当前帧的输出图像的每个像素计算漫反射光照结果,利用步骤3构建的sl-fpsm,使用基于sl-fpsm的路径追踪算法对当前帧的输出图像的每个像素计算光泽反射光照结果;最后将漫反射光照结果和光泽反射光照结果合并得到最终的光照渲染结果。
[0020]
进一步,所述步骤2中,亮度帧缓冲得到如下:首先给定当前帧的输出图像的分辨率(w,h),使用实时随机光切法渲染当前帧的低分辨率渲染图像,低分辨率渲染图像的分辨率为w/8,h/8,即为当前帧输出图像分辨率的1/8,并同时保存在低分辨率渲染图像的渲染过程中构建的光切lc

和选择的光源样本ls

用于步骤4进行基于多分辨率的光源样本的选择;然后使用bicubic上采样方法将低分辨率渲染图像进行上采样,使其分辨率为(w,h);最后根据上采样的低分辨率渲染图像计算得到当前帧的亮度帧缓冲
[0021]
进一步,所述步骤3中,基于凝视点的时空-亮度感知敏感度图和光切的构建方法实现如下:
[0022]
(1)利用步骤2构建的g缓冲区fbg构建时空-亮度感知敏感度图sl-fpsm,首先,从fbg中提取基于凝视点的时空特征图fsfm和基于凝视点的亮度特征图flfm;对于当前帧的输出图像中的每个像素px,使用三维高斯滤波器对fsfm和flfm在px上的值进行结合,并模拟结合后的特征值在最大不可感知的阈值α范围内的降低程度;最后,对于每个像素px,采用这个像素对应的三维高斯滤波器的标准偏差衡量在α范围内能接受的特征值降低程度,然后根据α计算sl-fpsm在该px中的值,α为0-0.5范围内的小数;
[0023]
(2)对于当前帧的输出图像中的每个像素px,构建px的光切,该光切的节点数为map[px]
·
max
lspp
,其中,map[px]为sl-fpsm在px上的值,max
lspp
为最大光源样本数;再采用贪心算法从步骤1构建的光源树tree的根节点进行遍历为px构建光切,直到px的光切的节点数达到所需节点数,完成为每个像素生成不同精度的光切。
[0024]
进一步,所述步骤4中,利用步骤1构建的光源树tree,步骤2渲染低分辨率渲染图像的过程中构建的光切lc

和选择的光源样本ls

,步骤3构建的基于凝视点的时空-亮度感知敏感度图sl-fpsm实现为:对于当前帧的输出图像中的每个像素px的光切lc[px]中的每个节点node,生成一个随机数rad;若rad小于sl-fpsm在像素px上的值,且在步骤2生成的光源样本集ls

[px]中有光源样本即叶子节点,则是node的叶子节点,复用ls

[px]中的光源样本作为node的光源样本;若rad不小于sl-fpsm在像素px上的值,或者ls

[px

]中没有光源样本是node的叶子节点,则使用层次重要性采样方法从node开始遍历光源树,直到得到叶子节点l,并将l作为node的光源样本。
[0025]
进一步,所述步骤4中,光照渲染方法实现如下:
[0026]
利用步骤4选择的光源样本,对当前帧的输出图像的每个像素计算漫反射光照结果,利用步骤3构建的sl-fpsm,使用基于sl-fpsm的路径追踪算法对当前帧的输出图像的每个像素计算光泽反射光照结果;最后将漫反射光照结果和光泽反射光照结果合并得到最终
的光照渲染结果。
[0027]
本发明的原理在于:
[0028]
(1)通过为周边的高时空-亮度感知敏感区域进行高质量的光照渲染来进一步提升凝视点渲染的感知质量。
[0029]
(2)根据当前视点提取基于凝视点的时空特征图和基于凝视点的亮度特征图,使用三维高斯滤波器来模拟每个像素的在时空和亮度特征中在不产生可感知损失范围内的降低,构建基于凝视点的时空-亮度感知敏感度图来存储三维高斯滤波器每个像素的标准差用来描述每个像素能接受的时空-亮度的最大降低程度。
[0030]
(3)通过对光切的一些节点复用低分辨率光照渲染中已经选择的最优光源样本来进一步提升光源样本选择方法的效率。
[0031]
本发明与现有技术相比的优点在于:
[0032]
(1)本发明与现有方法相比,能够在vr头戴式显示器中达到53-110fps的帧率,支持包含超过25万个动态光源和动态漫反射/镜面/光亮物体的全动态场景,该方法不仅可以在凝视点区域进行高质量的光照渲染,还可以在周边的高时空-亮度感知敏感区域渲染高质量的光照效果;
[0033]
(2)本发明还提出了一种基于时空-亮度的光切生成方法,与lin等人提出的实时随机光切法相比,该方法将人眼视觉系统的视觉感知特征与光切生成相结合,可以在不同的感知敏感区域生成不同精度的光切;
[0034]
(3)本发明提出一种多分辨率光样本选择方法,该方法对低感知敏感度区域像素中光切的每个节点复用低分辨率光照渲染选择的低精度光源样本,对于高感知敏感度区域像素中光切的部分节点复用低分辨率选择的低精度光源样本,为光切中剩余节点快速选择高精度光源样本。与lin等人提出的实时随机光切法,本发明的方法可以进一步提升光源样本选择的效率。
附图说明
[0035]
图1为本发明基于凝视点的在包含大量光源的场景中的光照渲染效果图;
[0036]
图2为本发明基于凝视点的随机光切方法的总体流程图;
[0037]
图3为本发明中基于凝视点的时空-亮度感知敏感度图的构建流程图;
[0038]
图4为本发明中基于多分辨率的光照样本的选择算法的流程图。
具体实施方式
[0039]
下面结合其他附图及具体实施方式进一步说明本发明。
[0040]
如图1所示,本发明的第一步为当前场景的光源构建基于平衡二叉树的光源树,第二步为构建当前帧的g缓冲区,并保存在构建g缓冲区的亮度帧缓冲时生成的光切lc

和选择的光源样本ls

。第三步为构建基于凝视点的时空-亮度感知敏感度图(sl-fpsm)和光切,首先利用第二步构建的g缓冲区,构建sl-fpsm,然后根据每个像素在sl-fpsm中的值来为每个像素生成不同精度的光切。第四步为选择基于多分辨率的光源样本,基于多分辨率的光照样本的选择,对于输出图像中每个像素的光切的所有节点,利用sl-fpsm和lc

对部分节点直接使用已选择的光源样本集合ls

中的光源样本,并对剩余节点从光源树中进行遍历
并选择光源样本。第五步为光照渲染,对于当前帧的输出图像的每个像素px,使用px在第四步选择的光源样本为px计算漫反射光照结果;根据sl-fpsm,使用弹射一次的路径追踪方法为px渲染光泽反射光照结果,最后将漫反射光照结果和光泽反射光照结果合并得到最终的光照渲染结果。
[0041]
1.光源树的构建
[0042]
如图2中所示,本发明的第一步就是构建光源树。为了实时重建光树以支持包含大量动态光源的场景,使用平衡二叉树来构建光源树。在一个基于平衡二叉树的光源树中,所有包含单个光源的叶子节点都在树的底层。由于平衡二叉树中叶子节点的数量必须是二的幂,所以根据需要添加空的光源对叶子节点补齐使其总数是二的幂。光源树中的每个节点都存储了底层光源的边界框和总的光强度。由于使用的是平衡二叉树,所以不需要存储子节点指针,因为子节点的指数可以直接从父节点的指数中计算出来。此外,每个叶子节点都存储了相应的光源id。由于在动态场景中光源的id不能直接从叶子节点索引中计算出来,因为每一帧光源的叶子索引都可能不同。为了最大限度地减少构建时间,本发明构建器根据其位置的莫顿码对光源进行排序。
[0043]
2.g缓冲区的构建
[0044]
如图2中所示,本发明的第二步是构建g缓冲区。给定虚拟场景s当前帧和上一帧的视角v和v

,输出帧的分辨率(w,h),输出当前帧的g缓冲区fbg,fbg包含法线帧缓冲fbn,反照率帧缓冲fba,速度帧缓冲fbv,亮度帧缓冲fbn中的每个像素都存储了这个像素在虚拟场景中对应物体上的法线,同理,fba存储了这个像素在虚拟场景中对应物体上的反照率,fbv存储了这个像素在虚拟场景中对应物体上的移动速度。本发明的方法还需要亮度特征来指导光切的生成和光源样本的选择。从低分辨率渲染结果中提取亮度特征是有效和高效的,而且低分辨率渲染过程生成的低精度光切和光源样本可以在高分辨率渲染中进行复用。因此,给定当前帧的输出图像的分辨率(w,h),我们直接使用yuksel等人提出的随机光切法渲染一个当前帧的低分辨率渲染图像fb

,低分辨率渲染图像的分辨率为(w/8,h/8)。同时保存了在低分辨率渲染图像的渲染过程中构建的光切lc

和选择的光源样本ls

用于步骤(4)进行基于多分辨率的光照样本的快速选择。然后使用bicubic上采样方法对fb

进行上采样,使其分辨率为(w,h),即得到当前帧的亮度帧缓冲
[0045]
3.基于凝视点的时空-亮度感知敏感度图和光切的构建
[0046]
如图2中所示,本发明的第三步是基于凝视点的时空-亮度感知敏感度图(sl-fpsm)和光切的构建。在基于凝视点的时空-亮度感知敏感度图(sl-fpsm)和光切的构建方法中,首先构建sl-fpsm,然后根据sl-fpsm为每个像素生成不同精度的光切。构建sl-fpsm的流程如图3所示。在构建sl-fpsm的步骤中,首先从g缓冲区fbg中提取基于凝视点的时空特征图fsfm和基于凝视点的亮度特征图flfm。然后,使用三维高斯滤波器对fsfm和flfm进行结合,并模拟结合后的特征值在最大不可感知的阈值α范围内的降低程度。最后,用三维高斯滤波器在每个像素中的标准偏差来计算sl-fpsm在该像素中的值。在根据sl-fpsm生成光切的步骤中,对于当前帧输出结果fb中的每个像素,将sl-fpsm中相应的像素值乘以一个常数,得到这个像素的光切所需的有限节点数,然后每个光切的节点数为每个像素生成不同精度的光切。
[0047]
图3描述了sl-fpsm的构建流程。给定g缓冲区fbg和基于凝视点的视力特征图fbf,
输出sl-fpsm map。fbg包括当前帧的法线帧缓冲fbn,反照率帧缓冲fba,速度帧缓冲fbv,亮度帧缓冲基于凝视点的视力特征图fbf中的每个像素都存储了视力下降函数在该像素点对应的偏心率的视力值。sl-fpsm的构建包含两个子步骤。
[0048]
在子步骤1中,提取两个基于凝视点的特征图:基于凝视点的时空特征图fsfm fm
st
和基于凝视点的亮度特征图flfm fm
l
。fm
st
中每个像素p的特征值通过以下公式计算得到:
[0049][0050]
其中fbf(p)是视觉敏锐度特征图在像素点p处的值,是使用sobel滤波器计算p在fbn中的一阶导数的值,计算p在fba中的一阶导数的值,计算p在fbv中的一阶导数的值。fm
l
中每个像素p的特征值通过以下公式计算得到:
[0051][0052]
首先为建立一个3级的亮度拉普拉斯图像金字塔lp。lp1(p)表示拉普拉斯图像金字塔第一层中p的值,lp3(p)表示第三层中p的值。ε用于防止低亮度区域导致lp3(p)值为0产生数学奇异性,将ε设置为0.01。
[0053]
在子步骤2中,对于每个像素p,寻求一个具有最大标准偏差ρ的三维高斯滤波器来合并基于凝视点的时空特征图fsfmfm
st
和基于凝视点的亮度特征图flfmfm
l
,并模拟每个像素上的特征值在最大不可感知的阈值α范围内的最大降低。对于高斯滤波器来说,标准差越大,过滤后的特征与原始特征之间的差异越大,特征值的降低也就越大。越大的特征值降低会导致更大程度的渲染质量的下降。因此,对于每个像素来说,在最大不可感知的阈值α范围内,其三维高斯滤波器的标准偏差越大,这个像素所能容忍的渲染质量下降就越大。以下方程描述了对于一个像素p,其对应的的三维高斯滤波器的标准差ρ
p
模拟的α范围内的基于凝视点的时空和亮度特征值的最大降低。
[0054][0055]
其中max(fm
st
(p),fm
l
(p))是fm
st
(p)和fm
l
(p)之间最大值。是由三维高斯滤波器卷积后的缩小的特征值。ρ
p
越大,最大特征值与缩小的特征值之间的差异越大,因此由三维高斯滤波器卷积的ρ
p
的缩小的特征值用以下表示:
[0056][0057]
同时,也可以用如下公式表示:
[0058][0059]
其中是以fm
st
(p)为中心的大小为5
×
5的内核的高斯平均值,是以fm
l
(p)为中心的大小为5
×
5的内核的高斯平均值。因此,ρ
p
可以由以下公式计算得到:
[0060]
[0061]
然后,sl-fpsm map中每个像素的值由以下公式计算得到:
[0062][0063]
其中ρ
pmin
是所有像素中最小的ρ
p
,ρ
pmax
是所有像素中最大的ρ
p

[0064]
在构建了sl-fpsm之后,用它来指导光切的生成。对于输出帧缓冲fb中的每个像素p,用map[p]乘以每个像素的最大光样本数max
lspp
,得到这个像素的光切所需的节点数l。然后根据l细化光切,直到光切的节点数变成l。
[0065]
4.基于多分辨率的光照样本的选择
[0066]
如图2中所示,本发明的第四步是生成基于多分辨率的光照样本。该方法为光切的部分节点复用低分辨率渲染中选择的最优光样本,而无需对每个光切的节点都遍历一次光源树,从而加速了光源样本的选择。首先,将当前像素px的光源样本ls初始化为空,然后为每个像素的光切的每个节点选择光源样本。
[0067]
对于一个光切中的节点node,其光源样本选择流程图如图4所示。首先在0到1的范围内生成一个随机数rad,然后计算px在低分辨率渲染帧缓冲区fb

的对应像素px

,px

=px
·
(w

/w,h

/h),其中(w,h)为当前帧的输出图像的分辨率,(w

,h

)为当前帧的低分辨率渲染图像的分辨率,在此设置为(w

,h

)=(w/8,h/8)。
[0068]
如果rad小于(1.0-map[px]),并且在低分辨率光源样本集ls

[px

]中有低分辨率的光源样本(即叶子节点)是node的叶子节点,选择ls

[px

]中的最优低分辨率光源样本l。通过函数lrls来快速判断ls

[px

]中是否有低分辨率的光照样本是节点的叶子结点。由于在基于平衡二叉树的光源树中,树上的每个节点都可以通过其偏移值lid来快速索引,而且节点根据其偏移值从小到大连续存储的。因此,对于每个像素px

,低分辨率光切lc

[px

]中的节点按照其偏移值从小到大进行存储,低分辨率光源样本集ls

[px

]中的光源样本按照其偏移值从小到大进行存储。lrls计算节点叶子节点的最小偏移量lid
min
和最大偏移量lid
max
,如果lid
min
小于ls

[px

]中光源样本的最小偏移量或lid
max
大于ls

[px

]中光源样本的最大偏移量,则返回真,否则将返回假。lid
min
和lid
max
由如下公式计算得到。
[0069][0070]
其中n是树的总层数。如果ls

[px

]中有低分辨率的光源样本是node的叶子节点,用函数nlight从ls

[px

]中为node选择最佳光源样本l。nlight函数首先如下公式计算出节点与ls

[px

]中的光照样本l在lc

[px

]中对应的节点node

之间的距离dist,,然后选择距离dist最小的光照样本l。
[0071][0072]
如果rad不小于(1.0-map[px]),或者ls

[px

]中没有低分辨率的光源样本是node的叶子节点,使用层次重要性采样方法从node开始遍历光源树,直到得到叶子节点l;最后,将l合并到ls。
[0073]
5.光照渲染
[0074]
如图2中所示,本发明的最后一步是光照渲染,生成当前帧的输出结果fb。首先,初始化fb、漫反射帧缓冲区fbd和高光反射帧缓冲区fbm。然后,给定虚拟场景s、当前帧的视角
v、输出帧的分辨率(w,h)以及选择的光样本集合ls执行传统光照渲染方法,计算每个像素的漫反射光照,并将结果存储在漫反射帧缓冲区fbd中。如果s中存在包含光泽或镜面材质的物体,根据虚拟场景s、基于凝视点的时空-亮度感知敏感度图sl-fpsm、每个像素的最大射线样本数max
rspp
、v和(w,h),实现基于凝视点的路径追踪渲染每个像素的光泽反射光照,将结果存入高光反射帧缓冲区fbm。基于凝视点的路径追踪是在sl-fpsm的指导下实现的弹射一次的路径追踪。具体来说,对于fbm中的每个像素px,基于凝视点的路径追踪方法在px中使用的射线样本数为max
rspp
·
map[px]。最后,将fbd中每个像素的值与fbm中每个像素的值相加得到该像素最终的渲染结果。
[0075]
实验使用的硬件配置是intel i7-10700kf处理器,nvidia geforce 3080ti显卡,64g内存。运行在windows 10 64位系统上。所有涉及到效率测试的程序是都使用o2级优化进行编译的64位程序。
[0076]
本发明未详细阐述的技术内容属于本领域技术人员的公知技术。
[0077]
尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1