44 lines
964 B
C
44 lines
964 B
C
![]() |
#pragma once
|
||
|
#include "types.h"
|
||
|
#define C3D_FVUNIF_COUNT 96
|
||
|
#define C3D_IVUNIF_COUNT 4
|
||
|
|
||
|
extern C3D_FVec C3D_FVUnif[C3D_FVUNIF_COUNT];
|
||
|
extern C3D_IVec C3D_IVUnif[C3D_IVUNIF_COUNT];
|
||
|
extern u16 C3D_BoolUnifs;
|
||
|
|
||
|
extern bool C3D_FVUnifDirty[C3D_FVUNIF_COUNT];
|
||
|
extern bool C3D_IVUnifDirty[C3D_IVUNIF_COUNT];
|
||
|
extern bool C3D_BoolUnifsDirty;
|
||
|
|
||
|
static inline C3D_FVec* C3D_FVUnifWritePtr(int id, int size)
|
||
|
{
|
||
|
int i;
|
||
|
for (i = 0; i < size; i ++)
|
||
|
C3D_FVUnifDirty[id+i] = true;
|
||
|
return &C3D_FVUnif[id];
|
||
|
}
|
||
|
|
||
|
static inline C3D_IVec* C3D_IVUnifWritePtr(int id)
|
||
|
{
|
||
|
C3D_IVUnifDirty[id] = true;
|
||
|
return &C3D_IVUnif[id];
|
||
|
}
|
||
|
|
||
|
static inline void C3D_FVUnifSet(int id, float x, float y, float z, float w)
|
||
|
{
|
||
|
C3D_FVec* ptr = C3D_FVUnifWritePtr(id, 1);
|
||
|
ptr->x = x;
|
||
|
ptr->y = y;
|
||
|
ptr->z = z;
|
||
|
ptr->w = w;
|
||
|
}
|
||
|
|
||
|
static inline void C3D_IVUnifSet(int id, int x, int y, int z, int w)
|
||
|
{
|
||
|
C3D_IVec* ptr = C3D_IVUnifWritePtr(id);
|
||
|
*ptr = IVec_Pack(x, y, z, w);
|
||
|
}
|
||
|
|
||
|
void C3D_UpdateUniforms(void);
|