CN108090947A - 一种面向3d场景的光线追踪优化方法 - Google Patents
一种面向3d场景的光线追踪优化方法 Download PDFInfo
- Publication number
- CN108090947A CN108090947A CN201810004292.4A CN201810004292A CN108090947A CN 108090947 A CN108090947 A CN 108090947A CN 201810004292 A CN201810004292 A CN 201810004292A CN 108090947 A CN108090947 A CN 108090947A
- Authority
- CN
- China
- Prior art keywords
- scenes
- node
- ray
- tree
- ray tracing
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/06—Ray-tracing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/506—Illumination models
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
本发明提供一种面向3D场景的光线追踪优化方法,包括:创建3D场景的包围盒和3D场景中每个物体的AABB包围盒;建立3D场景的KD‑Tree;建立渲染管道。本发明通过使用GPU并行计算来提升光线追踪的渲染效率。不同于以往直接使用CPU对结点进行计算,同过并行计算解决光线追踪过程中大量重复的冗余计算。在基于传统SAH算法划分的基础上,对结点的优化划分处理。为了进一步提升渲染效率,本发明将KD‑Tree划分的任务块通过共享内存进行进一步的加速与优化,减少GPU与memory的传输次数,从而提高效率,提升渲染效果,通过对KD‑Tree的结点进行分类,将传统KD‑Tree中的同一种结点划分为不同种类的两种结点,同过对不同的结点处理实施不同的处理方法。这样同过这种方式可以增加渲染效率。
Description
技术领域
本发明涉及数字媒体技术领域,具体是一种面向3D场景的光线追踪优化方法。
背景技术
随着计算机行业的迅速发展,人们对图形图像要求的日益增高,3D场景的规模越来越大,模型的精度也越来越高,对场景和模型的直接渲染已经不能满足人们的需求,以此为背景基于光线追踪的渲染在今年来开始逐渐普及,并渐渐成为渲染方式的主流。然而,光线追踪计算量巨大,任务总量在渲染未结束之前基本无法确定,这使得渲染任务变得更复杂,对计算机的渲染能力有了更高的需求。与此同时,一方面计算机硬件的升级暂时缓解了上述的需求,CPU计算能力有了部分提升,但是已经趋于物理瓶颈,短时间内无法有较大的提升;另一方面,人们开始寻找新的解决大量重复的计算的新的方法,GPU计算应运而生。人们开始思考用GPU并行计算来完成光线追踪的任务。CUDA平台是目前最完善的GPU并行计算平台,通过对GPU中大量GPU单元的控制与操作完成大量重复的简单计算。CUDA平台所使用的并行计算不仅适用于光线追踪算法中大量的计算任务,也对光线追踪中的负载均衡提供了便捷的途径。可见,通过CUDA平台不仅能高速的完成光线追踪渲染任务,并且可以得到更优质的渲染结果。其中,部分学者已经提出用优化过的KD-Tree结构来实现光线追踪渲染的并行化。因为涉及到3D场景的渲染,采用表面积启发算法(SAH)[Goldsmith Salmon 1987]来处理KD-Tree各个结点。这样做在宏观上便于任务的拆分,但具体到GPU的渲染过程,高速的共享内存并未得到充分的利用。
光线追踪(ray tracing)(也叫光束投射法)是一个在二维(2D)屏幕上呈现三维(3D)图像的方法。光线追踪最早诞生于几何光学,应用于一些光学设备。随后,这个概念被引入三维计算机图形学,用来进行渲染。光线追踪算法在1980年被正式提出,但光线追踪与现实中的真实光线传播仍有细微的差异。现实中光线进入人眼,而光线追踪是模拟人眼或者摄像机发射射线,然后通过光学原理进计算,最终得到所需的渲染效果。光线追踪主要分两个步骤:射线发射器向问题域发出许多光线,并且确定这些光线中有哪些能抵达接收者,以便找出对问题域有贡献的光线。继而通过物理光学(physical optics,PO)计算光线的相互作用之后,根据计算所有的光线对每个检测点的贡献得出结果。综上所述,由于巨大数量的运算量,这种方法将变得十分耗时。在射线发射器中,模拟器也许将不得不检测每条光线和(三角)面的交叉,射线发射器所发射的数以百万计的光线中也许只有几条最终才能到达检测点。因此大家尝试用可视图、包围盒、树形图等方法提升射线发射器早期的效率。通过这些算法,可以完全避免大部分的重复的独立三角形面交叉检测。
在此基础上,学者们使用了发射反射光线法(SBR)。Lind等人采用SBR计算开放的凹陷的界面,在此之后,SBR模拟器在光线追踪领域得到了广泛的应用。由于SBR遵循物理光学传播,完全切合对象的表面,在处理几何展现时,SBR会更加灵活。SBR中设置的光线的启动数量与能碰撞到检测点的概率成比例,因而使得SBR变得更快更高效。一些情况下,过多的预处理抵消了预期的效率提升,甚至增加了模拟运行的时间,尤其是使用PO方式的时候。确定性的光线追踪直接寻找从源头道接受点处,他们通常比射线发射器更精确更快速。可见光线追踪的实现需要对预处理和自身数据大小做出合理的均衡。
近些年来,由于硬件性能的提升以及价格的下降,使得对硬件依赖较高的光线追踪算法得到过了越来越普遍的应用,例如电影渲染引擎“万物之流”(Panta ray),建模引擎3Dmax,Maya,视屏处理软件Adobe After Effect,一些游戏也部分使用了光线追踪技术。KD-tree是一种由二叉搜索树推广而来的用于多维检索的树的结构形式(K即为空间的维数),是一种分割空间的数据结构,是一种特殊的二叉树。
发明内容
针对现有技术存在的问题,本发明提供一种面向3D场景的光线追踪优化方法。
本发明的技术方案如下:
一种面向3D场景的光线追踪优化方法,包括:
步骤1、创建3D场景的包围盒和3D场景中每个物体的AABB包围盒;
步骤2、建立3D场景的KD-Tree;
步骤3、建立渲染管道。
所述步骤1,包括:
步骤1.1:使用CPU获取3D场景:加载3D场景中的三角形片源;
步骤1.2:通过3D场景中每个物体的各三角形的三个顶点,GPU并行计算确定物体AABB包围盒的坐标范围及整个3D场景的AABB包围盒的坐标范围,并依此确定物体AABB包围盒的max值和min值、整个3D场景的AABB包围盒的max值和min值;
步骤1.3:用三角形作为构造函数,根据确定的max值和min值使用CPU创建整个3D场景的AABB包围盒、3D场景中每个物体的AABB包围盒。
所述步骤2中KD-Tree通过SAH方法作为标准建立的,具体方法是:
步骤2.1:通过CPU将整个3D场景的AABB包围盒作为根结点;
步骤2.2:根据设定数量选取待划分面,利用GPU并行运算将待划分面预划分整个3D场景的AABB包围盒;
步骤2.3:通过GPU计算表面积和计算预划分生成的AABB包围盒中涵盖内容的代价值,计算预划分生成的AABB包围盒的SAH值;
步骤2.4:选取所述代价值与SAH值最为相近时对应的待划分面为划分面;
步骤2.5:利用划分面将根结点划分为两个孩子结点,通过设定的阈值判断,其为大结点或小结点,如果为小结点通过GPU完成,若为大结点,通过CPU完成;
步骤2.6:对两个孩子结点分别做步骤2.3-2.5的操作,直到每个孩子结点的三角形数目达到阈值时,建立出以整个3D场景的AABB包围盒为根结点的KD-Tree。
所述步骤3,包括:
步骤3.1:变换处理:通过CPU运算将3D场景中的物体模型从自身坐标系转换到摄像机坐标系下;
步骤3.2:裁剪处理:通过CPU运算将视锥体外的3D场景临时舍弃掉;
步骤3.3:采用单点透视进行光线追踪投影,通过CPU与GPU的协调运算把三维物体变为二维图形表示;
步骤3.4:光栅化:从物体模型变换到像素的过程。
所述步骤3.3,包括:
步骤3.3.1:根据输入数据确定观察点与像素点;
步骤3.3.2:通过CPU运算根据观察点与像素点生成射线,每个线程负责一条射线;
步骤3.3.3:根据生成的射线向3D场景的KD-Tree做相交检测,其中涉及到大结点时使用CPU计算,涉及到小结点包围盒时使用GPU并行计算;
步骤3.3.4:相交检测过程中,根据射线碰撞的KD-Tree结点的光学属性,确定光线路径上所累加的像素并通过GPU进行累加计算,并且确定射线的新的传播方向;
步骤3.3.5:将步骤3.3.4得到的结果投射在屏幕上。
所述步骤3.3.4中确定光线路径上所累加的像素,具体是方法是:判断射线的传播是否经过具有散射属性的KD-Tree结点:是,则停止像素累加的计算,否则继续累加。
所述步骤3.3.4中确定射线的新的传播方向,具体方法是:确定该结点是否有反射或折射的性质:如果有,则根据反射或折射的方向确定当前射线新的传播方向,否则当前射线继续传播。
有益效果:
本发明通过使用GPU并行计算来提升光线追踪的渲染效率。不同于以往直接使用CPU对结点进行计算,同过并行计算解决光线追踪过程中大量重复的冗余计算。在基于传统SAH算法划分的基础上,对结点的优化划分处理。为了进一步提升渲染效率,本发明将KD-Tree划分的任务块通过共享内存进行进一步的加速与优化,减少GPU与memory的传输次数,从而提高效率,提升渲染效果,通过对KD-Tree的结点进行分类,将传统KD-Tree中的同一种结点划分为不同种类的两种结点,同过对不同的结点处理实施不同的处理方法。这样同过这种方式可以增加渲染效率。
附图说明
图1是本发明具体实施方式中的一种面向3D场景的光线追踪优化方法流程图;
图2(a)~(c)是本发明具体实施方式中的步骤1中的AABB包围盒不同角度示意图;
图3是本发明具体实施方式中的步骤1中的局部曲面的AABB包围盒示意图;
图4是本发明具体实施方式中的步骤1流程图;
图5是本发明具体实施方式中的步骤2流程图;
图6(a)、(b)分别是本发明具体实施方式中步骤2.5的大结点的数据结构和小结点的数据结构;
图7是本发明具体实施方式中的步骤3流程图;
图8是本发明具体实施方式步骤3.2中的视锥体的区域划分示意图;
图9是本发明具体实施方式中的步骤3.3流程图;
图10是本发明具体实施方式中的步骤3.3中的光线追踪原理示意图。
具体实施方式
下面结合附图对本发明的具体实施方式做详细说明。
本实施方式在CUDA平台上采用本发明方法优化传统光线追踪引擎,并对光线追踪在并行时的负载均衡问题进行优化解决,通过数据对比体现出GPU之于CPU渲染的优势,以及在GPU上实现负载均衡的重要性。
一种面向3D场景的光线追踪优化方法,流程如图1所示,包括:
步骤1、创建3D场景的包围盒和3D场景中每个物体的AABB包围盒;
所述步骤1,如图4所示,包括:
步骤1.1:使用CPU获取3D场景:加载3D场景中的三角形片源;
步骤1.2:通过3D场景中每个物体的各三角形的三个顶点,GPU并行计算确定物体AABB包围盒的坐标范围及整个3D场景的AABB包围盒的坐标范围,并依此确定物体AABB包围盒的max值和min值、整个3D场景的AABB包围盒的max值和min值;
AABB(axis aligned bounding box)的构建方法有很多,本实施方式采用Max-Min与紧凑点的AABB,主要从顶点中查找离各个坐标轴最远和最近的点,通过计算构建出如图2(a)~(c)所示的AABB包围盒,局部曲面的AABB包围盒如图3所示。因为本实施方式中的3D场景均由三角形片源构成,所以用三角形作为构造函数,并通过三角形的三个顶点确定三角形片源的坐标范围,并依此确定AABB包围盒的max和min值。三角形的顶点集只有三点,所以对三点依次进行判断即可得到。此处需要计算三角形各点在各个坐标上投影的长短,然后将各个轴上的最大值和最小值整合成包围盒的区域范围,完成包围盒的创建。因三角形片源之间无相对应逻辑,故使用GPU并行计算加快运算效率。
为了提高并行计算的效率,AABB包围盒在此处优化为两点表示,即离原点最近点与离原点最远点,因为AABB包围盒是沿着平行坐标轴建立的包围盒,所以根据两点即可还原包围盒的信息。使用AABB包围盒的目的是为了方便实现射线碰撞检测。首先选择射线所直射的三个面,然后选择射线传播距离最长的面,确定交点是否在该平面上,如果在,则与该面相交,如果不在则射线与包围盒不发生碰撞。这样就以较低的代价完成射线碰撞检测的任务。
步骤1.3:用三角形作为构造函数,根据确定的max值和min值使用CPU创建整个3D场景的AABB包围盒、3D场景中每个物体的AABB包围盒。
步骤2、建立3D场景的KD-Tree;
本实施方式中KD-Tree通过SAH方法作为标准建立的。首先将整个3D场景的AABB包围盒作为根结点;然后选取该根结点的若干个面作为待划分面,依次带入SAH公式中计算代价。选取代价最接近的平面作为划分面,将该根结点划分为两个子结点——左孩子结点和右孩子结点。然后对左孩子结点和右孩子结点做同样的划分操作,直到每个子结点的三角形数目达到阈值。因本步骤操作需要较多的逻辑操作,在构建过程中将大量使用CPU进行逻辑运算操作。
SAH方法的核心思想是:通过表面积和计算AABB包围盒中涵盖内容的代价、计算划分后新生成的AABB包围盒的SAH值,当计算的代价和SAH值最为相近时,选取对应的划分面进行划分。
其中,Cts代表当前选中的结点,即待遍历结点本身的代价,CL(x)代表的左孩子结点中涵盖内容的代价,CR(x)代表当前结点的右孩子结点中涵盖内容的代价,x代表分割位置,AL(x)、AR(x)分别代表待遍历结点的左、右孩子结点的表面积,A表示当前结点对应的AABB包围盒整体表面积。
根据SAH标准,由上至下分割,确定所有结点之间的关联,构建一个相对平衡的KD-Tree。
传统的串行实现方式为建立多个List用于遍历KD-Tree,将每个射线所碰撞到的包围盒放进List中,最后依次计算每个List中的像素叠加。而这样做的缺点是,此步骤中并非所有的工作量都是串行的,在CPU进行一条射线的渲染工作时,其他射线都在等待状态。极大的浪费了渲染的时间。所以可以将渲染任务交给GPU处理。然而GPU的计算特点是比较适合大量的重复性计算。
KD-Tree中的大结点即非叶子结点中逻辑复杂,相互之间存在较多的关联,并不适合使用GPU计算。所以本发明在KD-Tree的过程中着重于合理使用CPU和GPU计算KD-Tree的各个结点。
在使用大结点的过程中,通过CPU进行计算;当涉及到叶子结点、需要进行具体的数据运行时,将任务交付给GPU。在本发明中,在KD-Tree构建的过程中,需要CPU的逻辑运算和GPU的并行计算,其中GPU的并行计算包括SAH中的代价计算和对AABB包围盒进行扫描。
在KD-Tree构建完成后,需要对各个光线所碰撞到的AABB包围盒建立List,这个过程中涉及到AABB包围盒的选取,由CPU完成。而每条光线对应的List之间是相互独立的,所以由GPU来完成。通过合理的分工,可以完成渲染管道建立之前的操作。
所述步骤2具体是通过SAH方法建立KD-Tree,如图5所示,方法是:
步骤2.1:通过CPU将整个3D场景的AABB包围盒作为根结点;
步骤2.2:根据设定数量选取待划分面,利用GPU并行运算将待划分面预划分整个3D场景的AABB包围盒;
步骤2.3:通过GPU计算表面积和计算预划分生成的AABB包围盒中涵盖内容的代价值,计算预划分生成的AABB包围盒的SAH值;
步骤2.4:选取所述代价值与SAH值最为相近时对应的待划分面为划分面;
步骤2.5:利用划分面将根结点划分为两个孩子结点,通过设定的阈值判断,其为大结点或小结点,如果为小结点(叶子结点)通过GPU完成,若为大结点(非叶子结点),通过CPU完成;
步骤2.6:对两个孩子结点分别做步骤2.3-2.5的操作,直到每个孩子结点的三角形数目达到阈值时,建立出以整个3D场景的AABB包围盒为根结点的KD-Tree。
步骤3、建立渲染管道;
具体步骤如图7所示:
步骤3.1:变换处理:通过CPU运算将3D场景中的物体模型从自身坐标系转换到摄像机坐标系下;
变换处理依赖于工程中存在的两个坐标系:物体模型自身坐标系与摄像机坐标系。其中AABB包围盒依赖于物体模型自身坐标系,而摄像机坐标系影响最终的成像角度,通过矩阵相乘可以实现坐标变换,完成平移、旋转、缩放三种变换,通过以上三种变换之间的合成,可以组合成任意变换。
为了建立场景几何关系,将3D场景中的物体模型统一放置到世界坐标系中,从建模坐标系变换到世界坐标系叫模型变换。几何模型的最终成像是在摄像机坐标下,将场景物体从世界坐标系变换到摄像机坐标系叫相机变换。相机的外部参数决定了相机坐标系,因此场景在屏幕上的成像位置与形状和相机的外部参数有关。物体模型和相机变换采用4×4齐次矩阵表示。
点(x,y,z)平移(tx,ty,tz)后的坐标为(x″,y″,z″),此外还有旋转、缩放变换,这三种基本的变换可以合成任意几何变换。
通常把模型变换和相机变换的矩阵复合成一个矩阵处理,便于提高效率。在所有的图形绘制库中,都提供了物体模型和相机变换对应的矩阵。其中,模型变换由场景物体的平移和旋转、缩放变换组成,相机变换则通过设置相机的位置、相机方向和向上向量来决定。
步骤3.2:裁剪处理:通过CPU运算将视锥体外的3D场景临时舍弃掉以加快渲染的效率。
裁剪可以将视锥体外的场景临时舍弃掉以加快渲染的效率,视锥体的区域划分如图8所示。在光线追踪过程中,裁剪的区域为一个四棱台。
相机的参数包括投影方式、近平面、远平面、视野和屏幕的长宽比率,它们决定了物体从相机坐标系投影变换到屏幕坐标系的位置。这些参数实际上定义了一个视域四棱锥,也叫做视锥体。
位于视锥体之外的场景部分不需要送入后面的步骤进行处理。因此,对完全位于规一化的设备空间之外的几何元素,可简单地舍弃。而部分位于规一化的设备空间之外的几何元素则需要进行裁剪操作。由于裁剪的面就是立方体的6个表面,实现起来非常简便。也可以定义额外的平面对场景进行裁剪。视域裁剪通常由底层图形API自动完成。
步骤3.3:采用单点透视进行光线追踪投影,通过CPU与GPU的协调运算把三维物体变为二维图形表示;
透视投影是所有投影线交于投影中心,其中透视中心汇聚于相机;投影时由相机处对KD-Tree投射光线,根据KD-Tree进行逻辑计算,在KD-Tree中选取需要计算的场景。根据光线追踪算法对各个相交的物体进行光线追踪计算,最后将得到的结果投射在屏幕上。
投影过程遵循如图10所示的光线追踪原理,从视点触发,对每个像素射出射线,射线通过物理原理进行折射、反射、散射等变换,最后通过光栅化将上述的计算结果转化为屏幕上的像素。
所述步骤3.3,如图9所示,包括:
步骤3.3.1:根据输入数据确定观察点与像素点;
步骤3.3.2:通过CPU运算根据观察点与像素点生成射线,每个线程负责一条射线;
步骤3.3.3:根据生成的射线向3D场景的KD-Tree做相交检测,其中涉及到大结点时使用CPU计算,涉及到小结点包围盒时使用GPU并行计算;大结点、小结点的数据结构分别如图6(a)、(b)所示。
步骤3.3.4:相交检测过程中,根据射线碰撞的KD-Tree结点的光学属性,确定光线路径上所累加的像素并通过GPU进行累加计算,并且确定射线的新的传播方向;
所述步骤3.3.4中,根据射线碰撞的KD-Tree结点的光学属性确定光线路径上所累加的像素,具体是方法是:判断射线的传播是否经过具有散射属性的KD-Tree结点:是,则停止像素累加的计算,否则继续累加;因为累加过程中,射线的传播长度并不确定,所产生的数据量也并不相同,所以需要一定程度的负载均衡。此处通过CUDA对GPU内部的sharememory进行控制,根据数据量的估算重新分配各个流处理器所处理的任务量。
根据射线碰撞的KD-Tree结点的光学属性确定射线传播的新的方向,具体方法是:确定该结点是否有反射或折射的性质:如果有,则根据反射或折射的方向确定当前射线新的传播方向,否则当前射线继续传播。
步骤3.3.5:将步骤3.3.4得到的结果投射在屏幕上。
步骤3.4:光栅化(Rasterization):从物体模型变换到像素的过程。
光栅化可分为四个子阶段,即消隐、逐像素光照明计算、纹理映射和颜色融合。
(1)消隐
消隐的目的是解决场景的可见性计算问题。可见性计算是指计算物体投射到投影平面如果有交叠,观察者应该看到哪个投影点。图形学中经典的解决方案是物体空间Z缓冲器算法和图像空间的光线追踪算法。由于Z缓冲器算法易于在图形硬件中实现,逐渐演化称标准的图形硬件消隐技术。在深度缓冲器中,每个像素上始终保留最接近视点的深度。当光栅化产生新的像素后,该像素的深度和保存在深度缓冲器的像素深度进行比较,如果小于已有的像素深度,则用像素的颜色和深度替换分别保存在颜色缓冲器的像素颜色和深度缓冲器中的像素深度,反之保持不变。在绘制之前,深度缓冲器必须初始化为最远的深度,以保证可见性计算的正确性。
(2)光照计算
光照计算影响物体的外观。进行光照计算的几个要素包括光源位置、光源属性、光照模型、物体表面材质属性、纹理和物体表面几何属性(包括法向、微几何结构)等。最简单的光照计算技术是在物体建模时指定每个顶点的颜色和纹理坐标,在绘制时直接利用颜色和纹理映射融合为最终颜色。这种方法称为平坦渲染(Flat shading)模式,它的速度快,但效果欠佳,是早期游戏中最常用的技术。
真正意义上的光照计算必须指定每个光源本身的属性,包括光源的类型(点、线、面光源)、位置和光源的漫反射/镜面反射的颜色,然后根据光照模型(分局部光照明模型和全局光照明模型,前面所述直接指定顶点颜色的方法可看作最简单的局部光照明模型)在物体的每个顶点计算每个光源对该顶点的光亮度贡献,最后在光栅化层插值顶点上的颜色。
(3)纹理映射
纹理映射是增强场景真实感的一种简单有效的技术。它将预生成的图像直接贴在物体表面,模拟物体表面外观,因此也叫贴图法。纹理映射的扩展技术有很多,包括环境映射、光照图、球面映射、立方体映射、凹凸映射、位移映射等,是图形渲染加速中最重要的手段。在真实感渲染章节会有更详细的讨论。
(4)颜色融合
对于每一个像素,产生光照计算和纹理映射两类颜色值。光照明计算的结果可能来自多个光源,而每个光源可导致漫反射和镜面反射的光亮度。此外,同一像素也可能采集来自多个纹理的值,如多通道纹理映射和单通道多重纹理映射。所有这些颜色值将根据各自的不透明度融合出最终结果。颜色融合不仅能加强场景真实感,还能产生半透明绘制、景深、基于alpha缓冲器的反走样、软阴影等特效。
Claims (7)
1.一种面向3D场景的光线追踪优化方法,其特征在于,包括:
步骤1、创建3D场景的包围盒和3D场景中每个物体的AABB包围盒;
步骤2、建立3D场景的KD-Tree;
步骤3、建立渲染管道。
2.根据权利要求1所述的面向3D场景的光线追踪优化方法,其特征在于,所述步骤1,包括:
步骤1.1:使用CPU获取3D场景:加载3D场景中的三角形片源;
步骤1.2:通过3D场景中每个物体的各三角形的三个顶点,GPU并行计算确定物体AABB包围盒的坐标范围及整个3D场景的AABB包围盒的坐标范围,并依此确定物体AABB包围盒的max值和min值、整个3D场景的AABB包围盒的max值和min值;
步骤1.3:用三角形作为构造函数,根据确定的max值和min值使用CPU创建整个3D场景的AABB包围盒、3D场景中每个物体的AABB包围盒。
3.根据权利要求1所述的面向3D场景的光线追踪优化方法,其特征在于,所述步骤2中KD-Tree通过SAH方法作为标准建立的,具体方法是:
步骤2.1:通过CPU将整个3D场景的AABB包围盒作为根结点;
步骤2.2:根据设定数量选取待划分面,利用GPU并行运算将待划分面预划分整个3D场景的AABB包围盒;
步骤2.3:通过GPU计算表面积和计算预划分生成的AABB包围盒中涵盖内容的代价值,计算预划分生成的AABB包围盒的SAH值;
步骤2.4:选取所述代价值与SAH值最为相近时对应的待划分面为划分面;
步骤2.5:利用划分面将根结点划分为两个孩子结点,通过设定的阈值判断,其为大结点或小结点,如果为小结点通过GPU完成,若为大结点,通过CPU完成;
步骤2.6:对两个孩子结点分别做步骤2.3-2.5的操作,直到每个孩子结点的三角形数目达到阈值时,建立出以整个3D场景的AABB包围盒为根结点的KD-Tree。
4.根据权利要求1所述的面向3D场景的光线追踪优化方法,其特征在于,所述步骤3,包括:
步骤3.1:变换处理:通过CPU运算将3D场景中的物体模型从自身坐标系转换到摄像机坐标系下;
步骤3.2:裁剪处理:通过CPU运算将视锥体外的3D场景临时舍弃掉;
步骤3.3:采用单点透视进行光线追踪投影,通过CPU与GPU的协调运算把三维物体变为二维图形表示;
步骤3.4:光栅化:从物体模型变换到像素的过程。
5.根据权利要求4所述的面向3D场景的光线追踪优化方法,其特征在于,所述步骤3.3,包括:
步骤3.3.1:根据输入数据确定观察点与像素点;
步骤3.3.2:通过CPU运算根据观察点与像素点生成射线,每个线程负责一条射线;
步骤3.3.3:根据生成的射线向3D场景的KD-Tree做相交检测,其中涉及到大结点时使用CPU计算,涉及到小结点包围盒时使用GPU并行计算;
步骤3.3.4:相交检测过程中,根据射线碰撞的KD-Tree结点的光学属性,确定光线路径上所累加的像素并通过GPU进行累加计算,并且确定射线的新的传播方向;
步骤3.3.5:将步骤3.3.4得到的结果投射在屏幕上。
6.根据权利要求5所述的面向3D场景的光线追踪优化方法,其特征在于,所述步骤3.3.4中确定光线路径上所累加的像素,具体是方法是:判断射线的传播是否经过具有散射属性的KD-Tree结点:是,则停止像素累加的计算,否则继续累加。
7.根据权利要求5所述的面向3D场景的光线追踪优化方法,其特征在于,所述步骤3.3.4中确定射线的新的传播方向,具体方法是:确定该结点是否有反射或折射的性质:如果有,则根据反射或折射的方向确定当前射线新的传播方向,否则当前射线继续传播。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810004292.4A CN108090947B (zh) | 2018-01-03 | 2018-01-03 | 一种面向3d场景的光线追踪优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810004292.4A CN108090947B (zh) | 2018-01-03 | 2018-01-03 | 一种面向3d场景的光线追踪优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108090947A true CN108090947A (zh) | 2018-05-29 |
CN108090947B CN108090947B (zh) | 2021-04-13 |
Family
ID=62181515
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810004292.4A Active CN108090947B (zh) | 2018-01-03 | 2018-01-03 | 一种面向3d场景的光线追踪优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108090947B (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108876888A (zh) * | 2018-05-31 | 2018-11-23 | 沈阳品尚科技有限公司 | 一种光线追踪优化方法 |
CN109215106A (zh) * | 2018-08-30 | 2019-01-15 | 东北大学 | 一种基于动态场景的实时光线追踪加速结构的方法 |
CN110070597A (zh) * | 2019-04-02 | 2019-07-30 | 同济大学 | 一种基于OpenCL的Unity3D渲染加速方法 |
CN110478895A (zh) * | 2019-08-23 | 2019-11-22 | 腾讯科技(深圳)有限公司 | 虚拟物品的控制方法、装置、终端及存储介质 |
CN110515455A (zh) * | 2019-07-25 | 2019-11-29 | 山东科技大学 | 一种基于Leap Motion和局域网内协同的虚拟装配方法 |
CN110691195A (zh) * | 2019-10-15 | 2020-01-14 | 重庆灵翎互娱科技有限公司 | 一种基于三维人脸拍摄的光线检测方法和设备 |
CN111490952A (zh) * | 2020-03-27 | 2020-08-04 | 天津大学 | 一种射线追踪方法 |
CN111859612A (zh) * | 2020-06-08 | 2020-10-30 | 北京经纬恒润科技有限公司 | 激光雷达仿真方法以及装置 |
CN112184873A (zh) * | 2020-10-19 | 2021-01-05 | 网易(杭州)网络有限公司 | 分形图形创建方法、装置、电子设备和存储介质 |
CN112507571A (zh) * | 2021-01-21 | 2021-03-16 | 博智安全科技股份有限公司 | 兵棋通视分析方法、终端设备和计算机可读存储介质 |
CN113129420A (zh) * | 2021-04-14 | 2021-07-16 | 江苏理工学院 | 一种基于深度缓冲加速的光线追踪渲染方法 |
CN114219885A (zh) * | 2021-12-13 | 2022-03-22 | 在线途游(北京)科技有限公司 | 一种用于移动终端的实时阴影渲染方法和装置 |
CN114241112A (zh) * | 2021-12-17 | 2022-03-25 | 完美世界(北京)软件科技发展有限公司 | 三维虚拟场景的渲染方法、装置、电子设备及存储介质 |
CN115115758A (zh) * | 2021-03-23 | 2022-09-27 | 想象技术有限公司 | 光线跟踪系统中的相交测试 |
CN116681814A (zh) * | 2022-09-19 | 2023-09-01 | 荣耀终端有限公司 | 一种图像渲染方法和电子设备 |
CN117830489A (zh) * | 2024-03-05 | 2024-04-05 | 浙江小牛哥科技有限公司 | 智能室内设计图像渲染系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130328876A1 (en) * | 2012-06-08 | 2013-12-12 | Advanced Micro Devices, Inc. | Building kd-trees in a depth first manner on heterogeneous computer systems |
CN104361624A (zh) * | 2014-11-20 | 2015-02-18 | 南京大学 | 一种计算机三维模型中全局光照的渲染方法 |
CN105117533A (zh) * | 2015-08-03 | 2015-12-02 | 常州赞云软件科技有限公司 | 家装设计软件中光线跟踪算法的加速方法 |
CN106776028A (zh) * | 2016-12-21 | 2017-05-31 | 东北大学 | 一种基于gpu的光线跟踪方法 |
-
2018
- 2018-01-03 CN CN201810004292.4A patent/CN108090947B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130328876A1 (en) * | 2012-06-08 | 2013-12-12 | Advanced Micro Devices, Inc. | Building kd-trees in a depth first manner on heterogeneous computer systems |
CN104361624A (zh) * | 2014-11-20 | 2015-02-18 | 南京大学 | 一种计算机三维模型中全局光照的渲染方法 |
CN105117533A (zh) * | 2015-08-03 | 2015-12-02 | 常州赞云软件科技有限公司 | 家装设计软件中光线跟踪算法的加速方法 |
CN106776028A (zh) * | 2016-12-21 | 2017-05-31 | 东北大学 | 一种基于gpu的光线跟踪方法 |
Non-Patent Citations (2)
Title |
---|
ZHENG WANG 等: "Fast parallel algorithm of triangle intersection based on GPU", 《PHYSICS PROCEDIA》 * |
宋元杰 等: "采用Intel集成众核架构的并行光线追踪加速方法", 《计算机辅助设计与图形学学报》 * |
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108876888A (zh) * | 2018-05-31 | 2018-11-23 | 沈阳品尚科技有限公司 | 一种光线追踪优化方法 |
CN109215106A (zh) * | 2018-08-30 | 2019-01-15 | 东北大学 | 一种基于动态场景的实时光线追踪加速结构的方法 |
CN109215106B (zh) * | 2018-08-30 | 2023-01-03 | 东北大学 | 一种基于动态场景的实时光线追踪加速结构的方法 |
CN110070597A (zh) * | 2019-04-02 | 2019-07-30 | 同济大学 | 一种基于OpenCL的Unity3D渲染加速方法 |
CN110515455A (zh) * | 2019-07-25 | 2019-11-29 | 山东科技大学 | 一种基于Leap Motion和局域网内协同的虚拟装配方法 |
CN110515455B (zh) * | 2019-07-25 | 2023-03-03 | 山东科技大学 | 一种基于Leap Motion和局域网内协同的虚拟装配方法 |
CN110478895A (zh) * | 2019-08-23 | 2019-11-22 | 腾讯科技(深圳)有限公司 | 虚拟物品的控制方法、装置、终端及存储介质 |
CN110691195A (zh) * | 2019-10-15 | 2020-01-14 | 重庆灵翎互娱科技有限公司 | 一种基于三维人脸拍摄的光线检测方法和设备 |
CN111490952A (zh) * | 2020-03-27 | 2020-08-04 | 天津大学 | 一种射线追踪方法 |
CN111490952B (zh) * | 2020-03-27 | 2021-08-17 | 陈亮 | 一种射线追踪方法 |
CN111859612B (zh) * | 2020-06-08 | 2024-06-25 | 北京经纬恒润科技股份有限公司 | 激光雷达仿真方法以及装置 |
CN111859612A (zh) * | 2020-06-08 | 2020-10-30 | 北京经纬恒润科技有限公司 | 激光雷达仿真方法以及装置 |
CN112184873B (zh) * | 2020-10-19 | 2024-04-26 | 网易(杭州)网络有限公司 | 分形图形创建方法、装置、电子设备和存储介质 |
CN112184873A (zh) * | 2020-10-19 | 2021-01-05 | 网易(杭州)网络有限公司 | 分形图形创建方法、装置、电子设备和存储介质 |
CN112507571A (zh) * | 2021-01-21 | 2021-03-16 | 博智安全科技股份有限公司 | 兵棋通视分析方法、终端设备和计算机可读存储介质 |
US11741659B2 (en) | 2021-03-23 | 2023-08-29 | Imagination Technologies Limited | Intersection testing in a ray tracing system using three-dimensional axis-aligned box |
CN115115758A (zh) * | 2021-03-23 | 2022-09-27 | 想象技术有限公司 | 光线跟踪系统中的相交测试 |
CN115115758B (zh) * | 2021-03-23 | 2023-10-31 | 想象技术有限公司 | 在光线跟踪系统中确定相交的方法、相交测试装置和介质 |
CN113129420B (zh) * | 2021-04-14 | 2023-06-23 | 江苏理工学院 | 一种基于深度缓冲加速的光线追踪渲染方法 |
CN113129420A (zh) * | 2021-04-14 | 2021-07-16 | 江苏理工学院 | 一种基于深度缓冲加速的光线追踪渲染方法 |
CN114219885A (zh) * | 2021-12-13 | 2022-03-22 | 在线途游(北京)科技有限公司 | 一种用于移动终端的实时阴影渲染方法和装置 |
CN114241112A (zh) * | 2021-12-17 | 2022-03-25 | 完美世界(北京)软件科技发展有限公司 | 三维虚拟场景的渲染方法、装置、电子设备及存储介质 |
CN116681814A (zh) * | 2022-09-19 | 2023-09-01 | 荣耀终端有限公司 | 一种图像渲染方法和电子设备 |
CN116681814B (zh) * | 2022-09-19 | 2024-05-24 | 荣耀终端有限公司 | 一种图像渲染方法和电子设备 |
CN117830489A (zh) * | 2024-03-05 | 2024-04-05 | 浙江小牛哥科技有限公司 | 智能室内设计图像渲染系统 |
CN117830489B (zh) * | 2024-03-05 | 2024-05-03 | 浙江小牛哥科技有限公司 | 智能室内设计图像渲染系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108090947B (zh) | 2021-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108090947A (zh) | 一种面向3d场景的光线追踪优化方法 | |
CN110827390B (zh) | 处理无序不透明和α光线/图元交点的方法 | |
US11804000B2 (en) | Query-specific behavioral modification of tree traversal | |
US12067669B2 (en) | Watertight ray triangle intersection | |
US11804002B2 (en) | Techniques for traversing data employed in ray tracing | |
US12073504B2 (en) | Hardware-based techniques applicable for ray tracing for efficiently representing and processing an arbitrary bounding volume | |
JP4769732B2 (ja) | 複雑な動的3次元シーンをレイトレーシング法により写真現実的に表示する装置 | |
US11816783B2 (en) | Enhanced techniques for traversing ray tracing acceleration structures | |
KR20100128337A (ko) | 광선 추적 렌더링을 위한 병렬화 교차 테스트 및 세이딩의 아키텍처 | |
JP2009525526A (ja) | ビーム放出によって仮想画像を合成するための方法 | |
US11854141B2 (en) | Early release of resources in ray tracing hardware | |
US20240009226A1 (en) | Techniques for traversing data employed in ray tracing | |
US20240095996A1 (en) | Efficiency of ray-box tests | |
KR20140013292A (ko) | 레이 트레이싱 연산 시스템 | |
US20240087211A1 (en) | Generation and Traversal of Partial Acceleration Structures for Ray Tracing | |
Zhao | Application of Automatic Analysis of Image Data Based on KD-Tree in Ray Tracing Technology | |
Aman | Rendering Three-Dimensional Scenes with Tetrahedral Meshes | |
Ahmed et al. | Enhanced ray tracing algorithm for depth image generation | |
Karaffová | Efficient ray tracing of CSG models | |
Hook | Algorithms For Accelerating Ray Tracing | |
Li | Study on scene rendering using ray tracing | |
Es | Accelerated ray tracing using programmable graphics pipelines | |
Jadi | Implementing ray tracing algorithm in parallel environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |