aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2014-11-25 22:24:29 -0800
committerChris Robinson <[email protected]>2014-11-25 22:24:29 -0800
commit1db83923446bde61b9c5cce7a6cb9c4da56269c9 (patch)
treec70f67e39d855c5d819ae5dd13f426e4bb07740a
parentbdbf6613ef4d57f15f5e7e3cbc31211a0c57e575 (diff)
Improve ambient gain calculations
-rw-r--r--Alc/effects/reverb.c8
-rw-r--r--Alc/panning.c2
2 files changed, 5 insertions, 5 deletions
diff --git a/Alc/effects/reverb.c b/Alc/effects/reverb.c
index 896dbaef..9170e1c9 100644
--- a/Alc/effects/reverb.c
+++ b/Alc/effects/reverb.c
@@ -1038,7 +1038,7 @@ static ALvoid Update3DPanning(const ALCdevice *Device, const ALfloat *Reflection
ALfloat length, invlen;
ALuint i;
- ComputeAmbientGains(Device, 1.0f, AmbientGains);
+ ComputeAmbientGains(Device, 1.4142f, AmbientGains);
length = earlyPan[0]*earlyPan[0] + earlyPan[1]*earlyPan[1] + earlyPan[2]*earlyPan[2];
if(!(length > FLT_EPSILON))
@@ -1054,7 +1054,7 @@ static ALvoid Update3DPanning(const ALCdevice *Device, const ALfloat *Reflection
earlyPan[2] *= invlen;
length = minf(length, 1.0f);
- ComputeDirectionalGains(Device, earlyPan, 1.0f, DirGains);
+ ComputeDirectionalGains(Device, earlyPan, 1.4142f, DirGains);
for(i = 0;i < MAX_OUTPUT_CHANNELS;i++)
State->Early.PanGain[i] = lerp(AmbientGains[i], DirGains[i], length) * Gain;
}
@@ -1073,7 +1073,7 @@ static ALvoid Update3DPanning(const ALCdevice *Device, const ALfloat *Reflection
latePan[2] *= invlen;
length = minf(length, 1.0f);
- ComputeDirectionalGains(Device, latePan, 1.0f, DirGains);
+ ComputeDirectionalGains(Device, latePan, 1.4142f, DirGains);
for(i = 0;i < MAX_OUTPUT_CHANNELS;i++)
State->Late.PanGain[i] = lerp(AmbientGains[i], DirGains[i], length) * Gain;
}
@@ -1167,7 +1167,7 @@ static ALvoid ALreverbState_update(ALreverbState *State, ALCdevice *Device, cons
else
{
/* Update channel gains */
- ComputeAmbientGains(Device, Slot->Gain*2.0f, State->Gain);
+ ComputeAmbientGains(Device, Slot->Gain*1.4142f, State->Gain);
}
}
diff --git a/Alc/panning.c b/Alc/panning.c
index a9d0f5cb..4a3541c2 100644
--- a/Alc/panning.c
+++ b/Alc/panning.c
@@ -92,7 +92,7 @@ void ComputeAmbientGains(const ALCdevice *device, ALfloat ingain, ALfloat gains[
// scaling the W channel input by sqrt(0.5). The square root of the
// base average provides for a more perceptual average volume, better
// suited to non-directional gains.
- gains[i] = sqrtf(device->Channel[i].HOACoeff[0]/1.4142f)*1.4142f * ingain;
+ gains[i] = sqrtf(device->Channel[i].HOACoeff[0]/1.4142f) * ingain;
}
}