wined3d matrix math bug
despair
despair at adelphia.net
Thu Dec 15 19:30:20 CST 2005
Obvious fix for cut & paste error.
d->x = mat[0][0] * s0->x [...]
d->y = mat[2][0] * s0->x [...]
d->z = mat[2][0] * s0->x [...]
d->y just a tad suspicious. :)
--Ragnvald "Despair" Maartmann-Moe IV
-------------- next part --------------
Index: dlls/wined3d/pixelshader.c
===================================================================
RCS file: /home/wine/wine/dlls/wined3d/pixelshader.c,v
retrieving revision 1.7
diff -u -u -b -r1.7 pixelshader.c
--- dlls/wined3d/pixelshader.c 3 Dec 2005 18:36:01 -0000 1.7
+++ dlls/wined3d/pixelshader.c 16 Dec 2005 01:22:25 -0000
@@ -363,7 +363,7 @@
void pshader_m3x4(WINED3DSHADERVECTOR* d, WINED3DSHADERVECTOR* s0, D3DMATRIX43 mat) {
d->x = mat[0][0] * s0->x + mat[0][1] * s0->y + mat[0][2] * s0->z;
- d->y = mat[2][0] * s0->x + mat[1][1] * s0->y + mat[1][2] * s0->z;
+ d->y = mat[1][0] * s0->x + mat[1][1] * s0->y + mat[1][2] * s0->z;
d->z = mat[2][0] * s0->x + mat[2][1] * s0->y + mat[2][2] * s0->z;
d->w = mat[3][0] * s0->x + mat[3][1] * s0->y + mat[3][2] * s0->z;
PSTRACE(("executing m3x4(1): mat=(%f, %f, %f) s0=(%f) d=(%f) \n", mat[0][0], mat[0][1], mat[0][2], s0->x, d->x));
Index: dlls/wined3d/vertexshader.c
===================================================================
RCS file: /home/wine/wine/dlls/wined3d/vertexshader.c,v
retrieving revision 1.21
diff -u -u -b -r1.21 vertexshader.c
--- dlls/wined3d/vertexshader.c 9 Dec 2005 12:18:30 -0000 1.21
+++ dlls/wined3d/vertexshader.c 16 Dec 2005 01:22:25 -0000
@@ -315,7 +315,7 @@
void vshader_m3x4(WINED3DSHADERVECTOR* d, WINED3DSHADERVECTOR* s0, D3DMATRIX43 mat) {
d->x = mat[0][0] * s0->x + mat[0][1] * s0->y + mat[0][2] * s0->z;
- d->y = mat[2][0] * s0->x + mat[1][1] * s0->y + mat[1][2] * s0->z;
+ d->y = mat[1][0] * s0->x + mat[1][1] * s0->y + mat[1][2] * s0->z;
d->z = mat[2][0] * s0->x + mat[2][1] * s0->y + mat[2][2] * s0->z;
d->w = mat[3][0] * s0->x + mat[3][1] * s0->y + mat[3][2] * s0->z;
VSTRACE(("executing m3x4(1): mat=(%f, %f, %f) s0=(%f) d=(%f) \n", mat[0][0], mat[0][1], mat[0][2], s0->x, d->x));
More information about the wine-patches
mailing list