研发实战:如何用AMD TrueAudio Next加速音频渲染
文章相关引用及参考:映维网
本文来自原Impulsonic的工程副总监Lakulish Antani
(映维网 2018年02月27日)Phonon这组软件工具可以帮助开发者和音效设计师为各个平台的游戏和VR应用添加基物(physics-based)环境音频。从本质上讲,Phonon利用虚拟世界的布局和构成每个对象的材料来确定听众(用户)对不同声音来源的知觉。例如,Phonon可以确定玩家和NPC之间存在隔墙,这样来自NPC的声音听起来应该像是通过开着的大门或窗户进来。此外,Phonon可以自动改变声音,使它们在铺有地毯的走廊更安静,而在大教堂中则更加回响。Phonon是作为一组游戏引擎(如Unity或Unreal)和音频中间件(如Wwise或FMOD Studio)的插件起作用。我们可以将其简单类比为图形渲染技术:几何声学之于声音,就像是基物照明之于图形。
TrueAudio Next这个API可以帮助开发者利用GPU来执行音频渲染。基物音频由两个主要部分组成:音频模拟和音频渲染。音频模拟涉及捕获每种声音是如何受环境影响,即所谓的脉冲响应(IR)。我们需要为每个声源生成一个IR。这种IR可以含有多个通道,例如立体IR可以含有2个通道,或Higher-Order Ambisonics IR可以含有4个,9个或16个通道。根据性能限制,这可以游戏运行或预先计算时生成。音频渲染涉及使用IR来修改由每个声源发出的音频,利用一个名为卷积的过程。简而言之,TrueAudio Next是一个可以帮助你利用GPU进行卷积的API。在本文中,我们将重点介绍TrueAudio Next如何加速Phonon的音频渲染部分。
卷积的计算成本取决于两个主要因素:声音来源数量和IR的长度。较长的IR用于描述包含长时间回声和回响的环境,如大教堂或峡谷。许多声音来源都出现在逼真的,声学复杂的环境中。造成这种挑战的原因是,所有这些计算都必须在严格的时限内完成:等同于音频引擎处理的音频帧大小,一般约为20毫秒。这为CPU的使用提出了一个限制。我们通常不能使用大量的CPU内核,因为这可能会影响其他游戏引擎和操作系统任务,对绘制调用提交造成潜在的影响。TrueAudio Next则可以支持我们利用GPU,从而在音频渲染中获得巨大的速度提升。
通常情况下,Phonon都会利用卷积在CPU中处理每个音源发出的音频。随后,音频将发送至音频管道以实现进一步的效果处理或最终混音。借助TrueAudio Next,Phonon在接收到音频数据后即可马上将其发送至GPU。每个音频帧一次,GPU将对大批音频数据进行卷积运算,并将结果发送回CPU。这不仅可以将GPU的大规模并行计算能力带给音频渲染,而且TrueAudio Next还可以帮助Phonon在用户移动并与环境交互时持续更新IR,同时不会影响GPU卷积的性能。
Phonon的未来更新将令这一切变得公开透明:如果他们拥有一枚支持TrueAudio Next的AMD显卡,而且游戏开发者已经将Phonon设置为使用TrueAudio Next,则Phonon将在可用时自动使用TrueAudio Next,并且在物理上建模额外的声音(在以往,这将不得不转而依靠非配备系统上的传统声音渲染)。
下图比较了在不同IR长度下,CPU和GPU在不同数量的声音源上运行卷积所需的时间。黑线为音频帧的持续时间,而且是所有音频必须完成的时限。我们从图中可以看出,CPU耗费的时间远高于GPU。例如,对于2秒的IR,CPU在音频帧的21ms预算内只成功渲染了约20个声音源。与之相比,GPU在4秒IR内就渲染了64个声音源,而且仍然维持在时间限制以内。这表明TrueAudio Next能够帮助Phonon渲染更多的声音源或更长的IR。
系统配置
CPU:英特尔酷睿i7 4770(3.4 GHz)
内存:16GB
GPU:AMD Radeon R9 285(“Tonga”),2GB VRAM
操作系统:Windows 8.1
驱动程序:Catalyst 15.7.1
对于VR音频,设计师正在创造更复杂的声学环境,希望只有这样才能创建更优秀的临场感。由于VR和360度视频的出现,Ambisonics等格式的使用也增加了卷积的计算成本。TrueAudio Next代表了我们向高性能音频渲染迈出的重要一步,而这也是VR音频未来几年创新的关键基础。