Stefan Dösinger : d3d9: Test table fog and exp fog in the shader fog test.

Alexandre Julliard julliard at winehq.org
Wed Feb 11 09:24:33 CST 2009


Module: wine
Branch: master
Commit: e51f2a0e6e37be8ca90db9b5a7616413837d5be9
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=e51f2a0e6e37be8ca90db9b5a7616413837d5be9

Author: Stefan Dösinger <stefan at codeweavers.com>
Date:   Mon Jan 19 18:56:25 2009 +0100

d3d9: Test table fog and exp fog in the shader fog test.

---

 dlls/d3d9/tests/visual.c |   49 +++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 44 insertions(+), 5 deletions(-)

diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c
index 6c26c6a..f1f140b 100644
--- a/dlls/d3d9/tests/visual.c
+++ b/dlls/d3d9/tests/visual.c
@@ -1320,9 +1320,9 @@ out:
 /* This test tests fog in combination with shaders.
  * What's tested: linear fog (vertex and table) with pixel shader
  *                linear table fog with non foggy vertex shader
- *                vertex fog with foggy vertex shader
- * What's not tested: non linear fog with shader
- *                    table fog with foggy vertex shader
+ *                vertex fog with foggy vertex shader, non-linear
+ *                fog with shader, non-linear fog with foggy shader,
+ *                linear table fog with foggy shader
  */
 static void fog_with_shader_test(IDirect3DDevice9 *device)
 {
@@ -1423,6 +1423,25 @@ static void fog_with_shader_test(IDirect3DDevice9 *device)
         0x005fa000, 0x0040bf00, 0x0020df00, 0x0000ff00, 0x0000ff00}},
 
         /* vertex shader and pixel shader */
+        /* The next 4 tests would read the fog coord output, but it isn't available.
+         * The result is a fully fogged quad, no matter what the Z coord is. This is on
+         * a geforce 7400, 97.52 driver, Windows Vista, but probably hardware dependent.
+         * These tests should be disabled if some other hardware behaves differently
+         */
+        {1, 1, D3DFOG_NONE, D3DFOG_NONE,
+        {0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00,
+        0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00}},
+        {1, 1, D3DFOG_LINEAR, D3DFOG_NONE,
+        {0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00,
+        0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00}},
+        {1, 1, D3DFOG_EXP, D3DFOG_NONE,
+        {0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00,
+        0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00}},
+        {1, 1, D3DFOG_EXP2, D3DFOG_NONE,
+        {0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00,
+        0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00}},
+
+        /* These use the Z coordinate with linear table fog */
         {1, 1, D3DFOG_NONE, D3DFOG_LINEAR,
         {0x00ff0000, 0x00ff0000, 0x00df2000, 0x00bf4000, 0x009f6000, 0x007f8000,
         0x005fa000, 0x0040bf00, 0x0020df00, 0x0000ff00, 0x0000ff00}},
@@ -1432,11 +1451,17 @@ static void fog_with_shader_test(IDirect3DDevice9 *device)
         {1, 1, D3DFOG_EXP2, D3DFOG_LINEAR,
         {0x00ff0000, 0x00ff0000, 0x00df2000, 0x00bf4000, 0x009f6000, 0x007f8000,
         0x005fa000, 0x0040bf00, 0x0020df00, 0x0000ff00, 0x0000ff00}},
-
         {1, 1, D3DFOG_LINEAR, D3DFOG_LINEAR,
         {0x00ff0000, 0x00ff0000, 0x00df2000, 0x00bf4000, 0x009f6000, 0x007f8000,
         0x005fa000, 0x0040bf00, 0x0020df00, 0x0000ff00, 0x0000ff00}},
 
+        /* Non-linear table fog without fog coord */
+        {1, 1, D3DFOG_NONE, D3DFOG_EXP,
+        {0x00ff0000, 0x00e71800, 0x00d12e00, 0x00bd4200, 0x00ab5400, 0x009b6400,
+        0x008d7200, 0x007f8000, 0x00738c00, 0x00689700, 0x005ea100}},
+        {1, 1, D3DFOG_NONE, D3DFOG_EXP2,
+        {0x00fd0200, 0x00f50200, 0x00f50a00, 0x00e91600, 0x00d92600, 0x00c73800,
+        0x00b24d00, 0x009c6300, 0x00867900, 0x00728d00, 0x005ea100}},
 
 #if 0  /* FIXME: these fail on GeForce 8500 */
         /* foggy vertex shader */
@@ -1454,7 +1479,9 @@ static void fog_with_shader_test(IDirect3DDevice9 *device)
          0x005fa000, 0x003fc000, 0x001fe000, 0x0000ff00, 0x0000ff00}},
 #endif
 
-        /* foggy vertex shader and pixel shader */
+        /* foggy vertex shader and pixel shader. First 4 tests with vertex fog,
+         * all using the fixed fog-coord linear fog
+         */
         {2, 1, D3DFOG_NONE, D3DFOG_NONE,
         {0x00ff0000, 0x00fe0100, 0x00de2100, 0x00bf4000, 0x009f6000, 0x007f8000,
          0x005fa000, 0x003fc000, 0x001fe000, 0x0000ff00, 0x0000ff00}},
@@ -1468,6 +1495,18 @@ static void fog_with_shader_test(IDirect3DDevice9 *device)
         {0x00ff0000, 0x00fe0100, 0x00de2100, 0x00bf4000, 0x009f6000, 0x007f8000,
          0x005fa000, 0x003fc000, 0x001fe000, 0x0000ff00, 0x0000ff00}},
 
+        /* These use table fog. Here the shader-provided fog coordinate is
+         * ignored and the z coordinate used instead
+         */
+        {2, 1, D3DFOG_NONE, D3DFOG_EXP,
+        {0x00ff0000, 0x00e71800, 0x00d12e00, 0x00bd4200, 0x00ab5400, 0x009b6400,
+        0x008d7200, 0x007f8000, 0x00738c00, 0x00689700, 0x005ea100}},
+        {2, 1, D3DFOG_NONE, D3DFOG_EXP2,
+        {0x00fd0200, 0x00f50200, 0x00f50a00, 0x00e91600, 0x00d92600, 0x00c73800,
+        0x00b24d00, 0x009c6300, 0x00867900, 0x00728d00, 0x005ea100}},
+        {2, 1, D3DFOG_NONE, D3DFOG_LINEAR,
+        {0x00ff0000, 0x00ff0000, 0x00df2000, 0x00bf4000, 0x009f6000, 0x007f8000,
+        0x005fa000, 0x0040bf00, 0x0020df00, 0x0000ff00, 0x0000ff00}},
     };
 
     /* NOTE: changing these values will not affect the tests with foggy vertex shader, as the values are hardcoded in the shader*/




More information about the wine-cvs mailing list