[PATCH 4/5] d3dx9: Build with nameless unions.
Matteo Bruni
mbruni at codeweavers.com
Fri Feb 18 04:14:28 CST 2022
Signed-off-by: Matteo Bruni <mbruni at codeweavers.com>
---
dlls/d3dx9_36/d3dx9_private.h | 1 -
dlls/d3dx9_36/effect.c | 10 +-
dlls/d3dx9_36/math.c | 772 +++++++++++++++++-----------------
dlls/d3dx9_36/mesh.c | 38 +-
4 files changed, 412 insertions(+), 409 deletions(-)
diff --git a/dlls/d3dx9_36/d3dx9_private.h b/dlls/d3dx9_36/d3dx9_private.h
index 2d286b04694..6972c1d0ce0 100644
--- a/dlls/d3dx9_36/d3dx9_private.h
+++ b/dlls/d3dx9_36/d3dx9_private.h
@@ -23,7 +23,6 @@
#define __WINE_D3DX9_PRIVATE_H
#include <stdint.h>
-#define NONAMELESSUNION
#include "wine/debug.h"
#include "wine/heap.h"
#include "wine/rbtree.h"
diff --git a/dlls/d3dx9_36/effect.c b/dlls/d3dx9_36/effect.c
index bbfb73d64c3..db95e6b592b 100644
--- a/dlls/d3dx9_36/effect.c
+++ b/dlls/d3dx9_36/effect.c
@@ -826,7 +826,7 @@ static void get_matrix(struct d3dx_parameter *param, D3DXMATRIX *matrix, BOOL tr
{
for (k = 0; k < 4; ++k)
{
- FLOAT *tmp = transpose ? (FLOAT *)&matrix->u.m[k][i] : (FLOAT *)&matrix->u.m[i][k];
+ FLOAT *tmp = transpose ? (FLOAT *)&matrix->m[k][i] : (FLOAT *)&matrix->m[i][k];
if ((i < param->rows) && (k < param->columns))
set_number(tmp, D3DXPT_FLOAT, (DWORD *)param->data + i * param->columns + k, param->type);
@@ -844,12 +844,12 @@ static void set_matrix(struct d3dx_parameter *param, const D3DXMATRIX *matrix, v
{
if (param->columns == 4)
{
- memcpy(dst_data, matrix->u.m, param->rows * 4 * sizeof(float));
+ memcpy(dst_data, matrix->m, param->rows * 4 * sizeof(float));
}
else
{
for (i = 0; i < param->rows; ++i)
- memcpy((float *)dst_data + i * param->columns, matrix->u.m + i, param->columns * sizeof(float));
+ memcpy((float *)dst_data + i * param->columns, matrix->m + i, param->columns * sizeof(float));
}
return;
}
@@ -858,7 +858,7 @@ static void set_matrix(struct d3dx_parameter *param, const D3DXMATRIX *matrix, v
{
for (k = 0; k < param->columns; ++k)
set_number((FLOAT *)dst_data + i * param->columns + k, param->type,
- &matrix->u.m[i][k], D3DXPT_FLOAT);
+ &matrix->m[i][k], D3DXPT_FLOAT);
}
}
@@ -871,7 +871,7 @@ static void set_matrix_transpose(struct d3dx_parameter *param, const D3DXMATRIX
for (k = 0; k < param->columns; ++k)
{
set_number((FLOAT *)dst_data + i * param->columns + k, param->type,
- &matrix->u.m[k][i], D3DXPT_FLOAT);
+ &matrix->m[k][i], D3DXPT_FLOAT);
}
}
}
diff --git a/dlls/d3dx9_36/math.c b/dlls/d3dx9_36/math.c
index 80f357e00e9..b6f0bed38ad 100644
--- a/dlls/d3dx9_36/math.c
+++ b/dlls/d3dx9_36/math.c
@@ -109,38 +109,38 @@ D3DXMATRIX * WINAPI D3DXMatrixAffineTransformation(D3DXMATRIX *out, FLOAT scalin
temp21 = 2.0f * (rotation->y * rotation->z - rotation->x * rotation->w);
temp22 = 1.0f - 2.0f * (rotation->x * rotation->x + rotation->y * rotation->y);
- out->u.m[0][0] = scaling * temp00;
- out->u.m[0][1] = scaling * temp01;
- out->u.m[0][2] = scaling * temp02;
- out->u.m[1][0] = scaling * temp10;
- out->u.m[1][1] = scaling * temp11;
- out->u.m[1][2] = scaling * temp12;
- out->u.m[2][0] = scaling * temp20;
- out->u.m[2][1] = scaling * temp21;
- out->u.m[2][2] = scaling * temp22;
+ out->m[0][0] = scaling * temp00;
+ out->m[0][1] = scaling * temp01;
+ out->m[0][2] = scaling * temp02;
+ out->m[1][0] = scaling * temp10;
+ out->m[1][1] = scaling * temp11;
+ out->m[1][2] = scaling * temp12;
+ out->m[2][0] = scaling * temp20;
+ out->m[2][1] = scaling * temp21;
+ out->m[2][2] = scaling * temp22;
if (rotationcenter)
{
- out->u.m[3][0] = rotationcenter->x * (1.0f - temp00) - rotationcenter->y * temp10
+ out->m[3][0] = rotationcenter->x * (1.0f - temp00) - rotationcenter->y * temp10
- rotationcenter->z * temp20;
- out->u.m[3][1] = rotationcenter->y * (1.0f - temp11) - rotationcenter->x * temp01
+ out->m[3][1] = rotationcenter->y * (1.0f - temp11) - rotationcenter->x * temp01
- rotationcenter->z * temp21;
- out->u.m[3][2] = rotationcenter->z * (1.0f - temp22) - rotationcenter->x * temp02
+ out->m[3][2] = rotationcenter->z * (1.0f - temp22) - rotationcenter->x * temp02
- rotationcenter->y * temp12;
}
}
else
{
- out->u.m[0][0] = scaling;
- out->u.m[1][1] = scaling;
- out->u.m[2][2] = scaling;
+ out->m[0][0] = scaling;
+ out->m[1][1] = scaling;
+ out->m[2][2] = scaling;
}
if (translation)
{
- out->u.m[3][0] += translation->x;
- out->u.m[3][1] += translation->y;
- out->u.m[3][2] += translation->z;
+ out->m[3][0] += translation->x;
+ out->m[3][1] += translation->y;
+ out->m[3][2] += translation->z;
}
return out;
@@ -159,10 +159,10 @@ D3DXMATRIX * WINAPI D3DXMatrixAffineTransformation2D(D3DXMATRIX *out, FLOAT scal
tmp2 = 2.0f * s * cosf(rotation / 2.0f);
D3DXMatrixIdentity(out);
- out->u.m[0][0] = scaling * tmp1;
- out->u.m[0][1] = scaling * tmp2;
- out->u.m[1][0] = -scaling * tmp2;
- out->u.m[1][1] = scaling * tmp1;
+ out->m[0][0] = scaling * tmp1;
+ out->m[0][1] = scaling * tmp2;
+ out->m[1][0] = -scaling * tmp2;
+ out->m[1][1] = scaling * tmp1;
if (rotationcenter)
{
@@ -171,14 +171,14 @@ D3DXMATRIX * WINAPI D3DXMatrixAffineTransformation2D(D3DXMATRIX *out, FLOAT scal
x = rotationcenter->x;
y = rotationcenter->y;
- out->u.m[3][0] = y * tmp2 - x * tmp1 + x;
- out->u.m[3][1] = -x * tmp2 - y * tmp1 + y;
+ out->m[3][0] = y * tmp2 - x * tmp1 + x;
+ out->m[3][1] = -x * tmp2 - y * tmp1 + y;
}
if (translation)
{
- out->u.m[3][0] += translation->x;
- out->u.m[3][1] += translation->y;
+ out->m[3][0] += translation->x;
+ out->m[3][1] += translation->y;
}
return out;
@@ -192,38 +192,38 @@ HRESULT WINAPI D3DXMatrixDecompose(D3DXVECTOR3 *poutscale, D3DXQUATERNION *poutr
TRACE("poutscale %p, poutrotation %p, pouttranslation %p, pm %p\n", poutscale, poutrotation, pouttranslation, pm);
/*Compute the scaling part.*/
- vec.x=pm->u.m[0][0];
- vec.y=pm->u.m[0][1];
- vec.z=pm->u.m[0][2];
- poutscale->x=D3DXVec3Length(&vec);
+ vec.x = pm->m[0][0];
+ vec.y = pm->m[0][1];
+ vec.z = pm->m[0][2];
+ poutscale->x = D3DXVec3Length(&vec);
- vec.x=pm->u.m[1][0];
- vec.y=pm->u.m[1][1];
- vec.z=pm->u.m[1][2];
- poutscale->y=D3DXVec3Length(&vec);
+ vec.x = pm->m[1][0];
+ vec.y = pm->m[1][1];
+ vec.z = pm->m[1][2];
+ poutscale->y = D3DXVec3Length(&vec);
- vec.x=pm->u.m[2][0];
- vec.y=pm->u.m[2][1];
- vec.z=pm->u.m[2][2];
- poutscale->z=D3DXVec3Length(&vec);
+ vec.x = pm->m[2][0];
+ vec.y = pm->m[2][1];
+ vec.z = pm->m[2][2];
+ poutscale->z = D3DXVec3Length(&vec);
/*Compute the translation part.*/
- pouttranslation->x=pm->u.m[3][0];
- pouttranslation->y=pm->u.m[3][1];
- pouttranslation->z=pm->u.m[3][2];
+ pouttranslation->x = pm->m[3][0];
+ pouttranslation->y = pm->m[3][1];
+ pouttranslation->z = pm->m[3][2];
/*Let's calculate the rotation now*/
if ( (poutscale->x == 0.0f) || (poutscale->y == 0.0f) || (poutscale->z == 0.0f) ) return D3DERR_INVALIDCALL;
- normalized.u.m[0][0]=pm->u.m[0][0]/poutscale->x;
- normalized.u.m[0][1]=pm->u.m[0][1]/poutscale->x;
- normalized.u.m[0][2]=pm->u.m[0][2]/poutscale->x;
- normalized.u.m[1][0]=pm->u.m[1][0]/poutscale->y;
- normalized.u.m[1][1]=pm->u.m[1][1]/poutscale->y;
- normalized.u.m[1][2]=pm->u.m[1][2]/poutscale->y;
- normalized.u.m[2][0]=pm->u.m[2][0]/poutscale->z;
- normalized.u.m[2][1]=pm->u.m[2][1]/poutscale->z;
- normalized.u.m[2][2]=pm->u.m[2][2]/poutscale->z;
+ normalized.m[0][0] = pm->m[0][0]/poutscale->x;
+ normalized.m[0][1] = pm->m[0][1]/poutscale->x;
+ normalized.m[0][2] = pm->m[0][2]/poutscale->x;
+ normalized.m[1][0] = pm->m[1][0]/poutscale->y;
+ normalized.m[1][1] = pm->m[1][1]/poutscale->y;
+ normalized.m[1][2] = pm->m[1][2]/poutscale->y;
+ normalized.m[2][0] = pm->m[2][0]/poutscale->z;
+ normalized.m[2][1] = pm->m[2][1]/poutscale->z;
+ normalized.m[2][2] = pm->m[2][2]/poutscale->z;
D3DXQuaternionRotationMatrix(poutrotation,&normalized);
return S_OK;
@@ -235,20 +235,20 @@ FLOAT WINAPI D3DXMatrixDeterminant(const D3DXMATRIX *pm)
TRACE("pm %p\n", pm);
- t[0] = pm->u.m[2][2] * pm->u.m[3][3] - pm->u.m[2][3] * pm->u.m[3][2];
- t[1] = pm->u.m[1][2] * pm->u.m[3][3] - pm->u.m[1][3] * pm->u.m[3][2];
- t[2] = pm->u.m[1][2] * pm->u.m[2][3] - pm->u.m[1][3] * pm->u.m[2][2];
- v[0] = pm->u.m[1][1] * t[0] - pm->u.m[2][1] * t[1] + pm->u.m[3][1] * t[2];
- v[1] = -pm->u.m[1][0] * t[0] + pm->u.m[2][0] * t[1] - pm->u.m[3][0] * t[2];
+ t[0] = pm->m[2][2] * pm->m[3][3] - pm->m[2][3] * pm->m[3][2];
+ t[1] = pm->m[1][2] * pm->m[3][3] - pm->m[1][3] * pm->m[3][2];
+ t[2] = pm->m[1][2] * pm->m[2][3] - pm->m[1][3] * pm->m[2][2];
+ v[0] = pm->m[1][1] * t[0] - pm->m[2][1] * t[1] + pm->m[3][1] * t[2];
+ v[1] = -pm->m[1][0] * t[0] + pm->m[2][0] * t[1] - pm->m[3][0] * t[2];
- t[0] = pm->u.m[1][0] * pm->u.m[2][1] - pm->u.m[2][0] * pm->u.m[1][1];
- t[1] = pm->u.m[1][0] * pm->u.m[3][1] - pm->u.m[3][0] * pm->u.m[1][1];
- t[2] = pm->u.m[2][0] * pm->u.m[3][1] - pm->u.m[3][0] * pm->u.m[2][1];
- v[2] = pm->u.m[3][3] * t[0] - pm->u.m[2][3] * t[1] + pm->u.m[1][3] * t[2];
- v[3] = -pm->u.m[3][2] * t[0] + pm->u.m[2][2] * t[1] - pm->u.m[1][2] * t[2];
+ t[0] = pm->m[1][0] * pm->m[2][1] - pm->m[2][0] * pm->m[1][1];
+ t[1] = pm->m[1][0] * pm->m[3][1] - pm->m[3][0] * pm->m[1][1];
+ t[2] = pm->m[2][0] * pm->m[3][1] - pm->m[3][0] * pm->m[2][1];
+ v[2] = pm->m[3][3] * t[0] - pm->m[2][3] * t[1] + pm->m[1][3] * t[2];
+ v[3] = -pm->m[3][2] * t[0] + pm->m[2][2] * t[1] - pm->m[1][2] * t[2];
- return pm->u.m[0][0] * v[0] + pm->u.m[0][1] * v[1] +
- pm->u.m[0][2] * v[2] + pm->u.m[0][3] * v[3];
+ return pm->m[0][0] * v[0] + pm->m[0][1] * v[1] +
+ pm->m[0][2] * v[2] + pm->m[0][3] * v[3];
}
D3DXMATRIX* WINAPI D3DXMatrixInverse(D3DXMATRIX *pout, FLOAT *pdeterminant, const D3DXMATRIX *pm)
@@ -258,68 +258,68 @@ D3DXMATRIX* WINAPI D3DXMatrixInverse(D3DXMATRIX *pout, FLOAT *pdeterminant, cons
TRACE("pout %p, pdeterminant %p, pm %p\n", pout, pdeterminant, pm);
- t[0] = pm->u.m[2][2] * pm->u.m[3][3] - pm->u.m[2][3] * pm->u.m[3][2];
- t[1] = pm->u.m[1][2] * pm->u.m[3][3] - pm->u.m[1][3] * pm->u.m[3][2];
- t[2] = pm->u.m[1][2] * pm->u.m[2][3] - pm->u.m[1][3] * pm->u.m[2][2];
- v[0] = pm->u.m[1][1] * t[0] - pm->u.m[2][1] * t[1] + pm->u.m[3][1] * t[2];
- v[4] = -pm->u.m[1][0] * t[0] + pm->u.m[2][0] * t[1] - pm->u.m[3][0] * t[2];
+ t[0] = pm->m[2][2] * pm->m[3][3] - pm->m[2][3] * pm->m[3][2];
+ t[1] = pm->m[1][2] * pm->m[3][3] - pm->m[1][3] * pm->m[3][2];
+ t[2] = pm->m[1][2] * pm->m[2][3] - pm->m[1][3] * pm->m[2][2];
+ v[0] = pm->m[1][1] * t[0] - pm->m[2][1] * t[1] + pm->m[3][1] * t[2];
+ v[4] = -pm->m[1][0] * t[0] + pm->m[2][0] * t[1] - pm->m[3][0] * t[2];
- t[0] = pm->u.m[1][0] * pm->u.m[2][1] - pm->u.m[2][0] * pm->u.m[1][1];
- t[1] = pm->u.m[1][0] * pm->u.m[3][1] - pm->u.m[3][0] * pm->u.m[1][1];
- t[2] = pm->u.m[2][0] * pm->u.m[3][1] - pm->u.m[3][0] * pm->u.m[2][1];
- v[8] = pm->u.m[3][3] * t[0] - pm->u.m[2][3] * t[1] + pm->u.m[1][3] * t[2];
- v[12] = -pm->u.m[3][2] * t[0] + pm->u.m[2][2] * t[1] - pm->u.m[1][2] * t[2];
+ t[0] = pm->m[1][0] * pm->m[2][1] - pm->m[2][0] * pm->m[1][1];
+ t[1] = pm->m[1][0] * pm->m[3][1] - pm->m[3][0] * pm->m[1][1];
+ t[2] = pm->m[2][0] * pm->m[3][1] - pm->m[3][0] * pm->m[2][1];
+ v[8] = pm->m[3][3] * t[0] - pm->m[2][3] * t[1] + pm->m[1][3] * t[2];
+ v[12] = -pm->m[3][2] * t[0] + pm->m[2][2] * t[1] - pm->m[1][2] * t[2];
- det = pm->u.m[0][0] * v[0] + pm->u.m[0][1] * v[4] +
- pm->u.m[0][2] * v[8] + pm->u.m[0][3] * v[12];
+ det = pm->m[0][0] * v[0] + pm->m[0][1] * v[4] +
+ pm->m[0][2] * v[8] + pm->m[0][3] * v[12];
if (det == 0.0f)
return NULL;
if (pdeterminant)
*pdeterminant = det;
- t[0] = pm->u.m[2][2] * pm->u.m[3][3] - pm->u.m[2][3] * pm->u.m[3][2];
- t[1] = pm->u.m[0][2] * pm->u.m[3][3] - pm->u.m[0][3] * pm->u.m[3][2];
- t[2] = pm->u.m[0][2] * pm->u.m[2][3] - pm->u.m[0][3] * pm->u.m[2][2];
- v[1] = -pm->u.m[0][1] * t[0] + pm->u.m[2][1] * t[1] - pm->u.m[3][1] * t[2];
- v[5] = pm->u.m[0][0] * t[0] - pm->u.m[2][0] * t[1] + pm->u.m[3][0] * t[2];
-
- t[0] = pm->u.m[0][0] * pm->u.m[2][1] - pm->u.m[2][0] * pm->u.m[0][1];
- t[1] = pm->u.m[3][0] * pm->u.m[0][1] - pm->u.m[0][0] * pm->u.m[3][1];
- t[2] = pm->u.m[2][0] * pm->u.m[3][1] - pm->u.m[3][0] * pm->u.m[2][1];
- v[9] = -pm->u.m[3][3] * t[0] - pm->u.m[2][3] * t[1]- pm->u.m[0][3] * t[2];
- v[13] = pm->u.m[3][2] * t[0] + pm->u.m[2][2] * t[1] + pm->u.m[0][2] * t[2];
-
- t[0] = pm->u.m[1][2] * pm->u.m[3][3] - pm->u.m[1][3] * pm->u.m[3][2];
- t[1] = pm->u.m[0][2] * pm->u.m[3][3] - pm->u.m[0][3] * pm->u.m[3][2];
- t[2] = pm->u.m[0][2] * pm->u.m[1][3] - pm->u.m[0][3] * pm->u.m[1][2];
- v[2] = pm->u.m[0][1] * t[0] - pm->u.m[1][1] * t[1] + pm->u.m[3][1] * t[2];
- v[6] = -pm->u.m[0][0] * t[0] + pm->u.m[1][0] * t[1] - pm->u.m[3][0] * t[2];
-
- t[0] = pm->u.m[0][0] * pm->u.m[1][1] - pm->u.m[1][0] * pm->u.m[0][1];
- t[1] = pm->u.m[3][0] * pm->u.m[0][1] - pm->u.m[0][0] * pm->u.m[3][1];
- t[2] = pm->u.m[1][0] * pm->u.m[3][1] - pm->u.m[3][0] * pm->u.m[1][1];
- v[10] = pm->u.m[3][3] * t[0] + pm->u.m[1][3] * t[1] + pm->u.m[0][3] * t[2];
- v[14] = -pm->u.m[3][2] * t[0] - pm->u.m[1][2] * t[1] - pm->u.m[0][2] * t[2];
-
- t[0] = pm->u.m[1][2] * pm->u.m[2][3] - pm->u.m[1][3] * pm->u.m[2][2];
- t[1] = pm->u.m[0][2] * pm->u.m[2][3] - pm->u.m[0][3] * pm->u.m[2][2];
- t[2] = pm->u.m[0][2] * pm->u.m[1][3] - pm->u.m[0][3] * pm->u.m[1][2];
- v[3] = -pm->u.m[0][1] * t[0] + pm->u.m[1][1] * t[1] - pm->u.m[2][1] * t[2];
- v[7] = pm->u.m[0][0] * t[0] - pm->u.m[1][0] * t[1] + pm->u.m[2][0] * t[2];
-
- v[11] = -pm->u.m[0][0] * (pm->u.m[1][1] * pm->u.m[2][3] - pm->u.m[1][3] * pm->u.m[2][1]) +
- pm->u.m[1][0] * (pm->u.m[0][1] * pm->u.m[2][3] - pm->u.m[0][3] * pm->u.m[2][1]) -
- pm->u.m[2][0] * (pm->u.m[0][1] * pm->u.m[1][3] - pm->u.m[0][3] * pm->u.m[1][1]);
-
- v[15] = pm->u.m[0][0] * (pm->u.m[1][1] * pm->u.m[2][2] - pm->u.m[1][2] * pm->u.m[2][1]) -
- pm->u.m[1][0] * (pm->u.m[0][1] * pm->u.m[2][2] - pm->u.m[0][2] * pm->u.m[2][1]) +
- pm->u.m[2][0] * (pm->u.m[0][1] * pm->u.m[1][2] - pm->u.m[0][2] * pm->u.m[1][1]);
+ t[0] = pm->m[2][2] * pm->m[3][3] - pm->m[2][3] * pm->m[3][2];
+ t[1] = pm->m[0][2] * pm->m[3][3] - pm->m[0][3] * pm->m[3][2];
+ t[2] = pm->m[0][2] * pm->m[2][3] - pm->m[0][3] * pm->m[2][2];
+ v[1] = -pm->m[0][1] * t[0] + pm->m[2][1] * t[1] - pm->m[3][1] * t[2];
+ v[5] = pm->m[0][0] * t[0] - pm->m[2][0] * t[1] + pm->m[3][0] * t[2];
+
+ t[0] = pm->m[0][0] * pm->m[2][1] - pm->m[2][0] * pm->m[0][1];
+ t[1] = pm->m[3][0] * pm->m[0][1] - pm->m[0][0] * pm->m[3][1];
+ t[2] = pm->m[2][0] * pm->m[3][1] - pm->m[3][0] * pm->m[2][1];
+ v[9] = -pm->m[3][3] * t[0] - pm->m[2][3] * t[1]- pm->m[0][3] * t[2];
+ v[13] = pm->m[3][2] * t[0] + pm->m[2][2] * t[1] + pm->m[0][2] * t[2];
+
+ t[0] = pm->m[1][2] * pm->m[3][3] - pm->m[1][3] * pm->m[3][2];
+ t[1] = pm->m[0][2] * pm->m[3][3] - pm->m[0][3] * pm->m[3][2];
+ t[2] = pm->m[0][2] * pm->m[1][3] - pm->m[0][3] * pm->m[1][2];
+ v[2] = pm->m[0][1] * t[0] - pm->m[1][1] * t[1] + pm->m[3][1] * t[2];
+ v[6] = -pm->m[0][0] * t[0] + pm->m[1][0] * t[1] - pm->m[3][0] * t[2];
+
+ t[0] = pm->m[0][0] * pm->m[1][1] - pm->m[1][0] * pm->m[0][1];
+ t[1] = pm->m[3][0] * pm->m[0][1] - pm->m[0][0] * pm->m[3][1];
+ t[2] = pm->m[1][0] * pm->m[3][1] - pm->m[3][0] * pm->m[1][1];
+ v[10] = pm->m[3][3] * t[0] + pm->m[1][3] * t[1] + pm->m[0][3] * t[2];
+ v[14] = -pm->m[3][2] * t[0] - pm->m[1][2] * t[1] - pm->m[0][2] * t[2];
+
+ t[0] = pm->m[1][2] * pm->m[2][3] - pm->m[1][3] * pm->m[2][2];
+ t[1] = pm->m[0][2] * pm->m[2][3] - pm->m[0][3] * pm->m[2][2];
+ t[2] = pm->m[0][2] * pm->m[1][3] - pm->m[0][3] * pm->m[1][2];
+ v[3] = -pm->m[0][1] * t[0] + pm->m[1][1] * t[1] - pm->m[2][1] * t[2];
+ v[7] = pm->m[0][0] * t[0] - pm->m[1][0] * t[1] + pm->m[2][0] * t[2];
+
+ v[11] = -pm->m[0][0] * (pm->m[1][1] * pm->m[2][3] - pm->m[1][3] * pm->m[2][1]) +
+ pm->m[1][0] * (pm->m[0][1] * pm->m[2][3] - pm->m[0][3] * pm->m[2][1]) -
+ pm->m[2][0] * (pm->m[0][1] * pm->m[1][3] - pm->m[0][3] * pm->m[1][1]);
+
+ v[15] = pm->m[0][0] * (pm->m[1][1] * pm->m[2][2] - pm->m[1][2] * pm->m[2][1]) -
+ pm->m[1][0] * (pm->m[0][1] * pm->m[2][2] - pm->m[0][2] * pm->m[2][1]) +
+ pm->m[2][0] * (pm->m[0][1] * pm->m[1][2] - pm->m[0][2] * pm->m[1][1]);
det = 1.0f / det;
for (i = 0; i < 4; i++)
for (j = 0; j < 4; j++)
- pout->u.m[i][j] = v[4 * i + j] * det;
+ pout->m[i][j] = v[4 * i + j] * det;
return pout;
}
@@ -337,22 +337,22 @@ D3DXMATRIX * WINAPI D3DXMatrixLookAtLH(D3DXMATRIX *out, const D3DXVECTOR3 *eye,
D3DXVec3Cross(&upn, &vec, &right);
D3DXVec3Normalize(&right, &right);
D3DXVec3Normalize(&upn, &upn);
- out->u.m[0][0] = right.x;
- out->u.m[1][0] = right.y;
- out->u.m[2][0] = right.z;
- out->u.m[3][0] = -D3DXVec3Dot(&right, eye);
- out->u.m[0][1] = upn.x;
- out->u.m[1][1] = upn.y;
- out->u.m[2][1] = upn.z;
- out->u.m[3][1] = -D3DXVec3Dot(&upn, eye);
- out->u.m[0][2] = vec.x;
- out->u.m[1][2] = vec.y;
- out->u.m[2][2] = vec.z;
- out->u.m[3][2] = -D3DXVec3Dot(&vec, eye);
- out->u.m[0][3] = 0.0f;
- out->u.m[1][3] = 0.0f;
- out->u.m[2][3] = 0.0f;
- out->u.m[3][3] = 1.0f;
+ out->m[0][0] = right.x;
+ out->m[1][0] = right.y;
+ out->m[2][0] = right.z;
+ out->m[3][0] = -D3DXVec3Dot(&right, eye);
+ out->m[0][1] = upn.x;
+ out->m[1][1] = upn.y;
+ out->m[2][1] = upn.z;
+ out->m[3][1] = -D3DXVec3Dot(&upn, eye);
+ out->m[0][2] = vec.x;
+ out->m[1][2] = vec.y;
+ out->m[2][2] = vec.z;
+ out->m[3][2] = -D3DXVec3Dot(&vec, eye);
+ out->m[0][3] = 0.0f;
+ out->m[1][3] = 0.0f;
+ out->m[2][3] = 0.0f;
+ out->m[3][3] = 1.0f;
return out;
}
@@ -370,22 +370,22 @@ D3DXMATRIX * WINAPI D3DXMatrixLookAtRH(D3DXMATRIX *out, const D3DXVECTOR3 *eye,
D3DXVec3Cross(&upn, &vec, &right);
D3DXVec3Normalize(&right, &right);
D3DXVec3Normalize(&upn, &upn);
- out->u.m[0][0] = -right.x;
- out->u.m[1][0] = -right.y;
- out->u.m[2][0] = -right.z;
- out->u.m[3][0] = D3DXVec3Dot(&right, eye);
- out->u.m[0][1] = upn.x;
- out->u.m[1][1] = upn.y;
- out->u.m[2][1] = upn.z;
- out->u.m[3][1] = -D3DXVec3Dot(&upn, eye);
- out->u.m[0][2] = -vec.x;
- out->u.m[1][2] = -vec.y;
- out->u.m[2][2] = -vec.z;
- out->u.m[3][2] = D3DXVec3Dot(&vec, eye);
- out->u.m[0][3] = 0.0f;
- out->u.m[1][3] = 0.0f;
- out->u.m[2][3] = 0.0f;
- out->u.m[3][3] = 1.0f;
+ out->m[0][0] = -right.x;
+ out->m[1][0] = -right.y;
+ out->m[2][0] = -right.z;
+ out->m[3][0] = D3DXVec3Dot(&right, eye);
+ out->m[0][1] = upn.x;
+ out->m[1][1] = upn.y;
+ out->m[2][1] = upn.z;
+ out->m[3][1] = -D3DXVec3Dot(&upn, eye);
+ out->m[0][2] = -vec.x;
+ out->m[1][2] = -vec.y;
+ out->m[2][2] = -vec.z;
+ out->m[3][2] = D3DXVec3Dot(&vec, eye);
+ out->m[0][3] = 0.0f;
+ out->m[1][3] = 0.0f;
+ out->m[2][3] = 0.0f;
+ out->m[3][3] = 1.0f;
return out;
}
@@ -401,7 +401,7 @@ D3DXMATRIX* WINAPI D3DXMatrixMultiply(D3DXMATRIX *pout, const D3DXMATRIX *pm1, c
{
for (j=0; j<4; j++)
{
- out.u.m[i][j] = pm1->u.m[i][0] * pm2->u.m[0][j] + pm1->u.m[i][1] * pm2->u.m[1][j] + pm1->u.m[i][2] * pm2->u.m[2][j] + pm1->u.m[i][3] * pm2->u.m[3][j];
+ out.m[i][j] = pm1->m[i][0] * pm2->m[0][j] + pm1->m[i][1] * pm2->m[1][j] + pm1->m[i][2] * pm2->m[2][j] + pm1->m[i][3] * pm2->m[3][j];
}
}
@@ -418,7 +418,7 @@ D3DXMATRIX* WINAPI D3DXMatrixMultiplyTranspose(D3DXMATRIX *pout, const D3DXMATRI
for (i = 0; i < 4; i++)
for (j = 0; j < 4; j++)
- temp.u.m[j][i] = pm1->u.m[i][0] * pm2->u.m[0][j] + pm1->u.m[i][1] * pm2->u.m[1][j] + pm1->u.m[i][2] * pm2->u.m[2][j] + pm1->u.m[i][3] * pm2->u.m[3][j];
+ temp.m[j][i] = pm1->m[i][0] * pm2->m[0][j] + pm1->m[i][1] * pm2->m[1][j] + pm1->m[i][2] * pm2->m[2][j] + pm1->m[i][3] * pm2->m[3][j];
*pout = temp;
return pout;
@@ -429,10 +429,10 @@ D3DXMATRIX* WINAPI D3DXMatrixOrthoLH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT z
TRACE("pout %p, w %f, h %f, zn %f, zf %f\n", pout, w, h, zn, zf);
D3DXMatrixIdentity(pout);
- pout->u.m[0][0] = 2.0f / w;
- pout->u.m[1][1] = 2.0f / h;
- pout->u.m[2][2] = 1.0f / (zf - zn);
- pout->u.m[3][2] = zn / (zn - zf);
+ pout->m[0][0] = 2.0f / w;
+ pout->m[1][1] = 2.0f / h;
+ pout->m[2][2] = 1.0f / (zf - zn);
+ pout->m[3][2] = zn / (zn - zf);
return pout;
}
@@ -441,12 +441,12 @@ D3DXMATRIX* WINAPI D3DXMatrixOrthoOffCenterLH(D3DXMATRIX *pout, FLOAT l, FLOAT r
TRACE("pout %p, l %f, r %f, b %f, t %f, zn %f, zf %f\n", pout, l, r, b, t, zn, zf);
D3DXMatrixIdentity(pout);
- pout->u.m[0][0] = 2.0f / (r - l);
- pout->u.m[1][1] = 2.0f / (t - b);
- pout->u.m[2][2] = 1.0f / (zf -zn);
- pout->u.m[3][0] = -1.0f -2.0f *l / (r - l);
- pout->u.m[3][1] = 1.0f + 2.0f * t / (b - t);
- pout->u.m[3][2] = zn / (zn -zf);
+ pout->m[0][0] = 2.0f / (r - l);
+ pout->m[1][1] = 2.0f / (t - b);
+ pout->m[2][2] = 1.0f / (zf -zn);
+ pout->m[3][0] = -1.0f -2.0f *l / (r - l);
+ pout->m[3][1] = 1.0f + 2.0f * t / (b - t);
+ pout->m[3][2] = zn / (zn -zf);
return pout;
}
@@ -455,12 +455,12 @@ D3DXMATRIX* WINAPI D3DXMatrixOrthoOffCenterRH(D3DXMATRIX *pout, FLOAT l, FLOAT r
TRACE("pout %p, l %f, r %f, b %f, t %f, zn %f, zf %f\n", pout, l, r, b, t, zn, zf);
D3DXMatrixIdentity(pout);
- pout->u.m[0][0] = 2.0f / (r - l);
- pout->u.m[1][1] = 2.0f / (t - b);
- pout->u.m[2][2] = 1.0f / (zn -zf);
- pout->u.m[3][0] = -1.0f -2.0f *l / (r - l);
- pout->u.m[3][1] = 1.0f + 2.0f * t / (b - t);
- pout->u.m[3][2] = zn / (zn -zf);
+ pout->m[0][0] = 2.0f / (r - l);
+ pout->m[1][1] = 2.0f / (t - b);
+ pout->m[2][2] = 1.0f / (zn -zf);
+ pout->m[3][0] = -1.0f -2.0f *l / (r - l);
+ pout->m[3][1] = 1.0f + 2.0f * t / (b - t);
+ pout->m[3][2] = zn / (zn -zf);
return pout;
}
@@ -469,10 +469,10 @@ D3DXMATRIX* WINAPI D3DXMatrixOrthoRH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT z
TRACE("pout %p, w %f, h %f, zn %f, zf %f\n", pout, w, h, zn, zf);
D3DXMatrixIdentity(pout);
- pout->u.m[0][0] = 2.0f / w;
- pout->u.m[1][1] = 2.0f / h;
- pout->u.m[2][2] = 1.0f / (zn - zf);
- pout->u.m[3][2] = zn / (zn - zf);
+ pout->m[0][0] = 2.0f / w;
+ pout->m[1][1] = 2.0f / h;
+ pout->m[2][2] = 1.0f / (zn - zf);
+ pout->m[3][2] = zn / (zn - zf);
return pout;
}
@@ -481,12 +481,12 @@ D3DXMATRIX* WINAPI D3DXMatrixPerspectiveFovLH(D3DXMATRIX *pout, FLOAT fovy, FLOA
TRACE("pout %p, fovy %f, aspect %f, zn %f, zf %f\n", pout, fovy, aspect, zn, zf);
D3DXMatrixIdentity(pout);
- pout->u.m[0][0] = 1.0f / (aspect * tanf(fovy/2.0f));
- pout->u.m[1][1] = 1.0f / tanf(fovy/2.0f);
- pout->u.m[2][2] = zf / (zf - zn);
- pout->u.m[2][3] = 1.0f;
- pout->u.m[3][2] = (zf * zn) / (zn - zf);
- pout->u.m[3][3] = 0.0f;
+ pout->m[0][0] = 1.0f / (aspect * tanf(fovy/2.0f));
+ pout->m[1][1] = 1.0f / tanf(fovy/2.0f);
+ pout->m[2][2] = zf / (zf - zn);
+ pout->m[2][3] = 1.0f;
+ pout->m[3][2] = (zf * zn) / (zn - zf);
+ pout->m[3][3] = 0.0f;
return pout;
}
@@ -495,12 +495,12 @@ D3DXMATRIX* WINAPI D3DXMatrixPerspectiveFovRH(D3DXMATRIX *pout, FLOAT fovy, FLOA
TRACE("pout %p, fovy %f, aspect %f, zn %f, zf %f\n", pout, fovy, aspect, zn, zf);
D3DXMatrixIdentity(pout);
- pout->u.m[0][0] = 1.0f / (aspect * tanf(fovy/2.0f));
- pout->u.m[1][1] = 1.0f / tanf(fovy/2.0f);
- pout->u.m[2][2] = zf / (zn - zf);
- pout->u.m[2][3] = -1.0f;
- pout->u.m[3][2] = (zf * zn) / (zn - zf);
- pout->u.m[3][3] = 0.0f;
+ pout->m[0][0] = 1.0f / (aspect * tanf(fovy/2.0f));
+ pout->m[1][1] = 1.0f / tanf(fovy/2.0f);
+ pout->m[2][2] = zf / (zn - zf);
+ pout->m[2][3] = -1.0f;
+ pout->m[3][2] = (zf * zn) / (zn - zf);
+ pout->m[3][3] = 0.0f;
return pout;
}
@@ -509,12 +509,12 @@ D3DXMATRIX* WINAPI D3DXMatrixPerspectiveLH(D3DXMATRIX *pout, FLOAT w, FLOAT h, F
TRACE("pout %p, w %f, h %f, zn %f, zf %f\n", pout, w, h, zn, zf);
D3DXMatrixIdentity(pout);
- pout->u.m[0][0] = 2.0f * zn / w;
- pout->u.m[1][1] = 2.0f * zn / h;
- pout->u.m[2][2] = zf / (zf - zn);
- pout->u.m[3][2] = (zn * zf) / (zn - zf);
- pout->u.m[2][3] = 1.0f;
- pout->u.m[3][3] = 0.0f;
+ pout->m[0][0] = 2.0f * zn / w;
+ pout->m[1][1] = 2.0f * zn / h;
+ pout->m[2][2] = zf / (zf - zn);
+ pout->m[3][2] = (zn * zf) / (zn - zf);
+ pout->m[2][3] = 1.0f;
+ pout->m[3][3] = 0.0f;
return pout;
}
@@ -523,14 +523,14 @@ D3DXMATRIX* WINAPI D3DXMatrixPerspectiveOffCenterLH(D3DXMATRIX *pout, FLOAT l, F
TRACE("pout %p, l %f, r %f, b %f, t %f, zn %f, zf %f\n", pout, l, r, b, t, zn, zf);
D3DXMatrixIdentity(pout);
- pout->u.m[0][0] = 2.0f * zn / (r - l);
- pout->u.m[1][1] = -2.0f * zn / (b - t);
- pout->u.m[2][0] = -1.0f - 2.0f * l / (r - l);
- pout->u.m[2][1] = 1.0f + 2.0f * t / (b - t);
- pout->u.m[2][2] = - zf / (zn - zf);
- pout->u.m[3][2] = (zn * zf) / (zn -zf);
- pout->u.m[2][3] = 1.0f;
- pout->u.m[3][3] = 0.0f;
+ pout->m[0][0] = 2.0f * zn / (r - l);
+ pout->m[1][1] = -2.0f * zn / (b - t);
+ pout->m[2][0] = -1.0f - 2.0f * l / (r - l);
+ pout->m[2][1] = 1.0f + 2.0f * t / (b - t);
+ pout->m[2][2] = - zf / (zn - zf);
+ pout->m[3][2] = (zn * zf) / (zn -zf);
+ pout->m[2][3] = 1.0f;
+ pout->m[3][3] = 0.0f;
return pout;
}
@@ -539,14 +539,14 @@ D3DXMATRIX* WINAPI D3DXMatrixPerspectiveOffCenterRH(D3DXMATRIX *pout, FLOAT l, F
TRACE("pout %p, l %f, r %f, b %f, t %f, zn %f, zf %f\n", pout, l, r, b, t, zn, zf);
D3DXMatrixIdentity(pout);
- pout->u.m[0][0] = 2.0f * zn / (r - l);
- pout->u.m[1][1] = -2.0f * zn / (b - t);
- pout->u.m[2][0] = 1.0f + 2.0f * l / (r - l);
- pout->u.m[2][1] = -1.0f -2.0f * t / (b - t);
- pout->u.m[2][2] = zf / (zn - zf);
- pout->u.m[3][2] = (zn * zf) / (zn -zf);
- pout->u.m[2][3] = -1.0f;
- pout->u.m[3][3] = 0.0f;
+ pout->m[0][0] = 2.0f * zn / (r - l);
+ pout->m[1][1] = -2.0f * zn / (b - t);
+ pout->m[2][0] = 1.0f + 2.0f * l / (r - l);
+ pout->m[2][1] = -1.0f -2.0f * t / (b - t);
+ pout->m[2][2] = zf / (zn - zf);
+ pout->m[3][2] = (zn * zf) / (zn -zf);
+ pout->m[2][3] = -1.0f;
+ pout->m[3][3] = 0.0f;
return pout;
}
@@ -555,12 +555,12 @@ D3DXMATRIX* WINAPI D3DXMatrixPerspectiveRH(D3DXMATRIX *pout, FLOAT w, FLOAT h, F
TRACE("pout %p, w %f, h %f, zn %f, zf %f\n", pout, w, h, zn, zf);
D3DXMatrixIdentity(pout);
- pout->u.m[0][0] = 2.0f * zn / w;
- pout->u.m[1][1] = 2.0f * zn / h;
- pout->u.m[2][2] = zf / (zn - zf);
- pout->u.m[3][2] = (zn * zf) / (zn - zf);
- pout->u.m[2][3] = -1.0f;
- pout->u.m[3][3] = 0.0f;
+ pout->m[0][0] = 2.0f * zn / w;
+ pout->m[1][1] = 2.0f * zn / h;
+ pout->m[2][2] = zf / (zn - zf);
+ pout->m[3][2] = (zn * zf) / (zn - zf);
+ pout->m[2][3] = -1.0f;
+ pout->m[3][3] = 0.0f;
return pout;
}
@@ -572,18 +572,18 @@ D3DXMATRIX* WINAPI D3DXMatrixReflect(D3DXMATRIX *pout, const D3DXPLANE *pplane)
D3DXPlaneNormalize(&Nplane, pplane);
D3DXMatrixIdentity(pout);
- pout->u.m[0][0] = 1.0f - 2.0f * Nplane.a * Nplane.a;
- pout->u.m[0][1] = -2.0f * Nplane.a * Nplane.b;
- pout->u.m[0][2] = -2.0f * Nplane.a * Nplane.c;
- pout->u.m[1][0] = -2.0f * Nplane.a * Nplane.b;
- pout->u.m[1][1] = 1.0f - 2.0f * Nplane.b * Nplane.b;
- pout->u.m[1][2] = -2.0f * Nplane.b * Nplane.c;
- pout->u.m[2][0] = -2.0f * Nplane.c * Nplane.a;
- pout->u.m[2][1] = -2.0f * Nplane.c * Nplane.b;
- pout->u.m[2][2] = 1.0f - 2.0f * Nplane.c * Nplane.c;
- pout->u.m[3][0] = -2.0f * Nplane.d * Nplane.a;
- pout->u.m[3][1] = -2.0f * Nplane.d * Nplane.b;
- pout->u.m[3][2] = -2.0f * Nplane.d * Nplane.c;
+ pout->m[0][0] = 1.0f - 2.0f * Nplane.a * Nplane.a;
+ pout->m[0][1] = -2.0f * Nplane.a * Nplane.b;
+ pout->m[0][2] = -2.0f * Nplane.a * Nplane.c;
+ pout->m[1][0] = -2.0f * Nplane.a * Nplane.b;
+ pout->m[1][1] = 1.0f - 2.0f * Nplane.b * Nplane.b;
+ pout->m[1][2] = -2.0f * Nplane.b * Nplane.c;
+ pout->m[2][0] = -2.0f * Nplane.c * Nplane.a;
+ pout->m[2][1] = -2.0f * Nplane.c * Nplane.b;
+ pout->m[2][2] = 1.0f - 2.0f * Nplane.c * Nplane.c;
+ pout->m[3][0] = -2.0f * Nplane.d * Nplane.a;
+ pout->m[3][1] = -2.0f * Nplane.d * Nplane.b;
+ pout->m[3][2] = -2.0f * Nplane.d * Nplane.c;
return pout;
}
@@ -599,22 +599,22 @@ D3DXMATRIX * WINAPI D3DXMatrixRotationAxis(D3DXMATRIX *out, const D3DXVECTOR3 *v
cangle = cosf(angle);
cdiff = 1.0f - cangle;
- out->u.m[0][0] = cdiff * nv.x * nv.x + cangle;
- out->u.m[1][0] = cdiff * nv.x * nv.y - sangle * nv.z;
- out->u.m[2][0] = cdiff * nv.x * nv.z + sangle * nv.y;
- out->u.m[3][0] = 0.0f;
- out->u.m[0][1] = cdiff * nv.y * nv.x + sangle * nv.z;
- out->u.m[1][1] = cdiff * nv.y * nv.y + cangle;
- out->u.m[2][1] = cdiff * nv.y * nv.z - sangle * nv.x;
- out->u.m[3][1] = 0.0f;
- out->u.m[0][2] = cdiff * nv.z * nv.x - sangle * nv.y;
- out->u.m[1][2] = cdiff * nv.z * nv.y + sangle * nv.x;
- out->u.m[2][2] = cdiff * nv.z * nv.z + cangle;
- out->u.m[3][2] = 0.0f;
- out->u.m[0][3] = 0.0f;
- out->u.m[1][3] = 0.0f;
- out->u.m[2][3] = 0.0f;
- out->u.m[3][3] = 1.0f;
+ out->m[0][0] = cdiff * nv.x * nv.x + cangle;
+ out->m[1][0] = cdiff * nv.x * nv.y - sangle * nv.z;
+ out->m[2][0] = cdiff * nv.x * nv.z + sangle * nv.y;
+ out->m[3][0] = 0.0f;
+ out->m[0][1] = cdiff * nv.y * nv.x + sangle * nv.z;
+ out->m[1][1] = cdiff * nv.y * nv.y + cangle;
+ out->m[2][1] = cdiff * nv.y * nv.z - sangle * nv.x;
+ out->m[3][1] = 0.0f;
+ out->m[0][2] = cdiff * nv.z * nv.x - sangle * nv.y;
+ out->m[1][2] = cdiff * nv.z * nv.y + sangle * nv.x;
+ out->m[2][2] = cdiff * nv.z * nv.z + cangle;
+ out->m[3][2] = 0.0f;
+ out->m[0][3] = 0.0f;
+ out->m[1][3] = 0.0f;
+ out->m[2][3] = 0.0f;
+ out->m[3][3] = 1.0f;
return out;
}
@@ -624,15 +624,15 @@ D3DXMATRIX* WINAPI D3DXMatrixRotationQuaternion(D3DXMATRIX *pout, const D3DXQUAT
TRACE("pout %p, pq %p\n", pout, pq);
D3DXMatrixIdentity(pout);
- pout->u.m[0][0] = 1.0f - 2.0f * (pq->y * pq->y + pq->z * pq->z);
- pout->u.m[0][1] = 2.0f * (pq->x *pq->y + pq->z * pq->w);
- pout->u.m[0][2] = 2.0f * (pq->x * pq->z - pq->y * pq->w);
- pout->u.m[1][0] = 2.0f * (pq->x * pq->y - pq->z * pq->w);
- pout->u.m[1][1] = 1.0f - 2.0f * (pq->x * pq->x + pq->z * pq->z);
- pout->u.m[1][2] = 2.0f * (pq->y *pq->z + pq->x *pq->w);
- pout->u.m[2][0] = 2.0f * (pq->x * pq->z + pq->y * pq->w);
- pout->u.m[2][1] = 2.0f * (pq->y *pq->z - pq->x *pq->w);
- pout->u.m[2][2] = 1.0f - 2.0f * (pq->x * pq->x + pq->y * pq->y);
+ pout->m[0][0] = 1.0f - 2.0f * (pq->y * pq->y + pq->z * pq->z);
+ pout->m[0][1] = 2.0f * (pq->x *pq->y + pq->z * pq->w);
+ pout->m[0][2] = 2.0f * (pq->x * pq->z - pq->y * pq->w);
+ pout->m[1][0] = 2.0f * (pq->x * pq->y - pq->z * pq->w);
+ pout->m[1][1] = 1.0f - 2.0f * (pq->x * pq->x + pq->z * pq->z);
+ pout->m[1][2] = 2.0f * (pq->y *pq->z + pq->x *pq->w);
+ pout->m[2][0] = 2.0f * (pq->x * pq->z + pq->y * pq->w);
+ pout->m[2][1] = 2.0f * (pq->y *pq->z - pq->x *pq->w);
+ pout->m[2][2] = 1.0f - 2.0f * (pq->x * pq->x + pq->y * pq->y);
return pout;
}
@@ -641,10 +641,10 @@ D3DXMATRIX* WINAPI D3DXMatrixRotationX(D3DXMATRIX *pout, FLOAT angle)
TRACE("pout %p, angle %f\n", pout, angle);
D3DXMatrixIdentity(pout);
- pout->u.m[1][1] = cosf(angle);
- pout->u.m[2][2] = cosf(angle);
- pout->u.m[1][2] = sinf(angle);
- pout->u.m[2][1] = -sinf(angle);
+ pout->m[1][1] = cosf(angle);
+ pout->m[2][2] = cosf(angle);
+ pout->m[1][2] = sinf(angle);
+ pout->m[2][1] = -sinf(angle);
return pout;
}
@@ -653,10 +653,10 @@ D3DXMATRIX* WINAPI D3DXMatrixRotationY(D3DXMATRIX *pout, FLOAT angle)
TRACE("pout %p, angle %f\n", pout, angle);
D3DXMatrixIdentity(pout);
- pout->u.m[0][0] = cosf(angle);
- pout->u.m[2][2] = cosf(angle);
- pout->u.m[0][2] = -sinf(angle);
- pout->u.m[2][0] = sinf(angle);
+ pout->m[0][0] = cosf(angle);
+ pout->m[2][2] = cosf(angle);
+ pout->m[0][2] = -sinf(angle);
+ pout->m[2][0] = sinf(angle);
return pout;
}
@@ -673,22 +673,22 @@ D3DXMATRIX * WINAPI D3DXMatrixRotationYawPitchRoll(D3DXMATRIX *out, FLOAT yaw, F
syaw = sinf(yaw);
cyaw = cosf(yaw);
- out->u.m[0][0] = sroll * spitch * syaw + croll * cyaw;
- out->u.m[0][1] = sroll * cpitch;
- out->u.m[0][2] = sroll * spitch * cyaw - croll * syaw;
- out->u.m[0][3] = 0.0f;
- out->u.m[1][0] = croll * spitch * syaw - sroll * cyaw;
- out->u.m[1][1] = croll * cpitch;
- out->u.m[1][2] = croll * spitch * cyaw + sroll * syaw;
- out->u.m[1][3] = 0.0f;
- out->u.m[2][0] = cpitch * syaw;
- out->u.m[2][1] = -spitch;
- out->u.m[2][2] = cpitch * cyaw;
- out->u.m[2][3] = 0.0f;
- out->u.m[3][0] = 0.0f;
- out->u.m[3][1] = 0.0f;
- out->u.m[3][2] = 0.0f;
- out->u.m[3][3] = 1.0f;
+ out->m[0][0] = sroll * spitch * syaw + croll * cyaw;
+ out->m[0][1] = sroll * cpitch;
+ out->m[0][2] = sroll * spitch * cyaw - croll * syaw;
+ out->m[0][3] = 0.0f;
+ out->m[1][0] = croll * spitch * syaw - sroll * cyaw;
+ out->m[1][1] = croll * cpitch;
+ out->m[1][2] = croll * spitch * cyaw + sroll * syaw;
+ out->m[1][3] = 0.0f;
+ out->m[2][0] = cpitch * syaw;
+ out->m[2][1] = -spitch;
+ out->m[2][2] = cpitch * cyaw;
+ out->m[2][3] = 0.0f;
+ out->m[3][0] = 0.0f;
+ out->m[3][1] = 0.0f;
+ out->m[3][2] = 0.0f;
+ out->m[3][3] = 1.0f;
return out;
}
@@ -698,10 +698,10 @@ D3DXMATRIX* WINAPI D3DXMatrixRotationZ(D3DXMATRIX *pout, FLOAT angle)
TRACE("pout %p, angle %f\n", pout, angle);
D3DXMatrixIdentity(pout);
- pout->u.m[0][0] = cosf(angle);
- pout->u.m[1][1] = cosf(angle);
- pout->u.m[0][1] = sinf(angle);
- pout->u.m[1][0] = -sinf(angle);
+ pout->m[0][0] = cosf(angle);
+ pout->m[1][1] = cosf(angle);
+ pout->m[0][1] = sinf(angle);
+ pout->m[1][0] = -sinf(angle);
return pout;
}
@@ -710,9 +710,9 @@ D3DXMATRIX* WINAPI D3DXMatrixScaling(D3DXMATRIX *pout, FLOAT sx, FLOAT sy, FLOAT
TRACE("pout %p, sx %f, sy %f, sz %f\n", pout, sx, sy, sz);
D3DXMatrixIdentity(pout);
- pout->u.m[0][0] = sx;
- pout->u.m[1][1] = sy;
- pout->u.m[2][2] = sz;
+ pout->m[0][0] = sx;
+ pout->m[1][1] = sy;
+ pout->m[2][2] = sz;
return pout;
}
@@ -725,22 +725,22 @@ D3DXMATRIX* WINAPI D3DXMatrixShadow(D3DXMATRIX *pout, const D3DXVECTOR4 *plight,
D3DXPlaneNormalize(&Nplane, pplane);
dot = D3DXPlaneDot(&Nplane, plight);
- pout->u.m[0][0] = dot - Nplane.a * plight->x;
- pout->u.m[0][1] = -Nplane.a * plight->y;
- pout->u.m[0][2] = -Nplane.a * plight->z;
- pout->u.m[0][3] = -Nplane.a * plight->w;
- pout->u.m[1][0] = -Nplane.b * plight->x;
- pout->u.m[1][1] = dot - Nplane.b * plight->y;
- pout->u.m[1][2] = -Nplane.b * plight->z;
- pout->u.m[1][3] = -Nplane.b * plight->w;
- pout->u.m[2][0] = -Nplane.c * plight->x;
- pout->u.m[2][1] = -Nplane.c * plight->y;
- pout->u.m[2][2] = dot - Nplane.c * plight->z;
- pout->u.m[2][3] = -Nplane.c * plight->w;
- pout->u.m[3][0] = -Nplane.d * plight->x;
- pout->u.m[3][1] = -Nplane.d * plight->y;
- pout->u.m[3][2] = -Nplane.d * plight->z;
- pout->u.m[3][3] = dot - Nplane.d * plight->w;
+ pout->m[0][0] = dot - Nplane.a * plight->x;
+ pout->m[0][1] = -Nplane.a * plight->y;
+ pout->m[0][2] = -Nplane.a * plight->z;
+ pout->m[0][3] = -Nplane.a * plight->w;
+ pout->m[1][0] = -Nplane.b * plight->x;
+ pout->m[1][1] = dot - Nplane.b * plight->y;
+ pout->m[1][2] = -Nplane.b * plight->z;
+ pout->m[1][3] = -Nplane.b * plight->w;
+ pout->m[2][0] = -Nplane.c * plight->x;
+ pout->m[2][1] = -Nplane.c * plight->y;
+ pout->m[2][2] = dot - Nplane.c * plight->z;
+ pout->m[2][3] = -Nplane.c * plight->w;
+ pout->m[3][0] = -Nplane.d * plight->x;
+ pout->m[3][1] = -Nplane.d * plight->y;
+ pout->m[3][2] = -Nplane.d * plight->z;
+ pout->m[3][3] = dot - Nplane.d * plight->w;
return pout;
}
@@ -864,23 +864,25 @@ D3DXMATRIX* WINAPI D3DXMatrixTranslation(D3DXMATRIX *pout, FLOAT x, FLOAT y, FLO
TRACE("pout %p, x %f, y %f, z %f\n", pout, x, y, z);
D3DXMatrixIdentity(pout);
- pout->u.m[3][0] = x;
- pout->u.m[3][1] = y;
- pout->u.m[3][2] = z;
+ pout->m[3][0] = x;
+ pout->m[3][1] = y;
+ pout->m[3][2] = z;
return pout;
}
-D3DXMATRIX* WINAPI D3DXMatrixTranspose(D3DXMATRIX *pout, const D3DXMATRIX *pm)
+D3DXMATRIX* WINAPI D3DXMatrixTranspose(D3DXMATRIX *out, const D3DXMATRIX *in)
{
- const D3DXMATRIX m = *pm;
- int i,j;
+ unsigned int i, j;
+ D3DXMATRIX m;
- TRACE("pout %p, pm %p\n", pout, pm);
+ TRACE("out %p, in %p.\n", out, in);
- for (i=0; i<4; i++)
- for (j=0; j<4; j++) pout->u.m[i][j] = m.u.m[j][i];
+ m = *in;
- return pout;
+ for (i = 0; i < 4; ++i)
+ for (j = 0; j < 4; ++j) out->m[i][j] = m.m[j][i];
+
+ return out;
}
/*_________________D3DXMatrixStack____________________*/
@@ -1277,10 +1279,10 @@ D3DXPLANE* WINAPI D3DXPlaneTransform(D3DXPLANE *pout, const D3DXPLANE *pplane, c
TRACE("pout %p, pplane %p, pm %p\n", pout, pplane, pm);
- pout->a = pm->u.m[0][0] * plane.a + pm->u.m[1][0] * plane.b + pm->u.m[2][0] * plane.c + pm->u.m[3][0] * plane.d;
- pout->b = pm->u.m[0][1] * plane.a + pm->u.m[1][1] * plane.b + pm->u.m[2][1] * plane.c + pm->u.m[3][1] * plane.d;
- pout->c = pm->u.m[0][2] * plane.a + pm->u.m[1][2] * plane.b + pm->u.m[2][2] * plane.c + pm->u.m[3][2] * plane.d;
- pout->d = pm->u.m[0][3] * plane.a + pm->u.m[1][3] * plane.b + pm->u.m[2][3] * plane.c + pm->u.m[3][3] * plane.d;
+ pout->a = pm->m[0][0] * plane.a + pm->m[1][0] * plane.b + pm->m[2][0] * plane.c + pm->m[3][0] * plane.d;
+ pout->b = pm->m[0][1] * plane.a + pm->m[1][1] * plane.b + pm->m[2][1] * plane.c + pm->m[3][1] * plane.d;
+ pout->c = pm->m[0][2] * plane.a + pm->m[1][2] * plane.b + pm->m[2][2] * plane.c + pm->m[3][2] * plane.d;
+ pout->d = pm->m[0][3] * plane.a + pm->m[1][3] * plane.b + pm->m[2][3] * plane.c + pm->m[3][3] * plane.d;
return pout;
}
@@ -1422,13 +1424,13 @@ D3DXQUATERNION * WINAPI D3DXQuaternionRotationMatrix(D3DXQUATERNION *out, const
TRACE("out %p, m %p\n", out, m);
- trace = m->u.m[0][0] + m->u.m[1][1] + m->u.m[2][2] + 1.0f;
+ trace = m->m[0][0] + m->m[1][1] + m->m[2][2] + 1.0f;
if (trace > 1.0f)
{
s = 2.0f * sqrtf(trace);
- out->x = (m->u.m[1][2] - m->u.m[2][1]) / s;
- out->y = (m->u.m[2][0] - m->u.m[0][2]) / s;
- out->z = (m->u.m[0][1] - m->u.m[1][0]) / s;
+ out->x = (m->m[1][2] - m->m[2][1]) / s;
+ out->y = (m->m[2][0] - m->m[0][2]) / s;
+ out->z = (m->m[0][1] - m->m[1][0]) / s;
out->w = 0.25f * s;
}
else
@@ -1437,34 +1439,34 @@ D3DXQUATERNION * WINAPI D3DXQuaternionRotationMatrix(D3DXQUATERNION *out, const
for (i = 1; i < 3; i++)
{
- if (m->u.m[i][i] > m->u.m[maxi][maxi])
+ if (m->m[i][i] > m->m[maxi][maxi])
maxi = i;
}
switch (maxi)
{
case 0:
- s = 2.0f * sqrtf(1.0f + m->u.m[0][0] - m->u.m[1][1] - m->u.m[2][2]);
+ s = 2.0f * sqrtf(1.0f + m->m[0][0] - m->m[1][1] - m->m[2][2]);
out->x = 0.25f * s;
- out->y = (m->u.m[0][1] + m->u.m[1][0]) / s;
- out->z = (m->u.m[0][2] + m->u.m[2][0]) / s;
- out->w = (m->u.m[1][2] - m->u.m[2][1]) / s;
+ out->y = (m->m[0][1] + m->m[1][0]) / s;
+ out->z = (m->m[0][2] + m->m[2][0]) / s;
+ out->w = (m->m[1][2] - m->m[2][1]) / s;
break;
case 1:
- s = 2.0f * sqrtf(1.0f + m->u.m[1][1] - m->u.m[0][0] - m->u.m[2][2]);
- out->x = (m->u.m[0][1] + m->u.m[1][0]) / s;
+ s = 2.0f * sqrtf(1.0f + m->m[1][1] - m->m[0][0] - m->m[2][2]);
+ out->x = (m->m[0][1] + m->m[1][0]) / s;
out->y = 0.25f * s;
- out->z = (m->u.m[1][2] + m->u.m[2][1]) / s;
- out->w = (m->u.m[2][0] - m->u.m[0][2]) / s;
+ out->z = (m->m[1][2] + m->m[2][1]) / s;
+ out->w = (m->m[2][0] - m->m[0][2]) / s;
break;
case 2:
- s = 2.0f * sqrtf(1.0f + m->u.m[2][2] - m->u.m[0][0] - m->u.m[1][1]);
- out->x = (m->u.m[0][2] + m->u.m[2][0]) / s;
- out->y = (m->u.m[1][2] + m->u.m[2][1]) / s;
+ s = 2.0f * sqrtf(1.0f + m->m[2][2] - m->m[0][0] - m->m[1][1]);
+ out->x = (m->m[0][2] + m->m[2][0]) / s;
+ out->y = (m->m[1][2] + m->m[2][1]) / s;
out->z = 0.25f * s;
- out->w = (m->u.m[0][1] - m->u.m[1][0]) / s;
+ out->w = (m->m[0][1] - m->m[1][0]) / s;
break;
}
}
@@ -1679,10 +1681,10 @@ D3DXVECTOR4* WINAPI D3DXVec2Transform(D3DXVECTOR4 *pout, const D3DXVECTOR2 *pv,
TRACE("pout %p, pv %p, pm %p\n", pout, pv, pm);
- out.x = pm->u.m[0][0] * pv->x + pm->u.m[1][0] * pv->y + pm->u.m[3][0];
- out.y = pm->u.m[0][1] * pv->x + pm->u.m[1][1] * pv->y + pm->u.m[3][1];
- out.z = pm->u.m[0][2] * pv->x + pm->u.m[1][2] * pv->y + pm->u.m[3][2];
- out.w = pm->u.m[0][3] * pv->x + pm->u.m[1][3] * pv->y + pm->u.m[3][3];
+ out.x = pm->m[0][0] * pv->x + pm->m[1][0] * pv->y + pm->m[3][0];
+ out.y = pm->m[0][1] * pv->x + pm->m[1][1] * pv->y + pm->m[3][1];
+ out.z = pm->m[0][2] * pv->x + pm->m[1][2] * pv->y + pm->m[3][2];
+ out.w = pm->m[0][3] * pv->x + pm->m[1][3] * pv->y + pm->m[3][3];
*pout = out;
return pout;
}
@@ -1710,10 +1712,10 @@ D3DXVECTOR2* WINAPI D3DXVec2TransformCoord(D3DXVECTOR2 *pout, const D3DXVECTOR2
TRACE("pout %p, pv %p, pm %p\n", pout, pv, pm);
v = *pv;
- norm = pm->u.m[0][3] * pv->x + pm->u.m[1][3] * pv->y + pm->u.m[3][3];
+ norm = pm->m[0][3] * pv->x + pm->m[1][3] * pv->y + pm->m[3][3];
- pout->x = (pm->u.m[0][0] * v.x + pm->u.m[1][0] * v.y + pm->u.m[3][0]) / norm;
- pout->y = (pm->u.m[0][1] * v.x + pm->u.m[1][1] * v.y + pm->u.m[3][1]) / norm;
+ pout->x = (pm->m[0][0] * v.x + pm->m[1][0] * v.y + pm->m[3][0]) / norm;
+ pout->y = (pm->m[0][1] * v.x + pm->m[1][1] * v.y + pm->m[3][1]) / norm;
return pout;
}
@@ -1739,8 +1741,8 @@ D3DXVECTOR2* WINAPI D3DXVec2TransformNormal(D3DXVECTOR2 *pout, const D3DXVECTOR2
TRACE("pout %p, pv %p, pm %p\n", pout, pv, pm);
- pout->x = pm->u.m[0][0] * v.x + pm->u.m[1][0] * v.y;
- pout->y = pm->u.m[0][1] * v.x + pm->u.m[1][1] * v.y;
+ pout->x = pm->m[0][0] * v.x + pm->m[1][0] * v.y;
+ pout->y = pm->m[0][1] * v.x + pm->m[1][1] * v.y;
return pout;
}
@@ -1865,10 +1867,10 @@ D3DXVECTOR4* WINAPI D3DXVec3Transform(D3DXVECTOR4 *pout, const D3DXVECTOR3 *pv,
TRACE("pout %p, pv %p, pm %p\n", pout, pv, pm);
- out.x = pm->u.m[0][0] * pv->x + pm->u.m[1][0] * pv->y + pm->u.m[2][0] * pv->z + pm->u.m[3][0];
- out.y = pm->u.m[0][1] * pv->x + pm->u.m[1][1] * pv->y + pm->u.m[2][1] * pv->z + pm->u.m[3][1];
- out.z = pm->u.m[0][2] * pv->x + pm->u.m[1][2] * pv->y + pm->u.m[2][2] * pv->z + pm->u.m[3][2];
- out.w = pm->u.m[0][3] * pv->x + pm->u.m[1][3] * pv->y + pm->u.m[2][3] * pv->z + pm->u.m[3][3];
+ out.x = pm->m[0][0] * pv->x + pm->m[1][0] * pv->y + pm->m[2][0] * pv->z + pm->m[3][0];
+ out.y = pm->m[0][1] * pv->x + pm->m[1][1] * pv->y + pm->m[2][1] * pv->z + pm->m[3][1];
+ out.z = pm->m[0][2] * pv->x + pm->m[1][2] * pv->y + pm->m[2][2] * pv->z + pm->m[3][2];
+ out.w = pm->m[0][3] * pv->x + pm->m[1][3] * pv->y + pm->m[2][3] * pv->z + pm->m[3][3];
*pout = out;
return pout;
}
@@ -1895,11 +1897,11 @@ D3DXVECTOR3* WINAPI D3DXVec3TransformCoord(D3DXVECTOR3 *pout, const D3DXVECTOR3
TRACE("pout %p, pv %p, pm %p\n", pout, pv, pm);
- norm = pm->u.m[0][3] * pv->x + pm->u.m[1][3] * pv->y + pm->u.m[2][3] *pv->z + pm->u.m[3][3];
+ norm = pm->m[0][3] * pv->x + pm->m[1][3] * pv->y + pm->m[2][3] *pv->z + pm->m[3][3];
- out.x = (pm->u.m[0][0] * pv->x + pm->u.m[1][0] * pv->y + pm->u.m[2][0] * pv->z + pm->u.m[3][0]) / norm;
- out.y = (pm->u.m[0][1] * pv->x + pm->u.m[1][1] * pv->y + pm->u.m[2][1] * pv->z + pm->u.m[3][1]) / norm;
- out.z = (pm->u.m[0][2] * pv->x + pm->u.m[1][2] * pv->y + pm->u.m[2][2] * pv->z + pm->u.m[3][2]) / norm;
+ out.x = (pm->m[0][0] * pv->x + pm->m[1][0] * pv->y + pm->m[2][0] * pv->z + pm->m[3][0]) / norm;
+ out.y = (pm->m[0][1] * pv->x + pm->m[1][1] * pv->y + pm->m[2][1] * pv->z + pm->m[3][1]) / norm;
+ out.z = (pm->m[0][2] * pv->x + pm->m[1][2] * pv->y + pm->m[2][2] * pv->z + pm->m[3][2]) / norm;
*pout = out;
@@ -1927,9 +1929,9 @@ D3DXVECTOR3* WINAPI D3DXVec3TransformNormal(D3DXVECTOR3 *pout, const D3DXVECTOR3
TRACE("pout %p, pv %p, pm %p\n", pout, pv, pm);
- pout->x = pm->u.m[0][0] * v.x + pm->u.m[1][0] * v.y + pm->u.m[2][0] * v.z;
- pout->y = pm->u.m[0][1] * v.x + pm->u.m[1][1] * v.y + pm->u.m[2][1] * v.z;
- pout->z = pm->u.m[0][2] * v.x + pm->u.m[1][2] * v.y + pm->u.m[2][2] * v.z;
+ pout->x = pm->m[0][0] * v.x + pm->m[1][0] * v.y + pm->m[2][0] * v.z;
+ pout->y = pm->m[0][1] * v.x + pm->m[1][1] * v.y + pm->m[2][1] * v.z;
+ pout->z = pm->m[0][2] * v.x + pm->m[1][2] * v.y + pm->m[2][2] * v.z;
return pout;
}
@@ -2072,10 +2074,10 @@ D3DXVECTOR4* WINAPI D3DXVec4Transform(D3DXVECTOR4 *pout, const D3DXVECTOR4 *pv,
TRACE("pout %p, pv %p, pm %p\n", pout, pv, pm);
- out.x = pm->u.m[0][0] * pv->x + pm->u.m[1][0] * pv->y + pm->u.m[2][0] * pv->z + pm->u.m[3][0] * pv->w;
- out.y = pm->u.m[0][1] * pv->x + pm->u.m[1][1] * pv->y + pm->u.m[2][1] * pv->z + pm->u.m[3][1] * pv->w;
- out.z = pm->u.m[0][2] * pv->x + pm->u.m[1][2] * pv->y + pm->u.m[2][2] * pv->z + pm->u.m[3][2] * pv->w;
- out.w = pm->u.m[0][3] * pv->x + pm->u.m[1][3] * pv->y + pm->u.m[2][3] * pv->z + pm->u.m[3][3] * pv->w;
+ out.x = pm->m[0][0] * pv->x + pm->m[1][0] * pv->y + pm->m[2][0] * pv->z + pm->m[3][0] * pv->w;
+ out.y = pm->m[0][1] * pv->x + pm->m[1][1] * pv->y + pm->m[2][1] * pv->z + pm->m[3][1] * pv->w;
+ out.z = pm->m[0][2] * pv->x + pm->m[1][2] * pv->y + pm->m[2][2] * pv->z + pm->m[3][2] * pv->w;
+ out.w = pm->m[0][3] * pv->x + pm->m[1][3] * pv->y + pm->m[2][3] * pv->z + pm->m[3][3] * pv->w;
*pout = out;
return pout;
}
@@ -3129,44 +3131,46 @@ FLOAT* WINAPI D3DXSHRotate(FLOAT *out, UINT order, const D3DXMATRIX *matrix, con
if (order <= 3)
{
- out[1] = matrix->u.m[1][1] * in[1] - matrix->u.m[2][1] * in[2] + matrix->u.m[0][1] * in[3];
- out[2] = -matrix->u.m[1][2] * in[1] + matrix->u.m[2][2] * in[2] - matrix->u.m[0][2] * in[3];
- out[3] = matrix->u.m[1][0] * in[1] - matrix->u.m[2][0] * in[2] + matrix->u.m[0][0] * in[3];
+ out[1] = matrix->m[1][1] * in[1] - matrix->m[2][1] * in[2] + matrix->m[0][1] * in[3];
+ out[2] = -matrix->m[1][2] * in[1] + matrix->m[2][2] * in[2] - matrix->m[0][2] * in[3];
+ out[3] = matrix->m[1][0] * in[1] - matrix->m[2][0] * in[2] + matrix->m[0][0] * in[3];
if (order == 3)
{
- FLOAT coeff[]={
- matrix->u.m[1][0] * matrix->u.m[0][0], matrix->u.m[1][1] * matrix->u.m[0][1],
- matrix->u.m[1][1] * matrix->u.m[2][1], matrix->u.m[1][0] * matrix->u.m[2][0],
- matrix->u.m[2][0] * matrix->u.m[2][0], matrix->u.m[2][1] * matrix->u.m[2][1],
- matrix->u.m[0][0] * matrix->u.m[2][0], matrix->u.m[0][1] * matrix->u.m[2][1],
- matrix->u.m[0][1] * matrix->u.m[0][1], matrix->u.m[1][0] * matrix->u.m[1][0],
- matrix->u.m[1][1] * matrix->u.m[1][1], matrix->u.m[0][0] * matrix->u.m[0][0], };
-
- out[4] = (matrix->u.m[1][1] * matrix->u.m[0][0] + matrix->u.m[0][1] * matrix->u.m[1][0]) * in[4];
- out[4] -= (matrix->u.m[1][0] * matrix->u.m[2][1] + matrix->u.m[1][1] * matrix->u.m[2][0]) * in[5];
- out[4] += 1.7320508076f * matrix->u.m[2][0] * matrix->u.m[2][1] * in[6];
- out[4] -= (matrix->u.m[0][1] * matrix->u.m[2][0] + matrix->u.m[0][0] * matrix->u.m[2][1]) * in[7];
- out[4] += (matrix->u.m[0][0] * matrix->u.m[0][1] - matrix->u.m[1][0] * matrix->u.m[1][1]) * in[8];
-
- out[5] = (matrix->u.m[1][1] * matrix->u.m[2][2] + matrix->u.m[1][2] * matrix->u.m[2][1]) * in[5];
- out[5] -= (matrix->u.m[1][1] * matrix->u.m[0][2] + matrix->u.m[1][2] * matrix->u.m[0][1]) * in[4];
- out[5] -= 1.7320508076f * matrix->u.m[2][2] * matrix->u.m[2][1] * in[6];
- out[5] += (matrix->u.m[0][2] * matrix->u.m[2][1] + matrix->u.m[0][1] * matrix->u.m[2][2]) * in[7];
- out[5] -= (matrix->u.m[0][1] * matrix->u.m[0][2] - matrix->u.m[1][1] * matrix->u.m[1][2]) * in[8];
-
- out[6] = (matrix->u.m[2][2] * matrix->u.m[2][2] - 0.5f * (coeff[4] + coeff[5])) * in[6];
- out[6] -= (0.5773502692f * (coeff[0] + coeff[1]) - 1.1547005384f * matrix->u.m[1][2] * matrix->u.m[0][2]) * in[4];
- out[6] += (0.5773502692f * (coeff[2] + coeff[3]) - 1.1547005384f * matrix->u.m[1][2] * matrix->u.m[2][2]) * in[5];
- out[6] += (0.5773502692f * (coeff[6] + coeff[7]) - 1.1547005384f * matrix->u.m[0][2] * matrix->u.m[2][2]) * in[7];
+ float coeff[] =
+ {
+ matrix->m[1][0] * matrix->m[0][0], matrix->m[1][1] * matrix->m[0][1],
+ matrix->m[1][1] * matrix->m[2][1], matrix->m[1][0] * matrix->m[2][0],
+ matrix->m[2][0] * matrix->m[2][0], matrix->m[2][1] * matrix->m[2][1],
+ matrix->m[0][0] * matrix->m[2][0], matrix->m[0][1] * matrix->m[2][1],
+ matrix->m[0][1] * matrix->m[0][1], matrix->m[1][0] * matrix->m[1][0],
+ matrix->m[1][1] * matrix->m[1][1], matrix->m[0][0] * matrix->m[0][0],
+ };
+
+ out[4] = (matrix->m[1][1] * matrix->m[0][0] + matrix->m[0][1] * matrix->m[1][0]) * in[4];
+ out[4] -= (matrix->m[1][0] * matrix->m[2][1] + matrix->m[1][1] * matrix->m[2][0]) * in[5];
+ out[4] += 1.7320508076f * matrix->m[2][0] * matrix->m[2][1] * in[6];
+ out[4] -= (matrix->m[0][1] * matrix->m[2][0] + matrix->m[0][0] * matrix->m[2][1]) * in[7];
+ out[4] += (matrix->m[0][0] * matrix->m[0][1] - matrix->m[1][0] * matrix->m[1][1]) * in[8];
+
+ out[5] = (matrix->m[1][1] * matrix->m[2][2] + matrix->m[1][2] * matrix->m[2][1]) * in[5];
+ out[5] -= (matrix->m[1][1] * matrix->m[0][2] + matrix->m[1][2] * matrix->m[0][1]) * in[4];
+ out[5] -= 1.7320508076f * matrix->m[2][2] * matrix->m[2][1] * in[6];
+ out[5] += (matrix->m[0][2] * matrix->m[2][1] + matrix->m[0][1] * matrix->m[2][2]) * in[7];
+ out[5] -= (matrix->m[0][1] * matrix->m[0][2] - matrix->m[1][1] * matrix->m[1][2]) * in[8];
+
+ out[6] = (matrix->m[2][2] * matrix->m[2][2] - 0.5f * (coeff[4] + coeff[5])) * in[6];
+ out[6] -= (0.5773502692f * (coeff[0] + coeff[1]) - 1.1547005384f * matrix->m[1][2] * matrix->m[0][2]) * in[4];
+ out[6] += (0.5773502692f * (coeff[2] + coeff[3]) - 1.1547005384f * matrix->m[1][2] * matrix->m[2][2]) * in[5];
+ out[6] += (0.5773502692f * (coeff[6] + coeff[7]) - 1.1547005384f * matrix->m[0][2] * matrix->m[2][2]) * in[7];
out[6] += (0.2886751347f * (coeff[9] - coeff[8] + coeff[10] - coeff[11]) - 0.5773502692f *
- (matrix->u.m[1][2] * matrix->u.m[1][2] - matrix->u.m[0][2] * matrix->u.m[0][2])) * in[8];
+ (matrix->m[1][2] * matrix->m[1][2] - matrix->m[0][2] * matrix->m[0][2])) * in[8];
- out[7] = (matrix->u.m[0][0] * matrix->u.m[2][2] + matrix->u.m[0][2] * matrix->u.m[2][0]) * in[7];
- out[7] -= (matrix->u.m[1][0] * matrix->u.m[0][2] + matrix->u.m[1][2] * matrix->u.m[0][0]) * in[4];
- out[7] += (matrix->u.m[1][0] * matrix->u.m[2][2] + matrix->u.m[1][2] * matrix->u.m[2][0]) * in[5];
- out[7] -= 1.7320508076f * matrix->u.m[2][2] * matrix->u.m[2][0] * in[6];
- out[7] -= (matrix->u.m[0][0] * matrix->u.m[0][2] - matrix->u.m[1][0] * matrix->u.m[1][2]) * in[8];
+ out[7] = (matrix->m[0][0] * matrix->m[2][2] + matrix->m[0][2] * matrix->m[2][0]) * in[7];
+ out[7] -= (matrix->m[1][0] * matrix->m[0][2] + matrix->m[1][2] * matrix->m[0][0]) * in[4];
+ out[7] += (matrix->m[1][0] * matrix->m[2][2] + matrix->m[1][2] * matrix->m[2][0]) * in[5];
+ out[7] -= 1.7320508076f * matrix->m[2][2] * matrix->m[2][0] * in[6];
+ out[7] -= (matrix->m[0][0] * matrix->m[0][2] - matrix->m[1][0] * matrix->m[1][2]) * in[8];
out[8] = 0.5f * (coeff[11] - coeff[8] - coeff[9] + coeff[10]) * in[8];
out[8] += (coeff[0] - coeff[1]) * in[4];
@@ -3178,16 +3182,16 @@ FLOAT* WINAPI D3DXSHRotate(FLOAT *out, UINT order, const D3DXMATRIX *matrix, con
return out;
}
- if (fabsf(matrix->u.m[2][2]) != 1.0f)
+ if (fabsf(matrix->m[2][2]) != 1.0f)
{
- sinb = sqrtf(1.0f - matrix->u.m[2][2] * matrix->u.m[2][2]);
- alpha = atan2f(matrix->u.m[2][1] / sinb, matrix->u.m[2][0] / sinb);
- beta = atan2f(sinb, matrix->u.m[2][2]);
- gamma = atan2f(matrix->u.m[1][2] / sinb, -matrix->u.m[0][2] / sinb);
+ sinb = sqrtf(1.0f - matrix->m[2][2] * matrix->m[2][2]);
+ alpha = atan2f(matrix->m[2][1] / sinb, matrix->m[2][0] / sinb);
+ beta = atan2f(sinb, matrix->m[2][2]);
+ gamma = atan2f(matrix->m[1][2] / sinb, -matrix->m[0][2] / sinb);
}
else
{
- alpha = atan2f(matrix->u.m[0][1], matrix->u.m[0][0]);
+ alpha = atan2f(matrix->m[0][1], matrix->m[0][0]);
beta = 0.0f;
gamma = 0.0f;
}
diff --git a/dlls/d3dx9_36/mesh.c b/dlls/d3dx9_36/mesh.c
index 48abb7ede41..6cfe97492f3 100644
--- a/dlls/d3dx9_36/mesh.c
+++ b/dlls/d3dx9_36/mesh.c
@@ -2368,22 +2368,22 @@ BOOL WINAPI D3DXIntersectTri(const D3DXVECTOR3 *p0, const D3DXVECTOR3 *p1, const
TRACE("p0 %p, p1 %p, p2 %p, praypos %p, praydir %p, pu %p, pv %p, pdist %p.\n",
p0, p1, p2, praypos, praydir, pu, pv, pdist);
- m.u.m[0][0] = p1->x - p0->x;
- m.u.m[1][0] = p2->x - p0->x;
- m.u.m[2][0] = -praydir->x;
- m.u.m[3][0] = 0.0f;
- m.u.m[0][1] = p1->y - p0->y;
- m.u.m[1][1] = p2->y - p0->y;
- m.u.m[2][1] = -praydir->y;
- m.u.m[3][1] = 0.0f;
- m.u.m[0][2] = p1->z - p0->z;
- m.u.m[1][2] = p2->z - p0->z;
- m.u.m[2][2] = -praydir->z;
- m.u.m[3][2] = 0.0f;
- m.u.m[0][3] = 0.0f;
- m.u.m[1][3] = 0.0f;
- m.u.m[2][3] = 0.0f;
- m.u.m[3][3] = 1.0f;
+ m.m[0][0] = p1->x - p0->x;
+ m.m[1][0] = p2->x - p0->x;
+ m.m[2][0] = -praydir->x;
+ m.m[3][0] = 0.0f;
+ m.m[0][1] = p1->y - p0->y;
+ m.m[1][1] = p2->y - p0->y;
+ m.m[2][1] = -praydir->y;
+ m.m[3][1] = 0.0f;
+ m.m[0][2] = p1->z - p0->z;
+ m.m[1][2] = p2->z - p0->z;
+ m.m[2][2] = -praydir->z;
+ m.m[3][2] = 0.0f;
+ m.m[0][3] = 0.0f;
+ m.m[1][3] = 0.0f;
+ m.m[2][3] = 0.0f;
+ m.m[3][3] = 1.0f;
vec.x = praypos->x - p0->x;
vec.y = praypos->y - p0->y;
@@ -3772,11 +3772,11 @@ static HRESULT load_mesh_container(struct ID3DXFileData *filedata, DWORD options
char *name = NULL;
mesh_data.Type = D3DXMESHTYPE_MESH;
- mesh_data.u.pMesh = NULL;
+ mesh_data.pMesh = NULL;
hr = D3DXLoadSkinMeshFromXof(filedata, options, device,
&adjacency, &materials, &effects, &num_materials,
- &skin_info, &mesh_data.u.pMesh);
+ &skin_info, &mesh_data.pMesh);
if (FAILED(hr)) return hr;
hr = filedata_get_name(filedata, &name);
@@ -3794,7 +3794,7 @@ cleanup:
if (effects) ID3DXBuffer_Release(effects);
if (adjacency) ID3DXBuffer_Release(adjacency);
if (skin_info) IUnknown_Release(skin_info);
- if (mesh_data.u.pMesh) IUnknown_Release(mesh_data.u.pMesh);
+ if (mesh_data.pMesh) IUnknown_Release(mesh_data.pMesh);
HeapFree(GetProcessHeap(), 0, name);
return hr;
}
--
2.34.1
More information about the wine-devel
mailing list