论文部分内容阅读
随着硬件的快速发展,使得多核计算成为了可能,为解决海量数据的计算提供了一种有效的方法。本文针对游戏和计算机仿真问题当中的真实感图形的显示实时性要求和渲染效果,对计算机图形学中的相关算法进行了并行化研究。研究的主要内容有:
光线跟踪算法的并行化研究。光线跟踪计算隶属于计算机图形学范畴并通过投射光线生成图像。在光线跟踪计算模型中,场景由相机、像素窗口、光线以及对象(也就是物体)构成,光线穿越像素并与相关对象执行相交测试。若光线与某一对象发生碰撞,则光线跟踪器将沿着当前光线逆向方向计算反射光线的数量,以确定像素的颜色值,光线跟踪器将通过使用足够的像素,生成场景对象的渲染图像。如果场景对象具有反射特性,则光线可反射多次并与其他对象发生碰撞。经典的光线跟踪算法需要计算每一条与场景中对象相交的光线,并且要根据对象的性质进行光色反射、折射等计算,计算量非常庞大,因此很难满足真实感图形显示的实时性要求。为了提高显示的实时性,一般通过提高光线跟踪算法的效率及采用并行处理技术来实现。经典的光线跟踪算法中各个像素的渲染与其它的像素无关,可以将整个需要渲染的图像分为几个部分,实现图像的并行化渲染,以提高图像的生成速度。本文采用两种方法进行实现,一是采用Intel公司的TBB进行并行处理:TBB能根据当前使用的CPU自动选择线程的个数,并能对标记为并行的代码段进行自动的任务分配,实现动态负载平衡。二是采用Nvidia的CUDA对光线跟踪算法进行并行化:首先生成动态加速结构KD-Free,并将加速结构数据复制到GPU的共享内存之中,随后进行光线跟踪,对KD-Tree进行遍历。由于GPU能够生成大量的线程,因此可将图片进行细粒度分割,每个线程管理为数不多的像素,通过并行遍历KD-Tree的方式实行并行优化。
基于GPU的粒子系统中的碰撞检测的并行化。在粒子系统中,景象被定义为由成千上万个不规则的、随机分布的粒子所组成,它采用一种统一的模式来生成诸如火、爆炸、烟、水流、火花、落叶、云、雾、雪、尘、流行尾迹或发光轨迹这样的抽象视觉效果等。为了保证在计算机上具有现实世界中的的真实物理感,我们需要在粒子系统中加入碰撞检测。碰撞检测是检测场景中两个(或多个)物体是否相交,特别的,碰撞检测将确定两个(或多个)物体是否、何时以及在何处形成碰撞。碰撞检测广泛的应用于计算机游戏、物理仿真(如计算机动画)、机器人技术、虚拟样机技术以及工程仿真之中。一些基于计算机或其他平台的动作类游戏所涉及的模拟数据量要求以每秒30帧~60帧的帧速率进行计算,碰撞检测系统将占用游戏一帧中的大量时间,为了能达到碰撞检测的实时性要求,我们将进行碰撞检测的粒子(本文中是小球)分配于GPU的各个线程中,每个线程分别管理相应的粒子,通过并行化的处理来达到碰撞检测实时性的要求。具体实现时采用的平台是Nvidia公司对OpenCL标准的实现。