d3dcompiler_43/tests: Added trigonometric function tests to HLSL test suite.
This commit is contained in:
parent
ddc5cbb371
commit
dbb2d28795
|
@ -494,6 +494,68 @@ static void test_float_vectors(IDirect3DDevice9 *device, IDirect3DVertexBuffer9
|
|||
}
|
||||
}
|
||||
|
||||
static void test_trig(IDirect3DDevice9 *device, IDirect3DVertexBuffer9 *quad_geometry,
|
||||
IDirect3DVertexShader9 *vshader_passthru)
|
||||
{
|
||||
static const struct hlsl_probe_info sincos_probes[] =
|
||||
{
|
||||
{0, 0, {0.5000f, 1.0000f, 0.0f, 0.0f}, 0.001f, "sin/cos test failed"},
|
||||
{1, 0, {0.5975f, 0.9904f, 0.0f, 0.0f}, 0.001f, "sin/cos test failed"},
|
||||
{2, 0, {0.6913f, 0.9620f, 0.0f, 0.0f}, 0.001f, "sin/cos test failed"},
|
||||
{3, 0, {0.7778f, 0.9160f, 0.0f, 0.0f}, 0.001f, "sin/cos test failed"},
|
||||
{4, 0, {0.8536f, 0.8536f, 0.0f, 0.0f}, 0.001f, "sin/cos test failed"},
|
||||
{5, 0, {0.9157f, 0.7778f, 0.0f, 0.0f}, 0.001f, "sin/cos test failed"},
|
||||
{6, 0, {0.9620f, 0.6913f, 0.0f, 0.0f}, 0.001f, "sin/cos test failed"},
|
||||
{7, 0, {0.9904f, 0.5975f, 0.0f, 0.0f}, 0.001f, "sin/cos test failed"},
|
||||
{8, 0, {1.0000f, 0.5000f, 0.0f, 0.0f}, 0.001f, "sin/cos test failed"},
|
||||
{9, 0, {0.9904f, 0.4025f, 0.0f, 0.0f}, 0.001f, "sin/cos test failed"},
|
||||
{10, 0, {0.9619f, 0.3087f, 0.0f, 0.0f}, 0.001f, "sin/cos test failed"},
|
||||
{11, 0, {0.9157f, 0.2222f, 0.0f, 0.0f}, 0.001f, "sin/cos test failed"},
|
||||
{12, 0, {0.8536f, 0.1464f, 0.0f, 0.0f}, 0.001f, "sin/cos test failed"},
|
||||
{13, 0, {0.7778f, 0.0843f, 0.0f, 0.0f}, 0.001f, "sin/cos test failed"},
|
||||
{14, 0, {0.6913f, 0.0381f, 0.0f, 0.0f}, 0.001f, "sin/cos test failed"},
|
||||
{15, 0, {0.5975f, 0.0096f, 0.0f, 0.0f}, 0.001f, "sin/cos test failed"},
|
||||
{16, 0, {0.5000f, 0.0000f, 0.0f, 0.0f}, 0.001f, "sin/cos test failed"},
|
||||
{17, 0, {0.4025f, 0.0096f, 0.0f, 0.0f}, 0.001f, "sin/cos test failed"},
|
||||
{18, 0, {0.3087f, 0.0381f, 0.0f, 0.0f}, 0.001f, "sin/cos test failed"},
|
||||
{19, 0, {0.2222f, 0.0843f, 0.0f, 0.0f}, 0.001f, "sin/cos test failed"},
|
||||
{20, 0, {0.1464f, 0.1464f, 0.0f, 0.0f}, 0.001f, "sin/cos test failed"},
|
||||
{21, 0, {0.0843f, 0.2222f, 0.0f, 0.0f}, 0.001f, "sin/cos test failed"},
|
||||
{22, 0, {0.0381f, 0.3087f, 0.0f, 0.0f}, 0.001f, "sin/cos test failed"},
|
||||
{23, 0, {0.0096f, 0.4025f, 0.0f, 0.0f}, 0.001f, "sin/cos test failed"},
|
||||
{24, 0, {0.0000f, 0.5000f, 0.0f, 0.0f}, 0.001f, "sin/cos test failed"},
|
||||
{25, 0, {0.0096f, 0.5975f, 0.0f, 0.0f}, 0.001f, "sin/cos test failed"},
|
||||
{26, 0, {0.0381f, 0.6913f, 0.0f, 0.0f}, 0.001f, "sin/cos test failed"},
|
||||
{27, 0, {0.0843f, 0.7778f, 0.0f, 0.0f}, 0.001f, "sin/cos test failed"},
|
||||
{28, 0, {0.1464f, 0.8536f, 0.0f, 0.0f}, 0.001f, "sin/cos test failed"},
|
||||
{29, 0, {0.2222f, 0.9157f, 0.0f, 0.0f}, 0.001f, "sin/cos test failed"},
|
||||
{30, 0, {0.3087f, 0.9619f, 0.0f, 0.0f}, 0.001f, "sin/cos test failed"},
|
||||
{31, 0, {0.4025f, 0.9904f, 0.0f, 0.0f}, 0.001f, "sin/cos test failed"},
|
||||
};
|
||||
|
||||
static const char *sincos_shader =
|
||||
"float4 test(float x: TEXCOORD0): COLOR \
|
||||
{ \
|
||||
const float pi2 = 6.2831853; \
|
||||
float calcd_sin = (sin(x * pi2) + 1)/2; \
|
||||
float calcd_cos = (cos(x * pi2) + 1)/2; \
|
||||
return float4(calcd_sin, calcd_cos, 0, 0); \
|
||||
}";
|
||||
|
||||
ID3DXConstantTable *constants;
|
||||
IDirect3DPixelShader9 *pshader;
|
||||
|
||||
pshader = compile_pixel_shader9(device, sincos_shader, "ps_2_0", &constants);
|
||||
if (pshader != NULL)
|
||||
{
|
||||
compute_shader_probe9(device, vshader_passthru, pshader, quad_geometry, sincos_probes,
|
||||
sizeof(sincos_probes) / sizeof(*sincos_probes), 32, 1, __LINE__);
|
||||
|
||||
IUnknown_Release(constants);
|
||||
IUnknown_Release(pshader);
|
||||
}
|
||||
}
|
||||
|
||||
START_TEST(hlsl)
|
||||
{
|
||||
D3DCAPS9 caps;
|
||||
|
@ -517,6 +579,7 @@ START_TEST(hlsl)
|
|||
test_math(device, quad_geometry, vshader_passthru);
|
||||
test_conditionals(device, quad_geometry, vshader_passthru);
|
||||
test_float_vectors(device, quad_geometry, vshader_passthru);
|
||||
test_trig(device, quad_geometry, vshader_passthru);
|
||||
}
|
||||
} else skip("no pixel shader support\n");
|
||||
|
||||
|
|
Loading…
Reference in New Issue