aboutsummaryrefslogtreecommitdiffstats
path: root/OpenAL32
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2017-05-19 18:59:04 -0700
committerChris Robinson <[email protected]>2017-05-19 23:13:39 -0700
commita306407b6713f0e17d1258e512a465a254f9fba3 (patch)
tree03f93c10b6de2e6a735f6f6795fbabb6a8f4d422 /OpenAL32
parentefd797a6f67d291ef82dd95697b5a1beb17590cc (diff)
Apply more proper air absorption to the wet path
This properly accounts for the room rolloff factor for normal air absorption (which makes it none by default, like distance attenuation), and uses the reverb's decay time, decay hf ratio, decay hf limit, and room air absorption properties to calculate an initial hf decay with the WetGainAuto flag. This mirrors the behavior of the initial distance decay.
Diffstat (limited to 'OpenAL32')
-rw-r--r--OpenAL32/Include/alAuxEffectSlot.h2
-rw-r--r--OpenAL32/alAuxEffectSlot.c2
2 files changed, 4 insertions, 0 deletions
diff --git a/OpenAL32/Include/alAuxEffectSlot.h b/OpenAL32/Include/alAuxEffectSlot.h
index 4eb340a4..7126f8f5 100644
--- a/OpenAL32/Include/alAuxEffectSlot.h
+++ b/OpenAL32/Include/alAuxEffectSlot.h
@@ -121,7 +121,9 @@ typedef struct ALeffectslot {
ALfloat RoomRolloff; /* Added to the source's room rolloff, not multiplied. */
ALfloat DecayTime;
+ ALfloat DecayHFRatio;
ALfloat AirAbsorptionGainHF;
+ ALboolean DecayHFLimit;
} Params;
/* Self ID */
diff --git a/OpenAL32/alAuxEffectSlot.c b/OpenAL32/alAuxEffectSlot.c
index 5d110500..8a990584 100644
--- a/OpenAL32/alAuxEffectSlot.c
+++ b/OpenAL32/alAuxEffectSlot.c
@@ -615,7 +615,9 @@ ALenum InitEffectSlot(ALeffectslot *slot)
slot->Params.EffectState = slot->Effect.State;
slot->Params.RoomRolloff = 0.0f;
slot->Params.DecayTime = 0.0f;
+ slot->Params.DecayHFRatio = 0.0f;
slot->Params.AirAbsorptionGainHF = 1.0f;
+ slot->Params.DecayHFLimit = AL_FALSE;
return AL_NO_ERROR;
}