CN111243073B - 一种规则栅格的相交加速方法、装置及计算机存储介质 - Google Patents
一种规则栅格的相交加速方法、装置及计算机存储介质 Download PDFInfo
- Publication number
- CN111243073B CN111243073B CN202010048753.5A CN202010048753A CN111243073B CN 111243073 B CN111243073 B CN 111243073B CN 202010048753 A CN202010048753 A CN 202010048753A CN 111243073 B CN111243073 B CN 111243073B
- Authority
- CN
- China
- Prior art keywords
- voxel
- empty
- node
- data structure
- tree data
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 230000001133 acceleration Effects 0.000 title claims description 33
- 238000004364 calculation method Methods 0.000 claims description 22
- 238000004422 calculation algorithm Methods 0.000 claims description 12
- 238000009877 rendering Methods 0.000 description 38
- 238000005286 illumination Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000002194 synthesizing effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Classifications
-
- 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/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/50—Lighting effects
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
本发明实施例公开了一种规则栅格的相交加速方法、装置及计算机存储介质;该方法可以包括:判定当前光线的到达体元为空体元的情况下,根据设定的空体元分布状态查询所述当前光线的到达体元位置周围的空体元分布信息;基于所述当前光线的到达体元周围的空体元分布信息将光线跳过所述当前光线的到达体元周围的空体元,获得新的到达体元位置;根据所述新的到达体元位置判定所述新的到达体元是否为空体元。
Description
技术领域
本发明实施例涉及图形处理器(GPU,Graphics Processing Unit)技术领域,尤其涉及一种规则栅格的相交加速方法、装置及计算机存储介质。
背景技术
三维(3D)渲染可以指将3D对象的数据合成为在相机的给定视点观察到的图像的图像处理过程,而作为渲染方法的一个实例,光线追踪技术可以包括通过追踪沿着从相机的视点朝向图像的每个像素发射光线的入射光路径来生成图像。
在利用光线追踪技术进行渲染的过程中,首先由射线生成单元发射出一次射线,一次射线进入射线-物体相交计算单元获得直接光照的渲染位置和该位置渲染所需要的信息,然后渲染位置和渲染信息进入渲染计算单元完成直接光照的渲染,接下来渲染计算单元会决定是否继续请求射线生成单元从刚才的渲染点发射出新的二次射线,如果发射出二次射线,则二次射线会进入射线-物体相交计算单元获得新的间接光照的渲染位置和该位置渲染所需要的信息,接下来渲染计算单元同样会根据这些渲染信息计算出间接光照的效果,整个渲染计算形成循环,直到所有的射线都渲染完毕,最终直接光照和间接光照的计算结果将被叠加送入帧缓存中。
在光线追踪技术中,射线-物体相交计算单元利用规则栅格(uniform grid)对光线追踪中的射线相交进行加速是一种经典的相交加速方法,通过递推的方式,从射线所达的当前体元(voxel)来确定下一次要行进到的相邻体元的位置。但是上述规则栅格相交加速方法有一个缺陷,那就是当场景中的物体分布不太均匀时,在射线穿越到真正有物体的体元(voxel)之前,会浪费大量的计算量和时间在穿越空的体元(voxel)上,从而造成运算效率低下。
发明内容
有鉴于此,本发明实施例期望提供一种规则栅格的相交加速方法、装置及计算机存储介质;能够提高规则栅格相交加速的处理效率。
本发明实施例的技术方案是这样实现的:
第一方面,本发明实施例提供了一种规则栅格的相交加速方法,所述方法包括:
判定当前光线的到达体元为空体元的情况下,根据设定的空体元分布状态查询所述当前光线的到达体元位置周围的空体元分布信息;
基于所述当前光线的到达体元周围的空体元分布信息将光线跳过所述当前光线的到达体元周围的空体元,获得新的到达体元位置;
根据所述新的到达体元位置判定所述新的到达体元是否为空体元。
第二方面,本发明实施例提供了一种规则栅格的相交加速装置,所述装置包括:判定部分、查询部分、计算部分;其中,
所述判定部分,经配置为判定当前光线的到达体元是否为空体元;以及当所述当前光线的到达体元为空体元时,将所述当前光线的到达体元位置传输至所述查询部分;
所述查询部分,经配置为:根据设定的空体元分布状态查询所述当前光线的到达体元位置周围的空体元分布信息;以及,将所述当前光线的到达体元位置周围的空体元分布信息传输至所属计算部分;
所述计算部分,经配置为基于所述当前光线的到达体元周围的空体元分布信息将光线跳过所述当前光线的到达体元周围的空体元,获得新的到达体元位置;以及将所述新的到达体元位置传输至所述判定部分进行判定。
第三方面,本发明实施例提供了一种GPU,所述GPU至少包括射线-物体相交计算单元;所述射线-物体相交计算单元至少包括第二方面所述的规则栅格的相交加速装置。
第四方面,本发明实施例提供了一种计算机存储介质,所述计算机存储介质存储有规则栅格的相交加速程序,所述规则栅格的相交加速程序被至少一个处理器执行时实现第一方面所述的规则栅格的相交加速方法的步骤。
本发明实施例提供了一种规则栅格的相交加速方法、装置及计算机存储介质;当判定当前光线的到达体元为空体元之后,会将光线跳过当前光线的到达体元周围的空体元,从而能够一次性地跨越多个空体元(Voxel),大大加快了规则栅格方案中光线通过空的体元的速度,解决了经典规则栅格相交加速方案在物体分布不均匀时频繁跨越单个空的体元从而造成光线前进速度慢的问题。
附图说明
图1为能够实施规则栅格的相交加速方法技术的计算装置框图;
图2为说明图1中处理器、GPU和系统存储器的实例实施方案的框图;
图3为本发明实施例提供的一种规则栅格的相交加速方法流程示意图;
图4为本发明实施例提供的一种树形数据结构的部分节点示意图;
图5为本发明实施例提供的跳出空体元的示意图;
图6为本发明实施例提供的一种规则栅格的相交加速装置组成示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
图1为本发明实施例提供的一种能够实施规则栅格的相交加速技术的计算装置2,该计算装置2的实例包括但不限于:无线装置、移动或蜂窝电话(包含所谓的智能电话)、个人数字助理(PDA)、视频游戏控制台(包含视频显示器、移动视频游戏装置、移动视频会议单元)、膝上型计算机、桌上型计算机、电视机顶盒、平板计算装置、电子书阅读器、固定或移动媒体播放器,等。在图1的实例中,该计算装置2可以包括:处理器6、系统存储器10和GPU 12。计算装置2还可包含显示处理器14、收发器模块3、用户接口4和显示器8。收发器模块3和显示处理器14两者可为与处理器6和/或GPU 12相同的集成电路(IC)的部分,两者可在包含处理器6和/或GPU 12的一或多个IC的外部,或可形成于在包含处理器6和/或GPU 12的IC外部的IC中。
为清楚起见,计算装置2可包含图1中未图示的额外模块或单元。举例来说,计算装置2可在其中计算装置2为移动无线电话或的实例中包含扬声器和麦克风(两者均未在图1中示出)来实现电话通信,或在计算装置2为媒体播放器的情况下包含扬声器。计算装置2还可包含摄像机。此外,计算装置2中所示的各种模块和单元可能不是在计算装置2的每个实例中都是必需的。举例来说,在计算装置2为桌上型计算机或经装备以与外部用户接口或显示器介接的其它装置的实例中,用户接口4和显示器8可在计算装置2外部。
用户接口4的实例包含(但不限于)轨迹球、鼠标、键盘和其它类型的输入装置。用户接口4还可为触摸屏,并且可作为显示器8的部分并入。收发器模块3可包含电路以允许计算装置2与另一装置或网络之间的无线或有线通信。收发器模块3可包含调制器、解调器、放大器和用于有线或无线通信的其它此类电路。
处理器6可为微处理器,例如中央处理单元(CPU),其经配置以处理供执行的计算机程序的指令。处理器6可包括控制计算装置2的运算的通用或专用处理器。用户可将输入提供到计算装置2,以致使处理器6执行一或多个软件应用程序。在处理器6上执行的软件应用程序可包含(例如)操作系统、文字处理器应用程序、电子邮件应用程序、电子表格应用程序、媒体播放器应用程序、视频游戏应用程序、图形用户接口应用程序或另一程序。另外,处理器6可执行用于控制GPU 12的运算的GPU驱动程序22。用户可经由一或多个输入装置(未图示)(例如,键盘、鼠标、麦克风、触摸垫或经由用户输入接口4耦合到计算装置2的另一输入装置)将输入提供到计算装置2。
在处理器6上执行的软件应用程序可包含一或多个图形渲染指令,其指令处理器6来致使将图形数据渲染到显示器8。在一些实例中,所述软件指令可符合图形应用程序编程接口(API),例如开放式图形库API、开放式图形库嵌入系统(OpenGL ES)API、Direct3DAPI、X3D API、RenderMan API、WebGL API、开放式计算语言(OpenCLT M)、RenderScript或任何其它异构计算API,或任何其它公用或专有标准图形或计算API。所述软件指令还可为针对无渲染算法(例如计算摄影、卷积神经网络、视频处理、科学应用程序等)的指令。为了处理图形渲染指令,处理器6可向GPU 12发出一或多个图形渲染命令发(例如,通过GPU驱动程序22),以致使GPU 12执行图形数据的渲染中的一些或全部。在一些实例中,待渲染的图形数据可包含例如点、线、三角形、四边形、三角形带等图形图元的列表。
GPU 12可经配置以执行图形运算,从而将一或多个图形图元渲染到显示器8。因此,当在处理器6上执行的软件应用中的一者需要图形处理时,处理器6可将图形命令和图形数据提供到GPU 12以用于渲染到显示器8。图形数据可包含(例如)绘制命令、状态信息、图元信息、纹理信息等。在一些情况下,GPU 12可内置有高度并行结构,其提供比处理器6高效的对复杂图形相关运算的处理。举例来说,GPU 12可包含经配置来以并行方式对多个顶点或像素进行运算的多个处理元件,例如着色器单元。在一些情况下,GPU 12的高度并行性质允许GPU 12比使用处理器6直接将场景绘制到显示器8更快速地将图形图像(例如,GUI和二维(2D)和/或三维(3D)图形场景)绘制到显示器8上。
在一些情况下,可将GPU 12集成到计算装置2的母板中。在其它情况下,GPU 12可存在于图形卡上,所述图形卡安装在计算装置2的母板中的端口中,或可以其它方式并入在经配置以与计算装置2互操作的外围装置内。GPU 12可包含一或多个处理器,例如一或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或其它等效的集成或离散逻辑电路。GPU 12还可包含一或多个处理器核心,使得GPU 12可被称作多核处理器。
图形存储器40可为GPU 12的一部分。因此,GPU 12可在不使用总线的情况下从图形存储器40读取数据且将数据写入到图形存储器40。换句话说,GPU 12可使用本地存储装置而不是芯片外存储器在本地处理数据。此类图形存储器40可被称作芯片上存储器。这允许GPU 12通过消除GPU 12经由总线读取和写入数据的需要来以更高效的方式操作,其中经由总线操作可经历繁重的总线业务。然而,在一些情况下,GPU 12可不包含单独的存储器,而是经由总线利用系统存储器10。图形存储器40可包含一或多个易失性或非易失性存储器或存储装置,例如,随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
在一些实例中,GPU 12可将完全形成的图像存储在系统存储器10中。显示处理器14可从系统存储器10检索图像,且输出致使显示器8的像素照亮以显示所述图像的值。显示器8可为计算装置2的显示器,其显示由GPU 12产生的图像内容。显示器8可为液晶显示器(LCD)、有机发光二极管显示器(OLED)、阴极射线管(CRT)显示器、等离子显示器或另一类型的显示装置。
图2为进一步详细说明图1中处理器6、GPU 12和系统存储器10的实例实施方案的框图。如图2所示,处理器6可执行至少一个软件应用程序18、图形API 20和GPU驱动程序22,其中的每一者可为一或多个软件应用程序或服务。在一些实例中,图形API 20和GPU驱动程序22可实施为CPU 6的硬件单元。
可供处理器6和GPU 12使用的存储器可包含系统存储器10和输出缓冲器16。输出缓冲器16可为系统存储器10的部分或可与系统存储器10分离。输出缓冲器16可存储经渲染图像数据,例如像素数据,以及任何其它数据。输出缓冲器16还可被称为帧缓冲器或显存。
图形存储器40可包含片上存储装置或存储器,其物理上集成到GPU12的集成电路芯片中。如果图形存储器40是在芯片上,那么与经由系统总线从系统存储器10读取值或将值写入到系统存储器10相比,GPU12能够更加快速地从图形存储器40读取值或将值写入到图形存储器40。
输出缓冲器16存储GPU 12的目的地像素。每个目的地像素可与唯一屏幕像素位置相关联。在一些实例中,输出缓冲器16可存储每个目的地像素的色彩分量和目的地α值。举例来说,输出缓冲器16可存储每个像素的红色、绿色、蓝色、α(RGBA)分量,其中“RGB”分量对应于色彩值,并且“A”分量对应于目的地α值(例如,用于图像合成的不透明度值)。尽管将输出缓冲器16和系统存储器10说明为单独的存储器单元,但在其它实例中,输出缓冲器16可以是系统存储器10的一部分。此外,输出缓冲器16还可能够存储除像素之外的任何合适的数据。
软件应用程序18可为利用GPU 12的功能性的任何应用程序。举例来说,软件应用程序18可为GUI应用程序、操作系统、便携式制图应用程序、用于工程或艺术应用的计算机辅助设计程序、视频游戏应用程序或使用2D或3D图形的另一类型的软件应用程序。
软件应用程序18可包含指令GPU 12渲染图形用户接口(GUI)和/或图形场景的一或多个绘制指令。举例来说,绘制指令可包含界定将由GPU 12渲染的一组一或多个图形图元的指令。在一些实例中,绘制指令可共同地界定用于GUI中的多个开窗表面的全部或部分。在额外实例中,所述绘制指令可共同地定义图形场景的全部或部分,所述图形场景包含在由应用程序定义的模型空间或世界空间内的一或多个图形对象。
软件应用程序18可经由图形API 20调用GPU驱动程序22,以向GPU 12发出一或多个命令,以用于将一或多个图形图元渲染到可显示的图形图像中。举例来说,软件应用程序18可调用GPU驱动程序22,以向GPU 12提供图元定义。在一些情况下,图元定义可以例如三角形、矩形、三角形扇、三角形带等的绘制图元的列表的形式被提供到GPU 12。图元定义可包含指定与待呈现的图元相关联的一或多个顶点的顶点规格。所述顶点规格可包含每个顶点的位置坐标,且在一些情况下包含与顶点相关联的其它属性,例如色彩属性、法向量和纹理坐标。图元定义还可包含图元类型信息(例如,三角形、矩形、三角形扇、三角形带等)、缩放信息、旋转信息及类似者。
基于由软件应用程序18向GPU驱动程序22发出的指令,GPU驱动程序22可调配指定供GPU 12执行的一或多个运算以便渲染图元的一或多个命令。以光线追踪渲染为例,当GPU12接收到来自CPU 6的命令时,GPU 12通过射线生成单元24发射出一次射线,一次射线进入射线-物体相交计算单元26获得直接光照的渲染位置和该位置渲染所需要的信息,然后渲染位置和渲染信息进入渲染计算单元28完成直接光照的渲染,接下来,渲染计算单元28会决定是否继续请求射线生成单元24从刚才的渲染点发射出新的二次射线,如果发射出二次射线,则二次射线会进入射线-物体相交计算单元26获得新的间接光照的渲染位置和该位置渲染所需要的信息,接下来渲染计算单元28同样会根据这些渲染信息计算出间接光照的效果,整个渲染计算形成循环,当所有的射线都渲染完毕,最终直接光照和间接光照的计算结果将被叠加写入输出缓存器16中。
对于上述光线追踪的渲染方案来说,射线-物体相交计算单元26通常会针对射线相交进行加速。在一些示例中,射线-物体相交计算单元26利用规则栅格或被称为均匀栅格(uniform grid)对光线追踪中的射线相交进行加速是一种经典的方法,其主要方案原理为:通过递推的方式,从射线所达的当前体元voxel来确定下一次要行进到的相邻体元的位置。以二维栅格为例,其具体算法主要思路可以通过如下伪代码表示,可以理解地,三维情形下可以按照如下伪代码类推以获得。
在上述伪代码中,Int X,Y被初始化为起点体元(voxel),在算法的执行过程中表示为当前正在处于的体元;Int stepX,stepY会被初始化为1或者-1,其值取决于射线行进方向将导致X,Y的值是增加还是减少决定的;Float tMaxX,tMaxY则是用来递归叠加的判断比较量;Float tDeltaX,tDeltaY分别表示射线穿过栅格的相邻两条垂直线和相邻两条水平线的时候直线的参量t的增加量。在上述二维情况下的伪代码基础上,对于三维的情形只需要增加变量Z、stepZ、tMaxZ and tDeltaZ这几个变量就可以了,同时判断过程改为寻找tMaxX,tMaxY,tMaxZ中的最小值来决定移动方向,而在二维的情形下是寻找tMaxX,tMaxY中的最小值来决定移动方向。
上述利用规则栅格进行相交加速的方法有一个缺陷,即当场景中的物体分布不太均匀时,在射线穿越到真正有物体的体元voxel之前,会浪费大量的计算量和时间在穿越空的体元(voxel)上,从而效率低下。
在针对射线相交进行加速的另一些示例中,射线-物体相交计算单元26也会采用另外两种类似规则栅格的方案,即八叉树(octree)方案和层级栅格(hierarchy grid)方案,这两种方案都由三个过程组成:水平遍历(Horizontal Traversal)、向下垂直遍历(Descending the Tree或Downward Traversal)以及向上垂直遍历(Ascending the Tree或Upward Traversal)
需要说明的是,在上述三个过程中,水平遍历类似于规则栅格的过程,但比经典的规则栅格方案要快;向上垂直遍历的计算量也较小,但是向下垂直遍历由于包含除法而导致计算量较大,且向下垂直遍历结束之后的初始化过程由于包含除法和大量变量重新初始化计算量也导致计算量较大,但经典的规则栅格(uniform grid)的方案是不需要耗费时间的向下垂直遍历的过程。并且由于经典的规则栅格方案是一种全程基于增量的算法,因此也不需要频繁的变量初始化过程,所以目前八叉树(octree)方案和层级栅格(hierarchygrid)方案还无法完全替代经典的规则栅格(uniform grid)的方案。
在针对经典的规则栅格(uniform grid)方案进行实施的过程中,可以发现其效率低下的一个重要原因是一次性只能穿越一个体元(voxel)。基于此,本发明实施例期望能够经典的规则栅格(uniform grid)相交加速方案进行改进,通过一次性跨越多个空的体元以实现更加快速针对规则栅格进行相交加速。参见图3,其示出了本发明实施例提供的一种规则栅格的相交加速方法流程,该方法可以包括:
S301:判定当前光线的到达体元为空体元的情况下,根据设定的空体元分布状态查询所述当前光线的到达体元位置周围的空体元分布信息;
S302:基于所述当前光线的到达体元周围的空体元分布信息将光线跳过所述当前光线的到达体元周围的空体元,获得新的到达体元位置;
S303:根据所述新的到达体元位置判定所述新的到达体元是否为空体元。
需要说明的是,在本发明实施例中,技术用语“空体元”表示该体元内不存在物体或图元;相应地,“非空体元”表示该体元内包含有物体或者图元。后续相关的技术用语均符合上述表示。
通过图3所示的技术方案,当判定当前光线的到达体元为空体元之后,会将光线跳过当前光线的到达体元周围的空体元,从而能够一次性地跨越多个空体元(Voxel),大大加快了规则栅格方案中光线通过空体元的速度,解决了经典规则栅格相交加速方案在物体分布不均匀时频繁跨越单个空的体元从而造成光线前进速度慢的问题。
针对图3所示的技术方案,在一些示例中,所述方法还包括:构建一用于场景信息搜索的树形数据结构以表征所述场景内的体元分布状态;其中,所述树形数据结构的叶子结点对应于规则栅格中的每一个体元(voxel);所述树形数据结构的根节点用于表征整个场景;所述树形数据结构中非根节点且非叶子节点的中间节点被栅格位置相邻的子节点所指向。
对于上述示例,所述树形数据结构中的叶子节点均包含所述叶子结点对应的体元位置信息、所述叶子结点对应的体元中是否存在图元的标记以及所述叶子结点在所述树形数据结构中所指向的上一级节点的位置信息。举例来说,由于树形数据结构的叶子节点(leaf node)均对应于规则栅格中的每一个体元voxel,因此,在本发明实施例中,叶子节点中可以保存有对应体元的位置标号信息Voxel_Position;还可以保存有对应体元中是否有图元的状态Node_State,比如当该体元中有图元存在是就标记为1,当是空体元时则标记为0;同时,叶子节点中还可以保存有指向上一级节点(node)的位置Father_Node_Position。因此,在本例子中,每个叶子节点的信息均包括:Voxel_Position、Node_State和Father_Node_Position。
对于上述示例,以二维情形为例,所述树形数据结构中的非根节点且非叶子节点的中间节点都被体元位置相邻的M1×M2个孩子节点(child node)所指向,例如M1×M2个叶子节点(0级节点)指向1个父节点(1级节点)。中间节点中所存储的信息可以包括:该中间节点的父节点的位置Father_Node_Position;还可以包括标记该中间节点是否为空的状态标识Node_State,举例来说,Node_State可以通过递推来定义的,即:当且仅当指向一个中间节点的所有M1×M2个孩子节点的Node_State均为空时,该中间节点的Node_State为空;此外,中间节点还需要存储该节点最左下侧的叶子节点位置LeftDown_LeafNode。因此,在本例子中,每个中间节点均包括:Node_State、Father_Node_Position和LeftDown_LeafNode。
基于以上示例所述的树形数据结构,参见图4,其示出了一种树形数据结构的部分节点示例,从图4中可以看出,N0为叶子结点,N1为N0的父节点,N2为N1的父节点,设定整个树形数据结构共有4层节点,则设定N3为根节点,用于代表整个场景的所有体元,而N1以及N2均为上述示例中所述的中间节点,以图4所示的节点为,其中,N0对应于(2×2)0=1个体元;N1对应于(2×2)1=4个相邻的体元,也就是说,N1被4个相邻体元所对应的类似N0的叶子节点所指向;N2对应于(2×2)2=16个体元,也就是说,N1被包括有N1的相邻4个类似N1的孩子节点所指向。根节点是最顶层的节点,如果整个场景只有四层节点,则N3就是根节点,一个场景只有一个根节点,以代表整个场景的所有体元,除根节点外其余的非叶子节点在本发明实施例中均被称为“中间节点”。
针对以上示例,优选地,所述判定当前光线的到达体元为空体元的情况下,根据设定的空体元分布状态查询所述当前光线的到达体元位置周围的空体元分布信息,可以包括:
根据所述树形数据结构中的叶子结点判定所述当前光线到达体元是否为空;
相应于所述当前光线到达体元为空,由所述当前光线到达体元对应的叶子结点于所述树形数据结构向上获取所述当前光线到达体元对应的叶子结点的一级父节点;
根据所述树形数据结构中的中间节点判定所述一级父节点是否为空;相应于所述一级父节点为空,则由所述一级父节点于所述树形数据结构向上获取所述当前光线到达体元对应的叶子结点的二级父节点,直至获取到的K级父节点满足K级父节点为空且K+1级父节点不为空,则所述当前光线的到达体元位置周围的空体元包括指向所述K级父节点的所有体元。
具体来说,基于上述树形数据结构,若当前光线(Ray)到达一个空的体元(voxel)的时候,也就是到达了一个具有Node_State为空的叶子节点N0的时候,即:N0->Node_State==0;利用上述树形数据结构,从叶子节点N0出发,向上通过N0->Father_Node_Position获得N0的父节点N1,也就是一级父节点,然后判断下述条件是否成立:
N1->Node_State==0
如果该条件成立,则进一步通过N1->Father_Node_Position找到二级父节点N2,然后判断N2->Node_State==0是否成立。
依次类推,当发现N(K)->Node_State==0且N(K+1)->Node_State!=0的时候,说明K级父节点N(K)对应的子树所包括的所有叶子节点都没有包含图元,即都为空的体元(Voxel),此时当前光线的到达体元N0位置周围的空体元包括K级父节点N(K)对应的子树所包括的所有叶子节点对应的体元。
通过上述优选示例,本发明实施例所描述的树形数据结构,无需传统的光线追踪中所用的八叉树(Octree)算法或层级栅格(Hierarchy grid)算法中非常耗费计算量的“向下搜索”(downward tranverse或者说descending the tree)树形结构的过程。只需要向上搜索的过程。且本发明实施例所描述的树形数据结构中每一个节点(Node)存储的信息非常简单,例如不需要存储其孩子节点(child node)的信息,也不需要存储节点的初始化信息。因此提高了搜索效率和速度,降低了数据结构的存储数据量。
此时,按照S102所描述的基于所述当前光线的到达体元周围的空体元分布信息将光线跳过所述当前光线的到达体元周围的空体元,获得新的到达体元位置,在具体实施时就可以把光线当前位置从N0->Voxel_Position一次性移动多个Voxel,一直移动到N(K)对应的(M1×M2)k个voxel的组成矩形区域之外,如图5所示,箭头线所示的射线一次性从左下侧斜线填充的实线框所示的空体元前进到右上侧交叉线填充的虚线框所示的体元,所有实线框的范围均为空体元。详细来说,S102所描述的基于所述当前光线的到达体元周围的空体元分布信息将光线跳过所述当前光线的到达体元周围的空体元,获得新的到达体元位置,可以包括:
根据当前光线的到达体元的位置以及K级父节点的最左下侧的叶子节点位置,通过设定的加速空体元遍历算法确定跳过K级父节点对应的子树之后的新的到达体元位置以及经典的规则栅格相交加速方案中用于递归叠加的判断比较量。
举例来说,以前述具体示例,光线当前到达的体元的位置位于N0->Voxel_Position,这个位置可以被记为V0(i0,j0),而前述示例所得到的的K级父节点可以获得N(K)->LeftDown_LeafNode,其所对应的体元位置可以被记为V_LeftDown(LD_X,LD_Y);通过一个设定的加速空体元遍历(Accelerate Void Voxels Traversal)算法来确定移动出N(K)之后所位于voxel的X、Y值,以及经典的规则栅格相交加速方法中的tMaxX,tMaxY,接下来可以按照经典的规则栅格相交加速方法继续执行,以二维情形为例,按照本发明实施例技术方案优化之后规则栅格相交加速算法的伪代码可以表示为:
可以理解地,对于针对图3所述的技术方案及示例,可以通过引入一个树形场景信息搜索数据结构来达到不使用向下垂直遍历而能够加速传统的规则栅格相交计算。其原理是通过向上垂直遍历(Ascending the Tree或Upward Traversal)树形场景信息搜索数据结构就可以辅助光线一次性跨过多个栅格,从而加速光线-物体相交检测计算。
基于前述技术方案相同的技术构思,参见图6,其示出了本发明实施例提供的一种规则栅格的相交加速装置60,该装置能够应用于图1或图2中所示的GPU 12内的射线-物体相交计算单元26,所述装置60可以包括:判定部分601、查询部分602、计算部分603;其中,
所述判定部分601,经配置为判定当前光线的到达体元是否为空体元;以及当所述当前光线的到达体元为空体元时,将所述当前光线的到达体元位置传输至所述查询部分602;
所述查询部分602,经配置为:根据设定的空体元分布状态查询所述当前光线的到达体元位置周围的空体元分布信息;以及,将所述当前光线的到达体元位置周围的空体元分布信息传输至所属计算部分603;
所述计算部分603,经配置为基于所述当前光线的到达体元周围的空体元分布信息将光线跳过所述当前光线的到达体元周围的空体元,获得新的到达体元位置;以及将所述新的到达体元位置传输至所述判定部分601进行判定。
在一些示例中,所述场景内的体元分布状态通过一用于场景信息搜索的树形数据结构进行表征;其中,
所述树形数据结构的叶子结点对应于规则栅格中的每一个体元,且所述树形数据结构中的叶子节点均包含所述叶子结点对应的体元位置信息、所述叶子结点对应的体元中是否存在图元的标记以及所述叶子结点在所述树形数据结构中所指向的上一级节点的位置信息;
所述树形数据结构的根节点用于表征整个场景;
所述树形数据结构中非根节点且非叶子节点的中间节点被栅格位置相邻的子节点所指向,且中间节点中所存储的信息包括:所述中间节点的父节点的位置、标记所述中间节点是否为空的状态标识以及所述中间节点最左下侧的叶子节点位置;且当且仅当指向所述中间节点的所有孩子节点均为空时,所述中间节点的是否为空的状态标识为空。
在一些示例中,所述判定部分601,经配置为:
根据所述树形数据结构中的叶子结点判定所述当前光线到达体元是否为空;以及,相应于所述当前光线到达体元为空,由所述当前光线到达体元对应的叶子结点于所述树形数据结构向上获取所述当前光线到达体元对应的叶子结点的一级父节点;以及,
根据所述树形数据结构中的中间节点判定所述一级父节点是否为空;相应于所述一级父节点为空,则由所述一级父节点于所述树形数据结构向上获取所述当前光线到达体元对应的叶子结点的二级父节点,直至获取到的K级父节点满足K级父节点为空且K+1级父节点不为空;
所述查询部分602,经配置为所述当前光线的到达体元位置周围的空体元包括指向所述K级父节点的所有体元。
在一些示例中,所述计算部分603,经配置为:
根据当前光线的到达体元的位置以及K级父节点的最左下侧的叶子节点位置,通过设定的加速空体元遍历算法确定跳过K级父节点对应的子树之后的新的到达体元位置以及经典的规则栅格相交加速方案中用于递归叠加的判断比较量。
可以理解地,在本实施例中,“部分”可以是部分电路、部分处理器、部分程序或软件等等,当然也可以是单元,还可以是模块也可以是非模块化的。
另外,在本实施例中的各组成部分可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,那么可将功能作为一或多个指令或代码存储在计算机可读媒体上或经由计算机可读媒体传输。计算机可读媒体可包含计算机数据存储媒体或通信媒体,通信媒体包含促进将计算机程序从一处传递到另一处的任何媒体。数据存储媒体可为可由一或多个计算机或一或多个处理器存取以检索用于实施本发明中描述的技术的指令、代码和/或数据结构的任何可用媒体。举例来说且非限制,此类计算机可读媒体可包括U盘、移动硬盘、RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置,或可用于运载或存储呈指令或数据结构的形式的所要程序代码且可由计算机存取的任何其它媒体。并且,任何连接被恰当地称作计算机可读媒体。举例来说,如果使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)或例如红外线、无线电和微波等无线技术从网站、服务器或其它远程源传输软件,那么同轴电缆、光纤电缆、双绞线、DSL或例如红外线、无线电和微波等无线技术包含于媒体的定义中。如本文中所使用,磁盘和光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软性磁盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光以光学方式再现数据。以上各项的组合也应包含在计算机可读媒体的范围内。
代码可由一或多个处理器执行,所述一或多个处理器例如是一或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效的可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。因此,如本文中所使用的术语“处理器”和“处理单元”可指前述结构或适于实施本文中所描述的技术的任何其它结构中的任一者。另外,在一些方面中,本文中所描述的功能性可在经配置用于编码和解码的专用硬件和/或软件模块内提供,或者并入在组合式编解码器中。而且,所述技术可完全实施于一或多个电路或逻辑元件中。
本发明实施例的技术可实施于各种各样的装置或设备中,所述装置或设备包含无线手持机、集成电路(IC)或一组IC(即,芯片组)。本发明中描述各种组件、模块或单元是为了强调经配置以执行所公开的技术的装置的功能方面,但未必需要由不同硬件单元实现。实际上,如上文所描述,各种单元可结合合适的软件和/或固件组合在编码解码器硬件单元中,或者通过互操作硬件单元的集合来提供,所述硬件单元包含如上文所描述的一或多个处理器。
已描述了本发明的各种方面。这些和其它实施例在所附权利要求书的范围内。需要说明的是:本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (11)
1.一种规则栅格的相交加速方法,其特征在于,所述方法包括:
判定当前光线的到达体元为空体元的情况下,根据设定的空体元分布状态查询所述当前光线的到达体元位置周围的空体元分布信息;
基于所述当前光线的到达体元周围的空体元分布信息将光线跳过所述当前光线的到达体元周围的空体元,获得新的到达体元位置;
根据所述新的到达体元位置判定所述新的到达体元是否为空体元;
所述判定当前光线的到达体元为空体元的情况下,根据设定的空体元分布状态查询所述当前光线的到达体元位置周围的空体元分布信息,包括:
根据所述树形数据结构中的叶子结点判定所述当前光线到达体元是否为空,其中,所述树形数据结构用于场景信息搜索且用于表征所述场景内体元分布状态,所述树形数据结构的叶子结点对应于规则栅格中的每一个体元;
相应于所述当前光线到达体元为空,由所述当前光线到达体元对应的叶子结点于所述树形数据结构向上获取所述当前光线到达体元对应的叶子结点的一级父节点;
根据所述树形数据结构中的中间节点判定所述一级父节点是否为空;相应于所述一级父节点为空,则由所述一级父节点于所述树形数据结构向上获取所述当前光线到达体元对应的叶子结点的二级父节点,直至获取到的K级父节点满足K级父节点为空且K+1级父节点不为空,则所述当前光线的到达体元位置周围的空体元包括指向所述K级父节点的所有体元;其中,所述树形数据结构中非根节点且非叶子节点的中间节点被栅格位置相邻的子节点所指向。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:构建一用于场景信息搜索的树形数据结构以表征所述场景内的体元分布状态;其中,所述树形数据结构的叶子结点对应于规则栅格中的每一个体元;所述树形数据结构的根节点用于表征整个场景;所述树形数据结构中非根节点且非叶子节点的中间节点被栅格位置相邻的子节点所指向。
3.根据权利要求2所述的方法,其特征在于,所述树形数据结构中的叶子节点均包含所述叶子结点对应的体元位置信息、所述叶子结点对应的体元中是否存在图元的标记以及所述叶子结点在所述树形数据结构中所指向的上一级节点的位置信息。
4.根据权利要求2所述的方法,其特征在于,所述树形数据结构中的非根节点且非叶子节点的中间节点都被体元位置相邻的孩子节点所指向;所述中间节点中所存储的信息包括:所述中间节点的父节点的位置、标记所述中间节点是否为空的状态标识以及所述中间节点最左下侧的叶子节点位置;且当且仅当指向所述中间节点的所有孩子节点均为空时,所述中间节点的是否为空的状态标识为空。
5.根据权利要求4所述的方法,其特征在于,所述基于所述当前光线的到达体元周围的空体元分布信息将光线跳过所述当前光线的到达体元周围的空体元,获得新的到达体元位置,包括:
根据当前光线的到达体元的位置以及K级父节点的最左下侧的叶子节点位置,通过设定的加速空体元遍历算法确定跳过K级父节点对应的子树之后的新的到达体元位置以及经典的规则栅格相交加速方案中用于递归叠加的判断比较量。
6.一种规则栅格的相交加速装置,其特征在于,所述装置包括:判定部分、查询部分、计算部分;其中,
所述判定部分,经配置为判定当前光线的到达体元是否为空体元;以及当所述当前光线的到达体元为空体元时,将所述当前光线的到达体元位置传输至所述查询部分;
所述查询部分,经配置为:根据设定的空体元分布状态查询所述当前光线的到达体元位置周围的空体元分布信息;以及,将所述当前光线的到达体元位置周围的空体元分布信息传输至所属计算部分;
所述计算部分,经配置为基于所述当前光线的到达体元周围的空体元分布信息将光线跳过所述当前光线的到达体元周围的空体元,获得新的到达体元位置;以及将所述新的到达体元位置传输至所述判定部分进行判定;
所述判定部分,经配置为:
根据树形数据结构中的叶子结点判定所述当前光线到达体元是否为空,其中,所述树形数据结构用于场景信息搜索且用于表征所述场景内体元分布状态,所述树形数据结构的叶子结点对应于规则栅格中的每一个体元;以及,相应于所述当前光线到达体元为空,由所述当前光线到达体元对应的叶子结点于所述树形数据结构向上获取所述当前光线到达体元对应的叶子结点的一级父节点;以及,
根据所述树形数据结构中的中间节点判定所述一级父节点是否为空;相应于所述一级父节点为空,则由所述一级父节点于所述树形数据结构向上获取所述当前光线到达体元对应的叶子结点的二级父节点,直至获取到的K级父节点满足K级父节点为空且K+1级父节点不为空;其中,所述树形数据结构中非根节点且非叶子节点的中间节点被栅格位置相邻的子节点所指向;
所述查询部分,经配置为所述当前光线的到达体元位置周围的空体元包括指向所述K级父节点的所有体元。
7.根据权利要求6所述的装置,其特征在于,所述场景内的体元分布状态通过一用于场景信息搜索的树形数据结构进行表征;其中,
所述树形数据结构的叶子结点对应于规则栅格中的每一个体元,且所述树形数据结构中的叶子节点均包含所述叶子结点对应的体元位置信息、所述叶子结点对应的体元中是否存在图元的标记以及所述叶子结点在所述树形数据结构中所指向的上一级节点的位置信息;
所述树形数据结构的根节点用于表征整个场景;
所述树形数据结构中非根节点且非叶子节点的中间节点被栅格位置相邻的子节点所指向,且中间节点中所存储的信息包括:所述中间节点的父节点的位置、标记所述中间节点是否为空的状态标识以及所述中间节点最左下侧的叶子节点位置;且当且仅当指向所述中间节点的所有孩子节点均为空时,所述中间节点的是否为空的状态标识为空。
8.根据权利要求7所述的装置,其特征在于,所述判定部分,经配置为:
根据所述树形数据结构中的叶子结点判定所述当前光线到达体元是否为空;以及,相应于所述当前光线到达体元为空,由所述当前光线到达体元对应的叶子结点于所述树形数据结构向上获取所述当前光线到达体元对应的叶子结点的一级父节点;以及,
根据所述树形数据结构中的中间节点判定所述一级父节点是否为空;相应于所述一级父节点为空,则由所述一级父节点于所述树形数据结构向上获取所述当前光线到达体元对应的叶子结点的二级父节点,直至获取到的K级父节点满足K级父节点为空且K+1级父节点不为空;
所述查询部分,经配置为所述当前光线的到达体元位置周围的空体元包括指向所述K级父节点的所有体元。
9.根据权利要求8所述的装置,其特征在于,所述计算部分,经配置为:
根据当前光线的到达体元的位置以及K级父节点的最左下侧的叶子节点位置,通过设定的加速空体元遍历算法确定跳过K级父节点对应的子树之后的新的到达体元位置以及经典的规则栅格相交加速方案中用于递归叠加的判断比较量。
10.一种GPU,其特征在于,所述GPU至少包括射线-物体相交计算单元;所述射线-物体相交计算单元至少包括权利要求6至9任一项所述的规则栅格的相交加速装置。
11.一种计算机存储介质,所述计算机存储介质存储有规则栅格的相交加速程序,所述规则栅格的相交加速程序被至少一个处理器执行时实现权利要求1至5任一项所述的规则栅格的相交加速方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010048753.5A CN111243073B (zh) | 2020-01-16 | 2020-01-16 | 一种规则栅格的相交加速方法、装置及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010048753.5A CN111243073B (zh) | 2020-01-16 | 2020-01-16 | 一种规则栅格的相交加速方法、装置及计算机存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111243073A CN111243073A (zh) | 2020-06-05 |
CN111243073B true CN111243073B (zh) | 2024-02-09 |
Family
ID=70880887
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010048753.5A Active CN111243073B (zh) | 2020-01-16 | 2020-01-16 | 一种规则栅格的相交加速方法、装置及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111243073B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8253730B1 (en) * | 2008-08-29 | 2012-08-28 | Adobe Systems Incorporated | System and method for construction of data structures for ray tracing using bounding hierarchies |
CN103308942A (zh) * | 2012-03-12 | 2013-09-18 | 中国石油天然气股份有限公司 | 一种可视化地震数据的方法及系统 |
CN106776028A (zh) * | 2016-12-21 | 2017-05-31 | 东北大学 | 一种基于gpu的光线跟踪方法 |
-
2020
- 2020-01-16 CN CN202010048753.5A patent/CN111243073B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8253730B1 (en) * | 2008-08-29 | 2012-08-28 | Adobe Systems Incorporated | System and method for construction of data structures for ray tracing using bounding hierarchies |
CN103308942A (zh) * | 2012-03-12 | 2013-09-18 | 中国石油天然气股份有限公司 | 一种可视化地震数据的方法及系统 |
CN106776028A (zh) * | 2016-12-21 | 2017-05-31 | 东北大学 | 一种基于gpu的光线跟踪方法 |
Non-Patent Citations (1)
Title |
---|
陈滨 ; 虞鸿 ; 吴哲夫 ; .动态栅格划分的光线追踪场景绘制.哈尔滨工程大学学报.2013,(05),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111243073A (zh) | 2020-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101820621B1 (ko) | 광선 추적 어플리케이션들에서 트리 순회를 위한 시작 노드 결정 | |
JP6571884B2 (ja) | グラフィックス処理におけるシャドーレイのツリー横断のための開始ノード決定 | |
US10049426B2 (en) | Draw call visibility stream | |
US9984492B2 (en) | Efficient hierarchy traversal in ray tracing applications | |
JP6219552B1 (ja) | 内積ベースの固定関数論理を使用したレイ−ボックス交差テスト | |
CN105518742A (zh) | 用于图形处理的任意控制点处的容错抢占机制 | |
CN110930497B (zh) | 一种全局光照相交加速方法、装置及计算机存储介质 | |
CN108701367B (zh) | 单遍次包围体阶层光栅化 | |
KR102454893B1 (ko) | 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치의 동작 방법 | |
CN105210111A (zh) | 基于每仓可见性信息以及添加的线内操作的渲染命令的条件性执行 | |
US11282260B2 (en) | Bounded volume hierarchy (BVH) tree traversal using spatial division | |
CN104823220A (zh) | 用于图形处理的图形存储器加载掩模 | |
CN116051713B (zh) | 渲染方法、电子设备和计算机可读存储介质 | |
CN111161391B (zh) | 一种生成追踪路径的方法、装置及计算机存储介质 | |
CN111243073B (zh) | 一种规则栅格的相交加速方法、装置及计算机存储介质 | |
CN111127620B (zh) | 一种生成半球域采样模式的方法、装置及计算机存储介质 | |
CN117891538A (zh) | 界面渲染的方法及电子设备 |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: Room 301, Building D, Yeda Science and Technology Park, No. 300 Changjiang Road, Yantai Area, Yantai Free Trade Zone, Shandong Province, 265503 Applicant after: Xi'an Xintong Semiconductor Technology Co.,Ltd. Address before: Room 21101, 11 / F, unit 2, building 1, Wangdu, No. 3, zhangbayi Road, Zhangba Street office, hi tech Zone, Xi'an City, Shaanxi Province Applicant before: Xi'an Xintong Semiconductor Technology Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |