具有保守边界的五维光栅化转让专利

申请号 : CN201180076181.0

文献号 : CN104025180B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : T·G·阿凯奈-莫勒J·K·尼尔森C·J·穆克伯格

申请人 : 英特尔公司

摘要 :

5D光栅器中的逐块测试输出用于透镜参数(u,v)和时间t两者以及深度z的区间。这些区间是当前块的(1)可视透镜区域、(2)三角形覆盖该块的时间、以及(3)三角形在块内的深度范围这三者的保守边界。

权利要求 :

1.一种用于图形处理的方法,包括:

使用移动中的平面方程为移动中的并且散焦的三角形计算多个块的深度区间,其中所述移动中的平面方程具有比移动中的并且散焦的三角形更大的深度;以及如果块位于深度区间的有效范围之外,则拒绝该块。

2.如权利要求1所述的方法,其特征在于,包括:为所述块计算对于一时间区间有效的深度区间。

3.如权利要求1所述的方法,其特征在于,包括:为所述块计算在透镜坐标范围内有效的深度区间。

4.如权利要求3所述的方法,其特征在于,包括:如果块位于所述深度区间之外,则拒绝该块。

5.如权利要求4所述的方法,其特征在于,包括:使用所述深度区间来拒绝单个的样本。

6.如权利要求5所述的方法,其特征在于,包括:将所述深度区间用于像素着色。

7.如权利要求1所述的方法,其特征在于,包括:计算用于定界的针对每个三角形的诸个常数。

8.如权利要求7所述的方法,其特征在于,包括:将所述诸个常数用于计算所述深度区间。

9.一种用于图形处理的设备,包括:

使用移动中的平面方程为移动中的并且散焦的三角形计算多个块的深度区间的装置,其中所述移动中的平面方程具有比移动中的并且散焦的三角形更大的深度;以及如果块位于深度区间的有效范围之外,则拒绝该块的装置。

10.如权利要求9所述的设备,其特征在于,包括:为所述块计算对于一时间区间有效的深度区间的装置。

11.如权利要求9所述的设备,其特征在于,包括:为所述块计算在透镜坐标范围内有效的深度区间的装置。

12.如权利要求11所述的设备,其特征在于,包括:如果块位于所述深度区间之外,则拒绝该块的装置。

13.如权利要求12所述的设备,其特征在于,包括:使用所述深度区间来拒绝单个的样本的装置。

14.如权利要求13所述的设备,其特征在于,包括:将所述深度区间用于像素着色的装置。

15.如权利要求9所述的设备,其特征在于,包括:计算用于定界的针对每个三角形的诸个常数的装置。

16.如权利要求15所述的设备,其特征在于,包括:将所述诸个常数用于计算所述深度区间的装置。

17.一种用于图形处理的装置,包括:

处理器,所述处理器用于使用移动中的平面方程为移动中的并且散焦的三角形计算多个块的深度区间,以及如果块位于深度区间的有效范围之外,则拒绝该块,其中所述移动中的平面方程具有比移动中的并且散焦的三角形更大的深度;以及存储器,其耦合至所述处理器。

18.如权利要求17所述的装置,其特征在于,所述处理器为所述块计算对于一时间区间有效的深度区间。

19.如权利要求17所述的装置,其特征在于,所述处理器为所述块计算在透镜坐标范围内有效的深度区间。

20.如权利要求19所述的装置,其特征在于,如果块位于所述深度区间之外,则所述处理器拒绝该块。

21.如权利要求20所述的装置,其特征在于,所述处理器使用所述深度区间来拒绝单个的样本。

22.如权利要求21所述的装置,其特征在于,所述处理器将所述深度区间用于像素着色。

23.如权利要求17所述的装置,其特征在于,所述处理器计算用于定界的针对每个三角形的诸个常数。

24.如权利要求23所述的装置,其特征在于,所述处理器将所述诸个常数用于计算所述深度区间。

25.如权利要求17所述的装置,其特征在于,所述处理器是图形处理单元。

说明书 :

具有保守边界的五维光栅化

背景技术

[0001] 本发明涉及图形处理,更具体地,涉及运动模糊的图形化描绘。
[0002] 运动模糊是一种重要的视觉效果,这种视觉效果减少了时间混扰并且使处于移动中的内容看上去更平滑。然而,以实时三维图形来高效呈现运动模糊并不简单。在运动模糊的随机光栅化中,在空间和时间两者上对移动中的几何图元进行采样,使用大的样本集来获得具有低噪声水平的高质量运动模糊图像。对于样本位置中的每一个,执行内部测试以确定移动中的图元是否覆盖该样本。这一在x、y和t空间中的覆盖测试一般比在传统的光栅器中的内部测试更为昂贵。
[0003] 同时支持运动模糊和景深的随机光栅器在五维(5D)域(x,y,u,v,t)中对每个三角形执行可视性测试。这个域由空间位置(x,y)、透镜坐标(u,v)和时间t组成。这些可视性测试在计算上比标准2D光栅化中的单个可视性测试要昂贵得多。另外,对于每个三角形,对每个像素执行许多次(例如,16-64次)这类测试以获得具有低噪声水平的图像。
[0004] 五维(5D)光栅化预期将在未来的某个时候成为DirectX和OpenGL的一部分。这将使得能够呈现具有准确和正确的景深和运动模糊的图像。
[0005] 附图简述
[0006] 参照以下附图描述一些实施例。
[0007] 图1是根据一实施例的来自交互式观察仪的屏幕截图;
[0008] 图2是根据一实施例的移动中的轴对齐边界框的构建的描绘;
[0009] 图3是一个实施例的流程图;以及
[0010] 图4是一个实施例的示意描绘。
[0011] 详细描述
[0012] 5D光栅器中的逐块测试输出关于透镜参数(u,v)和时间t两者以及深度z的区间。这些区间是当前块的(1)可视透镜区域、(2)三角形覆盖该块的时间、以及(3)三角形在块内的深度范围这三者的保守边界。
[0013] 这一输出可被进一步沿图形流水线向下发送给像素着色器(如果需要的话),并且可由应用开发者用于各种目的。有意思的是这导致了保守型5D光栅器。在此之前,仅能够使用保守型2D光栅化。本发明将这种保守型2D光栅化扩展至一个全新的域,并且以此为起点,已发现具有这样的输出的保守型5D光栅化可被用于图形处理器上的动态碰撞检测以及焦散呈现。据申请人所知,图像处理器上的动态碰撞检测以前从未实现过,并且本发明所想到的焦散呈现方案将比以前的方法更高效。
[0014] 另外,本申请提供了一种用于计算移动的三角形上的保守深度区间的新方法。在一些实施例中,这使得遮挡剔除更为高效,并且既节省了计算机资源,也节省了存储器带宽使用。
[0015] 本申请提供了一种用于计算像素块上的运动模糊三角形上的保守深度的方法。这对于遮挡剔除(zmin/zmax剔除)和保守光栅化以及若干其它技术(诸如图形处理器上的动态碰撞检测以及焦散呈现)是有用的。
[0016] 通常,移动中的顶点被描述为pi=(1-t)qi+tri,t∈[0,1],而移动中的三角形被描述为p0p1p2。因此,现在具有t=0处的三角形q0q1q2和t=1处的三角形r0r1r2。
[0017] 假设这些点(例如p)是二维齐次坐标,即p=(px,py,pw)。推导出w坐标形式的保守深度。稍后,将示出在使用OpenGL和DirectX的标准投影矩阵时如何仅从已知w的值计算想要的归一化深度z/w。
[0018] 本申请将提供两种计算块(例如,像素块)上的保守深度的方法。在一些实施例中,这两种方法的效果可被组合,得出更收紧的保守深度。
[0019] 通过时间t=0(t=1)处的三角形来计算平面方程。该平面作为时间的函数以匀速移动,使得移动中的三角形总是在平面的一侧上。接下来,本申请将描述如何计算移动中的平面方程,该平面方程具有比移动中的三角形更大的深度。因此,这对于计算最大深度( )是有用的。可使用类似技术来计算最小深度( )。
[0020] 首先,计算t=0处的三角形的静态平面方程。该平面法线可表示为:
[0021] n0=(q2-q0)×(q1-q0). (1)
[0022] 为了确保平面向右侧方向移动,如果n0w<0,则对n0求反。则平面方程变为π0:n0·o+d0,其中d0=-n0·q0,并且o是平面上的任意一点。接着,计算速度v0。
[0023]
[0024] 这是t=1处的移动中的三角形的顶点上距离平面π0的最大带符号距离。此时,已创建移动中的平面方程,该平面沿平面法线方向移动:
[0025] Π0(t):n0·o+d0+v0t=0. (3)
[0026] 可以看到,已添加了项v0t,其(通过构造)确保三角形在移动中的平面方程Π0(t)的“下方”。如果Π0(t)不经过相机原点,例如
[0027]
[0028] 则Π0(t)在任何时候(t∈[0,1])都具有比移动中的三角形更大的深度。来自相机的与三角形相交的任何射线将在与平面相交之前与三角形相交。
[0029] 有时,t=1处的三角形的平面方程提供更好的平面方程供使用。事实上,在大多数情况下,在刚开始时,t=0处的三角形平面更好,而临近时间区间的终点,则t=1处的三角形平面更好。因此,希望也得到一种使用t=1处的平面方程的方法。
[0030] t=1处的平面法线为:
[0031] n1=(r2-r0)×(r1-r0). (5)
[0032] 再次,如果n1w<0,则对n1求反。为了确保t=0处的三角形位于新的平面方程的右侧(其中n1为法线),需要计算法线n1和t=0处的三角形的顶点之间的点积以计算d1:
[0033]
[0034] 则平面方程变为:π1:n1·o+d1。移动中的平面的速度v1以与上文中相同的方式计算:
[0035]
[0036] 移动中的平面方程变为:
[0037] Π1(t):n1·o+d1+v1t=0. (8)
[0038] 再次,还测试Π0(t)和相机原点d1+v1t≠0 之间的重叠,以确保平面是的保守近似。
[0039] 此时,得到两个平面方程,Π0和Π1,它们以匀速移动,而下一步是评估这些移动平面方程在一个块上的深度。在块的边角处的深度(x,y)被计算如下:
[0040]
[0041] 要注意的是,当分母变为0时,三角形的平面穿过视点,则在计算保守深度时不使用这样的平面。
[0042] 计算具有四个边角的块上的最大保守深度的正确方法则是取8个位置(x,y,t)的最大深度,即在时间t=0和t=1时四个块边角各一个。然而,由于方程被设计为要高效率地求值,因此求出一个位置处的深度就足够了。这在以下将被描述。如果vi>0,则仅需要求出t=1时的深度值,反之亦然。法线的x和y分量的符号被用于从剩余的四个边角中选择一个边角。例如,如果nx>0且ny<0,则将选择块的左边角中的一个(因为nx>0),并且在这两个中,将选择上面的边角(因为ny<0)。这将使一切变得非常高效。
[0043] 对于每个移动中的平面Π0和Π1,使用上述技术来生成一个最大深度值,称为和 块上的最收紧的深度 则被选为这些中的最小值:
[0044]
[0045] 并且可进行类似的计算来计算
[0046] 要注意的是,如果使用访问块并且计算时间区间 的光栅器(表明存在该块与移动中的三角形重叠的可能性),则可以使用进一步的优化。替代以上所描述的在t=0和t=1处求Π0和Π1的值,在 和 处求值。
[0047] 在图1中,已将三角形内插到位于t=0和t=1的中间的t=0.5。网格A和B显示了t=0.5处的两个平面Π0和Π1。在这种情况下,两个平面都在内插出的三角形上方。C轴是w轴。
[0048] 如图2中所见,通过在时间t=0和t=1之间内插三角形的轴对齐边界框(AABB)来构建该三角形的移动中的AABB。对于AABB的最近以及最远的四边形面,计算与块截椎的平面πi的相交时间 块截椎平面穿过原点并与块的各边对齐。
[0049] 给定最远四边形面的移动中的顶点pn=(1-t)qn+trn,AABB与块截椎平面相交ni·pn=0的时间给出如下:
[0050]
[0051] 在四边形面的四个移动中的顶点中,选择在负方向上据πi最远的那个。
[0052] 随后,对于 (此处示为t)计算wmax:
[0053]
[0054] 并且类似地计算 接着,使用这一技术来计算最终的最大值:
[0055]
[0056] 可执行模拟计算来计算最小深度,则 需要注意的是,这一过程必须对x和y块方向都执行。
[0057] 一种替换方式是使用n个顶点来计算移动中的AABB与块截椎平面相交的时间并且使用这些时间来计算对于t和 的w{min,max}。然而,对于深度的这些边界可比使用最近和最远四边形面稍稍更保守一些。
[0058] 到目前为止,本发明的公式已计算了w方向的深度,但对于OpenGL和DirectX,一般需要归一化深度:z/w。给定视线空间中的一点p,可应用来自DirectX的标准投影矩阵。在投影之后,z和w被表示为:
[0059] z=apz+bpw=apz+b (14)
[0060] w=pz,
[0061] 其中 且b=-aZnear,a,b>0(其中far为远,near为近)。在本发明的所有推导中,已计算w(=pz),并因此能够计算z=aw+b。这进而意味着,给定w,能够计算想要的归一化深度z/w,即z/w=(aw+b)/w。
[0062] 需要注意的是,w(t)和 仅当w(t)≠0 时在同一时间t具有局部最小值,因为 在b>0时作为w(w≠0)的函数严格递增。
[0063] 如果使用一种技术(例如,使用式(11))来计算最大归一化深度以及另一个最大归一化深度 (例如,使用式(14)),则
能够计算这两者的最小值作为组合的“最佳(best)”深度:
[0064]
[0065] 反之对于 也一样。这适用于任意数目的对于最小值函数的论证,只要参数表示保守深度。
[0066] 这一工作可被延伸至景深。由于现在有一个具有有限范围的透镜要处置,式(9)能够在更多情况下突然变为0。可通过计算透镜顶点到平面方程的带符号距离来检测三角形平面是否与凸多边形透镜相交。如果有至少一个正距离和一个负距离,则平面与透镜相交,则可直接禁止该平面的使用。还可使用围绕透镜形状的边界框,并使用该边界框的顶点用于以上所描述的各项计算。
[0067] 如果平面不与透镜相交,则需要通过块边角来计算深度。然而,这需要对透镜形状的边界框的全部四个边角来执行,而不是从原点(针孔相机被假设位于此)开始计算。
[0068] 还有,还可使用来自块访问光栅器的信息 并且使用该信息来进一步收紧保守深度。
[0069] 根据一些实施例中,图3所示的序列10可使用软件、固件和/或硬件来实现。在软件和固件实施例中,它可通过计算机执行的指令来实现,该计算机执行的指令被存储在例如光学存储、磁存储或半导体存储之类的非瞬态计算机可读介质上。
[0070] 在一个实施例中,图3的序列开始于三角形设置阶段12。计算定界所需的针对每个三角形的常数。接着,执行块测试14。在块测试中,为每个块计算u、v、t和z区间。如果块位于这些区间中的任意一个的有效范围之外,则该块被拒绝。接着,如框16所示,u、v和t区间被用于拒绝单个的样本。最后,在像素着色器中(框18),使u、v、t和z区间对像素着色器可用。这允许像素着色器中的新算法,诸如焦散呈现和动态碰撞检测。
[0071] 如图4所示的计算机系统130可包括通过总线104耦合至芯片组核逻辑110的硬驱动器134和可移除介质136。计算机系统可以是任何计算机系统,包括诸如智能电话、平板计算机或移动因特网设备之类的智能移动设备。键盘和鼠标120或其它常规部件可经由总线108耦合至芯片组核逻辑。在一个实施例中,核逻辑可经由总线105耦合至图形处理器112和中央处理器100。图形处理器112还可通过总线106耦合到帧缓冲器114。帧缓冲器114可通过总线107耦合至显示屏118。在一个实施例中,图形处理器112可以是利用单指令多数据(SIMD)体系结构的多线程、多核并行处理器。
[0072] 在软件实现的情况下,可将有关代码存储在任何适当的半导体、磁或光存储器中,包括主存储器132(如139示出的那样)或图形处理器中任何可用的存储器。因此,在一个实施例中,用于执行图5或6的序列的代码可被存储在诸如存储器132和/或图形处理器112和/或中央处理器100之类的非暂时机器或计算机可读介质中,且在一个实施例中,该代码可由处理器100和/或图形处理器112执行。
[0073] 图3是一流程图。在一些实施例中,这些流程图中描述的序列可以硬件、软件或固件来实现。在软件实施例中,诸如半导体存储器、磁存储器或光存储器之类的非瞬态计算机可读介质可用于存储指令,且可由处理器执行以实现图3中所示的序列。
[0074] 本文中所描述的图形处理技术可在各种硬件架构中实现。例如,图形功能可被集成在芯片集中。替代地,可使用分立的图形处理器。作为又一实施例,图形功能可由包括多核处理器的通用处理器实现。
[0075] 在本说明书通篇中对“一个实施例”或“一实施例”的引用意味着结合该实施例描述的特定特征、结构或特性包括在本发明包含的至少一个实现中。因此,短语“一个实施例”或“在一实施例中”的出现不一定指代同一实施例。此外,特定特征、结构或特性可按照与所说明的特定实施例不同的其他适当形式来创立,而且所有此类形式可涵盖在本申请的权利要求中。
[0076] 虽然已经针对有限个实施例描述了本发明,但本领域技术人员将会理解从中得出的多种修改和变化。所附权利要求旨在覆盖落入本发明的真实精神和范围中的所有这些修改和变化。