光线追踪中的镶嵌方法和系统与流程
- 国知局
- 2024-09-14 14:54:08
本公开涉及在光线追踪系统中执行动态几何细节扩展水平的技术。
背景技术:
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、提供了一种在光线追踪系统中执行贴片的镶嵌以在场景内渲染图像的方法,其中所述贴片表示场景内的对象的表面的一部分,所述对象使用第一空间坐标系在3d空间中定义,所述方法包括:
3、确定包含所述贴片的包围体;
4、确定光线是否与所述包围体相交;
5、响应于确定所述光线与所述包围体相交,并根据与所述贴片相关联的镶嵌指示,将所述贴片细分一次或多次以获得多个贴片子单元,其中所述贴片子单元中的一个或多个不表示图元;
6、在所述贴片的所述细分之后,确定至少一个所述贴片子单元包括图元;及
7、执行所述光线与所述图元之间的相交测试以用于渲染所述场景的图像。
8、所述方法还可以包括与次级包围体执行另一光线相交测试,其中所述次级包围体可以包含所述多个贴片子单元的子集;并且可以包括响应于确定所述光线与所述次级包围体相交,进一步细分所述贴片子单元的所述子集以获得多个另外的贴片子单元。
9、多个贴片子单元可以包括一个或多个子贴片,或者一个或多个图元和一个或多个子贴片的组合。
10、一个或多个子贴片可被配置成根据镶嵌指示细分成多个图元。
11、所述方法可以包括在执行所述光线与所述图元之间的相交测试之前:标识一个或多个贴片子单元包括多个相邻图元;确定包含所述多个相邻图元的图元组包围体;以及确定所述光线是否与所述图元组包围体相交。应了解,相邻图元优选地是连续的,即,使得图元之间的边界不存在间隙。
12、可以响应于确定光线与图元组包围体相交而执行光线与图元之间的相交测试,并且图元可以是多个相邻图元中的图元。
13、所述方法还可以包括在执行所述光线与所述图元之间的所述相交测试之前,检索与所述图元相关联的位移信息并移位所述图元,其中可以在所述光线与所述移位图元之间执行所述相交测试。应了解,在一些情况下,一次测试一个图元(并且因此允许排除对剩余图元的测试的可能性)比测试子贴片内的所有图元更有效,后者需要多个测试和多个图元位移。
14、在确定光线是否与包围体相交之前,该方法可以包括:将光线变换成贴片对准空间坐标系,即3d空间坐标系,其中贴片的平面可以与贴片对准空间的两个轴线平行,并且其中所确定的包含贴片的包围体可以是贴片对准空间坐标系中的轴对齐边界框。
15、将光线变换成贴片对准空间可以包括应用仿射变换。换句话说,变换优选地是单个仿射变换,包括一个矩阵乘法,其保留线(共线性)和平行性,并且其中可以不保留距离和角度。
16、当在贴片对准空间中定义时,贴片可以是矩形。例如,贴片可以是正方形。更一般地,当在第一空间坐标系中定义时,贴片可以是平行四边形。
17、多个贴片子单元中的每一个可以是三角形。
18、贴片的细分可以包括在贴片内创建一个或多个新边缘,其中每个新边缘可以连接两个现有贴片顶点,或者可以连接一个现有顶点和一个定义为平分现有贴片边缘的新顶点。细分可以保留贴片内所有现有顶点的位置。
19、位移信息可以包括:与对位移方向进行编码的贴片的顶点相关联的法线;以及对图元的位移量值进行编码的位移数据。
20、位移数据可以预定,并可以包括贴片内可获得的每个细分级别的相应位移贴图。应当理解,细分水平对应于细节水平,其中细节水平可以是基于几何或纹理的细节水平。
21、位移数据可以包括一对网格,其中该对中的每个网格可以包含与贴片的对应区域相关联的元胞,其中网格可以分别编码贴片的对应区域的最小位移值和最大位移值。
22、可以从限定压缩位移数据的压缩网格计算一对网格,其中压缩网格可以包括与贴片的对应区域相关联的多个元胞,其中每个元胞可以包括编码最大位移值和最小位移值的单个值。
23、轴对齐边界框可根据贴片内的一个或多个图元的最大位移而沿着一个或多个轴扩展。应当理解,边界框的此扩展反映图元在其最终3d空间中的范围,并减轻假阴性相交测试。优选地,轴对齐边界框可以沿着一个或多个轴进一步扩展一个较小绝对值(称为附加填充值),例如最小的可计算表示的绝对值。此附加填充值有利地确保避免假阴性,从而确保光线追踪方法中的水密性和确定性。
24、所述方法可以包括,在将所述贴片和所述光线变换到所述贴片对准空间坐标系中之前:确定所述光线与对象空间轴对齐边界框相交,其中所述对象空间轴对齐边界框可以被布置成包含贴片定向包围体;并响应于确定所述光线与所述对象空间轴对齐边界框相交,将所述贴片、光线和所述贴片定向包围体变换为所述贴片对准空间坐标系。
25、镶嵌指示可包括镶嵌因子和镶嵌阈值,其中贴片内多个顶点中的每个顶点可与镶嵌因子相关联。
26、所述方法可包括在细分所述贴片或子贴片之后,计算所述多个顶点中的每一个顶点和由于细分而形成的任何新顶点的经更新镶嵌因子。
27、提供一种用于光线追踪系统中的硬件镶嵌单元,其包括体积相交测试逻辑、镶嵌逻辑和图元相交测试逻辑,其中所述镶嵌单元被配置成:
28、确定包含所述贴片的包围体;
29、确定光线是否与所述包围体相交;
30、响应于确定所述光线与所述包围体相交,并根据与所述贴片相关联的镶嵌指示,将所述贴片细分一次或多次以获得多个贴片子单元,其中所述贴片子单元中的一个或多个不表示图元;
31、在所述贴片的所述细分之后,确定至少一个所述贴片子单元包括图元;及
32、执行所述光线与所述图元之间的相交测试以用于渲染场景的图像。
33、可以提供一种硬件镶嵌单元,其被配置为执行本文所描述的任一种方法。
34、可以提供一种图形处理单元,其包括如上所述的硬件镶嵌单元。
35、还提供了一种集成电路定义数据集,所述集成电路定义数据集当在集成电路制造系统中处理时,将集成电路制造系统配置成制造如本文描述的硬件镶嵌单元或图形处理单元。
36、提供一种计算机可读代码,该计算机可读代码被配置为在该代码运行时使本文所述的任一种方法得以执行。
37、还可以提供一种压缩用于表示光线追踪系统中的位移信息的数据的方法,其中所述位移信息是指要应用于由所述光线追踪系统渲染的场景中的几何形状的位移,所述方法包括:
38、检索表示所述位移信息的一对数据集,其中所述数据集中的第一数据集包括第一值阵列,并且所述数据集中的第二数据集包括第二值阵列;
39、从每一个所述第一阵列和所述第二阵列中的对应阵列位置检取值,其中所述检取值形成一对值,表示所述对应阵列位置的位移量值的上限和下限;
40、识别所述一对值满足多个预定条件中的哪一个;及
41、在压缩数据集中将所述一对值编码为单个值,其中所述单个值表示所识别的预定条件。
42、还可以提供一种解压缩数据以获得用于表示光线追踪系统中的位移信息的数据的方法,其中所述位移信息是指要应用于由所述光线追踪系统渲染的场景中的几何形状的位移,所述方法包括:
43、检索包括值阵列的压缩数据集,其中所述值阵列中的每个值是表示多个预定条件中的一个的编码值;
44、从所述压缩数据集检取值;
45、取决于所检索的值,选择所述多个预定条件中的一个;
46、响应于确定所选择的预定条件表示预定值范围:
47、生成一对值,其中所述一对值共同编码与所述预定值范围相关联的相应上限和下限,其中所述上限和下限涉及位移量值的上限和下限。
48、还可以提供一种用于光线追踪系统中的硬件单元,其中所述硬件单元被配置成:
49、检索包括值阵列的压缩数据集,其中所述值阵列中的每个值是表示多个预定条件中的一个的编码值;
50、从所述压缩数据集检索值;
51、取决于所检索的值,选择所述多个预定条件中的一个;
52、响应于确定所选择的预定条件表示预定值范围:
53、生成一对值,其中所述一对值共同编码与所述预定值范围相关联的相应上限和下限,其中所述上限和下限涉及位移量值的上限和下限。
54、本文描述的方法(即,在光线追踪系统中执行贴片的镶嵌)可体现在硬件镶嵌单元中。可以提供一种在集成电路制造系统中制造用于在光线追踪系统中执行贴片的镶嵌的硬件镶嵌单元的方法。可以提供一种集成电路定义数据集,所述集成电路定义数据集当在集成电路制造系统中处理时,将所述系统配置成制造如本文所述的硬件镶嵌单元。可以提供一种非暂态计算机可读存储介质,其上存储有硬件单元的计算机可读描述,所述计算机可读描述当在集成电路制造系统中处理时,使得所述集成电路制造系统制造包含硬件镶嵌单元的集成电路。
55、可提供一种集成电路制造系统,其包括:非暂态计算机可读存储介质,其上存储有所述硬件镶嵌单元的计算机可读描述;布局处理系统,其被配置成处理所述计算机可读描述,以便产生包含所述硬件镶嵌单元的集成电路的电路布局描述;及集成电路生成系统,其被配置成根据所述电路布局描述来制造所述硬件镶嵌单元。
56、可提供用于执行本文描述的任一种方法的计算机程序代码。可提供非暂态计算机可读存储介质,在其上存储有计算机可读指令,所述计算机可读指令当在计算机系统中执行时,使所述计算机系统执行本文描述的任一种方法。
57、如技术人员显而易见的,上述特征可以适当地组合,并且可与本文所述的示例的任一个方面组合。
58、附图说明
59、现在将参考附图来详细描述示例,在附图中:
60、图1示出了根据本文所描述的示例的光线追踪系统;
61、图2示出了在实例/模型/对象空间中定向的贴片,以及包含由光线相交的贴片的轴对齐边界框(在该空间中);
62、图3示出了图2的贴片已经变换成贴片空间,其中贴片由轴对齐边界框(在该空间中)容纳;
63、图4a示出施加到图3的贴片的第一镶嵌水平;
64、图4b示出了子轴对齐边界框,其包含由贴片的镶嵌区形成的子贴片,其中光线与子边界框相交;
65、图4c示出了图4b中所示的子贴片的顶点法线,其中顶点法线指示图元位移;
66、图4d示出了根据顶点法线数据已移位的子贴片内的图元,以及与移位图元相交的光线;
67、图5是在光线穿过加速结构期间执行贴片的镶嵌的第一方法的流程图;
68、图6a示出了由轴对齐边界框容纳的图2的贴片,边界框与不同光线相交;
69、图6b示出了子轴对齐边界框,其包含由图6a中的贴片的镶嵌区形成的子贴片;
70、图7a示出了根据较高细节水平在图6b中形成的子贴片和包含另一子贴片的另一子轴对齐边界框的进一步镶嵌;
71、图7b示出了已移位的另一子贴片内的图元,以及与移位图元相交的光线;
72、图8a到图8g示出七个不同单级(又名局部)镶嵌图案,以及构成相应图案的图元和/或子贴片;
73、图9a和图9b示出了两个示例,通过这两个示例,可以保守地填充包含贴片的轴对齐边界框;
74、图10示出了针对每个相应细节水平指示贴片区域的最小位移数据和最大位移数据的网格;
75、图11a和图11b示出了在两个细节水平下的压缩最小/最大位移数据的两个示例;
76、图12a说明初始镶嵌一个输入四边形贴片的步骤,图12b说明进一步镶嵌中间子三角形的步骤,及图12c示出了包含由初始镶嵌步骤生成的三角形图元的输入四边形贴片的示例所得镶嵌图案,随后是中间子三角形的进一步镶嵌步骤;
77、图13示出了图12c中的贴片如何根据镶嵌算法与贴片所关联的预定几何细节水平(即,每顶点镶嵌因子)一致地镶嵌的示例;
78、图14示出了三种2d贴片类型及其相应(分段仿射)变换到2d域空间中;
79、图15示出了在其中实现图形处理系统的计算机系统;及
80、图16示出了用于生成包含图形处理系统的集成电路的集成电路制造系统。
本文地址:https://www.jishuxx.com/zhuanli/20240914/296318.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。