基于GPU的实时光线投射算法
2022-01-24
来源:好走旅游网
维普资讯 http://www.cqvip.com 40 2008,44(9) Computer Engineering and Applications计算机工程与应用 基于GPU的实时光线投射算法 何 晶,陈家新,黎蔚 HE Jing,CHEN Jia-xin,LI Wei 河南科技大学电子信息工程学院,河南洛阳47 1003 Electronic&Information Engineering College,Henan University of Science and Technology,Luoyang,Henan 47 1003,China E—mail:hejing_hj2006@126.com HE Jing,CHEN Jia-xin,LI Wei.Real time GPU-based raycasting.Computer Engineering and Applications,2008,44(9): 40-42. Abstract:This paper presents a volume rendering approach on current programmable consumer graphics hardware using ray— casting algorithm in the fragment shader of OpenGL2.0,which exploits the new features of modem consumer graphics hardware.In order to process the Large Volume Data Sets,in the first we directly load the volumetric data into texture memory,which has al— ready defined in the form of 3D texture.In the second we utilize pre-integrated classiifcation to improve the quality of rendering. At last,gradients are computed in real—time,which greatly improves the eficiency off ray—casting.The experiment results show that the approach can achieve h J gh quality image and interactive frame rates. Key words:ray casting;the programmable graphic hardware;fragment shader;3D texture 摘要:介绍了一种基于GPU(可编程图形处理单元)的快速实时光线投射算法。为满足大规模体数据集的绘制要求,利用当前 GPU的新特性,直接将体数据作为纹理载入显存,采用预积分分类方法在GPU中对体数据进行重采样和分类,避免了计算机主内 存与GPU纹理内存之间数据交换的瓶颈问题;利用硬件支持的三维纹理和片元着色器,实时计算每个体素的梯度,实现高质量的 光照,保证高质量的图像绘制效果。实验结果表明该方法在医学三维数据场可视化中,能够实时、高效地生成高质量的交互式体可 视化图像。 关键词:光线投射;可编程图形硬件;片段着色器;三维纹理 文章编号:1002—833 1(2008)09—0040—03 文献标识码:A 中图分类号:TP3 17.4 1引言 直接体绘制是非常重要的体数据三维可视化技术,目前主 要包括以下 冲算法:RayCasting算法、splatting(FootPrint)算法、 Shear—Warp算法、MIP算法、3D Texture Mapping(三维纹理映 度并行计算和多数据流处理能力强大,数据传输带宽不断提 升;而且显存容量日益增大,多数中低端通用显卡的显存容量 都已经达到128 MB或者256 MB,高端的甚至达到512 MB,使 得中小规模甚至大规模的体数据可以一次性地以三维纹理形 式装入显存,避免了由于显存过小而将体数据进行分块造成的 系统主存到纹理内存之间的体块数据并行传输所导致的绘制 效率严重下降问 ”。因此,利用图形硬件的三维纹理功能进行 体绘制是当前最为高效的体绘制方法,同时还可以应用相应的 体绘制加速技术。 本文以光线投射算法为基础算法,用预积分分类法对体数 据标量值进行分类转换,充分利用GPU并行数据流处理的能 射)算法等,它们的优点在于绘制时不需要生成中间几何图元, 而是根据离散的三维体数据标量值直接绘制成像,绘制过程充 分利用了体数据标量值来获得全局信息。然而,体数据的存储 量非常大,直接体绘制又涉及大量的插值运算和颜色混合运 算,计算量巨大,这些算法往往难以满足体绘制积分实时成像 和交互式帧率的要求。随着对直接体绘制技术研究的不断深 入,产生了多种体绘制加速技术,如射线提前终止法、自适应采 样法、空间跳跃采样法、基于模板的加速算法、基于有效组织等 方法,但是从目前的研究结果看,要实现体数据的实时绘制,必 须走软硬件结合的道路,充分利用软件和硬件的能力,来解决 实时绘制时图像绘制速度与绘制质量之间的矛盾。 力,在通用Pc的图形硬件上实现基于GPU的快速光线投射体 绘制算法。光线投射算法具有图像绘制质量高,视点变换不会 造成图像走样和突变,且绘制性能与数据规模无关的特点。而 预积分分类法对任何非线性传递函数,都能在不增加采样率的 为了获得实时高质量的体绘制图像,基于图形硬件的体绘 制方法已成为目前最具有优势的发展方向。当前,可编程图形 硬件发展迅速,其SIMD(Single Instruction Multiple Data)的高 情况下为体绘制积分方程赋于正确的颜色值和不透明度值,从 而保证绘制图像的质量。绘制时首先将体数据标量值读出后以 三维纹理形式一次性全部装入纹理内存,然后将计算出来的预 基金项目:国家自然科学基金(the National Naturla Science Foundation of China under Grant No.60642009)。 作者简介:何晶(1979一),男,硕士研究生,主要研究方向为计算机图形图像处理与虚拟现实技术;陈家新(1962一),男,教授,博士,主要研究方向为 虚拟现实技术、计算机图形与图像处理、智能控制;黎蔚(1960一),女,副教授,主要研究方向为计算机图形图像处理与虚拟现实技术。 收稿日期:2007—09—18 修回日期:2007—11-30 维普资讯 http://www.cqvip.com 何 晶,陈家新,黎蔚:基于GPU的实时光线投射算法 2008.44(9)41 积分查找表以二维纹理形式装入显存,最后在片段着色器中实 现光线投射算法,在保证较高图像质量的前提下绘制速度可以 达到实时交互的帧率。此外,还可以在片段中实时计算梯度,实 现体绘制的明暗处理。 率。因此,能够提高体绘制方法的执行效率,并同时获得较高的 图像质量。 3基于GPU的光线投射算法 随着半导体芯片集成度的提高,图形处理芯片GPU(Graphic Processing Unit)的并行处理能力和处理速度越来越强。现在的 GPU不仅并行处理能力远远超过了CPU,而且抛弃了过去的 固定渲染管线,大多数GPU开始支持动态循环和分支,成为灵 活的可编程管线。而基本的光线投射算法非常适合片段着色器 2相关研究 2.1基于三维纹理映射的体绘制方法 基于三维纹理体绘制方法最早是由Cullip r21等人在1993年 提出,Cabralts ̄于1994年采用三维纹理映射的方法实现了对大 小为2563的体数据的交互式绘制。采用基于3D纹理映射的体 的这种并行流处理,因J}匕:限容易在片段着色器中实现该算法 , 绘制时,用整个体数据生成一个3D纹理,同时确定体数据空 间坐标和体数据3D纹理坐标的转换关系,根据这个关系,可 以确定片层多边形各个顶点的3D纹理坐标,从而可以利用3D 纹理硬件的三线性插值计算片层多边形内部各个采样点上的 体数据采样值。基于三维纹理硬件的直接体绘制方法最大的缺 点是缺少光照,图像真实感不强。尽管后来Rezk—Salama141和 Dechille嘲等人对该方法进行改进添加了光照,但是由于所有的 明暗处理操作都是基于经过插值的非归一化的梯度进行的,造 成了光照的伪影和绘制速度的下降。 2.2分类方法 在计算体绘制积分时,由于获得颜色和不透明度值方法的 不同,最终所产生的图像质量也会有较大差别。根据插值运算 和应用传递函数两者的先后顺序,可将分类方法分为先分类和 一k k m ¨_三 后分类两种。由于后分类体绘制方法能更加准确地产生采样点 出 的光学属性,也因此能生成较好质量的图像。然而,一 ~先分类和后 二眦g 础~一 -呈a ~ y一分类体绘制积分都没有很好地解决重构三维数据场所需的采 样频率问题。进行体绘制积分时,若采样频率不能满足该奈魁 斯特频率(the Nyquist ̄equency),会造成图像质量下降,但是 过高的采样频率又会增加运算量,降低绘制速度。 为了解决采样频率的问题,Klaus Engelr 61等人于2001年提 出了预积分分类法。基=f预积分分类的体绘制积分方法计算射 线x上相邻两个采样点之间线段的颜色和不透明度,而其它 分类方法只计算每个采样点位置的颜色和不透明度。因此与一 般的体绘制方法相比,预积分分类体绘制方法计算图像象素强 度,时,首先对射线上每个小线段进行积分,得到厚度为d的 薄板层的颜色和不透明度值,再进行体绘制积分运算;而先分 类和后分类的方法只计算采样点处的颜色和不透明度值作体 绘制积分运算,因此也称前者为slab—by—slab的积分方式,后 者为slice—by—slice积分方式。如图1所示。 图1体数据分类示意图 对于任何非线性传递函数,预积分分类的体绘制方法都能 够在不增加标量场 ( )的采样频率的情况下,正确为体绘制积 分方程赋值,降低了重构三维连续数据场所需的奈魁斯特频 其伪代码基本如图2所示。 图2基于光线投射算法的片段程序伪码 3.1预积分分类法 预积分分类法可以获取较高的图像绘制质量,然而预积分 查找表的计算比较费时。查找表有三个参数,分别为线段起始 位置的标量值 厂= ( (id)),线段末尾位置的标量值sb=s( (( + 1)一 d))和线段的长度d。如果线段长度d为常数,即各线段长度 相等,则查找表只需两个参数,即只依赖于 厂和 6,这样可以 减少计算量。如图3。一 s( (A)) : 0j d j :0 I———■——●——1. -—■— 。。~ (id) ((i+1)d) (A) 图3沿视线 方向对s( )采样 Klaus Engel等人对查找表进行了优化:首先是设定射线 x的采样长度d为常量,这样查找表就降为二维,只有变量 厂 和sb;其次当传递函数只对特定的标量值S做局部变动时,没 有必要重新计算整个查找表,而只对产生变化的那一部分重新 计算;最后通过对传递函数c(S)和 ( )引入积分函数加速方程 求解。因此,相应的不透明度和颜色计算公式为: ( ,sb,d)一1-exp(一 ( )一 sb))) (1) SO——sy ~ j c( ,sb,d)一 __(,(( b)一 ( )) (2) D—sj r r s. 其中 ( )=} ( )ds,K(s)=}c( )ds。 u J 0 3.2基于片段着色器的高质量光照 在利用纹理映射绘制体数据时,为了实现光照处理就必须 提供相应体数据的表面梯度,然而着色器并不直接提供梯度计 算。倘若预先计算梯度会造成两方面的问题:一是梯度计算非 一维普资讯 http://www.cqvip.com
42 2008,44(9) Computer Engineering and Applications计算机工程与应用 常耗时,计算出来的梯度数据量将会是体数据量的3倍,而且 一些计算结果用不上;二是体数据和梯度同时载入纹理内存将 会占用4倍于体数据的纹理内存,这样必然不利于处理大规模 的体数据。因此,基于片段着色器的可编程特性,我们考虑实时 计算梯度,在片段着色器中应用Phone光照模型进行光照渲 染。具体步骤如下: 步骤1利用片段着色器中的卷积操作,对纹理采样获得 图4(a)对头部体数据的绘制图4(b)对脚部体数据的绘制 当前采样点的标量值和其周围采样点的标量值计算该点的梯 度值(G ,Gy, ),并进行归一化处理。这里可以采用中心差分 5结论 本文提出一种有效的基于GPU的快速光线投射算法,避 或者3x3x3的Sobel算子,由于中心差分采用6邻域来计算中 心体素的梯度,而3x3x3的Sobel算子采用26邻域计算梯度, 相对来说3x3x3的Sobel算子计算的梯度值更为准确。 步骤2根据光照方向矢量L和观察者视线 计算半角矢 量日。 日: IL(3) + 步骤3将k。环境光系数,k 散射光系数,k 镜面光系数作 为一致变量传入着色器。 步骤4根据Phong光照模型进行光照计算。 /=kjo+kJ+(N・L) (Ⅳ。L) (4) 4实验结果与讨论 本文应用三维纹理映射和片段着色器,实现了基于GPU 的实时光线投射算法。试验平台为:AMD双核3600+,512 MB 内存,NVIDIA GeForce7100(128 MB显存),操作系统为Win— dows Vista。采用Vc++和OpenGL 2.0对算法进行了实现,结 果表明该算法能够实时生成高质量的可视化图像。表1显示了 对三组CT扫描体数据进行绘制的性能参数。其中预处理时间 为少量计算和体数据载入图形硬件的时间。 表1普通GPU raycasting算法与本文算法绘制结果对比 绘制算法 体数据数据规模 预处理/s显存占用/MB帧速率/(f/s) 可以看出由于体数据一次性装入纹理内存,光照明暗处理 所需要的归一化梯度采用实时计算,避免了存储梯度所需的巨 大纹理内存空间,整个纹理内存占用量只为普通算法的四分之 一。对比一般体绘制软件算法,本文的算法大大节约了体数据 的预处理时间,而且显存的占用基本上是普GPU体绘制算法 的四分之一,同时保证了实时交互所需要的帧率。图4为对头 部和脚部的绘制结果,绘制图象清晰,可以清楚地显示出体数 据中的内部结构。 免了CPU与GPU之间的数据交换,利用GPU的高度并行计算 和多数据流处理能力计算梯度,对体数据进行光线投射计算, 明显减少了预处理计算梯度的时间,节省了软件算法中梯度存 储所需的显存。实验证明,该算法充分利用了通用图形硬件灵 活的纹理操作和强大的并行处理能力,避免了体数据的巨大计 算量成为体绘制的瓶颈。采用普通Pc机上的可编程图形处理 器使得我们能够由硬件加速完成过去只能由软件计算完成的 直接体绘制方法,而且能与软件计算方法得到同样的结果,绘 制速度和性能得到极大的提高,能够满足大规模体数据实时绘 制的需要。 参考文献: . [1]笪良龙,杨廷武,李玉阳,等.基于Pc硬件加速的三维数据场直接 体可视化【J1.系统仿真学报,2005,17(10):2422—2423. [2]Cullip T J,Neumann U.Accelerating volume reconstruction with 3D texture mapping hardware,Technical Report UNC一1993—027[R1.Un— versity of North Carilina,1993. 【3]Cabral B,Cam N,Foran J.Accelerated volume rendering and tomo- graphic reconstruction using texture mapping hardware【C]//Pro— ceedings ACM Symposium on Volume Visualization 94,1994:91—98. [41 Rezk—Salama C,Engel K,Bauer M,et a1.Interactive volume render- ing on standard PC graphics hardware using multitexturing and multi—stage rasterization[C]//Proc of Eurographics,SIGGRAPH Work- shop on Graphics Hardware,Interlaken,Switzerland,August 2000: 1O9—118. [5]Daehille F,Kreeger K,Chen B,et a1.High—quality volume render— ing using texture mapping hardware[C]//Proc of Eurographics,S1G— GRAPH Workshop on Graphics Hardware,Lisbon,Portugal,August 1998:69—76. 【6]Engel K,Kraus M,Ertl T.High-quality pre—integrated volume ren— dering using hardware—accelerated pixel shading【C]//Eurographics/ Siggraph Workshop on Graphics Hardware’01.Annual Conference Series.Addison—Wesley Publishing Company,Inc.2001:9—16. 【7]Stegmaier s,Strengert M,Klein T,et a1.A simple and flexible vol— ume rendering framework for graphics-hardware-based raycasting[C]// Proceedings of the International Workshop on Volume Graphics’ 05,2005:187—195.