一种基于场景光照图的大场景非直接光照算法

文档序号:6624648阅读:185来源:国知局
一种基于场景光照图的大场景非直接光照算法
【专利摘要】一种基于场景光照图的大场景非直接光照算法,它有四大步骤:步骤一、将场景在纹理空间参数化;步骤二、计算场景光照图;步骤三、根据步骤二动态烘焙的场景光照图,利用光线追踪算法计算非直接光照;步骤四、使用帧关联降低非直接光照计算量。该方法能够比较好地支持复杂场景、效果可调并且比较稳定。它在图像处理【技术领域】里有较好的实用价值和广阔地应用前景。
【专利说明】一种基于场景光照图的大场景非直接光照算法

【技术领域】
[0001]本发明涉及一种基于场景光照图的大场景非直接光照算法,属于图像处理【技术领域】,特别涉及实时渲染过程全局光照中非直接光照计算的图像处理技术。

【背景技术】
[0002]全局光照计算是一个比较困难的问题,它包含直接光和非直接光照及其阴影,由于整个场景都有可能对非直接光照产生影响,且非直接光中不少是经过多次反射得到的。非直接光照对场景的视觉效果影响比较大,但需要比较大的计算代价,在需实时绘制的场合计算非直接光照是一个比较困难的问题。
[0003]现有不少处理算法可以处理非直接光照,但它们本身都存在着一些问题。如预计算辐射度算法和预计算光照算法,可以提供比较真实的效果,但对处理动态灯光和动态场景有问题;如普通的即时辐射度算法,对灯光支持不太好,并不适合类似环境图光源;效果比较好的LPV等,由于栅格的分辨有限,无法充分表达场景,常会出现漏光现;而效率较高的有SSAO等环境遮挡算法,由于只考虑屏幕空间的环境光照,光照并不稳定。
[0004]本发明中的方法将直接光照和非直接光照分开计算,首先将场景在纹理空间参数化,并使用主灯光的RSM计算每个图元的光照生成光照图,随后使用光线追踪算法计算非直接光照。虽然对于光照图由于分辨率问题会照成失真,但非直接光照在场景中变化比较缓慢,对于一般表面材质可以近似计算。该方法使用直接光照提供高分辨率的阴影和其它效果,而非直接光照使用近似计算,并且可以方便地控制场景非直接光照的细节精细度。


【发明内容】

[0005]本发明的目的在于提供了一种基于场景光照图的大场景非直接光照算法,该方法能够比较好地支持复杂场景、效果可调并且比较稳定。
[0006]实现本发明目的的技术方案:一种基于场景光照图的大场景非直接光照算法,其特征在于包括以下具体步骤:
[0007]步骤一、将场景在纹理空间参数化;
[0008]将场景在纹理空间参数化,就是反转物体空间和纹理空间。反转物体空间和纹理空间需要场景UV数据,这需要建立场景时建立相应的UV数据。
[0009]面片在UV空间中占有面积越大,它的非直接光照计算的细节也越高,这需要进行额外的UV创建,但也提供了场景的非直接光照的细节控制。因此对于多个物体,令物体离相机越远,则它所占的纹理空间越少,UV数据通过下式变换:

【权利要求】
1.一种基于场景光照图的大场景非直接光照算法,其特征在于:它包括以下具体步骤: 步骤一、将场景在纹理空间参数化; 将场景在纹理空间参数化,就是反转物体空间和纹理空间;反转物体空间和纹理空间需要场景UV数据,这需要建立场景时建立相应的UV数据; 面片在UV空间中占有面积越大,它的非直接光照计算的细节也越高,这需要进行额外的UV创建,但也提供了场景的非直接光照的细节控制;因此对于多个物体,令物体离相机越远,则它所占的纹理空间越少,UV数据通过下式变换:
其中h)为裁减空间坐标,(Ui, Vi)为UV空间坐标,(ni;x, ni;y)为纹理i的缩放因子,调节细节,(Yi,x,y,y)为纹理i的偏移地址; 缩放因子和偏移地址由CPU端进行计算管理,这里使用距离和可见性作为调节参数,并使用遗传算法进行解空间搜索; 步骤二、计算场景光照图; a)使用RSM计算一次光照 一次光照图计算是使用场景参数图,利用RSM计算各个图元的直接光照,并使用类似PCF阴影算法计算,只不过由于RSM生成一次光照图时并没有使用正面消隐,需要将每个图元位置按它法线进行偏移减轻自遮挡; b)利用a)中的一次光照图,使用光线追踪算法计算二次光照 多次光照图计算使用光线追踪算法完成,对每个图元进行重要性采样近似计算为:
其中4 为图元中点X沿$方向反射的辐射度,N为对点X的采样数,为双向散射分布函数,Lm(x^j为点X从~刀向得到的入射福射度,QiSx法向量和入射方向的夹角,/?(M)为米样分布,这里使用基于Phone BRDF重要性米样; C)对b)中的二次光照图进行重要性加权模糊,b)中计算量比较大的是由于场景空间的关联性及非直接光照漫反射的低变化率,将近邻图元值近似加权为本图元值,相当于增加重要性采样的采样数,这里将生成的光照图按图元间的相似性进行重要性加权模糊:
其中zx,y为图元(x,y)的空间位置,nx,y为图元(x,y)的单位法向量,d和r为调整参数,控制周围图元的权重变化,K为归一化系数:
步骤三、根据步骤二动态烘焙的场景光照图,利用光线追踪算法计算非直接光照; 非直接光计算使用前面动态烘焙的场景光照图和光线追踪算法完成,光线追踪使用基于BVH的无堆栈算法,由于BVH加速结构的计算速度和它的深度有关,并且为了场景的可伸缩性,因此这里使用在CPU端对物体的AABB进行3D栅格化,并将物体ID号存储于对应的3D元素里,这样相当于将一颗BVH树转化为有组织BVH森林,访问计算如下: a)计算与光线初次相交的3D元素; b)访问3D元素中存储的物体,并对其中BVH树进行计算,如相交则返回; c)使用DDA算法计算光线经过的下一个3D元素,如存在则执行b),否则返回; 步骤四、使用帧关联降低非直接光照计算量; 帧关联是利用数据复用以降低计算量,通过检测上一帧和当前帧的像素之间关系确定是否重用数据;设帧i的相机变换阵为Μ:,投影变换阵为,屏幕空间(U,V)的深度为屮(11,V),法线为N1i, V),对于当前帧的(U,V)在前一帧位置(u' ,N')计算如下:
(u' , y' ,d1_1, I) = (0.5.ut/wt+0.5,0.5.vt/wt+0.5, dt/wt, I)
(ut, vt, dt, wt) = M.(2u-l, 2v-l, d1, I)式 5) M =M"1.-Mi^ -(M'.-M1 V1
pro} cam \ proj cam J 法线变换如下:
N1-1 = (Μ—1)τ.Ni 式 6) 由于光线追踪计算的是非直接光照,因此如果当前后两帧的位置和法线相近则重用该非直接光照值,其中τ、U和Κ为关联阈值,处理流程如下: a)计算当前片段在前一帧中的(u',N' )、cT1和Μ—1 ; b)如果(u',y')超出[0,1],则跳转到g; c)如果dot(旷1,Ni) < τ,则跳转到g ; d)如果IId1-CTI I > ^,则跳转到8; e)如果IItnLtnHjI> κ,则跳转到g; f)重用前一帧中的(u',N丨)非直接光照值,并终止; g)重新计算当前片段的非直接光照值; 其中e)步中的tni为降分辨率图元法线方向的测试光线交点距离,tnH为前一帧的图元法线方向光线交点距离,当e)步条件满足时表明有动态物体会影响该图元,需重新计算该图元的非直接光照。
【文档编号】G06T15/06GK104183009SQ201410422870
【公开日】2014年12月3日 申请日期:2014年8月25日 优先权日:2014年8月25日
【发明者】周付根, 资粤, 吴福祥 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1