wine/dlls/wined3d pixelshader.c vertexshader.c

Alexandre Julliard julliard at wine.codeweavers.com
Mon Nov 28 05:00:37 CST 2005


ChangeSet ID:	21453
CVSROOT:	/opt/cvs-commit
Module name:	wine
Changes by:	julliard at winehq.org	2005/11/28 05:00:37

Modified files:
	dlls/wined3d   : pixelshader.c vertexshader.c 

Log message:
	Oliver Stieber <oliver_stieber at yahoo.co.uk>
	Correct the matrix sizes in software shaders and remove an erroneous
	parameter from lrp.

Patch: http://cvs.winehq.org/patch.py?id=21453

Old revision  New revision  Changes     Path
 1.4           1.5           +8 -8       wine/dlls/wined3d/pixelshader.c
 1.18          1.19          +8 -8       wine/dlls/wined3d/vertexshader.c

Index: wine/dlls/wined3d/pixelshader.c
diff -u -p wine/dlls/wined3d/pixelshader.c:1.4 wine/dlls/wined3d/pixelshader.c:1.5
--- wine/dlls/wined3d/pixelshader.c:1.4	28 Nov 2005 11: 0:37 -0000
+++ wine/dlls/wined3d/pixelshader.c	28 Nov 2005 11: 0:37 -0000
@@ -325,9 +325,9 @@ void pshader_frc(WINED3DSHADERVECTOR* d,
 
 typedef FLOAT D3DMATRIX44[4][4];
 typedef FLOAT D3DMATRIX43[4][3];
-typedef FLOAT D3DMATRIX34[4][4];
-typedef FLOAT D3DMATRIX33[4][3];
-typedef FLOAT D3DMATRIX32[4][2];
+typedef FLOAT D3DMATRIX34[3][4];
+typedef FLOAT D3DMATRIX33[3][3];
+typedef FLOAT D3DMATRIX23[2][3];
 
 void pshader_m4x4(WINED3DSHADERVECTOR* d, WINED3DSHADERVECTOR* s0, /*WINED3DSHADERVECTOR* mat1*/ D3DMATRIX44 mat) {
     /*
@@ -350,7 +350,7 @@ void pshader_m4x4(WINED3DSHADERVECTOR* d
     PSTRACE(("executing m4x4(4): mat=(%f, %f, %f, %f)       (%f)       (%f) \n", mat[3][0], mat[3][1], mat[3][2], mat[3][3], s0->w, d->w));
 }
 
-void pshader_m4x3(WINED3DSHADERVECTOR* d, WINED3DSHADERVECTOR* s0, D3DMATRIX43 mat) {
+void pshader_m4x3(WINED3DSHADERVECTOR* d, WINED3DSHADERVECTOR* s0, D3DMATRIX34 mat) {
     d->x = mat[0][0] * s0->x + mat[0][1] * s0->y + mat[0][2] * s0->z + mat[0][3] * s0->w;
     d->y = mat[1][0] * s0->x + mat[1][1] * s0->y + mat[1][2] * s0->z + mat[1][3] * s0->w;
     d->z = mat[2][0] * s0->x + mat[2][1] * s0->y + mat[2][2] * s0->z + mat[2][3] * s0->w;
@@ -361,7 +361,7 @@ void pshader_m4x3(WINED3DSHADERVECTOR* d
     PSTRACE(("executing m4x3(4):                            (%f)       (%f) \n", s0->w, d->w));
 }
 
-void pshader_m3x4(WINED3DSHADERVECTOR* d, WINED3DSHADERVECTOR* s0, D3DMATRIX34 mat) {
+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->z = mat[2][0] * s0->x + mat[2][1] * s0->y + mat[2][2] * s0->z;
@@ -383,7 +383,7 @@ void pshader_m3x3(WINED3DSHADERVECTOR* d
     PSTRACE(("executing m3x3(4):                                       (%f) \n", d->w));
 }
 
-void pshader_m3x2(WINED3DSHADERVECTOR* d, WINED3DSHADERVECTOR* s0, D3DMATRIX32 mat) {
+void pshader_m3x2(WINED3DSHADERVECTOR* d, WINED3DSHADERVECTOR* s0, D3DMATRIX23 mat) {
     FIXME("check\n");
     d->x = mat[0][0] * s0->x + mat[0][1] * s0->y + mat[0][2] * s0->z;
     d->y = mat[1][0] * s0->x + mat[1][1] * s0->y + mat[1][2] * s0->z;
@@ -394,11 +394,11 @@ void pshader_m3x2(WINED3DSHADERVECTOR* d
 /**
  * Version 2.0 specific
  */
-void pshader_lrp(WINED3DSHADERVECTOR* d, WINED3DSHADERVECTOR* s0, WINED3DSHADERVECTOR* s1, WINED3DSHADERVECTOR* s2, WINED3DSHADERVECTOR* s3) {
+void pshader_lrp(WINED3DSHADERVECTOR* d, WINED3DSHADERVECTOR* s0, WINED3DSHADERVECTOR* s1, WINED3DSHADERVECTOR* s2) {
     d->x = s0->x * (s1->x - s2->x) + s2->x;
     d->y = s0->y * (s1->y - s2->y) + s2->y;
     d->z = s0->z * (s1->z - s2->z) + s2->z;
-    d->w = s0->w * (s1->w - s2->w) + s2->x;
+    d->w = s0->w * (s1->w - s2->w) + s2->w;
 }
 
 void pshader_crs(WINED3DSHADERVECTOR* d, WINED3DSHADERVECTOR* s0, WINED3DSHADERVECTOR* s1) {
Index: wine/dlls/wined3d/vertexshader.c
diff -u -p wine/dlls/wined3d/vertexshader.c:1.18 wine/dlls/wined3d/vertexshader.c:1.19
--- wine/dlls/wined3d/vertexshader.c:1.18	28 Nov 2005 11: 0:37 -0000
+++ wine/dlls/wined3d/vertexshader.c	28 Nov 2005 11: 0:37 -0000
@@ -277,9 +277,9 @@ void vshader_frc(WINED3DSHADERVECTOR* d,
 
 typedef FLOAT D3DMATRIX44[4][4];
 typedef FLOAT D3DMATRIX43[4][3];
-typedef FLOAT D3DMATRIX34[4][4];
-typedef FLOAT D3DMATRIX33[4][3];
-typedef FLOAT D3DMATRIX32[4][2];
+typedef FLOAT D3DMATRIX34[3][4];
+typedef FLOAT D3DMATRIX33[3][3];
+typedef FLOAT D3DMATRIX23[2][3];
 
 void vshader_m4x4(WINED3DSHADERVECTOR* d, WINED3DSHADERVECTOR* s0, /*WINED3DSHADERVECTOR* mat1*/ D3DMATRIX44 mat) {
   /*
@@ -302,7 +302,7 @@ void vshader_m4x4(WINED3DSHADERVECTOR* d
   VSTRACE(("executing m4x4(4): mat=(%f, %f, %f, %f)       (%f)       (%f) \n", mat[3][0], mat[3][1], mat[3][2], mat[3][3], s0->w, d->w));
 }
 
-void vshader_m4x3(WINED3DSHADERVECTOR* d, WINED3DSHADERVECTOR* s0, D3DMATRIX43 mat) {
+void vshader_m4x3(WINED3DSHADERVECTOR* d, WINED3DSHADERVECTOR* s0, D3DMATRIX34 mat) {
   d->x = mat[0][0] * s0->x + mat[0][1] * s0->y + mat[0][2] * s0->z + mat[0][3] * s0->w;
   d->y = mat[1][0] * s0->x + mat[1][1] * s0->y + mat[1][2] * s0->z + mat[1][3] * s0->w;
   d->z = mat[2][0] * s0->x + mat[2][1] * s0->y + mat[2][2] * s0->z + mat[2][3] * s0->w;
@@ -313,7 +313,7 @@ void vshader_m4x3(WINED3DSHADERVECTOR* d
   VSTRACE(("executing m4x3(4):                            (%f)       (%f) \n", s0->w, d->w));
 }
 
-void vshader_m3x4(WINED3DSHADERVECTOR* d, WINED3DSHADERVECTOR* s0, D3DMATRIX34 mat) {
+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->z = mat[2][0] * s0->x + mat[2][1] * s0->y + mat[2][2] * s0->z;
@@ -335,7 +335,7 @@ void vshader_m3x3(WINED3DSHADERVECTOR* d
   VSTRACE(("executing m3x3(4):                                       (%f) \n", d->w));
 }
 
-void vshader_m3x2(WINED3DSHADERVECTOR* d, WINED3DSHADERVECTOR* s0, D3DMATRIX32 mat) {
+void vshader_m3x2(WINED3DSHADERVECTOR* d, WINED3DSHADERVECTOR* s0, D3DMATRIX23 mat) {
   FIXME("check\n");
   d->x = mat[0][0] * s0->x + mat[0][1] * s0->y + mat[0][2] * s0->z;
   d->y = mat[1][0] * s0->x + mat[1][1] * s0->y + mat[1][2] * s0->z;
@@ -346,11 +346,11 @@ void vshader_m3x2(WINED3DSHADERVECTOR* d
 /**
  * Version 2.0 specific
  */
-void vshader_lrp(WINED3DSHADERVECTOR* d, WINED3DSHADERVECTOR* s0, WINED3DSHADERVECTOR* s1, WINED3DSHADERVECTOR* s2, WINED3DSHADERVECTOR* s3) {
+void vshader_lrp(WINED3DSHADERVECTOR* d, WINED3DSHADERVECTOR* s0, WINED3DSHADERVECTOR* s1, WINED3DSHADERVECTOR* s2) {
   d->x = s0->x * (s1->x - s2->x) + s2->x;
   d->y = s0->y * (s1->y - s2->y) + s2->y;
   d->z = s0->z * (s1->z - s2->z) + s2->z;
-  d->w = s0->w * (s1->w - s2->w) + s2->x;
+  d->w = s0->w * (s1->w - s2->w) + s2->w;
 }
 
 void vshader_crs(WINED3DSHADERVECTOR* d, WINED3DSHADERVECTOR* s0, WINED3DSHADERVECTOR* s1) {



More information about the wine-cvs mailing list