基于空间均匀网格的光子映射算法研究

基于空间均匀网格的光子映射算法研究

ID:31360050

大小:113.00 KB

页数:8页

时间:2019-01-09

基于空间均匀网格的光子映射算法研究_第1页
基于空间均匀网格的光子映射算法研究_第2页
基于空间均匀网格的光子映射算法研究_第3页
基于空间均匀网格的光子映射算法研究_第4页
基于空间均匀网格的光子映射算法研究_第5页
资源描述:

《基于空间均匀网格的光子映射算法研究》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、基于空间均匀网格的光子映射算法研究  摘要:光子映射是一种全局光照方法,在渲染辉映、焦散、漫反射等方面效果良好。通常的方法是发射光子,建立基于K-Dtree的光子图,然后在此基础上寻找与估算点相应的光子完成光辐射强度估算,最后渲染图形,具有生成图形慢、内存消耗大等缺点。鉴于此,提出一种新方法:先建立空间均匀网格,发射光子后,再利用GPU的并行功能建立光子与网格映射关系偏移表,之后寻找估算点的光子完成光辐射强度估算,渲染图形。实验结果表明,新算法生成的图形速度更快、更清晰,具有更高的实用价值。  关键词:光子映射;均匀网格;GPU;偏移表  DOIDOI:10.11907/rjdk.16246

2、1  中图分类号:TP311  文献标识码:A文章编号:1672-7800(2016)012-0019-03  0引言  光子映射是全局光照算法,通常先从光源向场景发射光子,建立基于K-Dtree的光子图,接着从光子图中寻找估算点的光子完成对估算点光辐射强度估算,最后生成图形[1]。光子映射的光子图与场景表述可以分离,光子映射能处理很复杂的场景,包括千万个三角面片、实例化的几何体、复杂的过程式物体[2]。  针对通常算法消耗内存大、生成图形慢的缺点,PerH8Christensen[3]于2002年提出凸多边形的思路,该方法是获取一组离估算点最近的光子,再求出包围光子的最小凸多边形,进而利用

3、凸边形的面积作为估算光辐射强度估算时的分母。该方法能比较精确地估算光辐射强度,但耗时很长。同年HeinrichHey[4]提出另一种精确估算光辐射强度的算法。该算法的思想是:场景中的每个物体都用网格表示出来,采用立方体收集光子,并求出每个立方体内的多边形面积,每个光子的能量平均分配到光子正对着的多边形,每个多边形的光辐射能应与沿着光子入射方向的投影面积成正比。2005年SzbolcsCzuczou[5]应用图形硬件的纹理结构存储光子,用滤波方式搜索最邻近的光子信息,该方法的好处是可以一步获取所有顶点的辐射能,缺点是获取的辐射能仅是平均值。2008年Hachisuka等[6]采用逐步缩小估算半

4、径,同时采用加大光子密度的办法,在渲染水面焦散时效果较好。2009年DanA.Alcantara[7]等在GPU上实现光子的哈希并行算法,搜索有效光子的速度更快,但需开辟较大的共享内存。耿中元、徐庆为[8]为了改善物体细节部分的绘制效果,2009年提出对搜索范围内的每个光子都求出它在绘制点上的切平面投影,通过判断投影点与绘制点之间的距离是否小于搜索半径,进而决定是否使用该光子计算光辐射强度。2011年WojciechJarosz[9]等提出采用自适应光子束方法渲染有参与介质的柱状型光照时取得较好效果。2012年Doidge[10]结合渐进光子映射算法与路径跟踪算法的优点,在渲染焦散现象时采取

5、光子映射算法,渲染其它现象时则采用光线跟踪算法,两种算法互相切换的花费较大。2013年Ben8Spencer[11]等先为每个光子划分一个沃罗诺伊空间,接着采用渐进光子的方式计算光辐射强度。2013年Mara、Luebke、McGuire[12]利用GPU的栅格硬件,在对光辐射强度估算时采用多面体方法获取光子,提高了光辐射强度的精度,先从理论上证明该方法的一致性,实验上也验证了该算法的有效性,但该算法在处理较复杂的场景时会对估算点重复计算。  新算法先将物理空间分成均匀网格,然后发射光子,再建立均匀网格与光子的映射关系偏移表,实验结果比通常基于K-Dtree的光子映射算法更快,图像也更清晰。

6、  1网格算法  Step1:空间均匀网格建立。先将场景分为可与图形像素一样多的包围盒[13-14],之后再根据统一的尺寸划分网格,一般网格以搜索半径r[15]为长度。划分网格时间只占整个网格构建的一小部分时间。  Step2:为每个光子计算索引。网格建好后需要为每个光子分配光子索引可采用如下方式分配索引:  Idx(p)=G(p).x+G(P).y.GridSize.x+G(p).Z.GridSize.x.GridSize.y(1)  其中,G(p)=[(p-worldOrigo)/cellSize]。GridSizex表示x轴上的网格数,GridSizey表示y轴上的网格数,GridSi

7、zez表示z轴上的网格数。索引值的范围为0~N,其中N=GridSizex.GridSizey.GridSizez.所有的光子都分配到0~N-1中去,由于这部分可以并行进行,采用GPU的kuda作并行计算[16-17]。  Step3:偏移表(OffsetTable)计算。完成均匀网格划分、光子存储、光子与网格对应关系建立,再建光子偏移表,用于光子搜索,如图1所示。8  Step4:利用均匀网格寻找光子。利用

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。