|
Wwise SDK 2025.1.2
|
The following sections list and describe the changes to Wwise between version 2023.1.5 and version 2024.1.0.
此处提供了有关平台的特定信息:
有关早期版本的信息,请参阅 过往版本的发行说明 章节。
ak.wwise.core.profiler.getMeters、ak.wwise.core.profiler.registerMeter 和 ak.wwise.core.profiler.unregisterMeter 以便从 Profiler 检索电平表数据。AkMemoryArena 作为默认内存分配器。它产生的内存用量和碎片与大多数通用内存分配器(如 TLSF)相当,同时还允许通过按需预留内存来实现资源的动态扩展。跟之前的默认内存分配器 (rpmalloc) 相比,在很多情况下都可将内存用量降低约 10。跟将 AkMemSettings::uVMSpanCount 设为 AkSpanCount_Small 时相比,预留内存的水印也略有改善;跟将 AkMemSettings::uVMSpanCount 设为 AkSpanCount_Huge 时相比,则有显著改善;同时,很少需要调用外部内存分配挂钩。另外,还将之前用于提供内存的回调由 AkMemSettings::pfAllocVM 和 AkMemSettings::pfFreeVM 更新为了 AkMemoryArenaSettings::fnMemAllocSpan 和 AkMemoryArenaSettings::fnMemFreeSpan。它们跟之前回调的功能差不多,不过实现起来更加简单。因为其对所提供内存的对齐方式并没有严格的要求,而且只需分配和释放底层部分的内存,无需考虑单独映射物理和虚拟内存。比如,在 Windows 和 POSIX 平台上,AkMemoryArenaSettings::fnMemAllocSpan 和 AkMemoryArenaSettings::fnMemFreeSpan 的默认实现现在可直接调用 std::malloc 和 std::free 来获取和释放所需内存(不需要调用 mmap 和 munmap)。各项内存分配和释放操作的现有回调仍然可用并保持不变。不过,建议最好试着改用新的默认内存分配器,因为现在有了更多的性能分析信息和配置。AkMemoryArenaSettings::fnMemAllocSpan 回调时提供的 UserData 值。AkSpatialAudioInitSettings::uMaxReflectionPaths 负责设置最多允许存在多少条经过验证的反射路径。借助启发式计算,系统会对所有潜在路径进行排序,然后确定哪些路径最为突出。在针对所有发声体全局查找 AkSpatialAudioInitSettings::uMaxReflectionPaths 后,将不再做任何路径计算。AK::SoundEngine::PrepareBus 函数。借助此函数,可管理总线上的效果器插件的媒体加载和卸载,而无需将媒体打包到 User-defined SoundBank 中。ak.wwise.core.blendContainer 前缀。同时,为 ak.wwise.core.object.get 函数添加了 WAAPI blendTracks 访问器。panner 访问器以便通过定位来检索声像摆位器对象。ak_wwise_ui_commands_execute 新增了 OpenRecycled 命令。该命令可直接打开对象,而不创建新的窗口选项卡。AkSpatialAudioInitSettings::fMaxDiffractionAngleDegrees,可指定可能的最大衍射角度。若超过此角度,则不计算传播路径并且不可闻。SetMaxReflectionPaths 函数,以便设置最多可有多少条反射路径。ak.wwise.core.audio.convert 和 ak.wwise.core.audio.setConversionPlugin 函数。AK::IAkLowLevelIOHook 接口中移除了 BatchCancel()。AK::Query::GetRTPCValue 不再阻塞。UnsetMedia 函数。请改用 TryUnsetMedia。PluginServiceType_TempAlloc 插件服务,以便于插件利用 Temp Alloc 和 Bookmark Allocator 内存分配系统。同时,将与 Temp Alloc 和 Bookmark Allocator 相关的公共函数和结构从 AkMemoryMgr.h 移到了新的头文件 AkTempAllocDefs.h。为此,可能需要更新有些文件包含项。–no-wwise-dat 命令行参数。不再生成 wwise.dat 文件。AkAudioObject 和 AkAudioObjects 从 AkCommonDefs.h 移到了 AkAudioObject.h。对于使用这些类型的插件,可能需要更新包含的头文件。同时从 AkCommonDefs.h 中移除了 IAkPluginMemAlloc.h、AkArray.h 和 AkString.h 的其他间接头文件包含项。这些头文件包含项可能也要更新。AK::Wwise::Plugin::PropertySet 服务。其包含 AK::Wwise::Plugin::V2::PropertySet::OpenBraces、AK::Wwise::Plugin::V2::PropertySet::CloseBraces 和 AK::Wwise::Plugin::V2::PropertySet::GetOpenedBraces。不过并未移除版本 1 中的函数,所以 API 与先前版本完全兼容。虽然未对 ak_wwise_plugin_host_object_store_v1 做任何更改,但更新了 AK::Wwise::Plugin::ObjectStore C++ 封装类以同时兼容两个版本。AkGeometryInstanceParams::RoomID。AkMemSettings::bEnableSeparateDeviceHeap。现在可通过将 AkMemoryArenaSettings::fnMemAllocSpan 和 AkMemoryArenaSettings::fnMemFreeSpan 设为 nullptr 来禁用 Device AkMemoryArena。AkMemSettings::uMemAllocationSizeLimit。现在每个 AkMemoryArena 都有自己的预留限值 AkMemoryArenaSettings::uMemReservedLimit。AK_PERF_RECORDING 宏。AkInitSettings::bOfflineRendering 成员允许在初始化时实施离线渲染。AK::SpatialAudio::SetMaxDiffractionPaths。SetMaximumReflectionPaths 重命名为了 SetMaxGlobalReflectionPaths。同时,将 uMaxReflectionPaths 重命名为了 uMaxGlobalReflectionPaths。IAkMixerPluginContext 接口添加了 RegisterAnonymousConfig 和 UnregisterAnonymousConfig 方法,以便在 ComputePositioning 中自定义扬声器配置。AkRoomParams::RoomPriority 由 AkUInt32 改为了 AkReal32。PrepareEvent() 现在可为 Actor-Mixer Hierarchy 和 Interactive Music Hierarchy 中的对象预备插件媒体。AK_EnableBusMeter_KPower,现在整条总线只会调用一次总线电平测量回调。若将 AkMeteringFlags 设为别的值,则每个 Audio Object 都会调用一次。AK BusTask 作业在开始执行前不再依赖于 CAkLEngine::PostRunVpls 作业。这样在完成 AK SwVoice 和 AK HwVoice 作业后会继续运行作业辅助函数。如此一来,便可缩短声音引擎时钟周期的总体挂钟时间。AkPlacementNew 从 AkObject.h 移到了新的文件 AkPlacementNew.h。对于使用这些类型的插件,可能需要更新包含的头文件。AK::SoundEngine::SetScalingFactor API 产生的影响。ak.wwise.core.transport.stateChanged WAAPI 通知。AkVariantBase.h 出现内存泄漏。UnregisterGameObject 会导致无法听到反射声。IAkMap::GetNextAssoc 时发生崩溃。PrepareEvent 后可能会出现堆栈溢出。PrepareEvent、PrepareGameSync、PrepareBank、LoadBank)和 Unprepare 函数(UnprepareEvent、UnprepareGameSync、UnprepareBank、UnloadBank),否则可能会发生崩溃。比如,在依次调用 LoadBank、PrepareEvent、UnloadBank、UnprepareEvent 时就可能发生崩溃。PinEventInStreamCache / UnpinEventInStreamCache 调用失衡会导致在终止声音引擎时发生死锁。ak.soundengine.seekOnEvent 时出现错误。AkMemoryArena,并在 AkMemoryArena 的配置和调整 中添加了有关 AkMemoryArena 本身的文档。