CN103593817B - 用于使用并行管道的图形处理的方法和设备 - Google Patents

用于使用并行管道的图形处理的方法和设备 Download PDF

Info

Publication number
CN103593817B
CN103593817B CN201310359331.XA CN201310359331A CN103593817B CN 103593817 B CN103593817 B CN 103593817B CN 201310359331 A CN201310359331 A CN 201310359331A CN 103593817 B CN103593817 B CN 103593817B
Authority
CN
China
Prior art keywords
unit
sub
ray
pipes
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201310359331.XA
Other languages
English (en)
Other versions
CN103593817A (zh
Inventor
李源宗
辛容三
李在敦
金镇雨
朴贤相
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.)
Samsung Electronics Co Ltd
Industry Academic Cooperation Foundation of Kongju National University
Original Assignee
Samsung Electronics Co Ltd
Industry Academic Cooperation Foundation of Kongju National University
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 Samsung Electronics Co Ltd, Industry Academic Cooperation Foundation of Kongju National University filed Critical Samsung Electronics Co Ltd
Publication of CN103593817A publication Critical patent/CN103593817A/zh
Application granted granted Critical
Publication of CN103593817B publication Critical patent/CN103593817B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/52Parallel processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)
  • Apparatus For Radiation Diagnosis (AREA)

Abstract

提供一种用于使用并行管道的图形处理的方法和设备。用于射线跟踪的设备和方法包括使用树加速结构(AS)的遍历(TRV)单元。TRV单元可包括:多个子管道单元,被配置为执行使用树AS的射线TRV所需的不同操作,并被配置为并行操作。

Description

用于使用并行管道的图形处理的方法和设备
本申请要求于2012年8月16日提交到韩国知识产权局的第10-2012-0089682号韩国专利申请的优先权,所述申请的公开通过引用合并于此。
技术领域
在此公开的示例实施例涉及用于图形处理的方法和设备,更具体地说,涉及用于射线跟踪的方法和设备。
背景技术
三维(3D)渲染是指用于处理从相机的给定视点观看的图像中的3D对象的数据的处理。
在渲染技术中,光栅化通过显示场景中的3D对象来产生图像。射线跟踪通过跟踪入射光的路径来产生图像,其中,从相机的视点将所述入射光的射线射向图像的每个像素。
射线跟踪具有使用光的物理性质(诸如,反射、折射、投射等)产生高质量图像的优点。然而,射线跟踪具有由于大量的基本运算而难以实现高速渲染方面的缺点。
加速结构(AS)遍历(TRV)和射线基元相交测试(IST)是作为用于确定射线跟踪的性能的主导因素的操作。AS TRV和射线基元IST是对每个射线迭代执行几次到几十次的操作。
AS基于空间分割。详细地,AS是指通过在空间上对将被渲染的场景对象进行分割而表示的数据结构,例如,网格、kd树、包围体层次(BVH)等。
AS TRV和射线基元IST利用射线跟踪中的基本运算的70%或更多,并消耗射线跟踪中的存储带宽的90%或更多。也就是说,AS TRV和射线基元IST操作计算开销大,并且还消耗比较多的电量。为了实时实现,使用专用硬件。
发明内容
通过提供一种使用树加速结构(AS)的遍历(TRV)单元可实现上述和/或其他方面,所述TRV单元包括:多个子管道单元,被配置为或适用于执行使用树AS的射线TRV所需的不同操作并可并行操作。
所述多个子管道单元可被配置为或适用于对不同射线并行执行TRV。
所述多个子管道单元可包括:第一子管道单元,被配置为或适用于提取与被射线访问的树AS的节点相关联的数据;第二子管道单元,被配置为或适用于使用与射线相关联的数据和与节点相关联的数据来测试射线和节点的空间之间的相交;第三子管道单元,被配置为或适用于对与节点相关联的数据执行堆栈操作。
所述TRV单元还可包括:高速缓存,被配置为或适用于将与节点相关联的数据提供给第一子管道单元。
第一子管道单元、第二子管道单元和第三子管道单元中的至少一个可以是多个。
可基于TRV单元对射线执行TRV所需的第一子管道单元、第二子管道单元和第三子管道单元的使用次数,来确定第一子管道单元的数量、第二子管道单元的数量和第三子管道单元的数量。
所述TRV单元还可包括:第一交叉开关,被配置为或适用于将与输入射线相关联的数据分配给所述多个子管道单元中的与所述输入射线的状态相应的子管道单元。
所述TRV单元还可包括多个输入缓冲器。
所述多个输入缓冲器可被配置为或适用于存储被分配给所述多个子管道单元中的一个子管道单元的与至少一个射线相关联的数据。
所述TRV单元还可包括:第二交叉开关,被配置为或适用于基于射线的状态将从所述多个子管道单元中的一个子管道单元输出的与射线相关联的数据重新发送到所述一个子管道单元或着色(shading)单元或相交测试(IST)单元。
所述TRV单元还可包括:第一输出缓冲器,被配置为或适用于存储从第二交叉开关输出并被发送到着色单元的与至少一个射线相关联的数据;第二输出缓冲器,被配置为或适用于存储从第二交叉开关输出并被发送到IST单元的与至少一个射线相关联的数据。
通过提供一种使用树AS的图像处理单元(GPU)可实现上述和/或其他方面,所述GPU包括至少一个TRV单元和至少一个IST单元,所述至少一个IST单元可被配置为或适用于使用树AS测试场景对象和射线之间的相交,所述至少一个TRV单元可包括多个子管道单元,并且所述多个子管道单元可被配置为或适用于执行使用树AS的射线TRV所需的不同操作,并被配置为或适用于并行操作。
通过提供一种使用树AS的TRV方法实现上述和/或其他方面,所述方法包括:通过第一子管道单元提取与被射线访问的树AS的节点相关联的数据;通过第二子管道单元使用与射线相关联的数据和与节点相关联的数据来测试射线和节点的空间之间的相交;通过第三子管道单元对与节点相关联的数据执行堆栈操作,其中,所述提取、测试和执行的步骤可对不同射线并行执行TRV。
所述TRV方法还可包括:通过高速缓存将与节点相关联的数据提供给第一子管道单元。
第一子管道单元、第二子管道单元和第三子管道单元中的至少一个可以是多个。
可基于TRV单元对射线执行TRV所需的第一子管道单元、第二子管道单元和第三子管道单元的使用次数,来确定第一子管道单元的数量、第二子管道单元的数量和第三子管道单元的数量。
所述TRV方法还可包括:通过第一交叉开关将与输入射线相关联的数据分配给所述多个子管道单元中的与所述输入射线的状态相应的子管道单元。
所述TRV方法还可包括:通过第二交叉开关基于射线的状态将从第一子管道单元、第二子管道单元和第三子管道单元中的一个子管道单元输出的与射线相关联的数据重新发送到所述一个子管道单元或着色单元或相交测试(IST)单元。
所述TRV方法还可包括:通过第一输出缓冲器存储从第二交叉开关输出并被发送到着色单元的与至少一个射线相关联的数据;通过第二输出缓冲器存储从第二交叉开关输出并被发送到IST单元的与至少一个射线相关联的数据。
通过提供一种用于执行射线跟踪的射线跟踪单元可实现上述和/或其他方面,所述射线跟踪单元包括:多个遍历单元,每个包括并行操作的多个子管道单元;多个相交测试单元,用于测试从所述多个遍历单元中的至少一个输出的射线和与树加速结构的叶节点相应的场景对象之间的相交。
所述射线跟踪单元还可包括:射线调度单元,用于将输入的射线分配给至少一个遍历单元;射线调节单元,用于通过控制射线数据流动来调节所述多个遍历单元和所述多个相交测试单元之间的射线传输;缓冲器,用于在至少一个遍历单元完成遍历时,存储至少一个射线。
所述射线跟踪单元还可包括:射线产生单元,用于产生射线并将产生的射线的数据提供给射线调度单元;着色单元,用于从缓冲器接收跟踪的射线,并用于使用跟踪的射线的数据来对跟踪的射线进行着色。
遍历单元的高速缓存可从外部存储器的第一高速缓存接收与射线跟踪相关联的树加速结构数据,并且相交测试单元的高速缓存可从外部存储器的第二高速缓存接收与射线跟踪相关联的几何数据。
遍历单元中的多个子管道单元中的每个可对不同射线并行执行不同遍历操作。例如,第一子管道单元可通过获得与树加速结构中的被第一射线访问的节点相关联的数据,来执行第一遍历操作;第二子管道单元可通过测试第二射线和与第二射线相应的节点的空间之间的相交,来执行第二遍历操作;第三子管道单元可通过对和与第三射线相应的节点相关联的数据执行堆栈操作,来执行第三遍历操作。第一子管道单元、第二子管道单元和第三子管道单元中的每个可同时执行第一遍历操作、第二遍历操作和第三遍历操作。
实施例的另外的方面将在以下的描述中部分地进行阐述,并且从所述描述中部分将是显然的,或可通过本公开的实践被了解。
附图说明
通过结合附图对实施例进行的以下描述,这些和/或其他方面将变得清楚和更容易理解,其中:
图1示出射线跟踪的示例;
图2示出图形处理单元(GPU)和与GPU相关的实体的示例;
图3至图6示出可能出现在使用单个管道(pipeline)的射线遍历(TRV)中的问题的示例;
图3示出根据示例实施例的管道中的旁路的示例;
图4示出根据示例实施例的管道中的旁路的示例;
图5示出根据示例实施例的管道中的旁路的示例;
图6示出根据示例实施例的管道中的旁路的示例;
图7示出TRV单元的示例;
图8示出包括多个第一子管道单元的TRV单元的示例;
图9示出包括多个第二子管道单元的TRV单元的示例;
图10示出射线TRV方法的示例;
图11示出射线跟踪方法的示例。
具体实施方式
现在将详细参照实施例,所述实施例的示例被示出在附图中,其中,相同参考标号始终指示相同元件。以下通过参照附图描述实施例来解释本公开。
在此使用的术语“射线”可包括用于射线跟踪的射线对象、表示射线的数据结构、射线的信息以及与射线相关联的数据,并且这些术语可被交换使用。
描述中使用的术语“着色单元”也可被称为“着色器”。
图1示出射线跟踪的示例。
参照图1,加速结构(AS)结构110表示在电子装置中构造AS130的操作或处理。电子装置可被实现为计算机、个人计算机、便携式计算机、移动装置(诸如移动电话、智能电话、个人媒体播放器、平板电脑等)。一般而言,电子装置可以是能够执行根据在此公开的示例实施例的射线跟踪的任何装置。电子装置可包括用于执行射线跟踪的图形处理单元(GPU)。AS结构110可与射线跟踪的预处理相应。AS结构110可用于产生表示三维(3D)空间的分层树。用于射线跟踪的3D空间可按分层树的形式被创建。例如,3D空间可与场景相应。
外部存储器120可包括、存储并提供AS130和几何数据135。例如,可使用非易失性存储器装置(诸如只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)或闪存)、易失性存储器装置(诸如随机存取存储器(RAM))或存储介质(诸如硬盘或光盘)来实现外部存储器。然而,本发明不限于此。另外,外部存储器可通过有线或无线网络提供AS130和几何数据135。
可由AS结构110来产生AS130。AS130可与使用树结构的树AS相应。例如,AS130可包括kd树和包围体层次(BVH)。kd树可指示一种空间划分数据结构的类型。BVH可指示一种几何对象可被包围在包围体中的树结构的类型。包围体可具有不同形状。AS130可包括网格。AS结构110可用于按分层树的形式来产生表示3D空间和3D空间的子部分的树结构。
AS130可与二进制树相应。AS130可具有至少一个节点。AS130的所述至少一个节点可包括根节点、内部节点和叶节点。节点的类型可包括根节点、内部节点和叶节点。可将根节点认为是内部节点。AS130的每个节点可表示一个空间。节点的空间可与整个空间的子部分相应。节点的空间可包括两个点的包围盒(BB)以及轴对齐的包围盒(AABB)。所述两个点可与BB的六面体的对称点相应。六面体的每个面可平行于x轴、y轴和z轴中的一个。例如,当整个空间具有维(X,Y,Z)时,AS130的根节点的空间可包括点(0,0,0)和点(X,Y,Z)。
根节点的子节点或内部节点的子节点可与父节点的空间的子部分相应。子部分可与沿x轴、y轴或z轴的空间的部分相应。例如,根节点可具有可相对于根节点的空间中的x轴上的点而被区分的左子节点和右子节点。空间可被划分为子部分。当根节点的空间相对于x轴上的点x0被划分时,左子节点的空间可包括点(0,0,0)和点(x0,Y,Z),并且右子节点的空间可包括点(x0,Y,Z)和点(X,Y,Z)。
可基于节点的等级来划分节点的空间。例如,3n+2等级的子节点可与相对于x轴上的点的3n+1等级的父节点的空间的子部分相应。3n+3等级的子节点可与相对于y轴上的点的3n+2等级的父节点的空间的子部分相应。3n+4等级的子节点可与相对于z轴上的点的3n+3等级的父节点的空间的子部分相应。这里,“n”可指示整数“0”或大于“0”的整数,并且根节点可与第一等级的节点相应。
例如,几何数据135可与3D空间中的场景对象的数据相应。在此示例中,场景对象中的基元可处于三角形形状,并且场景对象可按三角形形状来构造。然而,基元可处于其他几何形状或多边形形状,例如,平面、球面、圆锥、圆柱、圆环、圆盘等。为了便于讨论,这里公开的示例实施例可指示处于三角形形状的基元,注意基元可采用其他形状。
射线跟踪器140可执行包括射线产生150、相交测试(IST)160和着色165的操作。
在射线产生150的操作中,可产生从参考视点射向3D空间的射线。所述射线可从参考视点射向2D屏幕中的预定像素。
可对2D屏幕中的每个像素迭代地执行射线产生150。虚拟射线可从原点射向2D屏幕中的每个像素。
在AS遍历(TRV)155的操作中,可使用AS130跟踪射线的路径。AS TRV155可指示射线经过的AS130的树中的每个节点的遍历。这里,射线经过节点可指示射线经过节点的空间。
在AS TRV155的迭代中,可到达AS130的叶节点。当到达AS130的叶节点时,可指定与到达的叶节点相应的至少一个场景对象。这里,与叶节点相应的场景对象可指示位于叶节点的空间中的场景对象。与叶节点相应的场景对象可指示在场景的所有场景对象中的呈现在叶节点的空间中的场景对象的全部或部分。叶节点的数据可包括与叶节点相应的场景对象的数据或三角形的数据。叶节点可包括与叶节点相应的场景对象或基元(例如,三角形)。叶节点可指示与叶节点相应的场景对象或三角形。
如以下所述,AS TRV155可由包括多个子管道单元的射线TRV单元来执行。射线TRV单元可以是缩短的TRV单元。
IST160可对多个预定场景对象执行相交测试。
如以下所述,IST160可由IST单元来执行。
在着色165的操作中,可基于与射线相交的可见场景对象的颜色来计算射线所射向的2D屏幕中的预定像素的颜色。
可通过确定2D屏幕中的像素的颜色来产生渲染的图像。
图2示出图形处理单元(GPU)和与GPU相关的实体的示例。
参照图2,示出了用于执行射线跟踪的渲染硬件或GPU的结构。
在图2中,提供了射线产生单元210、射线跟踪单元220、第一高速缓存282、第二高速缓存284、总线286、外部存储器288和着色单元290。射线产生单元210、第一高速缓存282、第二高速缓存284和着色单元290可以是GPU的组件。GPU可包括射线产生单元210、第一高速缓存282、第二高速缓存284和着色单元290。
GPU或射线跟踪单元220可与图1的射线跟踪器140相应。外部存储器288可与图1的外部存储器120相应。射线产生单元210可执行射线产生150。着色单元290可执行着色165。尽管此示例实施例示出射线产生单元210和着色单元290与射线跟踪单元220分离,但是射线产生单元210和着色单元290可被包括在射线跟踪单元220中。射线产生单元210可产生射线。射线产生单元210可将产生的射线的数据提供给射线跟踪单元220。射线产生单元210可表示用于将射线的数据提供给射线跟踪单元220的操作或实体。
射线跟踪单元220可跟踪射线。射线跟踪单元220可将跟踪的射线的数据提供给着色单元290。
着色单元290可基于跟踪的射线的数据来对跟踪的射线进行着色。着色单元290可表示用于对跟踪的射线进行着色的操作或实体。着色可与通过计算关于2D屏幕中的每个像素的射线跟踪结果的总和来确定像素的最终颜色相应。
第一高速缓存282和第二高速缓存284可实现对于射线跟踪所需的数据的存储或高速缓存。射线跟踪所需的数据可被存储在外部存储器288中。第一高速缓存282和第二高速缓存284可实现被存储在外部存储器288中的数据的一部分的存储或高速缓存。可通过总线286在第一高速缓存282和外部存储器288之间以及在第二高速缓存284和外部存储器288之间传输与射线跟踪相关联的数据。也就是说,在第一高速缓存282和外部存储器288之间以及在第二高速缓存284和外部存储器288之间可存在有线连接。存储在第一高速缓存282中的数据可与AS130的一部分相应,并且存储在第二高速缓存284中的数据可与几何数据135的一部分相应。
第一高速缓存282可将对于射线跟踪所需的数据提供给将在以下描述的TRV单元的高速缓存,并且第二高速缓存284可将对于IST所需的数据提供给将在以下描述的IST单元的高速缓存。因此,TRV单元的高速缓存和IST单元的高速缓存可与等级-1(level-1)高速缓存相应,并且第一高速缓存282和第二高速缓存284可与等级-2(level-2)高速缓存相应。
以下将提供射线跟踪单元220的详细描述。
射线跟踪单元220可包括第一缓冲器230、TRV单元240-1至240-3中的至少一个、第二缓冲器250、IST单元260-1至260-3中的至少一个以及第三缓冲器270。
至少一个TRV单元可包括第一TRV单元240-1、第二TRV单元240-2和第n TRV单元240-3。这里,“n”可表示整数“1”或大于“1”的整数。至少一个IST单元可包括第一IST单元260-1、第二IST单元260-2和第m IST单元260-3。这里,“m”可表示整数“1”或大于“1”的整数。
在图2中,射线跟踪单元220可通过从AS130的根节点至子类节点的分层TRV找到被射线访问的第一叶节点。当通过TRV找到被访问的叶节点时,射线跟踪单元220可测试在射线和与所述叶节点相应的场景对象或三角形之间的相交。这里,与叶节点相应的场景对象或三角形可以是多个。当在被访问的叶节点中不存在与射线相交的三角形时,射线跟踪单元220可在树上继续TRV以找到与射线相交的基元。也就是说,如果射线没有与三角形相交,则射线跟踪单元220可在树的另一部分继续TRV,以确定基元(例如,场景对象或三角形)是否与射线相交。TRV和IST可分别由TRV单元和IST单元执行。所述至少一个IST单元可使用树AS测试场景对象和射线之间的相交。
由于射线TRV的特性,需要大量的基本运算和高存储带宽。这是通过每次访问或IST,提取由基本运算遵循的与节点相关联的数据和与场景对象或三角形相关联的数据而引起的。因此,TRV单元和IST单元可分别具有用于TRV和IST的高速缓存。当在高速缓存中不存在与节点相关联的数据、与场景对象相关联的数据或与基元相关联的数据时,在从外部存储器288提取数据时会出现长延迟,并且射线跟踪性能会下降。
第一缓冲器230可控制射线产生单元210与多个TRV单元之间的射线传输。第一缓冲器230可存储输入到射线跟踪单元220中的输入射线,并可将输入射线分配给所述至少一个TRV单元中的一个TRV单元。所述输入射线可包括至少一个射线。可按连续顺序将至少一个输入射线输入到射线跟踪单元220中。第一缓冲器230可被命名为或被称为射线调度单元。
第一缓冲器230可基于所述至少一个TRV单元的输入缓冲器的可用性将输入射线分配给所述至少一个TRV单元中的一个TRV单元。
被输入到所述至少一个TRV单元中的一个TRV单元中的射线可包括由射线产生单元210产生的射线、正在遍历或已经遍历了一个TRV单元的射线、以及由IST单元对相交进行了测试的射线。从所述至少一个TRV单元中的一个TRV单元输出的射线可被重新输入到相应的TRV单元中,并且可被输入到通过第二缓冲器250在所述至少一个IST单元中选择的IST单元中以及着色单元290中。
第三缓冲器270可存储将被输出到着色单元290的射线。存储在第三缓冲器270中的射线可包括至少一个射线。当TRV完成时,可从TRV单元将与射线相关联的数据发送到着色单元290。
在第三缓冲器270中的射线可等待被输出到着色单元290。也就是说,可将多个射线输出到第三缓冲器270,并且当TRV完成时,可将与所述多个射线相关的数据输出到着色单元290。
第二缓冲器250可在所述至少一个TRV单元和所述至少一个IST单元之间调节射线传输。当射线到达叶节点时,可执行针对射线的IST。因此,射线可从TRV单元输出,并可通过第二缓冲器250输入到IST单元。第二缓冲器250可控制所述至少一个TRV单元与所述至少一个IST单元之间的射线数据流动。第二缓冲器250可被命名为或被称为射线调节单元。
射线可经过至少一个空间。因此,在针对射线的IST完成后,针对射线的TRV可继续。从所述至少一个IST单元中的一个IST单元输出的射线可被输入到所述至少一个TRV单元中的一个TRV单元。这里,输入了射线的TRV单元可与已经针对所述射线执行了TRV的TRV单元相应。
图3至图6示出可能出现在使用单个管道的射线TRV中的问题的示例。
如前面所述,TRV单元可引导AS130的树的分层TRV。用于树的分层TRV可包括:提取节点数据并访问左子节点,访问右子节点并执行堆栈的弹出(pop)操作,提取节点数据,访问叶节点,并输出到IST单元;输出从IST单元输入到着色单元的与射线相关联的数据。这里,提取节点数据可与从高速缓存提取节点数据相应。节点数据可与和节点的空间相关联的数据相应。与空间相关联的数据可包括BB和AABB。
为了提高吞吐量,TRV单元可使用管道执行射线TRV。新的射线可被输入到TRV单元的输入缓冲器中。为了连续地访问树中的每个节点,与射线相关联的数据可通过TRV单元的输出缓冲器被重新输入到TRV单元的输入缓冲器中。管道可具有多种状态。
例如,管道可具有第一状态、第二状态和第三状态。第一状态可指示从高速缓存提取与节点相关联的数据的状态。第一状态可指示执行关于节点是叶节点还是内部节点的确定的状态。第二状态可指示使用与射线和节点相关联的数据来测试射线和节点的空间之间的相交的状态。这里,针对相交的测试可与测试射线是否经过节点的空间相应。第三状态可指示针对与节点相关联的数据的堆栈操作被执行的状态。针对与节点相关联的数据的堆栈操作可包括将与节点相关联的数据推入到堆栈上的推入操作以及将与节点相关联的数据从堆栈弹出的弹出操作。处于第三状态的节点可与TRV单元接下来将访问的节点相应。
在树的分层TRV中,状态之间的转换可以是不确定的。例如,管道的状态转换可以是非连续的。管道的状态转换可基于访问的节点的类型、IST结果和管道的当前状态中的至少一个对不同的运行展现不同的行为。
由于不确定的转换,射线TRV可能在管道的一部分失败,并且旁路可被实现在管道中。以下将提供被实现的旁路的进一步的描述。
图3示出根据示例实施例的管道中的旁路的示例。
在图3中,粗箭头指示射线数据移动,并且虚线箭头指示射线数据旁路。
输入到TRV单元300中的射线数据可通过输入缓冲器310被输入到管道320中。
管道320可包括多个子管道。管道320可包括第一子管道322、第二子管道324和第三子管道326。第一子管道322、第二子管道324和第三子管道326可分别与前面所述的第一状态、第二状态和第三状态相应。第一子管道322可与当管道320处于第一状态时操作的部分相应。第二子管道324可与当管道320处于第二状态时操作的部分相应。第三子管道326可与当管道320处于第三状态时操作的部分相应。
第一子管道322可从高速缓存提取节点数据,并可确定节点是叶节点还是内部节点。第二子管道324可使用射线数据和节点数据来测试射线和节点的空间之间的相交。第三子管道326可执行节点数据的堆栈操作。
第一子管道322和第二子管道324可执行对射线或射线数据的操作,并且第三子管道326可对射线或射线数据进行旁路。
参照图3,可执行提取节点数据并访问左子节点的操作。第一子管道322可提取节点数据。第一子管道322可确定节点是叶节点还是内部节点。当确定节点是内部节点时,管道320的状态可转换为第二状态,以测试左子节点和射线之间的相交。第二子管道324可测试左子节点和射线之间的相交。然后,需要执行针对右子节点和射线之间的相交的测试。然而,由于连接到第二子管道324的第三子管道326用于第三状态,因此第三子管道326可不对射线执行操作,并可将射线数据发送到第一输出缓冲器330。
被旁路的射线数据可通过第一输出缓冲器330被重新输入到输入缓冲器310中。然后,可由管道320测试右子节点和射线之间的相交。
可在图3的处理中不使用第二输出缓冲器340和第三输出缓冲器350。
图4示出管道中的旁路的示例。
在图4中,第一子管道322可对射线或射线数据进行旁路,并且第二子管道324和第三子管道326可对射线或射线数据执行操作。
参照图4,可执行访问右子节点的操作和堆栈的弹出操作。由于排除了提取节点数据的需要,因此第一子管道322可对射线或射线数据进行旁路。第二子管道324可测试右子节点和射线之间的相交。第三子管道326可执行堆栈的操作。堆栈的操作可指示从堆栈弹出节点数据的弹出操作。射线数据可通过第一输出缓冲器330被重新输入到输入缓冲器310中,以遍历弹出的节点。
可在图4的处理中不使用第二输出缓冲器340和第三输出缓冲器350。
由于图3的技术公开可被应用在此,因此为了简明和方便描述起见,在此省略进一步的详细描述。
图5示出管道中的旁路的示例。
在图5中,第一子管道322和第二子管道324可对射线或射线数据执行操作,并且第三子管道326可对射线或射线数据进行旁路。
参照图5,可执行提取节点数据、访问叶节点和输出到IST单元的操作。第一子管道322可提取节点数据。第一子管道322可确定节点是叶节点还是内部节点。当确定节点为叶节点时,管道320的状态可转换为第二状态,以测试节点和射线之间的相交。第二子管道324可测试节点和射线之间的相交。当射线与节点相交时,射线数据可被发送到IST单元。由于连接到第二子管道324的第三子管道326用于第三状态,因此第三子管道326可不对射线执行操作,并可将射线数据发送到第二输出缓冲器340。
在图5的处理中可不使用第一输出缓冲器330和第三输出缓冲器350。
由于图3和图4的技术公开可被应用在此,因此为了简明和方便描述起见,在此省略进一步的详细描述。
图6示出管道中的旁路的示例。
第一子管道322可对射线或射线数据执行操作,并且第二子管道324和第三子管道326可对射线或射线数据进行旁路。
参照图6,可执行将输入的射线数据输出到着色单元的操作。第一子管道322可提取节点数据。节点数据可被发送到着色单元290。由于第二子管道324和第三子管道326分别用于第二状态和第三状态,因此第二子管道324和第三子管道326可不对射线执行操作,并可将射线数据发送到第三输出缓冲器350。
在图6的处理中可不使用第一输出缓冲器330和第二输出缓冲器340。
由于图3至图5的技术公开可被应用在此,因此为了简明和方便描述起见,在此省略进一步的详细描述。
如参照图3至图6所述,在管道320中连接的所有子管道可不对射线或射线数据连续执行操作。基于状态发散,一些子管道可对射线数据进行旁路。也就是说,当一个或多个子管道执行操作时,子管道中的一个或多个其他子管道可不起作用。结果,可保持一次循环一个射线的管道处理速率。然而,管道320中的不必要的数据传输可降低有效处理速率,并可增加功耗。在此实例中可考虑子管道的分离以及分离的子管道的并行执行来提高有效处理速率并降低功耗。
图7示出TRV单元700的示例。
TRV单元700可使用树AS。图2的第一TRV单元240-1、第二TRV单元240-2和第n TRV单元240-3可与TRV单元700相应。
TRV单元700可包括多个子管道单元。所述多个子管道单元可执行使用树AS的TRV所需的不同操作。所述多个子管道单元可并行操作。所述多个子管道单元可并行执行针对不同射线的TRV。也就是说,所述多个子管道单元中的每个可同时对不同射线执行操作(例如,不同操作)。
所述多个子管道单元可包括第一子管道单元732、第二子管道单元734和第三子管道单元736。第一子管道单元732、第二子管道单元734和第三子管道单元736可包括至少一个管道阶段。
所述多个子管道单元可与管道的状态相应。例如,第一子管道单元732、第二子管道单元734和第三子管道单元736可分别与图2的第一状态、第二状态和第三状态相应。
TRV单元700还可包括第一交叉开关(cross bar)710、高速缓存740、堆栈750、第二交叉开关760、第一输出缓冲器774和第二输出缓冲器776。
TRV单元700还可包括多个输入缓冲器。所述多个输入缓冲器可存储被分配到所述多个子管道单元中的一个子管道单元的与至少一个射线相关联的数据。子管道单元可在入口具有单独的输入缓冲器。输入缓冲器可将存储的射线数据发送到TRV单元700。
所述多个输入缓冲器可包括第一输入缓冲器722、第二输入缓冲器724和第三输入缓冲器726。第一输入缓冲器722、第二输入缓冲器724和第三输入缓冲器726可分别将射线数据发送到第一子管道单元732、第二子管道单元734和第三子管道单元736。
所述多个输入缓冲器、第一输出缓冲器774和第二输出缓冲器776可基于先入先出(FIFO)原则。
第一子管道单元732可提取与树AS中的被访问的节点相关联的数据,并可确定节点是叶节点还是内部节点。第一子管道单元732可执行第一子管道322的操作。
第二子管道单元734可使用射线数据和节点数据来测试射线和节点的空间之间的相交。第二子管道单元734可执行第二子管道324的操作。
第三子管道单元736可对节点数据执行堆栈操作。第三子管道单元736可执行第三子管道326的操作。
高速缓存740可将节点数据提供给第一子管道单元732。高速缓存740可实现来自图2的第一高速缓存282的AS数据的高速缓存,并可存储所述AS数据。所述AS数据可包括与AS中的每个节点相关联的数据。
堆栈750可将堆栈操作提供给第三子管道单元736。堆栈750可存储由第三子管道单元736推入的数据,并可将由第三子管道单元736弹出的数据提供给第三子管道单元736。堆栈750可基于后进先出(LIFO)原则。
第一交叉开关710可将与输入到TRV单元700的射线相关联的数据分配给在多个子管道单元中的与输入射线的状态相应的一个子管道单元。可基于射线的状态来确定将对输入射线执行的操作。例如,可由所述多个子管道单元中的一个子管道单元来处理输入到TRV单元700中的射线,并且射线的状态可指示将用于处理所述射线的子管道单元。
可通过针对所述多个子管道单元的用于处理射线或射线数据的任务或操作来改变射线的状态。
第一交叉开关710可与用于将射线数据发送(route)到所述多个输入缓冲器中的任意输入缓冲器的缓冲器相应。
第二交叉开关760可基于射线的状态将从所述多个子管道单元中的一个子管道单元输出的射线数据重新发送到相应的子管道单元、着色单元290或IST单元。从第二交叉开关760发送到IST单元的射线数据可通过第二缓冲器250被发送到IST单元。
可通过第一交叉开关710和第二交叉开关760将所述多个子管道单元连接到反馈线。
第一输出缓冲器774可存储从第二交叉开关760输出并被发送到着色单元290的与至少一个射线相关联的数据。从第二交叉开关760到着色单元290的与射线相关联的数据可通过第一输出缓冲器774被发送到着色单元290。
第二输出缓冲器776可存储从第二交叉开关760输出并被发送到IST单元的与至少一个射线相关联的数据。从第二交叉开关760到IST单元的与射线相关联的数据可通过第二输出缓冲器776被发送到IST单元。
对于多个输入缓冲器,射线可等待由与输入缓冲器相应的子管道单元来处理。当适当数量的射线被缓冲到多个输入缓冲器中时,射线可同时被分发到多个子管道单元。因此,多个子管道单元可实现并行执行。基于射线TRV算法的特性,可不改变射线的状态,直到将由预定子管道单元处理的射线数据被用完为止。因此,可继续保持多个子管道单元之间的并行性。
第一子管道单元732、第二子管道单元734和第三子管道单元736之中的至少一个可以是多个。射线状态的多次产生会出现不同。因此,通过复制一个子管道单元,可避免多个子管道单元之间的负载不平衡,并可提高吞吐量。
可基于依据平均或另一统计基础的TRV单元700处理射线所需的第一子管道单元732、第二子管道单元734和第三子管道单元736的使用次数,来分别确定第一子管道单元732的数量、第二子管道单元734的数量以及第三子管道单元736的数量。可选地,可基于需要的第一子管道单元732、第二子管道单元734和第三子管道单元736的使用次数的比率,来确定第一子管道单元732、第二子管道单元734和第三子管道单元736的数量。
图8示出包括多个第一子管道单元的TRV单元的示例。
在图8中,提供了两个第一输入缓冲器722和两个第一子管道单元732。高速缓存740可向第一子管道单元732提供节点数据。
当由第一子管道单元732处理射线数据的次数高于由第二子管道单元724处理射线数据的次数和由第三子管道单元736处理射线数据的次数时,TRV单元700可使用两个或更多个第一子管道单元732。多个第一子管道单元732可同时处理与多个射线相关联的数据。由于使用次数高,可在第一子管道单元732防止瓶颈。
图9示出包括多个第二子管道单元的TRV单元的示例。
在图9中,提供了两个第二输入缓冲器724和两个第二子管道单元734。
当由第二子管道单元734处理射线数据的次数高于由第一子管道单元732处理射线数据的次数和由第三子管道单元736处理射线数据的次数时,TRV单元700可使用两个或更多个第二子管道单元734。多个第二子管道单元734可同时处理与多个射线相关联的数据。
可选地,本领域的普通技术人员将理解,TRV单元700还可在多个子管道中使用两个或更多个子管道单元(例如,多个第一子管道单元和多个第二子管道单元、多个第二子管道单元和多个第三子管道单元、多个第一子管道单元和多个第三子管道单元、多个第一子管道单元和多个第二子管道单元和多个第三子管道单元等)。子管道单元的数量可根据处理射线数据的次数、处理射线数据所需的时间量、使用的相对比率、或可用于以适当的和/或有效的方式来平衡工作负载的其他统计信息而不同。
图10示出射线TRV方法的示例。
参照图10,在操作1010,第一交叉开关710可将与输入到TRV单元700中的射线相关联的数据分配到在第一子管道单元732、第二子管道单元734和第三子管道单元736中的与输入射线的状态相应的子管道单元。
可基于与被分配的在第一子管道单元732、第二子管道单元734和第三子管道单元736中的子管道单元相应的子管道单元来执行操作1022、1024和1026。
在操作1022,第一输入缓冲器722可存储从第一交叉开关710输出的与射线相关联的数据。第一输入缓冲器722可存储与至少一个射线相关联的数据。第一输入缓冲器722可基于FIFO原则将存储的与至少一个射线相关联的数据发送到第一子管道单元732。
在操作1032,第一子管道单元732可提取与树AS中的被射线访问的节点相关联的数据。第一子管道单元732可确定节点是叶节点还是内部节点。
在操作1040,高速缓存740可将与节点相关联的数据提供给第一子管道单元732。
在完成所述提取或确定之后,在操作1060,第一子管道单元732可将与射线相关联的数据输出到第二交叉开关760。
在操作1024,第二输入缓冲器724可存储从第一交叉开关710输出的与射线相关联的数据。第二输入缓冲器724可存储与至少一个射线相关联的数据。第二输入缓冲器724可基于FIFO原则将存储的与至少一个射线相关联的数据发送到第二子管道单元734。
在操作1034,第二子管道单元734可使用与射线相关联的数据和与节点相关联的数据来测试射线和节点的空间之间的相交。
在完成所述测试之后,在操作1060,第二子管道单元734可将与射线相关联的数据输出到第二交叉开关760。
在操作1026,第三输入缓冲器726可存储从第一交叉开关710输出的与射线相关联的数据。第三输入缓冲器726可存储与至少一个射线相关联的数据。第三输入缓冲器726可基于FIFO原则将存储的与至少一个射线相关联的数据发送到第三子管道单元736。
在操作1036,第三子管道单元736可对与节点相关联的数据执行堆栈操作。在执行上述操作之后,在操作1060,第三子管道单元736可将与射线相关联的数据输出到第二交叉开关760。
操作1032/1040、1034和1036可对不同射线并行执行TRV。在操作1032/1040、1034和1036,可由第一子管道单元732、第二子管道单元734和第三子管道单元736中的一个子管道单元来对与多个射线相关联的数据进行并行处理。
第一子管道单元732、第二子管道单元734和第三子管道单元736中的至少一个可以是多个。可基于依据平均或另一统计基础的TRV单元700处理射线所需的第一子管道单元732、第二子管道单元734和第三子管道单元736的使用次数,来分别确定第一子管道单元732的数量、第二子管道单元734的数量以及第三子管道单元736的数量。
在执行操作1032/1040、1034或1036之后,可执行操作1060。
在操作1060,第二交叉开关760可基于射线的状态,将从第一子管道单元732、第二子管道单元734和第三子管道单元736中的一个子管道单元输出的与射线相关联的数据重新发送到相应的子管道单元、着色单元290或至少一个IST单元。
当与射线相关联的数据被重新发送到相应的子管道单元时,可执行操作1010。当与射线相关联的数据被重新发送到着色单元290时,可执行操作1074。当与射线相关联的数据被发送到至少一个IST单元时,可执行操作1076。
在操作1074,第一输出缓冲器774可存储从第二交叉开关760输出并被发送到着色单元290的与至少一个射线相关联的数据。
第一输出缓冲器774可基于FIFO原则将存储的与至少一个射线相关联的数据发送到着色单元290。
在操作1076,第二输出缓冲器776可存储从第二交叉开关760输出并被发送到所述至少一个IST单元中的一个IST单元的与至少一个射线相关联的数据。
第二输出缓冲器776可基于FIFO原则将存储的与至少一个射线相关联的数据发送到所述至少一个IST单元中的一个IST单元。
由于图1至图9的技术公开可被应用在此,因此为了简明和方便描述起见,在此省略进一步的详细描述。
图11示出射线跟踪方法的示例。
在操作1110,射线产生单元210可产生射线。产生的射线可被输入到射线跟踪单元220中。
在操作1120,至少一个TRV单元可分别遍历AS。这里,AS可与树AS相应。操作1120可包括图10的操作1010至1076。
在操作1130,至少一个IST单元可使用AS分别测试场景对象和射线之间的相交。
在操作1140,着色单元290可计算与射线相应的像素的颜色。着色单元290可基于与射线相交的可见场景对象的颜色来计算2D屏幕中的预定像素的颜色。
操作1110、1120、1130和1140可分别执行图1的射线产生150、AS TRV155、IST160和着色165。
由于图1至图10的技术公开可被应用在此,因此为了简明和方便描述起见,在此省略进一步的详细描述。
根据示例性实施例,可提高GPU的射线跟踪性能。由于基于射线的状态仅使用射线TRV所需的子管道单元,因此可降低功耗。由于射线被同时分发到多个子管道单元,因此相对于其他方法(例如,使用单个管道的射线TRV),并行处理效率可提高。
根据上述示例实施例的用于执行射线跟踪的设备和方法可使用可包括图形处理单元(GPU)、微处理器、中央处理单元(CPU)、数字信号处理器(DSP)或专用集成电路(ASIC)的一个或多个处理器,以及这些和其他处理装置的部分或组合。
如在此使用的术语“模块”和“单元”可指示但不限于执行特定任务的软件或硬件组件或装置(诸如,场可编程门阵列(FPGA)或专用集成电路(ASIC))。模块或单元可被配置为位于可寻址存储介质上,并被配置为在一个或多个处理器上执行。因此,模块或单元通过举例的方式可包括组件(诸如软件组件、面向对象的软件组件、类组件和任务组件)、处理、函数、属性、过程、子例程、程序代码段、驱动器、固件、微代码、电路、数据、数据库、数据结构、表、数组和变量。设置在组件和模块/单元中的功能可被组合到更少的组件和模块/单元中,或被进一步分离为另外的组件和模块。
根据上述实施例的方法可被记录在包括有用于实现由计算机实施的各种操作的程序指令的非暂时性计算机可读介质中。所述介质还可单独包括数据文件、数据结构等,或可包括与程序指令相结合的数据文件、数据结构等。非暂时性计算机可读介质的示例包括:磁介质(诸如,硬盘、软盘和磁带);光学介质(诸如CD ROM盘和DVD);磁光介质(诸如,光盘);和被专门配置为存储和执行程序指令的硬件装置(诸如,只读存储器(ROM)、随机存取存储器(RAM)、闪存等)。程序指令的示例包括(诸如由编译器产生的)机器代码和包含可由计算机使用解释器来执行的更高级别代码的文件两者。所述的硬件装置可被配置为充当一个或多个软件模块以执行上述实施例的操作,反之亦然。程序指令可由一个或多个处理器执行。另外,非暂时性计算机可读存储介质可分布在通过网络连接的计算机系统中,并且计算机可读代码或程序指令可按分散方式被存储和执行。另外,计算机可读存储介质还可被实施在至少一个专用集成电路(ASIC)或场可编程门阵列(FPGA)中。
虽然已示出和描述了实施例,但是将对本领域的技术人员显然的是,在不脱离本发明的精神或范围的情况下,可在本发明中进行各种修改和变化。例如,如果所述技术按不同顺序被执行和/或如果在所述系统、架构、装置或电路中的组件按不同方式被组合和/或用其他组件或它们的等同物被替换或补充,则可实现适当的结果。
因此,本发明意图涵盖本发明的修改和变化,只要它们落在权利要求及其等同物的范围内。

Claims (14)

1.一种使用树加速结构AS的遍历单元,所述遍历单元包括:
多个子管道单元,用于并行操作,并用于执行使用树AS的射线遍历所需的不同操作;
第一交叉开关,用于将与输入射线相关联的数据分配给所述多个子管道单元中的与输入射线的状态相应的子管道单元;
第二交叉开关,用于将从所述多个子管道单元中的一个子管道单元输出的与射线相关联的数据,基于射线的状态重新发送到第一交叉开关或者发送到着色单元或相交测试IST单元;
第一输出缓冲器,用于存储从第二交叉开关输出并被发送到着色单元的与至少一个射线相关联的数据;
第二输出缓冲器,用于存储从第二交叉开关输出并被发送到IST单元的与至少一个射线相关联的数据,
其中,所述多个子管道单元通过第一交叉开关和第二交叉开关被连接到反馈线,
其中,所述不同操作包括:提取与树AS的节点相关联的数据,测试射线和树AS的节点的空间之间的相交,以及对数据执行堆栈操作。
2.如权利要求1所述的遍历单元,其中,所述多个子管道单元适用于对不同射线并行执行遍历。
3.如权利要求1所述的遍历单元,其中,所述多个子管道单元包括:
第一子管道单元,用于提取与被射线访问的树AS的节点相关联的数据;
第二子管道单元,用于使用与射线相关联的数据和与树AS的节点相关联的数据来测试射线和树AS的节点的空间之间的相交;
第三子管道单元,用于对与树AS的节点相关联的数据执行堆栈操作。
4.如权利要求3所述的遍历单元,还包括:
高速缓存,用于将与树AS的节点相关联的数据提供给第一子管道单元。
5.如权利要求3所述的遍历单元,其中,第一子管道单元、第二子管道单元和第三子管道单元中的至少一个的数量是多个。
6.如权利要求3所述的遍历单元,其中,基于遍历单元对射线执行遍历所需的第一子管道单元、第二子管道单元和第三子管道单元的使用次数,来分别确定第一子管道单元的数量、第二子管道单元的数量和第三子管道单元的数量。
7.如权利要求1所述的遍历单元,还包括:
多个输入缓冲器,用于存储被分配给所述多个子管道单元中的一个子管道单元的与至少一个射线相关联的数据。
8.一种使用树加速结构AS的遍历方法,所述遍历方法包括:
通过第一子管道单元提取与被射线访问的树AS的节点相关联的数据;
通过第二子管道单元使用与射线相关联的数据和与树AS的节点相关联的数据来测试射线和树AS的节点的空间之间的相交;
通过第三子管道单元对与树AS的节点相关联的数据执行堆栈操作,
通过第一交叉开关将与输入射线相关联的数据分配给第一子管道单元、第二子管道单元和第三子管道单元中的与输入射线的状态相应的子管道单元;
通过第二交叉开关将从第一子管道单元、第二子管道单元和第三子管道单元中的一个子管道单元输出的与射线相关联的数据,基于射线的状态重新发送到第一交叉开关或发送到着色单元或相交测试IST单元,
其中,通过第二交叉开关将从第一子管道单元、第二子管道单元和第三子管道单元中的一个子管道单元输出的与射线相关联的数据,基于射线的状态重新发送到第一交叉开关或发送到着色单元或相交测试IST单元的操作包括:由第一输出缓冲器存储从第二交叉开关输出并被发送到着色单元的与至少一个射线相关联的数据,并由第二输出缓冲器存储从第二交叉开关输出并被发送到IST单元的与至少一个射线相关联的数据,
其中,第一子管道单元、第二子管道单元和第三子管道单元通过第一交叉开关和第二交叉开关被连接到反馈线,
其中,所述提取、测试和执行的步骤被并行执行。
9.如权利要求8所述的遍历方法,还包括:
通过高速缓存将与树AS的节点相关联的数据提供给第一子管道单元。
10.如权利要求8所述的遍历方法,其中,第一子管道单元、第二子管道单元和第三子管道单元中的至少一个的数量是多个。
11.如权利要求8所述的遍历方法,其中,基于遍历单元对射线执行遍历所需的第一子管道单元、第二子管道单元和第三子管道单元的使用次数,来分别确定第一子管道单元的数量、第二子管道单元的数量和第三子管道单元的数量。
12.一种用于执行射线跟踪的射线跟踪单元,所述射线跟踪单元包括:
多个遍历单元,每个遍历单元包括:
多个子管道单元,用于并行操作,并用于执行使用树加速结构的射线遍历所需的不同操作,
第一交叉开关,用于将与输入射线相关联的数据分配给所述多个子管道单元中的与输入射线的状态相应的子管道单元,
第二交叉开关,用于将从所述多个子管道单元中的一个子管道单元输出的与射线相关联的数据,基于射线的状态重新发送到第一交叉开关或发送到着色单元或相交测试单元,
第一输出缓冲器,用于存储从第二交叉开关输出并被发送到着色单元的与至少一个射线相关联的数据,和
第二输出缓冲器,用于存储从第二交叉开关输出并被发送到相交测试单元的与至少一个射线相关联的数据,
其中,所述多个子管道单元通过第一交叉开关和第二交叉开关被连接到反馈线,其中,所述不同操作包括:提取与树加速结构的节点相关联的数据,测试射线和树加速结构的节点的空间之间的相交,以及对数据执行堆栈操作;
多个相交测试单元,用于测试从所述多个遍历单元中的至少一个输出的射线和与树加速结构的叶节点相应的场景对象之间的相交。
13.如权利要求12所述的射线跟踪单元,还包括:
射线调度单元,用于将输入射线分配给至少一个遍历单元;
射线调节单元,用于通过控制射线数据流动来调节所述多个遍历单元和所述多个相交测试单元之间的射线传输;
缓冲器,用于在至少一个遍历单元完成遍历时,存储至少一个射线。
14.如权利要求13所述的射线跟踪单元,还包括:
射线产生单元,用于产生射线并将产生的射线的数据提供给射线调度单元;
着色单元,用于从缓冲器接收跟踪的射线,并用于使用跟踪的射线的数据对跟踪的射线进行着色。
CN201310359331.XA 2012-08-16 2013-08-16 用于使用并行管道的图形处理的方法和设备 Active CN103593817B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020120089682A KR20140023615A (ko) 2012-08-16 2012-08-16 병렬 파이프라인을 사용하는 그래픽 처리 방법 및 장치
KR10-2012-0089682 2012-08-16

Publications (2)

Publication Number Publication Date
CN103593817A CN103593817A (zh) 2014-02-19
CN103593817B true CN103593817B (zh) 2018-06-15

Family

ID=48985653

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310359331.XA Active CN103593817B (zh) 2012-08-16 2013-08-16 用于使用并行管道的图形处理的方法和设备

Country Status (5)

Country Link
US (1) US20140049539A1 (zh)
EP (1) EP2698768B1 (zh)
JP (1) JP6336727B2 (zh)
KR (1) KR20140023615A (zh)
CN (1) CN103593817B (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102252374B1 (ko) * 2014-09-05 2021-05-14 삼성전자주식회사 광선 추적 유닛 및 광선 데이터를 처리하는 방법
US9607425B2 (en) * 2014-10-17 2017-03-28 Qualcomm Incorporated Ray-box intersection testing using dot product-based fixed function logic
US10297068B2 (en) 2017-06-06 2019-05-21 Adshir Ltd. Method for ray tracing augmented objects
US10614614B2 (en) 2015-09-29 2020-04-07 Adshir Ltd. Path tracing system employing distributed accelerating structures
US10565776B2 (en) 2015-12-12 2020-02-18 Adshir Ltd. Method for fast generation of path traced reflections on a semi-reflective surface
US10614612B2 (en) 2018-06-09 2020-04-07 Adshir Ltd. Fast path traced reflections for augmented reality
US10410401B1 (en) 2017-07-26 2019-09-10 Adshir Ltd. Spawning secondary rays in ray tracing from non primary rays
CN105912978A (zh) * 2016-03-31 2016-08-31 电子科技大学 基于并发管道的车道线检测和跟踪方法
US10438397B2 (en) * 2017-09-15 2019-10-08 Imagination Technologies Limited Reduced acceleration structures for ray tracing systems
US10699468B2 (en) 2018-06-09 2020-06-30 Adshir Ltd. Method for non-planar specular reflections in hybrid ray tracing
KR102169799B1 (ko) 2019-04-11 2020-10-26 주식회사 실리콘아츠 포터블 레이 트레이싱 장치
KR102089269B1 (ko) 2019-04-11 2020-03-17 주식회사 실리콘아츠 포터블 레이 트레이싱 시스템에서의 버퍼링 방법
KR102151444B1 (ko) * 2019-04-11 2020-09-03 주식회사 실리콘아츠 Mimd 기반의 t&i 스케줄링을 이용한 레이 트레이싱 장치
KR102358350B1 (ko) * 2019-10-15 2022-02-04 한국기술교육대학교 산학협력단 클러스터 기반 과학적 가시화 도구를 위한 가시화 파이프라인 장치 및 그 가시화 방법
US11017581B1 (en) 2020-01-04 2021-05-25 Adshir Ltd. Method for constructing and traversing accelerating structures
US11734871B2 (en) 2021-09-24 2023-08-22 Apple Inc. Ray intersection testing with quantization and interval representations
GB2612681B (en) * 2021-09-24 2024-01-31 Apple Inc Ray intersection testing with quantization and interval representations
US11830124B2 (en) 2021-09-24 2023-11-28 Apple Inc. Quantized ray intersection testing with definitive hit detection

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7533236B1 (en) * 2006-05-11 2009-05-12 Nvidia Corporation Off-chip out of order memory allocation for a unified shader
US8018457B2 (en) * 2006-09-19 2011-09-13 Caustic Graphics, Inc. Ray tracing system architectures and methods
KR101004110B1 (ko) * 2009-05-28 2010-12-27 주식회사 실리콘아츠 레이 트레이싱 코어 및 이를 포함하는 레이 트레이싱 칩
KR101705581B1 (ko) * 2010-09-30 2017-02-22 삼성전자주식회사 데이터 처리 장치 및 방법

Also Published As

Publication number Publication date
EP2698768A3 (en) 2014-04-09
JP2014038623A (ja) 2014-02-27
EP2698768A2 (en) 2014-02-19
EP2698768B1 (en) 2015-05-27
KR20140023615A (ko) 2014-02-27
CN103593817A (zh) 2014-02-19
JP6336727B2 (ja) 2018-06-06
US20140049539A1 (en) 2014-02-20

Similar Documents

Publication Publication Date Title
CN103593817B (zh) 用于使用并行管道的图形处理的方法和设备
Garanzha et al. Fast ray sorting and breadth‐first packet traversal for GPU ray tracing
CN109509138A (zh) 针对射线跟踪系统的减小的加速结构
Lauterbach et al. Fast BVH construction on GPUs
US10482650B2 (en) Methods, computer program and apparatus for an ordered traversal of a subset of nodes of a tree structure and for determining an occlusion of a point along a ray in a raytracing scene
US8570322B2 (en) Method, system, and computer program product for efficient ray tracing of micropolygon geometry
EP3483838B1 (en) Systems and methods for rendering with ray tracing
US20140340403A1 (en) System, method, and computer program product for utilizing a wavefront path tracer
US10529117B2 (en) Systems and methods for rendering optical distortion effects
CN106575442B (zh) 使用通过自适应着色的纹理查找的带宽缩减
US20190197761A1 (en) Texture processor based ray tracing acceleration method and system
CN105912234B (zh) 虚拟场景的交互方法和装置
Wong et al. An adaptive octree grid for GPU-based collision detection of deformable objects
CN103093499A (zh) 一种适用于网络传输的城市三维模型数据组织方法
WO2008067483A1 (en) Ray tracing a three dimensional scene using a grid
US7990380B2 (en) Diffuse photon map decomposition for parallelization of global illumination algorithm
CN109242967B (zh) 一种三维地形渲染方法及装置
Wang et al. GPU-based out-of-core many-lights rendering
CN114119841A (zh) 光线跟踪系统中的相交测试
US20180174354A1 (en) Device and method for scene rendering by path tracing with complex lighting
Zellmann et al. A linear time BVH construction algorithm for sparse volumes
CN106484532B (zh) 面向sph流体模拟的gpgpu并行计算方法
US9779537B2 (en) Method and apparatus for ray tracing
CN101840565A (zh) 一种基于gpu的八叉树并行构建方法
Zlatuška et al. Ray tracing on a gpu with cuda–comparative study of three algorithms

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant