Improve ambient gain calculations

This commit is contained in:
Chris Robinson
2014-11-25 22:24:29 -08:00
parent bdbf6613ef
commit 1db8392344
2 changed files with 5 additions and 5 deletions
+4 -4
View File
@@ -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);
}
}
+1 -1
View File
@@ -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;
}
}