按需的几何图形和加速结构形成的制作方法
【专利说明】按需的几何图形和加速结构形成
[0001]背景
[0002]领域
[0003]在一个方面,下列涉及使用在3D空间中定义的几何图形输入的渲染系统。
[0004]相关技术
[0005]来自3D场景描述的图像渲染(作为示例渲染输出)可以使用各种方法来实现。一种方法使用光栅化技术,其中,图元从3D坐标映射到2D屏幕空间,以便确定可视表面,随后该可视表面可被纹理化和着色(shade)。另一种方法是使用光线跟踪,这涉及跟踪穿过3D空间的光线。光线跟踪可以获得更好的反射和折射模型效果,并且能够产生高度复杂和完全精确的图像。
[0006]光栅化和光线跟踪两者使用几何图形数据作为输入来定义位于3D场景中的对象。几何图形数据定义各表面在场景中的范围,但是未定义例如它们的最终着色和纹理。不过,详细的几何图形可以产生现实和有乐趣的计算机制图体验的重要进步。在对象的细节与存储表示该对象的几何图形数据所需的存储器量之间可以有折衷。
[0007]概述
[0008]一个方面涉及一种用于3D渲染的机器实现方法。该方法包括访问描述位于3D场景中的几何图形的几何图形数据,其中将根据该3D场景产生渲染,所述数据描述用以产生最终的几何图形的几何图形控制点和可以在几何图形控制点上执行的程序修正,渲染将基于所述最终的几何图形。该方法还包括使用最终几何图形产生几何图形范围数据,每个几何图形范围数据建立3D场景中定义的体积与一系列几何图形控制点之间的关联,该几何图形控制点在程序修正后(如果有的话)产生分别在该体积内的最终几何图形。
[0009]此类方法还可以包括通过识别3D空间中的体积来定义将在3D场景中跟踪的光线,并使用几何图形范围数据识别在3D空间中的识别的体积中产生最终几何图形的几何图形控制点,其中在3D空间中的体积中将检验光线的子集的交叉点。随后,该方法还包括对那些识别的几何图形控制点执行任何程序修正以在识别的体积中产生最终的几何图形,并随后检验最终几何图形与光线子集的交叉点。
[0010]该方法还可以包括产生包括包围3D场景的各自部分的单元的加速结构,并使用该加速结构识别最终几何图形的待被检测与不同光线的交叉点的各自子集。该方法还可以包括使用提示数据来定义在几何图形范围数据中引用的、3D场景中的体积。该方法还可以包括使程序修正与在3D场景的体积内产生最终几何图形所需的几何图形范围数据相关联,几何图形范围数据与该3D场景的体积有关。
[0011]该方法还可以进一步包括使用光栅化子系统和光线跟踪子系统两者来进行渲染,其中每个子系统对最终几何图形的各部分做出请求,并响应于该请求,通过执行与几何图形范围数据相关联的程序修正来产生最终几何图形,其中,该几何图形范围数据与包围最终几何图形的被请求部分的3D场景的体积相关联。
[0012]该方法还可以进一步包括产生具有的详细程度取决于请求是源于光线跟踪子系统还是光栅化子系统的最终几何图形。
[0013]该方法还可以进一步包括响应来自光线跟踪子系统的请求,产生在3D场景的一部分内的定型加速结构和在该3D的该部分内的最终几何图形。
[0014]该方法还可以进一步包括产生具有叶片单元的粗糙的加速结构并将该粗糙的加速结构的叶片单元用作几何图形范围数据。
[0015]该方法还可以进一步包括收集针对粗糙的加速结构的单元进行跟踪的光线,以及通过在调度收集的光线的遍历操作之前在该粗糙的加速结构的特定单元内动态产生定型加速结构,遍历针对该粗糙的加速结构的特定单元收集的光线。
[0016]该方法还可进一步包括响应于调度程序指示在定型加速结构的各部分内产生最终几何图形。
[0017]该方法还可以进一步包括在源几何图形数据上的预通(pre-pass)中执行访问和产生,该源几何图形数据包括顶点数据和两组或多于两组顶点连通性数据。
[0018]可以在几何图形控制点上执行的程序修正可以包括用于产生用于光线跟踪的定型几何图形的程序修正和用于产生用于光栅化的定型几何图形的程序修正。
[0019]各方面还可以提供产生几何图形范围数据,其包括产生指示当产生关于3D场景中定义的体积的最终几何图形时所要求的几何图形扩张量的提示,在3D场景中定义的体积与几何图形范围数据的该部分相关联。
[0020]各方法可以通过访问与控制点相关联的提示来实现访问,该提示指示当使用该控制点执行程序修正以产生最终几何图形时可能产生的几何图形的量的边界。
[0021]另一方面提供一种用于3D渲染的几何图形处理方法。该方法包括从源几何图形数据产生位于3D场景中的几何图形图元并定义一组分块(tile)对象列表。每个分块对象分块包含指示来自一组源几何图形的哪个源几何图形产生在2D图像的各像素的各自分块的边界内的几何图形图元的数据。该方法还包括产生包括单元的图形的加速结构,每个单元定义在3D场景中的各自体积并通过以下方式根据该场景渲染2D图像:使用分块对象列表以识别在该2D图像的每个像素处的可视表面,并使用该加速结构根据已识别的可视表面跟踪3D场景中的光线以识别由光线中的每个光线相交(如果有的话)的图元,并产生有助于每个像素处的可视表面最终着色的信息。
[0022]另一方面提供一种用于图形渲染的3D几何图形处理方法。该方法包括定义待在源几何图形的各部分上执行的相应的一组修正过程,以便产生位于3D场景的各自部分中的最终几何图形并产生包围3D场景的各部分中的每个部分的加速结构的各自单元并与该单元相关联。相应的一组修正过程被执行是为了在该单元内产生最终几何图形。该方法还包括定义一组分块对象列表。每个分块对象列表识别源几何图形和待在识别的源几何图形上执行的相应的一组修正过程,以在将根据3D场景渲染的2D图像内的各像素的分块内产生最终几何图形,并通过在逐个分块的基础上识别2D图像内各像素的可视表面来渲染该2D图像。渲染包括根据每个分块的分块对象列表识别源几何图形,并在源几何图形上执行该组修正过程以产生最终几何图形。在该分块中每个像素的可视表面基于所产生的最终几何图形来识别,并且为了完成一组像素的渲染,各光线从各像素的可视表面发出并在3D场景中遍历。各光线在3D场景中遍历。
[0023]另一方面提供一种用于图形渲染的3D几何图形处理方法。该方法包括通过对源几何图形应用一个或多个几何图形修正过程来从源几何图形产生最终几何图形,产生的最终几何图形受限于位于据此得到2D渲染的3D场景中的最终几何图形的子集;并且基于所产生的最终几何图形的一个或多个消费者对所产生的最终几何图形的特定部分指示的需求来控制所产生的最终几何图形的特定部分的缓存。
[0024]另一方面提供一种用于图形渲染的3D几何图形处理方法,该方法包括通过向源几何图形应用一个或多个几何图形修正过程来从源几何图形产生最终几何图形,所述产生通过多个独立的生产来表征,每个生产产生受限于位于3D场景中的最终几何图形的子集的最终几何图形;并通过将最终几何图形的特定子集的请求收集到各组中并基于调度标准来调度最终几何图形的多个独立的生产,并根据调度标准相对排序多个独立的生产。
[0025]另外的方面提供一种用于图形渲染的3D几何图形处理方法,该方法包括通过向源几何图形应用一个或多个几何图形修正过程从源几何图形产生最终几何图形,所述产生通过多个独立的生产来表征,每个生产产生受限于位于3D场景中的最终几何图形的子集的最终几何图形;并通过将最终几何图形的特定子集的请求收集到各组中并基于调度标准来调度最终几何图形的多个独立的生产,并根据调度标准相对排序多个独立的生产。
[0026]这些方面的任一方面可以在计算系统中实现。此类计算系统可以包括可编程单元,该可编程单元可以被编程以实现几何图形修正过程、控制过程、着色处理,该着色过程包括用于对由光栅化所确定的可视表面着色且也用于对光线交叉点着色的着色过程。该计算系统可以包括固定的或有限功能单元,例如用于光线跟踪操作(诸如穿过加速结构遍历光线或检验光线与几何图形图元的交叉点)的固定或有限功能单元。实现本公开各方面的系统可以包括光栅化子系统和光线跟踪子系统。这些不同的子系统可以在具有不同软件的公用硬件上实现。包括纹理采样和混合的其他辅助硬件可以设置在此类系统中。此类系统可以包括用于存储源几何图形的一个或多个存储器,以及用于存储最终几何图形的高速缓冲存储器。这些存储器可以是存储器层次结构的一部分。此类系统可以是便携式装置(诸如平板电脑或智能手机、笔记本电脑或台式电脑)的一部分,或被嵌入,诸如嵌入在诸如电视或家电的装置内。
[0027]附图简述
[0028]图1描绘用于按需进行几何图形处理的示例系统的组件;
[0029]图2A-C描绘在执行光栅化和光线跟踪两者的系统中的用于按需几何图形的示例过程的各方面;
[0030]图3描绘一种示例实施,通过该示例实施,源几何图形数据可以通过API提交,并且源几何图形数据可以包括提示,该提示指示或可用于推导从源几何图形数据的特定组或单元产生的最终几何图形的体积边界。
[0031]图4描绘视椎体和位于其中的分块;
[0032]图5-6描绘具有由平面补丁定义的壳体的Bezier补丁表面的示例;
[0033]图7描绘基于与镶嵌几何图形相关的信息定义加速结构的示例过程,诸如调整将用于将3D场景细分为不同部分的加速结构的糙程度,其用于按需形成这些不同部分的最终几何图形的目的;
[0034]图8描绘多分辨率几何图形生成的示例过程;
[0035]图9描绘用于多分辨率几何图形生成的源几何图形数据的存储;
[0036]图10描绘调度几何图形和/或加速结构形成任务的示例过程;
[0037]图11描绘可被用于调度几何图形和/或加速结构形成任务的数据的示例;
[0038]图12描绘表示光线遍历状态的数据的示例;
[0039]图13描绘功能单元的示例模块结构;
[0040]图14描绘可被用于实现图13的功能单元的系统单元的示例框图;
[0041]图15描绘可以作为图14的示例单元的一部分的矢量化执行单元的示例。
[0042]详细描述
[0043]减少表示对象的表面的定义所需的存储器的量的技术包括将对象的表面指定为具有控制点的补丁,该控制点可用于产生各图元的顶点。另外,图元顶点可以用作镶嵌和几何图形着色器或位移引擎的输入,位移引擎能够通过将较大的图元切成较小的图元来放大图元的数量,或以其他方式使几何图形变形,使得在这些另外的几何图形操作之后的几何图形范围不同于原始范围。
[0044]在不受约束的存储器资源环境中,简单产生整个3D场景的最终几何图形并将其存储在快速随机存取存储器中是可接受的。然而,在其中快速存储器资源受约束的计算环境中,分配足够的存储器来存储此类数据可能是不可能或不可取的。
[0045]下列涉及用于减少存储几何图形所需的存储器占用,以便渲染给定复杂程度图像的方法。下面公开的各方面涉及用以渲染的光栅化和光线跟踪方法两