刘宏义,杨 明,肖 瑜
(中国人民解放军边防学院 战术教研室,陕西 西安710108)
实时声音处理有时会产生高强度的计算,因为许多算法经常会被同时处理。可编程的数字信号处理器对于专业的开发者而言还可以接受,但对普通消费者却因价格高而难以承受。文中将原本放在CPU上处理的程序转嫁到GPU上,从而在GPU相对较大的SIMD(单指令多数据)并行流处理能力上获益,如图1所示。由此,便可允许建立自定义、高质量的回声模型。该回声模型能够根据场景的几何数据实时计算,相比于依靠在硬件中预设参数有明显优势。
图1 GPU和CPU计算能力的比较
GPU向可编程管线的转移及其不断提高的可编程能力,使其允许被用做一个强大的通用处理器。如图2所示的管线已能够被一般的应用程序编程所用,而并非只适用于特定的图形程序,其被称为GPGPU(通用图形处理器)编程。该方法已被成功地运用到人工神经网络[1]和布料物理模拟[2]的应用程序中。
对于GPGPU而言,片段着色器更为有用,这是因为片段管线比顶点管线多,同时片段处理器处于管线末端,可允许直接输出。着色程序可以用汇编语言或高级着色语言编写,例如Cg、HLSL和GLSL。而文中倾向于使用GPU的Brook语言,因该语言是为处理流而特别设计的,且通过生成具有C++运行时的Cg代码,可直接在GPU上运行。
图2 当前的图形管线
诸如多处理单元或乘法累加指令等GPU特性,与某些专业的音频数字信号处理器硬件[3]类似,因此GPU便可成为一个有效的数字信号处理器的替代品。GPU操作的是包含4个浮点数的向量,其通常表现为RGBA分量。因此,音频采样数据通常被保存在某个分量中,且在提交给GPU处理之前,会将一维采样数组映射到二维矩形纹理中。
使用GPU来处理音频是否会明显提升性能,文献[4]通过以下方式进行验证。分别在图形硬件和CPU上使用着色语言来处理一组数字信号效果,通过实验发现,在GPU上处理合声算法和压缩算法时,执行的时间明显减少。类似于滤波器和延迟效果的其他算法则会稍慢。而在处理与GPU的流处理模型相适应的任务时,GPU才具有优势。因此,并非所有的音频编程技术均可通过在GPU上处理而得到优化。
合声效果是给音频信号加入了一个很短的延迟以及轻度的音调调高,目的是增加一种能被听见的“层次”效果[5]。合声效果可帮游戏建立一种超现实主义的“梦幻”效果。该效果的处理需要两个纹理查找过程。
与数据压缩无关的音频压缩效果降低了音频信号的动态范围,并对平衡游戏的整个音频混合是有利的。许多其他音频效果,如延迟和标准化处理,也可通过类似的方法进行优化。该效果需要一次纹理查找过程。
使用GPU得到更优效果的另外一种音频处理技术就是室内效果,其也已经通过了验证。从环境几何体来实时计算共鸣、遮挡物和闭塞需要较大的计算量。射线跟踪是实现该效果的方法之一,且该方法又适合在GPU中执行。而室内效果的射线跟踪和图形学中的射线跟踪不同,因被计算的场景无需精确的视觉表示,且通常可使用更小的渲染目标。射线被跟踪的路线只是从声音源到听众的位置而已。
场景几何体包含用来描述墙的多边形或大小足以影响声音环境的游戏物体。在该算法的预计算阶段,几何体可被分割成二叉树(BSP)。在这一过程中,实心的突出区域作为二叉树的叶子,计算好的二叉树用来建立一个入口图,该入口图反映了叶子间的通路。若一个入口和多边形处于某个叶子的同一平面上,则叶子必须再次分割。如果需要再将叶子分割一次,则需要计算新的入口和通路。入口和平面的信息被保存在分离的一维纹理中。叶子信息包括了平面纹理的索引及其所包含的平面数量[6-7]。每当场景几何体发生变化时,均会执行该步骤。
片段着色器的执行如下:首先计算每条射线与当前叶子的交点,然后传播到新叶子处,接着被反射的射线与监听对象相交。监听对象的位置可被近似地看作一个包围球面。若使用监听对象来代表游戏玩家,则会经常用到玩家角色的包围体积。
随后便可以创建环境混响模型。该过程包括渲染目标纹理和最终的射线数据获取。此外使用了3个渲染目标纹理分别是:保存状态信息、射线源、射线方向。
并非所有的音频算法均能够从GPU的并行计算中得到优化。然而,在图形硬件上执行某些音频效果算法和听觉射线跟踪任务,的确能够达到加速的效果。除了文中介绍的音频技术以外,GPU还在某些区域显示出了超越CPU执行力的优势。例如,在音频处理中的FFT,当基于PCI-Express的显卡逐渐普遍时,将大量的数据从显卡内存传输到系统则不再困难。这些技术均展示了GPU可用来优化诸多音频算法,甚至可替代音频数字信号处理硬件。
[1]ROLFES T.Artificial neural networks on programmable graphics hardware[M].USA:Game Programming Gems 4,Charles River Media,2004.
[2]ZELLER C.Cloth Simulation on the GPU[M].Siggraph:NVIDIA Corporation,2005.
[3]GALLO E,TSINGOS N.Efficient 3D audio processing with the GPU[C].Proceedings of the ACM Workshop on General Purpose Computing on Graphics Processors,ACM,2004.
[4]WHALEN S.Audio and the graphics processing unit[M].New York:Willy Press,2006.
[5]JEDRZEJEWSKI M,KRZYSZML M.Computation of room acoustics using programmable video hardware[M].Springer Netherlands:Computer Vision and Graphics,2006.
[6]JOHN D O,DAVID L,NAGA G,et al.A survey of generalpurpose computation on graphics hardware[J].Computer Graphics Forum,2007,26(1):80-113.
[7]BUCK,I.GPGPU:general purpose computation on graphics hardware[M].Berlin:Siggraph,2004.