Move the vector and matrix declarations to a separate header

This commit is contained in:
Chris Robinson
2018-11-17 23:21:37 -08:00
parent fa3c34268d
commit e79d9bdd1a
12 changed files with 81 additions and 64 deletions
+1 -1
View File
@@ -2658,7 +2658,7 @@ static ALvoid InitContext(ALCcontext *Context)
Context->ExtensionList = alExtList;
listener->Params.Matrix = IdentityMatrixf;
listener->Params.Matrix = aluMatrixf::Identity;
aluVectorSet(&listener->Params.Velocity, 0.0f, 0.0f, 0.0f, 0.0f);
listener->Params.Gain = listener->Gain;
listener->Params.MetersPerUnit = Context->MetersPerUnit;
-7
View File
@@ -56,13 +56,6 @@ ALfloat ZScale = 1.0f;
/* Force default speed of sound for distance-related reverb decay. */
ALboolean OverrideReverbSpeedOfSound = AL_FALSE;
const aluMatrixf IdentityMatrixf = {{
{ 1.0f, 0.0f, 0.0f, 0.0f },
{ 0.0f, 1.0f, 0.0f, 0.0f },
{ 0.0f, 0.0f, 1.0f, 0.0f },
{ 0.0f, 0.0f, 0.0f, 1.0f },
}};
static void ClearArray(ALfloat f[MAX_OUTPUT_CHANNELS])
{
+2 -1
View File
@@ -29,6 +29,7 @@
#include "alError.h"
#include "alu.h"
#include "filters/defs.h"
#include "vecmat.h"
#define MIN_FREQ 20.0f
#define MAX_FREQ 2500.0f
@@ -131,7 +132,7 @@ static ALvoid ALautowahState_update(ALautowahState *state, const ALCcontext *con
STATIC_CAST(ALeffectState,state)->OutBuffer = device->FOAOut.Buffer;
STATIC_CAST(ALeffectState,state)->OutChannels = device->FOAOut.NumChannels;
for(i = 0;i < MAX_EFFECT_CHANNELS;i++)
ComputePanGains(&device->FOAOut, IdentityMatrixf.m[i], slot->Params.Gain,
ComputePanGains(&device->FOAOut, aluMatrixf::Identity.m[i], slot->Params.Gain,
state->Chans[i].TargetGains);
}
+3 -1
View File
@@ -27,6 +27,7 @@
#include "alu.h"
#include "alAuxEffectSlot.h"
#include "alError.h"
#include "vecmat.h"
#define AMP_ENVELOPE_MIN 0.5f
@@ -101,7 +102,8 @@ static ALvoid ALcompressorState_update(ALcompressorState *state, const ALCcontex
STATIC_CAST(ALeffectState,state)->OutBuffer = device->FOAOut.Buffer;
STATIC_CAST(ALeffectState,state)->OutChannels = device->FOAOut.NumChannels;
for(i = 0;i < 4;i++)
ComputePanGains(&device->FOAOut, IdentityMatrixf.m[i], slot->Params.Gain, state->Gain[i]);
ComputePanGains(&device->FOAOut, aluMatrixf::Identity.m[i], slot->Params.Gain,
state->Gain[i]);
}
static ALvoid ALcompressorState_process(ALcompressorState *state, ALsizei SamplesToDo, const ALfloat (*RESTRICT SamplesIn)[BUFFERSIZE], ALfloat (*RESTRICT SamplesOut)[BUFFERSIZE], ALsizei NumChannels)
+2 -1
View File
@@ -29,6 +29,7 @@
#include "alError.h"
#include "alu.h"
#include "filters/defs.h"
#include "vecmat.h"
/* The document "Effects Extension Guide.pdf" says that low and high *
@@ -173,7 +174,7 @@ static ALvoid ALequalizerState_update(ALequalizerState *state, const ALCcontext
STATIC_CAST(ALeffectState,state)->OutBuffer = device->FOAOut.Buffer;
STATIC_CAST(ALeffectState,state)->OutChannels = device->FOAOut.NumChannels;
for(i = 0;i < MAX_EFFECT_CHANNELS;i++)
ComputePanGains(&device->FOAOut, IdentityMatrixf.m[i], slot->Params.Gain,
ComputePanGains(&device->FOAOut, aluMatrixf::Identity.m[i], slot->Params.Gain,
state->Chans[i].TargetGains);
}
+2 -1
View File
@@ -29,6 +29,7 @@
#include "alError.h"
#include "alu.h"
#include "filters/defs.h"
#include "vecmat.h"
#define MAX_UPDATE_SAMPLES 128
@@ -159,7 +160,7 @@ static ALvoid ALmodulatorState_update(ALmodulatorState *state, const ALCcontext
STATIC_CAST(ALeffectState,state)->OutBuffer = device->FOAOut.Buffer;
STATIC_CAST(ALeffectState,state)->OutChannels = device->FOAOut.NumChannels;
for(i = 0;i < MAX_EFFECT_CHANNELS;i++)
ComputePanGains(&device->FOAOut, IdentityMatrixf.m[i], slot->Params.Gain,
ComputePanGains(&device->FOAOut, aluMatrixf::Identity.m[i], slot->Params.Gain,
state->Chans[i].TargetGains);
}
+1
View File
@@ -31,6 +31,7 @@
#include "alListener.h"
#include "alError.h"
#include "filters/defs.h"
#include "vecmat.h"
/* This is a user config option for modifying the overall output of the reverb
* effect.
+2
View File
@@ -710,6 +710,8 @@ SET(COMMON_OBJS
common/threads.cpp
common/threads.h
common/uintmap.h
common/vecmat.cpp
common/vecmat.h
)
SET(OPENAL_OBJS
OpenAL32/Include/bs2b.h
+10 -13
View File
@@ -1,12 +1,13 @@
#ifndef _AL_LISTENER_H_
#define _AL_LISTENER_H_
#include "alMain.h"
#include "alu.h"
#include "AL/alc.h"
#include "AL/al.h"
#include "AL/alext.h"
#include "atomic.h"
#include "vecmat.h"
#ifdef __cplusplus
extern "C" {
#endif
struct ALlistenerProps {
ALfloat Position[3];
@@ -15,10 +16,10 @@ struct ALlistenerProps {
ALfloat Up[3];
ALfloat Gain;
ATOMIC(struct ALlistenerProps*) next;
ATOMIC(ALlistenerProps*) next;
};
typedef struct ALlistener {
struct ALlistener {
alignas(16) ALfloat Position[3];
ALfloat Velocity[3];
ALfloat Forward[3];
@@ -29,7 +30,7 @@ typedef struct ALlistener {
/* Pointer to the most recent property values that are awaiting an update.
*/
ATOMIC(struct ALlistenerProps*) Update;
ATOMIC(ALlistenerProps*) Update;
struct {
aluMatrixf Matrix;
@@ -45,12 +46,8 @@ typedef struct ALlistener {
ALboolean SourceDistanceModel;
enum DistanceModel DistanceModel;
} Params;
} ALlistener;
};
void UpdateListenerProps(ALCcontext *context);
#ifdef __cplusplus
}
#endif
#endif
-39
View File
@@ -98,45 +98,6 @@ extern const struct BSincTable bsinc12;
extern const struct BSincTable bsinc24;
typedef union aluVector {
alignas(16) ALfloat v[4];
} aluVector;
inline void aluVectorSet(aluVector *vector, ALfloat x, ALfloat y, ALfloat z, ALfloat w)
{
vector->v[0] = x;
vector->v[1] = y;
vector->v[2] = z;
vector->v[3] = w;
}
typedef union aluMatrixf {
alignas(16) ALfloat m[4][4];
} aluMatrixf;
extern const aluMatrixf IdentityMatrixf;
inline void aluMatrixfSetRow(aluMatrixf *matrix, ALuint row,
ALfloat m0, ALfloat m1, ALfloat m2, ALfloat m3)
{
matrix->m[row][0] = m0;
matrix->m[row][1] = m1;
matrix->m[row][2] = m2;
matrix->m[row][3] = m3;
}
inline void aluMatrixfSet(aluMatrixf *matrix, ALfloat m00, ALfloat m01, ALfloat m02, ALfloat m03,
ALfloat m10, ALfloat m11, ALfloat m12, ALfloat m13,
ALfloat m20, ALfloat m21, ALfloat m22, ALfloat m23,
ALfloat m30, ALfloat m31, ALfloat m32, ALfloat m33)
{
aluMatrixfSetRow(matrix, 0, m00, m01, m02, m03);
aluMatrixfSetRow(matrix, 1, m10, m11, m12, m13);
aluMatrixfSetRow(matrix, 2, m20, m21, m22, m23);
aluMatrixfSetRow(matrix, 3, m30, m31, m32, m33);
}
enum {
AF_None = 0,
AF_LowPass = 1,
+12
View File
@@ -0,0 +1,12 @@
#include "config.h"
#include "vecmat.h"
const aluMatrixf aluMatrixf::Identity{{
{ 1.0f, 0.0f, 0.0f, 0.0f },
{ 0.0f, 1.0f, 0.0f, 0.0f },
{ 0.0f, 0.0f, 1.0f, 0.0f },
{ 0.0f, 0.0f, 0.0f, 1.0f },
}};
+46
View File
@@ -0,0 +1,46 @@
#ifndef COMMON_VECMAT_H
#define COMMON_VECMAT_H
#include "AL/al.h"
struct aluVector {
alignas(16) ALfloat v[4];
};
inline void aluVectorSet(aluVector *vector, ALfloat x, ALfloat y, ALfloat z, ALfloat w)
{
vector->v[0] = x;
vector->v[1] = y;
vector->v[2] = z;
vector->v[3] = w;
}
struct aluMatrixf {
alignas(16) ALfloat m[4][4];
static const aluMatrixf Identity;
};
inline void aluMatrixfSetRow(aluMatrixf *matrix, ALuint row,
ALfloat m0, ALfloat m1, ALfloat m2, ALfloat m3)
{
matrix->m[row][0] = m0;
matrix->m[row][1] = m1;
matrix->m[row][2] = m2;
matrix->m[row][3] = m3;
}
inline void aluMatrixfSet(aluMatrixf *matrix, ALfloat m00, ALfloat m01, ALfloat m02, ALfloat m03,
ALfloat m10, ALfloat m11, ALfloat m12, ALfloat m13,
ALfloat m20, ALfloat m21, ALfloat m22, ALfloat m23,
ALfloat m30, ALfloat m31, ALfloat m32, ALfloat m33)
{
aluMatrixfSetRow(matrix, 0, m00, m01, m02, m03);
aluMatrixfSetRow(matrix, 1, m10, m11, m12, m13);
aluMatrixfSetRow(matrix, 2, m20, m21, m22, m23);
aluMatrixfSetRow(matrix, 3, m30, m31, m32, m33);
}
#endif /* COMMON_VECMAT_H */