OpenAL sound: Use a simpler distance model
authorparamat <mat.gregory@virginmedia.com>
Tue, 24 Jan 2017 10:16:56 +0000 (10:16 +0000)
committerparamat <mat.gregory@virginmedia.com>
Thu, 9 Feb 2017 00:10:35 +0000 (00:10 +0000)
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.

src/sound_openal.cpp

index 317667f52911d3fe813b593382e19d97e36818d1..b9af9e3a919cd86f66fc8e84108e0d999fd0b962 100644 (file)
@@ -317,7 +317,7 @@ public:
                        return;
                }
 
-               alDistanceModel(AL_EXPONENT_DISTANCE);
+               alDistanceModel(AL_INVERSE_DISTANCE);
 
                infostream<<"Audio: Initialized: OpenAL "<<alGetString(AL_VERSION)
                                <<", using "<<alcGetString(m_device, ALC_DEVICE_SPECIFIER)
@@ -409,7 +409,6 @@ public:
                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_VELOCITY, 0, 0, 0);
-               //alSourcef(sound->source_id, AL_ROLLOFF_FACTOR, 0.7);
                alSourcef(sound->source_id, AL_REFERENCE_DISTANCE, 30.0);
                alSourcei(sound->source_id, AL_LOOPING, loop ? AL_TRUE : AL_FALSE);
                volume = MYMAX(0.0, volume);