CN1270278C - 用于图形渲染的z-缓冲技术 - Google Patents

用于图形渲染的z-缓冲技术 Download PDF

Info

Publication number
CN1270278C
CN1270278C CN200310123056.8A CN200310123056A CN1270278C CN 1270278 C CN1270278 C CN 1270278C CN 200310123056 A CN200310123056 A CN 200310123056A CN 1270278 C CN1270278 C CN 1270278C
Authority
CN
China
Prior art keywords
pixel
promote
pipeline
test
playing
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.)
Expired - Fee Related
Application number
CN200310123056.8A
Other languages
English (en)
Other versions
CN1512454A (zh
Inventor
托马斯·A·皮亚扎
埃里克·C·萨姆森
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN1512454A publication Critical patent/CN1512454A/zh
Application granted granted Critical
Publication of CN1270278C publication Critical patent/CN1270278C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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

Abstract

本发明涉及图形渲染的方法和装置,其中,在渲染管道的前端执行Z-缓冲测试。具体地说,位于渲染管道前端的Z-缓冲测试逻辑耦合到渲染高速缓存,该渲染高速缓存包括Z-缓冲器,使得Z-缓冲可以在渲染管道的前端完成。

Description

用于图形渲染的Z-缓冲技术
技术领域
本发明涉及Z-缓冲领域。更具体地说,本发明涉及用于3-D图形生成中的图形渲染的改进的Z-缓冲技术。
背景技术
计算机图形系统经常用于建模具有三维(3-D)对象的场景并且将它们显示在诸如阴极射线管的二维显示设备上。一个普通用途的这样的系统是基于多边形的、对象顺序(object-order)图形系统,其中场景中的每个3-D对象由近似于它的形状的大量多边形(或图元)表示。取决于在二维中观看场景所选择的方向,在场景中表示对象的许多图元将隐藏在其它图元后面,从而不显示。未完全隐藏的图元称为可见的,并且依据给定图元的部分是否隐藏而全部或部分显示在显示设备上的渲染的图像中。随着将要渲染的场景的深度复杂性(即,隐藏在另一个图元后面的图元层次的数目)的增加,表示场景的所有图元中,在显示设备上最终对观察者可见的百分比显著下降。从而,在许多情况下,场景的大多数图元是隐藏的。
传统的计算机图形系统一般具有帧缓冲器和Z-缓冲器。帧缓冲器一般是存储器(例如动态随机存取存储器(DRAM)或者同步随机存取存储器(SRAM)),其为图像中的每个像素保存有颜色和亮度的数字表示。帧缓冲器也称为视频位图。Z-缓冲器(也称为深度缓冲器)是大阵列的存储器,其具有帧缓冲器中的每个像素的条目。
一种确定哪些图元可见或隐藏的方法涉及Z-缓冲器的使用,这种方法经常称为Z-缓冲。图形系统中的Z-轴反映与特定观测者视点的距离。从而,越大的Z-值表示与视点越远的距离。Z-缓冲涉及比较所生成的对象上的点的Z-值,以确定哪个对象离视点最近,从而将显示在二维显示器上。作为处理场景的图形数据的一部分,对于场景中的每个图元生成像素。
在传统的Z-缓冲器系统中,当产生每个像素时,它的Z坐标(Znew)与先前存储在Z-缓冲器中的Z坐标(Zold)比较。在处理场景的第一图元之前,通过存储对应于用于每个像素的Z-缓冲器条目中的最大距离(Zmax)的值来初始化Z-缓冲器,使得Zold最初对应于Zmax。通常,如果Znew小于Zold(指示这个像素距离此视点比距离先前的视点更近),则将该像素写入显示设备并且更新Z-缓冲存储器以贮存Znew。如果Znew大于或等于Zold,则不写入该像素并且Z-缓冲器保持不变。在这个过程中,完全隐藏的图元的所有像素将最终在Z-缓冲器中被重写,使得图元不被显示。
在计算机图形中,“渲染”是将数据集转换为可以被显示的图片的过程。在渲染过程中,读取一般保存多边形数据的图片数据库,并且由渲染硬件逐个像素执行计算以确定每个像素的颜色。颜色计算器经常执行这个功能。当渲染多边形时,为多边形覆盖的每个像素获得颜色采样。如果实行了过采样,则每个像素将含有多个对应的颜色采样,将它们平均以给出每个像素的最终颜色。每个颜色采样具有相关联的Z-值和位置。Z-缓冲器存储迄今为止每个位置遇到的最小的Z-值。如果颜色采样具有的Z-值小于记录在Z-缓冲器中的那个位置的值,则将那个采样写入帧缓冲器并且更新Z-缓冲器。否则,该颜色采样被丢弃。
一般由图形处理器的渲染引擎来执行Z-缓冲过程、每个像素的颜色确定以及许多与3-D图形相关联的其它功能,例如利用可以包括不同阴影、颗粒(hole)、透明纹理、半透明纹理等的不同纹理。渲染引擎利用渲染管道(pipeline)执行这些功能。图形数据沿着渲染路径流过渲染管道。一般地,直到渲染管道的最末端才执行Z-缓冲。令人遗憾的是,在当前的渲染管道体系结构下利用传统的Z-缓冲过程的主要缺点是在存储器使用方面效率很低。
发明内容
根据本发明的第一个方面提供了一种用于图形渲染的z-缓冲装置,包括:Z-缓冲测试逻辑,该Z-缓冲测试逻辑位于渲染管道的前端部分,用于执行对像素的Z-测试并且确定像素是否通过所述Z-测试;和渲染高速缓存,该渲染高速缓存包括耦合到Z-缓冲测试逻辑的Z-缓冲器,使得在渲染管道的前端部分对于像素的Z-测试是可执行的并且Z-缓冲器是可更新的,其中如果所述像素通过所述Z-测试,则所述Z-缓冲测试逻辑还确定所述像素是可提升的还是不可提升的。
根据本发明的第二个方面提供了一种用于图形渲染的z-缓冲方法,包括在渲染管道的前端部分对像素执行Z-测试;确定该像素是否通过位于渲染管道前端部分的Z-测试;用位于渲染管道前端部分的Z-测试的结果更新Z-缓冲器,以及其中如果所述像素通过所述Z-测试,则确定所述像素是可提升的还是不可提升的。
根据本发明的第三个方面提供了一种用于图形渲染的z-缓冲系统,包括用于渲染图形的图形处理器;渲染引擎,该渲染引擎被包括在图形处理器中并且具有渲染管道;Z-缓冲测试逻辑,该Z-缓冲测试逻辑位于渲染管道的前端部分,用于对像素执行Z-测试并且确定像素是否通过Z-测试;和渲染高速缓存,该渲染高速缓存包括耦合到Z-缓冲测试逻辑的Z-缓冲器,使得在渲染管道的前端部分对于该像素的Z-测试是可执行的并且Z-缓冲器是可更新的,其中如果所述像素通过所述Z-测试,则所述Z-缓冲测试逻辑还确定所述像素是可提升的还是不可提升的。
附图说明
图1示出了示例性计算设备的方框图,在其中可以实现用于改进的Z-缓冲处理的本发明的实施例。
图2A示出了根据本发明的一个实施例在渲染管道中实现的改进的Z-缓冲过程,以执行3-D图形渲染。
图2B示出了根据本发明的一个实施例的图2A的改进的Z-缓冲过程的稍微修改的版本,其中只执行对三角形的边计算和Z或W设置计算,取代了执行完全设置。
图3示出了根据本发明一个实施例的4×4像素遮罩(mask)的例子。
图4是图示了根据本发明的一个实施例的IZ过程的Z-测试的简化例子的流程图。
具体实施方式
在下面的描述中,将详细描述本发明的各种实施例。但是,包括这些细节是为了便于理解本发明并且为了描述实施本发明的示例性实施例。这些细节不应该用于将本发明限制为所描述的具体的实施例,因为在处于本发明的范围内的同时可能有其它的变化和实施例。此外,虽然为了提供对本发明透彻的理解而叙述了很多细节,但是对于本领域的技术人员来说很明显,这些具体的细节不是实现本发明所必须的。为了不混淆本发明,在其它实例中,未详细描述诸如公知的方法、数据类型、协议、程序、组件、电子结构和电路等细节,或者只以方框图形式示出。此外,本发明的多个方面将在具体实施例中进行描述,但是可以以硬件、软件、固件、中间件或它们的结合来实现。
参照图1,图1示出了示例性计算设备10的方框图,在其中可以实现用于改进的Z-缓冲处理的本发明的实施例。如图1中所示,处理器12(例如中央处理单元(CPU))通过总线19耦合到存储器14、图形处理器22和输入/输出(I/O)接口18。连接到I/O接口18的设备中的一个可以是显示设备20,可以在该显示设备20上渲染图形。为了降低处理器12上的工作负荷,图形处理器22可以用于为处理器12执行图形处理。另外,图形处理器22可以包括具有渲染管道的渲染引擎24,用于改进的Z-缓冲处理的本发明的实施例可以在渲染管道中实现。应该理解计算设备10只是示例性的,并且任何类型的用于渲染图形的计算设备都可以用于实现本发明的多个方面。
现在参考图2A,图2A示出了根据本发明的一个实施例的在渲染管道202中实现的改进的Z-缓冲过程200,以执行3-D图形渲染。如图2A所示,改进的Z-缓冲过程或函数200以命令解析器逻辑方框205中的命令解析开始。一般地,在计算设备中的某处,例如在CPU中,产生了用于将由渲染管道202渲染的图形图像的具有命令、指针、数据等的工作负荷。这个工作负荷通常包括由渲染管道202执行的图形操作的模式(例如3-D模式)。此外,工作负荷一般还包括所显示图像的坐标,图像通常是多边形,例如具有三个X-Y-Z坐标的三角形。另外,工作负荷通常包括渲染管道202要将何种类型的纹理施加到图形(例如阴影、颗粒、透明纹理、半透明纹理等)上。命令解析器逻辑方框205为渲染管道202解析工作负荷(例如命令、指针、数据、坐标等)。
接下来,完全设置逻辑方框208从命令解析器逻辑方框205取得解析的数据,并且为了渲染管道202的使用而将它转换为普通格式。具体地说,完全设置逻辑方框208取得原始顶点信息(例如三角形的三个X-Y-Z坐标)并且将原始顶点信息转换为渲染管道202可以利用以渲染该三角形的数据。例如,这包括执行三角形的边计算以及Z设置和W设置计算。另外,完全设置逻辑方框208还可以执行诸如用于颜色、纹理、文本等的与三角形有关的其它设置计算和函数。应该理解虽然本发明的多个方面将参照执行Z设置和测试来描述,但是,本发明也很容易适用于执行W设置和测试。W设置和测试通常在数学上被表示为Z设置和测试的按比例的归一化形式。
暂时参考图2B,图2B示出了根据本发明的一个实施例的在渲染通道203中实现的稍微修改的Z-缓冲过程200,以执行3-D图形渲染,其中只执行三角形的边计算和Z或W设置计算(方框209),取代了执行完全设置。其它与该三角形有关的设置功能,例如颜色、纹理、文本等,可以稍后在渲染管道203中的剩余的设置逻辑方框235中执行。这个渲染管道的例子只是在提高渲染管道效率的某些方面进行了细微修改;但是在所有其它的方面,图2B的渲染管道与图2A相同。
返回图2A,渲染管道202中下一个函数是光栅化器(Rasterizer)逻辑方框210。光栅化器逻辑方框210主要识别哪些像素要被包括在被处理的多边形(例如三角形)内部。另外,尽管将在Z计算方面讨论改进的Z-缓冲过程200,但是依据操作的模式可以利用Z计算或者W计算。
在一个实施例中,改进的Z-缓冲(以后称为IZ)过程或函数200以每个时钟四个像素运行,以子跨距(sub-span)为单元排列。IZ函数200跟在3D图形渲染中通常使用的光栅化器函数之后。尽管下面的例子利用4×4像素遮罩,但是这只是为了示例的目的,并且应该理解可以使用任何合适尺寸的像素遮罩(例如1×1、2×2、8×8,…等)。
现在参考图3,图3示出了根据本发明的一个实施例的4×4像素遮罩,IZ函数200从光栅化器函数接收4×4像素遮罩300。4×4像素遮罩300被分为四个象限(quadrant),这里称为子跨距,其等于2×2像素阵列。图3示出了4×4像素遮罩300包括四个子跨距302、304、306和308,每个分别含有四个像素。
如果在特定的子跨距中没有放置像素,则改进的Z-缓冲过程或函数200跳过它们。另一方面,如果子跨距中放置有任何像素,则1Z过程200将为那个子跨距计算4个Z-值。在图3所示的情况下,IZ过程将为每个子跨距B、C、D计算4个Z-值并且跳过子跨距A。在一个实施例中,为了简化IZ函数的实现,即使对于子跨距C 304将只使用一个Z-值,每个子跨距也计算4个值。从而,对于上面的例子,计算12个Z-值,但是只使用9个。
参考图2A,具有像素状态阵列225的记分板存储器224可以用于跟踪管道内的未提升的像素,这将在后面更详细地讨论。后面将要详细讨论的不可提升(unpromotable)像素类的一个特定的例子被称为“干酪”,其中像素具有与它相关联的纹理(例如颗粒、透明纹理、半透明纹理等)。
渲染高速缓存216在逻辑上位于渲染管道202的后端,但是,根据本发明的实施例,它还直接耦合到Z-测试逻辑方框214以实现IZ函数200。此外,渲染高速缓存包括Z-缓冲器218和帧缓冲器219。渲染管道的其余部分230为图形渲染适当地处理像素,这是本技术领域公知的。此外,如传统上所做的,管道的其余部分230还可以在管道的后端执行Z-缓冲测试。
在本发明的一个实施例中,渲染管道202在渲染管道的前端执行Z-缓冲测试,这提高了渲染管道的效率。具体地说,渲染管道202的Z-缓冲测试逻辑214直接耦合到在管道后端的渲染高速缓存216,渲染高速缓存216包括Z-缓冲器218和帧缓冲器219,这使得对于大多数像素Z-缓冲(即,执行Z-测试)可以在渲染管道的前端完成。从而,当前正在被处理的箱子(bin)的当前多边形(例如三角形)的像素可以由位于渲染管道202前端的Z-缓冲测试逻辑214执行Z-测试。
但是,位于渲染管道202前端的Z-缓冲测试逻辑214只可以限于为“可提升的(promotable)”像素执行Z-测试,而不能为“不可提升的”像素执行Z-测试。术语可提升的像素和不可提升的像素将定义如下。
可提升的像素是这样的像素,它是多边形(例如三角形)的一部分,如果位于渲染管道202前端的Z-缓冲测试逻辑214确定它通过了Z-测试和/或模板(stencil)测试,则IZ过程200确定地知道它将经过管道的其余部分230而继续存活。换句话说,在通过位于渲染管道202前端的Z-测试逻辑214的Z-测试之后,不需要其它处理来确定该可提升的像素是否需要被丢弃。从而,可能删除此像素的管道的其余部分230的其它测试函数可以被禁止。具体地说,在可提升像素的情况下,不需要施加像素纹理、内插阿尔法(interpolated alpha)或者了解它的像素颜色——换句话说,没有其它的属性是Z-通过/Z-未通过判定的一部分;可提升的像素从不被颜色调整(color keying)、阿尔法测试(alpha test)或者类似函数所“杀死”。这些通常是不透明和固定半透明特征。
因此,IZ函数200确定地知道对于可提升的像素不需要执行其它用于对可提升的像素的纹理和阿尔法的评价的测试。如果可提升的像素通过位于渲染管道202前端的Z-缓冲测试逻辑214的Z-测试,并且进入渲染管道的其余部分230,则可提升的像素将一路到达渲染管道202的末端并且将最终更新Z-缓冲器218和颜色缓冲器231。另一方面,如果可提升的像素未通过Z-测试,则这也不是问题,因为像素被删除,并且Z-缓冲器也不需要被更新。
因此,如果可提升的像素将由渲染管道的其余部分230处理,并且将在渲染管道的其余部分230的末端执行Z-测试和Z-值的写入,则IZ函数200确定地知道什么Z-值将被写入Z-缓冲器218。从而,因为IZ函数200确定地知道这个状况存在,所以对于可提升的像素,IZ函数200可以在管道的开始而不是管道的末端向Z-缓冲器写入Z-值。在渲染管道202的开始处利用Z-测试逻辑214向Z-缓冲器218写入Z-值的动作与在管道的其余部分230的末端处利用Z测试逻辑214向Z-缓冲器218写入Z-值的动作相比,前者导致象素被提升(即,被写入Z-缓冲器)。从而,已提升的像素是这样的像素:先于在渲染管道的其余部分230中处理像素,其Z-值就由IZ函数200更新到渲染高速缓存216的Z-缓冲器218中。
如果可提升的像素通过Z-测试,则它被提升并被发送到像素遮罩逻辑222和渲染管道的其余部分230用于渲染。或者,如果像素未通过Z-测试,则它被删除。
另外,应该注意在其它的实施例中,除了Z-测试或替代Z-测试,还可以使用利用模板缓冲器232的模板测试。通常,模板测试(其可以是任何数量的可编程函数)用于基于每个像素作出渲染/不渲染的判定。
另一方面,因为IZ函数200不知道“不可提升的”像素在后来的渲染管道的其余部分230中的处理中实际上是否能继续存活,所以IZ函数不能提升此像素。因此,不可提升的像素不被提升(即,它不被提升——它不能被写入Z-缓冲器)。
具体地说,不可提升的像素是其Z-缓冲器218(和/或模板缓冲器232)不能被决定的像素。例如,对于不可提升的像素,可能需要施加像素纹理、内插阿尔法或者了解它的像素颜色——换句话说,因为不可提升的像素可以在后来的渲染管道的其余部分230中被颜色调整、阿尔法测试或者类似的函数所“杀死”,所以这些其它的属性是Z-测试的通过/未通过判定的一部分。这类特征这里简称为“干酪”。纹理或者其它像素属性也可以干扰不可提升的像素。
利用位于渲染管道202前端的Z-缓冲测试逻辑214,IZ函数200可以照常确定不可提升的像素是否未通过Z-测试并且丢弃此像素。但是,即使不可提升的像素通过Z-测试,因为IZ函数200不能确定地知道不可提升的像素是否通过管道的其余部分230后仍继续存活,所以IZ函数200也不能将Z-值写入Z-缓冲器。在这种情况下,可能需要照常在管道的末端附近执行Z-测试。因此,位于渲染前端实现IZ函数200的Z-缓冲测试逻辑214可以确定不可提升的像素是否未通过Z-测试,并且将删除像素。但是IZ函数200不能确定地确定不可提升的像素是否通过Z-测试。从而,即使当不可提升的像素通过Z-测试时,它也不能被提升(即,它不被提升——不写入Z-缓冲器218)并且只是发布到管道的其余部分230用于处理。
从而,未提升的像素是这样的像素:在进一步沿渲染管道202向下处理像素之前,在渲染管道前端,IZ函数200不将其Z-值更新到渲染高速缓存216的Z-缓冲器218中。因此,对于不可提升的像素,不能确定地完成Z-缓冲测试并且“不可提升”的像素不被提升(即,它不被提升——不被写入Z-缓冲器218),并且它被发送到渲染管道202的其余部分用于处理。
具有像素状态阵列225的记分板存储器224标记在管道中未被提升的像素。这很重要,因为如果管道中有未被提升的像素,则IZ函数200不确切知道Z-缓冲器218中的当前值是什么——即,IZ函数200知道Z-缓冲器218中的值“曾经是”什么,但是不确切知道它将是什么。正如将要讨论的那样,当记分板224的像素状态阵列225对于像素为零时,则IZ函数200知道该像素是可提升的。
从而,记分板存储器224的像素状态阵列225用于跟踪和处理这些特殊的“未提升的”像素的情况,正如后面将对此详细讨论的那样。不可提升的像素类的一个具体的例子是被称为“干酪”的像素,其中像素具有与其相关联的纹理(例如颗粒、透明纹理、半透明纹理等)。
使用用于改进的Z-缓冲(IZ)过程或函数200的本发明的实施例,其中在管道的前端执行Z-缓冲,因为在渲染管道中像素被尽早删除了,所以发布到渲染管道202的剩下部分用于渲染的像素数目充分地降低了。应该注意这个渲染管道202体系结构与分块(chunking)体系结构工作得特别好,其中图形在“箱子”或“区域”中被渲染,所述“箱子”或“区域”即为全部“帧”或整个屏幕的多个部分。。而且,渲染高速缓存216(包括Z-缓冲器218)的存储器比在现有技术中利用得更有效率,在现有技术中,Z-缓冲只在渲染管道的最末端执行。
现在参照图4,图4是图示了根据本发明的实施例的IZ过程200的Z-测试400的简化例子的流程图。具体地说,图4图示了如前面所描述的在IZ过程200的Z-测试400中“可提升的”和“不可提升的”像素的使用。
在方框402,对当前正在被处理的箱子的当前多边形(例如三角形)的像素执行Z-测试。接着,在方框404,IZ过程200确定像素通过还是未通过Z-测试。如果像素未通过Z-测试,则删除此像素并且不更新Z-缓冲器(即,不将此像素的Z-值写入Z-缓冲器)。
另一方面,如果像素通过Z-测试,则接着在方框410确定此像素是可提升的还是不可提升的。如前面所讨论的,可提升的像素是这样的像素,它是多边形(例如三角形)的一部分,如果它通过Z-测试,则IZ过程200确定地知道它将通过管道的其余部分230而继续存活。如果确定此像素是可提升的,则在方框412它被提升,意味着Z-缓冲器被更新(即,像素的Z-值被写入Z-缓冲器),此外,已提升的像素被发布到渲染管道用于渲染。
然而,如果确定像素是不可提升的,则IZ过程200前进到方框420。如前面所描述的,不可提升的像素是这样像素,因为IZ过程200不确定地知道不可提升的像素是否通过管道的其余部分230而继续存活,所以不能决定它的Z-缓冲器218。在方框420,不提升该像素(即使它通过Z-测试)。像素被定义为未提升并且不更新Z-缓冲器(即,未提升的像素的Z-值不被写入Z-缓冲器)。代替的是,在方框422更新记分板存储器并且将未提升的像素发布到管道的其余部分230用于处理。如后面将更详细讨论的,记分板存储器224具有用于标记管道中未提升的像素的像素状态阵列225,这很重要,因为如果在管道中有未提升的像素,则IZ函数200不确切地知道对于该像素在Z-缓冲器218中的当前值是什么——即,IZ函数200知道Z-缓冲器中的值“曾经是”什么,但是不确切知道它将是什么。
现在将详细讨论记分板224和像素状态阵列225,并且在讨论记分板之后将详细讨论另外的桥接环境(birdge condition)。
基本上,如果所有的像素总是可提升的并且所有的像素总是被提升,则这将等效于将Z-缓冲器218物理地移动到管道的前端。通过提升Z-值,任何后来的由IZ函数200对Z-缓冲器218的读取与先前的由IZ函数200对Z-缓冲器的写入都是时间一致的。但是,对于IZ函数200不能提升Z-值(例如对于不可提升的像素)的任何时候,则在时间域不连续;并且直到渲染管道202最终在管道末端将Z-值写入Z-缓冲器,Z-缓冲218才具有连续的“正确”值。与IZ函数200已经在管道前端提升了Z-值的情况相比,这迟了许多时钟(在管道中的时间)才发生。这意味着对于任何IZ函数200不能对给定的像素提升Z-值的时候,任何后来的由IZ函数为那个像素对Z-缓冲器218的读取都不是正确的值,直到未提升的像素流过渲染管道才能读取正确的值。为了保持对未提升像素的状态的追踪,利用具有用于每个像素的像素状态阵列225的记分板存储器224。
对于所有Z不能被提升的情况,因为特征本身是不可提升的(例如,干酪——包括颗粒、透明纹理、半透明纹理等关联的纹理),则当碰到在行程中在提升之前和未提升的像素时,IZ函数200等待该像素流过渲染管道202。另外,如下面将要详细讨论的,IZ函数200还等待桥接撤掉——等待管道中流过不同的箱子。这使得IZ函数与管道的后端完全一致——使得它“看起来”好像Z-缓冲器总是在IZ时间域(管道时间)中。但是,为了弥补由于这个失速而发生的性能损失,IZ函数200连续将像素压入渲染管道,同时在算法上弥补由这种方法引入的不确定性。
为了保持对未提升像素的状态的跟踪,利用具有用于管道中的每个像素的像素状态阵列225的记分板存储器224。在它的最基本的实施例中,记分板保存用于渲染管道中的每个像素的像素状态阵列225,其中,像素状态阵列225指示像素是可提升的还是不可提升的。例如,当像素状态阵列225设置为零时,像素是可提升的,而当像素状态阵列225设置不为零(即,另一个值)时,像素是不可提升的。
例如,像素状态阵列具有以下指示:目前对于这个阵列条目在渲染管道中没有未提升的像素(即,像素是可提升的,例如,像素状态阵列设置为0);目前对于这个阵列条目在渲染管道中有一个未提升的像素;目前对于这个阵列条目在渲染管道中有两个未提升的像素;目前对于这个阵列条目在渲染管道中有三个未提升的像素,等等。
此外,本发明的多个实施例涉及用于优选地解决现在将要讨论的桥接环境的IZ函数200。在每个箱子上有这样的启动状况:当前在渲染管道202中的像素是先前箱子(即,块(chunk))的一部分。可取的是在渲染管道被清空之前启动下一个箱子的处理,而不是等待渲染管道清空进而造成流量骤增——巨大的开销。从而,在一段时间内在管道中存在两个(或更多)连续的箱子的多个像素,或者在前一个箱子是帧的最后一个箱子的情况下,多个箱子属于不同的帧。从而产生了信号,其定义了管道和渲染高速缓存中的至少一些像素不由在IZ函数200中的同一箱子所共同“拥有”。另外,提供了允许两个箱子处于同一过程的机制。
可能需要知道桥接环境的原因有:
1)IZ函数200在记分板224的像素状态阵列225中设置状态,其允许IZ函数200知道在渲染管道202中仍处理着未提升的像素的时间。当颜色计算器231将同一未提升的像素撤到渲染高速缓存216中时,该字段被减少。应该知道用于确定像素颜色的颜色计算器在本技术领域是公知的。在桥接情况期间,因为在这期间IZ函数200与渲染管道中的数据不完全一致,所以反馈在颜色计算器231被阻塞。如果反馈未被阻塞,则像素状态阵列225将使排到管道中的先前的箱子的像素被破坏。
2)如前面所描述的,IZ函数200将从渲染高速缓存216读取Z-值。但是,在桥接期间,因为IZ函数可以操作于不同的箱子,所以渲染高速缓存中的Z-值与IZ函数200不一致。这可能引起目前正在被处理的箱子丢弃错误的像素并且产生错误的结果。从而,这些读取被阻塞。
3)在桥接期间,因为两个函数作用于不同的箱子,所以不允许IZ函数200更新渲染高速缓存216。不防止这种情况会破坏仍在渲染管道202中的过程(排出)中的前一个箱子,导致错误的结果。因为桥接函数阻塞IZ函数向渲染高速缓存216的Z-缓冲器218的写入,所以迫使所有在桥接期间进入管道的像素都不被提升。
在一个实施例中,为了产生桥接环境,使用桥接计数器在通过渲染管道202的整个过程中跟踪箱子的第一跨距。例如,在箱子的起始,设置单个位的桥接计数器。IZ函数200取得由多边形(例如三角形)产生的多个跨距并且执行Z-测试。在箱子的Z-测试之后的第一非空跨距(非全零像素遮罩)之后,跨距被分派到渲染管道,接着那个跨距被标记为箱子的第一跨距并且桥接计数器增加。一直等到IZ函数在它增加桥接计数器之前输出对于箱子的第一跨度的原因是,如果IZ函数从没有输出像素,则以后将决不减少它。当第一跨距的第一像素通过渲染管道时,桥接计数器减少。当桥接计数器等于零时,渲染管道完全一致(IZ函数与管道的后端工作于相同的箱子),并且开始正常的处理。
现在将更详细地讨论涉及可提升的和不可提升的情况的本发明的实施例。一般地,可提升的特征被提升,但是,引起可提升的特征不被提升的情况包括:
1)桥接是有效的(即,桥接计数器是非零的):在桥接期间,如果IZ函数200将像素推进渲染管道202(例如最小化死循环),则因为没有位置放置数据,所以即使这个特征是可提升的,也不能更新Z-缓冲器218。
2)进程中已经有未提升的像素:因为IZ函数200是被设计用来在任何Z-缓冲器218与IZ函数200相一致的时候迫使渲染器自动通过Z-测试的,有一个特殊情况,如果渲染高速缓存216不一致,则阻止IZ函数越过渲染器。从而,即使特征是可提升的并且桥接是无效的,如果对于给定的像素在管道中已经存在未提升的特征,则对于那个像素将不提升可提升的特征。
如前面所讨论的,记分板224包括像素状态阵列225,该像素状态阵列225用于保持对在渲染管道202中行进的未提升的像素的跟踪。在每个箱子的起始处像素状态阵列225被清空。随着每个像素由IZ函数200处理,像素状态阵列被检查。如果那个像素被提升(即,它是可提升的并且像素状态阵列等于零),对于那个像素,像素状态阵列225保持不变使得随后渲染器将迫使像素通过,假定颜色写入是允许的,将引起颜色写入颜色高速缓存。
另一方面,如果像素未提升(即,记分板224的像素状态阵列225是非零和/或它是诸如“干酪”的不可提升的特征),对于那个像素,像素状态阵列225由IZ函数200增加,并且那个像素的Z-值不写入Z高速缓存。
最后,作为总结,在除了以下情况的所有情况下,可以由IZ函数200将所计算的源值写入Z-缓冲器218高速缓存像素条目(即,已提升的像素):
1)如果未通过Z-测试。
2)如果禁止写入Z-缓冲器218。
3)如果桥接计数器非零(即,渲染高速缓存216与IZ函数200不一致)。
4)如果像素状态阵列225非零。
5)像素是不可提升的。
本领域的技术人员应该认识到,尽管已经以具体的实施例描述了本发明的各个方面和各种功能元件,但是应该意识到可以硬件、软件、固件、中间件或者它们的结合来实现这些方面和功能。
当以软件、固件或中间件实现时,本发明的实施例中的元素是执行必要任务的指令/代码段。当机器或处理器读取和执行指令时,其引起机器处理器执行必要的操作以实现和/或使用本发明的实施例。作为示例性的例子,“机器”或“处理器”可以包括图形处理器、渲染引擎、数字信号处理器、微控制器、状态机或者甚至具有诸如复杂指令集计算机(CISC)、精简指令集计算机(RISC)、超长指令字(VLIW)或混合体系结构的任何类型体系结构的中央处理单元。这些指令可以存储于机器可读介质(例如处理器可读介质或计算机程序产品),或者由以载波形式实现的计算机数据信号或由载波调制的信号在通信链路的传输介质上进行传输。机器可读介质可以包括可以以机器可读和可执行的形式存储和传送信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除可编程ROM(EPROM)、软盘、高密度磁盘CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路等。计算机数据信号可以包括能够在诸如电子网络信道、光纤、空气、电磁、RF链路等的传输介质上传播的任何信号。代码段可以通过诸如因特网、内联网(Intranet)等网络下载。
虽然已经参照示例性实施例描述了本发明的多个实施例,但是这些描述不能被解释为限制的意思。对于与本发明的实施例有关的领域的技术人员很清楚,所述示例性实施例的各种修改以及本发明的其它实施例被认为是在本发明的精神和范围之内。

Claims (33)

1.一种用于图形渲染的z-缓冲装置,包括:
Z-缓冲测试逻辑,其位于渲染管道的前端部分,用于执行对像素的Z-测试并且确定所述像素是否通过所述Z-测试;和
渲染高速缓存,其包括耦合到所述Z-缓冲测试逻辑的Z-缓冲器,使得在所述渲染管道的前端部分对于所述像素的所述Z-测试是可执行的并且所述Z-缓冲器是可更新的,其中如果所述像素通过所述Z-测试,则所述Z-缓冲测试逻辑还确定所述像素是可提升的还是不可提升的。
2.如权利要求1所述的装置,其中,如果像素未通过所述Z-测试,则删除所述像素并且不更新所述Z-缓冲器。
3.如权利要求1所述的装置,其中,如果确定所述像素是可提升的,则提升所述可提升的像素。
4.如权利要求3所述的装置,其中,提升所述可提升的像素包括更新所述Z-缓冲器,并且向管道的其余部分发布所述已提升的像素。
5.如权利要求1所述的装置,其中,如果确定像素是不可提升的,则不提升所述不可提升的像素。
6.如权利要求5所述的装置,其中,不提升所述不可提升的像素包括不更新所述Z-缓冲器,并且向管道的其余部分发布所述未提升的像素。
7.如权利要求6所述的装置,还包括记分板存储器,其中,如果确定不提升像素,则使用所述记分板存储器在所述管道中识别并跟踪所述未提升的像素。
8.如权利要求1所述的装置,其中,当像素被识别为干酪像素时,所述像素是不可提升的。
9.如权利要求8所述的装置,其中,干酪像素与具有关联的纹理的像素相关联,所述纹理包括透明纹理或半透明纹理中的至少一个。
10.如权利要求9所述的装置,其中,干酪像素与函数相关联,对于所述函数,在所述渲染管道的稍后的部分有删除测试,所述删除测试包括颜色调整、色度调整和阿尔法测试中的至少一个,从而完成所述像素的完整的属性渲染。
11.如权利要求1所述的装置,其中,位于所述渲染管道前端部分的所述Z-缓冲测试逻辑用于解决桥接环境。
12.一种用于图形渲染的z-缓冲方法,包括:
在渲染管道的前端部分对像素执行Z-测试;
确定所述像素是否通过位于所述渲染管道前端部分的所述Z-测试;
用位于所述渲染管道前端部分的所述Z-测试的结果更新Z-缓冲器,以及
其中如果所述像素通过所述Z-测试,则确定所述像素是可提升的还是不可提升的。
13.如权利要求12所述的方法,其中,如果像素未通过所述Z-测试,则还包括删除所述像素并且不更新所述Z-缓冲器。
14.如权利要求12所述的方法,其中,如果确定所述像素是可提升的,则还包括提升所述可提升的像素。
15.如权利要求14所述的方法,其中,提升所述可提升的像素还包括更新所述Z-缓冲器,并且向管道的其余部分发布所述已提升的像素。
16.如权利要求12所述的方法,其中,如果确定像素是不可提升的,则还包括不提升所述不可提升的像素。
17.如权利要求16所述的方法,其中,不提升所述不可提升的像素还包括不更新所述Z-缓冲器,并且向管道的其余部分发布所述不可提升的像素。
18.如权利要求17所述的方法,还包括在所述管道中识别并跟踪所述未提升的像素。
19.如权利要求12所述的方法,其中,当像素被识别为干酪像素时,所述像素是不可提升的。
20.如权利要求19所述的方法,其中,干酪像素与具有关联的纹理的像素相关联,所述纹理包括透明纹理或半透明纹理中的至少一个。
21.如权利要求20所述的方法,其中,干酪像素与函数相关联,对于所述函数,在所述渲染管道的稍后的部分有删除测试,所述删除测试包括颜色调整、色度调整和阿尔法测试中的至少一个,从而完成所述像素的完整的属性渲染。
22.如权利要求12所述的方法,还包括解决桥接环境。
23.一种用于图形渲染的z-缓冲系统,包括:
用于渲染图形的图形处理器;
渲染引擎,其被包括在所述图形处理器中并且具有渲染管道;
Z-缓冲测试逻辑,其位于所述渲染管道的前端部分,用于对像素执行Z-测试并且确定所述像素是否通过所述Z-测试;和
渲染高速缓存,其包括耦合到所述Z-缓冲测试逻辑的Z-缓冲器,使得在所述渲染管道的前端部分对于所述像素的所述Z-测试是可执行的并且所述Z-缓冲器是可更新的,其中如果所述像素通过所述Z-测试,则所述Z-缓冲测试逻辑还确定所述像素是可提升的还是不可提升的。
24.如权利要求23所述的系统,其中,如果像素未通过所述Z-测试,则删除所述像素并且不更新所述Z-缓冲器。
25.如权利要求23所述的系统,其中,如果确定所述像素是可提升的,则提升所述可提升的像素。
26.如权利要求25所述的系统,其中,提升所述可提升的像素包括更新所述Z-缓冲器,并且向管道的其余部分发布所述已提升的像素。
27.如权利要求23所述的系统,其中,如果确定像素是不可提升的,则不提升所述不可提升的像素。
28.如权利要求27所述的系统,其中,不提升所述不可提升的像素包括不更新所述Z-缓冲器,并且向管道的其余部分发布所述未提升的像素。
29.如权利要求28所述的系统,还包括记分板存储器,其中,如果确定不提升像素,则使用所述记分板存储器在所述管道中识别并跟踪所述未提升的像素。
30.如权利要求23所述的系统,其中,当像素被识别为干酪像素时,所述像素是不可提升的。
31.如权利要求30所述的系统,其中,干酪像素与具有关联的纹理的像素相关联,所述纹理包括透明纹理或半透明纹理中的至少一个。
32.如权利要求23所述的系统,其中,位于渲染管道前端部分的所述Z-缓冲测试逻辑用于解决桥接环境。
33.如权利要求31所述的系统,其中,干酪像素与函数相关联,对于所述函数,在所述渲染管道的稍后的部分有删除测试,所述删除测试包括颜色调整、色度调整和阿尔法测试中的至少一个,从而完成所述像素的完整的属性渲染。
CN200310123056.8A 2002-12-24 2003-12-23 用于图形渲染的z-缓冲技术 Expired - Fee Related CN1270278C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/329,202 2002-12-24
US10/329,202 US7268779B2 (en) 2002-12-24 2002-12-24 Z-buffering techniques for graphics rendering

Publications (2)

Publication Number Publication Date
CN1512454A CN1512454A (zh) 2004-07-14
CN1270278C true CN1270278C (zh) 2006-08-16

Family

ID=32594691

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200310123056.8A Expired - Fee Related CN1270278C (zh) 2002-12-24 2003-12-23 用于图形渲染的z-缓冲技术

Country Status (6)

Country Link
US (1) US7268779B2 (zh)
EP (1) EP1576546A2 (zh)
CN (1) CN1270278C (zh)
AU (1) AU2003290855A1 (zh)
TW (1) TWI278788B (zh)
WO (1) WO2004061776A2 (zh)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4390574B2 (ja) * 2003-03-31 2009-12-24 富士通株式会社 複数のポリゴンから構成される3次元モデルを2次元平面に投影する際の陰線を消去する陰線処理方法
US8432394B1 (en) 2004-05-14 2013-04-30 Nvidia Corporation Method and system for implementing clamped z value interpolation in a raster stage of a graphics pipeline
US8411105B1 (en) 2004-05-14 2013-04-02 Nvidia Corporation Method and system for computing pixel parameters
US8736628B1 (en) 2004-05-14 2014-05-27 Nvidia Corporation Single thread graphics processing system and method
US8687010B1 (en) 2004-05-14 2014-04-01 Nvidia Corporation Arbitrary size texture palettes for use in graphics systems
US8711155B2 (en) * 2004-05-14 2014-04-29 Nvidia Corporation Early kill removal graphics processing system and method
US8736620B2 (en) * 2004-05-14 2014-05-27 Nvidia Corporation Kill bit graphics processing system and method
US7079156B1 (en) * 2004-05-14 2006-07-18 Nvidia Corporation Method and system for implementing multiple high precision and low precision interpolators for a graphics pipeline
US8743142B1 (en) 2004-05-14 2014-06-03 Nvidia Corporation Unified data fetch graphics processing system and method
US20060007234A1 (en) * 2004-05-14 2006-01-12 Hutchins Edward A Coincident graphics pixel scoreboard tracking system and method
US8416242B1 (en) 2004-05-14 2013-04-09 Nvidia Corporation Method and system for interpolating level-of-detail in graphics processors
US8860722B2 (en) * 2004-05-14 2014-10-14 Nvidia Corporation Early Z scoreboard tracking system and method
US8072451B2 (en) * 2004-12-29 2011-12-06 Intel Corporation Efficient Z testing
US20070052704A1 (en) * 2005-09-08 2007-03-08 Arm Limited 3D graphics image formation
US7817151B2 (en) * 2005-10-18 2010-10-19 Via Technologies, Inc. Hardware corrected software vertex shader
US7688319B2 (en) * 2005-11-09 2010-03-30 Adobe Systems, Incorporated Method and apparatus for rendering semi-transparent surfaces
US8766995B2 (en) 2006-04-26 2014-07-01 Qualcomm Incorporated Graphics system with configurable caches
US8207975B1 (en) * 2006-05-08 2012-06-26 Nvidia Corporation Graphics rendering pipeline that supports early-Z and late-Z virtual machines
US8933933B2 (en) * 2006-05-08 2015-01-13 Nvidia Corporation Optimizing a graphics rendering pipeline using early Z-mode
US20070268289A1 (en) * 2006-05-16 2007-11-22 Chun Yu Graphics system with dynamic reposition of depth engine
US8884972B2 (en) * 2006-05-25 2014-11-11 Qualcomm Incorporated Graphics processor with arithmetic and elementary function units
US8869147B2 (en) * 2006-05-31 2014-10-21 Qualcomm Incorporated Multi-threaded processor with deferred thread output control
US8644643B2 (en) * 2006-06-14 2014-02-04 Qualcomm Incorporated Convolution filtering in a graphics processor
US8766996B2 (en) * 2006-06-21 2014-07-01 Qualcomm Incorporated Unified virtual addressed register file
US8537168B1 (en) 2006-11-02 2013-09-17 Nvidia Corporation Method and system for deferred coverage mask generation in a raster stage
US8773447B1 (en) * 2006-12-08 2014-07-08 Nvidia Corporation Tag logic scoreboarding in a graphics pipeline
US7996622B1 (en) 2007-08-07 2011-08-09 Nvidia Corporation Detecting unused cache lines
US8441497B1 (en) 2007-08-07 2013-05-14 Nvidia Corporation Interpolation of vertex attributes in a graphics processor
US9183607B1 (en) * 2007-08-15 2015-11-10 Nvidia Corporation Scoreboard cache coherence in a graphics pipeline
US8199158B2 (en) * 2008-06-11 2012-06-12 Intel Corporation Performance allocation method and apparatus
US8154546B2 (en) * 2008-06-27 2012-04-10 Microsoft Corporation Rational Z-buffer for decreasing a likelihood of Z-buffer collisions
US9256514B2 (en) 2009-02-19 2016-02-09 Nvidia Corporation Debugging and perfomance analysis of applications
CN103080984B (zh) * 2010-06-30 2017-04-12 巴里·林恩·詹金斯 确定从视区看去可见的网格多边形或所述网格多边形的分段的集合的方法及系统
US9411595B2 (en) 2012-05-31 2016-08-09 Nvidia Corporation Multi-threaded transactional memory coherence
US9275601B2 (en) 2012-12-12 2016-03-01 Intel Corporation Techniques to control frame display rate
US9214006B2 (en) 2013-06-04 2015-12-15 Arm Limited Hidden surface removal in graphics processing systems
CN103871095B (zh) * 2012-12-17 2018-07-17 Arm有限公司 图形处理系统中的隐藏面消除
US9153070B2 (en) 2012-12-17 2015-10-06 Arm Limited Hidden surface removal in graphics processing systems
US9824009B2 (en) 2012-12-21 2017-11-21 Nvidia Corporation Information coherency maintenance systems and methods
US10102142B2 (en) 2012-12-26 2018-10-16 Nvidia Corporation Virtual address based memory reordering
US20140306958A1 (en) * 2013-04-12 2014-10-16 Dynamic Digital Depth Research Pty Ltd Stereoscopic rendering system
US9477575B2 (en) 2013-06-12 2016-10-25 Nvidia Corporation Method and system for implementing a multi-threaded API stream replay
GB2517185B (en) * 2013-08-14 2020-03-04 Advanced Risc Mach Ltd Graphics tile compositing control
US9805478B2 (en) 2013-08-14 2017-10-31 Arm Limited Compositing plural layer of image data for display
US9569385B2 (en) 2013-09-09 2017-02-14 Nvidia Corporation Memory transaction ordering
US9536333B2 (en) * 2013-10-17 2017-01-03 Arm Limited Method and apparatus for improved processing of graphics primitives
KR20150069617A (ko) * 2013-12-13 2015-06-24 삼성전자주식회사 그래픽 프로세싱 유닛, 이를 포함하는 soc, 및 이를 포함하는 그래픽 프로세싱 시스템
US9940686B2 (en) 2014-05-14 2018-04-10 Intel Corporation Exploiting frame to frame coherency in a sort-middle architecture
US9659407B2 (en) * 2015-01-26 2017-05-23 MediaTek Singapore, Pte. Lte. Preemptive flushing of spatial selective bins for deferred graphics processing
GB2534567B (en) * 2015-01-27 2017-04-19 Imagination Tech Ltd Processing primitives which have unresolved fragments in a graphics processing system
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

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5619627A (en) * 1994-05-03 1997-04-08 Loral Aerospace Corp. Multiple-level occulting using a mask buffer
US6025853A (en) * 1995-03-24 2000-02-15 3Dlabs Inc. Ltd. Integrated graphics subsystem with message-passing architecture
US5949428A (en) * 1995-08-04 1999-09-07 Microsoft Corporation Method and apparatus for resolving pixel data in a graphics rendering system
US5923333A (en) * 1997-01-06 1999-07-13 Hewlett Packard Company Fast alpha transparency rendering method
US6166743A (en) * 1997-03-19 2000-12-26 Silicon Magic Corporation Method and system for improved z-test during image rendering
JPH10334269A (ja) * 1997-06-03 1998-12-18 Sega Enterp Ltd 画像処理装置、画像処理方法、及び画像処理プログラムを記録した記録媒体
US6038031A (en) * 1997-07-28 2000-03-14 3Dlabs, Ltd 3D graphics object copying with reduced edge artifacts
JP3580682B2 (ja) * 1997-09-26 2004-10-27 株式会社ソニー・コンピュータエンタテインメント 画像処理装置および方法
JPH11259678A (ja) * 1998-03-12 1999-09-24 Sega Enterp Ltd 画像表示装置及びそれによる画像表示方法
US6760025B1 (en) * 1998-07-07 2004-07-06 S3 Graphics Co., Ltd. Z-buffer based interpenetrating object detection for antialiazing
US6720964B1 (en) * 1998-08-27 2004-04-13 Ati International Srl Method and apparatus for processing portions of primitives that are being rendered
US6404425B1 (en) 1999-01-11 2002-06-11 Evans & Sutherland Computer Corporation Span-based multi-sample z-buffer pixel processor
US6380935B1 (en) * 1999-03-17 2002-04-30 Nvidia Corporation circuit and method for processing render commands in a tile-based graphics system
US6414680B1 (en) 1999-04-21 2002-07-02 International Business Machines Corp. System, program product and method of rendering a three dimensional image on a display
GB2355633A (en) 1999-06-28 2001-04-25 Pixelfusion Ltd Processing graphical data
US6448967B1 (en) * 1999-07-26 2002-09-10 Silicon Integrated Systems Corp. Z-Buffer pre-test for 3D graphics performance enhancement
US6559852B1 (en) * 1999-07-31 2003-05-06 Hewlett Packard Development Company, L.P. Z test and conditional merger of colliding pixels during batch building
GB9921777D0 (en) * 1999-09-16 1999-11-17 Koninkl Philips Electronics Nv Method and apparatus for handling translucency in 3d graphics
US6411295B1 (en) 1999-11-29 2002-06-25 S3 Graphics Co., Ltd. Apparatus and method for Z-buffer compression
US6670955B1 (en) * 2000-07-19 2003-12-30 Ati International Srl Method and system for sort independent alpha blending of graphic fragments
US6636214B1 (en) * 2000-08-23 2003-10-21 Nintendo Co., Ltd. Method and apparatus for dynamically reconfiguring the order of hidden surface processing based on rendering mode
US6636212B1 (en) * 2000-11-14 2003-10-21 Nvidia Corporation Method and apparatus for determining visibility of groups of pixels
KR100420857B1 (ko) * 2001-07-12 2004-03-02 학교법인연세대학교 3차원 렌더링 프로세서의 픽셀 레스터라이재이션 처리방법 및 장치
US6812927B1 (en) * 2002-06-18 2004-11-02 Nvidia Corporation System and method for avoiding depth clears using a stencil buffer

Also Published As

Publication number Publication date
WO2004061776A2 (en) 2004-07-22
US20040119710A1 (en) 2004-06-24
EP1576546A2 (en) 2005-09-21
TWI278788B (en) 2007-04-11
WO2004061776A3 (en) 2004-12-02
US7268779B2 (en) 2007-09-11
CN1512454A (zh) 2004-07-14
TW200416623A (en) 2004-09-01
AU2003290855A1 (en) 2004-07-29

Similar Documents

Publication Publication Date Title
CN1270278C (zh) 用于图形渲染的z-缓冲技术
JP5538750B2 (ja) グラフィックス処理システム
CN105321199B (zh) 图形处理流水线及其操作方法与介质
JP5053857B2 (ja) 3次元グラフィックス処理装置および方法
CN107038742B (zh) 屏幕空间管线中的多通道渲染
US10176621B2 (en) Using compute shaders as front end for vertex shaders
US7499051B1 (en) GPU assisted 3D compositing
US9165337B2 (en) Command instruction management
GB2594764A (en) Graphics processing systems
TW201909109A (zh) 用於圖形處理的衝穿技術
US10430989B2 (en) Multi-pass rendering in a screen space pipeline
US11521342B2 (en) Residency map descriptors
CN101271584B (zh) 可编程图形处理单元计算核心的常量缓冲的方法和系统
KR20200067222A (ko) 그래픽스 파이프라인에서의 인덱스들의 압축 및 압축 해제
US10672182B2 (en) Compact visibility state for GPUs compatible with hardware instancing
WO2018128877A1 (en) Prefetching for a graphics shader
US8237725B1 (en) Vertex cache map mode for per-vertex state changes
US20230377178A1 (en) Potentially occluded rasterization
CN118052692A (zh) 图形处理器
CN118052693A (zh) 图形处理器
CN118052691A (zh) 图形处理器
CN118052694A (zh) 图形处理器
CN118043842A (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

Granted publication date: 20060816

Termination date: 20181223

CF01 Termination of patent right due to non-payment of annual fee