Guidance on the number of SFX Reverb instances

We’re building a game where it’s important for the player to understand the source of the sounds they’re hearing. As part of that, we want to apply a reverb effect of the room where the source is located, and not the listener. Using the correct reverb effect is also important in some situations to not break the immersion. (For a detailed discussion of the problem, see this article and this video).

The system we’re planning has conceptual similarities to Wwise’s “Rooms and Portals” system (although it’s much simpler).

To implement this, we need multiple “SFX Reverb” instances. The docs state:

As many as four instances of the reverb DSP can be added to the FMOD DSP graph, though each instance incurs a cost of more CPU time and memory usage.

which suggests that the effect is expensive, and we cannot have more than four. But the docs also state:

SFX Reverb is a time domain low CPU cost with high quality and flexibility.

which sounds like it’s a rather cheap effect and we can have multiple of them, like 12 or so.

As a quick test, I added five reverb instances in a row to an event, and FMOD doesn’t print a warning when I play that event in the game. So apparently, more than four reverb instances can be used.

How many instances can be effectively used, is there a hard limit? Do you have recommendations for games targeting modern desktop PCs?

The limit of four reverb DSP instances only applies to the global reverb - which is to say, to the reverb DSPs created by using System::setReverbProperties and the Reverb3D API. This limit does not apply to reverb DSP units created using System::createDSP or System::createDSPByType and attached to channels and channel groups in the same manner as other DSP units. (As you’ve correctly intuited, the limit of four reverb DSPs in the global reverb isn’t because the resource cost of the reverb effect is high; rather, it’s an artifact of the global reverb originally being designed for compatibility with what is now considered legacy software.)

As you may have read in our documentation on the topic, we classify the reverb DSP effect as a “medium overhead” effect, which makes it reasonably affordable; you probably wouldn’t want to put one on every channel and channel group in your game, but “twelve or so” is unlikely to break most resource budgets. That being said, you know your requirements better than we do, so we recommend profiling your game to determine whether the resource consumption of your game’s effects is acceptable.

1 Like