Fix OpenAL and XAudio2 audio backend listener/source velocity to prevent too strong Doppler effect

This commit is contained in:
Wojtek Figat
2023-04-19 23:24:43 +02:00
parent 787414451e
commit dd9fa6e949
2 changed files with 34 additions and 30 deletions

View File

@@ -26,7 +26,9 @@
#define MAX_OUTPUT_CHANNELS 8
#define MAX_CHANNELS_MATRIX_SIZE (MAX_INPUT_CHANNELS*MAX_OUTPUT_CHANNELS)
#define FLAX_POS_TO_XAUDIO(vec) X3DAUDIO_VECTOR(vec.X * 0.01f, vec.Y * 0.01f, vec.Z * 0.01f)
#define FLAX_COORD_SCALE 0.01f
#define FLAX_POS_TO_XAUDIO(vec) X3DAUDIO_VECTOR(vec.X * FLAX_COORD_SCALE, vec.Y * FLAX_COORD_SCALE, vec.Z * FLAX_COORD_SCALE)
#define FLAX_VEL_TO_XAUDIO(vec) X3DAUDIO_VECTOR(vec.X * (FLAX_COORD_SCALE*FLAX_COORD_SCALE), vec.Y * (FLAX_COORD_SCALE*FLAX_COORD_SCALE), vec.Z * (FLAX_COORD_SCALE*FLAX_COORD_SCALE))
#define FLAX_VEC_TO_XAUDIO(vec) (*((X3DAUDIO_VECTOR*)&vec))
namespace XAudio2
@@ -68,7 +70,7 @@ namespace XAudio2
{
const Vector3& velocity = AudioListener->GetVelocity();
Data.Velocity = FLAX_POS_TO_XAUDIO(velocity);
Data.Velocity = FLAX_VEL_TO_XAUDIO(velocity);
}
};
@@ -166,7 +168,7 @@ namespace XAudio2
{
const Vector3& velocity = source->GetVelocity();
Data.Velocity = FLAX_POS_TO_XAUDIO(velocity);
Data.Velocity = FLAX_VEL_TO_XAUDIO(velocity);
}
};