光线追踪中的数据压缩和解压缩方法和系统与流程
- 国知局
- 2024-09-14 14:29:22
本公开涉及执行用于光线追踪系统中的数据压缩和解压缩技术。
背景技术:
1、光线追踪是一种计算渲染技术,其用于通过通常从相机的视角在场景中跟踪光路(“光线”)来生成场景(例如,3d场景)的图像。光线时常朝向光源(例如,阴影光线)跟踪,但通常朝向(潜在的)场景几何形状跟踪。例如,初级光线被建模为源自相机,并且通过像素进入场景中。当光线横越场景时,其可能与场景内的物体相交,还可能产生更多光线。可对光线和物体之间的相交建模以创建逼真的视觉效果。
2、使用光线追踪渲染场景的图像可能涉及执行大量相交测试,例如执行数十亿个相交测试。通常使用多个多边形2d表面来表示物体本身,所述多个多边形2d表面的原子元素通常被称为“图元”(例如,三角形)。因此,相交测试涉及光线与用于表示物体的图元之间的交互。然而,通常不需要针对场景中的每个图元对每个光线进行详尽的相交测试,这样做也没有帮助作用。
3、为了减少需要执行的相交测试的数量,光线追踪系统可以生成加速结构,其中加速结构的每个节点表示场景内的区域。加速结构通常是分层的(例如具有树结构),使得其包括多个节点级别,其中靠近加速结构的顶部的节点表示场景中较大的区域(例如根节点可表示整个场景),并且靠近加速结构的底部的节点表示场景中较小的区域。“树节点”是指具有指向分层加速结构中的其他节点的指针的节点,即树节点在分层加速结构中具有子节点。“叶节点”一般是指具有指向一个或多个图元的一个或多个指针的节点,即叶节点在分层加速结构中不具有子节点。在一些示例中,叶节点可以简单地指图元或图元列表。换句话说,加速结构的叶节点表示场景中界定一个或多个图元的区域。加速结构在不同示例中可具有不同结构,例如栅格结构、八叉树结构、空间分割结构(例如k-d树)或层次包围体结构。节点可表示场景中的合适形状或区域(其在本文中可被称为“框”)。在一些示例中,节点表示场景中的轴对齐边界框(aabb),或定向边界框(obb)。加速结构的总体层次可被称为层次包围体结构(bvh),或者更一般地称为加速结构(as)。
4、构成物体的图元的数目确定场景中该物体的几何细节水平(lod)。在光线追踪系统中,几何lod通常相对于连续的一系列帧固定,因为场景的几何分辨率(以及因此用于表示物体的图元的数目)必须提前已知,以便计算加速结构的拓扑。已知的光线追踪系统无法实时动态地重新调整几何分辨率(即,每帧)。这其中一个原因是,通常用于使实时光线追踪易于执行的加速结构会限制结构内的对象的几何lod。
5、用于响应于光线追踪方案中的几何lod的变化而调适加速结构的已知方法是“重新适配”和“重建”。在重新适配期间,as内的体积和边界框的大小被改变。在实践中,这涉及改变与as中的节点相关联的区域的形状/体积/位置,例如,“分割平面”的位置,或bvh中的边界体积的范围。选择重新适配的结果以减少光线图元或光线框相交测试的数量。在重新适配之后,as的拓扑和节点结构不变,因此具体地说,重新适配是维持相同数目的节点。
6、在重建期间,会重建整个加速结构。例如,可以在应用新探试法来生成as的情况下执行重建,或者可以重新应用先前探试法以反映几何分辨率的变化。因此,还可以响应于场景内的变化来执行重建,例如场景中的一个或多个模型的几何lod的变化(例如,由于到物体的观察距离减小)。根据动态场景重建部分或全部as节点结构会耗费较高成本,并且通常大多数gpu硬件无法执行每个帧的重建。光线追踪中已知的经由纹理lod的变化来改变几何lod的另一种方法是“无镶嵌位移映射”。
7、组织as的常见方式是实现称为顶级加速结构(tlas)的(单个)高级as,其可以包含各自使用称为底层加速结构(blas)的第二as定义的(一个或多个)对象的一个或多个“实例”。tlas中定义的几何形状通常表示在“世界空间”中,并且一个或多个blas中包含的几何形状通常表示在“实例空间”(也称为对象空间)中。tlas和一个或多个blas一起构成as。这是在世界空间中存储对象的方便方式,例如,因为可以通过将指针插入到不同位置(可选地应用不同的变换矩阵)中的相同blas来纳入相同对象的多个版本。tlas的叶节点通常包含指向单个blas的指针。因此,tlas的叶节点可以是“实例变换节点”,即需要从世界空间到实例空间的空间坐标变换的节点。因此,部分重建和部分重新适配是可能实现的,例如,其中仅重建/重新适配blas的子集(也导致tlas的重建/重新适配)。然而,(部分)重新适配和(部分)重建的方法可能导致几何lod变化的问题,例如,当对象的几何分辨率由于lod模型的变化而突然变化时,对象出现“弹跳”。无镶嵌位移映射受以下事实的影响:在各种用例中无法保证水密渲染,并且也非常依赖于有效的纹理采样。
8、相比之下,光栅化方案中存在动态地改变几何lod(即,每帧)的技术。光栅化涉及定义包含几何形状的3d场景的观察窗口,并且从观察窗口生成要从3d场景渲染的2d像素阵列。在大多数光栅化方法中,光栅化图像由包括三角形图元的模型生成。较高的几何lod需要更多通常尺寸较小的图元。在光栅化场景的图元覆盖过多的屏幕像素的情况下,增加几何lod是有益的。例如,如果场景中的对象以更近(虚拟)的距离渲染,则用于表示该对象的表面的图元的直边缘可以变得可辨别,并且因此赋予对象锯齿状外观。这可以通过“镶嵌”(在这种情况下,意味着“细分”)构成对象的三角形图元(或一些其他基本多边形图元,例如四边形图元)以生成(通常为三角形)图元的细网格来解决,并且因此更好地近似平滑表面的外观。任何镶嵌表面通常是原始表面的近似,但这种近似的精确度可以通过增加生成的图元的数量来改善,这通常又会反过来导致图元更小。镶嵌/细分的量通常由几何lod以某一粒度(例如,每个场景、对象/模型、面、边缘、顶点、材料、纹理等)确定。然而,使用更多数量的三角形增加了渲染场景所需的处理工作量。
9、对象的表面的镶嵌(即细分)在称为“贴片”的表面的基本/原子区段上执行。贴片可以是多边形。例如,贴片可以是正方形、矩形(或一般四边形,例如梯形、平行四边形或菱形)或三角形。尽管多边形的贴片在任何空间(例如,世界、实例/模型/对象、视图等)中表示为平面,但其意图可以是使镶嵌贴片弯曲以准确地映射所表示对象的表面,例如通过向其施加位移映射以形成较高阶表面。然而,细分本身不在3维空间(例如,世界、实例/模型/对象、视图等)中执行,因为这在计算上效率较低。相反,镶嵌在2维空间中,即在贴片的域(其中贴片是平面的)中执行。此2d空间可以根据(u,v)参数定义,并且被称为“参数空间”或“域空间”。非镶嵌贴片通常占据2d域空间中的归一化区域,例如在四边形贴片的情况下的集合[0,1]2。这有利于(例如通过利用定点算术)简化计算。因此,镶嵌处理可独立于最终移位表面中存在的任何预期曲率而进行。光栅化方案中的镶嵌可以提前执行,或者可以实时执行(例如,基于每帧,以提供连续变化或视向依赖性的细节水平)。合适的镶嵌方法在以下公开内容中详细描述。
10、然而,光线追踪方法通常与实时(即,在线/动态)不兼容,例如,逐帧、对场景几何形状的几何lod更新。在某种程度上,这是因为在光线追踪中使用的表面及其固有加速结构需要大量的存储器,这将使整个表面的镶嵌以及必要地实时更新as不可行。换句话说,在光线追踪中,在生成加速结构之前,以所需的几何分辨率预镶嵌输入表面。因此,在已知的光线追踪方法中,每当几何分辨率发生变化时,需要重建整个as,例如bvh(这在使用当前大多数计算机系统的渲染期间通常无法实时实现)。
11、下文描述的实施方案仅以示例的方式提供,并且不限制解决用于在光线追踪时改变几何lod的已知方法和装置的任何或所有缺点的具体实现。
技术实现思路
1、提供本技术实现要素:是为了以简化形式介绍下文在具体实施方式中进一步描述的一系列概念。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用以限制所要求保护的主题的范围。
2、提供了一种压缩用于表示光线追踪系统中的位移信息数据的方法,其中位移信息指示要应用于由所述光线追踪系统渲染的场景中的几何形状的位移,所述方法包括:
3、检索表示所述位移信息的一对数据集,其中所述数据集中的第一数据集包括第一值阵列,并且所述数据集中的第二数据集包括第二值阵列;
4、从每一个所述第一阵列和所述第二阵列中的对应阵列位置检取值,其中所述检取值形成一对值,表示所述对应阵列位置的位移量值的上限和下限;
5、识别所述一对值满足多个预定条件中的哪一个;及
6、在压缩数据集中将所述一对值编码为单个值,其中所述单个值表示所识别的预定条件。
7、所述方法可能包括重复地对一对数据集中包括的所有值对执行编码,其中压缩数据集可能包括一对数据集中的所有信息的压缩位移信息。
8、表示位移信息的一对数据集可能表示已从表示要应用于场景中的几何形状的纹理的纹理像素数据采样的mipmap。优选地,数据集对表示特定细节水平(即几何或纹理细节水平)的位移信息
9、表示已标识的预定条件的编码单个值可以用比一对值中的每个值更少的位表示。编码的单个值可以是无符号整数。可以使用2或3位来表示编码的单个值。在一些示例中,对值各自用8位(即,总共16位)表示,其中值的第一阵列和第二阵列中的每个值是可以表示范围[0,1]中的归一化浮点值的归一化整数(在8位示例中,在0与255之间)。
10、所述方法可能包括压缩表示位移信息的多对数据集以形成多个压缩数据集,其中所述多个压缩数据集中的每个压缩数据集可以表示待渲染的场景中的不同纹理细节水平。
11、每个压缩数据集的每个胞元可以根据具有更精细的纹理细节水平的压缩数据集的多个区域对应的胞元来生成。每个压缩数据集的纹理细节水平可对应于几何细节水平。
12、所述方法还可以包括:解码压缩数据集以获得表示位移量值的上限和下限的至少一对值,其中压缩数据集与场景内的贴片相关联;确定包含贴片的包围体,其中包围体的至少一个维度根据所述一对值来确定;且响应于确定光线与包围体相交,取决于与贴片相关联的镶嵌指示,将贴片细分一次或多次以获得多个贴片子单元。
13、预定条件可以是值对由预定值范围涵盖,其中编码的单个值可以表示预定范围。预定范围可涉及位移量值(例如,图元的位移)。
14、可以保留用于将一对值编码为单个值的一个或多个值以表示要应用于场景中的几何形状的纹理的特性。例如,预定条件可以是一对值满足指示纹理属性(例如透明度)的预定条件(例如,两个值都是零)。一些值对可以落入一定范围内,并且不同的值对可以表示特殊情况,例如指示特定纹理属性。
15、数据集中的第一数据集可能包括表示最小位移的值的第一阵列,及数据集中的第二数据集可能包括表示最大位移值的第二阵列,其中位移量值的上限和下限可以由值对表示为相应的最大位移值和最小位移值。
16、数据集中的第一数据集可能包括中点位移值的第一阵列,及数据集中的第二数据集可能包括表示半宽度位移值的第二阵列,其中位移量值的上限和下限可以由值对表示为相应的中点值和半宽度值。
17、位移量值的上限和下限可以被配置成限定与所述场景相应位置相关联的包围体的边界,以供所述光线追踪系统使用。
18、还提供了一种用于光线追踪系统中的硬件单元,其中所述硬件单元被配置成:
19、检索表示位移信息的一对数据集,其中数据集中的第一数据集包括值的第一阵列,并且数据集中的第二数据集包括值的第二阵列;
20、从第一阵列和第二阵列中的每一个阵列中对应阵列位置检索值,其中检索值形成一对值,所述一对值表示对应阵列位置的位移量值的上限和下限;
21、标识一对值满足多个预定条件中的哪一个条件;且将所述一对值编码为压缩数据集中的单个值,其中所述单个值表示所标识的预定条件。
22、还提供了一种解压缩数据以获取表示光线追踪系统中的位移信息数据的方法,其中位移信息指示要应用于由所述光线追踪系统渲染的场景中的几何形状的位移,所述方法包括:
23、检索包括值阵列的压缩数据集,其中所述值阵列中的每个值是表示多个预定条件中的一个的编码值;
24、从所述压缩数据集检取值;
25、取决于所检索的值,选择所述多个预定条件中的一个;
26、响应于确定所选择的预定条件表示预定值范围:
27、生成一对值,其中所述一对值共同编码与所述预定值范围相关联的相应上限和下限,其中所述上限和下限涉及位移量值的上限和下限。
28、解压缩数据的方法还可以包括重复检索和解压缩压缩数据集中包括的值以获得多个生成的值对,其中多个生成的值对可以形成表示位移信息的一对数据集,其中数据集中的第一数据集可以包括值的第一阵列,并且数据集中的第二数据集包括值的第二阵列。
29、值的第一阵列可以表示最小位移,值的第二阵列可以表示最大位移,而其中每个生成的对表示相应的最大位移值和最小位移值。
30、值的第一阵列可以表示中点值,值的第二阵列可以表示半宽度位移,而其中每个生成的对可以表示相应的中点值和半宽度位移值。
31、压缩数据集的每个值可以用比生成的值对中的每个值更少的位来表示。表示位移量值的上限和下限的生成值对可以被配置成限定与场景相应位置相关联的包围体的边界,以供所述光线追踪系统使用。
32、还提供了一种用于光线追踪系统中的硬件单元,其中所述硬件单元被配置成:
33、检索包括值阵列的压缩数据集,其中所述值阵列中的每个值是表示多个预定条件中的一个的编码值;
34、从所述压缩数据集检索值;
35、取决于所检索的值,选择所述多个预定条件中的一个;
36、响应于确定所选择的预定条件表示预定值范围:
37、生成一对值,其中所述一对值共同编码与所述预定值范围相关联的相应上限和下限,其中所述上限和下限涉及位移量值的上限和下限。
38、还提供了一种图形处理单元,其包括根据上述硬件单元的硬件单元。
39、还提供了一种集成电路定义数据集,所述集成电路定义数据集当在集成电路制造系统中处理时对集成电路制造系统进行配置,以制造上述硬件单元或上述图形处理单元。
40、还提供一种计算机可读代码,该计算机可读代码被配置为在该代码运行时使本文所述的任一种方法得以执行。
41、还可以提供一种在光线追踪系统中执行贴片的镶嵌以用于在场景内渲染图像的方法,其中所述贴片表示场景内对象表面的一部分,所述对象使用第一空间坐标系在3d空间中定义,所述方法包括:
42、确定包含所述贴片的包围体;
43、确定光线是否与所述包围体相交;
44、响应于确定所述光线与所述包围体相交,并根据与所述贴片相关联的镶嵌指示,将所述贴片细分一次或多次以获得多个贴片子单元,其中所述贴片子单元中的一个或多个不表示图元;
45、在所述贴片的所述细分之后,确定至少一个所述贴片子单元包括图元;及
46、执行所述光线与所述图元之间的相交测试以用于渲染所述场景的图像。
47、还可以提供一种用于光线追踪系统中的硬件镶嵌单元,其包括体积相交测试逻辑、镶嵌逻辑和图元相交测试逻辑,其中所述镶嵌单元被配置成:
48、确定包含所述贴片的包围体;
49、确定光线是否与所述包围体相交;
50、响应于确定所述光线与所述包围体相交,并根据与所述贴片相关联的镶嵌指示,将所述贴片细分一次或多次以获得多个贴片子单元,其中所述贴片子单元中的一个或多个不表示图元;
51、在所述贴片的所述细分之后,确定至少一个所述贴片子单元包括图元;及
52、执行所述光线与所述图元之间的相交测试以用于渲染场景的图像。
53、本文描述的方法(即,用于压缩表示光线追踪系统中的位移信息的数据或解压缩数据以获得用于表示光线追踪系统中的位移信息的数据)可以体现在硬件单元中。可以提供一种在集成电路制造系统中制造用于执行如本文所述的压缩或解压缩的硬件单位。可以提供一种集成电路定义数据集,该集成电路定义数据集在集成电路制造系统中被处理时配置该系统以制造所述硬件单元。可以提供一种非暂态计算机可读存储介质,其上存储有硬件单元的计算机可读描述,所述计算机可读描述当在集成电路制造系统中处理时,使得所述集成电路制造系统制造包含如本文描述的硬件单元的集成电路。
54、还可以提供一种集成电路制造系统,包括:非暂态计算机可读存储介质,其上存储有硬件单元的计算机可读描述;布局处理系统,其被配置成处理所述计算机可读描述,以便生成包含所述硬件单元的集成电路的电路布局描述;及集成电路生成系统,其被配置成根据所述电路布局描述制造所述硬件单元。
55、可提供用于执行本文描述的任一种方法的计算机程序代码。可提供非暂态计算机可读存储介质,在其上存储有计算机可读指令,所述计算机可读指令当在计算机系统中执行时,使所述计算机系统执行本文描述的任一种方法。
56、如技术人员显而易见的,上述特征可以适当地组合,并且可与本文所述的示例的任一个方面组合。
57、附图说明
58、现在将参考附图来详细描述示例,在附图中:
59、图1示出了根据本文所描述的示例的光线追踪系统;
60、图2示出了在实例/模型/对象空间中定向的贴片,以及包含由光线相交的贴片的轴对齐边界框(在该空间中);
61、图3示出了图2的贴片已经变换成贴片空间,其中贴片由轴对齐边界框(在该空间中)容纳;
62、图4a示出施加到图3的贴片的第一镶嵌水平;
63、图4b示出了子轴对齐边界框,其包含由贴片的镶嵌区形成的子贴片,其中光线与子边界框相交;
64、图4c示出了图4b中所示的子贴片的顶点法线,其中顶点法线指示图元位移;
65、图4d示出了根据顶点法线数据已移位的子贴片内的图元,以及与移位图元相交的光线;
66、图5是在光线穿过加速结构期间执行贴片的镶嵌的第一方法的流程图;
67、图6a示出了由轴对齐边界框容纳的图2的贴片,边界框与不同光线相交;
68、图6b示出了子轴对齐边界框,其包含由图6a中的贴片的镶嵌区形成的子贴片;
69、图7a示出了根据较高细节水平在图6b中形成的子贴片和包含另一子贴片的另一子轴对齐边界框的进一步镶嵌;
70、图7b示出了已移位的另一子贴片内的图元,以及与移位图元相交的光线;
71、图8a到图8g示出七个不同单级(又名局部)镶嵌图案,以及构成相应图案的图元和/或子贴片;
72、图9a和图9b示出了两个示例,通过这两个示例,可以保守地填充包含贴片的轴对齐边界框;
73、图10示出了针对每个相应细节水平指示贴片区域的最小位移数据和最大位移数据的网格;
74、图11a和图11b示出了在两个细节水平下的压缩最小/最大位移数据的两个示例;
75、图12a说明初始镶嵌一个输入四边形贴片的步骤,图12b说明进一步镶嵌中间子三角形的步骤,及图12c示出了包含由初始镶嵌步骤生成的三角形图元的输入四边形贴片的示例所得镶嵌图案,随后是中间子三角形的进一步镶嵌步骤;
76、图13示出了图12c中的贴片如何根据镶嵌算法与贴片所关联的预定几何细节水平(即,每顶点镶嵌因子)一致地镶嵌的示例;
77、图14示出了三种2d贴片类型及其相应(分段仿射)变换到2d域空间中;
78、图15示出了在其中实现图形处理系统的计算机系统;及
79、图16示出了用于生成包含图形处理系统的集成电路的集成电路制造系统。
本文地址:https://www.jishuxx.com/zhuanli/20240914/294337.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。