implemented matrix flags

This commit is contained in:
aap
2017-08-04 19:54:03 +02:00
parent f043126233
commit 36c01a4c70
13 changed files with 392 additions and 493 deletions

View File

@@ -50,10 +50,10 @@ struct UniformLight
struct UniformObject
{
Matrix world;
RGBAf ambLight;
int32 numLights;
int32 pad[3];
RawMatrix world;
RGBAf ambLight;
int32 numLights;
int32 pad[3];
UniformLight lights[MAX_LIGHTS];
};
@@ -221,7 +221,7 @@ resetRenderState(void)
void
setWorldMatrix(Matrix *mat)
{
uniformObject.world = *mat;
convMatrix(&uniformObject.world, mat);
objectDirty = 1;
}
@@ -345,8 +345,7 @@ beginUpdate(Camera *cam)
float view[16], proj[16];
// View Matrix
Matrix inv;
// TODO: maybe use matrix flags....
Matrix::invertOrthonormal(&inv, cam->getFrame()->getLTM());
Matrix::invert(&inv, cam->getFrame()->getLTM());
// Since we're looking into positive Z,
// flip X to ge a left handed view space.
view[0] = -inv.right.x;

View File

@@ -112,7 +112,7 @@ calcEnvTexMatrix(Frame *f, float32 *mat)
inv.pos.z *= -0.5f;
Matrix m;
Matrix::mult(&m, &inv, &cam);
Matrix::mult(&m, &cam, &inv);
memcpy(mat, &m, 64);
mat[3] = mat[7] = mat[11] = 0.0f;
@@ -429,11 +429,8 @@ updateSkinMatrices(Atomic *a)
float *m;
m = (float*)skinMatrices;
for(int i = 0; i < hier->numNodes; i++){
invMats[i].rightw = 0.0f;
invMats[i].upw = 0.0f;
invMats[i].atw = 0.0f;
invMats[i].posw = 1.0f;
Matrix::mult((Matrix*)m, &hier->matrices[i], &invMats[i]);
invMats[i].flags = 0;
Matrix::mult((Matrix*)m, &invMats[i], &hier->matrices[i]);
m[3] = 0.0f;
m[7] = 0.0f;
m[11] = 0.0f;