基于BRDF和GPU并行计算的全局光照实时渲染
2016-12-02秦磊华
王 芳, 秦磊华
(1. 郑州升达经贸管理学院信息工程系,河南 郑州 451191;2. 华中科技大学计算机科学与技术学院,湖北 武汉 430074)
基于BRDF和GPU并行计算的全局光照实时渲染
王 芳1, 秦磊华2
(1. 郑州升达经贸管理学院信息工程系,河南 郑州 451191;2. 华中科技大学计算机科学与技术学院,湖北 武汉 430074)
基于光线追踪,将屏幕图像像素分解为投射光线与场景对象交点面片辐射亮度和纹理贴图的合成,每个面片的辐射亮度计算基于双向反射分布函数(BRDF)基的线性组合,并通过图形处理器(GPU)处理核心并行绘制进行加速,最后与并行计算的纹理映射结果进行合成。提出了一种基于BRDF和GPU 并行计算的全局光照实时渲染算法,利用GPU并行加速,在提高绘制效率的前提下,实现动态交互材质的全局光照实时渲染。重点研究:对象表面对光线的多次反射用BRDF基的线性组合来表示,将非线性问题转换为线性问题,从而提高绘制效率;利用GPU并行加速,分别计算对象表面光辐射能量和纹理映射及其线性组合,进一步提高计算效率满足实时绘制需求。
全局光照;图形处理单元;双向反射分布函数;渲染方程;并行计算
全局光照(global illumination)的基本任务是实现三维场景渲染,生成真实逼真的图像,是实时渲染的必然发展方向。在渲染中,需要模拟光线在场景中进行传播所发生的各种物理现象,如多次的反射、折射、阴影、渗色和焦散等。这不仅需要场景中创建的各种模型对象的外观几何特性和材质属性的精确描述,还要计算求解多次反射、折射带来的无限微积分问题。全局光照计算的复杂性使得渲染一幅真实感图像通常需要很长的时间。全局光照绘制算法一直是图形学领域研究的重点和热点,各种研究集中在如何花费更短的时间渲染高质量的真实感图像,并达到实时渲染要求。
经典的传统全局光照渲染算法主要有适合光滑表面的光线追踪算法和适合漫反射表面的辐射度算法,这些算法绘制的图像效果还有一定的局限,不能进行精确描述,渲染时间也难以达到实时的要求。基于以上算法思想,陆续研究了多种全局光照算法,提高了渲染效果和逼真度,缩短了渲染时间。Kaijya[1]提出使用蒙特卡罗(Monte Carlo)方法的光线追踪算法(raytracing);Arvo和Kirk[2]提出了改进的逆向粒子追踪算法(backward particle tracing);Veach和Guibas[3]提出了多重重要性采样策略(optimally combining sampling),提高了光线追踪算法的适应性和效率;Lafortune和Willems[4]与 Veach和 Guibas[5]分别使用双向路径追踪算法(bidirectional path tracing),通过生成一对眼睛子路径和光源子路径,然后连接每个结点(node)的方法,降低计算的方差水平,对某些以前复杂的很难计算的场景获得了很好的计算效果;Jensen[6]提出了Photon Mapping算法,该算法结合了双向路径追踪算法和Monte Carlo方法的优势,包括生成光子图和光子收集两阶段,能够有效模拟特殊光学现象,如焦散(caustics)、渗色(color bleeding)、半影、次表面材质等,对于复杂场景也比较高效和精确,但因计算量大达不到实时要求;陈皓和刘晓平[7]提出了集群环境下考虑负载均衡的改进Photon Mapping并行算法,在一定程度上提高了渲染速度。
随着图形处理器(graphics processing unit,GPU)的飞速发展,出现了一些全局光照实时渲染的算法。Zhou等[8]提出了阴影场(shadow fields),将场景中的光照或对象间的遮挡反射等因素的影响分解到线性基上,将复杂的积分运算转化为基系数的线性操作;王莉莉等[9]基于自适应环境光遮挡和局部最高点集合计算遮挡角,提出微结构阴影修正算法,对于全局光照渗色现象实时渲染有较好的表现,但该算法主要针对表面微结构规则分布的对象;储璟骏等[10]在GPU中实现了传统的光线投射体绘制,满足了全局光照的实时交互绘制要求;Zhou等[11]提出实时K-D Tree构建方法,实现了光线跟踪算法在GPU上的并行实时渲染;Yang等[12]对K-D Tree进行改进,提出多分割K-D Tree(multi-split K-D Tree, MSKD)方法,提升了光线追踪在GPU上的实时渲染性能。但以上算法不支持动态交互材质;Ben-Artzi等[13]引入空间动态材质,支持可变材质的直接光照实时渲染,但不支持间接光照实时渲染;孙鑫等[14]提出了动态材质的全局光照实时渲染,主要研究了赋予材质的对象表面对光线的反射特性,关于GPU加速和纹理贴图对最终效果的影响没有做过多的探讨。
综合以上研究,本文提出了基于双向反射分布 函 数 (bidirectional reflectance distribution function, BRDF)和 GPU 并 行 计 算 的BRDFCM-GPU(BRDF changed material with GPU parallel computing)算法,利用GPU并行加速,重点研究在提高绘制效率的前提下,实时实现动态交互材质的全局光照渲染。具体创新有:①对象表面对光线的多次反射用 BRDF基的线性组合来表示,将非线性问题转换为线性问题,从而提高绘制效率;②利用GPU并行加速,分别计算对象表面光辐射能量和纹理映射及其线性组合,进一步提高计算效率满足实时绘制需求。
1 纹理映射和BRDF函数
通过三角形或多边形面片来表现对象模型的较多细节时简单易于实现。但当需要模拟复杂或精细表面细节时,将需要数量巨大的面片,对于存储、计算等都是巨大的挑战。通常通过将贴图纹理映射到对象表面来表现对象空间位置和模型精确细节,可以得到很好的计算和显示平衡效果。因为对象表面的最终表现效果,除了与空间位置、颜色纹理有关,还与场景光照效果密切相关,当纹理图案或对象表面光照特性经常变化时,每次则需要长时间重新计算,而将纹理图和光照效果分别计算和存储,再进行组合得到最终效果,可
以实现实时渲染。
1.1 纹理映射
纹理映射指将颜色或花纹图案分配给对象表面,并最终显示在屏幕上的规则和方法。纹理映射涉及纹理坐标、对象坐标、屏幕坐标等多个坐标系统间的转换,可以实现一维、二维和三维图像的纹理映射。纹理映射可以很好地表现凹凸起伏复杂表面对象的空间位置变化,但并不能真实反映光照条件下的反射效果。
1.2 BRDF函数
对象表面的光照反射特性,通常由 BRDF函数来描述。BRDF依据表面属性考虑光照情况对场景的影响,描述了光被反射、吸收和透射(折射)的量和变化情况。虽然这些反射分布是无序的,但都遵循一定的规则。镜面反射能量集中在一个方向,反射角等于入射角;漫反射(朗伯体)对象表面足够粗糙,其出射辐射亮度在以对象中心的 2π空间中呈常数,即出射辐射亮度不随视点而变化,亦称各向同性BRDF;非朗伯体反射各方向的反射强度不均一,也称各向异性BRDF。本文主要考虑前两种反射特性。
BRDF理论模型主要有4类:①使用微小面元对对象表面进行建模,使用参数来描述其形态特性,有显式解析表达,如 Phong、Blinn-Phong、Ward等(商业软件Maya、3dsMax的BRDF材质参数编辑就是基于这种模型);②通过测量真实物体表面上的反射和入射光线来描述这种材质,可以拟合为解析形式表达,也可以数据集的形式来表示;③空间BRDF函数(spatial BRDF,SBRDF),其将纹理贴图的空间特性与 BRDF函数的光照特性相结合,可以表现对象表面的颜色纹理、位置和光照效果。最直接的SBRDF实现,就是将BRDF函数的所有参数存储到纹理贴图的每个像素中,而更优秀并且适合 GPU并行渲染的是 Lafortune模型[15],但该模型使用了非线性的优化方法;④根据BRDF自身的形状特性,使用基相加技术,本文算法基于该理论模型,并进行了改进。
2 BRDFCM-GPU算法实现
2.1 区域面片划分
渲染方程描述了光能量从光源发射出来,经过场景中各种材质表面的多次反射、折射,最后进入观察者眼睛的整个物理过程,其实对渲染方程求解的过程就是对场景的渲染过程。
经典渲染方程定义为在面片上的某点在半球范围内向各方向出射。将场景中所有对象表面划分为小的区域面片,渲染方程从对半球方向的积分转化为对场景中所有对象面片的积分(图1),就可以得到如下的渲染方程等价形式
其中,x, x', x'' 表示场景中的点;f(x, x', x'')是BRDF函数;G(x, x', x'')是几何项,处理遮挡、衰减等现象;V(x, x')是可见性函数,如果点x和点x'相互可见,则V(x, x')为1,否则因遮挡等不可见,则为0。积分项是对所有能够直接传递到点 x'的光线发出面片进行积分。本文讨论的场景不考虑物体的自发光,所以暂时忽略Le(x, x')项。
图1 面片上的点x'在场景所有面片上积分
式(1)是光经过一次反射。将入射的辐射亮度根据不同的反射次数进一步区分,则点 x'射向 x的辐射亮度,包含所有通过反射到达x'的辐射亮度经过x'反射到达x的辐射亮度,可以描述为
现假设场景被划分为多个小的面片 Ri,面片内材质处处相同,具有相同的反射属性,将入射的辐射亮度根据不同的反射路径进一步区分,则对第n+1次反射,不同反射路径到达点x'的辐射亮度经过 x'反射到达 x的辐射亮度,可以递归的描述为
其中,Pn(R,fR)表示光的传播路径,即从光源发射出的光线经过面片n次反射达到x所经过的所有面片;L'n表示按照Pn描述的路径经过n次反射后,
x'射向点x的辐射亮度。
2.2 BRDF函数的线性描述和降维
传统的Blinn-Phong光照模型如式(4),从对象表面对漫反射、高光和环境光不同的反射特性,以及光线在传播路径上的衰减,描述了场景的光照效果
本文算法假定只在物体表面改变光路,不考虑折射和环境光情况,采用Blinn-Phong的BRDF模型描述对象的材质,可以通过改变其参数来实现改变对象的材质。
Blinn-Phong模型的BRDF表述为
其中,Kd表示漫反射系数;Ks表示高光系数;δ表示入射方向与出射方向的中间方向和反射点法线方向的夹角;ns表示对象表面的粗糙度。ns在选定的范围内均匀采样Ns次,得到Ns个线性无关的BRDF。漫反射通常表现主要而敏感的视觉效果,所以,漫反射的 BRDF采样直接作为一个基。其余 Ns-1个 BRDF,提取特征进行主成分分析(principal component analysis,PCA)降维后得到Nb-1个特征向量,共求得Nb个基。
现有一组 BRDF的基,可以将面片 R上的BRDF函数表示成这组基的线性组合
其中,fi表示面片R上的BRDF第i个基;ci表示对应于第 i个基的系数;Nb是基的数量。将式(6)代入式(3),并对n递归得到
这是n次反射的结果,只考虑两次反射的效果,即n=2,并且x点取视点xe,就得到需要的结果。
2.3 预计算
得到 BRDF基之后,场景中所有面片都从这些基中选择BRDF,采用光线投射预计算这些基的各种分布组合所对应的光照效果,就能够得到式(7)中的L'(xe, x', P1(R, f'))和L'(xe, x', P2(R, f'))。
假定场景中有n个面片,将所有n个面片引入式(7)可得
其中,R'表示 x'所在面片;f'表示相应的 BRDF。只考虑两次反射,取x为视点xe,则第一次反射为
第二次反射为
2.4 图形处理单元并行计算和渲染
GPU由大量节能体积小的可编程图形处理单元组成,特别适合计算机图形学中各种并行计算密集型算法。近些年GPU从有限固化功能发展到可编程架构,提供了更大的灵活性,为GPU加速全局光照实时渲染算法提供了全新的解决思路。
实时绘制离不开流水线体系结构,GPU并行绘制有几何流水线和像素流水线 2种架构,几何流水线绘制速度快,但只能很好地表现直接光照,而像素流水线绘制架构能满足全局光照实时绘制的需求。本文算法在最终渲染时,充分利用了GPU的像素流水线高效并行绘制。
2.4.1 算法数据结构
(1) 光源用带有 6个属性的光照函数I(x,y,z,θ,φ,λ)来表示,其中,(x, y, z)表示光源的位置坐标;(θ,φ)表示三维空间光源投射光线的方向;λ表示光源投射光线的能量强度。这6个属性,用户可以在编辑时进行修改。
(2) 每个面片的直接光照辐射亮度 Id作为面片的一个属性,预计算以后存储,以后计算一次反射或二次反射时可以直接访问。
(3) 本文算法只计算两次反射,真实感就能满足用户要求。第一次反射主要提供直接光照,由场景所有直接可见光源提供;第二次反射提供间接光照,由其他面片经过二次反射提供光照贡献,光能量保存在面片属性Ii中。
本文算法只考虑两次反射的原因在于:①光线随着传播距离呈现指数衰减趋势(距离平方反比),所以光源光线和对象表面的反射光线对于与之距离远的对象照明效果贡献不大;②光线投射到对象表面后,会根据对象表面材质特性有不同程度的光线吸收,当反射超过 2次,反射光线的能量已经十分微弱,对对象已经没有显著的照明效果。光线反射次数对照明效果贡献如图2所示。
图2 光线反射次数对照明效果贡献比较图
图2的teapot场景包含面数3 297,布置有一盏面光源,放置于左前方。从图 2可看出当光线反射次数为1(只提供直接照明)和2时,场景渲染效果有明显变化;当反射次数为 3时,和反射次数为 2时的比较,亮度和效果有微小的提升;当反射次数分别为6和9时,渲染效果已几乎看不出变化。所以在本文算法中只计算两次反射,即能满足场景渲染质量需求。
2.4.2 算法描述
本文算法及实时渲染步骤描述如下:
步骤 1. 将 GPU中大量的处理单位分为光照处理单元I和纹理映射单元T,分别运行相同程序。I处理单元负责对象面片上的光照计算,T处理单元负责纹理映射。
步骤2. 本文算法执行像素流水线绘制,将最终绘制屏幕图像按照像素划分为多个区域,每个处理单元 I/T对与划分的屏幕区域一一对应,如图3所示。
图3 GPU并行计算
I处理单元生成屏幕区域的全局光照帧缓存,T处理单元实现纹理映射生成纹理映射帧缓存,将各种帧缓存数据进行合成实现实时刷新屏幕。
步骤3. 每个光照处理单元I装载并运行本文算法。
(1) 从视点经屏幕像素点射向场景的光线采用光线追踪方法计算面片上的辐射亮度,只取离视点最近的面片,所以大量的计算在光线与对象表面的求交运算,采用自适应细分立方体空间[16]
的方法来减少求交计算量;
(2) 从视点投射光线到屏幕第一个像素,投射光线如与场景相交,则测试交点面片和所有光源是否相互可见,若不可见,则转②,若可见则进行以下两步:
① 计算一次反射贡献的辐射亮度,根据光源的光照函数 I(x,y,z,θ,φ,λ)和面片的BRDF计算出射辐射亮度,并将面片BRDF材质的基加到该面片沿传播路径反射的辐射亮度L'(xe, x', P1(R, f'))中;
② 计算二次反射贡献的辐射亮度,在该交点的法向半球内根据该面片的反射特性散射光线,如果与场景有相交,则按照相同方法,依次计算沿着散射光线出射的直接光照所形成的辐射亮度,并考虑面片上的纹理对二次反射的影响,再计算其所贡献的经过两次反射后到达视点的辐射亮度,将BRDF基加到L'(xe, x', P2(R, f'))上;
(3) 按照同样方法依次扫描屏幕所有像素。
步骤4. 所有I处理单元计算的光照结果被分别保存在 2张和最终渲染结果相同分辨率的高动态范围图像(high dynamic range image,HDRI)中,以存储更大范围和更多细节的光照信息。
步骤5. 纹理采用RGB三通道纹理,所有的T处理单元纹理映射后,将结果保存为和最终渲染结果相同分辨率的纹理映射帧缓存中。
步骤6. 第一次反射作用于纹理贴图,将第一次反射HDRI和纹理映射结果进行合成,然后再与第二张HDRI合成,就能实时刷新显示屏幕,从而得到实时渲染效果。
步骤7. 讨论。
(1) 当光源不变、材质不变、视角不变时,全局光照帧缓存和纹理映射缓存中的数据无需更新;
(2) 当光源改变、材质不变、视角不变时,需要将新的光源属性参数代入重新计算,更新 L'(xe, x', P1(R, f'))和全局光照帧缓存;
(3) 当光源不变、材质光照属性改变、视角不变时,需要修改 BRDF基的系数,更新全局光照帧缓存;
(4) 当光源不变、材质不变、视角改变时,需要重新进行求交运算,查找面片的辐射亮度 L'(xe, x', P1(R, f')),值为0时需要计算辐射亮度,并进行更新,所有像素计算后更新全局光照帧缓存;当变换几次视角后,所有面片的辐射亮度都将计算出来,以后视角变换(其他都保持不变),只需查找面片的辐射亮度值,无需再进行计算;
(5) 当光源不变、材质光照属性不变、视角不变,但纹理改变时,需要更新纹理映射帧缓存;
(6) 面片的划分由用户确定,面片划分粗糙,则会丢失细节,面片划分过细,又会带来巨大的计算代价,可以采用自适应划分的方法来进行平衡。
3 实验结果和分析
3.1 动态可变材质直接光照和全局光照比较
使用VC++2010和OpenGL4.1实现本文算法,硬件运行环境是Intel酷睿i7-2600四核CPU,8 G内存,Nvidia GeForce GTX 760显卡。
实验场景对象面片区域划分,可根据对象模型的复杂度,进行合理划分,GPU实现实时绘制。场景的渲染分辨率为800×600像素,参数ns∈[1, 200],Ns=500,Nb=10个基。
图4所示场景magic-box的光源是顶部的一个面光源,魔方的Kd=0.2,Ks=0.4,白色和蓝色墙壁的 Kd=0.3,Ks=0.3,地面的 Kd=0.2,Ks=0.4。图 4(a)、(c)、(e)是直接光照的效果,可以看到阴影区全黑;图4(b)、(d)、(f)是全局光照渲染效果,可以看到光源照不到的区域,由于光的反射也被照亮,图 4(b)、(d)白色墙壁上有很明显的渗色效果,被反射光照亮为红色和蓝色,阴影区域也被反射光照亮。图 4(a)、(b)的场景漫反射明显,图 4(c)、(d)场景中的魔方、地面、中间墙壁高光明显,墙面上的高光亮斑很明显,魔方的高光也更强接近金属色,图 4(d)中的倒影很明显。图4(e)、(f)场景中的魔方赋予暗纹贴图,地面赋予木纹贴图,墙面赋予花纹墙纸贴图,图4(f)天花板和背面墙面接缝处渗色效果明显,魔方和右侧蓝色墙面木纹投影到地面上的倒影也明显。
3.2 高光对强反射性对象的焦散效果
焦散是全局光照的一个重要现象和特征。图5所示的场景bracele采用点光源,观察高光对强反射性对象的焦散效果,平面Kd=0.2,Ks=0.3,手环Kd=0.2,Ks=0.4。当高反射物体材质高光越强,焦散效果越明显;接受反射光物体材质的高光越强,反射物体形成的倒影就越明显。ns值越小漫反射明显,ns值越大高光明显。图5(a)手环和平面的漫反射明显;图5(b)手环漫反射明显,平面高光明显反射强,手环有清晰倒影投影到平面上;图5(c)手环
高光明显,平面漫反射明显,手环投射到平面上的焦散十分明显且漂亮;图5(d)手环和平面均高光明显,手环投射到平面上的焦散和投影都十分明显,但与图5(c)略有不同。
图4 场景材质可编辑,直接光照和全局光照比较((a)~(b)墙壁、地面、魔方ns=10;(c)~(f)墙壁、地面、魔方ns=180)
图5 可变材质(修改BRDF参数)焦散效果
从场景magic-box和场景bracele的渲染结果比较分析可以看出,当场景材质变化(添加纹理贴图改变对象表面图案,通过参数ns的设置,调整对象表面的粗糙度,从而影响对象表面对漫反射光和高光的反射特性),本文算法能够真实感受渲染场景全局光照有明显效果,渗色和焦散效果明显,渲染帧频完全能够满足3D场景全局光照实时渲染要求,还可满足3D场景和虚拟现实实时交互的编辑修改材质。
3.3 本文算法与传统算法的比较和分析
以上两个场景(场景magic-box:面数4 613,场景bracele:面数66 446)分别使用传统光线跟踪算法Raytracing、Monte Carlo Raytracing、Photon Mapping、K-D Tree Raytracing 和本文算法(BRDFCM-GPU)实现,实验数据见表1。
表1 BRDFCM-GPU算法和其他算法渲染时间的比较(ms)
从表1可看出,本文算法(BRDFCM-GPU)比传统光线跟踪算法 Raytracing、Monte Carlo Raytracing、Photon Mapping渲染速度有极大的提升,在GPU中的运行比K-D Tree Raytracing渲染速度也有明显的提升。BRDFCM-GPU算法在GPU中运行比在CPU中运行渲染速度又有明显的加速效果,因为在 CPU中也可以实现线程间的并行,所以场景划分面片数较少时,GPU的加速效果不明显,但当面片数增加时,加速效果就越来越明显。
3.4 GPU核心数对算法时间的影响
表2是teapot、magic-box、bracele和superman 4个场景在不同GPU核心数上运行本文算法花费渲染时间的比较。图6是teapot、magic-box、bracele 和superman 4个场景在不同GPU核心数上运行本文算法花费渲染时间的折线图。
比较表2中的数据和图6中的折线,可以看出本文算法通过GPU并行计算实现了加速,随着场景模型复杂度的增加,GPU的加速效果愈加明显。
表2 不同GPU核心数渲染时间比较(ms)
图6 随着GPU核心数增加渲染时间加速
3.5 不同纹理分辨率对算法渲染时间(帧频)的影响
对场景teapot、magic-box、bracele、superman中的对象分别赋予不同分辨率的纹理贴图,花纹贴图赋予场景teapot的茶壶对象,木地板贴图赋予场景magic-box的地面对象,纯黄色贴图赋予场景bracele的手环对象,布纹贴图赋予场景superman的衣服对象,纹理贴图分辨率分别选取256×256、512×512和1024×1024,渲染时间见表3(渲染时间比较接近,所以用帧频表示,方便比较)。从表3可看出纹理分辨率对最终的渲染时间有一定的影响,分辨率越大渲染时间越长(帧频越小、速度越慢),所以在实际应用中,可根据需求适当设置分辨率,实现在渲染时间和渲染质量间寻求最佳平衡。
表3 不同纹理分辨率渲染时间(帧频)比较
4 结 论
本文算法将全局光照问题分解为一组与材质线性相关问题的叠加,场景中的材质通过 BRDF的基表示,将BRDF空间离散采样,通过PCA降维后得到较少数量的基,光照计算和纹理映射分别由GPU处理核心并行计算线性合成,实现了实时渲染的速度和效果。该算法在GPU上的运行性能明显优于CPU。对于3D场景编辑时的实时更新和交互式系统用户体验具有重要意义,对于交互式游戏、虚拟现实、增强现实、可视化仿真、网络可视化应用等领域的发展具有很大的推动和促进作用。
本文提出的是基于固定视点的快速实时绘制算法,当视点变化时,需要重新进行预计算,拓展支持动态视点是进一步要解决的问题。支持动态光源也是未来优化改进的方向。另外,随着网络硬件的发展和网络速度性能的提升,网络3D交互式实时再现将是未来发展方向,所以将本文算法向网络环境迁移是未来研究的方向。
[1] Kaijya T J. The rendering equation [C]//SIGGRAPH’86 Proceedings of the 13 th Annual Conference on. New York: ACM Press, 1986: 143-150.
[2] Arvo J, Kirk D. Particle transport and image synthesis [C]// SIGGRAPH’90 Proceedings of the 17th Annual Conference on. New York: ACM Press, 1990: 63-66.
[3] Veach E, Guibas L J. Optimally combining sampling techniques for Monte Carlo rendering [C]// SIGGRAPH’95 Proceedings of the 22nd Annual Conference on. New York: ACM Press,1995: 419-428.
[4] Lafortune P E, Willems Y D. Bi-directional path tracing [C]// In Santo HP, Computer Graphics’93 Conference on. New York: ACM Press, 1993: 145-153.
[5] Veach E, Guibas L J. Bi-directional estimators for light transport [C]//Proceedings of the Fifth Eurographics Workshop on Rendering in Darmstadt. Berlin: Springer-Verlag, 1994: 147-162.
[6] Jensen W H. Global illumination using photon maps [C]//Proceedings of the Seventh Eurographics Workshop on Rendering in Porto, Portugal. Berlin: Springer-Verlag, 1996: 21-30.
[7] 陈 皓, 刘晓平. 基于光子映射的并行渲染算法[J]. 工程图学学报, 2009, 30(3): 60-64.
[8] Zhou K, Hu Y, Lin S, et al. Precomputed shadow fields for dynamic scenes [J]. ACM Transactions on Graphics, 2005, 24(3): 1196-1201.
[9] 王莉莉, 杨 峥, 马志强, 等. 基于梯度图的微结构表面全局光照实时绘制[J]. 软件学报, 2011, 22(10): 2454-2466.
[10] 储璟骏, 杨 新, 高 艳. 使用GPU编程的光线投射体绘制算法[J]. 计算机辅助设计与图形学学报, 2007, 19(2): 257-262.
[11] Zhou K, Hou Q M, Wang R, et al. Real-time KD-tree construction on graphics hardware [J]. ACM Transaction on Graphics, 2008, 27(5): 126-135.
[12] Yang X, Yang B, Wang P J, et al. MSKD: multi-split KD-tree design on GPU [J]. Multimedia Tools & Applications, 2014, (11): 1349-1364.
[13] Ben-Artzi A, Overbeck R, Ramamoorthi R. Real-time BRDF editing in complex lighting [J]. ACM Transactions on Graphics, 2006, 25(3): 945-954.
[14] 孙 鑫, 周 昆, 石教英. 可变材质的实时全局光照明绘制[J]. 软件学报, 2008, 19(4): 1004-1015.
[15] Lafortune P E, Foo C S, Torrance E K, et al. Non-linear approximation of reflectance function [C]// SIGGRAPH’97 Proceedings of the 24th Annual Conference on. New York: ACM Press, 1997: 117-126.
[16] Angel E, Shreiner D. 交互式计算图形学——基于OpenGL着色器的自顶向下方法[M]. 6版. 张荣华, 宋雨, 刘书刚, 等译. 北京: 电子工业出版社, 2012: 411-413.
Global Illumination Real-Time Rendering Based on BRDF and GPU Parallel Computing
Wang Fang1, Qin Leihua2
(1. Department of Information Engineering, Zhengzhou Shengda College of Economics & Trade Management, Zhengzhou Henan 451191, China; 2. School of Computer Science & Technology, Huazhong University of Science & Technology, Wuhan Hubei 430074, China)
While raytracing, the screen image pixel is decomposed into the combination of radiance and texture of the patches, created as scene objects intersect with the casting ray. The radiance of each patch is calculated at the linear combination of the bases of bi-directional reflectance distribution function (BRDF), and able to be accelerated by graphics processing unit (GPU) parallel rendering. This paper presents a global illumination rendering algorithm based on BRDF and GPU parallel computation. With GPU parallel acceleration, through improving the efficiency of rendering, the algorithm achieves global illumination real-time rendering of the scene including dynamic interactive material. The key research: object surface’s multiple reflection characteristic is represented by linear combination of the basis of BRDF, so transforming the nonlinear problem to a linear one, thus improve the rendering efficiency. With GPU parallel acceleration, the algorithm calculates the object surface’s radiation energy and texture mapping and their linear combination, further improving the efficiency of rendering to meet the requirement of real-time.
global illumination; graphics processing unit; bidirectional reflectance distribution function; rendering equation; parallel computing
TP 391
10.11996/JG.j.2095-302X.2016050583
A
2095-302X(2016)05-0583-09
2016-01-14;定稿日期:2016-05-11
2015年度河南省重点科技攻关项目(152102210176)
王 芳(1973–),女,河南郑州人,副教授,硕士。主要研究方向为全局光照、图形图像处理。E-mail:wangfang0278@163.com
秦磊华(1968–),男,湖北鄂州人,教授,博士。主要研究方向为网络存储系统。E-mail:abc_119@126.com