aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/ALu.c
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2012-03-18 08:09:59 -0700
committerChris Robinson <[email protected]>2012-03-18 08:09:59 -0700
commitadb83ad3c0ee2b952db693af3a7ba9b82776e03f (patch)
tree1f1a8e1a292d3afecabc2c0ad411f6193e8dd447 /Alc/ALu.c
parent2d0e0289939d28d1da38600178eb107a9cdbc320 (diff)
Avoid converting positions to meters
Diffstat (limited to 'Alc/ALu.c')
-rw-r--r--Alc/ALu.c25
1 files changed, 12 insertions, 13 deletions
diff --git a/Alc/ALu.c b/Alc/ALu.c
index c868ad2f..fc0980e8 100644
--- a/Alc/ALu.c
+++ b/Alc/ALu.c
@@ -394,17 +394,17 @@ ALvoid CalcSourceParams(ALsource *ALSource, const ALCcontext *ALContext)
MaxVolume = ALSource->flMaxGain;
Pitch = ALSource->flPitch;
Resampler = ALSource->Resampler;
- Position[0] = ALSource->vPosition[0] * MetersPerUnit;
- Position[1] = ALSource->vPosition[1] * MetersPerUnit;
- Position[2] = ALSource->vPosition[2] * MetersPerUnit;
+ Position[0] = ALSource->vPosition[0];
+ Position[1] = ALSource->vPosition[1];
+ Position[2] = ALSource->vPosition[2];
Direction[0] = ALSource->vOrientation[0];
Direction[1] = ALSource->vOrientation[1];
Direction[2] = ALSource->vOrientation[2];
Velocity[0] = ALSource->vVelocity[0];
Velocity[1] = ALSource->vVelocity[1];
Velocity[2] = ALSource->vVelocity[2];
- MinDist = ALSource->flRefDistance * MetersPerUnit;
- MaxDist = ALSource->flMaxDistance * MetersPerUnit;
+ MinDist = ALSource->flRefDistance;
+ MaxDist = ALSource->flMaxDistance;
Rolloff = ALSource->flRollOffFactor;
InnerAngle = ALSource->flInnerAngle * ConeScale;
OuterAngle = ALSource->flOuterAngle * ConeScale;
@@ -464,9 +464,9 @@ ALvoid CalcSourceParams(ALsource *ALSource, const ALCcontext *ALContext)
if(ALSource->bHeadRelative == AL_FALSE)
{
/* Translate position */
- Position[0] -= ALContext->Listener.Position[0] * MetersPerUnit;
- Position[1] -= ALContext->Listener.Position[1] * MetersPerUnit;
- Position[2] -= ALContext->Listener.Position[2] * MetersPerUnit;
+ Position[0] -= ALContext->Listener.Position[0];
+ Position[1] -= ALContext->Listener.Position[1];
+ Position[2] -= ALContext->Listener.Position[2];
/* Transform source vectors into listener space */
aluMatrixVector(Position, 1.0f, Matrix);
@@ -562,13 +562,12 @@ ALvoid CalcSourceParams(ALsource *ALSource, const ALCcontext *ALContext)
WetGain[i] = SourceVolume * RoomAttenuation[i];
// Distance-based air absorption
- ClampedDist = maxf(ClampedDist-MinDist, 0.0f);
- if(AirAbsorptionFactor > 0.0f && ClampedDist > 0.0f)
+ if(AirAbsorptionFactor > 0.0f && ClampedDist > MinDist)
{
- DryGainHF *= aluPow(AIRABSORBGAINHF, AirAbsorptionFactor*ClampedDist);
+ ALfloat meters = maxf(ClampedDist-MinDist, 0.0f) * MetersPerUnit;
+ DryGainHF *= aluPow(AIRABSORBGAINHF, AirAbsorptionFactor*meters);
for(i = 0;i < NumSends;i++)
- WetGainHF[i] *= aluPow(RoomAirAbsorption[i],
- AirAbsorptionFactor*ClampedDist);
+ WetGainHF[i] *= aluPow(RoomAirAbsorption[i], AirAbsorptionFactor*meters);
}
if(WetGainAuto)