Reverb Energy Cap

It's difficult to compute the maximum amount of reverb energy that can return to a player's ears ahead-of-time, since every environment is different. Previously the volume of reverb was controlled by the energy in all reverb rays that return to the emitter, and dividing it by emitter.ReverbRayCount * emitter.ReverbBounceCount.

However not all energy should have to return to the emitter in order for reverb to be at max volume. Especially with higher ReverbBounceCount values, rays will naturally travel further away from the emitter. But this means less energy can return to the emitter, and therefore the volume of reverb drops.

This is inaccurate - rather than comparing the returning energy against the total possible returning energy - we should compare it against a user-defined threshold. This gives you control over how much energy needs to return to the emitter for reverb to be at max volume.

In the code below, only 20% of energy is needed for reverb to be at max volume. If reverb is too loud, you can increase this energy cap.

var listener = new Emitter()
{
    ReverbRayCount = 128,
    ReverbBounceCount = 64,
    ReverbEnergyCap = 128 * 64 * 0.2f, // 20%
}