Add initial auxiliary send paths

This commit is contained in:
Chris Robinson
2007-12-18 15:10:21 -08:00
parent cf03bfa156
commit bdf16bf601
2 changed files with 23 additions and 6 deletions
+17 -6
View File
@@ -378,6 +378,14 @@ static ALvoid CalcSourceParams(ALCcontext *ALContext, ALsource *ALSource,
break;
}
switch(ALSource->Send[0].WetFilter.filter)
{
case AL_FILTER_LOWPASS:
WetMix *= ALSource->Send[0].WetFilter.Gain;
WetGainHF *= ALSource->Send[0].WetFilter.GainHF;
break;
}
if(ALSource->AirAbsorptionFactor > 0.0f)
DryGainHF *= pow(ALSource->AirAbsorptionFactor * AIRABSORBGAINHF,
Distance * MetersPerUnit);
@@ -576,12 +584,15 @@ ALvoid aluMixData(ALCcontext *ALContext,ALvoid *buffer,ALsizei size,ALenum forma
DryBuffer[j][2] += value*DrySend[2];
DryBuffer[j][3] += value*DrySend[3];
//Room path final mix buffer and panning
value = aluComputeWetSample(ALSource, WetGainHF, sample);
WetBuffer[j][0] += value*WetSend[0];
WetBuffer[j][1] += value*WetSend[1];
WetBuffer[j][2] += value*WetSend[2];
WetBuffer[j][3] += value*WetSend[3];
if(ALSource->Send[0].Slot.effectslot)
{
//Room path final mix buffer and panning
value = aluComputeWetSample(ALSource, WetGainHF, sample);
WetBuffer[j][0] += value*WetSend[0];
WetBuffer[j][1] += value*WetSend[1];
WetBuffer[j][2] += value*WetSend[2];
WetBuffer[j][3] += value*WetSend[3];
}
}
else
{
+6
View File
@@ -4,6 +4,7 @@
#define AL_NUM_SOURCE_PARAMS 128
#include "alFilter.h"
#include "alAuxEffectSlot.h"
#include "AL/al.h"
#define AL_DIRECT_FILTER 0x20005
@@ -62,6 +63,11 @@ typedef struct ALsource_struct
ALfilter DirectFilter;
struct {
ALeffectslot Slot;
ALfilter WetFilter;
} Send[1];
ALfloat LastDrySample;
ALfloat LastWetSample;