用于在3d图形子系统中可编程过滤纹理映射数据的方法和机制的制作方法

文档序号:6503932阅读:188来源:国知局
专利名称:用于在3d图形子系统中可编程过滤纹理映射数据的方法和机制的制作方法
技术领域
本发明实施例涉及计算机图形学。更具体地说,本发明实施例涉及处理纹理映射(texture map)数据。
背景技术
图形应用并且特别是三维(3D)图形应用长久以来是由个人计算机所执行的处理最集中的活动之一。为了改进图形处理能力,图形协处理器迅速增长并且可广泛用于最新型的个人计算机上。图形协处理器是被设计成用于迅速执行由图形应用所要求的集中处理任务的专用集成电路。
把场景信息(源数据)变换为3D图像(显示输出)要求多个操作。这些操作总体被称作3D图形渲染流水线。由流水线所执行的操作可以被分组为某种基本功能。这些功能之一是纹理映射。纹理映射是在最后渲染中把用于表示物体表面属性(诸如外观、反射率或其它这种属性)的一、二或三维图像应用于用于表示所述物体的三维网格的过程。虽然一般通常使用二维图像,然而其它维数也是可以的。
经常是在最后渲染中把纹理图像应用于物体的情况,在采样纹理元素(纹元texel)和源纹理图像的数目以及图元(像素)的数目之间存在不一致性,其中把所述图像映射到所述图元。当在给定范围内纹元的数目小于像素的数目时,那么要求上采样纹理。当上采样纹理时必须使用某种方案来填入中间值。这里此方案可以被称作“纹理过滤”并且主要由固定功能状态机来执行。
当前大部分图形协处理器支持四种类型的纹理过滤;点采样、双线性过滤、三线性过滤和各向异性过滤。随着过滤方法变得越来越复杂,用于执行所述方法所要求的状态机变得越来越复杂并且在图形协处理器内要求更多资源。这与对纹理数据的使用继续扩展的事实联系在一起,例如纹理数据正在被用于灯光(lighting)以及除颜色之外的其它表面属性,致使通常使用的线性内插是低效的或甚至是不够的。


以举例形式而不是以限制的形式依照附图举例说明了本发明的实施例,其中同样的附图标记表明同样的元件。应当注意,在此公开内容中对“一”或“一个”实施例的不同参考不必指的是相同的实施例,并且这种参考意思是指至少一个。
图1A是本发明一个实施例的系统的框图。
图1B是依照本发明一个实施例的纹理采样的图。
图2是依照本发明一个实施例的设置纹理过滤模块的流程图。
图3是依照本发明一个实施例的纹理过滤的流程图。
具体实施例方式
图1A是本发明一个实施例的系统的框图。主机处理器100由总线102耦合到存储器104。图形协处理器106也耦合到总线102。另外,图形协处理器106可以借助加速图形端口(accelerated graphicsport AGP)112耦合到存储器104。AGP可以遵循在2002年9月公布的加速图形端口AGP V3.0接口说明Rev.1.0(以下称为AGP说明)。AGP112能够快速访问在存储器104中所驻留的图形数据。帧缓冲器108和显示器110也耦合到总线。在某些实施例中,可以把帧缓冲器108包含在存储器104内。图形协处理器106包括像素处理流水线120。在像素处理流水线120内是顶点处理模块122、图元装配(primitiveassembly)模块124、片段处理模块126和帧缓冲器处理模块128。在操作中,顶点处理模块122接收顶点数据,所述顶点数据例如可以包括与在图形图像中的顶点有关的3D位置信息、色彩信息及其它类似信息。在一个实施例中,顶点数据形式为V=X,Y,Z,Tu,Tv,RGB。在此表达式中,X,Y,Z是顶点的三维笛卡儿坐标,Tu和Tv是在纹理映射中相应纹元的二维坐标,而RGB是顶点的红色、绿色和蓝色值。也可以考虑顶点数据的其它形式和内容。
顶点处理模块对所传达的3D位置数据进行三维变换,并且例如可以应用灯光。所处理的顶点被传递到图元装配模块,所述图元装配模块接收连接性数据。所述连接性数据可以包括用于允许根据所接收的顶点和下标(index)来装配图元(典型情况下为三角形)的下标。
图元被传递到片段处理模块126,所述片段处理模块126处理所述图元以便识别片段并且应用纹理数据以便构建输出。如这里所用,“片段”指的是一个像素或被持续处理以便产生输出的连续像素的组。片段处理与纹理过滤模块130交换与用于映射片断的纹理有关的数据。
纹理过滤模块130与片段处理模块126通信以便提供用于应用到像素的纹元。在一个实施例中,纹理过滤模块130是可编程的。在这里,可编程被认为意指能够执行由来自所定义指令集的一个或多个指令所组成的软件程序。下面在表1中阐明了指令集的一个例子。
表1

在本发明的各个实施例中可以使用更短或更长的候选指令集。
在一个实施例中,纹理过滤模块130包括多个纹理处理核心(texture processing cores TPC)132(在图1A中示出了16个TPC)。其它实施例可以具有更多或更少的TPC。在一个实施例中,存在单个TPC。在一个实施例中,每个TPC 132能够与其它TPC 132中的每个并行处理像素。每个核心132可以具有寄存器组134,所述寄存器组134可以包括各种类型的寄存器,诸如控制寄存器、源寄存器、临时寄存器和输出寄存器。
在一个实施例中,控制寄存器包括采样寄存器、状态寄存器、地址寄存器、偏移寄存器和多个小数寄存器。在一个实施例中,采样寄存器具有对应于每个源寄存器的一个位,用于表明是否应当采样所述源寄存器。例如,如果存在十六个源寄存器,那么采样寄存器可以是十六位寄存器,其中一个位对应于一个十六个源寄存器。在一个实施例中,状态寄存器用来表明在诸如上溢、除以零等某种条件之后TPC的状态。在一个实施例中,地址寄存器可以是包含纹理映射数据的地址的32位寄存器。在一个实施例中,此寄存器可以仅仅由应用编程接口(API)访问,而并不向程序员提供直接访问。偏移寄存器可以用来对应于最近的纹元坐标来向纹理数据中提供偏移。小数寄存器可以用来保存在每个维数中纹元采样之间的小数坐标。在一个实施例中,这些往往由片段处理模块126提供。在上面一个实施例中,其中V=X,Y,Z,Tu,Tv,RGB;Tu和Tv对应于要被纹理映射以便提供到纹理过滤模块的像素。作为一个例子,八像素一维纹理坐标0.175可能会落在第二(0.125)和第三(0.25)纹元之间。它可能会等同于小数.2。在此实施例中的小数被建立为(.175-.125)/.125或更一般地说,坐标越小,越接近由增量值所除的较小增量。
图1B是在本发明的一个实施例中纹理采样的图。在一个实施例中,提供了十六个源寄存器。在一个实施例中,每个寄存器对应于在纹理采样点的TuTv采样位置周围的4×4栅格中的一个纹元,并且可能对应于依照这种方式寻址的像素。虽然TuTv可以映射到在纹元5和6以及纹元9和10之间的位置,然而把在片中的十六个纹元贡献给被分配给TuTv的纹理值可以由纹理过滤程序来定义。在某些实施例中,只有纹元5、6、9和10作出了贡献。在其它实施例中,所有十六个纹元都可以作出贡献。在其它实施例中,在组中的所有对角线像素可以作出贡献。如所图示,纹理过滤模块的可编程性质允许耐用且灵活的纹理过滤选项。
可以提供临时寄存器以供程序员在对采样数据执行中间计算时候选使用。提供输出寄存器以便一旦完成过滤操作,那么就存储输出。在一个实施例中,提供32位寄存器来接收最终结果。可以使用更大寄存器,然而在某些实施例中,32位ARGB(α红绿蓝)值被认为是足够的。
实际过滤可以通过由纹理过滤模块130把所想要的过滤程序加载到纹理处理核心中来执行。过滤程序对应于所要处理的片段。在图像的区域内,可能希望据此向纹理数据应用各种效果。因而,对于特定的图形图像,可能使用许多过滤程序。
例如,被施加到图像上皮夹克的发光部分的过滤程序往往可能不同于被施加到皮夹克的磨损部分的过滤程序。通过在e纹理过滤模块中使用不同的程序,可以适应不同的效果。在渲染给定场景图像的过程中使用几个过滤程序类似于在当前固定功能方案下,渲染给定场景怎样可以包括对于场景的不同部分在不同的固定功能过滤状态之间切换。
所使用的程序例如会影响实际上采样16个纹元中的哪些来执行纹理过滤。在一个实施例中,纹理数据可以被布置在存储器中以便优化对可能要采样的纹元的访问。例如,如果采样寄存器表明每四个纹元值是活动的,可以存储纹理数据以便点1、5、9和13在存储器中是邻接的,点2、6、10等是邻接的。作为另一例子,其中每两个纹元是活动的,1、3、5、7等是邻接的,而2、4、8等是邻接的。存储器中的此布置可以由主机处理器100或图形协处理器106来执行。
布置存储器要求特定量的处理器资源,在一个实施例中,确定了何时可能的纹理数据使用超过重新布置所述纹理数据所要求的阈值代价。因而,在纹理数据的使用证明重新布置它的代价是正确的情况下,在一个实施例中,在存储器中重新布置所述纹理数据以便便于访问。可以根据目标方针来选择阈值,诸如要利用给定程序所处理的纹元数目。
一旦纹理过滤完成并且产生输出,那么输出值可以被传回到片段处理模块126以便允许建立输出片段。由片段处理模块126所建立的输出被传递到帧缓冲器处理模块128。帧缓冲器处理模块128把所接收的像素与现有的帧缓冲器组合以便输出到显示器110。
图2是在本发明的一个实施例中设置纹理过滤模块的流程图。在功能块202,纹理过滤程序被加载到纹理过滤模块的纹理处理核心中。在功能块204,采样寄存器被初始化以便表明在采样点周围的纹元,所述采样点被作为过滤过程的一部分采样。在判定块206,确定了结合所要求采样数目所采样的纹元是否证明纹理数据在存储器中的重构是合理的。如果是的话,那么重新排序纹理数据以便在功能块208能高效访问。在重新排序之后或者不要求重新排序,在功能块210初始化地址寄存器。
图3是依照本发明一个实施例的纹理过滤的流程图。在功能块302,纹理过滤从顶点流水线取出所要渲染的像素的坐标数据。在一个实施例中,这些数据会从片段处理模块中取出。在功能块304,从存储器中取出从采样寄存器所识别的纹元值。在功能块306,向小数寄存器加载坐标数据。纹理处理核心用来在功能块308执行过滤程序。在判定块310,确定了执行过滤程序是否需要设置状态标志。如果执行要求状态标志,诸如除以零或上溢,那么在功能块312将适当值加载到状态寄存器。如果不要求状态标志或者在已经加载状态寄存器之后,那么在功能块314,输出值被加载到输出寄存器中并且发新哈通知输出可用。在判定块316,确定了是否存在要使用现有的过滤程序渲染的更多像素。如果是的话,流程继续进行。如果不是的话,流程结束。
尽管上述流程图依照特定次序来布置,然而应当理解的是,可以依照并行或与描述不同的次序来执行某些操作。据此,这种并行化或重新布置在本发明实施例的范围和考虑之内。还应当注意,虽然只在一个实施例中,单个纹理处理核心可以存在于纹理过滤模块中,然而对于具有多个纹理处理核心的实施例,可以与在图3中所描述的流程之后的每个核心并行处理像素。
在上述说明中,已经参考具体实施例描述了本发明。然而,在不脱离由所附权利要求阐述的本发明实施例的宽阔精神和范围的情况下,对其的各种修改和变化将是显而易见的。因此,说明书和附图将只是说明性而并非限制性意义。
权利要求
1.一种方法包括取出所要渲染的像素的坐标数据;取出对应于所述像素的纹元值;通过可编程滤波器来过滤所述纹元值;并且输出所述像素的所过滤的纹理值。
2.如权利要求1所述的方法,其中过滤纹元值包括读取控制寄存器;并且使用在所述控制寄存器中所指定的至少一个位置作为源位置。
3.如权利要求1所述的方法,其中取出坐标数据包括从顶点流水线中取回X,Y,Z坐标数据。
4.如权利要求1所述的方法,还包括把坐标小数数据写入多个寄存器。
5.如权利要求1所述的方法,其中输出包括把所过滤的纹理值写入寄存器;并且向处理器发新哈通知所过滤的纹理值可用。
6.一种设备包括片段处理模块;可编程的纹理过滤模块,与所述片段处理模块通信以便可编程地过滤对应于至少一个像素的纹理数据;和帧缓冲器处理模块,用于把所过滤的纹理数据与现有的帧缓冲器组合。
7.如权利要求6所述的设备,其中可编程的纹理过滤模块包括多个控制寄存器;多个源寄存器;多个临时寄存器;和至少一个输出寄存器。
8.如权利要求7所述的设备,其中所述源寄存器是只读的。
9.如权利要求7所述的设备,其中所述多个控制寄存器包括状态寄存器;地址寄存器;偏移寄存器;和多个小数寄存器。
10.如权利要求7所述的设备,其中多个控制寄存器包括至少一个采样寄存器具有对应于每个源寄存器的位,用于表明是否要求采样相应的源寄存器。
11.如权利要求6所述的设备,其中可编程的纹理过滤模块包括多个处理核心,用于执行指令集。
12.如权利要求6所述的设备,其中多个核心的子集将对至少一个像素并行执行过滤程序。
13.一种系统,包括存储器;耦合到所述存储器的多个纹理处理核心(TPC),用于可编程地过滤纹理数据;片段处理模块,用于向至少一个片段应用所过滤的纹理数据;和显示器,用于显示使用所述至少一个片段所创建的图像。
14.如权利要求13所述的系统,其中多个TPC和片段处理模块与主机处理器集成。
15.如权利要求13所述的系统,其中多个TPC和片段处理模块驻留在图形协处理器中。
16.如权利要求13所述的系统,包括寄存器组,与多个TPC中的每个TPC相关联。
17.如权利要求15所述的系统,还包括加速图形端口,用于把所述图形协处理器耦合到所述存储器。
18.一种包含可执行计算机程序指令的计算机可读存储介质,当所述可执行计算机程序指令执行时使数字处理系统执行如下方法,所述方法包括取出所要渲染的像素的坐标数据;取出对应于所述像素的纹元值;通过可编程滤波器来过滤所述纹元值;并且输出所述像素的所过滤的纹理值。
19.如权利要求18所述的计算机可读存储介质,当其执行时使数字处理系统所执行的方法还包括读取控制寄存器;并且使用在所述控制寄存器中所指定的至少一个位置作为源位置。
20.如权利要求18所述的计算机可读存储介质,当其执行时使数字处理系统所执行的方法还包括从顶点流水线中取回X,Y,Z坐标数据。
21.如权利要求18所述的计算机可读存储介质,当其执行时使数字处理系统所执行的方法还包括把坐标小数数据写入多个寄存器。
22.如权利要求18所述的计算机可读存储介质,当其执行时使数字处理系统所执行的方法还包括把所过滤的纹理值写入寄存器;并且向处理器发新哈通知所过滤的纹理值可用。
全文摘要
一种用于提供灵活纹理过滤的系统、方法和设备。可编程的纹理过滤模块被引入与主机集成的图形处理器和图形协处理器的图形处理流水线。然后可以把来自所定义的指令集的程序加载到纹理处理核心中以便按照所述程序来处理纹理数据。
文档编号G06T15/00GK1910621SQ200480039384
公开日2007年2月7日 申请日期2004年12月23日 优先权日2003年12月29日
发明者K·帕利斯特 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1