图像处理器及其组件、和渲染方法

文档序号:6356638阅读:377来源:国知局
专利名称:图像处理器及其组件、和渲染方法
技术领域
本发明涉及一种用于在一个二维屏幕、诸如显示设备上高效渲染三维图像的图像处理技术。
背景技术
在显示设备上渲染(render)图像的图像处理器、诸如游戏控制台或者个人计算机的图像处理能力已经随着最近处理器速度的增加而显著地增加了。
例如,用于在二维屏幕上显示很好的高质量三维图像的二维图像几乎能够被实时地生成。
利用多个诸如多边形之类的图元和一个属性数据集生成二维图像,其中该图元组成了包含在一个三维图像中的一个虚拟对象(在下文中称为一个“对象”)的图像,且该属性数据集描述了相关图元的属性、诸如形状、大小、颜色和亮度。
用于在一个二维屏幕上渲染三维图像的图像处理通常可以被分类为几何处理和渲染。几何处理包含坐标变换以变换图元的一组顶点的坐标。渲染用来从作为几何处理的结果而获得的几何数据中确定例如每一个像素的颜色以创建一个二维图像。
在这个说明书中,主要执行渲染操作的设备(包含一个分布式系统和一个半导体设备)被称为一个渲染处理单元。渲染处理单元形成一个图像处理器的一部分。
某些渲染处理单元能够通过两次或更多次地渲染相同的图元来渲染图形和图像、诸如复杂的画面以获得更好的视觉效果。具有两遍或更多遍渲染的渲染被称为“多遍(multipass)渲染”。在多遍渲染中的单次处理过程被称为一“遍(pass)”。就渲染3遍的多遍渲染来说,可以在第一遍期间渲染一个多边形而不必混合任何纹理(texture),可以在第二遍期间增加一个纹理,并且可以在第三遍期间增加一个不同的纹理。
传统的渲染处理单元在多遍渲染期间为所有图元执行多次渲染。这在渲染一个复杂画面中的图形或者图像时,增加了渲染操作的次数,并且接着又增加了处理量,从而导致了较大的处理负荷。
相对于上述问题做出了本发明,并且它的一个目的是提供一种渲染处理单元和一种渲染方法,其能够利用较少的处理来实现用于三维图像的渲染操作。
本发明的另一个目的是提供能视觉效果更好地生成一个图像而没有任何开销的一种图像处理器以及它的组件。

发明内容
依据本发明、解决了上述问题的一个渲染处理单元是一个用于在一个二维屏幕上渲染三维图像的处理单元,其中该三维图像中的每一个都是由多个图元组成的,该处理单元包含一个图元缓冲器,在其中与相关图元相关联地写入多个属性数据集,其中每个属性数据集表示多个图元中的一个的属性;以及一个测试器,其把在所述图元缓冲器中的多个属性数据集互相进行比较,以把多个图元分类成为将被显示在二维屏幕上的第一组图元和不被显示在其上的第二组图元;渲染处理单元被配置为渲染第一组图元以及不渲染第二组图元,其中第一组图元和第二组图元由所述测试器分类出来。
渲染可以是用仅仅一遍渲染、使用纹理渲染一个给定图元的单遍渲染,或是用不同的纹理多次渲染同一个图元的多遍渲染。无论如何,实际上将被显示在二维屏幕上的图元(第一组图元)被渲染了。与渲染构成一个三维图像的所有图元的传统渲染处理单元相比,处理量被显著地改善了。
“属性数据集”可以是任何种类的适当数据,只要该数据能够被用来确定一个给定的图元是否显现在二维屏幕上。总的来说,属性数据集可以是数字数据,诸如关于一个图元的顶点(例如顶点的坐标、顶点的亮度、或者纹理的坐标)、大小、颜色、或者图元的透明度的数字数据。关于顶点的数字数据可以是例如作为几何处理的结果而获得的几何数据。
被写入在所述图元缓冲器中的图元的数目最好是至少等于用其在二维屏幕上构建适合在一个屏幕上的三维图像的图元的数目。这允许在屏幕基础上高效的渲染。
为了在像素基础上提供更高效的渲染,渲染处理单元进一步包含插值装置,其依据用于一个图元的一个已知属性数据集插值像素。测试器通过把作为像素插值的结果而获得的一个新属性数据集添加到可相互比较的属性数据集中,在像素基础上分类图元。利用这样的一个配置,正被显示在二维屏幕上的图元被分类成为甚至以一个像素的第一组图元。
就较高分辩率的图像来说,每一个像素被分成预定数目的子像素。插值装置被配置为当至少一个子像素要经历渲染时依据用于一个图元的一个已知属性数据集插值该子像素。测试器被配置为通过把作为子像素插值的结果而获得的一个新的属性数据集添加到可相互进行比较的属性数据集中、在子像素基础上分类图元。
渲染处理单元可以进一步包含覆盖率计算装置,其计算由正被渲染的一个给定图元覆盖的子像素的数目与组成单个像素的子像素的总数的比值,并且可以基于由所述覆盖率计算装置计算的结果确定用于主体像素的属性数据集。这提供了更快的消除混叠技术。
为了允许消除混叠,所述测试器可以被配置为当在该像素处绘制两个或更多图元时不分类在图元的边界上的像素。
在所述图元缓冲器中的每个属性数据集可以包含位置信息,诸如表示一个相对图元在三维图像中的位置的坐标值(X,Y,和Z),并且测试器可以被配置为比较包含在该属性数据集中的位置信息以把图元分类成为第一和第二组图元,其中第一组图元是通过二维屏幕最靠近一个观察者的视点的图元,第二组图元是除了被分类成为第一组图元的那些图元之外的其它图元。这个配置删去了对被隐藏在其它图元或者多个图元后面的图元的渲染。
每个图元可以叠加在包含允许区域和不允许区域的模板数据上,其中该允许区域被允许显示在二维屏幕上,而不允许区域不被允许显示在二维屏幕上,模板数据表示将被显示的一个或者多个图像的透明度和形状。在这种情况下,测试器把图元分类成为第一和第二组图元,其中第一组图元是其至少一部分被叠加在模板数据的允许区域或者不允许区域上的图元,第二组图元是除了被分类成为第一组图元的那些图元之外的其它剩余图元。
从增加渲染速度的观点来说,测试器被配置为在一个在渲染过程中参考的预定可见标志表中记录一个描述了一个给定图元是第一组图元还是第二组图元的标志。与用于该给定图元的属性数据集相关联地记录该标志。这样一种配置允许渲染处理单元仅仅通过检查在可见标志表中的标志来确定一个给定属性数据集是在第一组图元还是在第二组图元中。该标志可以是一个就每个图元都具有不同值的数字标志,并且根据由正被显示在二维屏幕上的图元所覆盖的像素数目更新标志值。
渲染处理单元可以进一步包含编辑装置,其适于参考记录在可见标志表中的用于相关图元的标志,并且限制从图元缓冲器中为第二组图元读出属性数据集。从更加确实地避免使用第二组图元的观点来说,所述编辑装置适于从所述图元缓冲器中删除用于被分类成为第二组图元的图元的属性数据集。
依据本发明解决上述问题的一个图像处理器是这样一个图像处理器,其包含一个帧缓冲器,其大小等于在一个二维屏幕中的显示区的大小;一个第一处理器,适于执行对描述一个三维图像的多个图元的几何处理以生成关于该三维图像的几何数据;一个第二处理器,依据生成的几何数据在所述帧缓冲器中渲染对应于三维图像的二维图像;以及一个控制器,用于在显示区中显示渲染的二维图像。
第二处理器把多个属性数据集互相进行比较,以把该多个图元分类成为将被显示在二维屏幕上的第一组图元和不会被显示在其上的第二组图元,以及在所述帧缓冲器中渲染由第一组图元而不是第二组图元组成的二维图像。每个属性数据集表示由从所述第一处理器中获得的几何数据指定的多个图元中的一个图元的属性。
在一个最佳实施例中,在所述第一处理器和所述第二处理器之间提供了一个缓冲存储器,并且由所述第一处理器生成的几何数据经由缓冲存储器被传输到所述第二处理器。
可以通过进一步包含一个图像接受机构来配置图像处理器,其中该图像接受机构从一个外部设备中接受将被处理的三维图像并且把它们提供给所述第一处理器。
依据本发明解决上述其它问题的一种渲染方法是一种由一个用于在一个二维屏幕上渲染三维图像的设备执行的渲染方法,该三维图像中的每一个都是由多个图元组成的,该设备具有一个在其中为形成图像而写入图元的图元缓冲器。即,这个设备以这个次序执行一遍测试和一遍渲染,其中该遍测试是用于在一个图元缓冲器中与相关图元相关联地写入多个属性数据集,以及用于把这多个写入的属性数据集互相进行比较,以把这多个图元分类成为将被显示在二维屏幕上的第一组图元和不被显示在其上的第二组图元,其中每个属性数据集表示组成三维图像的多个图元中的一个图元的属性,而渲染遍是用于从图元缓冲器当中读出第一组图元而不是第二组图元以渲染读出的第一组图元,其中该第一组图元和第二组图元是在该遍测试中被分类出来的。
可以两次或多次执行该渲染以两次或多次为同一个图元渲染不同的纹理。
为了解决上述问题,本发明还提供了一种半导体设备和一个计算机程序。
本发明中的半导体设备是一种安装在一个计算机上的半导体设备,其连接到具有一个二维屏幕的显示器,该半导体设备适合于在计算机上建立和计算机的其它组件协同合作的下列功能部件,该功能部件包含一个图元缓冲器,在其中与相关图元相关联地写入多个属性数据集,其中每个属性数据集表示组成三维图像的多个图元中一个图元的属性;一个测试器,其把在所述图元缓冲器中的多个属性数据集互相进行比较,以把多个图元分类成为将被显示在二维屏幕上的第一组图元和将不会被显示在其上的第二组图元; 以及渲染处理装置,用于渲染第一组图元而不是第二组图元以生成一个将被显示在二维屏幕上的二维图像,其中该第一组图元和第二组图元是由试验器分类出来的。
本发明中的计算机程序是一个用于指示计算机执行下列任务的计算机程序,该计算机连接到一个图元缓冲器和一个具有一个二维屏幕的显示器,其中在图元缓冲器中写入用于形成图像的图元,该任务包含在图元缓冲器中与相关图元相关联地写入多个属性数据集,其中每个属性数据集表示组成三维图像的多个图元中的一个图元的属性;把在图元缓冲器中的多个属性数据集互相进行比较,以把多个图元分类成为将被显示在二维屏幕上的第一组图元和将不会被显示在其上的第二组图元;以及渲染第一组图元而不是第二组图元,以生成一个将被显示在二维屏幕上的二维图像,其中该第一组图元和第二组图元是被分类出来的。当这个计算机程序被记录在一个计算机可读存储介质中时它被实现了。


图1显示了依据本发明一个实施例的一个图像处理器的硬件配置;图2是一个说明了在图元缓冲器中的几何数据的一个例子的视图;图3是一个说明了一个三角形长条的视图;图4是一个用来描述剪裁(clipping)的视图;图5是一个用来描述剪裁的视图;图6是一个说明了子像素的视图;
图7是一个用来描述一个模板测试的视图;图8是一个可见标志控制部分的示范配置;图9是一个说明了一个三角形长条的视图;图10是一个说明了当图元是一个三角形长条时的一个可见标志表的视图;图11是一个说明了依据本发明一个实施例的一个渲染过程的视图;图1 2是一个说明了一个Z缓冲绘制过程的视图;图13是一个说明了用于Z缓冲绘制的一个数据流的视图;图14是一个说明了用于一遍测试的一个处理过程的视图;图15是一个说明了用于该遍测试的一个数据流的视图;图16是一个说明了删除从图元不会被显示在显示器上时起的数据的视图;图17是一个说明了一个多遍渲染过程的视图;图18是一个说明了用于该多次渲染的一个数据流的视图;图19显示了依据本发明另一个实施例的一个渲染处理器的硬件配置;以及图20是一个用来描述图元覆盖率的视图。
具体实施例方式
下面叙述了一个把本发明应用到一个支持多遍渲染的图像处理器的实施例。
图1显示了依据这个实施例的一个图像处理器的硬件配置。
图像处理器1包含一个作为渲染处理单元的一个例子的渲染处理器16。图像处理器1执行多遍渲染以在一个二维屏幕、诸如显示器41的屏幕上实时地、视觉效果更好地渲染三维图像。在该多遍渲染中,在下面描述的一遍测试首先分类输出由于例如被隐藏在其它图元后面而不被显示在显示器41上的第二组图元。然后为除了在这遍测试中被分类输出的那些图元之外的图元执行一遍渲染。因此,图像处理器1删去了渲染不被显示在显示器41上的图元的无用操作,而提高了渲染操作的效率。
图像处理器1包含一个向其中加载一个诸如CD-ROM或者DVD-ROM之类的磁盘介质15的磁盘驱动器10、一个用于建立与一个外部设备的有线或者无线通信的通信控制部分11、一个几何处理器12、一个存储器13、一个CPU 14和渲染处理器16,它们经由一条总线全部彼此相互连接,以便它们互相交换数据。
一个显示控制器40连接到渲染处理器16以向显示器41提供诸如视频信号的图像信号。
磁盘驱动器10从磁盘介质15中加载用于图像处理的数据和程序,并且把它们存储在存储器13中。用于图像处理的数据可以是例如关于图元的图形数据。在这个实施例中的图形数据包含例如一个图元的顶点(X,Y,Z)的坐标值、一个顶点的亮度值(R,G,B)、向量值、和描述了这些顶点如何相连的连接信息。
通信控制部分11从一个外部设备中获得用于图像处理的上述数据和程序,并且把它们存储在存储器13中。换句话说,通信控制部分11从一个外部设备中获得与由磁盘驱动器10从磁盘介质15中获得的数据相似的数据,并且把它们存储在存储器13中。
利用这个配置,图像处理器1能够从磁盘驱动器10和通信控制部分11中的至少一个中获得用于图像处理的数据和程序。
几何处理器12在CPU 14的控制下执行对保存在存储器13中的图形数据的几何处理,诸如与光源有关的仿射变换和顶点处理。作为几何处理结果而获得的几何数据包含表示了一个给定图元的属性的数据,这些数据诸如图元的一个顶点(X,Y,Z)的坐标值、每个顶点的纹理坐标值(S,T,Q)、和一个顶点的亮度(R,G,B,A)。顶点的亮度中的符号“A”是被用于已知的α混合的不透明度。
存储器13存储从磁盘驱动器10和通信控制部分11中至少一个中获得的用于图像处理的数据和程序。存储器13还存储在图像处理器1的操作期间生成的各种数据。因此,存储器13同样能够被用作在图像处理器1中的一个主存储器。
CPU 14控制在这些组件之间或者在它们当中的数据交换。例如,CPU 14利用用作一个缓冲器的存储器13控制把由几何处理器12生成的几何数据传输到渲染处理器16。
在这个实施例中,几何处理器12被提供作为一个与CPU 14分开的组件。然而它们可以被组合为单个单元,所以CPU 14也用作几何处理器12。
渲染处理器16基于由几何处理器12生成的几何数据执行多遍渲染。
显示控制器40把作为渲染的结果而生成的一个二维图像转换成为一个能够被显示在显示器41上的图像信号,并且把它提供给显示器41。用这个图像信号把图像显示在显示器41上。
渲染处理器16包含一个图元缓冲器21、一个多遍控制部分22、一个XYZ裁剪部分23、一个设置DDA(Digital DifferentialAnalyzer,数字微分分析器)部分(在下文中被称为一个“SU/DDA部分”)24、一个Z测试部分25、一个Z缓冲器26、一个模板测试部分27、一个模板缓冲器28、一个可见标志控制部分29、一个图元编辑部分30、一个纹理映射部分31、和一个帧缓冲器32。
Z测试部分25、模板测试部分27、可见标志控制部分29、和图元编辑部分30是依据本发明的一个测试器的组件。
这些组件可以通过使用例如半导体设备被单个地执行。做为选择,它们可以通过使一个通用的数字信号处理器(DSP)或者一个图形处理器(GP)与一个或多个计算机程序协同合作来实现,所以这些处理器能够加载和执行该计算机程序。
图元缓冲器21把用于至少一组图元的几何数据存储作为用于该图元的属性数据集的一个例子。一组图元可以是形成在显示器41的单个屏幕上的一个图像或者单个对象的图元的一个集合。向每个图元分配一个标识号(在下文中被称为“图元编号”)作为用以标识图元的标识信息。图元编号被包含在属性数据集中。
图2是一个说明了保存在图元缓冲器21中的几何数据和分配给该几何数据的图元编号(PN1,PN2,……)之间的关系的视图。做为选择,或者除了说明的例子之外,几何数据可以与标志相关联以表示给定的几何数据是否被用于多遍渲染。
当几何数据是所谓的三角形长条数据以描述一个三角形形状时,为在三角形长条中的每个顶点生成几何数据。因此,渲染处理器16向每个顶点的几何数据分配一个图元编号,并且把它们存储在图元缓冲器21中。
图3用三角形长条数据显示了一个三角形长条的例子。在该图中的数字值“0”到“7”指示顶点。就如图3所示的三角形长条数据来说,向顶点0、1、2、……、7中的每一个分配图元编号。一个类似的图元缓冲器21也可以被用于三角形叶片。
提供图元缓冲器21以避免在几何处理器12和渲染处理器16之间为多遍渲染中的每一遍传输几何数据。利用图元缓冲器21,能够减少在几何处理器12和渲染处理器之间的开销。
尽管在这个实施例中的图元缓冲器21是在渲染处理器16中提供的,但是也可以独立于渲染处理器16提供。做为选择,图元缓冲器21可以在存储器13中提供。
多遍控制部分22控制多遍渲染。例如,多遍控制部分22向渲染处理器16中的组件通知应当执行Z缓冲绘制、一遍测试和多遍渲染中的哪一个。多遍控制部分22从图元缓冲器21中读出将被渲染的图元的几何数据和用于那些几何数据的图元编号,并且把它们提供给XYZ裁剪部分23。
在多遍渲染期间,多遍控制部分22在必要时改变几何数据。例如,为了在每一遍中向一个图元(例如一个多边形)映射不同的纹理,一个纹理坐标值的换算系数可以被改变或者变换。
多遍控制部分22在必要时还改变纹理起点的变换坐标数量。这个改变允许渲染处理器16为每个纹理坐标轴执行线性变换。此外,多遍控制部分22在必要时有选择地把一个顶点的亮度值(R,G,B,A)转换成为一个固定值。这消除了在例如第二遍或者随后遍期间在渲染处理器16中重新传输一个顶点的相同亮度值的损耗。
XYZ裁剪部分23基于预先提供的裁剪数据,用从多遍控制部分22提供的几何数据执行一个图元的三维裁剪。裁剪数据描述了在显示器41中的一个显示区。裁剪是剪切下超出由裁剪数据定义的显示区范围的一个或多个图元的那部分,或是改变其一部分超出显示区范围的一个或多个图元的形状。
下面,更具体地参考图4和5描述裁剪操作。
图4显示了在由顶点坐标(X1,Y1)、(X2,Y2)、和(X3,Y3)描述的一个图元51和在显示器41中的一个显示区50之间的关系。XYZ裁剪部分23通过在图元51的一部分超出显示区50的范围时进行裁剪来改变图元51的形状。图5显示了在具有修改了的形状的一个图元52和显示区50之间的关系。
如图5所示,XYZ裁剪部分23改变其一部分超出显示区50的范围的图元51的形状。XYZ裁剪部分23然后生成由顶点坐标(X3,Y3)、(X6,Y6)、(X5,Y5)、(X4,Y4)和(X7,Y7)定义的新的图元52。新的图元52的图元编号与在形状变化之前分配给图元51的那个图元编号相同。
XYZ裁剪部分23把裁剪之后的几何数据和图元编号提供给SU/DDA部分24。
SU/DDA部分24执行设置和DDA操作。
设置操作是用于依据从XYZ裁剪部分23提供的、裁剪之后的几何数据,计算被用于DDA操作的初始坐标值和斜率值。
DDA操作是用于依据在设置操作中计算的初始坐标值和斜率值,在图元的顶点之间线性插值和在图元内部插值,以获得包含形成一个图元的像素的坐标值(X,Y,Z)、亮度值(R,G,B,A)、和用于纹理映射的纹理坐标值(S,T,Q)在内的数据。
就例如如图5所示的图元52的例子来说,为阴影线部分中的每一个像素获得插值数据。在如下所述的Z缓冲绘制和该遍测试中,SU/DDA部分24可以仅仅插值这些像素的坐标值。
用于每一个像素的插值数据与图元编号一起被提供给Z测试部分25。
Z测试部分25为Z缓冲绘制和该遍测试执行不同的操作。
就Z缓冲绘制来说,Z测试部分25在像素基础上比较被包含在从SU/DDA部分24提供的插值数据中的Z值和被保存在Z缓冲器26中的Z值。Z测试部分25然后依据比较结果把这些Z值中的任何一个写入到Z缓冲器26中。例如,它选择最接近于观察点的Z值并且把这个Z值写入到Z缓冲器26中。当选择了从SU/DDA部分24中提供的Z值时,这个Z值被用来更新在Z缓冲器26中的相关像素的Z值。当选择了被保存在Z缓冲器26中的Z值时,Z缓冲器26不被更新。
然而,为一个像素利用一个Z缓冲器,必需显示的其它图元可以存在于没有覆盖整个像素区域的一个图元的背景中。就这个方面,为了消除混叠现象,Z测试部分25没有把这个像素的Z值写入到Z缓冲器26中。当一个图元是透明或者半透明的时,由于类似的原因,在Z缓冲器26中没有写入Z值。
另一方面,就该遍测试来说,Z测试部分25在像素基础上比较被保存在Z缓冲器26中的Z值和从SU/DDA部分24提供的插值数据,以选择具有与被保存在Z缓冲器26中的那个Z值相同的Z值的插值数据。Z测试部分25然后把选择的插值数据以及图元编号提供给模板测试部分27。如上所述,当Z缓冲器26中没有存储的Z值时,Z测试部分25选择具有最接近于观察点的Z值的插值数据,并且把它们以及图元编号提供给模板测试部分27。
作为Z缓冲绘制的结果,为每一个像素把最接近于观察点的图元的Z值写入到Z缓冲器26中。
可以在子像素基础上而不是在像素基础上执行这遍渲染,以渲染较高分辨率的图像。在这种情况下,使用了用于子像素的Z缓冲器。然后在完成子像素的渲染之后减小图像的大小以获得实际的像素。图6显示了一个其中使用子像素描述了一个3×2像素的矩阵的例子。在图6中,每一个像素被分成4×4个子像素。在这个例子中,绘制了向上倾斜的直线。当使用典型的像素时,在右下方的像素被确定为一个在其上没有绘制阴影线的像素。然而,当使用子像素时在一个子像素上绘制了一条阴影线。阴影线因此影响了在右下方的像素。这样,通过在子像素基础上写入Z值,即使当一个像素包含两个或更多图元时,也能够在考虑了所有图元的同时进行显示。
利用具有很多存储空间的Z缓冲器26,除了存储Z值之外,还可以存储分配给具有这些Z值的图元的图元编号。
模板测试部分27依据保存在模板缓冲器28中的模板数据,执行模板测试。
结合图7描述模板测试的概述。
如图7所示,模板数据表示一个不被允许显示在显示器41上的不允许区域53和一个被允许显示在其上的允许区域54。依据这个实施例的模板测试是用于比较例如从Z测试部分25提供的插值数据的坐标值和模板数据中的坐标值,以确定图元52是否被显示在允许区域54中,即在允许区域54内是否有插值数据。把将被显示的图元52的图元编号提供给可见标志控制部分29。
就多遍渲染来说,把将被显示的图元的插值数据提供给纹理映射部分31。
模板缓冲器28被配置为存储模板数据和在模板测试部分27提出请求时读出它们。被保存在模板缓冲器28中的模板数据是经由一条总线从例如存储器13中提供的。
借助于XYZ裁剪部分23、Z测试部分25和模板测试部分27,图元被分组成为包含将被显示在显示器41上的像素的图元、和不被显示在其上的图元。
从模板测试部分27中把包含将被显示在显示器41上的像素的图元的图元编号提供给可见标志控制部分29。
如图8所示,可见标志控制部分29包含一个地址控制部分61和一个可见标志表62。
可见标志表62依据图元把可见标志存储到地址(NA1,NA2,……),其中可见标志指示图元是否被显示在显示器41上。
这些地址对应于分配给保存在图元缓冲器21中的图元数据的图元编号(PN1,PN2,……)。
地址控制部分61初始化可见标志表62,计算可见标志表62中的地址,并且改变可见标志。例如,当为所有图元完成了Z缓冲绘制(初始化)时,地址控制部分61把可见标志清除为“0”。地址控制部分61然后把从模板测试部分27提供的图元编号转换成为可见标志表62中的地址,并且将对应于那些地址的可见标志从“0”改变到“1”。
在其处存储了“1”值的可见标志中的地址对应于将被显示在显示器41上的图元的图元编号。此外,在其处包含了“0”值的可见标志的地址对应于没有将显示在显示器41上的像素的图元的图元编号。
该地址可以与上述图元编号相同。
当图元是如图9所示的三角形长条时,可见标志表62如图10所示。在图9中说明的例子中,没有为由顶点2、3、和4定义的三角形形成图元。
更具体地说,在对应于顶点0、1、2、……、7的图元编号的地址处,存储用于指示是否进行显示的可见标志。就三角形长条来说,按从0起的顺序读出用于顶点的几何数据以形成三角形图元。例如,在读出用于顶点0和1的几何数据之后,读取用于顶点2的几何数据。这形成了由顶点0、1和2定义的一个三角形图元。用于顶点0和1的可见标志为“Not Active(未激活)”,而且顶点0和1不受可见标志的影响。
在如图10所示的例子中,具有对应于地址NA4的图元编号4的顶点4没有被显示。这意味着在在渲染期间读出顶点4的几何数据时,顶点2、3和4没有形成三角形。它不意味着没有形成与顶点4有关的三角形。换句话说,没有形成具有顶点2、3、和4的三角形,而形成了具有顶点3、4和5的三角形、以及具有顶点4、5和6的三角形。类似的可见标志表62也可以被用于三角形叶片。
可见标志可以是单个值或者一个二进制值,或者它可以是一个整数。地址控制部分61在这种场合下连续地把从模板测试部分27中提供的像素的图元编号转换成为可见标志表62中的一个地址,并且连续地递增对应于相关地址的可见标志的值。因此,就每个图元来说,可见标志具有一个基于将被显示在显示器41上的像素数目的值。
由可见标志控制部分29进行的可见标志的写入尺寸为几个比特。与在帧缓冲器32中写入相比较,较不频繁地导致分页。因此,能够以较高的速度进行这遍测试。
图元编辑部分30是本发明中的编辑装置的一个例子。图元编辑装置30依据可见标志控制部分29中的可见标志表62,检查将不会被显示在显示器41上的图元的图元编号。然后,确保没有从图元缓冲器21中读出对应于所标识的图元编号的几何数据。
例如,图元编辑部分30检查对应于在其处可见标志表62中的可见标志指示“0”的地址的图元编号。图元编辑部分30确保在多遍渲染期间没有从图元缓冲器21中读出对应于这个图元编号的图元。当向在图元缓冲器21中的几何数据分配了指示该数据是否被用于多遍渲染的标志时,这个标志被用来防止在多遍渲染期间读出该图元。可以从图元缓冲器21中删除该几何数据。
纹理映射部分31以对应于遍数的循环数目执行渲染。纹理映射部分31,例如在每一遍中把不同的纹理映射到同一个图元。此映射渲染将被显示在帧缓冲器32中的图像。
帧缓冲器32包含一个用于显示器41的存储空间。以这样一种方式把像素绘制在该存储空间上,以使像素填充在显示器41中的二维平面。在帧缓冲器32中绘制的图像以帧为单位被提供给显示器41,并且通过显示控制器40在其上被显示为图像信号。
接下来,具体描述具有上述配置的图像处理器1的操作,尤其是由渲染处理器16实现的渲染方法。
假定作为几何处理器12执行的几何处理的结果的几何数据作为属性数据集的一个例子被保存在渲染处理器16中的图元缓冲器21中。
图11是一个说明了这种渲染方法的示意图。
渲染处理器16为保存在图元缓冲器21中的所有几何数据执行Z缓冲绘制,并且在Z缓冲器中写入接近于观察点的Z值(步骤S10)。在完成Z缓冲绘制之后,渲染处理器16清除可见标志控制部分29中的可见标志表62以把所有可见标志设置为“0”(步骤S20)。然后,执行该遍测试,并且基于这遍测试的结果改变在可见标志表62中的可见标志(步骤S30)。在这遍测试期间,向可见标志表62提供指示图元是那些将被显示在显示器41上的图元还是那些不被显示在其上的图元的标志。渲染处理器16检查可见标志表62,并且从保存在图元缓冲器21中的几何数据中删除不被显示在显示器41上的那些图元的几何数据。换句话说,相关图元被删除了(步骤S40)。在删除图元之后,渲染处理器16为被显示在显示器41上的图元执行多遍渲染(步骤S50)。
这样,能够进行渲染而没有任何损耗。
接下来,更具体地描述在图11中的处理步骤。
图12显示了在Z缓冲绘制期间的过程,而图13显示了用于该过程的一个数据流。
在Z缓冲绘制期间,多遍控制部分22从图元缓冲器中读取几何数据以及图元编号,并且把它们提供给XYZ裁剪部分23(步骤S11)。XYZ裁剪部分23依据从多遍控制部分22中提供的图元数据执行图元的裁剪。XYZ裁剪部分23剪切或者整形超出显示器41的显示区50范围的图元的那部分。剪切或者整形操作的结果被反映给几何数据(步骤S12)。裁剪之后的几何数据以及图元编号被提供给SU/DDA部分24。用于在裁剪期间被除去的图元那部分的几何数据没有被提供给SU/DDA部分24。
SU/DDA部分24依据裁剪之后的几何数据执行插值,以创建形成图元的像素的坐标值(步骤S13)。SU/DDA部分24把生成的坐标值作为插值数据连同图元编号一起提供给Z测试部分25。
Z测试部分25使用从SU/DDA部分24提供的用于该像素的插值数据执行Z测试(步骤S14)。Z测试部分25从Z缓冲器26中读取相关像素的Z值。Z测试部分25然后把该Z值与包含在插值数据中的Z值进行比较以选择较接近于观察点的那个Z值。当从Z缓冲器26读取的Z值较接近于观察点时,Z缓冲器26保持不变(步骤S14未被更新),而当包含在插值数据中的Z值较接近于观察点时Z缓冲器26中的Z值被更新(步骤S14更新,步骤S15)。
为保存在图元缓冲器21中的所有几何数据执行上述操作顺序(步骤S16)。这样就完成了Z缓冲绘制。
在Z缓冲绘制完成之后,Z缓冲器26为每一个像素包含最接近于观察点的图元的Z值。应当注意到,当图元没有填充整个像素区域或者当图元是透明或半透明的时,在该像素中没有写入Z值。
图14和15是用来描述在该遍测试期间的操作的视图。就该遍测试来说,多遍控制部分22从图元缓冲器中读出几何数据以及图元编号,并且把它们提供给XYZ裁剪部分23(步骤S31)。XYZ裁剪部分23依据从多遍控制部分22中提供的几何数据裁剪图元,以剪切或者整形超出显示器41的显示区范围的那部分图元(步骤S32)。XYZ裁剪部分23然后把剪切或者整形操作的结果反映给几何数据。裁剪几何数据连同图元编号一起被提供给SU/DDA部分24。用于由裁剪部分剪切的那部分图元的几何数据没有被提供给SU/DDA部分24。
SU/DDA部分24依据裁剪之后的几何数据执行插值,以创建形成图元的像素的坐标值(步骤S33)。SU/DDA部分24把生成的坐标值作为插值数据连同图元编号一起提供给Z测试部分25。
Z测试部分25执行用于这遍测试的操作。在用于这遍测试的操作中,Z测试部分25把包含在从SU/DDA部分24提供的插值数据中的Z值和保存在Z缓冲器26中的Z值进行比较。Z测试部分25为相互匹配的那些Z值把插值数据和图元编号提供给模板测试部分27(步骤S34匹配)。当这些值不匹配时,渲染处理器16确定是否对保存在图元缓冲器21中的所有几何数据都完成了这遍测试(步骤S34未匹配,步骤S37)。
就其Z值没有被保存在Z缓冲器26中的那些像素来说,具有最接近于观察点的Z值的插值数据和图元编号被提供给模板测试部分27。
模板测试部分27对从Z测试部分25提供的插值数据执行模板测试(步骤S35)。作为模板测试的结果,当由插值数据指示的像素位于允许区域54中时,这个像素将被显示。因此,图元编号被提供给可见标志控制部分29(步骤S35;被显示)。当由插值数据指示的像素在不允许区域53中时,渲染处理器16确定是否对保存在图元缓冲器21中的所有几何数据完成了这遍测试(步骤S35未被显示,步骤S37)。
可见标志控制部分29响应于从模板测试部分27中提供的图元编号,更新在对应于该图元编号的地址处的可见标志为“1”(步骤S36)。
对保存在图元缓冲器21中的所有几何数据执行上述操作(步骤S37)。这样就完成了该遍测试。
Z缓冲绘制和这遍测试被用来分类出将不被显示在显示器41上的图元。更具体地说,XYZ裁剪部分23裁剪和分离出超出显示区50的范围的那部分图元。Z测试部分25通过Z测试分类出被隐藏在其它图元后面的图元。模板测试部分27通过模板测试分类出在不允许区域53中的图元。
在可见标志控制部分29中对应于如上所述被分类出的图元的图元编号的地址处的可见标志具有“0”值。这个图元没有被显示在显示器41上。
换句话说,XYZ裁剪部分23、Z测试部分25、和模板测试部分27用来把图元分类(拣选)成为将被显示在显示器41上的图元和不会被显示在其上的图元。仅仅对于将被显示在显示器上的那些图元,在可见标志控制部分29中的可见标志被设置为“1”。对于被XYZ裁剪部分23、Z测试部分25、和模板测试部分27中的至少一个确定为是将不被显示的图元的那些图元来说,可见标志保持为“0”。
执行一遍与这遍测试不同的所述Z测试。然而,当Z缓冲器26具有很多存储空间时可以用同一遍来执行Z测试。在这种情况下,就Z测试来说,Z值和该Z值的图元编号被写入Z缓冲器26中,以标识最接近于观察点的那个图元。作为Z测试的结果,有可能使用保存在Z缓冲器26中的图元编号分类图元。Z缓冲绘制和该遍测试能够用单遍实现。
在这个实施例中,可见标志表62中的可见标志在步骤S30被设置为“0”,以执行该遍测试。然而,这个步骤可以被删去。在这种情况下,Z缓冲绘制和该遍测试被用来把图元分类成为将被显示在显示器41上的图元和不会被显示在其上的图元,以及把可见标志设置为“0”或者“1”。
做为选择,XYZ裁剪部分22、Z测试部分25、和模板测试部分27中的每一个都可以传输被确定为不会被显示在显示器41上的图元的分类编号给可见标志控制部分29。
渲染处理器16依据可见标志控制部分29中的可见标志表62,防止在多遍渲染中读出保存在图元缓冲器21中的几何数据的、将不会被显示在显示器41上的图元的几何数据(步骤S40)。图16是一个被用来描述由渲染处理器16在删除图元过程中执行的操作的视图。
图元编辑部分30使用可见标志控制部分29中的可见标志表62中的可见标志,检查将被显示在显示器41上的图元和将不会被显示在显示器上的图元。例如,在图8的可见标志表62中,图元编号对应于在其处可见标志被设置为“0”的地址的图元是不会被显示的那些图元。图元编号对应于在其处可见标志被设置为“1”的地址的图元是将被显示的那些图元。
图元编辑部分30从图元缓冲器21中删除被确定为将不会被显示的那些图元的几何数据。
这确保在多遍渲染期间仅仅处理用于那些将被显示在显示器41上的图元的几何数据,以减小与多遍渲染有关的渲染处理器的负载。
例如,就一个三角形长条来说,因为使用了所有几何数据,所以不能删除几何数据。因此,可以向所有几何数据添加标志以指示它们是否被用于多遍渲染。这些标志被用来标识那些将不会被显示在显示器41上的图元。当然,这种标志可以被用于除了三角形长条之外的那些,而不必删除几何数据。
图17和18是被用来描述用于多遍渲染的操作的视图。
就多遍渲染来说,多遍控制部分22从图元缓冲器中读出几何数据以及图元编号,并且把它们提供给XYZ裁剪部分23(步骤S51)。
XYZ裁剪部分23依据从多遍控制部分22中提供的几何数据裁剪图元,以剪切或者整形超出显示器41的显示区范围的那部分图元(步骤S52)。XYZ裁剪部分23然后把剪切或者整形操作的结果反映给几何数据。裁剪的几何数据连同图元编号一起被提供给SU/DDA部分24。
依据裁剪之后的几何数据执行插值,以创建包含形成图元的像素的坐标值、亮度值和纹理坐标值的插值数据(步骤S53)。SU/DDA部分24把生成的插值数据连同图元编号一起提供给Z测试部分25。
Z测试部分25在像素基础上把包含在从SU/DDA部分24提供的插值数据中的Z值和保存在Z缓冲器26中的Z值进行比较。Z测试部分25把用于相互匹配的那些Z值的插值数据和图元编号提供给模板测试部分27(步骤S54匹配)。当那些值不匹配时,操作转到步骤S57。
对于其Z值没有被保存在Z缓冲器26中的那些像素来说,具有最接近于观察点的Z值的插值数据和图元编号被提供给模板测试部分27。
模板测试部分27对从Z测试部分25提供的插值数据执行模板测试(步骤S55)。作为模板测试的结果,当由插值数据指示的像素位于允许区域54中时,这个像素将被显示。因此,插值数据被传输到纹理映射部分31(步骤S55被显示)。当由插值数据指示的像素位于不允许区域53中时,操作转到步骤S57。
纹理映射部分31依据从模板测试部分27中提供的插值数据在帧缓冲器32中绘制一个图元(步骤S56)。这样就完成了对一个图元的绘制。
渲染处理器16执行步骤S54到S56的操作,直到为形成相关图元的所有像素完成绘制为止(步骤S57)在完成一个图元的绘制之后,确定是否完成了其它图元的绘制(步骤S58)。如果还有一个其绘制没有完成的图元,则操作转回到步骤S51(步骤S58N)。当为所有图元完成了绘制(步骤S58Y)时,确定是否以预定遍数完成了绘制(步骤S59)。如果没有达到预定的遍数,则操作转回到步骤S51(步骤S59N)。如果为所有图元完成了预定遍数,则终止多遍渲染(步骤S59Y)。
作为上述操作的结果,在帧缓冲器32中绘制了将被显示在显示器41上的二维图像(参见图1)。然后,显示控制器40把在帧缓冲器32中绘制的二维图像转换成为一个图像信号,并且把该信号传输到显示器41。显示器41显示该图像信号。
从上可知,依据这个实施例中的图像处理器1,在多遍渲染中从图元缓冲器21中读出的几何数据被限制在需要的最小量,这减小了与渲染有关的负载。
做为选择,渲染处理器16可以具有如图19所示的配置。
在图19中的渲染处理器16与在图1中的渲染处理器的不同之处在于在Z测试部分25之前提供了一个覆盖率计算部分33。
覆盖率计算部分33是用于计算由正被渲染的一给定图元覆盖的子像素的数目与组成单个像素的子像素总数的比值(覆盖率)。可以使用例如在日本公开专利2002-140722(“Apparatus and methodfor rendering antialiased image”,对应于美国公开专利2002/101435A1)中公开的一种设备和方法获得该覆盖率。图20是一个被用来描述在一个像素中图元的覆盖率的视图。在图20中,3个图元a、b、和c覆盖一个像素。就图元a、b、和c来说,这些图元在一个像素中的覆盖率为2∶3∶7。
渲染处理器18依据该比值混合图元a、b和c,以获得这个像素的一个代表图元。
由于为该像素渲染了图元a、b和c,所以就这个像素来说,阻止Z缓冲器26被图元a、b和c更新。具有上述特征的渲染处理器16有效地减少了锯齿状图形。因此,这种方法还能够被用于消除混叠现象的目的。
利用其中为每个像素计算覆盖率的这种方法,仅仅在其中覆盖率等于1(不透明或者在图元内)的区域中进行Z缓冲。就其中覆盖率小于1的边界来说,不执行Z缓冲。考虑到此,与使用Z缓冲器这个事实无关地执行Z排序(Z值的排序),以便消除边界的不自然性。按照从最远到最近的次序把这些值写入在帧缓冲器32中。在这种场合下,删除被隐藏在其它图元后面的那些图元。
虽然已经因此连同多遍渲染的例子描述了本发明,但是可以为使用纹理仅仅渲染一遍一个给定图元的典型渲染执行该遍测试,以仅仅渲染那些将被显示在显示器41上的图元。
从上可知,依据本发明,与传统的方法相比,能够显著地减少在渲染中、尤其是在多遍渲染中执行的操作数量。
权利要求
1.一种渲染处理单元,用于在一个二维屏幕上渲染三维图像,该三维图像中的每一个都是由多个图元组成的,该渲染处理单元包含一个图元缓冲器,在其中与相关图元相关联地写入了多个属性数据集,其中每个属性数据集表示多个图元之一的属性;以及一个测试器,其把所述图元缓冲器中的多个属性数据集相互进行比较,以把多个图元分类成为将被显示在二维屏幕上的第一组图元和将不被显示在二维屏幕上的第二组图元;该渲染处理单元被配置为渲染第一组图元和不渲染第二组图元,其中第一组图元和第二组图元由所述测试器分类输出。
2.如权利要求1所述的渲染处理单元,其中被写入所述图元缓冲器中的图元的数目至少等于适合于一个在二维屏幕上构建的屏幕上的三维图像的图元数目。
3.如权利要求1所述的渲染处理单元,进一步包含依据用于一个图元的已知属性数据集来插值像素的插值装置,所述测试器通过把作为像素插值的结果而获得的一个新的属性数据集增加到可相互进行比较的属性数据集中,在像素基础上对图元进行分类。
4.如权利要求3所述的渲染处理单元,其中每一个像素被分成预定数目的子像素,所述插值装置在要对至少一个子像素进行渲染时,依据用于一个图元的已知属性数据集插值这些子像素,所述测试器通过把作为子像素插值的结果而获得的一个新的属性数据集增加到可相互进行比较的属性数据集中,在子像素基础上对图元进行分类。
5.如权利要求4所述的渲染处理单元,进一步包含覆盖率计算装置,其计算由正被渲染的一个给定图元覆盖的子像素的数目与组成单个像素的子像素总数的比值,并且根据由所述覆盖率计算装置计算的结果确定用于主题像素的属性数据集。
6.如权利要求1所述的渲染处理单元,其中当在图元的边界上的像素处绘制了两个或更多图元时,所述测试器不分类这些像素。
7.如权利要求1所述的渲染处理单元,其中所述图元缓冲器中的每个属性数据集包含表示一个相关图元在三维图像中的位置的位置信息,以及所述测试器比较包含在属性数据集中的位置信息,以把图元分类成为第一组和第二组图元,其中第一组图元是通过二维屏幕最接近于一个观察者的视点的图元,而第二组图元是除被分类成为第一组图元的那些图元之外的其它图元。
8.如权利要求1所述的渲染处理单元,其中每个图元适于叠加在包含允许区域和不允许区域的模板数据上,其中该容许区域被允许显示在二维屏幕上,而不允许区域则不被允许显示在二维屏幕上,所述模板数据表示将被显示的一个或者多个图像的透明度和形状,所述测试器把图元分类成为第一和第二组图元,其中第一组图元是其至少一部分被叠加在模板数据的允许区域或者不允许区域上的图元,第二组图元是除了被分类成为第一组图元的那些图元之外的其余图元。
9.如权利要求1所述的渲染处理单元,其中所述测试器在一个在渲染过程中被参考的预定的可见标志表中记录一个用于描述一个给定图元是第一组图元还是第二组图元的标志,该标志被与用于该给定图元的属性数据集相关联地记录。
10.如权利要求9所述的渲染处理单元,其中该标志是一个就每个图元具有不同值的数字标志,并且该标志的值依据由正被显示在二维屏幕上的图元覆盖的像素数目而被更新。
11.如权利要求9所述的渲染处理单元,进一步包含编辑装置,其适于参考记录在可见标志表中的用于相关图元的标志,限制从图元缓冲器中为第二组图元读出属性数据集。
12.如权利要求11所述的渲染处理单元,其中所述编辑装置适于从所述图元缓冲器中删除用于被分类成为第二组图元的那些图元的属性数据集。
13.一个图像处理器,包含一个帧缓冲器,其大小等于一个二维屏幕中的显示区的大小;一个第一处理器,适于执行对描述一个三维图像的多个图元的几何处理以生成关于该三维图像的几何数据;一个第二处理器,依据生成的几何数据在所述帧缓冲器中渲染对应于该三维图像的二维图像;以及一个控制器,用于在显示区中显示所渲染的二维图像。所述第二处理器把多个属性数据集互相进行比较,以把该多个图元分类成为将被显示在二维屏幕上的第一组图元和不被显示在二维屏幕上的第二组图元,以及在所述帧缓冲器中渲染由第一组图元而不是第二组图元组成的二维图像,每个属性数据集表示由从所述第一处理器中获得的几何数据规定的多个图元中的一个图元的属性。
14.如权利要求13所述的图像处理器,其中在所述第一处理器和所述第二处理器之间提供一个缓冲存储器,由所述第一处理器生成的几何数据经由该缓冲存储器被传输到所述第二处理器。
15.如权利要求13所述的图像处理器,进一步包含一个图像接受机构,其从一个外部设备中接受将被处理的三维图像,并把它们提供给所述第一处理器。
16.一种渲染方法,包含由一个用于在二维屏幕上渲染三维图像的设备按此顺序执行的一遍测试和一遍渲染,三维图像中的每一个都是由多个图元组成的,并且该设备具有一个在其中写入了形成图像的图元的图元缓冲器,该遍测试用于在一个图元缓冲器中与相关图元相关联地写入多个属性数据集,以及用于相互比较该多个写入的属性数据集,以把该多个图元分类成为将被显示在二维屏幕上的第一组图元和将不被显示在二维屏幕上的第二组图元,其中每个属性数据集表示组成这些三维图像的多个图元中的一个图元的属性,该遍渲染用于从图元缓冲器中读出第一组图元而不是第二组图元以渲染读取的第一组图元,其中第一组图元和第二组图元是在该遍测试中被分类出的。
17.如权利要求16所述的渲染方法,其中该设备两次或多次循环地执行该遍渲染以对同一个图元两次或多次地渲染不同的纹理。
18.一种安装在一个计算机上的半导体设备,其中该计算机连接到一个具有二维屏幕的显示器,该半导体设备适于在计算机上建立和计算机的其它组件协同操作的下列功能部件,该功能部件包含一个图元缓冲器,在其中与相关图元相关联地写入多个属性数据集,其中每个属性数据集表示组成这些三维图像的多个图元之一的属性;一个测试器,其把图元缓冲器中的多个属性数据集相互进行比较,以把多个图元分类成为将被显示在二维屏幕上的第一组图元和不被显示在二维屏幕上的第二组图元;以及渲染处理装置,用于渲染第一组图元而不是第二组图元,以生成一个将被显示在二维屏幕上的二维图像,其中该第一组图元和第二组图元是由测试器分类出的。
19.一个用于指示一台计算机执行下列任务的计算机程序,该计算机连接到一个在其中写入了用于形成图像的图元的图元缓冲器、以及一个具有二维屏幕的显示器上,该任务包含在图元缓冲器中与相关图元相关联地写入多个属性数据集,其中每个属性数据集表示组成这些三维图像的多个图元之一的属性;把在图元缓冲器中的多个属性数据集互相进行比较,以把多个图元分类成为将被显示在二维屏幕上的第一组图元和不被显示在二维屏幕上的第二组图元;以及渲染第一组图元而不是第二组图元,以生成一个将被显示在二维屏幕上的二维图像,其中该第一组图元和第二组图元是被分类出的。
20.一种计算机可读存储介质,其中存储了如权利要求19所述的计算机程序。
全文摘要
提供了一个用其能够减少渲染数量的图像处理器及其组件,以及一种渲染方法。依据在一个图元缓冲器中的关于多个图元的数据,多个图元被一个XYZ裁剪部分、一个Z测试部分、和一个模板测试部分分类成为将被显示在一个显示器上的第一组图元和将不被显示在其上的第二组图元。在一个帧缓冲器中使用在图元缓冲器中的用于第一组图元的数据绘制一个二维图像。
文档编号G06T15/40GK1527990SQ0280911
公开日2004年9月8日 申请日期2002年11月22日 优先权日2001年11月27日
发明者佐佐木伸夫 申请人:索尼计算机娱乐公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1