Commit e51f2a0e authored by Stefan Dösinger's avatar Stefan Dösinger Committed by Alexandre Julliard

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

parent 66778ed9
...@@ -1320,9 +1320,9 @@ out: ...@@ -1320,9 +1320,9 @@ out:
/* This test tests fog in combination with shaders. /* This test tests fog in combination with shaders.
* What's tested: linear fog (vertex and table) with pixel shader * What's tested: linear fog (vertex and table) with pixel shader
* linear table fog with non foggy vertex shader * linear table fog with non foggy vertex shader
* vertex fog with foggy vertex shader * vertex fog with foggy vertex shader, non-linear
* What's not tested: non linear fog with shader * fog with shader, non-linear fog with foggy shader,
* table fog with foggy vertex shader * linear table fog with foggy shader
*/ */
static void fog_with_shader_test(IDirect3DDevice9 *device) static void fog_with_shader_test(IDirect3DDevice9 *device)
{ {
...@@ -1423,6 +1423,25 @@ 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}}, 0x005fa000, 0x0040bf00, 0x0020df00, 0x0000ff00, 0x0000ff00}},
/* vertex shader and pixel shader */ /* 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, {1, 1, D3DFOG_NONE, D3DFOG_LINEAR,
{0x00ff0000, 0x00ff0000, 0x00df2000, 0x00bf4000, 0x009f6000, 0x007f8000, {0x00ff0000, 0x00ff0000, 0x00df2000, 0x00bf4000, 0x009f6000, 0x007f8000,
0x005fa000, 0x0040bf00, 0x0020df00, 0x0000ff00, 0x0000ff00}}, 0x005fa000, 0x0040bf00, 0x0020df00, 0x0000ff00, 0x0000ff00}},
...@@ -1432,11 +1451,17 @@ static void fog_with_shader_test(IDirect3DDevice9 *device) ...@@ -1432,11 +1451,17 @@ static void fog_with_shader_test(IDirect3DDevice9 *device)
{1, 1, D3DFOG_EXP2, D3DFOG_LINEAR, {1, 1, D3DFOG_EXP2, D3DFOG_LINEAR,
{0x00ff0000, 0x00ff0000, 0x00df2000, 0x00bf4000, 0x009f6000, 0x007f8000, {0x00ff0000, 0x00ff0000, 0x00df2000, 0x00bf4000, 0x009f6000, 0x007f8000,
0x005fa000, 0x0040bf00, 0x0020df00, 0x0000ff00, 0x0000ff00}}, 0x005fa000, 0x0040bf00, 0x0020df00, 0x0000ff00, 0x0000ff00}},
{1, 1, D3DFOG_LINEAR, D3DFOG_LINEAR, {1, 1, D3DFOG_LINEAR, D3DFOG_LINEAR,
{0x00ff0000, 0x00ff0000, 0x00df2000, 0x00bf4000, 0x009f6000, 0x007f8000, {0x00ff0000, 0x00ff0000, 0x00df2000, 0x00bf4000, 0x009f6000, 0x007f8000,
0x005fa000, 0x0040bf00, 0x0020df00, 0x0000ff00, 0x0000ff00}}, 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 */ #if 0 /* FIXME: these fail on GeForce 8500 */
/* foggy vertex shader */ /* foggy vertex shader */
...@@ -1454,7 +1479,9 @@ static void fog_with_shader_test(IDirect3DDevice9 *device) ...@@ -1454,7 +1479,9 @@ static void fog_with_shader_test(IDirect3DDevice9 *device)
0x005fa000, 0x003fc000, 0x001fe000, 0x0000ff00, 0x0000ff00}}, 0x005fa000, 0x003fc000, 0x001fe000, 0x0000ff00, 0x0000ff00}},
#endif #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, {2, 1, D3DFOG_NONE, D3DFOG_NONE,
{0x00ff0000, 0x00fe0100, 0x00de2100, 0x00bf4000, 0x009f6000, 0x007f8000, {0x00ff0000, 0x00fe0100, 0x00de2100, 0x00bf4000, 0x009f6000, 0x007f8000,
0x005fa000, 0x003fc000, 0x001fe000, 0x0000ff00, 0x0000ff00}}, 0x005fa000, 0x003fc000, 0x001fe000, 0x0000ff00, 0x0000ff00}},
...@@ -1468,6 +1495,18 @@ static void fog_with_shader_test(IDirect3DDevice9 *device) ...@@ -1468,6 +1495,18 @@ static void fog_with_shader_test(IDirect3DDevice9 *device)
{0x00ff0000, 0x00fe0100, 0x00de2100, 0x00bf4000, 0x009f6000, 0x007f8000, {0x00ff0000, 0x00fe0100, 0x00de2100, 0x00bf4000, 0x009f6000, 0x007f8000,
0x005fa000, 0x003fc000, 0x001fe000, 0x0000ff00, 0x0000ff00}}, 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*/ /* NOTE: changing these values will not affect the tests with foggy vertex shader, as the values are hardcoded in the shader*/
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment