CN105469440B - 用于产生和遍历加速结构的方法和设备 - Google Patents
用于产生和遍历加速结构的方法和设备 Download PDFInfo
- Publication number
- CN105469440B CN105469440B CN201510460037.7A CN201510460037A CN105469440B CN 105469440 B CN105469440 B CN 105469440B CN 201510460037 A CN201510460037 A CN 201510460037A CN 105469440 B CN105469440 B CN 105469440B
- Authority
- CN
- China
- Prior art keywords
- nodes
- node
- overlap
- acceleration structure
- ray
- 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
Images
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
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/005—Tree description, e.g. octree, quadtree
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/12—Bounding box
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/21—Collision detection, intersection
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供一种用于产生和遍历加速结构的方法和设备。提供用于光线跟踪的方法以及用于产生加速结构或对加速结构进行遍历的方法和设备。一种产生加速结构的方法包括:将对象分配到包围盒中;产生包括节点并指示包围盒之间的包含关系的加速结构;对节点中的重叠节点进行标记。
Description
本申请要求于2014年9月30日提交到韩国知识产权局的第10-2014-0132015号韩国专利申请的权益,出于所有目的,所述韩国专利申请的全部公开通过引用包含于此。
技术领域
以下描述涉及图像渲染的方法和设备以及产生和遍历加速结构的方法和设备。
背景技术
三维(3D)渲染是指从3D对象数据提取从相机的给定视点观看的图像的图像处理技术。光线跟踪是指跟踪将被渲染的场景对象与光线(ray)相交的点以渲染图像的处理。光线跟踪方法涉及跟踪从相机的视点沿穿过图像的每个像素的光线入射的光的路径来从3D对象数据产生图像。由于通过使用光线跟踪方法,在渲染的结果中可反映光的物理特性(诸如,反射、折射和透射),所以可获得高质量图像。因此,光线跟踪技术在真实场景被渲染的3D渲染领域(诸如,电影制作或动画制作)中被广泛使用。
关于光线跟踪方法,通过重复以下处理来渲染图像:找出对象与光线相交的交点并跟踪从交点反射或折射的光线。光线跟踪包括对加速结构的遍历和光线与图元(primitive)之间的相交测试。执行遍历和相交测试需要大量的计算和宽的存储器带宽。
发明内容
提供本发明内容从而以简化形式引入对以下在具体实施方式中进一步描述的构思的选择。本发明内容不意图标识要求保护的主题的关键特征或必要特征,也不意图用作帮助确定要求保护的主题的范围。
在一个总体方面,一种产生用于光线跟踪的加速结构的方法包括:将对象分配到包围盒中;产生包括节点的加速结构,所述加速结构指示包围盒之间的包含关系;对节点中的重叠节点进行标记。
所述对节点中的重叠节点进行标记的步骤可包括:将标志添加到每个节点。可由所述标志指示关于每个节点的子节点是否彼此重叠的信息。
在对节点中的重叠的节点进行标记的过程中,可在与对应于重叠包围盒的节点最接近的上层节点中指示重叠信息。
所述方法的总体方面还可包括:从第一非暂时性存储器接收关于对象的3D对象数据;将加速结构存储在第二非暂时性存储器中,其中,在所述加速结构中,重叠节点被标记。
在另一总体方面,一种对加速结构进行遍历的方法可包括:(a)对加速结构的叶节点进行遍历,所述叶节点与光线数据相交;(b)确定相交的叶节点的上层节点中的节点是否包括彼此重叠的子节点,响应于确定相交的叶节点的上层节点中的节点不包括彼此重叠的子节点,终止遍历,或者响应于确定相交的叶节点的上层节点中的节点包括彼此重叠的子节点,对彼此重叠的子节点进行遍历。
在操作(b),可基于节点的重叠标志进行关于节点是否包括彼此重叠的子节点的确定。
操作(a)可包括:将没有被遍历的节点推入堆栈并将没有被遍历的节点存储在堆栈中。
当在操作(b)对彼此重叠的子节点进行遍历时,存储在堆栈中的节点可被顺序地推出以对被推出的节点中的彼此重叠的子节点进行遍历。
在操作(b),被推出的节点中的不包括重叠的子节点的节点可不被遍历。
在另一总体方面,一种用于产生用于光线跟踪的加速结构的装置包括:加速结构产生器,被配置为将对象分配到包围盒中并产生包括节点的加速结构,所述加速结构指示包围盒之间的包含关系;重叠标记器,被配置为对节点中的重叠节点进行标记。
重叠标记器可将标志添加到每个节点并可存储关于每个节点的子节点是否彼此重叠的标志信息。
重叠标记器可在与指示重叠的包围盒的节点最接近的上层节点存储重叠信息。
在另一总体方面,一种用于对加速结构进行遍历的光线跟踪核包括:遍历器,被配置为对加速结构的叶节点进行遍历,所述叶节点与光线数据相交。响应于确定相交的叶节点的上层节点中的节点不包括彼此重叠的子节点,遍历器可终止遍历,响应于确定相交的叶节点的上层节点中的节点包括彼此重叠的子节点,遍历器可对彼此重叠的子节点进行遍历。遍历器可包括用于存储节点的堆栈。
遍历器可基于节点的重叠标志确定节点是否包括彼此重叠的子节点。
遍历器可将没有被遍历的节点推入堆栈并可将没有被遍历的节点存储在堆栈中。
当遍历器对彼此重叠的子节点进行遍历时,遍历器可顺序地推出存储在堆栈中的节点以对被推出的节点中的彼此重叠的子节点进行遍历。
遍历器可不对从堆栈推出的节点中的彼此不重叠的子节点进行遍历。
在另一总体方面,一种用于光线跟踪的设备包括:处理器,被配置为产生包括节点的加速结构,并在加速结构的一个或更多个节点指示根据对象的包围体层次的重叠关系。
加速结构可包括KD树,处理器可通过将标志添加到KD树的一个或更多个内节点来指示所述重叠关系。
所述设备的总体方面还可包括:非暂时性存储器,被配置为存储产生的加速结构。
所述设备的总体方面还可包括:处理器核,被配置为通过对产生的加速结构进行遍历来渲染图像,其中,处理器核使用在一个或更多个节点指示的重叠关系以在遍历期间跳过节点。
在另一总体方面,一种光线跟踪核包括:处理器,被配置为通过对加速结构进行遍历来渲染图像,其中,在所述加速结构中,根据对象的包围体层次对重叠关系进行标记。
处理器可被配置为:基于在加速结构中标记的重叠关系,在对加速结构进行遍历期间,跳过一个或更多个节点。
重叠关系可指示加速结构的节点是否具有彼此重叠的子节点,可利用添加到具有子节点的节点的重叠标志来对重叠关系进行标记。
其它特征和方面将从以下详细描述、附图和权利要求是清楚的。
附图说明
图1是示出光线跟踪方法的示例的示意图。
图2是示出光线跟踪核的示例的示意图。
图3是示出由光线跟踪核执行的光线跟踪方法的示例的示意图。
图4是示出使光线跟踪加速的方法的示例的示意图。
图5是示出根据图4的使光线跟踪加速的方法的另一示图。
图6是描述根据本公开的产生加速结构的方法的示例的流程图。
图7是示出将对象划分到包围盒中的方法的示例的示图。
图8是示出根据本公开的加速结构的示例的示图。
图9是示出根据本公开的对加速结构进行遍历的方法的示例的流程图。
图10是示出遍历操作的示例的示图。
图11是示出根据本公开的对加速结构进行遍历的方法的示例的示图。
图12是示出遍历处理的示例的示图。
图13是示出根据本公开的对加速结构进行遍历的方法的示例的示图。
图14是示出根据本公开的加速结构产生设备和光线跟踪核的示例的示图。
图15是示出根据本公开的光线跟踪芯片的示例的透视图。
具体实施方式
提供以下详细描述以帮助读者获得对这里描述的方法、设备和/或系统的全面理解。然而,这里描述的方法、设备和/或系统的各种改变、修改和等同物对于本领域的普通技术人员将是清楚的。例如,这里描述的操作的顺序仅为示例,操作的顺序不限于这里阐明的顺序,而是如本领域普通技术人员将清楚的那样,除了必需按特定顺序发生的操作之外,操作的顺序可被改变。此外,为了更加清楚和简明,可省略本领域的普通技术人员公知的功能和结构的描述。
贯穿附图和具体实施方式,相同的参考标号表示相同的元件。附图可不按比例缩放,并且为了清楚、说明和方便,附图中的元件的相对大小、比例和描绘可被夸大。
这里描述的特征可以以不同形式被实现,并不被解释为限于这里描述的示例。相反,提供这里描述的示例使得本公开将是彻底和全面的,并将向本领域普通技术人员传达本公开的全部范围。
这里使用的术语仅是为了描述特定实施例的目的,而不意图限制本发明。如这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式。还将理解,当在说明书中使用术语“包括”和/或“包含”时,其指明存在所陈述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或更多个其它特征、整体、步骤、操作、元件、组件和/或它们的组合。
除非另外限定,否则这里使用的全部术语(包括技术术语和科学术语)具有与本发明所属领域的普通技术人员通常理解的含义相同的含义。还将理解,除非在本文中明确地如此限定,否则诸如在通用字典中定义的术语应被解释为具有与现有技术背景中的含义一致的含义,并且将不被解释为理想化或过于形式化的意义。
如这里所使用的,术语“和/或”包括相关列出项的一个或更多个的任意和所有的组合。当诸如“…中的至少一个”的表述位于元件的列表之后时,所述表述修饰元件的整个列表,而不修饰列表中的单个元件。
图1是用于解释光线跟踪方法的示意图。参照图1,在三维(3D)建模处理中,光线跟踪核可确定视点10和与视点10相关的图像20的位置。当视点10和图像20的相关位置被确定时,光线跟踪核针对图像20的每个像素产生源自视点10的光线。
将描述光线跟踪的元素。自视点10产生初级光线30。初级光线30在穿过限定图像20的区域之后与场景对象70相交。在初级光线30和场景对象70之间的交点处,产生反射光线40和折射光线50。此外,在交点处朝向光源80产生阴影光线60。反射光线40、折射光线50和阴影光线60被称为次级光线。场景对象70表示将在图像20中被渲染的对象。场景对象70包括多个图元。
光线跟踪核分析初级光线30、次级光线以及从次级光线衍生的任何光线。次级光线可包括一个或更多个反射光线40、折射光线50和阴影光线60。从次级光线衍生的光线可被称为三级光线、四级光线等。光线跟踪核基于分析结果来确定形成图像20的每个像素的颜色值。光线跟踪核通过考虑场景对象70的各种特性来确定每个像素的颜色值。
图2是解释光线跟踪核100的示例的结构的示意图。参照图2,光线跟踪核100包括光线产生器110、遍历器120、相交测试器130和着色器140。在图2中示出的示例中,遍历器120和相交测试器130包括在光线跟踪核100中;然而,在另一示例中,遍历器120和相交测试器130可单独作为硬件被包括。光线跟踪核100可包括一个或更多个处理器。光线产生器110、遍历器120、相交测试器130和着色器140均可包括一个或更多个处理器或存储器,或可彼此共享一个或更多个处理器或存储器。图2中示出的光线跟踪核100仅包括与本公开的当前实施例相关的元件。然而,对于本领域的普通技术人员将显然的是,除了图2中示出的元件之外的通用元件也可包括在光线跟踪核100中。
光线跟踪核100跟踪所产生的光线和位于3D空间中的对象之间的交点,并确定形成图像的像素的颜色值。换句话说,光线跟踪核100搜索光线和对象之间的交点,在交点处根据对象的特性产生次级光线,并确定交点的颜色值。
光线跟踪核100可使用先前遍历测试和先前相交测试的结果来对加速结构进行遍历并执行相交测试。也就是说,光线跟踪核100可通过将从先前渲染获得的结果应用到当前渲染来提高当前渲染的速度。
光线产生器110产生初级光线和次级光线。光线跟踪核100产生源自视点的一级光线。光线产生器110在初级光线和对象之间的交点处产生反射次级光线、折射次级光线或阴影次级光线。此外,可在以上次级光线和对象之间的交点处产生另一次级光线。光线产生器110可产生预设次数内的反射光线、折射光线或阴影光线,或可根据对象的特性确定产生反射光线、折射光线或阴影光线的次数。
遍历器120接收关于由光线产生器110产生的光线的信息。产生的光线可以是初级光线、次级光线或从次级光线衍生的光线。例如,对于初级光线,遍历器120可接收关于视点和产生的光线的方向的信息。此外,对于次级光线,遍历器120可接收关于次级光线的起始点和方向的信息。次级光线的起始点表示被初级光线命中的点。视点或起始点可用坐标来表示,方向可用矢量来表示。
遍历器120从外部存储器250读取关于加速结构的信息。加速结构由加速结构产生设备200产生,并且产生的加速结构被存储在外部存储器250中。加速结构是指包括对象在3D空间中的位置信息的结构。例如,加速结构可以是K维(KD)树或包围体层次(BVH)。KD树可用于加快相交测试。包围体层次为光线跟踪提供加速方案。
遍历器120对加速结构进行遍历以输出被光线命中的对象或叶节点。例如,遍历器120搜索包括在加速结构中的节点,以将最低级别叶节点中被光线命中的叶节点输出到相交测试器130。换句话说,遍历器120确定形成加速结构的包围盒中的哪个包围盒被光线命中。遍历器120确定包括在包围盒中的哪个对象被光线命中。关于被命中的对象的信息被存储在遍历高速缓冲存储器中。包围盒可表示包括多个对象或多个图元的单元,并可根据加速结构以不同的形式被表示。遍历高速缓冲存储器表示暂时存储由遍历器120在遍历中使用的数据的存储器。
遍历器120可基于先前渲染的结果对加速结构进行遍历。遍历器120可基于存储在遍历高速缓冲存储器中的先前渲染的结果,经由与先前渲染相同的路径对加速结构进行遍历。例如,当遍历器120就产生的光线对加速结构进行遍历时,遍历器120可对被与产生的光线具有相同视点和相同方向的先前光线所命中的包围盒进行遍历。此外,遍历器120可通过参考针对先前光线的搜索路径对加速结构进行遍历。
相交测试器130从遍历器120接收被光线命中的对象或叶节点,并从外部存储器250读取关于包括在被命中的对象中的图元的信息。关于读取的图元的信息可被存储在相交测试高速缓冲存储器中。相交测试高速缓冲存储器表示暂时存储由相交测试器130在相交测试中使用的数据的存储器。
相交测试器130进行光线和图元之间的相交测试,以输出被光线命中的图元以及交点。相交测试器130从遍历器120接收关于哪个对象被光线命中的信息,并对在包括在被命中的对象中的多个图元中的哪些图元被光线命中进行测试。在相交测试器130找到被光线命中的图元之后,相交测试器130输出指示被命中的图元的哪个点与光线相交的交点。交点可以以坐标被输出到着色器140。
相交测试器130可通过使用先前渲染的结果来进行相交测试。相交测试器130可基于存储在相交测试高速缓冲存储器中的先前渲染的结果对与先前渲染的图元相同的图元进行相交测试。例如,当相交测试器130进行产生的光线和图元之间的相交测试时,相交测试器130可对被与产生的光线具有相同视点和相同方向的先前光线命中的图元进行相交测试。
着色器140基于从相交测试器130接收的关于交点的信息以及交点的材料的属性来确定像素的颜色值。着色器140通过考虑交点的材料的基本颜色以及由于光源而导致的效果来确定像素的颜色值。
光线跟踪核100从外部存储器250接收在光线跟踪中需要的数据。由加速结构产生设备200产生的加速结构或者指示关于图元的信息的几何数据被存储在外部存储器250中。图元可以是多边形(诸如三角形或矩形),几何数据可指示关于包括在对象中的图元的顶点和位置的信息。根据一个示例,光线跟踪核包括可安装在光线跟踪芯片上的硬件组件。光线跟踪核可具有例如MIMD(多指令多数据)或SIMD(单指令多数据)架构。光线跟踪核可包括一个或更多个处理器、高速缓冲存储器和/或其它存储器。光线跟踪核可包括在诸如图形处理器的芯片中,光线跟踪芯片能够与存储加速结构和几何数据的外部存储器结合。
加速结构产生设备200产生包括关于对象在3D空间中的位置信息的加速结构。加速结构产生设备200可产生各种类型的加速结构。例如,可通过将3D空间划分成分层树结构来产生加速结构,加速结构产生设备200可通过应用BVH或KD树来产生指示在3D空间中对象之间的关系的结构。加速结构产生设备200可确定叶节点的图元的最大数量以及树的深度,并基于确定的最大数量和确定的树的深度来产生加速结构。
图3是解释由光线跟踪核执行的光线跟踪方法的示意图。例如,光线跟踪核可具有图2中示出的光线跟踪核100的结构。因此,光线跟踪核100的以上描述适用于图3中示出的光线跟踪方法。
参照图3,加速结构可由加速结构产生设备200产生并可被存储在外部存储器250中以由光线跟踪核100处理。在一个示例中,外部存储器250可与包括在光线跟踪芯片中的光线跟踪核结合。外部存储器250可包括加速结构存储器中的产生的加速结构251和几何数据存储器中的几何数据252。
在操作310,光线跟踪核100产生光线。例如,光线跟踪核100产生初级光线、次级光线和从次级光线衍生的光线。
在操作320,光线跟踪核100对从外部存储器250读出的加速结构进行遍历。光线跟踪核100通过基于产生的光线的方向和视点对加速结构251进行遍历来检测被光线命中的包围盒,并在包括在被命中的包围盒中的对象中检测被光线命中的对象。光线跟踪核100重复对加速结构251的遍历,直到检测到对象命中为止。例如,光线跟踪核100沿预定路径对加速结构进行遍历,并且响应于确定在搜索的路径上的叶节点未被光线命中,光线跟踪核100对加速结构中的其它路径进行遍历。
光线跟踪核100可顺序地对所有路径进行遍历;然而,光线跟踪核100可基于先前光线的搜索信息可选地对预定路径进行遍历而不对所有路径进行遍历。例如,在先前光线与当前光线具有相同或相似的视点以及相同或相似的方向的情况下,光线跟踪核100可搜索被命中的叶节点包括在先前节点中的路径。
在操作330,光线跟踪核100基于从外部存储器250接收的图元的几何数据252进行相交测试。光线跟踪核100重复相交测试,直到检测到图元命中为止。例如,光线跟踪核100对图元进行相交测试,并且响应于任何图元被光线命中,光线跟踪核100对另一图元进行相交测试。
光线跟踪核100可顺序地对所有图元进行相交测试;然而,光线跟踪核100可基于关于先前光线的相交测试的信息可选地对预定图元进行测试以避免对所有图元进行相交测试。例如,当先前光线和当前光线具有相同或相似的视点以及相同或相似的方向时,光线跟踪核100可对被先前光线命中的图元进行相交测试。
在操作340,光线跟踪核100基于相交测试进行像素的着色。在操作340完成之后,光线跟踪核100进行操作310。光线跟踪核100针对形成图像的所有像素重复操作310至340。
图4是解释使光线跟踪加速的方法的示例的示意图。参照图4,第一图像412是在t=t0被渲染的图像,第二图像422是在t=t1被渲染的图像。在该示例中,在t=t0与t=t1之间只有兔子433移动,矩形431和三角形432的位置不移动。因此,第一图像412和第二图像422关于矩形431和三角形432的位置彼此相似。因此,光线跟踪核100可通过使用在渲染第一图像412期间获得的值来渲染第二图像422。例如,当第一视点410和第二视点420在相同位置,并且第一光线411和第二光线421在相同方向上时,光线跟踪核100可通过应用针对第一光线411的光线跟踪的结果来使第二光线421的光线跟踪加速。例如,当针对第二光线421进行搜索时,光线跟踪核100的遍历器120可对被第一光线411命中的包围盒进行遍历。此外,在对第二光线的相交测试期间,光线跟踪核100的相交测试器130可对被第一光线411命中的三角形432进行相交测试。
图5是进一步解释图4中示出的使光线跟踪加速的方法的另一示意图。参照图5,加速结构的示例包括五个节点(节点1至节点5),其中,节点3至节点5均为叶节点。加速结构是KD树的示例。KD树是指可用于方便相交测试的空间划分树的类型。节点1是根节点或顶节点。节点2是内节点。叶节点3至叶节点5可包括关于图元、几何形状或对象(诸如,矩形431、三角形432或兔子433)的指针。
遍历器120可沿三条路径搜索加速结构。首先,遍历器120可沿形成第一路径的节点1、节点2和节点3对加速结构进行遍历。其次,遍历器120可沿形成第二路径的节点1、节点2和节点4对加速结构进行遍历。第三,遍历器120可沿形成第三路径的节点1和节点5对加速结构进行遍历。当遍历器120针对第二光线421进行搜索时,遍历器120对第二路径进行遍历,其中,被第一光线411命中的三角形432经由第二路径被搜索到。因此,遍历器120可省略对第一路径或第三路径进行遍历的操作。
图6是描述根据本公开的产生加速结构的方法的示例的流程图。参照图6,加速结构产生设备200可产生重叠的节点被标记的加速结构。
在操作610,加速结构产生设备200将根节点设置为当前节点。
在操作620,加速结构产生设备200确定每个节点的子节点是否彼此重叠。术语“子节点”是指与节点最接近的下层节点。节点彼此重叠的表达指示由节点指示的包围盒彼此重叠。如果当前节点的子节点彼此重叠,则方法进行到操作630。如果当前节点的子节点彼此没有重叠,则方法进行到操作640。
在操作630,加速结构产生设备200将包括重叠的子节点的节点的重叠标志设置为“0”或第一值。结果,重叠标志被设置为“0”或第一值的节点包括重叠的子节点。
在操作640,加速结构产生设备200将不包括重叠的子节点的节点的重叠标志设置为“1”或第二值。结果,重叠标志被设置为“1”或第二值的节点不包括彼此重叠的子节点。
在操作650,加速结构产生设备200将下一节点设置为当前节点。加速结构产生设备200针对每个节点依次执行操作620至操作650。
在操作660,加速结构产生设备200确定当前节点是否是最后的节点。如果当前节点是最后的节点,则完成加速结构的产生。如果当前节点不是最后的节点,则方法进行到操作620。
图7是描述将场景的对象分配到包围盒中的方法的示例的示图。
用于一组对象的包围盒是完全包含组中的对象的集合的闭合区域。包围盒可用于提高几何运算的效率。包围盒可被布置以指示包围体层次(BVH)。包围体层次提供用于构造形成KD树的叶节点的树结构的方案,其中,在该树结构中,组中的所有对象被包围在包围盒中。
参照图7,包围盒ROOT表示最上层的包围盒。包围盒ROOT包括所有包围盒并与树结构中的根节点对应。包围盒ROOT包括包围盒R1和包围盒L1作为最接近的包围盒。包围盒R1和包围盒L1彼此不重叠,因此指示包围盒ROOT的节点的重叠标志被设置为“1”或第二值。
包围盒L1包括包围盒R2和包围盒L2。由于包围盒R2和包围盒L2彼此不重叠,因此指示包围盒L1的节点的重叠标志被设置为“1”或第二值。
包围盒L2包括包围盒R4和包围盒L4。由于包围盒R4和包围盒L4彼此重叠,因此指示包围盒L2的节点的重叠标志被设置为“0”或第一值。
包围盒R1包括包围盒R3和包围盒L3。由于包围盒R3和包围盒L3彼此不重叠,因此指示包围盒R1的节点的重叠标志被设置为“1”或第二值。
虽然为了说明的目的在图7中示出矩形盒,但是本领域技术人员认识到各种不同形状和3D体可用于限定围绕一组对象的包围盒,这样的不同形状在本公开的范围内。在另一示例中,包围盒可以是包括位于3D空间中的对象的长方体。当通过使用包围体层次(BVH)来划分3D空间时,如图7中所示,包围盒可彼此重叠。
加速结构产生设备200可产生包围盒之间的重叠被标记的加速结构。
图8是用于描述根据本公开的加速结构的示例的示图。参照图8,加速结构产生设备200可产生包围盒之间的重叠被标记的加速结构。图8中示出的加速结构指示图7的包围盒之间的关系,其中,加速结构中的每个节点包括重叠标志。利用节点左侧的数字指示重叠标志。
节点R表示根节点并与图7的包围盒ROOT对应。节点R是最上层节点并包括子节点R1和子节点L1。由于节点R1和节点L1彼此不重叠,因此节点R的重叠标志为1。
节点L1包括子节点R2和子节点L2。由于节点R2和节点L2彼此不重叠,因此节点L1的重叠标志被设置为“1”。
节点L2包括子节点R4和子节点L4。由于节点R4和节点L4彼此重叠,因此节点R1的重叠标志被设置为“0”。加速结构产生设备200将节点L2的重叠标志设置为0以标记节点L2的子节点彼此重叠。
节点R1包括子节点R3和子节点L3。由于节点R3和节点L3彼此不重叠,因此节点R1的重叠标志被设置为“1”。
图9是用于描述根据本公开的对加速结构进行遍历的方法的示例的流程图。参照图9,光线跟踪核100可基于节点之间的重叠对加速结构进行遍历。
在操作910,光线跟踪核100对加速结构中的与光线数据相交的叶节点进行遍历。叶节点是树状加速结构中的最下层节点。光线跟踪核100还可对属于相交的叶节点的对象中的与光线数据相交的对象进行遍历。
光线跟踪核100从根节点至叶节点顺序地对加速结构进行遍历。当光线跟踪核100对树状加速结构进行遍历时,光线跟踪核100可首先对近的节点进行遍历,将远的节点推入堆栈,并在对近的节点遍历之后对远的节点进行遍历。
在操作920,光线跟踪核100确定在相交的叶节点之上的节点中的节点是否包括彼此重叠的子节点。换句话说,光线跟踪核100确定遍历的节点中的节点的重叠标志是否被设置为“0”。重叠标志被设置为“0”的节点包括重叠的子节点。如果遍历的节点中存在重叠标志被设置为“0”的节点,则方法进行到操作930。如果遍历的路径中的每个节点的重叠标志被设置为“1”并且在属于最终叶节点的对象中存在与光线数据相交的对象,则在该点终止对加速结构的遍历。
在操作930,光线跟踪核100额外对重叠的子节点进行遍历。光线跟踪核100额外对相交的叶节点正被遍历时没有被遍历的子节点进行遍历。
图10是描述遍历操作的示例的示图。第一光线数据1000与包围盒和3D空间中的对象相交。在图10的情况下,第一光线数据1000与包围盒ROOT、包围盒L1、包围盒R1、包围盒R2和包围盒L3相交。此外,第一光线数据1000与对象D和对象I相交。
图11是描述根据本公开的对加速结构进行遍历的方法的示例的示图。参照图11,光线跟踪核100可通过参考重叠标志较早地终止加速结构的遍历。图11中示出的节点对应于图10中示出的包围盒。
光线跟踪核100确定根节点R与第一光线数据1000是否彼此相交。光线跟踪核100可通过确定包围盒ROOT与第一光线数据1000是否彼此相交来确定根节点R与第一光线数据1000是否彼此相交。参照图10,包围盒ROOT与第一光线数据1000彼此相交。
由于根节点R的子节点R1和子节点L1彼此不重叠,因此根节点R的重叠标志被设置为“1”。光线跟踪核100对与根节点接近的节点(即,节点L1)进行遍历。光线跟踪核100将节点R1推入堆栈并存储节点R1。因此,光线跟踪核100稍后可弹出存储在堆栈中的节点R1并对节点R1进行遍历。弹出存储在堆栈中的节点R1是指读出存储在堆栈中的数据并从堆栈删除数据。换句话说,在堆栈中删除数据,但是数据处理单元接收并处理数据。
光线跟踪核100确定节点L1与第一光线数据1000是否彼此相交。光线跟踪核100可通过确定包围盒L1与第一光线数据1000是否彼此相交来确定节点L1与第一光线数据1000是否彼此相交。参照图10,包围盒L1与第一光线数据1000彼此相交。
由于节点L1的子节点R2和子节点L2彼此不重叠,因此节点L1的重叠标志被设置为“1”。光线跟踪核100对与节点L1接近的节点(即,节点R2)进行遍历。光线跟踪核100将节点L2推入堆栈并存储节点L2。因此,光线跟踪核100稍后可弹出存储在堆栈中的节点L2并对节点L2进行遍历。
光线跟踪核100确定节点R2与第一光线数据1000是否彼此相交。光线跟踪核100可通过确定包围盒R2与第一光线数据1000是否彼此相交来确定节点R2与第一光线数据1000是否彼此相交。参照图10,包围盒R2与第一光线数据1000彼此相交。
光线跟踪核100确定对象A、对象D与第一光线数据1000是否彼此相交。参照图10,对象D与第一光线数据1000彼此相交。
由于光线跟踪核100已对相交的叶节点R2和相交的对象D进行遍历,因此确定上层节点中的节点是否包括彼此重叠的子节点。叶节点R2的上层节点为节点R和节点L1。光线跟踪核100可通过搜索重叠标志为0的节点来搜索包括彼此重叠的子节点的节点。由于节点R和节点L1的重叠标志都为1,因此叶节点R2的上层节点中不存在包括彼此重叠的子节点的节点。因此,光线跟踪核100可不再对节点进行遍历并终止针对第一光线数据1000的遍历。当光线跟踪核100终止针对第一光线数据1000的遍历时,光线跟踪核100弹出存储在堆栈中的节点,但不对节点进行遍历。
图12是用于描述遍历处理的示例的示图。第二光线数据1200与包围盒和3D空间中的对象相交。在图12中示出的示例中,第二光线数据1200与包围盒ROOT、包围盒L1、包围盒R1、包围盒R3、包围盒R4、包围盒L2和包围盒L4相交。此外,第二光线数据1200与对象E相交。
图13是用于描述根据本公开的对加速结构进行遍历的方法的示例的示图。参照图13,光线跟踪核100可参考重叠标志额外对重叠的节点进行遍历。图13的节点分别指示图12的包围盒。
光线跟踪核100对根节点R、节点L1和节点L2进行遍历并按照陈述的顺序确定根节点R、节点L1、节点L2和叶节点R4是否与第二光线数据1200相交。没有被遍历的节点被存储在堆栈中。第二光线数据1200与根节点R、节点L1、节点L2和叶节点R4全部相交。光线跟踪核100确定属于叶节点R4的对象C和对象E与第二光线数据1200是否相交。第二光线数据1200与对象E相交。
光线跟踪核100对相交的叶节点R4的上层节点中的包括彼此重叠的子节点的节点进行遍历。光线跟踪核100可基于叶节点R4的上层节点的重叠标志确定子节点是否彼此重叠。叶节点R4的上层节点为节点L2、节点L1和节点R。在叶节点R4的上层节点中,由于节点L2的重叠标志为0,因此节点L2的子节点R4和子节点L4彼此重叠。因此,光线跟踪核100确定叶节点L4与第二光线数据1200是否彼此相交。虽然第二光线数据1200与包围盒L4彼此相交,但是第二光线数据1200与对象B彼此不相交。由于没有更多的彼此重叠的节点,因此光线跟踪核100终止遍历。
光线跟踪核100可基于各个节点的重叠标志确定是否存在将被遍历的额外节点。在不存在将被遍历的额外节点的情况下或在所有额外节点都被遍历的情况下,光线跟踪核100可终止针对第二光线数据1200的遍历。
图14是描述加速结构产生设备200和光线跟踪核100的示例的示图。参照图14,加速结构产生设备200包括加速结构产生器210和重叠标记器220。加速结构产生器210和重叠标记器220可包括一个或更多个处理器。
加速结构产生器210将包括在3D空间中的对象划分到包围盒中并通过使用节点来产生指示包围盒之间的包含关系的加速结构。将对象划分到包围盒中可指产生包括至少一个对象的包围盒以及产生包括至少一个包围盒的至少一个上层包围盒。包围盒可被产生为长方体。加速结构是指包围盒之间的包含关系的树状表示。
重叠标记器220确定加速结构的节点中的重叠的节点并利用重叠信息对适当的节点进行标记。例如,重叠标记器220将额外标志分配给产生的加速结构中的每个节点。重叠标记器220将节点的子节点是否彼此重叠标记到标志。换句话说,重叠标记器220在与指示彼此重叠的包围盒的节点最接近的上层节点指示重叠信息。
光线跟踪核100包括遍历器120,遍历器120包括堆栈121。
遍历器120对加速结构中与光线数据相交的叶节点进行遍历。如果相交的叶节点的上层节点中不存在包括彼此重叠的子节点的节点,则遍历器120终止遍历。如果相交的叶节点的上层节点中存在包括彼此重叠的子节点的节点,则遍历器120额外对彼此重叠的子节点进行遍历。
遍历器120可基于节点的重叠标志确定节点是否包括彼此重叠的子节点。
当遍历器120额外对彼此重叠的子节点进行遍历时,遍历器120可顺序地弹出存储在堆栈121中的节点并额外对彼此重叠的子节点进行遍历。遍历器120可跳过从堆栈121被弹出的节点中不与另一节点重叠的节点并不对所述节点进行遍历。换句话说,在遍历器120找到相交的叶节点之后,遍历器120不对从堆栈121弹出的节点中彼此不重叠的节点进行遍历,并终止遍历。
遍历器120将没有被遍历的节点推入堆栈121并存储没有被遍历的节点。当遍历器120对树状加速结构进行遍历时,遍历器120选择第一路径并将节点存储在没有被选择的第二路径中。基于对第一路径中的节点进行遍历和第一路径中的节点的重叠的结果,遍历器120可额外对存储在堆栈121中的节点进行遍历或终止遍历。
堆栈121存储节点。堆栈121基于遍历器120的请求存储节点或输出存储的节点。堆栈121通过存储对应于节点的数据来存储节点。节点包括关于分别对应于节点的包围盒的数据。
图15示出包括光线跟踪核的光线跟踪芯片的示例。
参照图15,光线跟踪芯片300包括光线跟踪核1100、加速结构产生设备1200、存储器1250、图形数据输入/输出端口1400和图像输出端口1410。光线跟踪芯片300可包括没有示出的各种其它组件。此外,在另一示例中,各种示出的组件可被集成地形成或被设置在芯片的外部。
参照图2至图14提供的光线跟踪核100、外部存储器250和加速结构产生设备200的描述适用于图15中示出的光线跟踪核1100、加速结构产生设备1200和存储器1250,因此省略对它们的重复描述。
加速结构产生设备1200可经由图形数据输入/输出端口1400从外部源获得包括关于场景中的对象的3D对象数据的场景数据。加速结构产生设备1200可基于3D对象数据产生KD树形式的加速结构,并可利用重叠标志对加速结构的节点进行标记。产生的加速结构可被存储在存储器1250中。光线跟踪核1100可从存储器1250得到加速结构,并通过对加速结构进行遍历来渲染图像。在图像的后处理之后,可通过图像输出端口1410输出渲染的图像。例如,图像输出端口1410可以是连接到显示装置的HDMI端口。
虽然在图15中提供将加速结构产生设备1200和存储器1250与光线跟踪核1100布置在一起的光线跟踪芯片的示例,但是本公开不限于此。出于进一步理解光线跟踪技术的目的而提供示出的示例,示出的示例不意图限制任何权利要求的范围。此外,本领域技术人员将容易感知到使用的组件的类型、输出/输入端口的布置以及各种组件的连接和布置的改变,并且这种改变在本公开的范围内。
如上所述,根据本公开的以上实施例中的一个或更多个,可产生通过使用标志指示包围盒的重叠的加速结构。
此外,可基于包围盒的重叠确定是否额外对加速结构进行遍历,从而减少对加速结构进行遍历的计算时间。
提供用于较早地终止加速结构的遍历以减少额外遍历的方法和设备。
此外,本公开的其它实施例还可通过介质(例如,计算机可读介质)中/上的计算机可读代码/指令实现以控制至少一个处理元件实现任何上述实施例。所述介质可对应于允许存储和/或传输计算机可读代码的任何介质/媒介。计算机可读代码可以以各种方式被记录/传输到介质上,其中,介质的示例包括诸如磁存储介质(例如,ROM、软盘、硬盘等)和光学记录介质(例如,CD-ROM或DVD)的记录介质。
可使用一个或更多个硬件组件、一个或更多个软件组件或者一个或更多个硬件组件和一个或更多个软件组件的组合来实现执行以上针对图1至图14描述的各种操作的各种单元、设备、模块、元件、产生器、遍历器、相交测试器、着色器和重叠标记器。
硬件组件可以是例如物理上执行一个或更多个操作的物理装置,但不限于此。硬件组件的示例包括麦克风、放大器、低通滤波器、高通滤波器、带通滤波器、模数转换器、数模转换器和处理装置。
例如,软件组件可通过由软件或指令控制的处理装置来实施以执行一个或更多个操作,但不限于此。计算机、控制器或其它控制装置可使处理装置运行软件或执行指令。一个软件组件可由一个处理装置来实施,或者两个或更多个软件组件可由一个处理装置来实施,或者一个软件组件可由两个或更多个处理装置来实施,或者两个或更多个软件组件可由两个或更多个处理装置来实施。
可使用一个或更多个通用或专用计算机(诸如,处理器、控制器和算术逻辑单元、数字信号处理器、微计算机、现场可编程阵列、可编程逻辑单元、微处理器或能够运行软件或执行指令的任何其它装置)来实现处理装置。处理装置可运行操作系统(OS),并可运行在OS下操作的一个或更多个软件应用。处理装置可在运行软件或执行指令时访问、存储、操纵、处理并创建数据。为了简明,在描述中可使用单数术语“处理装置”,但是本领域普通技术人员将理解,处理装置可包括多个处理元件和多种类型的处理元件。例如,处理装置可包括一个或更多个处理器、或者一个或更多个处理器和一个或更多个控制器。此外,不同的处理配置是可行的,诸如并行处理器或多核处理器。
被配置为实施软件组件以执行操作A的处理装置可包括被编程为运行软件或执行指令以控制处理器执行操作A的处理器。此外,被配置为实施软件组件以执行操作A、操作B和操作C的处理装置可具有各种配置,诸如,被配置为实施软件组件以执行操作A、操作B和操作C的处理器;被配置为实施软件组件以执行操作A的第一处理器和被配置为实施软件组件以执行操作B和操作C的第二处理器;被配置为实施软件组件以执行操作A和操作B的第一处理器和被配置为实施软件组件以执行操作C的第二处理器;被配置为实施软件组件以执行操作A的第一处理器、被配置为实施软件组件以执行操作B的第二处理器和被配置为实施软件组件以执行操作C的第三处理器;被配置为实施软件组件以执行操作A、操作B和操作C的第一处理器和被配置为实施软件组件以执行操作A、操作B和操作C的第二处理器;或者均实施操作A、操作B和操作C中的一个或更多个操作的一个或更多个处理器的任何其它配置。虽然这些示例提到了三个操作A、B和C,但是可被实施的操作的数量不限于三个,而可以是实现期望的结果或执行期望的任务所需的任何数量的操作。
用于控制处理装置实施软件组件的软件或指令可包括用于独立地或共同地指示或配置处理装置执行一个或更多个期望操作的计算机程序、代码段、指令或它们的一些组合。软件或指令可包括可由处理装置直接执行的机器代码(诸如由编译器产生的机器代码)和/或可由处理装置使用解释器执行的更高级代码。可在任何类型的机器、组件、物理或虚拟装备、计算机存储介质或装置或能够将指令或数据提供给处理装置或由处理装置解释的传播信号波中永久地或临时地实施软件或指令以及任何关联的数据、数据文件和数据结构。软件或指令以及任何关联的数据、数据文件和数据结构还可分布在联网的计算机系统中,从而按照分布方式来存储并执行软件或指令以及任何关联的数据、数据文件和数据结构。
例如,可在一个或更多个非暂时性计算机可读存储介质中记录、存储或固定软件或指令以及任何关联的数据、数据文件和数据结构。非暂时性计算机可读存储介质可以是能够存储软件或指令以及任何关联的数据、数据文件和数据结构以使得它们可被计算机系统或处理装置读取的任何数据存储装置。非暂时性计算机可读存储介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、闪存、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-R LTH、BD-RE、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘或本领域普通技术人员已知的任何其它非暂时性计算机可读存储介质。
可由示例所属领域的编程技术人员基于在此提供的附图和它们的相应描述来容易地构造用于实现在此公开的示例的功能程序、代码和代码段。
虽然本公开包括特定示例,但是本领域普通技术人员将清楚的是:在不脱离权利要求和它们的等同物的精神和范围的情况下,可在这些示例中进行形式上和细节上的各种改变。在此描述的示例应仅在描述意义上考虑,而非为了限制的目的。在每个示例中的特征或方面的描述将被视为可被应用于在其它示例中的相似特征或方面。如果按照不同顺序执行描述的技术,和/或如果按照不同方式组合在描述的系统、架构、装置或电路中的组件和/或由其它组件或其等同物来替代或补充在描述的系统、架构、装置或电路中的组件,则可实现适当的结果。因此,本公开的范围并非由具体实施方式限定而是由权利要求和它们的等同物所限定,并且在权利要求和它们的等同物的范围内的所有变化将被解释为包括在本公开中。
Claims (14)
1.一种产生用于光线跟踪的加速结构的方法,所述方法包括:
将用于图像渲染的3D对象分配到包围盒中;
产生包括节点的加速结构,其中,所述加速结构指示包围盒之间的包含关系;
对节点中的重叠节点进行标记以产生包围盒之间的重叠被标记的加速结构,
其中,所述对节点中的重叠节点进行标记的步骤包括:将标志添加到每个节点,其中,由所述标志指示关于每个节点的子节点是否彼此重叠的信息,
其中,在对节点中的重叠节点进行标记的过程中,在与对应于重叠包围盒的节点最接近的上层节点中指示重叠信息。
2.如权利要求1所述的方法,还包括:
从第一非暂时性存储器接收关于3D对象的3D对象数据;
将加速结构存储在第二非暂时性存储器中,其中,在所述加速结构中,重叠节点被标记。
3.一种用于对光线跟踪系统中的通过权利要求1的方法产生的加速结构进行遍历的方法,所述方法包括:
(a)对加速结构的叶节点进行遍历,所述叶节点与光线数据相交;
(b)确定相交的叶节点的上层节点中的节点是否包括彼此重叠的子节点,响应于确定相交的叶节点的上层节点中的节点不包括彼此重叠的子节点,终止遍历,或者响应于确定相交的叶节点的上层节点中的节点包括彼此重叠的子节点,对彼此重叠的子节点进行遍历。
4.如权利要求3所述的方法,其中,在操作(b),基于节点的重叠标志进行关于节点是否包括彼此重叠的子节点的确定。
5.如权利要求3所述的方法,其中,操作(a)包括:将没有被遍历的节点推入堆栈并将没有被遍历的节点存储在堆栈中。
6.如权利要求5所述的方法,其中,当在操作(b)对彼此重叠的子节点进行遍历时,存储在堆栈中的节点被顺序地推出以对被推出的节点中的彼此重叠的子节点进行遍历。
7.如权利要求6所述的方法,其中,在操作(b),被推出的节点中的不包括重叠的子节点的节点不被遍历。
8.一种用于产生用于光线跟踪的加速结构的装置,所述装置包括:
加速结构产生器,被配置为将用于图像渲染的3D对象分配到包围盒中并产生包括节点的加速结构,其中,所述加速结构指示包围盒之间的包含关系;
重叠标记器,被配置为对节点中的重叠节点进行标记以产生包围盒之间的重叠被标记的加速结构,
其中,重叠标记器将标志添加到每个节点并存储关于每个节点的子节点是否彼此重叠的标志信息,
其中,重叠标记器在与指示重叠包围盒的节点最接近的上层节点存储重叠信息。
9.一种用于对通过权利要求1的方法产生的加速结构进行遍历的光线跟踪装置,所述光线跟踪装置包括遍历器,所述遍历器被配置为对加速结构的叶节点进行遍历,所述叶节点与光线数据相交,
其中,响应于确定相交的叶节点的上层节点中的节点不包括彼此重叠的子节点,遍历器终止遍历,响应于确定相交的叶节点的上层节点中的节点包括彼此重叠的子节点,遍历器对彼此重叠的子节点进行遍历,
其中,遍历器包括用于存储节点的堆栈。
10.如权利要求9所述的光线跟踪装置,其中,遍历器基于节点的重叠标志确定节点是否包括彼此重叠的子节点。
11.如权利要求9所述的光线跟踪装置,其中,遍历器将没有被遍历的节点推入堆栈并将没有被遍历的节点存储在堆栈中。
12.如权利要求11所述的光线跟踪装置,其中,当遍历器对彼此重叠的子节点进行遍历时,遍历器顺序地推出存储在堆栈中的节点以对被推出的节点中的彼此重叠的子节点进行遍历。
13.如权利要求12所述的光线跟踪装置,其中,遍历器不对从堆栈推出的节点中的彼此不重叠的子节点进行遍历。
14.一种光线跟踪装置,包括:
处理器,被配置为通过对加速结构进行遍历来渲染图像,其中,在所述加速结构中,根据对象的包围体层次对重叠关系进行标记,
其中,处理器被配置为:基于在加速结构中标记的重叠关系,在对加速结构进行遍历期间,跳过一个或更多个节点,
其中,重叠关系指示加速结构的节点是否具有彼此重叠的子节点,利用添加到具有子节点的节点的重叠标志来对重叠关系进行标记。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140132015A KR102244619B1 (ko) | 2014-09-30 | 2014-09-30 | 가속 구조를 생성 및 탐색하는 방법 |
KR10-2014-0132015 | 2014-09-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105469440A CN105469440A (zh) | 2016-04-06 |
CN105469440B true CN105469440B (zh) | 2020-10-16 |
Family
ID=53717875
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510460037.7A Active CN105469440B (zh) | 2014-09-30 | 2015-07-30 | 用于产生和遍历加速结构的方法和设备 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9965888B2 (zh) |
EP (1) | EP3002732B1 (zh) |
JP (1) | JP6476090B2 (zh) |
KR (1) | KR102244619B1 (zh) |
CN (1) | CN105469440B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102467031B1 (ko) * | 2015-08-31 | 2022-11-14 | 삼성전자주식회사 | 가속 구조를 생성 및 탐색하는 방법 |
US11295506B2 (en) * | 2015-09-16 | 2022-04-05 | Tmrw Foundation Ip S. À R.L. | Chip with game engine and ray trace engine |
US10043303B2 (en) * | 2016-03-30 | 2018-08-07 | Intel IP Corporation | Methods and apparatus for more efficient ray tracing of instanced geometry |
KR20180050124A (ko) * | 2016-11-04 | 2018-05-14 | 삼성전자주식회사 | 가속 구조를 생성하는 방법 및 장치 |
US10977858B2 (en) | 2017-03-30 | 2021-04-13 | Magic Leap, Inc. | Centralized rendering |
EP3602495A4 (en) | 2017-03-30 | 2020-12-16 | Magic Leap, Inc. | CENTRALIZED RENDERING |
US10559115B2 (en) * | 2018-03-02 | 2020-02-11 | Microsoft Technology Licensing, Llc | Techniques for generating visualizations of ray tracing images |
US20200211259A1 (en) | 2018-12-28 | 2020-07-02 | Intel Corporation | Apparatus and method for acceleration data structure refit |
US11335070B2 (en) | 2020-02-10 | 2022-05-17 | Magic Leap, Inc. | Dynamic colocation of virtual content |
EP4104002A4 (en) | 2020-02-14 | 2023-08-09 | Magic Leap, Inc. | 3D OBJECT ANNOTATION |
CN118276683A (zh) | 2020-02-14 | 2024-07-02 | 奇跃公司 | 工具桥 |
US11393156B2 (en) | 2020-03-13 | 2022-07-19 | Advanced Micro Devices, Inc. | Partially resident bounding volume hierarchy |
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 |
US11380041B2 (en) * | 2020-06-11 | 2022-07-05 | Nvidia Corporation | Enhanced techniques for traversing ray tracing acceleration structures |
US11335055B2 (en) * | 2020-06-26 | 2022-05-17 | Imagination Technologies Limited | Intersection testing in ray tracing systems with skipping of nodes in sub-trees of hierarchical acceleration structures |
US11450058B2 (en) * | 2020-06-26 | 2022-09-20 | Ati Technologies Ulc | Early termination of bounding volume hierarchy traversal |
GB2607350B (en) | 2021-06-04 | 2023-12-13 | Advanced Risc Mach Ltd | Graphics processing |
GB2607348A (en) | 2021-06-04 | 2022-12-07 | Advanced Risc Mach Ltd | Graphics processing |
US11816792B2 (en) * | 2021-12-16 | 2023-11-14 | Advanced Micro Devices, Inc. | Overlay trees for ray tracing |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101685548A (zh) * | 2008-09-26 | 2010-03-31 | 辉达公司 | 用于混合光线跟踪系统的片段着色器及操作方法 |
CN102609990A (zh) * | 2012-01-05 | 2012-07-25 | 中国海洋大学 | 面向复杂三维cad模型的海量场景渐进式更新算法 |
CN102667850A (zh) * | 2009-12-23 | 2012-09-12 | 英特尔公司 | 图像处理技术 |
CN102736947A (zh) * | 2011-05-06 | 2012-10-17 | 新奥特(北京)视频技术有限公司 | 一种图形渲染中光栅化阶段的多线程实现方法 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
KR100894136B1 (ko) | 2006-08-31 | 2009-04-20 | 세종대학교산학협력단 | 광선 추적을 위한 비 스택 방식의 케이디 트리 탐색알고리즘을 적용한 영상검출 장치 및 방법 |
US8200609B2 (en) * | 2007-08-31 | 2012-06-12 | Fair Isaac Corporation | Construction of decision logic with graphs |
US8502819B1 (en) | 2007-12-17 | 2013-08-06 | Nvidia Corporation | System and method for performing ray tracing node traversal in image rendering |
US7734714B2 (en) * | 2008-01-11 | 2010-06-08 | Spacecurve, Inc. | Spatial Sieve Tree |
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 |
US8421801B2 (en) | 2008-09-09 | 2013-04-16 | Caustic Graphics, Inc. | Ray tracing using ray-specific clipping |
KR101136737B1 (ko) * | 2011-10-07 | 2012-04-19 | (주)넥셀 | 그래픽 처리방법 및 그 장치 |
US20130265297A1 (en) * | 2012-04-06 | 2013-10-10 | Motorola Mobility, Inc. | Display of a Corrected Browser Projection of a Visual Guide for Placing a Three Dimensional Object in a Browser |
US9185387B2 (en) * | 2012-07-03 | 2015-11-10 | Gopro, Inc. | Image blur based on 3D depth information |
US9305392B2 (en) | 2012-12-13 | 2016-04-05 | Nvidia Corporation | Fine-grained parallel traversal for ray tracing |
US10970912B2 (en) * | 2013-03-14 | 2021-04-06 | Imagination Technologies Limited | 3-D graphics rendering with implicit geometry |
US9697640B2 (en) * | 2014-04-21 | 2017-07-04 | Qualcomm Incorporated | Start node determination for tree traversal in ray tracing applications |
US10235338B2 (en) * | 2014-09-04 | 2019-03-19 | Nvidia Corporation | Short stack traversal of tree data structures |
-
2014
- 2014-09-30 KR KR1020140132015A patent/KR102244619B1/ko active IP Right Grant
-
2015
- 2015-05-05 US US14/704,349 patent/US9965888B2/en active Active
- 2015-07-02 EP EP15175085.8A patent/EP3002732B1/en active Active
- 2015-07-28 JP JP2015148894A patent/JP6476090B2/ja active Active
- 2015-07-30 CN CN201510460037.7A patent/CN105469440B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101685548A (zh) * | 2008-09-26 | 2010-03-31 | 辉达公司 | 用于混合光线跟踪系统的片段着色器及操作方法 |
CN102667850A (zh) * | 2009-12-23 | 2012-09-12 | 英特尔公司 | 图像处理技术 |
CN102736947A (zh) * | 2011-05-06 | 2012-10-17 | 新奥特(北京)视频技术有限公司 | 一种图形渲染中光栅化阶段的多线程实现方法 |
CN102609990A (zh) * | 2012-01-05 | 2012-07-25 | 中国海洋大学 | 面向复杂三维cad模型的海量场景渐进式更新算法 |
Non-Patent Citations (1)
Title |
---|
基于光线跟踪的真实感全局光照问题研究;周鹏 等;《中国博士学位论文全文数据库 信息科技辑》;20121215(第12期);第I138-31页 * |
Also Published As
Publication number | Publication date |
---|---|
US20160093090A1 (en) | 2016-03-31 |
EP3002732A3 (en) | 2016-05-25 |
KR20160038640A (ko) | 2016-04-07 |
US9965888B2 (en) | 2018-05-08 |
JP6476090B2 (ja) | 2019-02-27 |
EP3002732A2 (en) | 2016-04-06 |
EP3002732B1 (en) | 2018-06-20 |
CN105469440A (zh) | 2016-04-06 |
JP2016071856A (ja) | 2016-05-09 |
KR102244619B1 (ko) | 2021-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105469440B (zh) | 用于产生和遍历加速结构的方法和设备 | |
KR102197067B1 (ko) | 멀티 프레임들의 동일한 영역을 연속으로 렌더링하는 방법 및 장치 | |
US9576389B2 (en) | Method and apparatus for generating acceleration structure in ray tracing system | |
US20170091898A1 (en) | Apparatus for and method of traversing tree | |
KR102493461B1 (ko) | 렌더링 시스템 및 방법 | |
CN104616340A (zh) | 射线跟踪方法和设备 | |
US10049488B2 (en) | Apparatus and method of traversing acceleration structure in ray tracing system | |
KR20170083891A (ko) | 가속 구조를 생성하는 방법 및 장치 | |
KR102242566B1 (ko) | 레이 트레이싱 처리 장치 및 방법 | |
US20150091894A1 (en) | Method and apparatus for tracing ray using result of previous rendering | |
US20150348307A1 (en) | Apparatus and method of traversing acceleration structure in ray tracing | |
US10460506B2 (en) | Method and apparatus for generating acceleration structure | |
KR102252374B1 (ko) | 광선 추적 유닛 및 광선 데이터를 처리하는 방법 | |
US10019832B2 (en) | Method of generating and traversing acceleration structure | |
US10115224B2 (en) | Method and apparatus generating acceleration structure | |
Zirr et al. | Memory-efficient on-the-fly voxelization and rendering of particle data | |
US20240112397A1 (en) | Spatial test of bounding volumes for rasterization | |
KR100843292B1 (ko) | 룩업 테이블을 이용한 레이 트레이싱 장치 및 방법 | |
Goradia et al. | Gpu-based ray tracing of splats | |
JP4920775B2 (ja) | 画像生成装置及び画像生成プログラム | |
Kužel | Real-time voxel visualization and editing for 3D printing | |
Káčereková | Rekonstrukce 3D povrchu z hloubkových dat se zohledněním prázdného prostoru | |
KR20160133358A (ko) | 트리 구조를 생성하는 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |