CN101620724B - 图形处理系统 - Google Patents

图形处理系统 Download PDF

Info

Publication number
CN101620724B
CN101620724B CN200910163931.2A CN200910163931A CN101620724B CN 101620724 B CN101620724 B CN 101620724B CN 200910163931 A CN200910163931 A CN 200910163931A CN 101620724 B CN101620724 B CN 101620724B
Authority
CN
China
Prior art keywords
data
graphic
present
scene
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN200910163931.2A
Other languages
English (en)
Other versions
CN101620724A (zh
Inventor
E·普劳曼
J·尼斯塔德
B·约斯兰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Ltd
Original Assignee
Advanced Risc Machines Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Risc Machines Ltd filed Critical Advanced Risc Machines Ltd
Publication of CN101620724A publication Critical patent/CN101620724A/zh
Application granted granted Critical
Publication of CN101620724B publication Critical patent/CN101620724B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • G06T15/405Hidden part removal using Z-buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/08Volume rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/60Analysis of geometric attributes
    • G06T7/62Analysis of geometric attributes of area, perimeter, diameter or volume

Abstract

本发明涉及图形处理系统。在图形处理系统中,当片段到达纹理化阶段时,确定要被采用的纹理是静态纹理还是动态纹理(步骤24)。如果确定所需的纹元与动态纹理相关,那么该系统首先尝试从动态纹理存储器取那些纹元(步骤25)。如果发现纹元在动态纹理存储器中不可用,那么以“随选”的方式来生成相关纹元(步骤27)并将其存储在动态纹理存储器中(步骤28),以便它们被应用到片段。

Description

图形处理系统
技术领域
本发明涉及图形处理,尤其涉及3维(3D)图形处理,以供例如在显示屏上显示。
背景技术
如本领域已知的,3D图形处理一般通过以下方式来执行:首先将待显示的场景(scene)分成多个相似的基本组成部分(所谓的“基元(primitive)”),以允许3D图形处理操作能够被更简单地执行。这些“基元”一般是由简单多边形的形式,例如三角形。用于待显示场景的基元一般是通过图形处理系统的应用程序界面,利用从需要图形显示的应用(例如游戏)所接收的图形绘制(drawing)指令(请求)来生成的。每个基元在此阶段通常由一组顶点(vertex)定义并且被表示为一组顶点。基元的每个顶点都与表示顶点的一组数据相关联(例如位置、颜色、纹理和其他属性效据)。然后例如当对顶点(与顶点相关联的一个或多个基元)进行光栅化(rasterise)和渲染(render)以供显示时使用该数据。一旦场景的基元及它们的顶点已经被生成并定义,它们就能够由图形处理系统来处理,以便显示该场景。
该过程主要包括确定哪些覆盖了待处理的场景的采样点阵列的采样点被基元覆盖,以及然后确定每个采样点应该具有的表示在该采样点处的基元的外观(appearance)(例如在其颜色等方面)基元。这些过程通常被分别称为光栅化和渲染。
光栅化过程确定了应当用于基元的采样点位置(即,将被用于表示待显示场景中的基元的采样点的(x,y)位置)。这通常使用基元的顶点位置来进行。
渲染过程接着得到在采样点处显示基元所必需的数据,例如红、绿和蓝(RGB)色值以及“Alpha”(透明度)值(即对每个采样点进行“着色(shade)”)。如本领域已知的,这能够包括应用纹理、混合采样点数据值等。
(在3D图形文献中,术语“光栅化”有时既被用于表示到采样位置的基元变换也被用于表示渲染。然而,这里的“光栅化”将仅被用来指将基元数据转换成采样点地址。)
这些过程典型地通过将采样点表示为离散图形实体来执行,所述离散图形实体通常称作“片段(fragment)”,其中对所述片段执行图形处理操作(如渲染)。每个这种片段将对应一个给定的采样点或一组给定采样点,并且实际上表示并被用于在所讨论的一个或多个采样点(使用片段来渲染的一个或多个采样点)处渲染基元。。因此“片段”实际上是一组被内插到给定屏幕空间采样点(一个或多个)的基元数据(与之相关联)。其也可以包括每图元(per-primitive)以及用于在所讨论的一个或多个采样点(片段位置)着色基元所需的其他状态数据。每个图形片段在其被处理时能够被合理地认为实际上等效于场景的“像素”。实际上,每个图形“片段”可以对应于最终显示器中的单个像素(图像元素)(因为像素是最终显示器中的奇点(singularity),在图形处理器所操作(渲染)的“片段”与显示器的像素之间可以存在一对一的映射)。然而,片段与显示器像素之间可能没有一对一关系,例如在显示最终图像之前在对经渲染的图像执行特定形式的后处理(如按比例缩小)。如本领域已知的,光栅化和渲染过程一般涉及图形处理器的处理单元,例如片段着色器(shader)和纹理映射器等,从存储器取数据以例如当处理给定片段时使用,并且接着使用该数据来例如“渲染”该片段(例如应用该数据到片段)。
在一种用于图形处理的已知技术中,其通常被称作“立即模式”图形处理或渲染,在生成顶点时相继地对它们进行处理(光栅化和渲染)。
在这种系统类型中,基于先到先处理的方式(firstcomefirstserved)将顶点传送到图形系统(虽然通常将采用某种方式来分类这些顶点来尝试提高图形处理的效率),并且因此依照基元被接收的次序对基元进行渲染以用于显示。图形处理系统中还已知使用称为“基于区块的”或“延迟的(deferred)”渲染。在基于区块的渲染中,并不是像立即模式的渲染中那样实际上一下子处理整个场景,而是将要显示的场景被分为多个较小的子区域,通常被称为“区块(tile)”。每个区块(子区域)被分别渲染(一般一个接另一个),并且经渲染的子区域(区块)接着被重新组合以提供完整场景以供显示。在这样的方案中,场景一般被分为规则尺寸和形状的子区域(区块)(通常是例如正方形或长方形),但是这不是必须的。如本领域已知的,许多在处理图形数据以供显示时所执行的过程需要或者包括从存储器读取(fetch)其他图形数据(即使用先前准备并存储的数据)。例如,纹理映射过程可能需要使用所存储的纹理贴图(texturemap),基于区块渲染的系统中的光栅化处理可能需要使用先前存储的区块列表来确定将为区块而被光栅化的基元,基元区块(装仓(bining))过程可以使用所存储的经变换的顶点数据来测试区块位置,等等。在这些情形的每一个中,相关的图形处理,例如纹理映射,将识别执行过程的数据需求并接着从存储器(如本领域已知的,可以是高速缓冲存储器或其他存储器)读取该数据并在执行其过程时使用该读取的数据。
为了促进这些操作,图形处理系统通常被配置为确保在相关处理开始之前在场景被处理以供显示时所有以这种方式通过图形处理读取的数据都被存储在存储器中且可供图形处理使用。从而确保当处理场景以供显示时当图形处理从存储器查找相关数据时其是可用的。(如本领域已知的,场景通常将由一个或多个,并且一般由多个绘制调用(drawcall)(即待绘制的一个或多个基元的组)组成。)
这既适用于所谓的“静态”图形数据(即可以为例如多个场景共同预定义的数据,例如“静态”纹理贴图),又适用于所谓的“动态”图形数据(即在逐场景的基础上生成的图形数据(实质上,作为场景的一部分,而不是预先为多个场景定义))。可能需要这种“动态”数据,例如,因为数据不能在需要其的场景之前被预定义或生成,例如,因为它是基于,和/或响应于用户输入而被需要,和/或将逐场景地变化,和/或依赖于干预动态阶段,从而不能被提前预测。
“动态”图形数据的例子包括所谓的“动态纹理”(“动态纹理贴图”)且用于场景的区块列表(在基于区块的渲染系统中)。这种数据可以,例如,与分析和/或从不同角度观察场景(例如不是从实际的视点角度)相关,从而提供数据,例如阴影贴图,以用于处理场景。
“静态”图形数据可以例如由需要图形处理的应用来提供并且存储在存储器中以供当场景将被渲染时使用。
对于“动态”图形数据,一般控制主机系统和/或图形处理系统以在场景被处理以供显示之前生成并存储该数据,从而在场景本身被处理以供之前再次该数据将在存储器中可用。
图3示出了示例性“动态”图形数据生成过程。
图3示出了待渲染的场景50,从视点51来对其进行观察。然而,场景还将由两个光源52、53来照明。
如本领域公知的,为了适应当场景被显示时它上面的光源52、53的效果,所谓的“阴影贴图”(一种纹理贴图的形式)就每个光源而言将被应用到所渲染的图像。这种“阴影贴图”是动态图形数据的例子,因为它们可以逐场景地生成。
为了动态地生成阴影贴图,该场景一般将被渲染就好像是从与阴影贴图对应的光源位置的方向来观察,以便生成能够接着被应用到阴影的纹理映射,以实质上表示当从场景视点观察时光源投射的阴影的效果。
因此在图3所示的场景的情形中,图形处理器将首先被控制来渲染与光源53相关的场景(经由适当的绘制调用),以便动态地生成阴影贴图54来表示该光源在场景上的效果。然后图形处理器将类似地被控制来相对于光源52渲染场景(通过出于该目的而再次被发送适当的绘制调用),以便生成动态阴影贴图55来表示该光源在场景上的效果。
接着,场景将会被渲染以用于其最终显示(再次通过发出(issue)适当的绘制调用给图形处理器),所述渲染过程将该生成的动态阴影贴图54、55应用到该场景,当其被渲染的时候(在纹理映射阶段),以便反映当从视点51观察时光源52、53在场景上的效果。
换句话说,渲染场景以供显示(用于场景的最终渲染绘制调用)将利用先前生成的阴影贴图54、55,以便当场景被显示时在场景上应用光源52、53的效果。
从上述内容可以看出在现有的图形处理系统和处理器中,为了处理场景以供显示(以及当处理场景以供显示时),任何来自存储器的可能需要的图形数据(例如将通过图形处理单元从存储器读取)都是在处理(渲染)所讨论的场景以供显示之前被生成并存储。
然而,申请人已经意识到这存在许多缺点。
例如,必须提供并分配足够的存储器来存储所有这种形式的数据。这会在存储器占用(memoryfootprint)方面产生相对大的开销来存储场景所需的所有数据。
这是有关动态图像数据的特别重要的问题,例如区块列表,动态纹理,等,不仅是因为存在存储这种数据的需求,而且这种需要被存储的数据的量会逐场景地变化并且会很难预测(因为它依赖于,例如在区块列表的情形中,场景中基元的分布,其会随场景而显著变化)。这会使得就这种数据而言存储器的高效使用变得困难。
已知在立即模式中渲染体系结构尝试对用于渲染的基元进行排序以使得基引用任何动态数据(例如纹理)的基元首先被渲染,以便尝试允许尽早丢弃“动态”数据(以及释放它所使用的存储器)。
然而,许多基元都会需要来自多个动态数据集合(例如纹理)的贡献(contribution),以便这些基元必须多次通过渲染过程来实现最终的渲染图像。这使得难于在渲染过程的早期阶段丢弃动态数据。在任何情形中,仍然必须进行用于所有动态数据的初始存储器分配。
此外,这种尝试“早期”丢弃动态数据在基于区块的方案中不太可能,这是因为动态数据可能需要被保留直到场景的最后的区块被渲染(并且再次,在任何情形中,仍然必须进行用于所有动态数据的初始存储器分配)。
因此申请人相信在图形处理系统中的数据处理技术方面存在改进空间,且特别地在动态数据方面,例如动态纹理和区块列表。
根据本发明的第一方面,提供一种用于在图形处理系统中处理数据的方法,所述方法包括:
图形处理系统:
确定用于处理将由图形处理系统处理的数据所需的数据是否已经在存储器中可用;并且
如果数据在存储器不可用,则生成所需数据并接着使用所生成的数据来处理待处理的数据。
根据本发明的第二方面,提供一种图形处理系统,所述系统包括:
用于确定用于处理将由图形处理系统处理的数据所需的数据是否已经在存储器中可用的装置;以及
用于当图形处理系统确定用于处理将由图形处理系统处理的数据所需的数据在存储器中不可用时,生成所需的数据并接着使用所生成的数据来处理待处理的数据的装置。
本发明中,图形处理系统被配置并且可操作来使得在其所需的数据在存储器中不可用的情况下,该图形处理系统将接着生成数据以供使用。这意味着,例如,利用本发明的系统,如果图形处理所需的数据(例如用于渲染片段)尚未被存储备用,则数据能够在它被需要的时候被生成。
这里应该需要注意的是本发明应该与现有的动态数据生成方案形成对照,因为在那些方案中动态数据是响应于由图形处理系统所接收的指令而被生成的,而不是响应于被发现在存储器中不存在的数据(因此也不存在在现有的动态生成方案中生成数据之前初始确定数据在存储器中是否可用的任何步骤)。
本发明能够尤其允许在图形处理系统(例如用于片段渲染)中处理数据所需的数据在它被需要的时候“随选(on-demand)”生成,与之对比的是,经常预先准备并存储该数据。这也意味着图形数据(例如动态图形数据)的生成能够被“延迟”直到数据被需要并且能够更近地耦合到数据的使用点之时,而不是必须在处理场景以供显示之前生成这样的数据。
采用本发明的方式以“随选”方式生成所需的数据的能力具有以下优点,例如,在处理场景以供之前,生成和存储在处理场景以供显示时所有需要被读取的图形数据的需求能够被避免,因此,例如,促进减缓或完全消除预先存储这种数据所需的存储器占用的问题。
因为在本发明中如果需要数据就可以“随选”生成数据,所以本发还能够被用于使得可能仅仅生成(并且例如存储)将被需要的数据。(这与预先生成并存储所有需要的数据的方案进行对比,因为在那种情况下一般会预先生成并存储所有数据集合(因为不太可能预先确定实际上所需要的数据(例如动态纹理贴图部分)。)
因此本发明能够有助于避免多余地生成并存储(不用的)图形数据。
此外,如以下将进一步讨论的,因为本发明中图形数据能够被“随选”计算,所以当其被需要的时候,本发明促进了在作为图形处理过程的一部分而存储这样的图形数据方面的更多灵活性和/或可预测性。例如,本发明能够被用来根本上消除存储这种数据以供较长期使用的需要(因为该数据总是能够被再次生成,如果再次需要的话)。
实际上,申请人已经认识到本发明特别提供了约束和/或保证了这种数据(例如,特别地,动态图像数据,例如区块列表数据,其总是通过图形处理来存储)的数量,因为如果该数据没有被存储,则总是能够当被需要的时候生成数据。这将允许,例如,系统设置固定大小给被分配用于存储例如动态图形数据(例如动态纹理,和/或区块列表,等)的存储器。因为如果超过了所分配存储器大小的数据将被形成,则存储器中现有的数据能够被安全地丢弃来释放存储器空间(因为该“丢弃的”数据总是能够被再次生成,如果在之后再次被需要的话)。本发明因此能够用来确保就这种数据而言的存储器使用可以在使用中被预测,不像在现有系统中,所有的这种数据必须被预先生成并存储。
本发明同样有助于针对这种数据使用“弱(weak)”的存储器分配(即能够在需要时出于其他目的而例如由操作系统“回收(reclaim)”的存储器分配),因为该数据能够总是在存储它的存储器已经出于其他目的而被收回(takeback)的情况下被生成。
因此本发明不仅有助于降低用于存储这种数据的存储器占用,而能够用于例如保证对于这种数据的最大的、固定的、可预测的和/或选定的存储分配,和/或允许用来存储这种数据的任何存储器安全地被释放(再分配),如果出于其他目的其被需要的话。控制(和约束)图形系统对存储器的使用的能力以及这样的知识是非常有利的,特别是在存储器资源可能有限的图形系统中,例如在低功率和/或便携式设备中并且对于其而言以及在嵌入式图形系统中。
本发明能够在图形处理系统能够执行或被用于执行的任何数据处理方面实现。因此它可以例如针对处理数据而被使用,所述处理数据实际上可以不被立即(或事实上,从不)显示在显示器上,例如数据被预加工用于显示所用的处理数据,和/或采用中间或初步形式并且在它最终为“显示”形式之前被进一步处理的数据。
本发明也可以用于以下情形,其中图形处理系统被用来处理和产生不一定是供显示的场景,或实际上,能够被“观察”的数据。这可能是以下情形,其中例如图形处理系统被用来执行其他形式的实际上不输出“可观察(viewable)”场景的图像或数据处理(即所产生的帧缓冲器输出可能是用于与控制显示器不同的目的的数据和/或不能直接可见的数据)。
然而,在特定的优选实施例中,本发明被应用到的数据和图形过程(graphicsprocess)是针对显示而处理图形数据,并且最优选地针对显示生成图形数据(例如,并且优选地,处理图形数据以生成最终的,显示,帧缓冲器输出,其将被应用于显示器以显示所讨论的场景)。这是因为在图形处理系统中针对显示处理图像数据一般需要动态图形数据,并且因此本发明一般适用于这种处理。
因此,在特别优选实施例中,用于确定其是否在存储器中可用(以及,如果必要的话,生成)的数据是针对显示处理图形数据所需的数据,以及针对显示而生成图象数据所需的最优选的数据(以及优选地用于提供最终帧缓冲器输出以供显示)。
针对用于处理将由图形处理系统处理的数据所需的数据是否在存储器中已经可用的确定能够通过任何期望的和适合的方式来执行和实施。因此它可以,例如,在一个优选实施例中,包括图形处理系统直接检查所需的数据是否存在于存储器中。可替换地,它可以例如包括检查信息,例如一个记录,例如以数据库的形式,查找表和/或位图,以指示数据存在和不存在于存储器中从而确定所需的数据是否已经在存储器中可用。该系统可以是例如具有存储器中的数据的直接的、有意识的(conscious),或间接的、无意识的(unconscious)知识并相应地使用并检查该信息来确定所需的数据是否已经在存储器中可用。
在一个特别优选的实施例中,用于确定用于处理将由图形处理系统处理的数据所需的数据是否已经存在于存储器中的步骤或装置包括图形处理系统尝试从存储器读取用于处理将由图形处理系统处理的数据所需的数据。在这种情况中,数据的读取可以,如上述讨论的那样,包括图像处理系统尝试从存储器直接读取数据本身(并且接着相应地发现该数据是否存在于存储器中),或它可以包括一种更间接的读取过程,其中图形处理系统首先检查一个记录,例如数据库、查找表或位图,以指示数据存在或不存在于存储器中,然后根据该记录信息要么接着读取该数据要么确定该数据在存储器中不可用。
将会理解的是,在本发明的操作中,图形处理系统一般首先识别该附加的数据是处理数据所需的,并接着确定该附加数据是否已经在存储器中可用。因此,在优选实施例中,本发明包括装置或步骤,用于:识别用于处理将由图形处理系统处理的数据所需的附加数据,以及接着确定用于处理将由图形处理系统处理的数据所需的附加数据是否已经在存储器中可用。
类似地,本领域技术人员将会理解的是,在本发明的操作中,该图形处理系统一般将接收用于处理的数据并且接着在某一点识别处理所接收的数据所需的附加数据并接着确定附加数据是否在存储器中可用(例如尝试从存储器读取该附加数据)。
因此,在优选实施例中,本发明包括装置或步骤,用于:接收用于处理的数据,确定该附加数据是处理接收数据所需的,并接着确定附加数据是否在存储器中可用(例如尝试从存储器读取附加数据)。
同样需要注意的是对于附加数据是否在存储器中可用的确定(例如尝试读取该数据)(和/或识别对附加数据的需要)可以在该数据被需要的时候被触发(即当处理其他数据需要(附加)数据时),但是它可以在图形处理中的某一其他点被触发,例如在(附加)数据实际上将被图形处理系统使用的时刻之前。后一种情况可能发生,其中例如使用数据的预取(pre-fetch)(像可能的情形是,例如,动态纹理数据)。在这种情况下数据的尝试读取(有关数据是否在存储器中可用的确定)(以及,优选地,其生成(如果必要的话)可以并且优选地在“预取”点被触发并执行,而不是在“预取的”数据实际上将被使用的点)。
因此,在一个优选实施例中,采用本发明的方式对于数据是否在存储器中可用的确定,以及如果必要的话该数据的生成,都是在该数据实际上将被使用的时间之前被触发的。
类似地,在另一个优选实施例中,对于数据是否在存储器中可用的确定,以及数据的生成(如果必要的话),在希望使用(将要使用)数据的时间被触发,例如,并且优选地,在或通过将使用该数据的图形过程和/或处理单元来触发。
实践中将会理解的是,对于数据是否在存储器中获得的确定(例如尝试读取数据)等,将一般通过图形处理系统的给定过程和/或处理单元识别对来自存储器的数据的需要并且接着相应地继续处理来触发的。因此,在一个优选实施例中,本发明包括图形处理系统的过程和/或处理单元确定数据是否在存储器中可用(例如,并且优选地,尝试从存储器读取数据),并且图形处理系统接着在该数据在存储器中不可用的情况下生成所需的数据。类似地,本发明优选地包括图形过程和/或处理单元接收待处理的数据,识别对来自存储器的数据的需要以处理所接收的数据,并确定数据是否在存储器中可用(例如,并且优选地,触发尝试从存储器读取数据)。
本发明的系统和过程能够被用于并且在图形处理系统的任何期望且合适的过程和/或处理单元中实施和/或将或能够在图形处理系统处理数据期间执行或被执行(即将或可能需要,例如从存储器读取数据的读取,或将或可能从存储器读取数据的任何过程或处理单元)。
本发明可以在可能需要在其操作中从存储器“读取”数据的每一个图形过程和/或处理单元中实施并且针对其实施,或其可以仅用于某些过程和/或与某种数据相关等,如果需要的话(在这种情况下可能需要来自存储器的数据的其他过程仍然预先准备数据并将其存储在存储器中)。在优选的实施例中,本发明被应用到和/或用于特定、优先选择的、图形处理、处理单元(一个或多个)和/或数据等。
在一个特别优选实施例中,本发明所应用到的图形处理是渲染过程,且最优选的是针对显示渲染图形片段。这是有利的,因为常见的是渲染过程需要动态数据,例如动态纹理,并且在图形处理的渲染阶段如此执行本发明是特别有利的。
在另一个优选的实施例中,本发明可以或替代地在基元被发出以用于在基于区块的渲染系统中渲染的阶段实施。在这种情况下,以本发明的方式通过“随选”方式生成的数据可以包括,例如,区块列表本身。(如下面进一步讨论的,申请人已经认识到“延迟”生成区块列表的能力(因为本发明能够提供)在基于区块的渲染系统中特别有利。)
类似地,在基于区块的图形处理系统的情况下,在一个优选实施例中,在场景的区块被处理以供显示时实施本发明的过程和系统。
在一个优选的实施例中,本发明在光栅化过程之前被实施。当动态数据是区块列表时这会是有用的。本发明同样是优选地或作为替代在光栅化之后执行。这是当动态数据是例如动态纹理数据的情形。
本发明中的或本发明被应用到和实施的图形处理的处理阶段或单元或处理器类似地能够是任何期望的和适合的这种阶段或单元。在一个优选地实施例中,它是能够且优选地以本发明的方式操作的图形处理或处理器的渲染、片段着色、顶点着色和/或几何着色单元或阶段中的一个或多个。
在一个特别优选实施例中,它是以本发明的方式来操作的图形处理系统的可编程处理单元,优选的是图形处理“着色器”或“着色器单元”,即通过其或对于其而言采用本发明的方式的随选数据生成能够被或被触发。
(如技术人员已知的,越来越常见的是图形处理器包括一个或多个可编程或可配置的处理单元,例如,其能够被编程来当针对显示对图形数据进行处理时对图形数据实施并执行期望的图形处理程序。这些可编程单元常被称为“着色器”,且一般与专用的,“固定功能的”图形处理单元或阶段相区别。图形“着色器”的例子包括片段着色器(其用来对图形片段执行渲染操作),顶点着色器(其用来对图形顶点执行顶点着色操作)以及几何着色器(其用来对几何数据执行几何着色(生成)操作)。
图形“着色器”或“着色单元”,在它们对图形数据执行可编程功能时,一般需要其他数据来执行它们的处理。申请人已经认识到采用本发明的方式“随选”得到此类“其他”数据是特别有利的。
在这些方案中,可编程图形处理单元优选的是片段着色器、顶点着色器和/或几何着色器。
能够采用本发明的方式“随选”生成的数据类似地能够是任何期望和合适的数据,例如,当利用图形处理系统处理数据时需要从存储器读取的任何数据(并且最优选的是当针对显示处理图形数据时将被使用的数据)。如以上讨论的,本发明可以针对所有这样的数据来实施,或可以用于,特别地,例如优选地仅仅所选择的此类数据。
在一个特别优选实施例中,本发明被用于的数据(尝试从存储器读取的数据,等)包括通常逐场景地生成或计算的数据,例如,且优选地,动态图形数据,如上述讨论的那样。
因此,在特别优选实施例中,在存储器中查找的数据,且如果必要的话,生成的数据,在本发明中,包括动态数据。
此类动态图形数据可以例如包括,如上述讨论的,所谓的动态纹理数据(动态纹理贴图和/或纹元(texel))。这种动态纹理是,如本领域技术人员所已知的,被生成用于特定场景且一般用于生成诸如阴影之类的效果以及更复杂的光柱(lightvolume)及照明效果,并且可以例如利用场景的一些或所有已有的数据集来生成。动态纹理数据和贴图可以包括例如普通的贴图、凹凸贴图、阴影贴图、置换贴图等(以及相应的这种纹理数据),如技术人员已知的。
图形处理中可能需要的“动态”数据的其他例子包括用于场景的“动态”几何数据,即几何,例如顶点,其将被用于场景且必须为了场景而生成,例如,根据对待渲染的对象更高层次的描述。
能够应用本发明的另一个动态图形数据的例子是纹理数据,其中,例如,用于场景的初始定义的顶点(顶点数据)需要被修改和/或需要经历顶点着色过程,例如需要被转换(例如旋转,缩放,移位等),和/或“照明(lit)”(例如根据待显示的场景中的光源来调整它们的外观),以生成当渲染场景时实际上将被使用的顶点数据(例如属性)。
这样的产生修改的顶点数据并且必须逐场景地执行的过程能够被视为提供了“动态”顶点数据。
动态图形数据进一步的例子是在基于区块的渲染系统中准备的区块列表(装仓数据结构),因为将基元(和/或其他几何形状)(装仓)分类为区块(装仓数据结构的准备)能够仅仅逐场景地发生,因为基元(和/或几何等)的数量和分布对于每一个连续的场景将会改变。
在这些情形中的每一个中,数据必须逐场景地生成并且通常在场景之间变换。本发明因此能够,如上述讨论的,有用地且有利地应用于此类数据。
因此,在一个特别优选实施例中,在存储器中查找的数据,并且,如果必要的话,生成的数据,包括以下中的一个或多个:动态纹理数据(例如所有或部分动态纹理贴图)、(动态)顶点数据(例如已经经历了顶点着色过程的顶点数据,例如变换和照明(即经修改的,例如,经变换和照明的顶点数据)),区块列表(一个或或多个)(例如几何列表,例如,基元,其将在基于区块的渲染系统中针对场景的区块而被处理),和/或动态几何数据(例如将为场景而生成的(新的)顶点),等。
同样优选是在存储器中查找的数据,如果必要的话,在本发明中生成的数据,包括纹理数据、顶点数据、几何数据和/或区块列表数据(一个或多个区块列表)。
在一个特别优选实施例中,如果必要的话,采用本发明的方式通过随选而生成的数据包括顶点数据和区块列表数据。这种情况特别是以下情形,其中例如,最初以比单独基元和/或区块更低的分辨率和/或等级来对图形对象进行分类,这样当例如图形处理系统需要处理特定区块时,它可能不具有为了能够对其进行处理所需的有关该区块的足够详细的信息。
这可能是以下情形,其中例如最初准备的区块列表没有单独列出单独基元但是列出例如待渲染对象的其他描述符,例如待渲染对象的较粗略或较抽象的描述符,例如表示多个单独基元组的描述符和/或以非基元形式定义对象的描述符等。然后,当区块将被处理时,其他的,例如,较粗略或更抽象的对象描述符将需要转换成“真实的(true)”基元并且新的区块列表(一个或多个)列出用于所准备的区块的“真实的”基元。这还可以需要生成新的顶点数据,以表示“真实的”基元。
这些方案中的“真实的”基元区块列表(一个或多个)和顶点数据可以采用本发明的方式通过随选而生成,并且将允许,例如,其他的,将要在图形处理中保持更久的对象的较粗略描述,如果需要的话。
换句话说,在图形处理系统可以发现其需要比当前可用的更详细的数据的情形中,本发明将允许这种“更详细的”数据在其被需要的时候随选地生成。
如上所述,采用本发明的方式的操作将通常开始于图形过程和/或处理单元识别或确定对来自存储器的所需数据的需要(或者单独地或者用于后续的过程和/或处理单元)并接着确定该数据是否已经在存储器中可用(例如触发对读取该数据的尝试)。因此,本发明优选地进一步包括用于以下操作的装置或步骤:图形过程和/或处理单元识别或确定对所需的或将被需要的数据的需要,并且接着确定该数据是否已经在存储器中可用(例如触发对读取该数据的尝试,或尝试读取该数据)。
对来自存储器的数据的需要的确定能够以任何期望和合适的方式来执行,例如以这种方案的现有方式。例如图形处理器或处理单元本身可能总是需要“读取”数据,和/或可以接收命令或指令来做这些,和/或可以被触发来做这些,通过其所接收的用于处理的数据,等。
例如,用于渲染的图形片段可以与动态纹理贴图的纹理坐标相关联。响应于此,渲染过程(例如渲染单元,例如片段着色器)将尝试从纹理贴图存储装置读取相关的顶点,并且如果那些顶点不可用,则接着触发计算那些顶点的过程。
在另一个情况中,光栅化过程例如可以例如需要(变换或照明)顶点数据以便能够光栅化它接收的基元以用于处理。在这个情况中,当接收到基元时,光栅化器将从存储器(例如顶点数据阵列)查找基元(与基元关联的)顶点的相关顶点数据。如果顶点(顶点数据)在存储器中不可用,则能够接着触发以本发明的方式生成顶点数据的过程。
类似地,如果在基于区块渲染系统发出区块以用于处理,则系统将首先尝试读取区块列表数据来确定哪些基元(和/或其他几何)应该针对区块进行处理。如果适当的区块列表数据在存储器中不可用,则接着能够触发生成该数据的过程。
类似的方案能够被用于其他形式的数据(例如动态的)以及图形处理。
因此,在一个优选实施例中,本发明包括步骤或装置,用于:图形处理或处理单元接收待处理的数据和/或命令,并且响应于此而识别或确定需要从存储器读取待执行的处理所需的其他数据,并接着触发对从存储器读取该数据的尝试(或尝试从存储器读取该数据)。
申请人已经认识到所需的数据在存储器中可用的情况,例如当尝试读取该数据时,例如因为,像将要在下面进一步讨论的,之前已经采用本发明的方式生成并存储了数据。在这种情况中,没有必要以本发明的方式生成该数据。因此,在另外所需的数据(例如动态数据)在存储器中可用的情况下,优选地该图形处理系统以其普通的方式继续进行,例如,从存储器读取数据并接着被相关处理单元使用。
因此,在优选实施例中,本发明包括步骤或方法,用于:如果所需的数据在存储器中可用,则从存储器读取该数据并利用该读取的数据来处理待处理的数据(用于执行需要该数据的过程)。
如上所述,用于确定该数据是否在存储器中可用(例如,并且优选地尝试从存储器读取该数据)的步骤或方法能够包括任何适合的且期望的这种步骤或方法,例如任何已知的和/或适合的用于从存储器加载、获得或获取数据的技术。
如本领域技术人员将会理解的是,确定该数据是否在存储器中可用的步骤(例如,并且优选地尝试读取该数据)能够例如包括从高速缓冲存储器和/或从图形处理系统的主存储器或图形处理系统可用的主存储器等查找该数据,如本领域公知的。(通常,任何期望且合适的存储器方案都能够被用于该数据。本发明是可适用的,然而数据可以被存储。)
如果数据在存储器中(在一个特定的或选择的存储器中,例如“第一”存储器)不可用,则可以采用本发明的方式生成该数据,其中从所述存储器查找该数据(例如尝试从其中读取)(例如,其中数据在第一实例中从高速缓冲存储器中查找数据)或者,例如,仅仅当数据在其可以被存储其中的任何一个存储器中不可用时(从而,例如,在“高速缓冲存储器未中(cachemiss)”的情况下,不是接着立即采用本发明的方式生成该数据(尽管这是有可能的),该系统首先在“主”存储器中查找该数据,并且仅当该数据在主存储器中不可用时才采用本发明的方式生成该数据),才采用本发明的方式生成该数据。同样地,本发明对于所有适合的存储器方案配置都是适用的。
本发明中用于生成另外的数据的步骤或方法同样能够包括任何适合的且希望的这种步骤或方法,例如任何已知的和/或适合的用于计算或创建所讨论的数据的技术。
在采用本发明的方式生成另外的数据的情况下,接着所生成的数据能够以任何期望且合适的方式被用于其被生成用于的过程。
在一个优选的实施例中,一旦已经被生成,所生成的数据就被提供给需要它的过程和/或处理单元和/或使之对于需要它的过程和/或处理单元可用。这优选地通过在存储器中存储所生成的数据来实现,以使得其能够接着被从中读取并被图形过程和/或处理单元以普通方式使用(例如当需要所生成的数据的过程被重启或再次尝试时)。
因此,在一个优选的实施例中,本发明包括装置或步骤,用于:提供所生成的数据给过程和/或处理单元和/或使之对过程和/或处理单元可用,以使得它能够用于和/或被所讨论的过程和/或处理单元使用。最优选的是,本发明包括装置或步骤,用于:在存储器中存储所生成的数据,并且优选地,该图形过程和/或处理单元等,接着读取该存储的数据并将其用于所讨论的图形过程。
在所生成的数据将被存储的情况下,接着数据能够以任何希望的且适合的方式来存储,例如,并且优选地通过对于这种数据的“普通”方法。在一个优选的实施例中,所生成的数据被存储在高速缓冲存储器(一个或多个)中或能被图形过程或系统访问的存储器中等。如果需要,这当然可以或作为替代将数据存储在非-高速缓冲存储器中,例如,主存储器。再次,根据需要,任何适合的和期望的存储器方案都能够被用于所述数据。
用于存储所生成的数据的装置和步骤也可以,并且在一个优选的实施例中还包括如果必要的话和/或根据需要分配存储器以用于存储该数据。在一个优选实施例中,可以是并且优选地是对于任何采用本发明的方式生成的(动态)数据来预先确定存储器的分配。可替换地,在另一个优选实施例中,动态存储分配方案能够被(并且优选地被)使用。例如,存在就所生成的数据而言可用的预定存储器池。这将允许,例如,对动态图形数据而言可用的(并且被动态图形数据使用的)存储器数量上设置固定限制(以及限制动态图形数据的存储器使用)。
在本发明中,一旦采用本发明的方式生成的数据已经用于所讨论的过程,就可以丢弃该数据,并且实际上,在本发明的一个优选实施例中,已经这样做了。
(实际上,如上所述,本发明的优点是当数据在本发明的系统中被“随选”生成时,无需存储该数据以备将来使用并且因而降低对系统的数据存储需求。)
然而,申请人已经认识到在一些希望的情况中可能希望存储那些采用本发明方式中生成的数据以备后面的使用(例如,优选地供其他的,例如,并且优选地,在首次为其而生成数据的过程或实体(例如,片段)之后的图形过程、图形实体(例如,片段)等使用)。
例如,可能的是,给定的动态数据段,如动态纹理贴图或顶点,将有可能被其他后续的片段使用。在这种情况下希望存储所生成的纹理数据(顶点)以使得其可用于后来的片段,而不是例如,当需要该数据的下一个片段被渲染时再次生成该数据。这可能特别地是以下情形,其中如下面将要进一步讨论的,不只是在该数据被生成时生成所讨论的过程或实体(例如,片段)所需的数据。
因此,在一个特别优选实施例中,采用本发明的方式生成的数据不是在其被用于所讨论的过程或图形实体(例如,片段)便立即被丢弃,而是优选地能够被存储起来以备以后使用,例如并且优选地使得它能够或可供其他或后续的或后面的图形过程使用,例如,并且优选地用于其他(后续的)图形实体(例如,片段、基元或区块)的处理。
在这种方案中,可能如上所述,例如并且优选的是,限制所生成的数据的存储方式,例如分配给这种数据的存储器数量,和/或保留这种数据的时间长度。根据需要,例如限定大小的(例如高速缓冲)存储器可以被分配用于存储所生成的数据,其中数据被保持并以先进先出而被替换,和/或根据所分配的数据存储优先级等。
实际上,如上所述,本发明的一个优点是允许以下方面的灵活性,例如,动态的图形数据的存储方式,以及这种被存储的数据的数量。这是因为,除其他外,通过能够随选地生成这种数据,首先意味着,一般来说,被存储的任何这种数据更可能会限制于有效所需的数据(以使得较少的或没有存储器需要被分配或保留给实际上不会被使用的数据)。
在或接近其使用点“随选”生成这种数据的能力,还消除了一直存储这种数据直到得知不再需要它的需求,因为如果该数据被丢弃(或没有首先被存储),则它总是能够在发现再次被需要时被再生。这意味着,例如,如果需要,之前存储的这种数据能够被丢弃从而恢复存储器(或能够决定首先不存储数据)。这在例如嵌入式系统中特别有利,其中存储资源可能很低和/或奇缺。
在这些情况中,可能存在例如存储数据与重复地再生相同数据的可能需要之间的权衡,但是本发明的一个优点是其允许在这些需求之间的灵活权衡和优化。
在需要由图像处理系统(例如渲染过程)采用本发明的发放时生成数据的情况下,于是例如可以仅生成所讨论的过程(例如图形实体(例如,片段))所需的实际数据(例如顶点)(并且实际上,在本发明的一个优选实施例中,就是这样做的)。
然而,申请人已经认识到在一些情况中可能希望生成比仅仅所讨论的过程(例如,用于处理片段)所需的数据更多的数据。
例如,在动态纹理的情况中,如果一个片段需要给定的顶点(一个或或多个),则存在合理的预期是其他片段将需要一些周围的顶点(因为邻近的片段一般使用纹理贴图的邻近区域(例如顶点))。在这种情况中将更高效地生成系统可能希望在相同时间使用的所有顶点,而不是为每个片段单独地生成较小的顶点集合。
因此,在一个特别优选实施例中,本发明的数据生成过程能够,并且优选地,生成比所讨论的过程(例如,处理片段)所需的数据更多的数据,例如并且优选地,与所讨论的过程所需的数据在场景或帧或图像等中在地理上靠近或邻近,和/或在场景(或图像或帧等)的相同区域的数据。
例如,并且优选地,特别是在基于区块的系统中,该系统可以计算待显示的场景的页面或区块所需的所有(动态)数据-当用于该页面或区块的数据被首次生成时。同样也可以例如生成与待计算的数据相关的整个数据集合(例如动态纹理贴图)-当用于该数据集合的数据被首次生成时。
因此,在一个特别优选实施例中,当采用本发明的方式触发数据生成时(即对于给定数据生成过程)被生成(并且,优选地,被存储)的数据可以优选地包括(且能够优选地选自)这种数据的不同“大小”范围或数量,例如,并且优选地,与针对其而生成数据的区域的范围有关。
最优选的是整个数据集合(例如动态纹理贴图),或全部数据集合的(选定)子集(如给定页面或区块或区域所需的数据,等),和/或特别地,单独的数据值(例如一个或多个顶点)(例如,并且优选地,仅仅所讨论的过程所需的数据值(一个或多个))能够被选择性地生成(且存储)。
实际上,本发明一个重要的优点是其有助于生成供任何给定数据生成过程使用的或多或少的数据的能力,接着有助于,例如,在例如数据生成需求、性能和开销,以及用于存储数据所需的存储器占用之间具有灵活的权衡和优化。
能够根据需要做出将在任何给定时间生成的数据量的选择。在一个优选的实施例中,这种选择基于计算数据的处理开销,或用于存储数据的存储需求和/或可用性,以及优选地二者皆有。例如,如果数据生成开销很小(例如计算很快且简单),和/或数据储存(存储器)有限,则可以优选地每当数据被需要时生成数据。另一方面,如果数据生成开销很大,和/或数据存储很容易获得,则可以优选地在任何给定的数据生成过程中生成另外的数据。
采用本发明的方式所生成的数据能以任何期望和合适的方式生成。优选地通过执行通常的过程来生成,例如,计算,所述通常的过程将被需要并被执行以生成该数据。
例如,在动态纹理的情形中,待使用的实际动态纹理贴图数据(顶点)可能是并且优选地通过“渲染”动态纹理对象来生成,例如基元,已经在之前出于这种目的对其进行了定义,如本领域已知的。
类似地,采用本发明的方式的“随选”生成区块列表可以是且优选地通过将基元装入区块、使用例如确切的装仓或边界框装仓技术而生成,如本领域已知的。
对于(动态)顶点数据(例如顶点着色)的生成,顶点着色过程(例如变换及照明过程)可以以普通的方式来执行。
(这里应该注意的是本发明的目的是如果数据在存储器中不可用则实际上生成或计算它,并且这应该和其他方案形成对照,在其他方案中例如数据已经存在但是需要从另一源读取(例如外部存储器)或者,例如,存在于存储器中,但是需要转换成其他数据表示以供使用。)
当采用本发明的方式生成数据时可以在该时间执行“完整的”数据生成过程(即从一开始,对于该过程使用“原始”数据)。
然而,申请人已经认识到可能有以下情形;一些数据生成过程和/或该过程所需的数据已经被实现和/或当采用本发明的方式生成数据的时候可用,例如因为已经进行了计算和/或数据结构已经在图形处理早期准备好,例如先于光栅化或作为光栅化基元到它们的片段位置的一部分。
例如,在动态纹理的情形中,可能在片段渲染阶段,用于动态纹理的纹理场景信息已经被准备好,在这种情况下仅仅“渲染”纹理来生成动态纹理贴图(顶点)将需要在本发明的数据“生成”阶段被实施。另一方面,如果仅存在用于动态纹理的“原始”纹理对象,则该数据生成步骤必须首先生成纹理场景信息,且接着渲染该场景来生成动态纹理贴图(顶点)(等等)。
因此,该本发明的数据生成过程优选地考虑并且利用,且使用,已经存在并且可用于图形过程的无论什么数据和数据结构(而不是重复任何这种数据的生成,等),只要是可能的或合理的。(实际上,如本领域技术人员将会理解的那样,该数据生成过程是采用本发明的方式来执行的,并且一般会依赖于什么数据和数据结构等存在且已经可用于图形过程。)
因此,在一个优选的实施例中,仅仅到最后,仍然将被执行,数据生成过程在数据采用本发明的方式生成数据时被执行,而不是重复计算等,就其而言所产生的数据已经可用。
在特别的优选实施例中,本发明的数据生成过程利用了任何分类,例如,并且优选地,根据场景状态或位置的分类,例如,将使用的数据(例如几何)的区块化(tiling),例如,并且优选地,识别其将需要使用哪些数据(例如几何)来生成所需的数据(而不是,例如,仅利用所有可用的数据)。例如,在动态纹理情形中,如果几何(例如基元)被用来生成已经被区块化的动态纹理,则数据生成过程可以且优选地识别与其当前数据需求相关的一个或多个区块,并且接着仅将用于该区块(一个或多个)的数据用于其数据生成过程。
因此,在一个特别的优选实施例中,数据生成过程包括步骤或装置,用于:识别可能用于该过程的所有可用的数据和/或信息的子集并且接着在其数据生成过程期间仅使用该数据子集。这具有以下优点:数据生成过程因而能够被简化和/或在它的范围上减小(因此它能够有助于确保仅仅可能影响数据生成过程的数据将被用于该过程)。
如上所述,在一个优选实施例中,要使用的数据子集根据将被用于数据生成的数据分类(例如并且优选地,几何和/或图形实体)来识别,例如,并且优选地根据位置或状态,且最优选地根据数据的区块化或通过对将被用于数据生成过程的数据(例如几何)进行区块化。
将被使用的数据的这种“区块化”以及使用这种数据分类可以特别地有利于,例如,生成与待渲染的场景中特定区域或位置相关的数据(即具有在场景中的相关联的状态或位置),例如可能的情况是,例如,动态纹理贴图中的顶点。在这种情况中,通过对将在地理上被使用的数据进行分类(通过它在场景中的(例如,且优选地,x,y)位置),可以很容易地避免冗余的数据处理。
在在这些方案中,可能的情形是,将被数据生成过程使用的数据(例如几何)的某种分类(例如区块化)已经被执行(例如在光栅化阶段)。在这种情况中,本发明的数据生成过程可以并且优选地酌情使用并利用这种已经执行的对数据的分类(例如区块化)等。
同样或作为替代可以在采用本发明的方式所进行的数据生成(阶段)时执行对将被使用的数据的(例如几何)的分类等,例如,在一个位置或逐区块地。例如,数据生成过程被安排或配置为执行对将被使用的数据(例如几何)的初始区块化。这可以例如在以下情形中是希望的,其中数据在之前没有被区块化或分类(例如在整个图形过程中的较早阶段)。
因此,在一个优选实施例中,本发明的“随选”的数据生成过程能够且优选地包括用于步骤或装置,用于:优选地根据与数据(例如几何)相关联的和/或已知数据(例如几何)所影响的场景中的地点或位置,对将在数据生成过程中被使用的数据(且优选地几何)进行分类,优选地进行区块化。
最优选地,该系统或过程能够选择性地分类(例如区块化)使用中的数据,和/或能够选择性地被配置为执行这些操作。与当使用“分类的”数据来生成另外所需要的数据(将被生成的)(例如,用于渲染片段)时可以被节省的任何处理相比,这种选择可以是,且优选的是,基于,例如,在数据生成阶段执行分类(例如区块化)所需的附加处理,。
在数据被分类(例如,区块化)的情况下,如本领域技术人员将会理解的,该分类(例如“区块化”)过程能够根据需要来执行,例如在使用任何期望的区块尺寸和形状进行区块化的情形,以及根据需要提取装仓或边界框装仓(或任何其他的分类技术)等。
申请人已经进一步认识到在一些情况中优选的是能够在处理待处理的数据之前(例如,并且优选地,在处理场景以供显示之前)执行所需的数据生成过程,其中其他过程采用本发明的方式而“随选”执行。例如,一些数据生成过程可能相对长,并且因而不会那么希望以“随选”方式执行这些过程,因为这样做可以,例如,向例如实际的渲染过程引入不希望的延迟。
因此,在一个特别优选实施例中,本发明的系统和/或方法可以被配置成使得被需要来生成所需的数据的全部“整个”数据生成过程能够可选地被拆分或分派,其间这些过程被提前执行,并且其在采用本发明的方式需要数据时被执行。
因此,在一个优选实施例中,本发明包括装置或步骤,用于:优选地并且选择性地,执行,并且能够优选地选择性地配置来执行,生成将在图形处理的较早阶段使用的数据(即提前)所需的部分(而不是全部的)数据生成过程。
(这没有破坏本发明的整体概念,因为仍然是数据生成被“随选”执行,仅仅是部分(不是全部)数据生成过程可以“提前”执行。实际上,本发明的优点是提供了执行这些操作的灵活性。)
在将采用本发明方式随选生成数据时所需的数据生成过程能够在图形处理系统的任何期望和合适的处理单元(一个或多个)中执行。因此,例如,为此目的可以在图形处理器中提供一个或多个附加的处理单元。根据需要,这种单元可以例如包括专用的,固定功能的处理单元,或可以是可编程单元(着色器)。将被提供的实际单元,如本领域技术人员想到的,依赖于待生成的数据的性质。
在一个特别优选实施例中,图形处理器(即已经为了其他目的而出现的处理单元)的现有处理单元(例如,并且优选地,可编程的这种单元(着色器))被用于采用本发明的方式来生成数据。因此,例如,在动态纹理的情形中,现有的渲染单元(例如,并且优选地,片段着色器)优选地用于进行动态纹理的“随选”生成。
在图形处理器的现有单元被用于采用本发明的方式进行数据生成的情况下,于是在一个优选的实施例中,可能的话,当前空闲的处理单元被用于该目的。
然而,申请人已经认识到在许多情形中没有适合的空闲处理单元可用来执行数据生成(在其被需要时),并且因此在该情形中已经被使用的处理单元需要被用于采用本发明的方式进行数据生成。
因此,在一个特别优选实施例中,本发明包括步骤或装置,用于:分配图形处理器的处理单元来采用本发明的方式生成数据。
这样的分配处理单元以采用本发明的方式生成数据可以根据需要来执行。在一个优选的实施例中,通过转换图形处理系统的“上下文(context)”到所需的数据生成“上下文”而执行,例如,渲染流水线,(即改变驱动图形处理的状态)。
为此目的的(渲染)“状态”改变可以通过将(例如,整个渲染流水线)所有处理单元的状态改变为不同状态(如本领域已知的)来执行。然而,优选地是仅仅选定的(所需的)处理单元的状态被改变(例如,并且优选地,通过利用申请人在较早的专利申请GB-A-2420261中所描述的技术)。类似地,状态改变(上下文切换)优选地在可能时逐基元地执行。
在这种状态改变被执行以使得数据生成能够被执行的情况下,优选地存储先前的状态,以使得处理单元(例如,渲染流水线)能够在数据生成被完成之后回到其先前的状态。
如本领域技术人员所理解的,触发了对采用本发明的方式来随选地生成数据的需求和/或针对其生成数据的(例如预先通过预取来触发所述生成)(图形)过程不能被完成直到该数据已经被形成之时。类似地,如果图形处理器的处理单元被用于以本发明的方式生成另外的数据,则这会中断那些处理单元会以别的方式执行的过程。因此,通常,以本发明的方式“随选”生成数据的需求能够且一般会中断其他图形处理。为此本发明的系统和方法优选地包括用于解决该问题的装置或步骤。
因此,在一个优选实施例中,本发明包括装置或步骤,用于:当以本发明的方式生成所需数据的时候暂停(suspend)和/或停止一个或多个图形过程和/或一个或多个图形实体(例如,并且优选地是基元和/或片段)。最优选的是至少将需要待生成数据的过程等被暂停或停止,不过如下面将会讨论的那样,其他过程等,同样也可以被暂停或停止。
例如,当所需的数据被生成且可用时可以会拖延(stall)或暂停所有图形处理。然而,这会导致图形处理中相对地长时间的延迟并且不总是所希望的。
因此,在一个特别优选实施例中,当数据生成发生时仅仅是特定的(例如并且优选地,选定的)图形过程(一个或多个)等被暂停或停止,并且最优选地,图形过程或系统能够继续执行其他图形处理(例如,并且优选地处理其他图形实体,例如,片段),例如,并且优选地,所述其他图形处理不受本发明的数据生成过程的影响。这于是将避免当数据生成过程发生时对于例如暂停整个渲染流水线的需要。同样,这能够优选地通过对图形过程和/或单独图形处理单元的状态的适当的控制和切换来实现。在这种情况下,当所需的数据被生成且对于图形处理系统而言可用时,部分但不是所有的图形处理将被拖延或中断。
在这些方案中当数据被生成时可以仅仅暂停(拖延)所讨论的特定的图形过程(例如特殊图形实体的处理,例如,片段)(即那些“需要”将被生成的数据的过程)。然而,在一个优选实施例中,系统或过程尝试识别其他图形过程和/或实体,例如基元、片段等(其还可能受到所讨论的数据生成过程的影响),以及,优选地,还暂停或停止拖延那些过程和/或那些实体的处理。
例如,在动态纹理的情况中,可能存在已知或者能够被确定将被要生成的顶点所影响的其他片段。类似地,可能存在将被拖延的基元所影响的后续基元(例如,因为它们将与拖延的基元混合)。在这些情况下,优选地还延迟其他片段的或基元的处理等,直到数据生成过程被完成。
因此,在一个优选实施例中,不仅仅是需要采用本发明方式生成数据的特定图形过程(和/或处理单元)(例如并且优选地,特定图形实体例如,片段或基元的处理)在数据被生成的同时被暂停。
这类其他图形过程和/或实体等(其处理可能需要或可能希望被拖延或停止)的识别,作为本发明的数据生成过程的结果,能够根据需要来执行。在一个优选的实施例中,状态或位置信息(例如,区块位置)和/或状态信息(例如,渲染状态信息)被用于此目的。
在以这种方式中断图形处理(例如片段渲染)的情况下,则优选的是在已经以本发明的方式完成了数据生成之后完成被中断的处理。
因此,在一个特别优选实施例中,本发明包括步骤或装置,用于:执行或完成因需要采用本发明的方式生成数据而被中断的任何处理(在所需数据已经能够生成并且使之可供图形过程使用(提供给图形过程)之后,等)。
能够根据需要来实施已经因需要采用本发明的方式生成数据而被中断或拖延的任何处理的此类执行。例如,已经被中断的图形过程(和/或图形实体,例如,片段或基元的处理)可以完全被取消,并且然后一旦数据生成被完成就再次被执行(从一开始)。因此,例如,在渲染片段的情况中,任何受到数据生成过程影响的片段可以被取消并然后一旦数据生成过程已经完成就被再发出以用于渲染。
在一个优选实施例中,在过程被中断的点,或者在被中断的点与从最开始启动它们的点之间的某一中间点重启被中断的过程。
换句话说,不是完全地再次启动处理,该“中断的”处理,等,优选地在它被中断(暂停)的点被重启,或者退回到某一中间阶段而重启。例如,在区块化系统的情形中,处理可以是且优选地是退回到所讨论的区块处理的起始。
在每个情形中,识别所讨论的过程,以及如何执行那些过程所必需的任何数据(例如,关于如何再次发出取消的片段)一旦所需的另外数据已经被生成,就优选地以适合的方式存储从而允许中断的过程稍后被执行。
因此,在一个优选实施例中,其中一个或多个过程等,被本发明的数据生成过程所中断,任何中断的过程的标识等,和任何相关信息(例如状态信息以及过程等被退回的点)一起被存储,以使得中断的过程等,以后能够在期望的点重新开始。
例如,在渲染片段的情形中,任何受到影响的片段的当前状态可以被存储(与其渲染状态一起),且因此一旦该数据生成过程已经完成就利用该数据重新开始该处理。
这种数据(例如,“片段”)等的存储,优选地在渲染过程之外执行(例如流水线),因为不可能,例如,简单地通过处理单元回送片段以便“拖延”它们,因为该处理单元可能是数据生成过程所需的。
如上所述,本发明的优点是避免了不必要地生成实际上不会处理场景以供显示中使用的(例如动态)图形数据。这个优势会增加-如果整个图形过程包括且使用了从图形处理中进行早期的数据剔除(culling)和移除的技术的话(因为在这个情形中,不会再有对手被剔除的数据的任何“随选”的数据生成)。
因此,在一个特别优选实施例中,本发明进一步包括了步骤或装置,用于:在采用本发明的方式进行数据生成将被执行的阶段之前尝试从(图形)处理中移除或剔除(图形)数据。这种“早期的”数据剔除(例如片段,基元等)能够根据需要来执行,例如且优选地通过利用隐藏的表面移除技术,例如早期深度(Z)测试,针对几何的遮挡剔除方案等。在一个优选实施例中,采用了一种(早期的)可见度测试。
在一个优选的此类实施例中,进行测试以尝试识别任何不会出现在最终场景中的几何,并且如果这种几何被找到,则该几何(且优选地是任何仅与它相关联的数据)被丢弃。这样的测试可以,例如,并且在一个优选实施例中,包括一种测试来查看是否该几何完全落在待显示的可见帧之外。
在一个优选实施例中,同样进行测试或作为替代进行测试以尝试识别实际中就针对显示而渲染场景而言不需要的任何动态数据(例如动态纹理),并且如果这种数据被找到,则该数据被优选地丢弃。在基于区块的系统中,这优选地通过识别动态数据集合来执行(例如,并且优选地是动态纹理),所述动态数据根本不会捆绑于(tieto)任何装仓的基元(即出现在用于待渲染的场景的区块列表中的基元)(因为如果动态数据集合没有捆绑于装仓的基元,则能够假定它不会捆绑于任何将出现在视锥(viewfrustrum)中的基元)。
因此,在一个特别优选实施例中,本发明包括装置或步骤,用于:搜索和/或尝试检测或确定在处理场景以供显示时将不会被使用的动态数据集合,以及优选地,从针对场景的进一步处理中丢弃那些被发现将不会被用于场景的任何动态数据集合。这种搜索优选地在针对显示而对场景进行的任何处理之前执行,并且在一个区块化系统中,优选地在场景几何(例如基元)已经被分类(装仓)到区块之后,且优选地通过尝试识别根本没有捆绑于任何装仓的几何(即被包括在区块列表中的几何)的动态数据集合。
可以相信这种方案本身是新的并且有优势的,因为它还可以例如被用来移除方案中的动态数据集合(或避免生成动态数据集合),其中动态数据也是提前被生成的。
因此,根据本发明的第三个方面,提供一种处理图形数据的方法,包括:
在渲染场景以供显示之前,尝试确定就渲染场景而言实际上将不需要的动态图形数据。
根据本发明的第四个方面,提供一种用于处理图形数据的设备,包括:
用于在渲染场景以供显示之前尝试确定就渲染场景而言实际上将不需要的动态图形数据的装置。
如本领域技术人员将会理解的,本发明的这些方面能够且优选地包括这里描述的本发明的任何一个或多个所有的优选的和可选的特征。因此,例如,识别动态数据是否将被需要优选地由基于区块系统(在基于区块系统中)来执行,尝试识别任何根据没有捆绑于用于场景的装仓的几何(例如,并且优选地是基元)的动态数据。类似地,如果识别出不需要的动态数据,则该动态数据优选地从针对场景的进一步处理中忽略。
在本发明的这些方面和实施例中,被搜索的动态数据能够包括任何适合的和期望的此类数据。在一个优选的实施例中,它包括动态纹理数据(纹理数据),例如,并且优选地是,动态纹理贴图。
可以允许本发明针对所有图形过程进行操作。可替换地,例如,可以指示本发明的过程在何处有可能被需要,且仅在指示有潜在需要之处激活采用本发明的方式的可能操作。例如,并且优选地,待处理的图形实体,如片段等,可以被标记(例如加标签)为需要动态数据(例如动态纹理)(或不需要)且本发明仅仅对于那些被指示为需要动态数据的实体(例如片段)而被调用。
因此,在一个优选实施例中,提供了关于是否可能需要采用本发明的方式的操作的指示,并且采用本发明的方式的操作仅响应于这种指示而被激活。
本发明的图形处理系统或用于本发明的图形处理系统能够采用任何适合的形式。如本领域技术人员将会理解的,其能够且应该包括,根据本发明操作所必需的特定组件或特征,允许其处理图形数据以供显示所必需的特征和组件。因此优选地包括,例如,以下中的一个或多个:一个或多个(可编程的)顶点着色器单元、一个或多个(可编程的)片段着色器单元、光栅化单元(一个或多个)、渲染单元(一个或多个)(包括,例如,纹理映射、雾化和/或混合单元等)等,如本领域已知的。
图形处理系统能够根据需要来实施。在一个优选的实施例中其被实施为单个(硅)平台。
在优选实施例中本发明被应用到或实施为硬件图形渲染流水线。
本发明的各种功能元件等能够根据需要来实施,例如,并且优选地,通过适合的功能单元、处理逻辑、电路、处理器、微处理器装置等。
本发明能够被用于任何期望的图形处理系统。特别地,而不是专门地,适合于3D图形处理系统,并且如本领域技术人员将会理解的,发现其特别适用于基于区块的渲染系统,并且优选地在基于区块的渲染系统中实施。
本发明相应地也扩展到图形处理器和/或图形处理系统或平台,并且优选地是3D图形处理器和/或图形处理系统或平台,其包括本发明的系统或设备,和/或能够根据本发明的一个或多个方法进行操作。以执行上述特定功能所必要的硬件为条件,此类图形处理器能够另外包括该图形处理器所包括的任何一个或多个或全部通用功能单元等。
如根据上文将会理解的,本发明一般提供这样的方案,由此,如果图形过程需要数据,则图形处理系统将首先从存储器中查找该数据,并接着,如果该数据在存储器中不可用,则生成该数据以供使用。
因此,根据本发明的另一方面,提供一种用于在图形处理系统中处理场景的图形数据以供显示的方法,所述方法包括:
当针对显示而处理场景数据需要另外的数据时,尝试从存储器读取该另外的数据;且
如果另外的数据在存储器中不可用,则生成该所需的另外的数据并接着利用所生成的另外的数据来处理场景数据以用于显示。
根据本发明的另一方面,提供一种用于在图形处理系统处理场景的图形数据以供显示的系统,所述系统包括:
用于当针对显示而处理场景数据需要另外的数据时,尝试从存储器读取该另外的数据的装置;以及
用于如果另外的数据在存储器中不可用,则生成该所需的另外的数据并接着利用所生成的另外的数据来处理场景数据以用于显示的装置。
如本领域技术人员将会理解的,视情况而定,本发明的这些方面能够并且优选地包括这里描述的所有这些本发明的任何一个或多个优选的和可选的特征。因此,例如所需的另外数据优选地是纹理数据、顶点数据、几何数据和/或区块列表数据。
类似地,本发明提供这样的方法和系统,由此处理场景的图形数据以供显示所需的数据生成能够并且被延迟直到数据需要被用于执行图形处理时为止。
因此,根据本发明的又一方面,提供一种用于在图形处理系统中处理图形数据以供显示的方法,所述方法包括:
延迟在处理场景以供显示时将被使用的数据的生成直到用于处理场景以供显示的过程需要该数据之时。
根据本发明的另一方面,提供一种用于处理图形的系统,其中在处理场景以供显示时将被使用的数据的生成被延迟直到用于处理场景以供显示的过程需要该数据之时。
如本领域技术人员将会理解的,视情况而定,本发明的这些方面能够并且优选地包括这里描述的所有这些本发明的任何一个或多个优选的和可选的特征。因此,例如将被生成的数据优选地为纹理数据、顶点数据、几何数据和/或区块列表数据,和/或优选地被用于和/或当处理场景的其他图形数据以供显示时使用。
类似地,本发明提供这样的方法和系统,由此用于处理场景的图像数据以供显示所需的数据的生成能够当数据被需要用于执行图形处理时被随选地执行。
因此,根据本发明的又一方面,提供一种用于在图形处理系统中处理图形数据以供显示的方法,所述方法包括:
在用于处理场景以供显示的过程需要数据之时随选地生成在处理场景以供显示时将被使用的数据。
根据本发明的另一方面,提供一种图形处理系统,其中在处理场景以供显示时将被使用的数据能够在用于处理场景以供显示的过程需要数据之时被随选地生成。
如本领域技术人员将会理解的,视情况而定,本发明的这些方面能够且优选地包括这里描述的所有这些本发明的任何一个或多个优选的和可选的特征。因此,例如将被生成的数据优选地为纹理数据、顶点数据、几何数据和/或区块列表数据,和/或优选地用于和/或当处理场景的其他图形数据以供显示时使用。
根据上文将会理解的是,本发明特别优选的方案和关键特征是用于渲染场景以供显示所需的动态图形数据中至少一些不会在场景渲染之前生成,而是作为替代在场景被渲染时被随选地生成。
因此,根据本发明的另一方面,提供一种在图形处理系统中处理图形数据以供显示的方法,其中针对显示而对图形数据进行的处理可能需要使用动态图形数据,所述方法包括:
不在处理场景以供显示之前生成在处理场景以供显示时将被使用的动态图形数据;并且
当确定动态图形数据将被需要以用于处理场景以供显示时,随选地生成在处理场景以供显示时将被使用的动态图形数据。
根据本发明的另一方面,提供一种图形处理系统,其中针对显示而对图形数据进行的处理可能需要使用动态图形数据,所述系统包括:
装置,用于当确定动态图形数据将被需要以用于处理场景以供显示时,随选地生成在处理场景以供显示时将被使用的动态图形数据,而不是在处理场景以供显示之前生成在处理场景以供显示时将被使用的动态图形数据。
如本领域技术人员将会理解的,视情况而定,本发明的这些方面能够且优选地包括这里描述的所有这些本发明的任何一个或多个优选的和可选的特征。因此,该动态图形数据优选地为纹理数据、顶点数据、几何数据和/或区块列表数据。
如上所述,本发明的一种特别优选方案包含在必要时随选生成动态图形数据。
因此,根据本发明的另一方面,提供一种在图形处理系统中处理数据的方法,所述方法包括:
图形处理系统:
接收用于处理的数据;
识别用于处理接收到的数据所需的动态图形数据;
确定所需的该动态图形数据是否已经在存储器中可用;以及
如果动态图形数据在存储器中不可用,则生成所需的动态图形数据并接着使用所生成的数据来处理待处理的数据。
根据本发明的另一方面,提供一种图形处理系统,该系统包括:
用于接收用于处理的数据的装置;
用于识别用于处理接收到的数据所需的动态图形数据的装置;
用于确定所需的动态图形数据是否已经在存储器中可用;以及
用于如果动态图形数据在存储器中不可用,则生成所需的动态图形数据并接着使用所生成的数据来处理待处理的数据的装置。
如本领域技术人员将会理解的,视情况而定,本发明的这些方面能够且优选地包括这里描述的所有这些本发明的任何一个或多个优选的和可选的特征。因此,例如要生成的数据优选地为纹理数据、顶点数据、几何数据和/或区块列表数据。
如本领域技术人员将会理解的,视情况而定,本发明此处描述的所有这些方面和实施例能够且优选地包括这里描述的所有这些本发明的任何一个或多个优选的和可选的特征。
根据本发明的方法可以至少部分使用软件(例如计算机程序)来实施。因此当从本发明的更多方面审视时将会看到,本发明提供计算机软件,当其安装在数据处理装置上时特别适合于执行这里描述的一种或多种方法;一种计算机程序单元,包括计算机软件代码部分,所述计算机软件代码部分当其在数据处理装置上运行时执行这里描述的一种或多种方法;以及计算机程序,包括代码装置,所述代码装置适于当该方法在数据处理系统上运行时执行这里描述的一种或多种方法的所有步骤。
本发明还可以扩展到计算机软件载体和/或计算机程序产品或介质,包括这样的软件,所述软件当被用于操作包括数据处理装置的图形处理系统和/或微处理器系统时,与所述数据处理装置协作使得所述系统执行本发明的一种或多种方法的步骤。这种计算机软件载体可以是物理存储介质,如ROM芯片、CDROM或磁盘,或可以是信号,如通过导线的电子信号、光信号或无线电信号,如到卫星等的无线电信号。
此外将会理解的是,并非本发明的方法的所有步骤都需要由计算机软件来执行,并且因此,从更宽的方面,本发明提供了计算机软件及安装在计算机软件载体上的软件,用于执行此处陈述的方法的至少一个步骤。
本发明可以相应地适合于实现为计算机软件程序产品以供计算机系统使用。这样的实施方式可以包括一系列计算机可读指令,或者安装在有形介质,如计算机可读介质例如磁盘、CD-ROM、ROM或硬盘,或能够通过调制解调器或其他接口装置传送到计算机系统,通过或者有形介质,包括但不限于光或模拟通信线路,或使用无线技术的无形介质,包括但不限于微波、红外线,或其他传输技术。计算机可读指令的序列实现此处先前描述的所有或部分功能。
本领域技术人员将会理解,此类计算机可读指令能够以多种编程语言被写入以供多个计算机体系结构或操作系统使用。此外,可以通过使用任何存储技术来存储这样的指令,现在或将来,包括但不限于半导体、磁、或光,或者使用任何通信技术来传送,现在或将来,包括但不限于光、红外线或微波。可以预期,这样的计算机程序产品可以被分布为可拆装介质,其具有随附的利用计算机系统预加载例如在系统ROM或固定磁盘上,或通过网络(例如因特网和万维网)从服务器或电子公告板发布的打印或电子文件,例如,压缩软件。
附图说明
本发明的多个优选实施例将参考附图仅通过示例的方式来描述,其中:
图1示意性地示出了可以根据本发明来操作的图形处理系统;
图2示意性地示出了在本发明实施例中图1的图形处理系统的操作;
图3示意性地示出了用于生成动态纹理数据的现有技术;
图4示意性地示出了本发明的技术能够被有用地应用于的场景;以及
图5示意性地示出了经修改的以供当处理图4的场景时使用的对象描述符。
具体实施方式
图1示意性地示出了图形处理系统1的方案,其能够根据本发明来操作。
本发明的本实施例将针对基于区块的渲染系统以及以本发明的方式生成动态纹理来描述。然而,如上所述,当然也可以使用其他方案。
如图1所示,图形处理系统1包括状态管理系统2、光栅化阶段3以及采用渲染流水线的形式的渲染阶段4。
状态管理系统2存储并控制了图形处理单元的状态以及状态数据以控制图形处理过程,如本领域公知的。
光栅化器3把待显示的基元作为输入,并且光栅化那些基元到待渲染的片段位置(片段)以被渲染,如本领域公知的。
渲染流水线4从光栅化器3取得片段并渲染那些片段以用于显示。如本领域公知的,该渲染流水线4将包括多个不同的处理单元,例如片段着色器、混合器、纹理映射器(mapper)等。
来自渲染流水线4的输出(被渲染的片段)被输出到区块缓冲器5(因为本实施例是基于区块的系统)。该区块缓冲器的输出接着最后被输出到帧缓冲器6以用于显示。
图1还示意性地示出了为了采用本发明的方式进行操作而被提供的图形处理系统1的特定特征。
特别地,如图1所示,渲染流水线4的纹理映射阶段7被配置为能够访问纹理列表缓冲器8来确定对其所接收的用于渲染的片段进行纹理化所需的纹理。将在本实施例中使用的纹理能够是,如本领域公知的,既包括“静态”纹理也包括“动态”纹理。纹理列表缓冲器8将指示所需的纹理,并接着,如本领域公知的,该纹理映射系统7将尝试从存储器读取所需的相关纹理和/或纹元并使用该读取的数据来处理所讨论的片段。
如图1中所示,本实施例中,通过在动态纹理存储器9中存储那些纹理来处理动态纹理。因此,当片段需要动态纹理时,纹理列表缓冲器8将指示渲染流水线4中的纹理单元7:来自动态纹理存储器9的纹理将被读取并且用于处理该片段。
图1同样也示出了片段高速缓冲器10。该高速缓冲存储器被使用,如下面将进一步讨论的,以在采用本发明的方式生成动态纹理时存储与其处理需要被中断(拖延)的片段相关的数据。
如图1所示,区块缓冲器5还能够被配置为输出数据到动态纹理存储器9。如下面将进一步讨论的,当采用本发明的方式生成动态纹理时使用该方案,从而允许所生成的纹理被存储在动态纹理存储器9中以便它们然后能够被从其中获取以供在渲染片段时使用。
将会理解的是图1所示的图形处理器中的每个阶段、元件和单元等,可以根据需要来实施并相应地包括,例如,适当的电路,和/或处理逻辑等,用于执行必要的操作和功能。
现在将参考图1来描述根据本发明的实施例的图1的图形处理系统的操作。
图2示出了本实施例的过程中的步骤,一旦用于区块的片段已经由光栅化器3生成(发出),该过程就会开始(步骤20)。
过程中的第一阶段是对每个片段执行初始“可见性”测试(以查看任何片段是否能够从进一步处理中消除)(步骤21)。在本实施例中该测试是早期的深度或Z-测试。然而,其他“可见性”测试可以被替换使用。例如,可能是或作为替换进行测试以判断片段实际上是否落入到可见帧内,和/或为了使用其他隐藏的表面移除技术。
如果通过所使用的可见性测试发现片段不可见,那么它就不会被传递到渲染流水线(即从进一步处理中将其丢弃)(步骤22)。这意味着片段将不会,除此之外的,触发任何动态纹理的生成,并且进一步地降低多余生成动态纹理的可能性。(实际上,一般优选地尝试在早期阶段从渲染过程中移除尽可能多的数据等,因为这将通常降低将被执行的潜在多余的动态纹理生成的量。)
如果发现该片段“可见,就将其传递到渲染流水线4以用于渲染。
然后假设图2中该片段到达纹理化阶段7,在该点将会计算将被用于片段的纹元地址(步骤23)。这在本实施例中通过检查纹理列表缓冲器8来实现。
在本实施例中,假设纹理包括指示了是静态或动态纹理的附加标记。这在步骤24被检查。(然而,还可以在不需要标记纹理是否是静态还是动态的情况下进行操作。该系统仍然将会简单地仅寻求以从存储器获取必要的纹元,并且如果没有在存储器中找到那些纹元,则接着采用本发明的方式生成它们。)
如果发现纹理不是动态纹理,那么该系统能够继续读取纹元(一个或多个)并以普通方式完成片段渲染(因为在这个情形中能够假设纹元已经存在于存储器中且可供使用)(步骤30-33)。
如果确定所需的纹元与动态纹理相关,则系统首先尝试从动态纹理存储器9读取那些纹元(步骤25)。
如果纹元存在于动态纹理被存储器9中,则纹元能够被直接获取并且动态纹理以普通的方式应用于所讨论的片段(即将是静态纹理的情形)(步骤31)。
该片段接着能够像平常一样被渲染且输出到区块缓冲器5(步骤32和33)。
换句话说,如果发现将动态纹理提供给所讨论的片段所需的纹元在动态纹理存储器9中不可用(即,实际上,动态纹理“未中(miss)”发生),那么必须生成相关的纹元。
这个过程中的第一阶段是暂停需要所讨论的动态纹元的片段的渲染(因为这个处理无法被完成直到动态纹元已经被生成)(步骤28)。这是通过以下方式来实现的:存储相关的片段数据、渲染与片段高速缓冲存储器10中的片段相关的状态数据等,以使得该当前数据能够被获取并且一旦该新的动态顶点(一个或多个)(动态纹理数据)已经被生成,该片段处理就在其被暂停的点重新开始。
(当动态纹理数据被生成时,该片段数据被存储在渲染流水线4外部的片段高速缓冲存储器10中,因为,如下面将进一步讨论的,该渲染流水线4将被用来生成动态纹理数据,且优选地不仅仅是在渲染流水线4中回送该暂停的片段(在“普通”纹理高速缓冲存储器未中的情况中可能以其他方式操作)。)
在本实施例中,同样暂停已经触发该动态纹理生成过程的片段,系统还操作来尝试识别其他图形实体和过程,例如其他也可能受到生成动态纹理(纹元)需求的影响的片段和基元,并且暂停或移除那些图形实体的处理等(通过再次将相关信息存储在片段高速缓冲存储器10中)直到待生成的动态纹理已经就绪。
例如,系统尝试识别任何需要待生成动态纹理的其他片段并且暂停那些片段直到动态纹理已经被生成。这是基于,例如,片段的位置以及其相关联的渲染状态。
类似地,系统同样优选地操作来识别任何后续的可能受到暂停的片段影响的基元(例如因为它们将与被暂停的片段混合)并再次暂停或停止那些基元的渲染直到待生成的动态纹理就绪。再次,这能够通过使用例如基元的位置以及状态信息来实现。例如,任何落入到片段范围内并已经触发对生成动态纹理数据的需求的基元可以被从处理中暂停直到动态纹理已经被生成。再次,任何必要的允许暂停的基元稍后被适当地处理的数据都以适当的方式被存储。
将会理解的是在这些方案中,当因为动态纹理需要被生成而采用本实施例的方式暂停片段时,那么可能的是大量其他的片段或基元等,将也会在该时间被暂停。
鉴于此,并且为了避免渲染流水线4的全部操作在该事件中需要被暂停,本实施例中的该渲染流水线4能够保持并在多个“渲染上下文”之间切换。换句话说,当暂停需要或会受到待生成的动态纹理影响的一组片段的渲染时,该渲染流水线4能够在第一组片段(第一“渲染上下文”)等待动态纹理生成处理完成时切换成渲染不同组的片段(其他“渲染上下文”)。在这些方案中,不同的“渲染上下文”将一般是帧缓冲器的给定部分。
不同“渲染上下文”之间的切换能够例如通过渲染流水线4的状态的适当配置和/或在流水线内的渲染单元的适当配置来执行。
一旦相关的片段、图形实体等已经被暂停,该过程接着进行到生成所需的动态纹理(纹元)(步骤27)并且将它们存储在动态纹理存储器9中(步骤28)。
在本实施例中,渲染流水线4被用来通过以普通方式渲染该纹理生成相关的动态纹理(纹元),如当使用渲染流水线来生成动态纹理时所做得那样。因此相关的动态纹理几何和/或纹理对象等被传递到渲染流水线4,其接着进行到渲染那些对象来提供动态纹理输出(纹元)到区块缓冲器5。该区块缓冲器5接着被配置为动态纹理存储器9中存储所生成的动态顶点,以使得它们然后能够当需要动态纹理的片段被渲染时(当那些片段的处理被重新开始时)被从中获取。
换句话说,该渲染流水线4渲染动态纹理并将其存储在动态纹理存储器9中,以使得它能够接着被用作所讨论片段的渲染通道(renderingpass)的纹理源(如果动态纹理已经被存储在动态纹理存储器9中,或静态纹理正被使用则通常将会是这种情形)。
通过适当设置渲染流水线(和/或渲染流水线的渲染单元)的状态来实现渲染流水线4的适当配置以生成所需的动态纹理(纹元)。
其他方案将是可能的。例如,作为采用本实施例的方式使用渲染流水线4本身来生成动态纹理的替代,为此目的可以提供专用的处理单元。
动态纹理数据生成过程如果需要还能够包括数据生成的其他阶段,像例如,顶点着色以便完成生成动态纹理和/或区块化(装仓)过程(用于分类将被用于根据其在场景中的地点或位置来生成动态纹理的几何)所必需的几何数据的生成。(后者可能是有利的,因为通过“区块化”将被用于生成动态纹理的几何,这于是能够减少在采用本实施例的方式生成动态纹理时实际上被处理的几何量。)
通常,采用本实施例的方式生成动态纹理所执行的实际过程将依赖于什么数据结构等,在数据将被生成时已经可用于渲染流水线。例如,如果,实际上,用于动态纹理对象的顶点着色和/或它们的区块化或装仓已经被执行,则不需要在实际动态纹理纹元将被生成的阶段重复那些过程,并且渲染流水线4作为代替能够仅仅渲染用于动态纹理的相关纹元。另一方面,如果几何数据(顶点着色)仍然需要被生成和/或区块化(装仓)数据结构仍然被需要,那么那些过程能够在动态纹理(纹元)将被生成时被执行,如果需要的话。
实际上,优选地甚至在本发明实施例中(且通常在本发明中)仍然在光栅化和渲染场景的片段以供显示之前执行用于生成动态纹理所需的一些数据(例如几何数据(初始顶点着色))的生成和/或用于动态纹理的区块化(装仓)数据结构的生成,因为那些过程可能是大量的,这样在将在片段渲染期间生成动态纹理时实现它们,会不希望地强强加非常长的片段处理暂停。因此在这种情况中,例如,非常有可能访问给定动态纹理,可以优选地提前执行这些过程,以便它们能够例如与先前帧渲染并行地进行,并且于是将不会暂停所讨论场景的片段渲染相对长的时间。
在本实施例中,当确定有必要生成动态纹理(纹元)以供当渲染片段时使用时,则系统还操作来识别应该被生成的所讨论的动态纹理的区域。
这是因为,例如,可能希望不仅仅计算执行数据生成时所需的纹元,例如,如果存在相对高的动态纹理数据生成过程的开销的话。因此,在本实施例中,可以选择性地配置在任何给定的动态纹理生成事件中生成动态纹理的什么区域。这可以基于,例如,来自状态管理系统2的信息,其指示场景的哪些基元、片段、区块、区域等可能需要所讨论的动态纹理。
例如,用于所讨论区块的动态纹理(纹元)(即,与触发动态纹理生成的片段相关的区块)可以被生成并存储。这于是将潜在地避免必须再次为所讨论的区块生成该动态纹理。
一旦相关动态纹理数据(纹元)已经被生成并保存在动态纹理存储器9中,则对被暂停的片段的处理等,能够被重新开始,因为它们于是将能够以普通的方式使用来自动态纹理存储器9的动态纹理(步骤29)。
在本实施例中,使用存储在片段高速缓冲存储器10中的片段信息等使对被暂停片段的渲染等,在它们的处理被暂停的点处重新开始。因此,该片段被“返回”到纹元地址计算阶段(步骤23)。
被暂停的片段接着以普通方式完成它们的渲染(因为这个时候所需的动态纹理数据将在动态纹理存储器9中可用),以及酌情被存储在区块缓冲器5中以用于输出到帧缓冲器6(步骤24、25、31、32和33)。
当然也可以使用其他方案。例如,可以把被暂停片段的处理等回退到其渲染的较早阶段,或实际上,简单地完全取消片段并在渲染流水线4的最开始重新发出它们,如果需要的话。在每种情况中,片段高速缓冲存储器10将被用于存储关于如何重新发出已经被暂停或取消的片段所需的无论什么数据,以使得用于那些片段的渲染过程等能够以适当方式被重新启动,并能够保持渲染的一致性。
在上述实施例中能够看到,不是在渲染片段之前生成动态纹理,而是作为替代通过以下方式在片段被生成时随选地生成(渲染)动态纹理:暂停那些片段的渲染,使用渲染流水线来生成动态纹理,并接着重新开始被暂停的片段的渲染。
这个方案具有多个潜在的优点。
例如,如果动态纹理实际上根据没有被渲染的片段访问,那么动态纹理的生成能够潜在地被完全忽略。类似地,如果片段仅仅访问一部分给定动态纹理而不是整个纹理贴图,那么在本实施例中同样仅仅那些实际被需要的动态纹理区域实际上被生成,以使得动态纹理数据的潜在多余的生成被减少。
本发明同样能够减少用于处理动态纹理所需的存储器占用。例如,在本发明实施例中存储器将仅仅是对于生成所需的并且存储被发现对于渲染而言可能需要的部分动态纹理,而不是用于无论如何存储整个动态纹理。因此本实施例能够避免为可能不是实际上需要的和/或实际上尚未被生成的动态纹理的区域分配或保留存储器的需要。
同样在本实施例中可以丢弃先前生成的动态纹理以及动态纹理数据(以及为该目的而生成的任何中间数据结构)来恢复存储器,甚至是在实际渲染期间(因为总是能够采用本实施例的方式来重新生成的数据,如果它再次被需要的话)。这可能意味着需要采用本实施例的方式生成动态纹理的区域不止一次,但是即便这样丢弃和/或恢复用于动态纹理的存储器的能力允许使用具有非常小的物理存储器占用的动态纹理,而且在性能与存储器占用之间进行权衡和优化的能力。
尽管上面已经参考动态纹理的生成描述了本实施例,但是本发明以及本实施例的原理同样能够应用到其他形式的图形数据例如,且特别地,其他形式的动态图形数据。
因此本发明能够被同样应用于,例如,在基于区块的系统中生成区块列表,以及顶点纹理化和“渲染到顶点缓冲器”(RTVB),例如动态几何和顶点的生成。在这些情况中,触发了“动态”数据的生成的过程将不会是渲染过程(例如片段着色器)但是将替换的是,例如,顶点着色或几何着色过程(顶点着色器或几何着色器)。
图4示出了一个示例性的情况,其中可能希望采用本发明的方式随选地生成顶点数据和区块列表数据。
图4示出了将被渲染以用于显示的场景60,其包括复杂对象61,所述复杂对象61可以是部分地或完全地被前景特征62遮挡(occlude)。在这个例子中,该复杂对象61由许多单独基元组成。
可以仅仅以普通方式渲染场景60,即单独地渲染构成复杂对象61的每个基元,例如以确定每个基元是否被前景对象62遮挡。然而,给定构成复杂对象61的单独基元的数目,这会需要相当大的处理。
因此申请人已经认识到,可能希望的是,不是以其单独基元的形式来处理复杂对象61,而是最初尝试将该对象作为整体来处理,来判断如果是否能够确定,例如,对象是否整体上被遮挡。
为了做到这点,在本实施例中图形处理系统被配置为生成可替换的,与其单独基元相比对复杂对象61的较粗略的或较抽象的描述。在本实施例中,这个对象61的该较抽象的或较粗略的描述是用于对象61的边界框63,其然后能够被用作表示复杂对象61的单个基元以用于处理。
图5对此进行了阐释,即边界框形式的元基元(meta-primitive)63的提供能够被用于表示场景60中的对象61(的位置)。
在本实施例中,表示对象61的边界框或元基元63都能够通过两种方法中的一种来生成。首先,能够访问为对象61所定义的顶点数据,根据该数据而产生表示对象61的边界框或元基元63,且接着元基元63被变换到屏幕空间以用于渲染。可替换地,为对象61所定义的顶点数据可以首先被变换到屏幕空间,并接着定义边界框或元基元63以用于在屏幕空间中表示对象61。
一旦复杂对象61的边界框、元基元表示63已经被生成,就能够以普通方式将场景60发送通过光栅化和渲染流水线(例如图1所示的流水线形式),但是利用表示复杂对象61的元基元63,而不是发送构成对象61的单独基元到流水线以用于处理。
边界框、元基元63将像任何其他基元一样被处理流水线对待。因此,元基元63将例如在渲染通道中被装入到适当的区块时,如果它根本不在区块中的话则能够被剔除,并且能够并将会经历在渲染流水线中提供的各种形式的遮挡测试和深度测试。
对表示复杂对象61的元基元63进行的任何遮挡测试的结果都能够被用来确定例如对象61是否完全地被场景中的前景对象62遮挡。如果是,则表示对象61的元基元63能够被从渲染过程中舍弃(剔除)(并且将永远不处理构成对象61的单独基元)。
然而,如果在其通过流水线中确定了元基元63没有完全被前景对象62遮挡,那么有必要以其真实形式处理对象61,以便它能够被正确地渲染到场景60中。
在这个情形中,图形处理系统必须被触发来现在以其“真实的”单独基元形式处理对象61,以便它可以被正确地渲染到场景60中。为了实现这一点,表示对象61的元基元63已经与合适的信息、数据或标记等相关联,所述合适的信息、数据或标记等在元基元63没有在其通过图形处理系统时被拒绝的情况下将触发对表示对象61的真实基元的处理。
然而,当该操作被触发时,仅元基元63而不是构成复杂对象61的单独基元将在这个实施例中已经被分类(装入)到用于场景的区块列表中。
因此,当图形处理系统将以其单独基元形式渲染复杂对象61时,其将尝试从区块列表读取单独基元,但是发现该信息并不存在于区块列表中。这于是将通过随选的方式(即采用本发明的方式)触发操作以生成并执行将构成对象61的单独基元适当装入到区块列表中。
关于用于处理构成复杂对象61的单独基元所需的顶点数据,可能出现类似的情形。依赖于如何生成元基元63,可能的是当那些基元开始被处理时没有表示复杂对象61的单独基元的顶点的经变换的顶点数据已经被存储在存储器中。再次在那种情形中,当处理流水线需要该顶点数据时,它将首先尝试从存储器得到它,发现不在那儿,能够接着采用本发明的方式以随选方式触发该数据的生成。
一旦该数据被生成并且可用,则图形处理系统就能够通过普通方式处理构成复杂对象61的“真实的”单独基元,且由此确定那些基元中的哪些将实际上被看见以及哪些被遮挡,如本领域公知的。
在一个优选实施例中,对元基元63进行标记以使得它经历仅Z通道渲染器(因为尝试完全渲染元基元63是不合适的,因为它不是将在场景60中绘制的真实对象)。
当然,可以对本实施例和发明进行其他改变或修改。
例如,同样是上述讨论的初始片段可见性测试,在一个优选实施例中,在区块化(装仓)阶段期间执行测试来尝试确定是否将使用动态纹理。为了实现这点,装仓阶段可以包含尝试检测使用/不使用动态纹理(搜索未使用的动态纹理)的逻辑。
这优选地通过尝试识别根本没有被捆绑于任何装仓的基元的动态纹理来执行(其可能表明动态纹理完全没有“存在于”视锥中)。被发现根本没有捆绑于任何装仓的基元的任何动态纹理能够在该阶段被丢弃,因为它们相应地对于场景而言不再被需要。
这将进一步有助于避免实际上永远不会用于场景的动态纹理的不必要的生成。
从上文能够看到,本发明,至少在其优选实施例中,提供了改进的技术和系统用于执行,除此之外,动态图形数据。特别地,它提供用于处理动态图形数据等的方案,其会降低对于这种数据的存储器需求和/或促进了存储器需求与渲染性能之间的权衡和优化等。
本发明还促进了图形系统中更加可预测和固定大小的存储器使用,特别地是对于其固有的不可预测的数据需求,如动态图形数据。它也意味着,例如,将被用于此类数据的存储器区域能够被设置成具有预定义大小(存储器占用),而没有明显的性能损失。
当存储器资源有限或被限制的情况下,本发明是特别有利的,例如在低功率和/或便携式设备或产品,例如移动电话,PDA等,以及在嵌入式图形系统中,等。
在本发明的优选实施例中,这至少可以通过以下方式来实现:能够生成,并且在数据被发现将在生成场景以供显示时被需要时通过“随选”的方式生成该数据,而不是在生成场景以供显示之前提前生成任何所需的动态数据。特别地,本发明的系统和方法,至少在其优选实施例中,进行检查以查看所需的数据当其需要被使用的时候是否在存储器中可用,并且如果在该时间其不存在于存储器中,那么在那里生成该数据并然后使用它。

Claims (16)

1.一种在图形处理系统中处理数据的方法,所述方法包括:
当将由图形处理系统处理的数据处理需要另外的数据时,由图形处理系统尝试从存储器中取该另外的数据;并且
如果数据在存储器中不可用,则由图形处理系统生成所需的数据并接着使用所生成的数据来处理待处理的数据。
2.如权利要求1所述的方法,其中在存储器中查找的数据包括动态图形数据。
3.如权利要求1或2所述的方法,其中在存储器中查找的数据包括纹理数据、顶点数据、几何数据和/或区块列表数据。
4.如权利要求1或2所述的方法,包括在存储器中存储所生成的数据以使得其可供后面的图形过程使用。
5.如权利要求1或2所述的方法,包括当生成所需数据时生成比用于处理将由图形处理系统处理的数据所需的数据更多的数据。
6.如权利要求1或2所述的方法,其中数据生成过程包括识别就该过程而言需要的所有可用的数据的子集的步骤,并且然后数据生成过程仅使用该数据子集。
7.如权利要求1或2所述的方法,包括:
当所需数据被生成时,暂停和/或停止一个或多个图形过程和/或一个或多个图形实体的处理。
8.如权利要求1或2所述的方法,包括:
尝试确定将不在处理场景以供显示时被使用的动态图形数据集合;以及
从针对场景的进一步处理中丢弃被发现将不会被用于场景的任何动态数据集合。
9.一种用于在图形处理系统中处理数据的设备,所述设备包括:
用于当将由图形处理系统处理的数据的处理需要另外的数据时,由图形处理系统尝试从存储器中取该另外的数据的装置;并且
用于如果数据在存储器中不可用,则由图形处理系统生成所需的数据并接着使用所生成的数据来处理待处理的数据的装置。
10.如权利要求9所述的设备,其中在存储器中查找的数据包括动态图形数据。
11.如权利要求9或10所述的设备,其中在存储器中查找的数据包括纹理数据、顶点数据、几何数据和/或区块列表数据。
12.如权利要求9或10中任何一项所述的设备,包括用于在存储器中存储所生成的数据以使得其可供后面的图形过程使用的装置。
13.如权利要求9或10中任何一项所述的设备,其中用于生成所需数据的装置包括用于当所需的数据被生成时生成比用于处理将由图形处理系统处理的数据所需的数据更多的数据的装置。
14.如权利要求9或10中任何一项所述的设备,其中用于生成所需数据的装置包括用于确定就生成所需数据的过程而言需要的所有可用的数据的子集的装置,以及用于针对数据生成过程仅使用该数据子集的装置。
15.如权利要求9或10中任何一项所述的设备,包括:
用于当所需数据被生成时暂停和/或停止一个或多个图形过程和/或一个或多个图形实体的处理的装置。
16.如权利要求9或10中任何一项所述的设备,包括:
用于尝试确定将不在处理场景以供显示时被使用的动态图形数据集合的装置;以及
用于从针对场景的进一步处理中丢弃被发现将不会被用于场景的任何动态数据集合的装置。
CN200910163931.2A 2008-06-04 2009-06-04 图形处理系统 Active CN101620724B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0810205.5 2008-06-04
GBGB0810205.5A GB0810205D0 (en) 2008-06-04 2008-06-04 Graphics processing systems

Publications (2)

Publication Number Publication Date
CN101620724A CN101620724A (zh) 2010-01-06
CN101620724B true CN101620724B (zh) 2016-03-30

Family

ID=39638158

Family Applications (2)

Application Number Title Priority Date Filing Date
CN200910159598.8A Active CN101604454B (zh) 2008-06-04 2009-06-04 图形处理系统
CN200910163931.2A Active CN101620724B (zh) 2008-06-04 2009-06-04 图形处理系统

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN200910159598.8A Active CN101604454B (zh) 2008-06-04 2009-06-04 图形处理系统

Country Status (4)

Country Link
US (4) US9367953B2 (zh)
JP (2) JP5624733B2 (zh)
CN (2) CN101604454B (zh)
GB (4) GB0810205D0 (zh)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101445074B1 (ko) * 2007-10-24 2014-09-29 삼성전자주식회사 미디어 플레이어에서 미디어 객체 처리 방법 및 그 장치
US8626720B2 (en) * 2008-02-11 2014-01-07 International Business Machines Corporation System and method of reconstructing complex custom objects
GB0810205D0 (en) * 2008-06-04 2008-07-09 Advanced Risc Mach Ltd Graphics processing systems
US8605102B1 (en) * 2009-10-08 2013-12-10 Nvidia Corporation Rasterization tile coalescer and reorder buffer
KR101661931B1 (ko) * 2010-02-12 2016-10-10 삼성전자주식회사 3차원 그래픽스 랜더링 장치 및 그 방법
GB2478909B (en) * 2010-03-19 2013-11-06 Imagination Tech Ltd Demand based texture rendering in a tile based rendering system
US20110249022A1 (en) * 2010-04-08 2011-10-13 Rajesh Poornachandran Techniques for managing power use
US9256465B2 (en) * 2010-12-13 2016-02-09 Advanced Micro Devices, Inc. Process device context switching
US9299121B2 (en) * 2010-12-15 2016-03-29 Advanced Micro Devices, Inc. Preemptive context switching
JP5636988B2 (ja) * 2011-01-27 2014-12-10 富士通株式会社 描画装置および方法
WO2012106429A1 (en) 2011-02-03 2012-08-09 L3 Communications Corporation Rasterizer packet generator for use in graphics processor
US9378560B2 (en) * 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
CN102306076B (zh) * 2011-07-26 2016-02-03 深圳Tcl新技术有限公司 图形动态纹理的生成方法及终端
US10089774B2 (en) 2011-11-16 2018-10-02 Qualcomm Incorporated Tessellation in tile-based rendering
GB2497762B (en) * 2011-12-20 2018-05-23 Advanced Risc Mach Ltd Intermediate value storage within a graphics processing apparatus
CN104040589B (zh) 2012-01-16 2018-05-25 英特尔公司 使用随机光栅化生成随机采样分布的图形处理方法和设备
US9472163B2 (en) * 2012-02-17 2016-10-18 Monotype Imaging Inc. Adjusting content rendering for environmental conditions
US8970613B2 (en) * 2012-06-06 2015-03-03 Apple Inc. Render tree caching
US8941676B2 (en) * 2012-10-26 2015-01-27 Nvidia Corporation On-chip anti-alias resolve in a cache tiling architecture
US9741154B2 (en) * 2012-11-21 2017-08-22 Intel Corporation Recording the results of visibility tests at the input geometry object granularity
US9280956B2 (en) * 2012-11-29 2016-03-08 Qualcomm Incorporated Graphics memory load mask for graphics processing
CN102970542B (zh) * 2012-11-30 2015-06-10 上海晨思电子科技有限公司 一种视频数据转换的方法、装置和智能电视
US9311749B2 (en) * 2012-12-07 2016-04-12 Donya Labs Ab Method for forming an optimized polygon based shell mesh
KR20140073951A (ko) * 2012-12-07 2014-06-17 삼성전자주식회사 베이지어 커브를 렌더링하는 장치 및 방법
US20140184629A1 (en) * 2012-12-31 2014-07-03 Nvidia Corporation Method and apparatus for synchronizing a lower bandwidth graphics processor with a higher bandwidth display using framelock signals
CA2860177A1 (en) * 2013-02-06 2014-08-14 Square Enix Holdings Co., Ltd. Information processing apparatus, method of controlling the same, program, and storage medium
US9953455B2 (en) * 2013-03-13 2018-04-24 Nvidia Corporation Handling post-Z coverage data in raster operations
US9483861B2 (en) * 2013-03-15 2016-11-01 Qualcomm Incorporated Tile-based rendering
JP5864474B2 (ja) * 2013-05-01 2016-02-17 株式会社ディジタルメディアプロフェッショナル 空間を分割してグラフィックスを処理する画像処理装置及び画像処理方法
US9626732B2 (en) * 2013-10-10 2017-04-18 Intel Corporation Supporting atomic operations as post-synchronization operations in graphics processing architectures
US9552667B2 (en) * 2013-12-13 2017-01-24 Nvidia Corporation Adaptive shading in a graphics processing pipeline
GB2525223B (en) * 2014-04-16 2020-07-15 Advanced Risc Mach Ltd Graphics processing systems
JP6333369B2 (ja) * 2014-05-28 2018-05-30 株式会社スクウェア・エニックス・ホールディングス 展開予測装置、展開予測方法、プログラム及び記録媒体
US9842428B2 (en) * 2014-06-27 2017-12-12 Samsung Electronics Co., Ltd. Dynamically optimized deferred rendering pipeline
GB2527822B (en) * 2014-07-03 2020-10-07 Advanced Risc Mach Ltd Graphics processing
CN104200220B (zh) * 2014-08-21 2017-05-03 武汉大学 一种基于静态纹理模型聚集的动态纹理识别方法
WO2016054800A1 (en) * 2014-10-10 2016-04-14 Empire Technology Development Llc Scene image generator
GB2532495B (en) * 2014-11-21 2018-05-02 Advanced Risc Mach Ltd Graphics processing systems
US9489710B2 (en) * 2015-02-10 2016-11-08 Qualcomm Incorporated Hybrid rendering in graphics processing
US10255337B2 (en) * 2015-03-31 2019-04-09 Change Healthcare Holdings, Llc Health care information system and method for transforming health care data with a transformation pipeline
KR102292789B1 (ko) * 2015-04-07 2021-08-25 삼성전자 주식회사 디스플레이장치 및 그 제어방법
CN105550975B (zh) * 2015-12-11 2019-06-28 中国航空工业集团公司西安航空计算技术研究所 一种3d图形指令优化方法
GB2546810B (en) 2016-02-01 2019-10-16 Imagination Tech Ltd Sparse rendering
US10102662B2 (en) 2016-07-27 2018-10-16 Advanced Micro Devices, Inc. Primitive culling using automatically compiled compute shaders
KR102489266B1 (ko) 2018-08-13 2023-01-17 엘지전자 주식회사 모바일 디바이스 및 그 제어 방법
US10825200B2 (en) * 2019-01-30 2020-11-03 Trivver, Inc. Texture based pixel count determination
CN110519544B (zh) * 2019-08-30 2021-03-23 维沃移动通信有限公司 一种视频通话方法及电子设备
GB2603618B (en) * 2020-12-18 2023-04-26 Imagination Tech Ltd Graphics processing systems and methods

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101178806A (zh) * 2007-09-10 2008-05-14 威盛电子股份有限公司 计算机中管理纹理数据的系统与方法

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5315691A (en) * 1992-01-22 1994-05-24 Brother Kogyo Kabushiki Kaisha Print control apparatus
JPH0855239A (ja) * 1994-07-21 1996-02-27 Internatl Business Mach Corp <Ibm> グラフィカル・オブジェクトの可視性を判定するための方法および装置
JP3029554B2 (ja) * 1995-05-22 2000-04-04 株式会社ハドソン 3次元図形描画装置
US5977977A (en) * 1995-08-04 1999-11-02 Microsoft Corporation Method and system for multi-pass rendering
US5751291A (en) 1996-07-26 1998-05-12 Hewlett-Packard Company System and method for accelerated occlusion culling
JP3879189B2 (ja) * 1996-07-31 2007-02-07 ソニー株式会社 画像生成装置およびその方法
US6023279A (en) 1997-01-09 2000-02-08 The Boeing Company Method and apparatus for rapidly rendering computer generated images of complex structures
US6631423B1 (en) * 1998-03-31 2003-10-07 Hewlett-Packard Development Company, L.P. System and method for assessing performance optimizations in a graphics system
US6456285B2 (en) 1998-05-06 2002-09-24 Microsoft Corporation Occlusion culling for complex transparent scenes in computer generated graphics
US7375727B1 (en) 1998-07-22 2008-05-20 Nvidia Corporation System, method and computer program product for geometrically transforming geometric objects
US6236413B1 (en) * 1998-08-14 2001-05-22 Silicon Graphics, Inc. Method and system for a RISC graphics pipeline optimized for high clock speeds by using recirculation
US6771264B1 (en) * 1998-08-20 2004-08-03 Apple Computer, Inc. Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor
US6243097B1 (en) * 1998-12-10 2001-06-05 International Business Machines Corporation Bounding volume for 3D graphic primitives
US7242414B1 (en) * 1999-07-30 2007-07-10 Mips Technologies, Inc. Processor having a compare extension of an instruction set architecture
US6476806B1 (en) 1999-04-16 2002-11-05 Hewlett-Packard Company Method and apparatus for performing occlusion testing while exploiting frame to frame temporal coherence
US6603474B1 (en) 1999-05-27 2003-08-05 International Business Machines Corporation Method and apparatus for occlusion culling of objects in a data processing system
US6448967B1 (en) * 1999-07-26 2002-09-10 Silicon Integrated Systems Corp. Z-Buffer pre-test for 3D graphics performance enhancement
US6734867B1 (en) * 2000-06-28 2004-05-11 Micron Technology, Inc. Cache invalidation method and apparatus for a graphics processing system
CN1230740C (zh) * 2000-10-18 2005-12-07 皇家菲利浦电子有限公司 数字信号处理装置
US6621492B2 (en) * 2000-12-18 2003-09-16 International Business Machines Corporation Method and apparatus using primitive bounding volumes to improve the accuracy of BSP-trees
JP2003016438A (ja) 2001-06-28 2003-01-17 Kyocera Corp 画像生成装置
US7065757B2 (en) * 2001-09-28 2006-06-20 Hewlett-Packard Development Company, L.P. Efficient compilation of family of related functions
US7009605B2 (en) * 2002-03-20 2006-03-07 Nvidia Corporation System, method and computer program product for generating a shader program
JP4350342B2 (ja) * 2002-04-26 2009-10-21 株式会社リコー 画像処理装置、画像記録装置、カメラシステム、プログラム、記憶媒体及び画像処理方法
US6980209B1 (en) * 2002-06-14 2005-12-27 Nvidia Corporation Method and system for scalable, dataflow-based, programmable processing of graphics data
US6952206B1 (en) * 2002-08-12 2005-10-04 Nvidia Corporation Graphics application program interface system and method for accelerating graphics processing
US7530062B2 (en) * 2003-05-23 2009-05-05 Microsoft Corporation Optimizing compiler transforms for a high level shader language
US7164420B2 (en) 2003-07-24 2007-01-16 Autodesk, Inc. Ray tracing hierarchy
US6952217B1 (en) 2003-07-24 2005-10-04 Nvidia Corporation Graphics processing unit self-programming
US7388581B1 (en) 2003-08-28 2008-06-17 Nvidia Corporation Asynchronous conditional graphics rendering
US20050122338A1 (en) * 2003-12-05 2005-06-09 Michael Hong Apparatus and method for rendering graphics primitives using a multi-pass rendering approach
US7385608B1 (en) * 2003-12-31 2008-06-10 3Dlabs Inc. Ltd. State tracking methodology
US8736620B2 (en) * 2004-05-14 2014-05-27 Nvidia Corporation Kill bit graphics processing system and method
US7382377B1 (en) * 2004-06-17 2008-06-03 Nvidia Corporation Render to texture cull
US7746347B1 (en) * 2004-07-02 2010-06-29 Nvidia Corporation Methods and systems for processing a geometry shader program developed in a high-level shading language
GB0425204D0 (en) * 2004-11-15 2004-12-15 Falanx Microsystems As Processing of 3-dimensional graphics
US7681187B2 (en) * 2005-03-31 2010-03-16 Nvidia Corporation Method and apparatus for register allocation in presence of hardware constraints
GB0524804D0 (en) 2005-12-05 2006-01-11 Falanx Microsystems As Method of and apparatus for processing graphics
EP1804187B1 (en) 2005-12-30 2020-09-09 Dassault Systèmes Process for displaying objects in a PLM database and apparatus implementing this process
JP2007233730A (ja) * 2006-03-01 2007-09-13 Mitsubishi Electric Corp 三次元グラフィック描画装置
JP4116648B2 (ja) * 2006-05-22 2008-07-09 株式会社ソニー・コンピュータエンタテインメント オクルージョンカリング方法および描画処理装置
JP4142065B2 (ja) 2006-05-22 2008-08-27 株式会社ソニー・コンピュータエンタテインメント 縮小zバッファ生成方法、隠面消去方法、およびオクルージョンカリング方法
US8196127B2 (en) * 2006-08-04 2012-06-05 International Business Machines Corporation Pervasively data parallel information handling system and methodology for generating data parallel select operations
US7928990B2 (en) * 2006-09-27 2011-04-19 Qualcomm Incorporated Graphics processing unit with unified vertex cache and shader register file
US7836258B2 (en) * 2006-11-13 2010-11-16 International Business Machines Corporation Dynamic data cache invalidate with data dependent expiration
US8421794B2 (en) * 2007-03-23 2013-04-16 Qualcomm Incorporated Processor with adaptive multi-shader
US8081181B2 (en) * 2007-06-20 2011-12-20 Microsoft Corporation Prefix sum pass to linearize A-buffer storage
GB0810205D0 (en) 2008-06-04 2008-07-09 Advanced Risc Mach Ltd Graphics processing systems

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101178806A (zh) * 2007-09-10 2008-05-14 威盛电子股份有限公司 计算机中管理纹理数据的系统与方法

Also Published As

Publication number Publication date
US20160267709A1 (en) 2016-09-15
JP2009295161A (ja) 2009-12-17
GB2460545B (en) 2011-01-05
JP2009295162A (ja) 2009-12-17
US20100060630A1 (en) 2010-03-11
US8698828B2 (en) 2014-04-15
US20180197326A1 (en) 2018-07-12
GB2460544B (en) 2012-08-22
CN101604454A (zh) 2009-12-16
CN101620724A (zh) 2010-01-06
GB0810205D0 (en) 2008-07-09
CN101604454B (zh) 2017-10-20
GB201208595D0 (en) 2012-06-27
GB2492447B (en) 2013-02-27
GB0909642D0 (en) 2009-07-22
GB0909641D0 (en) 2009-07-22
US20100026682A1 (en) 2010-02-04
GB2492447A (en) 2013-01-02
GB2460545A (en) 2009-12-09
GB2460544A (en) 2009-12-09
US9947131B2 (en) 2018-04-17
JP5624733B2 (ja) 2014-11-12
US9367953B2 (en) 2016-06-14
JP5538748B2 (ja) 2014-07-02
US10755473B2 (en) 2020-08-25

Similar Documents

Publication Publication Date Title
CN101620724B (zh) 图形处理系统
US9799088B2 (en) Render target command reordering in graphics processing
US8659589B2 (en) Leveraging graphics processors to optimize rendering 2-D objects
CN109564695B (zh) 用于高效3d图形流水线的装置和方法
US9836810B2 (en) Optimized multi-pass rendering on tiled base architectures
JP6162215B2 (ja) グラフィックス処理におけるパッチされたシェーディング
CN103793893B (zh) 采用限缓冲区处理的世界和屏幕空间管线间基元重新排序
US10255718B2 (en) Graphics processing
US20050206647A1 (en) Method and apparatus for generating a shadow effect using shadow volumes
US10607400B2 (en) Graphics processing systems using a vertex shader to render plural images
CN109214976B (zh) 图形处理
KR20010085424A (ko) 지연 쉐이딩을 갖는 그래픽 프로세서
CN107038742A (zh) 屏幕空间管线中的多通道渲染
KR20210066727A (ko) 그래픽 처리 시스템
US11954782B2 (en) Hybrid render with preferred primitive batch binning and sorting
CN112862937A (zh) 用于处理图形图元的方法、图形处理系统和存储介质
US11734869B2 (en) Graphics processing
EP3504684A1 (en) Hybrid render with preferred primitive batch binning and sorting
CN117136375A (zh) 用于图元批次的几何处理的可缩放图元速率结构
WO2022119469A1 (en) Device and method for multi-frustum rasterization
WO2022131949A1 (en) A device for performing a recursive rasterization
CN116777726A (zh) 图形处理
GB2475375A (en) Dynamic Graphics Rendering Process

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant