深度缓冲区预处理制造技术

技术编号:37773369 阅读:20 留言:0更新日期:2023-06-06 13:39
本发明专利技术公开了用于实现深度缓冲区预处理的系统、设备和方法。渲染应用程序使用分格方法以逐个图块地渲染虚拟场景的图元,其中每个图块对应于屏幕的一部分。在调用像素着色器之前,该应用程序使得对该图块的图元执行深度缓冲区预处理。在该深度缓冲区预处理期间,仅渲染该虚拟场景的深度部分,以确定哪些像素样本是可见的以及哪些像素样本是隐藏的。然后,重新绘制该场景,但是不将隐藏的像素样本发送到该像素着色器。在较大百分比的图元重叠的情况下,该技术提高该渲染应用程序的效率,因为可避免对该隐藏的像素样本进行像素着色。避免对该隐藏的像素样本进行像素着色。避免对该隐藏的像素样本进行像素着色。

【技术实现步骤摘要】
【国外来华专利技术】深度缓冲区预处理

技术介绍

[0001]相关技术描述
[0002]图形处理器通常用于计算机图形处理系统内,以从几何模型创建计算机生成的图像。几何模型定义虚拟场景的各种对象、细节、照明源和其他元素。计算系统基于几何模型和来自软件应用程序的其他输入来确定如何渲染给定场景。这些输入包括图形对象,诸如点、线、多边形、三维实体对象和其他对象。这些对象可以更一般地称为

图元


[0003]图形处理单元(GPU)或其他类型的处理器对这些输入和几何模型进行处理,以生成表示期望图像或视频帧的像素色值的二维或三维阵列。帧的每个像素具有与之相关联的多个属性,包括颜色和纹理。通常,着色器用于对每个像素的属性执行算术和逻辑运算以实现表示该像素的最终值。当该像素被驱动到显示装置时,最终值被置于帧缓冲器中并被使用。
[0004]当多个图元被渲染并投影到屏幕上的相同像素时,渲染引擎需要确定哪个图元是可见的以及哪些图元被遮盖。一种用于解决遮挡问题的技术涉及使像素着色器利用深度缓冲区来执行深度测试。对于屏幕上的每个像素,从视点的角度到最邻近对象的距离被存储在深度缓冲区中。当图元被投影到屏幕空间的给定像素时,执行深度测试以确定所渲染的图元是否比先前渲染的最邻近图元更接近屏幕(即,视点)。如果该图元比先前渲染的图元更接近视点,则该图元通过测试。否则,如果该图元比任何先前渲染的图元更远离视点,则该图元未通过测试。该视点由表示用户的视点或视角的虚拟相机来定义。
[0005]在第一方法中,应用程序将值1.0分配给远离视点的距离,并且将值0.0分配给处于视点或非常接近视点的位置。在第一方法中,当渲染新图元时,将图元的深度值与图元所覆盖的每个像素的深度缓冲区中的当前值进行比较。如果图元的深度值小于给定像素在深度缓冲区中的当前值,则图元通过测试,并且将图元的深度值写入该给定像素的深度缓冲区中。否则,如果图元的深度值大于给定像素在深度缓冲区中的当前值,则图元未通过测试,并且深度缓冲区值保持相同。在第二方法中,应用程序将值0.0分配给远离视点的距离,并且将值1.0分配给处于视点或非常接近视点的位置。在第二方法中,与第一方法相比,对于什么构成通过或未通过结果的确定是相反的。在其他方法中,可使用除0.0至1.0以外的其他范围,将其他值分配给远离和紧靠该视点的距离。
附图说明
[0006]通过结合附图参考以下描述,可更好地理解本文描述的方法和机制的优点,在附图中:
[0007]图1是计算系统的一个具体实施的框图。
[0008]图2是图形渲染系统的另一具体实施的逻辑框图。
[0009]图3是计算系统的一个具体实施的框图。
[0010]图4示出了用于执行深度缓冲区预处理的伪码的一个示例。
[0011]图5是示出了用于执行深度缓冲区预处理的方法的一个具体实施的一般化流程
图。
[0012]图6是示出了用于通过着色器管线在不同处理中逐个图块地来执行单独工作部分的方法的一个具体实施的一般化流程图。
[0013]图7是示出了用于确定将发送哪些图元进行深度预处理的方法的一个具体实施的一般化流程图。
[0014]图8是示出了用于改变处理之间的深度测试函数的方法的一个具体实施的一般化流程图。
[0015]图9是示出了用于改变处理之间的深度测试函数的方法的一个具体实施的一般化流程图。
[0016]图10是示出了用于执行深度预处理的方法的一个具体实施的一般化流程图。
[0017]图11是示出了用于执行颜色处理的方法的一个具体实施的一般化流程图。
[0018]图12是示出了用于修改颜色处理深度测试所用的深度函数的方法的一个具体实施的一般化流程图。
[0019]图13是示出了用于选择图元以通过深度预处理进行处理的方法的一个具体实施的一般化流程图。
具体实施方式
[0020]在以下描述中,阐述了许多具体细节以提供对本文呈现的方法和机制的透彻理解。然而,本领域普通技术人员应当认识到,可在没有这些具体细节的情况下实践各种具体实施。在一些情况下,未详细示出众所周知的结构、部件、信号、计算机程序指令和技术,以避免模糊本文描述的方法。应当了解,为了简单和清楚说明,附图中所示的元件不一定按比例绘制。例如,这些元件中的一些元件的尺寸可相对于其他元件被放大。
[0021]本文公开了用于实现深度缓冲区预处理的各种系统、设备和方法。处理器执行一种应用程序以渲染虚拟场景。在一个具体实施中,在处理器上执行的应用程序使得在调用像素着色器之前执行深度预处理。在深度预处理期间,仅渲染虚拟场景的深度部分,以确定哪些图元是可见的以及哪些图元是隐藏的。然后,重新绘制该场景,但是不将隐藏的图元发送到像素着色器。在较大百分比的图元重叠的情况下,该技术提高渲染应用程序的效率,因为可避免对隐藏图元进行像素着色。
[0022]在一个具体实施中,结合分格来采用以上方法,其中一次仅绘制屏幕的一个小区域。在一个具体实施中,该系统包括批量分格器,其中累积一定数量的图元,然后渲染屏幕的一小部分(即,图块)。在一个具体实施中,将该批次的图元存储在高速缓存中,以减少获取图元所涉及的访问延迟。在一个具体实施中,基于高速缓存的大小来确定一个批次中的图元数量。在该具体实施中,根据所渲染的颜色和/或深度表面来设定高速缓存的大小。
[0023]在一个具体实施中,将虚拟场景的给定帧分割成图块,并且逐个图块地对该场景进行渲染。每个图块(即,分格)包括任何数量的图元,这些图元可跨越多个图块,并且这些图元可被重放多次。在系统处理图块的同时,首先渲染图块中的每个图元的深度部分,然后针对与通过了预处理深度测试的每个图元相关联的颜色信息,再次对该图块进行处理。在颜色处理期间,像素着色器对像素进行着色以表示虚拟场景。然后,可以将这些像素提供到显示控制器以驱动到显示器。可针对视频游戏、电影或其他应用程序的每个帧重复该过程。
[0024]现在参考图1,示出了计算系统100的一个具体实施的框图。在一个具体实施中,计算系统100至少包括处理器105A

N、输入/输出(I/O)接口120、总线125、存储器控制器130、网络接口135、存储器装置140、显示控制器150以及显示器155。在其他具体实施中,计算系统100包括其他部件并且/或者计算系统100以不同方式布置。处理器105A

N表示包括在系统100中的任何数量的处理器。
[0025]在一个具体实施中,处理器105A是通用处理器,诸如中央处理单元(CPU)。在该具体实施中,处理器105A执行驱动器110(例如,图形驱动器)以用于与系统100中的一个或多个其他处理器通信和/或控制该系统中的该一个或多个其他处理器的操作。应当注意,根据具体实施,驱动器110可使用硬件、软件和/或固件的任何合适的组合来实现。在一个具体实施中,处理器105N是具有高度并行架构的数据并行处理器。数据并行处理器包括图形处理单元(GP本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种设备,包括:高速缓存,所述高速缓存存储场景的多个图元;和控制单元,所述控制单元耦接到所述高速缓存,其中所述控制单元被配置为:针对存储在所述高速缓存中的所述多个图元中的选定图元,执行与渲染所述场景相关联的第一部分处理,其中所述第一部分处理包括第一测试;基于所述第一测试的结果,针对所述多个图元执行第二部分处理,其中所述第二部分处理与渲染所述场景相关联;作为所述第二部分处理的结果,生成所述场景的着色像素;以及使所述着色像素被驱动到显示器。2.根据权利要求1所述的设备,其中所述第一测试是深度缓冲区预处理测试,并且所述多个图元对应于所述场景的给定图块,并且其中所述控制单元还被配置为:识别通过所述深度缓冲区预处理测试的第一像素样本子集;以及识别未通过所述深度缓冲区预处理测试的第二像素样本子集。3.根据权利要求2所述的设备,其中所述第二部分处理包括颜色着色,并且所述控制单元还被配置为:仅对所述第一像素样本子集执行颜色着色,以生成与所述第一像素样本子集对应的着色像素;以及跳过针对所述第二像素样本子集的颜色着色。4.根据权利要求3所述的设备,其中所述控制单元还被配置为:利用第一深度函数,针对给定像素样本执行所述深度缓冲区预处理测试;以及利用第二深度函数,针对所述给定像素样本执行第二深度缓冲区测试,其中所述第二深度函数不同于所述第一深度函数。5.根据权利要求4所述的设备,其中所述第一深度函数为小于函数,并且所述第二深度函数为小于或等于函数。6.根据权利要求4所述的系统,其中所述控制单元还被配置为:响应于所述像素样本通过所述深度缓冲区预处理测试,针对所述给定像素样本,将对应指示符设置为预处理缓冲区中的第一值;响应于所述对应指示符具有所述第一值,利用所述第二深度函数,针对所述给定像素样本执行所述第二深度缓冲区测试;以及响应于所述给定像素样本通过所述第二深度缓冲区测试,对所述给定像素样本进行着色,并且将所述对应指示符设置为所述预处理缓冲区中的第二值。7.根据权利要求4所述的设备,其中所述控制单元还被配置为响应于一个或多个图元满足一个或多个条件,在执行所述深度缓冲区预处理测试之前,丢弃所述一个或多个图元。8.一种方法,包括:针对存储在高速缓存中的场景的多个图元中的选定图元,执行与渲染所述场景相关联的第一部分处理,其中所述第一部分处理包括第一测试;基于所述第一测试的结果,针对所述多个图元执行第二部分处理,其中所述第二部分处理与渲染所述场景相关联;作为所述第二部分处理的结果,生成所述场景的着色像素;以及
使所述着色像素被驱动到显示器。9.根据权利要求8所述的方法,其中所述第一测试是深度缓冲区预处理测试,并且所述多个图元对应于所述场景的给定图块,并且其中所述方法还包括:识别通过所述深度缓冲区预处理测试的第一像素样本子集;以及识别未通过所述深度缓冲区预处理测试的第二像素样本子集。10.根据权利要求9所述的方法,其中所述第二部分处理包括颜色着色,并且其中所述方法还包括:仅对所述第一像素样本子集执行颜色着色,以生成与所述第一像素样本子集对应的着色像素;以及跳过...

【专利技术属性】
技术研发人员:
申请(专利权)人:ATI科技无限责任公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1