CN109087384B - 光线跟踪系统和方法以及光线压缩方法和模块 - Google Patents

光线跟踪系统和方法以及光线压缩方法和模块 Download PDF

Info

Publication number
CN109087384B
CN109087384B CN201810608534.0A CN201810608534A CN109087384B CN 109087384 B CN109087384 B CN 109087384B CN 201810608534 A CN201810608534 A CN 201810608534A CN 109087384 B CN109087384 B CN 109087384B
Authority
CN
China
Prior art keywords
ray
data
intersection
scene
vector
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
CN201810608534.0A
Other languages
English (en)
Other versions
CN109087384A (zh
Inventor
L·彼得森
S·芬尼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Imagination Technologies Ltd
Original Assignee
Imagination Technologies Ltd
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 Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Priority to CN202311270845.8A priority Critical patent/CN117237513A/zh
Publication of CN109087384A publication Critical patent/CN109087384A/zh
Application granted granted Critical
Publication of CN109087384B publication Critical patent/CN109087384B/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
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/30Clipping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/55Radiosity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/506Illumination models

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Multimedia (AREA)
  • Geometry (AREA)
  • Image Generation (AREA)

Abstract

本申请涉及光线跟踪系统和方法以及光线压缩方法和模块。光线跟踪系统处理通过3D场景的光线,以确定光线与场景中的几何形状之间的相交,用于绘制场景的图像。用于光线的光线方向数据可以被压缩为例如八面体向量格式。用于光线的、经压缩的光线方向数据可以由指示八面体的表面上的点的两个参数(u,v)来表示。为了对光线执行相交测试,用于光线的光线方向数据被解包,以将向量的x、y和z分量确定为八面体的表面上的点。经解包的光线方向向量是非标准化的光线方向向量。相交测试在非标准化的光线方向向量上执行,而不是将光线方向向量标准化。这避免了在将光线方向向量标准化中包含的处理步骤。

Description

光线跟踪系统和方法以及光线压缩方法和模块
技术领域
本申请涉及光线跟踪系统中经压缩的光线方向数据,具体地,涉及光线跟踪系统和方法以及光线压缩方法和模块。
背景技术
光线跟踪系统可以被配置为对来自3D场景描述的图像进行绘制。图像可以是真实感的,或者实现其他目标。例如,动画电影可以使用光线跟踪系统产生。光线跟踪技术模拟光与对象的自然相互作用,并且复杂的绘制特征可以自然地从跟踪3D场景的光线产生。因为像素通常独立于彼此被处理,光线跟踪还可以逐像素级被相对容易地并行化。光线跟踪允许真实感图像被绘制,但是常常要求高水平的处理能力和大的工作存储器,这使得光线跟踪可能难以实现实时绘制图像(例如,用于与游戏应用),特别地在对硅面积、成本和功耗具有严格约束的设备上,诸如在移动设备上(例如,智能电话、平板电脑、膝上型电脑等)。
光线跟踪系统存储将要被处理的光线的光线数据。通过执行光线和要被绘制的3D场景的几何形状的相交测试,光线可以被处理。几何形状通常包括表示场景中对象表面的基元。基元常常是由三个顶点处的数据限定的三角形,但是基元可以是其他形状,诸如其他二维多边形、样条曲线、四边形小片或者程序限定的表面。着色器程序可以响应于光线与基元之间的相交而执行。着色器程序通常包括要被执行的一个或多个着色器指令。光线跟踪系统可以存储光线数据,该光线数据描述在场景中要被处理的光线。用于光线的光线数据可以包括描述光线的不同特点的不同的分量。光线可以被表示为向量。通常,用于光线的光线数据包括:光线原点,其限定要被绘制的3D场景中的光线的原点;和光线方向,其限定通过3D场景的光线的方向。3D场景中的光线原点和光线方向可以各自利用三个分量(诸如x、y和z分量)来描述。例如,这六个分量(即,用于光线原点和光线方向的x、y和z分量)中的每个分量可以利用32浮点数表示,但是在其他示例中,不同的格式和位数可以被用于这些分量。方向向量被标准化(即,缩放使得分量的平方的和等于一,即,x2+y2+z2=1),使得方向向量仅表示方向,其中标准化方向向量的幅度等于一。
光线跟踪系统可以受益于大量的光线的并行处理。因此,大存储器可能被需要来存储光线数据,这在光线跟踪系统的硅面积使用和成本方面可能是不利的。而且,将光线数据写入存储器中,并且从存储器读取光线数据消耗功率和时间,因此大量的光线数据可能导致光线跟踪系统的增加的功耗和延时。
发明内容
提供本发明内容是为了以简化的形式介绍将在以下具体实施方式中进一步描述的一些概念。本发明内容部分不旨在标识所要求保护的主题的关键特征或基本特征,也不旨在用于限制所要求保护的主题的范围。
八面体法向量已经被用于以压缩格式表示表面法向量。通过将表面法线方向投影到八面体的表面上、变换八面体以形成正方形并且然后使用两个参数(u,v)描述正方形内的位置来限定表面法线,八面体法向量允许表面法线被编码。本公开中的示例将八面体法向量格式的使用扩展为,除了与表面法线一起使用以外,还被用于表示光线跟踪系统中光线的光线方向。
而且,在本文所描述的示例中,当光线方向数据已经根据八面体向量格式压缩时,被光线跟踪系统用于相交测试的、经压缩的光线方向数据的解压缩被简化,使得光线方向数据不被标准化。通过避免标准化光线方向数据,在光线跟踪系统中执行更少的处理步骤,从而减小光线跟踪系统的延时和功耗。由于光线跟踪系统处理大量的光线(针对所绘制的每个图像,通常百万或亿万的光线),在光线的处理中包含的延时和/或功耗中的任何降低对于光线跟踪系统具有显著益处。当光线跟踪系统被用于实时绘制图像,例如,在具有有限处理资源、大小和成本的设备上(诸如在移动设备上,例如智能电话或者平板电脑),这特别有用。
特别地,提供了一种用于在绘制场景的图像中使用的光线跟踪系统,该光线跟踪系统包括:
存储器,被配置为将用于要被处理的光线的光线数据存储在光线跟踪系统中,其中用于光线的光线数据包括以压缩格式存储的光线方向数据;以及
相交测试逻辑,被配置为:
通过解包用于光线的经压缩的光线方向数据来构建用于光线的非标准化的光线方向向量;以及
使用用于光线的非标准化的光线方向向量来对场景中的光线执行相交测试;
其中光线跟踪系统被配置为使用相交测试的结果来绘制场景的图像。
压缩格式可以是例如八面体向量格式。在其他示例中,压缩格式可以是块浮点格式(即,用于所有3个分量的一个共享指数)、整数格式(即,没有指数,但是没有减少到2个分量,因此所有3个(x,y,z)分量仍然被需要)或束光线格式,其中多条光线共享其光线数据的一些高阶比特。
还提供了一种用于在绘制场景的图像中使用的光线跟踪方法,光线跟踪方法包括:
从存储器取回用于要被处理的光线的光线数据,其中用于光线的光线数据包括以压缩格式存储的光线方向数据(例如,其中经压缩的格式可以是八面体向量格式);
通过解包用于光线的经压缩的光线方向数据来构建用于光线的非标准化的光线方向向量;
使用用于光线的非标准化的光线方向向量来对场景中的光线执行相交测试;以及
使用相交测试的结果以用于绘制场景的图像。
相交测试单元可以利用用于光线的裁剪距离,其中裁剪距离已经基于非标准化的光线方向向量的幅度被缩放一定量。例如,光线的裁剪距离(即,在光线的方向上的裁剪距离)可以通过将裁剪距离变换到Manhattan空间中来缩放。
相交测试逻辑可以被配置为:通过确定表示在场景的三维空间中的光线的方向的三个分量,解包用于光线的经压缩的光线方向数据。
相交测试逻辑可以包括基元相交测试器,基元相交测试器被配置为:通过标识光线与场景中的基元的相交来对光线执行相交测试。相交测试逻辑可以包括框相交测试器,框相交测试器被配置为:通过标识光线与场景中的一个或多个基元的边界框的相交来对光线执行相交测试。相交测试逻辑可以包括球体相交测试器,球体相交测试器被配置为:通过标识光线与表示场景中的几何形状的一部分的位置的球体的相交来对光线执行相交测试。
相交测试逻辑还可以包括三角形相交测试器,三角形相交测试器能够标识光线与场景中的一个或多个三角形之间的相交。相交测试逻辑还可以包括用于测试场景中的附加几何基元的可编程或者专用逻辑。相交测试逻辑可以包括任何其他适合的类型的相交测试器。
光线数据被存储在其中的存储器可以是本地片上存储器,并且可以被认为是高速缓存。作为示例,用于光线的经压缩的光线方向数据使用52位来表示。在一些示例中,用于光线的核心光线数据被存储在本地存储器中,而用于光线的至少一些非核心光线数据被存储在分离的存储器(例如,系统存储器)中,其中经压缩的光线方向数据被包括在用于光线的核心光线数据中。
还提供了一种光线压缩方法,包括:
获得(例如,接收)在光线跟踪系统中要被处理的光线的光线方向数据,光线方向数据包括表示要被绘制的场景的三维空间中的光线的方向的三个分量;
根据使用两个参数来引用八面体上的位置以表示光线方向的八面体向量格式,压缩用于光线的光线方向数据;以及
将用于光线的经压缩的光线方向数据存储在存储器中,以用于在对光线执行相交测试中的后续使用。
类似地,可以提供一种用于在光线跟踪系统中使用的光线压缩模块(例如,被实现为将在一个或多个执行单元上被执行的软件模块(例如,作为着色器程序的一部分)),光线压缩模块被配置为:
获得在光线跟踪系统中要被处理的光线的光线方向数据,光线方向数据包括表示要被绘制的场景的三维空间中的光线的方向的三个分量;
根据使用两个参数来引用八面体上的位置以表示光线方向的八面体向量格式,压缩用于光线的光线方向数据;以及
使得用于光线的经压缩的光线方向数据被存储在存储器中,以用于在对光线执行相交测试中的后续使用。
可以提供一种用于在绘制场景的图像中使用的光线跟踪系统,光线跟踪系统包括:
存储器,被配置为将用于要被处理的光线的光线数据存储在光线跟踪系统中,其中用于光线的光线数据包括以压缩格式(例如,八面体向量格式)存储的光线方向数据;以及
相交测试逻辑,其被配置为:
部分地解压缩用于光线的、经压缩的光线方向数据;以及
使用用于光线的部分解压缩光线方向数据对场景中的光线执行相交测试;
其中光线跟踪系统被配置为使用用于绘制场景的图像的相交测试的结果。
还提供了一种用于在绘制场景的图像中使用的光线跟踪方法,光线跟踪方法包括:
从存储器取回用于要被处理的光线的光线数据,其中用于光线的光线数据包括以压缩格式存储的光线方向数据(例如,其中经压缩的格式可以是八面体向量格式);
部分地解压缩用于光线的、经压缩的光线方向数据;
使用用于光线的部分解压缩光线方向数据对场景中的光线执行相交测试;以及
使用用于绘制场景的图像的相交测试的结果。
在一些示例中,提供了一种在光线跟踪系统中处理数据的方法,该方法包括:
执行着色器程序,着色器程序输出用于相交测试的光线;
压缩用于光线的光线方向数据;
存储经压缩的光线方向数据;以及
在不完全地解压缩经压缩的光线方向数据的情况下,对光线执行相交测试,
其中光线跟踪系统被配置为使用用于绘制场景的图像的相交测试的结果。
可以提供一种用于在绘制场景的图像中使用的光线跟踪系统,光线跟踪系统包括:
一个或多个执行单元,被配置为执行着色器指令,着色器指令输出用于相交测试的光线;
光线压缩模块,被配置为压缩用于光线的光线方向数据;
光线数据存储(例如,光线存储器),被配置为存储经压缩的光线方向数据;以及
相交测试逻辑,被配置为在不完全解压缩经压缩的光线方向数据的情况下,对光线执行相交测试,
其中光线跟踪系统被配置为使用用于绘制场景的图像的相交测试的结果。
光线压缩模块可以被实现为软件模块(例如,被实现在一个或多个执行单元上)。备选地,光线压缩模块可以被实现为专用硬件模块(例如,以固定功能电路实现)。
用于光线的、经压缩的光线方向数据可以与用于光线的其他光线数据(诸如光线原点和裁剪距离(例如,其中裁剪距离可以或可以不被缩放))一起被存储在光线数据存储中。相交测试逻辑可以被配置为从光线数据存储接收包括经压缩的光线方向数据的光线数据。
在不完全地解压缩光线方向数据的情况下对光线执行相交测试可以包含:使用相交测试中的经压缩的光线方向数据,或者可以包含:将经压缩的光线方向数据部分地解压缩,并且然后使用相交测试中部分地解压缩的光线方向数据。存在一些压缩格式(例如,整数格式),其不丢弃光线方向的分量,并且因此经压缩的光线方向数据可以被用于在没有任何其间的解压缩的情况下执行相交测试。然而,其他压缩格式(例如,八面体向量格式)确实丢弃光线方向的分量,因此出于执行相交测试的目的,经压缩的光线方向数据通过重建丢弃的分量(但是不再需要重新标准化)而被部分地解压缩。
相交测试的结果可以由着色器程序使用。例如,光线方向数据可以被完全地解压缩,用于由着色器程序使用。
光线方向数据的压缩和完全解压缩可以由在一个或多个执行单元上执行的着色器程序执行。着色器程序包括要被执行的一个或多个着色器指令。
对于给定光线而言,相交测试比初始着色(其生成光线)或结果着色(其在相交测试后处理光线)被执行更多次。例如,对于一条光线,相比于着色,相交测试被几十到几百倍更频繁地执行。这是因为光线通常针对加速结构的多级处的许多节点被相交测试,并且针对许多基元被相交测试。因此,能够在不完全地解压缩光线方向数据的情况下对光线执行相交测试,将在执行相交测试中涉及的处理减少了许多倍。因此,通过在不完全地解压缩光线方向数据的情况下对光线执行相交测试实现了在处理中显著的整体降低。
还可以提供被配置为执行本文所描述的方法中的任何方法的光线跟踪系统。本文所描述的光线跟踪系统可以在集成电路上以硬件实施。可以提供一种在集成电路制造系统处制造光线跟踪系统的方法。可以提供集成电路限定数据集,当集成电路限定数据集在集成电路制造系统中被处理时,集成电路限定数据集将集成电路制造系统配置为制造如本文所描述的光线跟踪系统。可以提供非暂态计算机可读存储介质,在该介质上存储集成电路的计算机可读描述,当该计算机可读描述在集成电路制造系统中被处理时,该计算机可读描述使得集成电路制造系统制造如本文所描述的光线跟踪系统。
特别地,可以提供一种集成电路制造系统,包括:
非暂态计算机可读存储介质,在该介质上存储集成电路的计算机可读描述,其描述如本文所描述的光线跟踪系统;
布局处理系统,被配置为处理集成电路描述,以便生成实施光线跟踪系统的集成电路的电路布局描述;以及
集成电路生成系统,被配置为根据电路布局描述来制造光线跟踪系统。
可以提供计算机可读代码,被配置为代码运行时,代码使得本文所描述的方法中的任何方法被执行。计算机可读代码可以被存储在非暂态计算机可读存储介质上。
对于本领域技术人员显而易见的是,上述特征可以适当地组合,并且可以与本文描述的示例方面中的任一个组合。
附图说明
现在将参考附图详细描述示例,其中:
图1示出了光线跟踪系统;
图2示出了要从一个视点被绘制的场景;
图3表示笛卡尔坐标中的单位球体;
图4a表示八面体;
图4b表示八面体的中间变换状态,其中八面体的上半部分被向下投影到中心平面;
图4c表示经变换的八面体,其中八面体的下半部分的四分之一被向上变换到中心平面,并且向外折叠;
图4d将经变换的八面体示出为俯视的二维表示;
图5示出了用于压缩光线数据的方法的流程图;
图6示出了用于光线的光线数据的格式;
图7示出了用于在绘制场景的图像中使用的光线跟踪方法的流程图;
图8a示出了用于基元的边界框;
图8b示出了限制基元的球体;
图8c示出了共同地限制基元的多个球体;
图9示出了光线跟踪系统的一些部件;
图10是用于在光线跟踪系统中处理光线的方法的流程图;
图11示出了在其中实现光线跟踪系统的计算机系统;以及
图12示出了集成电路制造系统,用于生成实施光线跟踪系统的集成电路。
附图图示了各种示例。本领域技术人员将会理解,图中所图示的元素边界(例如,框、框组或其他形状)表示边界的一个示例。在一些示例中,可以将一个元素设计为多个元素,或者将多个元素设计为一个元素。在整个附图中,在适当的地方使用共同的附图标记来指示相似的特征。
具体实施方式
以示例的方式呈现以下描述,以使得本领域技术人员能够制造和使用本发明。本发明不限于本文描述的实施例,对于本领域技术人员来说,对所公开的实施例的各种修改将是显而易见的。
现在将仅通过示例的方式来描述实施例。
图1示出了光线跟踪系统100,其包括光线跟踪单元102和存储器104。光线跟踪单元102包括若干部件,用于处理在场景中的、用于绘制场景的图像的光线。例如,光线跟踪单元102包括相交测试逻辑106、一个或多个执行单元108、场景层次单元110、光线存储器112、几何高速缓存114和光线压缩模块116。在图1所示的示例中,存储器104被示出为与光线跟踪单元102分离,但是在其他示例中,存储器104可以被集成到光线跟踪单元102中。
相交测试逻辑106(和其部件)可以被实现在硬件、软件、固件或其任何组合中。例如,相交测试逻辑106包括一个或多个相交测试处理核118,其被配置为对场景中的光线执行相交测试。相交测试处理核118可以被实现在专用固定功能硬件中,其允许高效地执行相交测试。然而,将相交测试实现为在更通用的处理硬件上运行的软件将是可能的。相交测试逻辑106还包括解包逻辑120和控制逻辑122。控制逻辑122被配置为控制相交测试逻辑106的操作。如下文更详细地描述的,解包逻辑120被配置为对经压缩的光线方向数据进行解包。
着色器执行单元108被配置为执行着色器程序(其可以在本文中简单地被称为″着色器″),以确定光线与场景中的几何形状相交的效果。例如,当相交测试逻辑106标识光线与基元的相交时,那么该相交的指示被传递到着色器执行单元108,从而调用用于相交的着色器程序的执行。着色器程序可以确定正被绘制的图像中的像素的颜色(或者对像素的颜色的贡献)。着色器程序还可以输出更多被相交测试逻辑106相交测试过的光线。着色器执行的确切细节超出本公开的范围。
场景层次单元110被配置为确定场景层次124(其可以被称为″加速结构″)。场景层次单元110可以被实现在硬件、软件、固件或其组合中。场景层次单元110接收描述要被绘制的场景中的对象的基元,并且确定分层加速结构124,其描述场景中基元的位置(例如,以可以改进相交测试的效率的方式)。加速结构124可以包括多个链接的节点,其中,每个节点可以表示场景空间的一部分。节点可以例如是一个或多个基元的集合的边界框。在其他示例中,节点可以是表示场景中的几何形状的一部分的位置的球体。相交测试逻辑106可以针对场景层次124的节点执行光线的相交测试。场景层次单元110的操作的确切细节超出本公开的范围。
存储器104包括光线数据存储器126、几何存储器128和帧缓冲器130。存储器104可以被实现为存储器的单个块或者存储器的多个分离块。存储器104可以被实现为系统存储器,其中数据可以通过通信总线(例如,系统总线)在存储器104与光线跟踪单元102之间传递。光线数据存储器126被配置为存储与要被由光线跟踪单元102处理的光线有关的至少一些光线数据。光线存储器112是光线跟踪单元102的一部分(例如,光线存储器112被实现在光线跟踪单元102的″片上″,并且可以被称为″本地光线存储器″),并且被用于存储与要被由光线跟踪单元102处理的光线有关的至少一些光线数据。本地光线存储器112可以用作用于在光线跟踪单元102与光线数据存储器126之间传递的光线数据的高速缓存。然而,在一些示例中,本地光线存储器112可以存储一些类型的用于光线的光线数据(例如,″核心″光线数据,诸如光线方向和光线原点和裁剪距离),而其他类型的用于光线的光线数据可以被存储在光线数据存储器126中。核心光线数据可以是与被用于执行光线上的相交测试的光线有关的数据,而非核心光线数据可以是与光线有关的其他数据,诸如着色器程序使用的数据(例如,纹理数据),响应于光线与场景中的几何形状的相交,该着色器程序被执行。
光线压缩模块116在下文中被更详细地描述,并且被配置为根据本文所描述的示例对光线方向数据进行压缩。在图1所示的示例中,光线压缩模块116被示出在(多个)着色器执行单元108内。光线压缩模块116可以被实现为软件模块(例如,作为着色器程序的一部分)或硬件模块(例如,作为固定功能电路),用于执行如本文所描述的光线方向数据的压缩。在其他示例中,光线压缩模块可以与(多个)着色器执行单元108分离地实现(例如,在专用硬件中),作为光线跟踪单元102的一部分。
几何存储器128被配置为存储描述要被绘制的场景中的几何形状的几何数据(例如,基元数据)。几何高速缓冲114被用于对几何数据进行高速缓存,几何数据在光线跟踪单元102与几何数据存储器128之间传递。帧缓冲器130被配置为存储经绘制的像素值(例如,从着色器执行单元108输出的像素值)。为了清晰起见,图1是光线跟踪系统的简化表示,并且应当明显的是,光线跟踪单元102可以包括在图1中未示出的其他处理块。
图2示出了场景202的示例,场景202包括两个表面2041和2042。这是非常简单的示例,并且在其他示例中,在场景内将可能存在多得多的表面和对象。图2示出了两个光源2061和2062,其照亮场景中的对象。在208处示出了从其察看场景的视点,并且在210处表示要被绘制的帧的视平面。一条或多条光线可以被跟踪,通过视平面210的每个像素位置并且进入场景202中,以标识与场景(例如,表面2041或2042)中的基元的相交。作为相交的结果,着色器被调用,并且着色器由(多个)执行单元108执行,以确定所绘制的图像的像素值。
描述光线的光线数据包括许多字段,诸如:光线原点数据,其限定用于3D场景空间中的光线的原点;光线方向数据,其将光线的方向限定为通过3D场景空间的向量;用于光线的裁剪距离,其限定在停止对光线的跟踪之前、跟踪光线以测试相交的最大距离;以及其他光线数据,其在不同的示例中可以是不同的。例如,光线原点数据可以包括三个坐标(例如,x、y和z分量坐标)以表示场景空间中的位置。x、y和z分量中的每一个可以例如被表示为单精度浮点数(由此使用32位)。在其他示例中,不同的格式可以被用于光线原点数据。
在现有技术系统中,光线方向数据可以利用三个笛卡尔坐标(例如,x、y和z分量坐标)来以类似于光线原点数据的格式表示场景空间中的位置,例如,利用三个单精度浮点数。图3表示以x、y和z轴的原点为中心、具有单位半径(R=1)的球体。光线方向可以被概念化为球体的表面上的点。
由于光线的方向向量被限定为具有单位长度,因而存在压缩表示向量所需要的数据的机会。简单压缩格式是丢弃3个分量中的一个,并且在需要时使用勾股定理对其进行重建。这以包括平方根计算的计算成本作为代价提供了三分之一的数据大小节省。
如果浮点数格式被用于光线方向的分量,那么可表示的方向的采样密度跨球体的表面而变化。由于浮点数的固有的非均匀的性质,可表示的方向的最高密度被发现接近于轴,而可表示的方向的最低密度被发现远离轴,例如,可表示的方向的最低密度被发现接近于由x=y=z、x=y=-z、x=-y=z和-x=y=z给出的对角线。可表示的光线方向的密度对应于光线方向可以被表示的准确度。例如,因为诸如照相机变换的简单操作可以使得可表示的光线方向沿着在场景空间的x、y、z坐标中的对角线,所以仅可以认为光线方向与最低准确度一样准确。
如果分量中的一个被丢弃,则精度的损失被进一步复合化。在该格式中,由于坐标轴附近的向量受丢弃的分量影响,可表示的精度进一步降低。
光线的方向向量的另一表示是极坐标。极坐标也具有由两个分量组成的优点,但是极坐标共有的缺点是:可表示的方向随着方向接近极点的增加的密度,以及随着方向接近赤道的减少的密度。
在本文所描述的一些示例中,八面体向量格式被用于光线方向数据。相比于利用浮点数格式所提供的,八面体向量格式提供了可表示的光线方向的更均匀的分布。这意味着与使用浮点数格式相比,表示光线的光线方向所要求的位数可以被减少。而且,八面体法向量可以不昂贵地转换到3-分量笛卡尔向量以及从3-分量笛卡尔向量转换。
八面体向量格式已经被用于表示表面法线方向,并且已经被称为八面体法向量格式。以下论文中描述了用于在表示表面法线中使用的八面体法向量格式的细节:QuirinMeyer,Jochen Süβmuth,Gerd Suβner,Marc Stamminger和Günther Greiner,″OnFloating-Point Normal Vector″,Eurographics Symposium on Rendering 2010,第29卷(2010),第4号。此外,UK专利号GB2391441描述了用于经压缩的凹凸映射(bump map)的八面体向量格式的使用。
在x、y和z坐标中被限定为单位球体的表面上的点的光线方向向量可以被转换为八面体向量格式。该转换的第一步是使用L1范数将光线方向向量标准化。这可以被认为是将Manhattan空间中的球体标准化。以这种方式,光线方向向量被投影到以原点为中心的规则八面体上,其中八面体的棱角中的每一个被定位在x、y或z轴中的一个上。图4a描绘了这样的八面体。转换的下一步是将八面体展开为二维的正方形。在图4b至4d中图示了该展开过程。八面体的上半部分(即,具有正z值的八面体的一半)向下被投影到在z=0处的平面,其结果被示出在图4b中。为了这样做,x和y值保持不变,但是对于八面体上具有正z值的任何点,z值被设定为零。八面体的下半部分(即,具有负z值的八面体的一半)向上被投影到在z=0处的平面,并且平面内的四个象限中的四个三角形部分向外展开,其结果被示出在图4c中。为了这样做,对于八面体上具有负z值的任何点,z值被设定为零,并且x和y值被移动到x′和y′值,其中如果x和y二者为正,那么x′=1-y和y′=1-x;如果x为正并且y为负,那么x′=-1-y和y′=1-x;如果x为负并且y为正,那么x′=1-y和y′=-1-x;并且如果x和y二者为负,那么x′=-1-y和y′=-1-x。图4d将展开的八面体示出为2D表示,其中平面中的位置可以使用参数u和v来表示,其针对x+y≤1表示x和y,并且针对x+y≥1表示x′和y′。u和v的值被发现在范围-1≤u≤1和-1≤v≤1内。这些范围之外的u或v的值不表示八面体的表面上的位置。在以上两个步骤中描述了八面体的展开,但是这仅为了解释的清晰性,并且应当明显的是,展开可以被应用在单个转换步骤中。
八面体向量允许光线方向通过以下方式来编码:将光线方向投影到八面体的表面、折叠(或者″展开″)八面体以形成正方形、并且然后使用两个参数(u,v)描述正方形内的位置来限定光线方向,使得两个参数(u,v)引用八面体上的位置。八面体向量提供对可表示的光线方向基本上均匀的分布(与方向的浮点数表示不同)。如果光线方向由给出光线方向的x、y和z分量的三个32位浮点数表示,则八面体向量格式可以以利用96位所实现的相同准确度,使用52位来表示光线方向。
图5示出了用于压缩光线方向数据的方法的流程图。该方法可以由光线压缩模块116实现,光线压缩模块116是硬件(例如,固定功能电路)、软件、固件或其任何组合的形式。在图1所示的示例中,光线压缩模块116被包括在(多个)着色器执行单元108内,例如,光线压缩模块116可以被实现为由(多个)着色器执行单元108执行的着色器程序的一部分,但是在其他示例中,光线压缩模块116可以被实现为光线跟踪单元102中的分离的单元,或者被实现在另一单元内(例如,相交测试逻辑106或者本地光线存储器102内)。
在步骤S502中,在光线压缩模块116处获得(即,接收)用于光线的光线数据。特别地,在光线压缩模块116处获得用于在光线跟踪模块102中要被处理的光线的光线方向数据。用于光线的光线数据的其他分量(例如,光线原点等)可以或可以不在光线压缩模块116处被接收。光线压缩模块116被布置为对用于光线的光线方向数据进行压缩。在光线压缩模块116处接收到的光线方向数据包括表示3D场景中的光线的方向的三个分量(x、y和z分量)。
在步骤S504中,光线压缩模块116根据八面体向量格式对光线方向数据进行压缩,如上文所描述的。因此,两个参数(u和v)根据光线方向向量的x、y和z分量确定,其中u和v参数引用八面体上的位置来表示光线方向。总结以上解释,参数被确定为:
其中
如上文所描述的,在一些示例中,光线压缩模块116在软件中被实现为在(多个)执行单元108上执行的程序(″着色器程序″)的一部分。在这些示例中,光线方向数据不以包括三个分量(x、y和z分量)的格式从(多个)执行单元108输出,并且替代地,光线方向数据从(多个)执行单元108输出时,已经被压缩(例如,到八面体向量格式)。换句话说,着色器程序(在(多个)执行核心108上执行)随着光线从着色器输出而立即生成经压缩的光线方向数据。例如,这可以利用着色器指令或者指令集完成。在一些示例中,因为来自着色器的写指令可能不同时输出所有数据以便允许压缩发生,所以在数据被压缩之前可以存在未压缩的光线方向数据的一些中间缓冲。中间缓冲可以保持为较小,以避免对用于存储准备好被压缩的光线方向数据的大的存储器的需要。在着色器程序执行光线方向数据的压缩的示例中,经压缩的光线方向数据可以是光线方向数据的可信赖副本。可能的情况是:在光线跟踪单元102中不存在附加存储器来存储未压缩的光线方向数据。应注意,在光线跟踪单元102中可以存在附加存储器来存储非方向的光线属性。
然而,在一些其他示例中,在(多个)执行核心108上执行的着色器程序可以将未压缩的光线方向数据输出到存储器(例如,光线跟踪单元102内的存储器),并且在光线跟踪单元102内(例如,在(多个)执行核心108外部)实现的光线压缩模块可以从存储器接收光线方向数据,并且在将经压缩的光线方向数据存储在本地光线存储器112中之前压缩光线方向数据。
总结两个前述段落,描述了三个不同的实现方式,并且它们之间还可以存在变化,其包含不同于彼此的元件。三个实现方式是:
1.在第一实现方式中,着色器指令或者指令的组合(例如,″SetRayDirection″指令)采取指定方向的直接自变量,并且在执行时立即地执行压缩,并且将经压缩的值存储到光线存储器。这是最高效的实现,但是其打破了允许分量上的对齐的期望的程序设计范例(例如,将ray.direction视为vec3,并且能够在与分配ray.direction.y分离的语句中分配ray.direction.x)。
2.在第二实现方式中(″中途″实现),临时存储器被用于存储来自着色器的结果。临时存储器是片上存储器,并且可以直接地被耦合到执行着色器指令的执行单元。着色器指令可以以正常的方式操作(例如,将ray.direction作为vec3)。在着色器执行已经完成之后(或者在光线已经被变为不可变,并且光线可以不再被着色器影响),临时vec3然后被压缩并且被写入光线存储器中。
3.在第三实现方式中,两种格式的光线被允许:具有压缩向量的格式和不具有压缩向量的格式。在该实现方式中,着色器以未压缩的形式来写,并且在将光线从着色过渡到相交测试的过程中,压缩器逻辑压缩光线。该实现方式通常不如前两个实现方式高效(例如,在延时和硅面积方面),但是在着色与相交测试之间存在更松散的耦合的情况下,该方式将是适当的。
在步骤S505中,光线压缩模块116基于非标准化的光线方向向量的幅度来缩放光线的裁剪距离(t),即,基于当光线方向向量已经被投影到以原点为中心的规则八面体(如图4a所示)上时光线方向向量的幅度。如下面更详细地描述的,经缩放的裁剪距离可以在相交测试中被用于确定何时裁剪光线。例如,裁剪距离可以通过将光线的原始裁剪距离乘以非标准化的光线方向向量的幅度来缩放。如上文所描述的,非标准化的光线方向向量可以被认为是在Manhattan空间中,因此裁剪距离的缩放可以通过基于光线的方向、将用于光线的裁剪距离变换为也在Manhattan空间中来执行。裁剪距离的缩放可以通过在(多个)执行单元108上执行的着色器程序来实现。应注意,步骤S505是可选步骤。换句话说,虽然缩放裁剪距离对于在光线上执行的相交测试是有益的,但是缩放裁剪距离不是必要的。另外,在一些示例中,当光线方向数据被解压缩时(而不是如以上所描述的,当光线方向数据被压缩时)执行裁剪距离的缩放将是可能的。然而,在光线方向数据的压缩期间缩放裁剪距离可以是更有益的,以使得在解压缩时所执行的处理量减少。光线可以使用经压缩的光线数据而被处理,用于多次相交测试(例如,针对加速结构的不同的节点或者针对场景中的几何形状所测试的),因此可以有用的是:避免将缩放裁剪距离作为用于在相交测试中使用的解压缩过程的一部分的需要。
在步骤S506中,用于光线的光线数据(包括经压缩的光线方向数据和可选地,经缩放的裁剪距离)被存储在存储器中(例如,本地光线存储器112和/或光线数据存储器126)。经压缩的光线数据可以被存储,用于光线跟踪系统100中的后续使用(例如,用于相交测试)。在一些示例中,用于光线的光线数据的所有字段一起被存储在例如本地光线存储器112和/或光线数据存储器126中。在一些其他示例中,用于光线的光线数据(例如,用于光线的″核心″光线数据)的一些字段被存储在本地光线存储器112中,而用于光线的光线数据(例如,用于光线的″非核心″光线数据)的至少一些其他字段被存储在光线数据存储器126中。用于光线的核心光线数据可以例如包括光线原点数据、经压缩的光线方向数据和光线裁剪距离,并且可以包括用于光线的数据的另外的字段。用于光线的非核心光线数据可以包括用于光线的其他数据,诸如,使着色器响应于涉及光线的相交而执行的指示或者用户指定数据等。例如,核心光线数据可以是将总是在光线跟踪系统中使用的数据的类型,即对于光线跟踪系统正确地处理光线的能力重要的数据;而非核心光线数据可以是以下类型的数据:这种类型的数据可以取决于光线跟踪系统的实现而变化,并且这种类型的数据可以在光线在光线跟踪系统中被处理的方式方面提供灵活性。
在一些示例中,分离的暂态高速缓存可以在光线跟踪单元102中实现,用于存储未压缩的光线数据,并且可以实现根据需要压缩光线数据的光线压缩模块。在高速缓存处,未压缩的光线数据从外部存储被接收。
经压缩的光线方向数据的全解压缩包括两个步骤:(i)将八面体参数解包为表示八面体的表面上的位置的x、y和z分量,并且(ii)将方向标准化,以将向量放回到单位球体的表面上。例如,八面体方向向量的u和v参数可以被解包,以根据以下等式形成八面体上的(非标准化的)x、y和z分量:
z=1-|u|-|v|
然后,非标准化的x、y和z分量可以使用L2范数(或者″欧几里得范数″)而被标准化,以确定标准化光线方向,标准化光线方向由指向单位球体的表面的向量表示。应注意,由非标准化的x、y和z分量限定的非标准化的光线方向向量在欧几里得空间(这是在其中向量可以被认为是标准化的空间的标准解译)中是″非标准化″的,并且这是术语″非标准化″在本文中如何使用。对于在欧几里得空间中要被标准化的光线方向向量,那么光线方向向量的幅度将是各向同性的,并且在每个方向上将等于一(即,对于每个光线方向, )。对于根据上文给出的等式3所获得的非标准化的光线方向向量,情况并非如此。然而,″非标准化″的光线方向向量可以被认为在Manhattan空间(或者″计程车(texicab)″空间)中是″标准化″的,因为非标准化的光线方向向量在八面体的表面上,并且由此对于每个光线方向,满足等式|x|+|y|+|z|=1。
图6示出了可以被存储的、用于光线的光线数据600的字段。光线数据600包括三个分量(602、604和606)以表示光线原点的x、y和z坐标。这些分量中的每个分量可以被表示为32位浮点数。光线数据600还包括裁剪距离(t)608,其指示在光线被裁剪之前距光线原点的最大距离,针对该距离,相交测试将在光线上被执行。裁剪距离608可以是在步骤S505中确定的经缩放的裁剪距离。裁剪距离可以例如被表示为32位浮点数。光线数据600还包括两个八面体参数(610和612),用于以八面体向量格式表示光线方向。如上文所描述的,两个参数610和612可以共同地用52位来表示(例如,每个参数可以用26位来表示),并且仍然给光线方向提供与使用三个分量(x、y和z分量,每个分量利用32位浮点数表示)一样好的准确度。光线数据600可以包括其他光线数据614,诸如,使一个或多个着色器程序响应于相交而执行的指示,或者可以对于处理光线有用的任何其他数据。在不同的示例中,被包括在其他光线数据字段614中的数据可以是不同的,并且在不同的示例中,其他光线数据字段614的大小可以是不同的。
如上文所描述的,八面体向量格式的使用可以压缩光线方向数据,使得光线方向数据利用52位而不是96位来表示,从而将用于光线的光线数据量减少44位。由于光线跟踪系统102能够处理针对被绘制的每个帧的百万或者甚至亿万光线,其中帧可以实时绘制(例如,以每秒数十帧的速度),因而每秒处理的光线的数目是巨大的。因此,所存储的每条光线44位的降低可以显著地降低传递进出存储器(例如,本地光线存储器112和光线数据存储器126)的数据量。这可以帮助减少光线跟踪单元102的物理大小(即,硅面积),并且减少在光线跟踪单元102中处理光线数据的过程中涉及的处理能力和延时,并且减少在将光线数据写入到存储器或者从存储器读取光线数据的过程中涉及的处理能力和延时。
图7示出了用于在光线跟踪系统100中处理光线的方法的流程图。应注意,该方法可以被应用到多条光线,但是为了描述的简单性,参考处理一条光线来描述图7。在步骤S702中,相交测试逻辑106从本地光线存储器112接收光线数据,该数据用于针对场景中的几何形状而被相交测试的光线。光线数据包括经压缩的光线方向数据(例如,以八面体向量格式),并且包括用于光线的裁剪距离,作为步骤S505的结果,该裁剪距离可以被缩放。相交测试逻辑106还接收描述场景中的几何形状的位置的数据,并且可以例如涉及从几何高速缓存114接收基元数据,或者从场景层次单元110接收场景层次124。
在步骤S704中,解包逻辑120解包经压缩的光线方向数据,用于光线。如上文所描述的,对经压缩的光线方向数据的解包包含:确定表示3D场景空间中的光线的方向的向量的三个分量(x、y和z分量)。特别地,经压缩的光线方向数据的解包可以根据等式(3)来执行,以便确定非标准化的x、y和z分量(表示八面体的表面上的点)。以这种方式,相交测试逻辑106的解包逻辑120构建用于光线的非标准化的光线方向向量。步骤S704可以被认为是部分地解压缩光线方向数据。在步骤S704中,光线方向数据没有被完全解压缩,因为解包的x、y和z分量是非标准化的。
如上文相对于步骤S505所描述的,光线的裁剪距离(t)可以已经基于非标准化的光线方向向量的幅度而被缩放。经缩放的裁剪距离可以在相交测试中使用,以确定何时裁剪光线。
应注意,在一些示例中,裁剪距离未被缩放,并且相交测试可以使用被不适当地缩放的裁剪距离来执行。这可能导致相交测试中的轻微的低效,但是将不导致绘制误差,因此这是可接受的实现方式,该方式避免了缩放裁剪距离的步骤。
在步骤S708中,相交测试逻辑106的(多个)相交测试处理核118使用用于光线的非标准化的光线方向向量来对场景中的光线执行相交测试。因此,解包的光线方向分量对于对光线执行相交测试的目的不是标准化的。换句话说,对具有非标准化的光线方向向量的光线执行相交测试。非标准化的光线方向向量的方向将不被标准化光线方向向量更改(但是幅度将被更改),因此当使用非标准化的光线方向向量时,由(多个)相交测试处理核118使用的算法不需要被更改,并且这些算法在光线是击中还是未击中场景中的几何形状块方面仍然给出正确答案。
裁剪距离的缩放考虑以下事实:光线方向向量是非标准化的,使得在使用非标准化的光线方向向量和经缩放的裁剪距离的光线上执行的相交测试提供与以下情况相同的结果:使用标准化的光线方向向量和未经缩放的裁剪距离的光线上执行的相交测试。
当光线方向数据已经根据八面体向量格式压缩时,在本文所描述的示例中,经压缩的、被光线跟踪系统用于相交测试的光线方向数据的解压缩被简化,使得光线方向数据是非标准化的。换句话说,出于相交测试的目的,光线方向数据被部分地解压缩,而不是被完全解压缩。通过避免执行在标准化光线方向数据中涉及的过程,在光线跟踪系统中执行更少的处理步骤,从而减小光线跟踪系统的延时和功耗。
当相交测试器找到光线与场景中的对象之间的相交(即,″击中″)时,相交测试器可以记录击中距离(即,场景内从光线的原点到交点的距离)。当相交测试器使用非标准化的光线方向向量时,可以在该″非标准化″的空间中确定击中距离。非标准化的击中距离可以被提供到处理相交测试结果的着色器程序。如果由着色器程序执行的处理依赖于击中距离,那么着色器程序可以标准化击中距离,使得着色器程序可以正确地处理相交结果。在一些示例中,当找到光线与对象之间的相交时,击中距离替换用于光线的裁剪距离。这是一个优化,该优化意味着当针对场景中的其他节点或其他几何形状测试光线时,对于比已经找到的最近击中点更远的光线距离,相交测试不需要被执行。
(多个)相交测试处理核118可以被配置为对加速结构的元件以及可相交的基础基元来执行相交测试。(多个)相交测试处理核118可以被配置为使用非标准化的光线方向向量来执行相交测试。
(多个)相交测试处理核118可以实现基元相交测试器,其接收描述场景中的基元的位置的几何数据(例如,从几何高速缓冲114),并且针对基元执行光线的相交测试。例如,在基元是三角形的示例中,基元相交测试器可以是三角形相交测试器,其执行光线针对三角形的相交测试。以这种方式,相交测试逻辑106可以被认为包括以下基元相交测试器,该基元相交测试器被配置为通过标识光线与场景中的基元的相交来对光线执行相交测试。
(多个)相交测试处理核118可以实现框相交测试器,其执行光线针对场景中的几何形状的边界框的相交测试。边界框可以是单个基元的边界框,或者基元组的边界框。图8a示出了具有边界框804的基元802。边界框是轴对齐的边界框。例如,边界框可以是从场景层次单元110接收的场景层次124的节点。与针对基元或非轴对齐边界框的相交测试相比,针对轴对齐边界框的相交测试实现起来相对简单。以这种方式,相交测试逻辑106可以被认为包括以下框相交测试器,该框相交测试器被配置为通过标识光线与场景中的一个或多个基元的边界框的相交来对光线执行相交测试。
(多个)相交测试处理核118可以实现球体相交测试器,其执行光线针对表示场景中的几何形状的部分的位置的球体的相交测试。图8b示出了基元806,以及限制基元806的球体808。对于针对接近于等边三角形的基元的相交测试的目的,使用单个球体来限制单个基元可以是有用的。然而,对于更长的基元(诸如图8c中所示的基元810),出于相交测试的目的,使用多个球体(8121至8125)来表示基元810的位置可以是有益的。例如,(多个)球体可以是从场景层次单元110接收的场景层次124的(多个)节点。与针对基元的相交测试相比,针对球体的相交测试实现起来相对简单。以这种方式,相交测试逻辑106可以被认为包括以下球体相交测试器,该球体相交测试器被配置为通过标识光线与表示场景中的几何形状的一部分的位置的球体的相交来对光线执行相交测试。
(多个)相交测试处理核118可以被配置为实现任何适合的类型的相交测试器。作为示例,相交测试器可以是平面测试器,其测试光线与场景中的平面之间的相交。这对于测试光线与分割面的相交可以是有用的,分割面可以被用于空间分区树。作为另一示例,相交测试器可以测试光线与场景内的隐含表面和/或程序表面的相交。
在一些示例中,相交测试逻辑106可以实现可编程相交测试器(例如,通过在(多个)处理核118上运行适合的软件程序),可编程相交测试器可以对非标准化的光线方向值和非标准化的光线裁剪距离操作,并且当找到相交时可以自动地更新光线上的击中距离。
在一些示例中,在(多个)执行单元108上执行的着色器程序可以实现相交测试,使得在光线跟踪单元中,相交测试逻辑模块106不被需要。指令集可以被用于实现着色器程序,特别地,用于实现相交着色器程序,以评价光线-基元击中是否发生,并且如果是的话在距光线的原点什么距离处发生。指令集可以包括用于如本文所描述的光线方向数据的压缩、解包和解压缩的特殊指令。用于具有执行相交测试的目的的着色器的指令集或者程序设计模型还可以包括以下各项中的一项或多项:(i)提供对本地的经压缩的光线数据结构的访问的装置,(ii)在Manhattan空间中和在世界空间中沿着光线的距离之间的映射的装置,以及(iii)提高利用包括经压缩的方向向量的光线来执行相交计算的效率的任何其他数据或者功能。
以下是实现方式的选择:是否使用边界框或者球体(或者任何其他形状)作为场景层次124的节点,以表示场景中的几何形状的位置,其细节在本公开的范围之外,该选择在决定如何建立场景层次单元110中的场景层次时做出。
在相交测试已经使用非标准化的光线方向向量执行之后,相交测试的结果可以被用于绘制场景的图像(例如,在步骤S710到S712中)。
在步骤S710中相交测试的结果(例如,与光线相交的基元和击中距离的标识、或者光线没有与场景中的任何几何形状相交的指示)被传递到(多个)着色器执行单元108,从而调用一个或多个着色器程序以在(多个)执行单元108上执行。
在步骤S711中,完成光线方向向量的解压缩。该步骤可以通过在(多个)执行单元108上执行的着色器程序来执行。在上文所描述的示例中,完成光线方向向量的解压缩包含根据L2范数对解包的光线方向向量标准化。步骤S711还可以包含根据L2范数将击中距离标准化。对相交测试的结果起作用的着色器程序可以利用光线方向向量和/或击中距离,因此在步骤S711中将光线方向向量和/或击中距离标准化是有用的。然而,如果光线方向向量和击中距离之一或二者没有被对相交测试的结果起作用的着色器程序使用,那么在步骤S711中光线方向向量和击中距离的相应的一个或二者可能没有被标准化。
在步骤S712中,(多个)着色器执行单元108执行用于绘制场景的图像的(多个)被调用的着色器程序。如上文所描述的,当着色器程序在(多个)执行核心108上被执行时,着色器程序可以执行各种各样的功能,并且一些着色器程序的执行可以发射一条或多条另外的光线,以在光线跟踪系统100中被处理。通过着色器程序的执行而被发射的光线可以被传递回到用于相交测试的相交测试逻辑106。所发射的光线可以由光线压缩模块116处理,使得光线方向数据可以被压缩,如上文参考图5中的流程图所描述的。光线数据可以被存储在本地光线存储器112中和/或在光线数据存储器126中。
由(多个)执行单元108中的着色器的执行所生成的经绘制的图像值(例如,像素值)可以被输出到帧缓冲器130,并且被存储在其中。当针对图像的所有像素值已经被绘制并且被存储在帧缓冲器130中时,那么经绘制的图像可以以任何适合的方式使用,例如,被提供到显示器,以在该显示器上显示,或者被传送到另一设备(例如,通过网络(诸如本地网络或者因特网))、或者被传递到另一存储器用于在其中存储等。
图9示出了光线跟踪系统的部分并且图10示出了用于处理光线跟踪系统中的光线的方法的流程图。在示例中,光线数据在(多个)着色器执行单元108、光线存储器902(其可以是本地光线存储器112或者光线数据存储器126)和相交测试逻辑106之间被传递。虚线框904表示光线穿透功能,并且包括光线存储器902和相交测试逻辑106。如上文所描述的,在步骤S1002中,着色器程序在(多个)执行单元108上被执行,并且可以导致光线被生成,该光线将由相交测试逻辑106来相交测试。在步骤S1004中,光线方向数据被在(多个)执行单元108上执行的着色器程序压缩(例如,通过光线压缩模块116)。例如,光线数据可以被压缩为八面体向量格式,但是如下面更详细地描述的,其他压缩格式可以被使用。在步骤S1006中,如上文所描述的,缩放光线的裁剪距离。在步骤S1008中,光线数据(包括经压缩的光线方向数据和经缩放的裁剪距离)从(多个)执行单元108被传递,用于框902中的光线穿透。特别地,光线数据(包括经压缩的光线方向数据和经缩放的裁剪距离)从(多个)执行单元108被传递到光线存储器902,用于存储在其中。应注意,以下是有用的优化特征:将特定于光线、经缩放的裁剪距离连同光线数据一起携带,从(多个)执行单元108传递到光线存储器102,但该特征不是根本上所要求的,并且在一些示例中,经缩放的裁剪距离没有由在(多个)着色器执行单元108中执行的着色器程序确定,并且没有被存储在光线存储器902中。
在步骤S1010中,相交测试逻辑106从光线存储器902取回光线数据,并且将光线方向数据部分地解压缩(例如,使用解包逻辑120)。光线方向数据的部分解压缩不包含将光线方向向量标准化,因此非标准化的光线方向向量在相交测试中被使用。在步骤S1012中,相交测试逻辑106使用部分解压缩的(即,非标准化的)光线方向数据对光线执行相交测试。如上文所描述的,因为相交测试(即,击中或者未击中)的相交标识将不会改变,所以非标准化的光线方向向量可以在相交测试中被使用。使用经缩放的裁剪距离意味着裁剪距离被调节,以对以下负责:光线方向向量是非标准化的。如上文所描述的,由相交测试逻辑106所确定的击中距离将是非标准化的。
在步骤S1014中,相交测试的结果从光线穿透逻辑904(例如,从相交测试逻辑106和/或光线存储器902)传递到(多个)着色器执行单元108。例如,光线与场景中的基元之间的相交的指示可以被传递到(多个)着色器执行单元,并且一个或多个着色器程序可以在(多个)着色器执行单元108上执行,以处理相交测试结果。用于光线的光线数据(例如,包括经压缩的光线方向数据或者经解包但是非标准化的光线方向数据)可以从光线存储器902被传递到(多个)着色器执行单元108。非标准化的击中距离可以从相交测试逻辑106被传递到(多个)着色器执行单元108。
在步骤S1016中,在(多个)着色器执行单元108上执行的着色器程序确定全解压缩的光线方向数据,例如,通过解包并且标准化经压缩的光线方向数据,或者通过标准化部分解压缩的光线方向数据(其中″部分解压缩的光线方向数据″是已经解包的光线方向数据)。在步骤S1018中,着色器程序对击中距离执行逆缩放操作,从而将击中距离标准化。在一些示例中,光线方向数据的解压缩(在步骤S1016中)和/或击中距离的逆缩放(在步骤S1018中)可以由专用硬件(例如,固定功能电路)执行,而不是由如上文所描述的在(多个)执行单元108上执行的软件着色器程序执行。步骤S1016和S1018可以是可选的。例如,如果着色器程序没有使用光线方向和/或击中距离,那么步骤S1016和/或S1018可能没有被相应地执行。
在步骤S1020中,(多个)着色器执行单元108执行着色器程序,以便处理相交结果。例如,在步骤S1020中着色器程序的执行可以包含确定用于图像的像素的颜色值,并且可以包含生成另外的光线,以针对场景中的相交而被测试。在步骤S1022中,确定是否有光线已经被生成用于相交测试,并且如果光线已经生成,那么方法返回步骤S1004。如果在步骤S1022中确定:在步骤S1020中的着色器程序的执行没有生成光线,那么方法转到执行其他处理的步骤S1024。例如,另外的光线可以被处理(例如,通过返回到步骤S1002)。
为了重申上文所描述的示例的细节中的一些,相交测试逻辑106使用用于光线的非标准化的光线方向向量对场景中的光线执行相交测试;即,不对光线方向向量标准化。相交测试不使用标准化的光线方向向量。相交测试利用非标准化的光线方向向量执行。因此,表示在其上执行相交测试的光线的光线向量被构建,以穿过由针对光线的光线原点所给出的点,并且被构建为具有非标准化的光线方向向量的方向。相交测试包含测试光线向量是否与几何形状的任何元素(例如,基元)相交,或者是否与表示场景中的几何形状的位置的加速结构的任何节点相交。应注意,光线方向向量可以被标准化,用于除了相交测试以外的目的,但是出于相交测试的目的,光线方向向量不被标准化。避免标准化由相交测试逻辑106处理的每条光线的光线方向向量的步骤减小了光线跟踪系统100的功耗和延时。
在上文所描述的示例中,八面体向量格式被用于光线方向数据,并且光线方向数据出于相交测试的目的而被部分地解压缩(即,不完全解压缩)。在其他示例中,其他类型的向量格式(即,非八面体向量格式)可以被用于光线方向数据,并且出于相交测试的目的,系统可以仍然部分地解压缩(即,不完全解压缩)光线方向数据。利用其他的压缩格式,关于减少针对相交测试所执行的处理的相同益处可以达到(通过仅部分地解压缩光线方向数据,例如通过避免标准化步骤)。一些其他合适的格式包括块浮点格式(即,用于所有3个分量的一个共享指数)和整数格式(即,没有指数,但是没有减少到2个分量,因此仍然需要所有3个(x、y、z)分量)。另一合适的格式是束光线格式,其中多条光线共享一些高阶比特。在一些示例中,无论哪个格式被使用(即,不一定是八面体向量格式),在着色与相交测试之间压缩光线数据。
图11示出了其中可以实现本文所描述的光线跟踪系统的计算机系统。计算机系统包括光线跟踪单元102、CPU 1102、GPU 1104、存储器1106和其他设备1108(诸如显示器1110和扬声器1112)。计算机系统的部件可以经由通信总线1114彼此通信。存储器104被实现为存储器1106的一部分。
图1的光线跟踪系统100被示出为包括多个功能块。这仅仅是示意性的,并不旨在限定这些实体的不同逻辑元件之间的严格划分。每个功能块可以以任意合适的方式提供。应当理解,本文描述为由光线跟踪系统形成的中间值不需要由光线跟踪单元在任意时刻物理地生成,并且可以仅仅表示逻辑值,该逻辑值便于描述由光线跟踪系统执行的在其输入和输出之间的处理。
本文描述的光线跟踪系统可以以集成电路上的硬件来实现。本文描述的光线跟踪系统可以被配置为执行本文描述的任意方法。通常,上述任意功能、方法、技术或部件可以以软件、固件、硬件(例如,固定逻辑电路)或其任意组合来实现。本文可以使用术语″模块″、″功能″、″部件″、″元件″、″单元″、″块″和″逻辑″来总体表示软件、固件、硬件或其任意组合。在软件实现的情况下,模块、功能、部件、元件、单元、块或逻辑表示在处理器上执行时执行指定任务的程序代码。本文描述的算法和方法可以由执行使得处理器执行算法/方法的代码的一个或多个处理器来执行。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪速存储器、硬盘存储器以及可以使用磁、光学和其他技术来存储指令或其他数据、并可以被机器访问的其他存储器设备。
本文使用的术语计算机程序代码和计算机可读指令是指用于处理器的任意种类的可执行代码,包括以机器语言、解释型语言或脚本语言表达的代码。可执行代码包括二进制代码、机器代码、字节代码、限定集成电路的代码(诸如硬件描述语言或网表),以及以诸如C、Java或OpenCL的编程语言代码表达的代码。可执行代码可以是例如任意类型的软件、固件、脚本、模块或库,其当在虚拟机或其他软件环境处适当地执行、处理、解释、编译、执行时,使得计算机系统的处理器执行由代码指定的任务,在该计算机系统处可执行代码被支持。
处理器、计算机或计算机系统可以是具有处理能力使得可以执行指令的任意类型的设备、机器或专用电路、或其集合或其一部分。处理器可以是任意种类的通用或专用处理器,诸如CPU、GPU、片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列、可编程门阵列(FPGA)等。计算机或计算机系统可以包括一个或多个处理器。
还旨在涵盖限定如本文描述的硬件的配置的软件,诸如HDL(硬件描述语言)软件,其用于设计集成电路或用于配置可编程芯片以执行期望的功能。也就是说,可以提供一种计算机可读存储介质,在其上编码有集成电路限定数据集形式的计算机可读程序代码,当在集成电路制造系统中处理时,将该系统配置为:制造被配置为执行本文描述的方法中的任意一个的光线跟踪系统,或者制造包括本文描述的任意装置的光线跟踪系统。集成电路限定数据集可以是例如集成电路描述。
因此,可以提供一种在集成电路制造系统处制造如本文所述的光线跟踪系统的方法。此外,可以提供一种集成电路限定数据集,其在集成电路制造系统中处理时导致制造光线跟踪系统的方法被执行。
集成电路限定数据集可以以计算机代码的形式,例如作为网表、用于配置可编程芯片的代码、作为限定在任意级别处的、包括寄存器传输级(RTL)代码的集成电路的硬件描述语言、作为诸如Verilog或VHDL的高级电路表示、以及作为诸如OASIS(RTM)和GDSII的低级电路表示。逻辑上限定集成电路(例如RTL)的较高级表示可以在计算机系统处被处理,计算机系统被配置用于在软件环境的上下文中生成集成电路的制造限定,该软件环境包括电路元件的限定和用于组合这些元件的规则,以便于生成由该表示所限定的集成电路的制造限定。如通常在计算机系统处执行以限定机器的软件的情况那样,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便于计算机系统被配置用于生成集成电路的制造限定以执行限定集成电路的代码以便生成该集成电路的制造限定。
现在将参照图12描述在集成电路制造系统处处理集成电路限定数据集以便配置系统以制造光线跟踪系统的示例。
图12示出了被配置为制造如本文中的示例中的任一者中所描述的光线跟踪系统(例如,光线跟踪单元)的集成电路(IC)制造系统1202的示例。具体而言,IC制造系统1202包括布局处理系统1204和集成电路生成系统1206。IC制造系统1202被配置为接收IC限定数据集(例如,限定如本文的任意示例中描述的光线跟踪系统)、处理IC限定数据集、并且根据IC限定数据集来生成IC(例如,其实施本文任意示例中描述的光线跟踪系统)。IC限定数据集的处理将IC制造系统1202配置为制造实施如本文任意示例中所描述的光线跟踪系统的集成电路。
布局处理系统1204被配置为接收并处理IC限定数据集以确定电路布局。从IC限定数据集确定电路布局的方法在本领域中是已知的,并且例如可以涉及合成RTL代码以确定例如在逻辑部件(例如NAND、NOR、AND、OR、MUX和FLIP-FLOP部件)方面要生成的电路的门级表示。通过确定逻辑部件的位置信息,可以从电路的门级表示来确定电路布局。这可以自动完成或者在用户参与下完成,以优化电路布局。当布局处理系统1204已经确定电路布局时,其可以向IC生成系统1206输出电路布局限定。电路布局限定可以是例如电路布局描述。
如现有技术中已知的,IC生成系统1206根据电路布局限定生成IC。例如,IC生成系统1206可以实现半导体器件制造处理以生成IC,其可以涉及光刻和化学处理步骤的多步骤顺序,在该步骤期间电子电路在由半导体材料制成的晶片上被逐渐形成。电路布局限定可以是掩模的形式,其可以在用于根据电路限定来产生IC的光刻处理中使用。替代地,提供给IC生成系统1206的电路布局限定可以是计算机可读代码的形式,IC生成系统1206可以使用计算机可读代码以形成用于生成IC的适当的掩模。
IC制造系统1202所执行的不同处理可以全部在一个位置例如由一方来实现。替代地,IC制造系统1202可以是分布式系统,使得一些处理可以在不同位置执行,并且可以由不同方执行。例如,以下各项的阶段中的一些可以在不同位置和/或由不同方执行:(i)合成表示IC限定数据集的RTL代码以形成要生成的电路的门级表示,(ii)基于门级表示来生成电路布局,(iii)根据电路布局来形成掩模,以及(iv)使用掩模来制造集成电路。
在其他示例中,集成电路制造系统处的集成电路限定数据集可以将系统配置为制造光线跟踪系统,而不处理IC限定数据集以确定电路布局。例如,集成电路限定数据集可以限定诸如FPGA的可重新配置处理器的配置,并且该数据集的处理可以配置IC制造系统以生成具有该限定的配置的可重新配置的处理器(例如,通过将配置数据加载到FPGA)。
在一些实施例中,集成电路制造限定数据集在集成电路制造系统中处理时可以使集成电路制造系统生成如本文所述的设备。例如,通过集成电路制造限定数据集以以上关于图12所描述的方式的集成电路制造系统的配置可使得如本文所描述的设备被制造。
在一些示例中,集成电路限定数据集可以包括在数据集处限定的硬件上运行的软件或者与数据集上限定的硬件相结合运行的软件。在图12所示的示例中,IC生成系统还可以由集成电路限定数据集配置,以在制造集成电路时根据在集成电路限定数据集处限定的程序代码来将固件加载到该集成电路上,或者以其他方式向程序代码提供集成电路,以与集成电路一起使用。
与已知实现相比,在本申请中阐述的概念在设备、装置、模块和/或系统中(以及本文实现的方法中)的实现可以引起性能改进。性能改进可以包括增加的计算性能、减少的延迟、增加的吞吐量和/或降低的功耗中的一个或多个。在这种设备、装置、模块和系统(例如在集成电路中)的制造的过程中,性能改进可以与物理实现折中,从而改进制造的方法。例如,性能改进可以与布局区域交易,从而与已知实现的性能匹配,但使用更少的硅。这可以例如通过以串行化方式重用功能块或在设备、装置、模块和/或系统的元件之间共享功能块来完成。相反,本申请中提出的概念引起了在设备、装置、模块和系统(例如减小的硅面积)的物理实现的中的改进。这可以通过例如在预定区域预算内制造模块的多个实例来完成。
申请人在此独立地公开了本文描述的每个个体的特征以及两个或更多个这种特征的任意组合,只要这些特征或组合能够根据本领域技术人员的普通通用知识基于本说明书作为整体来执行,而不管这些特征或特征组合是否解决了本文所公开的任意问题。鉴于上述描述,对于本领域技术人员来说显而易见的是,可以在本发明的范围内进行各种修改。

Claims (20)

1.一种用于在绘制3D场景的图像中使用的光线跟踪系统,所述光线跟踪系统包括:
存储器,被配置为将用于要被处理的光线的光线数据存储在所述光线跟踪系统中,其中用于所述光线的所述光线数据包括以压缩格式存储的光线方向数据;以及
相交测试逻辑,被配置为:
通过解包用于所述光线的经压缩的所述光线方向数据来构建用于所述光线的非标准化的光线方向向量;以及
使用用于所述光线的所述非标准化的光线方向向量来对所述3D场景中的所述光线执行相交测试;
其中所述光线跟踪系统被配置为使用所述相交测试的结果来绘制所述3D场景的所述图像。
2.根据权利要求1所述的光线跟踪系统,其中所述相交测试逻辑被配置为利用用于所述光线的裁剪距离,其中基于所述非标准化的光线方向向量的幅度,所述裁剪距离已经缩放一定量。
3.根据权利要求1或2所述的光线跟踪系统,其中所述压缩格式是八面体向量格式。
4.根据权利要求3所述光线跟踪系统,其中所述八面体向量格式使用两个参数来引用八面体上的位置。
5.根据权利要求1或2所述的光线跟踪系统,其中所述相交测试逻辑被配置为:通过确定表示在所述3D场景的三维空间中的所述光线的方向的三个分量,解包用于所述光线的经压缩的所述光线方向数据。
6.根据权利要求1或2所述的光线跟踪系统,其中用于所述光线的所述光线数据还包括光线原点数据。
7.根据权利要求1或2所述的光线跟踪系统,其中所述相交测试逻辑包括基元相交测试器,所述基元相交测试器被配置为:通过标识所述光线与所述3D场景中的基元的相交来对所述光线执行相交测试。
8.根据权利要求1或2所述的光线跟踪系统,其中所述相交测试逻辑包括框相交测试器,所述框相交测试器被配置为:通过标识所述光线与所述3D场景中的一个或多个基元的边界框的相交来对所述光线执行相交测试。
9.根据权利要求1或2所述的光线跟踪系统,其中所述相交测试逻辑包括球体相交测试器,所述球体相交测试器被配置为:通过标识所述光线与表示所述3D场景中的几何形状的一部分的位置的球体的相交来对所述光线执行相交测试。
10.根据权利要求1或2所述的光线跟踪系统,其中用于光线的经压缩的所述光线方向数据使用52位来表示。
11.一种用于在绘制3D场景的图像中使用的光线跟踪方法,所述光线跟踪方法包括:
从存储器取回用于要被处理的光线的光线数据,其中用于所述光线的所述光线数据包括以压缩格式存储的光线方向数据;
通过解包用于所述光线的经压缩的所述光线方向数据来构建用于所述光线的非标准化的光线方向向量;
使用用于所述光线的所述非标准化的光线方向向量来对所述3D场景中的所述光线执行相交测试;以及
使用所述相交测试的结果以用于绘制所述3D场景的所述图像。
12.根据权利要求11所述的方法,还包括:基于所述非标准化的光线方向向量的幅度,将用于在所述相交测试中使用的所述光线的裁剪距离缩放一定量。
13.根据权利要求12所述的方法,其中所述缩放所述光线的所述裁剪距离包括:将用于所述光线的所述裁剪距离变换到Manhattan空间中。
14.根据权利要求11至13中的任一项所述的方法,其中所述压缩格式是八面体向量格式。
15.根据权利要求14所述的方法,其中所述八面体向量格式使用两个参数来引用八面体上的位置。
16.根据权利要求11至13中的任一项所述的方法,其中所述解包用于所述光线的经压缩的所述光线方向数据包括:确定表示所述3D场景的三维空间中的所述光线的方向的三个分量。
17.根据权利要求11至13中的任一项所述的方法,其中所述对所述光线执行相交测试包括以下各项中的一项或多项:
执行基元相交测试,所述基元相交测试标识所述光线与所述3D场景中的基元的相交;
标识所述光线与所述3D场景中的一个或多个基元的边界框的相交;以及
标识所述光线与表示所述3D场景中的几何形状的一部分的位置的球体的相交。
18.根据权利要求11至13中的任一项所述的方法,其中用于所述光线的核心光线数据被存储在所述存储器中,而用于所述光线的至少一些非核心光线数据被存储在分离的存储器中,其中经压缩的所述光线方向数据被包括在用于所述光线的所述核心光线数据中。
19.一种光线压缩方法,包括:
获得在光线跟踪系统中要被处理的光线的光线方向数据,所述光线方向数据包括表示要被绘制的3D场景的三维空间中的所述光线的方向的三个分量;
根据使用两个参数来引用八面体上的位置以表示所述光线方向的八面体向量格式,压缩用于所述光线的所述光线方向数据;
将用于所述光线的经压缩的所述光线方向数据存储在存储器中,以用于在对所述光线执行相交测试中的后续使用;
基于所述光线的非标准化的光线方向向量的幅度来将所述光线的裁剪距离缩放一定量,其中,所述非标准化的光线方向向量是所述光线的未压缩的光线方向向量在所述八面体上的投影;以及
存储所述光线的经缩放的裁剪距离。
20.一种用于在光线跟踪系统中使用的光线压缩模块,所述光线压缩模块被配置为:
获得在所述光线跟踪系统中要被处理的光线的光线方向数据,所述光线方向数据包括表示要被绘制的3D场景的三维空间中的所述光线的方向的三个分量;
根据使用两个参数来引用八面体上的位置以表示所述光线方向的八面体向量格式,压缩用于所述光线的所述光线方向数据;
使得用于所述光线的经压缩的所述光线方向数据被存储在存储器中,以用于在对所述光线执行相交测试中的后续使用;
基于所述光线的非标准化的光线方向向量的幅度来将所述光线的裁剪距离缩放一定量,其中,所述非标准化的光线方向向量是所述光线的未压缩的光线方向向量在所述八面体上的投影;以及
使得所述光线的经缩放的裁剪距离被存储。
CN201810608534.0A 2017-06-14 2018-06-13 光线跟踪系统和方法以及光线压缩方法和模块 Active CN109087384B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311270845.8A CN117237513A (zh) 2017-06-14 2018-06-13 光线跟踪系统和方法、在光线跟踪系统中处理数据的方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/622,315 2017-06-14
US15/622,315 US10290143B2 (en) 2017-06-14 2017-06-14 Compressed ray direction data in a ray tracing system

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202311270845.8A Division CN117237513A (zh) 2017-06-14 2018-06-13 光线跟踪系统和方法、在光线跟踪系统中处理数据的方法

Publications (2)

Publication Number Publication Date
CN109087384A CN109087384A (zh) 2018-12-25
CN109087384B true CN109087384B (zh) 2023-10-24

Family

ID=62528237

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202311270845.8A Pending CN117237513A (zh) 2017-06-14 2018-06-13 光线跟踪系统和方法、在光线跟踪系统中处理数据的方法
CN201810608534.0A Active CN109087384B (zh) 2017-06-14 2018-06-13 光线跟踪系统和方法以及光线压缩方法和模块

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202311270845.8A Pending CN117237513A (zh) 2017-06-14 2018-06-13 光线跟踪系统和方法、在光线跟踪系统中处理数据的方法

Country Status (3)

Country Link
US (4) US10290143B2 (zh)
EP (2) EP4053799A1 (zh)
CN (2) CN117237513A (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10970914B1 (en) * 2019-11-15 2021-04-06 Imagination Technologies Limited Multiple precision level intersection testing in a ray tracing system
GB2599182B (en) * 2021-03-23 2022-10-26 Imagination Tech Ltd Intersection testing in a ray tracing system
GB2599184B (en) 2021-03-23 2022-11-23 Imagination Tech Ltd Intersection testing in a ray tracing system
GB2599185B (en) * 2021-03-23 2022-08-24 Imagination Tech Ltd Intersection testing in a ray tracing system
GB2599181B8 (en) * 2021-03-23 2024-09-18 Imagination Tech Limited Intersection testing in a ray tracing system
GB2599188B (en) 2021-03-23 2022-10-12 Imagination Tech Ltd Intersection testing in a ray tracing system
GB2599187B (en) 2021-03-23 2022-09-21 Imagination Tech Ltd Intersection testing in a ray tracing system
GB2599186B (en) * 2021-03-23 2022-10-12 Imagination Tech Ltd Intersection testing in a ray tracing system
GB2599183B (en) * 2021-03-23 2022-10-12 Imagination Tech Ltd Intersection testing in a ray tracing system
GB2612681B (en) * 2021-09-24 2024-01-31 Apple Inc Ray intersection testing with quantization and interval representations
EP4345757A3 (en) * 2022-09-27 2024-04-17 Imagination Technologies Limited Ray tracing
GB2622293A (en) * 2023-03-08 2024-03-13 Imagination Tech Ltd Data compression and decompression methods and systems in ray tracing

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6489955B1 (en) * 1999-06-07 2002-12-03 Intel Corporation Ray intersection reduction using directionally classified target lists
WO2009063319A2 (en) * 2007-11-15 2009-05-22 Mental Images Gmbh Shallow bounding volume hierarchies for accelerated ray tracing
GB201705598D0 (en) * 2016-04-26 2017-05-24 Imagination Tech Ltd Dedicated ray memory for ray tracing

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5704024A (en) * 1995-07-20 1997-12-30 Silicon Graphics, Inc. Method and an apparatus for generating reflection vectors which can be unnormalized and for using these reflection vectors to index locations on an environment map
US6337684B1 (en) 1998-05-29 2002-01-08 Hewlett-Packard Company Surface normal compression/decompression storing two vector components
GB0216668D0 (en) 2002-07-17 2002-08-28 Imagination Tech Ltd Method and apparatus for compressed data storage and retrieval
US8237711B2 (en) * 2007-11-19 2012-08-07 Caustic Graphics, Inc. Tracing of shader-generated ray groups using coupled intersection testing
US8217935B2 (en) * 2008-03-31 2012-07-10 Caustic Graphics, Inc. Apparatus and method for ray tracing with block floating point data
US8421801B2 (en) * 2008-09-09 2013-04-16 Caustic Graphics, Inc. Ray tracing using ray-specific clipping
US9424685B2 (en) * 2012-07-31 2016-08-23 Imagination Technologies Limited Unified rasterization and ray tracing rendering environments
US10140751B2 (en) * 2013-08-08 2018-11-27 Imagination Technologies Limited Normal offset smoothing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6489955B1 (en) * 1999-06-07 2002-12-03 Intel Corporation Ray intersection reduction using directionally classified target lists
WO2009063319A2 (en) * 2007-11-15 2009-05-22 Mental Images Gmbh Shallow bounding volume hierarchies for accelerated ray tracing
GB201705598D0 (en) * 2016-04-26 2017-05-24 Imagination Tech Ltd Dedicated ray memory for ray tracing

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Christian Eisenacher et al.Sorted Deferred Shading for Production Path Tracing.《Computer Graphics Forum》.2013,第32卷(第4期),第125-132页. *
Quirin Meyer et al.On Floating-Point Normal Vectors.《Computer Graphics Forum》.2010,第29卷(第4期),第1405-1409页. *

Also Published As

Publication number Publication date
US11816780B2 (en) 2023-11-14
CN117237513A (zh) 2023-12-15
US20240078740A1 (en) 2024-03-07
EP3416136A1 (en) 2018-12-19
EP3416136B1 (en) 2022-05-25
US20190236832A1 (en) 2019-08-01
US10290143B2 (en) 2019-05-14
EP4053799A1 (en) 2022-09-07
US10769842B2 (en) 2020-09-08
US20180365879A1 (en) 2018-12-20
US20190236833A1 (en) 2019-08-01
CN109087384A (zh) 2018-12-25

Similar Documents

Publication Publication Date Title
CN109087384B (zh) 光线跟踪系统和方法以及光线压缩方法和模块
US11574097B2 (en) Deep learning based identification of difficult to test nodes
US10657306B1 (en) Deep learning testability analysis with graph convolutional networks
US9177351B2 (en) Multi-primitive graphics rendering pipeline
KR102003655B1 (ko) 그래픽 프로세싱에서 셰도우 레이들에 대한 트리 횡단을 위한 시작 노드 결정
US20210158155A1 (en) Average power estimation using graph neural networks
EP3940649A1 (en) Methods and systems for constructing ray tracing acceleration structures
US11379420B2 (en) Decompression techniques for processing compressed data suitable for artificial neural networks
CN109727186B (zh) 一种基于SystemC面向GPU片元着色任务调度方法
US20200372603A1 (en) Techniques for efficiently accessing memory and avoiding unnecessary computations
CN108010113B (zh) 一种基于像素着色器的深度学习模型执行方法
CN111383314A (zh) 一种验证着色器函数的方法、装置及计算机存储介质
WO2023129276A1 (en) Bounding volume hierarchy box node compression
US20240119634A1 (en) Compression and decompression of sub-primitive presence indications for use in a rendering system
EP3940650A1 (en) Methods and systems for constructing ray tracing acceleration structures
CN118334230A (zh) 用于实时渲染应用程序的次表面散射
Zhang et al. Directionlet transform based on GPU
CN117156149A (zh) 用于渲染系统中的子图元存在指示的压缩和解压缩
CN117152276A (zh) 用于渲染系统中的子图元存在指示的压缩和解压缩
CN115546381A (zh) 光线跟踪系统中的数据变换
CN117152275A (zh) 用于渲染系统中的子图元存在指示的压缩和解压缩
CN117152279A (zh) 用于渲染系统中的子图元存在指示的压缩和解压缩

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
GR01 Patent grant
GR01 Patent grant