3d图形处理系统中用于处理图元的不透明度测试的制作方法_2

文档序号:8513043阅读:来源:国知局
中的一个或者多个片元块的片元将与不同于所述非不透明的对象类型的对象类型相关联用于片元的后续的处理,(b)基于确定的不透明度状态丢弃片元块中的一个或者多个块,以及(c)基于确定的不透明度状态,设置一个或者多个标志来指示片元块中的一个或者多个片元块的片元将不被传输用于后续的纹理化的纹理化模块;其中该纹理化单元被配置为继所述简化之后对于图元的片元根据它们的相关联的对象类型应用纹理化。
[0015]提供了一种3D图形处理系统,被配置为生成包括用于处理图元中使用的多个不透明度状态的不透明度状态图,其中该不透明度状态图中的不透明度状态中的每一个不透明度状态指示纹理的一个或者多个纹素的纹素块的不透明度,并且其中不透明度状态中的每一个不透明度状态指示一个或者多个纹素的对应的纹素块是:(i)完全透明的;(ii)完全不透明的;或者(iii)既不是完全透明的也不是完全不透明的,该系统包括:输入,用于接收对于纹理的纹素的不透明度值;不透明度状态确定模块,被配置为以保守方式基于接收的不透明度值确定不透明度状态图的不透明度状态使得:(i)仅当纹理的不透明度值指示纹素块中的一个或者多个纹素的全部为不透明时,不透明度状态被确定为指示该一个或者多个纹素的对应的纹素块是完全透明的,以及(ii)仅当纹理的不透明度值指示纹素块中的一个或者多个纹素的全部为不透明时,不透明度状态被确定为指示该一个或者多个纹素的对应的纹素块是完全不透明的;以及其中该不透明度状态确定模块进一步被配置为发送确定的不透明度状态图至用于存储于其中的存储,所确定的不透明度状态图用于在3D图形处理系统中处理图元的方法中的后续的使用;其中该不透明度状态确定模块被配置为以一种方式确定该不透明度状态以使得该不透明度状态图内的不透明度状态的块被用于通过执行该不透明度状态块的不透明度状态的保守组合对于一个或者多个片元的块确定不透明度状态。
[0016]提供了一种在3D图形处理系统中处理图元以对于图元应用深度测试和纹理化的方法,其中图元具有非不透明的对象类型,该方法包括:接收将被处理的图元的片元;在对于所接收的图元的片元应用深度测试之前以及对于所接收的图元的片元应用纹理化之前:(i)获取不透明度状态图,该不透明度状态图提供将被应用于图元的纹理的纹素的不透明的指示;以及(ii)对于图元的一个或者多个片元的多个块中的每一个块,通过以下步骤,使用不透明度状态图来确定对于片元块的各自的不透明度状态:(a)基于片元块的一个或者多个片元的纹理坐标,确定对于片元块的不透明度状态图内的不透明度状态的块的位置,以及(b)执行不透明度状态块的不透明度状态的保守组合,来确定对于片元块的不透明度状态;以及根据片元块的各自的确定的不透明度状态处理片元块的片元,从而对于图元的片元应用深度测试和纹理化。
[0017]提供了一种3D图形处理系统,被配置为通过对于图元应用深度测试和纹理化来处理图元,其中图元具有非不透明的对象类型,该系统包括:深度测试模块,被配置为对于图元的片元应用深度测试;纹理化模块,被配置为对于图元的片元应用纹理化;以及不透明度测试模块,被设置为在由深度测试模块对片元的深度测试之前以及在由纹理化模块对图元的片元的纹理化之前对片元操作,该不透明度测试模块被配置为:(i)获取不透明度状态图,该不透明度状态图提供将被应用于图元的纹理的纹素的不透明的指示;以及(ii)对于图元的一个或者多个片元的多个块中的每一个块,通过以下步骤,使用不透明度状态图来确定对于片元块的各自的不透明度状态:(a)基于片元块的一个或者多个片元的纹理坐标,确定对于片元块的不透明度状态图内的不透明度状态的块的位置,以及(b)执行不透明度状态块的不透明度状态的保守组合,来确定对于片元块的不透明度状态;其中该深度测试模块和该纹理化模块被配置为根据片元块的各自的确定的不透明度状态处理片元块的片兀。
[0018]计算机可读代码可以被适配为当代码在计算机上运行时执行在此所述的方法中的任意方法的步骤。此外,计算机可读代码可以被提供用于根据在此所述的示例中的任意示例生成3D图形处理系统。该计算机可读代码可以在计算机可读存储媒介上被编码。
[0019]对于技术人员将是明显的,以上特性可以酌情合并,并且可以与在此所述的示例的任意方面合并。
【附图说明】
[0020]现在将参考附图详细地描述示例,其中:
[0021]图1示出了 3D图形处理系统的示意性图示;
[0022]图2示出了半透明的对象的图元;
[0023]图3表示了图像的采样位置的网格上的图元的片元;
[0024]图4示出了在3D图形处理系统中处理对象的方法的流程图;
[0025]图5示出了不透明度状态图链的四个等级;
[0026]图6示出了用于确定不透明度状态图的3D图形处理系统的示意性图示;
[0027]图7示出了生成不透明度状态图的方法的流程图;以及
[0028]图8示出了基于区片延迟渲染系统的示意性图示。
[0029]【附图说明】了各种示例。技术人员将认为,图中说明的元素的边界(例如,方框、方框的组合、或者其他形状)代表边界的一个示例。在一些示例中可以是,一个元素可以被设计为多个元素或者多个元素可以被设计为一个元素。贯穿附图使用通用的参考标号,在适当的情况下,指示相似的特性。
【具体实施方式】
[0030]现在将仅通过示例的方式描述实施例。
[0031]图1示出了一个示例,其中3D图形处理系统102被耦合至存储器104。3D图形处理系统102包括不透明度测试模块106、深度测试模块108、纹理化和着色模块110和存储器接口 112。如以下更详细地描述的,不透明度测试模块106包括三个队列IH1UH2*1143,该三个队列被配置为存储片元的块。应当注意,3D图形处理系统102可以包括相比图1中所示的那些更进一步的功能模块,但是为了明晰的目的,图1中仅示出了四个模块106至112以简化实施例的描述。不透明度测试模块106被设置为接收对象的片元。不透明度测试模块106也被设置为从存储器104经由存储器接口 112接收不透明度状态图。不透明度测试模块106的输出被耦合至深度测试模块108的输入。深度测试模块108的输出被耦合至纹理化和着色模块110的输入。存储器接口 112的输出被耦合至纹理化和着色模块110的输入。纹理化和着色模块110的输出被耦合至存储器接口 112的输入。存储器接口 112被设置为发送数据至存储器104和从存储器104接收数据。应当注意,纹理化和着色模块110可以被配置为在片元上执行纹理化和着色中的一个或者两者,并且为了简洁起见,纹理化和着色模块110可以在此被简称为“纹理化模块”。
[0032]操作中,在不透明度测试模块106接收将被处理的图元的片元。图元的片元可以是之前的过程的结果,比如:光栅化过程,将3D模型中的对象的位置转化为2D图像用于显示为图像;以及分片过程,确定哪些图元至少部分地重叠图像的哪些区片。图元包括多个顶点(例如,三个顶点),该多个顶点描述了图像中对象的位置和外观。如上所述,图元具有对象类型(例如,不透明的或者非不透明的,其中非不透明的对象类型的一些示例是半透明的、不透明的穿透以及半透明的穿透),该对象类型指示了在3D图形处理系统102中将如何处理图元的片元。如上所述,相比于具有不透明的对象类型的图元的片元,具有非不透明的对象类型的图元的片元需要额外的处理。
[0033]图2示出了具有非不透明的对象类型的图元202的示例。例如,图元202可以具有半透明的穿透的对象类型。图元202是三角形(由三个顶点定义),并且可以足够大以包括许多片元。图元202的一些区域是完全透明的(例如,对于这些区域的纹理的纹素具有为O的alpha值),并且在图2中被显示为清晰的区域,表示为204。图元202的区域206是完全不透明的(例如,对于这些区域的纹理的纹素具有为I的alpha值),并且在图2中被显示为纯黑的区域。图元202的区域208既不是完全透明的也不是完全不透明的(例如,对于这些区域的纹理的纹素具有的alpha值为α,其中O彡α彡I),并且在图2中被显示为散列的区域。
[0034]在以上【背景技术】章节中描述的3D图形处理系统中,不存在不透明度测试模块106,并且片元反而在深度测试模块被接收(例如,图8中所示的隐藏面消除单元808执行与由图形处理系统102中的深度测试模块108执行的功能相对应的功能)。如上所述,在这些图形处理系统中,具有非不透明的对象类型的图元的片元被传递至纹理化和着色模块(例如,图8中所示的TSU810,它执行与由图形处理系统102中的纹理化和着色模块110执行的功能相对应的功能),在此使用将被应用于片元的纹理对于片元执行alpha测试。Alpha测试的结果被反馈给深度测试模块(如图8中由虚线所示),使得深度测试模块可以正确地更新深度缓存。图2中可以看出,图元202的许多片元是完全透明的(区域204中)或者完全不透明的(区域206中),并且然而因为图元具有非不透明的对象类型,图元202的所有片元将在以上【背景技术】章节中描述的图形处理系统中被处理,以确定他们通过或者没有通过alpha测试。
[0035]已经意识到,在3D图像处理系统102的至少一些常规处理之前,可以通过执行预先的(upfront)不透明度测试来简化半透明的和穿透的图元的片元的处理。例如,不透明度测试可以确定片元的任何区域是否仅包含完全透明的片元,或者仅包含完全不透明的片元,在此情况下对于片元的这些区域处理可以被简化。例如,对于穿透的图元,如果片元是完全透明的,它们可以被丢弃,或者在半透明的图元的情况下,与那些完全透明的片元相关联的对象类型可以被设置为指示该片元是透明的并且在图像中将不可见,这使得深度测试模块108可以据此处理这些片元。如另一个示例,如果片元是完全不透明的则与这些片元相关联的对象类型可以被设置为不透明的对象类型,使得深度测试模块108可以为不透明的片元处理这些片元,这意味着它们将不会导致重叠的片元被处理(即,它们将不会导致传递被播种)。
[0036]不透明度测试模块106确定是否可以简化图元202的片元的处理。图3表示覆盖图像300的多个采样位置302的图元202。图元202包括对应于图像300的采样位置的多个片元。不透明度测试模块106对对象的一个或者多个片元的块进行操作。图3示出了具有4X4个采样位置的尺寸的块304。不透明度测试模块106考虑图元202的片元的对应的4X4块,即,在片元的每一个块中有16个片元。如下所述,在不同的示例中块可以是不同的尺寸。
[0037]参考图4中所示的流程图,现在描述处理具有非不透明的对象类型的图元202的方法。在步骤S402中,图元202的片元在不透明度测试模块106被接收。
[0038]在纹理化模块110中将被应用于图元202的片元的纹理包括不透明度值(例如,alpha值)。纹理被应用于图元202的片元的方式通常依赖于图元202的位置和朝向。例如,如果图元202远离图像平面,则应用于图元202的片元的文件不需要如同图元202靠近图像平面那样详细。因此,通常将纹理存储为包括多个等级的分辨率的结构(例如,多级纹理)以表示纹理细节的不同等级。使用该等级中的一个或者多个等级确定将被应用于图元202的片元的纹理化。
[0039]如下所述,不透明度测试模块106在步骤S404至S412中对图元的所接收的片元中的一个或者多个片元的块进行操作。不透明度测试模块106使用不透明度状态图(例如,alp
当前第2页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1