star-3d

Surface structuring for efficient 3D geometric queries
git clone git://git.meso-star.fr/star-3d.git
Log | Files | Refs | README | LICENSE

commit 13e5b89fafd2be8cfab5aa2f8077ef649f188f04
parent 565b7218ce299fc8bb2ccd92cb52177b1f1e6458
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Wed, 27 Jul 2016 12:29:06 +0200

Make the scene test compliant with the session API

Diffstat:
Msrc/test_s3d_scene.c | 167+++++++++++++++++++++++++++++++++++++------------------------------------------
1 file changed, 79 insertions(+), 88 deletions(-)

diff --git a/src/test_s3d_scene.c b/src/test_s3d_scene.c @@ -92,6 +92,9 @@ main(int argc, char** argv) struct s3d_scene* scn; struct s3d_scene* scn2; struct s3d_scene* scn3; + struct s3d_session* session; + struct s3d_session* session2; + struct s3d_session* session3; struct s3d_vertex_data attribs; struct s3d_shape* shapes[4]; const size_t nshapes = sizeof(shapes)/sizeof(struct s3d_shape*); @@ -150,91 +153,83 @@ main(int argc, char** argv) CHECK(s3d_scene_instantiate(scn, shapes + 2), RES_OK); CHECK(s3d_scene_attach_shape(scn, shapes[2]), RES_BAD_ARG); - CHECK(s3d_scene_get_session_mask(NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_get_session_mask(scn, NULL), RES_BAD_ARG); - CHECK(s3d_scene_get_session_mask(NULL, &mask), RES_BAD_ARG); - CHECK(s3d_scene_get_session_mask(scn, &mask), RES_OK); - CHECK(mask, 0); - CHECK(s3d_scene_attach_shape(scn, shapes[0]), RES_OK); - CHECK(s3d_scene_begin_session(NULL, 0), RES_BAD_ARG); - CHECK(s3d_scene_begin_session(scn, 0), RES_BAD_ARG); - CHECK(s3d_scene_begin_session(scn, S3D_TRACE|S3D_GET_PRIMITIVE), RES_OK); - CHECK(s3d_scene_begin_session(scn, S3D_SAMPLE), RES_OK); - - CHECK(s3d_scene_get_session_mask(scn, &mask), RES_OK); - CHECK(mask & S3D_TRACE, S3D_TRACE); - CHECK(mask & S3D_SAMPLE, S3D_SAMPLE); - CHECK(s3d_scene_clear(scn), RES_BAD_OP); - CHECK(s3d_scene_detach_shape(scn, shapes[0]), RES_BAD_OP); + CHECK(s3d_session_create(NULL, 0, NULL), RES_BAD_ARG); + CHECK(s3d_session_create(scn, 0, NULL), RES_BAD_ARG); + CHECK(s3d_session_create(NULL, S3D_TRACE, NULL), RES_BAD_ARG); + CHECK(s3d_session_create(scn, S3D_TRACE, NULL), RES_BAD_ARG); + CHECK(s3d_session_create(NULL, 0, &session), RES_BAD_ARG); + CHECK(s3d_session_create(scn, 0, &session), RES_BAD_ARG); + CHECK(s3d_session_create(NULL, S3D_TRACE, &session), RES_BAD_ARG); + CHECK(s3d_session_create(scn, S3D_TRACE, &session), RES_OK); + + CHECK(s3d_session_get_mask(NULL, NULL), RES_BAD_ARG); + CHECK(s3d_session_get_mask(session, NULL), RES_BAD_ARG); + CHECK(s3d_session_get_mask(NULL, &mask), RES_BAD_ARG); + CHECK(s3d_session_get_mask(session, &mask), RES_OK); + CHECK(mask, S3D_TRACE); - CHECK(s3d_scene_end_session(NULL), RES_BAD_ARG); - CHECK(s3d_scene_end_session(scn), RES_OK); - CHECK(s3d_scene_end_session(scn), RES_OK); - CHECK(s3d_scene_end_session(scn), RES_BAD_OP); + CHECK(s3d_scene_detach_shape(scn, shapes[0]), RES_OK); + CHECK(s3d_scene_clear(scn), RES_OK); - CHECK(s3d_scene_get_session_mask(scn, &mask), RES_OK); - CHECK(mask, 0); + CHECK(s3d_session_ref_get(NULL), RES_BAD_ARG); + CHECK(s3d_session_ref_get(session), RES_OK); + CHECK(s3d_session_ref_put(NULL), RES_BAD_ARG); + CHECK(s3d_session_ref_put(session), RES_OK); + CHECK(s3d_session_ref_put(session), RES_OK); - CHECK(s3d_scene_detach_shape(scn, shapes[0]), RES_OK); - CHECK(s3d_scene_begin_session(scn, S3D_TRACE), RES_OK); + CHECK(s3d_session_create(scn, S3D_TRACE, &session), RES_OK); CHECK(s3d_scene_attach_shape(scn, shapes[0]), RES_OK); CHECK(s3d_scene_detach_shape(scn, shapes[0]), RES_OK); CHECK(s3d_scene_attach_shape(scn, shapes[0]), RES_OK); - CHECK(s3d_scene_end_session(scn), RES_OK); + CHECK(s3d_session_ref_put(session), RES_OK); CHECK(s3d_scene_attach_shape(scn2, shapes[1]), RES_OK); CHECK(s3d_scene_attach_shape(scn2, shapes[2]), RES_OK); CHECK(s3d_scene_attach_shape(scn3, shapes[1]), RES_OK); - CHECK(s3d_scene_begin_session(scn2, S3D_SAMPLE|S3D_TRACE), RES_OK); - CHECK(s3d_scene_begin_session(scn, S3D_SAMPLE), RES_OK); - CHECK(s3d_scene_begin_session(scn3, S3D_SAMPLE), RES_OK); - CHECK(s3d_scene_end_session(scn3), RES_OK); + CHECK(s3d_session_create(scn2, S3D_SAMPLE|S3D_TRACE, &session2), RES_OK); + CHECK(s3d_session_create(scn, S3D_SAMPLE, &session), RES_OK); + CHECK(s3d_session_create(scn3, S3D_SAMPLE, &session3), RES_OK); + CHECK(s3d_session_ref_put(session3), RES_OK); - CHECK(s3d_scene_compute_area(NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_compute_area(scn2, NULL), RES_BAD_ARG); - CHECK(s3d_scene_compute_area(NULL, &area), RES_BAD_ARG); - CHECK(s3d_scene_compute_area(scn2, &area), RES_OK); + CHECK(s3d_session_compute_area(NULL, NULL), RES_BAD_ARG); + CHECK(s3d_session_compute_area(session2, NULL), RES_BAD_ARG); + CHECK(s3d_session_compute_area(NULL, &area), RES_BAD_ARG); + CHECK(s3d_session_compute_area(session2, &area), RES_OK); CHECK(area, 0.f); - CHECK(s3d_scene_compute_volume(NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_compute_volume(scn2, NULL), RES_BAD_ARG); - CHECK(s3d_scene_compute_volume(NULL, &volume), RES_BAD_ARG); - CHECK(s3d_scene_compute_volume(scn2, &volume), RES_OK); + CHECK(s3d_session_compute_volume(NULL, NULL), RES_BAD_ARG); + CHECK(s3d_session_compute_volume(session2, NULL), RES_BAD_ARG); + CHECK(s3d_session_compute_volume(NULL, &volume), RES_BAD_ARG); + CHECK(s3d_session_compute_volume(session2, &volume), RES_OK); CHECK(volume, 0.f); - CHECK(s3d_scene_primitives_count(NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_primitives_count(scn2, NULL), RES_BAD_ARG); - CHECK(s3d_scene_primitives_count(NULL, &nprims), RES_BAD_ARG); - CHECK(s3d_scene_primitives_count(scn2, &nprims), RES_OK); + CHECK(s3d_session_primitives_count(NULL, NULL), RES_BAD_ARG); + CHECK(s3d_session_primitives_count(session2, NULL), RES_BAD_ARG); + CHECK(s3d_session_primitives_count(NULL, &nprims), RES_BAD_ARG); + CHECK(s3d_session_primitives_count(session2, &nprims), RES_OK); CHECK(nprims, 0); - CHECK(s3d_scene_get_aabb(NULL, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_get_aabb(scn2, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_get_aabb(NULL, lower, NULL), RES_BAD_ARG); - CHECK(s3d_scene_get_aabb(scn2, lower, NULL), RES_BAD_ARG); - CHECK(s3d_scene_get_aabb(NULL, NULL, upper), RES_BAD_ARG); - CHECK(s3d_scene_get_aabb(scn2, NULL, upper), RES_BAD_ARG); - CHECK(s3d_scene_get_aabb(NULL, lower, upper), RES_BAD_ARG); - CHECK(s3d_scene_get_aabb(scn2, lower, upper), RES_OK); + CHECK(s3d_session_get_aabb(NULL, NULL, NULL), RES_BAD_ARG); + CHECK(s3d_session_get_aabb(session2, NULL, NULL), RES_BAD_ARG); + CHECK(s3d_session_get_aabb(NULL, lower, NULL), RES_BAD_ARG); + CHECK(s3d_session_get_aabb(session2, lower, NULL), RES_BAD_ARG); + CHECK(s3d_session_get_aabb(NULL, NULL, upper), RES_BAD_ARG); + CHECK(s3d_session_get_aabb(session2, NULL, upper), RES_BAD_ARG); + CHECK(s3d_session_get_aabb(NULL, lower, upper), RES_BAD_ARG); + CHECK(s3d_session_get_aabb(session2, lower, upper), RES_OK); CHECK(lower[0] > upper[0], 1); CHECK(lower[1] > upper[1], 1); CHECK(lower[2] > upper[2], 1); - CHECK(s3d_scene_end_session(scn), RES_OK); - CHECK(s3d_scene_end_session(scn), RES_BAD_OP); - CHECK(s3d_scene_end_session(scn2), RES_OK); - - CHECK(s3d_scene_compute_area(scn2, &area), RES_BAD_OP); - CHECK(s3d_scene_compute_volume(scn2, &volume), RES_BAD_OP); - CHECK(s3d_scene_primitives_count(scn2, &nprims), RES_BAD_OP); - CHECK(s3d_scene_get_aabb(scn2, lower, upper), RES_BAD_OP); + CHECK(s3d_session_ref_put(session), RES_OK); + CHECK(s3d_session_ref_put(session2), RES_OK); CHECK(s3d_scene_instantiate(scn2, shapes + 3), RES_OK); CHECK(s3d_scene_attach_shape(scn3, shapes[3]), RES_OK); - CHECK(s3d_scene_begin_session(scn3, S3D_SAMPLE|S3D_TRACE), RES_BAD_ARG); + CHECK(s3d_session_create(scn3, S3D_SAMPLE|S3D_TRACE, &session3), RES_BAD_ARG); CHECK(s3d_scene_detach_shape(scn, shapes[0]), RES_OK); @@ -262,60 +257,56 @@ main(int argc, char** argv) cbox_get_ids, cbox_walls_nverts, &attribs, 1, data), RES_OK); CHECK(s3d_scene_attach_shape(scn, shapes[0]), RES_OK); - CHECK(s3d_scene_begin_session(scn, S3D_TRACE), RES_OK); - CHECK(s3d_scene_compute_area(scn, &area), RES_OK); + CHECK(s3d_session_create(scn, S3D_TRACE, &session), RES_OK); + CHECK(s3d_session_compute_area(session, &area), RES_OK); CHECK(eq_epsf(area, 1532296.f, 1.e-6f), 1); - CHECK(s3d_scene_primitives_count(scn, &nprims), RES_OK); + CHECK(s3d_session_primitives_count(session, &nprims), RES_OK); CHECK(nprims, 10); - CHECK(s3d_scene_get_aabb(scn, lower, upper), RES_OK); + CHECK(s3d_session_get_aabb(session, lower, upper), RES_OK); CHECK(eq_epsf(lower[0], 0.f, 1.e-6f), 1); CHECK(eq_epsf(lower[1], 0.f, 1.e-6f), 1); CHECK(eq_epsf(lower[2], 0.f, 1.e-6f), 1); CHECK(eq_epsf(upper[0], 552.f, 1.e-6f), 1); CHECK(eq_epsf(upper[1], 559.f, 1.e-6f), 1); CHECK(eq_epsf(upper[2], 548.f, 1.e-6f), 1); - CHECK(s3d_scene_end_session(scn), RES_OK); CHECK(s3d_scene_instantiate(scn, shapes + 1), RES_OK); CHECK(s3d_scene_attach_shape(scn2, shapes[1]), RES_OK); - CHECK(s3d_scene_begin_session(scn2, S3D_TRACE), RES_OK); - CHECK(s3d_scene_compute_area(scn2, &area), RES_OK); + CHECK(s3d_session_create(scn2, S3D_GET_PRIMITIVE, &session2), RES_OK); + CHECK(s3d_session_compute_area(session2, &area), RES_OK); CHECK(eq_epsf(area, 1532296.f, 1.e-6f), 1); - CHECK(s3d_scene_primitives_count(scn, &nprims), RES_OK); + CHECK(s3d_session_primitives_count(session2, &nprims), RES_OK); CHECK(nprims, 10); - CHECK(s3d_scene_get_aabb(scn, lower, upper), RES_OK); + CHECK(s3d_session_get_aabb(session2, lower, upper), RES_OK); CHECK(eq_epsf(lower[0], 0.f, 1.e-6f), 1); CHECK(eq_epsf(lower[1], 0.f, 1.e-6f), 1); CHECK(eq_epsf(lower[2], 0.f, 1.e-6f), 1); CHECK(eq_epsf(upper[0], 552.f, 1.e-6f), 1); CHECK(eq_epsf(upper[1], 559.f, 1.e-6f), 1); CHECK(eq_epsf(upper[2], 548.f, 1.e-6f), 1); - CHECK(s3d_scene_end_session(scn2), RES_OK); - CHECK(s3d_scene_begin_session(scn2, S3D_GET_PRIMITIVE), RES_OK); - CHECK(s3d_scene_compute_area(scn2, &area), RES_OK); + CHECK(s3d_session_compute_area(session, &area), RES_OK); CHECK(eq_epsf(area, 1532296.f, 1.e-6f), 1); - CHECK(s3d_scene_primitives_count(scn, &nprims), RES_OK); - CHECK(nprims, 10); + CHECK(s3d_session_ref_put(session), RES_OK); - CHECK(s3d_scene_get_primitive(NULL, 11, NULL), RES_BAD_ARG); - CHECK(s3d_scene_get_primitive(scn2, 11, NULL), RES_BAD_ARG); - CHECK(s3d_scene_get_primitive(NULL, 0, NULL), RES_BAD_ARG); - CHECK(s3d_scene_get_primitive(scn2, 0, NULL), RES_BAD_ARG); - CHECK(s3d_scene_get_primitive(NULL, 11, prims + 0), RES_BAD_ARG); - CHECK(s3d_scene_get_primitive(scn2, 11, prims + 0), RES_BAD_ARG); - CHECK(s3d_scene_get_primitive(NULL, 0, prims + 0), RES_BAD_ARG); + CHECK(s3d_session_get_primitive(NULL, 11, NULL), RES_BAD_ARG); + CHECK(s3d_session_get_primitive(session2, 11, NULL), RES_BAD_ARG); + CHECK(s3d_session_get_primitive(NULL, 0, NULL), RES_BAD_ARG); + CHECK(s3d_session_get_primitive(session2, 0, NULL), RES_BAD_ARG); + CHECK(s3d_session_get_primitive(NULL, 11, prims + 0), RES_BAD_ARG); + CHECK(s3d_session_get_primitive(session2, 11, prims + 0), RES_BAD_ARG); + CHECK(s3d_session_get_primitive(NULL, 0, prims + 0), RES_BAD_ARG); FOR_EACH(i, 0, nprims) { size_t j; - CHECK(s3d_scene_get_primitive(scn2, (unsigned)i, prims + i), RES_OK); + CHECK(s3d_session_get_primitive(session2, (unsigned)i, prims + i), RES_OK); CHECK(S3D_PRIMITIVE_EQ(prims + i, &S3D_PRIMITIVE_NULL), 0); CHECK(prims[i].scene_prim_id, i); FOR_EACH(j, 0, i) CHECK(S3D_PRIMITIVE_EQ(prims + i, prims + j), 0); } - CHECK(s3d_scene_end_session(scn2), RES_OK); + CHECK(s3d_session_ref_put(session2), RES_OK); attribs.type = S3D_FLOAT3; attribs.usage = S3D_POSITION; @@ -323,18 +314,18 @@ main(int argc, char** argv) CHECK(s3d_mesh_setup_indexed_vertices (shapes[0], cube_ntris, cube_get_ids, cube_nverts, &attribs, 1, NULL), RES_OK); - CHECK(s3d_scene_begin_session(scn, S3D_TRACE), RES_OK); - CHECK(s3d_scene_compute_area(scn, &area), RES_OK); + CHECK(s3d_session_create(scn, S3D_TRACE, &session), RES_OK); + CHECK(s3d_session_compute_area(session, &area), RES_OK); CHECK(eq_epsf(area, 6.f, 1.e-6f), 1); - CHECK(s3d_scene_compute_volume(scn, &volume), RES_OK); + CHECK(s3d_session_compute_volume(session, &volume), RES_OK); CHECK(eq_epsf(volume, 1.f, 1.e-6f), 1); - CHECK(s3d_scene_end_session(scn), RES_OK); + CHECK(s3d_session_ref_put(session), RES_OK); CHECK(s3d_shape_flip_surface(shapes[0]), RES_OK); - CHECK(s3d_scene_begin_session(scn, S3D_GET_PRIMITIVE), RES_OK); - CHECK(s3d_scene_compute_volume(scn, &volume), RES_OK); + CHECK(s3d_session_create(scn, S3D_GET_PRIMITIVE, &session), RES_OK); + CHECK(s3d_session_compute_volume(session, &volume), RES_OK); CHECK(eq_epsf(volume, -1.f, 1.e-6f), 1); - CHECK(s3d_scene_end_session(scn), RES_OK); + CHECK(s3d_session_ref_put(session), RES_OK); CHECK(s3d_scene_get_device(NULL, NULL), RES_BAD_ARG); CHECK(s3d_scene_get_device(scn, NULL), RES_BAD_ARG);