This function converts raytracing energy values to low-pass filter gain values. The `GainFormula` is invoked twice per source emitter - Once with low-frequency energy values - Once with high-frequency energy values The results of these functions are stored directly on the emitter's filter and accessed via `listener.GetTargetFilter(target))`. The default formula specifies that 15% of occlusion energy or 15% of permeation energy is required for an emitter to be at max volume: ```cs target.GainFormula = (bool lowFrequency, int occlusionRayCount, int permeationRayCount, int permeationBounceCount, float occlusionEnergy, float permeationEnergy) => { float gain = 0.0f; // 15% of energy is considered enough for the emitter to be at full volume if (occlusionRayCount > 0) { float rayThreshold = 0.15f * occlusionRayCount; gain += occlusionEnergy / rayThreshold; } if (permeationRayCount > 0) { float rayThreshold = 0.15f * permeationRayCount * permeationBounceCount; gain += permeationEnergy / rayThreshold; } return MathF.Min(1, gain); } ``` Parameters: - `lowFrequency` - indicates whether `GainFormula` is invoked with low-frequency energy values or high-frequency energy values (`GainFormula` is invoked twice) - `occlusionRayCount` is the number of occlusion rays that were cast by the source emitter - `permeationRayCount` is the number of permeation rays that were cast by the source emitter - `permeationBounceCount` is the number of bounces per permeation ray - `occlusionEnergy` is in the range 0.0 to 1.0, where 1.0 means all occlusion rays discovered the target emitter with maximum energy remaining (i.e. no occlusion) - `permeationEnergy` is in the range 0.0 to 1.0, where 1.0 means all permeation rays discovered the target emitter with maximum energy remaining (i.e. all rays passed through air)