计算机图形处理器及在三维图像显示屏上呈现三维场景的方法

文档序号:6501721阅读:255来源:国知局
专利名称:计算机图形处理器及在三维图像显示屏上呈现三维场景的方法
技术领域
本发明涉及一种计算机图形处理器和一种呈现三维场景的N个视图的方法。
背景技术
最近,人们对在三维图像显示屏上提供三维图像和三维场景很感兴趣。人们相信继彩色图像之后,三维图像将是成像技术中下一个重大的革新。由包括三维模型输入和视点输入的呈现器(renderer)来呈现显示图像所需的信息(数据)。基本地,可以通过使用立体对(进入观看者两只眼睛里的两幅不同图像)、全息技术或者显示器中多平面来生成三维印象。
产生立体图像有几种方式。可以将图像在二维显示器上时间复用,但这要求观看者佩戴有例如LCD快门的眼镜。当在同一时刻显示立体图像时,则可以通过使用头盔显示器或者使用偏振光眼镜(那么要以正交偏振光来产生图像)将各图像引入适当的眼睛。观看者所佩戴的眼镜能有效地将视图引导到每只眼睛里。眼镜中的快门或者偏振器与帧率同步,以控制该引导过程。为了防止闪烁,相对于同等二维图像,帧率必须翻倍或者分辨率减半。这种系统的缺点是两幅图像仅提供了有限的“环视”能力。此外,必须佩戴的眼镜也会产生某些影响。对于那些不习惯佩戴眼镜的观察者来说眼镜是令人讨厌的,对于那些已经戴眼镜的人来说,因为附加的一副眼镜不总合适,所以眼镜也是个潜在的问题。
为了不接近观察者的眼睛,也可以用诸如视差栅栏(parallaxbarrier)的分割屏幕装置在显示屏上将两幅立体图像分开,例如,如US 5969850中所示。从无需专用眼镜来观看三维图像的意义上讲,该显示屏的视图是自动立体显示的,他们常常仅为空间中位于固定位置处的一个观看者工作。然而,观看区很窄。在观看区之外,观看者会看到导致令人讨厌的观看效果的多幅图像或者是立体倒置。在实践中,这意味着对于多种应用,例如在起居室内,观看区是这么小以至于观看者不得不坐在一个特定位置才能看到三维图像。
因此,具有能提供N视图(即在显示屏上有很多个视图)的显示设备的系统是一种发展趋势。这样的设备可以在显示屏上提供三维图像,并且该三维图像在较大视角范围对于多个观看者来说是可观看的。
为了显示这些图像,特别是在三维游戏中显示这些图像,使用了呈现器。呈现器必须呈现这些图像的数据。对于简单的立体显示器,即视点数目为2,呈现器必须呈现两幅图像的数据,而对于更复杂的三维,例如自动立体显示器,视图的数目大量增加,目前可以达到N~10,对于未来的三维显示器预期会达到N~100,这就要求呈现器能提供更多视图并从而支持更多数据。该呈现器可以是显示设备本身的一部分,或者可以是提供图像信息的独立设备,将该图像信息作为显示设备寻址模块的输入提供给该图像设备。首要方面是不仅必须生成许多视图信息而且最好使每个视点的图像质量充分相同。
当前的呈现技术使用了呈现器,该呈现器基于三维模型和单独视图的视点,为每个所述单独视图呈现图像信息,即数据。虽然这种方法对N=2的三维成像是有用的,但为了增加视野(field of view)并能从许多个不同视点看到图像,这种不断增加视点数目的具体实现要求必须呈现大量具有充分相同图像质量的、具有高速度和高细节度的视点。
图6说明了基本立体设备的问题。未坐在适当观看区的观看者会感到迷惑混乱。该观看区是很窄的。在观看区外,观看者将看到多幅图像或者立体倒置,这都导致非常讨厌的观看效果。在实际中,这意味着对于多种应用,例如在起居室内,这样的观看区太小以至于观看者必须坐在一个特定的位置才能看到所有内容。
视差显示器(parallax display)是一类多视图显示器,该显示器能为在不同观看位置同时观看的多位观看者示出三维场景的固定一组不同透视视图(图像)。
视差显示器所能示出的视图数目(N)决定了可表现的三维-图像质量和总体深度范围。当相邻的视图更相似的时候,图像质量就高。这为观看者头部运动产生平滑的(逼真的)透视过渡。此外,大部分时间里两个相邻视图是轻微重叠的。就意味着如果视图相似性降低,“双轮廓”或(重像)会增加。然而,因为更多深度需要视图间有更多的差异(更少的相似性),所以相邻视图的相似性限制了这些视图可贡献的深度量。
因此,需要大量的透视视图(N)就要求有成本合算的方法来生成这些视图。
一种方法是根据所有视图的三维描述生成这些视图。这就可能有来自十分不同角度的视点。生成所有多幅视图的一种昂贵实例是使用单独的多条图形流水线(甚至可能处于不同的PC或其它设备中)。这要求在图形流水线之间进行同步,并在这些流水线中复制所有的模型和纹理数据。
然而,一种实例是仅复制部分呈现流水线。在图7中示出了传统的反向映射呈现流水线。图7示出了反向映射呈现流水线最后几个级的结构,其特点为可编程顶点和所访问像素的像素着色。可编程着色器PPS可以将每个像素位置处可获得的属性用于计算局部表面色彩。当需要纹理数据时,将纹理空间重采样器TSR用于获得来自纹理存储器TM的由纹理坐标给定的纹理采样。基于接收自光栅化引擎SSR的内插坐标以及由先前纹理拾取的(所谓的相关纹理化(dependenttexturing))和/或计算得到的任何结果,像素着色器PPS生成了这些纹理坐标。当PPS确定了像素表面色彩后,将所得到的像素片断继续发送到边缘抗锯齿失真和隐藏表面消除(EAA & HSR)单元。通常,该单元针对隐藏表面消除使用Z缓存,并针对边缘抗锯齿失真使用多重采样(利用相关的子采样缓存和下采样逻辑)。当用预滤波器(通常为box滤波器)呈现出所有图元时,应用下采样将子采样合成为最终像素分辨率的色彩,。
对于待呈现图元的每个顶点,顶点着色器PVS可为像素着色器PPS修改和准备数据。顶点着色器向光栅化引擎设置单元RS提供的数据通常包括一些属性,如漫反射和/或高光色彩、纹理坐标、(齐次)屏幕坐标、以及有时出现的额外数据,如表面法线或着色处理所需的其它数据。将这些属性提供给屏幕空间光栅化引擎SS,该光栅化引擎通过从这些顶点属性中选择屏幕坐标作为光栅化处理的驱动变量,用扫描线算法来遍历(traverse)位于图元在屏幕上的投影内的像素。
在这样的流水线中,光栅化引擎遍历屏幕上场景中的图元投影(诸如三角形)。该投影对于每个视图是不同的。所以,需要为每个视图复制光栅化引擎SS(包括设置单元RS)以及流水线中该光栅化引擎之后所有单元。因此,为每个视图复制了光栅化引擎设置单元RS、屏幕空间光栅化引擎SSR、纹理空间重采样器TSR、PPS及TSR、边缘抗锯齿失真和隐藏表面消除EAA & HSR单元以及帧存储器FB。这在硬件(大量复制)、存储器带宽(对于所有的流水线复制来说单独拾取纹理数据)以及处理要求(针对每个视图重复执行像素着色计算)方面都是高花费。
因此本发明的目标是提供一种能够无需过多计算量来呈现具有充分相等的图像质量的N幅图像的系统和方法。
发明概述该目标可以通过如权利要求1所述的计算机图形处理器、如权利要求9所述的呈现三维图像的N幅视图的方法以及如权利要求14所述的计算机程序产品来解决。
因此,提供了具有用于呈现三维图像的N个视图的呈现器的计算机图形处理器。所述呈现器包括光栅化引擎SS,用于针对所有N个视图,在所述三维图像的图元的表面上遍历表面栅格。此外,所述呈现器包括着色器模块PPS,用于确定来自光栅化引擎SS输出的色彩并将着色后的色彩采样及其屏幕坐标一起提供给N个屏幕空间重采样器SSR,每个屏幕空间重采样器SSR根据N个视图之一,对所述着色器模块PPS确定的着色后的色彩采样进行重采样。
该实现的效率高得多,这是因为对于N个不同视图,仅执行一次表面遍历、纹理拾取以及着色计算。将产生的着色后的色彩重新用于所有视图。另外,在图元表面上遍历任何栅格的能力提供了更多呈现自由度。
根据本发明的一个方面,所述计算机图形处理器还包括存储纹理贴图的纹理存储器TM。所述表面栅格是根据与所述图元相关联并存储在所述纹理存储器TM中的纹理贴图得到的。因为在纹理栅格上获得纹理采样不需要重新采样,所以将与纹理贴图相关联的栅格用作表面栅格是有优势的。
根据本发明的另一方面,如果a)所述纹理贴图是被独立寻址的,b)所述纹理贴图是基于二维纹理的,以及c)顶点处的纹理坐标不组成退化的图元,则将与纹理存储器TM中所存储的纹理贴图之一相关联的栅格选为表面栅格。
根据本发明的另一方面,如果所述纹理存储器TM中所存储的多于一个纹理贴图满足所述三个条件a)-c),则选择纹理空间中具有最大区域的纹理贴图。该纹理贴图潜在具有最多细节和最高频率,因为纹理空间重采样处理会引起不需要的模糊和锯齿失真,所以最好避免在对该纹理进行纹理空间重采样处理。
根据本发明的另一方面,所述计算机图形处理器还包括对显示屏幕进行寻址的模块。所述呈现器具有三维模型的输入和至少一个视点的输入,用于呈现提供给该寻址模块的图像信息。该呈现器包括初始部分70,该部分70具有三维模型和主视点的输入,用于以主视点Z-堆栈91、94的形式呈现对象,该主视点Z-堆栈91、94包括具有色彩信息和Z-值的堆栈层S1、S2、S3。而且,该呈现器包括Z-堆栈构造器,在该Z-堆栈构造器中根据由初始级生成的主视点Z-堆栈(91、94)构建附加视点的Z-堆栈97。该呈现器还包括图像信息封闭语义(occlusion semantics)级,用于根据Z-堆栈97中生成图像信息79。
因此,通过N个屏幕空间重采样器可以仅生成少数适当远离的视图,而很少Z-堆栈用于生成中间邻近的视图。因此,可以存在多于一个主视点,这些主视点每个可以由其自身SSR生成。
本发明还涉及一种呈现三维图像的N个视图的方法。针对所有N个视图,在所述三维图像的图元表面上遍历表面栅格。生成光栅化引擎SS的输出的色彩并提供着色后的色彩采样及其屏幕坐标。对于N个视图的每个视图,对所述着色器模块PPS确定的着色后的色彩采样进行重采样。
本发明基于仅进行一次表面遍历、纹理拾取以及着色计算的思想。然后将所产生的着色后的色彩重用于所有N个视图。
参考下文描述的实施例,本发明的这些和其它方面得以阐明并且将是明显的。


在图中图1示出了根据第一实施例的用于多视图呈现的前向映射流水线;图2示意性说明了根据第二实施例的用于显示设备和方法的呈现器管道(pipe);图3说明了图2的用于显示设备和方法的呈现器管道的细节;图4说明了根据图2的呈现器管道和方法的细节;图5说明了根据图2的方法的进一步细节;图6说明了基本视差栅栏显示器所遇到的问题,以及图7示出了多视图呈现的反向映射流水线。
这些图并非按比例绘制。一般地,这些图中相同成分表示为相同参考数字。
优选实施例详述图1示出了根据本发明第一实施例的用于多视图呈现的前向映射流水线,第一实施例是优选实施例。该呈现流水线,尤其是其后端,包括可编程顶点着色器PVS、光栅化引擎设置单元RS、表面空间光栅化引擎SS、纹理存储器TM、纹理空间重采样器TSR、可编程像素着色器PPS、屏幕空间重采样器SSR、边缘抗锯齿失真单元EAA、隐藏表面消除单元HSR以及帧缓存器FB。
首先,针对单个视图描述该呈现流水线的操作。根据本发明的混合呈现流水线结构基于反向映射像素着色结构和前向映射流水线的组合。
可编程顶点着色器PVS(例如,Erick Lindholm、Mark J.Kilgard和Henry Moreton于2001年八月在Proceedings Siggraph 2001第149-158页所著的“A user-programmable vertex engine(用户可编程的顶点引擎)”中所描述的)适于针对待呈现图元的每个顶点为可编程像素着色器PPS修改和准备数据。可编程顶点着色器PVS提供给光栅化引擎SS(用于内插)的数据通常包括一些属性,如漫反射和/或高光色彩、纹理坐标、(齐次)屏幕坐标、以及有时出现的额外数据,如表面法线或着色处理所需的其它数据。
边缘抗锯齿失真单元EAA和隐藏表面消除单元HSR针对隐藏表面消除使用Z缓存,并针对边缘抗锯齿失真使用多重采样(利用相关的子采样缓存和下采样逻辑)。
在前向纹理映射结构中,只有在屏幕空间重采样器级SSR之后,在普通屏幕像素栅格上才可获得纹理采样。而且,光栅化引擎一次仅可以遍历一个栅格,所以,当和前向映射结构一样在纹理栅格上进行光栅化并允许多纹理化时,光栅化引擎必须从很多纹理中选择出一个,并在相关联的栅格上遍历图元。可以用多遍(multi-pass)方式处理多纹理,使得将这些纹理重采样到屏幕像素栅格后,可以对其进行合成。但是,这样会使EAA & HSR单元中的片断缓存器拥塞。也会阻止高级特性,如相关纹理化,或具有相反性质的纹理模型,如环境映射凹凸贴图(environment mapped bump mapping)(其中,在每个栅格位置的凹凸贴图信息决定了定位环境贴图的位置,可能会导致从环境贴图到图元表面及屏幕的一对多前向映射)。根据本发明,可以确信,为了避免这些问题,屏幕空间重采样器SSR可以就像仅有一个纹理贴图与图元关联那样映射纹理采样。所以,表面色彩的着色应该在屏幕空间重采样处理之前进行。
表面空间光栅化引擎SS在“表面栅格”上遍历图元,即,在提供图元表面二维参数化的坐标系中的栅格上进行遍历。与纹理贴图相关联的栅格提供这种表面栅格,并优选用作表面栅格(因为在纹理栅格上获取纹理采样不需重采样)。但是,如果缺少纹理贴图,或者例如当纹理是一维或三维时,可以选择另一栅格。除了(如在前向纹理映射情况下)与每个栅格位置关联的透视映射屏幕坐标之外,可以在该栅格上线性地内插属性。该表面空间光栅化引擎SS在该栅格的多个位置上内插属性(包括二级纹理坐标)。然后,像素着色器PPS对该表面栅格的栅格位置上的属性进行操作,并且如果有任何二级纹理(secondary texture)与图元相关联,就用标准纹理空间重采样器TSR进行反向映射,以便从这些纹理中获得色彩。如果从纹理贴图中选择表面栅格,那么该“初级(primary)”纹理级的纹理像素拾取可以由前向映射流水线的4D MIP映射重构处理来实现。该处理是一种沿坐标轴的各向异性滤波的形式,并且在标准的纹理空间重采样器中通常可用各向异性滤波。被拾取的纹理采样以及其他属性可由像素着色器程序用于计算当前栅格位置的表面色彩。一旦对表面栅格上的采样进行了着色,就用屏幕空间重采样器SSR将该色彩喷涂(splat)到屏幕像素上,其中,EAA & HSR单元可以合成不同图元的贡献。
表面空间光栅化引擎SS将会包含额外的第一流水线级(在正常的设置和遍历级之后),在该级中确定表面栅格。这在正常光栅化引擎设置之前完成。
该表面栅格可以从纹理贴图之一得到,这样不必由纹理空间重采样器TSR重采样该纹理贴图(4D MIP映射除外)。因此,栅格设置级可以检查存储在纹理存储器TM中、与图元关联的纹理贴图。对于符合提供表面栅格条件的纹理贴图,其必须满足三个要求。第一,其必须不是相关寻址;第二,其必须是二维纹理(一维和三维纹理不适合遍历二维表面);第三,顶点纹理坐标不应该组成退化的图元(例如,其中所有的纹理坐标连成一线,生成有效一维纹理)。
如果一个以上的纹理符合条件,则栅格设置级选取纹理空间中具有最大区域的纹理该纹理具有潜在的最多细节和最高频率(这样最好能避免该纹理的纹理空间重采样处理,因为该处理过程会导致不需要的模糊和锯齿失真)。
如果没有符合条件的纹理可用(例如,假设有一个简单的高氏(Gouraud)着色图元),通过为每个顶点分配虚构的“纹理坐标”,可以在图元的表面上选择虚构的栅格,以便光栅化引擎进行遍历。然后,如同对纹理栅格一样(除了不能对这些坐标进行纹理拾取外),光栅化引擎遍历该虚构栅格。优点是该表面上得到的线性内插为透视提供了正确的高氏着色,需要更多信息请参考Baoquan Chen、Frank Dachille以及Arie Kaufman于1999年10月在Proceedings of IEEEVisualization’99的第89-96页发表的“Forward image mapping(前向图像映射)”。将每个顶点的x和y屏幕坐标分配为虚构纹理坐标是一种选择。因为当把“纹理像素”映射到屏幕上时,每个顶点的齐次w仍被考虑在内,所以要注意该选择并不意味着光栅化引擎遍历屏幕像素。另一个选择(对于诸如三角形的平坦表面)是在眼睛空间内旋转三维顶点坐标,使得旋转表面的法线与眼睛空间z轴一致,然后选择旋转的眼睛空间x和y坐标作为每个顶点的虚构栅格坐标。
在图元表面遍历任何栅格的能力提供了很大的自由度。例如,这种自由度可以用于避免任何瓶颈(bottleneck)和切变(shear)问题,这些问题可能会与特定纹理栅格到屏幕的映射相关联。它可以用于遍历非平坦的图元(例如,通过由其表面参数化决定的二维栅格来遍历贝塞尔面片(Bezier patch),并用前向映射直接将表面色彩喷涂到屏幕上)。它也可以用于图元运动方向上的光栅化引擎,从而可以沿着光栅化方向应用一维滤波器,以便有效率地实现运动模糊。
可编程“像素”着色器PPS和纹理空间重采样器TSR(如果存在几个纹理,对于串行或并行拾取纹理采样,该纹理空间重采样器可以是一个或多个)与传统流水线中的相应部分对应。像素着色器PPS接收某一位置的一组(内插的)属性,包括纹理和屏幕坐标。纹理坐标与着色程序一起经由纹理空间重采样器TSR确定定位这些纹理贴图的位置。在把纹理坐标发送给纹理空间重采样器TSR以实现相关纹理化之前,着色器还可以改变纹理坐标,这与传统的流水线中的方式完全相同。
可编程着色器PPS将着色后的色彩以及相关联的屏幕坐标一起传送给屏幕空间重采样器SSR。这些坐标通常为非整数,但这与传统像素着色器流水线中当进行超级采样时像素着色器接收子像素(sub-pixel)屏幕位置的方式类似。
因此,着色后的色彩是对一个位置进行计算的结果,而且并不依赖于光栅化引擎SS所遍历的栅格。这说明现有着色器程序无需进行修改就可以在根据本发明的结构上运行。在表面空间进行可编程着色具有一些优点和缺点。除了前向映射所能带来的高质量抗锯齿失真之外,一个主要优点是就透视映射而言可以对其单独考虑。此时,纹理空间重采样器TSR不必处理映射到屏幕的透视映射。大部分时间里,将其用于执行从纹理栅格到另一栅格的仿射变换(affinetransformation)。相比透视映射所需的更一般形状的覆盖区域(footprint),基于标准双线性/三线性探测的纹理空间重采样器能更好地近似该仿射映射所需的滤波器覆盖区域,因此这种重采样处理的质量将会更高。
只有屏幕空间重采样器SSR必须处理透视重采样,并且该处理仅对表面栅格上的着色后的采样应用一次。由于所具有的表面采样是最终像素的大约两倍,所以一个缺点是与传统像素着色流水线相比要对更多采样进行着色。这是由于MIP映射在每个方向上保持了一个介于1和2之间的缩小因子(因此,每个像素大约有1.5×1.5个表面采样)。然而,高质量的抗锯齿失真将确保子像素细节对最终图像仍有贡献,从而进一步改善图像质量。
另一个缺点是此时对二级纹理进行了两次重采样(一次由纹理空间重采样器TSR采样,另一次由屏幕空间重采样器SSR采样),这可能会引入额外的模糊。这就是为什么将具有最多细节的纹理贴图优选为初级纹理,以保证最精细的细节仅被重采样一次。二级纹理将会有更小的缩小(或甚至扩大,通常在光照贴图情况下出现扩大),所以一些额外的模糊不是很明显。屏幕空间重采样器SSR还允许使用高质量清晰度增强滤波器,其也能帮助保持清晰的图像。
将像素着色处理所产生的着色后的色彩采样和其屏幕坐标一起传给像素空间重采样器SSR。该屏幕空间重采样器SSR将这些色彩采样(通常位于非整数像素位置)重采样到显示所需的整数像素位置。当呈现更大图元或使用宽预滤波器时,使用一维滤波器的两遍方法要比直接使用2D滤波器核更有效率。而且,可以构建一维重采样器,使得不需进再归一化来避免DC纹波(ripple)。两遍滤波器确实需要额外的设置来减轻诸如瓶颈和切变问题。可选择的方法是用二维重采样核来进行喷涂。
为了能进行多视图呈现,仅复制了呈现流水线的某些部分,来呈现N个不同视图。现在对待复制部分的选择作更详细地描述。
如上面所提到的,表面空间光栅化引擎SS在图元表面遍历栅格,该图元(基本上)独立于该表面上的视图,像素着色器PPS为光栅化引擎SS遍历过的表面确定色彩。因此,由于图元表面上的表面栅格独立于该表面上的视图,所以表面遍历和着色计算不需要被复制。为了正确呈现视图,仅需为每个视图复制用于将计算出的表面色彩映射到特定视图的屏幕空间重采样器SSR、其后的边缘抗锯齿失真和隐藏表面消除(EAA & HSR)单元以及帧存储器FB。
因为光栅化引擎设置也为屏幕空间重采样器进行了设置计算(用于透视映射和隐面消除(backface culling)),所以还需要复制光栅化引擎设置的一些部分。特别是,光栅化引擎设置的一部分对用于执行向屏幕空间映射的变量进行初始化,复制该部分,以设置针对每个视图的映射,当一个图元在任何视图中不可见(大概基于两个极端)时,需要修改任一隐面消除算法,以便只消除该图元。
这样的复制更为有效率,因为只需进行一次表面遍历、纹理拾取以及着色计算,所以这样的复制特别有优势。将产生的着色后的色彩重用于所有视图。
然而,这仅适用于那些与视点无关的着色计算(这是关于一大类着色计算的情况)。否则,就将中心视图的视点用作近似。可以针对中间视图执行着色,这样非中心视图构成了近似。
呈现多幅视图的另一结果是光栅化引擎需要以对所有视图都足够高的分辨率来遍历图元表面。换句话说,任何视图所需的最高分辨率确定了光栅化引擎的分辨率。因此,光栅化和着色的花销略高于仅呈现一个视图的情况,但比分别光栅化和着色每一幅视图花销少得多。
可以将这种解决方法与已知的变形(warping)方法相结合。给定一幅视图和该视图的深度贴图,可以通过变形技术生成相邻的视图。因为场景仅呈现一次,所以这是非常有效率的,但当原始视图和所生成的视图之间角度的变大时,所引入的失真(artifact)变得更显著。换句话说,可以将该流水线用于生成有限数量的视图,这些视图覆盖了所有需要观看的角度。然后用变形技术从那些所呈现视图的最接近视图(一幅或两幅)中生成中间视图。
图2说明了根据本发明第二实施例的显示设备的呈现器(呈现管道)62。呈现器62包括第一部分70,用于为主视点生成Z堆栈。在此例子中,该部分包括主视点的输入端63和三维模型的输入端61。在几何变换器71中依照主视点变换所有几何图形(形状和形式),在像素效果引擎(pixelizer)72中对数据进行像素化,即把所有的对象都变换为具有X、Y、Z、色彩(RGB)和可能的α(不透明或透明)值的像素,并且在纹理效果引擎(texturizer)73中将纹理相加。对于主视点,在DOF呈现器74中将DOF(景深)相加。该处理针对与主视点相关的数据。所以不考虑N-1个附加视点,仅对主视点执行一次该处理。
此后,将(以如下解释的Z堆栈形式)对应于主视点的数据用作三维呈现级75的基础,该级具有与剩余N-1个附加视点相关的数据的输入端,呈现对应于该N-1个附加视点的N-1个Z-堆栈,作为输出。在封闭语义级76,通过Z-跟踪(Z-tracing)方式,将N-1个附加视点Z-堆栈中的数据(和主视点Z堆栈中的数据一起)转换到针对N个不同视点的N个图像的N个帧缓存中。因为对主视点进行该处理的第一部分,这部分处理通常需要最大量的计算能力(一直到并包括级74),所以所需计算相对小。所产生的主视点Z-堆栈(在此例中具有DOF)是所有其它视点的基础。
根据本发明第二实施例的方法和系统能有效率的计算N个高质量视图,而基于帧/Z缓存的现有方法仅能提供低质量的视图,而基于完全独立地生成N个视图的现有方法效率低。
图3进一步说明了不同视点的Z-堆栈和帧缓存的构造。3D模型80包括所有信息,即所有对象和它们相互的方向。从全三维模型中产生对应主视点的3层Z-堆栈81。这是由图3中示意性示出的Z-堆栈构造器完成的,该构造器构建了包括多个元素的(在该例中)三个顺序缓存的分层结构,其中对于每个元素(在该例中),存储了Z、I(代表色彩)、alpha(代表不透明因子α)值。基本上,Z-堆栈的第一堆栈包括从该视点首先看到的所有元素的RGB(色彩信息)和Z-坐标(以及还可能包括alpha信息和可能的其它信息)。这样,Z-堆栈的第一层包括首先看到的那些对象或对象部分,即离该视点最近的那些元素。这样在此例子中,Z-堆栈的第一层S1沿中心线I-I包括对象D的部分、对象A的某些部分以及对象F的外部边缘,第二层S2沿着同一条线包括对象B和C的部分、对象F的部分以及对象A的部分(在对象D后面的部分),第三层包括对象F的部分(在对象B和C后面的那些部分)和对象E的部分。注意到一个相同的对象可以形成Z-堆栈中几层的部分,这是因为以下事实从主视点看去,该对象是将被看到的第一、第二或第三对象。构建了Z-堆栈之后,可以构建帧缓存,如果在第一堆栈中显示的对象都不透明,则该帧缓存基本上包括Z-堆栈的第一堆栈S1的数据。如果对象有透明度(即,alpha数值小于1,其中α值的范围从0(不透明)到1(完全透明)),那么该图像缓存包括各层S1到S3的数据的组合。将图像缓存82的数据直接或经进一步处理后发送给三维显示器。图中B部分示出了三维模型80,该模型最终导致帧缓存82,帧缓存82仍至少包括构成最初三维模型的所有不同对象A到E的某些数据。从帧缓存82开始,有可能在某种程度上生成不同视图的图像,也就是必须基于对象B、C、E的那些在帧缓存中的可见部分,推测对象A后面的B、C、E对象的形状。然而,这并不总是可能的。
为进行说明,图3的该部分C与图3的部分B所述情形的不同仅在于,对象D此时位于对象A之后。Z-堆栈81’反映了这种变化,其中用于描述对象D的元素不再形成第一层S1的部分,而形成层S2的部分。图像缓存82’不再包括对象D的任何踪迹,对象D完全不出现在帧存储器82’中。基于针对主视点的图像(或帧)缓存82’,可以生成针对不同视点的图像,但是这些图像不包括对象D,简单的原因就是在图像缓存82’中没有关于对象D的信息(元素)。即使根据先前图像可以推出这样对象应该或很可能存在,但是不得不推测该对象的实际位置和/或形状。然而,从不同视点可能很好地看到该对象D。该问题的一个解决方法是计算每个附加视点的Z-堆栈(步骤61-73(74)),即为每个视点使用完全独立的呈现管道。然而,这要求有十分充足的计算能力。本发明的基本依据是诸如本例中对象D的“隐藏”对象的信息却存在于主视点的3层Z-堆栈或更一般的n层Z-堆栈81’中。使用主视点的Z-堆栈81’能跟踪前景对象后面的多个对象。即使发送给显示器的最终图像在同一像素位置处示出多个对象,该方法也能正确呈现半透明对象。以这种方法,首先将全三维模型中的所有景物对象呈现在Z-堆栈中。然后,采用一种已知处理在这里作为Z-跟踪方法,从Z-堆栈提取要发送给显示器的帧或图像缓存。根据一个简单的协议从Z-堆栈中为每个像素构建输出图像信息。如果所有对象都是不透明对象,就只拷贝Z-堆栈的第一层。对于透明对象,可以将几层融合在一起。
图4示出了DOF和三维呈现框图内部结构的例子。每个都具有附加的缓存-堆栈,其中存储了先前级的结果。而且,他们都有用作对象提取单元的新单元。
纹理级的输出(基本上是三维模型)在Z-堆栈91所呈现的第一Z-堆栈构造器中。该Z-堆栈91用于主视点。主视点Z-堆栈91用作对象提取92的出发点。对象提取是从Z-堆栈91中提取属于同一对象的元素的过程。如图3所示,对象可以分布在S1到S3这几层中。对象提取单元在堆栈中进行搜索并重新组合对象。可以利用相同对象的元素具有共同特征的事实来重新组合对象,这些共同特征诸如RGB值、Z-值和/或不透明。
该例子中在对象提取之后,对主视点的数据进行DOF呈现(93)。如果没有DOF(景深)呈现,所有对象将以相同的清晰度成像。然而,这会导致不自然的图像。在自然图像中有一个聚焦区,在该区内图像是清晰的,离观看者越近或越远的对象都未聚焦,因此是模糊的。例如,在对象提取后通过对对象的纹理和边缘进行散焦可以实现模糊,即,在对象内部重新空间分配纹理并将某些亮度转移到对象边界以外,和/或将对象外部的大部分半透明化。该DOF呈现级具有针对该对象的模糊单元。DOF单元的结果又是Z-堆栈94,包括有些模糊的散焦对象和处于主视点聚焦平面上的清晰对象。在该优选实施例中,对在主视点的Z-堆栈91中的数据进行DOF模糊。因为仅有主视点图像需要DOF模糊所需的计算能力,因此该实施例是优选的。严格来讲,就DOF的模糊效果而言,当对每个视点都进行DOF模糊时,可以获得更好的性能。然而,附加视点的DOF不会或几乎不会与主视点的DOF有所不同,所以在优选实施例中,DOF是在主视的Z-堆栈91上进行的。DOF模糊后的对象重新组合到主视点的新Z-堆栈94中。该Z-堆栈94是用于提取对象的对象提取器95的输入。对于N个剩余视点的每个视点,在移位器96中,将提取的对象根据主视点和其它各个视点之间的差别来进行移位。然后,将移位后的对象重新组合进新的Z-堆栈(在Z-堆栈构造器97内),结果产生N-1个Z-堆栈。最后,三维呈现级有一个Z-跟踪单元(98)。在本发明的框架中,首要一点是对于每个附加的视点,在主视点的Z-堆栈91的基础上构建附加视点的Z-堆栈97。对象提取95是可选择的。然而,对象提取是非常有用的概念。当转换主视点原始Z-堆栈91的数据来构建附加视点Z-堆栈的时候,比较小的对象(例如,那些在小角度下观看的对象)尺寸可能会充分变大。当逐个像素完成变换时,尺寸变大的对象(例如从3个像素变到10个像素)必然会有像素丢失。例如,可以通过对象提取和重建来重建所丢失的像素,即找到哪些像素可以形成一个群、检测该像素群中孔(或多个孔)的出现、尽最大可能确定适于孔内元素的值(RGB,Z)并填充该孔,从而重建该群的中间丢失元素并从而“修复”该对象。这些可以在移位操作(级96)之后进行。然而,重建处理级必须重复N-1次,也就是对移位级96产生的每个Z-堆栈进行重建处理,即对附加视点的每个Z-堆栈96(为了简化,有时在这里为各个方法步骤的结果给出了属于特定步骤的参考编号)进行重建处理。通过在对象移位96之前进行对象提取95,对象提取只需进行一次,也就是在主视点Z-堆栈94上进行,因而减少了该过程的复杂度并且提高了速度。
要计算的视点数目和它们相对于主视点的位置/方向可以是固定的,或者优选地相关于从显示器接收到的数据。优选地,该系统包括附加视点数据的输入(见图2)。Z-堆栈构造器75为附加视点构建数据。该构建过程可以自动进行,在这种情况下,该过程例如可以构建与自由立体设备中所能观看到的视图一样多的Z-堆栈95,即覆盖所有可能的显示设备的大量数目。这就要求构建大量的附加视点Z-堆栈。然而,该系统优选包括用于将附加视点数据提供给附加视点Z-堆栈构造器的输入。依据显示设备类型,附加视点的数目可能有所变化。通过提供用于提供附加视点具体数据的输入(相对于主视点的数目和/或位置/方向),Z-堆栈构造器能根据提高效率的要求,提供附加视点Z-堆栈。在简单的实施例中,附加视点数据可以是待生成视图的数目和最大视角范围。
在第二实施例中,该系统可以包括用于建立对应于用户的视点的装置,或者被提供与用户视点相对应的数据的装置。例如,当多于一个玩家加入到三维游戏时,如果通过用于建立相对于显示设备的这些属性位置的装置来提供这些属性,例如通过IR或超声波感应器,那么护目镜、耳机、激光枪、徽章等能使该系统建立玩家相对于显示设备显示屏的精确或近似位置。给附加Z-堆栈构造器提供这样的信息,使得能以高精确度或刷新率来处理与玩家相对应的视点,而以较低精确度或刷新率来处理其它视点的数据,或不处理其它视点的数据。这就使那些实际要紧的视点(即与玩家相关的视点)在速度和图像质量上有相当大的提高,而无需增加成本。
图5说明了根据第二实施例的方法。将主视点的DOF模糊后的Z-堆栈94输入到对象提取器。在该例中,对象是房屋H、两个棚屋S1、S2、有个孔(例如打开的门d)的栅栏Fe、大树T和森林F。在对象提取过程95中,从主视点Z-堆栈94(VP1,视点1)中提取对象。对对象进行移位(基本上是改变x、y、z值,可以基于主视点和相关附加视点来很容易地计算出这些值)。基于新的移位后对象数据来计算新的Z-堆栈97。该Z-堆栈97是附加视图(VP2,视点2)的图像缓存的基础。在原始视点(VP1),森林的一部分可以通过打开的门d看到,在移位后的视点(VP2)中,树(T)的一部分可以通过栅栏中的空隙看到。这样,在此例中示意性示出了,对于附加视图,通过栅栏中的空隙可看到树T的部分。可以基于主视点(VP1)Z-堆栈和简单移位操作来计算VP2的Z-堆栈,并且这样对于很多视图可以快速地完成计算。
应注意到,虽然本发明的第二实施例能以相比呈现N次新图像来生成附加视像大幅度减小的计算量要求来生成附加视像,但速度提高是有代价的。在该例子3中,Z-堆栈层包括多层。如果多于三个对象以一个放在另一个后面的方式放置,因为这些对象中的某些对象是从主视点看到的第四、第五对象等,所以它们不会出现在Z-堆栈层中。这样会出现数据丢失。优选地,Z-堆栈包括2至5层,最优选3至4层。在Z-堆栈中有越多的层,数据损失的变化就越小,然而,所需计算量就越高。本发明认识到最好的折衷在于层的表示范围,即2-5,优选为3-4,最优选为3。
当对象(例如房屋的边墙)方向为从主视点看到该对象仅占了一个或少量像素,这就会有更多数据损失。如果这种情况真的出现,那么从其它视点所能透漏出的视图细节数量是很有限的。
在第二实施例中,呈现器包括起始部分,其具有三维模型以及n个主视点的输入,用于以n个主视点Z-堆栈的形式来呈现对象,主视点Z-堆栈包括堆栈层,堆栈层包括色彩信息(RGB)和Z-值,该呈现器还包括Z-堆栈构造器和用于根据Z-堆栈生成图像信息的图像信息封闭语义级,在该Z-堆栈构造器中,根据起始级生成的n个主视点Z-堆栈构建N-n个附加视点的Z-堆栈,其中N>>n。
具有n个主视点的好处就是它允许选择最佳主视点,从而在附加视点中构建对象。该选择基于哪个主视点包含具有最高细节的对象,也就是,由最多数元素表示的对象。例如,还可以通过n个主视点中对象表示的插值来完成合成。在目前大多数三维显示器中,对于在一条水平线上排列的视点位置需要将N个视图,这就具有了水平环视能力。那么,优选n=2。
第一级要求的计算量是双倍的,但对于后续级计算量或多或少保持相同。可以将n=2个主视点选择为左和右极限视点。用这种方式,可以确保每个对象会以比每个附加视点所需的更多细节表示在两个主视图之一中。
类似地,未来的三维显示器可以提供N=N×Ny个视图,这些视图以水平和垂直位置的栅格来排列,从而提供了垂直环视能力。那么,优选n=4,其中四个主视点对应该栅格的四个角左上、右上、左下、右下。
由于Z-堆栈有限的水平和垂直维度,可能会有更多的数据损失。因为每个Z-堆栈内对象有不同的位置,所以对于某些视点而言,可能会发生这些对象不再出现在Z-堆栈内它们离开了视觉范围。可能会发生对象正好位于越过主视点边界处,使其在附加视点内不能重建。这可以通过上面描述的具有n个主视点的方法来解决。如果对象在一个主视点内不可见,则该对象很有可能在其它主视点之一是可见的。当使用n=1时,其它优选解决方法是利用Q个额外元素增加主Z-堆栈水平(和或垂直)维度,而所有附加Z-堆栈保持它们的原始维度。这就确保了主Z-堆栈包含仅移入附加视点视图中的对象。在这种情况下,主视点帧缓存仍具有原始的、未增加的尺寸。而可能使用增加维度和n个主视点两个解决方法的组合。
由于从主视点到附加视点的对象重采样,会有更多的数据损失。这可以通过具有增加分辨率的主视点来解决,例如因子二,在水平和/或垂直方向上具有更多元素。通过这种方法,可以忽略数字损失。在n个主视点的解决方法中,可能从n个普通分辨率Z-堆栈中用已知的超分辨率(super-resolution)技术来提取更高分辨率的对象。然而,目前此技术并不能确保所有情况下的性能,例如,在退化情况下,n个主视点包括对象的完全相同的信息。分辨率提高方法确保了所有情况下的性能。
根据第三实施例,可以将根据第二实施例的呈现器和第一实施例的呈现流水线相结合。它们都与有效率地生成场景的多幅视图有关。根据第二实施例的呈现器相比根据第一实施例的呈现流水线,需要复制更少的图形流水线组件,但当视点之间的角度变大时,第一实施例的呈现流水线工作得更好。
基本上,在根据第一实施例的流水线中,对从SSR起的所有组件进行复制,而在根据第二实施例的流水线中,对从Z-堆栈起的所有组件进行复制。
根据第三实施例,第一和第二实施例的优选组合用根据第一实施例的方法仅生成一些适度远离的视图,并用根据第二实施例的可用于生成中间临近视图的方法来生成一些Z-堆栈。
当使用根据第一实施例的流水线时,因为基本上所有视图都有它们自己的缓存,所以可以避免由于第二实施例所述流水线中有限的Z-堆栈层数引起的数据损失。如果不要求边缘抗锯齿失真,该缓存无需是全Z-堆栈,而可以是简单Z-缓存。
根据第二实施例,从主视点到附加视点的重采样引起进一步的数据损失,可以通过第一实施例执行的从表面到每个视图的直接重采样来解决。
第一和第二实施例组合的另一可能是使用根据第二实施例的呈现器来代替第一实施例中描述的变形技术。
根据基于第一和第二实施例组合的另一实施例,第二实施例的Z-堆栈位于第一实施例的EAA & HSR单元内。在这样的系统中,不复制图1的SSR和EAA & HSR的某些部分。这花费了很少的硬件代价,但是涉及没有Z-堆栈的EAA & HSR,因为相比图1的流水线引入了从Z-堆栈到每个视图的额外重采样步骤,所以可能会导致较差的图像质量。
应注意到,上面所述的实施例举例说明本发明而不是限制本发明,本领域的技术人员可以设计出许多其它可替换的实施例,而不背离附加权利要求的范围。在权利要求中,不应将任何放在圆括号内的参考标记解释为对权利要求的限制。单词“包括”不排除出现权利要求中所列之外的元素或步骤。元素之前的单词“一个”并不排除多个这种元素的出现。在设备权利要求中列举了几种装置,这些装置中的一些可以由一个相同的硬件项来具体实现。在彼此不同的从属权利要求中叙述了某些特定措施的单纯事实并非表示不能够将这些措施结合起来有利使用。
此外,不应将权利要求中的任何参考标记理解为对权利要求范围的限制。
权利要求
1.计算机图形处理器,具有并行呈现三维模型的N个二维图像的呈现器,所述呈现器包括-光栅化引擎(SS),针对所有N个视图,在所述三维图像的图元的表面上遍历表面栅格,-着色器单元(PPS),确定所述光栅化引擎(SS)的输出的色彩,并提供着色后的色彩采样及其屏幕坐标,以及-N个屏幕空间重采样器(SSR),其中每个根据所述N个视图之一,对所述着色器单元(PPS)确定的所述着色后的色彩采样进行重采样。
2.如权利要求1所述的计算机图形处理器,还包括存储纹理贴图的纹理存储器(TM),其中,所述表面栅格是根据与所述图元相关联并存储在所述纹理存储器(TM)中的纹理贴图得到的。
3.如权利要求2所述的计算机图形处理器,其中,将与存储在所述纹理存储器(TM)中的一个纹理贴图相关联的栅格选为表面栅格,如果所述纹理贴图被独立寻址,所述纹理贴图基于二维纹理,以及顶点处的纹理坐标不构成退化图元。
4.如权利要求3所述的计算机图形处理器,其中如果存储在所述纹理存储器(TM)中的多于一个纹理贴图满足所述三个条件a)-c),则选择纹理空间中有最大面积的纹理贴图。
5.如权利要求1或2所述的计算机图形处理器,还包括寻址显示屏幕的模块,所述呈现器具有三维模型的输入和至少一个视点的输入,用于呈现提供给所述寻址模块的图像信息,其中,所述呈现器还包括起始部分(70),该起始部分具有所述三维模型和至少一个主视点的输入,用于以至少一个主视点Z-堆栈(91,94)的形式来呈现对象,所述主视点Z-堆栈(91、94)包括具有色彩信息和Z-值的堆栈层(S1、S2、S3),所述呈现器还包括Z-堆栈构造器,其中根据所述起始级生成的所述至少一个主视点Z-堆栈(91、94)来构建附加视点的Z-堆栈(97);以及进一步的图像信息封闭语义级,用于根据所述Z-堆栈(97)生成图像信息(79)。
6.如权利要求5所述的计算机图形处理器,其中所述呈现器还包括从视点Z-堆栈(91、94)提取对象的对象提取器(95)。
7.如权利要求6所述的计算机图形处理器,其中所述对象提取器(95)被设置用于从所述至少一个主视点Z-堆栈(91、94)中提取对象。
8.如权利要求5所述计算机图形处理器,其中所述呈现器包括DOF呈现级(92、93),其中,所述DOF呈现级被设置用于将所述至少一个主视点Z-堆栈(91)DOF处理为包含DOF模糊的至少一个主视点Z-堆栈(94)。
9.呈现三维图像的N个视图的方法,包括以下步骤-针对所有N个视图,在所述三维图像的图元的表面上遍历表面栅格,-确定光栅化引擎(SSR)的输出的色彩并提供着色后的色彩采样及其屏幕坐标,以及-针对所述N个视图的每一个,对着色器模块(PPS)确定的所述着色后的色彩采样进行重采样。
10.如权利要求9所述的呈现三维图像的N个视图的方法,还包括以下步骤将纹理贴图存储在纹理存储器(TM)中,其中,所述表面栅格是根据与所述图元相关联并存储在所述纹理存储器(TM)中的纹理贴图得到的。
11.如权利要求10所述的呈现三维图像的N个视图的方法,其中,将与存储在所述纹理存储器(TM)中的一个纹理贴图相关联栅格选为表面栅格,如果所述纹理贴图被独立寻址。所述纹理贴图基于二维纹理,以及顶点处的纹理坐标不构成退化图元。
12.如权利要求11所述的呈现三维图像的N个视图的方法,其中如果存储在所述纹理存储器(TM)中的多于一个纹理贴图满足所述三个条件a)-c),则选择纹理空间中有最大面积的纹理贴图。
13.呈现三维图像的N个视图的方法,还包括以下步骤提供数据和三维显示设备的寻址模块,其中,对于主视点,用RGB和Z-值呈现包括堆栈层(S1、S2、S3)的至少一个主视点Z-堆栈(94)的形式的对象,以及根据所述至少一个主视点Z-堆栈(94)来构建附加视点的Z-堆栈(97),以及以Z-跟踪方式根据所述附加视点的Z-堆栈(97)生成要提供给所述寻址模块的数据(79)。
14.计算机程序产品,包括存储在计算机可读介质上的程序代码模块,用于当所述程序在计算机上运行时,执行如权利要求9到14中任一项所述的方法。
全文摘要
提供了一种具有用于呈现三维场景的N个视图的呈现器的计算机图形处理器。所述呈现器包括光栅化引擎SSR,用于针对所有N个视图,在所述三维场景的图元表面上遍历表面栅格。而且,所述呈现器包括着色器模块PPS,用于确定所述光栅化引擎SS的输出的色彩并提供着色后的色彩采样及其屏幕坐标,以及N个屏幕空间重采样器SSR,其中每个屏幕空间重采样器SSR用于根据N个视图之一,对所述着色器模块PPS确定的着色后的色彩采样进行重采样。因为对于N个不同视图,只进行一次表面遍历、纹理拾取和着色计算,这就具有了更高的效率。将产生的着色后的色彩重用于所有视图。另外,图元表面上遍历任意栅格的能力提供了更多的呈现自由度。
文档编号G06T15/50GK1890694SQ200480036563
公开日2007年1月3日 申请日期2004年12月3日 优先权日2003年12月9日
发明者巴尔特·G·B·巴伦布吕格, 巴尔托洛穆斯·W·D·范格斯特, 科内利斯·梅因德斯 申请人:皇家飞利浦电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1