SL-19585 Switch OpenAL's wind to float

Fixes wind being odly distorted
master
Andrey Kleshchev 2024-02-06 01:26:53 +02:00 committed by Andrey Kleshchev
parent 78dc1c872a
commit 4cec313319
4 changed files with 11 additions and 5 deletions

View File

@ -518,7 +518,7 @@ void LLAudioEngine_OpenAL::updateWind(LLVector3 wind_vec, F32 camera_altitude)
}
alBufferData(buffer,
AL_FORMAT_STEREO16,
AL_FORMAT_STEREO_FLOAT32,
mWindGen->windGenerate(mWindBuf,
mWindBufSamples),
mWindBufBytes,

View File

@ -57,9 +57,9 @@ class LLAudioEngine_OpenAL : public LLAudioEngine
/*virtual*/ void updateWind(LLVector3 direction, F32 camera_altitude);
private:
typedef S16 WIND_SAMPLE_T;
typedef F32 WIND_SAMPLE_T;
LLWindGen<WIND_SAMPLE_T> *mWindGen;
S16 *mWindBuf;
F32 *mWindBuf;
U32 mWindBufFreq;
U32 mWindBufSamples;
U32 mWindBufBytes;

View File

@ -32,6 +32,7 @@
#include "AL/al.h"
#include "AL/alut.h"
#include "AL/alext.h"
class LLListener_OpenAL : public LLListener
{

View File

@ -545,8 +545,13 @@ void audio_update_wind(bool force_update)
// don't use the setter setMaxWindGain() because we don't
// want to screw up the fade-in on startup by setting actual source gain
// outside the fade-in.
F32 master_volume = gSavedSettings.getBOOL("MuteAudio") ? 0.f : gSavedSettings.getF32("AudioLevelMaster");
F32 ambient_volume = gSavedSettings.getBOOL("MuteAmbient") ? 0.f : gSavedSettings.getF32("AudioLevelAmbient");
static LLCachedControl<bool> mute_audio(gSavedSettings, "MuteAudio");
static LLCachedControl<bool> mute_ambient(gSavedSettings, "MuteAmbient");
static LLCachedControl<F32> level_master(gSavedSettings, "AudioLevelMaster");
static LLCachedControl<F32> level_ambient(gSavedSettings, "AudioLevelAmbient");
F32 master_volume = mute_audio() ? 0.f : level_master();
F32 ambient_volume = mute_ambient() ? 0.f : level_ambient();
F32 max_wind_volume = master_volume * ambient_volume;
const F32 WIND_SOUND_TRANSITION_TIME = 2.f;