CN101639929A - 图形处理*** - Google Patents
图形处理*** Download PDFInfo
- Publication number
- CN101639929A CN101639929A CN200910140682A CN200910140682A CN101639929A CN 101639929 A CN101639929 A CN 101639929A CN 200910140682 A CN200910140682 A CN 200910140682A CN 200910140682 A CN200910140682 A CN 200910140682A CN 101639929 A CN101639929 A CN 101639929A
- Authority
- CN
- China
- Prior art keywords
- pel
- handle
- sampled point
- clist
- data
- 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.)
- Granted
Links
- 238000012545 processing Methods 0.000 title claims abstract description 115
- 238000005070 sampling Methods 0.000 claims abstract description 4
- 238000000034 method Methods 0.000 claims description 306
- 230000008569 process Effects 0.000 claims description 267
- 238000012360 testing method Methods 0.000 claims description 96
- 230000004044 response Effects 0.000 claims description 44
- 230000006870 function Effects 0.000 claims description 36
- 238000003860 storage Methods 0.000 claims description 26
- 238000009795 derivation Methods 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 6
- 238000009877 rendering Methods 0.000 abstract description 63
- 238000001801 Z-test Methods 0.000 abstract 1
- 230000008859 change Effects 0.000 description 27
- 238000005516 engineering process Methods 0.000 description 16
- 230000008901 benefit Effects 0.000 description 10
- 230000000903 blocking effect Effects 0.000 description 10
- 239000000463 material Substances 0.000 description 9
- 230000005055 memory storage Effects 0.000 description 9
- 230000000694 effects Effects 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000014509 gene expression Effects 0.000 description 4
- 230000006872 improvement Effects 0.000 description 4
- 238000003780 insertion Methods 0.000 description 4
- 230000037431 insertion Effects 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 238000004040 coloring Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000007639 printing Methods 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 150000003839 salts Chemical class 0.000 description 2
- 235000012364 Peperomia pellucida Nutrition 0.000 description 1
- 240000007711 Peperomia pellucida Species 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 239000012297 crystallization seed Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000007519 figuring Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 239000004615 ingredient Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 238000010977 unit operation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/40—Hidden part removal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/40—Hidden part removal
- G06T15/405—Hidden part removal using Z-buffer
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Geometry (AREA)
- Image Generation (AREA)
- Processing Or Creating Images (AREA)
Abstract
在图形处理***中,命令列表阅读器3首先读入并标识命令列表的一部分。对应于命令列表中该部分的命令的图元接着经受仅Z处理经过。这允许Z缓冲器16及分级Z锥体18被用命令列表中该部分的图元的适当Z值来填充。然后图元经受第二正常渲染处理经过,但从第一处理经过填充的Z缓冲器16及Z锥体18与在第二处理经过中执行的Z测试7、10一起使用,以便确定哪个图元将在第二处理经过中对每个采样点进行处理。
Description
技术领域
本发明涉及计算机图形的处理,更具体而言,涉及用于在显示屏上显示的3维(3D)图形的处理。
背景技术
如本领域公知的,3D图形处理一般通过首先将要显示的场景(scene)分成若干个类似的基本分量(称为“图元”(primitive))以使3D图形处理操作更易于执行来执行。这些“图元”通常具有简单多边形、例如三角形的形式。
用于要显示的场景的图元通常由图形处理***的应用程序接口使用从要求图形显示的应用(例如游戏)接收到的图形绘制指令(请求)来生成。
每个图元在这个阶段通常由顶点(vertex)集合定义并表示。图元的每个顶点与其表示该顶点的数据集合(例如位置、颜色、材质(texture)及其它属性数据)相关联。接着,例如在对该顶点(该顶点所涉及的图元)进行栅格化及渲染(render)以供显示时,使用该数据。
一旦生成并定义了场景的图元及其顶点,则可用图形处理***对它们进行处理,以便例如显示该场景。
该处理基本包括:确定覆盖要处理的场景区域的采样点阵列的哪些采样点图元被图元所覆盖,并接着确定每个采样点在该采样点呈现该图元应该具有的外形(例如,在其颜色等方面)。这些处理通常分别被称为栅格化与渲染。
栅格化处理确定将用于图元的样本位置(即,在要显示的场景中表示图元要使用的样本点的(x,y)位置)。这一般使用图元的顶点的位置来实现。
渲染处理接着导出显示在样本点的图元必需的数据,例如红、绿及蓝(RGB)颜色值及“α”(透明度)值(即对各样本点“着色(shade)”)。如本领域已知的,这可包括应用材质、混合样本点数据值等。
(在3D图形学中,术语“栅格化”有时用来表示至样本位置的图元转换及渲染。但是,本文中“栅格化”将用于仅表示将图元数据转换为采样点地址。)
这些处理一般通过将采样点“表示”为通常被称为“片元(fragment)”的图形实体来执行,在片元上执行图形处理操作(例如渲染)。每个此类片元将对应于给定的样本点或者采样点集合,且实际上表示在所涉及的采样点(正在使用该片元来渲染的采样点)的图元并用于对其进行渲染。
因此“片元”实际上是***到图元的给定场景空间样本点的图元数据集合(与其相关联)。它还包括对在所涉及的样本点(片元位置)的图元进行着色需要的每图元及其它状态数据。每个图形片元在被处理时可被合理地认为是实际上等效于场景的“像素”。
实际上,每个图形“片元”可对应于最后显示的单个像素(图像元素)(因为,在像素是最后显示的单个点时,在图形处理器操作(渲染)的“片元”与该显示的像素之间可存在一对一的映射)。但是,可存在在片元与显示像素之间不具有一对一对应的情形,例如在显示最后图像之前在所渲染图像上执行特定形式的后向处理、例如尺度变小的情形。
在一种通常被称为“立即模式”图形处理或渲染的已知图形处理技术中,图元在其生成时被一个接一个地处理。
在这类***中,基于先到先服务原则将图元(其顶点)传递到图形***,因此图元以其接收顺序进行渲染。
在图形处理***中也已知使用所谓“基于区块(tile-based)”或“延迟”的渲染。在基于区块的渲染中,不是像立即模式中渲染那样一举将整个场景进行处理,而是将要显示的场景分成多个通常称为“区块”的较小子区域。每个区块(子区域)单独渲染(通常逐个地),然后将所渲染的区块(子区域)进行重组,以便提供完整场景以供显示。在此类布置中,一般将场景分为规则尺寸及形状的子区域(区块)(其通常为例如正方形或矩形),但是这不是必需的。
在立即模式及基于区块的绘制中,至栅格化与渲染处理的输入一般包括要由图形处理器执行的图形命令列表。如本领域中已知的,该“命令列表”将包括指示图形处理器绘制图元的命令,以及指示其它图形处理、例如渲染状态变化的命令,开始及停止区块命令(在基于区块的***中)等。
在立即模式渲染中,该命令列表将仅列出要逐条执行的命令,但是在基于区块的绘制中,该列表可以并且通常将被分成“区块”(即,将把每个区块的命令单独列到其它区块的命令)。
当前的图形处理***的一个缺点是:因为图元被连续且一般不以完全前后顺序进行处理,所以给定采样点(且因此片元及像素)可在处理场景以供显示时被多次着色。这种情况在首先接收及渲染的图元随后被后一图元覆盖使得该首先渲染的图元实际上在所涉及的像素(及采样点)不可见时出现。图元可以这种方式进行多次改写,且这一般导致对每个正被渲染的场景执行多次、最终冗余的渲染操作。这种现象通常被称为“无效渲染(overdraw)”。
执行这种最终冗余操作的结果包括降低的帧率及增加的存储器带宽要求(例如,由于取将被后一图元改写的图元的数据)。这两种情况都不是合乎需要的,并降低图形处理***的整体性能。在要渲染的场景变得更大且更复杂(因为将在可能可见角度存在更多表面)且在增加可编程片元着色的使用(因为使用可编程片元着色来对给定片元着色的成本相对较大)时,这些问题将趋于突出。
“无效渲染”的问题可通过发送图元用于以前后顺序进行渲染而显著降低。但是,其它图形处理要求、例如对诸如材质的资源的相关访问的需要以及使每帧API调用的数量最小化的需要,一般授权对图元的其它优选排序要求。此外,完全前后类别的图元在渲染之前可能是不实用的,虽然还维持图元至图形处理单元的足够吞吐量。这些及其它因素意味着帧的图元的前后排序在实践中一般不是可能或合乎需要的。
因此,已经提议了若干其它技术来尽量降低在处理场景以供显示时执行的“无效渲染”的数量(即,避免渲染不可见图元和/或片元等)。
例如,已知在发送图元(或片元)以供渲染之前执行多种形式的隐藏表面去除,以便查看该图元(或片元等)是否将被已渲染图元(或者片元)遮蔽(在这种情况下,不需要渲染该新片元和/或图元)。如本领域已知的,此类隐藏表面去除可包括例如早期阻塞拣选和/或早期Z(深度)测试处理。
但是,这些“早期”(在渲染之前)隐藏表面去除技术只能考虑到在要对新图元或片元(被进行“早期”测试的图元或片元)进行处理时已经渲染的图元。这是因为相关测试数据(例如Z缓存)将只包含已经被处理的图元的数据。因此,这些测试不能例如在图元实际上被渲染顺序中的后一图元阻塞时避免“无效渲染”。
对应用(例如游戏)开发人员而言还公知的是:对应用进行配置,使得每个场景实际上被渲染两次,首先绘制具有无效Z测试与Z写入以外的所有渲染状态的不透明场景几何图形,然后第二次用所有有效渲染状态。
这具有这样的效果:第一渲染经过(pass)有效地用对于每个片元(样本)位置最近的不透明图元的Z(深度)值来填充Z缓冲器。在第二全部渲染经过中,因为Z缓冲器现在填充有最近的不透明图元的Z值,所以在第二经过上的任意早期Z测试可更有效地拒绝被阻塞的片元,且特别是要考虑到在第一“仅Z”渲染经过中渲染的所有图元,而不只是考虑到在所涉及片元之前已经渲染的图元。
因此,该技术能够提供更有效的早期Z测试处理,但是它具有以下缺点:给定场景必须由应用生成并被图形处理***处理两次,一次用于仅Z经过,且接着又用于“全部”渲染经过。虽然这对于功能较高的、例如桌上型图形***可能不太有问题,但是其它功能较低的图形***、例如便携式及移动装置可能例如具有带宽限制,这些限制使得对每个完整的可能可见场景生成并绘制两次是不合乎需要的。
在由Timo Alia、Ville Miettinen及Petri Nordlund在Siggraph 2003的“Delay Streams for Graphics Hardware”所述的另一提议中,图形处理流水线(pipeline)被改进成包含延迟流及第二早期阻塞测试阶段。第二早期阻塞测试在栅格化与渲染之前但在第一早期阻塞初始阶段及该延迟流之后进行。
本文的思路是在给定图元或片元到达第二早期阻塞测试阶段的时候,更多片元将有助于例如Z缓存数据(因为特意设置的延迟流给了更多片元在图元或片元到达第二早期阻塞测试阶段之前完成其处理的时间),使得第二阻塞测试阶段能够考虑到比标准的单个早期阻塞测试布置中更多的图元。
但是,该布置要求对图形处理流水线的某些改进,例如增加第二早期阻塞测试阶段及延迟流。
因此,申请人认为留有在图形处理***中尽量减小“无效渲染”问题的改进空间。
发明内容
依照本发明的第一方面,提供了一种操作图形处理器的方法,其中要由图形处理器执行的、包括指示图形处理器绘制图元的命令的图形命令列表在所述命令被图形处理器执行之前被准备并存储在存储器中,该方法包括:
图形处理器:
在所存储命令列表的一部分中的命令序列上执行第一处理经过,以便导出数据,所述数据可帮助从要响应于所述命令列表的该部分中的命令而绘制的图元中选择用于针对采样点集合中的每个采样点进行处理的一个图元或多个图元;
存储导出的数据,用于帮助选择要在每个采样点进行处理的图元;以及
在命令序列上执行第二处理经过以便对要响应于所存储命令列表的该部分中的命令而绘制的图元进行处理,使用所存储数据来帮助从要响应于所存储命令列表的该部分的命令而绘制的图元序列中选择要在第二处理经过中对每个采样点进行处理的一个或多个图元。
依照本发明的第二方面,提供了一种图形处理***,其中要由图形处理***执行的、包括指示图形处理***绘制图元的命令的图形命令列表在命令被图形处理***执行之前被准备并存储在存储器中,该图形处理***包括:
用于完成以下功能的部件:在所存储命令列表的一部分中的命令序列上执行第一处理经过,以便导出数据,所述数据可帮助从要响应于所述命令列表的该部分中的命令而绘制的图元中选择用于针对采样点集合中的每个采样点进行处理的一个图元或多个图元;
用于存储所导出数据以帮助选择要在每个采样点进行处理的图元的部件;以及
用于完成以下功能的部件:在命令序列上执行第二处理经过以便对响应于所存储命令列表的该部分中的命令而绘制的图元进行处理,使用所存储数据来帮助从要响应于所存储命令列表的该部分的命令而绘制的图元序列中选择要在第二处理经过中对每个采样点进行处理的图元。
本发明提供图形处理***及方法,其中所存储命令列表的一部分中的命令序列(即,图形命令集合)被处理一次以便确定帮助选择哪个图元要在采样点集合的每个采样点进行处理(例如并优选地确定哪个图元可见,如下文将进一步论述),然后被第二次处理,但是使用所确定图元信息来帮助标识在第二处理经过期间对给定采样点将处理(例如渲染)哪个图元。
换句话说,与上述应用驱动两阶段渲染处理类似,本发明使用第一处理经过来帮助确定图元集合(命令列表的该部分对应的图元集合)中要对给定(且每个)采样点进行渲染的图元(例如,并优选地确定图元的可视性),并接着执行利用所确定图元处理(例如可视性)信息的第二处理经过。
相应地,本发明提供这样的***:其中与命令列表的该部分的图元对应的第二处理(渲染)经过可使用与要在相应采样点处理的图元有关的更准确和/或详细信息来执行,因此允许例如从第二经过的渲染处理中更有效地拣选图元及片元,且因此降低甚至消除在第二处理经过中出现的无效渲染的数量,因此带来优点并减少上文对该经过所讨论的问题。尤其是,本发明可例如允许第二处理经过解决被从在渲染顺序中后来到达的图元生成的片元所阻塞的图元(并因此,例如避免对采样点的不可见图元进行渲染)。
此外,本发明提供尤其是在例如尤其是可用于移动及便携式装置中的功能较低和/或受限***中使用的图形处理器的情况下比上述两阶段应用驱动布置更优的布置。
尤其是,因为本发明将所存储命令列表用于其两个处理“经过”的每个,所以它避免了如在应用级方法中出现的又第二次完全生成场景的需要(因为在应用级方法中,虽然要生成相同图元集合,但是新的图元命令集合等将被发送到图形处理器用于第二渲染经过)。
例如,这可提供在本发明中显著的存储带宽及处理节省,例如因为不需要将图元的几何形状处理(例如变换或剪辑)两次,且在基于区块的***中,不需要将该几何形状归类到区块两次。类似地,应用场景数据结构不需要被检索两次。
本发明还可不要求应用(例如游戏)开发人员采取特定行动或步骤。当它对两种处理经过使用相同命令列表与数据结构时,实现本发明所需的任意改进可在图形处理***本身执行,因此避免了对主机***及应用操作的任意改变的需要。
本发明还比上述的延迟流及第二早期阻塞测试布置有优势,因为本发明例如不要求对该“延迟流”布置需要的现有图形处理流水线的结构改变。
实际上,本发明的关键优势在于它可用在并用于现有已知图形处理体系结构,且尤其可只是再使用现有已知流水线组件及功能以获得其优势。这是因为,其中本发明通过将给定命令列表(的部分)传过图形流水线两次来有效操作,而不是实际上发出第二命令集合以再一次生成图元(像在应用级方法中那样),且不是改变流水线使得单个渲染经过可使用更多可视性信息(像在“延迟流”方法中那样)。
第一处理经过导出或确定用于帮助选择要响应于所存储命令列表的该部分的命令而绘制的图元中哪个图元要在本发明的第二处理经过中对每个采样点进行处理,所述第一处理经过可以任意所需且合适方式、例如根据要用来确定图元是否要在采样点进行处理的准则来执行。
优选地,第一处理经过对采样点集合的每个采样点确定可用来帮助选择要对各个采样点进行处理的图元的数据。
(这里应该注意,本文对“第一”处理经过的引用旨在将该经过仅区别为是本发明的处理经过的第一处理经过,且例如不要求该经过是在可被执行的命令列表(或其它)上的所有处理经过的第一经过(虽然这可能是这种情况)。类似评论应用到对“第二”处理经过的引用。将还能够使其它处理经过出现在本发明的第一与第二处理经过之间(尽管这不是优选的)。
同样,在本发明的处理经过中,对在该命令列表部分的命令上执行处理经过的引用旨在是指包括由图形处理***执行那些命令中的某些或全部的处理,不是指命令列表本身的某种形式的处理、例如写入该列表的性能,读命令列表并执行其命令(适当时):命令列表本身不被写入。)
在特别优选实施例中,第一处理经过导出或确定数据,所述数据可帮助确定要响应于命令列表的该部分中的命令而绘制的图元中哪个(些)图元将在所涉及采样点可见。这尤其有用,因为它允许例如通过对应于该命令列表部分的图元的第二处理经过如果需要就只处理(例如,并优选地渲染)可见图元,因此例如避免在第二处理经过中渲染实际上在给定采样点不可见的图元。
因此,在特别优选实施例中,用于导出数据以帮助选择对应于命令列表的该部分的图元中要在每个采样点进行处理的图元的步骤或装置,包括导出或确定可帮助确定对应于命令列表的该部分(对其响应而绘制)的图元中哪个或哪些图元是或者可能是在每个采样点可见的数据(并接着存储该数据)。
对这些布置中的图元的可视性“测试”可按照需要执行,但是在优选实施例中,包括在每个样本位置执行深度(Z)测试以便基于该图元的Z(深度)值确定在每个样本位置的可见(例如,并优选地根据所定义可视性测试确定最近的)图元,这在本领域是公知的。
因此,在特别优选实施例中,第一处理经过包括在每个样本位置在对应于命令列表的该部分的图元上执行Z测试(深度测试),优选地以便基于该图元的Z(深度)值确定可用来对要在每个样本位置进行处理的图元进行标识的数据。
在这些布置中,用来例如确定要处理的图元的深度测试Z比较函数按照要求(且对要处理的图形数据适当时——实践中应该使用对正在被处理的数据(图元)所定义的测试)可为“<”(小于)、“<=”(小于或等于)、“>”(大于)或者“>=”(大于或等于)。
优选地,在第一处理经过中以适当方式(且优选地,就深度(或其它)测试而言,以对所涉及图形处理***的正常方式)渲染图元以便允许执行深度(或其它)测试。
同样,在这里要领会,在本发明的优选实施例中,在本发明的第一处理经过中导出的“图元选择”数据(至少部分)(例如使用从其导出的数据)从对要响应于正在处理的命令列表的该部分中的命令而绘制的图元进行处理中(且优选地从对所述图元渲染中)导出。类似地且如本文进一步所述,本发明优选在第一处理经过中包括对要响应于正在处理的命令列表的该部分中的命令而绘制的图元(优选地,如将在下文进一步所述,以更有限的、例如“仅深度”方式)进行渲染(绘制),且接着对要响应于在第二处理经过中再次被处理的命令列表的该部分中的命令而绘制的图元进行渲染(绘制)(优选地,这次用于显示(输出))。
在一种特别优选实施例中,只有确定用于帮助选择要在每个采样点进行处理的图元所必需的处理(渲染)在第一处理经过中执行。这可意味着在命令列表的该部分中的某些命令实际上不在第一处理经过中执行。
因此,在基于深度测试的确定的情况下,在一种特别优选实施例中,在该命令列表部分上的第一处理经过优选包括在要响应于命令列表的该部分中的命令而绘制的图元上执行仅Z(仅深度)渲染经过,即在其中渲染图元、但在其中有效的仅渲染状态为Z及Z测试的读与写的处理经过。
对在通过命令列表的第一处理经过中所执行的处理进行限制具有这样的优势:该处理经过可更有效并消耗较少资源,因此使它例如更可接受在更受限***中进行执行。例如,在仅Z渲染经过的情况下,可填充Z缓冲器,但是可减少或最小化其它存储器的访问,且片元处理器可为空闲。
因此,在一种特别优选实施例中,命令列表的(对应于所存储命令列表的该部分的图元的)第一处理经过包括只执行确定用于帮助选择要在每个采样点进行处理的图元的数据所必需的处理。
因此,在基于深度测试的测试的情况下,在一种特别优选实施例中,对应于所存储命令列表的该部分的图元的第一处理经过包括在所述图元上执行仅Z渲染经过,以便确定用于帮助标识在对应于正在处理的所存储命令列表的该部分的图元中哪个或哪些图元可能或应该在第二处理经过中在每个采样点被处理的数据。
但是,如果需要,将还能够执行多于确定与要在通过命令列表在第一处理经过中在每个采样点进行处理的图元有关的数据所需的最小处理。这对于例如允许在第一处理经过期间建立其它有用数据结构可能是合乎需要的。例如,第一处理经过还可执行正被执行的图元的某些***操作,且存储(例如缓冲)该数据以供第二处理经过使用。
本图形处理***可按任意适合及所需方式配置成执行第一处理经过。为此,将它优选设置为适当渲染状态(例如仅Z渲染状态)。(如本领域已知的,图形处理器为确定该处理器将在它接收到的图形图元上执行的处理而设置的渲染状态因此可用来对执行的处理进行控制。)
为此,如本领域已知的,在发送命令列表的该部分用于第一处理经过之前,可例如通过刷新处理器并将其状态设为新(例如仅Z)状态来对该(渲染)“状态”进行全局(即对所有处理单元)设置。
但是,在图形处理***具有可例如与图元和/或片元相关联的多个预定义渲染状态的特别优选实施例中,例如在申请人较早前的专利申请GB-A-2420261所述的技术中,则优选地将可用预定义渲染状态之一(例如,渲染状态索引“0”(或者其它索引))设置为要用于本发明的第一处理经过的渲染状态(例如,且优选地为仅Z渲染状态)。接着,这将允许例如在将图元(和/或片元等)发送用于第一处理经过时用适当“第一经过”渲染状态索引等对图元进行标记,使得对它们进行相应处理而不是例如必须对整个处理流水线的状态进行全局刷新与改变。
优选地,该布置如下:在对命令集合触发按本发明的方式的第一处理经过时,与要响应于命令集合而绘制的每个图元相关联的预定义渲染状态(例如,渲染状态索引(或者标记等))在图元被发送用于第一经过处理之前被改变(重写)为预定义的“第一经过”渲染状态(但是,只对该经过改变)。接着,这将允许图元自动为该经过拣选例如仅Z的第一经过渲染状态,而不需要对它们和/或处理器的渲染状态的早期重定义或改变。
类似地,优选的是图形处理***支持片元着色程序,因为将存在对第一经过(例如仅Z)处理(渲染状态)保留且使用的预定义片元程序地址。则,这将再次允许图元及片元在经受本发明的第一经过时用该预定义片元程序地址进行标注,且因此避免例如对图形处理器应用全局第一经过(例如仅Z)状态的需要、和/或改变该处理器的中间状态以推进图元和/或片元正在经受本发明的第一经过的信息的需要。
相应地,在这些布置中所保留的程序地址将触发第一经过处理的适当动作(例如片元着色器程序)。在优选实施例中,它仅仅使片元着色器(阶段或单元)被忽略(因为,例如在仅Z的渲染状态的情况下,例如将不需要执行片元着色程序,且因此初始化片元着色器的电路可仅仅响应于所保留程序地址而将其省略)。
在第一处理经过中导出并存储用于帮助选择要对每个采样点进行处理的数据,可具有任何合适且所需形式。该数据可例如取决于第一处理经过的性质。优选地,它包括提供确切或保留信息用于选择要在第二处理经过中对采样点进行处理的图元。
在第一处理经过中导出的数据可以、并在优选实施例中允许对要针对一个或每个采样点进行处理的单个图元进行标识,或者它可只最多允许对要针对一个或每个采样点进行处理的一组图元进行标识。后一种情况可还具有优势,因为它可还允许减少在第二处理经过中对采样点所处理的图元的数量。
在第一处理经过中所确定的数据可例如、并在优选实施例中直接指明要在第二处理经过中对采样点进行处理的一个或多个图元,或者它可例如为、并在另一优选实施例中是可用于导出要对采样点进行处理的图元的标识的数据。
在后一情况下,该数据可例如、并在优选实施例中包括可用于排除或拒绝图元对给定采样点的处理(使得,因此最多只有图元的子集将在第二处理经过中对该采样点进行处理)。
因此,在一种优选实施例中,导出的用于帮助一个或多个图元的选择的数据可包括能够帮助标识所述一个或多个图元、且优选地标识应该对采样点进行处理的图元的数据。
在另一优选实施例中,该数据包括能够帮助标识应该不对采样点进行处理的一个或多个图元、例如并优选地使得能够从第二处理经过中的处理对那些图元进行标识及拣选或拒绝的数据。此外,该数据优选允许从处理中忽略除单个图元外的所有图元,但是它可只允许对于给定采样点拒绝除了图元中之一以外的一些而不是所有。
类似地,在优选实施例中,导出来帮助选择要对采样点进行处理的图元的数据包括能够指明、或者能够用于导出对应于命令列表的该部分的图元中要对一个(每个)采样点进行处理的图元的标识。
在优选实施例中,确定并存储的数据帮助确定对采样点最近(或最远)的图元,和/或直接指明在采样点最近(或最远)的图元。
在一种特别优选实施例中,在第一处理经过中导出的并在第一处理经过之后存储的数据包括从第一处理经过中导出的深度缓存(即,在第一处理经过期间对每个采样点所确定的Z值)。如本领域已知,这些深度缓存值将指明在每个采样点发现的最近(或最远)图元的深度,并因此能够例如经由深度测试用来确定(标识)哪个(哪些)图元将在第二处理经过期间在每个采样点进行处理。(这与上述的应用驱动两阶段处理类似,其中第一经过用来“填充”深度缓冲器,使得深度信息能够接着被用于“过滤”第二处理经过的图元。)
在这种情况下,深度缓存值将不直接指明要在第二处理经过中对每个采样点进行处理的图元,而是要提供用于选择(或标识)要处理的图元的信息,因为如下文进一步所述,它们能够被用来从在第二处理经过中对采样点进行处理中拣选图元。
在如上所述第一处理经过为在与命令列表的该部分对应的图元上的仅Z经过的情况下,以这种方式存储并使用深度缓存数据可尤其适当并具有优势。
在另一优选实施例中,导出并存储用于帮助选择或确定要在第二处理经过中对每个采样点进行处理的图元的数据,包括要进行处理的图元的标识符(即,能够用于对要在第二处理经过期间对每个采样点进行处理的一个或多个图元进行标识的标识符)。这可在例如第一处理经过不生成Z值的情况下是适当的。它将还允许使用图元标识符而不是Z测试来对要在第二经过中进行处理的图元进行标识(则可至少在某些情况下是合乎需要和/或有优势的)。
在这种情况下,确定并存储的数据将直接指明要在第二处理经过中对采样点进行处理的图元。
按照要求,此类图元标识符的存储可代替在第一处理经过中的Z缓冲器或者其填充。优选地,也确定并存储Z缓存。
在这种布置中的图元标识符能够按照要求而生成。优选地,使用递增计数器来在每个图元进入流水线以供第一经过时给它们分配ID,然后,例如在写入对应Z缓存元素(适当时)时,将在第一经过中对采样点所标识的相关图元的ID写到适当的图元ID存储器(例如缓冲器)。
然后,在第二处理经过中,将该计数器复位并重启动(使得在第二经过中每个图元将从该计数器拾取与它在第一经过中拾取的相同ID),如前文那样从计数器给图元分配ID,且接着与先前对所涉及采样点存储在图元ID缓冲器中的图元ID(来自第一经过)相比,每个片元可具有其来自第二经过的相应图元ID,并相应地在第二经过中被(或不被)着色及读出(即,取决于其ID是否与对所涉及采样点的所存储图元ID相匹配)。
在这种情况下,来自第一处理经过的Z缓存值(如果存在)不需要、并优选地不被用于每采样点处理(或非)测试,因为图元ID被用于该目的。但是,如果需要,Z值可还用于其它测试,例如早期分级Z测试。
在经受了本发明的第一处理经过的命令列表的该部分中的命令上执行的第二处理经过可为任意合适及所需的此类经过。优选地,它包括在要响应于命令列表的该部分中的命令而绘制的图元上的“正常”或“所有”渲染经过,即给那些图元提供要将所述图元显示在显示器上所需的数据的渲染经过。因此,例如,优选地以有效的所有渲染状态执行第二经过。
第二处理经过将使用从第一经过确定的图元选择(例如可视性(或者其它))信息。此外,可以任意所需及合适方式来使用这种信息,但是优选地,用这种信息来尽可能地避免为任意给定采样点对被确定为要在第一处理经过中对该采样点进行处理的图元的图元以外的任意图元进行处理(因为这使第二处理经过的效率最大)。
如上所述,如果第一处理经过确定并存储要在给定采样点进行处理的图元的标识符,则优选地,如上所述,第二处理经过使用所存储标识符来确定每个采样点的适当图元,并接着只在该采样点(对该采样点)处理(优选地,渲染)该图元。
如果在第一处理经过中确定并存储的用于标识要被处理的图元的数据包括深度缓存(Z值),则,第二处理经过能够、并在优选实施例中使用所存储深度缓存来执行适当的深度测试,以便确定要对每个采样点进行处理的图元。
因此,在一种优选实施例中,第二处理经过使用来自第一处理经过的所存储图元标识符来确定要对一个采样点且优选地为每个采样点进行处理的图元,且在另一优选实施例中,第二处理经过使用来自第一处理经过的所存储深度缓存值来要对一个采样点且优选地为每个采样点进行处理的图元。
在其中深度测试在第二处理经过中执行的特别优选实施例中,使用在第一处理经过中导出的深度缓存值来执行的深度测试(Z测试)为早期深度测试(即,在(片元)渲染之前执行的深度测试)。然后,对于每个采样点,这将允许早期深度测试在渲染之前拣选除了将对所涉及采样点进行处理的那一个图元之外的所有图元(片元)(因为只有那个图元(来自该图元的片元)(或者具有与那个图元相同深度值的图元)将经过早期深度测试)。
可按照需要并使用例如任意已知及合适技术来执行在这些布置中的深度测试。
但是,这里应该注意,如果在第二处理经过中使用深度测试,则如果该深度测试具有<=(小于或等于)或者>=(大于或等于)的形式(适当时),那将导致在第二处理经过中对采样点处理正确图元,如果形式<(小于)或者>(大于)的深度比较被用于第二处理经过,那将导致所有图元在第二处理经过中不能进行深度测试(因为深度缓冲器将已包含要对采样点进行处理的图元的深度值)。
因此,在优选实施例中,本发明配置或布置成考虑到这种可能性,即,如果需要则确保假如所需图元的深度值将已存在于深度缓冲器中(来自第一经过)则所需图元将在第二经过中经过深度测试(Z测试)。
如果需要,可用多种方式考虑这种可能性。第一,如果用于确定哪个图元要在第二处理经过中进行处理的测试包括在第二处理经过中要处理的图元与正在处理的图元的所存储标识符的比较,则它将根本不会上升。这种情况下,因为要在第二处理经过中进行处理的图元通过给第二处理经过中的图元(且因此为片元或采样点)所分配的图元标识与在第一处理经过中对给定采样点(片元)所存储的标识之间的标识之间的比较来确定,所以在第二处理经过中正确图元将始终“经过”该测试。
例如,将还能够只对深度测试对其已经定义为小于或等于、或者大于或等于的图元的运行执行本发明,使得能够保证本发明将产生正确结果。如果图元被生成为经受小于或大于测试,则本发明可对于那些图元失效。可例如用图形处理驱动器中的软件改变来实现这种布置,因此允许在具有对其的最小及仅局部变化的现有设计中使用本发明。
在另一特别优选实施例中,在第二处理经过期间执行的深度测试设置成使用<=(小于或等于)或者>=(大于或等于)的Z比较函数(适当时)。如果需要,则对第二处理经过将Z比较函数改变成这种情形。
因此,在一种优选实施例中,通过图元的第二经过的深度测试用被改变成<=(小于或等于)的<(小于)的Z比较函数以及被改变成>=(大于或等于)的>(大于)的函数来执行。
在图形处理器中,这种改变可为自动或固定的,或者它可例如在图形处理器中提供,但是如果需要可留给应用开发人员和/或平台开发人员来实现。
在该后一情况下,例如,对第二处理经过改变Z比较函数的可能性可提供例如为图形处理器驱动器的配置选项,该配置选项则将允许平台集成人员决定是否使用这种方法。例如,可提供具有实现用<=测试代替任意<测试并用>=测试代替任意>测试的标记的应用扩展,并如果要实现该特征则由应用对其进行调用。如果需要,这将允许仅用驱动器中的软件改变来实现本发明的这种改变。
如果需要,则将还能够使应用开发人员写(重写)其应用程序以使用<=和>=函数代替<和>函数,使得可使用本发明。
在另一优选实施例中,如果必需,则将在第一经过中确定并存储的Z值适当偏移(即,对于Z比较的<(小于)系列则远离观察点或者对于Z比较的>(大于)系列则朝向观察点),以便再次确保在第二处理经过中适当图元将经过Z测试。Z值的这种偏移将避免对第二处理经过改变Z比较函数的需要,但仍要再次确保在使用本发明时要绘制与没有本发明情况下对采样点绘制的相同图元,并将不影响Z测试中连接(tie)的结果。
在这些布置中,给在第一处理经过中确定的Z值所施加的偏移优选为可以任意效果给该Z值施加的最小偏移。因此,在整数Z缓存的情况下,适当时,将在第一处理经过中写入的Z值优选递增或递减1以便使其偏移。对于浮点Z缓存,优选地,将所确定Z值写入Z缓冲器之前,(分别)对它加上(或减去)可对所确定Z值加或减的最小数,以便使所述Z值偏移。(在这些情况下,最小值可例如并优选地从Z值的指数及其尾数的恒定大小来确定。)
如上所述,在本发明中执行的命令列表被存储在存储器中(并将因此在本发明的执行期间从其读出)。
存储命令列表的存储器可为任意合适及所需的这种存储器。如本领域已知的,它一般为并在优选实施例中是图形处理***外部的存储器,例如主机***存储器。但是,将还能够把命令列表(命令列表部分)以片上方式存储在图形处理器本身上,例如在片上缓冲器中(该缓冲器可不例如具有DRAM的形式,但可为具有某种其它形式的缓冲器,例如FIFO)。
以本发明的方式进行处理的图形命令列表可为任意合适及所需的这种列表,例如使场景在立即模式渲染***中进行渲染的命令列表,或者在基于区块的***中用于给定区块的命令列表。在优选实施例中,在基于区块的***中,针对用于区块且优选地单独用于每个区块的命令列表来执行本发明。
所存储命令列表可包含任意适合及所需图形命令,即使它将包含至少某些将触发若干图元的绘制使得命令列表的该部分将生成图元序列以供处理的命令。因此,命令列表将包含具有将图元流注入到图形处理器(处理流水线)的作用的指令。
在命令列表中命令图元的绘制的命令可为任意合适及所需的这种命令。因此,例如它们可各自命令单个图元的绘制,或者例如命令图元序列的绘制。同样,这些命令可为要绘制的图元提供更详细的数据结构,和/或可例如更简单地表示为要查找的相关图元的地址。
在前一情况下,命令可例如具有“draw_single_polygon(polygondata)”的形式,其中绘制该图元所需的数据直接嵌入到命令操作数中(该数据可例如为前转换或后数据(适当时取决于图形处理***))。
在后一情况下,“set_attrib_address(attrib[1-16],address)”、“set_triangle_index_address(format,address)”以及“draw_triangle(first_triangle,triangle_count)”形式的命令例如在这种情况下可用于要绘制的图元,所述图元为三角形,所述三角形由“set_triangle_index_address()”命令所设置并由“draw_triangle()”命令所例示的角(corner)索引阵列中的三个要素的组构成,这在本领域是已知的。
因此,该命令列表可包括例如设置诸如整数角索引缓存的图元数据索引缓存、与其它命令交替以使用来自索引缓存的数据来绘制图元的命令。
但是,一般而言,本发明可应用于命令列表,且构造绘制图元的命令。
所存储命令列表中以本发明的方式进行处理的部分可包括任意合适及所需的这种部分。它可包括所涉及的整个命令列表,尽管在优选实施例中,它是给定命令列表的子集(即小于其全部)。
在特别优选实施例中,命令列表中以本发明的方式进行处理的部分可包括该命令列表中将使要绘制的(连续)不透明图元的运行的部分。本发明尤其可适用于处理不透明图元,因为不透明图元一般适用于使用例如深度测试技术进行拣选。
因此,在优选实施例中,本发明将通过在第一处理经过中逐个发送经由图形处理的图元而处理不透明图元序列,接着对第二处理经过又逐个发送经由图形处理的图元。
导出与要对其处理的图元有关的数据的采样点可类似地为任意所需及适合的此类采样点(及采样点的集合)。在优选实施例中,它们包括采样点,且优选地包括要在对这些图元进行处理以供显示的时候栅格化这些图元时所使用的采样点。
图形处理***以本发明的方式的操作可以任意所需及适合方式进行触发,例如使用任意适当机制来触发此类操作。
在一种特别优选实施例中,以本发明的方式的操作通过将适当命令包含在命令列表中以便触发该操作来进行触发。
最优选地,要触发本发明的处理经过的命令***在命令列表中要以本发明的方式进行处理的部分的起始(例如在运行不透明图元的绘制的起始)。因此,该命令例如及优选将图形处理器设置到执行第一处理经过的模式,例如及优选为仅Z渲染模式。
类似地,将命令优选***在命令列表的该部分的结尾(例如及优选地,在用于绘制不透明图元的运行的命令集合的结尾),以便使图形处理返回并重新执行所述命令列表的该部分,但是这次是以不同模式(例如及优选地,以正常(或所有)有效渲染状态)。
该后一(“结尾”)命令优选地为条件分支命令,如果图形处理器当前处于第一经过(例如仅Z)模式则所述条件分支命令要触发返回到命令列表的该部分的开始的分支以及处理模式的改变(即刚完成本发明的第一处理经过),否则则不(即,分支条件是当前处理模式是否为第一经过模式)。
使用该方式的条件分支命令在本发明的第一处理经过之后有助于直接触发在命令列表的该部分上的第二处理经过,同时允许处理在第二处理经过之后正常地继续。
如果需要,将能够把“部分的起始”及“部分的结尾”命令合并成单个命令。例如,如果指令用操作码域的某数量的比特来标识,则一个操作码可通过使用在指令字中其它位置的某些空闲比特来区别。备选地,分支地址的方向、前向/后向或零地址可用来区别要执行的命令。
在优选实施例中,由标识命令列表中要以本发明的方式进行处理的部分以及将适当命令***在命令列表的适当部分的前面及结尾的图形处理器驱动器将此类命令适当地包含在命令列表中。
将还能够用其它方式对以本发明的方式的操作进行触发与控制。
例如,图形处理器本身可例如在第一(例如仅Z)处理经过中标识命令列表中要用这种方式进行处理的部分(例如,通过考虑给每个图元所分配的渲染状态以了解它是否不透明),并例如将地址存储在该部分的开始命令的列表中,以便一旦完成了第一处理经过该处理就能跳回到该地址(命令)。装置或***寄存器可例如实现第一(例如仅Z)处理经过,作为“新区块”命令列表命令的副作用。
作为替代或补充,命令列表中的命令可例如通过将所保留每命令比特用于该目的来标记为要经受以本发明的方式的处理。命令列表中此类标记的命令的序列则将相应地区分适合于处理并将以本发明的方式进行处理的命令(命令列表的部分)的运行。
相信,上述形式的分支命令的使用可为新的并具有自身优势,且不只是处于本发明的上下文中。
因此,依照本发明的第三方面,提供了控制图形处理***的操作的方法,包括:
将分支命令包含在给图形处理***所提供的命令列表中,也触发至命令列表中其它点的分支的所述分支命令将在进行分支时还触发图形处理***的状态改变。
依照本发明的第四方面,提供了图形处理***,包括:
用于响应于图形处理***接收到的以供执行的命令列表中的图形命令而分支到命令列表中的其它点并改变图形处理***的状态的部件。
依照本发明的第五方面,提供了控制图形处理***的操作的方法,包括:
将条件分支命令包含在给图形处理***所提供的命令列表中,对于所述分支命令,进行分支的条件为图形处理***的当前状态。
依照本发明的第六方面,提供了图形处理***,包括:
用于响应于图形处理***接收到的以供执行的命令列表中图形命令的条件分支命令而根据图形处理***的状态分支或不分支到命令列表中其它点的部件。
如本领域技术人员可领会,适当时,本发明的这些方面及实施例可并优选地包括本发明在本文所述的优选或所选特征的任一或多个或全部。
因此,例如,图形处理***的状态优选为其渲染状态,由分支命令触发的状态改变优选地为对“所有”渲染状态的改变,和/或进行分支的条件所基于状态优选为图形处理***是否处于仅Z状态。类似地,布置优选如下:分支命令的条件基于图形处理***的当前状态,且如果进行分支则分支命令触发该状态的改变。
根据上文,将领会:在特别优选实施例中,本发明包括执行第一“仅Z”处理经过以便填充深度缓冲器,然后执行第二处理经过以便渲染用于显示的图元,但是使用早期Z测试及“所填充”深度缓冲器来从第二处理经过拣选图元。
因此,依照本发明的第七方面,提供了操作图形处理器的方法,其中要由图形处理器执行的、包含指示图形处理器绘制图元的命令的图形命令列表在被图形处理器执行所述命令之前被存储在存储器中,所述方法包括:
在要响应于所存储命令列表的一部分中的命令而绘制的图元上执行仅Z处理经过,以便用那些图元的适当深度值填充深度缓冲器;以及
在要响应于所存储命令列表的该部分中的命令而绘制的图元上执行第二处理经过,以便渲染那些用于的显示图元,使用所填充深度缓冲器及早期Z测试来从该处理经过的处理中拣选图元。
依照本发明的第八方面,提供了图形处理***,其中要由图形处理***执行的、包含指示图形处理***绘制图元的命令的图形命令列表在被图形处理***执行所述命令之前被准备并存储在存储器中,所述图形处理***包括:
用于在要响应于所存储命令列表的一部分中的命令而绘制的图元上执行仅Z处理经过以便用那些图元的适当深度值填充深度缓冲器的部件;
用于要在响应于所存储命令列表的该部分中的命令而绘制的图元上执行第二处理经过、使用所填充深度缓冲器及早期Z测试来从该处理经过的处理中拣选图元的部件。
如本领域技术人员将理解的,本发明的这些方面能够并优选地包括本文所述发明的任一或多个或全部优选及选择特征。因此,例如,所存储命令列表中要进行处理的部分优选地为引起要绘制的不透明图元的运行的部分。类似地,在第二处理经过中执行的深度测试优选具有<=或者>=的形式,或者在第一处理经过中确定的深度缓存值优选地在用于第二经过中之前进行偏移,如上所述。
如本领域技术人员将理解的,可对本发明上述各种特征进行各种改变、变化和/或添加。
例如,第一处理经过可并在优选实施例中使用隐藏表面去除技术,例如早期Z测试、分级Z测试、阻塞拣选技术等,以便设法尽可能早地从处理中消除图元和/或片元。
类似地,第二处理经过可并在优选实施例中使用隐藏表面去除技术,例如分级Z测试、阻塞拣选技术等,以便设法尽可能早地从处理中消除图元和/或片元。
要领会,在本发明中,要以本发明的方式进行处理的命令列表中的部分被图形处理器从存储器中读出两次,一次用于第一处理经过,然后再次用于第二处理经过。(换句话说,第一处理经过包括从存储器中读出命令列表的该部分,且第二处理经过包括再次从存储器中读出命令列表的该部分。类似地,本发明将包括读命令列表的该部分并在命令列表的该部分上执行第一处理经过,然后再次读命令列表的该部分并在命令列表的该部分上执行第二处理经过。)
将能够使命令列表的该部分每次从其初始位置(例如,外部存储器)读出,但在优选实施例中,从命令列表中为第一处理经过所读出数据的一些或全部在它对第一处理经过读出之后或之时能够并优选地存储在图形处理器本身上(例如,被缓存在图形处理器本身上),使得它接着在图形处理器上的“本地”存储器中(在片上存储器中)对第二处理经过可用。那么,这将避免必须从初始例如外部存储器读出该数据用于第二处理经过。
因此,在一种优选实施例中,从同一存储器读出所存储命令以用于第一及第二处理经过,但是在另一优选实施例中,命令列表的该部分中的一些或所有命令从不同存储器中读出用于第二处理经过。(但是,应该注意,在这些情况的每个中(及实际上,一般在本发明中),被读出用于第二处理经过的(所存储)命令就是或者来自于供第一处理经过使用的所存储命令:不对第二处理经过新生成这些命令(在本发明中命令序列只生成一次:它不对第二处理经过再次生成)。)
如果,例如可用片上存储器受到限制,那么命令列表中要用本发明的方式进行处理的那些部分可例如始终被限制到将适应片上存储器的大小(其中,例如,那些大于该大小的部分,例如命令不透明图元的运行的部分被分成若干要适合“片上”的较小部分),或者命令列表的一部分可存储在“片上”存储器中(并从其中取出用于第二经过),其中该数据的其余部分则被从其它(外部)存储器取出用于第二经过。将还能够,例如使用这两种布置,其中例如如果命令列表的部分超过片上存储器容量多于阈值量则将它们分成较小部分。
为此,所提供的“片上”存储器的大小可按照需要、例如基于性能对“片上”存储器成本的折中来进行选择。
尽管如上所述,本发明在以上方面中要求从存储器对命令列表的该部分读出两次,但是申请人意识到还能够在不需要对命令列表的该部分读出两次的情况下利用本发明的目标及优点。在这种情况下,***可改为生成并存储(缓存)来自第一处理经过的足够信息,以便允许***在不需要再次读出命令列表的情况下执行第二处理经过。这可能因此付出必须存储来自第一处理经过的更多“片上”数据并在那个经过期间执行更多处理的代价,但是这将避免必须再次读出命令列表的该部分。
因此,依照本发明的第九方面,提供了在图形处理***中处理图元的方法,该方法包括:
在图元序列上执行第一处理经过,以便对采样点集合的每个采样点确定图元序列中要对该采样点进行处理的图元中的一个或多个图元;
存储数据以便允许在每个相应采样点处理所确定的一个或多个图元;以及
使用所存储数据执行第二处理经过以便对每个采样点处理图元序列中的相应一个或多个图元。
依照本发明的第十方面,提供了一种图形处理***,包括:
用于在图元序列上执行第一处理经过以便对采样点集合的每个采样点确定图元序列中要对该采样点进行处理的图元中的一个或多个图元的部件;
用于存储数据以便允许在每个相应采样点处理所确定的一个或多个图元的部件;以及
用于使用所存储数据执行第二处理经过以便对每个采样点处理图元序列中的相应一个或多个图元的部件。
如本领域技术人员要领会的,适当时,本发明的这些方面及实施例能够并优选地包括本文所述发明的优选及选择特征中任一或多个或全部。因此,例如,第二处理经过将优选(使用所存储数据)对用于显示的图元进行渲染。
在本发明的这些方面及实施例中,图元序列优选地经过命令列表的所存储部分的读出来提供,如上所述。但是,图元可还或者改为例如被CPU一次一个地馈送给图形处理器,或者经由直接存储器访问(dma)流入,等等。
优选地,第一处理经过使用图形深度测试技术确定图元序列中哪个或哪些图元要对每个采样点进行处理,如上所述。优选地,它确定在每个采样点的单个图元(并存储其数据)。
在本发明的这些方面的一种优选布置中,第一处理经过包括运行任意必需的***操作,但不对任意材质进行采样,以便生成每个采样点的信息,所述信息在第一处理经过之后被存储以便允许采样点例如在第二经过中被渲染(并不针对每个采样点重新处理整个图元序列)。然后,该数据可在第二经过中用来对用于显示的采样点进行渲染。
该布置具有不需要将命令列表再次读入的优点(如上所述),但将要求在第一经过之后将对更多数据进行“片上”存储。它还要求在第一经过中执行图元设置及***(但还能在第二经过中避免材质的读取及运行所阻塞片元(图元)的片元程序的代价)。
在本发明的这些方面的另一优选实施例中,在第一处理经过之后存储以允许执行第二处理经过的数据包括一组每图元的状态数据,包括例如角索引、渲染状态数据(例如索引)等,在第一经过中发现其为将写到所涉及采样点的图元状态。然后,第二处理经过可处理所存储图元状态数据以便渲染采样点。
此外,该布置将要求将图元状态数据适当存储例如并优选地在片上图元状态数据区块缓冲器中,但是将避免例如使第二处理经过重新读取命令列表、例如解释命令列表、栅格化图元并执行Z缓存读、写及比较的需要。在这种布置中,可还必需例如对后续图元具有副作用的图元状态进行标识,且在此类命令的情况下将刷新“图元状态数据缓冲器”。
在此类优选布置中,对每个采样点存储的图元数据包括图元命令,发现该命令为将写到(被绘制于)所涉及采样点的命令。如果图元命令本身包含渲染所涉及图元以供显示所需的所有(状态)数据,那么这可特别便利。
用本发明的方式进行处理的图元可为任意合适及所需此类图元。它们优选具有简单多边形的形式,这在本领域是已知的。在优选实施例中,图元为三角形。
在特别优选实施例中,在单个图形处理平台上执行本发明的各种功能,所述图形处理平台生成并输出写到用于显示装置的帧缓冲器的数据。
本发明的各种功能、要素等可按照需要实现,且例如并优选地包括能够操作成执行本发明的各种步骤及功能等的适当功能单元、处理器、处理逻辑、电路、微处理器布置等,和/或能够操作成由执行本发明的各种步骤及功能等的适当功能单元、处理器、处理逻辑、电路、微处理器布置等执行。
本发明可应用于任意形式或配置的图形处理器,例如具有“流水线”布置的图形处理器。在优选实施例中,它可被应用到硬件图形流水线、优选应用到渲染流水线。
本发明可应用于所有形式的图形处理及渲染,例如2D图形处理、3D图形处理、立即模式渲染、延迟模式渲染、基于区块的渲染等,虽然它特别可应用于使用延迟模式渲染的图形渲染器,尤其可用于基于区块的渲染器。
如从上文将领会到的,本发明尤其可应用于3D图形处理器及处理装置,且因此扩展到包括本文所述方面的任意一个或多个方面的设备、或者依照本文所述方面的任意一个或多个方面、或者依照本文所述方面的任意一个或多个方面操作的用于处理3D图形的图形处理器、图形处理平台和/或图形处理方法。服从于执行上述特定功能所需的任意硬件,此类3D图形处理器能够另外包括3D图形处理器包含的有用功能单元等中任意一个或多个或全部。
类似地,在优选实施例中,本发明扩展到包括本文所述方面的任意一个或多个方面的设备、或者依照本文所述方面的任意一个或多个方面、或者依照本文所述方面的任意一个或多个方面操作的用于处理2D图形的图形处理器、图形处理平台、和/或图形处理方法。服从于执行上述特定功能所需的任意硬件,此类2D图形处理器能够另外包括2D图形处理器包含的有用功能单元等中任意一个或多个或全部。
还要领会,本发明可用于为任意合适及所需输出及输出装置、例如合适的显示装置处理图形。因此它可用于例如图形处理以供在显示屏幕上的显示,用于图形处理以供打印(例如在打印机渲染引擎中)等。
如从上文要领会的,本发明将包括生成绘制图元的图形命令序列,然后在该生成的图形命令序列上执行本发明的两个处理经过。
依照本发明的另一方面,提供了在图形处理***中操作图形处理器的方法,其中生成指示图形处理器绘制图元的图形命令列表以供执行,该方法包括:
图形处理器:
在所生成图形命令序列上执行第一处理经过,以便导出能够帮助从要响应于所生成图形命令序列而绘制的图元中选择一个或多个图元用于针对采样点集合中每个采样点进行处理的数据;
存储该导出的数据,用于帮助要在每个采样点进行处理的图元的选择;以及
在所生成图形命令序列上执行第二处理经过,以便对要响应于所生成图形命令序列中的命令而绘制的图元进行处理,使用所存储数据来帮助从要响应于所生成图形命令序列而绘制的图元中选择要在第二处理经过中对每个采样点进行处理的一个或多个图元。
依照本发明的再一方面,提供了在图形处理***中使用的图形处理器,其中生成用于指示图形处理器绘制图元的图形命令列表供图形处理器执行,所述图形处理器包括:
用于在所生成图形命令序列上执行第一处理经过以便导出能够帮助从要响应于所生成图形命令序列而绘制的图元中选择一个或多个图元用于针对采样点集合中每个采样点进行处理的数据的部件;
用于存储该导出的数据以便帮助选择要在每个采样点进行处理的图元的部件;
用于完成以下功能的部件:在所生成图形命令序列上执行第二处理经过以便对要响应于所生成图形命令序列中的命令而绘制的图元进行处理,使用所存储数据来帮助从要响应于所生成图形命令序列而绘制的图元中选择要在第二处理经过中对每个采样点进行处理的一个或多个图元。
本领域技术人员要领会,适当时本发明的这些方面及实施例能够并优选地包括本文所述优选及任选特征中任意一个或多个或全部。因此,例如,所生成图形命令列表优选地触发不透明图元的运行的绘制。
实际上,本领域技术人员要领会,本发明的全部所述方面及实施例适当时能够并优选地包括本文所述优选及任选特征中任意一个或多个或全部。
依照本发明的方法可至少部分使用软件、例如计算机程序来实现。因此将可见,在从其它方面审视时,本发明提供了计算机软件,它在安装在数据处理部件上时具体适合执行本文所述的方法,计算机程序单元包括用于在该程序单元在数据处理部件上运行时执行本文所述方法的计算机软件代码部分,且计算机程序包括适合在该程序在数据处理部件上运行时执行本文所述方法的所有步骤的代码部件。该数据处理部件可为微处理器***、可编程FPGA(现场可编程门阵列)等。
本发明还扩展到计算机软件载体,所述载体包括这样的软件:在用于操作包括数据处理部件的图形处理器、渲染器或者微处理器***时结合所述数据处理部件导致所述处理器、渲染器或者***执行本发明的方法的步骤。这种计算机软件载体可为例如ROM芯片、CD ROM或盘的物理存储媒介,或者可为信号,例如线上的电信号、光信号或例如至卫星的无线信号等。
还要领会,不是本发明的方法的所有步骤都需要由计算机软件来执行,因此根据更广泛方面,本发明提供了计算机软件以及安装在计算机软件载体上用于执行本文所给方法的至少一个步骤的这种软件。
因此,本发明可适当地体现为与计算机***配合使用的计算机程序产品。这种实现可包括一系列计算机可读指令,所述指令固定到例如诸如盘、CD-ROM、ROM或者硬盘的计算机可读媒介的有形媒介,或者经由调制解调器或其它接口装置通过包括但不限于光或模拟通信线的有形媒介或者以无形方式使用包括但不限于微波、红外或其它传输技术的无线技术可传送到计算机***。所述系列的计算机可读指令包含本文先前所述的功能性的全部或部分。
本领域技术人员要领会,能够用若干与很多计算机体系结构或操作***配合使用的编程语言来写这种计算机可读指令。此外,这种指令可使用当前或以后的、包括但不限于半导体、磁的或光的任意存储器技术来存储,或者使用当前或以后的、包括但不限于光、红外、或者微波的任意通信技术来传输。预期这种计算机程序产品可如可去除媒介一样随附带的打印或电子文档进行分发,例如用收缩性薄膜包装的软件,随计算机***预先载入在例如***ROM或者固定盘上,或者从服务器或单子公告板通过网络、例如因特网或者万维网进行分发。
附图说明
本发明的若干优选实施例将仅以示例方式参考附图进行描述,其中:
图1示意示出了其中可实现本发明的图形处理***的第一实施例;
图2示意示出了可以本发明的方式进行处理的命令列表的第一实施例;
图3示意示出了用于触发以本发明的方式的操作的命令列表的第二实施例;
图4示意示出了其中可实现本发明的图形处理***的第二实施例;
图5示意示出了依照本发明的实施例的Z值的偏移;
除非另外指明,否则在附图中相同参考标号用于类似组件及要素。
具体实施方式
图1示出了本发明与可以本发明方式操作的示例图形处理***的第一实施例的实现有关的流水线阶段。图1示出在图形数据(顶点数据)经过转换及光照操作之后的流水线阶段(“向后转换”流水线阶段)。
图1中示出的图形处理***为基于区块的***,但是本发明同样可应用于其它***,例如如上所述的立即模式渲染***。
如图1所示,这个实施例的图形处理***接收输入命令列表2。这些列表由命令列表阅读器3从外部存储器读入,作为至图形处理***的输入。
图形处理***1还包括顶点载入器4,它可读入与要处理的图元的顶点有关的数据,例如位置及变化量数据。此外,可从外部存储器检索这个数据。
如图1所示,读入的命令及顶点数据被提供给图元设置阶段5,它响应于它接收到的命令及顶点数据设置要渲染的图元,这在本领域是已知的。
命令列表阅读器还给渲染状态单元6提供输入,所述渲染状态单元6将流水线控制并配置到由命令列表阅读器读入的命令所指明的适当渲染状态。因此,如图1所示,这种渲染状态单元将图形处理器1的阶段配置为适当状态以便在从图元设置阶段5经过流水线传递的图元上执行适当操作。
在图1所示的图形处理体系结构中,图元保留Z测试阶段7在图元设置阶段5之前。如本领域已知的,这种图元保留Z测试阶段7使用来自分级Z缓冲器、Z锥体(Z-pyramid)8的深度值数据来尝试有保留地拒绝可确定为要被已经处理的图元阻塞的图元(即,其深度值存在于Z锥体8中)。
接着,下一阶段是使处理流水线的“设置”在图元设置阶段5中经过图元保留Z测试的图元。
然后,那些图元被栅格化到适当样本位置及代表所生成的那些样本位置的片元以供渲染。这在栅格化阶段9中执行。
栅格化的片元接着被提交到片元早期Z测试阶段10,所述片元早期Z测试阶段10使用Z缓冲器16中的值来设法拣选能够已确定为被先前已处理的片元阻塞的片元,这在本领域是已知的。
然后,将经过片元早期Z测试阶段10的片元发送到对片元进行着色的片元着色阶段11。如本领域已知的,这种着色可包括任意合适及所需片元着色处理,例如对片元执行片元着色器程序,对片元应用材质(使用例如材质高速缓存12),对片元应用混合、雾化或其它操作等,这在本领域是已知的。片元着色阶段11还可使用其它输入,例如图1所示的片元着色器程序及均衡(uniform)13。
接着是片元测试阶段14,其中它对该片元执行流水线深度测试的结束,以便使用本领域公知的该片元的位置的Z缓存值16并还使用例如任意必需α和/或模版测试来确定所渲染片元是否在最后图像中真正可见。
然后,将经过片元测试阶段14的片元被传递到片元操作阶段15,所述片元操作阶段15在片元上执行任意必需的剩余操作,例如与帧缓存混合、抖动等
最后,输出片元、颜色等值被写入到适当颜色缓冲器17,它们可例如从所述颜色缓冲器17输出到帧缓冲器以供显示。片元的深度值还被适当地写到Z缓冲器16,这在本领域是已知的。
如本领域已知的,对于缓冲器提供的每个采样点(实质上对于要处理的区块的每个采样点),颜色缓冲器17与Z缓冲器16将分别存储适当颜色等或者Z值。
图1示出了具有四个颜色缓冲器17及Z缓冲器16的布置。但是,本领域技术人员要领会,按照需要可在渲染流水线结束使用输出缓冲器的不同组合及布置。
要理解,图1所示(下文在图4中描述)的图形处理器的阶段、要素及单元等的每一个可按照需要执行,并因此将包括例如适当电路和/或处理逻辑等以执行必需的操作与功能。
现在将依照本发明的实施例描述图1所示图形处理***的操作。
如上文所述,本发明包括经过图形处理***两次发送要响应于图形命令列表的一部分的命令而绘制的图元,一次是在旨在确定哪个图元将出现在每个采样点的第一经过中,然后另一次是在更彻底地对出现在每个采样点的图元进行处理例如并优选地以便准备显示图元所需的数据的第二经过中。
因此,在以本发明的方式的操作中,命令列表阅读器3将首先对命令列表中可应用本发明的方式的操作的部分读入并进行标识(用于触发此类操作的合适机制将在下文更详细地描述)。
响应于对命令列表的这个部分进行标识,命令列表阅读器3将向渲染状态单元6发送适当命令,以便将处理器1配置成对命令列表的该部分以在本发明中为仅Z模式的处理进行处理。在这种仅Z模式的处理中,图形处理***1这样配置:有效的仅写入状态为Z及Z测试的读与写。
与命令列表中该部分的命令对应的图元接着正常地、但是以这个特定仅Z模式的处理集合通过处理流水线。
这允许用图元列表的该部分中的图元的适当Z值来填充Z缓冲器16及分级Z锥体8,但是同时存储器进行存取且使例如片元处理及着色最小化。
在到达命令列表中要用本发明的方式进行处理的部分的结束时(此外,将这向命令列表阅读器3指明的机制将在下文更详细地描述),则命令列表阅读器3识别这种情况并触发再次在命令列表的该部分上的处理(即,从存储器第二次读入命令列表中的该部分),但是这次在本实施例中将用于命令列表中该部分(命令列表中与该部分对应的图元的)的处理的渲染状态设置为由对于命令列表中所涉及部分所接收到的命令所指明的正常渲染状态。换句话说,命令列表阅读器3使渲染状态单元6将图形处理器1配置成对在命令列表的该部分上的第二经过用“正常”方式处理图元。
这意味着,在第二处理经过中,图元将被正常地处理,但是,例如在执行图元保留Z测试7及片元早期Z测试10时,那些测试将使用已经存储在Z缓冲器16与Z锥体8的、来自第一处理经过的Z值及数据。这将导致那些测试从所述处理中拣选除要对所涉及采样点进行处理的实际图元(及片元)以外的所有图元(并只使用图形处理***的正常Z测试等硬件)。
换句话说,来自第一处理经过的所填充Z缓冲器16与在第二处理经过中执行的Z测试一起,允许该***确定哪个图元将在第二处理经过中对每个采样点进行处理。
这允许该***在第二处理经过中避免实际上将被要响应于命令列表中正以这种方式进行处理的部分的命令而绘制的其它图元阻塞的任意图元的不必要处理、例如片元着色,因此使在命令列表的该部分上的第二处理经过更为有效。
图2及3示意示出了用于在本实施例中触发以本发明的方式操作的布置。
图2示出在存储器中的命令列表流包括用于绘制单个图元的命令的情况下这样做的优选实施例。图3示出了命令列表流包含用于绘制从存储器请求图元数据的多个图元的命令的情形。
在图2及3中所示的列表均与基于区块的渲染***有关,且因此包括开始新区块命令“T”及将处理分支到新区块的无条件分支命令“B”,如图2及3中所示。但是,如果忽略图3所示的区块相关命令,则该命令列表流将还与输入到立即模式、非区块化的图形处理单元的命令列表对应。
首先描述图2所示的布置。
如图2所示,命令列表30包括如上所述的开始新区块命令31及无条件分支命令32(以便触发新区块的开始),这在本领域是已知的。组合的命令列表30还包括指示绘制图元的命令33的运行。在这种实施例中,“绘制图元”命令33还包含绘制图元所需的所有数据。这些命令将由图形处理器的驱动器生成,并存储在存储器中,使得它们可被图形处理器的命令列表阅读器3访问。
图2还示出了***到命令列表中的两条新命令,即“有效的仅Z模式”命令“Z”34及“基于仅Z模式的分支条件”命令“Zb”35。这些新命令被驱动器***到预期用本发明的方式进行处理的命令列表的部分的周围,并进行操作,如下文将进一步描述的,以便触发用本发明的方式的操作。
在本实施例中,在命令列表序列上执行用本发明的方式的操作,以便用不改变它们的Z值的着色器绘制不透明图元(即,不可能通过其显示某些东西(显示其后面的某些东西)的图元),因此驱动器识别这些序列并将有效的仅Z模式命令34插在这种命令(图元)序列之前,并把基于仅Z模式的分支条件命令35插在这种序列(序列38、37、36)的结尾,如图2所示。
然后,在命令列表阅读器3在图元列表中识别到有效的仅Z模式命令34时,它触发图形处理器1转换为“仅Z”处理模式,在该模式中,有效的仅渲染状态为Z及Z测试的读与写,如上所述。然后,命令序列、例如图2所示的序列38用这种模式进行处理,直到命令列表阅读器识别到在该序列的结尾的基于仅Z模式的分支条件命令35为止。
基于仅Z模式的分支条件命令对条件分支进行编码,其中分支条件为当前渲染模式为“正常”还是“仅Z”。作为进行分支的副作用,它还触发从仅Z模式向正常渲染模式的转换。
这样的作用是在命令列表中相关部分的第一处理经过的结束时(例如图2中的部分38),命令列表阅读器将触发由基于仅Z模式的分支条件命令35所指明的条件分支(因为在那个点,图形处理器1将处于如被有效的仅Z模式命令34所触发的仅Z模式),以便分支回命令列表的部分38的首部,但是还将图形处理切换到正常渲染模式。
这些命令表示的命令列表的部分38将接着被图形处理器1第二次横过,如上所述,但是这次要绘制的图元可为早期Z拣选的,如上所述,以便只有例如最近的表面将生成用于着色的采样点及片元。
接着,在该第二经过期间第二次到达基于仅Z模式的分支条件命令35时,将不触发该分支命令,因为该处理器将接着用正常方式进行处理(即,图形处理将不处于仅Z模式),因此将不进行分支且命令列表剩余部分以正常方式的处理可继续下去。
图3示出了稍微不同的命令列表布置。图3再次示出了命令列表45,其中包括“新区块”命令31及“绘制三角形”命令40。但是,在这种情况下,绘制三角形命令40本身不包含所有必需的图元数据,因此改为触发从与命令40指明将绘制的三角形对应的图元列表读出适当图元(三角形)数据。
如图3所示,适当的有效仅Z模式命令34以及基于仅Z模式的分支条件命令35被再次***到命令列表中在本发明要应用的绘制三角形(图元)命令40的序列的周围,例如在图3所示的序列41、42及43的周围。
然后,这些命令触发用上文结合图2所述的方式进行的操作。
根据上文将理解,在图2和图3的布置中,作用是用本发明的方式处理(不透明)图元的序列,因为例如图3所示的命令序列41事实上表示与要响应于包含在序列41中的绘制三角形命令40而绘制的图元对应的对应图元序列。
虽然图2及3示出通过将适当命令包含在提供给图形处理器的命令列表中来触发本发明的操作,但是如果需要这种操作可用其它方式进行触发。例如,图形处理器可自己识别到要绘制不透明图元的运行的命令,例如然后对这种运行触发用本发明的方式的操作(并例如存储通过这种运行允许这两个处理经过必需的数据、例如地址)。
对于响应于包含在命令列表中的命令的以适当及所需方式的上述操作,图形处理器1可配置成适当的仅Z模式及正常模式。例如,适当时,可存在为将处理流水线设置为仅Z模式或正常渲染模式所触发的全局渲染状态变化。
如果像在申请人的稍早UK专利申请No.GB-A-2420261中所述的***中那样,图元及片元等在内部域中携带对若干预定渲染状态中之一的索引,那么优选地,这些预定渲染状态中之一被设置到仅Z模式渲染状态。在这种情况下,在触发仅Z模式时,则可将每个图元的渲染状态索引改写为特定仅Z模式预定渲染状态(例如,渲染状态索引0),然后将它经过图形处理器传递到栅格化器。因此,图元将通过处理器自动拾取用于仅Z模式经过的仅Z渲染状态。
类似地,将还能够且优选地为仅Z模式渲染状态保留片元程序地址(如果使用片元着色)。然后优选地,该地址将触发避开片元着色器(因为片元程序通常对于仅Z模式渲染状态是不需要的)。
在本实施例中,如果通过图元序列的第二处理经过要使用<=(小于或等于)或者>=(大于或等于)的Z比较函数来执行,那么在第二处理经过中使用该Z比较函数。
但是,如果指明的Z比较函数对于所涉及图元为<(小于)或者>(大于),那么该(通过初始图形绘制指令)指明的Z比较函数在第二处理经过中分别改变为<=(小于或等于)或者>=(大于或等于)的Z比较函数。
这是为了确保预期图元(片元)将还在第二处理经过中通过Z比较测试,假定Z缓冲器16与Z锥体18将已经包含那个图元(片元)对所涉及采样点的深度值。这将确保始终生成与将在没有本发明的情况下绘制的相同图元(片元),且该Z测试中的联系的结果不对第二处理经过产生影响。
在本实施例中,这种对第二处理经过的Z比较功能的改变如果必需则在驱动器支持软件中执行。例如,能够将此提供为使驱动器因而允许平台集成人员决定是否进行这种改变的编译选项。
例如,将还能够在为图元列表的该部分所指定的深度测试为<或者>(小于或大于)的情况下禁止用本发明的方式的操作(即在任意情况下只激活本发明用于深度测试对其指定为<=或>=(小于或等于,或者大于或等于)的图元的运行)。那么,这将避免在实现本发明时对深度测试的Z比较函数的变化的需要。
上文的两种变化可用驱动器中的仅软件变化来实现,因此它们将允许本发明例如以对其的最小及仅局部变化而用于现有设计中。
在备选布置中,为同样确保正确图元及片元在第二处理经过中通过Z测试,代替如上所述必需的对Z比较函数进行改变,将能够对在第一处理经过中写入的Z值进行偏移,对于Z比较函数的<(小于)系列则远离观察点或者对于Z比较的>(大于)系列则朝向观察点,以便再次确保在第二处理经过中对正确片元(图元)进行着色。
图5示出这种情况,并示出在第一处理经过中确定的Z值70远离观察点71的偏移,以便提供一组偏移Z值72供<(小于)的Z比较函数时使用。
在该布置中,在第一处理经过中确定的Z值70以可能的最小量进行偏移,所述最小量可以任意效果加到来自第一处理经过的所确定Z值(或者适当时从其减去)。
因此,在整数Z缓存的情况下,适当时,在第一处理经过中写入的Z值以一递增或递减。
在浮点Z值的情况下,要应用的最小偏移将根据Z值本身而变化,但是可加到当前Z值或从其减去的最小数在该情况下可根据Z值的指数(exponent)以及其尾数(mantissa)的固定大小来轻易确定。
然后,将在第一处理经过中的所确定Z值写到Z缓存16(因此也写到Z锥体8)之前,把所确定偏移应用到所述Z值。
在如上所述偏移Z值或者改变Z比较函数的备选布置中,将能够给Z缓冲器增设图元ID缓冲器,在第一处理经过中将确定成应用到每个采样点的图元的标识存储在所述图元ID缓冲器。然后,在第二处理经过中,不使用每片元测试的Z缓冲器,每个片元(对于该片元对应的采样点)将具有其与先前为该片元而存储在图元ID缓冲器中的图元ID相比较的ID,且在第二处理经过中只有与存储在图元ID缓冲器中的ID相匹配的那些片元被着色和读出。
换句话说,在第二处理经过中,每片元(每采样点)早期深度测试将被与片元相关联的图元标识与在第一处理经过中已经生成的存储在图元ID缓冲器中的图元标识之间的标识比较取代。
在这种布置中,图元标识可例如通过使用计数器来进行分配,所述计数器对作为输入的每个图元递增,这些图元在它们流到渲染流水线时被从该计数器分配ID。然后,对于第二处理经过,图元计数器可复位,使得图元在它们流入到该流水线时再次获得适当标识。
图4示出了图形处理***的第二实施例,它示意示出了上文备选布置的一些布置。
如图4所示,该实施例的图形处理***50包括若干与图1所示实施例相同的组成部分。但是,它还具有对那个实施例的某些添加件,所述添加件可用于合并上文的备选布置。
图4还示意示出了外部存储器接口51,所述外部存储器接口51由图形处理***、例如命令列表阅读器3及顶点载入器4用来从外部存储器访问相关数据,例如命令列表及顶点数据。
图4首先示意示出了Z偏移阶段52,如上所述,它可用于将适当偏移应用到在第一仅Z模式处理经过中确定的Z值,然后将它们写到Z缓存,如上所述。
图4还示意示出了图元ID计数器53及图元ID缓冲器54,所述图元ID缓冲器54如上所述可用来标识要在第二处理经过中进行处理的适当图元。
如上所述,在该布置中,图元ID计数器53在本实施例中为16比特计数器,它在命令列表的一部分要被用本发明的方式进行处理时复位,然后对作为输入的、由命令列表中该部分所表示的该序列的每个图元递增。然后,图元在流到渲染流水线时从该计数器获得适当ID。
在第一处理经过中,给给定采样点的给定片元所分配的图元标识(计数器值)被写到图元ID缓冲器54,同时其深度值被写到Z缓冲器16的对应Z缓冲器单元。在本实施例中,图元ID缓冲器54为16比特每采样点缓冲器,但是当然可使用其它布置。
然后,在命令列表的该部分上的第二处理经过(其所有渲染状态经过)中,首先将图元计数器53复位,使得对应于命令列表的该部分的图元将从该计数器获得与在第一处理经过中在它们流到渲染流水线时相同的ID。
但是,在该第二处理经过中,对于每样本点测试不使用Z缓冲器16(虽然可还有保留地使用Z锥体18)。每个片元改为具有其与存储在图元ID缓冲器54中的那个样本位置或那些样本位置的对应ID相比较的所分配图元ID,其中,拣选那些不匹配的片元且将那些不匹配片元着色并读出到颜色缓冲器,等。
图4还示意示出了片上缓冲器55,它可用来存储从在图形处理平台50本身上的外部存储器取出的数据。其中,该缓冲器可用来避免或降低在执行本发明时例如从外部存储器两次读图元列表及顶点位置的需要。
为了使用该缓冲器,当在本实施例中在第一处理经过期间从外部存储器读图元列表及顶点位置时,将该数据存储在缓冲器55中,使得数据在该缓冲器中对通过图元列表的那个部分的第二处理经过可用。
优选地,缓冲器55通过仅Z命令复位(即,使得它可接着用与新的仅Z命令有关的命令列表的该部分的新数据来填充)。
图4所示的缓冲器55示出为具有长度K的大小,即存储等于K个图元的运行(序列)的数据。该缓冲器可以例如以下方式中之一来使用。
首先,在缓冲器55具有固定长度K时,如果命令列表中用本发明的方式进行处理的部分长于缓冲器55的长度K,那么命令列表可分成将各自适合缓冲器55的子长度,使得命令列表的整个部分的每个这种子长度将实际上具有其自身的仅Z第一处理经过布置。
备选地,缓冲器55可例如用第一K个命令列表条目以及要用本发明的方式进行处理的命令列表的给定部分的关联顶点位置来填充。在这种情况下,对于在命令列表的那部分上的第二处理经过,第一K个命令等将从缓冲器55中取得,但是任何余下命令等将再次从外部存储器取得。
例如,将还能够定义某种多个长度K的缓冲器55,命令列表超出它的一部分将分成子部分,则每个子部分具有其自身的按本发明方式的处理。
虽然以上实施例在命令列表被图形处理器读或执行两次的布置的上下文中进行了描述,但是能够具有其中虽然将需要在第一处理经过之后将更多数据存储在片上但那不是必需的布置。
例如,在第一处理经过中,将能够运行包括材质及所涉及图元的任意其它变化量的***操作,但是不需要对材质进行采样,然后对每采样点缓存足够的信息以便允许第二处理经过在不需要对命令列表再解析的情况下进行。一旦确定了要处理的图元(片元),则它们能够在第二处理经过中使用缓存的信息来进行处理。
这种布置将避免例如第二次读入命令的需要,但是将要求更大的内部存储器及在第一处理经过中的更多处理步骤。
另一备选是对每个采样点存储写到如在第一处理经过中所确定的那个采样点的图元命令。具有全部渲染状态的第二处理经过则将不需要再读入命令,而是可改为在缓冲器的采样点上运行,使用所存储图元命令来确定要设置哪个状态以供在第二处理经过中处理采样点。
在这种布置中,将优选使用64比特图元命令区块缓冲器。
从上文可见,本发明在其优选实施例中,至少提供改进技术来避免渲染不可见片元。
因此,本发明可在其优选实施例中至少减少外部存储器带宽的使用,且因此减少功率使用。它还能帮助增加渲染的速度并增加处理复杂场景的能力,并能够以对应用透明的方式这样进行。
这在本发明的优选实施例中至少通过以下方式而实现:将图形处理***配置成对要响应于命令列表中一部分的命令而绘制的图元处理两次,一次以仅Z渲染模式且然后再次用有效的所有渲染状态,但是使用从第一处理经过所确定的Z值来从在第二处理经过的处理中拣选图元及片元。在优选实施例中,将命令***到命令列表中在不透明图元的绘制运行的命令的运行的首部及尾部以便触发这种操作。
Claims (21)
1.一种操作图形处理器的方法,其中要由所述图形处理器执行的、包括指示所述图形处理器绘制图元的命令的图形命令列表在所述命令被所述图形处理器执行之前被准备并存储在存储器中,所述方法包括:
所述图形处理器:
在所存储命令列表的一部分中的命令序列上执行第一处理经过,以便导出可帮助从要响应于所述命令列表的所述部分中的命令而绘制的图元中选择用于对采样点集合中每个采样点进行处理的一个或多个图元的数据;
存储所述所导出数据,以用于帮助选择要在每个采样点进行处理的图元;以及
在所述命令序列上执行第二处理经过以便对要响应于所存储命令列表的所述部分中的命令而绘制的图元进行处理,使用所存储数据来帮助从要响应于所述所存储命令列表的所述部分中的命令而绘制的图元序列中选择要在所述第二处理经过中对每个采样点进行处理的所述一个或多个图元。
2.如权利要求1所述的方法,其中,所述第一处理经过包括在每个样本位置执行深度测试,以便基于所述图元的深度值确定在每个样本位置的可见图元。
3.如权利要求1或2所述的方法,其中,在所述命令列表部分上的所述第一处理经过包括在要响应于所述命令列表的所述部分中的命令而绘制的图元上执行仅深度渲染经过。
4.如前述权利要求中任一项所述的方法,其中,在所述第一处理经过中导出并在所述第一处理经过之后存储的所述数据包括从所述第一处理经过导出的深度缓存。
5.如前述权利要求中任一项所述的方法,其中,对于每个采样点,在所述第一处理经过中导出并存储的、用于帮助要在所述第二处理经过中在每个采样点进行处理的图元的选择或标识的所述数据包括可用来对要在所述第二处理经过期间在所述采样进行处理的图元进行标识的标识符。
6.如前述权利要求中任一项所述的方法,其中,在经历了所述第一处理经过的命令列表的所述部分中的命令上执行的所述第二处理经过包括提供在显示器上显示所述图元所需的数据的渲染经过。
7.如前述权利要求中任一项所述的方法,其中,所述第二处理经过使用来自所述第一处理经过的所存储图元标识符来确定要在所述第二处理经过中对每个采样点进行处理的图元,或者所述第二处理经过使用来自所述第一处理经过的所存储深度缓存值来确定要在所述第二处理经过中对每个采样点进行处理的所述一个或多个图元。
8.如前述权利要求中任一项所述的方法,包括:
将条件分支命令包含在给所述图形处理***所提供的所述命令列表中,以便在所述第一处理经过之后触发所述第二处理经过的执行,所述条件分支命令既触发至所述命令列表中另一点的分支还将在进行所述分支时触发所述图形处理***的状态改变,且对于所述条件分支命令,进行所述分支的条件是所述图形处理***的当前状态。
9.如前述权利要求中任一项所述的方法,包括:
将来自所述第一处理经过的所述命令列表的所读数据的一些或全部存储在所述图形处理器本身上,使其接着在所述图形处理器上的存储器中对所述第二处理经过可用。
10.一种在图形处理***中处理图元的方法,所述方法包括:
在图元序列上执行第一处理经过,以便为采样点集合的每个采样点确定在所述图元序列中要对所述采样点进行处理的图元的一个或多个图元;
存储数据以便允许在每个相应采样点处理所述所确定一个或多个图元;以及
使用所述所存储数据来执行第二处理经过以便对每个采样点处理所述图元序列的所述相应一个或多个图元。
11.一种图形处理***,其中要由所述图形处理***执行的、包括指示所述图形处理***绘制图元的命令的图形命令列表在所述命令被所述图形处理***执行之前被准备并存储在存储器中,所述图形处理***包括:
用于在所存储命令列表的一部分中的命令序列上执行第一处理经过以导出可帮助从要响应于所述命令列表的所述部分中的命令而绘制的图元中选择用于对采样点集合中每个采样点进行处理的一个或多个图元的数据的部件;
用于存储所述所导出数据以用于帮助选择要在每个采样点进行处理的图元的部件;以及
用于完成以下功能的部件:在所述命令序列上执行第二处理经过以对要响应于所存储命令列表的所述部分中的命令而绘制的图元进行处理,使用所存储数据来帮助从要响应于所述所存储命令列表的所述部分中的命令而绘制的图元序列中选择要在所述第二处理经过中对每个采样点进行处理的所述一个或多个图元。
12.如权利要求11所述的***,其中,所述用于执行第一处理经过的部件包括用于在每个样本位置执行深度测试以便基于所述图元的深度值确定在每个样本位置的可见图元的部件。
13.如权利要求11或12所述的***,其中,所述用于在所述命令列表部分上执行第一处理经过的部件包括用于在要响应于所述命令列表的所述部分中的命令而绘制的图元上执行仅深度渲染经过的部件。
14.如权利要求11-13中任一项所述的***,其中,在所述第一处理经过中导出并在所述第一处理经过之后存储的所述数据包括从所述第一处理经过导出的深度缓存。
15.如权利要求11-14中任一项所述的***,其中,对于每个采样点,在所述第一处理经过中导出并存储的、用于帮助要在所述第二处理经过中在每个采样点进行处理的图元的选择或标识的所述数据包括可用于对要在所述第二处理经过期间在所述采样进行处理的图元进行标识的标识符。
16.如权利要求11-15中任一项所述的***,其中,所述用于在经历了所述第一处理经过的命令列表的所述部分中的命令上执行所述第二处理经过的部件包括用于执行渲染经过以便提供在显示器上显示所述图元所需的数据的部件。
17.如权利要求11-16中任一项所述的***,其中,所述用于执行第二处理经过的部件包括使用来自所述第一处理经过的所存储图元标识符来确定要在所述第二处理经过中对每个采样点进行处理的图元的部件、和/或使用来自所述第一处理经过的所存储深度缓存值来确定要在所述第二处理经过中对每个采样点进行处理的所述一个或多个图元的部件。
18.如权利要求11-17中任一项所述的***,包括:
用于响应于所述图形处理***所接收以供执行的命令列表中的特定条件分支命令根据所述图形处理***的状态分支或不分支到所述命令列表中的另一点、且如果进行所述分支就改变所述图形处理***的状态的部件。
19.如权利要求11-18中任一项所述的***,包括:
用于将来自所述第一处理经过的所述命令列表的所读数据的一些或全部存储在所述图形处理器本身上使其接着在所述图形处理器上的存储器中对所述第二处理经过可用的部件。
20.一种图形处理***,包括:
用于在图元序列上执行第一处理经过以便为采样点集合的每个采样点确定在所述图元序列中要对所述采样点进行处理的图元的一个或多个图元的部件;
用于存储数据以便允许在每个相应采样点处理所述所确定一个或多个图元的部件;以及
用于使用所述所存储数据来执行第二处理经过以便对每个采样点处理所述相应一个或多个图元的部件。
21.一种计算机程序单元,包括:计算机软件代码部分,用于在所述程序单元在数据处理部件上运行时执行权利要求1-10中任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0810311.1 | 2008-06-05 | ||
GBGB0810311.1A GB0810311D0 (en) | 2008-06-05 | 2008-06-05 | Graphics processing systems |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101639929A true CN101639929A (zh) | 2010-02-03 |
CN101639929B CN101639929B (zh) | 2014-12-10 |
Family
ID=39638245
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910140682.5A Expired - Fee Related CN101639929B (zh) | 2008-06-05 | 2009-06-05 | 图形处理*** |
Country Status (4)
Country | Link |
---|---|
US (1) | US8698820B2 (zh) |
JP (1) | JP5538750B2 (zh) |
CN (1) | CN101639929B (zh) |
GB (2) | GB0810311D0 (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102208112A (zh) * | 2011-05-25 | 2011-10-05 | 威盛电子股份有限公司 | 景深消隐方法、三维图形处理方法及其装置 |
CN103370731A (zh) * | 2011-02-18 | 2013-10-23 | 汤姆逊许可公司 | 估计虚拟环境中的遮挡的方法 |
CN103886633A (zh) * | 2012-12-20 | 2014-06-25 | 想象技术有限公司 | 基于图块的计算机图形渲染中细分面数据的面片 |
CN104134183A (zh) * | 2013-05-02 | 2014-11-05 | Arm有限公司 | 图形处理*** |
CN104169974A (zh) * | 2012-03-15 | 2014-11-26 | 高通股份有限公司 | 图形处理单元中基于可见性的状态更新 |
CN104183005A (zh) * | 2013-05-24 | 2014-12-03 | 三星电子株式会社 | 图形处理单元和基于图块的渲染方法 |
CN104715503A (zh) * | 2013-12-13 | 2015-06-17 | 想象技术有限公司 | 图形处理***中的基元处理 |
CN104737198A (zh) * | 2012-11-21 | 2015-06-24 | 英特尔公司 | 在输入几何对象粒度上记录可见度测试的结果 |
CN105096235A (zh) * | 2014-05-13 | 2015-11-25 | 联发科技股份有限公司 | 图形处理方法及图形处理装置 |
CN105321140A (zh) * | 2014-06-17 | 2016-02-10 | 想象技术有限公司 | 向图形处理***中的区片分配图元 |
CN112652025A (zh) * | 2020-12-18 | 2021-04-13 | 完美世界(北京)软件科技发展有限公司 | 图像渲染方法、装置、计算机设备及可读存储介质 |
US11069024B2 (en) | 2013-12-13 | 2021-07-20 | Imagination Technologies Limited | Primitive processing in a graphics processing system with tag buffer storage of primitive identifiers |
US11176733B2 (en) | 2015-01-27 | 2021-11-16 | Imagination Technologies Limited | Processing primitives which have unresolved fragments in a graphics processing system |
Families Citing this family (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8427493B2 (en) * | 2009-10-13 | 2013-04-23 | Nvidia Corporation | Draw commands with built-in begin/end |
US9058685B2 (en) * | 2010-03-11 | 2015-06-16 | Broadcom Corporation | Method and system for controlling a 3D processor using a control list in memory |
KR101719485B1 (ko) * | 2010-09-20 | 2017-03-27 | 삼성전자주식회사 | 그래픽 처리 유닛에서의 사전 픽셀 제거를 위한 장치 및 방법 |
JP5636988B2 (ja) * | 2011-01-27 | 2014-12-10 | 富士通株式会社 | 描画装置および方法 |
US8339409B2 (en) * | 2011-02-16 | 2012-12-25 | Arm Limited | Tile-based graphics system and method of operation of such a system |
US8902228B2 (en) | 2011-09-19 | 2014-12-02 | Qualcomm Incorporated | Optimizing resolve performance with tiling graphics architectures |
GB201116438D0 (en) | 2011-09-22 | 2011-11-02 | Advanced Risc Mach Ltd | Occlusion queries in graphics processing |
US9547930B2 (en) | 2011-11-30 | 2017-01-17 | Qualcomm Incorporated | Hardware switching between direct rendering and binning in graphics processing |
FR2994500B1 (fr) * | 2012-08-10 | 2015-10-16 | Real Fusio France | Procede d'optimisation de l'execution d'un pipeline graphique |
US9552665B2 (en) * | 2013-03-18 | 2017-01-24 | Arm Limited | Hidden surface removal in graphics processing systems |
US9558585B2 (en) * | 2013-05-31 | 2017-01-31 | Arm Limited | Hidden surface removal in graphics processing systems |
US9286649B2 (en) * | 2013-05-31 | 2016-03-15 | Qualcomm Incorporated | Conditional execution of rendering commands based on per bin visibility information with added inline operations |
US9286714B2 (en) * | 2013-06-20 | 2016-03-15 | Arm Limited | Apparatus and method for processing graphics primitives |
KR102101834B1 (ko) | 2013-10-08 | 2020-04-17 | 삼성전자 주식회사 | 영상 처리 장치 및 방법 |
GB2520288B (en) * | 2013-11-14 | 2020-07-29 | Advanced Risc Mach Ltd | Forward Pixel Killing |
US9280845B2 (en) | 2013-12-27 | 2016-03-08 | Qualcomm Incorporated | Optimized multi-pass rendering on tiled base architectures |
US20150187256A1 (en) * | 2014-01-02 | 2015-07-02 | Nvidia Corporation | Preventing fetch of occluded pixels for display processing and scan-out |
US9495790B2 (en) | 2014-04-05 | 2016-11-15 | Sony Interactive Entertainment America Llc | Gradient adjustment for texture mapping to non-orthonormal grid |
US9710881B2 (en) | 2014-04-05 | 2017-07-18 | Sony Interactive Entertainment America Llc | Varying effective resolution by screen location by altering rasterization parameters |
KR101923562B1 (ko) | 2014-04-05 | 2018-11-29 | 소니 인터랙티브 엔터테인먼트 아메리카 엘엘씨 | 가변 렌더링 및 래스터화 파라미터 하에서 가변 뷰포트에 대하여 오브젝트를 효율적으로 리렌더링하는 방법 |
US9865074B2 (en) | 2014-04-05 | 2018-01-09 | Sony Interactive Entertainment America Llc | Method for efficient construction of high resolution display buffers |
US9836816B2 (en) | 2014-04-05 | 2017-12-05 | Sony Interactive Entertainment America Llc | Varying effective resolution by screen location in graphics processing by approximating projection of vertices onto curved viewport |
US9652882B2 (en) | 2014-04-05 | 2017-05-16 | Sony Interactive Entertainment America Llc | Gradient adjustment for texture mapping for multiple render targets with resolution that varies by screen location |
US10783696B2 (en) | 2014-04-05 | 2020-09-22 | Sony Interactive Entertainment LLC | Gradient adjustment for texture mapping to non-orthonormal grid |
US11302054B2 (en) | 2014-04-05 | 2022-04-12 | Sony Interactive Entertainment Europe Limited | Varying effective resolution by screen location by changing active color sample count within multiple render targets |
US9710957B2 (en) * | 2014-04-05 | 2017-07-18 | Sony Interactive Entertainment America Llc | Graphics processing enhancement by tracking object and/or primitive identifiers |
US10068311B2 (en) | 2014-04-05 | 2018-09-04 | Sony Interacive Entertainment LLC | Varying effective resolution by screen location by changing active color sample count within multiple render targets |
GB2524121B (en) | 2014-06-17 | 2016-03-02 | Imagination Tech Ltd | Assigning primitives to tiles in a graphics processing system |
US9773294B2 (en) * | 2014-07-03 | 2017-09-26 | Mediatek Inc. | Graphics processing system for determining whether to store varying variables into varying buffer based at least partly on primitive size and related graphics processing method thereof |
KR102282190B1 (ko) * | 2014-09-22 | 2021-07-27 | 삼성전자 주식회사 | 렌더링 장치 및 방법 |
US9411613B1 (en) * | 2015-04-22 | 2016-08-09 | Ryft Systems, Inc. | Systems and methods for managing execution of specialized processors |
US9542244B2 (en) | 2015-04-22 | 2017-01-10 | Ryft Systems, Inc. | Systems and methods for performing primitive tasks using specialized processors |
US9804666B2 (en) | 2015-05-26 | 2017-10-31 | Samsung Electronics Co., Ltd. | Warp clustering |
US10068307B2 (en) * | 2016-05-20 | 2018-09-04 | Intel Corporation | Command processing for graphics tile-based rendering |
US20170352182A1 (en) * | 2016-06-06 | 2017-12-07 | Qualcomm Incorporated | Dynamic low-resolution z test sizes |
US20180082464A1 (en) * | 2016-09-16 | 2018-03-22 | Tomas G. Akenine-Moller | Apparatus and method for an efficient 3d graphics pipeline |
US10943389B2 (en) * | 2016-12-09 | 2021-03-09 | Advanced Micro Devices, Inc. | Removing or identifying overlapping fragments after z-culling |
US10580200B2 (en) | 2017-04-07 | 2020-03-03 | Intel Corporation | Virtual reality apparatus and method including prioritized pixel shader operations, alternate eye rendering, and/or augmented timewarp |
GB2574361B (en) | 2017-12-18 | 2021-03-24 | Advanced Risc Mach Ltd | Graphics Processing |
US10726610B2 (en) | 2018-08-29 | 2020-07-28 | Arm Limited | Efficient graphics processing using metadata |
CN109325899B (zh) * | 2018-09-07 | 2023-04-04 | 格兰菲智能科技有限公司 | 计算机***、图形处理单元及其图形处理方法 |
US10796478B2 (en) | 2018-09-26 | 2020-10-06 | Qualcomm Incorporated | Dynamic rendering for foveated rendering |
GB2578470B (en) | 2018-10-29 | 2023-05-10 | Advanced Risc Mach Ltd | Processing of primitives in a graphics processor |
US11227358B2 (en) * | 2019-03-15 | 2022-01-18 | Intel Corporation | Systems and methods for exploiting queues and transitional storage for improved low-latency high-bandwidth on-die data retrieval |
CN112116519B (zh) * | 2019-06-19 | 2022-12-27 | 畅想科技有限公司 | 图形处理***中的粗略深度测试 |
US10891708B1 (en) * | 2019-11-25 | 2021-01-12 | Arm Limited | Shader program execution in graphics processing |
US11080814B1 (en) | 2020-02-03 | 2021-08-03 | Sony Interactive Entertainment Inc. | System and method for efficient multi-GPU rendering of geometry by pretesting against screen regions using prior frame information |
US11120522B2 (en) | 2020-02-03 | 2021-09-14 | Sony Interactive Entertainment Inc. | System and method for efficient multi-GPU rendering of geometry by subdividing geometry |
US11508110B2 (en) | 2020-02-03 | 2022-11-22 | Sony Interactive Entertainment Inc. | System and method for efficient multi-GPU rendering of geometry by performing geometry analysis before rendering |
US11170461B2 (en) | 2020-02-03 | 2021-11-09 | Sony Interactive Entertainment Inc. | System and method for efficient multi-GPU rendering of geometry by performing geometry analysis while rendering |
US11321800B2 (en) | 2020-02-03 | 2022-05-03 | Sony Interactive Entertainment Inc. | System and method for efficient multi-GPU rendering of geometry by region testing while rendering |
US11514549B2 (en) | 2020-02-03 | 2022-11-29 | Sony Interactive Entertainment Inc. | System and method for efficient multi-GPU rendering of geometry by generating information in one rendering phase for use in another rendering phase |
JP7254252B2 (ja) * | 2020-02-03 | 2023-04-07 | 株式会社ソニー・インタラクティブエンタテインメント | レンダリング中のジオメトリ解析によるジオメトリの効率的なマルチgpuレンダリングのためのシステム及び方法 |
US11263718B2 (en) | 2020-02-03 | 2022-03-01 | Sony Interactive Entertainment Inc. | System and method for efficient multi-GPU rendering of geometry by pretesting against in interleaved screen regions before rendering |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0606685A1 (en) * | 1993-01-15 | 1994-07-20 | International Business Machines Corporation | Method and apparatus for reducing illumination calculations through efficient visibility determination |
US20040075654A1 (en) * | 2002-10-16 | 2004-04-22 | Silicon Integrated Systems Corp. | 3-D digital image processor and method for visibility processing for use in the same |
US6801215B1 (en) * | 2001-11-29 | 2004-10-05 | At&T Corp. | Hardware-assisted visibility-ordering algorithm |
US7170513B1 (en) * | 1998-07-22 | 2007-01-30 | Nvidia Corporation | System and method for display list occlusion branching |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02255991A (ja) * | 1988-12-20 | 1990-10-16 | Fujitsu Ltd | 画像処理装置 |
US5325485A (en) * | 1992-10-30 | 1994-06-28 | International Business Machines Corporation | Method and apparatus for displaying primitives processed by a parallel processor system in a sequential order |
JPH0855239A (ja) * | 1994-07-21 | 1996-02-27 | Internatl Business Mach Corp <Ibm> | グラフィカル・オブジェクトの可視性を判定するための方法および装置 |
US5949423A (en) * | 1997-09-30 | 1999-09-07 | Hewlett Packard Company | Z buffer with degree of visibility test |
EP1306811A1 (en) * | 2001-10-25 | 2003-05-02 | STMicroelectronics Limited | Triangle identification buffer |
US7158132B1 (en) * | 2003-11-18 | 2007-01-02 | Silicon Graphics, Inc. | Method and apparatus for processing primitive data for potential display on a display device |
JP4419876B2 (ja) | 2005-03-14 | 2010-02-24 | 富士ゼロックス株式会社 | 画像処理装置 |
US8269782B2 (en) * | 2006-11-10 | 2012-09-18 | Sony Computer Entertainment Inc. | Graphics processing apparatus |
-
2008
- 2008-06-05 GB GBGB0810311.1A patent/GB0810311D0/en not_active Ceased
-
2009
- 2009-06-04 JP JP2009135405A patent/JP5538750B2/ja not_active Expired - Fee Related
- 2009-06-05 GB GB0909771A patent/GB2460752B/en not_active Expired - Fee Related
- 2009-06-05 CN CN200910140682.5A patent/CN101639929B/zh not_active Expired - Fee Related
- 2009-06-05 US US12/457,300 patent/US8698820B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0606685A1 (en) * | 1993-01-15 | 1994-07-20 | International Business Machines Corporation | Method and apparatus for reducing illumination calculations through efficient visibility determination |
US7170513B1 (en) * | 1998-07-22 | 2007-01-30 | Nvidia Corporation | System and method for display list occlusion branching |
US6801215B1 (en) * | 2001-11-29 | 2004-10-05 | At&T Corp. | Hardware-assisted visibility-ordering algorithm |
US20040075654A1 (en) * | 2002-10-16 | 2004-04-22 | Silicon Integrated Systems Corp. | 3-D digital image processor and method for visibility processing for use in the same |
Cited By (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103370731A (zh) * | 2011-02-18 | 2013-10-23 | 汤姆逊许可公司 | 估计虚拟环境中的遮挡的方法 |
CN103370731B (zh) * | 2011-02-18 | 2016-08-10 | 汤姆逊许可公司 | 估计虚拟环境中的遮挡的方法 |
US9406165B2 (en) | 2011-02-18 | 2016-08-02 | Thomson Licensing | Method for estimation of occlusion in a virtual environment |
CN102208112B (zh) * | 2011-05-25 | 2015-08-05 | 威盛电子股份有限公司 | 景深消隐方法、三维图形处理方法及其装置 |
CN102208112A (zh) * | 2011-05-25 | 2011-10-05 | 威盛电子股份有限公司 | 景深消隐方法、三维图形处理方法及其装置 |
US10242481B2 (en) | 2012-03-15 | 2019-03-26 | Qualcomm Incorporated | Visibility-based state updates in graphical processing units |
CN104169974A (zh) * | 2012-03-15 | 2014-11-26 | 高通股份有限公司 | 图形处理单元中基于可见性的状态更新 |
CN104737198B (zh) * | 2012-11-21 | 2018-03-27 | 英特尔公司 | 在输入几何对象粒度上记录可见度测试的结果 |
CN104737198A (zh) * | 2012-11-21 | 2015-06-24 | 英特尔公司 | 在输入几何对象粒度上记录可见度测试的结果 |
US9741154B2 (en) | 2012-11-21 | 2017-08-22 | Intel Corporation | Recording the results of visibility tests at the input geometry object granularity |
CN103886633A (zh) * | 2012-12-20 | 2014-06-25 | 想象技术有限公司 | 基于图块的计算机图形渲染中细分面数据的面片 |
CN104134183B (zh) * | 2013-05-02 | 2019-06-04 | Arm有限公司 | 基于区块的图形处理管道及其操作方法、存储介质 |
CN104134183A (zh) * | 2013-05-02 | 2014-11-05 | Arm有限公司 | 图形处理*** |
CN104183005B (zh) * | 2013-05-24 | 2018-08-14 | 三星电子株式会社 | 图形处理单元和基于图块的渲染方法 |
CN104183005A (zh) * | 2013-05-24 | 2014-12-03 | 三星电子株式会社 | 图形处理单元和基于图块的渲染方法 |
CN104715503B (zh) * | 2013-12-13 | 2019-05-21 | 想象技术有限公司 | 图形处理***中的基元处理 |
CN104715503A (zh) * | 2013-12-13 | 2015-06-17 | 想象技术有限公司 | 图形处理***中的基元处理 |
US10867433B2 (en) | 2013-12-13 | 2020-12-15 | Imagination Technologies Limited | Primitive processing in a graphics processing system |
US11069024B2 (en) | 2013-12-13 | 2021-07-20 | Imagination Technologies Limited | Primitive processing in a graphics processing system with tag buffer storage of primitive identifiers |
US11538215B2 (en) | 2013-12-13 | 2022-12-27 | Imagination Technologies Limited | Primitive processing in a graphics processing system |
US11748941B1 (en) | 2013-12-13 | 2023-09-05 | Imagination Technologies Limited | Primitive processing in a graphics processing system |
CN105096235B (zh) * | 2014-05-13 | 2018-06-19 | 联发科技股份有限公司 | 图形处理方法及图形处理装置 |
CN105096235A (zh) * | 2014-05-13 | 2015-11-25 | 联发科技股份有限公司 | 图形处理方法及图形处理装置 |
CN105321140A (zh) * | 2014-06-17 | 2016-02-10 | 想象技术有限公司 | 向图形处理***中的区片分配图元 |
US11176733B2 (en) | 2015-01-27 | 2021-11-16 | Imagination Technologies Limited | Processing primitives which have unresolved fragments in a graphics processing system |
US11928776B2 (en) | 2015-01-27 | 2024-03-12 | Imagination Technologies Limited | Processing primitives which have unresolved fragments in a graphics processing system |
CN112652025A (zh) * | 2020-12-18 | 2021-04-13 | 完美世界(北京)软件科技发展有限公司 | 图像渲染方法、装置、计算机设备及可读存储介质 |
CN112652025B (zh) * | 2020-12-18 | 2022-03-22 | 完美世界(北京)软件科技发展有限公司 | 图像渲染方法、装置、计算机设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
GB0909771D0 (en) | 2009-07-22 |
CN101639929B (zh) | 2014-12-10 |
JP5538750B2 (ja) | 2014-07-02 |
US8698820B2 (en) | 2014-04-15 |
US20100007662A1 (en) | 2010-01-14 |
GB2460752B (en) | 2011-12-07 |
JP2009295166A (ja) | 2009-12-17 |
GB2460752A (en) | 2009-12-16 |
GB0810311D0 (en) | 2008-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101639929B (zh) | 图形处理*** | |
JP5053857B2 (ja) | 3次元グラフィックス処理装置および方法 | |
EP3185217B1 (en) | Allocation of tiles to processing engines in a graphics processing system | |
CN109564695B (zh) | 用于高效3d图形流水线的装置和方法 | |
TWI637346B (zh) | 圖形處理系統 | |
CN102750664B (zh) | 基于寄存器的对纹理请求的排队 | |
US8174534B2 (en) | Shader processing systems and methods | |
EP2936492B1 (en) | Multi-mode memory access techniques for performing graphics processing unit-based memory transfer operations | |
US7719540B2 (en) | Render-cache controller for multithreading, multi-core graphics processor | |
US10553024B2 (en) | Tile-based rendering method and apparatus | |
JP4076502B2 (ja) | ゾーン・レンダリングのための効率的なグラフィックス状態管理 | |
CN112116519B (zh) | 图形处理***中的粗略深度测试 | |
EP2596471B1 (en) | Split storage of anti-aliased samples | |
CN104134183A (zh) | 图形处理*** | |
JP2005525617A (ja) | ゾーン・レンダリング用の自動メモリ管理 | |
TW200933522A (en) | Graphics processing systems, cache systems and data-handling methods | |
CN103026402A (zh) | 显示压缩超级切片图像 | |
JP2020513631A (ja) | アウトオブオーダキャッシュリターン | |
US8773447B1 (en) | Tag logic scoreboarding in a graphics pipeline | |
US20030142102A1 (en) | Texture mapping performance by combining requests for image data | |
CN101178806A (zh) | 计算机中管理纹理数据的***与方法 | |
CN115311120A (zh) | 图形处理*** |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20141210 Termination date: 20180605 |