基于GPU的优化处理

http://www.cnblogs.com/wuhanhoutao/archive/2007/11/10/955293.html
html

早期的三维场景绘制,显卡只是为屏幕上显示像素提供一个缓存,全部的图形处理都是由CPU单独完成,而渲染一个复杂的三维场景,须要在短期内处理几百万个三角形顶点和光栅化上百万个像素,擅长于执行串行工做的CPU实际上难以胜任这项任务,速度上达不到要求。因此,若要求在PC上实时生成三维图像,则将牺牲质量,致使画面很粗糙。现阶段,GPU的发展极大地提升了计算机图形处理的速度和图形质量,并促使图形处理功能不断从CPU向GPU转移,如顶点坐标转换计算等,并且GPU自己亦不断加强了图形处理的各类高级功能,如遮挡剔除、纹理映射、透明与半透明处理、景深效果等。算法

本章将从GPU特色与其支持下的渲染流程角度出发,提出采用GPU具有的绘制到纹理功能,获取上帧信息,进行可见性判断,从而剔除没必要要渲染的场景模型,实现场景加速绘制的方法;针对过大或不符尺寸的纹理致使GPU因显存不足而频繁交换的问题,介绍Mipmap技术与Clipmap技术;最后,引入面向GPU顶点缓存的通用渲染顺序与多级缓存的格网布局方法,并配合上一章介绍的视点相关的实时有选择性细化方法,指望进一步提高大数据量场景绘制的速度。编程

5.1 引言

5.1.1 GPU发展历史

咱们正处在信息技术高速发展的年代,而计算机图形处理技术的发展速度则是计算机应用行业中最快的。不管是从用于图形设计的硬件、可视化应用的画面品质、各类三维游戏和仿真场景的画面处理、使用图形技术的交互式应用程序仍是从计算机动画等方面来看都是如此。十多年前用于计算机图形设计的硬件仍是那种价值昂贵的图形工做站,而现在基本上都已经发展为单芯片的图形处理器。小程序

1995年,PC机领域第一款带有GPU的显卡3dfx Voodoo出来,使得游戏的速度、画质取得了一个飞跃。3dfx Voodoo有两个主要的特征:深度缓冲区(z-buffer)和纹理映射(texture mapping)。z-buffer执行“隐藏面消除”这一工做,能够避免渲染不可视的无效像素。利用纹理映射功能则能十分逼真地表达物体表面细节。1999年,第二代GPU (NVIDIA GeForce256,GeForce 2和ATI Radeon 7500)包括了图形的几何变换与光照计算功能(Transformation and Lighting, T&L)。而在此以前T&L都是由CPU完成的,这对CPU来讲是很复杂的计算。第二代GPU解决了系统的这个瓶颈,减轻了CPU的负荷,速度明显提升了。可是因为是固定的渲染流水线,缺少灵活性,束缚了开发人员的创造性。2001年,NIVIDA公司的GeForce 3首先引入了可编程的顶点着色器(Vertex Shader)单元。紧接着在2002年,可编程的像素着色器(Pixel Shader)单元也加入进来。在绘制时,GPU首先接收CPU以三角形顶点形式发送的几何数据。而后由可编程的顶点着色器单元进行处理,完成几何变换与顶点属性计算等功能。接着,这些三维空间的三角形由光栅生成器转换为二维屏幕上的像素。每一个像素的最终颜色值都经过运行在像素着色器上的小程序运算获得。目前三维游戏和仿真场景借助于GPU,在数据量不是很大而且光照阴影处理不是太复杂的状况下,已经可以实时生成细腻、逼真的画面。数组

5.1.2 GPU特色

           GPU的功能更新很迅速,运算速度也愈来愈快。2004年推出的GPU Nvidia GeForce 6800 Ultra可达到峰值40 Gigaflops( 1 Gigaflops=1秒钟进行10亿次的浮点运算),2005年刚发布的 Nvidia GeForce 7800 GTX更是将峰值提升至169 Gigaflops。而Intel 3GHz Pentium 4采用SSE指令集只能达到6 Gigaflops(见图5—1)。GPU的运算速度如此之快,主要得益于GPU是面向图形实时渲染定制的,具备两点主要特征:超长流水线与并行计算。


 

采用流水线方法,比简单的串行方式能提早完成图形渲染任务。为了提升流水线的速度,能够将任务划分红更小的单元,这样流水线的级数就会增长。CPU的设计中就使用了流水线原理,奔腾IV就有20级的流水线。可是流水线级数并非越多越好,级数太多,一条指令从开始进入流水线到最后被执行完毕之间的延迟间隔会至关大。换句话说,当流水线级数过多时,控制台发出一条指令后,要通过较长时间才会真正生效,这不适合快速反应要求很高的场合。CPU的设计目标要求有很小的延迟,因此这是CPU并不采用过多流水线级数的缘由之一。另外流水线只有在满载时,才能发挥出最佳效率来。因为CPU执行的代码中有不少分支语句,所以长流水线须要尽可能保持其在满负荷状态。而一旦预测分支失败,就会清除流水线中滞留的大量无用指令,同时将新指令流从新注入流水线。若是流水线阶段过多的话,充满整个流水线就须要很长的时间,这样使流水线保持满载的机会很少,速度反而降低了。因此权衡利弊,CPU不会使用深度流水线。缓存

可是GPU却采用了几百级的流水线,这是由于GPU应用能够忍受大的延迟。时钟周期与流水线级数的乘积远小于显示每帧画面的时间,因此对GPU来讲延迟不成问题,并且GPU中执行的象元片断程序中,分支语句用的不多(在早期的GPU中,甚至不提供动态的分支语句)。所以,GPU的流水线深度变大后,利大于弊,大大提高了总体性能。数据结构

GPU的执行速度很快,可是当运行从内存中获取纹理数据这样的指令时(因为内存访问是瓶颈,此操做比较缓慢),整个流水线便出现长时间停顿。在CPU内部,使用多级Cache来提升访问内存的速度。GPU中也使用Cache,假若Cache命中率不高,则仅使用Cache就不能很好的解决这个问题。因此,为了保持流水线忙碌,GPU工做时又使用了多线程机制(Multi-threading)。当像素着色器针对某个像素的线程A遇到存取纹理的指令时,GPU会立刻切换到另一个线程B,对另外一个像素进行处理。等到纹理从内存中取回时,可再切换到线程A。使用这种方法有一个前提,线程A与线程B没有数据依赖性,也就是说两线程之间无需通信。若是线程B须要线程A提供某些数据,那么即便切换到线程B,线程B还是没法运行,流水线仍是处于空闲状态。须要说明的是,图形渲染本质上是一个并行任务。不管是CPU送给GPU的顶点数据,仍是GPU光栅生成器产生的像素数据都是互不相关的,能够并行地独立处理。并且顶点数据(XYZW),像素数据(RGBA)通常都用四元数表示,适合于并行计算。此外,纹理片要么只能读取,要么只能写入,不容许可读可写,从而解决了存贮器访问的读写冲突。GPU这种对内存使用的约束也进一步保证了并行处理的顺利完成。多线程

为了进一步提升并行度,能够增长流水线的条数。多条流水线能够在单一控制部件的集中控制下运行,也能够独立运行。在单指令多数据流(SIMD)的结构中,单一控制部件向每条流水线分派指令,一样的指令被全部处理部件同时执行。另一种控制结构是多指令多数据流(MIMD),每条流水线都可以独立于其余流水线执行不一样的程序。GeForce 6800 Ultra的顶点着色器流水线使用MIMD方式控制,像素着色器流水线使用SIMD结构。MIMD能比较有效率地执行分支程序,而SIMD适合于大数据量的像元处理。架构

总的看来,相对于并行机而言,图形卡提供的并行性虽然很弱,但它在十分廉价的基础上为不少应用提供了一个很好的并行方案,尤为是对于图形自己的应用来讲。新的图形硬件在图形渲染上的优点还包括:app

1) 在顶点级和像素级提供了灵活的可编程特性;

2) 减小了GPU与CPU的数据通讯。尤为是当整个应用针对图形生成的时候,再也不须要在CPU与GPU之间进行屡次数据交换,从而可让CPU解放出来完成其它的任务;

3) GPU相对于CPU来讲,更适应传输大块的数据,虽然CPU上有Cache以加速整个计算过程,但CPU上的Cache相对于图形卡显存来讲过小,通常只有64KB,而如今的显存大多都在64M以上,因而可知一斑;

4) 支持绘制到纹理的功能(Render-to-Texture/pbuffer),从而避免将计算结果拷贝到纹理这一比较费时的过程;

5) 支持依赖纹理功能,以方便数据的索引访问,能够将纹理做为内存来使用。

 

5.1.3 GPU支持下的图形渲染流程

首先根据图5.2粗略说明一下当前广泛流行的AGP(Accelerated Graphics Port,图形加速端口)显卡的渲染流程。

    每次渲染过程都包括顶点处理(Vertex Processing)和像素处理(Pixel Processing)两个主要功能模块的执行。首先,显卡从AGP总线接收顶点数据。这些数据包括位置、法线、贴图坐标(若是是面包可能更须要贴图,也就是说贴图坐标不是必需的)等等,这些都是未通过任何变换,也就是在物体本地空间(Object Space)下的原始坐标。每一个顶点依次被送入顶点处理单元,在这里进行坐标变换、光照计算(若是是每顶点光照)等工做,变换的结果是把每一个三角形变换置屏幕空间下直接可用。这里用到的变换矩阵、灯光等信息都是处理每一批顶点时一次性传给显卡的,做为显卡的资源。顶点处理圈定了三角形的范围,接下来就要逐像素地填充这个三角形了。填充哪些像素是靠对顶点屏幕坐标的线性插值来决定的。像素的其余一些必要参数,如颜色,贴图坐标等也是经过对上一步计算出来的顶点的这些属性进行插值获得的。另外每一个像素还要经过深度检测和模板检测决定最终是否绘制。须要绘制的像素被送进像素处理模块,进行贴图像素取值,贴图混合等工做,必要的话每像素光照也在这里完成。这里贴图等信息也是做为显卡的资源。像素最终的处理结果被放进帧缓冲。
       
       

5.2上帧信息提取

可编程图形显卡的出现增长了知足人们对三维仿真场景更加逼真、更加流畅显示等方面需求的机会。这些商用显卡已经被普遍的应用,所以相关关键技术的研究变得愈来愈迫切。如何从上一帧图像提取颜色、深度等信息来指导输入到图形流水线的场景中模型结点的选择、更新,如何在硬件支持下优化渲染流程等是有意义的研究内容。

针对大数据量三维仿真场景,从三维模型成像机理等方面对大数据量仿真场景中目标的载入、选取和消隐进行了深刻的分析以后,利用视觉成像理论、次缓冲区(pBuffer)技术和简化方法等,对大数据量仿真场景开展加速选择和更新等方面的研究工做。为提取上帧信息,采用GPU的绘制到纹理功能,进行可见性判断,剔除没必要要绘制的场景模型,实现场景加速绘制的优化处理,采起的具体方法以下:

若场景范围大或三维模型的尺度大,其在绘制选择、绘制和渲染等流程后,显示在屏幕上时每每有延迟现象。现考虑,将原始模型和对应的最简化版或外框架做为两个结点进行显示,但分配原始模型在主缓冲区上,分配其对应的框架模型在新建的次缓冲区(pBuffer)上。因为两个缓冲区大小是同比例的,并共享同一个相机,那么两种模型从投影转换到最后的输出显示,便是反应同步的,在结果上也是近似的。因为显示的大小是同比例的,但在流程中栅格化等操做会影响像素的显示,因此说结果是近似的。在每一帧(或者每5帧,要求人眼分辨不出来)结束后,读取pBuffer上的像素(通常RGB格式)到数组中,循环判断每一个数组元素的颜色,记录下各类颜色的数量。因为在建立框架模型时分配了每一个模型对象相异的颜色,从而此时经过颜色能判断出pBuffer和主缓冲区上显示出来的究竟是哪些模型。用获得的结果指导下一个周期的原始模型中选择哪些子集。这样作的好处是,不用将整个大数据量的原始模型进行一遍局部到世界坐标系,再到视点坐标系,最后透视变换、裁减等操做。只是将剔除视见体外和被遮挡的物体后剩余的模型交给渲染流程,于是能节约计算、存储等资源,加快显示速度。

      初步实验结果见图5.3与图5.4,其中由7个立方体模型组成的场景文件大小为130M, 三角型个数70多万个。在没有遮挡关系的状况下,普通与改进方法下帧速均为5.4帧每秒;在有遮挡关系状况下,普通方法下帧速保持不变,还为5.4帧每秒,而改进方法下帧速增长到12.5帧每秒左右。
      
           
 

5.3 针对GPU的纹理优化处理

纹理映射(Texture Mapping)是绘制复杂场景真实感图形最为经常使用的技术,它能够经过纹理来表达表面丰富的几何细节和光照细节,甚至能够经过映射后纹理的变形来表达物体的几何形状:在未增长物体多边形数状况下,加强了物体的真实感效果。

但过大或是不符尺寸的贴图,将占用太多的纹理带宽,致使GPU因显存不足而频繁交换,采起的措施是:尽可能缩小贴图或使用Mipmap技术。Mipmap技术的核心就是纹理的LOD。高分辨率的Mipmap图像用于接近观察者的物体,当物体逐渐远离观察者时,使用低分辨率的图像。Mipmap能够提升场景渲染的质量。

Mipmap映射技术是快速的查找技术,快就快在它在交互前预先生成了纹理图像的一系列的基本采样数据,造成纹理LOD模型,在交互过程当中系统能快速应用纹理LOD生成逼真视景。这一优势对实时交互系统中的纹理映射相当重要,可是根据纹理映射的应用技术,对于大纹理数据是不能将整个纹理Mipmap驻留在有限的硬件纹理内存和系统内存中的,同时,因为带宽的限制,也存在着交互前载入整个纹理须要漫长的时间。

之前解决有效物理纹理内存大的纹理映射问题,好比地形纹理,经常采用根据地形模型把原始纹理图像分割成大量的小片纹理,使这些小纹理能适应物理的纹理内存。

    现广泛采用Clipmap方法是,采用首先创建原始图像的Mipmap,而不是装载时才建立,这对比较大的纹理来讲是重要的;其次,把建立的Mipmap各层存储在硬盘上,只把裁减下来的Mipmap部分即Clipmap调入纹理内存用于实时绘制。

 

5.4 针对GPU的几何数据优化处理

5.4.1足够的三角形数量供给

从理论上分析,一旦CPU使用率达到100%,再考虑优化问题,则可以提高的空间将是很是有限的,由于CPU的频率决定了每帧调用绘制几何元素集合的次数,因此应该尽可能减小调用次数,增长批处理中的三角形个数。                    太多的调用次数,只会让CPU忙于通信,而GPU却一直在空闲;另外一方面来看,太少的三角形数量也知足不了GPU的处理容量。

5.4.2 模型格网布局

5.4.2.1面向GPU顶点缓存的通用渲染顺序

计算机图形学应用的趋势是大量使用多边形来加强图像的真实性,这种趋势随着近来图形硬件的发展,特别是GPU在低端显示设备上的出现而特别明显。GPU意味着图形适配器能完成扫描转换,也能完成3D几何投影和阴影计算。所以,场景几何处理再也不如同过去那样是最大的瓶颈。

为了加快处理几何顶点元素,GPU保留了固定尺寸的先进先出(First Input First Output,FIFO)顶点缓存,经过此种方式进行顶点遍历。而渲染以三角形为基础的通用三维格网,每一个顶点参与处理的次数可能大于一次,根据对大多数格网的统计,平均每一个顶点参与六个三角形的绘制。咱们知道,处理缓存顶点将比处理非缓存顶点快得多。所以,为了最大限度的使用缓存,必须以保留局部相关性的顺序渲染格网三角形。这个三角形依次渲染的顺序被称做格网渲染顺序。一个好的渲染顺序能最小化三角形的缓存错失数,称做平均缓存错失率(Average Cache Missing Ratio,ACMR),由于典型格网的三角形数量接近顶点数量的两倍,假若在图形渲染时顶点数据须要第一次从外部调入缓存,这算做一次错失,而其它绘制的时候,顶点数据不错失,那么下限数值为0.5;假若绘制每一个三角形的三个顶点时候数据都错失,上限范围达到3.0。因此理论上ACMR取值在0.5与3.0之间。注意,此顺序没必要要是连续的,在渲染顺序上相链接的三角形不必定在格网空间上是相链接的。

3D格网一般以任意的三角形序列排列,其每一个三角形又以指向顶点列表的三个顶点索引标明。普通渲染器就按照文件中顺序将三角形送入图形流水线,获得通常的性能。更复杂的渲染器使用三角形条带技术,能以FIFO顶点缓存尺寸为2来渲染三角形,这其实是3D硬件的标准部件。Akeley等(1990)描述了产生三角形条带的算法。然而因为缓存的有限尺寸,能证实在这种缓存尺寸下不能将ACMR下降到1.0如下。Hoppe(1999)提出一种算法来产生面向透明FIFO缓存的渲染顺序,从实验上展示其算法对任意的顶点缓存产生渲染顺序,其ACMR不会明显差于Chow的算法。然而全部算法的一个主要问题,是必须事先知道缓存尺寸,对某个缓存尺寸产生的渲染顺序,当使用到一个更小尺寸的缓存时渲染格网产生的结果也许远离优化目标。

另一个现有算法的缺陷是不能推广到累进格网。累进格网不一样于固定分辨率格网,格网连通性是动态的,因此不可能预先计算三角形条带。格网是不断变化,渲染顺序也必须随之变化。这方面工做有El-Sana(1999)提出保持累进格网的三角形条带方法。另外,Hoppe(1997)采用在每一帧的时候,使用一种贪婪算法来产生三角形条带。此算法遍历活动三角面 ,并在任何没有被渲染的面之处,开始一个新的三角形条带。而后,检查是否有邻接面尚未被渲染,就这样,链接条带。为了下降图形状态的变动,仅仅只有相同材质的邻接区域被考虑。为下降流水线负担,倾向于连续螺旋型三角形条带。但条带达到结束末端时候,对链表 遍历从新开始。面数据结构中有一个标志来记录已经渲染的面,下次渲染时这些标志会被清空。

空间填充曲线其实是在某种程度上保留局部相关性的多维格网单元遍历。广泛目标是产生一种渲染顺序,当每一个三角形渲染时候,但愿尽量多的三角形顶点已经存在于缓存中。若是不是这样,缓存错失开始计数。

下面介绍的递归切割方法是受传统空间填充曲线启发,而最小线性安排(Minimum Linear Arrangement, 简称MLA)方法是经过求解优化问题获得答案(Bogomjakov, A., Gotsman, 2001)。

     递归切割方法。在四边形格网(其尺寸为2的幂)上传统的空间填充曲线有良好的局部相关性。对于规则三角网(取代四边形格网)容易使用Hilbert曲线来产生渲染顺序。Hilbert创建过程是:将格网分为四块(每块相同);递归的渲染第一块中全部三角形,而后递归的渲染第二块中的全部三角形,依此类推。当格网仅包含几个三角形时递归终止。注意,第一块中最后一个三角形邻近第二块中第一个三角形,对于第三和第四块是同样的处理。因为格网结构是规则的,将有可能达到目标,并保证曲线连续。Hilbert曲线的创建提示了下面相似的不规则三角网的递归程序:分区格网到两个近似相同的子网。首先渲染第一个格网,接着是第二个。同时保证,第一个子网的结束顶点是邻近的第二个子网的入口顶点。为了更加精确,须要找到一种平衡切分,产生两个尺寸大体相同的顶点集合,若是边界处的切割边数量少就更好。程序首先渲染左边子网,而后是跨越切割边的三角形,接着是右边子网。
    

 

这意味着全部参与一条超边的顶点应该被映射到邻近区域中。

格网渲染问题也能被当作MLA的一个实例。超图的顶点对应着格网的三角形,超边集合对应着格网顶点集合。一条超图的边联系着入射到相同格网顶点的全部三角形。超边的长度意味着格网顶点上第一个和最后一个三角形的渲染顺序距离。

本文研究大数据量场景的实时渲染,并在上一章介绍了应用累进格网技术来提升渲染性能。应用中,场景的多边形数量实时改变。对于给定的更新记录序列,必须不只生成最高分辨率的渲染顺序,也有对应的更新记录的顺序。这样,在低分辨率时也能连续较好的运行。


      
      
     

     
    
     
    
  

采用顶点缓存个数为16的模拟程序对球与头部三维模型进行迭代切割法与MLA算法处理后与原始渲染顺序的对于实验。在渲染顺序路径图中,相邻三角形用白色线段表示,而红色线段表示绘制三角形时产生了跳跃现象,即没有绘制相邻三角形。迭代切割法中基本是白色线段,说明按照相邻三角形路径绘制。在示意图中,每一种颜色标志对应顶点的不一样缓存错失数量。假设顶点 参与三角形 绘制。若是 的角是灰色的,意味着 绘制时候没有错失 。绿色表示第一次错失 ;蓝色表示第二次错失 ;红色表明三次或更屡次数错失。对每一个顶点来讲,都会有一个绿色角,由于第一次总要将顶点加载到缓存中。好的渲染顺序目标就是使得灰色尽可能多,而蓝与红色尽可能少。从图5.6与图5.7中明显看出,原始模型的红色角多,而处理过的模型,不管采用的是迭代切割算法或MLA算法,绿色与蓝色角多而红色角少,这意味着通过处理的模型缓存错失数量减低。经过表5.1的统计数据获得处理后的模型渲染速度有提升的结论。


   
 

5.4.2.2面向多级缓存的格网布局

处理大数据量格网的算法利用了CPU和GPU的计算能力,用于交互显示和几何应用。在近十年,处理器与主存储器之间的差距已经在扩大。结果是,系统架构不断的使用缓存和存储层级来避免内存等待时间。存储层级的不一样层次的访问时间也有很大不一样。在某些状况下,一个程序的运行时间可当作是缓存访问模式的函数,并与其操做次数有很大相关性。

为了设计有效的缓存算法来处理大数据量格网,两个通用的减低缓存错失的技术是:1)计算重排序:提升程序的局部性,这能经过编译器优化或人工调整达到;2)数据布局优化:依据访问模式计算缓存连贯的数据布局(Yoon, S.-E., Salomom, B., Gayle, R., Mannocha, D , 2004)。

缓存有效算法能被分类为缓存介意的与缓存非介意的。缓存介意算法使用缓存参数,如分块大小。与此相反,缓存非介意算法不用事先知道任何缓存参数。缓存有效算法方面有大量研究工做,服务于一些应用,好比数值程序、排序、几何计算、矩阵乘法、FFT和图形算法。面向这些应用,大多数算法重组织数据布局,如计算一种新的排列顺序。

大多数现代计算机使用存储层级,其每一层级做为下一层的缓存。存储层级有两个主要特征。首先,较高层级尺寸也会大,接收处理器指令较慢,拥有较慢的访问时间。第二,不一样存储级别之间,数据存在于大的块中。格网初始存在于最高级别中,典型的如硬盘。应用访问时格网某一部分将被转移到较低级别的大分块中,如主存。当有缓存错失发生的时候,两个相邻级别之间转移就会执行。缓存错失次数依赖于原始格网在存储空间中的布局与应用访问模式。

    格网布局是顶点与三角形的线性顺序。构建一个图,其中顶点表明格网中的数据单元。若是顶点表明的数据单元有可能在运行时被连续访问,那么两个顶点之间存在一条边。
     

对于单分辨率格网布局,映射格网顶点与边到图的顶点与边上。一个无向图 的顶点布局是顶点到位置的一一映射, 目标是找到一种映射 使得格网访问过程当中最小化缓存错失数量。

格网布局有两种布局类型:顶点布局与三角形布局。而三角形布局可被当作是顶点布局的对偶图,由于经过依赖三角形最大或最小顶点索引来排序三角形,将确保三角形布局与顶点布局兼容。

为计算层次的布局,可创建一个图来获取对层次的缓存连贯访问模式。在图中增长额外的边来得到层次中的空间局部关系与父子联系(Yoon, S.-E., Manocha,  2005)。

父子结点之间的联系。一旦层次中某一结点被访问,有很大的可能性紧接着访问其父结点与子结点。好比,VH中结点的顶点劈分激活其子结点,两个兄弟结点的边折叠操做激活它们的父结点。

同一层次顶点之间空间局部相关性。当一个结点被访问时,其邻近区域的其它结点有很大可能性被立刻访问的。好比,两个物体的碰撞和联系发生在小的格网局部区域中。所以,若是BVH中一个结点被激活,其它邻近区域中的结点可能立刻被访问。



 

5.5 本章小结

GPU专门为图形渲染设计的,具备超长流水线与并行计算等主要特征,运算速度愈来愈快,同时,在顶点级和像素级还提供了灵活的可编程特性以及支持绘制到纹理等功能。所以,本章首先介绍了GPU特色与其支持下的图形渲染流程以后,提出采用GPU绘制到纹理功能,获取上帧三维模型成像信息,进行可见性判断,再把剔除视见体以外与被遮挡物体后剩余的三维模型交给图形流水线的方法,从而能节约计算时间,加快显示速度。

针对过大或不符尺寸的纹理致使GPU因显存不足而频繁交换的问题,介绍Mipmap技术与Clipmap技术,既能保证比较快速的纹理查找速度,又能有效解决硬件的存储限制和载入带宽的瓶颈。

指出在几何数据处理过程当中为避免CPU使用率达到上限,首先应该保证GPU足够的三角形吞吐量。其次,缓存在大多数GPU上是可用的,当使用FIFO顶点缓存在最大程度上重复使用顶点时,将有利于提升模型格网的渲染速度。所以,介绍了迭代切割与MLA两种方法以产生模型格网的渲染顺序,生成的几何数据布局结果尽量保留了格网局部性并保证了顶点重用,还配合了上一章介绍的视点相关的实时有选择性细化方法,能进一步提高大数据量场景绘制的速度。

     最后,还介绍了面向多级缓存的大数据量格网布局,指望能提升交互可视和几何处理算法的性能。这种方案中采用了一种简单、实用的非介意缓存参数检测方法来评估缓存错失,从而将计算一个连贯的格网布局转换为求解一个组合最优问题。
相关文章
相关标签/搜索