aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2011-07-01 02:29:10 -0700
committerChris Robinson <[email protected]>2011-07-01 02:30:15 -0700
commita5ccae57793c75c6c4162d29be0ac6c5eae8ec63 (patch)
treed046ba61e2ba0781073658069ccb27cb48d15f6e
parent1635132fd52e99f17a12362b0458c736b873b9cf (diff)
Do air absorption with linear gain values
This copies the way the calculation is done with the wet path
-rw-r--r--Alc/ALu.c12
-rw-r--r--OpenAL32/Include/alMain.h2
2 files changed, 2 insertions, 12 deletions
diff --git a/Alc/ALu.c b/Alc/ALu.c
index 66cf6009..7cddb5a8 100644
--- a/Alc/ALu.c
+++ b/Alc/ALu.c
@@ -537,17 +537,7 @@ ALvoid CalcSourceParams(ALsource *ALSource, const ALCcontext *ALContext)
// Distance-based air absorption
if(AirAbsorptionFactor > 0.0f && EffectiveDist > 0.0f)
- {
- ALfloat absorb;
-
- // Absorption calculation is done in dB
- absorb = (AirAbsorptionFactor*AIRABSORBGAINDBHF) *
- EffectiveDist;
- // Convert dB to linear gain before applying
- absorb = aluPow(10.0f, absorb/20.0f);
-
- DryGainHF *= absorb;
- }
+ DryGainHF *= aluPow(AIRABSORBGAINHF, AirAbsorptionFactor*EffectiveDist);
//3. Apply directional soundcones
Angle = aluAcos(aluDotproduct(Direction,SourceToListener)) * (180.0/M_PI);
diff --git a/OpenAL32/Include/alMain.h b/OpenAL32/Include/alMain.h
index 5a5bbd93..7ed9c636 100644
--- a/OpenAL32/Include/alMain.h
+++ b/OpenAL32/Include/alMain.h
@@ -210,7 +210,7 @@ extern "C" {
#define DEFAULT_OUTPUT_RATE (44100)
#define SPEEDOFSOUNDMETRESPERSEC (343.3f)
-#define AIRABSORBGAINDBHF (-0.05f)
+#define AIRABSORBGAINHF (0.99426) /* -0.05dB */
#define LOWPASSFREQCUTOFF (5000)