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 f8ab1ff43cc885e1276e3ddf55207788f44fe884
parent 85b87b14928594c798719c4c905589981ff4fea2
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Wed, 27 Jul 2016 15:25:02 +0200

Make the trace ray test compliant with the session API

Diffstat:
Msrc/test_s3d_trace_ray.c | 112++++++++++++++++++++++++++++++++++++-------------------------------------------
1 file changed, 51 insertions(+), 61 deletions(-)

diff --git a/src/test_s3d_trace_ray.c b/src/test_s3d_trace_ray.c @@ -108,6 +108,7 @@ main(int argc, char** argv) struct s3d_hit hit; struct s3d_scene* scn; struct s3d_scene* scn2; + struct s3d_session* session; struct s3d_shape* inst; struct s3d_shape* walls; struct s3d_shape* walls_copy; @@ -169,46 +170,45 @@ main(int argc, char** argv) CHECK(s3d_scene_attach_shape(scn, walls), RES_OK); CHECK(s3d_shape_ref_put(walls), RES_OK); - CHECK(s3d_scene_begin_session(scn, S3D_TRACE), RES_OK); - CHECK(s3d_scene_trace_ray(NULL, NULL, NULL, NULL, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_trace_ray(scn, NULL, NULL, NULL, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_trace_ray(NULL, org, NULL, NULL, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_trace_ray(scn, org, NULL, NULL, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_trace_ray(NULL, NULL, dir, NULL, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_trace_ray(scn, NULL, dir, NULL, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_trace_ray(NULL, org, dir, NULL, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_trace_ray(scn, org, dir, NULL, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_trace_ray(NULL, NULL, NULL, range, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_trace_ray(scn, NULL, NULL, range, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_trace_ray(NULL, org, NULL, range, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_trace_ray(scn, org, NULL, range, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_trace_ray(NULL, NULL, dir, range, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_trace_ray(scn, NULL, dir, range, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_trace_ray(NULL, org, dir, range, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_trace_ray(scn, org, dir, range, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_trace_ray(NULL, NULL, NULL, NULL, NULL, &hit), RES_BAD_ARG); - CHECK(s3d_scene_trace_ray(scn, NULL, NULL, NULL, NULL, &hit), RES_BAD_ARG); - CHECK(s3d_scene_trace_ray(NULL, org, NULL, NULL, NULL, &hit), RES_BAD_ARG); - CHECK(s3d_scene_trace_ray(scn, org, NULL, NULL, NULL, &hit), RES_BAD_ARG); - CHECK(s3d_scene_trace_ray(NULL, NULL, dir, NULL, NULL, &hit), RES_BAD_ARG); - CHECK(s3d_scene_trace_ray(scn, NULL, dir, NULL, NULL, &hit), RES_BAD_ARG); - CHECK(s3d_scene_trace_ray(NULL, org, dir, NULL, NULL, &hit), RES_BAD_ARG); - CHECK(s3d_scene_trace_ray(scn, org, dir, NULL, NULL, &hit), RES_BAD_ARG); - CHECK(s3d_scene_trace_ray(NULL, NULL, NULL, range, NULL, &hit), RES_BAD_ARG); - CHECK(s3d_scene_trace_ray(scn, NULL, NULL, range, NULL, &hit), RES_BAD_ARG); - CHECK(s3d_scene_trace_ray(NULL, org, NULL, range, NULL, &hit), RES_BAD_ARG); - CHECK(s3d_scene_trace_ray(scn, org, NULL, range, NULL, &hit), RES_BAD_ARG); - CHECK(s3d_scene_trace_ray(NULL, NULL, dir, range, NULL, &hit), RES_BAD_ARG); - CHECK(s3d_scene_trace_ray(scn, NULL, dir, range, NULL, &hit), RES_BAD_ARG); - CHECK(s3d_scene_trace_ray(NULL, org, dir, range, NULL, &hit), RES_BAD_ARG); - CHECK(s3d_scene_trace_ray(scn, org, dir, range, NULL, &hit), RES_OK); - CHECK(s3d_scene_trace_ray(scn, org, dir, range, NULL, &hit), RES_OK); + CHECK(s3d_session_create(scn, S3D_TRACE, &session), RES_OK); + CHECK(s3d_session_trace_ray(NULL, NULL, NULL, NULL, NULL, NULL), RES_BAD_ARG); + CHECK(s3d_session_trace_ray(session, NULL, NULL, NULL, NULL, NULL), RES_BAD_ARG); + CHECK(s3d_session_trace_ray(NULL, org, NULL, NULL, NULL, NULL), RES_BAD_ARG); + CHECK(s3d_session_trace_ray(session, org, NULL, NULL, NULL, NULL), RES_BAD_ARG); + CHECK(s3d_session_trace_ray(NULL, NULL, dir, NULL, NULL, NULL), RES_BAD_ARG); + CHECK(s3d_session_trace_ray(session, NULL, dir, NULL, NULL, NULL), RES_BAD_ARG); + CHECK(s3d_session_trace_ray(NULL, org, dir, NULL, NULL, NULL), RES_BAD_ARG); + CHECK(s3d_session_trace_ray(session, org, dir, NULL, NULL, NULL), RES_BAD_ARG); + CHECK(s3d_session_trace_ray(NULL, NULL, NULL, range, NULL, NULL), RES_BAD_ARG); + CHECK(s3d_session_trace_ray(session, NULL, NULL, range, NULL, NULL), RES_BAD_ARG); + CHECK(s3d_session_trace_ray(NULL, org, NULL, range, NULL, NULL), RES_BAD_ARG); + CHECK(s3d_session_trace_ray(session, org, NULL, range, NULL, NULL), RES_BAD_ARG); + CHECK(s3d_session_trace_ray(NULL, NULL, dir, range, NULL, NULL), RES_BAD_ARG); + CHECK(s3d_session_trace_ray(session, NULL, dir, range, NULL, NULL), RES_BAD_ARG); + CHECK(s3d_session_trace_ray(NULL, org, dir, range, NULL, NULL), RES_BAD_ARG); + CHECK(s3d_session_trace_ray(session, org, dir, range, NULL, NULL), RES_BAD_ARG); + CHECK(s3d_session_trace_ray(NULL, NULL, NULL, NULL, NULL, &hit), RES_BAD_ARG); + CHECK(s3d_session_trace_ray(session, NULL, NULL, NULL, NULL, &hit), RES_BAD_ARG); + CHECK(s3d_session_trace_ray(NULL, org, NULL, NULL, NULL, &hit), RES_BAD_ARG); + CHECK(s3d_session_trace_ray(session, org, NULL, NULL, NULL, &hit), RES_BAD_ARG); + CHECK(s3d_session_trace_ray(NULL, NULL, dir, NULL, NULL, &hit), RES_BAD_ARG); + CHECK(s3d_session_trace_ray(session, NULL, dir, NULL, NULL, &hit), RES_BAD_ARG); + CHECK(s3d_session_trace_ray(NULL, org, dir, NULL, NULL, &hit), RES_BAD_ARG); + CHECK(s3d_session_trace_ray(session, org, dir, NULL, NULL, &hit), RES_BAD_ARG); + CHECK(s3d_session_trace_ray(NULL, NULL, NULL, range, NULL, &hit), RES_BAD_ARG); + CHECK(s3d_session_trace_ray(session, NULL, NULL, range, NULL, &hit), RES_BAD_ARG); + CHECK(s3d_session_trace_ray(NULL, org, NULL, range, NULL, &hit), RES_BAD_ARG); + CHECK(s3d_session_trace_ray(session, org, NULL, range, NULL, &hit), RES_BAD_ARG); + CHECK(s3d_session_trace_ray(NULL, NULL, dir, range, NULL, &hit), RES_BAD_ARG); + CHECK(s3d_session_trace_ray(session, NULL, dir, range, NULL, &hit), RES_BAD_ARG); + CHECK(s3d_session_trace_ray(NULL, org, dir, range, NULL, &hit), RES_BAD_ARG); + CHECK(s3d_session_trace_ray(session, org, dir, range, NULL, &hit), RES_OK); + CHECK(s3d_session_trace_ray(session, org, dir, range, NULL, &hit), RES_OK); f3(dir, 1.f, 1.f, 1.f); - CHECK(s3d_scene_trace_ray(scn, org, dir, range, NULL, &hit), RES_BAD_ARG); - CHECK(s3d_scene_end_session(scn), RES_OK); + CHECK(s3d_session_trace_ray(session, org, dir, range, NULL, &hit), RES_BAD_ARG); + CHECK(s3d_session_ref_put(session), RES_OK); f3(dir, 0.f, 1.f, 0.f); - CHECK(s3d_scene_trace_ray(scn, org, dir, range, NULL, &hit), RES_BAD_OP); CHECK(s3d_scene_clear(scn), RES_OK); /* Update the inst with the CBox tall block mesh */ @@ -237,10 +237,10 @@ main(int argc, char** argv) /* Instantiate the scene */ CHECK(s3d_scene_instantiate(scn, &inst), RES_OK); - CHECK(s3d_scene_begin_session(scn, S3D_SAMPLE), RES_OK); - CHECK(s3d_scene_primitives_count(scn, &nprims), RES_OK); + CHECK(s3d_session_create(scn, S3D_SAMPLE, &session), RES_OK); + CHECK(s3d_session_primitives_count(session, &nprims), RES_OK); CHECK(nprims, 20); - CHECK(s3d_scene_end_session(scn), RES_OK); + CHECK(s3d_session_ref_put(session), RES_OK); CHECK(s3d_shape_get_id(inst, &inst_id), RES_OK); /* Create the CBox walls */ @@ -266,22 +266,12 @@ main(int argc, char** argv) CHECK(s3d_instance_set_position(inst, org), RES_OK); CHECK(s3d_shape_enable(inst, 0), RES_OK); + CHECK(s3d_session_create(scn2, S3D_TRACE|S3D_SAMPLE, &session), RES_OK); + CHECK(s3d_session_ref_put(session), RES_OK); - CHECK(s3d_scene_begin_session(scn, S3D_TRACE), RES_OK); - CHECK(s3d_scene_begin_session(scn2, S3D_TRACE), RES_OK); - CHECK(s3d_scene_end_session(scn), RES_OK); - CHECK(s3d_scene_end_session(scn2), RES_OK); - CHECK(s3d_scene_begin_session(scn2, S3D_TRACE), RES_OK); - CHECK(s3d_scene_begin_session(scn, S3D_TRACE), RES_OK); - CHECK(s3d_scene_end_session(scn), RES_OK); - - CHECK(s3d_scene_clear(scn2), RES_BAD_OP); - CHECK(s3d_scene_clear(scn), RES_BAD_OP); - - CHECK(s3d_scene_end_session(scn2), RES_OK); CHECK(s3d_shape_enable(inst, 1), RES_OK); - CHECK(s3d_scene_begin_session(scn2, S3D_TRACE), RES_OK); - CHECK(s3d_scene_end_session(scn2), RES_OK); + CHECK(s3d_session_create(scn2, S3D_TRACE, &session), RES_OK); + CHECK(s3d_session_ref_put(session), RES_OK); CHECK(s3d_shape_create_mesh(dev, &walls_copy), RES_OK); CHECK(s3d_mesh_copy(walls, walls_copy), RES_OK); @@ -297,11 +287,11 @@ main(int argc, char** argv) CHECK(s3d_scene_attach_shape(scn, short_block), RES_OK); CHECK(s3d_scene_attach_shape(scn, tall_block), RES_OK); - CHECK(s3d_scene_begin_session(scn2, S3D_TRACE|S3D_GET_PRIMITIVE), RES_OK); - CHECK(s3d_scene_primitives_count(scn2, &nprims), RES_OK); + CHECK(s3d_session_create(scn2, S3D_TRACE|S3D_GET_PRIMITIVE, &session), RES_OK); + CHECK(s3d_session_primitives_count(session, &nprims), RES_OK); CHECK(nprims, 30); - CHECK(s3d_scene_get_aabb(scn2, lower, upper), RES_OK); + CHECK(s3d_session_get_aabb(session, lower, upper), RES_OK); CHECK(eq_epsf(lower[0], -100.f, 1.e-6f), 1); CHECK(eq_epsf(lower[1], 0.f, 1.e-6f), 1); CHECK(eq_epsf(lower[2], -2.f, 1.e-6f), 1); @@ -311,7 +301,7 @@ main(int argc, char** argv) 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(session, (unsigned)i, prims + i), RES_OK); CHECK(S3D_PRIMITIVE_EQ(prims + i, &S3D_PRIMITIVE_NULL), 0); FOR_EACH(j, 0, i) { CHECK(S3D_PRIMITIVE_EQ(prims + i, prims + j), 0); @@ -334,8 +324,8 @@ main(int argc, char** argv) pixel[0] = (float)ix/(float)IMG_WIDTH; camera_ray(&cam, pixel, org, dir); - CHECK(s3d_scene_trace_ray - (scn2, org, dir, range, (void*)(uintptr_t)0xDEADBEEF, &hit), RES_OK); + CHECK(s3d_session_trace_ray + (session, org, dir, range, (void*)(uintptr_t)0xDEADBEEF, &hit), RES_OK); if(S3D_HIT_NONE(&hit)) { if(img) { @@ -400,7 +390,7 @@ main(int argc, char** argv) } } } - CHECK(s3d_scene_end_session(scn2), RES_OK); + CHECK(s3d_session_ref_put(session), RES_OK); if(img_name) { CHECK(image_ppm_write(img_name, IMG_WIDTH, IMG_HEIGHT, 3, img), RES_OK);