1、基于 GPU 的 3D 场景真实特效模拟 - - 1 本科毕业论文 (科研训练、毕业设计 ) 题 目: 基于 GPU的 3D场景真实特效模拟 姓 名: 学 院:软件学院 系: 专 业:软件工程 年 级: 学 号: 指导教师(校内): 职称: 指导教师(校外): 职称: 年 月 基于 GPU 的 3D 场景真实特效模拟 - - 2 基于 GPU 的 3D 场景真实特效模拟 摘要 目前图形硬件中的图形处理器 (GPU)计算能力的增长速度已经超过了中央处理器(CPU)计算能力的 增长速度。图形硬件技术一个最主要的突破就是在图形硬件中引入了可编程功能,此功能允许用户编制自定义的着色器程序 (Shade
2、r program)来替换原来固定流水线中的某些功能模块,使得 GPU 在功能上更像一个通用处理器 . 虽然 GPU 具有非常高的计算速度,但并不能直接将以前在 CPU 中实现的算法照搬到 GPU 中来执行 , 这是因为 GPU 的指令执行方式和 CPU 不一样, GPU 的体系结构是一种高度并行的单指令多数据(SIMD)指令执行体系。所以要基于可编程图形硬件实现一些在 CPU 中效率较低的算法 ,就必须重新组织算法实现的数据结构和步骤,以充分利用 GPU 并行处理体系结构带来的性能优势。 通过利用 GPU 的运算能力和可编程能力,在增强场景真实感同时,保证了绘制速度,从而为虚拟场景的绘制增添
3、更多的特性。本文旨在利用最新的图形渲染技术,开发一个三维场景系统,动态地模拟真实的自然环境特效,实现了利用 GPU 加速图像空间的阴影算法,而更为耗时的物体空间的阴影算法也能通过这一途径得到性能改进和提升。 关键词 可编程图形硬件 OGRE 引擎 实时阴影映射 动画轨迹 基于 GPU 的 3D 场景真实特效模拟 - - 3 3D Scene Simulation Based on GPU Abstract: The computation power of the Graphics Processing Unit (GPU) in current commodity graphics hard
4、ware is increasing at a much faster rate than that of the Central Processing Unit (CPU) in computer systems. The projected time to double in efficiency for the GPU is quoted to be roughly 12 months by the leading graphics card manufacturers. A recent major breakthrough in graphics hardware technolog
5、y has been the introduction of programmability; this allows the user to replace portions of the fixed graphics pipeline with customized shader programs exposing the ability of GPU to function more like a general processing unit. In spite of all the rendering power, it is not possible or meaningful t
6、o use algorithms designed with CPU in mind on graphics hardware. The essential difference is that GPU provides a highly parallel Single Instruction Multiple Data Set (SIMD) architecture. The key to harnessing this resource is reengineering the computationally expensive algorithms to take advantage o
7、f this architecture as well as making use of rendering optimizations built into the programmable graphics pipeline. The computational and programmable capabilities not only make the scenes more realistic but also ensure the rendering speed,which would add more features to the rendering of virtual sc
8、enes. This paper aims to use the latest graphics rendering technology to develop a 3D scene, simulate the real effects of the natural environment dynamically and realize the shadow algorithm by using GPU to accelerate the image space. And the more time-consuming object space shadow algorithm can als
9、o improve its performance in this way. Keywords: Programmable Graphics Hardware ORGE engine Real-time shadow mapping animation track 基于 GPU 的 3D 场景真实特效模拟 - - 4 目录 第 1章 引言 . 1 1.1 设计目标 . 1 1.2 项目开发背景 GPU 的飞速发展 . 2 1.2.1 GPU 的介绍 . 2 1.2.2 GPU 可编程技术 的发展 . 2 1.2.3 本项目国内外发展概况和趋势 . 3 1.3 可编程图形流水线功能介绍 . 3
10、1.4 系统功能 . 4 1.5 本文主要研究工作介绍及章节安排 . 5 第 二 章 系统总体设计 . 6 2.1 系统的总体结构 . 6 2.2 系统设计概述 . 7 2.2.1 SHADER技术 . 7 2.2.2 OGRE 的介绍 . 8 2.3 开发环境 . 11 第 三 章 系统的软件开发 . 12 3.1 阴影系统的设计 . 12 3.1.1 概述 . 12 3.1.2 SHADOW VOLUME算法 . 12 3.1.3 SHADOW MAPPING算法 . 13 3.1.4 软阴影 . 16 3.1.5 高斯模糊 . 17 3.1.6 阴影程序的实现 . 18 3.2 天体系统
11、的设计 . 18 3.2.1 OGRE 框架下的动画 . 18 3.2.2 日升日落 一个轨迹动画 . 20 基于 GPU 的 3D 场景真实特效模拟 - - 5 3.3 界面系统的设计 . 21 第 四 章 系统的展示 . 23 总结 . 26 致谢 语 . 27 参考文献 . 28 附录 . 30 基于 GPU 的 3D 场景真实特效模拟 - - 6 Contents CHAPTER 1 INTRODUCTION . 1 1.1 OBJECTIVES . 1 1.2 BACKGROUND RAPID DEVELOPMENT OF GPU . 2 1.2.1 INTRODUCTION TO
12、GPU . 2 1.2.2 DEVELOPMENT OF PROGRAMMABLE GPU TECHNOLOGY . 2 1.2.3 THE DEVELOPMENT OF THE PROJECT AT HOME AND ABROAD . 3 1.3 INTRODUCTION TO PROGRAMMABLE GRAPHICS PIPELINE FUNCTION . 3 1.4 SYSTEM FUNCTION. 4 1.5 STUCTURE AND NOTES . 5 CHAPTER 2 SYSTEM DESIGN . 6 2.1 SYSTEM ARCHITECTURE . 6 2.2 SYSTE
13、M DESIGN OVERVIEW . 7 2.2.1 SHADER TECHNOLOGY . 7 2.2.2 INTRODUCTION TO OGRE . 8 2.3 DEVELOPMENT ENVIRONMENT . 11 CHAPTER 3 SOFTWARE DEVELOPMENT .12 3.1 SHADOW SYSTEM DESIGN .12 3.1.1 OVERVIEW .12 3.1.2 SHADOW VOLUME ALGORITHM.12 3.1.3 SHADOW MAPPING ALGORITHM .13 3.1.4 SOFT SHADOW .16 3.1.5 GAUSSIA
14、N BLUR .17 3.1.6 SHADOW SYSTEM REALIZATION .17 3.2 CELESTIAL SYSTEM DESIGN .18 3.2.1 ANIMATION IN OGRE FRAMEWORK .18 3.2.2 SUN RISE AND SUN SET A ANIMATION .20 基于 GPU 的 3D 场景真实特效模拟 - - 7 3.3 GUI DESIGN.21 CHAPTER 4 SYSTEM DEMONSTRATION .23 SUMMARIZATION .26 ACKNOWLEDGEMENT.27 REFERENCES .28 SUPPLEME
15、NT .30 基于 GPU 的 3D 场景真实特效模拟 - - 8 第 1 章 引言 1.1 设计目标 多年来计算机图形处理器 (Graphics Processor Unit, GPU)以大大超过摩尔定律的速度高速发展,极大地提高了计算机图形处理的速度和图形质量,并促进了计算机图形相关应用领域的发展。图形处理器技术的迅速发展带来的并不只是处理速度的提高,还产生了很多全新的图形硬件技术,其中最引人注目的便是在图形硬件处理管道的顶点处理和象素处理模块中引入了可编程性,使得用户可以通过程序方式控制图形流水线的执行,极大地扩展了图形处理器的能力和应用范围 1。图 1-1 为一个最基本 的可编程图形硬
16、件的框架,其中阴影模块代表可编程模块。 图 1-1 可编程图形硬件框架 大型三维场景广泛应用在虚拟现实、 GIS 系统、模拟战场、游戏娱乐等领域。传统的色调单一,光阴效果极差的固化的三维场景已经不能满足人们的视觉效果需求。硬件的飞速提升,特别的 GPU 处理能力的提高和管道渲染可编程的出现,实时渲染的三维效果越来越逼近于电影级的水平。从而促进了新的图像引擎的开发以及基于不同引擎的图像软件的生成。 本项目以 VS2005 为平台,利用新一代的图像开发引擎 OGRE和最新的图形渲染技术,采用 CG 语言,开发一 个三维场景系统,动态地模拟真实的自然环境特效。本项目在三维场景中模拟动态的特效,实现模
17、拟光影系统,加入可运动天体,以及阴影的实现,使得实时渲染的三维场景更加接近真实水平。令 3D 画面更逼真,就像人的眼睛在三维场景现场中的视觉效果,大幅提升真实感。 通过本项目的开发学习,进一步的加深了对于计算机图形学的理解,同时了解了 3D 开发领域的最新发展技术。 基于 GPU 的 3D 场景真实特效模拟 - - 9 1.2 项目开发背景 GPU 的飞速发展 1.2.1 GPU 的介绍 GPU 即 图形处理芯片 ,它 能够从硬件上支持 T&L(Transform and Lighting,多 边形转换与光源处理 )的显示芯片 2。因为 T&L 是 3D 渲染中的一个重要部分,其作用是计算多边
18、形的 3D位置和处理动态光线效果,也可以称为 “几何处理 ”。一个好的 T&L 单元,可以提供细致的 3D物体和高级的光线特效;只大多数 PC 中, T&L 的大部分运算是交由 CPU 处理的 (这就也就是所谓的软件 T&L),由于 CPU 的任务繁多,除了 T&L 之外,还要做内存管理、输入响应等非 3D 图形处理工作,因此在实际运算的时候性能会大打折扣,常常出现显卡等待 CPU 数据的情况,其运算速度远跟不上今天复杂三维游戏的要求。即使 CPU 的工作频率超过 1GHz或更高,对它的帮助也不大,由于这是 PC 本身设计造成的问题,与 CPU 的速度无太大关系。 PC 图形(如照片、视频和游
19、戏等)需要大量的处理能力。在没有任何帮助的情况下, CPU必须执行所有系统处理和图形处理任务。结果是降低系统性能。添加专用 GPU 可卸载 CPU的图形处理负荷。 CPU 就可以有更多资源用于执行更主要的系统处理任务。 1.2.2 GPU 可编程技术的发展 显卡技术的进步使得人们在视觉上的要求越来越高。传统的 3D 硬件的两大 API, OpenGL和 Direct3D 都 通过 它们固定的渲染管线,即 pipeline,计算简单的雾、光线等来渲染三维场景 3。渲染的纹理效果都是平坦的单一的,光影效果也是很简单粗糙的。 从 DX8 和 OpenGL 扩展开始将可编程特性引入到渲染管线中来,这样
20、使开发者通过自己编写一段小程序运行于显卡硬件来自己控制具体的渲染过程,在微软的 DirectX 中就称这段程序代码 Shader,在 OpenGL 中就叫 Program4。 Shader 现一般翻译为着色器 , 它 表现 了 一种基于显卡 GPU 的 可编程控制的概念。 简单地说,着色器是渲染像素和顶点的小程序,分为像素着色器和顶点着色器两种类型。这些程序能够向基本的 几何图形添加效果,例如,向蓝色纹理平面添加水纹使其具有反射效果,也可向多边形纹理添加玻璃效果使其具有透明的视觉特性。 目前最新的可编程图形硬件已经具备了下列功能: (1) 在顶点级和像素级提供了灵活的可编程特性。 (2) 在顶
21、点级和像素级运算上都支持 IEEE 32 位浮点运算,可进行高精度的绘制。 基于 GPU 的 3D 场景真实特效模拟 - - 10 (3) 完全支持 4 元向量的数据格式 (齐次坐标,法向等 ),方便了图形程序的设计与开发。 (4) 具有高带宽的内存传输能力 (27.1GB/s),具备强大的数据吞吐能力。 (5) 支持绘制到纹理的功能 (Render to texture),从而避免将中间绘制结果拷贝到纹理这个费时的过程; (6) 支持依赖性纹理访问功能,以方便数据的索引访问,可以将纹理作为内存来使用。 1.2.3 本项目国内外发展概况和趋势 国外虚拟城市的已经发展了许多个年头,而随着我国第一
22、个三维虚拟数字化城市在杭州的建立,越来越的多城市开始为自己量身打造的数字化模型。建立运行高效,渲染逼真的三维虚拟场景是关键性的技术之一。显卡可编程技术使得优秀的算法能更好更快应用在图形渲染上来。在游戏产业上,次世代游戏更是融入了“容积云”、“实时环境地图”、“柔和阴 影”等先进的图象技术使得画面几乎与真实场景无异。 显卡技术的飞速进步给予实时渲染技术的发展更宽阔的空间,在虚拟场景在给予人们更真实、更可靠、更震撼的视觉效果。 1.3 可编程图形流水线功能介绍 可编程图形流水线的总体框架如图 1-2 所示,左边用实线表示的流程就是传统的图形流水线的流程;在这种通用的流水线中,首先经过顶点级的光照计
23、算和坐标变换,求出每个顶点的光照颜色值,同时还将顶点坐标从物体坐标系转换到裁剪空间 (Clip Space)。然后,对每个三角形进行光栅化处理并将对三角形顶点的颜色进行双线性插值,得到了 三角形中每一个象素的颜色值。接着进行纹理映射,即根据每一个象素的纹理坐标值将纹理图颜色分配到每个象素上。最后进行颜色混合计算 (Blending)和雾化效果计算,得到的结果将会放进帧缓存 (Frame buffer)并显示到屏幕上 5。目前的可编程的图形硬件中,除了光栅化这一部分依然保持固化的硬件实现不变以外,其他部分都引入了可编程性。也就是图 1- 2 中的虚线部分 。 顶点着色器 (Vertex Shader)的功能正是为了实现顶点的光照计算和坐标变换,在过去的硬件中,人们只能实现一些固定的光照模型和坐标系转换 计算,但是在现在的可编程的图形硬件中,用户可以通过编写代码自由地设计自己所需要的光照模型和坐标系转换计算公