首页 理论教育 自适应网格的图形硬件加速

自适应网格的图形硬件加速

时间:2023-10-31 理论教育 版权反馈
【摘要】:使用GPGPU技术加速计算自适应网格的网格顶点坐标,可以减小CPU计算压力,以提供更流畅的变形渲染。表3-1 自适应网格的三种计算方法区别2.二维角色变形的二次渲染加速方法在传统的GPU渲染流水线中,每次渲染运算的最终结束点就是帧缓冲区,然后实时地输出到屏幕显示出来。步骤3:在GPU顶点渲染器中计算各关节点的自适应网格参数及其局部坐标系的坐标转换矩阵等。

自适应网格的图形硬件加速

对于计算机虚拟角色的仿真,人们不仅需要形象的真实感,也需要运动的真实感,同时对实时性的要求使得仿真过程必须对算法本身进行优化和改进,一方面提出新的算法,另一方面也要求提高现有平台的计算能力。在计算机图形处理中,除了内存和CPU外,图形硬件加速也是一种重要的加速手段。

在大规模运动角色仿真应用中,对于当前的二维角色覆盖网格变形和三维角色细节保持变形,其算法复杂度都很高,而且需要执行拓扑结构的重新计算,超出了图形硬件所能承受的范围。本章提出的自适应网格,由于其局部运算特性以及三角带网格顶点的规则分布特性,使得自适应网格十分有利于在GPU上进行计算。使用GPGPU技术加速计算自适应网格的网格顶点坐标,可以减小CPU计算压力,以提供更流畅的变形渲染。采用GPGPU加速后,CPU负责用户交互等操作,GPU负责自适应网格计算,充分利用CPU/GPU并行计算能力加速变形渲染。

1.GPGPU加速实现方法

在图形加速硬件中有两种图形渲染器——顶点渲染器和片段渲染器,这两种渲染器中均可进行用户编程并执行GPGPU程序。GPU图形硬件渲染的流水线如图3-5所示,顶点渲染器中的程序,对于每个传入的顶点执行一次,执行的次数与传入的顶点数有关。顶点渲染程序的处理结果输出至片段渲染器进行处理,片段渲染器中的程序,对于每个渲染至帧缓冲区的片段执行一次,执行的次数与最终的输出片段数有关。

978-7-111-33883-3-Chapter03-13.jpg

图3-5 图形硬件渲染流水线示意图

GPGPU通用计算,可以有两种实现方法,分别是二次渲染方法(Second Rendering)和一次渲染方法(Single Rendering)。在每一帧变形渲染过程中,二次渲染方法需要执行两次渲染循环,第一次渲染循环主要执行计算功能,并返回计算结果,第二次渲染循环执行实际屏幕绘制。而一次渲染方法,在一个渲染过程中同时完成计算和屏幕绘制两种功能。二次渲染方法,一般只使用片段渲染器进行求解,渲染中的每一个片段对应一个计算数据点,用于纯计算应用,如矩阵计算,粒子求解等;而一次渲染方法因为需要同时完成计算和屏幕绘制两种功能,不能切换渲染目标,所以一次渲染方法只能完成简单的几何图形属性计算。对于简单的几何图形属性计算,可以选择二次渲染方法,也可以使用一次渲染方法来实现。

在GPGPU加速的自适应网格顶点计算应用中,传统CPU计算、GPGPU二次渲染计算和GPU一次渲染计算三种方法之间的区别见表3-1。在二次渲染方法中,整个计算过程分为三部分:初始化部分、计算部分和重置部分。在GPU一次渲染计算中,整个计算过程和CPU计算一样,只需要计算部分,这样在数据传输量较大的计算中可以保持运算速度的优势。

表3-1 自适应网格的三种计算方法区别

978-7-111-33883-3-Chapter03-14.jpg

2.二维角色变形的二次渲染加速方法

在传统的GPU渲染流水线中,每次渲染运算的最终结束点就是帧缓冲区,然后实时地输出到屏幕显示出来。渲染到纹理技术[120]允许将一个FBO(Frame Buffer Object)离屏缓冲区作为渲染运算的目标,而不会直接输出到屏幕,渲染计算的结果保存到FBO绑定的纹理中,然后可以通过纹理操作,进行显存和内存之间的数据交换。GPGPU应用的计算结果,可以通过该方法返回计算结果。

二次渲染方法在每一帧中需要两个渲染循环,第一次渲染循环为离屏渲染,计算三角带顶点坐标并保存至FBO离屏缓冲区,通过渲染至纹理技术将三角带网格顶点坐标返回到内存,需同时使用顶点渲染器和片段渲染器。(www.xing528.com)

GPU二次渲染加速方法的算法执行过程可以描述为

步骤1:由CPU根据用户交互操作计算关节点的新位置坐标,将更新后的关节点坐标数据上传到显存中。

步骤2:设置渲染目标为FBO离屏缓冲区,由CPU通过渲染通道渲染一个矩形,矩形的每一行片段对应一个关节点,每一个片段对应一个网格顶点。

步骤3:在GPU顶点渲染器中计算各关节点的自适应网格参数及其局部坐标系的坐标转换矩阵等。

步骤4:在片段渲染器中计算关节点的自适应网格顶点的坐标,并转换为全局坐标。计算结果保存至FBO的离屏缓冲区。

步骤5:将FBO离屏缓冲区中的数据取回内存,设置渲染目标为屏幕帧缓冲区,根据返回的计算结果,按三角带类型实际渲染到屏幕帧缓冲区,并输出至屏幕。

3.二维角色变形的一次渲染加速方法

在图像变形的硬件加速应用中,GPU执行的是几何图形的属性,加速过程中对变形模型的顶点位置坐标、纹理坐标进行计算,可以使用一次渲染方法实现加速计算过程。

对于顶点位置计算的一次渲染方法,只需在顶点渲染器中进行计算,每一个顶点的数据直接在顶点渲染器中计算出最终全局坐标。每个顶点单独计算,先根据顶点所在关节点的控制曲线以及变换矩阵,然后根据该顶点在关节点变形模型网格中的序号计算其实际位置,并变换到全局坐标系中。

比较这两种实现方法,二次渲染实现的加速计算,使用顶点渲染器和片段渲染器分别计算关节点的和顶点的数据,可以避免关节点数据的重复计算,但在计算空间上需要申请FBO对象和FBO绑定纹理空间,在计算时间上需要渲染目标设置和数据回传两步骤。而一次渲染方法每个关节点的网格含有多个网格顶点,会出现重复计算,增加了总计算量,但该方法只需要一次渲染循环,而且不需要回传数据,提高了变形渲染执行的连贯性。

上述两种方法的优劣,取决于每个关节点的自适应网格中的顶点数目。当顶点数较少时,第二种方法速度较快,当顶点数达到一定数目,重复计算所需时间超过数据回传时间,则第一种方法速度较快。在本章的计算中,每个关节点的网格一般包括20~40个顶点,如果多个角色同时进行变形计算时,顶点个数更多,因而第二种方法计算速度较快。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈