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

Counterstrike promotion image

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

Valve 最新版本的库包含两个音频光线追踪选项。一种使用 Valve 标准内置库。另一种使用英特尔 Embree 库,其中包括英特尔® SPMD 程序编译器(Intel® SPMD Compiler)。这是一种单程序-多数据程序编译器(简称为 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 库和英特尔 ISPC 时,性能得到了显著提升,详情请参阅 Valve* 信息发布

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

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

集成英特尔 Embree 库后,英特尔与 Valve 继续合作,探索是否能通过采用英特尔 ISPC 进一步实现加速,从而获益。Valve 工程师再次使用现有文档重新编写部分反射模拟算法,英特尔也为此提供了部分指导。添加英特尔 ISPC 代码的其他工作相对简单,即用英特尔 ISPC 替代部分代码,并经过几轮微调后,卓有成效。集成英特尔 Embree 之前,Valve 并未优化这部分代码,因为仅在光线追踪代码上就已耗费大量时间。动态提升光线追踪性能后,他们遇到了之前未曾考虑过的其他瓶颈,但在英特尔 ISPC 的协助下进行了进一步优化。

提升用户的沉浸式体验

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

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

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

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

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

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

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

资料来源

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