CN101982838A - 一种加速被面光源照射的3d虚拟场景的光线跟踪的方法 - Google Patents
一种加速被面光源照射的3d虚拟场景的光线跟踪的方法 Download PDFInfo
- Publication number
- CN101982838A CN101982838A CN 201010527747 CN201010527747A CN101982838A CN 101982838 A CN101982838 A CN 101982838A CN 201010527747 CN201010527747 CN 201010527747 CN 201010527747 A CN201010527747 A CN 201010527747A CN 101982838 A CN101982838 A CN 101982838A
- Authority
- CN
- China
- Prior art keywords
- light source
- sampled point
- variable
- row
- point
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Image Generation (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明公开一种加速被面光源照射的3D虚拟场景的光线跟踪的方法,属于真实感3D虚拟场景绘制技术领域。当前常用蒙特卡洛光线跟踪方法绘制被面光源照射的3D虚拟场景。由于蒙特卡洛光线跟踪方法需要执行大量的光源采样点可见性计算,因此其计算效率不高。本发明通过一个预计算过程获得面光源照射到的几何面片的深度数据,在光线跟踪过程中利用这些深度数据直接计算每个场景点处的光源采样点可见性,避免了可见性测试光线的创建、遍历、求交测试等运算,提高了光线跟踪效率。相对于蒙特卡洛光线跟踪方法,本发明方法可使光线跟踪的速度提高3~4倍。
Description
技术领域
本发明属于真实感3D虚拟场景绘制技术领域,涉及一种加速被面光源照射的3D虚拟场景的光线跟踪的方法。
背景技术
真实感3D虚拟场景绘制技术在数字娱乐、影视特效、建筑CAD、广告动画等领域受到人们的广泛关注。目前3D虚拟场景绘制技术虽然已经得到深入的研究,但是如何快速绘制具有高度真实感的3D虚拟场景画面仍然是一个有待进一步解决的难题。传统的光栅化技术不支持全局光照计算,使用其绘制的3D虚拟场景画面往往缺乏真实感。光线跟踪方法能够绘制出反射、折射、阴影等效果,是一种全局光照算法。使用光线跟踪绘制得到的3D虚拟场景画面比使用光栅化技术绘制得到的3D虚拟场景画面的真实感更强。因此光线跟踪方法在真实感3D虚拟场景绘制中得到了广泛应用。
当要求高度的真实感时,3D虚拟场景通常使用面光源而非理想的点光源进行照射。通常使用蒙特卡洛光线跟踪方法绘制被面光源照射的3D虚拟场景。蒙特卡洛光线跟踪方法通过对面光源进行重要性采样实现全局光照计算。对每个需要计算光照值的场景点,该方法都需要计算大量的光源采样点的可见性,即判断场景点与光源采样点之间是否存在遮挡。在计算每个光源采样点的可见性时,需要产生一条从场景点出发,射向该光源采样点的可见性测试光线,并用此可见性测试光线遍历场景加速结构,以便确定是否有几何图元与此可见性测试光线相交,进而判断场景点与光源采样点之间是否存在遮挡。由于光线跟踪需要跟踪大量光线的多次反射(或折射)过程,并且需要计算每个反射(或折射)点的光照值,因此上述光源采样点的可见性计算量非常大。这使得蒙特卡洛光线跟踪的计算效率并不高,导致绘制一幅3D虚拟场景画面的时间很长。所以人们迫切需要一种能够加速被面光源照射的3D虚拟场景的光线跟踪的方法。
发明内容
本发明的目的在于提供一种加速被面光源照射的3D虚拟场景的光线跟踪的方法。本方法在光线跟踪之前通过一个预计算过程获得面光源照射到的几何面片的深度数据,在光线跟踪过程中利用这些深度数据直接计算每个场景点处的光源采样点可见性,避免了可见性测试光线的创建、遍历、求交测试等运算,提高了光线跟踪效率。本发明的方法所需的设备及其实现步骤如下:
1.所需设备:主机系统(101)和GPU计算集群(102);如图1所示,主机系统(101)包括CPU(103)、内存(104)和磁盘(105)。
2.实现步骤:
本方法(010)部分,得到面光源照射到的几何面片的深度数据,具体步骤如下:
步骤(S011):将3D虚拟场景模型数据(A001)从磁盘(105)加载到内存(104)中;
步骤(S012):在CPU(103)上计算面光源轮廓线(201)的外切矩形(202);
步骤(S013):如图2所示,在外切矩形(202)内均匀地选取m行、n列光源采样点,得到一个二维采样点阵列(A002),将其存放在内存(104)中;
步骤(S014):在内存(104)中创建一个m行、n列的掩模矩阵M(A003),掩模矩阵M(A003)中的各个元素与二维采样点阵列(A002)中的各个光源采样点一一对应;掩模矩阵M(A003)的每个元素的数据结构如图3所示,其包含一个标识变量(301)(变量名为tag)、一个深度图指针变量(302)(变量名为depthMapPtr)和一个坐标系变换矩阵变量(303)(变量名为transformMatrix);将掩模矩阵M(A003)的每个元素包含的标识变量(301)设置为0;
步骤(S015):任意选取一个与面光源平面平行的向量作为U方向向量(A004);
步骤(S016):把3D虚拟场景模型数据(A001)送入GPU计算集群(102)的Global Memory中;
步骤(S017):对二维采样点阵列(A002)中的每个光源采样点Sij(下标i为光源采样点Sij在二维采样点阵列(A002)中的行号,下标j为光源采样点Sij在二维采样点阵列(A002)中的列号),判断光源采样点Sij是否在面光源轮廓线(201)之内,如果光源采样点Sij在面光源轮廓线(201)之内,则:
①将掩模矩阵M(A003)的第i行、j列的元素的标识变量(301)设置为1;
②以光源采样点Sij为虚拟相机视点,以面光源平面法向量为虚拟相机视轴正方向(面光源平面法向量与面光源的朝向相同),以U方向向量(A004)为虚拟相机向上方向向量,根据3D虚拟场景与面光源的位置关系设置合适的虚拟相机视场角(A005),根据3D虚拟场景的复杂程度设置合适的虚拟相机分辨率(A006),读取存储于GPU计算集群(102)的GlobalMemory中的3D虚拟场景模型数据(A001),调用光栅化图形API在GPU计算集群(102)上绘制3D虚拟场景,记录每个像素的深度值,从而得到以光源采样点Sij为虚拟相机视点的深度图(A007);
③把深度图(A007)传回内存(104),并将深度图(A007)的内存首地址赋值给掩模矩阵M(A003)的第i行、j列的元素的深度图指针变量(302)。
本方法的(020)部分,根据二维采样点阵列(A002)中的每个光源采样点的位置及面光源平面法向量,计算从世界坐标系到以各光源采样点为原点的光源采样点坐标系(B001)的变换矩阵,具体步骤如下:
步骤(S021):选取面光源平面法向量作为N方向向量(B002),定义V方向向量(B003)为N方向向量(B002)与U方向向量(A004)的叉乘;
步骤(S022):将U方向向量(A004)、N方向向量(B002)和V方向向量(B003)进行归一化,得到归一化的U方向向量(B004)、归一化的N方向向量(B005)和归一化的V方向向量(B006);
步骤(S023):对于掩模矩阵M(A003)中的每个元素(B007),判断元素(B007)的标识变量(301)是否为1,如果为1,则先计算元素(B007)所在的行号i和列号j,再计算二维采样点阵列(A002)中第i行、j列光源采样点Sij在世界坐标系下的坐标Wij(B008),然后按如下公式计算变换矩阵Tij:
其中Ux、Uy、Uz分别为归一化的U方向向量(B004)的三个分量,Vx、Vy、Vz分别为归一化的N方向向量(B005)的三个分量,Nx、Ny、Nz分别为归一化的V方向向量(B006)的三个分量,最后将Tij赋值给元素(B007)的坐标系变换矩阵变量(303)。
本方法的(030)部分,在光线跟踪中利用本方法(010)部分计算出的深度图(A007)来加速绘制被面光源照射的3D虚拟场景,具体步骤如下:
步骤(S031):将掩模矩阵M(A003)及其各元素的深度图指针变量(302)指向的所有深度图(A007)送入GPU计算集群(102)的Global Memory中;
步骤(S032):按照正常的光线跟踪流程,从虚拟相机视点发射穿过屏幕像素(C001)的光线(C002),并判断光线(C002)与3D虚拟场景的几何面片(C003)是否相交,如果相交,则计算出交点坐标P(C004),并转步骤(S033),否则屏幕像素(C001)的颜色设置为背景色(C005),并结束对光线(C002)的跟踪;
步骤(S033):对掩模矩阵M(A003)中的每个元素(C006),判断元素(C006)的标识变量(301)是否为1,如果为1,则首先将元素(C006)的坐标系变换矩阵变量(303)赋值给变量T(C007),再计算元素(C006)所在的行号i和列号j,然后读取二维采样点阵列(A002)的第i行、j列光源采样点Sij(C008),并计算光源采样点Sij(C008)在世界坐标系下的坐标Wij(C009),最后将光源采样点Sij(C008)的行号i与列号j、交点坐标P(C004)、坐标Wij(C009)和变量T(C007)打包成一个结构体变量(C010)送入GPU计算集群(102)的Global Memory中;统计掩模矩阵M(A003)中标识变量(301)为1的元素个数(C011),将元素个数(C011)赋值给变量Ns;
步骤(S034):在GPU计算集群(102)上创建Ns个并行线程,各线程分别从GPU计算集群(102)的Global Memory中读取一个结构体变量(C010),并行地做以下计算:
其中Px、Py、Pz分别为存储于结构体变量(C010)中的交点坐标P(C004)的x、y、z坐标分量,T为存储于结构体变量(C010)中的变量T(C007);
其中θv为步骤(S017)中调用光栅化图形API在GPU计算集群(102)上绘制3D虚拟场景时设置的虚拟相机视场角(A005),N1为步骤(S017)中调用光栅化图形API在GPU计算集群(102)上绘制3D虚拟场景时设置的虚拟相机垂直分辨率,N2为步骤(S017)中调用光栅化图形API在GPU计算集群(102)上绘制3D虚拟场景时设置的虚拟相机水平分辨率;
④根据结构体变量(C010)中保存的行号i与列号j,读取存储于GPU计算集群(102)的Global Memory中的掩模矩阵M(A003)的第i行、j列元素(C012)的深度图指针变量(302)指向的深度图的第l行、k列像素的深度值(C013);计算存储于结构体变量(C010)中的交点坐标P(C004)与存储于结构体变量(C010)中的坐标Wij(C009)之间的距离D(C014);如果深度值(C013)比距离D(C014)小,则表明存储于结构体变量(C010)中的交点坐标P(C004)处的场景点(C015)不能直接被光源采样点Sij照射,光源采样点Sij对场景点(C015)的直接光照贡献Ld(C016)为0,否则计算光源采样点Sij对场景点(C015)的直接光照贡献Ld(C016);最后将直接光照贡献Ld(C016)传回内存(104);
步骤(S035):在CPU(103)上将步骤(S034)中的各线程传回内存(104)的所有直接光照贡献Ld(C016)相加,以得到面光源对交点坐标P(C004)处的场景点的直接光照值;
步骤(S036):按照正常的光线跟踪流程递归地跟踪交点坐标P(C004)处的反射光线(或者折射光线),以便计算交点坐标P(C004)处的场景点的间接光照值;在递归过程中,所有场景点处的直接光照值也按上述过程进行计算;最后根据交点坐标P(C004)处的场景点的直接光照值、间接光照值以及材质数据计算出屏幕像素(C001)的颜色。
有益效果
本发明提供了一种加速被面光源照射的3D虚拟场景的光线跟踪的方法。本发明方法与蒙特卡洛光线跟踪方法相比,避免了可见性测试光线的创建、遍历、求交测试等运算,提高了光线跟踪效率。由于使用了掩模矩阵,本发明方法适用于任何轮廓形状的平面面光源。另外,本发明方法利用GPU计算集群并行地计算不同光源采样点对场景点的直接光照值,大大地提高了光线跟踪过程中的光照计算速度。相对于蒙特卡洛光线跟踪方法,本发明方法可使光线跟踪的速度提高3~4倍。
附图说明
图1是本发明所需的设备及其连接方式示意图;图2是面光源轮廓线及其外切矩形与二维光源采样点阵列示意图;图3是掩模矩阵的元素的数据结构示意图。
具体实施方式
为了使本发明的特征和优点更加清楚明白,下面参照附图结合具体实施例对本发明作进一步的描述。
本实施例中的CPU(103)选择Intel XeonTM CPU 3.20GHz,内存(104)选择金士顿8GBDDR3 1333,磁盘(105)选择Buffalo HD-CE 1.5 TU2,GPU计算集群(102)选择AMAX Tesla系列GPU计算集群;软件编程工具选用VC++2008、OpenGL 2.0和CUDA 2.0。
本方法(010)部分,得到面光源照射到的几何面片的深度数据,具体步骤如下:
步骤(S011):将3D虚拟场景模型数据(A001)从磁盘(105)加载到内存(104)中;
步骤(S012):在CPU(103)上计算面光源轮廓线(201)的外切矩形(202);
步骤(S013):如图2所示,在外切矩形(202)内均匀地选取m行、n列光源采样点,得到一个二维采样点阵列(A002),将其存放在内存(104)中;
步骤(S014):在内存(104)中创建一个m行、n列的掩模矩阵M(A003),掩模矩阵M(A003)中的各个元素与二维采样点阵列(A002)中的各个光源采样点一一对应;掩模矩阵M(A003)的每个元素的数据结构如图3所示,其包含一个标识变量(301)(变量名为tag)、一个深度图指针变量(302)(变量名为depthMapPtr)和一个坐标系变换矩阵变量(303)(变量名为transformMatrix);将掩模矩阵M(A003)的每个元素包含的标识变量(301)设置为0;
步骤(S015):任意选取一个与面光源平面平行的向量作为U方向向量(A004);
步骤(S016):把3D虚拟场景模型数据(A001)送入GPU计算集群(102)的Global Memory中;
步骤(S017):对二维采样点阵列(A002)中的每个光源采样点Sij(下标i为光源采样点Sij在二维采样点阵列(A002)中的行号,下标j为光源采样点Sij在二维采样点阵列(A002)中的列号),判断光源采样点Sij是否在面光源轮廓线(201)之内,如果光源采样点Sij在面光源轮廓线(201)之内,则:
①将掩模矩阵M(A003)的第i行、j列的元素的标识变量(301)设置为1;
②以光源采样点Sij为虚拟相机视点,以面光源平面法向量为虚拟相机视轴正方向(面光源平面法向量与面光源的朝向相同),以U方向向量(A004)为虚拟相机向上方向向量,根据3D虚拟场景与面光源的位置关系设置合适的虚拟相机视场角(A005),根据3D虚拟场景的复杂程度设置合适的虚拟相机分辨率(A006),读取存储于GPU计算集群(102)的GlobalMemory中的3D虚拟场景模型数据(A001),调用OpenGL API在GPU计算集群(102)上绘制3D虚拟场景,记录每个像素的深度值,从而得到以光源采样点Sij为虚拟相机视点的深度图(A007);
③把深度图(A007)传回内存(104),并将深度图(A007)的内存首地址赋值给掩模矩阵M(A003)的第i行、j列的元素的深度图指针变量(302)。
本方法的(020)部分,根据二维采样点阵列(A002)中的每个光源采样点的位置及面光源平面法向量,计算从世界坐标系到以各光源采样点为原点的光源采样点坐标系(B001)的变换矩阵,具体步骤如下:
步骤(S021):选取面光源平面法向量作为N方向向量(B002),定义V方向向量(B003)为N方向向量(B002)与U方向向量(A004)的叉乘;
步骤(S022):将U方向向量(A004)、N方向向量(B002)和V方向向量(B003)进行归一化,得到归一化的U方向向量(B004)、归一化的N方向向量(B005)和归一化的V方向向量(B006);
步骤(S023):对于掩模矩阵M(A003)中的每个元素(B007),判断元素(B007)的标识变量(301)是否为1,如果为1,则先计算元素(B007)所在的行号i和列号j,再计算二维采样点阵列(A002)中第i行、j列光源采样点Sij在世界坐标系下的坐标Wij(B008),然后按如下公式计算变换矩阵Tij:
其中Ux、Uy、Uz分别为归一化的U方向向量(B004)的三个分量,Vx、Vy、Vz分别为归一化的N方向向量(B005)的三个分量,Nx、Ny、Nz分别为归一化的V方向向量(B006)的三个分量,最后将Tij赋值给元素(B007)的坐标系变换矩阵变量(303)。
本方法的(030)部分,在光线跟踪中利用本方法(010)部分计算出的深度图(A007)来加速绘制被面光源照射的3D虚拟场景,具体步骤如下:
步骤(S031):将掩模矩阵M(A003)及其各元素的深度图指针变量(302)指向的所有深度图(A007)送入GPU计算集群(102)的Global Memory中;
步骤(S032):按照正常的光线跟踪流程,从虚拟相机视点发射穿过屏幕像素(C001)的光线(C002),并判断光线(C002)与3D虚拟场景的几何面片(C003)是否相交,如果相交,则计算出交点坐标P(C004),并转步骤(S033),否则屏幕像素(C001)的颜色设置为背景色(C005),并结束对光线(C002)的跟踪;
步骤(S033):对掩模矩阵M(A003)中的每个元素(C006),判断元素(C006)的标识变量(301)是否为1,如果为1,则首先将元素(C006)的坐标系变换矩阵变量(303)赋值给变量T(C007),再计算元素(C006)所在的行号i和列号j,然后读取二维采样点阵列(A002)的第i行、j列光源采样点Sij(C008),并计算光源采样点Sij(C008)在世界坐标系下的坐标Wij(C009),最后将光源采样点Sij(C008)的行号i与列号j、交点坐标P(C004)、坐标Wij(C009)和变量T(C007)打包成一个结构体变量(C010)送入GPU计算集群(102)的Global Memory中;统计掩模矩阵M(A003)中标识变量(301)为1的元素个数(C011),将元素个数(C011)赋值给变量Ns;
步骤(S034):利用CUDA API在GPU计算集群(102)上创建Ns个并行线程,各线程分别从GPU计算集群(102)的Global Memory中读取一个结构体变量(C010),并行地做以下计算:
其中Px、Py、Pz分别为存储于结构体变量(C010)中的交点坐标P(C004)的x、y、z坐标分量,T为存储于结构体变量(C010)中的变量T(C007);
其中θv为步骤(S017)中调用OpenGL API在GPU计算集群(102)上绘制3D虚拟场景时设置的虚拟相机视场角(A005),N1为步骤(S017)中调用OpenGLAPI在GPU计算集群(102)上绘制3D虚拟场景时设置的虚拟相机垂直分辨率,N2为步骤(S017)中调用OpenGL API在GPU计算集群(102)上绘制3D虚拟场景时设置的虚拟相机水平分辨率;
④根据结构体变量(C010)中保存的行号i与列号j,读取存储于GPU计算集群(102)的Global Memory中的掩模矩阵M(A003)的第i行、j列元素(C012)的深度图指针变量(302)指向的深度图的第l行、k列像素的深度值(C013);计算存储于结构体变量(C010)中的交点坐标P(C004)与存储于结构体变量(C010)中的坐标Wij(C009)之间的距离D(C014);如果深度值(C013)比距离D(C014)小,则表明存储于结构体变量(C010)中的交点坐标P(C004)处的场景点(C015)不能直接被光源采样点Sij照射,光源采样点Sij对场景点(C015)的直接光照贡献Ld(C016)为0,否则计算光源采样点Sij对场景点(C015)的直接光照贡献Ld(C016);最后将直接光照贡献Ld(C016)传回内存(104);
步骤(S035):在CPU(103)上将步骤(S034)中的各线程传回内存(104)的所有直接光照贡献Ld(C016)相加,以得到面光源对交点坐标P(C004)处的场景点的直接光照值;
步骤(S036):按照正常的光线跟踪流程递归地跟踪交点坐标P(C004)处的反射光线(或者折射光线),以便计算交点坐标P(C004)处的场景点的间接光照值;在递归过程中,所有场景点处的直接光照值也按上述过程进行计算;最后根据交点坐标P(C004)处的场景点的直接光照值、间接光照值以及材质数据计算出屏幕像素(C001)的颜色。
Claims (1)
1.一种加速被面光源照射的3D虚拟场景的光线跟踪的方法,其特征在于,所需的设备及实现步骤如下:
所需设备:主机系统(101)和GPU计算集群(102);主机系统(101)包括CPU(103)、内存(104)和磁盘(105);
实现步骤:
本方法(010)部分,得到面光源照射到的几何面片的深度数据,具体步骤如下:
步骤(S011):将3D虚拟场景模型数据(A001)从磁盘(105)加载到内存(104)中;
步骤(S012):在CPU(103)上计算面光源轮廓线(201)的外切矩形(202);
步骤(S013):在外切矩形(202)内均匀地选取m行、n列光源采样点,得到一个二维采样点阵列(A002),将其存放在内存(104)中;
步骤(S014):在内存(104)中创建一个m行、n列的掩模矩阵M(A003),掩模矩阵M(A003)中的各个元素与二维采样点阵列(A002)中的各个光源采样点一一对应;掩模矩阵M(A003)的每个元素包含一个标识变量(301)(变量名为tag)、一个深度图指针变量(302)(变量名为depthMapPtr)和一个坐标系变换矩阵变量(303)(变量名为transformMatrix);将掩模矩阵M(A003)的每个元素包含的标识变量(301)设置为0;
步骤(S015):任意选取一个与面光源平面平行的向量作为U方向向量(A004);
步骤(S016):把3D虚拟场景模型数据(A001)送入GPU计算集群(102)的Global Memory中;
步骤(S017):对二维采样点阵列(A002)中的每个光源采样点Sij(下标i为光源采样点Sij在二维采样点阵列(A002)中的行号,下标j为光源采样点Sij在二维采样点阵列(A002)中的列号),判断光源采样点Sij是否在面光源轮廓线(201)之内,如果光源采样点Sij在面光源轮廓线(201)之内,则:
第一,将掩模矩阵M(A003)的第i行、j列的元素的标识变量(301)设置为1;
第二,以光源采样点Sij为虚拟相机视点,以面光源平面法向量为虚拟相机视轴正方向(面光源平面法向量与面光源的朝向相同),以U方向向量(A004)为虚拟相机向上方向向量,根据3D虚拟场景与面光源的位置关系设置合适的虚拟相机视场角(A005),根据3D虚拟场景的复杂程度设置合适的虚拟相机分辨率(A006),读取存储于GPU计算集群(102)的Global Memory中的3D虚拟场景模型数据(A001),调用光栅化图形API在GPU计算集群(102)上绘制3D虚拟场景,记录每个像素的深度值,从而得到以光源采样点Sij为虚拟相机视点的深度图(A007);
第三,把深度图(A007)传回内存(104),并将深度图(A007)的内存首地址赋值给掩模矩阵M(A003)的第i行、j列的元素的深度图指针变量(302);
本方法的(020)部分,根据二维采样点阵列(A002)中的每个光源采样点的位置及面光源平面法向量,计算从世界坐标系到以各光源采样点为原点的光源采样点坐标系(B001)的变换矩阵,具体步骤如下:
步骤(S021):选取面光源平面法向量作为N方向向量(B002),定义V方向向量(B003)为N方向向量(B002)与U方向向量(A004)的叉乘;
步骤(S022):将U方向向量(A004)、N方向向量(B002)和V方向向量(B003)进行归一化,得到归一化的U方向向量(B004)、归一化的N方向向量(B005)和归一化的V方向向量(B006);
步骤(S023):对于掩模矩阵M(A003)中的每个元素(B007),判断元素(B007)的标识变量(301)是否为1,如果为1,则先计算元素(B007)所在的行号i和列号j,再计算二维采样点阵列(A002)中第i行、j列光源采样点Sij在世界坐标系下的坐标Wij(B008),然后按如下公式计算变换矩阵Tij:
其中Ux、Uy、Uz分别为归一化的U方向向量(B004)的三个分量,Vx、Vy、Vz分别为归一化的N方向向量(B005)的三个分量,Nx、Ny、Nz分别为归一化的V方向向量(B006)的三个分量,最后将Tij赋值给元素(B007)的坐标系变换矩阵变量(303);
本方法的(030)部分,在光线跟踪中利用本方法(010)部分计算出的深度图(A007)来加速绘制被面光源照射的3D虚拟场景,具体步骤如下:
步骤(S031):将掩模矩阵M(A003)及其各元素的深度图指针变量(302)指向的所有深度图(A007)送入GPU计算集群(102)的Global Memory中;
步骤(S032):按照正常的光线跟踪流程,从虚拟相机视点发射穿过屏幕像素(C001)的光线(C002),并判断光线(C002)与3D虚拟场景的几何面片(C003)是否相交,如果相交,则计算出交点坐标P(C004),并转步骤(S033),否则屏幕像素(C001)的颜色设置为背景色(C005),并结束对光线(C002)的跟踪;
步骤(S033):对掩模矩阵M(A003)中的每个元素(C006),判断元索(C006)的标识变量(301)是否为1,如果为1,则首先将元素(C006)的坐标系变换矩阵变量(303)赋值给变量T(C007),再计算元素(C006)所在的行号i和列号j,然后读取二维采样点阵列(A002)的第i行、j列光源采样点Sij(C008),并计算光源采样点Sij(C008)在世界坐标系下的坐标Wij(C009),最后将光源采样点Sij(C008)的行号i与列号j、交点坐标P(C004)、坐标Wij(C009)和变量T(C007)打包成一个结构体变量(C010)送入GPU计算集群(102)的Global Memory中;统计掩模矩阵M(A003)中标识变量(301)为1的元素个数(C011),将元素个数(C011)赋值给变量Ns;
步骤(S034):在GPU计算集群(102)上创建Ns个并行线程,各线程分别从GPU计算集群(102)的Global Memory中读取一个结构体变量(C010),并行地做以下计算:
第三,其中θv为步骤(S017)中调用光栅化图形API在GPU计算集群(102)上绘制3D虚拟场景时设置的虚拟相机视场角(A005),N1为步骤(S017)中调用光栅化图形API在GPU计算集群(102)上绘制3D虚拟场景时设置的虚拟相机垂直分辨率,N2为步骤(S017)中调用光栅化图形API在GPU计算集群(102)上绘制3D虚拟场景时设置的虚拟相机水平分辨率;
第四,根据结构体变量(C010)中保存的行号i与列号j,读取存储于GPU计算集群(102)的Global Memory中的掩模矩阵M(A003)的第i行、j列元素(C012)的深度图指针变量(302)指向的深度图的第l行、k列像素的深度值(C013);计算存储于结构体变量(C010)中的交点坐标P(C004)与存储于结构体变量(C010)中的坐标Wij(C009)之间的距离D(C014);如果深度值(C013)比距离D(C014)小,则表明存储于结构体变量(C010)中的交点坐标P(C004)处的场景点(C015)不能直接被光源采样点Sij照射,光源采样点Sij对场景点(C015)的直接光照贡献Ld(C016)为0,否则计算光源采样点Sij对场景点(C015)的直接光照贡献Ld(C016);最后将直接光照贡献Ld(C016)传回内存(104);
步骤(S035):在CPU(103)上将步骤(S034)中的各线程传回内存(104)的所有直接光照贡献Ld(C016)相加,以得到面光源对交点坐标P(C004)处的场景点的直接光照值;
步骤(S036):按照正常的光线跟踪流程递归地跟踪交点坐标P(C004)处的反射光线(或者折射光线),以便计算交点坐标P(C004)处的场景点的间接光照值;在递归过程中,所有场景点处的直接光照值也按上述过程进行计算;最后根据交点坐标P(C004)处的场景点的直接光照值、间接光照值以及材质数据计算出屏幕像素(C001)的颜色。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105277474A CN101982838B (zh) | 2010-11-02 | 2010-11-02 | 一种加速被面光源照射的3d虚拟场景的光线跟踪的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105277474A CN101982838B (zh) | 2010-11-02 | 2010-11-02 | 一种加速被面光源照射的3d虚拟场景的光线跟踪的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101982838A true CN101982838A (zh) | 2011-03-02 |
CN101982838B CN101982838B (zh) | 2012-06-27 |
Family
ID=43619735
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010105277474A Expired - Fee Related CN101982838B (zh) | 2010-11-02 | 2010-11-02 | 一种加速被面光源照射的3d虚拟场景的光线跟踪的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101982838B (zh) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102346919A (zh) * | 2011-11-21 | 2012-02-08 | 长春理工大学 | 在3d动画绘制中利用帧间时间相关的方法 |
WO2013082994A1 (zh) * | 2011-12-06 | 2013-06-13 | Yang Sai | 一种用于生成采样点高维分量的方法 |
CN103679818A (zh) * | 2013-12-17 | 2014-03-26 | 南京大学 | 一种基于虚拟面光源的实时场景绘制方法 |
CN103761759A (zh) * | 2013-12-30 | 2014-04-30 | 浙江大学 | 基于光辉喷洒的图像渲染方法 |
WO2015070618A1 (zh) * | 2013-11-18 | 2015-05-21 | 华为技术有限公司 | 多光源下的全局光照绘制方法及装置 |
CN104835193A (zh) * | 2015-05-13 | 2015-08-12 | 长春理工大学 | 基于光线跟踪的三维场景gpu集群绘制系统的负载均衡方法 |
CN104978759A (zh) * | 2014-04-02 | 2015-10-14 | 三星电子株式会社 | 用于渲染多个帧的相同区域的方法和设备 |
CN105006011A (zh) * | 2015-07-21 | 2015-10-28 | 长春理工大学 | 真实感三维场景的体感交互式绘制系统与方法 |
CN105447905A (zh) * | 2015-11-17 | 2016-03-30 | 长春理工大学 | 基于可见性平滑滤波的三维场景近似柔和阴影光线跟踪绘制方法 |
CN106776020A (zh) * | 2016-12-07 | 2017-05-31 | 长春理工大学 | 大型三维场景的计算机集群分布式路径跟踪绘制方法 |
CN107330965A (zh) * | 2017-06-12 | 2017-11-07 | 长春理工大学 | 一种利用局部保守光栅化方法实现硬阴影反走样的方法 |
CN107346558A (zh) * | 2017-07-03 | 2017-11-14 | 长春理工大学 | 利用面光源可见性空间相关加速三维场景直接光照效果绘制的方法 |
CN107909647A (zh) * | 2017-11-22 | 2018-04-13 | 长春理工大学 | 基于空间复用的真实感虚拟3d场景光场投影图像绘制方法 |
CN108984169A (zh) * | 2017-06-01 | 2018-12-11 | 刘开元 | 一种跨平台多元集成开发系统 |
CN111010559A (zh) * | 2019-11-13 | 2020-04-14 | 北京邮电大学 | 裸眼三维光场内容的生成方法及装置 |
CN111145330A (zh) * | 2019-12-31 | 2020-05-12 | 广州华多网络科技有限公司 | 人体模型渲染方法、装置、电子设备及存储介质 |
CN111540018A (zh) * | 2020-04-27 | 2020-08-14 | 深圳市瑞立视多媒体科技有限公司 | 相机对称布局模式的得分计算方法及相关设备 |
CN116740253A (zh) * | 2022-09-19 | 2023-09-12 | 荣耀终端有限公司 | 一种光线追踪方法和电子设备 |
CN116847508A (zh) * | 2023-06-27 | 2023-10-03 | 深圳光照度科技有限公司 | 基于场景融合的仿真立体地图的智慧照明控制方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1410948A (zh) * | 2002-09-23 | 2003-04-16 | 清华大学 | 平面和球面非线性折射和反射的实时光线跟踪方法 |
US6556200B1 (en) * | 1999-09-01 | 2003-04-29 | Mitsubishi Electric Research Laboratories, Inc. | Temporal and spatial coherent ray tracing for rendering scenes with sampled and geometry data |
CN101192309A (zh) * | 2006-11-28 | 2008-06-04 | 国际商业机器公司 | 进行光线跟踪的方法和系统 |
CN101527052A (zh) * | 2008-03-03 | 2009-09-09 | 英特尔公司 | 用于提高光线跟踪性能的技术 |
-
2010
- 2010-11-02 CN CN2010105277474A patent/CN101982838B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6556200B1 (en) * | 1999-09-01 | 2003-04-29 | Mitsubishi Electric Research Laboratories, Inc. | Temporal and spatial coherent ray tracing for rendering scenes with sampled and geometry data |
CN1410948A (zh) * | 2002-09-23 | 2003-04-16 | 清华大学 | 平面和球面非线性折射和反射的实时光线跟踪方法 |
CN101192309A (zh) * | 2006-11-28 | 2008-06-04 | 国际商业机器公司 | 进行光线跟踪的方法和系统 |
CN101527052A (zh) * | 2008-03-03 | 2009-09-09 | 英特尔公司 | 用于提高光线跟踪性能的技术 |
Cited By (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102346919B (zh) * | 2011-11-21 | 2013-08-21 | 长春理工大学 | 在3d动画绘制中利用帧间时间相关的方法 |
CN102346919A (zh) * | 2011-11-21 | 2012-02-08 | 长春理工大学 | 在3d动画绘制中利用帧间时间相关的方法 |
WO2013082994A1 (zh) * | 2011-12-06 | 2013-06-13 | Yang Sai | 一种用于生成采样点高维分量的方法 |
CN104658033A (zh) * | 2013-11-18 | 2015-05-27 | 华为技术有限公司 | 多光源下的全局光照绘制方法及装置 |
CN104658033B (zh) * | 2013-11-18 | 2017-06-20 | 华为技术有限公司 | 多光源下的全局光照绘制方法及装置 |
WO2015070618A1 (zh) * | 2013-11-18 | 2015-05-21 | 华为技术有限公司 | 多光源下的全局光照绘制方法及装置 |
CN103679818A (zh) * | 2013-12-17 | 2014-03-26 | 南京大学 | 一种基于虚拟面光源的实时场景绘制方法 |
CN103679818B (zh) * | 2013-12-17 | 2016-08-17 | 南京大学 | 一种基于虚拟面光源的实时场景绘制方法 |
CN103761759A (zh) * | 2013-12-30 | 2014-04-30 | 浙江大学 | 基于光辉喷洒的图像渲染方法 |
CN103761759B (zh) * | 2013-12-30 | 2016-09-14 | 浙江大学 | 基于光辉喷洒的图像渲染方法 |
CN104978759A (zh) * | 2014-04-02 | 2015-10-14 | 三星电子株式会社 | 用于渲染多个帧的相同区域的方法和设备 |
CN104978759B (zh) * | 2014-04-02 | 2019-07-19 | 三星电子株式会社 | 用于渲染多个帧的相同区域的方法和设备 |
CN104835193A (zh) * | 2015-05-13 | 2015-08-12 | 长春理工大学 | 基于光线跟踪的三维场景gpu集群绘制系统的负载均衡方法 |
CN104835193B (zh) * | 2015-05-13 | 2017-08-25 | 长春理工大学 | 基于光线跟踪的三维场景gpu集群绘制系统的负载均衡方法 |
CN105006011B (zh) * | 2015-07-21 | 2017-08-25 | 长春理工大学 | 真实感三维场景的体感交互式绘制系统与方法 |
CN105006011A (zh) * | 2015-07-21 | 2015-10-28 | 长春理工大学 | 真实感三维场景的体感交互式绘制系统与方法 |
CN105447905A (zh) * | 2015-11-17 | 2016-03-30 | 长春理工大学 | 基于可见性平滑滤波的三维场景近似柔和阴影光线跟踪绘制方法 |
CN105447905B (zh) * | 2015-11-17 | 2018-03-06 | 长春理工大学 | 基于可见性平滑滤波的三维场景近似柔和阴影绘制方法 |
CN106776020A (zh) * | 2016-12-07 | 2017-05-31 | 长春理工大学 | 大型三维场景的计算机集群分布式路径跟踪绘制方法 |
CN106776020B (zh) * | 2016-12-07 | 2020-02-21 | 长春理工大学 | 大型三维场景的计算机集群分布式路径跟踪绘制方法 |
CN108984169A (zh) * | 2017-06-01 | 2018-12-11 | 刘开元 | 一种跨平台多元集成开发系统 |
CN108984169B (zh) * | 2017-06-01 | 2022-05-03 | 刘开元 | 一种跨平台多元集成开发系统 |
CN107330965A (zh) * | 2017-06-12 | 2017-11-07 | 长春理工大学 | 一种利用局部保守光栅化方法实现硬阴影反走样的方法 |
CN107330965B (zh) * | 2017-06-12 | 2020-08-04 | 长春理工大学 | 一种利用局部保守光栅化方法实现硬阴影反走样的方法 |
CN107346558B (zh) * | 2017-07-03 | 2020-05-19 | 长春理工大学 | 利用面光源可见性空间相关加速三维场景直接光照效果绘制的方法 |
CN107346558A (zh) * | 2017-07-03 | 2017-11-14 | 长春理工大学 | 利用面光源可见性空间相关加速三维场景直接光照效果绘制的方法 |
CN107909647A (zh) * | 2017-11-22 | 2018-04-13 | 长春理工大学 | 基于空间复用的真实感虚拟3d场景光场投影图像绘制方法 |
CN107909647B (zh) * | 2017-11-22 | 2020-09-15 | 长春理工大学 | 基于空间复用的真实感虚拟3d场景光场投影图像绘制方法 |
CN111010559A (zh) * | 2019-11-13 | 2020-04-14 | 北京邮电大学 | 裸眼三维光场内容的生成方法及装置 |
CN111145330A (zh) * | 2019-12-31 | 2020-05-12 | 广州华多网络科技有限公司 | 人体模型渲染方法、装置、电子设备及存储介质 |
CN111145330B (zh) * | 2019-12-31 | 2023-06-30 | 广州方硅信息技术有限公司 | 人体模型渲染方法、装置、电子设备及存储介质 |
CN111540018A (zh) * | 2020-04-27 | 2020-08-14 | 深圳市瑞立视多媒体科技有限公司 | 相机对称布局模式的得分计算方法及相关设备 |
CN116740253A (zh) * | 2022-09-19 | 2023-09-12 | 荣耀终端有限公司 | 一种光线追踪方法和电子设备 |
CN116740253B (zh) * | 2022-09-19 | 2024-04-16 | 荣耀终端有限公司 | 一种光线追踪方法和电子设备 |
CN116847508A (zh) * | 2023-06-27 | 2023-10-03 | 深圳光照度科技有限公司 | 基于场景融合的仿真立体地图的智慧照明控制方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN101982838B (zh) | 2012-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101982838B (zh) | 一种加速被面光源照射的3d虚拟场景的光线跟踪的方法 | |
CN112270756B (zh) | 一种应用于bim模型文件的数据渲染方法 | |
US8243065B2 (en) | Image presentation method and apparatus for 3D navigation and mobile device including the apparatus | |
CN110383337A (zh) | 可变速率着色 | |
CN102890829B (zh) | 一种基于gpu的渲染地形的方法 | |
CN108648269A (zh) | 三维建筑物模型的单体化方法和系统 | |
CN107369205B (zh) | 一种移动终端城市二三维联动显示方法 | |
CN105122310B (zh) | 用于基于瓦片的渲染的帧内时戳 | |
KR100980449B1 (ko) | 병렬 전역조명 렌더링 방법 및 시스템 | |
CN107220372B (zh) | 一种三维地图线要素注记自动放置方法 | |
CN108520557A (zh) | 一种图形图像融合的海量建筑绘制方法 | |
JP2009525526A (ja) | ビーム放出によって仮想画像を合成するための方法 | |
CN102768765A (zh) | 实时点光源软阴影渲染方法 | |
CN107851330B (zh) | 用于图形处理的零像素剔除 | |
CN109196549A (zh) | 动态低分辨率z测试大小 | |
CN102243768B (zh) | 一种三维虚拟场景立体画面的绘制方法 | |
US20080079714A1 (en) | Workload Distribution Through Frame Division in a Ray Tracing Image Processing System | |
CN106056670A (zh) | 塔式太阳能热发电系统中剔除遮挡的辐射能密度模拟方法 | |
CN106558092A (zh) | 一种基于场景多方向体素化的多光源场景加速绘制方法 | |
CN102289845A (zh) | 一种三维模型绘制方法以及装置 | |
CN102831634B (zh) | 一种高效精确的通用软阴影生成方法 | |
CN113436308A (zh) | 一种三维环境空气质量动态渲染方法 | |
US11854141B2 (en) | Early release of resources in ray tracing hardware | |
CN101615300B (zh) | 一种屏幕空间微结构表面对象环境光遮挡方法 | |
CN101364311A (zh) | 大规模城市仿真中快速自动建立模型的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120627 Termination date: 20141102 |
|
EXPY | Termination of patent right or utility model |