图形处理装置和图形处理方法

文档序号:6558965阅读:232来源:国知局
专利名称:图形处理装置和图形处理方法
一般地说,本发明涉及改进的数据处理系统,特别是处理图形数据的方法和装置。更具体地说,涉及校正像素坐标和纹理(texture)坐标的方法和装置。
数据处理系统,例如个人计算机和工作站,通常用于运行计算机辅助设计(CAD)应用、计算机辅助制造(CAM)应用以及计算机辅助软件工程(CASE)工具。工程师、科学家、技术员以及其他人每天都在利用这些应用程序。这些应用涉及复杂的计算(例如有限元分析)去模拟结构中的应力。其他应用包括化学的或分子的模拟应用。CAD/CAM/CASE应用就传递给用户的信息而论通常是图形功能很强的。数据处理系统用户可以利用其他图形功能强的应用,例如桌面出版应用。通常,这些应用程序的用户需要和要求数据处理系统能特别快速地提供图形信息。
处理图形数据流以在视频显示终端上提供图形显示,需要特别快的图形系统以快速响应提供显示。在这些类型的图形系统中,图元(primitive)数据被接收供处理和显示。图元是用作结构单元供创建图像的图形元素,如点、线、三角形、多边形或四边形。一个图元由一个或多个顶点来定义。一个顶点定义一个点,一个边的端点,或一个多边形的两边相遇的拐角点。顶点还有与其件随的数据,其中这些数据包括诸如位置坐标、颜色、法线(normal)以及纹理坐标。送到图形系统的命令规定应如何处理这些图元及其他数据以供显示。
由于在处理图形数据时涉及大量的数据和计算,特别是对于三维应用,许多这些计算已从中央处理单元卸载到图形适配器。通过在图形适配器中使用多处理器系统或硬连线的几何引擎,使这些几何计算加快了速度。多处理器处理具有实现将来的过程或算法的灵活性,但编程困难并增加开发图形适配器所需的费用和时间。另一方面,硬连线的几何引擎对编程而言是很简单明了的。利用硬连线的几何引擎,使得在这些引擎中实现这些图形功能的硬件最佳化,以减小完成图形功能所需的时间,这是人们所希望的。一些这样的功能包括例如把坐标从一种坐标系统变换到另一种坐标系统,缩放坐标,剪切对象和转动对象等。
所以,有一种改进的方法和装置来实现图形功能,使得减少完成这些功能所需的时间,这会是很有好处的。
本发明提供一种用在图形系统中的方法和装置。该图形系统包括一个输入,其中该输入接收图形数据,其中的图形数据包括对象的位置坐标和深度坐标。提供了一个输出,其中该输出传送处理过的图形数据。该图形系统还含有多个处理部件,其中这多个处理部件产生处理后的图形数据。在这多个处理部件中的第一处理部件与输入相连,而在这多个处理部件中的最后一个处理部件与输出相连。在这多个处理部件中的一个选定处理部件接收位置坐标和深度坐标,对深度坐标求倒数以形成深度坐标的倒数,并用深度坐标的倒数乘位置坐标。
相信是本发明特征的新特点将在所附权利要求中提出。然而,结合附图阅读下文中对实施示例的详细描述,将能最好地理解发明本身和最佳使用方式及其进一步的目的和优点,这里

图1是根据本发明的一个最佳实施例在其中可以实现本发明的一个数据处理系统的图形显示;图2是根据本发明的一个最佳实施例的数据处理系统的方框图;图3显示根据本发明的一个最佳实施例对图形数据进行的处理;图4是根据本发明的一个最佳实施例的几何引擎的方框图;图5显示根据本发明的一个最佳实施例的顶点片段描述;图6是一个表,显示根据本发明的一个最佳实施例在一特定级受影响的片段;图7是一个表,显示根据本发明的一个最佳实施例在一特定级所需要的片段;图8是一个表,显示根据本发明的一个最佳实施例用于在各级之间传送数据的信号;图9A和图9B是根据本发明的一个最佳实施例的一个透视分割单元的方框图;图10显示根据本发明的一个最佳实施例的进入坐标和输出坐标;图11是根据本发明的一个最佳实施例在透视分割单元中用于控制第一级的状态机图;图12是根据本发明的一个最佳实施例在透视分割单元中用于控制第二级的状态机图;以及图13显示根据本发明的一个最佳实施例的数据流。
现在参考附图,特别是参考图1,图中描绘了根据本发明的一个最佳实施例在其中实现本发明的一个数据处理系统。所描绘的计算机100包括系统单元110,视频显示终端102,键盘104,存储器装置108,以及鼠标106,其中的存储器装置108可以包括软盘驱动器和其他类型的永久或可卸存储介质。个人计算机100还可以包括其他输入装置,如游戏杆、触屏垫、触摸屏、跟踪球、送话器等。计算机100可用任何适当的计算机实现,如IBM RS/6000计算机或Intelli Station计算机,它们都是位于纽约州的Armonk的国际商用机器公司的产品。虽然所描绘的图形显示是一个计算机,但可在其他类型的数据处理系统(如网络计算机)中实现本发明的其他实施例。计算机100最好还包括一个图形用户界面,它可由驻留在计算机可读介质中的系统软件在计算机100中进行操作来实现。
接下来转向图2,图中描绘了根据本发明的一个最佳实施例的数据处理系统的方框图。数据处理系统200是在一个数据处理系统(如图1中的计算机100)中使用的部件之一例。数据处理系统200利用外围部件互连(PCI)局部总线结构形式的总线202。虽然所描绘的例子利用PCI总线,但其他总线结构,如加速图形端口(AGP)和工业标准结构(ISA),也可以使用。在这些例子中处理单元204、存储器206以及图形适配器208连接到总线202。在所描绘的例子中处理单元204包括一个或多个微处理器。
在这个例子中,图形适配器208处理图形数据供显示装置210上显示。图形数据是从处理单元204所执行的应用程序那里接收的。图形适配器208包括光栅引擎212,几何引擎214,帧缓存器216以及视频控制器218。光栅引擎212接收来自应用程序的图形数据。在这些例子中,光栅引擎包含用于使图像光栅化以供显示的硬件和/或软件。光栅引擎214用于将文本和图像转变成像素矩阵以形成位图供屏幕上显示。在所描绘的例子中,光栅引擎212把所收到的图形数据发送到几何引擎214,它提供处理图元和其他图形数据的功能,以产生图像供光栅引擎212去处理。在这些例子中,本发明的机制位于几何引擎214中。
帧缓存器216是一个存储器区,用于保持一帧数据。帧缓存器216通常用于屏幕显示,其大小是屏幕上最大图像区的大小。帧缓存器216形成图形适配器208上的一个单独存储库,用于在位像“画”在屏幕上时保持该图像。视频控制器218取帧缓存器216中的数据并在显示器210上产生显示。通常,视频控制器218将循环穿过帧缓存器216,一次扫描一行。
现在转到图3,图中描绘了根据本发明的一个最佳实施例对图形数据的处理。对图形数据的处理可分成三级。在第一级,应用程序300产生供显示的图形数据。这些级总是在计算机主中央处理单元中运行,如图2中的处理单元204。所产生的数据作为一系列点或顶点用于代表一个对象,这些点或顶点根据应用程序300提供的图元类型按预先确定的方式连接起来。第二级涉及几何引擎302,它负责把从应用程序300接收的输入顶点转换成供屏幕上观看的形式。通常,与转换顶点一起,几何引擎302还负责产生来自光源的色彩供献,根据到观看者的距离产生一些因素,这些因素允许一对象变得不那么可以看到,以及把场景前切成给定的观看尺寸。几何引擎302可以在中央处理单元中实现,也可在适配器中实现。在这些例子中,几何引擎302是作为图2中的几何引擎214和图形引擎208实现的。第三级,光栅引擎304取已经转换成屏幕坐标的顶点并内插其色彩或映射顶点之间的图像以把一对象的顶点表示转变成实心的对象。在这个例子中,光栅引擎304可以作为图2的图形适配器208中的光栅单元212来实现。在所描绘的例子中,与多处理器引擎相反,几何引擎302是一个硬连线的几何引擎。
本发明提供一种装置去实现坐标校正功能,这些功能通常是在软件中实现的。更具体地说,本发明的机制提供了在图2的几何引擎214内校正像素坐标和纹理坐标的能力。像素坐标是X、Y和Z坐标,而纹理坐标是S、T、R和Q坐标。本发明提供一种改进的方法和装置,用于在这些例子中的图3所示几何引擎302内的单一级或处理部件中校正和处理这些坐标。在这些例子中,这些功能是在几何引擎内的单一处理部件中实现的。
现在转到图4,图中描绘了根据本发明的一个最佳实施例的几何引擎的方框图。几何引擎400表现为若干级或处理部件,它们可在几何引擎中实现,如图2中的几何引擎214。在这个例子中,几何引擎400包括几何单元402,光栅接口单元404和光栅接口单元406。数据由光栅接口单元404接收,供几何单元402中处理。该数据是从光栅引擎中接收的,如图2中的光栅引擎210。处理后的数据用光栅接口单元406返回到光栅引擎。本发明的机制是在几何单元402的处理部件内实现的。具体地说,处理部件在硬件中实现处理图形数据的方程式。本发明的机制通过把方程式优化到更简单的形式并在处理部件中实现这些简化了的方程式,从而降低了硬件的复杂性。
在这个例子中,几何单元402是含有一组处理部件的图形流水线,它包括顶点打包单元408,正常/模拟观看变换单元410,归一化单元412,纹理坐标产生单元414,光照单元416,纹理/投影变换单元418,剪切单元420,雾因子发生单元422,透视分割单元424,视点变换单元426以及顶点漏斗(funnel)单元428。这些处理部件也称作“级(stage)”。
顶点打包单元408是几何单元的顶级,它组装顶点的属性域。顶点定义一个点,一个边的端点,或多边形的两边交汇处的拐角点。每个顶点含有几何流水线中任何级使用的每个可能的数据片段。这些片段是数据,例如位置坐标、色彩、法线和纹理坐标。正常/模拟观看变换单元410用于将正常矢量从对象空间变换到视觉空间。这种变换依赖于模拟观看变换,它是模拟观看矩阵的逆转置。在正常/模拟观看变换单元410中的模拟观看变换通过平移、缩放和旋转目标来把对象坐标变换成眼坐标。
归一化单元412把正常矢量改变为单位长度矢量,其大小为1.0而保持原始矢量的方向。纹理坐标产生单元414产生纹理坐标用于显示图元的纹理。纹理坐标产生单元412产生纹理坐标,如对象线性的、眼线性的以及球形的。
光照单元416计算每个顶点的阴影和色彩。具体地说,光照单元416根据对象的取向、对象的材料性质、布景的性质以及任何规定的光源来产生对象的每个顶点的色彩。纹理/投影变换单元418通过平移、缩放和旋转对象来变换纹理坐标。此外,纹理/投影变换单元418通过平移、缩放和旋转对象把眼坐标变换成剪切坐标,把对象移动到“观看空间(viewing volume)”中。通常这一空间是与XYZ坐标系正交的一个立方体,其延伸量为±W。透视投影使较远的对象看起来较小,而正交投影并不使较远的对象看起来较小。
剪切单元420把对象剪切到观看空间的大小。雾因子发生单元422通过使远离观看者的对象不那么能看得见来使对象逐渐消失在远处(大气效应)。
透视分割单元424的用途是通过除以第四坐标W将剪切坐标变换到归一化装置坐标[-1,+1]。在这些例子中,本发明的机制是在透视分割单元424中实现的。本发明的机制提供了使用W对像素坐标(X、Y和Z)及纹理坐标(S、T、R和Q)二者的校正。视点变换单元426用于把归一化装置坐标变换成屏幕或窗口坐标。装置坐标是由适配器用于显示图像的坐标。归一化装置坐标是归一化到0和1之间的装置坐标。
再有,本发明的机制使用乘法而不是除法来调整这些坐标。代替以深度值W除这些坐标,产生了深度值W的倒数。这个倒数1/W与像素坐标及纹理坐标相乘。此外,本发明的机制使用两级。在第一级中发生深度值W的倒数。在这一级中的第一FIFO用于保持像素坐标和纹理坐标,直至产生了深度值的倒数。当第二级接收W的倒数以及像素坐标和纹理坐标时,发生像素坐标及纹理坐标的乘法。本发明的机制允许在同一时间量中完成所有这些坐标的乘法,在这个例子中是5个时钟周期。
顶点漏斗单元428取这些顶点的片段数据并把它们放到一个总线上供光栅接口单元使用。在这个例子中,这些片段数据被漏入64位数据字中供总线上传送。
在几何单元402中所示片段和分级是基于OpenGL中指定的片段和操作,OpenGL是在OpenGL图形系统中定义的其说明书中(1.2版)可从Silicon Graphics公司得到。
在这个例子中,几何引擎400在顶点打包单元408接收数据,每次一个字。所造成的顶点发送给光栅引擎,每次一个字。
现在转到图5,图中显示了根据本发明的一个最佳实施例对顶点片段数据的描述。表500显示构成顶点的不同片段。列502显示片段,列504是它们在几何引擎中的使用,列506是它们在光栅引擎中的使用。这些片段在图4中的顶点打包单元408中被组合,它们包含用于描述那个特定顶点的信息。
当一个顶点穿过几何流水线(例如几何引擎400)时,一个给定的片段(例如图4中显示的那些片段)可基于该级影响那个特定片段的程序被更新。当一个片段对其后各级不再有意义时,该片段便停止向流水线下方传送。在几何流水线中的每级或处理部件用一简单的启动命令编程,使其或者影响一给定顶点片段或者把那个数据从前一级传送到它的输出端。
转到图6,图中的表显示根据本发明的一个最佳实施例在一特定级中受影响的片段。表600显示各级(如图4中的几何引擎400中的那些级)的分解以及根据特定级的程序可能改变的片段。表600包括列602标识不同的阶段。受影响的片段示于列604,它标识受列606中所示命令影响的不同片段。这些命令用于在表600中所示各阶段启动或禁止对各种片段的处理。特别是,下面所示例子显示有选择地启动光照级以及把片段fad、fs、bad以及bs与光照级产生的数据组合起来的能力。
在图7中的表显示根据本发明的一个最佳实施例在一特定级中所要求的片段。表700在列702中显示各级,在列704中显示每级所要求的片段。在这个例子中,光照级使用如下片段产生光照效果nx、ny、nz、cca、ccr、ccg、ccb以及PScc。片段fad、fs、bad。及bs是从流水线外部的源(如在主机处理器中执行的应用程序)接收的片段。本发明的机制允许只是选择光照级的输出或把那个输出与从该源接收的片段组合。另一种情况是,从该源接收的片段可以不受影响地穿过光照级。
现在转到图8,表中显示根据本发明的一个最佳实施例在各级之间传送数据所用的信号。在这些例子中各级之间的数据传送用于传送两类数据命令数据和顶点数据。可以传送两类命令。一类是包含一个命令字和一个数据字的命令数据对。另一类命令涉及数据串,在其中存在一个命令字和多个数据字。
表800显示一组信号Valid(有效)、ready(准备好)、cmd Bit及参cdSelect,用于在列802中所示各级之间传送数据。在列804和806中显示一个传送是否会发生。在列808中显示一个传送命令的信号的可应用性。列810中显示一个传送数据字的信号的可应用性。列812中显示在传送一顶点中的可应用性。valid(有效)信号表示有一个命令或数据或顶点需要传送到下一级。ready(准备好)信号表示一级已准备好要传送数据。如表中可见,这个信号可应用于命令、数据和顶点。信号cmdBit表示一个命令要被传送过该接口。信号cdSelect表示是否存在一个命令数据而不是存在顶点数据。这些信号考虑到命令以及X和Y坐标数据是在图4中的几何单元402内的相同线上被传送的。
现在转到图9A和图9B,图中显示根据本发明的一个最佳实施例的透视分割单元的流程图。部分900和部分902提供了图4中的透视分割单元424的更详细说明。
在标识这些图中的信号时,TFG表示该信号是用于因子产生单元,而VTX是用于顶点。透视分割单元的部分900构成这一单元的穿过部分。根据本发明的一个最佳实施例,部分902完成对像素坐标和纹理坐标的透视分割。再有,透视分割单元包含两级,即第一级923和第二级925。在第一级中产生深度值W的倒数。在第二级中深度值的倒数与像素坐标及纹理坐标相乘。
在部分902中,控制数据存储在FIFO1控制器904中。这一控制数据包括各种顶点流命令,如ENABLE_PERSPECTIVEDIVISION,GE_TEX_PARMS0,GE_TEX_PARMS1,SHD_TEX_PARMS0,SHD_TEX_PARMS1,以及SAVE/RESTORE CONTEXT。命令ENABLE_PERSPECTVEDIVISION用于启动透视分割单元内的处理。命令GE_TEX_PARMS0用于透视分割单元启动后启动和禁止对纹理坐标变量S0、T0、R0、及Q0的除操作。命令GE_TEX_PARMS1用于透视分割单元启动后启动和禁止对纹理坐标变量S1、T1、R1及Q1的除操作。命令SHD_TEX_PARMSO用于透视分割单元启动后启动和禁止对纹理坐标变量S0、T0、R0及Q0的除操作。命令SHD_TEX_PARMS1用于透视单元启动后对纹理坐标变量S1、T1、R1及Q1的除操作。命令SAVE/RESTORE CONTEXT用于保存或恢复一个32位字中的3位。在这些例子中,这3位用于启动透视除,启动对第一组纹理坐标的处理和启动对第二组纹理坐标的处理。这些命令可以通过T_FG_VTX_X和T_FG_VTX_Y传送。该命令可以通过T_FG_VTX和T_FG_VTX_Y传送。
传送的片段存储在片段FIFO1 906中。FIFO1控制904和片段FIFO1 906是透视分割单元中的第一级的部分。这一控制数据和片段是从雾因子发生单元908接收的,它是一个雾因子发生单元,如图4中的雾因子发生单元422。与(AND)门910接收控制数据,如T_FG_VLD指示的Valid(有效)信号。此外,控制信号SM1_RDY和ready(准备好)信号FIFO1_ready被输入到与门910。当片段FIFO1有空间接收增加的数据时,便产生“准备好”信号。SM1_ready是从一状态机中接收的,在下面的图11中将详细描述它。当透视分割单元准备好要接收新增加的数据以供处理时,便使用与门912产生一个“准备好”信号T_PD_ready发送给雾因子发生单元908。与门912从状态机接收一个SM1_RDY信号,并从FIFO1控制904接收一个FIFO1_ready信号。
与门914和与门916用于把片段和控制数据从FIFO1控制904和片段FIFO1_906传送到FIFO2控制918和片段FIFO2 920。FIFO2控制918和片段FIFO2 920构成透视分割单元中的第二级。
与门914接收一个“有效”信号FIFO1_valid和一个“准备好”信号FIFO2_ready_out,以及一个SM2_RDY信号。“有效”信号是在W已被求倒数之后由FIFO1控制904产生的。“准备好”信号是在视点变换级准备好接收数据时由FIFO2控制918产生的。SM2_RDY信号是由一状态机产生的,将在下文中针对图12加以描述。当所有数据已被接收而且计算已经完成时,与门914产生“有效”信号STAGE2_VALID。
在图9B中,在透视分割单元的部分902中,像素数据和纹理数据被接收到片段FIFO1 906中。像素坐标X、Y和Z由片段FIFO1 906接收,如信号T_FG_VTX_X、T_FG_VTX_Y和T_FG_VTX_Z分别指示的那样。此外,乘法器922接收一个Y坐标T_FG_VTX_Y以及一个存储控制信号。乘法器922用于在新数据和被恢复的数据之间切换。纹理坐标S、T、R及Q也被接收到片段FIFO1 906中。在这个例子中,有两组纹理坐标可以被接收,如信号T_FG_VTX_S0、T_FG_VTX_T0、T_FG_VTX_R0、T_FG_VTX_Q0、T_FG_VTX_S1、T_FG_VTX_T1、T_FG_VTX_R1以及T_FG_VTX_Q1指出的那样。这些纹理坐标的值分别作为纹理坐标S1、T1、R1、Q1、S2、T2、R2和Q2输出。深度值W也从雾因子发生单元908接收,如信号T_FG_VTX_W指出的那样。这个深度值在放入W FIFO1 926之前由倒数器924处理,W FIFO1 926是片段FIFO1 906的组成部分。倒数器924产生深度值的倒数以形成1/W,如信号级1_W所指示的那样。在所描绘的例子中,倒数器924在5个时钟周期内产生一个W倒数。
多路转换器928、930、932和934分别为乘法器936、938、940和942选择数据。这些多路转换器从片段FIFO1 906接收数据。锁存器944-964用于保持送给多路转换器之前的数据。锁存器966-972用于保持送给多路转换器之前取自锁存器928-934的数据。多路转换器928接收像素坐标X、Y和Z。多路转换器930接收纹理坐标S1、T1、和R1,而多路转换器932接收纹理坐标S2、T2和R2。多路转换器934用于接收纹理坐标Q1和Q2。
乘法器A 936将像素坐标与取自W FIFO1 926的深度值倒数相乘。每个时钟周期向乘法器A 936发送一个像素坐标。由乘法器A936对像素坐标做乘法占用3个时钟周期。在这个例子中,像素坐标按如下顺序与深度值W的倒数相乘X、Y和Z。在X坐标值与1/W相乘期间,锁存器944和946锁存Y和Z的值。在下一个时钟周期,Z值锁存在锁存器946中,而Y值与1/W在乘法器A 936中相乘。在第三个时钟周期,Z坐标值与1/W相乘。在这些例子中,乘法器A 936、乘法器B 938、乘法器C 940和乘法器D 942使用一个二值或二时钟周期操作来乘值。结果,乘法器A936对像素坐标的处理占用5个时钟周期。
乘法器B 938用于以1/W乘纹理坐标S1、T1和R1。这些坐标都是在3个时钟周期内被处理。在这些例子中这些坐标按下列顺序做乘法S1、T1和R1。乘法器C 940用于以1/W乘纹理坐标S2、T2和R2。这些坐标都是在3个时钟周期内被处理。这些坐标按下列顺序做乘法S2、T2和R2。乘法器D 942用于以1/W乘纹理坐标Q1和Q2。在这些例子中这两个坐标的乘法是在2个时钟周期上完成,其坐标Q1首先做乘法。
乘法器A 936、乘法器B 938、乘法器C 940及乘法器D 942的输出被送到多路转换器974—994。这些多路转换器用于将处理过的像素和纹理坐标发送到片段FIFO2 920内的适当位置。这些FIFO条目位于片段FIFO 920中。像素坐标放在FIFO条目901、903和905中。纹理坐标放在FIFO条目907-921中。
再有,在透视分割单元被禁止的情况下,多路转换器974-994可用于直接从片段FIFO1 906中接收值。在这种情况中,来自片段FIFO1906的值被直接传送到片段FIFO2 920中。这些值从片段FFIO2 920传送到视点变换单元,例如图4中的视点变换单元426。
现在转到图10,图中说明根据本发明的一个最佳实施例的进入坐标和输出坐标。表1000说明像素坐标和纹理坐标的输入坐标变量。这些是由透视分割单元(如图9A和图9B中所示透视分割单元)接收的值。输入的像素坐标变量是X、Y和Z,而输入的纹理坐标变量是S0、T0、R0、Q0、S1、T1、R1和Q1。再有,深度值W用于透视分割单元中。输出像素坐标是X/W、Y/W和Z/W。输出纹理坐标S0/W、T0/W、R0/W、Q0/W、S1/W、T1/W、R1/W和Q1/W。如上所述,在这些例子中深度值W的倒数与输入的坐标相乘。
现在转到图11,图中描绘了根据本发明的一个最佳实施例在透视分割单元中用于控制第一级的状态机。状态机1100是状态机的一个例子,它可用于处理第一级,例如由图9A和图9B中的FIFO1控制904及片段FIFO1 906形成的第一级。更具体地说,状态机1100用于处置对深度值W求倒数。在状态机1100中显示的各种信号对应于图9A和图9B中所示信号。过程在“准备好”状态ST0开始并进入状态ST1,如果T_FG_VALID、FIFO1_READY、/T_FG_CDSELECT以及ENABLE_PD存在的话。ENABLE_PD用于启动该级的功能。T_FG_CDSELECT是图8中所示cdselect命令。符号“/”表示信号T_FG_CDSELECT是处于“非”或“逆”状态。响应这些条件,状态机1100使SM1_RDY和SM1_W_VLD复位,它们分别是“准备好”和“有效”信号。“准备好”信号发送到图9中的与门910并指出该系统已准备好接收数据。当它被复位时,该系统是未准备好接收数据。其后,状态机1100在每个时钟周期上从ST1移到状态ST2,然后到状态ST3,再到ST4。这些状态代表求深度值W倒数的过程所占用的时钟周期。换句话说,每个状态移动发生在一个时钟周期上。
状态机1100移到状态ST5,如果FIFO1(例如图9A和图9B中的片段FIFO1 906)是半满的话。在这个例子中雾因子发生单元含有两级。当第一个顶点被接收时,该单元是半满的,因而能再接收一个顶点供处理。“有效”信号是要告知图9中的FIFO 926去从倒数器924中加载数据。如果FIFO1为空的,则状态机1100从状态ST4移回到“准备好”状态ST0并设置SM1_RDY和SM1_W_VLD。在这个例子中,所有有效信号为高值。例如,一个信号是准备好的,如果该信号是高值的话。
在状态ST5,状态机1100返回到状态ST0并设置信号SM1_RDY和使信号SM1_W_VLD复位。从状态ST0,状态机1100可以移到状态ST5,如果T_FG_VALID、FIFO1_READY、T_FG_CDSELECT及SM1_W_VLD存在的话。在从“准备好”状态ST0移到状态ST5时,状态机1100设置SM1_RDY和使SM1_W_VLD复位。
现在转到图12,图中描绘了根据本发明的一个最佳实施实施例在透视分割单元中用于控制第二级的状态机。状态机1200是状态机的一个例子,它可用于处理第二级,例如由图9A和图9B中的FIFO2控制918及片段FIFO2 920形成的第二级。更具体地说,状态机1200用于处置像素坐标和纹理坐标与第一级中产生的深度值倒数的乘法。
状态机1200在“准备好”状态S0开始并移到状态S1,如果FIFO1_VALID、FIFO2_READY OUT、/FIFO1_CDSELECT以及ENABLE_PD存在的话。在移到状态S1时,状态机1200使SM2_RDY和SM2_ZR_VLD复位。SM2_RDY信号指出该系统已准备好接收数据供处理。使这一信号复位则指出处理正在进行而且不能接收数据。SM2_ZR_VLD指出Z值已做乘法并需要放入FIFO。然后状态机1200移到状态S2。在从状态S2移到S3时,状态机设置SM2_XSQ_VLD。状态机1200从状态S3移到状态S4并使SM2_XSQ_VLD复位和设置SM2_YTQ_VLD。这两个信号表明x和y值已被处理并准备好放入FIFO。当一个信号被复位时,它不再是准备好的了。
状态机1200从状态S4移到状态S5,如果FIFO2是半满的话。否则,如果FIFO是空的,则状态机1200移回到“准备好”状态S0并设置SM2_RDY,使SM2_YTQ_VLD复位以及设置SM2_ZR_VLD。
状态机1200可以从“准备好”状态S0移到状态S5,如果FIFO1_VAL1D、FIFO2_READY_OUT、FIFO1_CDSELECT、SM2_ZR_VLD、SM2_RDY以及SM2_ZR_VLD存在的话。当顶点后面跟随一个命令时便发生这种状况并提供时间处理该命令。在从“准备好”状态S0移到状态S5时,状态机1200使SM2_RDY复位并设置SM2_ZR_VLD。
现在转到图13,图中显示根据本发明的一个最佳实施例的数据流。图13中所示数据流是针对穿过图9A和图9B所示透视分割单元的数据。
行1300标识时钟周期,而列1302标识装置和部件。在这个例子中,在时钟周期零,深度值W1由一倒数器(1/W)接收,如图9B中的倒数器924。在这个值的倒数产生之前要过去5个时钟周期。在时钟周期5,值1/W被放入FIFO1,它是片段FIFO1 908。倒数器接收第二个深度值W2供处理。在时钟周期7,乘法器A开始用1/W乘X。乘法器A作为乘法器A 936实现。乘法器B用1/W乘纹理坐标S1,乘法器B是作为乘法器B 938实现的。乘法器C用1/W乘纹理坐标S2并作为乘法器C 940实现。乘法器D用1/W乘纹理坐标Q1并作为乘法器D 940实现。
在这些例子中,乘法器是两级乘法器,需要两个时钟周期以产生一个结果。在这个例子中,在时钟周期8,乘法器A接收Y坐标并用1/W乘它,而同时发生X坐标的最后相乘过程。乘法器B接收纹理坐标T1,乘法器C接收纹理坐标T2,而乘法器D接收纹理坐标Q2。这些坐标均乘以1/W。如能看到的那样,对先前接收的坐标继续进行乘法。在时钟周期9,乘法器A接收像素坐标Z,乘法器B接收纹理坐标R1,而乘法器C接收纹理坐标R2。在此时乘法器D不接收另一个坐标,因为与其他乘法器相比,它连接两个多路转换器,而其他乘法器连接3个多路转换器。在时钟周期9,不存在要发送到多路乘法器D的其他数据。乘法器D结束用1/W对纹理坐标Q2的乘法。
在时钟周期10,倒数器接收另一个深度值W3。此外,深度值W2的倒数由FIFO1接收。在时钟周期10没有新的像素或纹理坐标被接收,而是乘法器A、乘法器B和乘法器C完成对所接收坐标值的乘法。在时钟周期11,乘法的像素坐标和纹理坐标被接收或放在FIFO2中,它是作为片段FIFO2 920实现的(图9A和图9B)。
倒数器在透视分割单元的第一级中处理深度值,而像素坐标和纹理坐标是在透视分割单元的第二级中与深度值的倒数相乘。一旦开始了,便可以每5个时钟周期输出一个顶点的像素和纹理坐标。在这些例子中,当透视分割单元接收数据供处理时,在第一次输出一个顶点之前的延时是12个时钟周期。取决于倒数器的具体设计,在产生倒数值之前可能发生多些或少些时钟周期。
这样,本发明的机制允许用深度值W对像素坐标和纹理坐标进行校正或调节。本发明的机制允许同时对像素坐标和纹理坐标二者进行调节。再有,需要较少的时间完成这种调节,因为是对坐标使用乘法而不是除法来完成这种调节。
重要的是应该指出,尽管本发明是在全功能数据处理系统的环境中描述的,但本领域普通技术人员将会理解,本发明的过程能以指令的计算机可读介质形式或多种形式发布,而且不管实际用于进行发布的信号承载介质的特定类型如何,本发明都同样适用。计算机可读介质的例子包括可记录型介质,如软盘、硬盘驱动器、RAM、CD-ROM、DVD-ROM,以及传输型介质,如数字和模拟通信链路,使用射频和光波传输等传输形式的有线或无线通信链路。计算机可读介质可采取编码格式的形式,并在具体的数据处理系统中解码供实际使用。
已给出本发明的描述,这是为了说明和描述的目的,而不是要把本发明完全地限定于所公开的形式。对于本领域的普通技术人员而言,许多修改和变化将是显然的。对实施例的选择和描述是为了最好地解释本发明的原理和实际应用,并使本领域其他普通技术人员能理解本发明具有各种修改的各种实施例,以适用于预期的特定用途。
权利要求
1.一种用于的在图形适配器中显示对象的方法,该方法包含接收该对象的位置坐标和纹理坐标;对与该位置和纹理坐标相关联的深度性坐标求倒数以形成一个倒数坐标;用这倒数坐标乘位置坐标和纹理坐标以形成调整后的位置坐标和调整后的纹理坐标;以及使用调整后的位置坐标和调整后的纹理坐标显示该对象。
2.一种图形流水线,包含一个输入端,其中的输入端接收图形数据,其中的图形数据包括一个对象的位置坐标和深度坐标;一个输出端,其中的输出端发送处理过的图形数据;多个处理部件,其中这多个处理部件产生处理过的图形数据,其中在这多个处理部件中的第一处理部件与输入端相连,而这多个处理部件中的最后一个处理部件与输出端相连,而且其中在这多个处理部件中的一个选定的处理部件接收位置坐标和深度坐标,对深度坐标求倒数以形成深度坐标倒数,并用这深度坐标倒数乘位置坐标。
3.权利要求2的图形流水线,其中选定的处理部件包含第一级,其中的第一级接收位置坐标和深度坐标并求深度坐标的倒数;以及第二级,其中的第二级用深度坐标倒数乘位置坐标。
4.权利要求2的图形流水线,其中的图形数据包括纹理坐标,而且其中选定的处理部件用深度坐标倒数乘纹理坐标。
5.权利要求4的图形流水线,其中选定的处理部件包含第一级,其中的第一级接收位置坐标、纹理坐标和深度坐标并求深度坐标的倒数;以及第二级,其中的第二级用深度坐标倒数乘位置坐标和纹理坐标。
6.权利要求5的图形流水线,其中对一对象的位置坐标和纹理坐标的处理是在5个时钟周期内发生的。
7.一种图形适配器,包含配置成接收图形数据的输入端;帧缓存器,处理过的图形数据存储在其中供显示;与输入端及帧缓存器相连的光栅引擎,其中光栅引擎使处理过的图形数据光栅化以供显示;以及与光栅引擎相连的几何引擎,其中的几何引擎从光栅引擎接收图形数据,处理图形数据以形成处理过的图形数据,并把处理过的图形数据回送到光栅引擎,而且其中的几何引擎包括一组处理部件,在该组处理部件中的一个选定的处理部件接收位置坐标和深度坐标,对深部坐标求倒数以形成深度坐标倒数并用深度坐标倒数乘位置坐标。
8.权利要求7的图形适配器,其中的图形数据包括纹理数据,而且其中选定的处理部件用深度坐标倒数乘纹理坐标。
9.权利要求8的图形适配器,其中选定的处理部件包含第一级,其中的第一级接收位置坐标、纹理坐标和深度坐标并求深度坐标的倒数;以及第二级,其中的第二级用深度坐标倒数乘位置坐标和纹理坐标。
10.权利要求7的图形适配器,其中对一对象的位置坐标和纹理坐标的处理是在5个时钟周期内发生的。
11.用于显示一对象的图形适配器,该图形适配器包含接收装置,用于接收该对象的位置坐标和纹理坐标;求倒数装置,用于求与位置坐标和纹理坐标相关联的深度坐标的倒数,以形成倒数坐标;乘法装置,用于以倒数坐标乘位置坐标和纹理坐标,以形成调整后的位置坐标和纹理坐标;以及显示装置,用于以调整后的位置坐标和调整后的纹理坐标来显示该对象。
12.在计算机可读介质中的供显示对象用的一种计算机程序产品,该计算机程序产品包含第一组指令,用于接收该对象的位置坐标和纹理坐标;第二组指令,用于把与位置和纹理坐标相关联的深度坐标变成其倒数以形成坐标倒数;第三组指令,用于以这坐标倒数乘位置坐标和纹理坐标以形成调整后的位置坐标和调整后的纹理坐标;以及第四组指令,用于以这调整后的位置坐标和调整后的纹理坐标显示该对象。
全文摘要
在图形系统中的一种方法和装置。该图形系统包括一个输入端用于接收图形数据,图形数据包括对象的位置坐标和深度坐标。存在一个输出端用于发送处理后的图形数据。该图形系统还包含多个处理部件,用于产生处理后的图形数据。多个处理部件中的第一处理部件与输入端相连,而多个处理部件中的最后一个处理部件与输出端相连。多个处理部件中的一个选定的处理部件接收位置坐标和深度坐标,求深度坐标的倒数,并用该深度坐标倒数乘位置坐标。
文档编号G06T15/10GK1329329SQ0112127
公开日2002年1月2日 申请日期2001年6月14日 优先权日2000年6月15日
发明者理查德·A·马里诺 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1