基于 FBO 和 GPU 的动态 CEM 算法及实现.doc
《基于 FBO 和 GPU 的动态 CEM 算法及实现.doc》由会员分享,可在线阅读,更多相关《基于 FBO 和 GPU 的动态 CEM 算法及实现.doc(4页珍藏版)》请在三一办公上搜索。
1、精品论文基于 FBO 和 GPU 的动态 CEM 算法及实现高光磊第 陈炳发1.南京航空航天大学机电学院 江苏南京 210016摘 要 改进了 OPENGL 中动态立方体环境映射的实现方法,新方法利用 FBO 使环境图像直接渲染 到立方体纹理,利用 GPU 编程语言 GLSL 进行逐像素纹理和光照计算,与传统方法相比,该方法提高了帧 率和图象质量。最后给出了该方法实现过程。关键词 OPENGL FBO 动态 立方体环境映射 CubeMap GPU中图分类号 TP317.4文献标示码:AA Method of Dynamic CEM Based on FBO&GPUGAO Guang-lei1
2、CHEN Bing fa11 Nanjing University of Aeronautics and Astronautics, Jiangsu Nanjing, 210016, ChinaAbstract A new method of OPENGL CEM is introduced, which render into CubeMap texture directly using FBO, and computer per pixel texture coordinate and lighting using GPU programming language GLSL. Compar
3、ed with tradition, this method increase display velocity and achieve good image quality. The realization of this method is given.Key words OPENGL FBO Dynamic CEM CubeMap GPU41 引言当今游戏大量使用动态环境映射技术,以加强真实感显 示。通常采 用的动态环 境映射技术 是动态 CEM ( Cube Environment Mapping,立方体环境映射)技术,可以实时地生成 水、金属、玻璃等物体的反射和折射效果。 因此,动态
4、 CEM 技术具有很强的应用和研究价值。图 1 传统的渲染到纹理的方法动态 CEM 包括两个过程:实时生成 CubeMap 和用 CubeMap 绘制物体。.生成 CubeMap 需要六次渲染纹理操作。 OPENGL 中渲染到纹理传统的方法是调用 glCopyTexImage2D() 和 glCopyTexSubImage2D()函数。但窗口的大小限制了纹理的使 用大小,并且纹理的大小必须是 2 的幂。为解决这个限制, PBuffers 很快成为渲染到纹理的标准方法。Pbuffers 允许离屏渲 染,并独立于帧缓存。但和前者有个相同的缺陷:需要从 Pbuffers 到纹理的复制过程,如图 1
5、所示.为解决这个问题,出现了 WGL_ARB_render_texture 扩展,它允许 PBuffers 直接 绑定纹理,避免了复制过程。然而该方法并没流行。首先, PBuffers 需要独立 GL 上下文,操作烦琐,上下文切换操作 耗费资源;其次,PBuffers 拥有独立的颜色缓存、深度缓存、 模板缓存,且不能被共享,这就占用了昂贵了存储空间;最后, 该扩展是基于 Windows 系统的。综上因素限制了其使用范围。传统使用 CubeMap 渲染物体的方法是采用固定渲染管道,该方法采用顶点纹理坐标生成和顶点光照计算,并且不能 计算折射,所以生成真实感图形的效果有限。2 动态 CEM 理论及
6、算法2.1 使用 FBO(framebuffer object)渲染到纹理FBO1是 GL_EXT_framebuffer_object 扩展多种对 象中最主要的对象,它封装了所有的帧缓存相关的状态。每个 FBO 都被做为逻辑缓存(logical buffers)的标示符。逻辑缓冲 可以是颜色缓存、深度缓存或模板缓存。逻辑缓存能够独立创 建并绑定到 FBOs图 2 利用 FBO 直接渲染到纹理(framebuffer objects)上。一个 FBO 可以与一个以上的颜色缓 存,一个深度缓存和一个模板缓存绑定。一个逻辑缓存也可以 同时与多个 FBOS 绑定。每个 FBO 都有一套绑定点用来绑定
7、多 个逻辑缓存。当使用 FBO 时候,就可以使用离屏渲染,并将传 统的帧缓冲区自动关闭,将图像直接渲染到逻辑缓存,这样避 免了纹理复制过程,降低了计算机开销。如图 2 所示。2.2GPU 可编程渲染管道使用 GPU 可编程渲染管道大大提高了显卡编程的灵活精品论文性,随着显卡性能的逐日提高,可以由显卡绘制出更真实的特效。对于环境贴图来说,如果使用了逐象素(Per-Pixel)计算,将 会把效果表现的更加真实。本系统采用 GLSL 着色语言实现此 功能。Vword = M 4 x 4N word = M 3 x3 Vobj N obj(2)(3)2.3 CEM 算法2.3.1 渲染 CubeMap
8、基本原理是用摄象机对周围六个方向按照一定的角度照 相,获得六幅图片分别作为 CubeMap 的六个面如图 3 示。需要 进行环境映射的物体可能不断发生位置变化,所以需要首先将摄象机方向单位向量E = normalize (e V反射单位向量obj )(4)场景以及场景中的模型的物体坐标移动到世界坐标的原点,由R = (2N word E ) E(5)于六个方向摄象以及 CubeMap 上的二维纹理坐标原点在图片折射单位向量展开之后不全在左下角,所以然后还需要旋转至需要的方向, 转换矩阵如下:T = Nword E 1 2 * 1 ( Nword E ) 2 M i = Ri T(1)* N w
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FBO GPU 的动态 CEM 算法及实现 动态 算法 实现
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5194548.html