CN102034259A - 利用分级网格量化的存储器有效光线跟踪 - Google Patents

利用分级网格量化的存储器有效光线跟踪 Download PDF

Info

Publication number
CN102034259A
CN102034259A CN2010105007032A CN201010500703A CN102034259A CN 102034259 A CN102034259 A CN 102034259A CN 2010105007032 A CN2010105007032 A CN 2010105007032A CN 201010500703 A CN201010500703 A CN 201010500703A CN 102034259 A CN102034259 A CN 102034259A
Authority
CN
China
Prior art keywords
summit
max
processor
logic
make
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
CN2010105007032A
Other languages
English (en)
Other versions
CN102034259B (zh
Inventor
M·厄恩斯特
B·塞戈维亚
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN102034259A publication Critical patent/CN102034259A/zh
Application granted granted Critical
Publication of CN102034259B publication Critical patent/CN102034259B/zh
Expired - Fee Related 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/005General purpose rendering architectures
    • 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
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/005Tree description, e.g. octree, quadtree
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/12Bounding box

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)

Abstract

在一个紧凑数据结构中,压缩方法和***对景物的边界体层次(BVH)和三角形进行编码。在计算机程序正实际运行时有效的解压缩被执行,并且可以被用在交互式光线跟踪中。量化的顶点和三角形条带可以被存储在BVH叶节点中。局部顶点位置和顶点指数可以使用在位串中编码的数目很小的位。在遍历期间,经优化的算法可以对该几何结构进行解码,从而允许随机访问具有最小的开销。

Description

利用分级网格量化的存储器有效光线跟踪 
背景技术
对于离线渲染和交互式应用,光线跟踪已变得越来越重要。它的灵活性和光学逼真的图像质量使光线跟踪成为解决全局照明等问题的较佳算法。近年来,已经证明它适合用于实时渲染。现代光线跟踪程序的性能可与用于许多场景的光栅化处理相竞争,并且可能更稳固且更容易使用。随着完全可编程图形体系结构即将到来,基于经典光栅化处理的渲染管线的其余优点可能会减少。 
然而,光线跟踪的一个问题是仅当整个景物适应于器件存储器时才能实现最佳的性能。大多数交互式光线跟踪实现方式都大量使用存储器,因为这种方案产生了很高的帧率。这对于实际应用而言是个问题,在具有快速但有限的存储器的图形板上不再如此。 
不情愿将数据精简用于快速光线跟踪是因为大多数压缩算法对性能有影响并且缺乏对随机访问的支持。在渲染之前整个数据组的连续解压缩可能不是一个选择。最近开发的许多算法是在正确的方向上迈进,但是,它们要么仅仅实现了普通的压缩率,要么要求用超高速缓存对数据结构进行按块解压缩。对于在具有有限的存储器的器件上对非常大的模型进行实时光线跟踪而言,上述两种限制都是有问题的。 
附图说明
图1是示出了本文所描述的根据一实施方式的总体处理的流程图。 
图2示出了根据一实施方式在全局栅格上放置三角形的情况。网格表示顶点量化。左:未量化的顶点。中:在没有全局归整的情况下叶节点中的局部量化;在相邻的三角形之间出现了间隙。右:在归整到全局栅格的情况下的局部量化产生了严密的网格。 
图3是示出了根据一实施方式将顶点位置编码成位串的流程图。 
图4示出了根据一实施方式顶点的编码情况,其中,一个附加位可以指示最近的边界平面。 
图5是示出了根据一实施方式使用查找表格使多个三角形的连通性模型化的流程图。 
图6示出了根据一实施方式将未对准的负载用于顶点解码的情况。 
图7是示出了根据一实施方式的紧凑边界值层次的构造过程的流程图。 
图8示出了根据一实施方式的边界值层次的布局,其中,子节点可以被组织成多个块。 
图9示出了本文所描述的根据一实施方式的处理过程的软件或固件实现方式。 
具体实施方式
现在参照附图描述较佳的实施方式,其中,相同的标号指示完全一样的或功能相似的元件。在这些图中,每个标号的最左边的数字对应于首次使用该标号的那个图。尽管讨论了特定的配置和安排,但是应该理解,这仅仅是为了说明示出。有关领域的技术人员将会认识到,在不背离本申请的精神和范围的情况下,可以使用其它配置和安排。对于有关领域的技术人员而言,很明显,这也可以被用在除本文所描述的以外的各种其它***和应用中。 
本文所描述的方法和***可以将三角形网格及其边界体层次(BVH)存储到紧凑分级数据结构中。BVH可以被用作一种加速结构,并且被用作三角形网格的分级压缩表示。这利用了这样一个事实:BVH可以表示三角形网格的近似。网格的顶点可以作为量化的值被存储在位数很小的BVH叶之内。 
然而,叶节点之内的顶点位置的量化可能导致相邻的三角形之间有间隙,如果它们位于不同的叶中的话。这会发生,是因为两个叶节点之内的量化位置可能未对准。在一个实施方式中,用全局量化栅格可以解决这一问题,其中,在这种栅格上所有的叶节点可以是对准的。三角形顶点可以被归整到相同的栅格,并且它们的位置可以是作为到它们各自的边界框的原点的整数偏移而被存储的。一个叶节点之内的整数位置可能通常具有很小的范围,并且可能是易于压缩的。 
例如,可以用像Huffman编码或算术编码这样的主动压缩算法对上述整数值进行编码。在一个实施方式中,可以在位串中存储数据。经优化的解包函数可以被用于以很低的成本对它们进行解码。 
除了顶点位置以外,顶点连通性可以被压缩。三角形可以作为条带或指数 化条带(随便哪一个是更小的)被局部地存储在BVH节点之内。如量化的位置那种情况,顶点指数可以具有很小的范围,并且可以被压缩。 
边界体积层次自身也可以是以紧凑的形式被存储的。BVH节点可以被量化。另外,这些节点可以被存储到多个簇中。这样,子指针可以代表簇中的局部偏移,这种局部偏移可以只需要少数的位。例如,大体上,BVH节点的大小可以从32个字节减小到4个字节。通常,对BVH构造算法没有任何限制,使得可以使用常规的构造程序。 
图1示出了根据一实施方式的总体的处理。在110处,模型的三角形可以在全局栅格上被量化并且被归整。这可以按这样一种方式来实现,该方式消除了若在各个局部栅格上对三角形进行量化则可能出现的那些间隙。在120处,这些三角形的顶点的位置被编码成位串。这是以这样一种方式执行的,该方式使代表这些顶点所需的位的数目达到最小。在130处,这些三角形的连通性被模型化。在一个实施方式中,这可以通过以条带的形式考虑这些三角形来执行,下文将对此作更详细地描述。在140中,该模型的一些或全部可以被表示在BVH中。在一个实施方式中,可以以一种紧凑的方式来构造BVH,下文对此作更详细地描述。上述过程可以结束于150。 
全局栅格上的量化 
图2示出了根据一实施方式使三角形定位于全局栅格上。在边界体层次的上下文中将一形状模型化为一组三角形时,在将各个多边形置于局部量化栅格上时该几何结构中可能会出现裂纹或间隙。通过如下操作可以防止这种情况:将所有的三角形顶点和叶边界框归整到同一全局栅格。最左边的图210示出了一组相邻的三角形,其中,这些顶点仍然未量化并且没有放置到栅格上。中间的图220示出了每个三角形都被放置到它们自己的局部栅格上并且被量化。使这些三角形合并可能导致这些原打算被结合起来的三角形之间有间隙。这些间隙(比如间隙225)可能代表了局部量化的伪像。在一个实施方式中,可以使用全局栅格,其中,三角形可以被归整,使得间隙被消除。最右边的图230示出了这种情况。此处,间隙225可以被消除。注意到,在BVH的上下文中,全局归整的边界框不需要被存储,因为它们可以在计算机程序正实际运行时被 归整以便于顶点的解压缩。 
对顶点位置进行编码 
为了节省存储器,可以使用位串来指定三角形顶点。在一个实施方式中,可以相对于边界框原点O对顶点位置进行编码。因此,考虑到要编码的一组顶点(Ai),首先可以计算从O到Ai中的每个顶点的δ矢量(Di={xi,yi,zi})。对max(xi、max(yi)、max(zi)分别进行编码所需的位的数目(nx,ny,nz)可以被计算。(nx,ny,nz)提供了每个顶点的每个坐标最多需要的位的总数n,并且可以引导至可变位编码方案。在一个实施方式中,每个顶点所需的位的数目(nx,ny,nz)是在位串中被编码的。随后,可以使顶点数据入队。 
图3示出了根据一个实施方式对顶点进行编码。在310处,对于每个顶点,可以计算δ矢量(Di={xi,yi,zi}),其中,该矢量的每个分量描述了在该维度中从边界框的原点到该顶点的距离。在320处,对于所有的顶点Ai,可以确定每个维度的最大值。这些最大值被显示成max(xi)、max(yi)、max(zi)。在330处,对这些最大值中的每一个进行编码所需的位的数目可以被确定。这产生了三个值(nx,ny,nz),用于代表这些最大值。在340处,这些值(nx,ny,nz)可以被置于位串中,其后就是Ai的顶点数据。上述过程可以结束于350。 
一种对边界框内的顶点数据进行编码的技术可以包括计算从原点起的整数δ矢量。然而,叶边界框是它们包含的那些顶点的实际的边界框。因为一些顶点位于边界框面之一上或附近,所以计算从最近的平面起的(不是从原点起的)δ值可以导致更小的δ矢量,可以用更少的位来表示这些更小的δ矢量。 
为此,在一个实施方式中,对于该δ矢量的每个分量,可以添加一个额外的位以标识最近的平面,上述距离是从该最近的平面起测量的。这可以减小顶点数据的最终的大小(即位的数目)。这可能对于那些包含许多大三角形的模型特别地有用。在图4的二维示例中,对于每个顶点(包括顶点D),可以产生δ矢量。此处,对于任何给定的顶点,xmin可以被用于指明在x方向上从该顶点到原点O(被标为405)的距离。变量ymin可以被用于指明在y方向上从原点405到D的距离。对于顶点D,y维度中最近的“平面”将对应于上方的边界410;x维度中最近的“平面”将对应于最右边的边界420。因此,顶点D将被 编码成(xmax D,ymax D),其中,这些坐标分别代表了从上方的边界410起的距离以及从最右边的边界420起的距离。然后,对于每个坐标,可以添加额外的位,以标识最近的边界。在第一坐标的情况下,它的额外的位将表示上方或下方的边界;在第二坐标的情况下,它的额外的位将表示右边或左边的边界。 
对顶点数据进行解码可以包括:读取每个分量所需的位的数目;以及对顶点数据进行解码。 
应该理解,图4示出了二维模型,为的是使说明简化和容易解释。该示例可以被扩展到三维的情况,其中,边界将是平面而非线段。除了x和y坐标以外,还将有z坐标以对任何给定的顶点进行编码。 
三角形连通性 
三角形连通性也可以被模型化。有若干种方式来实现这一点。在一个方法中,对于每个三角形,可以存储三个顶点位置,从而复制共用的顶点。考虑到图4所提供的叶示例,顶点位置序列{ABE,EBD,CED}可以被直接编码。另一种可能性是存储顶点位置的数组,然后对于每个三角形存储三个指数,其中,这些指数可以是指该数组中所标识的顶点位置。在图4的情况中,{ABCDE}可以被存储以便用于顶点数据。指数可以被定义,例如,0用于第一标识顶点(A),1用于第二标识顶点(B)等等。结果,{[0,1,4],[4,1,3],[2,4,3]}可以被用于命名这些三角形。例如,[0,1,4]代表三角形ABE。 
另一种使三角形连通性模型化的方式是将邻接的三角形视为条带。使用条带或指数化的条带可以提供减小叶大小和解码次数的机会。在一个实施方式中,使用了叶中所包含的三角形网格的条带***。这种***可以在多个叶中处理三角形网格布局,例如,四个三角形的条带之后是三个三角形的条带,再之后是一个三角形。这一方案可以使用查找表格(LUT),该查找表格可以是自动产生的并且可以如下地设计: 
·限制每个叶的三角形的最大数目(例如14个); 
·上述LUT的每个条目处理一个网格布局。例如,条目STRIP3X3_STRIP2X3_TRIX4将处理这样一种布局,该布局包括3个由三个三角形构成的条带、3个由两个三角形构成的条带以及4个三角形; 
·为了限制条目的数目,根据它们的大小对这些条带进行分选。因此,STRIP4X1_STRIP3X3将是一个有效的条目,而STRIP3X3_STRIP4X1则不是; 
·对于每个条目,存储三角形的数目以及它们的第一顶点的偏移。例如,条目STRIP3X1_TRIX2是由5个三角形和5个三角形偏移{0,1,2,5,8}构成的; 
·这些条带使顺时针和逆时针的三角形交替;存储每个三角形的取向。 
上述LUT可以与条带或指数化条带的使用无关。如果该叶存储了三角形条带,则该表格所提供的偏移可以给出顶点位置的偏移。相反,如果该叶存储了指数化条带,则该表格可以提供顶点指数的偏移。在压缩期间,条带与指数化条带都可以被计算,并且可以只保留较小的表示。然后,可以用额外的位来标记这些叶,以指示条带或指数化条带的存在性。 
图5示出了根据一实施方式将条带用于三角形连通性的模型化的有关处理过程。在510处,可以选择一个数目,从而代表单个叶中可以包含的三角形的数目的限值。在520处,可以创建查找表格,其中,每个条目对应于单个网格布局。在530处,多个条带可以被存储在每个条目中,按大小对它们进行组织。在540处,三角形的数目和每个第一顶点的偏移可以被存储在每个条目处。在550处,三角形取向可以被存储。上述过程可以结束于560。 
解码 
为了使某些体系结构中的解码步骤加速,在一个实施方式中,可以使用目标体系结构的未对准的负载能力。这种体系结构的一个示例是x86体系结构。像x86系列的芯片在存储器负载方面可以是特别宽松的。此处,64位四倍长字可以按下列方式被载入而不管它们的对准情况: 
对于表示每个顶点所需的许多位n,计算适应于四倍长字的顶点的最大数目pn=[64/n]。 
使用pn个顶点的未对准的序列来存储顶点。 
该最后的步骤是在图6的实施方式中示出的:此处,n等于44位并且pn等于1。一个44位顶点可以被编码,并且可以留下4个空白的位以在字节边界上结束。因此,总共48个位被分配给该顶点。在先前一个的开始之后,下一个顶点可以被编码6个字节(48位=(8位/字节)*(6字节))。 
因为pn个顶点的每个序列现在都在新的字节上开始,所以解码步骤被改进,其中,下面的体系结构支持快速的未对准的负载。对于快速的解码,可以首先计算查找表格(LUT),其中,LUT为每个顶点大小nε[1...64]存储2个数值:顶点的数目pn,该数目可以被存储在四倍长字之内;以及在字节中相对于要解码的下一个顶点(或多个顶点)的位置的偏移sn。 
解码步骤可以按下列进行,其中q是四倍长字,解码当前正在从那里进行: 
1.从q起对pn个顶点进行解码。当所有的顶点适应于q时,该操作可能需要SHIFT和AND指令的序列。 
2.在q之后,载入下一个四倍长字定位的sn字节。 
为了改进解码步骤,可以使用整数SIMD操作。根据一个实施方式,一旦来自位串的δ值被获取,则使用SIMD操作的无分支代码可以检索整数归整位置并且接下来使用归整栅格的原点和单元大小来计算世界空间浮动点位置。附录A给出了顶点数据解码的伪代码的示例 
BVH树布局 
下文描述了:两级BVH,该两级BVH可使用压缩的和未压缩的节点;分级量化,该分级量化可减小边界框存储器消耗;以及块分配和块相关指数,该块分配和块相关指数可减小对子节点的引用的大小。图7示出了根据一实施方式的处理过程。在710处,可以使用分级编码来表达子边界框即子节点的位置。子边界框的最小和最大位置可以是相对于其母节点来表达的。偏移可以被用于定义子边界框的角落的位置,其中,上述偏移是相对于母框的一点(比如原点)而言的。如果只可以使用4位对每个子边界框分量进行编码,则边界框存储器占用等于24位。因此,在一个实施方式中,使用4字节(32位)/节点允许用8位使子节点指数化并且按下文描述的方式对额外的信息进行编码。 
在720处,子节点可以被分组成多个块。如图8的实施方式所示,可以使用两个指数化***。在一个块之内,可以使用数目很小的位使这些子节点指数化。在图8中,例如,可以使用小的指数使来自根节点R的节点N指数化。为了引用当前的块之外的子节点,四字节整数可以被存储在专用的前向节点中。在图示中,底部节点B可以指向前向节点F。前向节点F自身可以指向块根R, 其中,这些根R是各个子树的根。 
通过使用这种布局,四字节节点格式可以被构建,使得: 
·24位可以被用于边界框(参见附录B)。 
·6位可以被用于使子节点指数化。 
·2位可以被用于区分叶节点和三个内部节点类型X、Y、Z,可能需要它们对两个子节点进行分选。 
在730处,叶数据可以与树节点交织。在使叶数据(像三角形指数或顶点位置)指数化时,使用一个或多个四字节指数可能是昂贵的。如图8的实施方式所示,使叶数据和树节点交织可以避免引用外部的数组。通过在每个块之后使叶数据入队,可以相对于存储器中的叶位置来指示叶数据。 
在740处,BVH中的底部节点可以被压缩,从而留下至少一部分的顶部节点未被压缩。当大部分光线横跨顶部节点时,这可能在维持很小的存储器占用的同时限制了性能影响。 
上述过程可以结束于750。 
实现方式 
上述处理过程可以以硬件、固件、或软件、或它们的某种组合的方式来实现。另外,本文所揭示的任何一种或多种特征可以以硬件、软件、固件或其组合的方式来实现,其中包括分立的和集成的电路逻辑、专用集成电路(ASIC)逻辑和微处理器,并且可以被实现成特定域集成电路封装的一部分或集成电路封装的组合。在本文中,术语“软件”是指计算机程序产品,这种产品包括计算机可读介质,这种介质中存储了计算机程序逻辑,可使计算机***执行本文所揭示的一个或多个特征和/或特征组合。例如,计算机程序产品可以包括紧致盘(CD)、闪存、或只读存储器(ROM)、或其它非易失性存储器设备。 
图9示出了上述处理过程的软件或固件实施方式。***900可以包括处理器920以及存储器910的主体,存储器910可以包括一个或多个计算机可读介质,这种介质可以存储计算机程序逻辑940。例如,存储器910可以被实现成硬盘和驱动器、可移除介质(比如紧致盘和驱动器)、或ROM器件。处理器920和存储器910可以使用本领域技术人员公知的任何技术(比如总线)进行 通信。存储器910中所包含的逻辑可以被读取,并被处理器920执行。一个或多个I/O端口和/或I/O器件被统一显示成I/O 930,它也可以连接到处理器920和存储器910。 
根据一个实施方式,计算机程序逻辑可以包括模块950-970。栅格逻辑950可以负责全局栅格上的三角形的量化,使得这些三角形被归整。编码逻辑960可以负责将顶点位置编码成位串以及编码三角形连通性,正如上文所描述的那样。BVH逻辑970可以负责BVH的构建以及紧凑的方式,正如上文所描述的那样。 
本文是在功能构造模块的帮助下揭示了***和方法,这些功能构造模块示出了多种功能、特征以及它们的关系。为了方便描述,本文已经任意地定义了这些功能构造模块的至少一些边界。可以定义备选的边界,只要指定的功能及其关系被恰当地执行就可以。 
尽管本文揭示了各种实施方式,但是应该理解,它们仅仅是作为示例而非限制进行呈现的。对于本领域技术人员而言,很明显,在不背离本文所揭示的方法和***的精神和范围的情况下,可以在形式和细节等方面作出各种改变。由此,权利要求书的宽度和范围不应该受到本文所揭示的任何示例性实施方式限制。 
附录A 
快速顶点数据解码 
//在3个字节中的压缩的AABB。4位被用于每个分量 
struct CAABB{ 
   void decode(aos3f pMin,aos3f pMax, 
                  aos3f&tMin,aos3f&tMax)const; 
   //每个分量存储最小/最大值 
   uint8_t pMinMax[3]; 
   //做出从8位最小/最大值到浮点的转换 
   static const float dLUTMinMax[256][2]; 
}; 
//使用SSE4.1指令的快速收集 
FINLINE aos3f 
aos3f::gather(const float*x,const float*y,const float*z){ 
  aos3f to; 
  to.vec=_mm_load_ss(x); 
  to.vec=_mm_castsi128_ps(_mm_insert_epi32( 
     _mm_castps_si128(to.vec),*((int*)y),1)); 
  to.vec=_mm_castsi128_ps(_mm_insert_epi32( 
     _mm_castps_si128(to.vec),*((int*)z),2)); 
  return to; 
//使用SSE手动-编码收集的快速解压缩 
FINLINE void 
CAABB4::decode(aos3f pMin,pMax,aos3f&tMin,aos3f&tMax)const 
  const aos3f ext=pMax-pMin; 
  const float*x=dLUTMinMax[this->pMinMax[0]]; 
  const float*y=dLUTMinMax[this->pMinMax[1]]; 
  const float*z=dLUTMinMax[this->pMinMax[2]]; 
  const aos3f deltaMin=aos3f::gather(x,y,z); 
  const aos3f deltaMax=aos3f::gather(x+1,y+1,z+1); 
  const aos3f tmpMin=pMin+ext*deltaMin; 
  const aos3f tmpMax=pMin+ext*deltaMax; 
  tMin=tmpMin; 
  tMax=tmpMax; 
附录B 
快速压缩的节点解码 
//在3个字节中的压缩的AABB。4位被用于每个分量 
struct CAABB{ 
   void decode(aos3f pMin,aos3f pMax, 
                 aos3f&tMin,aos3f&tMax)const; 
   //每个分量存储最小/最大值 
   uint8_t pMinMax[3]; 
   //做出从8位最小/最大值到浮点的转换 
   static const float dLUTMinMax[256][2]; 
}; 
//使用SSE4.1指令的快速收集 
FINLINE aos3f 
aos3f::gather(const float*x,const float*y,const float*z){ 
  aos3f to; 
  to.vec=_mm_load_ss(x); 
  to.vec=_mm_castsi128_ps(_mm_insert_epi32( 
     _mm_castps_si128(to.vec),*((int*)y),1)); 
  to.vec=_mm_castsi128_ps(_mm_insert_epi32( 
     _mm_castps_si128(to.vec),*((int*)z),2)); 
  return to; 
//使用SSE手动-编码收集的快速解压缩 
FINLINE void 
CAABB4::decode(aos3f pMin,pMax,aos3f&tMin,aos3f&tMax)const 
  const aos3f ext=pMax-pMin; 
  const float*x=dLUTMinMax[this->pMinMax[0]]; 
  const float*y=dLUTMinMax[this->pMinMax[1]]; 
  const float*z=dLUTMinMax[this->pMinMax[2]]; 
  const aos3f deltaMin=aos3f::gather(x,y,z); 
  const aos3f deltaMax=aos3f::gather(x+1,y+1,z+1); 
  const aos3f tmpMin=pMin+ext*deltaMin; 
  const aos3f tmpMax=pMin+ext*deltaMax; 
  tMin=tmpMin; 
  tMax=tmpMax; 

Claims (24)

1.一种方法,包括:
在全局栅格上使景物的三角形量化,使得相邻的三角形被归整到一起;
将三角形的顶点位置编码成可变长度位串;
使三角形的连通性模型化;以及
构建紧凑边界体层次(BVH),用于代表所述景物的至少一部分,
其中,由配置成执行图形处理的处理器来执行所述方法。
2.如权利要求1所述的方法,其特征在于,顶点位置的编码包括:
对于每个顶点i,计算δ矢量Di={xi,yi,zi},用于描述从包括该顶点的边界框的原点起的距离;
对于边界框中所有的顶点,从各个顶点的δ矢量中确定最大的x、y、z分量max(xi)、max(yi)、max(zi);
确定对max(xi)、max(yi)、max(zi)分别进行编码所需的位的数目(nx,ny,nz);以及
对(nx,ny,nz)进行编码,其中,顶点的δ矢量跟在经编码的(nx,ny,nz)的后面。
3.如权利要求1所述的方法,其特征在于,顶点位置的编码包括:
对于每个顶点,计算δ矢量Di={xi,yi,zi},其中,Di的每个分量指示沿着该分量的维度该顶点从包括该顶点的边界框的最近的平面起的距离,其中,最近的平面垂直于该维度并且是包含该原点的平面或是与包含该原点的平面相反的平面;
对于边界框中所有的顶点,从各个顶点的δ矢量中确定最大的x、y、z分量max(xi)、max(yi)、max(zi);
确定对max(xi)、max(yi)、max(zi)分别进行编码所需的位的数目(nx,ny,nz);
对(nx,ny,nz)进行编码,其中,顶点的δ矢量跟在经编码的(nx,ny,nz)的后面;以及
向xi、yi、zi中的每一个添加额外的位,其中,额外的位标识最近的平面。
4.如权利要求1所述的方法,其特征在于,
连通性的模型化包括标识每个三角形的每个顶点,
其中,当所述三角形的顶点是多个三角形的顶点时,对于多个三角形中的每一个三角形单独地对顶点进行标识。
5.如权利要求1所述的方法,其特征在于,
连通性的模型化包括:
对每个顶点进行一次标识;
将一指数与每个顶点关联起来;以及
通过列出与每个三角形的三个顶点相关联的三个指数,来标识每个三角形。
6.如权利要求1所述的方法,其特征在于,
连通性的模型化包括:
在BVH中,指定每个叶的三角形的最大数目;
构建查找表格(LUT),其中,LUT的每个条目与一组条带相关联,其中,每个条带包括一个或多个邻接的三角形的序列,其中,在LUT中没有任何三角形被表示了不止一次;
对于每个条目,存储三角形的数目以及每个三角形的第一顶点的偏移;以及
存储每个三角形的取向。
7.如权利要求1所述的方法,其特征在于,
紧凑BVH的构建包括:
对于每个子节点,定义相对于相关联的母节点的边界体而指定的边界体;
将子节点分组成多个块;
对于每个块,定义该块中的每个子节点的指数;
对于具有叶的每个块,在该块之后列出与该块相关联的叶数据;以及
以压缩的格式存储底部节点,并且以未压缩的格式存储顶部节点的至少一部分。
8.如权利要求7所述的方法,其特征在于,
该块中的子节点被映射到转发节点,使得转发节点指向该子节点的下级子树,其中该子树位于单独的块中。
9.一种***,包括:
处理器;以及
与所述处理器进行通信的存储器,
所述处理器用于存储多个处理指令以便指导所述处理器执行下列操作:
在全局栅格上使景物的三角形量化,使得相邻的三角形被归整到一起;
将三角形的顶点位置编码成可变长度位串;
使三角形的连通性模型化;以及
构建紧凑边界体层次(BVH),用于代表所述景物的至少一部分。
10.如权利要求9所述的***,其特征在于,
用于指导所述处理器对顶点位置进行编码的指令包括用于指导所述处理器执行下列操作的指令:
对于每个顶点i,计算δ矢量Di={xi,yi,zi},用于描述从包括该顶点的边界框的原点起的距离;
对于边界框中所有的顶点,从各个顶点的δ矢量中确定最大的x、y、z分量max(xi)、max(yi)、max(zi);
确定对max(xi)、max(yi)、max(zi)分别进行编码所需的位的数目(nx,ny,nz);以及
对(nx,ny,nz)进行编码,其中,顶点的δ矢量跟在经编码的(nx,ny,nz)的后面。
11.如权利要求9所述的***,其特征在于,
用于指导所述处理器对顶点位置进行编码的指令包括用于指导所述处理器执行下列操作的指令:
对于每个顶点,计算δ矢量Di={xi,yi,zi},其中,Di的每个分量指示沿着该分量的维度该顶点从包括该顶点的边界框的最近的平面起的距离,其中,最近的平面垂直于该维度并且是包含该原点的平面或是与包含该原点的平面相反的平面;
对于边界框中所有的顶点,从各个顶点的δ矢量中确定最大的x、y、z分量max(xi)、max(yi)、max(zi);
确定对max(xi)、max(yi)、max(zi)分别进行编码所需的位的数目(nx,ny,nz);
对(nx,ny,nz)进行编码,其中,顶点的δ矢量跟在经编码的(nx,ny,nz)的后面;以及
向xi、yi、zi中的每一个添加额外的位,其中,额外的位标识最近的平面。
12.如权利要求9所述的***,其特征在于,
用于指导所述处理器使连通性模型化的指令包括用于指导所述处理器执行下列操作的指令:
标识每个三角形的每个顶点,
其中,当所述三角形的顶点是多个三角形的顶点时,对于多个三角形中的每一个三角形单独地对顶点进行标识。
13.如权利要求9所述的***,其特征在于,
用于指导所述处理器使连通性模型化的指令包括用于指导所述处理器执行下列操作的指令:
对每个顶点进行一次标识;
将一指数与每个顶点关联起来;以及
通过列出与每个三角形的三个顶点相关联的三个指数,来标识每个三角形。
14.如权利要求9所述的***,其特征在于,
用于指导所述处理器使连通性模型化的指令包括用于指导所述处理器执行下列操作的指令:
在BVH中,指定每个叶的三角形的最大数目;
构建查找表格(LUT),其中,LUT的每个条目与一组条带相关联,其中,每个条带包括一个或多个邻接的三角形的序列,其中,在LUT中没有任何三角形被表示了不止一次;
对于每个条目,存储三角形的数目以及每个三角形的第一顶点的偏移;以及
存储每个三角形的取向。
15.如权利要求9所述的***,其特征在于,
用于指导所述处理器构建紧凑BVH的指令包括用于指导所述处理器执行下列操作的指令:
对于每个子节点,定义相对于相关联的母节点的边界体而指定的边界体;
将子节点分组成多个块;
对于每个块,定义该块中的每个子节点的指数;
对于具有叶的每个块,在该块之后列出与该块相关联的叶数据;以及
以压缩的格式存储底部节点,并且以未压缩的格式存储顶部节点的至少一部分。
16.如权利要求15所述的***,其特征在于,
该块中的子节点被映射到转发节点,使得转发节点指向该子节点的下级子树,其中该子树位于单独的块中。
17.一种计算机程序产品,包括计算机可读介质,在计算机可读介质中存储了计算机程序逻辑,
所述计算机程序逻辑包括:
用于使处理器在全局栅格上使景物的三角形量化的逻辑,使得相邻的三角形被归整到一起;
用于使处理器将三角形的顶点位置编码成可变长度位串的逻辑;
用于使处理器使三角形的连通性模型化的逻辑;以及
用于使处理器构建紧凑边界体层次(BVH)的逻辑,所述紧凑边界体层次(BVH)用于代表所述景物的至少一部分。
18.如权利要求17所述的计算机程序产品,其特征在于,
用于使处理器对顶点位置进行编码的逻辑包括:
用于使处理器对每个顶点i计算δ矢量Di={xi,yi,zi}的逻辑,所述δ矢量用于描述从包括该顶点的边界框的原点起的距离;
用于使处理器对于边界框中所有的顶点从各个顶点的δ矢量中确定最大的x、y和z分量max(xi)、max(yi)、max(zi)的逻辑;
用于使处理器确定对max(xi)、max(yi)和max(zi)分别进行编码所需的位的数目(nx,ny,nz)的逻辑;以及
用于使处理器对(nx,ny,nz)进行编码的逻辑,其中,顶点的δ矢量跟在经编码的(nx,ny,nz)的后面。
19.如权利要求17所述的计算机程序产品,其特征在于,
用于使处理器对顶点位置进行编码的逻辑包括:
用于使处理器对每个顶点计算δ矢量Di={xi,yi,zi}的逻辑,其中,Di的每个分量指示沿着该分量的维度该顶点从包括该顶点的边界框的最近的平面起的距离,其中,最近的平面垂直于该维度并且是包含该原点的平面或是与包含该原点的平面相反的平面;
用于使处理器对于边界框中所有的顶点从各个顶点的δ矢量中确定最大的x、y、z分量max(xi)、max(yi)、max(zi)的逻辑;
用于使处理器确定对max(xi)、max(yi)、max(zi)分别进行编码所需的位的数目(nx,ny,nz)的逻辑;
用于使处理器对(nx,ny,nz)进行编码的逻辑,其中,顶点的δ矢量跟在经编码的(nx,ny,nz)的后面;以及
用于使处理器向xi、yi、zi中的每一个添加额外的位的逻辑,其中,额外的位标识最近的平面。
20.如权利要求17所述的计算机程序产品,其特征在于,
用于使处理器对连通性进行模型化的逻辑包括:
用于使处理器标识每个三角形的每个顶点的逻辑,
其中,当所述三角形的顶点是多个三角形的顶点时,对于多个三角形中的每一个三角形单独地对顶点进行标识。
21.如权利要求17所述的计算机程序产品,其特征在于,
用于使处理器对连通性进行模型化的逻辑包括:
用于使处理器对每个顶点进行一次标识的逻辑;
用于使处理器将一指数与每个顶点关联起来的逻辑;以及
用于使处理器通过列出与每个三角形的三个顶点相关联的三个指数来标识每个三角形的逻辑。
22.如权利要求17所述的计算机程序产品,其特征在于,
用于使处理器对连通性进行模型化的逻辑包括:
用于使处理器在BVH中指定每个叶的三角形的最大数目的逻辑;
用于使处理器构建查找表格(LUT)的逻辑,其中,LUT的每个条目与一组条带相关联,其中,每个条带包括一个或多个邻接的三角形的序列,其中,在LUT中没有任何三角形被表示了不止一次;
用于使处理器对每个条目存储三角形的数目以及每个三角形的第一顶点的偏移的逻辑;以及
用于使处理器存储每个三角形的取向的逻辑。
23.如权利要求17所述的计算机程序产品,其特征在于,
用于使处理器构建紧凑BVH的逻辑包括:
用于使处理器对每个子节点定义相对于相关联的母节点的边界体而指定的边界体的逻辑;
用于使处理器将子节点分组成多个块的逻辑;
用于使处理器对每个块定义该块中的每个子节点的指数的逻辑;
用于使处理器对具有叶的每个块在该块之后列出与该块相关联的叶数据的逻辑;以及
用于使处理器以压缩的格式存储底部节点并且以未压缩的格式存储顶部节点的至少一部分的逻辑。
24.如权利要求23所述的计算机程序产品,其特征在于,
该块中的子节点被映射到转发节点,使得转发节点指向该子节点的下级子树,其中该子树位于单独的块中。
CN2010105007032A 2009-10-01 2010-09-25 利用分级网格量化的存储器有效光线跟踪 Expired - Fee Related CN102034259B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US24778109P 2009-10-01 2009-10-01
US61/247,781 2009-10-01
US12/770,212 US8669977B2 (en) 2009-10-01 2010-04-29 Hierarchical mesh quantization that facilitates efficient ray tracing
US12/770,212 2010-04-29

Publications (2)

Publication Number Publication Date
CN102034259A true CN102034259A (zh) 2011-04-27
CN102034259B CN102034259B (zh) 2013-11-20

Family

ID=43065205

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010105007032A Expired - Fee Related CN102034259B (zh) 2009-10-01 2010-09-25 利用分级网格量化的存储器有效光线跟踪

Country Status (6)

Country Link
US (1) US8669977B2 (zh)
JP (1) JP5068849B2 (zh)
CN (1) CN102034259B (zh)
DE (1) DE102010046891B4 (zh)
GB (1) GB2474102B (zh)
TW (1) TWI517103B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108885796A (zh) * 2016-04-04 2018-11-23 英特尔公司 利用平面重复使用的降低精度的光线遍历

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011053181A1 (en) * 2009-10-30 2011-05-05 Intel Corporation Graphics rendering using a hierarchical acceleration structure
US20130033507A1 (en) * 2011-08-04 2013-02-07 Nvidia Corporation System, method, and computer program product for constructing an acceleration structure
US9965821B2 (en) 2012-03-09 2018-05-08 Nvidia Corporation Fully parallel in-place construction of 3D acceleration structures in a graphics processing unit
US9224235B2 (en) * 2013-03-20 2015-12-29 Nvidia Corporation System, method, and computer program product for compression of a bounding volume hierarchy
US9842424B2 (en) * 2014-02-10 2017-12-12 Pixar Volume rendering using adaptive buckets
KR102230200B1 (ko) 2014-07-04 2021-03-19 삼성전자주식회사 객체에 대한 바운딩 박스의 좌표 값을 표현하는 방법 및 장치
US10235338B2 (en) * 2014-09-04 2019-03-19 Nvidia Corporation Short stack traversal of tree data structures
US9552664B2 (en) 2014-09-04 2017-01-24 Nvidia Corporation Relative encoding for a block-based bounding volume hierarchy
JP5960863B1 (ja) * 2015-03-11 2016-08-02 エヌ・ティ・ティ・コミュニケーションズ株式会社 検索装置、検索方法、プログラム、及び記録媒体
US10559125B2 (en) 2015-12-02 2020-02-11 Samsung Electronics Co., Ltd. System and method of constructing bounding volume hierarchy tree
US9928640B2 (en) * 2015-12-18 2018-03-27 Intel Corporation Decompression and traversal of a bounding volume hierarchy
KR102604737B1 (ko) * 2016-01-11 2023-11-22 삼성전자주식회사 가속 구조를 생성하는 방법 및 장치
JP7100427B2 (ja) * 2016-03-21 2022-07-13 イマジネイション テクノロジーズ リミテッド 階層融合
US10043303B2 (en) * 2016-03-30 2018-08-07 Intel IP Corporation Methods and apparatus for more efficient ray tracing of instanced geometry
US10861216B2 (en) * 2017-04-07 2020-12-08 Intel Corporation Ray tracing apparatus and method for memory access and register operations
US10839475B2 (en) * 2018-04-11 2020-11-17 Intel IP Corporation Apparatus and method for compressing leaf nodes of a bounding volume hierarchy (BVH)
DE102019108046A1 (de) 2018-04-11 2019-10-17 Intel IP Corporation Vorrichtung und verfahren zum komprimieren von blattknoten einer hüllkörperhierarchie (bhv)
US10885698B2 (en) * 2018-08-10 2021-01-05 Nvidia Corporation Method for programmable timeouts of tree traversal mechanisms in hardware
US11263800B2 (en) * 2019-12-27 2022-03-01 Intel Corporation Apparatus and method for quantized convergent direction-based ray sorting
US11663777B2 (en) 2020-03-15 2023-05-30 Intel Corporation Apparatus and method for motion blur with a dynamic quantization grid
US11373360B2 (en) * 2020-07-30 2022-06-28 Apple Inc. Grouping techniques for ray intersection traversal
WO2023014086A1 (ko) * 2021-08-03 2023-02-09 엘지전자 주식회사 3d 데이터 송신 장치, 3d 데이터 송신 방법, 3d 데이터 수신 장치 및 3d 데이터 수신 방법
US20230097562A1 (en) * 2021-09-28 2023-03-30 Advanced Micro Devices, Inc. Acceleration structures with delta instances
US20230267650A1 (en) * 2022-02-21 2023-08-24 Microsoft Technology Licensing, Llc Data compression

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002369205A (ja) * 2001-06-06 2002-12-20 Matsushita Electric Ind Co Ltd 動画像生成装置
US20030160790A1 (en) * 2002-02-28 2003-08-28 Wing-Cheong Tang End point value correction when transversing an edge using a quantized slope value
JP2008507056A (ja) * 2004-07-22 2008-03-06 コミサリア、ア、レネルジ、アトミク いくつかのデジタルシミュレーション化幾何学的オブジェクト間で近接領域を同定する方法およびシステム
WO2008073798A2 (en) * 2006-12-08 2008-06-19 Mental Images Gmbh Computer graphics shadow volumes using hierarchical occlusion culling
CN101238489A (zh) * 2005-08-11 2008-08-06 国际商业机器公司 具有深度缓冲显示器的光线跟踪***和方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2812168B2 (ja) 1993-12-27 1998-10-22 松下電器産業株式会社 形状データ圧縮方法および形状データ伸長方法
US6525722B1 (en) * 1995-08-04 2003-02-25 Sun Microsystems, Inc. Geometry compression for regular and irregular mesh structures
US5838830A (en) 1996-09-18 1998-11-17 Sharp Laboratories Of America, Inc. Vertex-based hierarchical shape representation and coding method and apparatus
US6718290B1 (en) * 1998-12-10 2004-04-06 Georgia Tech Research Corporation Systems and methods for encoding tetrahedral meshes
SG93211A1 (en) * 1999-07-28 2002-12-17 Univ Singapore Method and apparatus for generating atomic parts of graphic representation through skeletonization for interactive visualization applications
US20080024489A1 (en) * 2006-07-28 2008-01-31 Robert Allen Shearer Cache Utilization Optimized Ray Traversal Algorithm with Minimized Memory Bandwidth Requirements
US20080122838A1 (en) * 2006-09-27 2008-05-29 Russell Dean Hoover Methods and Systems for Referencing a Primitive Located in a Spatial Index and in a Scene Index
US7719532B2 (en) * 2007-02-09 2010-05-18 International Business Machines Corporation Efficient and flexible data organization for acceleration data structure nodes
JP4721072B2 (ja) 2008-02-12 2011-07-13 株式会社アクセル ポリゴンデータの圧縮システムおよび伸張システム
US8339395B2 (en) * 2008-07-08 2012-12-25 Lockheed Martin Corporation Method and apparatus for model compression

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002369205A (ja) * 2001-06-06 2002-12-20 Matsushita Electric Ind Co Ltd 動画像生成装置
US20030160790A1 (en) * 2002-02-28 2003-08-28 Wing-Cheong Tang End point value correction when transversing an edge using a quantized slope value
JP2008507056A (ja) * 2004-07-22 2008-03-06 コミサリア、ア、レネルジ、アトミク いくつかのデジタルシミュレーション化幾何学的オブジェクト間で近接領域を同定する方法およびシステム
CN101238489A (zh) * 2005-08-11 2008-08-06 国际商业机器公司 具有深度缓冲显示器的光线跟踪***和方法
WO2008073798A2 (en) * 2006-12-08 2008-06-19 Mental Images Gmbh Computer graphics shadow volumes using hierarchical occlusion culling

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
BENJAMIN SEGOVIA: "Memory Efficient Ray Tracing with Hierarchical Mesh Quantization", 《PROCEEDINGS OF GRAPHICS INTERFACE 2010》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108885796A (zh) * 2016-04-04 2018-11-23 英特尔公司 利用平面重复使用的降低精度的光线遍历
CN108885796B (zh) * 2016-04-04 2023-10-13 英特尔公司 利用平面重复使用的降低精度的光线遍历

Also Published As

Publication number Publication date
DE102010046891A1 (de) 2011-04-07
GB2474102B (en) 2012-04-25
GB2474102A (en) 2011-04-06
TW201135672A (en) 2011-10-16
CN102034259B (zh) 2013-11-20
JP5068849B2 (ja) 2012-11-07
JP2011081788A (ja) 2011-04-21
TWI517103B (zh) 2016-01-11
US20110080403A1 (en) 2011-04-07
DE102010046891B4 (de) 2014-11-27
US8669977B2 (en) 2014-03-11
GB201015347D0 (en) 2010-10-27

Similar Documents

Publication Publication Date Title
CN102034259B (zh) 利用分级网格量化的存储器有效光线跟踪
CN1734503B (zh) 使用光谱分析的伸展驱动的网格参数化
US6184897B1 (en) Compressed representation of changing meshes and method to decompress
US20230108967A1 (en) Micro-meshes, a structured geometry for computer graphics
CN103106681A (zh) 用于构建加速结构的***、方法及计算机程序产品
CN105405166A (zh) 一种基于线性四叉树的lod模型生成方法
CN102292748A (zh) 基于区块的3d计算机图形***中的多级显示控制列表
CN104981849A (zh) 用于丰富深度图的内容的方法和设备
CN107197341A (zh) 一种基于gpu的炫屏显示方法、装置及一种存储设备
CN103927424A (zh) 利用体网格简化建筑三维模型结构的方法
CN111260784A (zh) 一种城市三维空间网格压缩编码方法、装置及终端设备
Segovia et al. Memory efficient ray tracing with hierarchical mesh quantization
Woop et al. Exploiting Local Orientation Similarity for Efficient Ray Traversal of Hair and Fur.
Choe et al. Random accessible mesh compression using mesh chartification
Aleardi et al. ESQ: Editable SQuad representation for triangle meshes
CN103793935B (zh) 一种基于BRLO‑Tree混合树结构的城市立体动态场景生成方法
Lin et al. Dual-split trees
Koca et al. A hybrid representation for modeling, interactive editing, and real-time visualization of terrains with volumetric features
CN102841926A (zh) 尺度适应的矢量数据集要素位图嵌入式编码方法
Strnad et al. Efficient representation of geometric tree models with level-of-detail using compressed 3D chain code
WO2021108970A1 (zh) 点云处理方法、编码器、解码器及存储介质
Dolonius Sparse Voxel DAGs for Shadows and for Geometry with Colors
Isenburg Compression and streaming of polygon meshes
Barboza et al. GPU-based data structure for a parallel ray tracing illumination algorithm
Garanzha et al. Simple geometry compression for ray tracing on GPU

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20131120

Termination date: 20210925

CF01 Termination of patent right due to non-payment of annual fee