CN114170365A - 利用异步操作和光线变换的加速光线跟踪的系统和方法 - Google Patents
利用异步操作和光线变换的加速光线跟踪的系统和方法 Download PDFInfo
- Publication number
- CN114170365A CN114170365A CN202110959031.XA CN202110959031A CN114170365A CN 114170365 A CN114170365 A CN 114170365A CN 202110959031 A CN202110959031 A CN 202110959031A CN 114170365 A CN114170365 A CN 114170365A
- Authority
- CN
- China
- Prior art keywords
- rtu
- ray
- acceleration structure
- shader
- traversal
- 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.)
- Pending
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
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/20—Perspective computation
- G06T15/205—Image-based rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/80—Shading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- Computing Systems (AREA)
- Geometry (AREA)
- Image Generation (AREA)
Abstract
一种图形处理单元(GPU)包括适于执行软件实现的着色器程序的一个或多个处理器核心,以及适于遍历加速结构以与着色器操作异步地计算光线与包围体和图形图元的相交点的一个或多个硬件实现的光线跟踪单元(RTU)。所述RTU实现遍历逻辑以遍历所述加速结构,包括根据需要进行光线变换以考虑层级之间的坐标空间的变化、进行栈管理和其他任务以减轻着色器上的负担,将相交点传送到所述着色器,然后所述着色器计算所述相交点是命中所相交的对象的透明部分还是不透明部分。因此,所述GPU内的一个或多个处理核心通过将处理的各方面卸载到所述RTU来执行加速光线跟踪,所述RTU遍历其中表示3D环境的所述加速结构。
Description
技术领域
本申请总体上涉及用于加速光线跟踪的系统和方法。
背景技术
光线跟踪用于通过跟踪从假想观察者的眼睛(通常是相机位置)到图形中的虚拟对象的光路来模拟计算机生成的3D图形中的光学效应。相比于其他技术(诸如光栅化),光线跟踪产生具有更高程度的真实感的光学效应,但是计算成本更大。这意味着,在实时应用(诸如视频游戏)中,光线跟踪提出了挑战,因为渲染速度很关键。
发明内容
因此,一种用于图形处理的方法包括在图形处理单元(GPU)上执行着色器程序,该着色器程序执行由加速结构表示的3D环境的光线跟踪。该方法包括使用GPU内在着色器程序的请求下遍历加速结构的硬件实现的光线跟踪单元(RTU),并且在着色器程序处使用加速结构遍历的结果。
在示例性实施方案中,由RTU进行的加速结构遍历相对于着色器程序可以是异步的。在一些实现方式中,由RTU进行的加速结构遍历的结果包括对光线和包含在加速结构内的包围体(bounding volume)之间的相交点的检测。在一些示例中,RTU处理包括维护在加速结构遍历中使用的栈。
加速结构可以是具有多个层级的层次结构。在此类实施方案中,由RTU进行的加速结构遍历的结果可以包括对在加速结构的多个层级内从较高层级到较低层级的转变的检测。由RTU进行的加速结构遍历的结果还可以包括对在加速结构的多个层级内从较低层级到较高层级的转变的检测。由RTU进行的加速结构遍历可以包括对加速结构的多个层级之间的转变的处置。
在非限制性实现方式中,由RTU进行的加速结构遍历的结果可以包括对光线和包含在加速结构内的图元之间的相交点的检测。在此类实现方式中,由RTU进行的加速结构遍历的结果可以包括对光线和包含在加速结构内的图元之间的最早的相交点的检测。此外,由RTU进行的加速结构遍历的结果可以包括由RTU按照由RTU检测到的相交点与光线原点的距离对相交点进行的排序,使得RTU在其遍历加速结构时检测到光线和图元之间的第一相交点,RTU在其遍历加速结构时检测到光线和图元之间的第二相交点,并且在将结果从RTU传送到着色器程序时,在第一相交点结果之前传送第二相交点结果。如果需要,在由RTU检测到光线和包含在加速结构内的图元之间的相交点并且将该结果传送到着色器程序时,着色器程序和RTU随后就着色器程序在光线和图元之间进行的命中测试的结果进行通信。
在RTU检测到光线和包含在加速结构内的包围体之间的相交点并且将该结果传送到着色器程序时,着色器程序和RTU随后可就着色器程序关于是否忽略相交点的确定和/或着色器程序关于相交点沿光线的位置的确定进行通信。
在另一方面,一种图形处理单元(GPU)包括:至少一个处理器核心,该至少一个处理器核心适于执行软件实现的着色器;以及至少一个硬件实现的光线跟踪单元(RTU),所述RTU与处理器核心分离并且适于遍历加速结构以标识光线与加速结构中所表示的对象的相交点,以生成结果,并且将所述结果返回给着色器以供着色器标识与相交点相关联的命中。
在该第二方面的示例性实现方式中,RTU可以包括用于标识相交点的硬件电路,并且着色器可以适于使用软件来标识命中。着色器可配置有可由处理器核心执行以对3D计算机图形中的像素进行着色的指令。
在该第二方面的一些实施方案中,RTU可以包括用于实现遍历逻辑以遍历加速结构的硬件电路。RTU可以包括用于实现对在加速结构的遍历中使用的栈的栈管理的硬件电路。此外,RTU可以包括用于按照与原点的距离对相交点进行排序的硬件电路。
在一些实现方式中,RTU适于与着色器标识命中异步地标识相交点。着色器可包括可由处理器核心执行以读取RTU的状态的指令。
在非限制性实施方案中,RTU可以包括用于将光线从具有多个层级的加速结构的较高层级所使用的坐标空间变换到加速结构的较低层级所使用的坐标空间的硬件电路。RTU还可以包括用于将光线从具有多个层级的加速结构的较低层级所使用的坐标空间变换到加速结构的较高层级所使用的坐标空间及/或将光线属性恢复为在遍历加速结构的较高层级时使用的光线属性的硬件电路。
在一些示例中,RTU可以包括用于标识第一光线和包含在加速结构内的第一包围体之间的第一相交点的硬件电路,并且着色器可以包括可执行来确定是否忽略第一相交点的指令,并且响应于确定不忽略第一相交点,标识第一相交点沿第一光线的位置。
处理器核心和RTU可以被支承在共同半导体管芯上。多个处理器核心和多个RTU可以在共同半导体管芯上。
在另一方面,一种组件包括适于执行至少一个着色器以对图形中的像素进行着色的至少一个处理器核心。该组件还包括与处理器核心分离的至少一个光线跟踪单元(RTU)。RTU包括硬件电路,该硬件电路用于标识光线和加速结构中所表示的对象的相交点以便由处理器核心标识与相交点相关联的命中,实现用于遍历加速结构的逻辑,以及实现对遍历加速结构时使用的数据栈的管理。
在另一方面,一种用于图形处理的方法包括在图形处理单元(GPU)上执行着色器程序,该着色器程序执行由加速结构表示的3D环境的光线跟踪。该方法还包括:与着色器程序异步地,使用GPU内在着色器程序的请求下遍历加速结构的硬件实现的光线跟踪单元(RTU),并且在着色器程序处使用加速结构遍历的结果。
在另一方面,一种用于图形处理的方法包括在图形处理单元(GPU)上执行着色器程序,该着色器程序执行由加速结构表示的3D环境的光线跟踪。该方法还包括:使用GPU内在着色器程序的请求下遍历加速结构的硬件实现的光线跟踪单元(RTU),并且在着色器程序处使用加速结构遍历的结果。加速结构是具有多个层级的层次结构,并且由RTU进行的加速结构遍历包括对加速结构的多个层级之间的坐标转变的处置。
在另一方面,一种图形处理单元(GPU)包括:至少一个处理器核心,该至少一个处理器核心适于执行软件实现的着色器;以及至少一个硬件实现的光线跟踪单元(RTU),该RTU与处理器核心分离并且适于相对于着色器操作异步地遍历加速结构以标识光线和加速结构中所表示的对象的相交点,以生成结果,并且将所述结果返回给着色器以供着色器标识与相交点相关联的命中。
在另一方面,图形处理单元(GPU)包括至少一个处理器核心,该至少一个处理器核心适于执行软件实现的着色器;以及至少一个硬件实现的光线跟踪单元(RTU),该RTU与处理器核心分离并且适于遍历加速结构以标识光线和加速结构中所表示的对象的相交点,以生成结果,并且将所述结果返回给着色器以供着色器标识与相交点相关联的命中。RTU包括用于实现遍历逻辑以遍历加速结构的硬件电路,该遍历包括修改至少一条光线以考虑遍历期间坐标系的变化。
本申请的关于其结构和操作两者的细节可参考附图得到最好的理解,在附图中相同的附图标记指代相同的部分,并且在附图中:
附图说明
图1示出了加速结构;
图2示出了多级加速结构的其他细节;
图3示出了简化的图形处理单元(GPU);
图4示出了带有光线跟踪单元(RTU)的示例性GPU以及遍历图,该光线跟踪单元具有用于标识光线相交点的硬件电路、用于遍历加速结构的遍历逻辑以及栈管理电路;
图4A、图4B和图4C以示例性流程图格式示出了与图4一致的示例性逻辑;
图5示出了执行着色器和RTU之间的异步处理的两个示例性GPU;
图5A以示例性流程图格式示出了与图5一致的示例性逻辑;
图6示出了GPU,其中遍历图示出了不需要命中测试时的协作处理;
图7示出了涉及多级加速结构的其他示例;
图7A以示例性流程图格式示出了与图7一致的示例性逻辑;并且
图8示出了GPU,其中遍历图示出了由着色器确定的相交点。
具体实施方式
本公开总体上涉及计算机生态系统,其包括消费型电子(CE)装置网络的各个方面,诸如但不限于计算机游戏网络。本文中的系统可以包括可以通过网络连接的服务器和客户端部件,使得可以在客户端和服务器部件之间交换数据。客户端部件可以包括一个或多个计算装置,所述计算装置包括诸如Sony 或由微软(Microsoft)或任天堂(Nintendo)或其他制造商制作的游戏控制台等游戏控制台,虚拟现实(VR)头戴式耳机、增强现实(AR)头戴式耳机、便携式电视机(例如智能TV、启用互联网的TV)、便携式计算机(诸如膝上型计算机和平板计算机)以及其他移动装置(包括智能电话和下面讨论的附加示例)。这些客户端装置可在多种操作环境下操作。例如,一些客户端计算机可以采用例如Linux操作系统,来自微软的操作系统,或Unix操作系统,或由苹果公司(Apple,Inc.)或谷歌(Google)生产的操作系统。可使用这些操作环境来执行一个或多个浏览程序,诸如由微软或谷歌或摩斯拉(Mozilla)制作的浏览器,或可访问由下文论述的互联网服务器托管的网站的其他浏览器程序。而且,可使用根据本发明原理的操作环境来执行一个或多个计算机游戏程序。
服务器和/或网关可包括一个或多个处理器,所述一个或多个处理器执行将服务器配置为通过诸如互联网的网络来接收和传输数据的指令。或者,客户端和服务器可通过本地内联网或虚拟专用网络连接。服务器或控制器可由游戏控制台(诸如Sony)、个人计算机等实例化。
可通过网络在客户端与服务器之间交换信息。为此,并且出于安全起见,服务器和/或客户端可包括防火墙、负载平衡器、临时存储装置和代理,以及用于可靠性和安全性的其他网络基础设施。一个或多个服务器可形成一种设备,所述设备实现向网络成员提供安全社区(诸如在线社交网站)的方法。
处理器或处理器核心可以是单芯片或多芯片处理器,可借助于各种线(诸如地址线、数据线和控制线)以及寄存器和移位寄存器来执行逻辑。逻辑在本文中可以包括流程图的各种形式来表示,但不限制本发明的原理。例如,适当时可以使用状态逻辑。
在一个实施方案中所包括的部件可按照任何适当的组合用于其他实施方案中。例如,本文中所描述且/或在图中所描绘的各种部件中的任一者可被组合、互换或从其他实施方案排除。
“具有A、B和C中的至少一者的系统”(同样地,“具有A、B或C中的至少一者的系统”和“具有A、B、C中的至少一者的系统”)包括以下系统:仅具有A;仅具有B;仅具有C;同时具有A和B;同时具有A和C;同时具有B和C;和/或同时具有A、B和C等。
现在具体参见图1,示出了加速结构10,该加速结构是表示计算机生成的对象的三维(3D)环境的数据结构,所述计算机生成的对象诸如可以用于电影、计算机模拟(诸如计算机游戏)等。图1的示例中示出的加速结构10的体系结构是包围体层次结构(BVH),其是具有根节点12、内部节点14和叶16的树结构。根节点12和内部节点14包含多个包围体,所述包围体中的每一个对应于节点的子节点。叶16包含一个或多个图元或其他类型的几何形状。
为简单起见,图2示出了具有两个层级的示例性多级加速结构200。上层(“顶层加速结构”)202在其叶204中不包含图元;相反,其叶204是对下层(“底层加速结构”)206的引用。底层加速结构206与顶层202的不同之处在于底层206的叶208包含图元。
顶层加速结构202可以具有在世界空间坐标中的包围体(并且在一些应用中,具有图元)。底层加速结构206各自具有其自己的坐标空间。这允许例如在底层加速结构“Y”中表示的3D对象出现两次,每次以不同的位置和取向出现。
图1和图2示出了可以根据本发明的原理使用的加速结构的非限制性示例。
图3是图形处理器单元(GPU)300的简化图,该图形处理器单元包括支承一个或多个处理器核心304(在示例中为多个处理器核心304)和一个或更多个(在示例中为多个)相交点引擎306的半导体管芯302。相交点引擎帮助光线跟踪。GPU 300还可以包括许多其他功能单元,诸如高速缓存308、存储器接口310、光栅化器312和渲染后端314。
处理器核心304执行软件实现的着色器程序(本文中也称为“着色器”)以通过初始化光线、然后遍历图2中的加速结构、使光线与加速结构所包含的包围体和图元连续碰撞来使光线穿过由例如加速结构200表示的3D环境。在简化的实施方案中,可以由专用硬件实现的相交点引擎306可以计算光线与包围体和图元的相交点。因此,可以将标识光线-包围体和光线-图元相交点卸载到相交点引擎306。在图3的简化概念中,处理器核心304将节点或叶地址连同光线的描述一起传送到相交点引擎306,并且在相交点引擎计算光线与包围体或图元之间的相交点之后,相交点引擎将结果返回到处理器核心。
然而,如本文参考图3所理解的,大部分处理由着色器程序处置,该着色器程序必须执行栈管理、跟踪光线状态、跟踪中间结果等。如本文中进一步理解,实际上,由于大量的逻辑和计算由着色器程序直接处置,因此性能可低于所需性能。正是在这种情况下提供了图4以及下列等等。
图4示出了可在渲染装置404中实现的共同半导体管芯402上的GPU 400,该渲染装置可以为(但不限于)计算机模拟或游戏控制台、向最终用户流式传输游戏的计算机服务器、与电影中的计算机增强图形相关联的装置,等等。GPU 400包括用于执行一个或更多个着色器程序并且用于与一个或更多个(在所示出的示例中,多个)光线跟踪单元(RTU)408通信的一个或更多个(在所示出的示例中,多个)处理器核心406。RTU由具有用于执行本文所公开的任务的硬件电路的硬件来实现。RTU 408可以使用其自身的硬件实现的遍历逻辑来遍历加速结构。RTU 408可以包括:一个或多个相交点引擎电路410,该一个或多个相交点引擎电路可以计算光线与包围体或图元(诸如三角形)的相交点;遍历逻辑电路412,该遍历逻辑电路用于遍历加速结构;以及栈管理电路414,该栈管理电路用于维护在加速结构的遍历中使用的栈。RTU 408也可以包括其他子单元。
图4A示出了高级逻辑,并且图4B示出了可以由RTU 410中的硬件电路实现的更大粒度的逻辑。从框414处开始,在处理器核心上执行的着色器将加速结构的根节点和光线信息传递到RTU 410。使用该信息,在框416处,RTU使用其遍历逻辑电路412和栈管理电路414遍历加速结构,从而标识光线与包围体和图元的相交点。在框418处,将一个或多个相交点传送到着色器。在框420处,着色器标识任何相交点的命中,并且在框422处使用由此获得的整体信息对像素进行着色以用于渲染。
在一些实施方案中,RTU可以包括用于执行图4B所示的加速结构的栈管理和遍历的电路。如果在状态424处确定当前节点是根节点或内部节点,则RTU移动至框426以检查光线和包含在当前节点中的每个包围体的相交点。如果在状态428处确定存在多个相交点,则在框430处对所述多个相交点进行排序,使得最早的(即,最接近光线原点的)相交点为第一相交点,并且其余的相交点是按照与光线原点的距离的次序的。基本上,相交点(从光线的原点开始)从最短到最长排序。如果存在一个以上的相交点,则在框432处将对应于第二相交点和后续相交点的子节点推送到栈上。根据框432或根据状态428,如果测试为否,则电路移动至框434,以继续处理对应于第一相交点的子节点,或者如果没有相交点,则继续处理从栈顶部弹出的节点。如果因为栈为空而没有要弹出的节点,则加速结构遍历完成。如果在状态424处确定当前节点为叶,则在框436处,RTU检查光线和包含在叶中的一个或多个图元的相交点。
在其他实施方案中,遍历可以是无栈的。
返回图4的下半部分,示出了使用上述策略的示例性遍历。粗箭头示出了加速结构的遍历。粗实线框描绘了RTU已找到光线和节点的包围体之间的相交点的节点,并且粗虚线框描绘了RTU已找到光线和包含在叶中的图元之间的相交点的节点。在遍历中没有用粗虚线标记的叶是RTU未找到光线和包含在叶中的图元之间的相交点的叶。示例性遍历的具体步骤如下。
如438处所示,遍历开始于处理根节点A以标识光线与根节点包含的包围体的相交点。如440和442处所示,分别对应于A的子节点E和子节点J的包围体通过对根节点A的处理被标识为相交,并且因此将E和J推送到栈。另外,根据对根节点A的处理,对应于A的子节点B的包围体也被标识为相交,并且在444处,处理B以标识光线与B的包围体的相交点。这继而标识在446处被推送到栈的图元D,以及在448处被处理的图元C。在所示出的示例中,通过该处理确定光线和图元C之间不存在相交点。图元D从栈中弹出,并且在450处被处理以标识与光线的相交点;在该示例性情况下,标识光线与图元D之间的相交点,并且将图元传递到着色器程序以标识光线与图元之间是否存在“命中”(如下文及图4C中所描述)。
如452处所示,然后从栈中弹出包围体E,并且对其进行处理以标识相交点。如454处所示,将从处理包围体E标识的图元H和图元I推送到栈,并且在456处处理包围体F以标识相交点。接着在458处处理图元G,标识相交点,并且将图元G传递到着色器程序以进行命中测试。在460处下一个图元H从栈中弹出并且被处理,未找到相交点。接下来,在462处图元I从栈中弹出并且被处理(标识相交点并且将图元I传递到着色器程序以进行命中测试),然后在464处包围体J从栈中弹出并且被处理。这导致标识图元K,在466处对该图元进行处理;未标识出相交点。
在处理器核心上运行的着色器程序与RTU进行协作以执行光线跟踪。以上示例示出当图元部分地透明(例如,它们是表示树叶的三角形)时的处理。着色器程序的目的是标识与由加速结构表示的3D环境的不透明部分的最早(即,最接近光线的原点)的相交点(“命中”)。
在图4C的示例中示出了实现上述内容的着色器程序和RTU之间的通信。最初,着色器程序将根节点A和光线信息传递到RTU,该RTU遍历加速结构直到其到达光线和图元(在图4的示例中为图元D)之间的相交点(在该示例中,光线和图元C之间不存在相交点)。
在图4C中从框470处开始,RTU将图元D传递到着色器程序。在状态472处,着色器标识光线是否命中图元D的不透明部分,这意味着该着色器测试图元D以确定光线是穿过图元的透明部分还是命中图元的实体部分。在该示例中,光线命中图元的实体部分。着色器程序将图元D记录为到目前为止遇到的最早的相交点,并且在框474处将相交点的结果(“命中”)传递到RTU。
移动至框476,RTU缩短光线,因为没有点测试超过光线与图元D的相交点的位置。框478指示RTU继续遍历加速结构,到达图元G,并且确定光线与其相交。RTU将G传递到着色器程序以进行命中测试。
着色器程序执行与图4和图4C一致的命中测试,从而确定光线穿过图元G的透明部分并且因此不存在命中。在一些实施方案中,着色器程序将G未命中的信息传递到RTU。在其他实施方案中,由于未命中,因此着色器程序不将图元G未命中的信息传递到RTU。
如关于图4所讨论的,RTU继续遍历并且到达图元H。如果光线没有因图元D上的“命中”而缩短,则会检测到相交点,但是当光线已经被缩短时,在光线和图元H之间不存在相交点。RTU继续遍历并且到达图元I,在此检测光线和图元之间的相交点。它将图元I传递到执行命中测试的着色器程序。在该示例中,着色器程序确定存在命中,并且图元I的命中早于图元D的命中(即,更接近光线的原点);因此,着色器程序将遇到的最早的相交点更新为图元I。着色器程序还通知RTU在图元I上存在命中。再一次,RTU基于在图元I上的命中缩短光线,并且继续进行对加速结构的遍历,到达图元K。光线和图元K之间不存在相交点,因此RTU试图从栈中弹出下一个待处理的节点,但是栈为空。因此,RTU终止处理(其已到达加速结构遍历的结尾)并且通知着色器程序其已完成。着色器程序现在获知最早的命中在图元I上,并且其相应地继续进行处理。
处理器核心和RTU之间的这种通信的每个步骤可以在图4的上半部分中看到。处理器核心将根节点A传递给RTU;RTU将图元D传递给着色器程序进行命中测试,并且着色器程序报告命中;RTU将图元G传递给着色器程序进行命中测试,并且着色器程序报告未命中;RTU将图元I传递给着色器程序进行命中测试,并且着色器程序报告命中;RTU通知着色器程序加速结构遍历完成。
上述处理策略可导致光线跟踪速度的显著提升,因为着色器程序仅执行命中测试。它不执行加速结构遍历或管理对应的栈。
在上文中,诸如“传递节点A”、“传递图元G”等短语描述了用于通信的任何策略,包括但不限于传递指向节点或图元的指针,或传递节点或图元的ID。在上文中,诸如“RTU通知着色器程序”或“着色器程序通知RTU”等短语同样指用于通信的任何策略,包括但不限于诸如设置寄存器和使门铃响铃等“推送”策略,或中断驱动通信,以及诸如读取或轮询其他单元的状态等“拉取”策略。
现在转向图5和图5A,示出了RTU相对于着色器的异步操作,以及在处理器核心上运行的着色器程序发起着色器程序和RTU之间的通信的所有方面的策略。参见图5的上半部分,GPU 500包括与着色器程序异步地操作的一个或多个处理器核心502和一个或多个RTU504。GPU 500可在配置和操作上与图4所示的GPU 400基本上相同,不同之处如下所述。
图5A在框506处示出着色器程序向RTU发送根节点A和光线信息以发起处理。在框508处,RTU与着色器操作异步地开始遍历加速结构,其中随着RTU继续遍历,在框510处,着色器周期性地读取RTU的状态,并且在框512处,RTU报告状态。在框514处,着色器将命中标识传递给RTU以使RTU能够缩短其光线。
以上操作反映在图5中,其中指向左的箭头是着色器程序对信息的请求,并且指向右的箭头是从着色器程序到RTU的信息传送。更具体地,如516处所示,着色器程序向RTU发送根节点A,并且从RTU读取状态,并且在518处接收状态“WIP”,这意味着RTU尚未找到任何相交点。着色器程序再次读取状态,并且在520处接收状态“D”,这意味着RTU已经找到与图元D的相交点。
着色器程序执行命中测试,发现图元D被光线命中,并且在522处通知RTU该命中,使得RTU可以缩短光线。读取/报告过程随着RTU与着色器发出读取异步地遍历加速结构而继续。
在图5的下半部分是另一个实施方案的示例,其中RTU按距离对相交点进行排序。这可以导致光线跟踪速度的提升。在该示例中,如前所述,在光线和图元之间有三个相交点。距光线原点最近的相交点是“I”。它是如524处所示的命中。下一个距光线原点最近的相交点是“G”。这是未命中。距光线原点最远的相交点是“D”。这是如前所述的命中。
但是现在参见图5的下半部分,第一步骤与图5的顶部中的图相同。着色器程序将根节点A和光线信息发送至RTU以发起处理,然后着色器程序从RTU读取状态并且在526处接收状态“WIP”,这意味着RTU尚未找到任何相交点。着色器程序再次读取状态,并且在528处接收状态“D”,这意味着RTU已经找到与图元D的相交点。着色器程序执行命中测试,发现图元D被光线命中,并且在530处向RTU通知该命中,使得RTU可以缩短光线。
当着色器程序正在执行命中测试时,RTU遍历确定存在与图元G和图元I的相交点,并且图元I相比于图元G更接近光线原点(即,RTU按照距光线原点的距离来对相交点进行排序)。当着色器程序接下来读取状态时,在532处通知着色器程序应该对图元I(而非G)执行命中测试,因为图元I是已知的与光线原点最接近的相交点。如534所示,着色器程序执行命中测试,发现图元I被光线命中,并且向RTU通知该命中。当着色器程序执行命中测试时,RTU完成加速结构的遍历,而未发现任何更多的相交点。因为图元G的相交点相比于图元I距光线原点更远,因此图元G被丢弃。当着色器程序下一次读取状态时,在536处通知加速结构的遍历完成,并且没有更多的图元需要命中测试。当执行具有半透明度的环境的光线跟踪时,相交点的此类排序也是有价值的;在这种情况下,对相交点进行排序是有益的,使得最先向着色器程序通知距光线原点最远的相交点。
图6通过示出由RTU执行的加速遍历图600和GPU(诸如图4或图5中或本文的其他部分中所描述的GPU中的任一者)的一个或多个处理器核心606与一个或多个RTU 608之间的通信图602、604来示出不需要命中测试时的协作处理的示例。如本文中所理解的,如果不需要命中测试,诸如当加速结构中的图元不透明时,那么由着色器程序执行的处理进一步减少,从而导致性能提升。可以通过标志或其他方式将图元指示为对RTU不透明。
在图6中,图元是不透明的,RTU可以跟踪光线和图元之间的最早的相交点,而不需要着色器程序来执行命中测试。加速度遍历图600基本上与图4所示的示例相同,但是在图6中,与光线相交的叶以粗实线边界示出,而不是以粗虚线边界示出。因此,如图4所示,存在与图元的三个相交点,从最早(最接近光线原点)到最远的顺序为I-G-D。
图6中间的通信图602示出当定位最早的命中时着色器程序与RTU之间的协作光线跟踪。由于RTU可以跟踪最早的相交点,因此报告工作进行中(“WIP”)的状态,直到完成加速结构的遍历,此时它报告如612处所示的“完成”状态,并且提供I作为与光线相交的最早的图元。
图6底部的通信图604示出了当着色器程序想知道是否存在相交点但不需要知道相交点细节时的着色器程序和RTU之间的协作光线跟踪;这对于阴影和周围遮挡的光线跟踪是典型的。着色器处理一旦定位到与光线相交的图元就结束,在这种情况下图元为D,如614处所示。
图7示出了类似于图2中所示的加速结构的具有顶层加速结构(TLAS)702和一组底层加速结构(BLAS)704的加速结构700,不同之处如下所述。图7还示出了GPU的一个或多个处理器核心706和一个或多个RTU 708之间的通信图,以示出当加速结构为多级层次结构时着色器程序与RTU之间的协作处理的示例。
TLAS 702具有叶(诸如X 710),每个叶给出到相应的BLAS(诸如BLAS X、所述组BLAS 704中的一个)的链路。如前所述,TLAS 702使用世界空间坐标。所述组BLAS 704中的每个BLAS具有包含图元的叶(诸如D 712),并且还如先前所讨论的,所述组BLAS 704中的每个BLAS具有其自身的坐标空间。在该示例中,着色器程序的目标是确定最早的相交点,并且加速结构中的所有图元都不透明。
由RTU 708实现的加速结构700的期望遍历如下。TLAS 720的根节点A的处理标识光线与表示子节点B和子节点E的包围体的相交点;TLAS 702中的E被推送到在这种情况下由RTU维护的栈,并且包含在TLAS 702的B内的包围体被处理为标识光线相交点。找到B内对应于叶X的包围体与光线的相交点;这继而导致处理叶X,该叶表示所述组BLAS 704的BLASX。X的坐标空间不同于世界空间坐标(其图元具有其自身的坐标空间),因此必须变换光线属性,诸如光线原点。
处理BLAS X的根节点以标识光线相交点,从而导致对C的处理;当处理C时,标识与叶节点D 712的包围体的相交点。在所示出的示例中,叶节点D 712的处理标识与图元D的相交点,并且回想因为假定图7中的图元是不透明的,所以相交点被自动视为命中。因为D被视为命中,因此RTU将光线缩短为从光线原点到D的长度。
接下来,TLAS 702中的E从栈中弹出。将不再使用BLAS部分X的坐标空间,因此必须恢复世界空间的光线属性。在该过程中必须保留光线长度。处理E以标识光线相交点,并且针对对应于叶Z的包围体标识相交点;这继而导致处理叶Z,该叶表示所述组BLAS 704的BLAS Z。再一次,因为用于Z的坐标空间不同于世界空间坐标,因此光线属性(诸如光线原点)必须被变换到Z的坐标空间。
对BLAS Z的根节点进行处理以标识光线相交点,从而导致对F的处理,然后是对叶G的处理,在所示出的示例中该叶被标识为相交点(并且因此,是所示出的“不透明的”示例中的命中)。光线被缩短到原点和图元G之间的长度。
在一个实施方案中,RTU检测从TLAS 702到所述组BLAS 704内的BLAS以及从所述组BLAS 704内的BLAS到TLAS 702的转变,并且着色器程序执行光线变换更新并且将结果传递到RTU。在该示例中,通信步骤如图7所示,在714处开始,其中着色器程序将根节点A和光线信息发送至RTU以发起处理。
如716处所示,着色器程序从RTU读取状态并且接收工作进行中(“WIP”)的状态,这意味着RTU尚未找到任何相交点。着色器程序再次读取状态,并且在718处接收状态“进入BLAS X”,这指示RTU已经在其对加速结构700的遍历中检测到向BLAS X的转变。着色器程序将光线属性(诸如原点)变换到BLAS X坐标空间,并且将光线属性和BLAS根节点X发送(720)至RTU。
RTU遍历BLAS X并且发现光线和图元D之间的相交点并且相应地缩短光线。回想该示例假设图元是不透明的,因此不需要着色器单元执行命中测试。着色器程序读取状态,并且在722处接收状态“退出BLAS”,这指示BLAS的RTU处理完成。如724处所示,着色器程序将世界空间光线属性发送至RTU。
着色器程序再次读取状态,并且如726处所示,接收状态“进入BLAS Z”。着色器程序将光线属性(诸如原点)变换到BLAS Z坐标空间并且在728处将光线属性和BLAS根节点Z发送至RTU。RTU遍历BLAS Z,并且发现光线和图元G之间的相交点,并且相应地缩短光线。当着色器程序接下来读取状态时,在730处通知加速结构的遍历完成,并且最早的相交点是与图元G的相交点。
在另一个实施方案中,RTU可以处置所检测到的从TLAS到BLAS和从BLAS到TLAS的转变,根据需要更新光线属性。在这种情况下,在图7的示例中,所有处理均由RTU执行,因此在着色器程序将根节点A发送至RTU之后,着色器程序将读取状态“WIP”,直到完成加速结构的RTU遍历为止,此时着色器程序将读取状态“完成”并且最早的相交点是与图元“G”的相交点。
图7A示出了根据可以完全由RTU或由着色器和RTU之间的协作执行的逻辑的上述坐标转变逻辑。该示例示出了具有两个层级的加速结构。从框732开始,光线-包围体相交点的确定最初在世界空间中执行。当RTU遍历加速结构时,如果在状态734处确定RTU已经遍历到另一坐标空间中的BLAS,则逻辑移动至框736,以将光线转换到专用于BLAS的坐标空间,并且在框738处处理光线以进行相交点标识。类似地,当RTU继续遍历加速结构时,如果在状态740处确定RTU已经遍历到TLAS(在世界空间中对其进行了描述),则逻辑移动至框742,以将光线转换到世界空间(或者当光线属性在世界空间中时恢复光线属性),并且在框744处处理光线以进行相交点标识。在上述变型中,TLAS可以不在世界坐标空间中,而是在其自身的特定坐标空间中。在其他变型中,该加速结构具有多个层级;处理类似于图7A进行,当遍历到达加速结构的更低层级时将光线转换到新的坐标空间,并且当遍历到达加速结构的更高层级时将其恢复或对其进行转换。
现在转向图8,示出了由在与GPU的一个或多个RTU 802通信的一个或多个处理器核心800上执行的着色器确定的相交点的示例。在先前的示例中,RTU确定被测光线是否与图元相交,例如图元为三角形,并且RTU的相交点引擎可以确定光线与三角形之间的相交点。相比之下,在图8中,与加速结构806中的叶N 804相关联的几何形状具有使得RTU的相交点引擎无法计算相交点的几何形状,例如球体。
因此,在一些实施方案中,着色器程序和RTU协作以如下所述执行光线跟踪。如本文的其他部分中所述,RTU遍历加速结构806。RTU针对节点M 808中的包围体测试光线,并且确定光线与对应于叶N 804的包围体相交。当着色器程序读取状态时,其在810处接收N的包围体已相交的状态。着色器程序执行光线和包含在叶N中的球体之间的命中测试,并且确定已经存在命中。在812处,它通知RTU已经存在命中,并且还向RTU通知命中的位置,使得光线可以被RTU相应地缩短。叶N中的图元是球体的事实可以由RTU和/或着色器基于与作为球体(或超出RTU处理能力的其他几何形状)的图元相关联的标志或其他指示符来标识。
将了解,虽然已经参考一些示例性实施方案描述了本发明原理,但这些实施方案无意是限制性的,并且可使用各种替代布置来实现本文所要求保护的主题。
Claims (21)
1.一种用于图形处理的方法,其包括:
在图形处理单元(GPU)上执行着色器程序,所述着色器程序执行由加速结构表示的3D环境的光线跟踪;
与所述着色器程序异步地,使用所述GPU内在所述着色器程序的请求下遍历所述加速结构的硬件实现的光线跟踪单元(RTU);以及
在所述着色器程序处使用加速结构遍历的结果。
2.如权利要求1所述的方法,其中使用所述结果包括对计算机生成的图形中的像素进行着色。
3.如权利要求1所述的方法,其中由所述RTU进行的所述加速结构遍历的所述结果包括对光线和包含在所述加速结构内的包围体之间的相交点的检测,以及/或者对光线和包含在所述加速结构内的图元之间的相交点的检测。
4.如权利要求1所述的方法,其中RTU处理包括维护在所述加速结构遍历中使用的栈。
5.如权利要求1所述的方法,其中由所述RTU进行的所述加速结构遍历的所述结果包括由所述RTU按照由所述RTU检测到的相交点与光线原点的距离对所述相交点进行的排序,使得:
所述RTU在其遍历所述加速结构时检测到光线和图元之间的第一相交点;以及
所述RTU在其遍历所述加速结构时检测到所述光线和图元之间的第二相交点;以及
在将结果从所述RTU传送到所述着色器程序时,在第一相交点结果之前传送第二相交点结果。
6.如权利要求3所述的方法,其中由所述RTU进行的所述加速结构遍历的所述结果包括对光线和包含在所述加速结构内的图元之间的最早的相交点的检测。
7.一种用于图形处理的方法,其包括:
在图形处理单元(GPU)上执行着色器程序,所述着色器程序执行由加速结构表示的3D环境的光线跟踪;
使用所述GPU内在所述着色器程序的请求下遍历所述加速结构的硬件实现的光线跟踪单元(RTU);以及
在所述着色器程序处使用加速结构遍历的结果,其中所述加速结构是具有多个层级的层次结构,并且其中由所述RTU进行的加速结构遍历包括对所述加速结构的所述多个层级之间的坐标转换的处置。
8.如权利要求7所述的方法,其中使用所述结果包括对计算机生成的图形中的像素进行着色。
9.如权利要求7所述的方法,其中由所述RTU进行的所述加速结构遍历的所述结果包括对在所述加速结构的所述多个层级内从较高层级到较低层级的转变的检测。
10.如权利要求7所述的方法,其中由所述RTU进行的所述加速结构遍历的所述结果包括对在所述加速结构的所述多个层级内从较低层级到较高层级的转变的检测。
11.一种图形处理单元(GPU),其包括:
至少一个处理器核心,所述至少一个处理器核心适于执行软件实现的着色器;以及
至少一个硬件实现的光线跟踪单元(RTU),所述至少一个硬件实现的RTU与所述处理器核心分离并且适于相对于着色器操作异步地遍历加速结构,以标识光线与所述加速结构中所表示的对象的相交点以生成结果,并且将所述结果返回给所述着色器,以供所述着色器标识与所述相交点相关联的命中。
12.如权利要求11所述的GPU,其中所述RTU包括用于标识所述相交点的硬件电路,并且所述着色器适于使用软件来标识所述命中。
13.如权利要求11所述的GPU,其中所述着色器配置有能够由所述处理器核心执行以对3D计算机图形中的像素进行着色的指令。
14.如权利要求11所述的GPU,其中所述RTU包括用于实现遍历逻辑以遍历所述加速结构的硬件电路。
15.如权利要求11所述的GPU,其中所述RTU包括用于实现对在所述加速结构的遍历中使用的栈的栈管理的硬件电路。
16.一种图形处理单元(GPU),其包括:
至少一个处理器核心,所述至少一个处理器核心适于执行软件实现的着色器;以及
至少一个硬件实现的光线跟踪单元(RTU),所述至少一个硬件实现的RTU与所述处理器核心分离并且适于遍历加速结构以标识光线与所述加速结构中所表示的对象的相交点以生成结果,并且将所述结果返回给所述着色器以供所述着色器标识与所述相交点相关联的命中,其中所述RTU包括用于实现遍历逻辑以遍历所述加速结构的硬件电路,所述遍历包括修改至少一条光线以考虑遍历期间坐标系的变化。
17.如权利要求16所述的GPU,其中所述RTU包括用于标识所述相交点的硬件电路,并且所述着色器适于使用软件来标识所述命中。
18.如权利要求16所述的GPU,其中所述着色器配置有能够由所述处理器核心执行以对3D计算机图形中的像素进行着色的指令。
19.如权利要求16所述的GPU,其中所述RTU包括用于实现对在所述加速结构的遍历中使用的栈的栈管理的硬件电路。
20.如权利要求16所述的GPU,其中所述RTU包括用于将至少第一光线从世界空间变换到对应于多级加速结构的较低层级的坐标空间的硬件电路。
21.如权利要求16所述的GPU,其中所述RTU包括用于将至少第一光线从对应于多级加速结构的较低层级的坐标空间变换到世界空间的硬件电路。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/998,212 | 2020-08-20 | ||
US16/998,212 US11494969B2 (en) | 2020-08-20 | 2020-08-20 | System and method for accelerated ray tracing with asynchronous operation and ray transformation |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114170365A true CN114170365A (zh) | 2022-03-11 |
Family
ID=77338606
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110959031.XA Pending CN114170365A (zh) | 2020-08-20 | 2021-08-20 | 利用异步操作和光线变换的加速光线跟踪的系统和方法 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11494969B2 (zh) |
EP (1) | EP3958216A3 (zh) |
JP (2) | JP7245880B2 (zh) |
KR (1) | KR20230078646A (zh) |
CN (1) | CN114170365A (zh) |
WO (1) | WO2022040481A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11017581B1 (en) * | 2020-01-04 | 2021-05-25 | Adshir Ltd. | Method for constructing and traversing accelerating structures |
CN112230931B (zh) * | 2020-10-22 | 2021-11-02 | 上海壁仞智能科技有限公司 | 适用于图形处理器的二次卸载的编译方法、装置和介质 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10239672B4 (de) | 2002-08-26 | 2005-08-11 | Universität des Saarlandes | Verfahren und Vorrichtung zur Erzeugung einer zweidimensionalen Abbildung einer dreidimensionalen Struktur |
US8189001B2 (en) | 2010-01-04 | 2012-05-29 | Adshir Ltd. | Method and apparatus for parallel ray-tracing employing modular space division |
US10235338B2 (en) | 2014-09-04 | 2019-03-19 | Nvidia Corporation | Short stack traversal of tree data structures |
JP7100427B2 (ja) | 2016-03-21 | 2022-07-13 | イマジネイション テクノロジーズ リミテッド | 階層融合 |
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 |
US10740952B2 (en) | 2018-08-10 | 2020-08-11 | Nvidia Corporation | Method for handling of out-of-order opaque and alpha ray/primitive intersections |
US10867429B2 (en) | 2018-08-10 | 2020-12-15 | Nvidia Corporation | Query-specific behavioral modification of tree traversal |
US11138009B2 (en) * | 2018-08-10 | 2021-10-05 | Nvidia Corporation | Robust, efficient multiprocessor-coprocessor interface |
US10885698B2 (en) | 2018-08-10 | 2021-01-05 | Nvidia Corporation | Method for programmable timeouts of tree traversal mechanisms in hardware |
US10929948B2 (en) | 2018-12-28 | 2021-02-23 | Intel Corporation | Page cache system and method for multi-agent environments |
US10699370B1 (en) | 2018-12-28 | 2020-06-30 | Intel Corporation | Apparatus and method for a compressed stack representation for hierarchical acceleration structures of arbitrary widths |
KR102151443B1 (ko) | 2019-04-11 | 2020-09-03 | 주식회사 실리콘아츠 | 하이브리드 gpu 아키텍처 기반의 그래픽 처리 장치 |
US11238640B2 (en) | 2020-06-26 | 2022-02-01 | Advanced Micro Devices, Inc. | Early culling for ray tracing |
US11367242B2 (en) | 2020-07-30 | 2022-06-21 | Apple Inc. | Ray intersect circuitry with parallel ray testing |
-
2020
- 2020-08-20 US US16/998,212 patent/US11494969B2/en active Active
-
2021
- 2021-08-13 EP EP21191373.6A patent/EP3958216A3/en active Pending
- 2021-08-19 KR KR1020237008978A patent/KR20230078646A/ko unknown
- 2021-08-19 JP JP2021134276A patent/JP7245880B2/ja active Active
- 2021-08-19 WO PCT/US2021/046788 patent/WO2022040481A1/en active Application Filing
- 2021-08-20 CN CN202110959031.XA patent/CN114170365A/zh active Pending
-
2022
- 2022-11-02 US US18/052,147 patent/US12079920B2/en active Active
-
2023
- 2023-03-13 JP JP2023038331A patent/JP2023072019A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2022036060A (ja) | 2022-03-04 |
JP2023072019A (ja) | 2023-05-23 |
US11494969B2 (en) | 2022-11-08 |
WO2022040481A1 (en) | 2022-02-24 |
US20220058855A1 (en) | 2022-02-24 |
US12079920B2 (en) | 2024-09-03 |
EP3958216A3 (en) | 2022-07-06 |
KR20230078646A (ko) | 2023-06-02 |
JP7245880B2 (ja) | 2023-03-24 |
EP3958216A2 (en) | 2022-02-23 |
US20240203031A1 (en) | 2024-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7535177B2 (ja) | 加速レイトレーシングのシステムおよび方法 | |
US12079920B2 (en) | System and method for accelerated ray tracing with asynchronous operation and ray transformation | |
JP4766906B2 (ja) | 拡張グラフィックスパイプラインを提供するシステムおよび方法 | |
US8243061B2 (en) | Image processing apparatus and method of controlling operation of same | |
KR101640904B1 (ko) | 온라인 게이밍 경험을 제공하기 위한 컴퓨터 기반 방법, 기계 판독가능 비일시적 매체 및 서버 시스템 | |
CN110827388A (zh) | 硬件中树遍历机制的前进和可编程超时的方法 | |
CN110827387A (zh) | 没有着色器干预下对交点进行连续层次包围盒遍历的方法 | |
US20100312823A1 (en) | Dedicated processor core request | |
US11315303B2 (en) | Graphics processing | |
EP2289000B1 (en) | System, method, and computer program product for a tessellation engine using a geometry shader | |
WO2022252547A1 (zh) | 渲染方法、设备以及系统 | |
EP4231242A1 (en) | Graphics rendering method and related device thereof | |
KR101670958B1 (ko) | 이기종 멀티코어 환경에서의 데이터 처리 방법 및 장치 | |
CN112423111A (zh) | 图形引擎和适用于播放器的图形处理方法 | |
CN115761123B (zh) | 三维模型处理方法、装置、电子设备以及存储介质 | |
CN118648028A (zh) | 紧密世界空间包围区域的生成 | |
US20230410407A1 (en) | Accelerated bounding volume hierarchy (bvh) traversal for shadow rays | |
EP4258218A1 (en) | Rendering method, device, and system | |
CN118397226A (zh) | 一种三维模型确定方法及电子设备 | |
CN115937284A (zh) | 一种图像生成方法、设备以及存储介质和程序产品 | |
CN116999845A (zh) | 一种异常检测的方法以及相关装置 | |
Hong et al. | Mathematical Approaches for Collision Detection in Fundamental Game Objects | |
Yong et al. | Real-time crowd rendering and interactions on gpu |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |