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