英特尔和 Valve* 将英特尔® Embree 光线追踪技术添加至全新 Steam* Audio 插件

Counterstrike promotion image

2018 年 6 月,Valve* 宣布发布Steam* Audio 2.0 beta 14,该插件支持英特尔® Embree 技术。该软件显著提升了声音模拟性能,可为玩家提供更加沉浸式的体验,并大幅缩短开发人员的烘焙时间。英特尔携手 Valve 优化音频插件,性能测量显示性能得以大幅提升。

Valve 最新的库版本包含两个音频光线追踪选项。一种使用他们的标准内置库。另一种使用英特尔 Embree 库,其中包括英特尔® SPMD 程序编译器(英特尔® SPC),它是一种单程序-多数据程序编译器(统称被称为 ISPC),可进一步提升性能。

光线追踪是一种渲染技术,通过在图像平面中以像素的形式追踪光路来生成图像,然后模拟这些光路遇到不同对象时的效果。效果令人惊叹,但计算要求很大,因此最常见的用途是离线渲染静态图像或视频效果。


图1.光线的光线追踪图,适用于声音的点源(图片来源:Henrik/Wikimedia.org)。

人们曾说,光线追踪长期应用于视频游戏。但问题是光线追踪需要大量资源。在计算方面,音频要求比图形的要求少得多,因此音频部分目前可以在 CPU 上的运行时完成。

英特尔与 Valve 合作带来了两个优势:支持使用英特尔高度优化的库创建场景的开发人员加快编译速度,为消费者提供更加沉浸式的体验,因为逼真的声效可以增强游戏性。本文将从英特尔技术着手,深入探讨这两方面的优势。

英特尔® Embree 库取代之前的实施

英特尔 Embree 技术由英特尔实验室创建,以开源代码库的形式发布,针对单指令多数据 (SIMD) 要求进行了高度优化。英特尔 Embree 版本 1.1 于 2012 年在 SIGGRAPH 上发布,目前已更新至版本 3.2。英特尔 Embree 代码库最准确的描述是性能增强型光线追踪内核集,它面向发布的英特尔® 处理器优化,并支持英特尔® 流指令扩展(英特尔® SSE)英特尔® 高级矢量扩展指令集(英特尔® AVX)英特尔® AVX2英特尔® AVX-512 指令,适用于光路和声线。英特尔 Embree 还支持运行时代码选择,以选择遍历并构建最符合消费者 CPU 指令集的算法。

Valve 软件开发团队最初与英特尔合作,是为了将英特尔 Embree 库以音频光线跟踪选项的形式添加到他们的技术中。添加第二条路径非常简单;Valve 工程师使用各种场景来运行反射模拟算法,并在使用和不使用英特尔 Embree 技术的情况下测试相对性能。采用英特尔 Embree 库和英特尔 SPC 时的最终性能计算结果显示,性能得到了显著提升,详情请参阅 Valve* 信息发布

英特尔® SPC 简化矢量化代码编写

为了进一步提升性能,Valve 工程师还使用英特尔 SPC 重新编写了部分反射模拟算法,它是一种抽象,其中代码的编写似乎旨在实施串行,非 SIMD 执行,但编译器会转换代码以自动使用 SIMD 指令。英特尔 SPC 构建为 C 编程语言的扩展指令集。

集成英特尔 Embree 库后,英特尔与 Valve 继续合作,探索是否能通过采用英特尔 SPC 进一步实现加速,从而获益。Valve 工程师再次使用现有文档重新编写部分反射模拟算法,英特尔也为此提供了部分指导。添加英特尔 SPC 代码的其他工作相对简单,结果很好 — 用英特尔 SPC 替代部分代码,并经过几轮微调后,卓有成效。集成英特尔 Embree 之前,Valve 没有优化这部分代码,因为在光线追踪代码上花了很长时间。动态提升光线追踪性能后,他们发现了以前从未见过的其他瓶颈。他们使用英特尔 SPC 进行了进一步改进。

提升消费者的沉浸式体验

使用 Steam Audio 实时模拟混响或声音传播时,新插件支持游戏模拟更多声源的声音传播,细节更多,延迟更低,从而增强了沉浸感。无论音频是来自走廊的脚步声,街对面的枪声,还是同一房间中角色的对话,所有的声音都非常逼真。甚至还考虑表面特性,计算了所吸收的声能,以及听众应听到的声音大小。这些声能以及每条光线的到达时间用于构成脉冲响应 (IR),它是表示场景声学的音频滤波器;使用 IR 渲染声音能够产生声音从场景中发出来的效果。

英特尔 Embree 库和英特尔 SPC 所产生的性能影响在消费者看来就是延迟有所降低。如果光线追踪时间太长,那么屏幕上对象切换与相应的 IR 更新之间会出现明显的延迟。例如,如果声源从小房间进入大房间,光线追踪时间过长,音频无法更新至像是来自大房间的声音,直到最后几帧声音才会进来。性能提升使 Steam Audio 能够更详细地模拟更多声源,IR 更新时也不会产生明显的延迟。

使用光线追踪规划环境中的音频应该更直观;准确度更高,更加基于物理的音频环境可以消除部分耗时的调整任务,而在这之前,为了创建更逼真的音频环境,设计师必须进行这种调整。对消费者来说,效果比较微妙,但非常重要。在场景中移动的玩家一开始可能不知道声源也在四处移动。支持开发人员快速更新场景中的声音参数有利于打造逼真的声效,确保完整的沉浸感和更好的整体体验。

Scene from Counterstrike
图 2.战术游戏非常重视准确描绘足迹,就像《反恐精英*:全球攻势》(来源:critical-reviews.com)中的场景。

合作为生态系统带来的优势

此次与 Valve 的合作是英特尔致力于推动整个游戏生态系统发展的一个例子,他们将继续与其他公司密切合作,以改进游戏开发和提升最终用户体验。开发人员使用英特尔 Embree 库(而非 Steam Audio 中的内置光线追踪器)在场景中烘焙混响或声音传播时,可以显著提升性能。增强的环境中包含来自更多声源的声音传播、更丰富的细节、更低的延迟,显著提升了消费者的整体沉浸式体验。

对于寻求最新音频解决方案的游戏开发人员,Steam Audio 的增强型插件值得一试,还可显著加快游戏开发速度。如果要结合光线追踪执行离线操作,可以访问下方的链接免费下载英特尔 Embree 库。如果要采用开源编译器在 CPU 上实现高性能 SIMD 编程,请参阅有关英特尔 SPC 的文档

资料来源

有关编译器优化的更完整信息,请参阅优化通知