CN103765481A - 用于3-d场景加速结构创建和更新的系统和方法 - Google Patents

用于3-d场景加速结构创建和更新的系统和方法 Download PDF

Info

Publication number
CN103765481A
CN103765481A CN201280037833.4A CN201280037833A CN103765481A CN 103765481 A CN103765481 A CN 103765481A CN 201280037833 A CN201280037833 A CN 201280037833A CN 103765481 A CN103765481 A CN 103765481A
Authority
CN
China
Prior art keywords
scene
pel
volume
accelerating structure
volume elements
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
Application number
CN201280037833.4A
Other languages
English (en)
Other versions
CN103765481B (zh
Inventor
J·A·麦库姆
L·T·皮得森
A·德怀尔
N·内塞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Imagination Technologies Ltd
Original Assignee
Caustic Graphics Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Caustic Graphics Inc filed Critical Caustic Graphics Inc
Priority to CN201610262778.9A priority Critical patent/CN105957134B/zh
Publication of CN103765481A publication Critical patent/CN103765481A/zh
Application granted granted Critical
Publication of CN103765481B publication Critical patent/CN103765481B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/08Volume rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/10Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/12Bounding box
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/32Image data format

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

用于产生加速结构的系统和方法提出了将一个3-D场景细分成多个体积部分,这些体积部分具有不同的大小,可以使用一个多部分地址来寻址每个体积部分,该多部分地址指示每个体积部分的位置和相对大小。对一个图元流进行如下处理:根据一个或多个标准对每个图元进行表征,选择多个体积部分的一种相对大小以便用于包围该图元,并且找出包围了该图元的、具有这种相对大小的一个体积部分集合。将一个图元ID存储在一个高速缓存的每个位置中,该高速缓存与该体积部分集合中的每个体积部分相关联。响应于在该处理过程中做出的每个高速缓存逐出决定,选择一个高速缓存位置用于逐出。响应于所逐出的高速缓存位置,根据所逐出的高速缓存位置的内容来生成一个加速结构的一个元素。

Description

用于3-D场景加速结构创建和更新的系统和方法
相关申请的交叉引用
本申请要求2011年8月5日提交的标题为“加速结构创建的系统和方法(Systems and methods of Acceleration Structure Creation)”的美国临时申请号61/515,801的优先权,出于所有目的,该申请通过引用以其全文结合于此。
技术领域
本主题的一个方面涉及用于有待渲染的3-D场景的场景加速结构的创建,并且在一个更具体的方面涉及对这种加速结构进行创建和更新,以便使用光线追踪用于对来自3-D场景描述的2-D图像进行渲染。
背景技术
用光线追踪对来自3-D场景描述的逼真2-D图像进行渲染在计算机图形学技术领域内是众所周知的。光线追踪通常涉及到获得由多种几何形状组成的场景描述,这些几何形状对场景中的结构的表面进行描述。如果这些几何形状是能够被有待使用渲染系统处理的一种形状类型的形状,则它们经常被称为图元;否则,通常对这些几何形状进行处理以便基于这些几何形状产生图元。例如,可以对贴片(patches)进行处理以便产生三角形图元。
图元可以与纹理和其他指令计算机图元的质量应如何影响碰撞该图元的光的信息相关联。光线追踪可以如实地对复杂光照、光透射、反射、折射等进行渲染,因为光线追踪可以对与场景的元素交互的光的物理行为进行建模。
光线追踪中常见的操作是确定光线与场景中的一个或多个图元之间的相交。在对光线追踪系统的物体进行定义时所使用的图元的示例是由位于3-D场景空间内的一个顶点集合组成的三角形;本说明书以此熟悉的示例继续下去,但三角形图元的使用是为了清晰性,而不是限制性的。
光线的定义可以由一个原点、和一个方向以及沿着光线的当前裁剪(clipping)距离组成,对于光线而言,裁剪距离可以被标识为“t”。当前裁剪距离对为光线检测到的当前最近的相交进行标识,或者在没有检测到的相交的情况下,标识已经在超过该距离之外的距离上测试了光线的相交,并且没有发现相交。当光线完成相交测试时,可以返回最近的检测到的相交,并且确定用于该相交的信息,如与该光线相交的图元的标识。
质朴地,通过反复地测试场景中的每一个三角形可以为给定的光线确定这些结果,以便对最近的相交三角形进行标识。虽然这种质朴的方法对带有少量三角形的场景而言以可令人接受的方式工作,但此方法对复杂的场景和对商业产品而言是难解决的,其中,对于每个有待渲染的帧而言,可能需要被测试数百万甚至数千万或数亿条光线与数百万个三角形的相交。
为了加速这种相交测试,使用3-D空间加速结构。这些加速结构通常将3D空间细分成多个不同区域来工作,其中,这些区域各自可以包围(bound)多个图元。然后,可以首先对这些区域中的每个区域进行相交测试,以便确定是否需要单独测试该区域中的图元。在一些情况下,加速结构可以是分层级的,从而使得执行加速结构内的不同区域的多次测试,以便对有待测试与给定光线相交的图元的相对小的集合进行标识。
对于一个适当组装的加速结构而言,光线相交测试的总数应实质上小于在每条光线与场景中的每个三角形之间已经执行的光线三角形测试。
发明内容
本概述描述了一种系统和方法的概览,其中,可以实践或实施各种更多的特定方面。然后介绍了这些特定方面中的一些方面。
在一个方面中,披露了一种用于为图元流产生加速结构的方法和装置。这些图元位于3-D场景中。该加速结构可以具有一种选定的类型,如包围体积层次,或kD树。包围体积层次可以使用一种选定类型的形状,如球体或轴对准包围盒。
为了产生加速结构,为3-D场景形成层级空间细分并且该细分包括不同粒度等级下的多个元素集合。对每个流式图元进行分类以选择一个粒度等级,在该粒度等级下,图元有待被来自所选定的粒度等级的元素的集合包围。作为一个具体的示例,较大数量的较小空间细分可以用于共同地包围一个给定的图元,或者可以使用较小数量的较大空间细分。较大数量的较小空间细分可以在该层级空间细分的更细粒度层内。
对于所选定的粒度等级而言,对层级空间细分的一个或多个元素进行标识,这些元素共同地包围着图元。将图元ID添加到该层级空间细分的每个所标识的元素的高速缓存条目中。对进一步的图元可以类似处理,从而使得可以将多个图元收集到该层级空间细分的一个给定元素中。
在该层级空间细分的的每个元素内,对该元素内收集的那些图元的覆盖范围进行追踪。在一个示例中,通过在用该元素包围这些图元(或部分图元)的元素内确定一个子体积来对覆盖范围进行追踪。在这种方面中,对于包围体积的一种给定形状而言(如立方体或球体),覆盖范围可以被视为多个体积的并集。
最后,可以从高速缓存中逐出层级空间细分的一个给定元素的一个高速缓存条目。该元素的覆盖范围用于形成、定义或选择将用于光线相交测试的加速结构的一个元素。还使该元素的覆盖范围聚合,其中,该层级空间细分的其他元素的覆盖范围聚合成该层级空间细分的一个更大的元素。一个或多个图元可以与该更大的元素(和该粒度等级下的其他元素)直接相关联,并且覆盖范围可以被保持为所有这些元素的并集。还可以高速缓存此信息(对这些包围元素和/或图元进行标识)并且该信息可以最终用于定义该加速结构的另一个元素,并且可能被聚合成该层级空间细分的一个仍然更大的元素等,直到已经确定用于该加速结构的一个或多个根节点。
在一个特定方面中,根据本披露的系统和方法使图元与包围盒元素凝聚,以便形成一个加速结构。使用工作空间细层级次确定该加速结构的元素,其中,元素是可容易地寻址或标识的。在一个示例中,可以使用3-D位置和粒度等级对元素进行唯一地定址;换言之,每个3-D空间位置被多个粒度等级中的每个粒度等级下的该细分层次的恰好仅一个元素包含。可以将所构建的一种类型的加速结构(形状和/或元素的相互关系)与如何展现该工作空间细分层次解耦。
在另一个方面中,一种用于产生加速结构以便在3-D渲染中使用的方法包括根据一种包括与3-D坐标系的一个或多个轴对准、图元的绝对大小、以及图元的长宽比中的一个或多个的启示法来表征图元流中的每个图元。该方法提供用于为该图元所在的3-D场景确定一个工作细分结构的元素的一个集合。该元素集合可以具有相同形式和/或相同大小,可以从多种形式中选择,并且每个形式具有多个大小确定的细分元素。该图元流中的不同图元可以被不同形式和大小的元素包围。每个元素还可以具有由该元素定义的一个体积内的多个图元的一部分(或全部)。基于该工作细分结构的元素形成一个加速结构的叶节点。每个叶节点包括一个对应的包围体积,该包围体积包围用于该叶节点的工作细分结构的元素内的那个或那些图元。该方法还包括递归地使包围体积凝聚以产生越来越大的包围体积。在每次递归凝聚中,该加速结构的一个元素包括一个包围体积,该包围体积是被凝聚成该元素的每个包围体积的并集。
另一个方面涉及光子映射和形成加速结构以便在查询映射的光子时使用。在一个示例中,一种方法包括正向地追踪来自3-D场景中的光源的光线以对3-D空间中的对应位置进行标识,一个或多个光子有待沉积在该位置处。在体元层次内选择一个粒度等级,在该粒度等级下存储每个光子。基于该光子的有效半径的指示和距离该光源的距离来选择该粒度等级。在一个示例中,光线微分用于表示该有效半径;执行光子发射的硬件或软件还可以提供关于这种有效半径的元数据。每个光子位于基于该有效半径选择的一个粒度等级的一个体元内,并且该体元包括3-D空间中的用于该光子的标识位置。该光子相对于该体元的数据被高速缓存。响应于逐出一个高速缓存位置的指示,与该位置相关联的光子数据被写出并且用于产生表示所写出的光子数据的一个加速结构的一个元素。在这种情况下,在对光子流进行处理的过程中,可以混合或以另外的方式将光子组合成一个分布、函数或参数化的表示。光子映射的其他方法包括将所有光子映射到层次中的每一级上并且然后选择性地对该层次中的节点进行修剪以产生具有均衡的光子数量的节点,和/或产生一个以适当的精确度表示光子的加速结构。在一些示例中,例如,为一个加速结构中的更大的节点混合光子数据并且针对这些节点的面收集或在一个节点的中心处收集光子数据。
其他需注意的方面在于实践所披露方面的系统可以保持流数据到或离开外部存储器的高带宽链路,而如上所述与处理元素形成一体的相对小的存储器提供用于高速缓存的空间。因此,使图元和加速结构数据流式化,并且不在外部存储器中保持大量的加速结构状态。通常,根据本披露构建的系统可以在O(n log n)的最坏情况构建时间中产生加速结构,其中n表示所处理的图元的数量。在一些实现方式中,可以用最小浮点计算来处理图元,最小浮点计算允许相对小的固定功能硬件实现方式并且因此可以硬件方式成本有效地实现。可以调谐系统和方法以形成特殊种类的加速结构。
附图说明
为了清晰性,附图展现了按2-D形状在3-D空间中定义的图元和其他体积元素。然而,这些元素仍然被称为并且作为在3-D空间中定义的元素对待。本领域的普通技术人员从这些披露中将理解到如何在3-D渲染中实施这些技术。
图1描绘了在其中可以实现本披露的多个方面的示例系统的概览;
图2描绘了根据本披露的一种示例方法;
图3描绘了可以用于支持图2中描绘的方法的示例分量方法;
图4A至图4F描绘了3-D场景的多级细分的示例的各个方面,以便用于根据本披露的方法和系统中;
图5描绘了有待为其创建加速结构的图元的示例微型集合;
图6描绘了映射到选定粒度等级(LOG)下的体元上的图元中的一些图元;
图7描绘了映射到与图6的图元不同的LOG下的体元上的相对大且规则的图元;
图8描绘了一个示例,其中图6中出现的图元映射到比图6中的更细粒度LOG下的体元上;
图9针对映射到具体体元上的图元的一部分描绘了一个立方体覆盖体积
图10针对映射到图9的体元上的图元的一部分描绘了一个轴对准的覆盖体积;
图11描绘了一个示例,其中图10的轴对准的覆盖体积被延长以包括另一个图元;
图12描绘了包括来自更细粒度LOG的和来自直接在较粗粒度LOG下的体元中的图元的覆盖体积;
图13描绘了根据本披露的高速缓存的操作的各方面;
图14描绘了一个加速结构的逻辑视图,可以使用本披露的实现方式产生该加速结构;
图15描绘了可以使用本披露的实现方式产生的加速结构的封装存储器展现;
图16描绘了使用带有光线微分的光线追踪使光子沉积在3-D场景中的示例;
图17描绘了确定用于光子的加速层次的过程;
图18描绘了确定用于光子的加速层次的另一个过程;以及
图19描绘了一个示例系统,在其中可以提供本披露的实现方式。
具体实施方式
以下信息涉及一种用于生成加速结构的算法的示例,该加速结构包括包围3-D场景中的表面的元素。在一个特定的示例中,由图元定义这些表面,并且该加速结构用于光线追踪。在另一个示例中,可以创建该加速结构用于在光子查询时使用。
可以根据各种方法创建加速结构。尽管预期加速结构加速光线相交的测试,并且确实达到了该目标,但加速结构的使用在整体渲染系统内产生其他开销。例如,存在为给定场景构建加速结构的开销。
可以为静态3-D场景(即,不是动画的3-D场景)设计一些加速结构,并且相反,可以可变地放置视点和该场景中的光。在这种情况下,加速结构的相对仔细且耗时的构建会是合乎情理的。如果在长时期中将不变地使用静态场景(例如,从一个视点上观察有待构建的建筑模型),则出于这种目的,在该加速结构的质量整体判断中可以忽略构造该加速结构所需的时间。
然而,在动态场景中,对象可以进入、离开或在该场景中移动,改变其几何形状等。在这些种类的应用中,构建或更新加速结构的开销的量值可以成为对来自该场景的图像进行渲染所需的计算的一个实质性部分。对于这些更频繁更新的场景(如在动画场景中)而言,或者当可以对该场景作出实时变化时,加速结构的重建或构建时间(以及实现这种构建时间所需的计算机资源的量值)可以是对构建加速结构的给定方法的可用性进行判断一个因素。因此,对于动态应用而言,构建和使用加速结构的方法应将构建(或重建/修改)加速结构所需的时间和资源以及加速结构帮助加速场景的实际光线追踪的程度两者作为因素计入在内。
这种情况还考虑了以下一般事实:对于构建加速结构的给定方法而言,就每条光线将需要比较少的相交测试的意义而言,花费更多的计算资源以构建给定加速结构产生了“更好”的加速结构。在光线追踪的背景下,使用加速结构的一个目标是,随着场景变得越来越复杂,对光线相交测试获得更接近恒定的分辨时间。
可以针对给定的三角形计数以及解析每个光线相交花费的平均时间(在此称为“遍历时间”)基于对结构进行组装所需的时间来判断创建加速结构的途径。测量的示例单位可以分别是“每秒三角形数量”和“每秒光线数量”(可以为特定架构或计算资源的固定和特定集合对此进行分析)。可以有用的是将这些因素进一步表达为“每光线的节点测试数量”和“每光线的三角形测试数量”,这可以使得度量标准更加独立于具体的计算资源。
给定加速结构构建算法的普通性还会是有意义的。例如,一些种类的加速结构构建算法可以比一些种类的3-D场景的其他算法表现得更好。此外,如果在加速结构中使用特殊种类的形状或程序,一些种类的算法可以产生更好的加速结构。例如,在用于加速结构的许多典型的包围体积中可以不良地包围(例如,太松散)“细长(long-skinny)”和/或离轴的几何形状。对此特征不敏感的形状在遍历过程中与光线相交成本更高并且难于在加速结构组装过程中产生。
如果希望将一种给定的加速结构构建方法用在多变的并且经常未知的场景构建条件下,则可以令人希望的是为各种可以具有不同种类的特征的样本场景收集这种度量标准,这些特征可能用不同的方式挑战该加速结构构建算法。更确切地说,一些加速结构方法可以具有有利的遍历时间,但以缓慢的构建时间(许多秒或分钟的量级)、对商业上可行实现方式的不切实际要求,或两者为代价。还可以使场景特定效应变得明显。
在一个方面中,本披露涉及多种加速结构构建方法,这些方法在动态场景(如在动画中)或每秒需要更新3-D场景许多次的其他情况中是有用的,但其中计算要求是现实且均衡的(然而,不要求与动态场景一起使用)。在一些方面中,本披露涉及可以基于目标可得计算资源或给定性能目标或两者进行缩放的多种方法。因此,在一些方面中,本披露涉及用于实现均衡系统的方法,其中考虑了加速结构构建时间和光线遍历时间。
根据本披露的加速结构构建算法的示例特征可以包括以下各项中的任一项:避免递归的流式管线、O(nlogn)最坏情况构建时间,其中n=三角形计数(triangle_count)。简单且高效的方法确定自底向上构建中的空间邻接。使用与使用简单整数运算并且避免/减少浮点计算的体元化/3D扫描转换类似的方法处理三角形。中间数据传送/带宽使用会受到约束以保持在片上本地存储器的特定量值内。可以确定结果加速结构的质量与可用本地存储器存储之间的折中。可以流式化片外数据传送/带宽使用,如流式化几何形状的读出和流式化加速结构定义数据的写入。
本披露提供了可以跨细长几何形状放置多个包围体积以收紧几何形状的包围以便减少浪费的光线节点测试的算法。Kd树提供规则结构的示例,并且包围体积层次(BVH)是可能不规则的加速结构的一种分类。加速结构还可以是同类的(其中,给定的元素仅直接包围其他的元素或图元,并且叶节点直接包围所有图元)或者不同类的,其中,任何给定的元素可以直接包围其他元素和图元的组合。
在以下披露中,可以考虑用顶点定义3-D空间中的一个点,并且该顶点可以用多个值的元组表示。可以通过3个顶点定义一个三角形图元。在三角形网格中,可以在不同图元之间共享多个顶点,而不是通过3个值的独特集合定义每个图元。一个网格还可以包括一个解释规则,如缠绕顺序。例如,三角形条带网格使用一个附加顶点结合前一个三角形的两个之前的顶点来定义多个三角形。因此,对于n个顶点,描述n-2个三角形。“三角形”网格使用3个单独的顶点定义一个三角形。如此,对于n个顶点,描述n/3个三角形(n可被3整除)。可以实现三角形图元的各种其他展现。并且,在各种实现方式中,图元不一定是三角形的而可以由其他种类的表面形成。如此,三角形图元的示例不是限制性的,而是用于清楚且简洁地阐述本披露的各方面。
系统和方法可以处理图元的网格(如三角形条带)并且可以输入或以另外的方式访问针对有待处理的网格的顶点连接性规则。可以使用标识符对网格进行标识;指针可以参照对三角形网格进行定义的顶点数据的阵列。如总三角形计数的信息。
本披露主要涉及一个示例,其中,固定3-D场景细分(例如,体元格栅)用作工作场景细分,以便将图元流映射到3-D空间的多个部分上。将一个图元集合映射到3-D场景的一部分上之后,从该映射中创建有待在渲染过程中使用的一个加速结构的一个或多个元素。因此,在本披露中,可以产生一个最终加速结构,该最终加速结构具有与用于将图元映射到3-D空间上的场景细分不同的元素。然而,该最终加速结构不一定在特征上与用于映射的3-D场景细分不同。
在一个示例中,关于3-D场景中的位置来限定几何形状,如使用3-D世界空间坐标,经常从(0,0,0)位置进行参照。这样,所有几何形状将位于3-D空间中的某个地方,在场景的所有维度中共同地定义该几何形状的范围。3-D场景细分可以与被几何形状占用的空间进行匹配(例如,该场景细分的顶层部分的位置可以与该几何形状对准)。然而,在此处的一种方法中,3-D场景细分的全范围在大小上被四舍五入成2的下一个更高次幂。然后,根据2的幂确定所有场景细分的大小并对其进行放置,并且使用整数为其编索引。
在一个示例中,该3-D场景细分为轴对准立方体积的一个多级集合,为了简洁性,在此每个立方体积被称为一个体元。可以在3-D中将体元类推到像元。多级包括3-D场景中的任一给定点被不同大小的若干体元包围(封闭),其中不同大小的体元处于多级集合的不同层级中。在此通过粒度等级(LOG)对层次中的每个层级进行标识,在多级集合内引起从较大到较小立方体的渐进。例如,3-D场景的整体可以标识为LOG=0,并且其可以包含一个单个立方体。在一个示例中,可以发现给定LOG下的多个立方体为(LOG+1)^3,作出1,8,27,64等的渐进。每个LOG下的体元共同地覆盖该3-D场景。在一个示例中,有32个粒度等级,这将允许LOG=31下的32,768个体元。除非另有说明,否则将图元映射到其上的3-D场景细分可以将空间表示为3-D场景内各分辨率下的分立体元的一个3D格栅集合。
如将详细解释的,可以使用3-D整数坐标[xi,yi,zi]对给定LOG下的每个体元单独地进行定址。为了充分地限定该多级集合中的任何体元,还必须限定该体元的LOG。限定3-D整数坐标限定了具有所限定整数坐标的所有LOG的一个体元集合。因此,本披露提供了一种3-D场景细分,允许容易地对该3-D场景细分的任何成员进行定址或唯一地进行标识。体元为示例途径,而不是排他性的。更普遍地,可以使用允许用从小到大变化的邻域对3-D空间的细分部分进行定址的任何种类的途径。仍然更普遍地,可以使用允许对3-D空间的细分部分进行定址的任何途径,该3-D空间限定以下各项中的一个或多个:细分部分的形式、细分部分相对于场景坐标轴的定向、以及细分部分的相对大小。例如,如以上举例说明的,3-D空间中的点和一个偏移量集合可以用于描述一个包围体积集合,而不是描述每个体元的一个明确整数坐标集合。鉴于以上内容,关于附图,以下介绍了各种细节和示例。
图1描绘了一个示例系统50。系统50具有一个输入图元流51的分类器52。分类器52为每个处理的图元产生一个体元坐标[XYZ]和一个LOG([XYZ]LOG59作为示例)。分类器52耦合到扫描转换器54的输出端上,该扫描转换器可以访问表示一个体元坐标系统的数据53。扫描转换器54输出到一个体元高速缓存56。扫描转换器54可以作为一个数字微分分析仪来工作以用于沿着图元的边缘步进并且确定遇到的每个像元是否在该图元内。在一些实现方式中,扫描转换器54可以使用整数来操作以用于定义细分元素的边界;在一些实现方式中,通过增加空间的大小使所有细分元素与整数边界对准,包围元素被放置在该空间中以允许实现上述对准。与传统扫描转换算法(其可以要求该边缘至少横穿多边形的中心)相比之下,此处的扫描转换对落入该图元内的体元的任何部分进行追踪。可以在固定功能硬件中有益地实施扫描转换。可以实施各种途径以提供扫描转换,以便用在本披露的实现方式中。更普遍地,多种实现方式可以提供一种产生完全包含该图元的一个或多个3-D形状的一个集合的描述,并且可以分开地对每个形状进行定址,如以便为每个这种形状建立一个高速缓存条目(以下所述)。
体元高速缓存56通过体元高速缓存选择器/输出端58将高速缓存条目输出。体元高速缓存选择器/输出端58可以回收来自一个所逐出的高速缓存条目的数据(如以下解释,被称为Vbnode数据55)。这种数据还转到格式转换器60,该格式转换器产生存储在存储器62中的加速结构元素。Vbnode数据55也可以存储在存储器62中。如果体元高速缓存选择器58不回收,格式转换器可以回收Vbnode数据55。以下更加详细地披露了这些组件的示例操作和使用。
Vbnode数据定义一个临时数据结构,该临时数据结构表示图元所映射到的空间细分的一个元素。因此,每个Vbnode表示一个空间3D体积。每个Vbnode可以包含指示对其他Vbnode关系的数据。例如,Vbnode可以具有两个链路指针,分别指向一个同层级Vbnode和指向或者一个第一子Vbnode或者一个顶点。就其不描述最后层次中的最终元素的意义而言,Vbnode是瞬态的。相反,在将图元映射到工作空间细分上的过程中创建它们、将其传递到拷贝出阶段以便转换成加速结构的最终元素并且然后不再需要它们。在一些实现方式中,不管总体场景层次最终有多大,对Vbnode进行管理从而使得它们将全部保持在本地存储存储器内。在一个示例中,Vbnode旨在尽可能合理地小以便允许其足够的数量在本地存储中的层次构造过程中是活跃的。在一种实现方式中,每个需要32个字节,允许每64高速缓存行保留2个。
可以在Vbnode中提供的示例信息包括对该节点是否为一个叶节点的一个指示、对该节点的引用的计数。如果该节点具有零引用,则不需要保持该节点。指示该节点相对于父节点所在的地方(例如,在八叉树实现方式中,Vbnode可以指示该父节点的卦限)。Vbnode还可以将数据携带通过该管线,从而使得下游功能或稍后时间中进行的功能可获得该数据。
图2描绘了一种示例方法的概览。在120,将图元数据输入到分类器21。在122,确定该图元的特征;在124,使用或分析所确定的特征以便选择该图元被体元包围时所在的粒度等级(LOG)。简言之,更细粒度的LOG致使使用更小的体元,而较粗粒度的LOG致使使用更少的更大体元。分类器21可以根据使用不同种类数据输入的一种或多种启发法来工作。关于图3提供了与图元分类的示例方法相关的进一步细节。
在126处,对用于包含所选定LOG下的图元的一部分的每个体元的空间定位器进行标识;本质上,对包含该图元的任一部分的体元的集合进行标识。用于每个体元的空间定位器和LOG确定高速缓存56中将与该图元相关联的条目的集合(见图13)。
在128,并且针对在126处确定的每个体元,计算一个覆盖范围。在一个示例中,用预先选择的形状表示覆盖范围,在所选定的体元内具有多个维度和一个位置,从而使得该覆盖范围仅是一个包围该体元内的所有图元的所有部分的单个连续形状。在一个示例中,覆盖范围可以是立方体形状,或者为轴对准的包围盒,但其不要求所有边具有相等的维度。覆盖形状的其他示例包括面体和球体。可以基于将在最终产生的加速结构中使用的一种形状来选择用于表示覆盖范围的形状。
在130,在128处计算的覆盖范围存储在高速缓存56中。如上所述,针对每个被标识为包含被处理图元的一部分的每个体元,执行126、128和130中的每一个。因此,在处理图元之后,可以用至所处理的图元的链路对一个或多个体元高速缓存条目进行更新,并且将相应地更新与这些体元高速缓存条目中的每个相关联的一个或多个对应覆盖范围。
在130之后,可以处理进一步的图元。最终,将逐出该高速缓存中的一个体元,因为在大多数实现方式中,被分配用于高速缓存的存储器的量值将小于存储场景的所有图元的数据所需的存储器的量值,从而使得必须实时地创建加速结构的元素并且其在执行所披露方法的系统中是瞬态的。
在142,从所逐出的高速缓存内容中确定加速结构的一个或多个元素。在创建后不能修定或编辑加速结构元素的情况下,更大的高速缓存大小允许创建更好的加速结构。当仅瞬态地保持几何形状和其他内容时,出现这种情况,从而可能使得编辑加速结构节点所需的状态是不可获得的。为了最小优点,针对实际考虑(如引起执行过多计算),也可以避免这样。
向128提供从该高速缓存中逐出的内容的覆盖范围信息,其中,基于所提供的覆盖范围信息和现有的覆盖范围信息为更高层级体元计算覆盖范围。在其他实现方式中,覆盖范围信息也可以继续经历步骤120至126。
实际上,可以将图元流化,并且当高速缓存已满时,可以从高速缓存中逐出体元,从而使得较粗粒度的体元开始从更细粒度的体元接收覆盖范围。在同类的实现方式中,所有图元被叶节点包围,从而使得较粗粒度体元仅包围叶节点的覆盖范围,而不直接包围图元本身。在多种实现方式中,可以刷新高速缓存56或者该管线以另外的方式运行以在处理覆盖盒之前完成所有图元的处理。在一些实现方式中,高速缓存56可以具有两个独立可控的部分,这些部分分别被分配至叶节点和非叶节点。
图3描绘了一种对图元进行分类的示例方法,以便选择有待包围的图元所在的LOG。关于图4至图12披露了图2与图3如何与不同种类图元一起表现的示例。
在152,对包围被表征的图元的轴对准盒的表面积进行计算。在154,可以发现被分类图元的绝对大小,并且在156,可以确定该图元的长宽比。该图元的长宽比为长度对宽度比率的计算结果;细三角形具有相对高的长宽比。例如,高的长宽比用作一个指示物,指示该图元可能无法适当利用单个大的包围体积。
在160,针对该图元,计算图元表面积对该包围体积的表面积的比率。这种比率用作一种指示,指示该图元关于该包围盒的一个或多个轴(除非变换,否则对应于场景轴)对准的良好程度。例如,三角形通常可以竖直走向,并且因此与包围体积的一个竖直面对准,该竖直面可以是更小的厚度、具有更小的表面积,从而使得图元表面积对这种包围体积的表面积的比率将更大。本计算是确定这种特征的一种示例方法;可以提供其他方式。对于所有这些确定结果或计算结果而言,可以缩放或以另外的方式改变数字,并且它们的确需要将可以外部使用的或可获得的任何数量表示为一个绝对比较。例如,对于轴对准比率,该图元的面积的两倍可以用于计算该比率,同时仍然保持一致的度量标准。类似地,在适当情况下可以清除常量以简化计算。
图3的剩余部分提供了对这些数据进行求值以便实现LOG选择的示例。如将变得明显的是,这种求值不需要具有坚实的决定或硬性的决定,而相反可以是启发式的。图3中描绘的求值被显示为全都被并行执行,但那是一个实现方式细节。可以通过测试参数或条件的不同集合来执行调谐。在162,相对高的长宽比在165处引起更细粒度的趋势。在163,具有低的长宽比的相对大(绝对大小)的图元在166处引起更粗粒度的趋势。在164,指示相对高的轴对准的轴对准得分在167处提供更粗粒度的趋势。在170处,基于这些输入中的一个或多个进行粒度等级的选择。如以上介绍的,对该选择的输入通常在多个值的连续统上,并且可以具有相当多的粒度等级(在一个示例中为32)。
进一步地,某些启发法对一些情况而言比其他情况更相关。例如,以上已经介绍了给定体元内的覆盖范围的概念,并且以下将更加详细地对其进行描述。如果用AABB追踪覆盖范围,则轴对准可以是一个被更高加权的输入。如果对球形覆盖范围进行追踪,则可以对长宽比进行更高加权。可以执行自动化调谐算法,该算法将搜索输入空间并且针对不同的加速构建设置确定什么选择标准是合适的;可以执行手动调谐,或者以上的组合。可以向这种过程提供其他输入,并且这些是示例性的。在所有情况下,不需要提供所有的输入。
图4A至图4F开始一个应用以上披露的简单示例。图4A描绘了体元5至9,被提供作为3-D空间细分以便用于构建加速结构。图4A的示例示出了多个体元具有相同的形式并且彼此嵌套的情况。此处,术语“形式”用于描述空间细分中所用的一个或多个体元形状的各方面。例如,如图4A中的2-D中所示,立方体形式在所有三维中提供相等的长度边,而矩形形式具有一个细长的维度。形式还指非立方体形状的长宽比,因为矩形形状可以具有低长宽比的表面(更立方的)和/或具有高长宽比(细长并且没那么立方的)。由于实际上体元在3-D空间中,所以矩形的一些面可以是立方体的,而其他面高度细长。并且,因为可以用不同大小(例如,作为嵌套体元结构,像图4A中所示的那样)提供给定形式的体元,形式还可以指不同的缩放特性,其指示给定体元放大或缩小的程度。在一种方法中,体元的每一维均匀地缩放(例如,缩放2的幂)。在另一种方法中,一维或两维均匀地缩放,并且另一维可以有区别地缩放或根本不缩放。
术语“形式”还可以指3-D空间中的体元的定向差(例如,与3-D坐标空间中的一个平面或另一个平面的对准)。如关于图4B至图4F所示,可以提供对不同维而言具有不同相对大小、定向差等的各种其他形式。总而言之,图4A描绘了一种途径,其中所有体元具有一个立方体体元形式。图4B至图4F描绘了其他形式的体元的多方面,其可以在细分中单独或共同使用。在一个具体方法中,在任何给定空间细分内,可以提供多种体元形式的体元,并且来自可获得体元形式的适当体元的集合可以被选择用于包围一个具体图元。
在图4B,示例体元14a和14b在横截面上是矩形的,在横截面平面中具有非立方体横截面。在图4B中,没有描绘深度,并且普通技术人员将从本披露中理解到体元14a和14b的深度为这些体元的形式内的另一个可变参数。例如,该深度可以大致等于、小于或大于该高度。图4B还描绘了矩形体元15a和15b(具有一种形式,其中横截面平面的长宽比高于体元14a和14b),并且还描绘了体元15a和15b将嵌套像体元14b一样的体元所定义的体积(在这些体积内),因为将会跨过由该虚线框标识的空间来重复体元14b,在该虚线框中定义体元14ab和和15ab。体元14a和14b之间的定向差示出了给定维度形式的体元还可以具有多个定向差。为了清晰性,在所有这些示例中,对于所描绘的每个体元形式而言(例如体元14b),正在使用的整个3-D空间可以填充有那种形式的体元,并且再次填充有相同形式的但更小的体元。多种不同大小和定向下的每种体元形式可以填充该3-D空间。
图4C描绘了为3-D细长体元的体元16a和16b,并且虚线横跨体元16a的面,描绘了该面的维度内具有形式16a和16b的体元的缩放,但不是该深度。图4D至图4F描绘了体元17至19,这些体元在3-D空间中具有不同的缩放度和定向。在一种方法中,体元为轴对准的包围盒,与图4A至图4F的示例一致。
从以上披露中,在一些实施例中应明显的是将3-D场景进行细分从而使得3-D场景中的每个位置(定位)在多个体元内,这些体元可以具有不同形式和/或不同大小中的一个或多个。可以单独地对这些体元中的每个体元进行定址。可以根据预先确定的惯例来构造地址。例如,可以选择体元的一个预先确定的形式集合(例如,立方体、正方形末端的细长矩形、薄而大面积的矩形等等)。这些形式中的每种形式可以被安排成用于在不止一个定向上填充该3-D场景,例如可以平行于XY平面以递增的Z并且在YZ平面中以递增的X堆叠多个薄而大面积的矩形。这样,一个地址包括对体元的形式进行标识、对该形式的定向和对体元的大小以及还有位置进行标识的多个分量。因此,这些披露示出了一个完整的体元集合(可以从该集合中选择一个或多个体元用于包围一个具体的图元)可以由许多不同形式、大小和位置的体元组成,从而允许更好地选择体元来实现更好的包围体积。例如,灯柱和电话线柱可以被相似形式但不同大小的体元包围,而与该灯柱大小大致相同的壁可以被具有相似高度但总体上不同形式的体元包围。
图5描绘了位于3-D空间中的图元10至13,包括将为其创建加速结构的图元。图6描绘了在选定LOG下的体元20至23,其中图元10至12在体元20至23上重叠。图7描绘了较粗粒度LOG下的体元9,在该体元中包含了图元13。图6和图7描绘了多个图元可以完全被包含在一个体元中(如图7中)或者可以被一系列体元包围。图6和图7还描绘了图元可以具有非常不同的形状,具有不同长宽比和轴对准。图6描绘了图元10比图元11更加轴向地对准,并且描绘了图元10和11两者与图元13相比具有相对高的长宽比。根据图3的启发法,图元13可以映射到比图10和11更粗的粒度LOG上。
图8描绘了还仍然在更细粒度LOG下的体元25至31,并且这些体元共同地包围图元11。图元11没有图元10那么轴对准,并且因此,可以有益地使用体元25至31的一个更紧的拟合集合,从这些体元中产生加速结构元素。当然,取决于各种情况,还可以选择仍然更细粒度的LOG,这将仍然提供更紧的包围,但以更多的体元元素为代价,这通常与在最终加速结构中具有更多元素相关联,因此在避免对图元而言太松散的包围盒、但不产生太多的全都需要被测试和存储的加速元素之间给出折中的示例。
图9描绘了体元20,其中图元11的一部分在该体元内。图9描绘了一个覆盖范围32,在本示例中其本身是一个立方体(要求所有边缘长度相等)。对于给定的体元而言,“体元覆盖范围”或简单地“覆盖范围”对体元的一部分进行定义,该部分至少部分地包围该体元中的所有几何形状(或者直接地或者并且被更细粒度的体元包围)。在一种示例实现方式中,该体元内的轴对准包围盒可以表示该覆盖范围并且与该体元的缩放成比例地定义。由于可以在一个体元位置内定义覆盖盒,所以可以用大幅度降低的精度展现该覆盖盒。在一个示例中,可以使用每轴8比特。在另一个示例中,覆盖体积为立方体。可以使用其他展现形式,如位置和在相对于该位置的一个或多个方向上的范围;在一些实现方式中,可以用任意复杂形状表示覆盖范围;然而,实现方式从使表现覆盖范围所需的数据量最小化中受益,从而使得可以在固定大小的高速缓存中同时表现更多的体元。
图10描绘了根据图9的一个示例,其中除了用AABB形状而不是立方体来追踪覆盖范围33之外,再次描绘了体元20和图元11。图11描绘了覆盖范围为空间的并集,该空间并集包括一个体元内存在的图元的所有部分;具体地,图元11现在添加到体元20上,并且覆盖范围34被生成作为覆盖范围33的并集,并且也是包围图元10所要求的。
图12描绘了覆盖范围和图元如何可以聚合成较粗粒度LOG下的体元。还描绘了覆盖范围32和体元21以及图元10的覆盖范围35。如所描绘的,覆盖范围35和覆盖范围32被添加到体元38上。图元36也直接添加到体元36上。因此,体元38的覆盖范围在有待用于表示该覆盖范围的形状种类所确定的约束下(例如,体元、AABB、球体或其他形状)是覆盖范围35、覆盖范围32和图元36的并集。在本示例中,基于更细粒度体元的覆盖范围并且针对被体元(例如,体元38)直接包围的任何图元(例如,图元36)计算覆盖范围。因此,不直接从本示例中的图元重新计算较粗粒度体元的覆盖范围。
图13描绘了高速缓存56的示例及其操作。如上所述,高速缓存56存储每个体元的空间位置ID和指示该体元的LOG的数据。图13中描绘了这种情况的示例,如空间位置ID205、207和209。LOG206、208和210分别与空间位置205、207和209相关联。图13描绘了每个空间位置ID还具有一个保持的覆盖范围,该覆盖范围指示该体元内(直接地或间接地被包围)所有图元和图元的各部分的并集。此外,还提供了每个覆盖范围的和正在相对于该空间ID被高速缓存的形状(图元)的标识符。这种信息至少应对这些覆盖范围和/或形状进行标识,但不需要包括它们的定义数据。
在操作中,使用被输入到高速缓存位置映射器220的空间坐标和LOG(例如,[X,Y,Z]LOG218)对高速缓存56进行定址。这可以是为了向现有体元高速缓存条目添加覆盖范围或图元和创建新的体元高速缓存条目两者。在该示例中,映射器220使[X,Y,Z]LOG218散列(231)以产生一个用于对候选高速缓存位置(Loc237-239)进行标识(233)的散列值235;本方面与一个交错因数相关,并且如果该高速缓存允许任何位置存储任何体元,则不需要对候选位置进行标识,并且相反,可以保持一个空闲位置列表。如果该操作是添加体元(240)操作,则确定(245)是否有空闲位置;如果有,则在那里添加该体元;如果没有,则逐出(249)一个现有体元位置以使一个位置空闲。对于向位置添加的操作(241)而言,对该位置中是否仍然有空间做出确定(242),如果有,则添加图元或覆盖范围,而如果没有,则执行逐出(249)。可以根据启发法确定逐出哪个位置,如使用度量标准、或该位置中的元素的数目、或该位置中的体元的粒度等级与其他位置的平均值相比的差异、或这些的组合,或者另一种认为合适的启发法。与覆盖范围相关联的信息可以包括一个产生该覆盖范围的线程标识符、该覆盖范围从属的体元的地址以及一个至同层级和子节点(如果有的话)的链路。出于应用特定目的,可以提供其他字段用于将数据传送通过高速缓存。
应理解到可以在执行根据本披露的方法(和系统操作)的过程中进行各种变换。没有披露所有可能的变换,因为这些是实现方式的问题并且鉴于这些披露当进行实现时普通技术人员将能够确定是否和何时使用某种变换。以下提供了这种变化的示例。
如在以上示例中介绍的,3-D场景空间被细分成多个轴对准立方体体积的多级集合(如体元层次)。可以使用世界空间中的实数描述输入几何形状;因此,所有输入几何形状可以变换成一种具体LOG(或多种LOG)下的体元格栅内的坐标。此变换可以是缩放和平移成完全包含所有输入场景几何形状的包围立方体。在层次构造开始时,可以假设已知世界空间的轴对准的包围立方体包含所有这种几何形状(如来自渲染器内的在先顶点处理管线级的输出,耦合到此加速结构构建器上。变换之后,可以在本地坐标系中执行所有内部操作。当发生拷贝出时,使用逆变换在来自变换3-D空间中的展现的场景层次中产生对应的世界空间包围体积。为了执行这种逆变,该体元层次可以与可以包括每种LOG的特定数据的数据相关联。在一个示例中,这种数据可以包括:(1)本层次的包围立方体的最小世界空间坐标,(2)本层次的世界空间包围立方体的范围,(3)每LOG缩放信息,(4)场景体元到此LOG下的体元的缩放因数,(5)给定LOG下的体元的世界空间大小,(6)此LOG下的体元覆盖单元的世界空间大小,以及(7)此LOG下的最大可寻址体元。
一些实现方式也可以提供或允许实现内部变换,这些内部变换为加速结构元素的一个定义的子集提供增强的轴对准,这些元素典型地将包围一个物体。例如,该场景中的物体可以被加速结构层次内的自含式子树包围。可以通过允许任意方式转动该场景物体来将本物体及其子树转动成相对于一个内部有意义的轴集合而轴对准,这意味着不再相对于这些场景轴一致地定义该物体。在加速层次和/或场景几何形状的光线追踪或其他使用过程中,当光线将此子树输入到该内部轴集合中时可以变换该光线(原点、方向和一个或多个裁剪距离)并且测试其在该变化条件下的相交,这允许在更高效的层次中遍历。可以将相交点变换回场景空间,如为了比较碰撞距离,或在着色过程中。
图14和图15描绘了从所逐出的体元高速缓存位置的内容中导出的加速结构的多个方面。图14描绘了叶元素277和278,其分别包围图元279-280和图元281-282。这些节点元素进而被较粗粒度元素274和275包围。元素2725包围元素275和图元273。275与274之间的虚线指示同层级关系。图15描绘了来自图14的元素的打包,这可以被提供用于存储在存储器中。加速结构可以存储图元的定义数据的标识符或指针、和/或该加速结构的元素。然而,鉴于顶点可以具有与其相关联的属性的不同量值,图元可能需要更多的存储,并且可能需要大小可变的存储。
在一个方面中,以上披露描述了用于为包围3-D场景中的所有几何形状的叶节点的集合确定包围体积的示例系统和方法。这些叶节点可以大小不同、根据图元的一个或多个特征以及可能基于有待在加速结构中使用的一种节点进行选择。可以用递增的抽象等级将包围体积递归地凝聚成越来越大的包围体积。
图16开始介绍用于构建用于光子映射的加速结构的途径。图16示出了一个示例3-D场景,其中,灯350和灯349将光发射到3-D空间中。在光子映射中,通过正向追踪来自多个光的光线,光子首先沉积到一个场景中。光子展现出从可从一个空间位置或体积中接收的位置中发出的光的特征,从而使得从一个点取样光子可以提供关于该点的光照信息。
在本示例中,根据该光的特征向从灯上正向追踪的光线分配一个微分。例如,光线355从灯350发出并且被分配一个微分351。光线357从灯349发出并且被分配一个微分352。发现光线355在相交点360与一个形状相交,而发现光线357在相交点361相交。为了简明性,描绘了一个单个形状,但在实际场景中,相交点经常是宽散开的,并且将从个光投射出许多光线。图16描绘了一条也被分配有一个微分353的反射光线356。这种反射光线356还可以用于确定光子沉积的特征。
如将描述的,光线微分可以用于确定或以另外的方式追踪光子应如何展现在加速结构中。图17提供了自底向上的光子加速结构构建的示例。在402,光源被标识为光子源(对场景光源进行标识),并且为了确定每条光的光子,在404,产生多条光线和多个微分。可以通过光源的特征确定每条光线的微分。例如,聚焦光源将接收比散射光源更小的微分。
在406,对所产生的光线进行追踪以对相交进行标识(此处,追踪包括对反射、折射等进行建模的次级光线进行追踪)。在408,针对所检测到的相交点,光子沉积在该3-D场景中的多个位置处。在410,每条光线的微分(现在与特定光子有关联)用于选择将直接存储该光子的体元的粒度等级。如在以上讨论中,存在多个嵌套的体元,每个体元可以包围3-D空间中的一个具体位置。光线微分和到该光线的相交点的距离可以用于确定该光线围绕一个相交点的宽度。所以,例如,在某一距离外相交的宽微分在相交点提供宽光线,而在相同相交距离处具有较窄微分的光线将较狭窄。在相交点具有较宽的光线驱向于使用较粗粒度等级的体元(较大的体元),而相反地,较小的光线驱向于较细粒度等级(较小的体元)。较小的体元允许比较大的体元更精确地定位光子,但如果该光线不管怎样都是宽的,则该精度是不必要的。因此,在412,选择每个光子的LOG,并且在414,每个光子与所选定LOG确定的体元的高速缓存位置以及相交点的位置相关联。在416,可以按照上述内容管理高速缓存逐出。格式转换也可以类似地进行,在该格式转换中在该加速结构中使用的形状可以不是体元;可以使用上述形状。在一些实现方式中,光线可以与一个提示或其他元数据一起发射,该提示或其他元数据有待用于为由于与该光线相交而沉积的光子选择LOG。这种元数据可以被视为无方向光子规格的效果的半径。
光子沉积可以包括使光颜色和强度与一个点或多个点的分布、或多个参数相关联,通过在计算中解释或使用这些参数,这些参数可以用于确定光颜色和/或强度。通过直接指定有待定位于3-D场景中的光子来完成光子沉积,并且提示和其他元数据可以用于选择体元的LOG以包含这些光子。
在另一个方面中,可以将给定体元内的光子混合在一起(颜色混合),并且它们的位置全都用该体元内的单个点表示,如中心点。还可以将光子的贡献合并成一个分布,如体元的每个面的高斯瓣分布。本质上,通过将这些光子混合在一起并且不试图区分每个体元内的每个光子的3-D位置,可以节省存储空间。这种节省作为关于精确度的折中,但可以调整实现方式,从而使得实现这些因素的适当均衡。可以与确定向特定体元添加一个给定光子相结合来完成这种混合或合并。可以创建体元的稀疏层次,该稀疏层次包含具有多个光子并且可以用于光子查询的体元。
图18描绘了一个实施光子映射的不同途径的过程。图17描绘了以自底向上的方式处理光子,其中,在多个道次中创建使3-D空间的较大区域抽象化的越来越大的体积。图18描绘了一种不同途径。具体地,在418,对光线进行追踪,并且在420,光子沉积在相交点上。在422,对于定义的全体元结构而言,将光子添加到所有粒度等级下的每个体元中(例如,对于32级体元层次,将相同的光子添加到该体元层次32次,其中,空间坐标相同,但LOG不同)。因此,产生出包含所有粒度等级下的所有光子的体元结构。在这种产生之后,在428,自顶向下遍历该体元结构一系列道次。
在430,当在给定LOG下遇到一个体元(“当前体元”)时,访问或产生该体元内存在的光子的计数。如果该计数大于一个阈值,则从该层次清除当前体元,并且当前(现在已清除)体元的子节点直接连接到所清除的体元的父节点上。在432,对于该当前体元的每个子节点而言,并且如果没有清除掉该当前体元(因为其具有比阈值数量光子更少的光子),则检查该当前体元的每个子体元。对于具有少于(或等于)该阈值数量光子的每个子体元而言,清除该子体元。除非另有说明,否则当子体元具有小于或等于阈值数量的光子时,则可以将该体元的光子推入较低粒度等级的体元(较大体元)内。换言之,图18描绘了一种根据沉积到该层次的不同部分中的光子的数量对一个完整体元层次进行修剪的途径。在一定意义上,这种修剪是针对在不同体元中的多个加速元素与多个光子之间保持平衡。该方法允许在有益的情况下使用较小的体元保持精度(在它们具有相对较高数量的光子的情况下)。例如,透镜可以使光集中并且该集中点将具有一个大的光子密度。因此,由于执行所描述的过程的实现方式,将自然地为那些光子保持小体元。
图19描绘了一个示例系统的多个方面,其中,可以实践这些披露的实现方式。图19描绘了一个集群阵列511,该阵列包括核心512-518,其可以执行计算,如图形计算。数据管理504-510的集合可以设置有待在集群511的阵列上执行的计算。集群阵列511可以具有被一个或多个核心512-518使用的纹理管线520和522。某些种类的计算可以使用包单元524,该包单元具有一个就绪堆栈526、一个收集定义/体元高速缓存528、一个空堆栈530和一个打包机532。扫描转换器534可以耦合到包单元524和格式器536上。格式器536进而可以与高速缓存层次542通信,该高速缓存层次与系统内存接口538通信。主机接口502可以通过总线540提供向另一个计算系统的通信能力。
具体关于当前加速结构构建算法,扫描转换器534可以使用收集定义内存528来存储体元(例如,起到图1的高速缓存56的作用)。收集定义内存528以另外的方式起到针对一个或多个密钥来收集数据集合的作用,并且可以将该数据集合分发在多个包内。可以从空堆栈530中检索有待用来自收集内存的数据填充的包槽并将其输入到就绪堆栈526中,该就绪堆栈由调度器540读取,并且这种包的内容分布在该集群阵列511上以便执行。在一个示例中,在包中处理光线,并且收集定义内存528存储多个收集中的光线标识符,这些收集每个与一种形状或多种形状相关联,该一种或多种形状有待测试与每个收集中标识的光线的相交。
加速结构的元素可以用于使更大数量的图元抽象化。示例中没有任何事物应被认为局限于遵循在此概述的操作原则和技术的实现方式、可以解决、应解决的问题、或者对这些披露在将它们外推、抽象或将它们应用在一种不同背景下的有用性的限制,以便解决一种不同的问题或者以另外的方式实现它们。相反,特殊性提供应轻易理解的具体示例,并且普通技术人员将能够采用和从这些披露中学习以便在具体设置中实施它们。以上各披露描述了确定某些条件、特征或值;普通技术人员将从这些披露中理解到这种确定不需要是恰好的,而是对这些情况足够的精确程度。
可以提供计算机代码和相关联数据用于实施在此描述的过程的某些部分和其他方面,通过将处理器配置成用于在这种过程及其部分的执行中执行指令来实施。计算机代码可以包括计算机可执行指令,这些计算机可执行指令例如可以是二进制指令、中间格式指令(如汇编语言、固件或源代码)。该代码可以配置或者以另外的方式致使被配置通用计算机、专用计算机或专用处理设备来执行某一功能或一组功能。任何这样的代码可以存储在有形机器可读介质(如固态驱动器、硬盘驱动器、CD-ROM和其他光学存储装置)中,瞬时地存储在易失性存储器(例如DRAM)中,或非瞬时地存储在SRAM中。
可以提供各种实现方式,这些实现可方式可以包括互操作硬件、固件和/或软件,该互操作硬件、固件和/或软件也可以体现在各种形状因数和设备的任意一种中,包括膝上型计算机、智能电话、小型个人计算机、个人数字助理等。此处描述的功能性也可以体现在外围设备或附加卡中。通过进一步的示例,这种功能性还可以实现在在单个设备上执行的不同芯片或不同进程之间的电路板上。
例如,针对根据这些示例的机器可以包括一个使用固定用途的3-D扫描转换器、用于分析图元的多个可编程元件、以及用于高速缓存的多个内存。进一步的机器组件包括多条通信链路。在此描述的系统的实现方式可以是一个更大系统的组件,该更大系统包括其他输入和输出设备,如一个或多个应用处理器、网络接口、磁盘驱动器或固态驱动器、显示器等。
在以上示例中,这些加速结构构建组件是产生输出的系统或机器的一部分,这些输出可以用于各种目的,如用于对视频游戏中的图像、或对动画进行渲染,或者用于存储或向用户传输等。
尽管使用了各种示例和其他信息来解释所附权利要求书的范围内的多个方面,但不应基于这种示例中的具体特征或安排而隐含对权利要求书的限制,因为普通技术人员将能够使用这些示例导出很多种实现方式。进一步地,并且尽管以结构特征和/或方法步骤的示例专用的语言描述了某个主题,但应理解,所附权利要求书中限定的主题不一定局限于这些描述的特征或动作。可以用线性流程方式描述示例过程,并且描述了多个过程部分的序列,但这种描述是为了方便,并且可以并行地或以不同的顺序执行某些这种部分。此外,多个线程可以执行每个过程部分,并且不同线程可以被分配用于执行所描述过程的不同部分。此外,功能性可以分布在与除了在此标识的组件以外的组件、附加的组件或更少的组件中,或在与除了在此标识的组件以外的组件、附加的组件或更少的组件中执行。相反,公开了所述特征和步骤作为所附权利要求书的范围内的系统和方法的组件的例子。

Claims (29)

1.一种产生加速结构以便在从三维(3-D)场景进行渲染中使用的机器实施的方法,该方法包括:
将(3-D)场景细分成多个体积部分,其中这些体积部分的多个子集具有不同的大小和不同的形式中的一项或多项,并且能够使用对应的唯一地址来寻址每个体积部分;
对位于该3-D场景内的图元流中的每个图元进行处理,该处理包括
根据一个或多个标准对该图元进行表征;
选择共同包围该图元的体积部分集合,该选择使用了该表征的输出;
针对所选定的体积部分集合中的每个体积部分,将针对该图元的标识数据存储在高速缓存的多个对应位置中;
响应于在该处理过程中做出的高速缓存逐出决定,选定高速缓存位置来进行逐出;以及
根据所逐出的高速缓存位置的内容生成加速结构的元素。
2.如权利要求1所述的机器实施的方法,其中,该一个或多个标准包括指示该图元的表面积与该图元的包围盒的表面积相比的比率。
3.如权利要求1所述的机器实施的方法,其中,体积部分的形式包括长宽比更高的矩形以及长宽比更低的矩形。
4.如权利要求1所述的机器实施的方法,其中,所述子集中的每个子集包括多种形式的体积部分,并且每种形式的体积部分包括多个不同大小的体积部分。
5.如权利要求1所述的机器实施的方法,其中,每个体积部分的唯一地址指示该体积部分的大小和形式。
6.如权利要求1所述的机器实施的方法,其中,该一个或多个标准包括该图元的绝对大小。
7.如权利要求1所述的机器实施的方法,其中,该一个或多个标准包括该图元的长宽比。
8.如权利要求1所述的机器实施的方法,其中,对该体积部分集合进行选择包括对3-D中的每个图元进行扫描转换。
9.如权利要求1所述的机器实施的方法,其中,该图元的表征包括确定该图元的一个或多个主导特征,并且确定该体积部分集合包括选择一种类型的体积部分,其维度与该图元的所述一个或多个主导特征相匹配。
10.如权利要求9所述的机器实施的方法,其中,从多个预先确定的特征中选择该主导特征,包括对一个平面的对准度,该平面由定义该3-D场景的3-D坐标系的三个轴中的任意一对轴定义。
11.如权利要求1所述的机器实施的方法,其中,将该3-D场景细分成多个体积部分包括:针对在其中定义该3-D场景的三个维度中的至少一对维度,将该场景细分成具有不同大小和不同边缘长度比率的多个体积部分子集。
12.如权利要求1所述的机器实施的方法,其中,对每个图元进行处理包括为该高速缓存中的每个位置保持覆盖范围,该覆盖范围指示包括了与该高速缓存中的那个位置相关联的体积部分内的图元的所有部分的3-D空间中的连续体积。
13.如权利要求12所述的机器实施的方法,进一步包括:通过以相对较大的大小选择体积部分来对每个逐出的高速缓存位置的所述覆盖范围进行处理,该大小包括所逐出的高速缓存位置的覆盖范围;以及以该相对较大的大小保持该体积部分的覆盖范围,以包括来自所逐出的高速缓存位置的覆盖范围。
14.如权利要求12所述的机器实施的方法,其中,通过确定预先确定的形状的维度来表示该覆盖范围。
15.如权利要求14所述的机器实施的方法,其中,从立方体和轴对准的包围盒中选择所述预先确定的形状。
16.如权利要求12所述的机器实施的方法,其中,相对于其中存在该覆盖范围的体积部分的位置,通过确定表示该预先确定的形状的维度的整数来表示该覆盖范围。
17.如权利要求12所述的机器实施的方法,其中,生成加速结构的元素包括:根据用来对所逐出的节点的覆盖范围进行跟踪的形状的维度来生成轴对准的包围盒。
18.如权利要求1所述的机器实施的方法,进一步包括使用与该高速缓存位置相关联的对应的体积部分的地址来对每个高速缓存位置进行标识。
19.如权利要求1所述的机器实施的方法,其中,将该3-D场景细分成多个体积部分包括:确定有待在这三个维度中的每一维中为其形成加速结构的图元的范围;以及将该3-D场景的范围的大小确定为下一个更高的二的幂的大小并且在确定该体积部分集合过程中使用整数对该3-D场景中的位置进行标识。
20.一种用于产生加速结构以便在从3-D场景进行渲染中使用的机器实施的方法,包括:
从图元流中接收多个图元,每个图元位于该3-D场景中;
当接收到每个图元时,将该图元映射到共同包围着该3-D空间内的图元的体积元素集合上,其中,从多个预先确定的体积元素中选择形成所述集合的体积元素,并且任一体积元素可以映射到多个图元上;
保持高速缓存,该高速缓存具有各自与来自所述体积元素集合中的任一集合的体积元素相关联的多个位置,每个位置具有指示覆盖范围形状的数据,该覆盖范围形状包围与该位置相关联的体积元素内的所有图元及其部分;以及
形成层级加速结构,该层级加速结构包括基于所述覆盖形状确定的多个叶元素和通过将来自下级层级的覆盖范围形状的选择反复地分组成越来越大的覆盖范围形状而确定的多个层级上级元素。
21.如权利要求20所述的用于产生加速结构以便在从3-D场景进行渲染中使用的机器实施的方法,其中,所述预先确定的体积元素包括一层级体元格栅,并且相对于其中存在该覆盖范围形状的体元,通过设置预先确定类型的形状的维度来确定每个覆盖范围形状。
22.如权利要求20所述的用于产生加速结构以便在从3-D场景进行渲染中使用的机器实施的方法,进一步包括根据用于有待形成的层级加速结构的元素的形状类型来选择有待用于所述覆盖范围形状的形状。
23.一种用于产生加速结构用于在对3-D场景进行渲染中使用的系统,包括:
流式输入端,用于接收多个图元的定义,每个图元位于该3-D场景中,并且将为该3-D场景产生层级加速结构;
映射器,被配置成用于将每个图元映射到对应的3-D场景细分元素集合上,从一组预先确定的场景细分元素中选择该对应的场景细分元素集合,其中,该3-D场景中的每个位置在所述场景细分元素中的多个元素内,每个场景细分元素是唯一可寻址的;
覆盖范围模块,被配置成用于为每个图元确定该对应集合中的每个场景细分元素内的子体积,该子体积包围着该场景细分元素内的图元的一部分;
高速缓存,该高速缓存耦合到该覆盖范围模块并且可操作用于存储所述确定的子体积的数据,与对应的场景细分元素相关联,该高速缓存可操作用于逐出多个场景细分元素;以及
格式转换器,可操作用于接收逐出的场景细分元素的数据并且产生加速结构的元素,并且将该元素链接到正在形成的层级加速结构。
24.如权利要求23所述的用于产生加速结构以便在对3-D场景进行渲染中使用的系统,其中,所述预先确定的场景细分元素组包括具有不同形式的细分元素,并且每种形式的元素填充该3-D场景。
25.如权利要求23所述的用于产生加速结构以便在对3-D场景进行渲染中使用的系统,其中,相对于被选定用于该图元的对应形式和大小的场景细分元素,通过在该图元上以3-D执行扫描转换操作的硬件实现该映射器。
26.如权利要求23所述的用于产生加速结构以便在对3-D场景进行渲染中使用的系统,其中,该3-D细分元素集合包括层级体元结构,其中,对于该3-D场景的每个维度,能够通过整数值来寻址具有给定大小的每个体元,并且能够通过粒度等级来寻址所有具有给定大小的体元。
27.如权利要求23所述的用于产生加速结构以便在对3-D场景进行渲染中使用的系统,其中,该高速缓存包括用于叶细分元素的单独的高速缓存部分和用于是中间元素的细分元素的单独的高速缓存部分,所述叶细分元素由不同大小的细分元素形成,所述中间元素通过直接包围着其他场景细分元素而定义。
28.如权利要求23所述的用于产生加速结构以便在对3-D场景进行渲染中使用的系统,其中,该系统可操作用于通过有待测试的与该加速结构的特定部分相交的光线组进行收集来对穿过由该系统产生的加速结构的光线进行追踪,并且该系统可操作用于使用该高速缓存来存储表示所述光线组的数据。
29.一种用于产生加速结构以便在3-D场景渲染中使用的系统,包括:
图元的流式源,所述图元位于3-D场景内;
扫描转换器,可操作用于将这些图元中的每个图元扫描转换成包括多个粒度等级的层级体元阵列,粒度等级指示该粒度等级下的每个体元的大小,当该扫描转换器能够获得每个图元时,该扫描转换器可操作用于将所述图元的每个图元扫描转换成根据该图元的特征而选定的粒度等级下的体元;
高速缓存,用于接收该扫描转换器的输出,该高速缓存可操作用于保持该层级体元阵列中的体元子集的数据,被保持用于每个体元的数据包括被扫描转换成该体元的每个图元的一个标识符;以及
加速结构终结器,可操作用于从该层级体元阵列中接收从该高速缓存中逐出的体元的内容并且基于所接收到的内容为最终加速结构产生加速元素。
CN201280037833.4A 2011-08-05 2012-08-04 用于3-d场景加速结构创建和更新的系统和方法 Active CN103765481B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610262778.9A CN105957134B (zh) 2011-08-05 2012-08-04 用于3-d场景加速结构创建和更新的方法和装置

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201161515801P 2011-08-05 2011-08-05
US61/515,801 2011-08-05
PCT/US2012/049667 WO2013022804A1 (en) 2011-08-05 2012-08-04 Systems and methods for 3-d scene acceleration structure creation and updatting

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201610262778.9A Division CN105957134B (zh) 2011-08-05 2012-08-04 用于3-d场景加速结构创建和更新的方法和装置

Publications (2)

Publication Number Publication Date
CN103765481A true CN103765481A (zh) 2014-04-30
CN103765481B CN103765481B (zh) 2016-06-29

Family

ID=47668844

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201610262778.9A Active CN105957134B (zh) 2011-08-05 2012-08-04 用于3-d场景加速结构创建和更新的方法和装置
CN201280037833.4A Active CN103765481B (zh) 2011-08-05 2012-08-04 用于3-d场景加速结构创建和更新的系统和方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201610262778.9A Active CN105957134B (zh) 2011-08-05 2012-08-04 用于3-d场景加速结构创建和更新的方法和装置

Country Status (5)

Country Link
US (6) US8717357B2 (zh)
CN (2) CN105957134B (zh)
DE (1) DE112012003243T5 (zh)
GB (1) GB2505608B (zh)
WO (1) WO2013022804A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113936091A (zh) * 2020-07-14 2022-01-14 想象技术有限公司 用于构建射线跟踪加速结构的方法和系统
CN114332332A (zh) * 2017-12-22 2022-04-12 奇跃公司 用于生成场景中的表面的三维重建的方法和设备
WO2022261816A1 (en) * 2021-06-15 2022-12-22 Nvidia Corporation Ray tracing using reservoir resampling with spatial shift-mapping

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9024948B2 (en) * 2012-01-09 2015-05-05 Fca Us Llc System and method for generating an outer layer representation of an object
GB2541084B (en) 2013-03-15 2017-05-17 Imagination Tech Ltd Rendering with point sampling and pre-computed light transport information
GB2506706B (en) * 2013-04-02 2014-09-03 Imagination Tech Ltd Tile-based graphics
US10008034B2 (en) * 2013-05-03 2018-06-26 Nvidia Corporation System, method, and computer program product for computing indirect lighting in a cloud network
US10713838B2 (en) 2013-05-03 2020-07-14 Nvidia Corporation Image illumination rendering system and method
US8842117B1 (en) 2014-02-13 2014-09-23 Raycast Systems, Inc. Computer hardware architecture and data structures for lookahead flags to support incoherent ray traversal
US9529857B1 (en) 2014-02-03 2016-12-27 Google Inc. Disambiguation of place geometry
US9842424B2 (en) * 2014-02-10 2017-12-12 Pixar Volume rendering using adaptive buckets
US9697640B2 (en) 2014-04-21 2017-07-04 Qualcomm Incorporated Start node determination for tree traversal in ray tracing applications
GB2526598B (en) 2014-05-29 2018-11-28 Imagination Tech Ltd Allocation of primitives to primitive blocks
DE102016103870A1 (de) 2015-03-03 2016-09-08 Imagination Technologies Limited Systeme und Verfahren zur weichen Schattierung in 3D-Rendering
US20170109569A1 (en) * 2015-08-28 2017-04-20 Hongtae KIM Hybrid face recognition based on 3d data
KR102604737B1 (ko) * 2016-01-11 2023-11-22 삼성전자주식회사 가속 구조를 생성하는 방법 및 장치
US9818221B2 (en) * 2016-02-25 2017-11-14 Qualcomm Incorporated Start node determination for tree traversal for shadow rays in graphics processing
US11341110B2 (en) 2016-03-21 2022-05-24 Imagination Technologies Limited Hierarchy merging
TW201805894A (zh) * 2016-05-06 2018-02-16 國立臺灣大學 三維渲染方法以及三維繪圖處理裝置
WO2018074420A1 (ja) * 2016-10-21 2018-04-26 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置
KR20180050124A (ko) * 2016-11-04 2018-05-14 삼성전자주식회사 가속 구조를 생성하는 방법 및 장치
US10529119B2 (en) 2016-12-25 2020-01-07 Biosense Webster (Israel) Ltd. Fast rendering of quadrics and marking of silhouettes thereof
GB2560709B (en) * 2017-03-14 2021-02-24 Imagination Tech Ltd Graphics processing method and system for processing sub-primitives
US10319139B2 (en) * 2017-04-01 2019-06-11 Intel Corporation Apparatus and method for data-parallel ray tracing using volume proxies
JP6888411B2 (ja) 2017-05-15 2021-06-16 富士フイルムビジネスイノベーション株式会社 三次元形状データの編集装置、及び三次元形状データの編集プログラム
CN107481306B (zh) * 2017-07-05 2022-11-29 国网山东省电力公司 一种三维交互的方法
US10417807B2 (en) 2017-07-13 2019-09-17 Imagination Technologies Limited Hybrid hierarchy of bounding and grid structures for ray tracing
US10438397B2 (en) 2017-09-15 2019-10-08 Imagination Technologies Limited Reduced acceleration structures for ray tracing systems
US10740953B2 (en) 2018-12-28 2020-08-11 Intel Corporation Early termination in bottom-up acceleration data structure refit
US11941752B2 (en) 2020-07-21 2024-03-26 Nvidia Corporation Streaming a compressed light field
US11501467B2 (en) 2020-11-03 2022-11-15 Nvidia Corporation Streaming a light field compressed utilizing lossless or lossy compression
US11736748B2 (en) 2020-12-16 2023-08-22 Tencent America LLC Reference of neural network model for adaptation of 2D video for streaming to heterogeneous client end-points
US11943271B2 (en) * 2020-12-17 2024-03-26 Tencent America LLC Reference of neural network model by immersive media for adaptation of media for streaming to heterogenous client end-points
US11886188B2 (en) 2021-06-10 2024-01-30 R-Go Robotics, Ltd. Techniques for environmental parameter mapping
US20230316653A1 (en) * 2021-09-17 2023-10-05 John A. Halsema Adaptive Chunk Navmesh Generator
US20230205820A1 (en) * 2021-12-29 2023-06-29 Autodesk, Inc. Geometry-based design data search tool
GB2612147A (en) * 2022-01-12 2023-04-26 Imagination Tech Ltd Building an acceleration structure for use in ray tracing
CN117313221B (zh) * 2023-11-28 2024-02-13 北京理工大学 一种用于目标易损性的建筑目标建模方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101192310A (zh) * 2006-11-28 2008-06-04 国际商业机器公司 执行射线追踪的方法和系统
US20080192050A1 (en) * 2007-02-09 2008-08-14 Paul Emery Schardt Efficient and Flexible Data Organization for Acceleration Data Structure Nodes
US20080204451A1 (en) * 2007-02-26 2008-08-28 Samsung Electronics Co., Ltd Geometry processor using a post-vertex cache and method thereof
US20100238169A1 (en) * 2009-03-19 2010-09-23 International Business Machines Corporation Physical Rendering With Textured Bounding Volume Primitive Mapping
CN102282591A (zh) * 2008-09-10 2011-12-14 柯斯提克绘图有限公司 光线跟踪系统架构和方法

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69233717T2 (de) * 1991-06-28 2008-10-30 Lim, Hong Lip, Darlington Verbesserungen in sichtbarkeit-berechnungen fuer 3d-rechner
WO1994003856A1 (en) * 1992-08-07 1994-02-17 Massachusetts Institute Of Technology Column-associative cache
US5574835A (en) 1993-04-06 1996-11-12 Silicon Engines, Inc. Bounding box and projections detection of hidden polygons in three-dimensional spatial databases
US5579455A (en) * 1993-07-30 1996-11-26 Apple Computer, Inc. Rendering of 3D scenes on a display using hierarchical z-buffer visibility
US5613049A (en) 1994-10-26 1997-03-18 The Boeing Company Method for creating spatially balanced bounding volume hierarchies for use in a computer generated display of a complex structure
GB9424273D0 (en) 1994-12-01 1995-01-18 Wrigley Adrian M T Improvements in and relating to image constrcution
US5973699A (en) 1996-09-19 1999-10-26 Platinum Technology Ip, Inc. System and method for increasing the performance for real-time rendering of three-dimensional polygonal data
US7133041B2 (en) * 2000-02-25 2006-11-07 The Research Foundation Of State University Of New York Apparatus and method for volume processing and rendering
US6597359B1 (en) 2000-05-17 2003-07-22 Raychip, Inc. Hierarchical space subdivision hardware for ray tracing
US8188997B2 (en) * 2000-06-19 2012-05-29 Mental Images Gmbh Accelerated ray tracing using shallow bounding volume hierarchies
US7499053B2 (en) 2000-06-19 2009-03-03 Mental Images Gmbh Real-time precision ray tracing
US7952583B2 (en) * 2000-06-19 2011-05-31 Mental Images Gmbh Quasi-monte carlo light transport simulation by efficient ray tracing
AU2001292559A1 (en) 2000-08-24 2002-03-04 Immersive Technologies Llc Computerized image system
DE102004007835A1 (de) 2004-02-17 2005-09-15 Universität des Saarlandes Vorrichtung zur Darstellung von dynamischen komplexen Szenen
US7145562B2 (en) * 2004-05-03 2006-12-05 Microsoft Corporation Integration of three dimensional scene hierarchy into two dimensional compositing system
US7408548B2 (en) 2005-06-30 2008-08-05 Microsoft Corporation Triangulating procedural geometric objects
US8259105B2 (en) * 2006-07-21 2012-09-04 The University Of Utah Research Foundation Ray tracing a three-dimensional scene using a hierarchical data structure
US7568072B2 (en) * 2006-08-31 2009-07-28 Arm Limited Cache eviction
US7969434B2 (en) * 2006-09-19 2011-06-28 Caustic Graphics, Inc. Method, apparatus, and computer readable medium for accelerating intersection testing in ray-tracing rendering
US8339398B2 (en) * 2006-09-28 2012-12-25 International Business Machines Corporation Integrated acceleration data structure for physics and ray tracing workload
US8184117B2 (en) * 2007-05-01 2012-05-22 Advanced Micro Devices, Inc. Stencil operations
US20100033482A1 (en) * 2008-08-11 2010-02-11 Interactive Relighting of Dynamic Refractive Objects Interactive Relighting of Dynamic Refractive Objects
US9069792B1 (en) * 2008-08-22 2015-06-30 Conifer Systems LLC Method and system for persistently cached, copy-on-write view of revision control trees
US8749552B2 (en) * 2008-10-17 2014-06-10 Imagination Technologies Limited Synthetic acceleration shapes for use in ray tracing
US8350846B2 (en) * 2009-01-28 2013-01-08 International Business Machines Corporation Updating ray traced acceleration data structures between frames based on changing perspective
US8570322B2 (en) * 2009-05-12 2013-10-29 Nvidia Corporation Method, system, and computer program product for efficient ray tracing of micropolygon geometry
US8952961B2 (en) * 2009-06-29 2015-02-10 Imagination Technologies, Limited Systems and methods for photon map querying
GB2484445B (en) * 2009-07-24 2014-09-17 Uws Ventures Ltd Direct ray tracing of 3D scenes
US8587588B2 (en) * 2009-08-18 2013-11-19 Dreamworks Animation Llc Ray-aggregation for ray-tracing during rendering of imagery
CN101819684B (zh) * 2010-04-12 2012-06-20 长春理工大学 一种动画电影虚拟三维场景的空间加速结构及其创建与更新方法
US9070208B2 (en) * 2011-05-27 2015-06-30 Lucasfilm Entertainment Company Ltd. Accelerated subsurface scattering determination for rendering 3D objects
US9183667B2 (en) * 2011-07-15 2015-11-10 Kirill Garanzha Out-of-core ray tracing with memory-efficient page generation
US20130033507A1 (en) 2011-08-04 2013-02-07 Nvidia Corporation System, method, and computer program product for constructing an acceleration structure
US9478066B2 (en) * 2013-03-14 2016-10-25 Nvidia Corporation Consistent vertex snapping for variable resolution rendering

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101192310A (zh) * 2006-11-28 2008-06-04 国际商业机器公司 执行射线追踪的方法和系统
US20080192050A1 (en) * 2007-02-09 2008-08-14 Paul Emery Schardt Efficient and Flexible Data Organization for Acceleration Data Structure Nodes
US20080204451A1 (en) * 2007-02-26 2008-08-28 Samsung Electronics Co., Ltd Geometry processor using a post-vertex cache and method thereof
CN102282591A (zh) * 2008-09-10 2011-12-14 柯斯提克绘图有限公司 光线跟踪系统架构和方法
US20100238169A1 (en) * 2009-03-19 2010-09-23 International Business Machines Corporation Physical Rendering With Textured Bounding Volume Primitive Mapping

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114332332A (zh) * 2017-12-22 2022-04-12 奇跃公司 用于生成场景中的表面的三维重建的方法和设备
CN114332332B (zh) * 2017-12-22 2023-08-18 奇跃公司 用于生成场景中的表面的三维重建的方法和设备
CN113936091A (zh) * 2020-07-14 2022-01-14 想象技术有限公司 用于构建射线跟踪加速结构的方法和系统
WO2022261816A1 (en) * 2021-06-15 2022-12-22 Nvidia Corporation Ray tracing using reservoir resampling with spatial shift-mapping
US11935177B2 (en) 2021-06-15 2024-03-19 Nvidia Corporation Ray tracing using reservoir resampling with spatial shift-mapping

Also Published As

Publication number Publication date
US20210183130A1 (en) 2021-06-17
US10217267B2 (en) 2019-02-26
CN103765481B (zh) 2016-06-29
US10930052B2 (en) 2021-02-23
CN105957134B (zh) 2019-11-08
DE112012003243T5 (de) 2014-04-30
US20130113800A1 (en) 2013-05-09
US8717357B2 (en) 2014-05-06
US11481954B2 (en) 2022-10-25
US20160371876A1 (en) 2016-12-22
US20230016561A1 (en) 2023-01-19
GB2505608B (en) 2018-02-14
US9430864B2 (en) 2016-08-30
GB201322078D0 (en) 2014-01-29
GB2505608A (en) 2014-03-05
US20140333610A1 (en) 2014-11-13
CN105957134A (zh) 2016-09-21
US20190164331A1 (en) 2019-05-30
WO2013022804A1 (en) 2013-02-14

Similar Documents

Publication Publication Date Title
CN103765481B (zh) 用于3-d场景加速结构创建和更新的系统和方法
US11574434B2 (en) Producing rendering outputs from a 3-D scene using volume element light transport data
Nießner et al. Real-time 3D reconstruction at scale using voxel hashing
US8570322B2 (en) Method, system, and computer program product for efficient ray tracing of micropolygon geometry
CN102282591B (zh) 光线跟踪系统架构和方法
CN103093499B (zh) 一种适用于网络传输的城市三维模型数据组织方法
Yoon et al. Cache‐efficient layouts of bounding volume hierarchies
TW201403542A (zh) 圖形處理單元中3d加速結構之完全並列原地建構
KR20100128337A (ko) 광선 추적 렌더링을 위한 병렬화 교차 테스트 및 세이딩의 아키텍처
Shan et al. Interactive visual exploration of halos in large-scale cosmology simulation
Qin et al. Research and application of Boolean operation for triangular mesh model of underground space engineering—Boolean operation for triangular mesh model
Andrysco et al. Implicit and dynamic trees for high performance rendering
Jun-Feng et al. Parallel optimization of the ray-tracing algorithm based on the HPM model
Byrne et al. Applications of the VOLA format for 3D data knowledge discovery
Kužel Real-time voxel visualization and editing for 3D printing
CN107346527B (zh) 一种基于动态任务调度的层次包围盒构建方法
Andrysco Data structures for efficient analysis of large-scale unstructured datasets
Pakaravoor k-Approximate Nearest Neighbor Search Using the GPU
Gao Visibility acceleration for large-scale volume visualization

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: ENVISION TECHNOLOGIES GMBH

Free format text: FORMER OWNER: CAUSTIC GRAPHICS INC.

Effective date: 20150430

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150430

Address after: Hertfordshire

Applicant after: Imagination Technologies Limited

Address before: American California

Applicant before: Caustic Graphics Inc.

C14 Grant of patent or utility model
GR01 Patent grant