CN117815653A - 几何处理方法和装置 - Google Patents

几何处理方法和装置 Download PDF

Info

Publication number
CN117815653A
CN117815653A CN202211198408.5A CN202211198408A CN117815653A CN 117815653 A CN117815653 A CN 117815653A CN 202211198408 A CN202211198408 A CN 202211198408A CN 117815653 A CN117815653 A CN 117815653A
Authority
CN
China
Prior art keywords
load array
memory
clusters
load
array
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.)
Pending
Application number
CN202211198408.5A
Other languages
English (en)
Inventor
王豫章
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202211198408.5A priority Critical patent/CN117815653A/zh
Publication of CN117815653A publication Critical patent/CN117815653A/zh
Pending legal-status Critical Current

Links

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/52Controlling the output signals based on the game progress involving aspects of the displayed game scene

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Image Generation (AREA)

Abstract

本申请实施例提供了一种几何处理方法,其中,该方法包括:获取第一工作组输出的第一负载数组,所述第一工作组包括N个线程,所述第一负载数组包括K个可视丛集,所述可视丛集包括从预设视角能够被观测到的几何模型中的一个三角形或者多个相邻的三角形;在第一时刻对所述第一负载数组中的所述K个可视丛集进行渲染,所述第一时刻不早于所述第一工作组输出所述第一负载数组的时刻,并且,所述第一时刻位于第二工作组输出第二负载数组的时刻之前,所述第二工作组包括N个线程,所述第二负载数组包括P个可视丛集。本申请技术方案能够将场景中几何数据的剔除工作和渲染工作并行进行,提高了几何数据的处理效率,降低了处理功耗。

Description

几何处理方法和装置
技术领域
本申请实施例涉及画面处理领域,具体涉及一种几何处理方法和装置。
背景技术
有了绘图系统持续增强的算力做支持,游戏可以追求更好的画面精致度和体验感。然而越来越精细的模型也导致了场景中几何数量的持续增加。通常几何数量和绘图效率成反比,因此,为了减少巨量几何对图形处理器(graphic processing unit,GPU)绘图效率的影响,GPU几何管线需要提早剔除掉场景中大量的不可视几何,避免GPU处理不可视几何对性能造成的影响和功耗的浪费。
现有的几何管线需要两个阶段,第一个阶段为剔除工作,第二个阶段为渲染工作,且后续的渲染工作需要等待剔除工作完成后才能执行,效率较低,会造成带宽和功耗的浪费。
因此,如何构建一种高效率、低功耗的几何处理方法是一个亟待解决的问题。
发明内容
本申请实施例提供一种几何处理方法和装置,能够将场景中几何数据的剔除工作和渲染工作并行进行,提高了几何数据的处理效率,降低了处理功耗。
第一方面,提供了一种几何处理方法,该方法包括:获取第一工作组输出的第一负载数组,所述第一工作组包括N个线程,所述第一负载数组包括K个可视丛集,所述可视丛集包括从预设视角能够被观测到的几何模型中的一个三角形或者多个相邻的三角形,N和K为正整数;在第一时刻对所述第一负载数组中的所述K个可视丛集进行渲染,所述第一时刻不早于所述第一工作组输出所述第一负载数组的时刻,并且,所述第一时刻位于第二工作组输出第二负载数组的时刻之前,所述第二工作组包括N个线程,所述第二负载数组包括P个可视丛集,P为正整数。
本申请实施例提供一种几何处理方法,能够将场景中几何数据的剔除工作和渲染工作并行进行,提高了几何数据的处理效率,降低了处理功耗。
应理解,第一负载数组是第一工作组对第一丛集组中的不可视丛集进行剔除后得到的结果。第一丛集组可以看作是一个场景的部分,一个场景包括一个或者多个几何模型,一个几何模型由一个或者多个丛集(cluster)构成,丛集包括几何模型中的一个三角形或者多个相邻的三角形,丛集包括的三角形即为几何数据。应理解,丛集包括可视丛集和不可视丛集两种类型,可视丛集包括从预设视角能够被观测到的丛集,不可视丛集包括从预设视角无法被观测到的丛集。
第一工作组包括N个线程,第一丛集组包括Y个丛集,N个线程中每一个线程负责第一丛集组中一个或者多个丛集的剔除,即一个工作组进行的是部分场景的剔除工作。整个场景的剔除需要多个工作组,Y为大于等于N的正整数。
剔除是一种通过避免渲染不可视几何来提高性能的优化措施,即用于去除丛集中的不可视丛集。本申请实施例进行的剔除可以是视锥剔除、背面剔除或者遮挡剔除中的任意一种或者多种,应理解,本申请不限定具体的剔除方式,在本申请方法的基础上使用其他的剔除方式也在本申请的保护范围之内。
一个工作组中的一个线程可以对一个或者多个丛集进行剔除。示例性地,当一个线程对一个丛集进行剔除时,若该丛集为不可视丛集,则该线程没有输出;若该丛集为可视丛集,则该线程会输出该可视丛集对应的描述。当一个线程对多个丛集进行剔除时,若该多个丛集全部为不可视丛集,则该线程没有输出;若该多个丛集中部分或者全部为可视丛集,则该线程会输出该部分或者全部可视丛集对应的描述。示例性地,可以用一个结构体来表示该可视丛集,该结构体也可以称为负载,负载可以包括该丛集的顶点信息。后续的渲染工作中的硬件模块,例如顶点着色器可以使用该结构体内的信息,取得该丛集的几何数据,例如顶点的三维(3Dimensions,3D)坐标位置信息,3D法向量(3D normal vector)信息。
示例性地,输入组排器(input assembler,IA)可以从内存中读取该第一负载数组并发送给任务产生器(task creator,TC),TC建构顶点着色器的线程组并将第一负载数组传入线程组。顶点着色器的线程组可以根据第一负载数组,取得对应丛集的几何数据,例如顶点的3D坐标位置信息,3D法向量信息进行后续的渲染工作。
本申请实施例中,每一个工作组进行完剔除工作,即可对该工作组输出的负载数组进行后续的渲染工作,而无需等待其他的工作组完成对应丛集组的剔除工作。即本申请实施例提供的方法可以同时进行几何数据的剔除和渲染工作。
结合第一方面,在第一方面的某些实现方式中,所述方法还包括:所述获取第一工作组输出的第一负载数组,包括:获取所述第一负载数组包括的所述可视丛集的数量和所述第一负载数组在内存的起始地址;根据所述可视丛集的数量和所述起始地址,从所述内存中读取所述第一负载数组。
应理解,一个工作组中的一个线程对一个或者多个丛集进行剔除,若其中一个丛集为不可视丛集,则该丛集没有对应的输出。因此,第一负载数组包括的负载数量小于等于第一丛集组中丛集的数量。示例性地,若第一工作组包括32个线程,第一丛集组包括32个丛集,则第一负载数组包括的负载数量小于等于32。应理解,一个工作组可能会输出对应的负载数组,也可能不会输出负载数组。不同工作组输出的负载数组包括的负载数量可能相同也可能不同。
示例性地,第一工作组与第一丛集组对应,当第一工作组中的线程结束运行后,可以将输出的第一负载数组存入到内存,并将第一负载数组包括的负载数量和第一负载数组在内存的起始地址放入到高速缓冲存储区(cache)的二级缓存(L2 buffer),然后通知分仓任务构造器(binning task constructor,BTC)线程组已经运行结束。BTC中的丛集任务构造器(cluster task constructor,CTC)接收到工作组线程运行完成的通知后,会将该负载数量和起始地址从L2缓存读取出来发送给IA。IA根据该负载数量和起始地址,从内存中读取负载数组。
本申请实施例提供一种几何处理方法,在一个工作组的N个线程运行完毕后即可对这一个工作组对应的丛集组的可视丛集进行渲染,无需等待整个场景剔除完毕,从而能够将几何数据的剔除工作和渲染工作并行进行,提高了几何数据的处理效率,降低了处理功耗。
结合第一方面,在第一方面的某些实现方式中,所述内存为片上内存。
本申请可以将第一负载数组存储到片上内存,通过片上内存中存储的第一负载数组对第一丛集组中的可视丛集进行渲染,不需要存取系统内存,从而可以降低处理功耗,提升处理性能。
可选的,若是第一负载数组超过片上内存可支持的容量,也可以将第一负载数组储存在系统内存中,本申请对此不作限定。
结合第一方面,在第一方面的某些实现方式中,在所述获取所述第一负载数组包括的所述可视丛集的数量和所述第一负载数组在内存的起始地址之前,所述方法还包括:将所述第一负载数组存储至所述内存。
示例性地,第一工作组中的线程结束运行后,会将输出的第一负载数组存入到内存,可选的,可以每次将第一负载数组中的一个负载放入内存,也可以同时将第一负载数组中的K个负载放入内存。
本申请实施例提供一种几何处理方法,在一个工作组的N个线程运行完毕后即可对这一个工作组对应的丛集组的可视丛集进行渲染,无需等待整个场景剔除完毕,从而能够将几何数据的剔除工作和渲染工作并行进行,提高了几何数据的处理效率,降低了处理功耗。
结合第一方面,在第一方面的某些实现方式中,所述将所述第一负载数组存储至所述内存,包括:根据派遣命令将所述第一负载数组存储至所述内存,所述派遣命令用于将所述第一负载数组中的所述K个可视丛集同时存储至所述内存。
所述派遣命令可以通过用内置函数(built-in function)实现。示例性地,该派遣命令可以通过内置函数DispatchCluster(gl_ClusterCount,gl_PerCluster[])实现,其中,gl_ClusterCount指定了第一负载数组包括的负载数量,gl_PerCluster[]为该第一负载数组。该派遣命令可以将第一负载数组中的K个负载同时存储至内存。
可选的,应用也可以根据需求为该内置函数DispatchCluster()配置参数,具体的参数和参数数量不应理解为对本申请的限制。应理解,当不为派遣命令DispatchCluster()设置参数时,本申请提供的方法可以每次将第一负载数组中的一个负载放入内存。
本申请实施例提供一种几何处理方法,通过派遣命令以工作组为粒度将负载数组存储至内存,当工作组结束运行后,再以工作组为单位驱动IA抓取负载数组,进而提高负载数组的处理效率。
本申请实施例提供的方法更有效地将工作组输出的第一负载数组桥接到分块延迟渲染(tile based deferred rendering,TBDR)或者分块渲染(tile based rendering,TBR)架构中GPU的现有管线,提高了GPU处理几何数据的效率,降低了处理能耗。
结合第一方面,在第一方面的某些实现方式中,在所述获取第一工作组输出的第一负载数组之前,所述方法还包括:接收指示信息,所述指示信息用于指示所述第一工作组中的所述N个线程执行完毕。
示例性地,第一工作组中的线程结束运行后,会将输出的第一负载数组存入到内存,并将第一负载数组包括的负载数量和负载数组在内存的起始地址放入到高速缓冲存储区(cache)的二级缓存(L2 buffer),然后通知BTC线程组已经运行结束。BTC中的丛集任务构造器(cluster task constructor,CTC)接收到工作组线程运行完成的通知后,会将该负载数量和起始地址从L2缓存读取出来发送给IA。IA根据该负载数量和起始地址,从内存中读取第一负载数组,然后进行后续的渲染工作。
第二方面,本申请实施例提供一种计算机装置,该计算机装置包括用于实现第一方面或第一方面的任一种可能的实现方式的单元。
第三方面,本申请实施例提供一种计算机装置,该计算机装置包括处理器,该处理器用于与存储器耦合,读取并执行该存储器中的指令和/或程序代码,以执行第一方面或第一方面的任一种可能的实现方式。
第四方面,本申请实施例提供一种芯片系统,该芯片系统包括逻辑电路,该逻辑电路用于与输入/输出接口耦合,通过该输入/输出接口传输数据,以执行第一方面或第一方面任一种可能的实现方式。
第五方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质存储有程序代码,当该计算机存储介质在计算机上运行时,使得计算机执行如第一方面或第一方面的任一种可能的实现方式。
第六方面,本申请实施例提供一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在计算机上运行时,使得该计算机执行如第一方面或第一方面的任一种可能的实现方式。
附图说明
图1是本申请实施例提供的一种几何丛集的示意图。
图2是现有技术提供的一种几何管线。
图3是本申请实施例提供的一种几何处理方法的示例性流程图。
图4是本申请实施例提供的一种几何处理方法的示意图。
图5是本申请实施例提供的一种几何处理方法的示例性流程图。
图6是本申请实施例提供的另一种几何处理方法的示意图。
图7是本申请实施例提供的另一种几何处理方法的示意图。
图8是本申请实施例提供的一种负载结构体的示意图。
图9是本申请实施例提供的一种顶点着色器内部处理的示意图。
图10是本申请实施例提供的一种计算机装置的结构示例图。
图11是本申请实施例提供的另一种计算机装置的结构示例图。
图12是本申请实施例提供的一种计算机程序产品的示例图。
具体实施方式
图形渲染管线被认为是实时图形渲染的核心,简称为管线。管线的主要功能是由给定的虚拟摄像机、三维物体、灯源、光照模型、纹理贴图或其他来产生或渲染一个二维图像。我们电脑显示器是二维的,GPU所需要做的,就是把三维顶点数据经过转换绘制到二维屏幕上,并让二维画面看起来有3D效果。
随着游戏中场景精致度和真实感的持续提升,构建一个大型且复杂的场景会使用庞大数量的几何模型。对于实时交互的图形应用程序而言,图形渲染速度和效率是非常重要的。渲染的时候应该尽量减少不必要的操作。剔除是一种通过避免渲染不可视几何来提高性能的优化措施。
为便于理解本申请实施例,首先对本申请中涉及的一些定义做简单说明。
1.剔除:指的是在某一个处理步骤中去掉在显示时无贡献或贡献甚微的多边形,其目是减少渲染数据传输成本和渲染管线执行的GPU计算成本。
2.视锥剔除(frustum culling):判断对象是否在相机视锥体内(相交也算),在则不剔除,不在则剔除。
3.背面剔除(back-face culling):每个多边形都有两个侧面,将其中一个标记为正面,另一个侧面标记为背面,通常,多边形的背面是不可见的,通过背面剔除操作可以不对物体的背面进行渲染,减少需要绘制的顶点个数。
4.遮挡剔除(occlusion culling):当一个物体被其他物体遮挡住使得物体对虚拟摄像机而言不可见时不对其进行渲染。
5.包围球(bounding sphere):将物体组合完全包容起来的一个封闭空间。将复杂物体封装在简单的包围体中,就可以提高几何运算的效率。
6.法线锥(normal cone):包围一个丛集所有法线的锥体。
7.光栅化(rasterization):是把顶点数据转换为片元的过程,具有将图转化为一个个栅格组成的图像的作用,特点是每个元素对应帧缓冲区中的一像素。
8.图元(primitive):代表场景中的几何体。
图1是本申请实施例提供的一种几何丛集的示意图。
模型渲染指的是利用三维软件在二维平面上建立三维模型,模型创建完成后,需要对它进行材质贴图,灯光布置,利用软件将这些与模型贴合、融合在一起,让三维模型呈现如实物般的图像,这整个过程就是模型渲染。几何包括点、线、面、体等元素,三角形是最简单的表达平面的图形,三个点即可决定一个平面,所以常常用三角形来表示一个面并且构建一个几何模型。如图1所示,一个模型可以由一个或者多个三角形几何组成,模型中的一个三角形或者多个相邻三角形可以构成丛集。丛集的包围球和法线锥可以用于进行剔除操作。
图2是现有技术提供的一种几何管线。
图2所示的几何管线需要两个阶段,第一阶段中,中央处理器(centralprocessing unit,CPU)向GPU的命令队列写入派遣命令,GPU根据派遣命令使用计算着色器(compute shader)对场景中的几何资料进行丛集剔除(cluster culling)。然后,GPU会将丛集剔除的处理结果与绘制命令(drawing command)写到系统内存,至此第一阶段结束,流程回到CPU。第二个阶段CPU使用绘制调用命令让GPU根据前一个阶段产生的绘制命令进行渲染,渲染的过程包括顶点处理(vertex processing)、分仓(binning)、光栅化(rasterization)和片段处理(fragment processing)四个步骤。
这种方法中,计算着色器无法直接派遣几何资料到后级的渲染管线,并且绘制过程涉及CPU和GPU的交互,第二阶段要等第一阶段完成后才能开始,也就是说,渲染过程需要整个场景完成剔除后才能开始。两个阶段无法流水线(pipeline)运行,而且两个阶段之间的沟通需要通过系统内存,会浪费更多的带宽和功耗。
下面将结合附图,对本申请实施例中的技术方案进行描述。显然,所描述的实施例是本申请的一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本申请保护的范围。
本申请提供的方法可应用在任何使用GPU的绘图系统中,包括但不限于有GPU的移动设备上的绘图系统,且绘制场景不限于游戏场景。场景越大型、越复杂,对应的收益越好。
图3是本申请实施例提供的一种几何处理方法的示例性流程图。
310,获取第一工作组输出的第一负载数组。
第一工作组包括N个线程,第一负载数组包括K个可视丛集,可视丛集为从预设视角能够被观测到的几何模型中的一个三角形或者多个相邻的三角形,N和K为正整数。
应理解,第一负载数组是第一工作组对第一丛集组中的不可视丛集进行剔除后得到的结果。第一丛集组包括Y个丛集,丛集包括几何模型中的一个三角形或者多个相邻的三角形,不可视丛集指的是从预设视角无法被观测到的丛集,可视丛集指的是从预设视角能够观测到的丛集。
剔除是一种通过避免渲染不可视几何来提高性能的优化措施,即用于去除丛集中的不可视丛集。本申请实施例进行的剔除可以是视锥剔除、背面剔除或者遮挡剔除中的任意一种或者多种,应理解,本申请不限定具体的剔除方式,在本申请方法的基础上使用其他的剔除方式也在本申请的保护范围之内。
一个工作组中的一个线程可以对一个或者多个丛集进行剔除。示例性地,当一个线程对一个丛集进行剔除时,若该丛集为不可视丛集,则该线程没有输出;若该丛集为可视丛集,则该线程会输出该可视丛集对应的描述。当一个线程对多个丛集进行剔除时,若该多个丛集全部为不可视丛集,则该线程没有输出;若该多个丛集中部分或者全部为可视丛集,则该线程会输出该部分或者全部可视丛集对应的描述。示例性地,可以用一个结构体来表示该可视丛集,该结构体也可以称为负载,负载可以包括该丛集的顶点信息。后续的渲染工作中的硬件模块,例如顶点着色器可以使用该结构体内的信息,取得该丛集的几何数据,例如顶点的三维(3Dimensions,3D)坐标位置信息,3D法向量(3D normal vector)信息。
320,在第二工作组输出第二负载数组的时刻之前,对第一负载数组中的可视丛集进行渲染。
在第一时刻对所述第一负载数组中的所述K个可视丛集进行渲染,第一时刻不早于所述第一工作组输出所述第一负载数组的时刻,并且,第一时刻位于第二工作组输出第二负载数组的时刻之前,第二工作组包括N个线程,第二负载数组包括P个可视丛集,P为正整数。
示例性地,输入组排器(input assembler,IA)可以从内存中读取该第一负载数组并发送给任务产生器(task creator,TC),TC建构顶点着色器的线程组并将第一负载数组传入线程组。顶点着色器的线程组可以根据第一负载数组,取得对应丛集的几何数据,例如顶点的3D坐标位置信息,3D法向量信息进行后续的渲染工作。
本申请实施例中,每一个工作组进行完剔除工作,即可对该工作组输出的负载数组进行后续的渲染工作,而无需等待其他的工作组完成对应丛集组的剔除工作。即本申请实施例提供的方法可以同时进行几何数据的剔除和渲染工作。
图4是本申请实施例提供的一种几何处理方法的示意图。
丛集剔除着色器(cluster culling shader,CCS)410可以从系统内存430读取几何丛集描述缓存(cluster descriptor buffer)431,以丛集为粒度将不可视丛集剔除。
系统内存430可以存储丛集描述缓存431、顶点数据433和图元列表(primitivelist)437,供丛集剔除着色器410和渲染管线440对几何数据进行处理。
片上内存(on-chip memory)420可以存储丛集描述缓存431输出的负载(payload)数组425。
渲染管线440包括输入组排器(input assembler,IA)441,顶点着色器443,剪裁和剔除(clip and culling)445,分仓(binning)447和光栅化449。
图5是本申请实施例提供的一种几何处理方法的示例性流程图。图5与图4对应。
510,以丛集为粒度进行几何剔除。
本申请实施例为GPU增加了一个丛集剔除着色器410,可以从系统内存430读取几何丛集描述缓存431,以丛集为粒度将不可视丛集剔除,让顶点着色器443减少无意义的几何处理。
GPU从内存中的命令队列(command queue)中读取并处理CCS命令(例如丛集剔除着色器派遣命令CMDDrawCluster),然后会根据命令的参数,在着色器核心(shader core)配置适当数量的CCS线程组(warp)以及线程(thread)用以运行剔除算法。
应理解,着色器核心是GPU中最为核心的部分,是执行着色器代码的器件。示例性地,一个线程组可以包含32个并行线程,这32个线程执行单指令多线程(single-instruction multiple-thread,SIMT)的程序,也就是说这32个线程执行同一条指令。
520,输出负载。
当CCS 410中的线程组完成剔除后,会将可视丛集信息填到负载数组425并且输出,硬件接下来会将负载数组425写进片上内存420。应理解,负载数组425中包括至少一个负载,负载可以是结构体的形式。
应理解,丛集包括可视丛集和不可视丛集两种类型,一个工作组中的一个线程可以对一个或者多个丛集进行剔除。示例性地,当一个线程对一个丛集进行剔除时,若该丛集为不可视丛集,则该线程没有输出;若该丛集为可视丛集,则该线程会输出该可视丛集对应的描述。当一个线程对多个丛集进行剔除时,若该多个丛集全部为不可视丛集,则该线程没有输出;若该多个丛集中部分或者全部为可视丛集,则该线程会输出该部分或者全部可视丛集对应的描述。示例性地,可以用一个结构体来表示该可视丛集,该结构体也可以称为负载,负载可以包括该丛集的顶点信息。
应理解,负载的内容可以是用户自定义的。结构体的大小则受限于内存大小,若是超过片上内存420可支持的容量,也可以将负载数组425储存在系统内存430中。
530,几何渲染。
CCS的线程组结束运行后,会将输出的负载数组425存入到片上内存420或者系统内存430,并将负载数组425中包括的负载数量和负载数组425在片上内存420或者系统内存430的起始地址放入到高速缓冲存储区(cache)的二级缓存(L2 buffer),然后通知分仓任务构造器(binning task constructor,BTC)线程组已经运行结束。BTC中的丛集任务构造器(cluster task constructor,CTC)接收到线程组运行完成的通知后,会将负载数组425中包括的负载数量和负载数组425在片上内存420或者系统内存430的起始地址从L2缓存读取出来发送给输入组排器441。
输入组排器441根据接收到的负载数量和起始地址,从片上内存420或者系统内存430中读取负载数组425并发送给任务产生器(task creator,TC),TC建构顶点着色器443的线程组并将负载数组425传入线程组。顶点着色器443的线程组会根据负载数组425中的丛集信息从系统内存430读取对应的顶点数据433进行着色,即顶点着色器443通过矩阵变换位置、计算照明公式来生成逐顶点颜色,生成或变换纹理坐标。剪裁和剔除445步骤会根据顶点原始的连接关系,还原出模型的网格结构。网格由顶点和索引组成,根据索引将顶点连接到一起,组成线、面单元。然后对超出视口外的三角形进行裁剪,对不可视的图元(primitive)进行剔除。接着对模型进行分仓447操作,并对分仓后的顶点数据435和图元列表437进行光栅化449。光栅化449是把顶点数据转换为片元的过程,能够将图转化为一个个栅格组成的图像,每个元素对应帧缓冲区中的一个像素,也就是说,光栅化是一种将几何图元变为二维图像的过程。
图6是本申请实施例提供的另一种几何处理方法的示意图。
图6从着色器核心运行的角度详细说明几何处理方法的流程以及工作组和线程的配置方式。一个丛集包括多个顶点,顶点是存储一系列基本绘图所需属性的基本元素,例如二维或三维空间中的点、或曲面上的多个点。在着色器中,与顶点相连的元素称为图元,图元内部应上色的区域称为片段。应理解,在一些应用场景中,丛集也被称为meshlet。
应理解,一个工作组可以包括至少一个线程组,每个线程组可以包括至少一个线程,每个线程可以处理一个或者多个丛集。本申请实施例假设一个丛集包括32个顶点,图6中整个场景总共有m_count个丛集,以一个工作组包括一个线程组,一个线程组包括32个线程为例,整个场景共m_count/32个工作组。应理解,一个实例(instance)包括多个丛集,实例为较大粒度的丛集。例如一个陨石的模型可以看作是一个实例,陨石模型中的部分几何可以看作是丛集。
GPU从命令队列中读取并处理CCS命令CMDDrawCluster。CMDDrawCluster命令用于组成一个全局工作组,该全局工作组由groupCountX、groupCountY和groupCountZ工作组组成。groupCountX代表X维度中要派遣的工作组的数量,groupCountY代表Y维度中要派遣的工作组的数量,groupCountZ代表Z维度中要派遣的工作组的数量。在本申请实施例中,groupCountX被设置为m_count/32,groupCountY和groupCountZ被设置为1。
以第0个工作组为例,第0个工作组包括线程0至线程31。应理解,线程0至线程31所处理的丛集可以属于同一个实例,也可以属于不同的实例,本申请对此不作限定。GPU从系统内存430的丛集描述符610和实例描述符620中读取包围锥和包围球之后,先对丛集所属的实例进行大粒度的视锥剔除,再对丛集分别进行小粒度的视锥剔除以及背面剔除。在剔除结束后,线程会以本地线程(local thread)ID作为索引,更新工作组的负载数组425。本申请实施例中的本地线程ID为0至31。gl_PerCluster[]代表一个负载数组,其中每个负载包括每个线程进行完剔除工作后对应的可视丛集信息,且每个负载包含的丛集信息会根据对应丛集的可视性进行更新。gl_ClusterCount指定了丛集剔除着色器410输出的丛集数量,即负载数组425包括的负载的数量。应理解,当丛集剔除着色器410以线程为粒度输出负载时,也可以不对gl_PerCluster[]和gl_ClusterCount进行更新。
第0个工作组中的线程通过派遣命令将该负载数组425发送到片上内存420或者系统内存430,该派遣命令可以通过内置函数DispatchCluster()实现。示例性地,该派遣命令通过内置函数DispatchCluster(gl_ClusterCount,gl_PerCluster[])实现,其中,gl_ClusterCount指定了负载数组包括的负载数量,gl_PerCluster[]为该负载数组。该派遣命令可以同时将负载数组中包括的所有负载同时存储至内存。可选的,应用可以根据需求为该内置函数DispatchCluster()配置参数,具体的参数和参数数量不应理解为对本申请的限制。应理解,当不为派遣命令DispatchCluster()设置参数时,本申请提供的方法可以每次将负载数组中的一个负载放入内存。
应理解,第1至m_count/32个工作组与第0个工作组所做的工作类似,但是处理不同的丛集,且第0至m_count/32个工作组可以并行运行。不同工作组输出的负载数组425会对应存储在内存中的指定区域。
示例性地,输出的负载数组425包括结构体gl_PerCluster[0]至gl_PerCluster[gl_ClusterCount-1],gl_ClusterCount为负载数组425中负载的数量。
示例性地,负载数组425中的负载可以包括顶点的数量vertex_count,实例的标识instance_id,丛集的标识cluster_id和应用指定的信息custom_data。
在一些可能的实现方式中,负载数组425的内容也可以是用户自定义的,不限于上述描述的内容。结构体的大小则受限于内存大小,若是超过片上内存420可支持的容量,也可以将负载数组425储存在系统内存430中。
示例性地,第0个工作组中所有的线程都完成剔除工作之后,着色器核心以工作组为单位调用内置函数dispatchCluster(),由硬件将负载数组425存放到片上内存420,并将负载数组425中包括的负载数量和负载数组425在片上内存420的起始地址放入到cache的二级缓存,然后通知BTC线程组已经运行结束。BTC中的CTC接收到线程组运行完成的通知后,会将负载数组425中包括的负载数量和负载数组425在片上内存420的起始地址从L2缓存读取出来发送给输入组排器441。
输入组排器441根据接收到的负载数量和起始地址,从片上内存420或者系统内存430中读取负载数组425并发送给任务产生器(task creator,TC),TC建构顶点着色器443的线程组并将负载数组425传入线程组。顶点着色器443的线程可以根据负载数组425的顶点信息从系统内存430读取顶点数据进行着色,顶点着色器443中的一个工作组包括32个线程,每一个线程对应一个顶点的着色工作。
示例性地,顶点着色器443的线程可以通过instance_id,cluster_id和vertex_id计算出顶点的索引值index,然后根据该索引值从系统内存430中获取顶点数据进行顶点着色。
图7是本申请实施例提供的另一种几何处理方法的示意图。
图7与图6类似,区别在于第0个工作组中的线程在执行完剔除工作后,会通过丛集剔除着色器710核心的多次间接绘制(multiple draw indirect,MDI)命令将输出的自定义结构体数组725存储至系统内存430,并将自定义结构体数组725中包括的自定义结构体数量和自定义结构体数组725在系统内存430的起始地址放入到cache的二级缓存,然后通知BTC线程组已经运行结束。应理解,当丛集剔除着色器710以线程为粒度输出自定义结构体时,也可以不对自定义结构体数组和自定义结构体的数量进行更新。
BTC中的CTC接收到线程组运行完成的通知后,会将自定义结构体数组725中包括的自定义结构体数量和自定义结构体数组725在系统内存430的起始地址从L2缓存读取出来发送给输入组排器441。
输入组排器441根据接收到的自定义结构体数量和起始地址,从系统内存430中读取自定义结构体数组725并发送给任务产生器(task creator,TC),TC建构顶点着色器443的线程组并将自定义结构体数组725传入线程组。顶点着色器443的线程可以根据自定义结构体数组725中的信息从系统内存430读取顶点数据进行着色,顶点着色器443中的一个工作组包括32个线程,每一个线程对应一个顶点的着色工作。可选的,工作组输出的自定义结构体数组725也可以存在片上系统中,图示仅为示意,不应理解为对本申请的限制。图7其余部分可以参考图6的描述,本申请不再重复赘述。
图8是本申请实施例提供的一种负载结构体的示意图。
在一种可能的方式中,负载数组425中的负载的结构体内容如图8所示,其中vertex_count代表负载中顶点的数量,instance_id代表丛集所属实例在场景中的编号,cluster_id则代表丛集在场景中的编号,custom_data是占位符,通过该占位符CCS可以把特定信息带到顶点着色器443,具体的信息可以由应用决定。示例性地,custom_data可以包括多层次细节(level of detail,LOD),LOD指的是一个物体包括多个不同几何数量的几何模型,应用会程序根据物体和摄像机(camera)的距离选择不同的几何模型,来达到提高绘制性能的目的。
图9是本申请实施例提供的一种顶点着色器内部处理的示意图。
CCS着色器核心的其中一个线程组完成剔除后,负载数组425对应的结构体矩阵的内容如图9的左上角所示,此矩阵储存的是一部分可视丛集的信息。
顶点着色器443根据结构体矩阵中可视丛集的信息可以得到每一个线程的instance_id、cluster_id以及vertex_id的数值。示例性地,顶点着色器443包括线程组warp 0至warp N,假设每个线程组包括32个线程,即T0至T31,则同一个线程组对应的instance_id以及cluster_id相同,每一个线程组包括的32个线程会对应处理不同的vertex_id,分别是0~31。顶点着色器443的每一个线程可以利用instance_id、cluster_id以及vertex_id读取系统内存430中的顶点数据433,进行后续的着色工作。
在一种可能的实现方式中,本申请实施例提供的方法可以作为Vulkan的拓展接口,通过该拓展接口使用CCS功能。Vulkan是一个跨平台的二维(two dimensional,2D)和三维(three dimensional,3D)绘图应用程序编程接口(application programminginterface,API)。示例性地,应用层的开发者可以通过以下命令、参数或者内置函数来使用本申请提供的方法:
应理解,本领域技术人员可以根据需求对以上命令、参数或者内置函数的名称,或者内置函数参数类型、参数数量进行修改,该修改不应理解为对本申请的限制。
以上描述了根据本申请实施例的几何处理方法,下面分别结合图10和图11描述根据本申请实施例的装置和设备。
本申请实施例还提供了一种计算机存储介质,该计算机存储介质中存储有程序指令,所述程序执行时可包括如图3-7、图9对应实施例中的几何处理方法的部分或全部步骤。
图10为本申请实施例提供的一种计算机装置1000的结构示例图。该计算机装置1000包括获取模块1010和处理模块1020。
其中,获取模块1010,用于获取第一工作组输出的第一负载数组,执行图3方法中的310。
处理模块1020,用于对第一负载数组中的K个可视丛集进行渲染,执行图3-7的方法、图9的方法中的部分或全部步骤。
图11为本申请实施例提供的另一种计算机装置1100的结构示例图。计算机装置1100包括处理器1102、通信接口1103和存储器1104。计算机装置1100的一种示例为芯片。计算机装置1100的另一种示例为计算设备。
上述本申请实施例揭示的方法可以应用于处理器1102中,或者由处理器1102实现。处理器1102可以是中央处理器(central processing unit,CPU),还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(applicationspecific integrated circuit,ASIC)、现场可编程门阵列(field programmable gatearray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。在实现过程中,上述方法的各步骤可以通过处理器1102中的硬件的集成逻辑电路或者软件形式的指令完成。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。
存储器1104可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DRRAM)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
处理器1102、存储器1104和通信接口1103之间可以通过总线通信。存储器1104中存储有可执行代码,处理器1102读取存储器1104中的可执行代码以执行对应的方法。存储器1104中还可以包括操作系统等其他运行进程所需的软件模块。操作系统可以为LINUXTM,UNIXTM,WINDOWSTM等。
例如,存储器1104中的可执行代码用于实现图3-7、图9所示的方法,处理器1102读取存储器1104中的该可执行代码以执行图3-7、图9所示的方法。
在本申请的一些实施例中,所公开的方法可以实施为以机器可读格式被编码在计算机可读存储介质上的或者被编码在其它非瞬时性介质或者制品上的计算机程序指令。图12示意性地示出根据这里展示的至少一些实施例而布置的示例计算机程序产品的概念性局部视图,所述示例计算机程序产品包括用于在计算设备上执行计算机进程的计算机程序。在一个实施例中,示例计算机程序产品1200是使用信号承载介质1201来提供的。所述信号承载介质1201可以包括一个或多个程序指令1202,其当被一个或多个处理器运行时可以提供以上针对图3-7、图9所示的方法中描述的功能或者部分功能。因此,例如,参考图3-7、图9中所示的实施例,其中的一个或多个特征可以由与信号承载介质1201相关联的一个或多个指令来承担。
在一些示例中,信号承载介质1201可以包含计算机可读介质1203,诸如但不限于,硬盘驱动器、紧密盘(CD)、数字视频光盘(DVD)、数字磁带、存储器、只读存储记忆体(read-only memory,ROM)或随机存储记忆体(random access memory,RAM)等等。在一些实施方式中,信号承载介质1201可以包含计算机可记录介质1204,诸如但不限于,存储器、读/写(R/W)CD、R/W DVD、等等。在一些实施方式中,信号承载介质1201可以包含通信介质1405,诸如但不限于,数字和/或模拟通信介质(例如,光纤电缆、波导、有线通信链路、无线通信链路、等等)。因此,例如,信号承载介质1201可以由无线形式的通信介质1205(例如,遵守IEEE802.11标准或者其它传输协议的无线通信介质)来传达。一个或多个程序指令1402可以是,例如,计算机可执行指令或者逻辑实施指令。在一些示例中,前述的计算设备可以被配置为,响应于通过计算机可读介质1203、计算机可记录介质1204、和/或通信介质1205中的一个或多个传达到计算设备的程序指令1202,提供各种操作、功能、或者动作。应该理解,这里描述的布置仅仅是用于示例的目的。因而,本领域技术人员将理解,其它布置和其它元素(例如,机器、接口、功能、顺序、和功能组等等)能够被取而代之地使用,并且一些元素可以根据所期望的结果而一并省略。另外,所描述的元素中的许多是可以被实现为离散的或者分布式的组件的、或者以任何适当的组合和位置来结合其它组件实施的功能实体。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (15)

1.一种几何处理方法,其特征在于,包括:
获取第一工作组输出的第一负载数组,所述第一工作组包括N个线程,所述第一负载数组包括K个可视丛集,所述可视丛集包括从预设视角能够被观测到的几何模型中的一个三角形或者多个相邻的三角形,N和K为正整数;
在第一时刻对所述第一负载数组中的所述K个可视丛集进行渲染,所述第一时刻不早于所述第一工作组输出所述第一负载数组的时刻,并且,所述第一时刻位于第二工作组输出第二负载数组的时刻之前,所述第二工作组包括N个线程,所述第二负载数组包括P个可视丛集,P为正整数。
2.根据权利要求1所述的方法,其特征在于,所述获取第一工作组输出的第一负载数组,包括:
获取所述第一负载数组包括的所述可视丛集的数量和所述第一负载数组在内存的起始地址;
根据所述可视丛集的数量和所述起始地址,从所述内存中读取所述第一负载数组。
3.根据权利要求2所述的方法,其特征在于,所述内存为片上内存。
4.根据权利要求2或3所述的方法,其特征在于,在所述获取所述第一负载数组包括的所述可视丛集的数量和所述第一负载数组在内存的起始地址之前,所述方法还包括:
将所述第一负载数组存储至所述内存。
5.根据权利要求4所述的方法,其特征在于,所述将所述第一负载数组存储至所述内存,包括:
根据派遣命令将所述第一负载数组存储至所述内存,所述派遣命令用于将所述第一负载数组中的所述K个可视丛集同时存储至所述内存。
6.根据权利要求1至5任一项所述的方法,其特征在于,在所述获取第一工作组输出的第一负载数组之前,所述方法还包括:
接收指示信息,所述指示信息用于指示所述第一工作组中的所述N个线程执行完毕。
7.一种计算机装置,其特征在于,包括:
获取模块,用于获取第一工作组输出的第一负载数组,所述第一工作组包括N个线程,所述第一负载数组包括K个可视丛集,所述可视丛集包括从预设视角能够被观测到的几何模型中的一个三角形或者多个相邻的三角形,N和K为正整数;
处理模块,用于在第一时刻对所述第一负载数组中的所述K个可视丛集进行渲染,所述第一时刻不早于所述第一工作组输出所述第一负载数组的时刻,并且,所述第一时刻位于第二工作组输出第二负载数组的时刻之前,所述第二工作组包括N个线程,所述第二负载数组包括P个可视丛集,P为正整数。
8.根据权利要求7所述的装置,其特征在于,所述获取模块,还用于获取所述第一负载数组包括的所述可视丛集的数量和所述第一负载数组在内存的起始地址;
所述处理模块,还用于根据所述可视丛集的数量和所述起始地址,从所述内存中读取所述第一负载数组。
9.根据权利要求8所述的装置,其特征在于,所述内存为片上内存。
10.根据权利要求8或9所述的装置,其特征在于,所述处理模块,还用于将所述第一负载数组存储至所述内存。
11.根据权利要求10所述的装置,其特征在于,所述处理模块,还用于根据派遣命令将所述第一负载数组存储至所述内存,所述派遣命令用于将所述第一负载数组中的所述K个可视丛集同时存储至所述内存。。
12.根据权利要求7至11任一项所述的装置,其特征在于,所述获取模块,还用于接收指示信息,所述指示信息用于指示所述第一工作组中的所述N个线程执行完毕。
13.一种计算机设备,其特征在于,包括:处理器,所述处理器用于与存储器耦合,读取并执行所述存储器中的指令和/或程序代码,以执行如权利要求1-6中任一项所述的方法。
14.一种芯片系统,其特征在于,包括:逻辑电路,所述逻辑电路用于与输入/输出接口耦合,通过所述输入/输出接口传输数据,以执行如权利要求1-6中任一项所述的方法。
15.一种计算机可读介质,其特征在于,所述计算机可读介质存储有程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行如权利要求1-6中任一项所述的方法。
CN202211198408.5A 2022-09-29 2022-09-29 几何处理方法和装置 Pending CN117815653A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211198408.5A CN117815653A (zh) 2022-09-29 2022-09-29 几何处理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211198408.5A CN117815653A (zh) 2022-09-29 2022-09-29 几何处理方法和装置

Publications (1)

Publication Number Publication Date
CN117815653A true CN117815653A (zh) 2024-04-05

Family

ID=90512045

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211198408.5A Pending CN117815653A (zh) 2022-09-29 2022-09-29 几何处理方法和装置

Country Status (1)

Country Link
CN (1) CN117815653A (zh)

Similar Documents

Publication Publication Date Title
US20210027525A1 (en) Forward rendering pipeline with light culling
US7468726B1 (en) Culling in a vertex processing unit
EP2047431B1 (en) Graphics processing unit with extended vertex cache
US20080266287A1 (en) Decompression of vertex data using a geometry shader
US8373717B2 (en) Utilization of symmetrical properties in rendering
US11250620B2 (en) Graphics processing
US10049486B2 (en) Sparse rasterization
US20080266286A1 (en) Generation of a particle system using a geometry shader
US20100091018A1 (en) Rendering Detailed Animated Three Dimensional Characters with Coarse Mesh Instancing and Determining Tesselation Levels for Varying Character Crowd Density
US10140750B2 (en) Method, display adapter and computer program product for improved graphics performance by using a replaceable culling program
KR101681056B1 (ko) 정점 처리 방법 및 장치
KR102006584B1 (ko) 레이트 심도 테스팅과 컨서버티브 심도 테스팅 간의 동적 스위칭
US20090033659A1 (en) Real-time luminosity dependent subdivision
EP3580726B1 (en) Buffer index format and compression
CN107392836A (zh) 使用图形处理管线实现的立体多投影
CN114730452A (zh) 减少带宽曲面细分因子
US10002404B2 (en) Optimizing shading process for mixed order-sensitive and order-insensitive shader operations
Sander et al. Progressive buffers: view-dependent geometry and texture lod rendering
WO2024027237A1 (zh) 渲染的优化方法、电子设备和计算机可读存储介质
US20240203030A1 (en) 3d model rendering method and apparatus, electronic device, and storage medium
CN101754039A (zh) 面向移动设备的3d参数解码系统
CN116342778A (zh) 混合式的光栅化装置和方法
CN117815653A (zh) 几何处理方法和装置
Lee et al. Accelerating depth image-based rendering using GPU
US12014456B2 (en) Ray tracing graphics processing systems

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication