Rays can also be cast outwards from each voice to determine reverb properties for each voice. To enable this, set both `context.voiceReverbRayCount` and `context.voiceReverbBounceCount` to a value greater than 0. See: [[Creating a Raytracing Context#voiceReverbRayCount and voiceReverbBounceCount|Creating a Raytracing Context > voiceReverbRayCount]].
However, it's expensive to have many reverb effects active at one time. Audio APIs typically recommend having around 4 reverb effects maximum to prevent stuttering / glitches.
Therefore the SDK will attempt to 'group' the voice's EAX properties together. The number of desired groups is controlled via the `context.blendedReverbPresetAmount` property.
See the example below for accessing all computed EAX properties:
```cs
List <Voice> voices = [];
// Wait for raytracing to run once
if (context.ReverbCalculated)
{
// Listener and Outside EAX properties are always calculated
var diffusion = context.ListenerEAXReverb.Diffusion;
var density = context.OutsideEAXReverb.Density;
// Access grouped EAX
foreach (var groupedEax in context.BlendedEAXReverb)
{
var gainLF = groupedEax.GainLF;
}
foreach (var voice in voices)
{
// Access a voice's raw EAX properties
var decayTime = voice.eaxReverb.DecayTime;
// Get the grouped EAX properties for this voice
var index = voice.blendedEAXIndex;
var groupedEax = context.BlendedEAXReverb[index];
// Check if we should use the outside EAX properties
var useOutside = voice.useOutsideEAX;
var outsideEax = context.OutsideEAXReverb;
}
}
```