mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2024-11-21 16:46:41 -08:00
d3ba810c98
This is simply unnecessary and wastes time. As part of this, simply remove the "all" directive. Only for a couple of tests is it even potentially interesting to validate all pixels (e.g. nointerpolation.shader_test), and for those "all" is replaced with an explicit (0, 0, 640, 480) rect. In all other cases we just probe (0, 0).
84 lines
2.5 KiB
Plaintext
84 lines
2.5 KiB
Plaintext
[require]
|
|
shader model >= 3.0
|
|
|
|
[pixel shader]
|
|
float4 main(float4 pos : sv_position) : sv_target
|
|
{
|
|
return float4(ddx(pos.x), ddy(pos.y), 0, 0);
|
|
}
|
|
|
|
[test]
|
|
todo(sm<4 | glsl) draw quad
|
|
probe (0, 0, 640, 480) rgba (1.0, 1.0, 0.0, 0.0)
|
|
|
|
|
|
[pixel shader]
|
|
float4 main(float4 pos : sv_position) : sv_target
|
|
{
|
|
// Shader models < 4 don't add 0.5 to sv_position, so this adjustment is required to get the
|
|
// same outputs.
|
|
pos.x = floor(pos.x) + 0.5;
|
|
pos.y = floor(pos.y) + 0.5;
|
|
|
|
pos /= 10.0;
|
|
float nonlinear = pos.x * pos.y - pos.x * (pos.x + 0.5);
|
|
float4 res = float4(nonlinear, ddx(nonlinear), ddy(nonlinear), 0.0);
|
|
|
|
// Each device may use either the coarse or the fine derivate, so use quantization.
|
|
return round(30 * res);
|
|
}
|
|
|
|
[test]
|
|
todo(sm<4 | glsl) draw quad
|
|
todo(sm<4) probe (10, 10) rgba (-16.0, -5.0, 3.0, 0.0)
|
|
todo(sm<4) probe (11, 10) rgba (-21.0, -5.0, 3.0, 0.0)
|
|
todo(sm<4) probe (10, 11) rgba (-13.0, -5.0, 3.0, 0.0)
|
|
todo(sm<4) probe (11, 11) rgba (-17.0, -5.0, 3.0, 0.0)
|
|
todo(sm<4) probe (12, 10) rgba (-26.0, -6.0, 4.0, 0.0)
|
|
todo(sm<4) probe (16, 16) rgba (-25.0, -7.0, 5.0, 0.0)
|
|
todo(sm<4) probe (150, 150) rgba (-226.0, -47.0, 45.0, 0.0)
|
|
|
|
|
|
[require]
|
|
shader model >= 5.0
|
|
|
|
|
|
[pixel shader]
|
|
float4 main(float4 pos : sv_position) : sv_target
|
|
{
|
|
pos /= 10.0;
|
|
float nonlinear = pos.x * pos.y - pos.x * (pos.x + 0.5);
|
|
float4 res = float4(nonlinear, ddx_coarse(nonlinear), ddy_coarse(nonlinear), 0.0);
|
|
|
|
// Each device may use either the coarse or the fine derivate, so use quantization.
|
|
return round(30 * res);
|
|
}
|
|
|
|
[test]
|
|
todo(glsl) draw quad
|
|
probe (10, 10) rgba (-16.0, -5.0, 3.0, 0.0)
|
|
probe (11, 10) rgba (-21.0, -5.0, 3.0, 0.0)
|
|
probe (10, 11) rgba (-13.0, -5.0, 3.0, 0.0)
|
|
probe (11, 11) rgba (-17.0, -5.0, 3.0, 0.0)
|
|
probe (12, 10) rgba (-26.0, -6.0, 4.0, 0.0)
|
|
probe (16, 16) rgba (-25.0, -7.0, 5.0, 0.0)
|
|
probe (150, 150) rgba (-226.0, -47.0, 45.0, 0.0)
|
|
|
|
|
|
[pixel shader]
|
|
float4 main(float4 pos : sv_position) : sv_target
|
|
{
|
|
pos /= 10.0;
|
|
float nonlinear = pos.x * pos.y - pos.x * (pos.x + 0.5);
|
|
return float4(nonlinear, ddx_fine(nonlinear), ddy_fine(nonlinear), 0.0);
|
|
}
|
|
|
|
[test]
|
|
todo(glsl) draw quad
|
|
probe (10, 10) rgba (-0.524999976, -0.164999843, 0.104999900, 0.0) 16
|
|
probe (11, 10) rgba (-0.689999819, -0.164999843, 0.114999890, 0.0) 32
|
|
probe (10, 11) rgba (-0.420000076, -0.154999852, 0.104999900, 0.0) 32
|
|
probe (11, 11) rgba (-0.574999928, -0.154999852, 0.114999890, 0.0) 32
|
|
probe (12, 10) rgba (-0.874999881, -0.205000162, 0.124999881, 0.0) 24
|
|
probe (150, 150) rgba (-7.52500916, -1.56500244, 1.50500488, 0.0) 128
|