OpenAL sound: Use a simpler distance model

In createPlayingSoundAt(), AL_ROLLOFF_FACTOR is not set, so it has
the default value of 1.0, this makes the equation of the currently
used AL_EXPONENT_DISTANCE distance model identical to the equation
of the simpler AL_INVERSE_DISTANCE distance model.

Using AL_INVERSE_DISTANCE means an exponent is not processed,
exponents are quite intensive to process.
There is no change in sound attenuation behaviour.

The commented-out AL_ROLLOFF_FACTOR value is removed as it would
now have a different effect if used.
This commit is contained in:
paramat 2017-01-24 10:16:56 +00:00
parent e2ad76f910
commit a5ee7139a5

@ -317,7 +317,7 @@ public:
return; return;
} }
alDistanceModel(AL_EXPONENT_DISTANCE); alDistanceModel(AL_INVERSE_DISTANCE);
infostream<<"Audio: Initialized: OpenAL "<<alGetString(AL_VERSION) infostream<<"Audio: Initialized: OpenAL "<<alGetString(AL_VERSION)
<<", using "<<alcGetString(m_device, ALC_DEVICE_SPECIFIER) <<", using "<<alcGetString(m_device, ALC_DEVICE_SPECIFIER)
@ -409,7 +409,6 @@ public:
alSourcei(sound->source_id, AL_SOURCE_RELATIVE, false); alSourcei(sound->source_id, AL_SOURCE_RELATIVE, false);
alSource3f(sound->source_id, AL_POSITION, pos.X, pos.Y, pos.Z); alSource3f(sound->source_id, AL_POSITION, pos.X, pos.Y, pos.Z);
alSource3f(sound->source_id, AL_VELOCITY, 0, 0, 0); alSource3f(sound->source_id, AL_VELOCITY, 0, 0, 0);
//alSourcef(sound->source_id, AL_ROLLOFF_FACTOR, 0.7);
alSourcef(sound->source_id, AL_REFERENCE_DISTANCE, 30.0); alSourcef(sound->source_id, AL_REFERENCE_DISTANCE, 30.0);
alSourcei(sound->source_id, AL_LOOPING, loop ? AL_TRUE : AL_FALSE); alSourcei(sound->source_id, AL_LOOPING, loop ? AL_TRUE : AL_FALSE);
volume = MYMAX(0.0, volume); volume = MYMAX(0.0, volume);