CN107408312A - 光线追踪应用中的有效层次结构遍历 - Google Patents
光线追踪应用中的有效层次结构遍历 Download PDFInfo
- Publication number
- CN107408312A CN107408312A CN201680017649.1A CN201680017649A CN107408312A CN 107408312 A CN107408312 A CN 107408312A CN 201680017649 A CN201680017649 A CN 201680017649A CN 107408312 A CN107408312 A CN 107408312A
- Authority
- CN
- China
- Prior art keywords
- node
- volume elements
- light
- enclosure body
- scene
- 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
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- 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/08—Volume rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/005—Tree description, e.g. octree, quadtree
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Image Generation (AREA)
Abstract
所揭示的方法和系统改进光线追踪的效率。在一个方面中,场景的数字表示中的光线追踪方法包含将所述场景分割成多个体元,使所述体元中的每一个与表示所述场景内的一或多个对象基元的包围体层次结构BVH的节点相关联,确定所述光线穿过的体元集合,确定与所述体元集合相关联的节点集合,确定所述节点集合的最深共同祖先节点,从所述最深共同祖先节点处开始遍历所述层次结构以确定所述光线与所述一或多个对象基元中的一个之间的交点;以及基于所述所确定的交点更新所述场景的数字图像。
Description
技术领域
所揭示的技术涉及图形处理,包含遍历层次结构以确定用于光线追踪的光线-对象相交。
背景技术
光线追踪是一种通过追踪光穿过三维场景的路径,模拟与由光源照亮的对象的互动以及找到光线-基元相交或光线-对象相交来产生图像的计算机图形技术。光线追踪可产生逼真的图像,包含阴影。为了加速光线追踪过程,场景几何结构可存储在将场景基元进行分组的加速度数据结构或层次结构中。使用中的加速度数据结构(层次结构)的实例包含包围体层次结构(BVH)树、KD树和栅格。光线追踪方法遍历这些层次结构以确定光线-对象相交。
发明内容
以下是本公开的样本方面的概述。为了方便起见,本公开的一或多个方面在本文中可以被简单地称为“一些方面”。
本文中所揭示的方法和设备或装置各自具有若干方面,所述方面中无单一者单独负责其所需属性。在不限制(例如)如由随附权利要求书所表示的本公开的范围的情况下,现将简要论述其较显着特征。在考虑此论述之后,且确切地说,在阅读名称为“具体实施方式”的部分之后,将理解所描述的特征如何提供遍历层次结构以用于光线追踪的优点。
一个创新为一种在场景的电子图像中追踪光线的方法。在各种实施例中,所述方法可包含将所述场景分割成多个体元。所述方法可进一步包含使所述体元中的每一个与表示所述场景内的一或多个对象基元的包围体层次结构(BVH)的节点相关联。所述方法可进一步包含确定光线穿过的体元集合。所述方法可进一步包含确定与所述体元集合相关联的节点集合。所述方法可进一步包含确定所述节点集合中的最深共同祖先节点。所述方法可进一步包含从所述最深共同祖先节点处开始遍历层次结构以确定所述光线与一或多个对象基元中的一个之间的交点。所述方法可进一步包含基于所述所确定的交点更新场景的数字图像。
对于一些实施方案,所述方法进一步包含将所述经更新的数字图像输出到输出装置。
对于一些实施方案,使每一体元与节点相关联包含针对每一体元确定最小的包围体集合,其涵盖还包含于由体元表示的空间中的所有基元。对于一些实施方案,使每一体元与节点相关联包含确定层次结构中与所述包围体集合相关联的节点。对于一些实施方案,使每一体元与节点相关联包含确定所述所确定的节点的第二最深共同祖先。对于一些实施方案,使每一体元与节点相关联包含使所述体元与所述第二最深共同祖先相关联。
对于一些实施方案,遍历层次结构包含从所述最深共同祖先开始执行所述层次结构的深度第一遍历。
对于一些实施方案,所述方法进一步包含在包围体层次结构的低于阈值的级别下从包围体中选择最小的包围体集合。
对于一些实施方案,所述方法进一步包含将每一体元和与其相关联的节点的标识存储于数据结构中。对于一些实施方案,所述方法进一步包含基于所述数据结构确定相对应的多个光线的多个最深共同祖先。
对于一些实施方案,所述光线为在所述场景中沿着从表面点朝向光源的路径的阴影光线,所述表面点在一或多个对象基元中的一个上。对于一些实施方案,所述表面点对应于第二光线的交点,所述阴影光线的路径与所述第二光线的起点无关。
另一创新为一种配置成在场景的电子图像中追踪光线的设备。所述设备可包含配置成存储场景的表示的存储器电路。所述设备可包含与存储器单元通信的处理器电路。所述处理器电路可配置成将场景分割成多个体元。所述处理器电路可配置成使所述体元中的每一个与表示场景内的一或多个对象基元的包围体层次结构(BVH)的节点相关联。所述处理器电路可配置成确定光线穿过的体元集合。所述处理器电路可配置成确定与所述体元集合相关联的节点集合。所述处理器电路可配置成确定所述节点集合的最深共同祖先节点。所述处理器电路可配置成从所述最深共同祖先节点处开始遍历层次结构以确定光线与一或多个对象基元中的一个之间的交点。所述处理器电路可配置成基于所述所确定的交点更新场景的数字图像。
对于一些实施方案,所述处理器电路进一步配置成将所述经更新的数字图像输出到输出装置。对于一些实施方案,所述处理器电路进一步配置成在包围体层次结构的低于阈值的级别下从包围体中选择最小的包围体集合。对于一些实施方案,所述处理器电路进一步配置成将每一体元和与其相关联的节点的标识存储于数据结构中。对于一些实施方案,所述处理器电路进一步配置成基于所述数据结构确定相对应的多个光线的多个最深共同祖先。
另一创新为一种配置成在场景的电子图像中追踪光线的设备。所述设备可包含用于将场景分割成多个体元的装置。所述设备可包含用于使所述体元中的每一个与表示所述场景内的一或多个对象基元的包围体层次结构(BVH)的节点相关联的装置。所述设备可包含用于确定光线穿过的体元集合的装置。所述设备可包含用于确定与所述体元集合相关联的节点集合的装置。所述设备可包含用于确定所述节点集合的最深共同祖先节点的装置。所述设备可包含用于从所述最深共同祖先节点处开始遍历层次结构以确定光线与一或多个对象基元中的一个之间的交点的装置。所述设备可包含用于基于所述所确定的交点更新场景的数字图像的装置。
对于一些实施方案,所述分割装置包含处理电路。对于一些实施方案,所述关联装置包含处理电路。对于一些实施方案,所述体元集合确定装置包含处理电路。对于一些实施方案,所述节点集合确定装置包含处理电路。对于一些实施方案,所述最深共同祖先确定装置包含处理电路。对于一些实施方案,所述层次结构确定装置包含处理电路。对于一些实施方案,所述遍历装置包含处理电路。对于一些实施方案,所述更新装置包含处理电路。
对于一些实施方案,所述设备包含用于将经更新的数字图像输出到输出装置的装置。
对于一些实施方案,关联装置包含用于针对每一体元确定最小的包围体集合的装置,所述最小的包围体集合涵盖还包含于由体元表示的空间中的所有基元。对于一些实施方案,所述关联装置包含用于确定层次结构中与所述包围体集合相关联的节点的装置。对于一些实施方案,所述关联装置包含用于确定所述所确定的节点的第二最深共同祖先的装置。对于一些实施方案,所述关联装置包含用于使所述体元与所述第二最深共同祖先相关联的装置。
对于一些实施方案,所述遍历装置包含用于从最深共同祖先开始执行所述层次结构的深度第一遍历的装置。
对于一些实施方案,所述设备包含用于在包围体层次结构的低于阈值的级别下从包围体中选择最小的包围体集合的装置。对于一些实施方案,所述设备包含用于将每一体元和与其相关联的节点的标识存储于数据结构中的装置。对于一些实施方案,所述设备包含用于基于所述数据结构确定相对应的多个光线的多个最深共同祖先的装置。
另一创新为一种存储用于追踪光线的指令的非暂时性计算机可读媒体,所述指令在经执行时在经执行时执行一种方法。所述方法可包含将场景分割成多个体元。所述方法可包含使所述体元中的每一个与表示所述场景内的一或多个对象基元的包围体层次结构(BVH)的节点相关联。所述方法可包含确定光线穿过的体元集合。所述方法可包含确定与所述体元集合相关联的节点集合。所述方法可包含确定所述节点集合的最深共同祖先节点。所述方法可包含从所述最深共同祖先节点处开始遍历层次结构以确定光线与一或多个对象基元中的一个之间的交点。所述方法可包含基于所述所确定的交点更新场景的数字图像。
在一些实施方案中,所述方法可包含将所述经更新的数字图像输出到输出装置。
附图说明
图1说明含有由三角形基元表示的头部和肩部的场景。
图2说明使用计算机图形呈现的茶壶。
图3说明图2中使用光线追踪的主要光线和阴影光线模型化的茶壶。
图4说明划分图2的场景的一部分的包围体,所述包围体包含表示所述场景中的表面的各部分的基元。
图5说明组织图4的包围体的包围体层次结构(BVH)。
图6A说明包围体层次结构(例如图5中的层次结构)的节点。
图6B说明分割场景(例如图2的场景)的体元。
图6C展示图6A的体元与图6B的节点之间的映射。
图7为体元化的茶壶场景。
图8说明由轴对准的包围盒和体元两者分割的茶壶场景。还展示光线与两个体元相交。
图9说明图8中的场景的层次。
图10为用于BVH体元化的实例算法方法。
图11为找到最低共同祖先的实例算法方法。
图12为说明可配置成实施本公开的一或多个方面的实例计算装置的框图。
图13为更详细地说明图12的CPU、GPU和系统存储器的实例实施方案的框图。
图14为说明用于确定光线-对象相交的实例方法的流程图。
图15说明阴影光线的体元化结果,包含茶壶阴影、头部反射、果盘环境光遮蔽(AO)、来自计算机游戏斯蓬扎(Sponza)环境光遮蔽的场景和球面反射。
图16展示由所揭示技术引起的光线追踪相交测试的减少。
具体实施方式
以下详细描述是针对本发明的某些特定实施例。然而,本发明可以众多不同方式实施。应当显而易见的是,本文中的方面可以多种形式体现,且本文中所揭示的任何特定结构、功能或这两者仅为代表性的。基于本文中的教示,所属领域的技术人员应了解,本文中所揭示的方面可独立于任何其它方面而实施,且可以不同方式组合这些方面中的两个或多于两个方面。举例来说,可以使用本文中所阐述的任何数目个方面来实施设备或实践方法。另外,可以使用其它结构、功能性或除了本文中所阐述的一或多个方面之外或不同于本文中所阐述的一或多个方面的结构和功能性来实施此设备或实践此方法。
光线追踪是一种计算机图形技术,其中通过场景基元集合来追踪光线(由其起点和方向定义)以识别光线-对象相交。光线追踪器使用加速度数据结构(层次结构)来表征场景中的对象的空间关系。一些实施方案使用包围体层次结构(BVH)树以及其中所含的基元集合,所述包围体层次结构(BVH)树可为具有处于层次结构顶部处的根节点、表示空间的有界区域的内部节点和表示空间的有界区域的叶节点的二叉树。在一些方面中,表面积启发式(SAH)可用于建立层次结构。加速度数据结构可以使用轴对准的包围盒(AABB)来界定区域。使用AABB来遍历BVH树从而界定区域并进行光线-对象相交测试的计算复杂度相对于树中的节点数目成对数。
使用光线追踪来呈现单一图像可能需要数百万个光线/对象相交测试。相交测试的数目的大量减少可显着减少呈现图像所花费的时间。举例来说,相交测试的数目减少40%可减少用以呈现图像的时间大致40%。使用本文中所揭示的方法、设备和系统在层次结构的非根节点处而非根节点处开始层次结构遍历过程可减少相交测试的数目达10%、30%、50%或更多,从而大体上减少呈现图像所花费的时间。
可经由更高效的树结构通过利用光线相干性或通过将节点组织成高速缓存友好布局来优化加速度数据结构遍历算法。这些方法可应用于BVH树、KD树,或其它栅格或树结构。现有实施方案中的遍历算法从所述树的根节点(或所述层次结构的层级)处开始,且遍历整个树(层次结构)以覆盖场景的整个空间体积。本文中所揭示的方法、设备和系统提供可实际上仅遍历树的一部分而非整个树的遍历算法。这些方法、设备和系统确定非根开始节点以开始遍历加速度数据结构。
图1说明含有由三角形基元表示的头部和肩部的场景。包含视频游戏、影片制作、虚拟现实、训练和增强现实的应用的计算机产生成像(CGI)使用光线追踪来呈现含有对象的场景的图像。可使用粗略估计对象表面的基元网格(例如三角形)在三维空间中表示所述对象。举例来说,可以通过具有对应于模具拐角的顶点的十二个三角形的网格来对具有六个扁平的正方形侧面的模具进行模型化。因为模具的侧面为平面且每一侧为正方形,所以需要相对较少的基元来对三维空间中的模具进行模型化。相比之下,图1中的头部和肩部100的表面为弯曲的且成角的,需要数百或数千个基元来粗略估计表示图像的曲线和角度。当在肩膀和前额附近可见个别三角形时,需要一组更密集的基元来表示眼部或耳部的曲线和凹痕。展示于图1中的每一基元可由形成每一基元的三角形的顶点的空间坐标表征。
图2说明使用计算机图形呈现的茶壶。图2的茶壶200包含把手210、壶嘴230、顶部240、顶部把手245和弯曲容器220。在计算机图形系统中表示茶壶200可能需要数百或数千个基元来粗略估计所述茶壶的相连表面,且因此实现对把手210、壶嘴230、顶240和弯曲容器220的呈现。
图3说明用以模型化图2的茶壶的主要光线和阴影光线。光线追踪方法使用光学原理从通常为场景的观察视角的起始点(例如从图3中的观测器350)投影主要光线。每一光线可与图像平面相交,且/或与对象(或对象基元)相交。主要光线起源于观测器(相机)且当其与场景内的对象相交时终止。举例来说,在图3中,主要光线371源自观测器350并与弯曲容器220的下部相交,光线372与壶嘴230相交,主要光线373也源自观测器350并与顶部把手245左侧的顶部240相交,且光线374源自观测器350并与把手210的顶部相交。
在主要光线与对象相交之后,计算机图形技术可将阴影光线从所述交点投影到场景的光源。在一些情况下,光源可展示于场景的数字图像内,或光源可为未由场景的数字图像明确展示或表示的点。在图3中,阴影光线381、382、383和384分别从光线371、372、373和374的目的地处开始,且每一阴影光线经导向到光源360。如果从朝向光源的点追踪的阴影光线不与光线起点和光源之间的任何对象相交,则所述点不处于阴影中。如果存在至少一个相交,则所述点处于阴影中。阴影光线381与弯曲容器220相交,且因此所述阴影光线的起点处于阴影中,是因为其并非由光源360直接照亮。类似地,阴影光线383与顶部把手245相交,且因此所述阴影光线的起点并非由光源360直接照亮。相比之下,阴影光线382和384由光源360直接照亮。
光线追踪方法可追踪数百个、数千个或数百万个光线以产生单一图像。此类光线追踪方法可应用发射、反射、折射或荧光的光学特性以及对象的表面特征的方面(例如半透明性和透明性)来追踪每一光线。可测试每一光线(无论是主要光线、阴影光线、反射光线、折射光线还是其它类型的光线)与场景中的每一基元的相交来确定光线是否与基元相交。光线追踪方法可对光线吸收、反射、折射和荧光进行模型化,以及对对象表面是透明的还是半透明进行模型化。当光线入射到表面时,此入射光线可从所述表面反射作为反射光线(经反射光线),且/或折射到所述表面中作为折射光线(经折射光线)。例如,当由紫外辐射激发时,发荧光的对象发射荧光光线。因为产生单一图像可能需要数千个或数百万个光线-对象(光线-基元)相交测试,所以光线追踪可为计算密集且缓慢的。例如针对光线追踪和场景呈现而优化的图形处理器单元(GPU)等专用硬件可减少追踪场景的光线和呈现图像所花费的时间。
图4说明划分场景的一部分的包围体,所述包围体包含表示场景中的表面的各部分的基元。在一些方面中,所说明的包围体可划分图1或2A到B中所展示的场景。图4展示包围体56A到56E(包围体56)。包围体56可为轴对准的包围盒(AABB),其可为具有最小化的面积或体积的包围盒,所围封基元的全部点可处于所述面积或体积内。实际场景可含有数百个、数千个或更多基元,但为了清楚起见,图4中说明五个三角形基元52A到52E。包围盒可为轴对准的,以使得所述盒的边缘可平行于坐标轴(例如,x、y和z轴)。在一些方面中,包围盒可具有矩形平行六面体的形状。
举例来说,包围体56A可为界定场景100或200的所有基元52的包围盒。包围体56B和56C可为包围体56A的子集,因为包围体56B和56C界定由包围体56A界定的场景50的部分的子集。包围体56B可界定基元52A和52B,且包围体56C可界定基元52C、52D和52E。包围体56D和56E可为包围体56C的子集,且可界定由包围体56C界定的场景50的部分的子集。包围体56D可界定基元52C和52D,并且包围体56E可界定基元52E。
在图4中所展示的实例中,基元52被分割成五个包围体56。可使用多于或少于五个包围体56来分割场景。举例来说,可产生额外的包围体作为包围体56B的子集,以分别单独地界定基元52A和52B。在一些实例中,CPU 6还可以配置成将基元52分割成包围体56。
图5说明具有与图4中所展示的包围体56和基元52相关联的节点的实例层次数据结构60。可遍历加速度层次数据结构60以确定光线-基元相交。举例来说,包围体56和基元52可与表示场景100或200中的一个的包围体层次结构(BVH)树60的节点相关联。BVH树60可包含与场景50中的包围体56和基元52相关联的节点62A到62E(“节点62”)。更具体地说,根节点62A、内部节点62C以及叶节点62B、62D和62E可各自与包围体56的包围体相关联。BVH树60的除根节点62A以外的节点可被称为BVH树60的非根节点。举例来说,内部节点62C以及叶节点62B、62D和62E可被称为BVH树60的非根节点。叶节点62B、62D和62E可各自与基元52的至少一个基元连接。举例来说,叶节点62B可与基元52A和52B连接,叶节点62D可与基元52C和52D连接,且叶节点62E可与基元52E连接。BVH树60可被视为非平衡二叉树,因为层次数据结构60的每一非叶节点具有最多两个子节点,还因为叶节点62B、62D和62E可能具有不相等的深度。
因为包围体56A界定场景50的所有基元52,所以GPU 12可使根节点62A与包围体56A相关联。GPU 12可分别使为根节点62A的子节点的节点62B和62C与包围体56B和56C相关联,因为包围体56B和56C各自为包围体56A的子集。GPU 12可连接基元52A和52B与节点62B,因为与节点62B相关联的包围体56B界定基元52A和52B,还因为不存在是包围体56B的子集的额外包围体。
可使包围体56D和56E与是节点62C的子节点的节点62D和62E相关联,因为包围体56D和56E各自是与节点62C相关联的包围体56C的子集。可将基元52C和52D与节点62D连接,因为与节点62D相关联的包围体56D界定基元52C和52D,还因为不存在是包围体56D的子集的额外包围体。可将基元52E与节点62E连接,因为与节点62E相关联的包围体56E界定基元52E,还因为不存在是包围体56E的子集的额外包围体。
可通过执行针对与BVH树60的节点62相关联的包围体56的光线-盒相交测试来遍历BVH树60以确定基元52中与光线54相交的基元。可通过执行针对与根节点62A相关联的包围体56A的光线-盒相交测试来开始BVH树60的遍历。如果光线54与有界体积56A相交,则可通过执行针对与节点62B相关联的包围体56B的光线-盒相交测试来使用节点62B继续遍历。如果光线54不与有界体积56B相交,则可上至节点62A且下至节点62C递归地继续遍历,且可执行针对与节点62C相关联的包围体56C的光线-盒相交测试。如果确定光线54与有界体积56C相交,则可使用节点62D继续遍历,且可执行针对与节点62D相关联的包围体56D的光线-盒相交测试。如果光线54与有界体积56D相交,则可执行针对连接到节点62D的基元的光线-基元相交测试。因此,可执行针对基元52C和针对基元52D的光线-基元相交测试。可根据针对基元52D的光线-基元相交测试确定光线54的确与基元52D相交。在确定光线54的确与基元52D相交之后,可上至节点62C且下至节点62E递归地继续遍历,且可执行针对与节点62E相关联的包围体56E的光线-盒相交测试。可基于光线-盒相交测试确定光线54并不与包围体56E相交,由此结束用于光线54的BVH树60的遍历。
如果可以从非根节点(例如内部节点62C或叶节点62B、62D和62E)开始遍历BVH树60,则与从根节点62A开始遍历BVH树60的情况相比,为了找到与光线相交的所有基元而执行的光线相交测试的数目可显着较少。因此,可改进确定与光线相交的一组基元的效率。通过确定与BVH树60的非根节点相关联的包围体与光线54相交,GPU 12可从BVH树60的非根节点开始遍历BVH树60。
图6A展示图2和3的茶壶场景的包围体层次结构(BVH)树610。BVH树中的每一节点与占据三维空间中的体积的场景的一部分相关联。BVH树(层次结构)610包含根节点N1、内部节点N2到N7和叶节点N8到N15。节点N1为节点N2和N3的父节点。节点N2为节点N4和N5的父节点。节点N3为节点N6和N7的父节点。节点N4为节点N8和N9的父节点。节点N5为节点N10和N11的父节点。节点N6为节点N12和N13的父节点。节点N7为节点N14和N15的父节点。当BVH树610充当实例时,其它包围体层次结构可具有数百个、数千个或更多的节点。每一节点可由标号、数字参考和/或颜色唯一地识别。父级和子级的其它术语分别为祖先和后代。
作为BVH树610可如何表示图2和3的茶壶场景的一实例,根节点N1可表示整个茶壶。举例来说,N1可与涵盖整个茶壶的(可能最小的)包围体相关联。节点N2可表示具有顶部把手245的茶壶顶部240,而节点N3可表示把手210、容器220和壶嘴230。节点N2的子级(节点N4和N5)可分别表示顶部把手245和茶壶顶部240。节点N3的子级为节点N6和N7。节点N6可表示壶嘴230,而节点N7可表示把手210和容器220。节点N8和N9可分别表示把手245的上部和下部。节点N10和N11可分别对应于茶壶顶部240的左部和右部。节点N12和N13可对应于壶嘴230的具有开口的上三分之一和下三分之二。节点N14可对应于把手210,而节点N15可对应于容器220。后一代节点将进一步细分场景。
根可被认为处于层次结构树的顶部,其中所述根的每一子级在层次结构中“低于”其父级(根)。针对根的子节点的子级重复这种关系。因此,子级在层次结构中处于比其父节点更深的一个级别。根节点为层次结构中所有节点的祖先(除其自身外)。两个或多于两个节点的最深共同祖先为具有最深深度的节点,其仍是所述两个或多于两个节点中的每一个的祖先。
节点的子级各自与由父级表示的场景的一部分相关联。举例来说,如果根与茶壶相关联,则所述根的第一子级可与茶壶的壶嘴以及在茶壶的顶部前面的弯曲容器的部分相关联。第二子级可与茶壶的剩余部分(包含顶部、弯曲容器的后部和茶壶的把手)相关联。后代可进一步划分茶壶,直到达到可占据茶壶表面的网格的基元的叶节点为止。
因为不规则形状的体积可能需要更复杂的运算来(例如)确定光线是否穿过体积,所以可使用界定规则形状的包围体来简化运算。举例来说,矩形平行六面体可界定茶壶顶部或茶壶的壶嘴。在一些实施例中,轴对准的平行六面体可与每一节点相关联。因为层次结构中的每一子级为其父级的细分,所以后代节点往往会与场景的较小部分相关联,并且包围体的大小往往会在层次结构的每一较低级别下减小。
BVH树610的每一节点N1到N15或图5中的BVH树60的节点62A到62E与由BVH树610或BVH树60所表示的场景的三维空间中的体积相关联。举例来说,与父节点N1相关联的体积涵盖由与父节点的任何子级N2和N3相关联的体积表示的空间。因此,父级和子级关联体积可重叠。根节点的体积与所有其它体积重叠。表面积层次结构算法(SAH)或其它方法可用于产生BVH树610,且使体积与每一节点相关联。每一体积可为用以加速计算的形状类似于矩形平行六面体的轴对准的包围盒。
在一些方面中,可从根节点N1和涵盖所表示的整个场景的相关联体积开始递归地建立BVH树610。随后可将体积划分成由第一体积涵盖的两个或多于两个额外体积,且根节点的子节点与这些新的体积相关联。随后可将这些新的额外体积中的每一个进一步划分以产生额外的新体积,其中添加额外的新节点作为根的子级的子节点。可继续这个过程直到达到终止条件为止。在一些方面中,所述终止条件可涉及由任何一个体积表示的最小空间。在一些方面中,表示场景的层次结构可具有许多级别,包含例如数十个、数百个或数千个级别。
图6B展示一组体元或体积元素620,其可分别细分场景,例如图1的场景100或图2的场景200。图6B的实例体元620包含八个体元V111、V121、V211、V221、V112、V122、V212和V222,其中七(7)个在图6B中直接可见。
正如可将光栅化图像平面划分成像素(类似于图表纸上的盒的正方形区域)般,可通过将场景细分成体积元素(体元)来体元化所述场景。体元可为在三个维度中邻接的立方体积元素,正如图表纸上在两个维度中邻接的盒;体元可为具有轴对准的侧面的立方体。相邻体元可邻接而不重叠。可针对空间的三个维度中的每一个将空间划分成例如163(16×16×16)个、323个、643个、1283个或某一其它数目个体元。三个维度中的每一个的体元的数目不必相等。使用更多体元有可能更精细地划分空间,但其代价是计算负荷增加。
由体元定义的体积可能含有一或多个场景对象表面基元。每一基元还可以在与BVH树610中的至少一个节点相关联的一或多个包围体内,所述至少一个节点包含最深节点(在一些情况下为叶节点),其包含基元。
图6C展示图6B的体元(在左侧所识别)与图6A的节点(在右侧所识别)的实例关联性。体元与节点之间的关联性部分地基于特定体元内的场景对象表面基元是否在与节点相关联的包围体内。确切地说,图6B中所展示的体元中的至少一些可涵盖一或多个基元,其表示场景中的对象。BVH树610内的一或多个节点可表示还涵盖由特定体元涵盖的基元的包围体。一或多个节点的最深共同祖先可与图6C的数据结构中的特定体元相关联。
换句话说,如果体元内的所有对象表面基元在单一叶节点的包围体内,则那个叶节点为与图6C中的体元相关联的最深共同祖先。如果体元内的对象表面基元并不在单一叶节点的包围体内,则包含基元的最深节点的最深共同祖先是与图6C中的体元相关联的节点。
为了展现图6C中的体元与节点之间的关联性,提供以下实例。开始时,体元V111包含在与节点N8和N10相关联的包围体内的场景对象表面基元。节点N8和N10的最近共同祖先为N2。因此,用于进行针对体元V111的光线相交测试的起始节点为节点N2。因此,可使用标号或颜色来标记或着色对应于内部节点N2的体元V111,如图6C中所示。
此外,在图6A到C的实例中,体元V112包含在与节点N8和N11相关联的包围体内的场景对象表面基元。节点N8和N11的最近共同祖先为N2(与体元V111相同的最近共同祖先)。因此,用于进行针对体元V112的光线相交测试的开始节点为节点N2。因此,可使用标号或颜色来标记或着色对应于内部节点N2的体元V112,如图6C中所示。
此外,在图6A到C的实例中,体元V211包含在与节点N12和N13相关联的包围体内的场景对象表面基元。节点N12和N13的最近共同祖先为节点N6。因此,用于进行针对体元V211的光线相交测试的起始节点为节点N6。因此,可使用标号或颜色来标记或着色对应于内部节点N6的体元V211,如图6C中所示。
此外,在图6A到C的实例中,体元V222包含在与节点N9、N6和N15相关联的包围体内的场景对象表面基元。节点N9、N6和N15的最近共同祖先为根节点N1。因此,用于进行针对体元V222的光线相交测试的起始节点为节点N1。因此,可使用标号或颜色来标记或着色对应于根节点N1的体元V222,如图6C中所示。
最后,在图6A到C的实例中,体元V212不包含任何场景对象表面基元;因此,可使用“空”或体元V212内不存在场景对象表面基元的其它指示符来标记体元V212,如图6C中所示。
一些实施方案可使体元与层次结构的仅仅一部分相关联。举例来说,在一些方面中,体元可仅与层次结构中的节点相关联达到1、2、3、4、5、6、7、8、9、10或更多级别的深度。通过仅体元化到某一深度,在层次结构的最大体元化级别或较浅级别下在每一体元与节点中的至少一个之间进行关联。上文所论述的最低或最深共同祖先将选自层次结构的体元化级别。
图6A到C的数据结构610、620和630可用于产生三维纹理映射,其使每一体元与对应于映射到所述体元的节点的“颜色”相关联。举例来说,N1到N15可各自指派有颜色,且每一体元V111、V121、V211、V221、V112、V122、V212和V222随后可使用相对应的节点来着色。可将额外的颜色指派给不涵盖任何基元(且因此不映射到BVH树610中的任何节点)的体元。
如果由体元涵盖的基元也由多个包围盒(与BVH树的多个节点相关联)涵盖,则将与所述体元相关联的颜色设定为与所有节点的最深共同祖先相关联的颜色,所述所有节点与涵盖也包含于体元内的基元的包围体相关联。
在体元化期间确定第一最深共同祖先以确保每一体元与单一颜色值相关联。在追踪光线以确定光线穿过的所有节点的最深共同祖先时,还确定了第二最深共同祖先。
用于光线相交测试的起始节点可基于图6C的经标记(或经着色)体元的“映射”。依赖于如图6C中所示的预先计算的映射可允许在不使用每一追踪操作来重新计算每一体元的最低共同祖先的情况下执行多个光线追踪操作。
为了进行光线表面相交测试,每一光线(无论是主要光线、阴影光线、反射光线还是其它类型的光线)首先从其原点通过一或多个体元追踪到其目的地,如上文关于图3所论述。光线穿过的每一体元具有相对应的纹理颜色,如上文关于图6C所论述。随后可基于类似于上文关于图6C所论述的数据结构的数据结构来确定光线穿过的体元的纹理色彩的集合。如果光线穿过n个体元,则可识别m<=n个纹理色彩。
在至少一些所揭示的方面中,因为体元的纹理颜色定义所述特定体元的最深共同祖先,所以用于光线的光线相交测试的开始节点可基于纹理色彩m。举例来说,对应于纹理色彩的节点的最深共同祖先可为用于光线相交测试的开始节点。
图7为体元化的茶壶场景。正如一张图标纸上的正方形定界接触但不重叠的二维区域,在三个维度中,立方体积元素(体元,例如体元702)定界接触但不重叠的体积。体元可与轴对准。正如以二维方式绘制于一张图片纸上的对象可与一或多个正方形相交且/或完全含有所述一或多个正方形,在三维中,对象(例如与层次结构中的节点相关联的包围体)可与一或多个体元相交且/或完全含有所述一或多个体元。因此,与节点相关联的每一包围体可占据单一体元的一部分、多个体元的部分和/或一或多个完整体元。因此,每一体元可定界包围体的空间(且与所述包围体相关联),所述包围体与包围体层次结构中的一或多个节点相关联。
因此,在一实施例中,每一体元(例如体元702)占据三维空间中的立方区域,其中相邻体元相接(接触)但不重叠。包含茶壶的场景的参考轴可与体元的三个维度对准。
分割场景的体元的一部分可表示也由场景内的对象所占据的三维空间。举例来说,场景中的体元的一部分可形成角锥或立方体的形状。三维角锥可投影为二维图像平面上的三角形。在图形处理中,较小的通常不可分割的构建基块可为用于表示场景中的对象的基元。每一基元在三维空间中可具有定位和定向属性,以及例如颜色的特性。对象可表示为基元的组合。因此,可使用体元来形成场景的三维表示的实体模型。
随后映射每一体元,或使其与层次结构中的包围体相关联,所述包围体与每一体元和与其相关联的节点相交或完全含有每一体元和与其相关联的节点。这个映射支持追踪个别光线。
识别光线穿过的每一体元。识别与所识别的体元相关联的节点的最低共同祖先,且将其用作遍历层次树的起始点。由于这个起始点可能低于层级,所以仅遍历所述树的子集。这相较于从所述层级开始遍历的实施方案减少了光线-基元相交测试的数目且加速了光线追踪。
图8说明包含体元化包围体的茶壶场景800。图8还说明遍历两个体元806和808的光线804。每一体元可涵盖三维空间或具有轴对准的侧面的立方体。相邻体元可邻接而不重叠。因为场景以三维方式表示,所以场景可由例如163(16×16×16)个体元分割,当每一体元的侧面表示场景维度的第十六分之一时,由323个、643个、1283个或一些其它数目个体元分割。三个维度中的每一个的体元的数目不必相等。举例来说,当场景不是完美的立方体但具有比另一维度长的至少一个维度时,每一维度中的体元的数目可变化。每一空间单元有更多体元则有可能更精细地划分场景。这可能会增加处理体元的计算负荷,但当选择如下文所论述的最低共同祖先时提供通过场景的光线路径的更精确定义。
图9说明可经产生以表示场景800的层次数据结构900。整个场景800对应于根节点915,因为根节点915表示场景800的整个体积。根节点915具有子节点925,其包含场景的右部,所述右部包含茶壶的壶嘴和前部;及子节点935,其表示场景的左部,所述左部包含茶壶的把手、顶部和后部。节点925具有也是叶节点的子节点945,其与包围体840相关联。包围体840包含茶壶的壶嘴。节点925还具有与包围体850相关联的子节点955。包围体850涵盖包含茶壶的靠近壶嘴的前部的三维空间。区域820包含三维空间中的点,所述点不仅仅在包围体840或包围体850中,还在与节点925相关联的包围体内,所述区域类似于图10中与节点C相关联的区。节点935具有子节点975,所述子节点具有对应于茶壶的顶部的包围体870。节点935具有子节点965,所述子节点具有对应于茶壶的把手和远离茶壶的壶嘴或顶部的部分的包围体860。节点965具有对应于两个叶节点的两个子节点985和995,所述两个叶节点具有不可见的包围体。区域830包含三维空间中的点,所述点不仅仅在包围体860或包围体870中。三维空间中的不仅仅在子节点925或935中还在场景800内的点经标记为810,其对应于层级915。
应注意,虽然图8展示由包围体850涵盖的体元806和由包围体840完全涵盖的体元808,但在一些方面中,体元可能不由体积完全涵盖。在一些方面中,一或多个体元可跨越一或多个包围体。
图8展现体元与节点之间的映射。因为体元806在与叶节点955相关联的体积850内,所以体元806映像到节点955。类似地,因为体元808在与叶节点945相关联的体积840内,所以其映像到叶节点945。跨越多于一个包围体的体元映射到其跨越的体元的层次结构中的最低共同祖先。举例来说,如果体元跨越与节点845相关联的体积840和与节点955相关联的体积850,则所述体元映射到节点945和955的最低共同祖先,即其映射到节点925(节点945和955的最低共同祖先)。可由下文所论述的确定光线穿过特定体元的光线追踪操作来使用这个最低共同祖先。
为了确定层次结构900中的起始节点,所揭示的方法和系统确定具有光线804穿过的体积的节点的共同祖先。因为光线804穿过包围体840和850,所以对穿过层次数据结构900的光线804的任何追踪必须包含表示至少这些体积的节点。这分别对应于节点945和955。因为光线804不穿过包围体860,所以不需要包含(例如)表示包围体860的节点965。
因此,所述方法确定用于遍历的起始节点,所述起始节点为表示光线穿过的体积的节点的最深(最低)共同祖先节点。在图9的实例中,节点915还是节点945和955的共同祖先,但由于节点925比节点915更深(在层次结构中处于较低级别处),所以节点925为起始(开始)节点。因此,所述方法在开始节点925处开始遍历层次结构,并且在追踪光线804时继续到从开始节点925往下的节点。
一旦经由光线相交测试识别与光线804相交的对象,可以基于从遍历中识别出的相交而更新场景800的数字图像。随后可将经更新的数字图像输出到输出装置,例如电子显示器、计算机网络或例如磁盘或其它稳定存储器的稳定存储装置。
图10为用于BVH体元化的实例算法方法。这个示范性体元化算法由两个级构成。在第一级中,将预先确定的树深度处的所有AABB体元化。在第二级中,多次通过体元化。
图11为找到最低共同祖先的实例算法方法。这个方法在输入时需要两个从一开始(具有索引1的根节点)的32位广度优先的BVH节点索引,并返回其最低共同祖先。实例算法通过首先移动在树中较低的节点直到两个节点均在相同树级别上为止来工作。随后所述方法将树同时从两个节点向上上升,直到其路径在共同祖先中相遇为止。
图12为说明可配置成实施本公开的一或多个方面的实例计算装置的框图。如图12中所展示,装置2可为计算装置,其包含但不限于视频装置、媒体播放器、机顶盒、无线手持机(例如移动电话和所谓的智能电话)、个人数字助理(PDA)、台式计算机、膝上型计算机、游戏控制台、视频会议单元、平板计算装置及类似者。在图12的实例中,装置2可包含中央处理单元(CPU)6、系统存储器10和GPU 12。装置2还可包含显示处理器14、收发器模块3、用户接口4和显示器8。收发器模块3和显示处理器14均可为与CPU 6和/或GPU 12相同的集成电路(IC)的部分,均可在包含CPU 6和/或GPU 12的一或多个IC的外部,或可形成于在包含CPU 6和/或GPU 12的IC外部的IC中。
为清楚起见,装置2可包含图12中未展示的额外模块或单元。举例来说,装置2可包含扬声器和麦克风(其均未在图12中展示)以在装置2为移动无线电话或扬声器(其中装置2为媒体播放器)的实例中实现电话通信。装置2还可包含摄像机。此外,装置2中所展示的各种模块和单元可不必在装置2的每个实例中。例如,在装置2为台式计算机或经装备以与外部用户接口或显示器介接的其它装置的实例中,用户接口4和显示器8可在装置2外部。
用户接口4的实例包含但不限于轨迹球、鼠标、键盘和其它类型的输入装置。用户接口4还可为触摸屏,并且可作为显示器8的部分并入。收发器模块3可包含允许装置2与另一装置或网络之间的无线或有线通信的电路。收发器模块3可包含调制器、解调器、放大器和用于有线或无线通信的其它此类电路。
CPU 6可为配置成处理计算机程序的指令以供执行的微处理器,例如中央处理单元(CPU)。CPU 6可包括控制装置2的操作的通用或专用处理器。用户可将输入提供到装置2以使得CPU 6执行一或多个软件应用程序。在CPU 6上执行的软件应用程序可包含(例如)操作系统、文字处理器应用程序、电子邮件应用程序、电子数据表应用程序、媒体播放器应用程序、视频游戏应用程序、图形用户接口应用程序或另一程序。另外,CPU 6可执行用于控制GPU 12的操作的GPU驱动程序22。用户可经由一或多个输入装置(图中未展示)将输入提供到装置2,所述输入装置例如是键盘、鼠标、麦克风、触摸板或经由用户接口4耦合到装置2的另一输入装置。
在CPU 6上执行的软件应用程序可包含指示CPU 6以引起向显示器8呈现图形数据的一或多个图形呈现指令。在一些实例中,所述软件指令可符合图形应用程序编程接口(API),例如开放图形库API、开放图形库嵌入系统(OpenGL ES)API、Direct3DAPI、X3D API、RenderMan API、WebGL API或任何其它公共或专有标准图形API。为了处理图形呈现指令,CPU 6可将一或多个图形呈现命令发布到GPU 12(例如,通过GPU驱动程序22)以使得GPU 12执行图形数据呈现中的一些或全部。在一些实例中,待呈现的图形数据可包含例如点、线、三角形、四边形、三角带等的图形基元列表。
GPU 12可配置成执行图形操作,以向显示器8呈现一或多个图形基元。因此,当在CPU 6上执行的软件应用程序中的一个需要图形处理时,CPU 6可将图形命令和图形数据提供到GPU 12以用于向显示器8呈现。图形数据可包含(例如)绘制命令、状态信息、基元信息、纹理信息等。在一些情况下,GPU 12可内置有高度并行结构,所述高度并行结构提供比CPU6更有效的复杂图形相关操作的处理。举例来说,GPU 12可包含配置成以并行方式对多个顶点或像素进行操作的多个处理组件,例如着色器单元。在一些情况下,GPU 12的高度并行性质可允许GPU 12比使用CPU 6直接将场景绘制到显示器8更快速地将图形图像(例如,GUI和二维(2D)和/或三维(3D)图形场景)绘制到显示器8上。
在一些情况下,可将GPU 12集成到装置2的母板中。在其它情况下,GPU 12可存在于安装在装置2的母板中的端口中的图形卡上,或可以其它方式并入在配置成与装置2互操作的外围装置内。GPU 12可包含一或多个处理器,例如一或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或其它等效的集成或离散逻辑电路。GPU 12还可包含一或多个处理器核心,使得GPU 12可被称作多核处理器。
GPU 12可直接耦合到图形存储器40。因此,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可为显示由GPU 12产生的图像内容的装置2的显示器。显示器8可为液晶显示器(LCD)、有机发光二极管显示器(OLED)、阴极射线管(CRT)显示器、等离子体显示器或另一类型的显示装置。
根据本公开的方面,GPU 12可在层次数据结构中组织多个基元。GPU 12可将与层次数据结构的节点相关联的一或多个包围体光栅化或体元化成离屏呈现目标。GPU 12可确定层次数据结构的内部非根节点为分级数据结构中用以开始分级数据结构的遍历的开始节点。GPU 12可从开始节点开始遍历层次数据结构以确定与光线相交的基元。
图13为更详细地说明图12的CPU 6、GPU 12和系统存储器10的实例实施方案的框图。如图13中所展示,CPU 6可包含至少一个软件应用程序18、图形API 20和GPU驱动程序22,其中的每一个可为在CPU 6上执行的一或多个软件应用程序或服务。
对CPU 6和GPU 12可用的存储器可包含系统存储器10和帧缓冲器16。帧缓冲器16可为系统存储器10的一部分或可与系统存储器10分离。帧缓冲器16可存储经所呈现的图像数据。
软件应用程序18可为利用GPU 12的功能性的任何应用程序。举例来说,软件应用程序18可为GUI应用程序、操作系统、便携式映像应用程序、用于工程或艺术应用的计算机辅助设计程序、视频游戏应用程序或使用2D或3D图形的另一类型的软件应用程序。
软件应用程序18可包含指示GPU 12呈现图形用户接口(GUI)和/或图形场景的一或多个绘制指令。举例来说,绘制指令可包含定义将由GPU 12呈现的一组一或多个图形基元的指令。在一些实例中,绘制指令可共同地定义用于GUI中的多个开窗表面的全部或部分。在额外实例中,所述绘制指令可共同地定义图形场景的全部或部分,所述图形场景包含在由应用程序定义的模型空间或世界空间内的一或多个图形对象。
软件应用程序18可经由图形API 20调用GPU驱动程序22以将一或多个命令发布到GPU 12,以用于将一或多个图形基元呈现为可显示的图形图像。举例来说,软件应用程序18可经由图形API 20调用GPU驱动程序22以将基元定义提供到GPU 12。在一些情况下,可以绘制基元(例如三角形、矩形、三角扇、三角带等)的列表的形式将基元定义提供到GPU 12。基元定义可包含指定与待呈现的基元相关联的一或多个顶点的顶点规格。所述顶点规格可包含每一顶点的位置坐标,且在一些情况下包含与顶点相关联的其它属性,例如颜色坐标、法向向量和纹理坐标。基元定义还可包含基元类型信息(例如三角形、矩形、三角扇、三角带等)、缩放信息、旋转信息及类似者。基于由软件应用程序18发布到GPU驱动程序22的指令,GPU驱动程序22可用公式表示指定供GPU 12执行的一或多个操作以便呈现基元的一或多个命令。当GPU 12接收到来自CPU 6的命令时,图形处理管线24解码命令且配置图形处理管线24以执行命令中指定的操作。举例来说,图形处理管线24中的输入汇编程序(图中未展示)可读取基元数据且将所述数据汇编成基元以供图形处理管线24中的其它图形管线级使用。在执行指定操作之后,图形处理管线24将所呈现数据输出到与显示装置相关联的帧缓冲器16。
帧缓冲器16存储GPU 12的目的地像素。每一目的地像素可与唯一屏幕像素位置相关联。在一些实例中,帧缓冲器16可存储每一目的地像素的颜色分量和目的地阿尔法值。举例来说,帧缓冲器16可存储每一像素的红色、绿色、蓝色、阿尔法(RGBA)分量,其中“RGB”分量对应于颜色值,且“A”分量对应于目的地阿尔法值。尽管将帧缓冲器16和系统存储器10说明为单独存储器单元,但在其它实例中,帧缓冲器16可为系统存储器10的部分。
在一些实例中,图形处理管线24可包含顶点着色器级、外壳着色器级、域着色器级、几何着色器级、像素着色器级和计算着色器级中的一或多个。图形处理管线24的这些级可被视为着色器级。这些着色器级可实施为在GPU 12中的着色器单元46上执行的一或多个着色器程序。着色器单元46可配置为处理分量的可编程管线。在一些实例中,着色器单元46可被称作“着色器处理器”或“统一着色器”,并且可执行几何、顶点、像素或其它着色操作以呈现图形。着色器单元46可包含处理器核心48,所述处理器核心中的每一个可包含用于提取及解码操作的一或多个组件、用于执行算术运算的一或多个算术逻辑单元、一或多个存储器、高速缓存和寄存器。
通过将命令发送到着色器单元46以执行图形处理管线24中的顶点着色器级、外壳着色器级、域着色器级、几何着色器级和像素着色器级中的一或多个,GPU 12可指定着色器单元46执行各种着色操作,例如顶点着色、外壳着色、域着色、几何着色、像素着色、计算着色及类似者。在一些实例中,GPU驱动程序22可配置成编译一或多个着色器程序,且配置成将经编译的着色器程序下载到GPU 12内所含的一或多个可编程着色器单元上。可以高级着色语言编写着色器程序,所述高级着色语言例如是OpenGL着色语言(GLSL)、高级着色语言(HLSL)或用于图形的C(Cg)着色语言。经编译的着色器程序可包含控制GPU 12内的着色器单元46的操作的一或多个指令。举例来说,着色器程序可包含可由着色器单元46执行以执行顶点着色器级的功能的顶点着色器程序、可由着色器单元46执行以执行外壳着色器级的功能的外壳着色器程序、可由着色器单元46执行以执行域着色器级的功能的域着色器程序、可由着色器单元46执行以执行几何着色器级的功能的几何着色器程序、和/或可由着色器单元46执行以执行像素着色器的功能的像素着色器程序、和/或可由着色器单元46执行以执行计算着色器的功能的计算着色器程序。顶点着色器程序可控制可编程顶点着色器单元或统一着色器单元的执行,且包含指定一或多个每顶点操作的指令。
图形存储器40为物理集成到GPU 12的集成电路中的片上存储装置或存储器。因为图形存储器40为片上存储器,所以与经由系统总线从系统存储器10读取值或将值写入到系统存储器10相比,GPU 12可能能够更快速地从图形存储器40读取值或将值写入到图形存储器40。图形存储器40可存储以分层方式将场景基元(例如,三角形)分组的ADS 41。在一些实例中,ADS 41可存储在系统存储器10中、存储在着色器单元46的着色器存储器(图中未展示)中,或存储在共享系统/图形存储器(图中未展示)中。
根据本公开的方面,GPU 12可在ADS 41中组织多个基元。GPU 12可将与ADS 41的节点相关联的一或多个包围体光栅化或体元化成存储在图形存储器40中的离屏呈现目标。GPU 12可确定ADS 41的非根节点为ADS 41中用以开始ADS 41的遍历的开始节点。GPU 12可从开始节点开始遍历ADS 41以确定与光线相交的基元。
图14为说明用于确定光线-对象相交的实例方法1400的流程图。在一些方面中,方法1400可由图12的装置2执行。举例来说,在一些方面中,方法1400可由CPU 6、GPU 12和显示处理器14中的一或多个执行。在一些方面中,方法1400可由配置CPU 6、GPU 12和显示处理器14中的一或多个以执行下文所描述的功能的指令执行。当下文将方法1400描述为一系列框时,下文所描述的框中的任一个可为任选的。确切地说,在一些方面中,可能不执行框1460和/或1470。
在框1410中,方法1400将场景分割成多个体元。举例来说,在一些方面中,可如上文关于图6A到C的实例所论述来分割场景。可使用各种方法来分割场景。举例来说,可通过将场景划分成2个、4个、6个、8个、10个或任何数目个三维空间的大小相等的部分来分割场景。如果包括场景的三维空间具有x、y和z维度,则每一维度可除以一常数以确定体元的每一维度的长度。每一体元随后可由所确定的维度的邻接体元定义,直到场景的整个空间由非重叠体元涵盖为止。这不是分割场景的唯一方法,但经提供为说明性实例。在一实施例中,框1410的功能性可由图13中的GPU 12执行。
框1420使体元的至少一部分与包围体层次结构(BVH)中相对应的节点相关联,所述BVH表示场景内的一或多个对象基元。在一些方面中,在框1420中执行的体元化可以基本上符合上文关于图10所描述的体元化来执行。
一些实施方案是通过确定与涵盖位于体元内的表面基元的至少一部分(或在一些方面中所有表面基元)的包围体相关联的层次结构中的节点集合并使体元与所述节点集合的最深共同祖先相关联而使每一体元与对应的节点相关联。在一实施例中,框1410的功能性可由图13中的GPU 12执行。在一些方面中,在框1420中所执行的关联如上文关于图6A到C所描述。
在一些方面中,为了改进层次结构的搜索性能并减小与基于体元识别节点相关联的开销,可产生存储层次结构中的体元、包围体和节点中的一或多个之间的关联性的索引数据结构。所述数据结构可记录每一体元的最深共同祖先节点。通过经由数据结构执行查找操作,可有效识别与体元相关联的最深共同祖先节点。在一实施例中,框1420的功能性可由图13的GPU 12执行。
在方法1400的一些方面中,可能不执行上文所论述的框1410和/或1420。举例来说,在一些方面中,可在处理数字图像的第一部分期间将BVH树体元化。在数字图像处理期间,可执行针对主要光线、阴影光线、反射光线、折射光线和/或其它类型的光线的数百或数千个光线追踪操作。可依赖于相同加速度数据结构(即,相同的BVH树和/或体元化)以通过多个这些光线追踪操作来进行处理。因此,第一光线追踪操作可包含框1410和1420,而第二光线追踪操作可参考相同数据结构,并且因此不执行框1410和1420。
在框1430中,方法1400确定光线穿过的一组体元。在一些方面中,通过将场景的三维空间中光线的路径与由所述体元集合中的每一体元涵盖的空间进行比较,可确定所述体元集合。如果光线的路径与由特定体元涵盖的空间重叠,则光线穿过所述体元。否则,光线不穿过所述体元。
举例来说,图8的光线804穿过两个体元806和808。光线804穿过包围体850中的体元806和包围体840中的体元808。因为光线可由起始位置和方向表征,所以确定光线的路径是光线光学的直接应用。在一些方面中,一旦得知光线的路径,就可以确定表示包含光线路径的三维空间的体元包含于所述一组体元中。在一实施例中,框1430的功能性可由图13中的GPU 12执行。
在框1435中,确定与(光线穿过的)所述一组体元相关联的一组节点。此确定可基于在框1420中进行的关联。在一些方面中,确定所述节点集合可包含参考数据结构,其存储所述体元集合中的每一体元和与体元相关联的节点之间的关联性。可基于对应的体元的标识符从数据结构中读取所述节点集合中的每一节点。在一些方面中,上文关于框1435所论述的功能中的一或多个可由图13的GPU 12执行。
框1440确定在1435框中所确定的所述一组节点的最深共同祖先。在一些方面中,可通过选择所述一组节点中的节点中的任一个来找到一组节点的最深共同祖先。在选择所述节点之后,可执行测试以确定所选择的节点是否为所述一组节点中的所有其它节点的祖先。如果所选择的节点不是祖先,则所选择的节点的直接祖先可成为新的经选择节点。随后可执行检查以确定新的所选择的节点是否为所述一组节点中的所有节点的祖先。如果不是,则新的所选择的节点的祖先可成为又一第二新的经选择节点。可重复这个过程直到确定所有节点的祖先为止。在一些方面中,这个过程的优化可包含首先识别所述一组节点中为BVH树中的最浅节点的节点。可首先所选择这个经识别的节点以确定其是否为所述一组节点中的所有其它节点的祖先。
展示关于图8的最深共同祖先的实例。光线804穿过两个体元。首先,光线穿过(图9的)节点955的包围体850中的体元806。光线804还穿过节点945的包围体840中的体元808。因此,在图8到9的实例中,所述一组节点为节点945和955。如上文关于框1420所论述,在一些方面中,可提供索引数据结构以使得能够有效识别与每一体元相关联的第一开始节点。如果在框1435中所确定的节点集合为空集,则光线不穿过与场景中的任何对象相交。在一实施例中,框1440的功能性可由图13中的GPU 12执行。
在框1450中,方法1400在最深共同祖先处开始遍历层次结构,以确定光线和对象之间的交点。遍历层次结构对应于搜索与由体积涵盖的基元的经遍历节点相关联的体积,以进行光线-基元相交测试。每一光线相交测试确定光线的路径是否与至少部分地由体积所涵盖的基元表示的对象相交。通过开始遍历低于根节点的层次结构,搜索数目减少的节点且因此搜索包围体。因此,需要较少对象-基元测试来完成对光线的追踪。在一些方面中,一旦识别到起始节点,方法1400就使用深度第一遍历来从开始节点往下遍历层次结构的部分。在一实施例中,框1450的功能性可由图13中的GPU 12执行。
在框1460中,一些方面可基于在框1450的遍历期间识别到的光线/对象相交而更新场景的数字图像。举例来说,对象的照度/亮度值可基于光线是否与对象相交而变化。举例来说,如果光线为二级光线且其在到达光源之前与基元相交,则与在二级光线在到达光源之前不与基元相交的情况相比,二级光线源于其中的基元的亮度值可能较暗。在一实施例中,框1460的功能性可由图13中的GPU 12执行。
在任选的框1470中,随后可将经更新的数字图像或从所述经更新的数字图像中导出的数据输出到例如电子显示器、电子网路(例如因特网)等输出装置,或输出到例如磁盘驱动器等稳定存储装置。举例来说,在一些方面中,可通过例如经由装置驱动程序或流API读取含有经更新的数字图像的至少一部分的文件或其它存储对象以获得表示所述部分的数据并将所述数据写入到输出装置来执行框1470。可根据需要重复这个读取/写入循环,直到已输出包括经更新的数字图像的所有数据为止。举例来说,当到达文件标记的末端时可终止写入。在一实施例中,框1470的功能性可由图13中的GPU 12执行。在发现光线-基元相交之后,搜索结果包含基元的ID。随后使用所述ID来检索基元属性(顶点属性,例如法线、位置等)。搜索结果还包含光线与基元的精确交点,所述交点通常表现于重心坐标中。随后使用这些来内插顶点属性,且(例如)随后使用这些来计算照明。
一些实施方案还可包含产生层次结构。产生层次结构可包含产生基元的网格(例如三角形)以表示场景内所含的三维对象。在一些方面中,产生层次结构包含产生多个叶节点。每一叶节点可表示界定至少一个基元的相对应的有界体积。产生层次结构还可包含产生多个内部节点。每一内部节点可为层次结构中的至少一个其它节点的直接祖先。每一内部节点可表示包含由从内部节点往下的每一节点表示的体积的有界体积。层级为当然除层级自身外的层次结构的所有节点的祖先。因为层级为所有其它节点的祖先,所以层级还表示第一体积,所述第一体积包含由层次结构的所有其它节点表示的有界体积。在一些方面中,每一内部节点为不超过两个节点的直接祖先。在一些方面中,每一有界体积表示所述第一体积内的三维轴对准包围盒。
在一些方面中,产生层次结构还可包含将每一节点指派到层次结构的深度级别。层级可处于最浅深度级别,而至少一个叶节点定义层次结构的最深深度级别。在一些方面中,可如上文关于图12和13所描述产生层次结构。
图15说明阴影光线的体元化结果,包含茶壶阴影、头部反射、果盘环境光遮蔽(AO)、来自计算机游戏斯蓬扎环境光遮蔽的场景和球面反射。图15中的每一图像为经呈现的场景。
图16列出图15中所说明的场景的阴影光线的BVH体元化结果,其包含基线处的场景中的每一个的结果(从根节点开始且未使用所揭示的技术),且使用深度为1、2、6、10和15的有界体积层次结构。
在商用膝上型计算机上测量实例结果,所述商用膝上型计算机使用在GPU上运行的光线追踪器来运行Intel Core i5-2540M CPU和NVIDIA GeForce 4200M GPU。光线追踪器建立在DirectX 11 API的顶部上。其使用顶点和像素着色器以用于BVH光栅化且使用计算着色器以用于BVH遍历。示范性体元化代码在所述膝上型计算机的CPU上运行。
数目163和323对应于体元栅格的分辨率。举例来说,163对应于含有16×16×16=4096个体元的体元栅格。类似地,323对应于含有32×32×32=32,768个体元的体元栅格。举例来说,在深度10处具有163个体元的果盘场景使光线/AABB相交测试的数目减少11.2%,减少到3.53亿。在深度10处具有323个体元的相同果盘场景使光线/AABB相交测试的数目减少19.1%,减少到3.21亿。这种所改进的减少是以BVH体元化所花费的时间为代价的。在深度10处,BVH体元化时间从2.69ms增加到6.20ms,其中体元的数目从163个增加到323个。表2展示渐增的深度以及渐增的体元分辨率可能会导致光线/AAB相交测试的数目的进一步减少。这些改进可以体元化时间增加为代价。最佳体元分辨率和深度可随不同场景而变化。
应理解,本文中对使用例如“第一”、“第二”等名称的组件的任何参考通常不限制那些组件的数量或次序。相反地,这些名称可在本文中用作区别两个或多于两个组件或组件的例项的方便方法。因此,对第一和第二组件的参考并不意味着此处可采用仅两个组件或第一组件必须以某一方式在第二组件之前。
并且,除非另外说明,否则组件集合可包括一或多个组件。另外,用于说明书或权利要求书中的形式“以下中的至少一个:A、B或C”的术语意味着“A或B或C或这些组件的任一组合”。作为实例,“a、b或c中的至少一个”意在涵盖:a、b、c、a-b、a-c、b-c和a-b-c。
如本文中所使用,术语“确定”涵盖各种各样的动作。举例来说,“确定”可包含运算、计算、处理、导出、研究、查找(例如,在表、数据库或另一数据结构中查找)、断定等。并且,“确定”可包含接收(例如,接收信息)、存取(例如,存取存储器中的数据)等等。此外,“确定”可包含解析、选择、挑选、建立等。
上文所描述的方法的各种操作可由能够执行所述操作的任何适合的装置(例如各种硬件和/或软件组件、电路及/或模块)来执行。一般来说,各图中所说明的任何操作可以由能够执行所述操作的对应功能装置执行。
结合本公开所描述的各种说明性逻辑块、模块和电路可由通用处理器、图形处理单元(GPU)、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列信号(FPGA)或其它可编程逻辑装置(PLD)、离散门或晶体管逻辑、离散硬件组件或其经设计以执行本文中所描述的功能的任何组合来实施或执行。
可在各种不同计算装置上实施本文中所描述的系统和方法。其可使用通用或专用计算机系统环境或配置。可适合与本发明一起使用的计算系统、环境及/或配置的实例包含但不限于:个人计算机、服务器计算机、手持式或膝上型计算机装置、多处理器系统、基于微处理器的系统、可编程消费型电子装置、网络PC、小型计算机、大型计算机,包含以上系统或装置中的任一者的分布式计算环境及类似者。
通用处理器可为微处理器,但在替代方案中,处理器可为任何市售处理器、控制器、微控制器或状态机。处理器还可实施为计算装置的组合,例如,DSP与微处理器的组合、多个微处理器、一或多个微处理器结合DSP核心,或任何其它此类配置。
在一或多个方面中,所描述的功能可在硬件、软件、固件或其任何组合中实施。如果实施于软件中,那么可将功能作为一或多个指令或代码存储在计算机可读媒体上或经由计算机可读媒体发射。计算机可读媒体包含计算机存储媒体及通信媒体两者,所述通信媒体包含促进将计算机程序从一处传送到另一处的任何媒体。存储媒体可以是可由计算机接入的任何可用媒体。
举例来说且非限制,此类计算机可读媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置,或可用于携载或存储呈指令或数据结构的形式的所要程序代码且可由计算机接入的任何其它媒体。如本文中所使用,磁盘和光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软盘和Blu-光盘,其中磁盘通常以磁性方式再现数据,而光盘用激光以光学方式再现数据。
本文中所揭示的方法包括用于达成所描述的方法的一或多个步骤或动作。在不偏离权利要求书的范围的情况下,方法步骤和/或动作可彼此互换。换句话说,除非规定了步骤或动作的特定次序,否则在不偏离权利要求书的范围的情况下可对特定步骤及/或动作的次序及/或用途加以修改。所描述的功能可在硬件、软件、固件或其任何组合中实施。如果实施于软件中,那么可将所述功能作为一或多个指令存储在计算机可读媒体上。
因此,某些方面可包括用于执行本文中所呈现的操作的计算机程序产品。举例来说,此计算机程序产品可包括上面存储有(和/或编码有)指令的计算机可读媒体,所述指令可由一或多个处理器执行以执行本文中所描述的操作。对于某些方面,计算机程序产品可包含封装材料。
应理解,权利要求书不限于上文所说明的精确配置和组件。在不偏离权利要求书的范围的情况下,可在上文所描述的方法和设备的布置、操作和细节中作出各种修改、改变和变化。
Claims (30)
1.一种在场景的电子图象中追踪光线的方法,其包括:
将所述场景分割成多个体元;
使所述体元中的每一个与表示所述场景内的一或多个对象基元的包围体层次结构BVH的节点相关联;
确定所述光线穿过的体元集合;
确定与所述体元集合相关联的节点集合;
确定所述节点集合的最深共同祖先节点;
从所述最深共同祖先节点处开始遍历所述层次结构,以确定所述光线与所述一或多个对象基元中的一个之间的交点;以及
基于所述所确定的交点更新所述场景的数字图像。
2.根据权利要求1所述的方法,其进一步包括将所述经更新的数字图像输出到输出装置。
3.根据权利要求1所述的方法,其中使每一体元与节点相关联包括:
针对每一体元确定最小的包围体集合,其涵盖也包含于由所述体元表示的空间中的基元;
确定所述层次结构中与所述包围体集合相关联的节点;
确定所述所确定的节点的第二最深共同祖先;以及
使所述体元与所述第二最深共同祖先相关联。
4.根据权利要求1所述的方法,其中遍历所述层次结构包括从所述最深共同祖先开始执行所述层次结构的深度第一遍历。
5.根据权利要求3所述的方法,其进一步包括在所述包围体层次结构的低于阈值的级别下从包围体中选择所述最小的包围体集合。
6.根据权利要求1所述的方法,其进一步包括:
将每一体元和与其相关联的节点的标识存储于数据结构中;及
基于所述数据结构确定相对应的多个光线的多个最深共同祖先。
7.根据权利要求1所述的方法,其中所述光线为在所述场景中沿着从所述一或多个对象基元中的一个的表面朝向光源的路径的阴影光线。
8.根据权利要求8所述的方法,其中表面点也为第二光线的交点,所述阴影光线的所述路径与所述第二光线的起点无关。
9.一种用于在场景的电子图像中追踪光线的设备,其包括:
存储器电路,其配置成存储场景的表示;及
与存储器单元通信的处理器电路,其配置成:
将所述场景分割成多个体元;
使所述体元中的每一个与表示所述场景内的一或多个对象基元的包围体层次结构BVH的节点相关联;
确定所述光线穿过的体元集合;
确定与所述体元集合相关联的节点集合;
确定所述节点集合的最深共同祖先节点;
从所述最深共同祖先节点处开始遍历所述层次结构,以确定所述光线与所述一或多个对象基元中的一个之间的交点;以及
基于所述所确定的交点更新所述场景的数字图像。
10.根据权利要求9所述的设备,其中所述处理器电路进一步配置成将所述经更新的数字图像输出到输出装置。
11.根据权利要求9所述的设备,其中使每一体元与节点相关联包括:
针对每一体元确定最小的包围体集合,其涵盖也包含于由所述体元表示的空间中的所有基元;
确定所述层次结构中与所述包围体集合相关联的节点;
确定所述所确定的节点的第二最深共同祖先;以及
使所述体元与所述第二最深共同祖先相关联。
12.根据权利要求9所述的设备,其中遍历所述层次结构包括从所述最深共同祖先开始执行所述层次结构的深度第一遍历。
13.根据权利要求11所述的设备,其中所述处理器电路进一步配置成在所述包围体层次结构的低于阈值的级别下从包围体中选择所述最小的包围体集合。
14.根据权利要求9所述的设备,其中所述处理器电路进一步配置成:
将每一体元和与其相关联的节点的标识存储于数据结构中;及
基于所述数据结构确定相对应的多个光线的多个最深共同祖先。
15.根据权利要求9所述的设备,其中所述光线为所述场景中沿着从所述一或多个对象基元中的一个的表面点朝向光源的路径的阴影光线。
16.根据权利要求9所述的设备,其中表面点对应于第二光线的所述交点,阴影光线的路径与所述第二光线的起点无关。
17.一种用于在场景的电子图像中追踪光线的设备,其包括:
用于将所述场景分割成多个体元的装置;
用于使所述体元中的每一个与表示所述场景内的一或多个对象基元的包围体层次结构BVH的节点相关联的装置;
用于确定所述光线穿过的体元集合的装置;
用于确定与所述体元集合相关联的节点集合的装置;
用于确定所述节点集合的最深共同祖先节点的装置;
用于从所述最深共同祖先节点处开始遍历所述层次结构以确定所述光线与所述一或多个对象基元中的一个之间的交点的装置;以及
用于基于所述所确定的交点更新所述场景的数字图像的装置。
18.根据权利要求17所述的设备,其中所述分割装置包括处理电路,其中所述关联装置包括所述处理电路,其中所述体元集合确定装置包括所述处理电路,其中所述节点集合确定装置包括所述处理电路,其中所述最深共同祖先确定装置包括所述处理电路,其中所述层次结构确定装置包括所述处理电路,其中所述遍历装置包括所述处理电路,且其中所述更新装置包括所述处理电路。
19.根据权利要求17所述的设备,其进一步包括用于将所述经更新的数字图像输出到输出装置的装置。
20.根据权利要求17所述的设备,其中所述关联装置包括:
用于针对每一体元确定最小的包围体集合的装置,所述最小的包围体集合涵盖也包含于由所述体元表示的空间中的所有基元;
用于确定所述层次结构中与所述包围体集合相关联的节点的装置;
用于确定所述所确定的节点的第二最深共同祖先的装置;以及
用于使所述体元与所述第二最深共同祖先相关联的装置。
21.根据权利要求17所述的设备,其中所述遍历装置包括用于从所述最深共同祖先开始执行所述层次结构的深度第一遍历的装置。
22.根据权利要求19所述的设备,其进一步包括用于在所述包围体层次结构的低于阈值的级别下从包围体中选择最小的包围体集合的装置。
23.根据权利要求17所述的设备,其进一步包括:
用于将每一体元和与其相关联的节点的标识存储于数据结构中的装置;及
用于基于所述数据结构确定相对应的多个光线的多个最深共同祖先的装置。
24.根据权利要求17所述的设备,其中所述光线为在所述场景中沿着从表面点朝向光源的路径的阴影光线,所述表面点在所述一或多个对象基元中的一个上。
25.根据权利要求17所述的设备,其中表面点对应于第二光线的所述交点,阴影光线的路径与所述第二光线的起点无关。
26.一种存储指令的非暂时性计算机可读媒体,所述指令在经执行时使得电子硬件处理器执行用于在场景的电子图像中追踪光线的方法,所述方法包括:
将所述场景分割成多个体元;
使所述体元中的每一个与表示所述场景内的一或多个对象基元的包围体层次结构BVH的节点相关联;
确定所述光线穿过的体元集合;
确定与所述体元集合相关联的节点集合;
确定所述节点集合的最深共同祖先节点;
从所述最深共同祖先节点处开始遍历所述层次结构,以确定所述光线与所述一或多个对象基元中的一个之间的交点;以及
基于所述所确定的交点更新所述场景的数字图像。
27.根据权利要求26所述的非暂时性计算机可读媒体,所述方法进一步包含将所述经更新的数字图像输出到输出装置。
28.根据权利要求26所述的非暂时性计算机可读媒体,其中使每一体元与节点相关联包括:
针对每一体元确定最小的包围体集合,其涵盖也包含于由所述体元表示的空间中的所有基元;
确定所述层次结构中与所述包围体集合相关联的节点;
确定所述所确定的节点的第二最深共同祖先;以及
使所述体元与所述第二最深共同祖先相关联。
29.根据权利要求26所述的非暂时性计算机可读媒体,其中遍历所述层次结构包括从所述最深共同祖先开始执行所述层次结构的深度第一遍历。
30.根据权利要求26所述的非暂时性计算机可读媒体,所述方法进一步包括:
在所述包围体层次结构的低于阈值的级别下从包围体中选择最小的包围体集合。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562142347P | 2015-04-02 | 2015-04-02 | |
US62/142,347 | 2015-04-02 | ||
US14/831,726 US9984492B2 (en) | 2015-04-02 | 2015-08-20 | Efficient hierarchy traversal in ray tracing applications |
US14/831,726 | 2015-08-20 | ||
PCT/US2016/022566 WO2016160334A1 (en) | 2015-04-02 | 2016-03-16 | Efficient hierarchy traversal in ray tracing applications |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107408312A true CN107408312A (zh) | 2017-11-28 |
CN107408312B CN107408312B (zh) | 2020-09-29 |
Family
ID=55650719
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680017649.1A Active CN107408312B (zh) | 2015-04-02 | 2016-03-16 | 光线追踪应用中的有效层次结构遍历 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9984492B2 (zh) |
EP (1) | EP3278306B1 (zh) |
JP (1) | JP2018513469A (zh) |
KR (1) | KR20170134455A (zh) |
CN (1) | CN107408312B (zh) |
WO (1) | WO2016160334A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109448121A (zh) * | 2018-09-26 | 2019-03-08 | 深圳市华讯方舟太赫兹科技有限公司 | 一种三角网格模型的处理方法、处理终端及存储介质 |
CN110827387A (zh) * | 2018-08-10 | 2020-02-21 | 辉达公司 | 没有着色器干预下对交点进行连续层次包围盒遍历的方法 |
CN110827385A (zh) * | 2018-08-10 | 2020-02-21 | 辉达公司 | 树遍历的特定于查询的行为修改 |
CN112085827A (zh) * | 2018-12-28 | 2020-12-15 | 英特尔公司 | 用于加速数据结构修整的装置和方法 |
CN113192166A (zh) * | 2021-05-24 | 2021-07-30 | 上海曼恒数字技术股份有限公司 | 一种骨骼树还原方法及系统 |
CN113781625A (zh) * | 2020-06-10 | 2021-12-10 | 辉达公司 | 适用于光线追踪的基于硬件的技术 |
CN113808245A (zh) * | 2020-06-11 | 2021-12-17 | 辉达公司 | 用于遍历光线追踪加速结构的增强技术 |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12008704B2 (en) | 2016-01-28 | 2024-06-11 | Snap Inc. | System for photo-realistic reflections in augmented reality |
DE112016007098T5 (de) * | 2016-07-26 | 2019-04-18 | Hewlett-Packard Development Company, L.P. | Indexierung von voxeln für das 3d-drucken |
US10395423B2 (en) * | 2016-12-29 | 2019-08-27 | Intel Corporation | Apparatus and method for rendering adaptive mesh refinement (AMR) data |
US10417807B2 (en) * | 2017-07-13 | 2019-09-17 | Imagination Technologies Limited | Hybrid hierarchy of bounding and grid structures for ray tracing |
US10586374B2 (en) * | 2017-07-26 | 2020-03-10 | Alvin D. Zimmerman | Bounding volume hierarchy using virtual grid |
US10265138B2 (en) * | 2017-09-18 | 2019-04-23 | MediVis, Inc. | Methods and systems for generating and using 3D images in surgical settings |
US11200724B2 (en) * | 2017-12-22 | 2021-12-14 | Advanced Micro Devices, Inc. | Texture processor based ray tracing acceleration method and system |
CN108876888A (zh) * | 2018-05-31 | 2018-11-23 | 沈阳品尚科技有限公司 | 一种光线追踪优化方法 |
US10699468B2 (en) * | 2018-06-09 | 2020-06-30 | Adshir Ltd. | Method for non-planar specular reflections in hybrid ray tracing |
US10810785B2 (en) * | 2018-08-10 | 2020-10-20 | Nvidia Corporation | Method for forward progress tree traversal mechanisms in hardware |
US10825230B2 (en) * | 2018-08-10 | 2020-11-03 | Nvidia Corporation | Watertight ray triangle intersection |
US10885698B2 (en) | 2018-08-10 | 2021-01-05 | Nvidia Corporation | Method for programmable timeouts of tree traversal mechanisms in hardware |
EP3844722A4 (en) * | 2018-08-29 | 2022-06-01 | Movidius Ltd. | COMPUTER VISION SYSTEM |
US20200193685A1 (en) * | 2018-12-13 | 2020-06-18 | Advanced Micro Devices, Inc. | Water tight ray triangle intersection without resorting to double precision |
US10699370B1 (en) * | 2018-12-28 | 2020-06-30 | Intel Corporation | Apparatus and method for a compressed stack representation for hierarchical acceleration structures of arbitrary widths |
US10719974B1 (en) * | 2018-12-28 | 2020-07-21 | Intel Corporation | Apparatus and method for efficiently storing ray traversal data |
WO2021030454A1 (en) * | 2019-08-12 | 2021-02-18 | Photon-X, Inc. | Data management system for spatial phase imaging |
US11017581B1 (en) | 2020-01-04 | 2021-05-25 | Adshir Ltd. | Method for constructing and traversing accelerating structures |
CN111340928B (zh) * | 2020-02-19 | 2022-05-03 | 杭州群核信息技术有限公司 | 一种结合光线跟踪的Web端实时混合渲染方法、装置及计算机设备 |
US11282261B2 (en) | 2020-06-10 | 2022-03-22 | Nvidia Corporation | Ray tracing hardware acceleration with alternative world space transforms |
US11302056B2 (en) | 2020-06-10 | 2022-04-12 | Nvidia Corporation | Techniques for traversing data employed in ray tracing |
US11367242B2 (en) | 2020-07-30 | 2022-06-21 | Apple Inc. | Ray intersect circuitry with parallel ray testing |
US11373360B2 (en) | 2020-07-30 | 2022-06-28 | Apple Inc. | Grouping techniques for ray intersection traversal |
CN114627219A (zh) * | 2020-12-11 | 2022-06-14 | 中兴通讯股份有限公司 | 三维场景数据的渲染方法及装置、存储介质、电子装置 |
GB2617219A (en) * | 2022-09-27 | 2023-10-04 | Imagination Tech Ltd | Ray tracing |
US20240203036A1 (en) * | 2022-12-16 | 2024-06-20 | Advanced Micro Devices, Inc. | Technique for generating a bounding volume hierarchy |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080074417A1 (en) * | 2006-09-27 | 2008-03-27 | Eric Oliver Mejdrich | Reallocation of spatial index traversal between processing elements in response to changes in ray tracing graphics workload |
US20090106530A1 (en) * | 2007-10-17 | 2009-04-23 | Christian Lauterbach | System, method, and computer program product for generating a ray tracing data structure utilizing a parallel processor architecture |
US20090256845A1 (en) * | 2000-06-19 | 2009-10-15 | Igor Sevastianov | Accelerated ray tracing |
CN102282591A (zh) * | 2008-09-10 | 2011-12-14 | 柯斯提克绘图有限公司 | 光线跟踪系统架构和方法 |
CN102682106A (zh) * | 2012-05-07 | 2012-09-19 | 电子科技大学 | 动态三维场景中加速数据结构的构建方法 |
CN103021018A (zh) * | 2012-11-07 | 2013-04-03 | 浙江工业大学 | 基于gpu的构建bvh树并行光线追踪方法 |
CN103106681A (zh) * | 2011-08-04 | 2013-05-15 | 辉达公司 | 用于构建加速结构的系统、方法及计算机程序产品 |
US20130235049A1 (en) * | 2012-03-09 | 2013-09-12 | Nvidia Corporation | Fully parallel in-place construction of 3d acceleration structures and bounding volume hierarchies in a graphics processing unit |
CN104050710A (zh) * | 2013-03-14 | 2014-09-17 | 想象技术有限公司 | 用隐式几何体进行3d图形渲染 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0528280A (ja) * | 1991-07-22 | 1993-02-05 | Nippon Telegr & Teleph Corp <Ntt> | 光線追跡方法 |
US8188997B2 (en) | 2000-06-19 | 2012-05-29 | Mental Images Gmbh | Accelerated ray tracing using shallow bounding volume hierarchies |
US7952583B2 (en) * | 2000-06-19 | 2011-05-31 | Mental Images Gmbh | Quasi-monte carlo light transport simulation by efficient ray tracing |
US7755628B2 (en) * | 2006-12-29 | 2010-07-13 | Intel Corporation | Method and apparatus for multi-level ray tracing |
US9292965B2 (en) | 2009-03-19 | 2016-03-22 | International Business Machines Corporation | Accelerated data structure positioning based upon view orientation |
US9070208B2 (en) * | 2011-05-27 | 2015-06-30 | Lucasfilm Entertainment Company Ltd. | Accelerated subsurface scattering determination for rendering 3D objects |
US20120320073A1 (en) * | 2011-06-14 | 2012-12-20 | Obscura Digital, Inc. | Multiple Spatial Partitioning Algorithm Rendering Engine |
US9183667B2 (en) | 2011-07-15 | 2015-11-10 | Kirill Garanzha | Out-of-core ray tracing with memory-efficient page generation |
-
2015
- 2015-08-20 US US14/831,726 patent/US9984492B2/en active Active
-
2016
- 2016-03-16 KR KR1020177028141A patent/KR20170134455A/ko unknown
- 2016-03-16 JP JP2017550704A patent/JP2018513469A/ja not_active Ceased
- 2016-03-16 WO PCT/US2016/022566 patent/WO2016160334A1/en active Search and Examination
- 2016-03-16 EP EP16714125.8A patent/EP3278306B1/en active Active
- 2016-03-16 CN CN201680017649.1A patent/CN107408312B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090256845A1 (en) * | 2000-06-19 | 2009-10-15 | Igor Sevastianov | Accelerated ray tracing |
US20080074417A1 (en) * | 2006-09-27 | 2008-03-27 | Eric Oliver Mejdrich | Reallocation of spatial index traversal between processing elements in response to changes in ray tracing graphics workload |
US20090106530A1 (en) * | 2007-10-17 | 2009-04-23 | Christian Lauterbach | System, method, and computer program product for generating a ray tracing data structure utilizing a parallel processor architecture |
CN102282591A (zh) * | 2008-09-10 | 2011-12-14 | 柯斯提克绘图有限公司 | 光线跟踪系统架构和方法 |
CN103106681A (zh) * | 2011-08-04 | 2013-05-15 | 辉达公司 | 用于构建加速结构的系统、方法及计算机程序产品 |
US20130235049A1 (en) * | 2012-03-09 | 2013-09-12 | Nvidia Corporation | Fully parallel in-place construction of 3d acceleration structures and bounding volume hierarchies in a graphics processing unit |
CN103440238A (zh) * | 2012-03-09 | 2013-12-11 | 辉达公司 | 图形处理单元中的3d加速结构的完全并行适当地构造 |
CN102682106A (zh) * | 2012-05-07 | 2012-09-19 | 电子科技大学 | 动态三维场景中加速数据结构的构建方法 |
CN103021018A (zh) * | 2012-11-07 | 2013-04-03 | 浙江工业大学 | 基于gpu的构建bvh树并行光线追踪方法 |
CN104050710A (zh) * | 2013-03-14 | 2014-09-17 | 想象技术有限公司 | 用隐式几何体进行3d图形渲染 |
Non-Patent Citations (6)
Title |
---|
ALEXANDER RESHETOV等: ""Multi-Level Ray Tracing Algorithm"", 《ACM TRANSACTIONS ON GRAPHICS (TOG)》 * |
COLIN FOWLER等: ""Accelerated entry point search algorithm for real-time ray-tracing"", 《PROCEEDINGS OF THE 25TH SPRING CONFERENCE ON COMPUTER GRAPHICS》 * |
GORDON MÜLLER等: ""Hybrid Scene Structuring with Application to Ray Tracing"", 《HTTPS://WWW.RESEARCHGATE.NET/PUBLICATION/2494770_HYBRID_SCENE_STRUCTURING_WITH_APPLICATION_TO_RAY_TRACING》 * |
JOSHUA BARCZAK: ""an improved multi-level ray tracing algorithm"", 《HTTPS://PDFS.SEMANTICSCHOLAR.ORG/E38C/FD472EC1A2018647A67F461F6955D94C9D1A.PDF》 * |
王建阔: ""光线追踪中场景数据的层次包围盒的并行创建及遍历算法"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
赵帅: ""基于实时光线追踪的场景加速数据结构研究"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110827387A (zh) * | 2018-08-10 | 2020-02-21 | 辉达公司 | 没有着色器干预下对交点进行连续层次包围盒遍历的方法 |
CN110827385A (zh) * | 2018-08-10 | 2020-02-21 | 辉达公司 | 树遍历的特定于查询的行为修改 |
CN109448121B (zh) * | 2018-09-26 | 2023-09-15 | 深圳市重投华讯太赫兹科技有限公司 | 一种三角网格模型的处理方法、处理终端及存储介质 |
CN109448121A (zh) * | 2018-09-26 | 2019-03-08 | 深圳市华讯方舟太赫兹科技有限公司 | 一种三角网格模型的处理方法、处理终端及存储介质 |
CN112085827A (zh) * | 2018-12-28 | 2020-12-15 | 英特尔公司 | 用于加速数据结构修整的装置和方法 |
CN112085827B (zh) * | 2018-12-28 | 2024-02-23 | 英特尔公司 | 用于加速数据结构修整的装置和方法 |
CN113781625B (zh) * | 2020-06-10 | 2024-03-15 | 辉达公司 | 适用于光线追踪的基于硬件的技术 |
CN113781625A (zh) * | 2020-06-10 | 2021-12-10 | 辉达公司 | 适用于光线追踪的基于硬件的技术 |
CN113808245A (zh) * | 2020-06-11 | 2021-12-17 | 辉达公司 | 用于遍历光线追踪加速结构的增强技术 |
CN113808245B (zh) * | 2020-06-11 | 2023-09-15 | 辉达公司 | 用于遍历光线追踪加速结构的增强技术 |
US11816783B2 (en) | 2020-06-11 | 2023-11-14 | Nvidia Corporation | Enhanced techniques for traversing ray tracing acceleration structures |
CN113192166B (zh) * | 2021-05-24 | 2022-08-30 | 上海曼恒数字技术股份有限公司 | 一种骨骼树还原方法及系统 |
CN113192166A (zh) * | 2021-05-24 | 2021-07-30 | 上海曼恒数字技术股份有限公司 | 一种骨骼树还原方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2016160334A1 (en) | 2016-10-06 |
EP3278306A1 (en) | 2018-02-07 |
EP3278306B1 (en) | 2022-04-20 |
JP2018513469A (ja) | 2018-05-24 |
US9984492B2 (en) | 2018-05-29 |
US20160292908A1 (en) | 2016-10-06 |
CN107408312B (zh) | 2020-09-29 |
KR20170134455A (ko) | 2017-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107408312A (zh) | 光线追踪应用中的有效层次结构遍历 | |
US11200725B2 (en) | Method for continued bounding volume hierarchy traversal on intersection without shader intervention | |
CN106233338B (zh) | 用于光线跟踪应用中的树遍历的开始节点确定 | |
KR102003655B1 (ko) | 그래픽 프로세싱에서 셰도우 레이들에 대한 트리 횡단을 위한 시작 노드 결정 | |
US11756256B2 (en) | Dedicated ray memory for ray tracing in graphics systems | |
CN110390644A (zh) | 通过平滑锯齿边缘向计算机生成的图像添加更大的真实感 | |
CN107111890A (zh) | 使用基于点积的固定功能逻辑的光线‑盒相交测试 | |
CN108701367A (zh) | 单遍次包围体阶层光栅化 | |
US11282260B2 (en) | Bounded volume hierarchy (BVH) tree traversal using spatial division | |
KR20220164442A (ko) | 그래픽 프로세싱 | |
US20240095993A1 (en) | Reducing false positive ray traversal in a bounding volume hierarchy | |
US20240095995A1 (en) | Reducing false positive ray traversal using ray clipping | |
CN115512031A (zh) | 图形处理 | |
US11861785B2 (en) | Generation of tight world space bounding regions | |
CN110827390B (zh) | 处理无序不透明和α光线/图元交点的方法 | |
CN117726743A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |