用于与硬件实例化兼容的GPU的压缩可见性状态制造技术

技术编号:26483664 阅读:65 留言:0更新日期:2020-11-25 19:31
用于在应用的场景中渲染可见基元的方法和设备,可以包括:加载基元可见性缓冲器,该基元可见性缓冲器包括多个基元,多个基元表示在该应用的场景中的至少一个实例。基元可见性缓冲器可以包括针对多个基元中的每个基元的可见性位,可见性位将针对多个基元中的每个基元的可见性状态描述为可见或不可见。方法和设备可以包括:基于可见性位,确定多个基元中的每个基元在场景中是否可见;当针对基元的可见性位指示基元可见时,渲染基元;以及当可见性位指示基元不可见时,跳过该基元的渲染。方法和设备还可以包括在渲染可见性位时,将预先计算的可见性状态与运行时可见性测试组合。

【技术实现步骤摘要】
【国外来华专利技术】用于与硬件实例化兼容的GPU的压缩可见性状态
本公开涉及计算机设备和图形处理。
技术介绍
当前,在图形学中,在为计算机游戏渲染几何基元之前,会建立一个列表,该列表指示哪些网格实例和基元可见。如此,计算机游戏越来越多地对网格实例和基元进行预处理以确定它们的可见性,作为在执行常规图形处理单元(GPU)渲染管线之前的预处理。为此,计算机游戏必须写出网格实例数据和基元的每帧列表来进行处理。通常在中央处理单元(CPU)上完成每个实例数据的可见性测试和压缩。通常,GPU上的计算着色器可以确定基元是否可见,通常基元是三角形。每个GPU线程处理单个三角形,进行测试,以确保三角形正面面向观察者,不在屏幕外,不为零区域和/或没有被遮挡。如果三角形可见,则每个线程将写出三角形的三个顶点索引。它还递增了要渲染的三角形的总数目。该GPU的渲染管线需要32位或16位顶点索引。当不使用三角形预剔除时,由于压缩的存储方式,最常使用16位。但是,在剔除阶段,计算着色器通常无法仅写入16位存储器。因此,如果要使用16位索引,则实施方式会将输出索引缓冲器预先清零(其具有成本),然后对顶点索引的高16位或低16位进行原子或运算,这将与由不同的GPU线程写入的三角形索引共享32位字。该线程可以将其他两个顶点索引打包到单个32位写入中。因此,每个线程必须计算出第一个或最后一个顶点索引中哪个需要原子或,然后将这三个索引打包为正确的16位。由于这种复杂性和原子运算的使用,许多实施方式选择使用32位索引,但这增加了存储器成本和带宽要求。一旦剔除过程完成,GPU就可以进入传统渲染阶段。由于GPU的不确定性,不同的线程组在不同的时间处理不同的三角形。这导致原始三角形列表的重新排序,这可能不利地影响后续GPU渲染阶段期间的顶点高速缓存命中。因此,在本领域中存在改进可见性确定的需求。
技术实现思路
以下给出了本公开的一个或多个实施方式的简化概述,以提供对这种实施方式的基本理解。该概述不是所有预期实施方式的广泛概述,并且既不旨在标识所有实施方式的关键或重要元素,也不旨在描绘任何或所有实施方式的范围。其唯一目的是以简化的形式呈现本公开的一个或多个实施方式的一些概念,作为稍后呈现的更详细描述的序言。一个示例实施方式涉及一种计算机设备。该计算机设备可以包括用于存储数据和指令的存储器、与存储器通信的处理器、图形处理单元、与存储器、处理器和图形处理单元通信的操作系统。图形处理单元可以可操作用于:加载包括多个基元的基元可见性缓冲器,多个基元表示应用的场景中的至少一个实例,其中基元可见性缓冲器包括针对多个基元中的每个基元的可见性位,可见性位将针对多个基元中的每个基元的可见性状态描述为可见或不可见;基于可见性位,确定多个基元中的每个基元在场景中是否可见;当针对基元的可见性位指示基元可见时,渲染基元;以及当可见性位指示基元不可见时,跳过基元的渲染。另一个示例实现方式涉及一种用于在应用的场景中渲染可见基元的方法。该方法可以包括在计算机设备上执行的图形处理单元处,加载基元可见性缓冲器,基元可见性缓冲器包括多个基元,基元表示应用的场景中的至少一个实例,其中基元可见性缓冲器包括针对多个基元中的每个基元的可见性位,可见性位将针对多个基元中的每个基元的可见性状态描述为可见或不可见。该方法还可以包括基于可见性位来确定多个基元中的每个基元在场景中是否可见。该方法还可以包括当针对基元的可见性位指示基元可见时,渲染基元。该方法还可以包括当可见性位指示基元不可见时,跳过基元的渲染。另一个示例实施方式涉及计算机可读介质,其存储可由计算机设备执行的指令。该计算机可读介质可以包括用于使计算机设备加载基元可见性缓冲器的至少一个指令,基元可见性缓冲器包括多个基元,基元表示应用的场景中至少一个实例,其中基元可见性缓冲器包括针对多个基元中的每个基元的可见性位,可见性位将针对多个基元中的每个基元的可见性状态描述为可见或不可见。该计算机可读介质可以包括用于使计算机设备基于可见性位确定多个基元中的每个基元在场景中是否可见的至少一个指令。该计算机可读介质可以包括用于使计算机设备在针对基元的可见性位指示基元可见时渲染基元的至少一个指令。该计算机可读介质可以包括用于使计算机设备在可见性位指示基元不可见时跳过基元的渲染的至少一个指令。与本公开的实施方式有关的附加优点和新颖特征将在下面的描述中被部分地阐述,并且在对以下内容进行检查或通过实践学习后,对于本领域技术人员而言将部分地变得更加明显。附图说明在图中:图1是根据本公开的一个实施方式的示例计算机设备的示意框图;图2是根据本公开的一个实施方式的实例可见性缓冲器的示例;图3是根据本公开的一个实施方式的基元可见性缓冲器的示例;图4是用于预先确定应用的场景中的基元的可见性状态的示例方法流程;图5是用于渲染应用的场景中的可见基元的示例方法流程;以及图6是根据本公开的一个实施方式的示例设备的示意性框图。具体实施方式本公开涉及用于确定实例和/或基元在基于图形的应用(诸如但不限于游戏)的场景和/或图像中的可见性状态的设备和方法。计算机游戏越来越多地预处理三角形,以通过写出每帧三角形列表进行处理,确定三角形的可见性,作为执行常规图形处理单元(GPU)渲染管线之前的预处理。由于网格的每一个实例具有唯一的可见三角形集,因此现有的三角形预剔除解决方案不能用于硬件实例化。游戏必须根据实例发出绘制调用要求,其中一些实例可能只具有很少的三角形或没有三角形。如此,采用三角形预剔除的游戏可能终止于GPU和/或中央处理单元(CPU)上的绘制调用限制。备选地,采用三角形预剔除的游戏可以写出每个顶点的变换位置以为所有实例创建单个大的绘制调用,这需要大量的带宽和存储器来进行临时存储。此外,在GPU渲染管线中,两个不同实例引用的相同顶点不被共享。因此,进一步增加了带宽需求。代替写出新的三角形列表,本文描述的设备和方法可以生成描述每个实例的可见性状态的实例可见性缓冲器。另外,设备和方法可以生成描述组成实例的基元的可见性状态的基元可见性缓冲器。基元可以包括但不限于三角形、四边形、多边形、线、点、曲面或镶嵌方案中的块、和/或边界体,它们又可以包括另外的基元。设备和方法可以用于任何拓扑形状(例如,个体三角形、三角形条和三角形扇)。另外,设备和方法可以维持基元提交的排序,使得基元顺序对于顶点高速缓存命中保持最佳。设备和方法可以对每个实例的每个基元记录单个位,该位可以用于确定是否渲染基元。之前的解决方案对每个三角形记录了三个索引,因此,通常使用6个字节或12个字节来指示三角形可见还是不可见。因此,通过对每个实例每个基元记录单个位,设备和方法可以用于硬件实例化、节省存储器和/或带宽,并且对于基元剔除处理工作可以明显更有效率。设备和方法还可以对每个实例记录单个位,该单个位指示是否渲染该实例。对每个实例记录单个位可以消除每个实例数据的每帧压缩,诸如变换,当前几乎所有游戏都在CPU上进本文档来自技高网
...

【技术保护点】
1.一种计算机设备,包括:/n存储器,用于存储数据和指令;/n处理器,与所述存储器通信;/n图形处理单元;/n操作系统,与所述存储器、所述处理器和所述图形处理单元通信,其中所述图形处理单元可操作用于:/n加载包括多个基元的基元可见性缓冲器,所述多个基元表示应用的场景中的至少一个实例,其中所述基元可见性缓冲器包括针对所述多个基元中的每个基元的可见性位,所述可见性位将针对所述多个基元中的每个基元的可见性状态描述为可见或不可见;/n基于所述可见性位,确定所述多个基元中的每个基元在所述场景中是否可见;/n当针对基元的所述可见性位指示所述基元可见时,渲染所述基元;以及/n当针对所述基元的所述可见性位指示所述基元不可见时,跳过所述基元的所述渲染。/n

【技术特征摘要】
【国外来华专利技术】20180419 US 15/957,4711.一种计算机设备,包括:
存储器,用于存储数据和指令;
处理器,与所述存储器通信;
图形处理单元;
操作系统,与所述存储器、所述处理器和所述图形处理单元通信,其中所述图形处理单元可操作用于:
加载包括多个基元的基元可见性缓冲器,所述多个基元表示应用的场景中的至少一个实例,其中所述基元可见性缓冲器包括针对所述多个基元中的每个基元的可见性位,所述可见性位将针对所述多个基元中的每个基元的可见性状态描述为可见或不可见;
基于所述可见性位,确定所述多个基元中的每个基元在所述场景中是否可见;
当针对基元的所述可见性位指示所述基元可见时,渲染所述基元;以及
当针对所述基元的所述可见性位指示所述基元不可见时,跳过所述基元的所述渲染。


2.根据权利要求1所述的计算机设备,其中在所述图形处理单元渲染所述多个基元的所述应用的运行时之前,通过对所述多个基元执行一个或多个剔除操作,以确定所述多个基元的预先计算的可见性状态,针对所述多个基元中的每个基元的所述可见性位被确定。


3.根据权利要求1所述的计算机设备,其中在所述应用的运行时,通过至少基于当前的相机位置,对所述多个基元执行一个或多个剔除操作,针对所述多个基元中的每个基元的所述可见性状态被确定。


4.根据权利要求1所述的计算机设备,其中所述图形处理单元还可操作用于:
加载实例可见性缓冲器,所述实例可见性缓冲器包括所述场景中的多个实例,其中所述实例可见性缓冲器包括针对所述多个实例中的每个实例的实例可见性位,所述实例可见性位描述针对所述多个实例中的每个实例的所述可见性状态;
使用所述实例可见性位,确定所述多个实例中的每个实例在所述场景中是否可见;
读取针对所述多个实例中的每个如下实例的所述基元的所述位,该实例的所述实例可见性位指示为可见;
跳过所述多个实例中的每个如下实例的所述基元的处理,该实例的所述实例可见性位指示为不可见;以及
跳过所述多个实例中的每个如下实例的进一步处理,该实例的所述实例可见性位指示为不可见。


5.根据权利要求4所述的计算机设备,其中通过对所述多个实例执行一个或多个剔除操作,以确定所述多个实例的所述可见性状态,针对所述多个实例中的每个实例的所述实例可见性位被确定。


6.根据权利要求4所述的计算机设备,其中针对所述多个实例中的每个实例的所述实例可见性位至少基于所述多个实例中的每个实例的预先计算的可见性被确定。


7.根据权利要求1所述的计算机设备,其中所述图形处理单元还可操作用于:
传送所渲染的所述基元以在显示器上呈现。


8.一种用于在应用的场景中渲染可见基元的方法,包括:
在所述计算机设备上执行的图形处理单元处,加载基元可见性缓冲器,所述基元可见性缓冲器包括多个基元...

【专利技术属性】
技术研发人员:J·D·怀特M·J·I·福勒
申请(专利权)人:微软技术许可有限责任公司
类型:发明
国别省市:美国;US

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

1