一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种线性变换球面分布的实时间接光泽反射渲染方法与流程

2022-02-22 17:21:08 来源:中国专利 TAG:


1.本发明属于实时渲染领域,尤其涉及一种线性变换球面分布的实时间接光泽反射渲染方法。


背景技术:

2.目前,业内常用的现有技术是这样的:
3.间接光泽反射效果是日常生活中很常见的光照效果之一,对间接光泽反射效果的模拟在游戏、影视动画、虚拟现实、视景仿真等等领域中具有极其重要的价值和研究意义,间接光泽反射效果能够极大地增强渲染图像的真实感,是图形渲染领域中至关重要的一部分。在实时渲染领域中,立即辐射度算法是用于实时模拟间接光泽反射效果的算法之一。在该算法中为了计算虚拟点光源处以及着色点处的光泽反射效果,通常会借助某种光照模型来计算反射光线的辐射亮度,比如blinn-phong模型,但是该光照模型不符合真实物理定律,而近年来在基于立即辐射度的ggx brdf光照模型来计算光泽反射。但是ggx brdf光照模型的计算复杂度很高,而且其计算开销会随着虚拟点光源的数量呈线性增长,最终导致在ggx brdf光照模型中具有较高的光照计算开销,使渲染效率受到影响。
4.此外,在基于辐射度计算全局光照的许多方法中,需要通过在场景中生成虚拟点光源来计算间接光照。其中最具有代表性的是即时辐射度算法,通过从光源出发的拟随机行走粒子与场景相交并在相交处产生虚拟点光源。反射阴影贴图算法则简化了生成虚拟点光源的过程,该方法通过生成一张反射阴影贴图,并直接在阴影贴图上采样生成虚拟点光源。之后在此基础上,许多改进的方案陆续被提出,但从某种程度上来说,这类方法均依赖于光源的位置,并不能很好地支持所有的光照场景。如当场景较为复杂时,阴影贴图中相邻像素的深度值可能存在较大的差异,那么根据阴影贴图采样生成虚拟点光源可能会遗漏许多细节,造成最终光照结果的偏差。此外当场景中存在多个光源时,则需要每帧为每个光源均生成一张阴影贴图,这将带来很大的计算成本,且根据多张阴影贴图生成的虚拟点光源也无法复用。为了简化虚拟点光源的生成方式以及加强对虚拟点光源的复用,出现了一些基于物体空间生成虚拟点光源的方法,根据场景的几何信息来生成虚拟点光源,并建立相应的层级结构进行管理。在物体空间生成虚拟点光源的方式普遍是基于模型表面的三角形网格来生成虚拟点光源,并以网格的中心点作为虚拟点光源在空间中的位置。这种方法需要解决模型表面的三角形网格大小各异,分布情况复杂的问题。如前向光源裁剪算法,就考虑到物体表面的三角形网格可能存在大小不一的问题,因而在网格处理阶段根据三角形的面积进行划分,对较大的三角形网格进行细分,而对较小的三角形网格则随机裁减。但一方面,该方法未考虑到场景表面可能存在一些形状狭长的三角形网格,这些网格也能满足对面积的要求,但在其上生成虚拟点光源时,虚拟点光源对区域的代表性较差,容易产生光照结果的偏差;另一方面,为了减少参与最终光照计算的虚拟点光源的数量,该方法使用随机裁剪虚拟点光源的方式,这也会造成一定程度上的光照结果偏差。
5.综上所述,现有技术存在的问题是:
6.(1)基于阴影贴图生成的虚拟点光源在多光源场景中无法复用和基于三角形网格生成的虚拟点光源可能存在因网格形状、大小等因素带来结果偏差的问题;
7.(2)随机裁剪虚拟点光源可能计算很多对着色点影响很小的虚拟点光源;
8.(3)ggx brdf光照模型来渲染间接光泽反射效果所带来的高开销问题;
9.解决上述技术问题的难度和意义:
10.在立即辐射度算法中,为了实时渲染间接光泽反射,必须将直接光照区域离散化为具体的虚拟点光源在进行光照计算,而不同的虚拟点光源生成方法都会带来不同程度的失真。且直接光源情况过于复杂,虚拟点光源生成效率表现不佳。反射阴影贴图算法则简化了生成虚拟点光源的过程,但会随着直接光源数量增加,导致几何倍数的增加虚拟点光源的数量,渲染开销会变得很大。而基于物体空间生成虚拟点光源的方法,可能由于物体表面的三角形网格大小不一,进而导致虚拟点光源分布不均,最终导致较大的渲染误差。
11.针对随机裁剪虚拟点光源可能导致视锥体外部的虚拟点光源过度参与计算的问题,本发明通过定义重要性因子,控制了每个虚拟点光源的重要程度,剔除掉对光照贡献小的虚拟点光源,减少了光照的计算量。在进行间接光照反射计算时,通过引入线性变换球面分布的思想,通过预计算存入纹理中的线性变换矩阵将ggx brdf球面分布变换为余弦分布进行计算,复杂的ggx brdf公式就被变换为余弦分布的计算以减少计算量。由于存在纹理采样操作,不同的虚拟点光源具有不同的矩阵纹理采样坐标,从而导致纹理采样次数太多,将大大降低渲染效率。故无法直接将其应用于间接光泽反射效果的计算,否则会存在大量的纹理采样操作,将严重影响效率。本发明算法改进了光照计算模型,交换了光照模型中的入射向量与出射向量,如此一来好处是求虚拟点光源的辐射强度时,纹理采样坐标与具体的着色点无关,只与虚拟点光源以及直接光源有关。所以可以将矩阵纹理采样操作和着色点的gpu执行线程进行解耦。换言之,本发明通过计算着色器,并行执行与虚拟点光源数目相等的gpu线程,每个线程和一个虚拟点光源相关,在每个线程中独立且并行地对矩阵纹理进行采样,并且将采样得到的余弦变换矩阵和对应的虚拟点光源关联起来。本发明算法在不影响帧率和渲染质量的基础上,提前将物体模型网格重新划分为等大的正方形网格,并以此为基础生成均匀的基于物体空间的虚拟点光源。本发明算法可以充分发挥gpu算力,保留对光照结果影响更大的虚拟点光源,并且将线性变换矩阵与具体着色点进行解耦,最终使得间接光泽反射计算变得更加高效,减少了卡顿。


技术实现要素:

12.针对现有技术存在的问题,本发明提供了一种线性变换球面分布的实时间接光泽反射渲染方法。
13.本发明是这样实现的,一种线性变换球面分布的实时间接光泽反射渲染方法,通过使用将ggx brdf线性变换到余弦分布简化光照计算,并剔除对光照计算贡献不大的虚拟点光源,具体包括以下步骤:
14.步骤一:重新网格化方法先对几何模型表面进行处理,在模型表面生成大小大致相当、分布均匀的半规则网格,然后在每个网格上生成虚拟点光源;
15.步骤二:判断直接光源到虚拟点光源的光线与场景几何之间的相交情况来计算虚拟点光源的可见性,并保留可见的虚拟点光源以计算间接光照;
16.步骤三:对于每个虚拟点光源计算重要性因子,确定虚拟点光源的重要程度,尽可能使得光照强度越强并且距离越近的虚拟点光源更加重要,并且根据直接光方向计算线性变换矩阵;
17.步骤四:结合概率密度函数之后的新的光源随机衰减函数利用俄罗斯轮盘的方法随机的剔除虚拟点光源以减少计算量;
18.步骤五:通过线性变换球面分布的方法计算影响当前着色点的虚拟点光源光照强度。
19.进一步,步骤一中,重新网格化后的模型很难恢复到与原模型相同的颜色外观,不过在本发明的算法中,仅需为这些顶点计算一个近似的颜色便能满足需要。重新网格化后模型中的每个新顶点,可以在原模型中找到距离较近的多个顶点,使用这些顶点的颜色值按距离进行插值,来计算该新顶点的颜色值。
20.进一步,步骤二中,仅需要由直接光源向各结点发射一根光线,以判断结点对直接光源是否可见,这一过程发射的光线数量并不多,需要消耗的时间很少,因此效率较高。同时通过比较直接光源与相交点之间的距离和视点与结点之间的距离以判断虚拟点光源的可见性。
21.综上所述,本发明的优点及积极效果为:
22.本发明在与几种常用的虚拟点光源生成方法具有着不同的优势,比如反射阴影图算法,该算法从光源位置出发,根据光源的视角对场景光栅化,从而得到多张渲染纹理,分别存储光源视角下观察到场景信息。然后将反射阴影图中的像素视为虚拟点光源,从而形成间接光照。但是该算法由于对于每一个直接光源都需要对整个场景进行光栅化,故难以拓展到多光源;另一种前向光源裁剪的方法,使用关联划分策略的随机抽取过程,将模型中的三角形按照一定的划分策略进行细分和裁剪,保留的每个三角形将作为一个虚拟点光源。这种方法不需要任何的预计算,也可以用于动态场景和多光源中。但模型中可能存在因网格形状、大小等因素带来结果偏差,从而导致虚拟点光源分布不均。
23.本发明在虚拟点光源计算阶段,采用引入重要性因子,对每一个虚拟点光源计算重要度,并根据重要度计算该虚拟点光源影响半径。与其他方法相比较时,光照计算误差较低且间接光泽反射结果与计算效率能够达到一种平衡。
24.本发明在虚拟点光源剔除阶段,采用平方衰减作为光源衰减函数,并采用正比于光源衰减函数的概率密度函数,来随机决定光源的影响范围。
25.本发明在间接光泽反射计算阶段,将ggx brdf球面分布通过线性变换矩阵变化到余弦分布,这样算法能在计算过程中不存在任何开方、三角函数等等高开销的操作,能够进一步提升间接光泽反射效果的渲染效率。
26.本发明具体稳定的渲染效率、较低的系统开销和较低的间接光泽反射渲染误差。
附图说明
27.图1是本发明实施例提供的线性变换球面分布的实时全局光照渲染方法流程图。
28.图2是本发明实施例提供的物体空间网格类型对生成虚拟点光源和间接光照的影响示意图。
29.其中,图2:a.flc中虚拟点光源分布;b.本发明中虚拟点光源分布。
具体实施方式
30.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
31.下面结合附图对本发明的应用原理作详细描述;
32.如图1所示,本发明实例提供的实时间接光泽反射渲染方法,具体包括以下步骤:
33.s101:通过对多种不同虚拟点光源生成方法进行对比,确定了前向光源裁剪虚拟点光源生成算法并进行改进;
34.s102:为每个虚拟点光源定义重要性因子以确定虚拟点光源半径,并根据俄罗斯轮盘法对点光源进行随机剔除;
35.s103:对光照渲染方程进行优化,将线性变换矩阵与具体着色点解耦,为每个虚拟点光源计算线性变换矩阵;
36.s104:通过引入线性变换球面分布的思想,将复杂的ggx brdf球面分布变换到简单的余弦分布并计算实时间接光泽反射。
37.下面结合具体实施例对本发明的应用原理进行进一步说明;
38.实施例1:实时间接光泽反射算法实现过程与分析
39.(一)实现过程
40.1、针对实时间接光泽反射评价的体系
41.根据在立即辐射度算法对实时间接光泽反射算法的研究实验进展,对一个间接光泽反射算法的评价主要由两部分组成:效率和精度。效率的评价相对比较直观,一般根据系统资源消耗情况以及单位时间内的渲染效率即可进行评判。精度指标则相对比较复杂,为了说明本发明实现地形渲染要达到的指标要求,本发明采用计算屏幕空间中每一个像素采用本发明所计算的间接光泽反射结果的灰度值以及真实的间接光泽反射结果的灰度值的均方根误差(rmse)。
42.2、前向光源裁剪虚拟点光源生成算法
43.实验采用jakob在2015年提出的快速重新网格化方法,对模型表面进行重构,重构之后的模型表面将由四边形网格组成该重新网格化算法在模型几何处理方面具有一定的稳定性和高效性,可以满足本发明算法对物体几何处理的要求。但在与本发明工作结合的过程中,该算法也存在一些不足之处:重新网格化后的模型丢失了模型内部子网格拓扑的信息,输出的模型网格为一个整体,使得原模型材质中与各子网格相关联的纹理信息失效,无法根据原本的纹理uv信息获取各顶点的颜色值,因此本发明需要为重新网格化后模型中的每个顶点重新计算颜色值。在这个问题上,重新网格化后模型中的每个新顶点,可以在原模型中找到距离较近的多个顶点,使用这些顶点的颜色值按距离进行插值,来计算该新顶点的颜色值。
44.3、虚拟点光源的影响半径计算方法
45.对于基于物理的光源,其光源衰减函数如式1所示,其中l是着色点和点光源之间的距离。
46.47.本发明采用tokuyoshi提出使用正比于光源衰减函数的概率密度函数,来随机决定光源的影响范围,概率密度函数如式2所示,其中αi为重要性因子。
[0048][0049]
结合概率密度函数之后的新的光源随机衰减函数如式3所示,其中ξi是为每个光源分配的随机数。
[0050][0051]
因为f

(l)和pi(l)都是单调递减函数,所以当f

(l)衰减到0时,即p
l
(l)=ξi时,光照强度被截断到0。通过推导可以得到第i个虚拟点光源,使用随机衰减函数f

(l)时,光源半径ri的大小如式4所示。
[0052][0053]
4、采用线性变换球面分布之后的间接光泽反射计算方法
[0054]
对于着色点x其间接光泽反射计算公式如式5所示。其中lo是着色点p接受到的辐射亮度,ωo是观察方向,ωi是第i个虚拟点光源到着色点的入射方向,n 表示场景中虚拟点光源的总数,ii(ωi)表示第i个虚拟点光源在ωi方向上的辐射强度,n是着色点的法线,f(p,ωi,ωo)是ggx brdf。
[0055][0056]
经过线性变换球面分布之后间接光泽反射计算公式如式6所示,其中ω
io
=m-1
ωi,z
io
为ω
io
的z方向分量,m为线性球面变化矩阵。
[0057][0058]
(二)物体空间网格类型对生成虚拟点光源和间接光照的影响
[0059]
1、实验方法与过程
[0060]
本发明提到基于物体空间生成虚拟点光源时,对形状狭长的三角形网格,所生成的虚拟点光源代表性差的问题。为了验证这种情况,本发明在场景中,将使用物体空间三角形网格生成虚拟点光源(flc算法)、使用均匀网格生成虚拟点光源(本发明算法)与使用pbrt光线追踪得到的间接光照结果进行对比,来验证物体空间网格形状对间接光照的影响。
[0061]
2、实验结果与分析
[0062]
实验结果如图2所示。
[0063]
场景中圆柱表面存在大量形状狭长的三角形网格,根据flc算法中的描述,只要三
角形的面积满足阈值,即在其上生成一个虚拟点光源,因此在该场景中,使用flc算法生成虚拟点光源的分布情况如图2中(a)所示,可以看到生成的虚拟点光源主要集中在圆柱表面两个“环”处,表面上其他区域则仅有少量虚拟点光源或没有虚拟点光源,导致间接光照出现两个较亮的区域;而使用均匀网格生成虚拟点光源的分布情况如图2中(b)所示,可以观察到生成的虚拟点光源大体上均匀分布于圆柱表面,从而使得间接光照结果也较为均匀,也更加接近于 pbrt光线追踪的结果。
[0064]
(三)基于渲染效率的实验与分析
[0065]
1、实验方法与过程
[0066]
本发明在sponza场景中与未经优化的ggx brdf算法得到的间接光照结果进行对比,来验证本发明提出了基于线性变换球面分布的间接光泽反射算法,能够实现和ggx brdf算法相似的渲染效果,同时提升渲染效率。
[0067]
2、实验结果与分析
[0068]
实验结果如表1和表2所示。
[0069]
表1:在sponza场景中使用本发明算法和ggx brdf算法,渲染得到的间接光泽反射效果的差异
[0070][0071]
表2:在sponza场景中使用本发明算法和ggx brdf算法渲染间接光泽反射效果时,每个步骤的具体的时间开销(ms)
[0072][0073]
表1展示了本发明算法和ggx brdf算法在渲染过程中,每个pass所消耗的时间。本发明算法相比ggx brdf算法能取得更大的效率提升,具体来说,在diffuse-to-glossy、glossy-to-diffuse以及glossy-to-glossy的每一个glossy 反射中,本发明算法都能取得一定的效率提升。在sponza场景中,本发明算法能够实现和ggx brdf算法相似的间接光泽反射效果,同时能够提升渲染效率,总渲染时间提升了16.316ms。
[0074]
(五)结果:
[0075]
为验证算法的有效性和适用性,设计了一套间接光泽反射渲染评价体系,设计实验从渲染效率、性能开销、渲染精度三个角度对本发明算法的实现效果进行了分析比较,展现了所得到的实验结果和数据,根据建立的评价体系和对应的指标要求,进一步验证了使用该算法的三个优势:稳定的渲染效率、较低的系统开销和较低的间接光泽反射渲染误差。
[0076]
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献