首页 / 专利库 / 专利权 / 第I章 / 国际申请 / 修改 / 可见性信息修改

可见性信息修改

阅读:662发布:2020-05-12

专利汇可以提供可见性信息修改专利检索,专利查询,专利分析的服务。并且在一实例中,用于将图形数据的3D场景再现为2D场景的方法可包含将用以从视点表示所述3D场景的2D空间划分为多个图 块 。所述3D场景可包含多个基元。所述方法可包含产生所述多个图块中的第一图块的可见性信息。所述方法可包含 修改 所述第一图块的所述可见性信息以产生所述第一图块的经修改可见性信息。所述方法可包含使用所述第一图块的所述经修改可见性信息产生所述2D场景。,下面是可见性信息修改专利的具体信息内容。

1.一种用于将图形数据的3D场景再现为2D场景的方法,所述方法包括:
将用以从视点表示所述3D场景的2D空间划分为多个图,其中所述3D场景包含多个基元;
在第一光栅化遍次期间,根据第一光栅化像素粒度平光栅化所述多个图块中的第一图块的仅位置数据以产生第一经光栅化第一图块;
使用由所述第一光栅化遍次产生的所述第一经光栅化第一图块执行第一可见性测试;
基于所述第一可见性测试产生所述多个图块中的所述第一图块的可见性信息,其中所述第一图块的所述可见性信息包含用于所述多个基元中的每一基元的值,其中用于每一基元的所述值是第一值或第二值,且其中所述第一值指示所述第一值相关联的基元将不再现,且所述第二值指示所述第二值相关联的基元将再现;
在第二光栅化遍次期间,根据第二光栅化像素粒度水平光栅化由所述可见性信息识别为可见的所述第一图块的基元的仅位置数据以产生第二经光栅化第一图块,其中所述第二光栅化像素粒度水平小于或等于所述第一光栅化像素粒度水平;
在根据所述第二光栅化像素粒度水平光栅化所述第一图块的同时产生所述多个图块中的第二图块的第二可见性信息;
使用由所述第二光栅化遍次产生的所述第二经光栅化第一图块执行第二可见性测试;
基于所述第二可见性测试修改所述第一图块的所述可见性信息以产生所述第一图块的经修改可见性信息;以及
经由所述第一图块的所述经修改可见性信息再现经识别为可见的所述第一图块的基元的位置数据和颜色数据。
2.根据权利要求1所述的方法,其中修改所述可见性信息包括将分别对应于所述第一图块的所述可见性信息的至少一个基元的至少一个第二值修改为所述第一值。
3.根据权利要求1所述的方法,其中所述第一可见性测试包含具有第一像素粒度水平的第一z测试且所述第二可见性测试包含具有第二像素粒度水平的第二z测试,且其中所述第二像素粒度水平小于或等于所述第一像素粒度水平。
4.根据权利要求3所述的方法,其中所述第一可见性测试包含低分辨率z测试且所述第二可见性测试包含高分辨率z测试。
5.根据权利要求1所述的方法,其进一步包括:
在针对所述第一图块执行完整顶点着色之前修改所述第一图块的所述可见性信息。
6.根据权利要求1所述的方法,其进一步包括:
在修改所述第一图块的所述可见性信息之后光栅化所述第一图块。
7.一种用于将图形数据的3D场景再现为2D场景的装置,所述装置包括:
存储器,其用于存储经再现图形数据;以及
一或多个处理器,其经配置以:
将用以从视点表示3D场景的2D空间划分为多个图块,其中所述3D场景包含多个基元;
在第一光栅化遍次期间,根据第一光栅化像素粒度水平光栅化所述多个图块中的第一图块的仅位置数据以产生第一经光栅化第一图块;
使用由所述第一光栅化遍次产生的所述第一经光栅化第一图块执行第一可见性测试;
基于所述第一可见性测试产生所述多个图块中的所述第一图块的可见性信息,其中所述第一图块的所述可见性信息包含用于所述多个基元中的每一基元的值,其中用于每一基元的所述值是第一值或第二值,且其中所述第一值指示所述第一值相关联的基元将不再现,且所述第二值指示所述第二值相关联的基元将再现;
在第二光栅化遍次期间,根据第二光栅化像素粒度水平光栅化由所述可见性信息识别为可见的所述第一图块的基元的仅位置数据以产生第二经光栅化第一图块;其中所述第二光栅化像素粒度水平小于或等于所述第一光栅化像素粒度水平;
在根据所述第二光栅化像素粒度水平光栅化所述第一图块的同时产生所述多个图块中的第二图块的第二可见性信息;
使用由所述第二光栅化遍次产生的所述第二经光栅化第一图块执行第二可见性测试;
基于所述第二可见性测试修改所述第一图块的所述可见性信息以产生所述第一图块的经修改可见性信息;
经由所述第一图块的所述经修改可见性信息再现经识别为可见的所述第一图块的基元的位置数据和颜色数据;以及
将所述2D场景存储于所述存储器中。
8.根据权利要求7所述的装置,其中所述一或多个处理器经配置以修改所述可见性信息包括所述一或多个处理器经配置以将分别对应于所述第一图块的所述可见性信息的至少一个基元的至少一个第二值修改为所述第一值。
9.根据权利要求7所述的装置,其中所述第一可见性测试包含低分辨率z测试且所述第二可见性测试包含高分辨率z测试。
10.根据权利要求7所述的装置,其中所述一或多个处理器经配置以:
在针对所述第一图块执行完整顶点着色之前修改所述第一图块的所述可见性信息。
11.一种用于将图形数据的3D场景再现为2D场景的设备,所述设备包括:
用于将用以从视点表示3D场景的2D空间划分为多个图块的装置,其中所述3D场景包含多个基元;
用于在第一光栅化遍次期间,根据第一光栅化像素粒度水平光栅化所述多个图块中的第一图块的仅位置数据以产生第一经光栅化第一图块的装置;
用于使用由所述第一光栅化遍次产生的所述第一经光栅化第一图块执行第一可见性测试的装置;
用于基于所述第一可见性测试产生所述多个图块中的所述第一图块的可见性信息的装置,其中所述第一图块的所述可见性信息包含用于所述多个基元中的每一基元的值,其中用于每一基元的所述值是第一值或第二值,且其中所述第一值指示所述第一值相关联的基元将不再现,且所述第二值指示所述第二值相关联的基元将再现;
用于在第二光栅化遍次期间,根据第二光栅化像素粒度水平光栅化由所述可见性信息识别为可见的所述第一图块的基元的仅位置数据以产生第二经光栅化第一图块的装置,其中所述第二光栅化像素粒度水平小于或等于所述第一光栅化像素粒度水平;
用于在根据所述第二光栅化像素粒度水平光栅化所述第一图块的同时产生所述多个图块中的第二图块的第二可见性信息的装置;
用于使用由所述第二光栅化遍次产生的所述第二经光栅化第一图块执行第二可见性测试的装置;
用于基于所述第二可见性测试修改所述第一图块的所述可见性信息以产生所述第一图块的经修改可见性信息的装置;以及
用于经由所述第一图块的所述经修改可见性信息再现经识别为可见的所述第一图块的基元的位置数据和颜色数据的装置。
12.根据权利要求11所述的设备,其中用于修改所述可见性信息的装置包括用于将分别对应于所述第一图块的所述可见性信息的至少一个基元的至少一个第二值修改为所述第一值的装置。
13.根据权利要求11所述的设备,其中所述第一可见性测试包含低分辨率z测试且所述第二可见性测试包含高分辨率z测试。
14.根据权利要求11所述的设备,其进一步包括:
用于在针对所述第一图块执行完整顶点着色之前修改所述第一图块的所述可见性信息的装置。
15.一种具有存储于其上的指令的非暂时性计算机可读存储媒体,所述指令在执行时致使一或多个处理器进行以下操作:
将用以从视点表示3D场景的2D空间划分为多个图块,其中所述3D场景包含多个基元;
在第一光栅化遍次期间,根据第一光栅化像素粒度水平光栅化所述多个图块中的第一图块的仅位置数据以产生第一经光栅化第一图块;
使用由所述第一光栅化遍次产生的所述第一经光栅化第一图块执行第一可见性测试;
基于所述第一可见性测试产生所述多个图块中的所述第一图块的可见性信息,其中所述第一图块的所述可见性信息包含用于所述多个基元中的每一基元的值,其中用于每一基元的所述值是第一值或第二值,且其中所述第一值指示所述第一值相关联的基元将不再现,且所述第二值指示所述第二值相关联的基元将再现;
在第二光栅化遍次期间,根据第二光栅化像素粒度水平光栅化由所述可见性信息识别为可见的所述第一图块的基元的仅位置数据以产生第二经光栅化第一图块,其中所述第二光栅化像素粒度水平小于或等于所述第一光栅化像素粒度水平;
在根据所述第二光栅化像素粒度水平光栅化所述第一图块的同时产生所述多个图块中的第二图块的第二可见性信息;
使用由所述第二光栅化遍次产生的所述第二经光栅化第一图块执行第二可见性测试;
基于所述第二可见性测试修改所述第一图块的所述可见性信息以产生所述第一图块的经修改可见性信息;以及
经由所述第一图块的所述经修改可见性信息再现经识别为可见的所述第一图块的基元的位置数据和颜色数据。
16.根据权利要求15所述的非暂时性计算机可读存储媒体,其中存储于其上的当执行时致使所述一或多个处理器修改所述可见性信息的所述指令包括当执行时致使所述一或多个处理器将分别对应于所述第一图块的所述可见性信息的至少一个基元的至少一个第二值修改为所述第一值的指令。
17.根据权利要求15所述的非暂时性计算机可读存储媒体,其中所述第一可见性测试包含低分辨率z测试且所述第二可见性测试包含高分辨率z测试。
18.根据权利要求15所述的非暂时性计算机可读存储媒体,其进一步包括存储于其上的当执行时致使所述一或多个处理器进行以下操作的指令:
在针对所述第一图块执行完整顶点着色之前修改所述第一图块的所述可见性信息。

说明书全文

可见性信息修改

技术领域

[0001] 本发明涉及图形处理。

背景技术

[0002] 计算装置常常利用图形处理单元(GPU)加速再现用于显示的图形数据。此类计算装置可包含(例如)计算机工作站、例如所谓的智能电话等移动电话、嵌入系统、个人计算机、平板计算机及视频游戏控制台。GPU通常执行图形处理管线,所述图形处理管线包含一起操作以执行图形处理命令的多个处理级。主机中央处理单元(CPU)可通过将一或多个图形处理命令发布给GPU来控制GPU的操作。现代的CPU通常能够同时执行多个应用,所述多个应用中的每一者可需要在执行期间利用GPU。
[0003] 提供用于在电子显示器上视觉呈现的内容的装置通常包含图形处理单元(GPU)。GPU将表示内容的像素再现在显示器上。GPU产生显示器上的每一像素的一或多个像素值且对显示器上的每一像素的像素值执行图形处理以再现每一像素以用于呈现。

发明内容

[0004] 大体来说,本发明描述用于再现图形数据的技术。举例来说,本发明的一或多种技术包含修改可见性信息以在例如基于图的再现中优化再现。
[0005] 在一个实例中,本发明描述一种方法,所述方法包括:将用以从视点表示3D场景的2D空间划分为多个图块,其中所述3D场景包含多个基元;产生所述多个图块中的第一图块的可见性信息,其中所述第一图块的所述可见性信息包含用于所述多个基元中的每一基元的值,其中用于每一基元的所述值是第一值或第二值,且其中所述第一值指示所述第一值相关联的基元将不再现;修改所述第一图块的所述可见性信息以产生所述第一图块的经修改可见性信息;以及使用所述第一图块的所述经修改可见性信息产生所述2D场景。
[0006] 在另一实例中,本发明描述一种装置,其包括:存储器,其用于存储经再现图形数据;以及一或多个处理器,其经配置以:将用以从视点表示3D场景的2D空间划分为多个图块,其中所述3D场景包含多个基元;产生所述多个图块中的第一图块的可见性信息,其中所述第一图块的所述可见性信息包含用于所述多个基元中的每一基元的值,其中用于每一基元的所述值是第一值或第二值,且其中所述第一值指示所述第一值相关联的基元将不再现;修改所述第一图块的所述可见性信息以产生所述第一图块的经修改可见性信息;使用所述第一图块的所述经修改可见性信息产生2D场景;以及将所述2D场景存储于所述存储器中。
[0007] 在另一实例中,本发明描述一种设备,其包括:用于将用以从视点表示3D场景的2D空间划分为多个图块的装置,其中所述3D场景包含多个基元;用于产生所述多个图块中的第一图块的可见性信息的装置,其中所述第一图块的所述可见性信息包含用于所述多个基元中的每一基元的值,其中用于每一基元的所述值是第一值或第二值,且其中所述第一值指示所述第一值相关联的基元将不再现;用于修改所述第一图块的所述可见性信息以产生所述第一图块的经修改可见性信息的装置;以及用于使用所述第一图块的所述经修改可见性信息产生2D场景的装置。
[0008] 在另一实例中,本发明描述一种具有存储于其上的指令的非暂时性计算机可读存储媒体,所述指令在执行时致使计算装置的一或多个处理器进行以下操作:将用以从视点表示3D场景的2D空间划分为多个图块,其中所述3D场景包含多个基元;产生所述多个图块中的第一图块的可见性信息,其中所述第一图块的所述可见性信息包含用于所述多个基元中的每一基元的值,其中用于每一基元的所述值是第一值或第二值,且其中所述第一值指示所述第一值相关联的基元将不再现;修改所述第一图块的所述可见性信息以产生所述第一图块的经修改可见性信息;以及使用所述第一图块的所述经修改可见性信息产生2D场景。
[0009] 在附图和以下描述中阐明本发明的一或多个实例的细节。本发明的其它特征、目标和优势将从所述描述和图式以及从权利要求书中显而易见。

附图说明

[0010] 图1是示出经配置以使用本发明的技术的实例处理单元的框图
[0011] 图2是示出经配置以使用本发明的技术的实例计算装置的框图。
[0012] 图3是更详细地示出图2的某些组件的实例实施方案的框图。
[0013] 图4说明根据本文阐述的一或多个技术处理图形数据的一个实例。
[0014] 图5说明根据本文阐述的一或多个技术处理图形数据的一个实例。
[0015] 图6A说明简化3D图形场景的一个实例。
[0016] 图6B说明可见性信息的实例。
[0017] 图6C说明未经修改可见性信息和经修改可见性信息的实例。
[0018] 图7是示出本发明的实例方法的流程图

具体实施方式

[0019] 经配置以再现图形的处理单元(例如,下文更详细地描述的处理单元1)可经配置以将三维场景再现为二维场景(即,从至少一个视点、相机点或类似点对三维场景的二维表示)。为了将三维场景再现为二维场景,可在称为基于图块的再现或更简单地称为分仓(binning)的过程中通过这些处理单元将二维空间划分为图块(有时称为仓)。二维空间可用以从特定视点表示三维场景。在一些实例中,可将二维空间描述为具有X和Y坐标维度,其中X和Y可或可不彼此相等。可按每图块基础处理三维场景,且在个别地处理每一图块之后在例如缓冲器中重构为二维场景。一般来说,本发明的技术是针对用于三维场景到二维场景的基于图块的再现的技术。
[0020] 基于图块的再现可关于数个处理遍次进行描述。举例来说,如本文所描述,当执行基于图块的再现时,处理单元1可经配置以执行分仓遍次和多个光栅化遍次(例如,两个或三个光栅化遍次)。下文更详细地描述这些光栅化遍次以及其它细节。在一些实例中,第一光栅化遍次可视为分仓遍次的部分,且第二光栅化遍次可视为再现遍次(例如,跟随分仓遍次的遍次)的部分。在其它实例中,第一光栅化遍次和第二光栅化遍次可视为分仓遍次的部分,且第三光栅化遍次可视为再现遍次(例如,跟随分仓遍次的光栅化遍次)的部分。
[0021] 相对于分仓遍次,处理单元1可经配置以接收并处理针对特定场景的绘制命令。每一绘制调用可包含一或多个基元,所述一或多个基元中的每一个具有一或多个顶点。处理单元1可经配置以对于针对特定场景的绘制命令中的每一基元的每一顶点在屏幕空间中产生位置数据(例如,坐标数据,例如三轴(X、Y、Z)坐标数据)。
[0022] 在分仓遍次期间,处理单元1还可经配置以将三维场景的整个帧划分为多个图块(有时称为仓)。如本文所使用,将三维场景划分为多个图块的参考指代将用以从特定视点表示三维场景的二维空间划分为多个图块。在一些实例中,处理单元1可经配置以在每一相应图块的光栅化之前在分仓遍次期间针对所述多个图块中的每一图块产生可见性信息。
[0023] 举例来说,处理单元1可经配置以在每一图块的相应光栅化发生之前产生每一图块的可见性信息。在此方面,应了解,处理单元1可经配置以在对产生可见性信息的图块进行光栅化之前基于每图块基础(例如,针对每一图块产生可见性信息)产生可见性信息。举例来说,处理单元1可经配置以首先产生每一图块的可见性信息,并且接着在每一图块的可见性信息已产生之后执行额外处理。如本文所描述,额外处理可指代基于每图块基础修改可见性信息以及基于每图块基础进行再现(例如,执行再现遍次)。
[0024] 作为另一实例,假定处理单元1将特定场景划分为两个图块:第一图块和第二图块。在此特定实例中,处理单元1可经配置以在光栅化第一图块之前产生第一图块的可见性信息。类似地,处理单元1可经配置以在光栅化第二图块之前产生第二图块的可见性信息。在又另一实例中,处理单元1可经配置以将整个场景处理为单个图块。在此实例中,处理单元1可经配置以在光栅化场景之前产生场景图块的可见性信息。还应理解在此特定实例中,整个场景可被称为图块,应理解场景包括单个图块。在此方面应了解,本文中所描述的技术可应用于其中不使用基于图块的再现的图形再现技术。举例来说,本文中所描述的技术可当场景未划分成多个图块时增强场景的图形再现。
[0025] 在其它实例中,处理单元1可经配置以在用于每一相应图块的再现遍次之前在分仓遍次期间产生所述多个图块中的每一图块的可见性信息。举例来说,处理单元1可经配置以在对每一图块执行相应再现遍次发生之前产生每一图块的可见性信息。如本文所使用,再现遍次可包含完整顶点着色过程(例如,不仅仅产生位置数据的顶点着色过程)。举例来说,完整顶点着色过程可产生位置数据、颜色数据和其它顶点着色数据,而仅位置顶点着色过程可仅产生位置数据。在此方面,在执行再现遍次之前可指代在执行完整顶点着色过程之前。完整顶点着色过程可由处理单元1的顶点着色器执行,所述顶点着色器经配置以执行完整顶点着色过程。应了解,处理单元1可经配置以在对产生可见性信息的每一相应图块执行再现遍次之前基于每图块基础产生可见性信息(例如,针对每一图块产生可见性信息)。举例来说,处理单元1可经配置以首先产生每一图块的可见性信息,并且接着在每一图块的可见性信息已产生之后执行额外处理。如本文所描述,额外处理可指代基于每图块基础修改可见性信息以及基于每图块基础进行再现(例如,执行再现遍次)。
[0026] 在一些实例中,处理单元1可经配置以在仅位置顶点着色过程之后但在完整顶点着色过程之前产生每一图块的可见性信息。在此类实例中,处理单元1可经配置以使用从仅位置顶点着色过程(例如,处理单元1的经配置以仅输出位置数据的顶点着色器)输出的位置数据以产生每一图块的可见性信息。
[0027] 作为另一实例,假定处理单元1将特定场景划分为两个图块:第一图块和第二图块。在此特定实例中,处理单元1可经配置以在对第一图块执行再现遍次之前(例如,在执行用于第一图块的完整顶点着色过程之前)产生第一图块的可见性信息。类似地,处理单元1可经配置以在对第二图块执行再现遍次之前(例如,在执行用于第二图块的完整顶点着色过程之前)产生第二图块的可见性信息。还应了解,在一些实例中,处理单元1可经配置以在对任何和所有图块执行再现遍次之前基于每图块基础产生可见性信息(例如,针对每一图块产生可见性信息)。
[0028] 如上文所描述,处理单元1可经配置以将整个场景处理为单个图块。在此实例中,处理单元1可经配置以在对场景执行再现遍次之前产生场景图块的可见性信息。还应理解在此特定实例中,整个场景可被称为图块,应理解场景包括单个图块。在此方面应了解,本文中所描述的技术可应用于其中不使用基于图块的再现的图形再现技术。举例来说,本文中所描述的技术可当场景未划分成多个图块时增强场景的图形再现。
[0029] 如本文所使用,“可见性信息”在一些实例中可指代指示相关联的一或多个基元相对于产生可见性信息的图块(或场景,其中不使用基于图块的再现)是否不可见或可见的任何数据结构中的任何信息。举例来说,“可见性信息”可指代指示与一或多个绘制命令相关联的一或多个基元相对于产生可见性信息的图块(或场景,其中不使用基于图块的再现)是否不可见或可见且因此相关联的任何数据结构中的任何信息。作为另一实例,“可见性信息”可被描述为包含1和0的序列的可见性流,其中每一“1”或“0”与特定基元相关联。每一“1”可指示基元在最终经再现2D场景中是可见的或将可见,且每一“0”可指示基元在最终经再现2D场景中可以可见(例如,可能可见)。在其它实例中,“可见性信息”可指代包括呈与可见性流不同的格式的可见性信息的数据结构。
[0030] 在一些实例中,如本文所描述,“可见性信息”可指代指示相关联的一或多个基元相对于产生可见性信息的图块(或场景,其中不使用基于图块的再现)是否将不再现或将经再现的任何数据结构中的任何信息。举例来说,“可见性信息”可指代指示与一或多个绘制命令相关联的一或多个基元相对于产生可见性信息的图块(或场景,其中不使用基于图块的再现)是否将不再现或将经再现且因此相关联的任何数据结构中的任何信息。作为另一实例,“可见性信息”可被描述为包含1和0的序列的可见性流,其中每一“1”或“0”与特定基元相关联。每一“1”可指示基元将经再现,且每一“0”可指示基元将不再现。
[0031] 举例来说,应了解,可见性信息可被描述为包含基于每图块基础指示哪些基元将不再现(例如,本文中描述为在最终经再现2D场景中不可见和/或将不可见的基元)的信息。类似地,应了解,可见性信息可被描述为包含基于每图块基础指示哪些基元将经再现(例如,本文中描述为在最终经再现2D场景中可见或可能可见和/或将可见或将可能可见的基元)的信息。
[0032] “可见性信息”可指代什么的额外描述可贯穿本发明找到。类似地,“经修改可见性信息”可指代什么的描述可贯穿本发明找到。应了解,“可见性信息”和“经修改可见性信息”可指代如本文中所描述的此类术语的任何描述、定义或类似物,除非明确地限于特定定义。举例来说,虽然过程由于其涉及本文阐述的一个示范性定义而可被描述为关于可见性信息(或经修改可见性信息),但应了解,所描述过程也可使用可见性信息(或经修改可见性信息)的任何其它定义而应用。
[0033] 如本文所使用,最终经再现2D场景可指代写入到帧缓冲器的2D场景,其中所述2D场景是从3D场景导出(即,从其再现)。举例来说,关于此理解,最终经再现2D场景可类似地指代从3D场景再现的最终经再现像素。在一些实例中,最终经再现2D场景或最终经再现像素可称为图像、帧或类似物。
[0034] 如本文所描述,基元可称为在图块或场景中可见。然而,应了解,取决于图形管线中的处理点(例如,级),此参考可指代基元在最终经再现2D场景中将可见的事实。类似地,基元可称为在图块或场景中不可见。然而,同样应了解,取决于图形管线中的处理点(例如,级),此参考可指代基元在最终经再现2D场景中不可见的事实。最终经再现2D场景可指代写入到帧缓冲器用于由显示器呈现的2D场景。应了解,写入到帧缓冲器的最终经再现2D场景可在由显示器的实际呈现之前进一步经处理(例如,由显示处理器处理)。
[0035] 如本文所使用,“可以可见”的基元可指代如下事实:根据一个实例,不知道所述基元在图形管线中的特定处理点(例如,在光栅化之前的分仓遍次期间)在最终经再现2D场景中是否将可见或将不可见。在另一实例中,“可以可见”的基元可指代在图形管线中的特定处理点(例如,在光栅化之前的分仓遍次期间)在最终经再现2D场景中不可见或将确定地不可见的基元。
[0036] 应了解,行业大体上将可见性流称为识别基元是否不可见或实际可见。然而,此参考是为了便利性,因为如本文所描述,可通过识别曾经被识别为可能可见的实际不可见的基元将本文所描述的可见性信息(例如当如此结构化时的可见性流)修改为更准确。在此方面,应了解可见性流的正常用语取决于上下文可能不准确。本发明的技术涉及修改可见性信息(例如当如此结构化时的可见性流)。在一些实例中,修改可见性信息可减少或消除经识别为可能可见的实际不可见的基元,从而带来处理资源及类似物的消耗的减少。在其它实例中,与基于未经修改可见性信息用于一或多个图块的再现的情况相比,修改可见性信息可减少在用于一或多个图块的再现遍次期间再现的基元的数目(例如,减少一或多个)。在此类实例中,由于与在基于未经修改可见性信息的再现遍次期间已再现的情况相比,基于经修改可见性信息再现减少一或多个基元,因此可减少处理资源的消耗。
[0037] 通过如本文所描述修改可见性信息,可优化3D场景到2D场景的再现。举例来说,在图形处理管线(或更简单图形管线)的较晚处理级中可减少处理资源的消耗。作为更具体实例,在例如完整顶点着色器级和/或在完整顶点着色器级之后的任何级(例如,跟随完整顶点着色的光栅化级)等较晚处理级中可减少处理资源的消耗。作为一实例,可见性信息可通过控制在用于每一图块的再现遍次期间哪些基元经再现和不再现而控制3D场景到场景的最终经再现2D版本的再现。举例来说,在用于每一图块的再现遍次期间,处理单元1可经配置以使用可见性信息来跳过(例如,不再现)基元,例如识别为不可见的基元。因此,通过如本文所描述修改可见性信息,使处理单元1能够通过使用经修改可见性信息而在用于每一图块的再现遍次期间跳过(例如,不再现)甚至更多基元(例如,在经修改前可见性信息中先前识别为可能可见但在经修改可见性信息中识别为不可见的那些基元),因此减少处理资源(例如,用于再现和着色的处理资源)的消耗。替代地描述,通过如本文所描述修改可见性信息,使处理单元1能够通过使用经修改可见性信息在用于每一图块的再现遍次期间再现较少基元,因此减少处理资源(例如,用于再现和着色的处理资源)的消耗。
[0038] 如本文所描述,“经修改可见性信息”可指代指示与一或多个绘制命令相关联的一或多个基元相对于产生可见性信息的图块(或场景,其中不使用基于图块的再现)是否不可见或可见且因此相关联的任何数据结构中的任何信息。鉴于本文中所描述的技术,可见性信息与经修改可见性信息之间的至少一个差异是不可见/可能可见基元和不可见/实际可见基元的相应识别。处理单元1可经配置以修改可见性信息以产生经修改可见性信息。举例来说,在“可见性信息”可被描述为如上文所阐述的包含1和0的序列的可见性流的情况下,处理单元1可经配置以使用本文中所描述的一或多种技术将一或多个1修改为0和/或将一或多个0修改为1以产生经修改可见性信息。经修改可见性信息(例如,经修改可见性流)中的每一“1”可指示基元在最终经再现2D场景中是可见的或将可见,且每一“0”可指示基元在最终经再现2D场景中不可见(即,非可见、不可见或类似情况)。
[0039] 处理单元1可经配置以通过任何方式(例如,通过任何编码、压缩或游程长度编码技术)对可见性信息进行编码(例如,压缩),且可类似地经配置以解码任何经编码可见性信息。在一些实例中,处理单元1可经配置以修改未经压缩可见性信息,无论未经压缩可见性信息由于其初始地经编码而呈经解码形式或因为未经压缩可见性信息从未经编码)。在此类实例中,处理单元1可经配置以对经编码可见性信息进行解码以产生经解码(或未经压缩)可见性信息;且又经配置以修改经解码可见性信息。在其它实例中,处理单元1可经配置以修改经编码可见性信息。举例来说,处理单元1可经配置以直接修改游程长度经编码可见性信息。在此实例中,处理单元1可经配置以确定修改的性质仅涉及不与任何游程长度相关的单个值。举例来说,可见性流可包括10100011111。此特定可见性可使用游程长度编码进行压缩,以使得根据一个实例可将经压缩可见性流表示为1010214。处理单元1可经配置以修改经压缩可见性流中的加粗的值1010214,因为加粗的值不与任何游程长度相关。应了解,可使用任何游程长度编码技术对本文所描述的可见性信息进行编码;且因此,提供1010214表示作为一实例。通过直接修改经压缩可见性信息,处理单元1经配置以通过避免解压缩经压缩信息而节省处理资源。
[0040] 如上文所描述,可相对于若干处理遍次描述基于图块的再现。举例来说,如本文所描述,当执行基于图块的再现时,处理单元1可经配置以执行分仓遍次和多个光栅化遍次(例如,两个或三个光栅化遍次)。下文更详细地描述这些光栅化遍次以及其它细节。在一些实例中,第一光栅化遍次可视为分仓遍次的部分,且第二光栅化遍次可视为再现遍次(例如,跟随分仓遍次的遍次)的部分。在其它实例中,第一光栅化遍次和第二光栅化遍次可视为分仓遍次的部分,且第三光栅化遍次可视为再现遍次(例如,跟随分仓遍次的光栅化遍次)的部分。
[0041] 图1是说明可经配置以实施本发明的一或多个方面的实例处理单元的框图。如图1中所示出,处理单元1可包含内部存储器5。例如描绘的系统存储器10等在处理单元1外部的存储器对于处理单元1可为可存取的。举例来说,处理单元1可在总线(例如,任何通信媒体,无论是有线还是无线的)上以通信方式耦合到系统存储器10。在一些实例中,处理单元1可经由例如总线9等通信媒体以通信方式直接耦合到系统存储器10。在其它实例中,处理单元1可经由例如总线等通信媒体以通信方式间接耦合到系统存储器10。举例来说,处理单元1可以通信方式直接耦合到另一组件(例如,不同处理单元),所述另一组件经由例如总线等通信媒体以通信方式直接耦合到系统存储器10。
[0042] 内部存储器5可包含一或多个易失性或非易失性存储器或存储装置,例如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
[0043] 系统存储器10根据一些实例可以是非暂时性存储媒体。术语“非暂时性”可指示存储媒体未体现于载波或传播信号中。然而,术语“非暂时性”不应解释为意味着系统存储器10为非可移动的或其内容为静态的。作为一个实例,系统存储器10可从计算装置2移除并移动到另一装置。作为另一实例,大体类似于系统存储器10,存储器可插入到计算装置2中。在某些实例中,非暂时性存储媒体可存储可随时间改变(例如,在RAM中)的数据。
[0044] 处理单元1可为中央处理单元(CPU)、图形处理单元(GPU)或可经配置以执行图形处理(例如,将图形数据的3D场景再现为图形数据的2D场景)的任何其它处理单元。处理单元1集成到计算装置的母板中。在一些实例中,处理单元1可存在于图形卡上,所述图形卡安装在计算装置的主板中的端口中或可以其它方式并入经配置以与计算装置交互操作的外围装置内。在一些实例中,处理单元1可与CPU一起在芯片上,例如在片上系统(SOC)中。处理单元1可包含一或多个处理器,例如一或多个微处理器、专用集成电路(ASIC)、现场可编程阵列(FPGA)、算术逻辑单元(ALU)、数字信号处理器(DSP)、离散逻辑、软件硬件固件、其它等效的集成或离散逻辑电路或其任何组合。处理单元1还可包含一或多个处理器核心,从而使得处理单元1可被称为多核处理器。在一些实例中,处理单元1可以是专用硬件,所述专用硬件包含向处理单元1提供适合于图形处理的大规模并行处理的集成和/或离散逻辑电路。在其它实例中,尽管不具有大规模并行的处理能力,处理单元1也可经配置以执行图形处理。本发明的技术应用于可经配置以执行图形处理的任何处理器(例如,CPU或GPU)。举例来说,本发明的技术应用于可经配置以产生可见性信息且修改可见性信息的任何处理器。作为另一实例,本发明的技术应用于可经配置以接收可见性信息且修改所接收可见性信息的任何处理器。
[0045] 举例来说,虽然在下文更详细地论述图2,但处理单元1可为图2中描绘的计算装置2的CPU 6、GPU 12或另一组件(无论是否描绘)。应了解,本文中所描述的技术更常见地应用于当处理单元1为GPU 12时,因为GPU 12最常用以再现图形数据。然而,还应了解,当除GPU外的处理单元(例如,CPU)经配置以再现图形数据时,本文中所描述的技术也适用。因此,虽然大体上相对于GPU描述本发明的技术,但应了解这仅是以本文中所描述的一或多种技术配置的处理单元的一个实例,且可类似地配置其它处理单元。
[0046] 在一些实例中,处理单元1可经配置以接收、发射和/或产生数据(例如,图形数据),可对所述数据执行一或多个图形处理技术。举例来说,处理单元1可为经配置以接收、发射和/或产生数据的GPU(例如,GPU 12),可对所述数据执行一种或图形处理技术。此数据可包含从例如CPU(例如,CPU 6)或任何其它源(例如,任何其它处理单元或存储媒体,例如系统存储器10、内部存储器5或任何其它存储器空间)接收的图形数据。在此实例中,图形数据可包含一或多个绘制命令,其中每一绘制调用包含用于一或多个基元的一或多个顶点。在另一实例中,处理单元1可为经配置以接收、发射和/或产生数据的CPU(例如,CPU 6),可对所述数据执行一或多个图形处理技术。此数据可包含从例如另一CPU、GPU(例如,GPU 12)或任何其它源(例如,任何其它处理单元或存储媒体,例如系统存储器10、内部存储器5或任何其它存储器空间)接收的图形数据。在此实例中,图形数据可包含一或多个绘制命令,其中每一绘制调用包含用于一或多个基元的一或多个顶点。
[0047] 本文中所描述的一或多种技术可在硬件、软件、固件或其任何组合中实施。举例来说,在本文中所描述的一或多种技术在硬件中实施的情况下,处理单元1可以是经配置以一起操作以进行本文中所描述的一或多种技术的此类硬件或多个硬件组件中的一件硬件组件。在此类实例中,硬件可或可不经配置以执行软件或固件,所述软件或固件在被执行时可进行本文中所描述的一或多种技术。任何软件和/或固件可存储于非暂时性存储媒体上,例如硬件的片上存储器(例如,处理单元1的内部存储器5)或任何硬件外部的存储器(例如,系统存储器10)。
[0048] 处理单元1可经配置以执行如本文所描述的基于图块的再现,或本文所描述的任何其它技术。举例来说,处理单元1可经配置以接收、发射、产生和/或修改如本文中所描述的可见性信息(例如,可见性流)。
[0049] 图2是说明可经配置以实施本发明的一或多个方面的实例计算装置的框图。如图2中所示出,计算装置2可以是例如个人计算机、桌上型计算机、膝上型计算机、平板计算机、计算机工作站、视频游戏平台或控制台、移动电话(例如,蜂窝式或卫星电话)、陆线电话、因特网电话、手持式装置(例如,便携式视频游戏装置或个人数字助理(PDA))、可穿戴计算装置、个人音乐播放器、视频播放器、显示器(例如,显示装置)、电视机、电视机顶盒、服务器、中间网络装置、主机计算机、任何移动装置,或处理和/或显示图形数据的任何其它类型的装置。在图2的实例中,计算装置2可包含中央处理单元(CPU)6、系统存储器10和图形处理单元(GPU)12。CPU 6可经配置以根据本文中所描述的一或多种技术执行图像处理。GPU 12可经配置以根据本文中所描述的一或多种技术执行图像处理。
[0050] 计算装置2还可包含显示处理器14、收发器3、用户接口4、视频编解码器7和显示器8。在一些实例中,视频编解码器7可以是软件应用程序,例如经配置以由CPU 6或计算装置2的其它组件处理的一或多个软件应用程序18当中的软件应用程序。在其它实例中,视频编解码器7可以是不同于CPU 6的硬件组件、在不同于CPU 6的组件上运行的软件应用程序或硬件与软件的组合。虽然一或多个软件应用程序18在概念上展示为在CPU 6内部,但是当然,这一或多个软件应用程序18可存储于系统存储器10中、可以是在计算装置2外部但对其可存取的存储器、或其组合。外部存储器可例如持续间歇地对于计算装置2可存取。
[0051] 收发器3、视频编解码器7和显示处理器14可以是与CPU 6和/或GPU 12相同的集成电路(IC)的部分,可在包含CPU 6和/或GPU 12的一或多个IC的外部,或可形成于在包含CPU 6和/或GPU 12的IC外部的IC中。举例来说,视频编解码器7可实施为任何多种合适的编码器电路,例如一或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、算术逻辑单元(ALU)、离散逻辑、软件、硬件、固件或其任何组合。
[0052] 计算装置2可包含出于清楚起见而在图2中未展示的额外模块或处理单元。举例来说,计算装置2可包含扬声器及麦克(图2中均未展示)以在计算装置2为移动无线电话的实例中实行电话通信,或在计算装置2为媒体播放器的情况下包含扬声器。计算装置2还可包含相机。此外,计算装置2中所示出的各个模块和单元在计算装置2的每一实例中可能不是必需的。举例来说,在计算装置2是桌上型计算机或经装备以与外部用户接口或显示器介接的其它装置的实例中,用户接口4和显示器8可处于计算装置2的外部。
[0053] 用户接口4的实例包含(但不限于)轨迹球鼠标键盘和其它类型的输入装置。用户接口4还可以是触摸屏且可并入作为显示器8的一部分。收发器3可包含电路以允许计算装置2与另一装置或网络之间的无线或有线通信。收发器3可包含调制器、解调器、放大器及其它用于有线或无线通信的此类电路。在一些实例中,收发器3可与CPU 6集成。
[0054] CPU 6可以是经配置以处理用于执行的计算机程序的指令的微处理器,例如中央处理单元(CPU)。CPU 6可包括控制计算装置2的操作的通用或专用处理器。用户可向计算装置2提供输入,以致使CPU 6执行一或多个软件应用程序,例如一或多个软件应用程序18。在CPU 6上(或在计算装置2的一或多个其它组件上)执行的一或多个软件应用程序18可包含例如操作系统、文字处理器应用程序、电子邮件应用程序、电子表格应用程序、媒体播放器应用程序、视频游戏应用程序、图形用户接口应用程序、或使用针对2D或3D图形的图形数据的另一类型的软件应用程序。如本文中所描述,处理单元1可以是例如关于图2所描述的一或多个组件。因此应理解,举例来说,处理单元1可经配置以执行一个或软件应用程序(例如,一或多个软件应用程序18)和/或再现对应于一或多个所执行软件应用程序(例如,一或多个软件应用程序18)的图形数据。关于图2的任何组件的任何描述可同等地描述处理单元1的一或多个实例。
[0055] CPU 6可经配置以执行用于控制GPU 12的操作的GPU驱动程序22。用户可经由一或多个输入装置(未图示)(例如,键盘、鼠标、麦克风、触摸垫或经由用户接口4耦合到计算装置2的另一输入装置)将输入提供到计算装置2。
[0056] 在例如CPU 6上执行的一或多个软件应用程序18可包含指示CPU 6致使将图形数据再现到显示器8的一或多个图形再现指令。所述指令可包含用以处理3D图形的指令以及用以处理2D图形的指令。在一些实例中,软件指令可符合图形应用程序编程接口(API)。图形API可以是例如开放图形库 API、开放图形库嵌入系统(OpenGLES)API、Direct3D API、X3D API、RenderMan API、WebGL API开放式计算语言(OpenCLTM)、并行计算平台和由NVIDIA公司建立的例如CUDA(即,统一计算装置架构)等API模型、或任何其它公用或专有标准GPU计算API。为了处理在CPU 6上执行的一或多个软件应用程序18的图形再现指令,在一或多个软件应用程序18的执行期间,CPU 6可向GPU 12(例如通过GPU驱动程序
22)发布一或多个图形呈现命令以致使GPU12执行图形数据的再现中的一些或全部。在一些实例中,待呈现的图形数据可包含例如点、线、三形、四边形、三角形条带等图形基元的列表。
[0057] 一或多个软件应用程序18可以是利用GPU 12的任何功能性或不利用GPU 12的任何功能性的任何应用程序。举例来说,一或多个应用程序18可以是其中由CPU 6的执行致使(或不致使)将一或多个命令卸载到GPU 12用于处理的任何应用程序。一或多个应用程序18的实例可包含使CPU 6使3D再现命令卸载给GPU 12的应用程序(例如,视频游戏应用程序)、使CPU 6将2D再现命令卸载给GPU 12的应用程序(例如,用户接口应用程序),或使CPU 6使一般计算任务卸载给GPU 12的应用程序(例如,GPGPU应用程序)。作为另一实例,一或多个应用程序18可包括驻留在计算装置2的任何组件上的固件,所述组件例如CPU 6、GPU 12、显示处理器14或任何其它组件。固件可或可不利用或调用GPU 12的功能性。
[0058] 一或多个软件应用程序18可包括发指令给GPU 12以显现图形用户接口(GUI)、图形场景、图形数据或其它图形相关数据的一或多个绘制指令。举例来说,绘制指令可包含界定将由GPU 12显现的一或多个图形基元的集合的指令。在一些实例中,绘制指令可共同地界定用于GUI中的多个开窗表面的全部或部分。在额外实例中,所述绘制指令可共同地界定图形场景的全部或部分,所述图形场景包含在由应用程序界定的模型空间或世界空间内的一或多个图形对象
[0059] 一或多个软件应用程序18可经由图形API调用GPU驱动程序22,以将一或多个命令发布到GPU 12以供将一或多个图形基元再现为可显示的图形图像。举例来说,一或多个软件应用程序18可经由图形API调用GPU驱动程序22以将基元定义提供给GPU12。在一些例子中,基元定义可以例如三角形、矩形、三角形扇、三角形条带等的绘制基元的列表的形式提供到GPU 12。基元定义可包含指定与待呈现的基元相关的一或多个顶点的顶点规范。
[0060] GPU 12可经配置以执行图形操作,从而将一或多个图形基元呈现到显示器8。因此,当在CPU 6上执行的一或多个软件应用程序18需要图形处理时,CPU 6可将图形再现命令连同图形数据一起提供到GPU 12用于再现。图形数据可包含例如绘制命令、状态信息、基元信息、纹理信息等。GPU 12在一些例子中可内建有提供比CPU 6更高效的复杂图形相关操作的处理的高度并行结构。举例来说,GPU 12可包含多个处理元件,例如着色器单元,其经配置以用并行方式对多个顶点或像素进行操作。GPU 12的高度并行性质在一些例子中可允许GPU 12将图形图像(例如,GUI和二维(2D)和/或三维(3-D)图形场景)绘制到帧缓冲器中比使用CPU 6将场景直接绘制到帧缓冲器更快速。
[0061] 在其中处理单元1是GPU(例如,GPU 12)的实例中,GPU 12可经配置以再现三维场景。三维场景的再现可为存储器带宽极密集的,并且因此,专用图形存储器(GMEM)可靠近GPU的图形处理核心而定位。GPU 12可能够从GMEM存取数据比可从系统存储器(例如,DRAM)存取数据快得多。场景可例如由GPU 12的图形处理核心再现到GMEM,且场景可经解析(例如,存储)到系统存储器(例如,系统存储器10)。然而,因为GMEM的大小在某些环境(例如,移动装置环境)中可由于物理面积约束而受限,所以GPU 12可经配置以使用基于图块的再现来再现场景。举例来说,GPU 12可经配置以将场景分裂或另外划分为若干图块,使得场景的每一图块可个别地经再现。应了解,GPU12可经配置以独立于可由GPU 12存取的存储器的任何类型和/或大小而执行基于图块的再现。
[0062] 一或多个软件应用程序18可调用GPU驱动程序22,以将一或多个命令发出到GPU12以供将一或多个图形基元再现为可显示的图形图像(例如,可显示的图形数据)。举例来说,一或多个软件应用程序18在被执行时可调用GPU驱动程序22以将基元定义提供给GPU 12。在一些例子中,基元定义可以例如三角形、矩形、三角形扇、三角形条带等绘制基元的列表的形式提供到GPU 12。基元定义可包含指定与待再现的基元相关联的一或多个顶点的顶点规格。顶点规范可包含每一顶点的位置坐标,且在一些情况下,包含与顶点相关联的其它属性,例如颜色坐标、法向量和纹理坐标。基元定义还可包含基元类型信息(例如,三角形、矩形、三角形扇、三角形条带等)、缩放信息、旋转信息及类似者。
[0063] 基于由一或多个软件应用程序18发出到GPU驱动程序22的指令,GPU驱动程序22可调配指定供GPU 12进行的一或多个操作以便再现基元的一或多个命令。当GPU 12从CPU 6接收命令时,图形处理管线可在GPU 12的着色器处理器上执行,以解码所述命令且配置图形处理管线以执行所述命令中所指定的操作。举例来说,图形处理管线中的输入汇编程序可读取基元数据,且将数据汇编成供图形处理管线中的其它图形管线级使用的基元。在执行指定操作之后,图形处理管线将所再现数据输出到显示处理器14可存取的输出缓冲器16。在一些实例中,图形处理管线可包含固定功能逻辑和/或在可编程着色器核心上执行。
[0064] 输出缓冲器16(例如,帧缓冲器)可存储用于GPU 12的目的地像素。每一目的地像素可与唯一屏幕像素位置相关联。类似地,取决于实例,输出缓冲器17可为视频编解码器7存储目的地像素。在一些实例中,输出缓冲器16和/或输出缓冲器17可存储每个目的地像素的颜色分量和目的地阿尔法值。举例来说,输出缓冲器16和/或输出缓冲器17可根据任何格式存储像素数据。举例来说,输出缓冲器16和/或输出缓冲器17可存储每个像素的红绿蓝阿尔法(RGBA)分量,其中“RGB”分量对应于颜色值且“A”分量对应于目的地阿尔法值。作为另一实例,输出缓冲器16和/或输出缓冲器17可根据YCbCr颜色格式、YUV颜色格式、RGB颜色格式或根据任何其它颜色格式存储像素数据。虽然将输出缓冲器16和系统存储器10说明为单独的存储器单元,但在其它实例中,输出缓冲器16可为系统存储器10的部分。举例来说,可在系统存储器10中为输出缓冲器16分配存储器空间。输出缓冲器16可构成用于GPU 12的帧缓冲器。举例来说,可在GPU 12内部的存储器中为输出缓冲器16分配存储器空间。另外,如上文所述,输出缓冲器16还可能够存储除像素外的任何合适的数据。
[0065] 类似地,虽然将输出缓冲器17和系统存储器10说明为单独的存储器单元,但在其它实例中,输出缓冲器17可为系统存储器10的部分。举例来说,可在系统存储器10中为输出缓冲器17分配存储器空间。输出缓冲器17可构成视频编解码器缓冲器或帧缓冲器。另外,如上文所论述,输出缓冲器17还可能够存储除像素外的任何合适的数据。在一些实例中,尽管输出缓冲器16和输出缓冲器17被说明为单独的存储器单元,但输出缓冲器16和输出缓冲器17可以是相同缓冲器或相同缓冲器的不同部分。
[0066] 在一些情况下,GPU 12可集成到计算装置2的母板中。在其它情况下,GPU 12可存在于安装在计算装置2的母板中的端口中的图形卡上或可以其它方式并入在经配置以与计算装置2交互操作的外围装置内。在一些实例中,GPU 12可与CPU 6一起在芯片上,例如在片上系统(SOC)中。GPU 12可包含一或多个处理器,例如一或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、算术逻辑单元(ALU)、数字信号处理器(DSP)、离散逻辑、软件、硬件、固件、其它等效的集成或离散逻辑电路或其任何组合。GPU 12还可包含一或多个处理器核心,使得GPU 12可被称作多核处理器。在一些实例中,GPU 12可以是包含集成和/或离散逻辑电路的专用硬件,所述电路为GPU 12提供适合于图形处理的大规模并行处理能力。在一些情况下,GPU 12还可包含通用处理能力,并在实施通用处理任务(例如,所谓的“计算”任务)时可被称为通用GPU(GPGPU)。
[0067] 在一些实例中,图形存储器20可以是GPU 12的部分。举例来说,图形存储器20可以是片上存储器或物理上集成到GPU 12的集成电路芯片中的存储器。如果图形存储器20为片上存储器,那么与经由系统总线从系统存储器10读取值或将值写入到所述系统存储器相比,GPU 12可能够更快速地从图形存储器20读取值或将值写入到所述图形存储器。因此,GPU 12可在不使用总线的情况下从图形存储器20读取数据并将数据写入到图形存储器20。换句话说,GPU 12可使用本地存储装置而非芯片外存储器在本地处理数据。此类图形存储器20可被称为片上存储器。这允许GPU 12通过消除对GPU 12经由总线读取和写入数据的需要来以更有效方式操作,经由总线读取和写入数据可能经历较重的总线业务以及相关联的对带宽的争用。然而,在一些情况下,GPU 12可能不包含单独的存储器,而是经由总线利用系统存储器10。图形存储器20可包含一或多个易失性或非易失性存储器或存储装置,例如,随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
[0068] 在一些实例中,GPU 12可将完全形成的图像(例如,完全经再现图像或场景)存储于系统存储器10和/或输出缓冲器16中。显示处理器14可从系统存储器10和/或输出缓冲器16检索图像,且输出致使显示器8的像素照亮以显示存储于系统存储器10和/或输出缓冲器
16中的图像(例如,从3D场景再现的最终经再现2D场景)的值。在一些实例中,显示处理器14可经配置以对待显示的数据执行2D操作,包含缩放、旋转、掺合和合成。显示器8可以是显示由GPU 12产生的图像内容的计算装置2的显示器。显示器8可以是液晶显示器(LCD)、有机发光二极管显示器(OLED)、阴极射线管(CRT)显示器、等离子显示器或另一类型的显示装置。
在一些实例中,显示器8可集成于计算装置2内。举例来说,显示器8可以是移动电话的屏幕。
在其他实例中,显示器8可为经由有线或无线通信链路耦合到计算装置2的独立装置。举例来说,显示器8可为经由电缆或无线链路连接到计算装置(例如,个人计算机、移动计算机、平板计算机、移动电话等)的计算机监视器或平板显示器。
[0069] CPU 6处理用于在计算装置2内执行的指令。CPU 6可使用驱动程序(例如,可在由CPU 6执行的软件中实施的GPU驱动程序22)产生命令流以用于由GPU 12执行。也就是说,CPU 6可产生定义由GPU 12执行的操作集的命令流。
[0070] CPU 6可产生待由GPU 12执行以致使可视内容在显示器8上显示的命令流。举例来说,CPU 6可产生为GPU 12提供再现可存储在输出缓冲器16中的图形数据以供在显示器8处显示的指令的命令流。在此实例中,CPU 6可产生由图形再现管线执行的命令流。
[0071] 另外或替代地,CPU 6可产生将由GPU 12执行的命令流,其致使GPU 12执行其它操作。举例来说,在一些情况下,CPU 6可为产生命令流以供GPU 12用作通用图形处理单元(GPGPU)的主机处理器。以此方式,GPU 12可充当CPU 6的次要处理器。举例来说,GPU 12可实行传统上由CPU 6实行的多种通用计算功能。
[0072] 在一些实例中,GPU 12可与CPU 6合作来执行此类GPGPU应用程序。举例来说,CPU 6可通过为GPU 12提供用于由GPU 12执行的命令流来卸载某些功能给GPU 12。在此实例中,CPU 6可为主机处理器,且GPU 12可为次处理器。CPU 6可与GPU 12通信,来指导GPU 12经由GPU驱动程序22执行GPGPU应用程序。
[0073] GPU驱动程序22可将可由GPU 12的着色器单元执行的一或多个命令流传送到GPU 12。GPU 12可包含可从GPU驱动程序22接收一或多个命令流的命令处理器24。命令处理器24可以是经配置以接收并处理一或多个命令流的硬件与软件的任何组合。由此,命令处理器
24是流处理器。在一些实例中,代替命令处理器24,可使用任何其它合适的流处理器,代替命令处理器24来接收并处理一或多个命令流且进行本文中所揭示的技术。在一个实例中,命令处理器24可为硬件处理器。在图2所示的实例中,命令处理器24可包含在GPU 12中。在其它实例中,命令处理器24可为与CPU 6和GPU12分离的单元。命令处理器24还可称为流处理器、命令/流处理器等等,以指示其可以是经配置以接收命令和/或操作流的任何处理器。
[0074] 命令处理器24可处理包含调度操作的一或多个命令流,其包含在用于由GPU 12执行的一或多个命令流中。具体地说,命令处理器24可处理一或多个命令流并且调度一或多个命令流中的用于由着色器单元46执行的操作。在操作中,GPU驱动程序22可将包含将由GPU 12执行的一系列操作的命令流发送到命令处理器24。命令处理器24可接收包括命令流的操作流并且可基于命令流中的操作次序依序处理命令流的操作,且可调度命令流中的用于由GPU 12的着色器单元的着色器处理器执行的操作。
[0075] 图3是进一步详细说明图1的CPU 6、GPU 12和系统存储器10的实例实施方案的框图。CPU 6可包含至少一个软件应用程序18、图形API 19和GPU驱动程序22,以上各项中的每一个可以是在CPU 6上执行的一或多个软件应用程序或服务。GPU 12可包含图形处理管线30,所述图形处理管线包含一起操作以执行图形处理命令的多个图形处理级。图形处理管线30是图形处理管线的一个实例,且本公开适用于任何其它图形处理或图形处理管线。GPU 
12可经配置以在多种再现模式中执行图形处理管线30,包含基于图块的再现模式(其也可被称作分仓再现模式)和直接再现模式。
[0076] 如图3中所示出,图形处理管线30可包含多个组件。在一些实例中,这些组件可被称为着色器、着色器单元、着色器处理器、着色器处理单元及类似物。在图3所示的实例中,GPU 12在图形处理管线30中包含但不限于以下组件:命令引擎32、几何处理级34、光栅化级36和像素处理管线38。像素处理管线38可包含纹理引擎39。图形处理管线30中的组件中的每一个可实施为固定功能组件、可编程组件(例如,作为在可编程着色器单元上执行的着色器程序的部分)或固定功能和可编程组件的组合。对CPU 6和GPU 12可用或以其它方式可存取的存储器可包含例如系统存储器10、输出缓冲器16、输出缓冲器17、以及CPU 6的任何片上存储器和GPU 12的任何片上存储器。在一些实例中可称为帧缓冲器的输出缓冲器16可存储经再现数据(例如,从3D场景再现的2D场景)。
[0077] 一或多个软件应用程序18可以是利用GPU 12的任何功能性或不利用GPU 12的任何功能性的任何应用程序。举例来说,一或多个应用程序18可以是其中由CPU 6的执行致使(或不致使)将一或多个命令卸载到GPU 12用于处理的任何应用程序。一或多个应用程序18的实例可包含使CPU 6使3D再现命令卸载给GPU 12的应用程序(例如,视频游戏应用程序)、使CPU 6将2D再现命令卸载给GPU 12的应用程序(例如,用户接口应用程序),或使CPU 6使一般计算任务卸载给GPU 12的应用程序(例如,GPGPU应用程序)。作为另一实例,一或多个应用程序18可包括驻留在计算装置2的任何组件上的固件,所述组件例如CPU 6、GPU 12、显示处理器14或任何其它组件。固件可或可不利用或调用GPU 12的功能性。
[0078] 一或多个软件应用程序18可包含发指令给GPU 12以再现图形用户接口(GUI)和/或图形场景的一或多个绘制指令。举例来说,绘制指令可包含界定将由GPU 12再现的一或多个图形基元的集合的指令。在一些实例中,绘制指令可共同地界定用于GUI中的多个开窗表面的全部或部分。在额外实例中,所述绘制指令可共同地界定图形场景的全部或部分,所述图形场景包含在由应用程序界定的模型空间或世界空间内的一或多个图形对象。
[0079] 一或多个软件应用程序18可经由图形API 19调用GPU驱动程序22,以将一或多个命令发出到GPU 12以供将一或多个图形基元再现为可显示图形图像。举例来说,一或多个软件应用程序18可经由图形API 19调用GPU驱动程序22以将基元定义提供给GPU 12。在一些例子中,基元定义可以例如三角形、矩形、三角形扇、三角形条带等绘制基元的列表的形式提供到GPU 12。基元定义可包含指定与待再现的基元相关的一或多个顶点的顶点规格。
[0080] 顶点规范可包含每一顶点的位置坐标,且在一些情况下,包含与顶点相关联的其它属性,例如颜色坐标、法向量和纹理坐标。基元定义还可包含基元类型信息(例如,三角形、矩形、三角形扇、三角形条带等)、缩放信息、旋转信息及类似者。基于由一或多个软件应用程序18发出到GPU驱动程序22的指令,GPU驱动程序22可调配指定供GPU12进行的一或多个操作以便再现基元的一或多个命令。当GPU 12从CPU 6收到命令时,图形处理管线30对所述命令进行解码且对图形处理管线30内的一或多个处理元件进行配置以执行所述命令中指定的操作。在执行指定操作之后,图形处理管线30将经再现数据输出到可由显示处理器14存取的存储器(例如,输出缓冲器16)。图形处理管线30(也可被称作图形管线30)可经配置以在多个不同再现模式中的一个中执行,包含基于图块的再现模式和直接再现模式。
[0081] GPU驱动程序22可经进一步配置以编译一或多个着色器程序,并将经编译的着色器程序下载到含于GPU 12内的一或多个可编程着色器单元上。可以高级着色语言编写着色器程序,例如OpenGL着色语言(GLSL)、高级着色语言(HLSL)、用于图形的C(Cg)着色语言等。经编译的着色器程序可包含控制GPU 12内的可编程着色器单元的操作的一或多个指令。例如,着色器程序可包含顶点着色器程序及/或像素着色器程序。顶点着色器程序可对可编程顶点着色器单元或统一着色器单元的执行进行控制,且包含指定一或多个逐顶点操作的指令。像素着色器程序可包含控制可编程像素着色器单元或统一着色器单元的执行的像素着色器程序,且包含指定一或多个逐像素操作的指令。
[0082] 图形处理管线30可经配置以经由GPU驱动程序22从CPU 6接收一或多个图形处理命令,并执行图形处理命令来产生可显示图形图像。如上文所论述,图形处理管线30包含一起操作以执行图形处理命令的多个级。然而,应注意,此类阶段不需要一定实施在单独硬件块中。举例来说,几何处理级34和像素处理管线38的部分可实施为统一着色器单元的部分。图形处理管线30可经配置以在多种不同的再现模式中的一者中执行,包含分仓再现模式和直接再现模式。
[0083] 命令引擎32可接收图形处理命令,且配置图形处理管线30内的其余处理级以执行用于进行图形处理命令的各种操作。图形处理命令可包含例如绘制命令及图形状态命令。绘制命令(有时称为绘制命令、绘制调用或绘制调用)可包含顶点规格命令,所述命令指定一或多个顶点的位置坐标并且在一些例子中指定与顶点中的每一个相关联的其它属性值,例如颜色坐标、法向量、纹理坐标和雾坐标。图形状态命令可包含基元类型命令、变换命令、光照命令等。基元类型命令可指定待再现基元的类型和/或顶点如何组合以形成基元。变换命令可指定待在顶点上执行的变换的类型。所述光照命令可指定图形场景内的不同光的类型、方向及/或布局。命令引擎32可致使几何处理级34相对于与一或多个所接收命令相关联的顶点和/或基元执行几何处理。
[0084] 几何处理级34可在一或多个顶点上执行每顶点操作和/或基元设置操作,以便生成用于光栅化级36的基元数据。在一些实例中,几何处理级34可构成顶点着色器。每一顶点可与一组属性(例如,位置坐标、色彩值、法向量及纹理坐标)相关联。几何处理级34根据各种逐顶点操作修改这些属性中的一或多个。举例来说,几何处理级34可对顶点位置坐标执行一或多个变换以产生经修改的顶点位置坐标。几何处理级34可例如向顶点位置坐标应用模型化变换、观看变换、投影变换、ModelView变换、ModelViewProjection变换、视口变换及深度范围缩放变换中的一或多者以产生经修改的顶点位置坐标。在一些情况下,顶点位置坐标可以是模型空间坐标,且经修改的顶点位置坐标可以是屏幕空间坐标。可在所述模型化、观看、投影及视口变换的应用之后获得屏幕空间坐标。在一些情况下,几何处理级34还可对顶点执行每顶点光照操作以产生顶点的经修改的颜色坐标。几何处理级34还可执行其它操作,包含例如法线变换、法线标准化操作、视体(view volume)裁剪、均匀分割和/或背面剔除操作。
[0085] 几何处理级34可产生包含限定将被光栅化的基元的一或多个经修改的顶点的集合的基元数据以及规定顶点如何组合以形成基元的数据。所述经修改的顶点中的每一者可包含例如与所述顶点相关联的经修改的顶点位置坐标和经处理的顶点属性值。基元数据可共同地对应于将由图形处理管线30的其它级光栅化的基元。在概念上,每一顶点可对应于基元的其中所述基元的两个边缘会合的拐角。几何处理级34可将基元数据提供到光栅化级36以用于进一步处理。
[0086] 几何处理级34可充当三角形设置引擎(TSE)。TSE尤其负责产生边缘等式,所述等式可由光栅化级36使用以产生片段。为了TSE计算在边缘等式中使用的边系数,为TSE提供屏幕空间中的顶点坐标。在其它实例中,几何处理级34可
[0087] 在一些实例中,几何处理级34的全部或部分可由在一或多个着色器单元上执行的一或多个着色器程序实施。例如,在此些实例中,几何处理级34可由顶点着色器、几何着色器或其任何组合实施。在其它实例中,可将几何处理级34实施为固定功能硬件处理管线,或实施为固定功能硬件与在一或多个着色器单元上执行的一或多个着色器程序的组合。
[0088] 光栅化级36经配置以从几何处理级34接收表示待光栅化基元的基元数据,且光栅化所述基元以产生对应于经光栅化基元的多个源像素。在一些实例中,光栅化级36可确定哪些屏幕像素位置由将被光栅化的基元覆盖,且产生用于被确定为由基元覆盖的每一屏幕像素位置的源像素。光栅化级36可通过使用例如边缘行走技术、评估边缘等式或类似技术的技术确定哪些屏幕像素位置由基元覆盖。光栅化级36可将所得源像素提供到像素处理管线38用于进一步处理。
[0089] 由光栅化级36生成的源像素可对应于屏幕像素位置,例如目的地像素,且与一或多个颜色属性相关联。针对特定经光栅化基元所产生的所有源像素可称为与经光栅化基元相关联。由光栅化级36确定的将由基元覆盖的像素可在概念上包含表示基元的顶点的像素、表示基元的边缘的像素及表示基元的内部的像素。
[0090] 像素处理管线38(例如,像素着色器单元或片段着色器单元)经配置以接收与经光栅化基元相关联的源像素,且对所述源像素执行一或多个每像素操作。可以通过像素处理管线38执行的每像素操作包含例如阿尔法测试、纹理制图、颜色计算、像素着色、每像素照明、雾处理、混合、像素所有权测试、来源阿尔法测试、模板测试、深度测试、剪刀测试和/或点刻法操作。另外,像素处理管线38可执行一或多个像素着色器程序以执行一或多个每像素操作。由像素处理管线38产生的所得数据可在本文中被称作目的地像素数据且存储在输出缓冲器16中。目的地像素数据可与输出缓冲器16中的具有与经处理源像素相同的显示位置的目的地像素相关联。所述目的地像素数据可包含例如颜色值、目的地阿尔法值、深度值等数据。
[0091] 像素处理管线38可包含纹理引擎39。纹理引擎39可包含设计成将纹理(纹素)应用于像素的可编程和固定功能硬件两者。纹理引擎39可包含用于执行纹理滤波的专用硬件,借此一或多个纹素值乘以一或多个像素值,并累加以产生最终纹理映射像素。
[0092] 如上文所描述,GPU 12可经配置以使用基于图块的再现将3D场景再现为2D场景(也可被称作将3D场景再现为所述3D场景的2D图像)。
[0093] 图4说明根据本文阐述的一或多个技术处理图形数据的一个实例。
[0094] GPU 12可经配置以接收和/或产生一或多个绘制命令。GPU 12可经配置以在例如图形处理管线30的几何处理级34中处理这一或多个绘制命令。每一绘制命令可包含一或多个基元,所述一或多个基元中的每一个具有一或多个顶点。在图4中示出的实例中,GPU 12可经配置以在例如第一几何处理级34A和第二几何处理级34B中处理一或多个绘制命令。换句话说,GPU 12可经配置以在几何处理级34的第一遍次(例如,第一几何处理级34A)中和几何处理级34的第二遍次(例如,第二几何处理级34B)中处理一或多个绘制命令。
[0095] 参考第一几何处理级34A,GPU 12可经配置以仅产生对应于3D场景中的多个基元(例如,所有基元)的每一顶点的位置数据(例如,坐标数据,例如三轴(X、Y、Z)坐标数据),例如框50中示出。举例来说,GPU 12可经配置以每顶点产生位置数据一次,且可将每基元连接信息编码到输入索引缓冲器中。所述多个基元可由对应于3D场景的一或多个绘制命令界定。
[0096] 如本文阐述,GPU 12可经配置以通过以多个图块划分3D场景而执行基于图块的再现,例如框52中示出。如本文所使用,将3D场景划分为多个图块的参考指代将用以从特定视点表示三维场景的2D空间划分为多个图块。在一些实例中,可将2D空间划分成两个图块、三个图块、四个图块或任何数目的图块。在其它实例中,GPU 12可经配置以对3D场景执行本文阐述的一或多个技术而不使用基于图块的再现。举例来说,GPU12可经配置以整体(而不是基于每图块基础)产生3D场景的可见性信息,且如本文阐述修改此可见性信息。
[0097] 在一些实例中,GPU 12可经配置以基于每图块基础(例如,逐图块基础)产生可见性信息。在其它实例中,GPU 12可经配置以基于每图块基础同时产生所有图块的可见性信息(即,同时产生每一图块的可见性信息)。GPU 12可经配置以在产生可见性信息的图块的光栅化之前产生可见性信息。GPU 12可经配置以在执行任何z测试(有时称为深度测试)之前产生可见性信息。在一些实例中,针对每一图块产生的可见性信息可指示3D场景中的哪些基元在最终经再现2D场景中将不可见,且还可指示3D场景中的哪些基元在最终经再现2D场景中将可能可见。
[0098] 针对每一图块产生的可见性信息可包含用于3D场景中的每一基元(例如,由与3D场景相关联的每一绘制命令界定的每一基元)的值。在此类实例中,用于每一基元的值可包含(例如)二进制值或另一类型的值。举例来说,用于每一基元的值可包含两个值中的一个:第一值或第二值。所述第一值可指示对应于所述第一值的基元在可见性信息对应的图块的最终经再现2D场景中将不可见。所述第二值可指示对应于所述第二值的基元在可见性信息对应的图块的最终经再现2D场景中将可能可见。在一些实例中,“0”的值可用以指示3D场景中的哪些基元在用于每一特定图块的最终经再现场景中将不可见,且“1”的值可用以指示
3D场景中的哪些基元在用于每一特定图块的最终经再现场景中将可能可见。
[0099] 在一些实例中,例如图4中示出,GPU 12可经配置以在产生可见性信息的图块的光栅化之前基于第一可见性测试而基于每图块基础产生可见性信息,例如框54中示出。虽然基于每图块基础产生可见性信息,但应了解这意味着每一图块具有与其相关联的可见性信息且所述可见性信息可同时针对每一图块产生。在一些实例中,第一可见性测试不可包含或另外基于任何z测试(有时称为深度测试)。示范性z测试包含任何像素层级z测试(例如,高分辨率z测试)、任何块层级z测试(例如,低分辨率z测试)及其任何混合。换句话说,GPU 12可经配置以不使用z测试产生可见性信息,意味着可见性信息不是基于z测试。实际上,第一可见性测试可包含可基于每图块基础执行的任何测试,其不是z测试和/或是不需要正执行测试的图块的光栅化的测试。举例来说,第一可见性测试可包含以下各项中的一或多个:
通过确定所述多个基元中的任一者是否(1)面向向,(2)具有零面积,或(3)在正处理的图块中具有零面积(例如,所述基元在特定图块中不存在),而确定所述多个基元中的任一者是否在最终经再现2D场景中将不可见。在此实例中,GPU 12可经配置以执行第一可见性测试。
在一些实例中,GPU 12可经配置以基于每图块基础执行整个第一可见性测试。在一些实例中,相对于第一可见性测试描述的一或多个技术可考虑在框50处由例如仅位置顶点着色器产生的位置数据,其可每场景完成一次。第一可见性测试可包含基于所产生位置数据的基元投影。
[0100] 在其它实例中,GPU 12可经配置以整体地对3D场景执行第一可见性测试的一或多个方面,且基于每图块基础执行第一可见性测试的一或多个方面。在此类实例中,GPU12可经配置以针对整个3D场景确定哪些基元面向后或具有零面积,因为无论这些基元与哪些图块相关联,这些基元由于面向后和/或具有零面积而在最终经再现2D场景中都将不可见。通过在全局层级(即,针对整个场景而不是逐图块基础)上执行这两个确定,GPU 12经配置以通过避免做出相同确定(例如,基元是否面向后和/或具有零面积)多于一次而节省处理资源(例如,减少其消耗),因为此确定是独立于图块的。独立于图块的确定是应用于所有图块的那些确定。举例来说,面向后的基元是无论如何都针对所有图块面向后,且可在可见性信息中经识别为在最终经再现2D图像中不可见。使用四图块实例进一步阐释,面向后的基元可在三个图块中具有面积且在第四图块中具有零面积。然而,通过确定基元面向后,GPU 12已确定所述基元不可见,无论所述基元是否在任何图块中具有任何面积。因此,GPU 12可经配置以存储此确定以当稍后基于逐图块基础产生可见性信息时跳过与第一可见性测试相关联的任何其它测试(例如,在正处理的图块中具有零)。
[0101] 在一些实例中,GPU 12可经配置以使用任何编码技术对所产生的每一图块的可见性信息进行编码,例如任何游程长度编码技术。举例来说,GPU 12可经配置以在其中可见性信息表示为一系列(例如,串)0和1的实例中对可见性信息进行游程长度编码。
[0102] GPU 12可经配置以在第一光栅化级36A中基于每图块基础光栅化图块,例如框56中示出。举例来说,GPU 12可经配置以使用在第一几何处理级34A中产生的位置数据基于每图块基础进行光栅化。作为另一实例,GPU 12可经配置以使用可见性信息基于每图块基础进行光栅化。在此实例中,GPU 12可经配置以仅光栅化可见性信息中未经识别为不可见、当前不可见、将不可见或将不再现或类似情况的基元。换句话说,GPU12可经配置以仅光栅化可见性信息中经识别为可能可见、将可能可见、将经再现或类似情况的基元。作为一个实例,采取例如以下实例,其中可见性信息包含第一值,其指示对应于所述第一值的基元在可见性信息对应的图块的最终经再现2D场景中将不可见,且包含第二值,其指示对应于所述第二值的基元在可见性信息对应的图块的最终经再现2D场景中将可能可见。GPU 12可经配置以仅光栅化具有所述第二值的对应值的基元。
[0103] GPU 12可经配置以基于每图块基础在光栅化之后执行第二可见性测试,例如框58中示出。举例来说,GPU 12可经配置以对经光栅化图块执行第二可见性测试。在一些实例中,第二可见性测试可包含或另外基于任何z测试。示范性z测试包含任何像素层级z测试(例如,高分辨率z测试)、任何块层级z测试(例如,低分辨率z测试)及其任何混合。在一些实例中,块层级z测试可基于2x2像素块、3x3像素块、4x4像素块或任何MxN像素块,其中M和N是可或可不彼此相等的正整数。换句话说,GPU 12可经配置以执行第二可见性测试,所述第二可见性测试是使用或另外基于z测试。在其它实例中,第二可见性测试可以不使用或另外基于z测试。举例来说,第二可见性测试可包含不构成z测试且在光栅化之后执行的任何其它闭塞剔除技术。
[0104] GPU 12可经配置以基于每图块基础修改可见性信息,例如框60中示出。在其中GPU 12经配置以对所产生的每一图块的可见性信息进行编码实例中,GPU 12可经配置以解码任何经编码可见性信息。举例来说,GPU 12可经配置以执行作为编码过程的逆过程的解码过程。如本文阐述,GPU 12可经配置以修改可见性信息,无论是否呈经编码形式。然而大体上,GPU 12经配置以修改未经压缩可见性信息。未经压缩可见性信息可构成经解码可见性信息或从未经编码的可见性信息。
[0105] 如本文所使用,修改可见性信息可类似地指代改变、调整、更改或修正可见性信息。修改可见性信息不包含编码或解码可见性信息。虽然编码或解码可见性信息确实实际上将可见性信息分别变换为经编码或经解码状态,但这不是预期的修改类型。在一些实例中,GPU 12可经配置以基于按每图块基础执行的第二可见性测试而按每图块基础修改可见性信息。举例来说,GPU 12可经配置以产生第一图块的可见性信息,且可经配置以在产生第一图块的可见性信息之后产生第二图块的可见性信息。GPU 12可经配置以光栅化第一图块,对经光栅化第一图块执行第二可见性测试,且基于例如针对第一图块执行的第二可见性测试修改第一图块的可见性信息。类似地,GPU 12可经配置以光栅化第二图块,对经光栅化第二图块执行第二可见性测试,且基于例如针对第二图块执行的第二可见性测试修改第二图块的可见性信息。在一些实例中,在第一几何处理级34A中基于每图块基础的可见性信息的产生可与第一光栅化级36A并行执行。举例来说,GPU 12可经配置以在第一光栅化级36A中处理第一图块,同时在第一几何处理级34A中产生第二图块的可见性信息。在此实例中应了解,第一图块由于GPU 12已在第一几何处理级34A中处理第一图块而到达第一光栅化级36A。
[0106] 如上文所阐述,针对每一图块产生的可见性信息可包含用于3D场景中的每一基元(例如,由与3D场景相关联的每一绘制命令界定的每一基元)的值。在此类实例中,GPU12可经配置以通过修改可见性信息的至少一个值(例如,通过将第一值修改为第二值和/或将第二值修改为第一值)而修改可见性信息。举例来说,基于针对第一图块的第二可见性测试的结果,GPU 12可经配置以修改针对第一图块产生的可见性信息的一或多个值。作为另一实例,基于针对第二图块的第二可见性测试的结果,GPU 12可经配置以修改针对第二图块产生的可见性信息的一或多个值。
[0107] 如上文所描述,“0”的值可用以指示3D场景中的哪些基元在用于每一特定图块的最终经再现场景中将不可见,且“1”的值可用以指示3D场景中的哪些基元在用于每一特定图块的最终经再现场景中将可能可见。在此类实例中,GPU 12可经配置以通过将可见性信息的至少一个值从“1”的值修改为“0”的值和/或将可见性信息的至少一个值从“0”的值修改为“1”的值而修改可见性信息。此修改可基于第二可见性测试(例如,来自第二可见性测试的任何结果)。
[0108] 在一些实例中,在用于图块的可见性信息的修改后,用于所述图块的经修改可见性信息可指示3D场景中的哪些基元在最终经再现2D场景中将不可见,且还可指示3D场景中的哪些基元在最终经再现2D场景中将可见。举例来说,通过在光栅化之后执行第二可见性测试,GPU 12可经配置以确定(且经由经修改可见性信息识别)哪些基元在最终经再现2D场景中将实际可见,而不是确定哪些基元在最终经再现2D场景中将可能可见。在其中针对每一图块产生的可见性信息包含用于3D场景中的每一基元(例如,由与3D场景相关联的每一绘制命令界定的每一基元)的值的实例中,则任何经修改可见性信息也是如此。
[0109] 在此类实例中,经修改可见性信息中的用于每一基元的值可具有不同归属意义。举例来说,用于每一基元的值可包含经修改可见性信息中的两个值中的一个:第一值或第二值。所述第一值可指示对应于所述第一值的基元在经修改可见性信息对应的图块的最终经再现2D场景中将不可见。所述第二值可指示对应于所述第二值的基元在经修改可见性信息对应的图块的最终经再现2D场景中将可见,而不是指示对应于所述第二值的基元在最终经再现2D场景中将可能可见。举例来说,“0”的值可意味着可见性信息和经修改可见性信息中的相同事物,而“1”的值可在可见性信息和经修改可见性信息中具有不同意义。然而应了解,“1”的值(或任何其它第二值)带有相同意义,因为其控制例如在再现遍次(例如,下文论述的第二光栅化级36B)期间针对特定图块再现哪些基元。在此方面,应了解,可见性信息可被描述为包含基于每图块基础指示哪些基元将不再现(例如,本文中描述为在最终经再现
2D场景中不可见和/或将不可见的基元)的信息。类似地,应了解,可见性信息可被描述为包含基于每图块基础指示哪些基元将经再现(例如,本文中描述为在最终经再现2D场景中可见或可能可见和/或将可见或将可能可见的基元)的信息。
[0110] 应了解,在光栅化之后执行的第二可见性测试可包含或可不包含误差。举例来说,低分辨率z测试包含比高分辨率z测试多的误差,但低分辨率z测试从资源消耗观点来看是更经济的。因此,如本文阐述,对基元在最终经再现2D场景中可见(例如,将可见)的参考可在与执行的第二可见性测试相关联的误差域内指代在最终经再现2D场景中将实际不可见的基元。举例来说,在其中第二可见性测试是低分辨率z测试且在第二光栅化级(在下文更详细地论述)期间执行的第三可见性测试是高分辨率z测试的实例中,这可导致必须再现并不实际贡献于最终经再现2D场景的几个基元。然而应了解,即使考虑此误差,GPU 12也经配置以减少或消除可见性信息中经识别为可能可见但实际不可见的基元。因此,如本文阐述,对基元在最终经再现2D场景中可见(例如,将可见)的参考可由于与执行的第二可见性测试相关联的任何误差而指代在最终经再现2D场景中将可能可见的基元。在此实例中,在经修改可见性信息中经识别为可能可见的基元与在可见性信息中经识别为可能可见的基元相比更可能在最终经再现2D场景中可见。
[0111] 在一些实例中,第一几何处理级34A和第一光栅化级36A可被称为分仓遍次(或平铺遍次)。如上文所描述,GPU 12可经配置以将场景分选到多个图块中以用于在分仓遍次中基于每图块基础(例如,逐图块基础)进行处理。用于3D场景的所有绘制命令可在分仓遍次期间处理。在一些实例中,第一几何处理级34A和第一光栅化级36A可称为分仓遍次(或平铺遍次),因为在这些级期间可能不对任何图块执行完整顶点着色。而是,第一几何处理级34A和第一光栅化级36A准备每一图块用于在再现遍次中再现。在一些实例中,再现遍次可被视为在第二几何处理级34B处开始,因为可基于每图块基础执行完整顶点着色。
[0112] 参考第二几何处理级34B,GPU 12可经配置以使用每一图块的经修改可见性信息基于每图块基础执行完整顶点着色(在执行导致可见性信息的修改的第二可见性测试的程度上),例如框62中示出。举例来说,应了解GPU 12可经配置以基于第二可见性测试而修改但不需要实际修改可见性信息。随着3D场景变得更复杂,不基于第二可见性测试修改可见性信息的可能性可减少。类似地,不基于第二可见性测试修改可见性信息的可能性可随着3D场景变得更简单而增加。作为一实例,取决于针对每一图块执行的第二可见性测试,GPU 
12可经配置以在分仓遍次期间修改一或多个图块的可见性信息;且可经配置以在分仓遍次期间不修改一或多个图块的可见性信息。
[0113] 返回参看第二几何处理级34B,GPU 12可经配置以基于经修改(或在一些实例中,未经修改)可见性信息基于每图块基础产生对应于每一基元的每一顶点的位置数据(例如,坐标数据,例如三轴(X、Y、Z)坐标数据)以及用于完整顶点着色的其它数据(例如,颜色数据)。所述多个基元(例如,所有基元)可由对应于3D场景的一或多个绘制命令界定。
[0114] 作为一实例,GPU 12可经配置以按每图块基础基于例如经修改可见性信息在屏幕空间中绘制顶点。在此实例中,GPU 12可经配置以在屏幕空间中仅绘制与经修改可见性信息中未经识别为不可见、当前不可见、将不可见或将不再现或类似情况的基元相关联的顶点。换句话说,GPU 12可经配置以在屏幕空间中绘制与经修改可见性信息中经识别为可见、将可见、将经再现或类似情况的基元相关联的顶点。作为一个实例,采取例如以下实例,其中经修改可见性信息包含第一值,其指示对应于所述第一值的基元在可见性信息对应的图块的最终经再现2D场景中将不可见,且包含第二值,其指示对应于所述第二值的基元在可见性信息对应的图块的最终经再现2D场景中将可见。GPU 12可经配置以在屏幕空间中仅绘制与具有所述第二值的对应值的基元相关联的顶点。
[0115] 在第二几何处理级34B后,GPU 12可经配置以在第二光栅化级36B中基于每图块基础光栅化图块,例如框64中示出。因此,GPU 12可经配置以光栅化图块两次:在第一光栅化级36A期间的第一次,和在第二光栅化级36B期间的第二次。可执行每一图块的第一光栅化使得可执行第二可见性测试。可执行每一图块的第二光栅化以提供像素信息到像素处理管线38。在一些实例中,GPU 12可经配置以执行第三可见性测试。可对在第二光栅化级36B期间产生的每一经光栅化图块执行第三可见性测试,例如框66中示出。
[0116] 第三可见性测试可或可不相同于第二可见性测试。在其中第三和第二可见性测试相同的实例中,GPU 12可经配置以再次使用从第二可见性测试产生的任何信息。举例来说,在第二和第三可见性测试是同一类型的z测试(例如,两个测试都是低分辨率z测试、高分辨率z测试等)的情况下,GPU 12可经配置以再次使用来自GPU 12执行第二可见性测试的任何所得信息用于第三可见性测试。在一些实例中,如果测试是相同的,那么GPU 12可经配置以不执行第三可见性测试,且实际上仅再次使用从第二可见性测试产生的信息。通过再次使用先前计算的测试信息,GPU 12可经配置以按此方式减少处理资源的消耗。
[0117] 在一些实例中,第三可见性测试可包含或另外基于任何z测试。示范性z测试包含任何像素层级z测试(例如,高分辨率z测试)、任何块层级z测试(例如,低分辨率z测试)及其任何混合。在一些实例中,块层级z测试可基于2x2像素块、3x3像素块、4x4像素块或任何MxN像素块,其中M和N是可或可不彼此相等的正整数。另外描述,GPU12可经配置以执行第三可见性测试,所述第三可见性测试是使用或另外基于z测试。在其它实例中,第三可见性测试可以不使用或另外基于z测试。举例来说,第三可见性测试可包含不构成z测试且在光栅化之后执行的任何其它闭塞剔除技术。
[0118] 在第二光栅化级36B后,GPU 12可经配置以在像素处理管线38中执行像素处理。
[0119] 图4将GPU 12描述为修改可见性信息作为第一光栅化级36A的部分。然而,应了解这是一个实例,且GPU 12可经配置以修改可见性信息作为在第二几何处理级34B之前(例如,在完整顶点着色发生之前)的另一级的部分或作为图形管线中的新级的部分。举例来说,GPU 12可经配置以在称为可见性信息修改级的级中修改可见性信息。可见性信息修改级可定位于分仓遍次中的图块的第一光栅化遍次(例如,第一光栅化级36A)与第二几何处理级(例如,第二几何处理级34B)之间的任何级处。
[0120] 还应了解,GPU 12可经配置以在各个级中的每一个处处理不同图块。举例来说,GPU 12可经配置以在分仓遍次中处理图块,而GPU在再现遍次中处理不同图块。通过在图形管线中的各个级处并行地处理多于一个图块,GPU 12经配置以优化再现。
[0121] 图5说明根据本文阐述的一或多个技术处理图形数据的一个实例。
[0122] GPU 12可经配置以接收和/或产生一或多个绘制命令。GPU 12可经配置以在例如图形处理管线30的几何处理级34中处理这一或多个绘制命令。每一绘制命令可包含一或多个基元,所述一或多个基元中的每一个具有一或多个顶点。在图5中示出的实例中,GPU 12可经配置以在例如第一几何处理级34A和第二几何处理级34B中处理一或多个绘制命令。换句话说,GPU 12可经配置以在几何处理级34的第一遍次(例如,第一几何处理级34A)中和几何处理级34的第二遍次(例如,第二几何处理级34B)中处理一或多个绘制命令。
[0123] 参考第一几何处理级34A,GPU 12可经配置以仅产生对应于3D场景中的多个基元(例如,所有基元)的每一顶点的位置数据(例如,坐标数据,例如三轴(X、Y、Z)坐标数据),例如框80中示出。举例来说,GPU 12可经配置以每顶点产生位置数据一次,且每基元连接信息可经编码到输入索引缓冲器中。所述多个基元可由对应于3D场景的一或多个绘制命令界定。
[0124] 如本文阐述,GPU 12可经配置以通过以多个图块划分3D场景而执行基于图块的再现,例如框82中示出。如本文所使用,将3D场景划分为多个图块的参考指代将用以从特定视点表示三维场景的2D空间划分为多个图块。在一些实例中,可将2D空间划分成两个图块、三个图块、四个图块或任何数目的图块。在其它实例中,GPU 12可经配置以对3D场景执行本文阐述的一或多个技术而不使用基于图块的再现。
[0125] GPU 12可经配置以在第一光栅化级36A中基于每图块基础光栅化图块,例如框84中示出。第一光栅化级36A可被称为第一光栅化遍次。在第一光栅化遍次期间,GPU 12可经配置以使用由第一几何处理级34A产生的位置数据基于每图块基础光栅化图块。GPU 12可经配置以根据第一像素粒度平在第一光栅化级36A期间光栅化每一图块,例如8x8、8x16、32x32、图块长度x图块宽度或任何MxN像素块,其中M和N是可或可不彼此相等的正整数。
[0126] GPU 12可经配置以在第一光栅化级36A期间基于每图块基础在光栅化之后执行第一可见性测试,例如框86中示出。举例来说,GPU 12可经配置以对经光栅化图块执行第一可见性测试。在一些实例中,第一可见性测试可包含或另外基于任何z测试。示范性z测试包含任何像素层级z测试(例如,高分辨率z测试)、任何块层级z测试(例如,低分辨率z测试)及其任何混合。在一些实例中,块层级z测试可基于2x2像素块、3x3像素块、4x4像素块或任何MxN像素块,其中M和N是可或可不彼此相等的正整数。换句话说,GPU 12可经配置以执行第一可见性测试,所述第一可见性测试是使用或另外基于z测试。
[0127] 在其它实例中,第一可见性测试可以不使用或另外基于z测试。举例来说,第一可见性测试可包含不构成z测试且在光栅化之后执行的任何其它闭塞剔除技术。举例来说,第一可见性测试可包含以下各项中的一或多个:通过确定所述多个基元中的任一个是否(1)面向后,(2)具有零面积,或(3)在正处理的图块中具有零面积(例如,所述基元在特定图块中不存在),而确定所述多个基元中的任一个是否在最终经再现2D场景中将不可见。在此实例中,GPU 12可经配置以执行第一可见性测试。在一些实例中,GPU 12可经配置以基于每图块基础执行整个第一可见性测试。在一些实例中,相对于第一可见性测试描述的一或多个技术可考虑在框80处由例如仅位置顶点着色器产生的位置数据,其可每场景完成一次。第一可见性测试可包含基于所产生位置数据的基元投影。
[0128] 在一些实例中,可执行第一可见性测试作为第一光栅化级36A的部分,例如图5中示出。在其它实例中,可执行第一可见性测试作为在第二光栅化级36B之前的另一图形管线级的部分。
[0129] GPU 12可经配置以基于第一可见性测试按每图块基础产生可见性信息,例如框88中示出。虽然基于每图块基础产生可见性信息,但应了解这意味着每一图块具有与其相关联的可见性信息,且可同时针对每一图块产生可见性信息。举例来说,GPU 12可经配置以在对任何图块执行第二光栅化遍次之前(例如,在第二次光栅化任何图块之前)产生每一图块的可见性信息。作为另一实例,GPU 12可经配置以在针对每一图块执行完整顶点着色之前产生每一图块的可见性信息。作为另一实例,GPU 12可经配置以基于第一可见性测试但在针对每一图块执行第二可见性测试之前产生每一图块的可见性信息。
[0130] 针对每一图块产生的可见性信息可包含用于3D场景中的每一基元(例如,由与3D场景相关联的每一绘制命令界定的每一基元)的值。在此类实例中,用于每一基元的值可包含(例如)二进制值或另一类型的值。举例来说,用于每一基元的值可包含两个值中的一个:第一值或第二值。所述第一值可指示对应于所述第一值的基元在可见性信息对应的图块的最终经再现2D场景中将不可见。所述第二值可指示对应于所述第二值的基元在可见性信息对应的图块的最终经再现2D场景中将可能可见。在一些实例中,“0”的值可用以指示3D场景中的哪些基元在用于每一特定图块的最终经再现场景中将不可见,且“1”的值可用以指示
3D场景中的哪些基元在用于每一特定图块的最终经再现场景中将可能可见。
[0131] 在其它实例中,GPU 12可经配置以整体地对3D场景执行第一可见性测试的一或多个方面,且基于每图块基础执行第一可见性测试的一或多个方面。在此类实例中,GPU12可经配置以针对整个3D场景确定哪些基元面向后或具有零面积,因为无论这些基元与哪些图块相关联,这些基元由于面向后和/或具有零面积而在最终经再现2D场景中都将不可见。通过在全局层级(即,针对整个场景而不是逐图块基础)上执行这两个确定,GPU 12经配置以通过避免做出相同确定(例如,基元是否面向后和/或具有零面积)多于一次而节省处理资源(例如,减少其消耗),因为此确定是独立于图块的。独立于图块的确定是应用于所有图块的那些确定。举例来说,面向后的基元是无论如何都针对所有图块面向后,且可在可见性信息中经识别为在最终经再现2D图像中不可见。使用四图块实例进一步阐释,面向后的基元可在三个图块中具有面积且在第四图块中具有零面积。然而,通过确定基元面向后,GPU 12已确定所述基元不可见,无论所述基元是否在任何图块中具有任何面积。因此,GPU 12可经配置以存储此确定以当稍后基于逐图块基础产生可见性信息时跳过与第一可见性测试相关联的任何其它测试(例如,在正处理的图块中具有零)。
[0132] 在一些实例中,GPU 12可经配置以使用任何编码技术对所产生的每一图块的可见性信息进行编码,例如任何游程长度编码技术。举例来说,GPU 12可经配置以在其中可见性信息表示为一系列(例如,串)0和1的实例中对可见性信息进行游程长度编码。
[0133] 在一些实例中,可产生可见性信息作为第一光栅化级36A的部分,例如图5中示出。在其它实例中,可产生可见性信息作为在第二光栅化级36B之前的另一图形管线级的部分。
[0134] GPU 12可经配置以在第二光栅化级36B中基于每图块基础光栅化图块,例如框90中示出。第二光栅化级36B可称为第二光栅化遍次。在第二光栅化遍次期间,GPU 12可经配置以使用由第一几何处理级34A产生的位置数据基于每图块基础光栅化图块。通过再次使用在第一几何处理级34A期间先前产生的位置数据,GPU 12可经配置以避免必须执行仅第二位置顶点着色过程。
[0135] GPU 12可经配置以根据第二像素粒度水平在第二光栅化级36B期间光栅化每一图块,例如1x1、2x2、4x4、4x8、8x8、8x16、32x32、图块长度x图块宽度或任何MxN像素块,其中M和N是可或可不彼此相等的正整数。在一些实例中,第二光栅化级36B的第二像素粒度水平可小于或等于第一光栅化级36A的第一像素粒度水平。如本文所使用,较低像素粒度水平意味着较精细(与较粗略相反)粒度水平。举例来说,第二像素粒度水平可1x1、2x2或4x4,其中第一像素粒度水平可为8x8、32x32或256x246,仅距几个实例。在这些实例中,1x1、2x2和4x4各自是小于8x8、32x32和256x256的像素粒度水平的像素粒度水平的实例。
[0136] 作为另一实例,GPU 12可经配置以使用所产生可见性信息在第二光栅化级36B中基于每图块基础进行光栅化。在此实例中,GPU 12可经配置以仅光栅化可见性信息中未经识别为不可见、当前不可见、将不可见或将不再现或类似情况的基元。换句话说,GPU 12可经配置以仅光栅化可见性信息中经识别为可能可见、将可能可见、将经再现或类似情况的基元。作为一个实例,采取例如以下实例,其中可见性信息包含第一值,其指示对应于所述第一值的基元在可见性信息对应的图块的最终经再现2D场景中将不可见,且包含第二值,其指示对应于所述第二值的基元在可见性信息对应的图块的最终经再现2D场景中将可能可见。GPU 12可经配置以仅光栅化具有所述第二值的对应值的基元。
[0137] GPU 12可经配置以在第二光栅化级36B期间基于每图块基础在光栅化之后执行第二可见性测试,例如框92中示出。举例来说,GPU 12可经配置以对在第二光栅化级36B期间产生的经光栅化图块执行第二可见性测试。在一些实例中,第二可见性测试可包含或另外基于任何z测试。示范性z测试包含任何像素层级z测试(例如,高分辨率z测试)、任何块层级z测试(例如,低分辨率z测试)及其任何混合。在一些实例中,块层级z测试可基于2x2像素块、3x3像素块、4x4像素块或任何MxN像素块,其中M和N是可或可不彼此相等的正整数。另外描述,GPU 12可经配置以执行第二可见性测试,所述第二可见性测试是使用或另外基于z测试。
[0138] 在一些实例中,第一可见性测试可为具有大于第二可见性测试的MxN像素粒度的MxN像素粒度水平的z测试。举例来说,第一可见性测试可为低分辨率z测试,且第二可见性测试可为精细分辨率z测试。在其它实例中,第一可见性测试和第二可见性测试可相同,其中第二光栅化级36B的第二像素粒度水平小于第一光栅化级36A的第一像素粒度水平。在其它实例中,第一可见性测试和第二可见性测试可不同,其中第二光栅化级36B的第二像素粒度水平等于第一光栅化级36A的第一像素粒度水平。
[0139] GPU 12可经配置以基于每图块基础修改可见性信息,例如框94中示出。在其中GPU 12经配置以对所产生的每一图块的可见性信息进行编码实例中,GPU 12可经配置以解码任何经编码可见性信息。举例来说,GPU 12可经配置以执行作为编码过程的逆过程的解码过程。如本文阐述,GPU 12可经配置以修改可见性信息,无论是否呈经编码形式。然而大体上,GPU 12经配置以修改未经压缩可见性信息。未经压缩可见性信息可构成经解码可见性信息或从未经编码的可见性信息。
[0140] 在一些实例中,可修改可见性信息作为第二光栅化级36B的部分,例如图5中示出。在其它实例中,可修改可见性信息作为在基于每图块基础执行完整顶点着色之前的另一图形管线级的部分。
[0141] 如本文所使用,修改可见性信息可类似地指代改变、调整、更改或修正可见性信息。修改可见性信息不包含编码或解码可见性信息。虽然编码或解码可见性信息确实实际上将可见性信息分别变换为经编码或经解码状态,但这不是预期的修改类型。在一些实例中,GPU 12可经配置以基于按每图块基础执行的第二可见性测试而按每图块基础修改可见性信息。
[0142] 如上文所阐述,针对每一图块产生的可见性信息可包含用于3D场景中的每一基元(例如,由与3D场景相关联的每一绘制命令界定的每一基元)的值。在此类实例中,GPU12可经配置以通过修改可见性信息的至少一个值(例如,通过将第一值修改为第二值和/或将第二值修改为第一值)而修改可见性信息。举例来说,基于针对第一图块的第二可见性测试的结果,GPU 12可经配置以修改针对第一图块产生的可见性信息的一或多个值。
[0143] 如上文所描述,“0”的值可用以指示3D场景中的哪些基元在用于每一特定图块的最终经再现场景中将不可见,且“1”的值可用以指示3D场景中的哪些基元在用于每一特定图块的最终经再现场景中将可能可见。在此类实例中,GPU 12可经配置以通过将可见性信息的至少一个值从“1”的值修改为“0”的值和/或将可见性信息的至少一个值从“0”的值修改为“1”的值而修改可见性信息。此修改可基于第二可见性测试(例如,来自第二可见性测试的任何结果)。
[0144] 在一些实例中,在用于图块的可见性信息的修改后,用于所述图块的经修改可见性信息可指示3D场景中的哪些基元在最终经再现2D场景中将不可见,且还可指示3D场景中的哪些基元在最终经再现2D场景中将可见。举例来说,通过在光栅化之后执行第二可见性测试,GPU 12可经配置以确定(且经由经修改可见性信息识别)哪些基元在最终经再现2D场景中将实际可见,而不是确定哪些基元在最终经再现2D场景中将可能可见。在其中针对每一图块产生的可见性信息包含用于3D场景中的每一基元(例如,由与3D场景相关联的每一绘制命令界定的每一基元)的值的实例中,则任何经修改可见性信息也是如此。
[0145] 在此类实例中,经修改可见性信息中的用于每一基元的值可具有不同归属意义。举例来说,用于每一基元的值可包含经修改可见性信息中的两个值中的一个:第一值或第二值。所述第一值可指示对应于所述第一值的基元在经修改可见性信息对应的图块的最终经再现2D场景中将不可见。所述第二值可指示对应于所述第二值的基元在经修改可见性信息对应的图块的最终经再现2D场景中将可见,而不是指示对应于所述第二值的基元在最终经再现2D场景中将可能可见。举例来说,“0”的值可意味着可见性信息和经修改可见性信息中的相同事物,而“1”的值可在可见性信息和经修改可见性信息中具有不同意义。然而,应了解“1”的值(或任何其它第二值)带有相同意义,因为其控制例如在再现遍次(例如,下文论述的第二光栅化级36B)期间针对特定图块再现哪些基元。在此方面,应了解,可见性信息可被描述为包含基于每图块基础指示哪些基元将不再现(例如,本文中描述为在最终经再现2D场景中不可见和/或将不可见的基元)的信息。类似地,应了解,可见性信息可被描述为包含基于每图块基础指示哪些基元将经再现(例如,本文中描述为在最终经再现2D场景中可见或可能可见和/或将可见或将可能可见的基元)的信息。
[0146] 应了解,在光栅化之后执行的第二可见性测试可包含或可不包含错误。举例来说,低分辨率z测试包含比高分辨率z测试多的错误,但低分辨率z测试从资源消耗观点来看是更经济的。因此,如本文阐述,对基元在最终经再现2D场景中可见(例如,将可见)的参考可在与执行的第二可见性测试相关联的误差域内指代在最终经再现2D场景中将实际不可见的基元。举例来说,在其中第二可见性测试是低分辨率z测试且在第三光栅化级(在下文更详细地论述)期间执行的第三可见性测试是高分辨率z测试的实例中,这可导致必须再现并不实际贡献于最终经再现2D场景的几个基元。然而应了解,即使考虑此误差,GPU 12也经配置以减少或消除可见性信息中经识别为可能可见但实际不可见的基元。因此,如本文阐述,对基元在最终经再现2D场景中可见(例如,将可见)的参考可由于与执行的第二可见性测试相关联的任何误差而指代在最终经再现2D场景中将可能可见的基元。在此实例中,在经修改可见性信息中经识别为可能可见的基元与在可见性信息中经识别为可能可见的基元相比更可能在最终经再现2D场景中可见。
[0147] 在一些实例中,第一几何处理级34A、第一光栅化级36A和第二光栅化级36B可称为分仓遍次(或平铺遍次)。如上文所描述,GPU 12可经配置以在分仓遍次中基于每图块基础(例如,逐图块基础)将场景分选到多个图块中用于处理。用于3D场景的所有绘制命令可在分仓遍次期间处理。在一些实例中,第一几何处理级34A、第一光栅化级36A和第二光栅化级36B可称为分仓遍次(或平铺遍次),因为在这些级期间不可对任何图块执行完整顶点着色。
而是,第一几何处理级34A、第一光栅化级36A和第二光栅化级36B准备每一图块用于在再现遍次中再现。在一些实例中,再现遍次可视为在第二几何处理级34B开始,因为在此级期间可基于每图块基础执行完整顶点着色。
[0148] 参考第二几何处理级34B,GPU 12可经配置以使用每一图块的经修改可见性信息基于每图块基础执行完整顶点着色(在执行导致可见性信息的修改的第二可见性测试的程度上),例如框96中示出。举例来说,应了解GPU 12可经配置以基于第二可见性测试而修改但不需要实际修改可见性信息。随着3D场景变得更复杂,不基于第二可见性测试修改可见性信息的可能性可减少。类似地,不基于第二可见性测试修改可见性信息的可能性可随着3D场景变得更简单而增加。作为一实例,取决于针对每一图块执行的第二可见性测试,GPU 
12可经配置以在分仓遍次期间修改一或多个图块的可见性信息;且可经配置以在分仓遍次期间不修改一或多个图块的可见性信息。
[0149] 返回参看第二几何处理级34B,GPU 12可经配置以基于经修改(或在一些实例中,未经修改)可见性信息基于每图块基础产生对应于每一基元的每一顶点的位置数据(例如,坐标数据,例如三轴(X、Y、Z)坐标数据)以及用于完整顶点着色的其它数据(例如,颜色数据)。所述多个基元(例如,所有基元)可由对应于3D场景的一或多个绘制命令界定。
[0150] 作为一实例,GPU 12可经配置以按每图块基础基于例如经修改可见性信息在屏幕空间中绘制顶点。在此实例中,GPU 12可经配置以在屏幕空间中仅绘制与经修改可见性信息中未经识别为不可见、当前不可见、将不可见或将不再现或类似情况的基元相关联的顶点。换句话说,GPU 12可经配置以在屏幕空间中绘制与经修改可见性信息中经识别为可见、将可见、将经再现或类似情况的基元相关联的顶点。作为一个实例,采取例如以下实例,其中经修改可见性信息包含第一值,其指示对应于所述第一值的基元在可见性信息对应的图块的最终经再现2D场景中将不可见,且包含第二值,其指示对应于所述第二值的基元在可见性信息对应的图块的最终经再现2D场景中将可见。GPU 12可经配置以在屏幕空间中仅绘制与具有所述第二值的对应值的基元相关联的顶点。
[0151] 在第二几何处理级34B后,GPU 12可经配置以在第三光栅化级36C中基于每图块基础光栅化图块,例如框98中示出。因此,GPU 12可经配置以光栅化图块三次:在第一光栅化级36A期间的第一次,在第二光栅化级36B期间的第二次,以及在第三光栅化级36C期间的第三次。可执行每一图块的第一光栅化使得可执行第一可见性测试。可执行每一图块的第二光栅化使得可执行第二可见性测试。可执行每一图块的第三光栅化以提供像素信息到像素处理管线38。在一些实例中,GPU 12可经配置以执行第三可见性测试。可对在第三光栅化级36C期间产生的每一经光栅化图块执行第三可见性测试,例如框99中示出。
[0152] 第三可见性测试可或可不相同于第二可见性测试。在其中第三和第二可见性测试相同的实例中,GPU 12可经配置以再次使用从第二可见性测试产生的任何信息。举例来说,在第二和第三可见性测试是同一类型的z测试(例如,两个测试都是低分辨率z测试、高分辨率z测试等)的情况下,GPU 12可经配置以再次使用来自GPU 12执行第二可见性测试的任何所得信息用于第三可见性测试。在一些实例中,如果测试是相同的,那么GPU 12可经配置以不执行第三可见性测试,且实际上仅再次使用从第二可见性测试产生的信息。通过再次使用先前计算的测试信息,GPU 12可经配置以按此方式减少处理资源的消耗。
[0153] 在一些实例中,第三可见性测试可包含或另外基于任何z测试。示范性z测试包含任何像素层级z测试(例如,高分辨率z测试)、任何块层级z测试(例如,低分辨率z测试)及其任何混合。在一些实例中,块层级z测试可基于2x2像素块、3x3像素块、4x4像素块或任何MxN像素块,其中M和N是可或可不彼此相等的正整数。另外描述,GPU12可经配置以执行第三可见性测试,所述第三可见性测试是使用或另外基于z测试。在其它实例中,第三可见性测试可以不使用或另外基于z测试。举例来说,第三可见性测试可包含不构成z测试且在光栅化之后执行的任何其它闭塞剔除技术。
[0154] 在第三光栅化级36C后,GPU 12可经配置以在像素处理管线38中执行像素处理。
[0155] 图5描述GPU 12修改可见性信息作为第二光栅化级36B的部分。然而,应了解这是一个实例,且GPU 12可经配置以修改可见性信息作为在第二几何处理级34B之前(例如,在完整顶点着色发生之前)的另一级的部分或作为图形管线中的新级的部分。举例来说,GPU 12可经配置以在称为可见性信息修改级的级中修改可见性信息。可见性信息修改级可定位于分仓遍次中的图块的第二光栅化遍次(例如,第二光栅化级36B)与第二几何处理级(例如,第二几何处理级34B)之间的任何级处。
[0156] 还应了解,GPU 12可经配置以在各个级中的每一个处处理不同图块。举例来说,GPU 12可经配置以在分仓遍次中处理图块,而GPU在再现遍次中处理不同图块。通过在图形管线中的各个级处并行地处理多于一个图块,GPU 12经配置以优化再现。
[0157] 图6A说明包括多个基元(例如,三角形)的简化3D图形场景500的一个实例。在所示实例中,所述多个基元包含四个基元:基元P1、基元P2、基元P3和基元P4。在此实例中,基元P1面向后,且基元P2、P3和P4面向前。基元P3示出为部分地遮挡基元P2且完全遮挡基元P4。
[0158] GPU 12可根据本文阐述的一或多个技术将图形场景500处理为帧以用于由显示器呈现。举例来说,GPU 12可经配置以如图所示将图形场景500划分为多个图块(图块1、图块2、图块3和图块4)。GPU 12可经配置以根据本文阐述的一或多个技术产生图块1到4中的每一个的可见性信息。图6B说明可针对图块1到4中的每一个产生的可见性信息的实例。类似地,GPU 12可经配置以根据本文阐述的一或多个技术修改可见性信息。图6C说明可根据本文阐述的一或多个技术产生的未经修改和经修改可见性信息的实例。举例来说,如图6C中所示,用于图块1和2的可见性信息未经修改,且用于图块3和4的可见性信息经修改。举例来说,相对于图块1和2,对经光栅化图块1和经光栅化图块2执行第二可见性测试并不导致GPU 
12修改针对图块1和2分别产生的可见性信息。然而,相对于图块3和4,对经光栅化图块3和经光栅化图块4执行第二可见性测试确实导致GPU 12修改针对图块3和4分别产生的可见性信息。
[0159] 图7是展示本发明的实例方法的流程图。图7的方法可由一或多个处理单元1(例如,一或多个CPU、一或多个GPU、一或多个显示处理单元、一或多个其它处理单元,或其任何组合)实行。图7描绘与本发明的一或多种技术一致的一个实例方法。
[0160] 处理单元1可经配置以将用以从视点表示3D场景的2D空间划分为多个图块(700)。3D场景可包含多个基元。处理单元1可经配置以基于逐图块基础(例如,每图块基础)产生所述多个图块中的每一图块的可见性信息。举例来说,处理单元1可经配置以产生所述多个图块中的第一图块的可见性信息(702)。类似地,处理单元1可经配置以产生所述多个图块中的第二图块、所述多个图块中的第三图块、所述多个图块中的第四图块等的可见性信息。在一些实例中,针对每一图块产生的可见性信息可包含用于所述多个基元中的每一基元(例如,取决于实例为3D场景中的全部基元或少于3D场景中的全部基元)的值。举例来说,第一图块的可见性信息包含用于所述多个基元中的每一基元的值。根据一些实例,用于每一基元的值可为第一值或第二值。在此类实例中,如本文中所描述,所述第一值可指示所述第一值相关联的基元将不被呈现或类似情况。
[0161] 处理单元1可经配置以修改第一图块的可见性信息以产生第一图块的经修改可见性信息(704)。类似地,处理单元1可经配置以修改所述多个图块中的第二图块、所述多个图块中的第三图块、所述多个图块中的第四图块等的可见性信息。举例来说,处理单元1可经配置以基于逐图块基础修改可见性信息。
[0162] 在一些实例中,处理单元1可经配置以通过经配置以修改所述多个图块中的至少一个图块的可见性信息的至少一个值而修改可见性信息。举例来说,处理单元1可经配置以通过经配置以修改第一图块的可见性信息的至少一个值而修改第一图块的可见性信息。作为另一实例,处理单元1可经配置以通过经配置以将分别对应于第一图块的可见性信息的至少一个基元的至少一个第二值修改为所述第一值而修改第一图块的可见性信息。在另一实例中,处理单元1可经配置以通过经配置以将分别对应于第一图块的可见性信息的至少一个基元的至少一个第一值修改为所述第二值而修改第一图块的可见性信息。
[0163] 处理单元1可经配置以使用经修改可见性信息产生2D场景。举例来说,处理单元1可经配置以使用第一图块的经修改可见性信息产生2D场景(706)。在一些实例中,处理单元1可经配置以通过基于经修改可见性信息的完整顶点着色而使用经修改可见性信息产生2D场景。举例来说,处理单元1可经配置以通过经配置以使用经修改可见性信息对第一图块进行完整顶点着色而使用第一图块的经修改可见性信息产生2D场景。
[0164] 在一些实例中,处理单元1可经配置以通过经配置以基于可见性测试修改可见性信息而修改可见性信息。举例来说,处理单元1可经配置以通过经配置以基于可见性测试修改第一图块的可见性信息而修改第一图块的可见性信息。在此类实例中,可见性测试可包含z测试(例如,任何z测试)或不构成z测试且在光栅化之后执行的任何其它闭塞剔除技术。示范性z测试包含任何像素层级z测试(例如,高分辨率z测试)、任何块层级z测试(例如,低分辨率z测试)及其任何混合。在一些实例中,块层级z测试可基于2x2像素块、3x3像素块、
4x4像素块或任何MxN像素块,其中M和N是可或可不彼此相等的正整数。换句话说,处理单元
1可经配置以执行第二可见性测试,所述第二可见性测试是使用或另外基于z测试。在其它实例中,第二可见性测试可以不使用或另外基于z测试。举例来说,第二可见性测试可包含不构成z测试且在光栅化之后执行的任何其它闭塞剔除技术。
[0165] 在一些实例中,处理单元1可经配置以在第一光栅化遍次期间第一次光栅化第一图块以产生经光栅化第一图块。在此类实例中,处理单元1可经配置以使用在第一光栅化遍次期间产生的经光栅化第一图块执行第一可见性测试。处理单元1可经配置以基于第一可见性测试产生第一图块的可见性信息。
[0166] 在一些实例中,处理单元1可经配置以在第二光栅化遍次期间第二次光栅化第一图块以产生经光栅化第一图块。在此类实例中,处理单元1可经配置以使用在第二光栅化遍次期间产生的经光栅化第一图块执行第二可见性测试。处理单元1可经配置以基于第二可见性测试修改第一图块的可见性信息。
[0167] 在一些实例中,处理单元1可经配置以根据第一光栅化像素粒度水平在第一光栅化遍次期间光栅化第一图块。在此类实例中,处理单元1可经配置以根据第二光栅化像素粒度水平在第二光栅化遍次期间光栅化第一图块。在一些实例中,第二光栅化像素粒度水平可小于或等于第一光栅化像素粒度水平。作为几个实例,第二光栅化像素粒度水平可为1x1、2x2或4x4,且第一光栅化像素粒度水平可为8x8、32x32或图块长度x图块宽度。
[0168] 在一些实例中,第一可见性测试包含具有第一像素粒度水平的第一z测试,且第二可见性测试包含具有第二像素粒度水平的第二z测试。在此类实例中,第二像素粒度水平可小于或等于第一像素粒度水平。作为几个实例,用于第二z测试的第二像素粒度水平可为1x1、2x2或4x4,且用于第一z测试的第一像素粒度水平可为8x8、8x16或32x32。作为另一实例,第一可见性测试可包含低分辨率z测试,且第二可见性测试可包含高分辨率z测试。
[0169] 在一些实例中,处理单元1可经配置以基于逐图块基础光栅化所述多个图块中的每一图块以产生每一图块的经光栅化图块。举例来说,处理单元1可经配置以光栅化第一图块以产生经光栅化第一图块。类似地,处理单元1可经配置以光栅化第二图块以产生经光栅化第二图块。处理单元1可经配置以基于每图块基础对每一经光栅化图块执行可见性测试。举例来说,处理单元1可经配置以使用经光栅化第一图块执行第一可见性测试。类似地,处理单元1可经配置以使用经光栅化第二图块执行第一可见性测试。如本文阐述,处理单元1可经配置以基于可见性测试(例如,相对于一些实例描述的第二可见性测试)修改可见性信息。
[0170] 在一些实例中,处理单元1可经配置以在执行正产生其可见性信息的任何图块的第二光栅化之前修改可见性信息。举例来说,处理单元1可经配置以在第二次光栅化第一图块之前修改第一图块的可见性信息。类似地,处理单元1可经配置以在第二次光栅化第二图块之前修改第二图块的可见性信息。
[0171] 在其它实例中,处理单元1可经配置以在执行正产生其可见性信息的任何图块的第三光栅化之前修改可见性信息。举例来说,处理单元1可经配置以在第三次光栅化第一图块之前修改第一图块的可见性信息。类似地,处理单元1可经配置以在第三次光栅化第二图块之前修改第二图块的可见性信息。作为另一实例,处理单元1可经配置以在修改第一图块的可见性信息之前第一次和第二次光栅化第一图块。处理单元1可经配置以在修改第一图块的可见性信息之后第三次光栅化第一图块。
[0172] 在一些实例中,处理单元1可经配置以在执行完整顶点着色之前修改可见性信息。举例来说,处理单元1可经配置以在针对第一图块执行完整顶点着色之前修改第一图块的可见性信息。类似地,处理单元1可经配置以在针对第二图块执行完整顶点着色之前修改第二图块的可见性信息。
[0173] 图7相对于多个图块中的第一图块进行大体上描述。然而应了解,相对于图7描述的过程的各种实例可应用于对应于所述多个图块的一或多个(例如,所有)图块。举例来说,处理单元1可经配置以产生所述多个图块中的每一个的可见性信息。处理单元1可经配置以修改对应于所述多个图块中的至少一个的可见性信息以产生所述多个图块中的所述至少一个的经修改可见性信息。处理单元1可经配置以使用针对所述多个图块中的所述至少一个产生的经修改可见性信息产生2D场景。
[0174] 应理解,本文中描述的所有技术可个别地或组合地使用。举例来说,处理单元1和/或其一或多个组件可以任何组合执行本发明中描述的技术。作为另一实例,GPU 12和/或其一或多个组件可以任何组合执行本发明中描述的技术。
[0175] 虽然在上文描述所述技术的各种方面的特定组合,但提供这些组合只是为了说明本发明中描述的技术的实例。因此,本发明的技术不应限于这些实例组合且可涵盖本发明中描述的技术的各种方面的任何可设想的组合。
[0176] 根据本发明,在上下文并无其它指示的情况下,可将术语“或”推断为“和/或”。另外,虽然例如“一或多个”或“至少一个”等短语可能已用于本文所揭示的一些特征而不是其它特征;但在上下文并无其它指示的情况下,未针对其使用此类语言的特征可解释为暗含此类含义。
[0177] 在一或多个实例中,本文所述的功能可以用硬件、软件、固件或其任何组合来实施。举例来说,尽管已在贯穿本揭示使用了术语“处理单元”,但应理解,此类处理单元可以硬件、软件、固件或其任何组合来实施。如果本文中所描述的任何功能、处理单元、技术或其它模块以软件实施,那么本文中所描述的所述功能、处理单元、技术或其它模块可存储于计算机可读媒体上或作为计算机可读媒体上的一或多个指令或代码发射。计算机可读媒体可包含计算机数据存储媒体或通信媒体,所述通信媒体包含促进计算机程序从一处传递至另一处的任何媒体。以此方式,计算机可读媒体通常可对应于(1)非暂时性的有形计算机可读存储媒体,或(2)通信媒体,例如信号或载波。数据存储媒体可以是可由一或多个计算机或一或多个处理器存取以检索用于实施本发明中描述的技术的指令、代码和/或数据结构的任何可用媒体。借助于实例而非限制,这些计算机可读媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置。如本文中所使用,磁盘和光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软性磁盘及蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘用激光以光学方式再现数据。以上各项的组合也应包含于计算机可读媒体的范围内。计算机程序产品可包含计算机可读媒体。
[0178] 代码可以由一或多个处理器执行,所述一或多个处理器例如是一或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效的集成或离散逻辑电路。因此,如本文中所使用的术语“处理器”可指代上述结构或适用于实施本文中所描述的技术的任何其它结构中的任一者。另外,在一些方面中,本文所描述的功能性可在经配置以用于图形处理的专用硬件和/或软件模块内提供。并且,所述技术可完全实施于一或多个电路或逻辑元件中。
[0179] 本发明的技术可在广泛多种装置或设备中实施,包含无线手持机、集成电路(IC)或一组IC(例如,芯片组)。本发明中描述各种组件、模块或单元是为了强调经配置以执行所揭示的技术的装置的功能方面,但未必需要通过不同硬件单元实现。相反地,如上文所描述,各种单元可结合合适的软件和/或固件组合在任何硬件单元中,或通过互操作硬件单元的集合来提供,所述硬件单元包含如上文所描述的一或多个处理器。
[0180] 已描述了各种实例。这些及其它实例在所附权利要求书的范围内。
相关专利内容
标题 发布/更新时间 阅读量
修改图表 2020-05-11 305
修改命令 2020-05-11 446
修改带式胶带 2020-05-13 179
修改比特流 2020-05-12 695
修改对话窗口 2020-05-13 593
修改液笔 2020-05-11 350
引导过程修改 2020-05-13 886
修改笔 2020-05-11 82
错字修改笔 2020-05-12 309
错字修改笔 2020-05-12 675
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈