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:
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);