技术新讯 > 休闲运动,玩具,娱乐用品的装置及其制品制造技术 > 几何处理方法和装置与流程  >  正文

几何处理方法和装置与流程

  • 国知局
  • 2024-07-11 16:06:09

本技术实施例涉及画面处理领域,具体涉及一种几何处理方法和装置。

背景技术:

1、有了绘图系统持续增强的算力做支持,游戏可以追求更好的画面精致度和体验感。然而越来越精细的模型也导致了场景中几何数量的持续增加。通常几何数量和绘图效率成反比,因此,为了减少巨量几何对图形处理器(graphic processing unit,gpu)绘图效率的影响,gpu几何管线需要提早剔除掉场景中大量的不可视几何,避免gpu处理不可视几何对性能造成的影响和功耗的浪费。

2、现有的几何管线需要两个阶段,第一个阶段为剔除工作,第二个阶段为渲染工作,且后续的渲染工作需要等待剔除工作完成后才能执行,效率较低,会造成带宽和功耗的浪费。

3、因此,如何构建一种高效率、低功耗的几何处理方法是一个亟待解决的问题。

技术实现思路

1、本技术实施例提供一种几何处理方法和装置,能够将场景中几何数据的剔除工作和渲染工作并行进行,提高了几何数据的处理效率,降低了处理功耗。

2、第一方面,提供了一种几何处理方法,该方法包括:获取第一工作组输出的第一负载数组,所述第一工作组包括n个线程,所述第一负载数组包括k个可视丛集,所述可视丛集包括从预设视角能够被观测到的几何模型中的一个三角形或者多个相邻的三角形,n和k为正整数;在第一时刻对所述第一负载数组中的所述k个可视丛集进行渲染,所述第一时刻不早于所述第一工作组输出所述第一负载数组的时刻,并且,所述第一时刻位于第二工作组输出第二负载数组的时刻之前,所述第二工作组包括n个线程,所述第二负载数组包括p个可视丛集,p为正整数。

3、本技术实施例提供一种几何处理方法,能够将场景中几何数据的剔除工作和渲染工作并行进行,提高了几何数据的处理效率,降低了处理功耗。

4、应理解,第一负载数组是第一工作组对第一丛集组中的不可视丛集进行剔除后得到的结果。第一丛集组可以看作是一个场景的部分,一个场景包括一个或者多个几何模型,一个几何模型由一个或者多个丛集(cluster)构成,丛集包括几何模型中的一个三角形或者多个相邻的三角形,丛集包括的三角形即为几何数据。应理解,丛集包括可视丛集和不可视丛集两种类型,可视丛集包括从预设视角能够被观测到的丛集,不可视丛集包括从预设视角无法被观测到的丛集。

5、第一工作组包括n个线程,第一丛集组包括y个丛集,n个线程中每一个线程负责第一丛集组中一个或者多个丛集的剔除,即一个工作组进行的是部分场景的剔除工作。整个场景的剔除需要多个工作组,y为大于等于n的正整数。

6、剔除是一种通过避免渲染不可视几何来提高性能的优化措施,即用于去除丛集中的不可视丛集。本技术实施例进行的剔除可以是视锥剔除、背面剔除或者遮挡剔除中的任意一种或者多种,应理解,本技术不限定具体的剔除方式,在本技术方法的基础上使用其他的剔除方式也在本技术的保护范围之内。

7、一个工作组中的一个线程可以对一个或者多个丛集进行剔除。示例性地,当一个线程对一个丛集进行剔除时,若该丛集为不可视丛集,则该线程没有输出;若该丛集为可视丛集,则该线程会输出该可视丛集对应的描述。当一个线程对多个丛集进行剔除时,若该多个丛集全部为不可视丛集,则该线程没有输出;若该多个丛集中部分或者全部为可视丛集,则该线程会输出该部分或者全部可视丛集对应的描述。示例性地,可以用一个结构体来表示该可视丛集,该结构体也可以称为负载,负载可以包括该丛集的顶点信息。后续的渲染工作中的硬件模块,例如顶点着色器可以使用该结构体内的信息,取得该丛集的几何数据,例如顶点的三维(3dimensions,3d)坐标位置信息,3d法向量(3d normal vector)信息。

8、示例性地,输入组排器(input assembler,ia)可以从内存中读取该第一负载数组并发送给任务产生器(task creator,tc),tc建构顶点着色器的线程组并将第一负载数组传入线程组。顶点着色器的线程组可以根据第一负载数组,取得对应丛集的几何数据,例如顶点的3d坐标位置信息,3d法向量信息进行后续的渲染工作。

9、本技术实施例中,每一个工作组进行完剔除工作,即可对该工作组输出的负载数组进行后续的渲染工作,而无需等待其他的工作组完成对应丛集组的剔除工作。即本技术实施例提供的方法可以同时进行几何数据的剔除和渲染工作。

10、结合第一方面,在第一方面的某些实现方式中,所述方法还包括:所述获取第一工作组输出的第一负载数组,包括:获取所述第一负载数组包括的所述可视丛集的数量和所述第一负载数组在内存的起始地址;根据所述可视丛集的数量和所述起始地址,从所述内存中读取所述第一负载数组。

11、应理解,一个工作组中的一个线程对一个或者多个丛集进行剔除,若其中一个丛集为不可视丛集,则该丛集没有对应的输出。因此,第一负载数组包括的负载数量小于等于第一丛集组中丛集的数量。示例性地,若第一工作组包括32个线程,第一丛集组包括32个丛集,则第一负载数组包括的负载数量小于等于32。应理解,一个工作组可能会输出对应的负载数组,也可能不会输出负载数组。不同工作组输出的负载数组包括的负载数量可能相同也可能不同。

12、示例性地,第一工作组与第一丛集组对应,当第一工作组中的线程结束运行后,可以将输出的第一负载数组存入到内存,并将第一负载数组包括的负载数量和第一负载数组在内存的起始地址放入到高速缓冲存储区(cache)的二级缓存(l2 buffer),然后通知分仓任务构造器(binning task constructor,btc)线程组已经运行结束。btc中的丛集任务构造器(cluster task constructor,ctc)接收到工作组线程运行完成的通知后,会将该负载数量和起始地址从l2缓存读取出来发送给ia。ia根据该负载数量和起始地址,从内存中读取负载数组。

13、本技术实施例提供一种几何处理方法,在一个工作组的n个线程运行完毕后即可对这一个工作组对应的丛集组的可视丛集进行渲染,无需等待整个场景剔除完毕,从而能够将几何数据的剔除工作和渲染工作并行进行,提高了几何数据的处理效率,降低了处理功耗。

14、结合第一方面,在第一方面的某些实现方式中,所述内存为片上内存。

15、本技术可以将第一负载数组存储到片上内存,通过片上内存中存储的第一负载数组对第一丛集组中的可视丛集进行渲染,不需要存取系统内存,从而可以降低处理功耗,提升处理性能。

16、可选的,若是第一负载数组超过片上内存可支持的容量,也可以将第一负载数组储存在系统内存中,本技术对此不作限定。

17、结合第一方面,在第一方面的某些实现方式中,在所述获取所述第一负载数组包括的所述可视丛集的数量和所述第一负载数组在内存的起始地址之前,所述方法还包括:将所述第一负载数组存储至所述内存。

18、示例性地,第一工作组中的线程结束运行后,会将输出的第一负载数组存入到内存,可选的,可以每次将第一负载数组中的一个负载放入内存,也可以同时将第一负载数组中的k个负载放入内存。

19、本技术实施例提供一种几何处理方法,在一个工作组的n个线程运行完毕后即可对这一个工作组对应的丛集组的可视丛集进行渲染,无需等待整个场景剔除完毕,从而能够将几何数据的剔除工作和渲染工作并行进行,提高了几何数据的处理效率,降低了处理功耗。

20、结合第一方面,在第一方面的某些实现方式中,所述将所述第一负载数组存储至所述内存,包括:根据派遣命令将所述第一负载数组存储至所述内存,所述派遣命令用于将所述第一负载数组中的所述k个可视丛集同时存储至所述内存。

21、所述派遣命令可以通过用内置函数(built-in function)实现。示例性地,该派遣命令可以通过内置函数dispatchcluster(gl_clustercount,gl_percluster[])实现,其中,gl_clustercount指定了第一负载数组包括的负载数量,gl_percluster[]为该第一负载数组。该派遣命令可以将第一负载数组中的k个负载同时存储至内存。

22、可选的,应用也可以根据需求为该内置函数dispatchcluster()配置参数,具体的参数和参数数量不应理解为对本技术的限制。应理解,当不为派遣命令dispatchcluster()设置参数时,本技术提供的方法可以每次将第一负载数组中的一个负载放入内存。

23、本技术实施例提供一种几何处理方法,通过派遣命令以工作组为粒度将负载数组存储至内存,当工作组结束运行后,再以工作组为单位驱动ia抓取负载数组,进而提高负载数组的处理效率。

24、本技术实施例提供的方法更有效地将工作组输出的第一负载数组桥接到分块延迟渲染(tile based deferred rendering,tbdr)或者分块渲染(tile based rendering,tbr)架构中gpu的现有管线,提高了gpu处理几何数据的效率,降低了处理能耗。

25、结合第一方面,在第一方面的某些实现方式中,在所述获取第一工作组输出的第一负载数组之前,所述方法还包括:接收指示信息,所述指示信息用于指示所述第一工作组中的所述n个线程执行完毕。

26、示例性地,第一工作组中的线程结束运行后,会将输出的第一负载数组存入到内存,并将第一负载数组包括的负载数量和负载数组在内存的起始地址放入到高速缓冲存储区(cache)的二级缓存(l2 buffer),然后通知btc线程组已经运行结束。btc中的丛集任务构造器(cluster task constructor,ctc)接收到工作组线程运行完成的通知后,会将该负载数量和起始地址从l2缓存读取出来发送给ia。ia根据该负载数量和起始地址,从内存中读取第一负载数组,然后进行后续的渲染工作。

27、第二方面,本技术实施例提供一种计算机装置,该计算机装置包括用于实现第一方面或第一方面的任一种可能的实现方式的单元。

28、第三方面,本技术实施例提供一种计算机装置,该计算机装置包括处理器,该处理器用于与存储器耦合,读取并执行该存储器中的指令和/或程序代码,以执行第一方面或第一方面的任一种可能的实现方式。

29、第四方面,本技术实施例提供一种芯片系统,该芯片系统包括逻辑电路,该逻辑电路用于与输入/输出接口耦合,通过该输入/输出接口传输数据,以执行第一方面或第一方面任一种可能的实现方式。

30、第五方面,本技术实施例提供一种计算机可读存储介质,该计算机可读存储介质存储有程序代码,当该计算机存储介质在计算机上运行时,使得计算机执行如第一方面或第一方面的任一种可能的实现方式。

31、第六方面,本技术实施例提供一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在计算机上运行时,使得该计算机执行如第一方面或第一方面的任一种可能的实现方式。

本文地址:https://www.jishuxx.com/zhuanli/20240615/77475.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。