1.一种图形处理器,包括:
三维3D图形处理流水线,其包括顶点处理级和像素处理级,所述3D图形处理流水线用于在顶点处理级的运行期间确定将在所述像素处理级中的多遍像素渲染期间使用的一组参数,所述一组参数针对要增强的几何对象来确定,其中所述3D图形处理流水线还用于使用用于所述几何对象的所述一组参数来在所述像素处理级中执行多遍像素渲染,以及基于所述多遍像素渲染来渲染包括所述几何对象的增强描绘的场景,所述增强描绘包括所述几何对象的一个或多个图像效果。
2.如权利要求1所述的图形处理器,其特征在于,所述一个或多个图像效果包括透明效果。
3.如权利要求1所述的图形处理器,其特征在于,所述一个或多个图像效果包括阴影效果。
4.如权利要求1所述的图形处理器,其特征在于,所述3D图形处理流水线还用于在所述多遍像素渲染期间渲染多个渲染缓冲区。
5.如权利要求4所述的图形处理器,其特征在于,所述3D图形处理流水线用于基于所述多个渲染缓冲区来渲染所述场景。
6.如权利要求5所述的图形处理器,其特征在于,所述3D图形处理流水线用于针对所述顶点处理级的一次或多次运行在所述像素处理级中执行多遍像素渲染。
7.如权利要求1所述的图形处理器,其特征在于,用于所述几何对象的所述一组参数包括基于所述几何对象的顶点数据生成的图元数据。
8.如权利要求7所述的图形处理器,其特征在于,所述图元数据包括变换、光照、色彩和位置数据中的一个或多个。
9.如权利要求1-8中任一项所述的图形处理器,其特征在于,用于所述几何对象的所述一组参数包括与所述3D图形处理流水线的像素处理级相关联的像素着色器数据,所述像素着色器数据包括用于经由所述3D图形处理流水线的像素处理级执行的编程代码。
10.如权利要求9所述的图形处理器,其特征在于,所述像素着色器数据包括用于在所述场景的多遍像素渲染期间执行的多组像素着色器编程代码。
11.一种用于图形处理的系统,包括:
耦合至储存器的图形处理单元,所述图形处理单元包括三维3D图形处理流水线,所述三维3D图形处理流水线包括顶点处理级和像素处理级,所述3D图形处理流水线用于使用所述顶点处理级来确定用于几何对象的一组参数,使用用于所述几何对象的所述一组参数来在所述像素处理级中执行多遍像素渲染,以及基于所述多遍像素渲染来渲染包括几何对象的增强描绘的场景,所述几何对象的增强描绘包括一个或多个图形效果;以及与所述图形处理器单元耦合的显示器,用于显示所述几何对象的增强描绘。
12.如权利要求11所述的系统,其特征在于,所述一个或个图形效果包括透明效果和阴影效果中的一个或多个。
13.如权利要求12所述的系统,其特征在于,还包括用于向所述图形处理单元提供所述几何对象的顶点数据的处理单元。
14.如权利要求13所述的系统,其特征在于,用于所述几何对象的所述一组参数包括基于所述顶点数据生成的图元数据。
15.如权利要求14所述的系统,其特征在于,所述图元数据包括变换、光照、色彩和位置数据中的一个或多个。
16.如权利要求11-15中任一项所述的系统,其特征在于,用于所述几何对象的所述一组参数包括与所述3D图形处理流水线的像素处理级相关联的像素着色器数据,所述像素着色器数据包括用于经由所述3D图形处理流水线的像素处理级执行的编程代码。
17.如权利要求16中所述的系统,其特征在于,所述像素着色器数据包括用于在所述场景的多遍像素渲染期间执行的多组像素着色器编程代码。
18.如权利要求11中所述的系统,其特征在于,所述3D图形处理流水线用于在所述多遍像素渲染期间渲染至多个渲染缓冲区,以及基于所述多个渲染缓冲区渲染所述场景。
19.如权利要求18所述的系统,其特征在于,所述3D图形处理流水线用于针对所述顶点处理级的一次或多次运行在所述像素处理级中执行多遍像素渲染。
20.一种数据处理系统,包括:
用于显示场景中的对象的显示器;
包括图形处理器的芯片集成电路上的系统;
包括存储介质的制品,所述存储介质包括指令,所述指令被执行时导致所述芯片集成电路上的所述系统用于:
接收所述对象的顶点数据;
在所述图形处理器的三维3D图形处理流水线的顶点处理级的运行期间确定用于所述对象的一组参数;
使用用于所述对象的所述一组参数在所述3D图形处理流水线的像素处理级中执行多遍像素渲染;以及
基于所述多遍像素渲染来渲染所述对象的增强描述,所述对象的所述增强描述包括透明效果或阴影效果中的一个或多个。
21.如权利要求20所述的数据处理系统,其特征在于,还包括当被执行时导致芯片集成电路上的所述系统执行以下操作的指令:在所述三维3D图形处理流水线的一次或多次运行期间确定将在所述像素处理级中的多遍像素渲染中使用的所述一组参数,所述一组参数包括所述对象的图元数据。
22.如权利要求21所述的数据处理系统,其特征在于,所述对象的所述图元数据包括变换、光照、色彩和位置数据中的一个或多个。
23.如权利要求22所述的数据处理系统,其特征在于,用于所述对象的所述一组参数包括与所述3D图像处理流水线的所述像素处理级相关联的像素着色器数据。
24.如权利要求23所述的数据处理系统,其特征在于,所述像素着色器数据包括用于经由所述3D图形处理流水线的所述像素处理级来执行的编程代码。
25.如权利要求24中所述的数据处理系统,其特征在于,所述像素着色器数据包括用于在所述多遍像素渲染期间执行的多组像素着色器编程代码。
26.如权利要求20-21中任一项所述的数据处理系统,其特征在于,包括用于导致芯片集成电路上的所述系统执行以下操作的附加指令:经由所述显示器输出所述对象的增强描绘。
用于多遍渲染的技术\n[0001] 本申请是PCT国际申请号为PCT/US2011/064933、国际申请日为2011年12月14日、中国国家申请号为201180075514.8、题为“用于多遍渲染的技术”的申请的分案申请。\n[0002] 背景\n[0003] 三维技术在图形开发领域扮演着重要的角色。三维技术在诸如智能电话、桌面和上网本之类的移动设备中实现。三维技术在移动设备上的性能和功耗通常与用户视觉体验有关,并影响了产品的竞争优势。\n[0004] 许多三维游戏使用诸如透明、阴影和/或自适应纹理/皮肤之类的特效以使得游戏对最终用户而言更有吸引力。然而,运行在当前图形处理单元上的应用需要对同一三维对象集合多遍通过整个三维流水线,以便创建这些特效。\n[0005] 例如,为创建透明效果,应用必须首先进行深度剥离,以得到每一深度层的帧缓冲区,然后根据深度值混合各层。在深度剥离过程期间,应用必须对同一三维对象集合多次运行通过三维流水线,以便从不同的层获取数据。在每一次运行通过三维流水线期间,计算三维流水线的顶点级(phase)以及像素级两者。然而,在运行期间,在顶点级中没有变化。结果,在这些遍中计算的顶点级是重复且冗余的。正是针对这些和其它考虑需要本发明的改进。\n附图说明\n[0006] 图1示出了用于多遍渲染的系统的实施例。\n[0007] 图2示出了图1的系统的逻辑流程的实施例。\n[0008] 图3示出了具有三维流水线的图形处理单元的实施例。\n[0009] 图4示出了在像素级期间对于对象的深度渲染的实施例。\n[0010] 图5示出了在像素级中使用的参数的实施例。\n[0011] 图6示出了多遍渲染应用和图形驱动器之间的通信的实施例。\n[0012] 图7示出了图1的系统的集中化系统的实施例。\n[0013] 图8示出了计算体系结构的实施例。\n[0014] 图9示出了通信体系结构的实施例。\n[0015] 详细描述\n[0016] 各个实施例针对多遍渲染。在一实施例中,多遍渲染可在没有冗余地处理顶点数据的情况下进行。在一实施例中,要被增强的一个或多个对象的顶点数据可被接收。在一实施例中,显示列表中的参数可使用顶点数据来确定。可使用显示列表中的参数来运行多遍像素渲染。一个或多个对象的增强描绘可基于多遍像素渲染而被渲染。\n[0017] 三维效果的渲染可通过在三维流水线内使用分开的顶点级和像素级来改进。通过单次运行顶点级以创建显示列表,然后在多次运行像素级的同时重用该显示列表,可在更好性能和更少功耗的情况下实现三维效果。作为结果,各实施例可改进操作员、设备或网络的承受能力、可伸缩性、模块性、可扩展性或互操作性。\n[0018] 现在参考附图,其中在所有附图中相同的参考标号被用于指示相同的元素。在下面的描述中,出于说明目的阐述了众多具体细节以便提供对本发明的全面理解。然而,显而易见,可以没有这些具体细节的情况下实施各新颖实施方式。在其他情况下,以框图形式示出了各个公知的结构和设备以便于描述本发明。本发明将涵盖落入所要求保护的主题的精神和范围内的所有修改、等效方案和替换方案。\n[0019] 图1示出了系统100的框图。在一个实施例中,系统100可包括具有一个或多个软件应用和/或组件的计算机实现的系统100。尽管图1中示出的系统100具有处于特定拓扑中的有限数量的元素,但可以明白,系统100可包括给定实现所需的处于替换拓扑中的更多或更少元素。\n[0020] 系统100可包括多遍渲染应用120。在一实施例中,多遍渲染应用120可在图形处理单元上运行。在一实施例中,多遍渲染应用120可运行通过三维流水线以便创建三维特效。\n例如,多遍渲染应用120可创建诸如但不限于:透明、阴影、自适应纹理和/或自适应皮肤的特效。\n[0021] 在实施例中,系统100可通过在多遍渲染应用120内具有图形应用编程接口118和图形驱动器121来改进渲染三维效果的表现。\n[0022] 在一实施例中,图形驱动器121可以是三维驱动器。图形驱动器121可与图形处理单元一起工作以将三维流水线处理成两个单独的级。在一实施例中,三维流水线可包括顶点级122和像素级124。在一实施例中,图形驱动器121可以运行顶点级122。顶点级122可被处理,而可对图形驱动器121生成中断。图形驱动器121可在显示列表中存储顶点级122的结果。通过在显示列表中存储结果,像素级124可稍后为像素处理使用显示列表。\n[0023] 在一实施例中,图形驱动器121可运行像素级124多次通过三维流水线,以便创建所需的特效。通过使顶点级122与像素级124分开,顶点级可被运行单次,并且结果被存储。\n所存储的结果可在像素级的多遍期间由像素级124使用。作为结果,节省了功率,因为顶点级122不必在每次像素级124在三维流水线中运行时被重新运行。\n[0024] 在一实施例中,顶点级122可用于基于一个或多个对象接收顶点数据。在一实施例中,顶点数据110可以是多遍渲染应用120的输入数据110。在一实施例中,顶点数据110可以是来自要对其应用特效的一个或多个对象的数据。顶点级122可运行来自对象的顶点数据\n110通过顶点流水线以处理数据。顶点级122可确定图元(primitive)数据。在一实施例中,图元数据可包括变换、光照、色彩和位置数据中的一个或多个。\n[0025] 在一实施例中,顶点级122可将图元数据存储在显示列表中。在一实施例中,显示列表可包括多个参数。在一实施例中,显示列表的参数可包括由顶点级使用顶点数据来确定的图元数据。在一实施例中,显示列表的参数可包括指向命令数据缓冲区的指针。例如,显示列表的参数可包括指向纹理缓冲区的指针、指向像素着色器缓冲区的指针和/或指向深度/渲染缓冲区的指针。在一实施例中,深度/渲染缓冲区可以是具有各自的深度和渲染信息的两个分开的缓冲区。在一实施例中,深度缓冲区可包括深度信息。深度信息可被用于反映对象的距离。在一实施例中,渲染缓冲区可包括渲染结果。在一实施例中,渲染缓冲区可被称为帧缓冲区。\n[0026] 在一实施例中,当顶点级122结束处理时,图形驱动器121可使用来自由顶点级122生成的显示列表中的参数来开始像素级124。在一实施例中,像素级124可与顶点级122无关。换言之,像素级124可被运行多次而不重新运行顶点级122。在一实施例中,像素级124可用于使用显示列表运行多遍像素渲染。在一实施例中,一遍像素渲染可被运行第一次,以获取最近深度层的深度/渲染即帧缓冲区(depth/render or frame buffer)。在一实施例中,每遍像素渲染可从次近深度层获取帧缓冲区。在一实施例中,一遍像素渲染可被运行最后一次,以获取最远深度层的帧缓冲区。\n[0027] 在一实施例中,在像素级124运行多遍像素渲染且通过深度剥离达到最远层之后,像素级124可渲染要被增强的一个或多个对象的增强描绘。在一实施例中,一个或多个对象的增强描绘可以是多遍渲染应用120的输出130。输出130可包括具有特效的一个或多个对象的渲染。例如,在深度剥离之后,多遍渲染应用120的像素级124可混合从远层到近层的深度/渲染即帧缓冲区,以获取一个或多个对象的透明效果。\n[0028] 此处所包括的是一组代表用于执行所公开的体系结构的新颖方面的示例性方法的流程图。尽管出于解释简明的目的,此处例如以流程图或流程图表形式示出的一个或多个方法被示出并描述为一系列动作,但是可以理解和明白,各方法不受动作的次序的限制,因为根据本发明,某些动作可以按与此处所示并描述的不同的次序和/或与其他动作同时发生。例如,本领域技术人员将会明白并理解,方法可被替换地表示为一系列相互关联的状态或事件,诸如以状态图的形式。此外,并非在一方法中示出的所有动作都是新颖实现所必需的。\n[0029] 图2示出了逻辑流程200的一个实施例。逻辑流程200可代表本文所述的一个或多个实施例所执行的操作中的一些或全部。\n[0030] 在图2中所示的实施例中,逻辑流程200可在框202接收要被增强的一个或多个对象的顶点数据。例如,顶点数据可在三维流水线的第一级期间被接收到。在一实施例中,三维流水线可具有两级。在一实施例中,第一级可包括顶点级。顶点级可接收要被增强的一个或多个对象的顶点数据。例如,用户可能希望场景中的一对象或一组对象显得透明。作为结果,与场景中的该对象或该组对象相关联的顶点数据可在三维流水线的顶点级期间被接收。\n[0031] 逻辑流程200可在框204在第一级的单次运行期间使用顶点数据确定显示列表。例如,顶点数据可在顶点级期间被处理。在一实施例中,顶点数据可被处理和/或编译以确定关于顶点数据的位置、色彩和其它信息。实施例不限于此示例。\n[0032] 在一实施例中,顶点级可基于处理后的顶点数据创建显示列表。显示列表可包括一个或多个参数。在一实施例中,显示列表参数可包括图元数据。在一实施例中,显示列表参数可包括命令缓冲区。命令缓冲区可包括控制缓冲区命令缓冲区可包括指向与第二即像素级相关联的各个缓冲区的指针。在一实施例中,指向各个缓冲区的指针可在像素级中被使用。在一实施例中,命令缓冲区可包括但不限于:指向纹理缓冲区的指针、指向像素着色器缓冲区的指针和指向深度/渲染缓冲区的指针。在一实施例中,顶点级期间的命令缓冲区设置可在像素级之前被改变。在一实施例中,顶点级期间设置的命令缓冲区可以是默认的纹理缓冲区、像素着色器缓冲区和/或深度/渲染缓冲区。在一实施例中,用户可确定特定的缓冲区应被使用且参数可被重新定义,使得指针可指向该特定缓冲区。例如,如果在顶点级运行之后,用户指定特定纹理缓冲区,则可对像素级使用该特定的纹理缓冲区而非显示列表上指针指向的默认纹理缓冲区。在一实施例中,显示列表可用对用户所选的纹理缓冲区的指针替换对默认纹理缓冲区的指针。在顶点级和像素级在三维流水线内分开时,用户可在顶点级被运行之后、但在像素级被第一次运行之前,选择一个或多个缓冲区。\n[0033] 逻辑流程200可在框206使用显示列表运行多遍第二级像素渲染。例如,像素级可被运行多次,以便实现所需特效。每当像素级被运行时,显示列表可被使用而不必重新运行顶点级。显示列表中的指针可被更新,以使得像素级可使用来自显示列表中的参数的信息,而不需重新运行顶点级。\n[0034] 例如,像素级可被运行多次,每一次从对象移除一深度层。像素级可继续运行,直到像素级确定已从图像移除了最后的深度层。实施例不限于此示例。逻辑流程200可在框\n208基于多遍第二级像素渲染来渲染一个或多个对象的增强描绘。例如,通过单次运行顶点级并使用从顶点级生成的显示列表来多次运行像素级,一个或多个对象的增强描绘可被渲染。在一实施例中,三维特效可被渲染。例如,可在一个或多个对象上描绘各个纹理,对象被显示为部分或完全透明的和/或对象可被显示为具有阴影。实施例不限于此示例。\n[0035] 例如,建筑物可以是场景中要被增强的对象。用户可能希望使得建筑物对象显现为透明。可对建筑物对象确定顶点数据。顶点数据可被图形处理单元接收。顶点数据可在三维流水线的顶点级期间被接收。经编译和处理的顶点数据可以是图元数据。在顶点级的单次运行期间,可确定显示列表。显示列表可包含参数,诸如但不限于图元数据和控制缓冲区。\n[0036] 图形处理单元可确定是否要运行像素级。图形驱动器可等待来运行像素级,直到一命令被接收。在一实施例中,来自用户的命令可被接收以使用特定缓冲区来处理图元数据。图形处理单元可基于特定缓冲区重新定义和/或更新显示列表中的参数。例如,图形处理单元可更新命令缓冲区中的一个或多个指针,以使得指针指向用户所选的特定像素着色器缓冲区。这允许用户所指定的像素着色器缓冲区在像素级中被使用。\n[0037] 在一实施例中,可运行多遍第二级像素渲染。在一实施例中,第一遍像素渲染可从建筑物对象移除第一层。在一实施例中,第二遍像素渲染可从建筑物对象移除第二层。后续遍的第二级像素渲染可被运行,直到建筑物对象的最后一层被确定。\n[0038] 例如,可渲染建筑物对象的增强透明图像。当对建筑物对象运行了多个像素渲染级时,可为多个深度剥离层确定多个深度/渲染帧缓冲区。为了渲染透明对象,图形处理单元可根据深度值使用从最远层到最近层的帧缓冲区混合各层。建筑物对象的透明图像可被渲染。在一实施例中,可在移动设备的显示器上渲染透明建筑物对象。实施例不限于此示例。\n[0039] 图3示出了具有三维流水线300的图形处理单元的实施例。在一实施例中,图形处理单元302可包括PowerVR图形处理单元。在一实施例中,如参考多遍渲染应用122所述地,具有三维流水线300的图形处理单元302将三维流水线分成顶点级322和像素级326。在一实施例中,图形处理单元302可使用顶点流水线来处理顶点级322。图形处理单元302可处理顶点级322,然后生成对图形驱动器310的中断。图形驱动器310可运行顶点级322。图形驱动器\n310可接收将顶点级322的结果存储在输出缓冲区(诸如但不限于:显示列表315)中的中断。\n通过在显示列表315中存储结果,像素级326可稍后可为像素处理使用显示列表315。在一实施例中,图形驱动器310可以运行像素级326。\n[0040] 在一实施例中,显示列表315可包括像素处理所需的信息。在一实施例中,显示列表315可包括一个或多个参数。在一实施例中,显示列表315中的参数可包括图元数据330。\n在一实施例中,图元数据330可包括由顶点级322处理的顶点数据。如上所述,图元数据330包括变换、光照、色彩和位置数据中的一个或多个。\n[0041] 在一实施例中,显示列表315中的参数可包括命令缓冲区。在一实施例中,命令缓冲区可包括控制流信息。在一实施例中,命令缓冲区可包括指向像素级326中为像素处理所需的各个缓冲区的指针。例如,命令缓冲区可包括指向纹理缓冲区335的指针。纹理缓冲区可包括可为场景中的一个或多个对象渲染的纹理图像。在一实施例中,纹理坐标信息可以是顶点主要属性数据。在一实施例中,纹理坐标信息可被用于确定如何将纹理图像映射到三维对象上。纹理缓冲区335和图元数据330中的信息可以是用于在像素级326期间处理的输入。\n[0042] 在一实施例中,指向像素着色器缓冲区340的指针可被包括在显示列表315中。像素着色器缓冲区340可包括用于在像素级326期间处理输入的信息。具体地,像素着色器缓冲区340可包括用于处理纹理335缓冲区和图元数据330中的信息的信息。在一实施例中,像素着色器缓冲区340可包括编程代码。在一实施例中,存储在像素着色器缓冲区340中的代码可在像素级326期间被图形处理单元302加载。\n[0043] 在一实施例中,指向深度/渲染缓冲区345的指针可被包括在显示列表315中。在一实施例中,深度/渲染缓冲区345可以包括具有各自的深度和渲染信息的两个分开的缓冲区。在一实施例中,深度缓冲区可包括深度信息。深度信息可被用于反映对象的距离。在一实施例中,渲染缓冲区可包括渲染结果。在一实施例中,深度/渲染缓冲区345可包括在像素着色器缓冲区340处理图元数据330和纹理缓冲区335之后的输出信息。在一实施例中,深度/渲染缓冲区345可在像素级326运行移除最近一层的像素遍时存储每一深度层的像素。\n[0044] 图4示出了在像素级期间对于对象的深度渲染的实施例。在一实施例中,像素处理可包括一个或多个对象的各层的深度剥离。例如,要对其执行深度剥离的对象可以是具有线条的圆圈。对象可运行通过顶点级,以基于具有线条的圆圈对象创建具有多个参数的显示列表。圆圈和线条对象可被运行通过三维流水线中的第一级。第一级可以是顶点级。当顶点级完成之后,圆圈和线条对象可准备好三维流水线中的第二级。第二级可以是用于像素处理的像素级。像素级可包括使用来自显示列表的参数的各遍像素渲染的多次运行。\n[0045] 例如,第一遍像素渲染可获取最近的深度层的深度/渲染即帧缓冲区。如图4中所示,第一层(层0)405可包括通过像素级的第一遍。在第一深度剥离层405中,最近的一层可被移除。\n[0046] 多遍渲染应用120可确定对于圆圈和线条对象有更多的层。作为结果,多遍渲染应用120可更新来自显示列表的指向缓冲区的指针,并对圆圈加线条对象重新运行像素级。因为显示列表可用于后续的像素遍,所以顶点级不必被重新运行。从而,顶点级可被运行单次,而像素级可被重新运行以移除各个深度层。\n[0047] 通过像素级的第二遍可确定圆圈加线条对象的第二层(层1)410。像素级可通过使用来自第一层405的参数并移除来自第一层405的像素来确定次近层。多遍渲染应用120可从第一层405移除像素以获取次近层410。次近层可以是第二层410。一遍第二级像素渲染可被运行以获取第二深度层410的帧缓冲区。\n[0048] 通过像素级的第三遍可确定第三且最后的层(层2)415。因为第一和第二层在前两遍期间被移除,所以最近层可以是第三层415。像素级可通过使用来自第二层410的参数并移除来自第一层405和第二层410的像素来确定次近层。多遍渲染应用120可从第一层405和第二层410移除像素以获取次近层415。一遍像素渲染可被运行以获取最远深度层415的帧缓冲区。该遍像素渲染可通过运行另一遍像素渲染并确定没有其它的深度层来确定已达到最远层415。在一实施例中,当最后的像素遍被运行时,后续深度/渲染缓冲区可与之前的深度/渲染缓冲区相同。在一实施例中,当最后像素遍被运行时,在深度/渲染缓冲区中没有像素。在一实施例中,当最后像素遍被运行时,没有其它层存在,因为不存在更大的深度值来替换深度缓冲区中的现有值,且没有渲染像素要被存储在渲染缓冲区中。\n[0049] 图5示出了在像素级中使用的参数的实施例。如图5中所示,图元数据520和纹理缓冲区525可以是输入。像素着色器缓冲区530可提供代码以处理输入。深度/渲染缓冲区535可提供输出。例如,通过像素级的第一次运行505可使用图元数据540作为输入。通过像素级的第一次运行505可能没有来自纹理缓冲区525的任何纹理数据,因为对之前的层不需要比较。在通过像素级的第一次运行505期间,像素着色器缓冲区信息545可处理图元数据,且像素的最近层可被置于深度/渲染缓冲区550中作为输出。\n[0050] 在像素级的第二次运行510之前,缓冲区可被更新。来自深度/渲染缓冲区550的输出数据可被置于纹理缓冲区560中。来自纹理缓冲区560的像素数据然后可与图元数据540一起被用作像素级的第二次运行510的输入。第二次运行510可使用来自像素着色器缓冲区\n565的数据以处理来自纹理缓冲区560的像素数据和图元数据540。在一实施例中,像素着色器缓冲区585可比较图元数据540与来自纹理缓冲区560的像素数据以确定下一层。处理的结果可以是像素数据,该像素数据可被置于深度/渲染缓冲区570中。\n[0051] 在像素级的第三次运行515之前,缓冲区可被更新。来自深度/渲染缓冲区570的输出数据可被置于纹理缓冲区580中。来自纹理缓冲区580的像素数据然后可与图元数据540一起被用作像素级的第三次运行515的输入。第三次运行515可使用来自像素着色器缓冲区\n585的数据以处理来自纹理缓冲区580的像素数据和图元数据540。在一实施例中,像素着色器缓冲区585可比较图元数据540与来自纹理缓冲区585的像素数据以确定下一层。处理的结果可以是像素数据,该像素数据可被置于深度/渲染缓冲区590中。因为深度/渲染缓冲区\n590中的像素数据可来自对象的最终或最后层,像素级的深度剥离可完成。实施例不限于此示例。\n[0052] 图6示出了多遍渲染应用和图形驱动器之间的通信的实施例。在一实施例中,多遍渲染应用620可接收打开应用625的命令。在一实施例中,命令可以是用于场景设置。在一实施例中,对于一场景,可用特效来渲染一个或多个对象。\n[0053] 在多遍渲染应用620接收打开应用的命令之后,多遍渲染应用620可向图形驱动器\n610发送信息。例如,发送给图形驱动器610的信息可包括顶点数据,用以确定场景中一个或多个对象的三维图元。图形驱动器610可为像素级655生成一个或多个命令缓冲区并存储指针。例如,图形驱动器610可准备命令缓冲区。例如,图形驱动器610可在命令缓冲区中记录何处使用纹理缓冲区、像素着色器缓冲区和深度/渲染缓冲区。在一实施例中,图形驱动器\n610可存储指向纹理缓冲区、像素着色器缓冲区和深度/渲染缓冲区的指针。\n[0054] 多遍渲染应用620可开始顶点级635。多遍渲染应用620可向图形驱动器610发送信息,以使得图形驱动器610可开始顶点级以确定显示列表640。图形驱动器610可在顶点级完成之后停止处理。在一实施例中,图形驱动器610可在开始像素级之前等待来自多遍渲染应用620的命令。在一实施例中,图形驱动器610可从多遍渲染应用620接收在像素级中使用的输入。\n[0055] 在一实施例中,多遍渲染应用620可设置纹理缓冲区、像素着色器缓冲区和深度/渲染缓冲区645。在一实施例中,命令可被接收到以设置命令缓冲区。在一实施例中,缓冲区可经由对多遍渲染应用620的用户输入来确定。例如,在顶点级之后,用户可确定纹理缓冲区将在像素级期间被使用。例如,用户可确定像素着色器缓冲区将在像素级期间被使用。实施例不限于此示例。\n[0056] 基于多遍渲染应用620的设置,图形驱动器610可在显示列表650的命令缓冲区内替换纹理缓冲区、像素着色器缓冲区和/或深度/渲染缓冲区的指针。\n[0057] 多遍渲染应用620可通过与图形驱动器610通信来开始像素级655,以运行像素遍\n660。在每一像素遍660之后,命令缓冲区内的指针那可被替换650。多遍渲染应用620可确定这是否是最后一遍665。如果图形驱动器610能够确定新的深度层,则图形驱动器610可运行另一像素遍660。当像素级结束且最后一遍665已经运行660时,于是多遍渲染应用620可命令图形驱动器610来使用之前各遍675的结果生成最终场景。图形驱动器610可显示渲染结果680。渲染结果680可包括具有三维对象的场景。\n[0058] 图7示出集中化系统700的框图。集中化系统700可在单个计算实体中,诸如全部在单个计算设备720内,实现系统100的结构和/或操作中的一些或全部。\n[0059] 在一实施例中,计算设备720可以是移动设备。移动设备可包括而不限于计算机、服务器、工作站、笔记本计算机、手持式计算机、电话、蜂窝电话、个人数字助理(PDA)、组合蜂窝电话和PDA等。\n[0060] 计算设备720可使用处理组件730为系统100执行处理操作或逻辑。处理组件730可包括各硬件要素、软件要素或两者的组合。硬件要素的示例可包括设备、组件、处理器、微处理器、电路、电路元件(例如晶体管、电阻器、电容器、电感器等)、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等等。软件要素的示例可包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、程序、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或它们的任意组合。如给定实现所需的,确定实施例是利用硬件部件和/或软件部件来实现可根据任意数量的因素而不同,这些因素比如所需计算速率、功率电平、热容限、处理循环预算、输入数据速率、输出数据速率、存储器资源、数据总线速度以及其他设计或性能约束。\n[0061] 计算设备720可使用通信组件740为系统100执行通信操作或逻辑。通信组件740可以实现任何公知通信技术和协议,如适于与分组交换网络(例如,诸如因特网等公共网络、诸如企业内联网等私有网络,等等)、电路交换网络(例如,公共交换电话网络)或分组交换网络与电路交换网络的组合(具有合适的网关和转换器)一起使用的技术。通信组件740可包括各种类型的标准通信要素,如一个或多个通信接口、网络接口、网络接口卡(NIC)、无线电装置、无线发射机/接收机(收发机)、有线和/或无线通信介质、物理连接器,等等。作为示例而非限制,通信介质720包括有线通信介质和无线通信介质。有线通信介质的示例可以包括电线、电缆、金属导线、印刷电路板(PCB)、背板、交换光纤、半导体材料、双绞线、同轴电缆、光纤、传播信号等等。无线通信介质的示例可包括声学、射频(RF)频谱、红外和其它无线介质720。\n[0062] 计算设备720可经由通信组件740使用通信信号722通过通信介质715与其它设备\n710、730通信。在一实施例中,计算设备720可包括但不限于智能电话、平板、膝上型计算机等。\n[0063] 在一实施例中,计算设备720可包括显示器750。在一个实施例中,显示器750可包括液晶显示器(LCD)。在一个实施例中,显示器750可包括有机发光二极管(OLED)显示器。在一个实施例中,可使用OLED显示器,因为它提供比液晶显示器(LCD)更好的色彩饱和度和观看角度。在一个实施例中,显示器750可包括一个或多个OLED显示屏。\n[0064] 图8示出了适于实现如前所述的各个实施例的示例性计算体系结构800的实施例。\n如本申请中所使用地,术语“系统”和“组件”旨在表示计算机相关实体,无论是硬件、硬件和软件的组合、软件还是执行中的软件,其示例经由示例性计算体系结构800来提供。例如,组件可以是但不限于,在处理器上运行的进程、处理器、硬盘驱动器、多个(光和/或磁存储介质的)存储驱动器、对象、可执行代码、执行的线程、程序、和/或计算机。作为说明,在服务器上运行的应用和服务器两者都可以是组件。一个或多个组件可以驻留在进程和/或执行的线程内,且组件可以位于一个计算机上和/或分布在两个或更多的计算机之间。此外,组件可以通过各种类型的通信介质可通信地彼此耦合以协调操作。该协调可以涉及单向或双向信息交换。例如,组件可以传递通过通信介质传递的信号形式的信息。该信息可被实现成分配给各条信号线的信号。在这些分配中,每一消息都是信号。然而,其他实施例可另选地采用数据消息。这些数据消息可以跨各个连接发送。示例性连接包括并行接口、串行接口和总线接口。\n[0065] 在一个实施例中,计算架构800可包括电子设备的一部分或作为电子设备的一部分实现。电子设备的示例可包括但不限于,移动设备、个人数字助理、移动计算设备、智能电话、蜂窝电话、手机、单向寻呼机、双向寻呼机、消息收发设备、计算机、个人计算机(PC)、台式计算机、膝上型计算机、笔记本计算机、手持式计算机、平板计算机、服务器、服务器阵列或服务器场、web服务器、网络服务器、因特网服务器、工作站、小型计算机、大型计算机、超级计算机、网络设备、web设备、分布式计算系统、多处理器系统、基于处理器的系统、消费电子产品、可编程消费电子产品、电视机、数字电视机、机顶盒、无线接入点、基站、用户站、移动用户中心、无线电网络控制器、路由器、集线器、网关、网桥、交换机、机器、或其组合。各实施例不限于该上下文。\n[0066] 计算体系结构800包括各种常见计算元件,如一个或多个处理器、协处理器、存储器单元、芯片组、控制器、外围设备、接口、振荡器、定时设备、视频卡、音频卡、多媒体输入/输出(I/O)组件,等等。然而,各实施例不限于由计算体系结构800来实现。\n[0067] 如图8所示,计算体系结构800包括处理单元804、系统存储器806以及系统总线\n808。处理单元804可以是可购得的各种处理器中的任一种。双微处理器和其它多处理器体系结构也可用作处理单元804。系统总线808向包括但不限于系统存储器806的各系统组件提供到处理单元804的接口。系统总线808可以是若干类型总线结构中的任一种,这些总线结构还可互连到存储器总线(带有或没有存储器控制器)、外围总线、以及使用各类市场上可购买到的总线体系结构中的任一种的局部总线。\n[0068] 计算架构800可包括或实现各种制品。制品可包括存储逻辑的计算机可读的存储介质。本发明的各实施例还可以被至少部分地实现为非瞬态计算机可读介质中或上所包含的指令,这些指令可由一个或多个处理器读取并执行以使得能够执行本文描述的操作。计算机可读存储介质的示例可包括能够存储电子数据的任何有形介质,包括易失性存储器或非易失性存储器、可移动或不可移动存储器、可擦除或不可擦除存储器、可写或可重写存储器等。逻辑的示例可包括使用任何合适类型的代码(诸如源代码、已编译代码、已解释代码、可执行代码、静态代码、动态代码、面向对象代码、可视代码等)实现的可执行计算机程序指令。\n[0069] 系统存储器806可以包括一个或多个更高速的存储器单元的形式的各种类型的计算机可读存储介质,如只读存储器(ROM)、随机存取存储器(RAM)、动态RAM(DRAM)、双倍数据率DRAM(DDR AM)、同步DRAM(SDRAM)、静态RAM(SRAM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存、诸如铁电聚合物存储器等聚合物存储器、奥氏存储器、相变或铁电存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)存储器、磁卡或光卡、或适于存储信息的任何其他类型的介质。在图8示出的所示实施例中,系统存储器806可包括非易失性存储器810和/或易失性存储器812。基本输入/输出系统(BIOS)可以存储在非易失性存储器810中。\n[0070] 计算机802可包括一个或多个较低速的存储器单元的形式的各种类型的计算机可读存储介质,包括内置硬盘驱动器(HDD)814、用于读写可移动磁盘818的磁软盘驱动器(FDD)816、以及用于读写可移动光盘822(例如,CD-ROM或DVD)的光盘驱动器820。HDD 814、FDD 816、以及光盘驱动器820可分别由HDD接口824、FDD接口826和光盘驱动器接口828连接到系统总线808。用于外置驱动器实现的HDD接口824可包括通用串行总线(USB)和IEEE \n1394接口技术中的至少一种或两者。\n[0071] 驱动器及相关联的计算机可读介质提供了对数据、数据结构、计算机可执行指令等的易失性和/或非易失性存储。例如,多个程序模块可被存储在驱动器和存储器单元810、\n812中,包括操作系统830、一个或多个应用程序832、其他程序模块834和程序数据836。\n[0072] 这一个或多个应用程序832、其他程序模块834、以及程序数据836可包括例如顶点级122和像素级124。\n[0073] 用户可以通过一个或多个有线/无线输入设备,例如键盘838和诸如鼠标840等定点设备将命令和信息输入到计算机802中。其他输入设备可包括话筒、红外(IR)遥控器、操纵杆、游戏垫、指示笔、触摸屏等等。这些和其他输入设备通常通过耦合到系统总线808的输入设备接口842连接到处理单元804,但也可通过诸如并行端口、IEEE 1394串行端口、游戏端口、USB端口、IR接口等其他接口连接。\n[0074] 监视器844或其他类型的显示设备也经由诸如视频适配器846等接口连接到系统总线808。除了监视器844之外,计算机通常包括诸如扬声器、打印机等其他外围输出设备。\n[0075] 计算机802可使用经由有线和/或无线通信至一个或多个远程计算机(诸如远程计算机848)的逻辑连接在联网环境中操作。远程计算机848可以是工作站、服务器计算机、路由器、个人计算机、便携式计算机、基于微处理器的娱乐设备、对等设备或其他常见的网络节点,并且通常包括相对于计算机802描述的许多或所有元件,但为简明起见仅示出了存储器/存储设备850。所描绘的逻辑连接包括到局域网(LAN)852和/或例如广域网(WAN)854等更大网络的有线/无线连接。这种LAN和WAN联网环境常见于办公室和公司,并且方便了诸如内联网等企业范围计算机网络,所有这些都可连接到例如因特网等全球通信网络。\n[0076] 当在LAN联网环境中使用时,计算机802通过有线和/或无线通信网络接口或适配器856连接到LAN 852。适配器856可以方便到LAN 852的有线和/或无线通信,并且还可包括其上设置的用于使用适配器856的无线功能进行通信的无线接入点。\n[0077] 当在WAN联网环境中使用时,计算机802可包括调制解调器858,或连接到WAN 854上的通信服务器,或具有用于诸如通过因特网等在WAN 854上建立通信的其他装置。或为内置或为外置以及有线和/或无线设备的调制解调器858经由输入设备接口842连接到系统总线808。在联网环境中,相对于计算机802所描绘的程序模块或其部分可以存储在远程存储器/存储设备850中。将明白,所示网络连接是示例性的,并且可以使用在计算机之间建立通信链路的其他手段。\n[0078] 计算机802可操作来使用IEEE 802标准系列来与有线和无线设备或实体进行通信,这些设备或实体例如是在操作上安置成与例如打印机、扫描仪、台式和/或便携式计算机、个人数字助理(PDA)、通信卫星、任何一件与无线可检测标签相关联的设备或位置(例如,电话亭、报亭、休息室)以及电话进行无线通信(例如,IEEE 802.11空中调制技术)的无TM\n线设备。这至少包括Wi-Fi(即无线保真)、WiMax和蓝牙 无线技术。由此,通信可以如对于常规网络那样是预定义结构,或者仅仅是至少两个设备之间的自组织(ad hoc)通信。Wi-Fi网络使用称为IEEE 802.11x(a、b、n、g等等)的无线电技术来提供安全、可靠、快速的无线连接。Wi-Fi网络可用于将计算机彼此连接、连接到因特网以及连接到有线网络(使用IEEE \n802.3相关的介质和功能)。\n[0079] 图9示出适用于实现上述各实施例的示例性通信体系结构900的框图。通信体系结构900包括各种常见通信元件,如发射机、接收机、收发机、无线电装置、网络接口、基带处理器、天线、放大器、滤波器,等等。然而,各实施例不限于由通信体系结构900来实现。\n[0080] 如图9所示,通信体系结构900包括一个或多个客户机902和服务器904。客户机902可实现客户机系统320。客户机902和服务器904可操作地连接到可被用来存储相应客户机\n902和服务器914本地的信息(如cookie和/或相关联的上下文信息)的一个或多个相应客户机数据存储908和服务器数据存储910。\n[0081] 客户机902和服务器904可以使用通信框架906在彼此之间传递信息。通信框架906可实现任何公知通信技术和协议,诸如参考系统300所描述的那些。通信框架906可以被实现为分组交换网络(例如,诸如因特网等公共网络、诸如企业内联网等专有网络,等等)、电路交换网络(例如,公共交换电话网)、或分组交换网络和电路交换网络的组合(使用合适的网关和转换器)。\n[0082] 一些实施例可使用表述“一个实施例”和“一实施例”及其派生词来描述。这些术语意味着结合该实施例描述的特定特征、结构、或性质包括在至少一个实施例中。出现在说明书中各个地方的短语“在一实施例中”不必全都指的是同一实施例。此外,一些实施例可使用表述“耦合的”和“连接的”及其派生词来描述。这些术语不必旨在互为同义词。例如,可以使用术语“连接”和/或“耦合”来描述某些实施例,以指示两个或更多元素彼此处于直接物理或电接触。然而,术语“耦合的”还可以意味着两个或更多元素互相不直接接触,而仍互相合作或交互。\n[0083] 要强调,本公开的摘要是为了允许读者快速确定本技术公开的性质而提供的。提交摘要的同时要明白,将不用它来解释或限制权利要求的范围或含义。另外,在前面的详细描述中,可以看到,出于将本公开连成一个整体的目的而将各种特征组合在一起放在单个实施例中。此公开方法将不被解释为反映所要求保护的实施例要求比每个权利要求中明确陈述的更多特征的意图。相反,如所附权利要求书所反映,发明性的主题存在于比单个已公开实施例的所有特征少的特征中。从而,据此将所附权利要求结合进详细描述中,其中每个权利要求独立地代表一个单独的实施例。在所附权利要求书中,术语“包括”和“其中”分别用作术语“包含”和“其特征在于”的易懂的英文等价词。而且,术语“第一”、“第二”、“第三”等等只用作标记,而不旨在将数字要求强加于其对象上。\n[0084] 上面描述的包括所公开的体系结构的各示例。当然,描述每一个可以想到的组件和/或方法的组合是不可能的,但本领域内的普通技术人员应该认识到,许多其他组合和排列都是可能的。因此,该新颖体系结构旨在涵盖所有这些落入所附权利要求书的精神和范围内的更改、修改和变化。
法律信息
- 2019-04-19
- 2016-07-13
实质审查的生效
IPC(主分类): G09G 5/02
专利申请号: 201511022943.5
申请日: 2011.12.14
- 2016-06-15
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有引用任何外部专利数据! |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |