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 d9381bca65ad5b652c0d4466c9a1de19fc3eab10
parent 2a4b1f4dfaa43a2f10d448aeb8f57aa3a243b5e7
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Mon, 27 Nov 2017 14:49:11 +0100

Fix deprecations introduced by RSys 0.6

Diffstat:
Mcmake/CMakeLists.txt | 3++-
Msrc/test_s3d_camera.h | 8++++----
Msrc/test_s3d_cbox.h | 4++--
Msrc/test_s3d_device.c | 40++++++++++++++++++++--------------------
Msrc/test_s3d_primitive.c | 304++++++++++++++++++++++++++++++++++++++++----------------------------------------
Msrc/test_s3d_sampler.c | 208++++++++++++++++++++++++++++++++++++++++----------------------------------------
Msrc/test_s3d_scene.c | 470++++++++++++++++++++++++++++++++++++++++----------------------------------------
Msrc/test_s3d_scene_view.c | 982++++++++++++++++++++++++++++++++++++++++----------------------------------------
Msrc/test_s3d_seams.c | 56++++++++++++++++++++++++++++----------------------------
Msrc/test_s3d_shape.c | 502++++++++++++++++++++++++++++++++++++++++----------------------------------------
Msrc/test_s3d_trace_ray.c | 308++++++++++++++++++++++++++++++++++++++++----------------------------------------
Msrc/test_s3d_trace_ray_instance.c | 178++++++++++++++++++++++++++++++++++++++++----------------------------------------
12 files changed, 1532 insertions(+), 1531 deletions(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt @@ -44,7 +44,8 @@ set(Embree_DIR ${_current_source_dir}/) find_package(Embree REQUIRED) find_package(RCMake 0.2.2 REQUIRED) -find_package(RSys 0.3.1 REQUIRED) +find_package(RSys 0.6 REQUIRED) + set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${RCMAKE_SOURCE_DIR}) include(rcmake) include(rcmake_runtime) diff --git a/src/test_s3d_camera.h b/src/test_s3d_camera.h @@ -53,9 +53,9 @@ camera_init ASSERT(cam); f3_set(cam->pos, pos); - f = f3_normalize(cam->z, f3_sub(cam->z, tgt, pos)); NCHECK(f, 0); - f = f3_normalize(cam->x, f3_cross(cam->x, cam->z, up)); NCHECK(f, 0); - f = f3_normalize(cam->y, f3_cross(cam->y, cam->z, cam->x)); NCHECK(f, 0); + f = f3_normalize(cam->z, f3_sub(cam->z, tgt, pos)); CHK(f != 0); + f = f3_normalize(cam->x, f3_cross(cam->x, cam->z, up)); CHK(f != 0); + f = f3_normalize(cam->y, f3_cross(cam->y, cam->z, cam->x)); CHK(f != 0); f3_divf(cam->z, cam->z, (float)tan(fov_x*0.5f)); f3_divf(cam->y, cam->y, proj_ratio); } @@ -73,7 +73,7 @@ camera_ray f3_mulf(x, cam->x, pixel[0]*2.f - 1.f); f3_mulf(y, cam->y, pixel[1]*2.f - 1.f); f3_add(dir, f3_add(dir, x, y), cam->z); - f = f3_normalize(dir, dir); NCHECK(f, 0); + f = f3_normalize(dir, dir); CHK(f != 0); f3_set(org, cam->pos); } diff --git a/src/test_s3d_cbox.h b/src/test_s3d_cbox.h @@ -111,7 +111,7 @@ cbox_get_ids(const unsigned itri, unsigned ids[3], void* data) { const unsigned id = itri * 3; struct cbox_desc* desc = data; - NCHECK(desc, NULL); + CHK(desc != NULL); ids[0] = desc->indices[id + 0]; ids[1] = desc->indices[id + 1]; ids[2] = desc->indices[id + 2]; @@ -121,7 +121,7 @@ static INLINE void cbox_get_position(const unsigned ivert, float position[3], void* data) { struct cbox_desc* desc = data; - NCHECK(desc, NULL); + CHK(desc != NULL); position[0] = desc->vertices[ivert*3 + 0]; position[1] = desc->vertices[ivert*3 + 1]; position[2] = desc->vertices[ivert*3 + 2]; diff --git a/src/test_s3d_device.c b/src/test_s3d_device.c @@ -50,40 +50,40 @@ main(int argc, char** argv) struct s3d_device* dev; (void)argc, (void)argv; - CHECK(s3d_device_create(NULL, NULL, 0, NULL), RES_BAD_ARG); - CHECK(s3d_device_create(NULL, NULL, 0, &dev), RES_OK); + CHK(s3d_device_create(NULL, NULL, 0, NULL) == RES_BAD_ARG); + CHK(s3d_device_create(NULL, NULL, 0, &dev) == RES_OK); - CHECK(s3d_device_ref_get(NULL), RES_BAD_ARG); - CHECK(s3d_device_ref_get(dev), RES_OK); - CHECK(s3d_device_ref_put(NULL), RES_BAD_ARG); - CHECK(s3d_device_ref_put(dev), RES_OK); - CHECK(s3d_device_ref_put(dev), RES_OK); + CHK(s3d_device_ref_get(NULL) == RES_BAD_ARG); + CHK(s3d_device_ref_get(dev) == RES_OK); + CHK(s3d_device_ref_put(NULL) == RES_BAD_ARG); + CHK(s3d_device_ref_put(dev) == RES_OK); + CHK(s3d_device_ref_put(dev) == RES_OK); mem_init_proxy_allocator(&allocator, &mem_default_allocator); - CHECK(MEM_ALLOCATED_SIZE(&allocator), 0); - CHECK(s3d_device_create(NULL, &allocator, 0, NULL), RES_BAD_ARG); - CHECK(s3d_device_create(NULL, &allocator, 0, &dev), RES_OK); - CHECK(s3d_device_ref_put(dev), RES_OK); - CHECK(MEM_ALLOCATED_SIZE(&allocator), 0); + CHK(MEM_ALLOCATED_SIZE(&allocator) == 0); + CHK(s3d_device_create(NULL, &allocator, 0, NULL) == RES_BAD_ARG); + CHK(s3d_device_create(NULL, &allocator, 0, &dev) == RES_OK); + CHK(s3d_device_ref_put(dev) == RES_OK); + CHK(MEM_ALLOCATED_SIZE(&allocator) == 0); - CHECK(logger_init(&allocator, &logger), RES_OK); + CHK(logger_init(&allocator, &logger) == RES_OK); logger_set_stream(&logger, LOG_OUTPUT, log_stream, NULL); logger_set_stream(&logger, LOG_ERROR, log_stream, NULL); logger_set_stream(&logger, LOG_WARNING, log_stream, NULL); - CHECK(s3d_device_create(&logger, NULL, 0, NULL), RES_BAD_ARG); - CHECK(s3d_device_create(&logger, NULL, 0, &dev), RES_OK); - CHECK(s3d_device_ref_put(dev), RES_OK); + CHK(s3d_device_create(&logger, NULL, 0, NULL) == RES_BAD_ARG); + CHK(s3d_device_create(&logger, NULL, 0, &dev) == RES_OK); + CHK(s3d_device_ref_put(dev) == RES_OK); - CHECK(s3d_device_create(&logger, &allocator, 0, NULL), RES_BAD_ARG); - CHECK(s3d_device_create(&logger, &allocator, 0, &dev), RES_OK); - CHECK(s3d_device_ref_put(dev), RES_OK); + CHK(s3d_device_create(&logger, &allocator, 0, NULL) == RES_BAD_ARG); + CHK(s3d_device_create(&logger, &allocator, 0, &dev) == RES_OK); + CHK(s3d_device_ref_put(dev) == RES_OK); logger_release(&logger); check_memory_allocator(&allocator); mem_shutdown_proxy_allocator(&allocator); - CHECK(mem_allocated_size(), 0); + CHK(mem_allocated_size() == 0); return 0; } diff --git a/src/test_s3d_primitive.c b/src/test_s3d_primitive.c @@ -62,8 +62,8 @@ plane_get_ids(const unsigned itri, unsigned ids[3], void* data) { const unsigned id = itri * 3; (void)data; - NCHECK(ids, NULL); - CHECK(itri < plane_ntris, 1); + CHK(ids != NULL); + CHK(itri < plane_ntris); ids[0] = plane_ids[id + 0]; ids[1] = plane_ids[id + 1]; ids[2] = plane_ids[id + 2]; @@ -74,8 +74,8 @@ plane_get_pos(const unsigned ivert, float pos[3], void* data) { const unsigned i = ivert*3; (void)data; - NCHECK(pos, NULL); - CHECK(ivert < plane_nverts, 1); + CHK(pos != NULL); + CHK(ivert < plane_nverts); pos[0] = plane_verts[i + 0]; pos[1] = plane_verts[i + 1]; pos[2] = plane_verts[i + 2]; @@ -86,8 +86,8 @@ plane_get_uv(const unsigned ivert, float uv[2], void* data) { const unsigned i = ivert*3; (void)data; - NCHECK(uv, NULL); - CHECK(ivert < plane_nverts, 1); + CHK(uv != NULL); + CHK(ivert < plane_nverts); uv[0] = -plane_verts[i + 0]; uv[1] = -plane_verts[i + 1]; } @@ -118,12 +118,12 @@ main(int argc, char** argv) mem_init_proxy_allocator(&allocator, &mem_default_allocator); - CHECK(s3d_device_create(NULL, &allocator, 1, &dev), RES_OK); - CHECK(s3d_scene_create(dev, &scn), RES_OK); - CHECK(s3d_shape_create_mesh(dev, &walls), RES_OK); - CHECK(s3d_shape_create_mesh(dev, &plane), RES_OK); - CHECK(s3d_shape_get_id(walls, &walls_id), RES_OK); - CHECK(s3d_scene_attach_shape(scn, walls), RES_OK); + CHK(s3d_device_create(NULL, &allocator, 1, &dev) == RES_OK); + CHK(s3d_scene_create(dev, &scn) == RES_OK); + CHK(s3d_shape_create_mesh(dev, &walls) == RES_OK); + CHK(s3d_shape_create_mesh(dev, &plane) == RES_OK); + CHK(s3d_shape_get_id(walls, &walls_id) == RES_OK); + CHK(s3d_scene_attach_shape(scn, walls) == RES_OK); attribs[1].usage = S3D_ATTRIB_0; attribs[1].type = S3D_FLOAT2; @@ -137,161 +137,161 @@ main(int argc, char** argv) nverts = cbox_walls_nverts; desc.vertices = cbox_walls; desc.indices = cbox_walls_ids; - CHECK(s3d_mesh_setup_indexed_vertices - (walls, ntris, cbox_get_ids, nverts, attribs, 1, &desc), RES_OK); + CHK(s3d_mesh_setup_indexed_vertices + (walls, ntris, cbox_get_ids, nverts, attribs, 1, &desc) == RES_OK); attribs[0].get = plane_get_pos; - CHECK(s3d_mesh_setup_indexed_vertices - (plane, plane_ntris, plane_get_ids, plane_nverts, attribs, 2, NULL), RES_OK); - - CHECK(s3d_scene_view_create(scn, S3D_SAMPLE, &scnview), RES_OK); - CHECK(s3d_scene_view_sample(scnview, 0, 0, 0, &prim, uv), RES_OK); - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); - - CHECK(s3d_primitive_get_attrib(NULL, S3D_ATTRIBS_COUNT__, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_primitive_get_attrib(&prim, S3D_ATTRIBS_COUNT__, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_primitive_get_attrib(NULL, S3D_ATTRIBS_COUNT__, uv, NULL), RES_BAD_ARG); - CHECK(s3d_primitive_get_attrib(&prim, S3D_ATTRIBS_COUNT__, uv, NULL), RES_BAD_ARG); - CHECK(s3d_primitive_get_attrib(NULL, S3D_ATTRIBS_COUNT__, NULL, &attr), RES_BAD_ARG); - CHECK(s3d_primitive_get_attrib(&prim, S3D_ATTRIBS_COUNT__, NULL, &attr), RES_BAD_ARG); - CHECK(s3d_primitive_get_attrib(NULL, S3D_ATTRIBS_COUNT__, uv, &attr), RES_BAD_ARG); - CHECK(s3d_primitive_get_attrib(&prim, S3D_ATTRIBS_COUNT__, uv, &attr), RES_BAD_ARG); - - CHECK(s3d_primitive_get_attrib(NULL, S3D_POSITION, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_primitive_get_attrib(&prim, S3D_POSITION, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_primitive_get_attrib(NULL, S3D_POSITION, uv, NULL), RES_BAD_ARG); - CHECK(s3d_primitive_get_attrib(&prim, S3D_POSITION, uv, NULL), RES_BAD_ARG); - CHECK(s3d_primitive_get_attrib(NULL, S3D_POSITION, NULL, &attr), RES_BAD_ARG); - CHECK(s3d_primitive_get_attrib(&prim, S3D_POSITION, NULL, &attr), RES_BAD_ARG); - CHECK(s3d_primitive_get_attrib(NULL, S3D_POSITION, uv, &attr), RES_BAD_ARG); - CHECK(s3d_primitive_get_attrib(&prim, S3D_POSITION, uv, &attr), RES_OK); - CHECK(attr.type, S3D_FLOAT3); - CHECK(attr.usage, S3D_POSITION); - CHECK(s3d_primitive_get_attrib(&prim, S3D_GEOMETRY_NORMAL, uv, &attr), RES_OK); - CHECK(attr.type, S3D_FLOAT3); - CHECK(attr.usage, S3D_GEOMETRY_NORMAL); - CHECK(s3d_primitive_get_attrib(&prim, S3D_ATTRIB_0, uv, &attr), RES_BAD_ARG); - CHECK(s3d_primitive_get_attrib(&S3D_PRIMITIVE_NULL, S3D_POSITION, uv, &attr), RES_BAD_ARG); - - CHECK(s3d_primitive_has_attrib(NULL, S3D_ATTRIBS_COUNT__, NULL), RES_BAD_ARG); - CHECK(s3d_primitive_has_attrib(&prim, S3D_ATTRIBS_COUNT__, NULL), RES_BAD_ARG); - CHECK(s3d_primitive_has_attrib(NULL, S3D_POSITION, NULL), RES_BAD_ARG); - CHECK(s3d_primitive_has_attrib(&prim, S3D_POSITION, NULL), RES_BAD_ARG); - CHECK(s3d_primitive_has_attrib(NULL, S3D_ATTRIBS_COUNT__, &b), RES_BAD_ARG); - CHECK(s3d_primitive_has_attrib(&prim, S3D_ATTRIBS_COUNT__, &b), RES_BAD_ARG); - CHECK(s3d_primitive_has_attrib(NULL, S3D_POSITION, &b), RES_BAD_ARG); - CHECK(s3d_primitive_has_attrib(&prim, S3D_POSITION, &b), RES_OK); - CHECK(b, 1); - CHECK(s3d_primitive_has_attrib(&prim, S3D_GEOMETRY_NORMAL, &b), RES_OK); - CHECK(b, 1); - CHECK(s3d_primitive_has_attrib(&prim, S3D_ATTRIB_0, &b), RES_OK); - CHECK(b, 0); - - CHECK(s3d_primitive_get_transform(NULL, NULL), RES_BAD_ARG); - CHECK(s3d_primitive_get_transform(&prim, NULL), RES_BAD_ARG); - CHECK(s3d_primitive_get_transform(NULL, transform), RES_BAD_ARG); - CHECK(s3d_primitive_get_transform(&prim, transform), RES_OK); - CHECK(f3_eq(transform + 0, f3(vec, 1.f, 0.f, 0.f)), 1); - CHECK(f3_eq(transform + 3, f3(vec, 0.f, 1.f, 0.f)), 1); - CHECK(f3_eq(transform + 6, f3(vec, 0.f, 0.f, 1.f)), 1); - CHECK(f3_eq(transform + 9, f3(vec, 0.f, 0.f, 0.f)), 1); - - CHECK(s3d_scene_clear(scn), RES_OK); - CHECK(s3d_scene_attach_shape(scn, plane), RES_OK); - - CHECK(s3d_scene_view_create(scn, S3D_GET_PRIMITIVE, &scnview), RES_OK); - CHECK(s3d_scene_view_primitives_count(scnview, &nprims), RES_OK); - CHECK(nprims, 2); - CHECK(s3d_scene_view_get_primitive(scnview, 0, &prim), RES_OK); - CHECK(S3D_PRIMITIVE_EQ(&prim, &S3D_PRIMITIVE_NULL), 0); - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); - - CHECK(s3d_primitive_has_attrib(&prim, S3D_ATTRIB_0, &b), RES_OK); - CHECK(b, 1); - CHECK(s3d_primitive_has_attrib(&prim, S3D_ATTRIB_1, &b), RES_OK); - CHECK(b, 0); - - CHECK(s3d_primitive_compute_area(NULL, NULL), RES_BAD_ARG); - CHECK(s3d_primitive_compute_area(&prim, NULL), RES_BAD_ARG); - CHECK(s3d_primitive_compute_area(NULL, &area), RES_BAD_ARG); - CHECK(s3d_primitive_compute_area(&prim, &area), RES_OK); - CHECK(eq_epsf(area, 0.5f, 1.e-6f), 1); - - CHECK(s3d_primitive_sample(NULL, 1.f, 1.f, NULL), RES_BAD_ARG); - CHECK(s3d_primitive_sample(&prim, 1.f, 1.f, NULL), RES_BAD_ARG); - CHECK(s3d_primitive_sample(NULL, 0.f, 1.f, NULL), RES_BAD_ARG); - CHECK(s3d_primitive_sample(&prim, 0.f, 1.f, NULL), RES_BAD_ARG); - CHECK(s3d_primitive_sample(NULL, 1.f, 0.f, NULL), RES_BAD_ARG); - CHECK(s3d_primitive_sample(&prim, 1.f, 0.f, NULL), RES_BAD_ARG); - CHECK(s3d_primitive_sample(NULL, 0.f, 0.f, NULL), RES_BAD_ARG); - CHECK(s3d_primitive_sample(&prim, 0.f, 0.f, NULL), RES_BAD_ARG); - CHECK(s3d_primitive_sample(NULL, 1.f, 1.f, uv), RES_BAD_ARG); - CHECK(s3d_primitive_sample(&prim, 1.f, 1.f, uv), RES_BAD_ARG); - CHECK(s3d_primitive_sample(NULL, 0.f, 1.f, uv), RES_BAD_ARG); - CHECK(s3d_primitive_sample(&prim, 0.f, 1.f, uv), RES_BAD_ARG); - CHECK(s3d_primitive_sample(NULL, 1.f, 0.f, uv), RES_BAD_ARG); - CHECK(s3d_primitive_sample(&prim, 1.f, 0.f, uv), RES_BAD_ARG); - CHECK(s3d_primitive_sample(NULL, 0.f, 0.f, uv), RES_BAD_ARG); - CHECK(s3d_primitive_sample(&prim, 0.f, 0.f, uv), RES_OK); + CHK(s3d_mesh_setup_indexed_vertices + (plane, plane_ntris, plane_get_ids, plane_nverts, attribs, 2, NULL) == RES_OK); + + CHK(s3d_scene_view_create(scn, S3D_SAMPLE, &scnview) == RES_OK); + CHK(s3d_scene_view_sample(scnview, 0, 0, 0, &prim, uv) == RES_OK); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); + + CHK(s3d_primitive_get_attrib(NULL, S3D_ATTRIBS_COUNT__, NULL, NULL) == RES_BAD_ARG); + CHK(s3d_primitive_get_attrib(&prim, S3D_ATTRIBS_COUNT__, NULL, NULL) == RES_BAD_ARG); + CHK(s3d_primitive_get_attrib(NULL, S3D_ATTRIBS_COUNT__, uv, NULL) == RES_BAD_ARG); + CHK(s3d_primitive_get_attrib(&prim, S3D_ATTRIBS_COUNT__, uv, NULL) == RES_BAD_ARG); + CHK(s3d_primitive_get_attrib(NULL, S3D_ATTRIBS_COUNT__, NULL, &attr) == RES_BAD_ARG); + CHK(s3d_primitive_get_attrib(&prim, S3D_ATTRIBS_COUNT__, NULL, &attr) == RES_BAD_ARG); + CHK(s3d_primitive_get_attrib(NULL, S3D_ATTRIBS_COUNT__, uv, &attr) == RES_BAD_ARG); + CHK(s3d_primitive_get_attrib(&prim, S3D_ATTRIBS_COUNT__, uv, &attr) == RES_BAD_ARG); + + CHK(s3d_primitive_get_attrib(NULL, S3D_POSITION, NULL, NULL) == RES_BAD_ARG); + CHK(s3d_primitive_get_attrib(&prim, S3D_POSITION, NULL, NULL) == RES_BAD_ARG); + CHK(s3d_primitive_get_attrib(NULL, S3D_POSITION, uv, NULL) == RES_BAD_ARG); + CHK(s3d_primitive_get_attrib(&prim, S3D_POSITION, uv, NULL) == RES_BAD_ARG); + CHK(s3d_primitive_get_attrib(NULL, S3D_POSITION, NULL, &attr) == RES_BAD_ARG); + CHK(s3d_primitive_get_attrib(&prim, S3D_POSITION, NULL, &attr) == RES_BAD_ARG); + CHK(s3d_primitive_get_attrib(NULL, S3D_POSITION, uv, &attr) == RES_BAD_ARG); + CHK(s3d_primitive_get_attrib(&prim, S3D_POSITION, uv, &attr) == RES_OK); + CHK(attr.type == S3D_FLOAT3); + CHK(attr.usage == S3D_POSITION); + CHK(s3d_primitive_get_attrib(&prim, S3D_GEOMETRY_NORMAL, uv, &attr) == RES_OK); + CHK(attr.type == S3D_FLOAT3); + CHK(attr.usage == S3D_GEOMETRY_NORMAL); + CHK(s3d_primitive_get_attrib(&prim, S3D_ATTRIB_0, uv, &attr) == RES_BAD_ARG); + CHK(s3d_primitive_get_attrib(&S3D_PRIMITIVE_NULL, S3D_POSITION, uv, &attr) == RES_BAD_ARG); + + CHK(s3d_primitive_has_attrib(NULL, S3D_ATTRIBS_COUNT__, NULL) == RES_BAD_ARG); + CHK(s3d_primitive_has_attrib(&prim, S3D_ATTRIBS_COUNT__, NULL) == RES_BAD_ARG); + CHK(s3d_primitive_has_attrib(NULL, S3D_POSITION, NULL) == RES_BAD_ARG); + CHK(s3d_primitive_has_attrib(&prim, S3D_POSITION, NULL) == RES_BAD_ARG); + CHK(s3d_primitive_has_attrib(NULL, S3D_ATTRIBS_COUNT__, &b) == RES_BAD_ARG); + CHK(s3d_primitive_has_attrib(&prim, S3D_ATTRIBS_COUNT__, &b) == RES_BAD_ARG); + CHK(s3d_primitive_has_attrib(NULL, S3D_POSITION, &b) == RES_BAD_ARG); + CHK(s3d_primitive_has_attrib(&prim, S3D_POSITION, &b) == RES_OK); + CHK(b == 1); + CHK(s3d_primitive_has_attrib(&prim, S3D_GEOMETRY_NORMAL, &b) == RES_OK); + CHK(b == 1); + CHK(s3d_primitive_has_attrib(&prim, S3D_ATTRIB_0, &b) == RES_OK); + CHK(b == 0); + + CHK(s3d_primitive_get_transform(NULL, NULL) == RES_BAD_ARG); + CHK(s3d_primitive_get_transform(&prim, NULL) == RES_BAD_ARG); + CHK(s3d_primitive_get_transform(NULL, transform) == RES_BAD_ARG); + CHK(s3d_primitive_get_transform(&prim, transform) == RES_OK); + CHK(f3_eq(transform + 0, f3(vec, 1.f, 0.f, 0.f)) == 1); + CHK(f3_eq(transform + 3, f3(vec, 0.f, 1.f, 0.f)) == 1); + CHK(f3_eq(transform + 6, f3(vec, 0.f, 0.f, 1.f)) == 1); + CHK(f3_eq(transform + 9, f3(vec, 0.f, 0.f, 0.f)) == 1); + + CHK(s3d_scene_clear(scn) == RES_OK); + CHK(s3d_scene_attach_shape(scn, plane) == RES_OK); + + CHK(s3d_scene_view_create(scn, S3D_GET_PRIMITIVE, &scnview) == RES_OK); + CHK(s3d_scene_view_primitives_count(scnview, &nprims) == RES_OK); + CHK(nprims == 2); + CHK(s3d_scene_view_get_primitive(scnview, 0, &prim) == RES_OK); + CHK(S3D_PRIMITIVE_EQ(&prim, &S3D_PRIMITIVE_NULL) == 0); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); + + CHK(s3d_primitive_has_attrib(&prim, S3D_ATTRIB_0, &b) == RES_OK); + CHK(b == 1); + CHK(s3d_primitive_has_attrib(&prim, S3D_ATTRIB_1, &b) == RES_OK); + CHK(b == 0); + + CHK(s3d_primitive_compute_area(NULL, NULL) == RES_BAD_ARG); + CHK(s3d_primitive_compute_area(&prim, NULL) == RES_BAD_ARG); + CHK(s3d_primitive_compute_area(NULL, &area) == RES_BAD_ARG); + CHK(s3d_primitive_compute_area(&prim, &area) == RES_OK); + CHK(eq_epsf(area, 0.5f, 1.e-6f) == 1); + + CHK(s3d_primitive_sample(NULL, 1.f, 1.f, NULL) == RES_BAD_ARG); + CHK(s3d_primitive_sample(&prim, 1.f, 1.f, NULL) == RES_BAD_ARG); + CHK(s3d_primitive_sample(NULL, 0.f, 1.f, NULL) == RES_BAD_ARG); + CHK(s3d_primitive_sample(&prim, 0.f, 1.f, NULL) == RES_BAD_ARG); + CHK(s3d_primitive_sample(NULL, 1.f, 0.f, NULL) == RES_BAD_ARG); + CHK(s3d_primitive_sample(&prim, 1.f, 0.f, NULL) == RES_BAD_ARG); + CHK(s3d_primitive_sample(NULL, 0.f, 0.f, NULL) == RES_BAD_ARG); + CHK(s3d_primitive_sample(&prim, 0.f, 0.f, NULL) == RES_BAD_ARG); + CHK(s3d_primitive_sample(NULL, 1.f, 1.f, uv) == RES_BAD_ARG); + CHK(s3d_primitive_sample(&prim, 1.f, 1.f, uv) == RES_BAD_ARG); + CHK(s3d_primitive_sample(NULL, 0.f, 1.f, uv) == RES_BAD_ARG); + CHK(s3d_primitive_sample(&prim, 0.f, 1.f, uv) == RES_BAD_ARG); + CHK(s3d_primitive_sample(NULL, 1.f, 0.f, uv) == RES_BAD_ARG); + CHK(s3d_primitive_sample(&prim, 1.f, 0.f, uv) == RES_BAD_ARG); + CHK(s3d_primitive_sample(NULL, 0.f, 0.f, uv) == RES_BAD_ARG); + CHK(s3d_primitive_sample(&prim, 0.f, 0.f, uv) == RES_OK); FOR_EACH(i, 0, 4096) { - CHECK(s3d_primitive_sample - (&prim, rand_canonic(), rand_canonic(), uv), RES_OK); - CHECK(uv[0] >= 0.f, 1); - CHECK(uv[0] <= 1.f, 1); - CHECK(uv[1] >= 0.f, 1); - CHECK(uv[1] <= 1.f, 1); + CHK(s3d_primitive_sample + (&prim, rand_canonic(), rand_canonic(), uv) == RES_OK); + CHK(uv[0] >= 0.f); + CHK(uv[0] <= 1.f); + CHK(uv[1] >= 0.f); + CHK(uv[1] <= 1.f); } #define GET_VERTEX_ATTR s3d_triangle_get_vertex_attrib - CHECK(GET_VERTEX_ATTR(NULL, 3, S3D_GEOMETRY_NORMAL, NULL), RES_BAD_ARG); - CHECK(GET_VERTEX_ATTR(&prim, 3, S3D_GEOMETRY_NORMAL, NULL), RES_BAD_ARG); - CHECK(GET_VERTEX_ATTR(NULL, 0, S3D_GEOMETRY_NORMAL, NULL), RES_BAD_ARG); - CHECK(GET_VERTEX_ATTR(&prim, 0, S3D_GEOMETRY_NORMAL, NULL), RES_BAD_ARG); - CHECK(GET_VERTEX_ATTR(NULL, 3, S3D_POSITION, NULL), RES_BAD_ARG); - CHECK(GET_VERTEX_ATTR(&prim, 3, S3D_POSITION, NULL), RES_BAD_ARG); - CHECK(GET_VERTEX_ATTR(NULL, 0, S3D_POSITION, NULL), RES_BAD_ARG); - CHECK(GET_VERTEX_ATTR(&prim, 0, S3D_POSITION, NULL), RES_BAD_ARG); - CHECK(GET_VERTEX_ATTR(NULL, 3, S3D_GEOMETRY_NORMAL, &attr), RES_BAD_ARG); - CHECK(GET_VERTEX_ATTR(&prim, 3, S3D_GEOMETRY_NORMAL, &attr), RES_BAD_ARG); - CHECK(GET_VERTEX_ATTR(NULL, 0, S3D_GEOMETRY_NORMAL, &attr), RES_BAD_ARG); - CHECK(GET_VERTEX_ATTR(&prim, 0, S3D_GEOMETRY_NORMAL, &attr), RES_BAD_ARG); - CHECK(GET_VERTEX_ATTR(NULL, 3, S3D_POSITION, &attr), RES_BAD_ARG); - CHECK(GET_VERTEX_ATTR(&prim, 3, S3D_POSITION, &attr), RES_BAD_ARG); - CHECK(GET_VERTEX_ATTR(NULL, 0, S3D_POSITION, &attr), RES_BAD_ARG); - - CHECK(GET_VERTEX_ATTR(&prim, 0, S3D_POSITION, &attr), RES_OK); - CHECK(attr.type, S3D_FLOAT3); - CHECK(f3_eq_eps(attr.value, plane_verts + plane_ids[0]*3, 1.e-6f), 1); - CHECK(GET_VERTEX_ATTR(&prim, 1, S3D_POSITION, &attr), RES_OK); - CHECK(attr.type, S3D_FLOAT3); - CHECK(f3_eq_eps(attr.value, plane_verts + plane_ids[1]*3, 1.e-6f), 1); - CHECK(GET_VERTEX_ATTR(&prim, 2, S3D_POSITION, &attr), RES_OK); - CHECK(attr.type, S3D_FLOAT3); - CHECK(f3_eq_eps(attr.value, plane_verts + plane_ids[2]*3, 1.e-6f), 1); - - CHECK(GET_VERTEX_ATTR(&prim, 0, S3D_ATTRIB_0, &attr), RES_OK); - CHECK(attr.type, S3D_FLOAT2); + CHK(GET_VERTEX_ATTR(NULL, 3, S3D_GEOMETRY_NORMAL, NULL) == RES_BAD_ARG); + CHK(GET_VERTEX_ATTR(&prim, 3, S3D_GEOMETRY_NORMAL, NULL) == RES_BAD_ARG); + CHK(GET_VERTEX_ATTR(NULL, 0, S3D_GEOMETRY_NORMAL, NULL) == RES_BAD_ARG); + CHK(GET_VERTEX_ATTR(&prim, 0, S3D_GEOMETRY_NORMAL, NULL) == RES_BAD_ARG); + CHK(GET_VERTEX_ATTR(NULL, 3, S3D_POSITION, NULL) == RES_BAD_ARG); + CHK(GET_VERTEX_ATTR(&prim, 3, S3D_POSITION, NULL) == RES_BAD_ARG); + CHK(GET_VERTEX_ATTR(NULL, 0, S3D_POSITION, NULL) == RES_BAD_ARG); + CHK(GET_VERTEX_ATTR(&prim, 0, S3D_POSITION, NULL) == RES_BAD_ARG); + CHK(GET_VERTEX_ATTR(NULL, 3, S3D_GEOMETRY_NORMAL, &attr) == RES_BAD_ARG); + CHK(GET_VERTEX_ATTR(&prim, 3, S3D_GEOMETRY_NORMAL, &attr) == RES_BAD_ARG); + CHK(GET_VERTEX_ATTR(NULL, 0, S3D_GEOMETRY_NORMAL, &attr) == RES_BAD_ARG); + CHK(GET_VERTEX_ATTR(&prim, 0, S3D_GEOMETRY_NORMAL, &attr) == RES_BAD_ARG); + CHK(GET_VERTEX_ATTR(NULL, 3, S3D_POSITION, &attr) == RES_BAD_ARG); + CHK(GET_VERTEX_ATTR(&prim, 3, S3D_POSITION, &attr) == RES_BAD_ARG); + CHK(GET_VERTEX_ATTR(NULL, 0, S3D_POSITION, &attr) == RES_BAD_ARG); + + CHK(GET_VERTEX_ATTR(&prim, 0, S3D_POSITION, &attr) == RES_OK); + CHK(attr.type == S3D_FLOAT3); + CHK(f3_eq_eps(attr.value, plane_verts + plane_ids[0]*3, 1.e-6f) == 1); + CHK(GET_VERTEX_ATTR(&prim, 1, S3D_POSITION, &attr) == RES_OK); + CHK(attr.type == S3D_FLOAT3); + CHK(f3_eq_eps(attr.value, plane_verts + plane_ids[1]*3, 1.e-6f) == 1); + CHK(GET_VERTEX_ATTR(&prim, 2, S3D_POSITION, &attr) == RES_OK); + CHK(attr.type == S3D_FLOAT3); + CHK(f3_eq_eps(attr.value, plane_verts + plane_ids[2]*3, 1.e-6f) == 1); + + CHK(GET_VERTEX_ATTR(&prim, 0, S3D_ATTRIB_0, &attr) == RES_OK); + CHK(attr.type == S3D_FLOAT2); f2_minus(uv, plane_verts + plane_ids[0]*3); - CHECK(f2_eq_eps(attr.value, uv, 1.e-6f), 1); - CHECK(GET_VERTEX_ATTR(&prim, 1, S3D_ATTRIB_0, &attr), RES_OK); - CHECK(attr.type, S3D_FLOAT2); + CHK(f2_eq_eps(attr.value, uv, 1.e-6f) == 1); + CHK(GET_VERTEX_ATTR(&prim, 1, S3D_ATTRIB_0, &attr) == RES_OK); + CHK(attr.type == S3D_FLOAT2); f2_minus(uv, plane_verts + plane_ids[1]*3); - CHECK(f2_eq_eps(attr.value, uv, 1.e-6f), 1); - CHECK(GET_VERTEX_ATTR(&prim, 2, S3D_ATTRIB_0, &attr), RES_OK); - CHECK(attr.type, S3D_FLOAT2); + CHK(f2_eq_eps(attr.value, uv, 1.e-6f) == 1); + CHK(GET_VERTEX_ATTR(&prim, 2, S3D_ATTRIB_0, &attr) == RES_OK); + CHK(attr.type == S3D_FLOAT2); f2_minus(uv, plane_verts + plane_ids[2]*3); - CHECK(f2_eq_eps(attr.value, uv, 1.e-6f), 1); + CHK(f2_eq_eps(attr.value, uv, 1.e-6f) == 1); #undef GET_VERTEX_ATTR - CHECK(s3d_device_ref_put(dev), RES_OK); - CHECK(s3d_scene_ref_put(scn), RES_OK); - CHECK(s3d_shape_ref_put(walls), RES_OK); - CHECK(s3d_shape_ref_put(plane), RES_OK); + CHK(s3d_device_ref_put(dev) == RES_OK); + CHK(s3d_scene_ref_put(scn) == RES_OK); + CHK(s3d_shape_ref_put(walls) == RES_OK); + CHK(s3d_shape_ref_put(plane) == RES_OK); check_memory_allocator(&allocator); mem_shutdown_proxy_allocator(&allocator); - CHECK(mem_allocated_size(), 0); + CHK(mem_allocated_size() == 0); return 0; } diff --git a/src/test_s3d_sampler.c b/src/test_s3d_sampler.c @@ -74,38 +74,38 @@ main(int argc, char** argv) mem_init_proxy_allocator(&allocator, &mem_default_allocator); - CHECK(s3d_device_create(NULL, &allocator, 1, &dev), RES_OK); - CHECK(s3d_scene_create(dev, &scn), RES_OK); - CHECK(s3d_scene_create(dev, &scn2), RES_OK); - CHECK(s3d_scene_instantiate(scn, &cbox), RES_OK); - CHECK(s3d_scene_attach_shape(scn2, cbox), RES_OK); - CHECK(s3d_shape_create_mesh(dev, &walls), RES_OK); - CHECK(s3d_shape_create_mesh(dev, &short_block), RES_OK); - CHECK(s3d_shape_create_mesh(dev, &tall_block), RES_OK); - - CHECK(s3d_shape_get_id(cbox, &cbox_id), RES_OK); - CHECK(s3d_shape_get_id(walls, &walls_id), RES_OK); - CHECK(s3d_shape_get_id(short_block, &short_block_id), RES_OK); - CHECK(s3d_shape_get_id(tall_block, &tall_block_id), RES_OK); - - CHECK(s3d_scene_view_create(scn, S3D_SAMPLE, &scnview), RES_OK); - CHECK(s3d_scene_view_sample(NULL, 0, 0, 0, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_sample(scnview, 0, 0, 0, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_sample(NULL, 0, 0, 0, &prim, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_sample(scnview, 0, 0, 0, &prim, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_sample(NULL, 0, 0, 0, NULL, uv), RES_BAD_ARG); - CHECK(s3d_scene_view_sample(scnview, 0, 0, 0, NULL, uv), RES_BAD_ARG); - CHECK(s3d_scene_view_sample(NULL, 0, 0, 0, &prim, uv), RES_BAD_ARG); - CHECK(s3d_scene_view_sample(scnview, 0, 0, 0, &prim, uv), RES_OK); - CHECK(s3d_scene_view_sample(scnview, -1, 0, 0, &prim, uv), RES_BAD_ARG); - CHECK(s3d_scene_view_sample(scnview, 0, -1, 0, &prim, uv), RES_BAD_ARG); - CHECK(s3d_scene_view_sample(scnview, 0, 0, -1, &prim, uv), RES_BAD_ARG); - CHECK(s3d_scene_view_sample(scnview, 1, 0, 0, &prim, uv), RES_BAD_ARG); - CHECK(s3d_scene_view_sample(scnview, 0, 1, 0, &prim, uv), RES_BAD_ARG); - CHECK(s3d_scene_view_sample(scnview, 0, 0, 1, &prim, uv), RES_BAD_ARG); - CHECK(s3d_scene_view_sample(scnview, 0.5f, 0.5f, 0.5f, &prim, uv), RES_OK); - CHECK(S3D_PRIMITIVE_EQ(&prim, &S3D_PRIMITIVE_NULL), 1); - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); + CHK(s3d_device_create(NULL, &allocator, 1, &dev) == RES_OK); + CHK(s3d_scene_create(dev, &scn) == RES_OK); + CHK(s3d_scene_create(dev, &scn2) == RES_OK); + CHK(s3d_scene_instantiate(scn, &cbox) == RES_OK); + CHK(s3d_scene_attach_shape(scn2, cbox) == RES_OK); + CHK(s3d_shape_create_mesh(dev, &walls) == RES_OK); + CHK(s3d_shape_create_mesh(dev, &short_block) == RES_OK); + CHK(s3d_shape_create_mesh(dev, &tall_block) == RES_OK); + + CHK(s3d_shape_get_id(cbox, &cbox_id) == RES_OK); + CHK(s3d_shape_get_id(walls, &walls_id) == RES_OK); + CHK(s3d_shape_get_id(short_block, &short_block_id) == RES_OK); + CHK(s3d_shape_get_id(tall_block, &tall_block_id) == RES_OK); + + CHK(s3d_scene_view_create(scn, S3D_SAMPLE, &scnview) == RES_OK); + CHK(s3d_scene_view_sample(NULL, 0, 0, 0, NULL, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_sample(scnview, 0, 0, 0, NULL, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_sample(NULL, 0, 0, 0, &prim, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_sample(scnview, 0, 0, 0, &prim, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_sample(NULL, 0, 0, 0, NULL, uv) == RES_BAD_ARG); + CHK(s3d_scene_view_sample(scnview, 0, 0, 0, NULL, uv) == RES_BAD_ARG); + CHK(s3d_scene_view_sample(NULL, 0, 0, 0, &prim, uv) == RES_BAD_ARG); + CHK(s3d_scene_view_sample(scnview, 0, 0, 0, &prim, uv) == RES_OK); + CHK(s3d_scene_view_sample(scnview, -1, 0, 0, &prim, uv) == RES_BAD_ARG); + CHK(s3d_scene_view_sample(scnview, 0, -1, 0, &prim, uv) == RES_BAD_ARG); + CHK(s3d_scene_view_sample(scnview, 0, 0, -1, &prim, uv) == RES_BAD_ARG); + CHK(s3d_scene_view_sample(scnview, 1, 0, 0, &prim, uv) == RES_BAD_ARG); + CHK(s3d_scene_view_sample(scnview, 0, 1, 0, &prim, uv) == RES_BAD_ARG); + CHK(s3d_scene_view_sample(scnview, 0, 0, 1, &prim, uv) == RES_BAD_ARG); + CHK(s3d_scene_view_sample(scnview, 0.5f, 0.5f, 0.5f, &prim, uv) == RES_OK); + CHK(S3D_PRIMITIVE_EQ(&prim, &S3D_PRIMITIVE_NULL) == 1); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); attribs.usage = S3D_POSITION; attribs.type = S3D_FLOAT3; @@ -115,110 +115,110 @@ main(int argc, char** argv) nverts = sizeof(cbox_walls)/sizeof(float[3]); desc.vertices = cbox_walls; desc.indices = cbox_walls_ids; - CHECK(s3d_mesh_setup_indexed_vertices - (walls, ntris, cbox_get_ids, nverts, &attribs, 1, &desc), RES_OK); + CHK(s3d_mesh_setup_indexed_vertices + (walls, ntris, cbox_get_ids, nverts, &attribs, 1, &desc) == RES_OK); - CHECK(s3d_scene_attach_shape(scn, walls), RES_OK); + CHK(s3d_scene_attach_shape(scn, walls) == RES_OK); - CHECK(s3d_scene_view_create(scn, S3D_SAMPLE, &scnview), RES_OK); + CHK(s3d_scene_view_create(scn, S3D_SAMPLE, &scnview) == RES_OK); - CHECK(s3d_scene_view_sample(scnview, 0.5f, 0.5f, 0.5f, &prim, uv), RES_OK); - CHECK(s3d_primitive_get_attrib(&prim, S3D_POSITION, uv, &attr0), RES_OK); - CHECK(s3d_scene_view_sample(scnview, 0.5f, 0.5f, 0.5f, &prim, uv), RES_OK); - CHECK(s3d_primitive_get_attrib(&prim, S3D_POSITION, uv, &attr1), RES_OK); + CHK(s3d_scene_view_sample(scnview, 0.5f, 0.5f, 0.5f, &prim, uv) == RES_OK); + CHK(s3d_primitive_get_attrib(&prim, S3D_POSITION, uv, &attr0) == RES_OK); + CHK(s3d_scene_view_sample(scnview, 0.5f, 0.5f, 0.5f, &prim, uv) == RES_OK); + CHK(s3d_primitive_get_attrib(&prim, S3D_POSITION, uv, &attr1) == RES_OK); prim1 = prim; - CHECK(S3D_PRIMITIVE_EQ(&prim, &prim1), 1); + CHK(S3D_PRIMITIVE_EQ(&prim, &prim1) == 1); prim1.inst_id = prim.inst_id + 1; - CHECK(S3D_PRIMITIVE_EQ(&prim, &prim1), 0); + CHK(S3D_PRIMITIVE_EQ(&prim, &prim1) == 0); prim1.inst_id = prim.inst_id; - CHECK(S3D_PRIMITIVE_EQ(&prim, &prim1), 1); + CHK(S3D_PRIMITIVE_EQ(&prim, &prim1) == 1); prim1.prim_id = S3D_INVALID_ID; - CHECK(S3D_PRIMITIVE_EQ(&prim, &prim1), 0); + CHK(S3D_PRIMITIVE_EQ(&prim, &prim1) == 0); prim1.prim_id = prim.prim_id; prim1.geom_id = S3D_INVALID_ID; - CHECK(S3D_PRIMITIVE_EQ(&prim, &prim1), 0); + CHK(S3D_PRIMITIVE_EQ(&prim, &prim1) == 0); - CHECK(attr0.type, S3D_FLOAT3); - CHECK(attr1.type, S3D_FLOAT3); - CHECK(f3_eq_eps(attr0.value, attr1.value, 1.e-6f), 1); + CHK(attr0.type == S3D_FLOAT3); + CHK(attr1.type == S3D_FLOAT3); + CHK(f3_eq_eps(attr0.value, attr1.value, 1.e-6f) == 1); - CHECK(s3d_scene_view_sample(scnview, 0.3f, 0.1f, 0.2f, &prim, uv), RES_OK); - CHECK(s3d_primitive_get_attrib(&prim, S3D_POSITION, uv, &attr1), RES_OK); - NCHECK(f3_eq_eps(attr0.value, attr1.value, 1.e-6f), 1); + CHK(s3d_scene_view_sample(scnview, 0.3f, 0.1f, 0.2f, &prim, uv) == RES_OK); + CHK(s3d_primitive_get_attrib(&prim, S3D_POSITION, uv, &attr1) == RES_OK); + CHK(f3_eq_eps(attr0.value, attr1.value, 1.e-6f) != 1); - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); - CHECK(s3d_shape_enable(walls, 0), RES_OK); - CHECK(s3d_scene_view_create(scn, S3D_SAMPLE, &scnview), RES_OK); - CHECK(s3d_scene_view_sample(scnview, 0.5f, 0.5f, 0.5f, &prim, uv), RES_OK); - CHECK(S3D_PRIMITIVE_EQ(&prim, &S3D_PRIMITIVE_NULL), 1); - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); - CHECK(s3d_shape_enable(walls, 1), RES_OK); + CHK(s3d_shape_enable(walls, 0) == RES_OK); + CHK(s3d_scene_view_create(scn, S3D_SAMPLE, &scnview) == RES_OK); + CHK(s3d_scene_view_sample(scnview, 0.5f, 0.5f, 0.5f, &prim, uv) == RES_OK); + CHK(S3D_PRIMITIVE_EQ(&prim, &S3D_PRIMITIVE_NULL) == 1); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); + CHK(s3d_shape_enable(walls, 1) == RES_OK); ntris = sizeof(cbox_block_ids)/sizeof(unsigned[3]); nverts = sizeof(cbox_short_block)/sizeof(float[3]); desc.vertices = cbox_short_block; desc.indices = cbox_block_ids; - CHECK(s3d_mesh_setup_indexed_vertices - (short_block, ntris, cbox_get_ids, nverts, &attribs, 1, &desc), RES_OK); + CHK(s3d_mesh_setup_indexed_vertices + (short_block, ntris, cbox_get_ids, nverts, &attribs, 1, &desc) == RES_OK); - CHECK(s3d_scene_attach_shape(scn, short_block), RES_OK); - CHECK(s3d_scene_attach_shape(scn, tall_block), RES_OK); + CHK(s3d_scene_attach_shape(scn, short_block) == RES_OK); + CHK(s3d_scene_attach_shape(scn, tall_block) == RES_OK); - CHECK(s3d_scene_view_create(scn, S3D_SAMPLE, &scnview), RES_OK); - CHECK(s3d_scene_view_sample(scnview, 0.5f, 0.5f, 0.5f, &prim, uv), RES_OK); - CHECK(s3d_primitive_get_attrib(&prim, S3D_POSITION, uv, &attr0), RES_OK); + CHK(s3d_scene_view_create(scn, S3D_SAMPLE, &scnview) == RES_OK); + CHK(s3d_scene_view_sample(scnview, 0.5f, 0.5f, 0.5f, &prim, uv) == RES_OK); + CHK(s3d_primitive_get_attrib(&prim, S3D_POSITION, uv, &attr0) == RES_OK); desc.vertices = cbox_tall_block; - CHECK(s3d_mesh_setup_indexed_vertices - (tall_block, ntris, cbox_get_ids, nverts, &attribs, 1, &desc), RES_OK); - CHECK(s3d_scene_view_sample(scnview, 0.5f, 0.5f, 0.5f, &prim, uv), RES_OK); - CHECK(s3d_primitive_get_attrib(&prim, S3D_POSITION, uv, &attr1), RES_OK); - CHECK(f3_eq_eps(attr0.value, attr1.value, 1.e-6f), 1); - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); - - CHECK(s3d_scene_view_create(scn, S3D_SAMPLE, &scnview), RES_OK); - CHECK(s3d_scene_view_sample(scnview, 0.5f, 0.5f, 0.5f, &prim, uv), RES_OK); - CHECK(s3d_primitive_get_attrib(&prim, S3D_POSITION, uv, &attr1), RES_OK); - NCHECK(f3_eq_eps(attr0.value, attr1.value, 1.e-6f), 1); - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); - - CHECK(s3d_shape_enable(cbox, 0), RES_OK); - CHECK(s3d_scene_view_create(scn2, S3D_SAMPLE|S3D_TRACE, &scnview), RES_OK); - CHECK(s3d_scene_view_sample(scnview, 0.5f, 0.5f, 0.5f, &prim, uv), RES_OK); - CHECK(S3D_PRIMITIVE_EQ(&prim, &S3D_PRIMITIVE_NULL), 1); - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); - CHECK(s3d_shape_enable(cbox, 1), RES_OK); - CHECK(s3d_scene_view_create(scn2, S3D_SAMPLE|S3D_TRACE, &scnview), RES_OK); + CHK(s3d_mesh_setup_indexed_vertices + (tall_block, ntris, cbox_get_ids, nverts, &attribs, 1, &desc) == RES_OK); + CHK(s3d_scene_view_sample(scnview, 0.5f, 0.5f, 0.5f, &prim, uv) == RES_OK); + CHK(s3d_primitive_get_attrib(&prim, S3D_POSITION, uv, &attr1) == RES_OK); + CHK(f3_eq_eps(attr0.value, attr1.value, 1.e-6f) == 1); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); + + CHK(s3d_scene_view_create(scn, S3D_SAMPLE, &scnview) == RES_OK); + CHK(s3d_scene_view_sample(scnview, 0.5f, 0.5f, 0.5f, &prim, uv) == RES_OK); + CHK(s3d_primitive_get_attrib(&prim, S3D_POSITION, uv, &attr1) == RES_OK); + CHK(f3_eq_eps(attr0.value, attr1.value, 1.e-6f) != 1); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); + + CHK(s3d_shape_enable(cbox, 0) == RES_OK); + CHK(s3d_scene_view_create(scn2, S3D_SAMPLE|S3D_TRACE, &scnview) == RES_OK); + CHK(s3d_scene_view_sample(scnview, 0.5f, 0.5f, 0.5f, &prim, uv) == RES_OK); + CHK(S3D_PRIMITIVE_EQ(&prim, &S3D_PRIMITIVE_NULL) == 1); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); + CHK(s3d_shape_enable(cbox, 1) == RES_OK); + CHK(s3d_scene_view_create(scn2, S3D_SAMPLE|S3D_TRACE, &scnview) == RES_OK); FOR_EACH(i, 0, NSAMPS) { const float u = rand_canonic(); const float v = rand_canonic(); const float w = rand_canonic(); - CHECK(s3d_scene_view_sample(scnview, u, v, w, &prim, uv), RES_OK); - CHECK(s3d_primitive_get_attrib(&prim, S3D_POSITION, uv, &attr0), RES_OK); - - CHECK(prim.inst_id, cbox_id); - CHECK(prim.geom_id == walls_id - || prim.geom_id == tall_block_id - || prim.geom_id == short_block_id, 1); - CHECK(prim.prim_id < 10, 1); - CHECK(prim.scene_prim_id >= prim.prim_id, 1); - CHECK(prim.scene_prim_id < 30, 1); + CHK(s3d_scene_view_sample(scnview, u, v, w, &prim, uv) == RES_OK); + CHK(s3d_primitive_get_attrib(&prim, S3D_POSITION, uv, &attr0) == RES_OK); + + CHK(prim.inst_id == cbox_id); + CHK(prim.geom_id == walls_id + || prim.geom_id == tall_block_id + || prim.geom_id == short_block_id); + CHK(prim.prim_id < 10); + CHK(prim.scene_prim_id >= prim.prim_id); + CHK(prim.scene_prim_id < 30); printf("%f %f %f\n", SPLIT3(attr0.value)); } - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); - CHECK(s3d_device_ref_put(dev), RES_OK); - CHECK(s3d_scene_ref_put(scn), RES_OK); - CHECK(s3d_scene_ref_put(scn2), RES_OK); - CHECK(s3d_shape_ref_put(cbox), RES_OK); - CHECK(s3d_shape_ref_put(walls), RES_OK); - CHECK(s3d_shape_ref_put(short_block), RES_OK); - CHECK(s3d_shape_ref_put(tall_block), RES_OK); + CHK(s3d_device_ref_put(dev) == RES_OK); + CHK(s3d_scene_ref_put(scn) == RES_OK); + CHK(s3d_scene_ref_put(scn2) == RES_OK); + CHK(s3d_shape_ref_put(cbox) == RES_OK); + CHK(s3d_shape_ref_put(walls) == RES_OK); + CHK(s3d_shape_ref_put(short_block) == RES_OK); + CHK(s3d_shape_ref_put(tall_block) == RES_OK); check_memory_allocator(&allocator); mem_shutdown_proxy_allocator(&allocator); - CHECK(mem_allocated_size(), 0); + CHK(mem_allocated_size() == 0); return 0; } diff --git a/src/test_s3d_scene.c b/src/test_s3d_scene.c @@ -63,9 +63,9 @@ static void cube_get_ids(const unsigned itri, unsigned ids[3], void* data) { const unsigned id = itri * 3; - CHECK(data, NULL); - NCHECK(ids, NULL); - CHECK(itri < cube_ntris, 1); + CHK(data == NULL); + CHK(ids != NULL); + CHK(itri < cube_ntris); ids[0] = cube_ids[id + 0]; ids[1] = cube_ids[id + 1]; ids[2] = cube_ids[id + 2]; @@ -75,9 +75,9 @@ static void cube_get_pos(const unsigned ivert, float pos[3], void* data) { const unsigned i = ivert*3; - CHECK(data, NULL); - NCHECK(pos, NULL); - CHECK(ivert < cube_nverts, 1); + CHK(data == NULL); + CHK(pos != NULL); + CHK(ivert < cube_nverts); pos[0] = cube_verts[i + 0]; pos[1] = cube_verts[i + 1]; pos[2] = cube_verts[i + 2]; @@ -108,255 +108,255 @@ main(int argc, char** argv) mem_init_proxy_allocator(&allocator, &mem_default_allocator); - CHECK(s3d_device_create(NULL, &allocator, 1, &dev), RES_OK); + CHK(s3d_device_create(NULL, &allocator, 1, &dev) == RES_OK); FOR_EACH(i, 0, nshapes) - CHECK(s3d_shape_create_mesh(dev, shapes + i), RES_OK); - - CHECK(s3d_scene_create(NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_create(dev, NULL), RES_BAD_ARG); - CHECK(s3d_scene_create(NULL, &scn), RES_BAD_ARG); - CHECK(s3d_scene_create(dev, &scn), RES_OK); - CHECK(s3d_scene_create(dev, &scn2), RES_OK); - CHECK(s3d_scene_create(dev, &scn3), RES_OK); - - CHECK(s3d_scene_get_shapes_count(NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_get_shapes_count(scn, NULL), RES_BAD_ARG); - CHECK(s3d_scene_get_shapes_count(NULL, &n), RES_BAD_ARG); - CHECK(s3d_scene_get_shapes_count(scn, &n), RES_OK); - CHECK(n, 0); - - CHECK(s3d_scene_attach_shape(NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_attach_shape(scn, NULL), RES_BAD_ARG); - CHECK(s3d_scene_attach_shape(NULL, shapes[0]), RES_BAD_ARG); - CHECK(s3d_scene_attach_shape(scn, shapes[0]), RES_OK); - CHECK(s3d_scene_get_shapes_count(scn, &n), RES_OK); - CHECK(n, 1); - CHECK(s3d_scene_attach_shape(scn, shapes[0]), RES_OK); - CHECK(s3d_scene_get_shapes_count(scn, &n), RES_OK); - CHECK(n, 1); - - CHECK(s3d_scene_detach_shape(NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_detach_shape(scn, NULL), RES_BAD_ARG); - CHECK(s3d_scene_detach_shape(NULL, shapes[0]), RES_BAD_ARG); - CHECK(s3d_scene_detach_shape(scn, shapes[0]), RES_OK); - CHECK(s3d_scene_detach_shape(scn, shapes[0]), RES_BAD_ARG); - CHECK(s3d_scene_get_shapes_count(scn, &n), RES_OK); - CHECK(n, 0); + CHK(s3d_shape_create_mesh(dev, shapes + i) == RES_OK); + + CHK(s3d_scene_create(NULL, NULL) == RES_BAD_ARG); + CHK(s3d_scene_create(dev, NULL) == RES_BAD_ARG); + CHK(s3d_scene_create(NULL, &scn) == RES_BAD_ARG); + CHK(s3d_scene_create(dev, &scn) == RES_OK); + CHK(s3d_scene_create(dev, &scn2) == RES_OK); + CHK(s3d_scene_create(dev, &scn3) == RES_OK); + + CHK(s3d_scene_get_shapes_count(NULL, NULL) == RES_BAD_ARG); + CHK(s3d_scene_get_shapes_count(scn, NULL) == RES_BAD_ARG); + CHK(s3d_scene_get_shapes_count(NULL, &n) == RES_BAD_ARG); + CHK(s3d_scene_get_shapes_count(scn, &n) == RES_OK); + CHK(n == 0); + + CHK(s3d_scene_attach_shape(NULL, NULL) == RES_BAD_ARG); + CHK(s3d_scene_attach_shape(scn, NULL) == RES_BAD_ARG); + CHK(s3d_scene_attach_shape(NULL, shapes[0]) == RES_BAD_ARG); + CHK(s3d_scene_attach_shape(scn, shapes[0]) == RES_OK); + CHK(s3d_scene_get_shapes_count(scn, &n) == RES_OK); + CHK(n == 1); + CHK(s3d_scene_attach_shape(scn, shapes[0]) == RES_OK); + CHK(s3d_scene_get_shapes_count(scn, &n) == RES_OK); + CHK(n == 1); + + CHK(s3d_scene_detach_shape(NULL, NULL) == RES_BAD_ARG); + CHK(s3d_scene_detach_shape(scn, NULL) == RES_BAD_ARG); + CHK(s3d_scene_detach_shape(NULL, shapes[0]) == RES_BAD_ARG); + CHK(s3d_scene_detach_shape(scn, shapes[0]) == RES_OK); + CHK(s3d_scene_detach_shape(scn, shapes[0]) == RES_BAD_ARG); + CHK(s3d_scene_get_shapes_count(scn, &n) == RES_OK); + CHK(n == 0); FOR_EACH(i, 1, nshapes) { - CHECK(s3d_scene_attach_shape(scn, shapes[i]), RES_OK); - CHECK(s3d_shape_ref_put(shapes[i]), RES_OK); + CHK(s3d_scene_attach_shape(scn, shapes[i]) == RES_OK); + CHK(s3d_shape_ref_put(shapes[i]) == RES_OK); } - CHECK(s3d_scene_get_shapes_count(scn, &n), RES_OK); - CHECK(n, nshapes - 1); - - CHECK(s3d_scene_instantiate(NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_instantiate(scn, NULL), RES_BAD_ARG); - CHECK(s3d_scene_instantiate(NULL, shapes + 1), RES_BAD_ARG); - CHECK(s3d_scene_instantiate(scn, shapes + 1), RES_OK); - - CHECK(s3d_shape_get_id(NULL, NULL), RES_BAD_ARG); - CHECK(s3d_shape_get_id(shapes[1], NULL), RES_BAD_ARG); - CHECK(s3d_shape_get_id(NULL, &id), RES_BAD_ARG); - CHECK(s3d_shape_get_id(shapes[1], &id), RES_OK); - NCHECK(id, S3D_INVALID_ID); - - CHECK(s3d_scene_clear(NULL), RES_BAD_ARG); - CHECK(s3d_scene_clear(scn), RES_OK); - CHECK(s3d_scene_get_shapes_count(scn, &n), RES_OK); - CHECK(n, 0); - CHECK(s3d_scene_clear(scn), RES_OK); - CHECK(s3d_scene_instantiate(scn, shapes + 2), RES_OK); - CHECK(s3d_scene_attach_shape(scn, shapes[2]), RES_BAD_ARG); - - CHECK(s3d_scene_attach_shape(scn, shapes[0]), RES_OK); - CHECK(s3d_scene_get_shapes_count(scn, &n), RES_OK); - CHECK(n, 1); - - CHECK(s3d_scene_view_create(scn, S3D_TRACE, &scnview), RES_OK); - CHECK(s3d_scene_view_get_mask(scnview, &mask), RES_OK); - CHECK(mask, S3D_TRACE); - - CHECK(s3d_scene_detach_shape(scn, shapes[0]), RES_OK); - CHECK(s3d_scene_clear(scn), RES_OK); - - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); - - CHECK(s3d_scene_view_create(scn, S3D_TRACE, &scnview), 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_view_ref_put(scnview), 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_get_shapes_count(scn, &n), RES_OK); - CHECK(n, 1); - CHECK(s3d_scene_get_shapes_count(scn2, &n), RES_OK); - CHECK(n, 2); - CHECK(s3d_scene_get_shapes_count(scn3, &n), RES_OK); - CHECK(n, 1); - - CHECK(s3d_scene_view_create(scn2, S3D_SAMPLE|S3D_TRACE, &scnview2), RES_OK); - CHECK(s3d_scene_view_create(scn, S3D_SAMPLE, &scnview), RES_OK); - CHECK(s3d_scene_view_create(scn3, S3D_SAMPLE, &scnview3), RES_OK); - CHECK(s3d_scene_view_ref_put(scnview3), RES_OK); - - CHECK(s3d_scene_view_compute_area(NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_compute_area(scnview2, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_compute_area(NULL, &area), RES_BAD_ARG); - CHECK(s3d_scene_view_compute_area(scnview2, &area), RES_OK); - CHECK(area, 0.f); - - CHECK(s3d_scene_view_compute_volume(NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_compute_volume(scnview2, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_compute_volume(NULL, &volume), RES_BAD_ARG); - CHECK(s3d_scene_view_compute_volume(scnview2, &volume), RES_OK); - CHECK(volume, 0.f); - - CHECK(s3d_scene_view_primitives_count(NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_primitives_count(scnview2, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_primitives_count(NULL, &nprims), RES_BAD_ARG); - CHECK(s3d_scene_view_primitives_count(scnview2, &nprims), RES_OK); - CHECK(nprims, 0); - - CHECK(s3d_scene_view_get_aabb(NULL, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_get_aabb(scnview2, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_get_aabb(NULL, lower, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_get_aabb(scnview2, lower, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_get_aabb(NULL, NULL, upper), RES_BAD_ARG); - CHECK(s3d_scene_view_get_aabb(scnview2, NULL, upper), RES_BAD_ARG); - CHECK(s3d_scene_view_get_aabb(NULL, lower, upper), RES_BAD_ARG); - CHECK(s3d_scene_view_get_aabb(scnview2, 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_view_ref_put(scnview), RES_OK); - CHECK(s3d_scene_view_ref_put(scnview2), RES_OK); - - CHECK(s3d_scene_instantiate(scn2, shapes + 3), RES_OK); - CHECK(s3d_scene_attach_shape(scn3, shapes[3]), RES_OK); - CHECK(s3d_scene_get_shapes_count(scn3, &n), RES_OK); - CHECK(n, 2); - CHECK(s3d_scene_view_create(scn3, S3D_SAMPLE|S3D_TRACE, &scnview3), RES_BAD_ARG); - - CHECK(s3d_scene_detach_shape(scn, shapes[0]), RES_OK); - - CHECK(s3d_shape_ref_put(shapes[0]), RES_OK); - CHECK(s3d_shape_ref_put(shapes[1]), RES_OK); - CHECK(s3d_shape_ref_put(shapes[2]), RES_OK); - CHECK(s3d_shape_ref_put(shapes[3]), RES_OK); - - CHECK(s3d_scene_ref_get(NULL), RES_BAD_ARG); - CHECK(s3d_scene_ref_get(scn), RES_OK); - CHECK(s3d_scene_ref_put(NULL), RES_BAD_ARG); - CHECK(s3d_scene_ref_put(scn), RES_OK); - CHECK(s3d_scene_ref_put(scn), RES_OK); - CHECK(s3d_scene_ref_put(scn2), RES_OK); - CHECK(s3d_scene_ref_put(scn3), RES_OK); - - CHECK(s3d_scene_create(dev, &scn), RES_OK); - CHECK(s3d_scene_create(dev, &scn2), RES_OK); + CHK(s3d_scene_get_shapes_count(scn, &n) == RES_OK); + CHK(n == nshapes - 1); + + CHK(s3d_scene_instantiate(NULL, NULL) == RES_BAD_ARG); + CHK(s3d_scene_instantiate(scn, NULL) == RES_BAD_ARG); + CHK(s3d_scene_instantiate(NULL, shapes + 1) == RES_BAD_ARG); + CHK(s3d_scene_instantiate(scn, shapes + 1) == RES_OK); + + CHK(s3d_shape_get_id(NULL, NULL) == RES_BAD_ARG); + CHK(s3d_shape_get_id(shapes[1], NULL) == RES_BAD_ARG); + CHK(s3d_shape_get_id(NULL, &id) == RES_BAD_ARG); + CHK(s3d_shape_get_id(shapes[1], &id) == RES_OK); + CHK(id != S3D_INVALID_ID); + + CHK(s3d_scene_clear(NULL) == RES_BAD_ARG); + CHK(s3d_scene_clear(scn) == RES_OK); + CHK(s3d_scene_get_shapes_count(scn, &n) == RES_OK); + CHK(n == 0); + CHK(s3d_scene_clear(scn) == RES_OK); + CHK(s3d_scene_instantiate(scn, shapes + 2) == RES_OK); + CHK(s3d_scene_attach_shape(scn, shapes[2]) == RES_BAD_ARG); + + CHK(s3d_scene_attach_shape(scn, shapes[0]) == RES_OK); + CHK(s3d_scene_get_shapes_count(scn, &n) == RES_OK); + CHK(n == 1); + + CHK(s3d_scene_view_create(scn, S3D_TRACE, &scnview) == RES_OK); + CHK(s3d_scene_view_get_mask(scnview, &mask) == RES_OK); + CHK(mask == S3D_TRACE); + + CHK(s3d_scene_detach_shape(scn, shapes[0]) == RES_OK); + CHK(s3d_scene_clear(scn) == RES_OK); + + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); + + CHK(s3d_scene_view_create(scn, S3D_TRACE, &scnview) == RES_OK); + CHK(s3d_scene_attach_shape(scn, shapes[0]) == RES_OK); + CHK(s3d_scene_detach_shape(scn, shapes[0]) == RES_OK); + CHK(s3d_scene_attach_shape(scn, shapes[0]) == RES_OK); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); + + CHK(s3d_scene_attach_shape(scn2, shapes[1]) == RES_OK); + CHK(s3d_scene_attach_shape(scn2, shapes[2]) == RES_OK); + CHK(s3d_scene_attach_shape(scn3, shapes[1]) == RES_OK); + + CHK(s3d_scene_get_shapes_count(scn, &n) == RES_OK); + CHK(n == 1); + CHK(s3d_scene_get_shapes_count(scn2, &n) == RES_OK); + CHK(n == 2); + CHK(s3d_scene_get_shapes_count(scn3, &n) == RES_OK); + CHK(n == 1); + + CHK(s3d_scene_view_create(scn2, S3D_SAMPLE|S3D_TRACE, &scnview2) == RES_OK); + CHK(s3d_scene_view_create(scn, S3D_SAMPLE, &scnview) == RES_OK); + CHK(s3d_scene_view_create(scn3, S3D_SAMPLE, &scnview3) == RES_OK); + CHK(s3d_scene_view_ref_put(scnview3) == RES_OK); + + CHK(s3d_scene_view_compute_area(NULL, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_compute_area(scnview2, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_compute_area(NULL, &area) == RES_BAD_ARG); + CHK(s3d_scene_view_compute_area(scnview2, &area) == RES_OK); + CHK(area == 0.f); + + CHK(s3d_scene_view_compute_volume(NULL, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_compute_volume(scnview2, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_compute_volume(NULL, &volume) == RES_BAD_ARG); + CHK(s3d_scene_view_compute_volume(scnview2, &volume) == RES_OK); + CHK(volume == 0.f); + + CHK(s3d_scene_view_primitives_count(NULL, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_primitives_count(scnview2, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_primitives_count(NULL, &nprims) == RES_BAD_ARG); + CHK(s3d_scene_view_primitives_count(scnview2, &nprims) == RES_OK); + CHK(nprims == 0); + + CHK(s3d_scene_view_get_aabb(NULL, NULL, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_get_aabb(scnview2, NULL, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_get_aabb(NULL, lower, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_get_aabb(scnview2, lower, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_get_aabb(NULL, NULL, upper) == RES_BAD_ARG); + CHK(s3d_scene_view_get_aabb(scnview2, NULL, upper) == RES_BAD_ARG); + CHK(s3d_scene_view_get_aabb(NULL, lower, upper) == RES_BAD_ARG); + CHK(s3d_scene_view_get_aabb(scnview2, lower, upper) == RES_OK); + CHK(lower[0] > upper[0]); + CHK(lower[1] > upper[1]); + CHK(lower[2] > upper[2]); + + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); + CHK(s3d_scene_view_ref_put(scnview2) == RES_OK); + + CHK(s3d_scene_instantiate(scn2, shapes + 3) == RES_OK); + CHK(s3d_scene_attach_shape(scn3, shapes[3]) == RES_OK); + CHK(s3d_scene_get_shapes_count(scn3, &n) == RES_OK); + CHK(n == 2); + CHK(s3d_scene_view_create(scn3, S3D_SAMPLE|S3D_TRACE, &scnview3) == RES_BAD_ARG); + + CHK(s3d_scene_detach_shape(scn, shapes[0]) == RES_OK); + + CHK(s3d_shape_ref_put(shapes[0]) == RES_OK); + CHK(s3d_shape_ref_put(shapes[1]) == RES_OK); + CHK(s3d_shape_ref_put(shapes[2]) == RES_OK); + CHK(s3d_shape_ref_put(shapes[3]) == RES_OK); + + CHK(s3d_scene_ref_get(NULL) == RES_BAD_ARG); + CHK(s3d_scene_ref_get(scn) == RES_OK); + CHK(s3d_scene_ref_put(NULL) == RES_BAD_ARG); + CHK(s3d_scene_ref_put(scn) == RES_OK); + CHK(s3d_scene_ref_put(scn) == RES_OK); + CHK(s3d_scene_ref_put(scn2) == RES_OK); + CHK(s3d_scene_ref_put(scn3) == RES_OK); + + CHK(s3d_scene_create(dev, &scn) == RES_OK); + CHK(s3d_scene_create(dev, &scn2) == RES_OK); attribs.type = S3D_FLOAT3; attribs.usage = S3D_POSITION; attribs.get = cbox_get_position; - CHECK(s3d_shape_create_mesh(dev, shapes + 0), RES_OK); - CHECK(s3d_mesh_setup_indexed_vertices(shapes[0], cbox_walls_ntris, - cbox_get_ids, cbox_walls_nverts, &attribs, 1, data), RES_OK); - CHECK(s3d_scene_attach_shape(scn, shapes[0]), RES_OK); - - CHECK(s3d_scene_view_create(scn, S3D_TRACE, &scnview), RES_OK); - CHECK(s3d_scene_view_compute_area(scnview, &area), RES_OK); - CHECK(eq_epsf(area, 1532296.f, 1.e-6f), 1); - CHECK(s3d_scene_view_primitives_count(scnview, &nprims), RES_OK); - CHECK(nprims, 10); - CHECK(s3d_scene_view_get_aabb(scnview, 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_instantiate(scn, shapes + 1), RES_OK); - CHECK(s3d_scene_attach_shape(scn2, shapes[1]), RES_OK); - - CHECK(s3d_scene_view_create(scn2, S3D_GET_PRIMITIVE, &scnview2), RES_OK); - CHECK(s3d_scene_view_compute_area(scnview2, &area), RES_OK); - CHECK(eq_epsf(area, 1532296.f, 1.e-6f), 1); - CHECK(s3d_scene_view_primitives_count(scnview2, &nprims), RES_OK); - CHECK(nprims, 10); - CHECK(s3d_scene_view_get_aabb(scnview2, 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_view_compute_area(scnview, &area), RES_OK); - CHECK(eq_epsf(area, 1532296.f, 1.e-6f), 1); - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); - - CHECK(s3d_scene_view_get_primitive(NULL, 11, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_get_primitive(scnview2, 11, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_get_primitive(NULL, 0, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_get_primitive(scnview2, 0, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_get_primitive(NULL, 11, prims + 0), RES_BAD_ARG); - CHECK(s3d_scene_view_get_primitive(scnview2, 11, prims + 0), RES_BAD_ARG); - CHECK(s3d_scene_view_get_primitive(NULL, 0, prims + 0), RES_BAD_ARG); + CHK(s3d_shape_create_mesh(dev, shapes + 0) == RES_OK); + CHK(s3d_mesh_setup_indexed_vertices(shapes[0], cbox_walls_ntris, + cbox_get_ids, cbox_walls_nverts, &attribs, 1, data) == RES_OK); + CHK(s3d_scene_attach_shape(scn, shapes[0]) == RES_OK); + + CHK(s3d_scene_view_create(scn, S3D_TRACE, &scnview) == RES_OK); + CHK(s3d_scene_view_compute_area(scnview, &area) == RES_OK); + CHK(eq_epsf(area, 1532296.f, 1.e-6f) == 1); + CHK(s3d_scene_view_primitives_count(scnview, &nprims) == RES_OK); + CHK(nprims == 10); + CHK(s3d_scene_view_get_aabb(scnview, lower, upper) == RES_OK); + CHK(eq_epsf(lower[0], 0.f, 1.e-6f) == 1); + CHK(eq_epsf(lower[1], 0.f, 1.e-6f) == 1); + CHK(eq_epsf(lower[2], 0.f, 1.e-6f) == 1); + CHK(eq_epsf(upper[0], 552.f, 1.e-6f) == 1); + CHK(eq_epsf(upper[1], 559.f, 1.e-6f) == 1); + CHK(eq_epsf(upper[2], 548.f, 1.e-6f) == 1); + + CHK(s3d_scene_instantiate(scn, shapes + 1) == RES_OK); + CHK(s3d_scene_attach_shape(scn2, shapes[1]) == RES_OK); + + CHK(s3d_scene_view_create(scn2, S3D_GET_PRIMITIVE, &scnview2) == RES_OK); + CHK(s3d_scene_view_compute_area(scnview2, &area) == RES_OK); + CHK(eq_epsf(area, 1532296.f, 1.e-6f) == 1); + CHK(s3d_scene_view_primitives_count(scnview2, &nprims) == RES_OK); + CHK(nprims == 10); + CHK(s3d_scene_view_get_aabb(scnview2, lower, upper) == RES_OK); + CHK(eq_epsf(lower[0], 0.f, 1.e-6f) == 1); + CHK(eq_epsf(lower[1], 0.f, 1.e-6f) == 1); + CHK(eq_epsf(lower[2], 0.f, 1.e-6f) == 1); + CHK(eq_epsf(upper[0], 552.f, 1.e-6f) == 1); + CHK(eq_epsf(upper[1], 559.f, 1.e-6f) == 1); + CHK(eq_epsf(upper[2], 548.f, 1.e-6f) == 1); + + CHK(s3d_scene_view_compute_area(scnview, &area) == RES_OK); + CHK(eq_epsf(area, 1532296.f, 1.e-6f) == 1); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); + + CHK(s3d_scene_view_get_primitive(NULL, 11, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_get_primitive(scnview2, 11, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_get_primitive(NULL, 0, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_get_primitive(scnview2, 0, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_get_primitive(NULL, 11, prims + 0) == RES_BAD_ARG); + CHK(s3d_scene_view_get_primitive(scnview2, 11, prims + 0) == RES_BAD_ARG); + CHK(s3d_scene_view_get_primitive(NULL, 0, prims + 0) == RES_BAD_ARG); FOR_EACH(i, 0, nprims) { size_t j; - CHECK(s3d_scene_view_get_primitive(scnview2, (unsigned)i, prims + i), RES_OK); - CHECK(S3D_PRIMITIVE_EQ(prims + i, &S3D_PRIMITIVE_NULL), 0); - CHECK(prims[i].scene_prim_id, i); + CHK(s3d_scene_view_get_primitive(scnview2, (unsigned)i, prims + i) == RES_OK); + CHK(S3D_PRIMITIVE_EQ(prims + i, &S3D_PRIMITIVE_NULL) == 0); + CHK(prims[i].scene_prim_id == i); FOR_EACH(j, 0, i) - CHECK(S3D_PRIMITIVE_EQ(prims + i, prims + j), 0); + CHK(S3D_PRIMITIVE_EQ(prims + i, prims + j) == 0); } - CHECK(s3d_scene_view_ref_put(scnview2), RES_OK); + CHK(s3d_scene_view_ref_put(scnview2) == RES_OK); attribs.type = S3D_FLOAT3; attribs.usage = S3D_POSITION; attribs.get = cube_get_pos; - CHECK(s3d_mesh_setup_indexed_vertices - (shapes[0], cube_ntris, cube_get_ids, cube_nverts, &attribs, 1, NULL), RES_OK); - - CHECK(s3d_scene_view_create(scn, S3D_TRACE, &scnview), RES_OK); - CHECK(s3d_scene_view_compute_area(scnview, &area), RES_OK); - CHECK(eq_epsf(area, 6.f, 1.e-6f), 1); - CHECK(s3d_scene_view_compute_volume(scnview, &volume), RES_OK); - CHECK(eq_epsf(volume, 1.f, 1.e-6f), 1); - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); - - CHECK(s3d_shape_flip_surface(shapes[0]), RES_OK); - CHECK(s3d_scene_view_create(scn, S3D_GET_PRIMITIVE, &scnview), RES_OK); - CHECK(s3d_scene_view_compute_volume(scnview, &volume), RES_OK); - CHECK(eq_epsf(volume, -1.f, 1.e-6f), 1); - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); - - CHECK(s3d_scene_get_device(NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_get_device(scn, NULL), RES_BAD_ARG); - CHECK(s3d_scene_get_device(NULL, &dev2), RES_BAD_ARG); - CHECK(s3d_scene_get_device(scn, &dev2), RES_OK); - CHECK(dev2, dev); - CHECK(s3d_scene_get_device(scn2, &dev2), RES_OK); - CHECK(dev2, dev); - - CHECK(s3d_scene_ref_put(scn), RES_OK); - CHECK(s3d_scene_ref_put(scn2), RES_OK); - CHECK(s3d_shape_ref_put(shapes[0]), RES_OK); - CHECK(s3d_shape_ref_put(shapes[1]), RES_OK); - - CHECK(s3d_device_ref_put(dev), RES_OK);; + CHK(s3d_mesh_setup_indexed_vertices + (shapes[0], cube_ntris, cube_get_ids, cube_nverts, &attribs, 1, NULL) == RES_OK); + + CHK(s3d_scene_view_create(scn, S3D_TRACE, &scnview) == RES_OK); + CHK(s3d_scene_view_compute_area(scnview, &area) == RES_OK); + CHK(eq_epsf(area, 6.f, 1.e-6f) == 1); + CHK(s3d_scene_view_compute_volume(scnview, &volume) == RES_OK); + CHK(eq_epsf(volume, 1.f, 1.e-6f) == 1); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); + + CHK(s3d_shape_flip_surface(shapes[0]) == RES_OK); + CHK(s3d_scene_view_create(scn, S3D_GET_PRIMITIVE, &scnview) == RES_OK); + CHK(s3d_scene_view_compute_volume(scnview, &volume) == RES_OK); + CHK(eq_epsf(volume, -1.f, 1.e-6f) == 1); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); + + CHK(s3d_scene_get_device(NULL, NULL) == RES_BAD_ARG); + CHK(s3d_scene_get_device(scn, NULL) == RES_BAD_ARG); + CHK(s3d_scene_get_device(NULL, &dev2) == RES_BAD_ARG); + CHK(s3d_scene_get_device(scn, &dev2) == RES_OK); + CHK(dev2 == dev); + CHK(s3d_scene_get_device(scn2, &dev2) == RES_OK); + CHK(dev2 == dev); + + CHK(s3d_scene_ref_put(scn) == RES_OK); + CHK(s3d_scene_ref_put(scn2) == RES_OK); + CHK(s3d_shape_ref_put(shapes[0]) == RES_OK); + CHK(s3d_shape_ref_put(shapes[1]) == RES_OK); + + CHK(s3d_device_ref_put(dev) == RES_OK);; check_memory_allocator(&allocator); mem_shutdown_proxy_allocator(&allocator); - CHECK(mem_allocated_size(), 0); + CHK(mem_allocated_size() == 0); return 0; } diff --git a/src/test_s3d_scene_view.c b/src/test_s3d_scene_view.c @@ -52,7 +52,7 @@ filter void* filter_data) { (void)org, (void)dir, (void)ray_data, (void)filter_data; - CHECK(S3D_HIT_NONE(hit), 0); + CHK(S3D_HIT_NONE(hit) == 0); return hit->prim.prim_id % 2 == 0; } @@ -112,8 +112,8 @@ get_ids(const unsigned itri, unsigned ids[3], void* data) { const unsigned id = itri * 3; const struct mesh_context* ctx = data; - NCHECK(ctx, NULL); - NCHECK(ids, NULL); + CHK(ctx != NULL); + CHK(ids != NULL); ids[0] = ctx->ids[id + 0]; ids[1] = ctx->ids[id + 1]; ids[2] = ctx->ids[id + 2]; @@ -124,8 +124,8 @@ get_pos(const unsigned ivert, float pos[3], void* data) { const unsigned i = ivert*3; const struct mesh_context* ctx = data; - NCHECK(ctx, NULL); - NCHECK(pos, NULL); + CHK(ctx != NULL); + CHK(pos != NULL); pos[0] = ctx->verts[i + 0]; pos[1] = ctx->verts[i + 1]; pos[2] = ctx->verts[i + 2]; @@ -141,44 +141,44 @@ test_miscellaneous struct s3d_scene_view* scnview; int mask; - CHECK(s3d_scene_create(dev, &scn), RES_OK); - CHECK(s3d_scene_attach_shape(scn, cube), RES_OK); - CHECK(s3d_scene_attach_shape(scn, plane), RES_OK); - - CHECK(s3d_scene_view_create(NULL, 0, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_create(scn, 0, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_create(NULL, S3D_SAMPLE, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_create(scn, S3D_SAMPLE, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_create(NULL, 0, &scnview), RES_BAD_ARG); - CHECK(s3d_scene_view_create(scn, 0, &scnview), RES_BAD_ARG); - CHECK(s3d_scene_view_create(NULL, S3D_SAMPLE, &scnview), RES_BAD_ARG); - CHECK(s3d_scene_view_create(scn, S3D_SAMPLE, &scnview), RES_OK); - - CHECK(s3d_scene_view_get_mask(NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_get_mask(scnview, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_get_mask(NULL, &mask), RES_BAD_ARG); - CHECK(s3d_scene_view_get_mask(scnview, &mask), RES_OK); - CHECK(mask, S3D_SAMPLE); - - CHECK(s3d_scene_view_ref_get(NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_ref_get(scnview), RES_OK); - CHECK(s3d_scene_view_ref_put(NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); - - CHECK(s3d_scene_view_create(scn, S3D_TRACE|S3D_GET_PRIMITIVE, &scnview), RES_OK); - CHECK(s3d_scene_view_get_mask(scnview, &mask), RES_OK); - CHECK(mask & S3D_TRACE, S3D_TRACE); - CHECK(mask & S3D_GET_PRIMITIVE, S3D_GET_PRIMITIVE); - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); - - CHECK(s3d_scene_view_create(scn, S3D_SAMPLE|S3D_GET_PRIMITIVE, &scnview), RES_OK); - CHECK(s3d_scene_view_get_mask(scnview, &mask), RES_OK); - CHECK(mask & S3D_SAMPLE, S3D_SAMPLE); - CHECK(mask & S3D_GET_PRIMITIVE, S3D_GET_PRIMITIVE); - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); - - CHECK(s3d_scene_ref_put(scn), RES_OK); + CHK(s3d_scene_create(dev, &scn) == RES_OK); + CHK(s3d_scene_attach_shape(scn, cube) == RES_OK); + CHK(s3d_scene_attach_shape(scn, plane) == RES_OK); + + CHK(s3d_scene_view_create(NULL, 0, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_create(scn, 0, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_create(NULL, S3D_SAMPLE, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_create(scn, S3D_SAMPLE, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_create(NULL, 0, &scnview) == RES_BAD_ARG); + CHK(s3d_scene_view_create(scn, 0, &scnview) == RES_BAD_ARG); + CHK(s3d_scene_view_create(NULL, S3D_SAMPLE, &scnview) == RES_BAD_ARG); + CHK(s3d_scene_view_create(scn, S3D_SAMPLE, &scnview) == RES_OK); + + CHK(s3d_scene_view_get_mask(NULL, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_get_mask(scnview, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_get_mask(NULL, &mask) == RES_BAD_ARG); + CHK(s3d_scene_view_get_mask(scnview, &mask) == RES_OK); + CHK(mask == S3D_SAMPLE); + + CHK(s3d_scene_view_ref_get(NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_ref_get(scnview) == RES_OK); + CHK(s3d_scene_view_ref_put(NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); + + CHK(s3d_scene_view_create(scn, S3D_TRACE|S3D_GET_PRIMITIVE, &scnview) == RES_OK); + CHK(s3d_scene_view_get_mask(scnview, &mask) == RES_OK); + CHK((mask & S3D_TRACE) == S3D_TRACE); + CHK((mask & S3D_GET_PRIMITIVE) == S3D_GET_PRIMITIVE); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); + + CHK(s3d_scene_view_create(scn, S3D_SAMPLE|S3D_GET_PRIMITIVE, &scnview) == RES_OK); + CHK(s3d_scene_view_get_mask(scnview, &mask) == RES_OK); + CHK((mask & S3D_SAMPLE) == S3D_SAMPLE); + CHK((mask & S3D_GET_PRIMITIVE) == S3D_GET_PRIMITIVE); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); + + CHK(s3d_scene_ref_put(scn) == RES_OK); } static void @@ -202,284 +202,284 @@ test_trace_ray unsigned iinst0; unsigned iinst1; - CHECK(s3d_shape_get_id(cube, &icube), RES_OK); - CHECK(s3d_shape_get_id(plane, &iplane), RES_OK); + CHK(s3d_shape_get_id(cube, &icube) == RES_OK); + CHK(s3d_shape_get_id(plane, &iplane) == RES_OK); - CHECK(s3d_scene_create(dev, &scn), RES_OK); - CHECK(s3d_scene_create(dev, &scn2), RES_OK); - CHECK(s3d_scene_create(dev, &scn3), RES_OK); - CHECK(s3d_scene_attach_shape(scn, plane), RES_OK); - CHECK(s3d_scene_attach_shape(scn, cube), RES_OK); - CHECK(s3d_scene_attach_shape(scn2, cube), RES_OK); - CHECK(s3d_scene_attach_shape(scn2, plane), RES_OK); + CHK(s3d_scene_create(dev, &scn) == RES_OK); + CHK(s3d_scene_create(dev, &scn2) == RES_OK); + CHK(s3d_scene_create(dev, &scn3) == RES_OK); + CHK(s3d_scene_attach_shape(scn, plane) == RES_OK); + CHK(s3d_scene_attach_shape(scn, cube) == RES_OK); + CHK(s3d_scene_attach_shape(scn2, cube) == RES_OK); + CHK(s3d_scene_attach_shape(scn2, plane) == RES_OK); - CHECK(s3d_scene_view_create(scn, S3D_SAMPLE|S3D_GET_PRIMITIVE, &scnview), RES_OK); + CHK(s3d_scene_view_create(scn, S3D_SAMPLE|S3D_GET_PRIMITIVE, &scnview) == RES_OK); f3(org, 0.5f, 0.25f, 0.25f); f3(dir, 0.f, 0.f, 1.f); f2(range, 0.f, FLT_MAX); - CHECK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit), RES_BAD_OP); + CHK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit) == RES_BAD_OP); - CHECK(s3d_scene_view_create(scn, S3D_TRACE, &scnview2), RES_OK); - CHECK(s3d_scene_view_trace_ray(scnview2, org, dir, range, NULL, &hit), RES_OK); - CHECK(S3D_HIT_NONE(&hit), 0); - CHECK(hit.prim.inst_id, S3D_INVALID_ID); - CHECK(hit.prim.geom_id, iplane); - CHECK(hit.prim.prim_id, 0); + CHK(s3d_scene_view_create(scn, S3D_TRACE, &scnview2) == RES_OK); + CHK(s3d_scene_view_trace_ray(scnview2, org, dir, range, NULL, &hit) == RES_OK); + CHK(S3D_HIT_NONE(&hit) == 0); + CHK(hit.prim.inst_id == S3D_INVALID_ID); + CHK(hit.prim.geom_id == iplane); + CHK(hit.prim.prim_id == 0); f3(dir, 0.f, 0.f, -1.f); - CHECK(s3d_scene_view_trace_ray(scnview2, org, dir, range, NULL, &hit), RES_OK); - CHECK(S3D_HIT_NONE(&hit), 0); - CHECK(hit.prim.inst_id, S3D_INVALID_ID); - CHECK(hit.prim.geom_id, icube); - CHECK(hit.prim.prim_id, 0); + CHK(s3d_scene_view_trace_ray(scnview2, org, dir, range, NULL, &hit) == RES_OK); + CHK(S3D_HIT_NONE(&hit) == 0); + CHK(hit.prim.inst_id == S3D_INVALID_ID); + CHK(hit.prim.geom_id == icube); + CHK(hit.prim.prim_id == 0); f3(dir, 0.f, 0.f, 1.f); - CHECK(s3d_shape_enable(plane, 0), RES_OK); - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); - CHECK(s3d_scene_view_create(scn, S3D_TRACE, &scnview), RES_OK); - - CHECK(s3d_scene_view_trace_ray(scnview2, org, dir, range, NULL, &hit), RES_OK); - CHECK(S3D_HIT_NONE(&hit), 0); - CHECK(hit.prim.inst_id, S3D_INVALID_ID); - CHECK(hit.prim.geom_id, iplane); - CHECK(hit.prim.prim_id, 0); - - CHECK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit), RES_OK); - CHECK(S3D_HIT_NONE(&hit), 0); - CHECK(hit.prim.inst_id, S3D_INVALID_ID); - CHECK(hit.prim.geom_id, icube); - CHECK(hit.prim.prim_id, 4); - - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); - CHECK(s3d_scene_view_ref_put(scnview2), RES_OK); - CHECK(s3d_shape_enable(plane, 1), RES_OK); - - CHECK(s3d_scene_view_create(scn, S3D_TRACE, &scnview), RES_OK); - CHECK(s3d_scene_view_create(scn2, S3D_TRACE, &scnview2), RES_OK); - - CHECK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit), RES_OK); - CHECK(s3d_scene_view_trace_ray(scnview2, org, dir, range, NULL, &hit2), RES_OK); - CHECK(f3_eq(hit.normal, hit2.normal), 1); - CHECK(f2_eq(hit.uv, hit2.uv), 1); - CHECK(hit.distance, hit2.distance); - CHECK(S3D_PRIMITIVE_EQ(&hit.prim, &hit2.prim), 1); - CHECK(hit.prim.inst_id, S3D_INVALID_ID); - CHECK(hit.prim.geom_id, iplane); - CHECK(hit.prim.prim_id, 0); - - CHECK(s3d_scene_detach_shape(scn2, plane), RES_OK); - CHECK(s3d_scene_view_trace_ray(scnview2, org, dir, range, NULL, &hit2), RES_OK); - CHECK(f3_eq(hit.normal, hit2.normal), 1); - CHECK(f2_eq(hit.uv, hit2.uv), 1); - CHECK(hit.distance, hit2.distance); - CHECK(S3D_PRIMITIVE_EQ(&hit.prim, &hit2.prim), 1); - - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); - CHECK(s3d_scene_view_ref_put(scnview2), RES_OK); - - CHECK(s3d_scene_view_create(scn, S3D_TRACE, &scnview), RES_OK); - CHECK(s3d_scene_view_create(scn2, S3D_TRACE, &scnview2), RES_OK); - - CHECK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit), RES_OK); - CHECK(f3_eq(hit.normal, hit2.normal), 1); - CHECK(f2_eq(hit.uv, hit2.uv), 1); - CHECK(hit.distance, hit2.distance); - CHECK(S3D_PRIMITIVE_EQ(&hit.prim, &hit2.prim), 1); - CHECK(hit.prim.inst_id, S3D_INVALID_ID); - CHECK(hit.prim.geom_id, iplane); - CHECK(hit.prim.prim_id, 0); - - CHECK(s3d_scene_view_trace_ray(scnview2, org, dir, range, NULL, &hit2), RES_OK); - CHECK(hit2.prim.inst_id, S3D_INVALID_ID); - CHECK(hit2.prim.geom_id, icube); - CHECK(hit2.prim.prim_id, 4); - - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); - CHECK(s3d_scene_view_ref_put(scnview2), RES_OK); - - CHECK(s3d_scene_instantiate(scn2, &inst0), RES_OK); - CHECK(s3d_scene_instantiate(scn2, &inst1), RES_OK); - CHECK(s3d_shape_get_id(inst0, &iinst0), RES_OK); - CHECK(s3d_shape_get_id(inst1, &iinst1), RES_OK); - CHECK(s3d_instance_translate - (inst0, S3D_WORLD_TRANSFORM, f3(org,-2.f, 0.f, 0.f)), RES_OK); - CHECK(s3d_instance_translate - (inst1, S3D_WORLD_TRANSFORM, f3(org, 2.f, 0.f, 0.f)), RES_OK); - - CHECK(s3d_scene_attach_shape(scn3, inst0), RES_OK); - CHECK(s3d_scene_attach_shape(scn3, inst1), RES_OK); - CHECK(s3d_scene_attach_shape(scn, inst0), RES_OK); - CHECK(s3d_scene_attach_shape(scn, inst1), RES_OK); - - CHECK(s3d_scene_view_create(scn, S3D_TRACE, &scnview), RES_OK); - CHECK(s3d_scene_view_create(scn3, S3D_TRACE, &scnview3), RES_OK); + CHK(s3d_shape_enable(plane, 0) == RES_OK); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); + CHK(s3d_scene_view_create(scn, S3D_TRACE, &scnview) == RES_OK); + + CHK(s3d_scene_view_trace_ray(scnview2, org, dir, range, NULL, &hit) == RES_OK); + CHK(S3D_HIT_NONE(&hit) == 0); + CHK(hit.prim.inst_id == S3D_INVALID_ID); + CHK(hit.prim.geom_id == iplane); + CHK(hit.prim.prim_id == 0); + + CHK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit) == RES_OK); + CHK(S3D_HIT_NONE(&hit) == 0); + CHK(hit.prim.inst_id == S3D_INVALID_ID); + CHK(hit.prim.geom_id == icube); + CHK(hit.prim.prim_id == 4); + + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); + CHK(s3d_scene_view_ref_put(scnview2) == RES_OK); + CHK(s3d_shape_enable(plane, 1) == RES_OK); + + CHK(s3d_scene_view_create(scn, S3D_TRACE, &scnview) == RES_OK); + CHK(s3d_scene_view_create(scn2, S3D_TRACE, &scnview2) == RES_OK); + + CHK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit) == RES_OK); + CHK(s3d_scene_view_trace_ray(scnview2, org, dir, range, NULL, &hit2) == RES_OK); + CHK(f3_eq(hit.normal, hit2.normal) == 1); + CHK(f2_eq(hit.uv, hit2.uv) == 1); + CHK(hit.distance == hit2.distance); + CHK(S3D_PRIMITIVE_EQ(&hit.prim, &hit2.prim) == 1); + CHK(hit.prim.inst_id == S3D_INVALID_ID); + CHK(hit.prim.geom_id == iplane); + CHK(hit.prim.prim_id == 0); + + CHK(s3d_scene_detach_shape(scn2, plane) == RES_OK); + CHK(s3d_scene_view_trace_ray(scnview2, org, dir, range, NULL, &hit2) == RES_OK); + CHK(f3_eq(hit.normal, hit2.normal) == 1); + CHK(f2_eq(hit.uv, hit2.uv) == 1); + CHK(hit.distance == hit2.distance); + CHK(S3D_PRIMITIVE_EQ(&hit.prim, &hit2.prim) == 1); + + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); + CHK(s3d_scene_view_ref_put(scnview2) == RES_OK); + + CHK(s3d_scene_view_create(scn, S3D_TRACE, &scnview) == RES_OK); + CHK(s3d_scene_view_create(scn2, S3D_TRACE, &scnview2) == RES_OK); + + CHK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit) == RES_OK); + CHK(f3_eq(hit.normal, hit2.normal) == 1); + CHK(f2_eq(hit.uv, hit2.uv) == 1); + CHK(hit.distance == hit2.distance); + CHK(S3D_PRIMITIVE_EQ(&hit.prim, &hit2.prim) == 1); + CHK(hit.prim.inst_id == S3D_INVALID_ID); + CHK(hit.prim.geom_id == iplane); + CHK(hit.prim.prim_id == 0); + + CHK(s3d_scene_view_trace_ray(scnview2, org, dir, range, NULL, &hit2) == RES_OK); + CHK(hit2.prim.inst_id == S3D_INVALID_ID); + CHK(hit2.prim.geom_id == icube); + CHK(hit2.prim.prim_id == 4); + + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); + CHK(s3d_scene_view_ref_put(scnview2) == RES_OK); + + CHK(s3d_scene_instantiate(scn2, &inst0) == RES_OK); + CHK(s3d_scene_instantiate(scn2, &inst1) == RES_OK); + CHK(s3d_shape_get_id(inst0, &iinst0) == RES_OK); + CHK(s3d_shape_get_id(inst1, &iinst1) == RES_OK); + CHK(s3d_instance_translate + (inst0, S3D_WORLD_TRANSFORM, f3(org,-2.f, 0.f, 0.f)) == RES_OK); + CHK(s3d_instance_translate + (inst1, S3D_WORLD_TRANSFORM, f3(org, 2.f, 0.f, 0.f)) == RES_OK); + + CHK(s3d_scene_attach_shape(scn3, inst0) == RES_OK); + CHK(s3d_scene_attach_shape(scn3, inst1) == RES_OK); + CHK(s3d_scene_attach_shape(scn, inst0) == RES_OK); + CHK(s3d_scene_attach_shape(scn, inst1) == RES_OK); + + CHK(s3d_scene_view_create(scn, S3D_TRACE, &scnview) == RES_OK); + CHK(s3d_scene_view_create(scn3, S3D_TRACE, &scnview3) == RES_OK); f3(org, 0.5f, 0.25f, 0.25f); f3(dir, 0.f, 0.f, 1.f); - CHECK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit), RES_OK); - CHECK(hit.prim.inst_id, S3D_INVALID_ID); - CHECK(hit.prim.geom_id, iplane); - CHECK(hit.prim.prim_id, 0); + CHK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit) == RES_OK); + CHK(hit.prim.inst_id == S3D_INVALID_ID); + CHK(hit.prim.geom_id == iplane); + CHK(hit.prim.prim_id == 0); - CHECK(s3d_scene_view_trace_ray(scnview3, org, dir, range, NULL, &hit), RES_OK); - CHECK(S3D_HIT_NONE(&hit), 1); + CHK(s3d_scene_view_trace_ray(scnview3, org, dir, range, NULL, &hit) == RES_OK); + CHK(S3D_HIT_NONE(&hit) == 1); f3(org, -1.5f, 0.25f, 0.25f); - CHECK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit), RES_OK); - CHECK(hit.prim.inst_id, iinst0); - CHECK(hit.prim.geom_id, icube); - CHECK(hit.prim.prim_id, 4); + CHK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit) == RES_OK); + CHK(hit.prim.inst_id == iinst0); + CHK(hit.prim.geom_id == icube); + CHK(hit.prim.prim_id == 4); - CHECK(s3d_scene_view_trace_ray(scnview3, org, dir, range, NULL, &hit2), RES_OK); - CHECK(hit2.prim.inst_id, iinst0); - CHECK(hit2.prim.geom_id, icube); - CHECK(hit2.prim.prim_id, 4); + CHK(s3d_scene_view_trace_ray(scnview3, org, dir, range, NULL, &hit2) == RES_OK); + CHK(hit2.prim.inst_id == iinst0); + CHK(hit2.prim.geom_id == icube); + CHK(hit2.prim.prim_id == 4); - CHECK(f3_eq(hit.normal, hit2.normal), 1); - CHECK(f2_eq(hit.uv, hit2.uv), 1); - CHECK(hit.distance, hit2.distance); + CHK(f3_eq(hit.normal, hit2.normal) == 1); + CHK(f2_eq(hit.uv, hit2.uv) == 1); + CHK(hit.distance == hit2.distance); - CHECK(s3d_scene_clear(scn2), RES_OK); + CHK(s3d_scene_clear(scn2) == RES_OK); f3(org, 2.5f, 0.25f, 0.25f); - CHECK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit), RES_OK); - CHECK(hit.prim.inst_id, iinst1); - CHECK(hit.prim.geom_id, icube); - CHECK(hit.prim.prim_id, 4); + CHK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit) == RES_OK); + CHK(hit.prim.inst_id == iinst1); + CHK(hit.prim.geom_id == icube); + CHK(hit.prim.prim_id == 4); - CHECK(s3d_scene_view_trace_ray(scnview3, org, dir, range, NULL, &hit2), RES_OK); - CHECK(hit2.prim.inst_id, iinst1); - CHECK(hit2.prim.geom_id, icube); - CHECK(hit2.prim.prim_id, 4); + CHK(s3d_scene_view_trace_ray(scnview3, org, dir, range, NULL, &hit2) == RES_OK); + CHK(hit2.prim.inst_id == iinst1); + CHK(hit2.prim.geom_id == icube); + CHK(hit2.prim.prim_id == 4); - CHECK(f3_eq(hit.normal, hit2.normal), 1); - CHECK(f2_eq(hit.uv, hit2.uv), 1); - CHECK(hit.distance, hit2.distance); + CHK(f3_eq(hit.normal, hit2.normal) == 1); + CHK(f2_eq(hit.uv, hit2.uv) == 1); + CHK(hit.distance == hit2.distance); - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); - CHECK(s3d_scene_view_create(scn, S3D_TRACE, &scnview), RES_OK); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); + CHK(s3d_scene_view_create(scn, S3D_TRACE, &scnview) == RES_OK); f3(org, -1.5f, 0.25f, 0.25f); - CHECK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit), RES_OK); - CHECK(S3D_HIT_NONE(&hit), 1); - CHECK(s3d_scene_view_trace_ray(scnview3, org, dir, range, NULL, &hit), RES_OK); - CHECK(hit.prim.inst_id, iinst0); - CHECK(hit.prim.geom_id, icube); - CHECK(hit.prim.prim_id, 4); + CHK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit) == RES_OK); + CHK(S3D_HIT_NONE(&hit) == 1); + CHK(s3d_scene_view_trace_ray(scnview3, org, dir, range, NULL, &hit) == RES_OK); + CHK(hit.prim.inst_id == iinst0); + CHK(hit.prim.geom_id == icube); + CHK(hit.prim.prim_id == 4); f3(org, 2.5f, 0.25f, 0.25f); - CHECK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit), RES_OK); - CHECK(S3D_HIT_NONE(&hit), 1); - CHECK(s3d_scene_view_trace_ray(scnview3, org, dir, range, NULL, &hit), RES_OK); - CHECK(hit.prim.inst_id, iinst1); - CHECK(hit.prim.geom_id, icube); - CHECK(hit.prim.prim_id, 4); + CHK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit) == RES_OK); + CHK(S3D_HIT_NONE(&hit) == 1); + CHK(s3d_scene_view_trace_ray(scnview3, org, dir, range, NULL, &hit) == RES_OK); + CHK(hit.prim.inst_id == iinst1); + CHK(hit.prim.geom_id == icube); + CHK(hit.prim.prim_id == 4); f3(org, 0.5f, 0.25f, 0.25f); - CHECK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit), RES_OK); - CHECK(hit.prim.inst_id, S3D_INVALID_ID); - CHECK(hit.prim.geom_id, iplane); - CHECK(hit.prim.prim_id, 0); - CHECK(s3d_scene_view_trace_ray(scnview3, org, dir, range, NULL, &hit), RES_OK); - CHECK(S3D_HIT_NONE(&hit), 1); + CHK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit) == RES_OK); + CHK(hit.prim.inst_id == S3D_INVALID_ID); + CHK(hit.prim.geom_id == iplane); + CHK(hit.prim.prim_id == 0); + CHK(s3d_scene_view_trace_ray(scnview3, org, dir, range, NULL, &hit) == RES_OK); + CHK(S3D_HIT_NONE(&hit) == 1); - CHECK(s3d_scene_attach_shape(scn2, plane), RES_OK); - CHECK(s3d_mesh_set_hit_filter_function(plane, filter, NULL), RES_OK); + CHK(s3d_scene_attach_shape(scn2, plane) == RES_OK); + CHK(s3d_mesh_set_hit_filter_function(plane, filter, NULL) == RES_OK); f3(org, 0.5f, 0.25f, 0.25f); - CHECK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit), RES_OK); - CHECK(hit.prim.inst_id, S3D_INVALID_ID); - CHECK(hit.prim.geom_id, iplane); - CHECK(hit.prim.prim_id, 0); + CHK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit) == RES_OK); + CHK(hit.prim.inst_id == S3D_INVALID_ID); + CHK(hit.prim.geom_id == iplane); + CHK(hit.prim.prim_id == 0); - CHECK(s3d_scene_view_ref_put(scnview3), RES_OK); - CHECK(s3d_scene_view_create(scn3, S3D_TRACE, &scnview3), RES_OK); + CHK(s3d_scene_view_ref_put(scnview3) == RES_OK); + CHK(s3d_scene_view_create(scn3, S3D_TRACE, &scnview3) == RES_OK); f3(org, -1.5f, 0.25f, 0.25f); - CHECK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit), RES_OK); - CHECK(S3D_HIT_NONE(&hit), 1); - CHECK(s3d_scene_view_trace_ray(scnview3, org, dir, range, NULL, &hit), RES_OK); - CHECK(S3D_HIT_NONE(&hit), 1); + CHK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit) == RES_OK); + CHK(S3D_HIT_NONE(&hit) == 1); + CHK(s3d_scene_view_trace_ray(scnview3, org, dir, range, NULL, &hit) == RES_OK); + CHK(S3D_HIT_NONE(&hit) == 1); f3(org, -1.5f, 0.75f, 0.25f); - CHECK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit), RES_OK); - CHECK(S3D_HIT_NONE(&hit), 1); - CHECK(s3d_scene_view_trace_ray(scnview3, org, dir, range, NULL, &hit), RES_OK); - CHECK(hit.prim.inst_id, iinst0); - CHECK(hit.prim.geom_id, iplane); - CHECK(hit.prim.prim_id, 1); + CHK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit) == RES_OK); + CHK(S3D_HIT_NONE(&hit) == 1); + CHK(s3d_scene_view_trace_ray(scnview3, org, dir, range, NULL, &hit) == RES_OK); + CHK(hit.prim.inst_id == iinst0); + CHK(hit.prim.geom_id == iplane); + CHK(hit.prim.prim_id == 1); f3(org, 2.5f, 0.25f, 0.25f); - CHECK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit), RES_OK); - CHECK(S3D_HIT_NONE(&hit), 1); - CHECK(s3d_scene_view_trace_ray(scnview3, org, dir, range, NULL, &hit), RES_OK); - CHECK(S3D_HIT_NONE(&hit), 1); + CHK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit) == RES_OK); + CHK(S3D_HIT_NONE(&hit) == 1); + CHK(s3d_scene_view_trace_ray(scnview3, org, dir, range, NULL, &hit) == RES_OK); + CHK(S3D_HIT_NONE(&hit) == 1); f3(org, 2.5f, 0.75f, 0.25f); - CHECK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit), RES_OK); - CHECK(S3D_HIT_NONE(&hit), 1); - CHECK(s3d_scene_view_trace_ray(scnview3, org, dir, range, NULL, &hit), RES_OK); - CHECK(hit.prim.inst_id, iinst1); - CHECK(hit.prim.geom_id, iplane); - CHECK(hit.prim.prim_id, 1); + CHK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit) == RES_OK); + CHK(S3D_HIT_NONE(&hit) == 1); + CHK(s3d_scene_view_trace_ray(scnview3, org, dir, range, NULL, &hit) == RES_OK); + CHK(hit.prim.inst_id == iinst1); + CHK(hit.prim.geom_id == iplane); + CHK(hit.prim.prim_id == 1); f3(org, 0.5f, 0.25f, 0.25f); - CHECK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit), RES_OK); - CHECK(hit.prim.inst_id, S3D_INVALID_ID); - CHECK(hit.prim.geom_id, iplane); - CHECK(hit.prim.prim_id, 0); - CHECK(s3d_scene_view_trace_ray(scnview3, org, dir, range, NULL, &hit), RES_OK); - CHECK(S3D_HIT_NONE(&hit), 1); + CHK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit) == RES_OK); + CHK(hit.prim.inst_id == S3D_INVALID_ID); + CHK(hit.prim.geom_id == iplane); + CHK(hit.prim.prim_id == 0); + CHK(s3d_scene_view_trace_ray(scnview3, org, dir, range, NULL, &hit) == RES_OK); + CHK(S3D_HIT_NONE(&hit) == 1); f3(org, 0.5f, 0.75f, 0.25f); - CHECK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit), RES_OK); - CHECK(hit.prim.inst_id, S3D_INVALID_ID); - CHECK(hit.prim.geom_id, iplane); - CHECK(hit.prim.prim_id, 1); - CHECK(s3d_scene_view_trace_ray(scnview3, org, dir, range, NULL, &hit), RES_OK); - CHECK(S3D_HIT_NONE(&hit), 1); - - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); - CHECK(s3d_scene_view_create(scn, S3D_TRACE, &scnview), RES_OK); + CHK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit) == RES_OK); + CHK(hit.prim.inst_id == S3D_INVALID_ID); + CHK(hit.prim.geom_id == iplane); + CHK(hit.prim.prim_id == 1); + CHK(s3d_scene_view_trace_ray(scnview3, org, dir, range, NULL, &hit) == RES_OK); + CHK(S3D_HIT_NONE(&hit) == 1); + + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); + CHK(s3d_scene_view_create(scn, S3D_TRACE, &scnview) == RES_OK); f3(org, 0.5f, 0.25f, 0.25f); - CHECK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit), RES_OK); - CHECK(hit.prim.inst_id, S3D_INVALID_ID); - CHECK(hit.prim.geom_id, icube); - CHECK(hit.prim.prim_id, 4); + CHK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit) == RES_OK); + CHK(hit.prim.inst_id == S3D_INVALID_ID); + CHK(hit.prim.geom_id == icube); + CHK(hit.prim.prim_id == 4); f3(org, 0.5f, 0.75f, 0.25f); - CHECK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit), RES_OK); - CHECK(hit.prim.inst_id, S3D_INVALID_ID); - CHECK(hit.prim.geom_id, iplane); - CHECK(hit.prim.prim_id, 1); + CHK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit) == RES_OK); + CHK(hit.prim.inst_id == S3D_INVALID_ID); + CHK(hit.prim.geom_id == iplane); + CHK(hit.prim.prim_id == 1); f3(org, -1.5f, 0.25f, 0.25f); - CHECK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit), RES_OK); - CHECK(S3D_HIT_NONE(&hit), 1); + CHK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit) == RES_OK); + CHK(S3D_HIT_NONE(&hit) == 1); f3(org, -1.5f, 0.75f, 0.25f); - CHECK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit), RES_OK); - CHECK(hit.prim.inst_id, iinst0); - CHECK(hit.prim.geom_id, iplane); - CHECK(hit.prim.prim_id, 1); + CHK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit) == RES_OK); + CHK(hit.prim.inst_id == iinst0); + CHK(hit.prim.geom_id == iplane); + CHK(hit.prim.prim_id == 1); f3(org, 2.5f, 0.25f, 0.25f); - CHECK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit), RES_OK); - CHECK(S3D_HIT_NONE(&hit), 1); + CHK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit) == RES_OK); + CHK(S3D_HIT_NONE(&hit) == 1); f3(org, 2.5f, 0.75f, 0.25f); - CHECK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit), RES_OK); - CHECK(hit.prim.inst_id, iinst1); - CHECK(hit.prim.geom_id, iplane); - CHECK(hit.prim.prim_id, 1); - - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); - CHECK(s3d_scene_view_ref_put(scnview3), RES_OK); - - CHECK(s3d_shape_ref_put(inst0), RES_OK); - CHECK(s3d_shape_ref_put(inst1), RES_OK); - CHECK(s3d_scene_ref_put(scn), RES_OK); - CHECK(s3d_scene_ref_put(scn2), RES_OK); - CHECK(s3d_scene_ref_put(scn3), RES_OK); + CHK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit) == RES_OK); + CHK(hit.prim.inst_id == iinst1); + CHK(hit.prim.geom_id == iplane); + CHK(hit.prim.prim_id == 1); + + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); + CHK(s3d_scene_view_ref_put(scnview3) == RES_OK); + + CHK(s3d_shape_ref_put(inst0) == RES_OK); + CHK(s3d_shape_ref_put(inst1) == RES_OK); + CHK(s3d_scene_ref_put(scn) == RES_OK); + CHK(s3d_scene_ref_put(scn2) == RES_OK); + CHK(s3d_scene_ref_put(scn3) == RES_OK); } static void @@ -509,82 +509,82 @@ test_sample int nsamps_inst1; int i; - CHECK(s3d_scene_create(dev, &scn), RES_OK); - CHECK(s3d_scene_create(dev, &scn2), RES_OK); - CHECK(s3d_scene_create(dev, &scn3), RES_OK); - CHECK(s3d_scene_attach_shape(scn, cube), RES_OK); - CHECK(s3d_scene_attach_shape(scn, plane), RES_OK); - CHECK(s3d_shape_get_id(cube, &icube), RES_OK); - CHECK(s3d_shape_get_id(plane, &iplane), RES_OK); + CHK(s3d_scene_create(dev, &scn) == RES_OK); + CHK(s3d_scene_create(dev, &scn2) == RES_OK); + CHK(s3d_scene_create(dev, &scn3) == RES_OK); + CHK(s3d_scene_attach_shape(scn, cube) == RES_OK); + CHK(s3d_scene_attach_shape(scn, plane) == RES_OK); + CHK(s3d_shape_get_id(cube, &icube) == RES_OK); + CHK(s3d_shape_get_id(plane, &iplane) == RES_OK); - CHECK(s3d_scene_view_create(scn, S3D_TRACE, &scnview), RES_OK); - CHECK(s3d_scene_view_sample(scnview, 0.f, 0.f, 0.f, &prims[0], st), RES_BAD_OP); - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); + CHK(s3d_scene_view_create(scn, S3D_TRACE, &scnview) == RES_OK); + CHK(s3d_scene_view_sample(scnview, 0.f, 0.f, 0.f, &prims[0], st) == RES_BAD_OP); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); - CHECK(s3d_scene_view_create(scn, S3D_SAMPLE, &scnview), RES_OK); - CHECK(s3d_scene_view_sample(scnview, 0.f, 0.f, 0.f, &prims[0], st), RES_OK); - CHECK(prims[0].inst_id, S3D_INVALID_ID); - CHECK(prims[0].geom_id == icube || prims[0].geom_id == iplane, 1); + CHK(s3d_scene_view_create(scn, S3D_SAMPLE, &scnview) == RES_OK); + CHK(s3d_scene_view_sample(scnview, 0.f, 0.f, 0.f, &prims[0], st) == RES_OK); + CHK(prims[0].inst_id == S3D_INVALID_ID); + CHK(prims[0].geom_id == icube || prims[0].geom_id == iplane); nsamps_cube = 0; nsamps_plane = 0; srand(0); FOR_EACH(i, 0, NSAMPS) { u = rand_canonic(), v = rand_canonic(), w = rand_canonic(); - CHECK(s3d_scene_view_sample(scnview, u, v, w, &prims[i], st), RES_OK); - CHECK(prims[i].inst_id, S3D_INVALID_ID); + CHK(s3d_scene_view_sample(scnview, u, v, w, &prims[i], st) == RES_OK); + CHK(prims[i].inst_id == S3D_INVALID_ID); if(prims[i].geom_id == icube) { ++nsamps_cube; } else { - CHECK(prims[i].geom_id, iplane); + CHK(prims[i].geom_id == iplane); ++nsamps_plane; } } - NCHECK(nsamps_cube, 0); - NCHECK(nsamps_plane, 0); + CHK(nsamps_cube != 0); + CHK(nsamps_plane != 0); - CHECK(s3d_shape_enable(cube, 0), RES_OK); + CHK(s3d_shape_enable(cube, 0) == RES_OK); srand(0); FOR_EACH(i, 0, NSAMPS) { struct s3d_primitive prim; u = rand_canonic(), v = rand_canonic(), w = rand_canonic(); - CHECK(s3d_scene_view_sample(scnview, u, v, w, &prim, st), RES_OK); - CHECK(S3D_PRIMITIVE_EQ(&prim, &prims[i]), 1); + CHK(s3d_scene_view_sample(scnview, u, v, w, &prim, st) == RES_OK); + CHK(S3D_PRIMITIVE_EQ(&prim, &prims[i]) == 1); } - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); - CHECK(s3d_scene_view_create(scn, S3D_SAMPLE, &scnview), RES_OK); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); + CHK(s3d_scene_view_create(scn, S3D_SAMPLE, &scnview) == RES_OK); srand(0); FOR_EACH(i, 0, NSAMPS) { u = rand_canonic(), v = rand_canonic(), w = rand_canonic(); - CHECK(s3d_scene_view_sample(scnview, u, v, w, &prims[i], st), RES_OK); - CHECK(prims[i].inst_id, S3D_INVALID_ID); - CHECK(prims[i].geom_id, iplane); + CHK(s3d_scene_view_sample(scnview, u, v, w, &prims[i], st) == RES_OK); + CHK(prims[i].inst_id == S3D_INVALID_ID); + CHK(prims[i].geom_id == iplane); } - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); - CHECK(s3d_shape_enable(cube, 1), RES_OK); - CHECK(s3d_scene_attach_shape(scn2, cube), RES_OK); - CHECK(s3d_scene_instantiate(scn2, &inst0), RES_OK); - CHECK(s3d_scene_instantiate(scn2, &inst1), RES_OK); - CHECK(s3d_shape_get_id(inst0, &iinst0), RES_OK); - CHECK(s3d_shape_get_id(inst1, &iinst1), RES_OK); - CHECK(s3d_instance_translate - (inst0, S3D_WORLD_TRANSFORM, f3(pos,-2.f, 0.f, 0.f)), RES_OK); - CHECK(s3d_instance_translate - (inst1, S3D_WORLD_TRANSFORM, f3(pos, 2.f, 0.f, 0.f)), RES_OK); + CHK(s3d_shape_enable(cube, 1) == RES_OK); + CHK(s3d_scene_attach_shape(scn2, cube) == RES_OK); + CHK(s3d_scene_instantiate(scn2, &inst0) == RES_OK); + CHK(s3d_scene_instantiate(scn2, &inst1) == RES_OK); + CHK(s3d_shape_get_id(inst0, &iinst0) == RES_OK); + CHK(s3d_shape_get_id(inst1, &iinst1) == RES_OK); + CHK(s3d_instance_translate + (inst0, S3D_WORLD_TRANSFORM, f3(pos,-2.f, 0.f, 0.f)) == RES_OK); + CHK(s3d_instance_translate + (inst1, S3D_WORLD_TRANSFORM, f3(pos, 2.f, 0.f, 0.f)) == RES_OK); - CHECK(s3d_scene_attach_shape(scn, inst0), RES_OK); - CHECK(s3d_scene_attach_shape(scn, inst1), RES_OK); - CHECK(s3d_scene_attach_shape(scn3, inst0), RES_OK); - CHECK(s3d_scene_attach_shape(scn3, inst1), RES_OK); + CHK(s3d_scene_attach_shape(scn, inst0) == RES_OK); + CHK(s3d_scene_attach_shape(scn, inst1) == RES_OK); + CHK(s3d_scene_attach_shape(scn3, inst0) == RES_OK); + CHK(s3d_scene_attach_shape(scn3, inst1) == RES_OK); - CHECK(s3d_scene_view_create(scn, S3D_SAMPLE, &scnview), RES_OK); - CHECK(s3d_scene_view_create(scn3, S3D_SAMPLE, &scnview3), RES_OK); + CHK(s3d_scene_view_create(scn, S3D_SAMPLE, &scnview) == RES_OK); + CHK(s3d_scene_view_create(scn3, S3D_SAMPLE, &scnview3) == RES_OK); - CHECK(s3d_scene_detach_shape(scn2, cube), RES_OK); + CHK(s3d_scene_detach_shape(scn2, cube) == RES_OK); nsamps_cube = 0; nsamps_inst0 = 0; @@ -593,160 +593,160 @@ test_sample srand(0); FOR_EACH(i, 0, NSAMPS) { u = rand_canonic(), v = rand_canonic(), w = rand_canonic(); - CHECK(s3d_scene_view_sample(scnview, u, v, w, &prims[i], st), RES_OK); + CHK(s3d_scene_view_sample(scnview, u, v, w, &prims[i], st) == RES_OK); if(prims[i].inst_id != S3D_INVALID_ID) { - CHECK(prims[i].geom_id, icube); + CHK(prims[i].geom_id == icube); if(prims[i].inst_id == iinst0) { ++nsamps_inst0; } else { - CHECK(prims[i].inst_id, iinst1); + CHK(prims[i].inst_id == iinst1); ++nsamps_inst1; } } else { if(prims[i].geom_id == icube) { ++nsamps_cube; } else { - CHECK(prims[i].geom_id, iplane); + CHK(prims[i].geom_id == iplane); ++nsamps_plane; } } } - NCHECK(nsamps_cube, 0); - NCHECK(nsamps_inst0, 0); - NCHECK(nsamps_inst1, 0); - NCHECK(nsamps_plane, 0); + CHK(nsamps_cube != 0); + CHK(nsamps_inst0 != 0); + CHK(nsamps_inst1 != 0); + CHK(nsamps_plane != 0); nsamps_inst0 = 0; nsamps_inst1 = 0; srand(0); FOR_EACH(i, 0, NSAMPS) { u = rand_canonic(), v = rand_canonic(), w = rand_canonic(); - CHECK(s3d_scene_view_sample(scnview3, u, v, w, &prims[i], st), RES_OK); - CHECK(prims[i].geom_id, icube); + CHK(s3d_scene_view_sample(scnview3, u, v, w, &prims[i], st) == RES_OK); + CHK(prims[i].geom_id == icube); if(prims[i].inst_id == iinst0) { ++nsamps_inst0; } else { - CHECK(prims[i].inst_id, iinst1); + CHK(prims[i].inst_id == iinst1); ++nsamps_inst1; } } - NCHECK(nsamps_inst0, 0); - NCHECK(nsamps_inst1, 0); + CHK(nsamps_inst0 != 0); + CHK(nsamps_inst1 != 0); - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); - CHECK(s3d_scene_view_create(scn, S3D_SAMPLE, &scnview), RES_OK); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); + CHK(s3d_scene_view_create(scn, S3D_SAMPLE, &scnview) == RES_OK); nsamps_cube = 0; nsamps_plane = 0; srand(0); FOR_EACH(i, 0, NSAMPS) { u = rand_canonic(), v = rand_canonic(), w = rand_canonic(); - CHECK(s3d_scene_view_sample(scnview, u, v, w, &prims[i], st), RES_OK); - CHECK(prims[i].inst_id, S3D_INVALID_ID); + CHK(s3d_scene_view_sample(scnview, u, v, w, &prims[i], st) == RES_OK); + CHK(prims[i].inst_id == S3D_INVALID_ID); if(prims[i].geom_id == icube) { ++nsamps_cube; } else { - CHECK(prims[i].geom_id, iplane); + CHK(prims[i].geom_id == iplane); ++nsamps_plane; } } - NCHECK(nsamps_cube, 0); - NCHECK(nsamps_plane, 0); + CHK(nsamps_cube != 0); + CHK(nsamps_plane != 0); nsamps_inst0 = 0; nsamps_inst1 = 0; srand(0); FOR_EACH(i, 0, NSAMPS) { u = rand_canonic(), v = rand_canonic(), w = rand_canonic(); - CHECK(s3d_scene_view_sample(scnview3, u, v, w, &prims[i], st), RES_OK); - CHECK(prims[i].geom_id, icube); + CHK(s3d_scene_view_sample(scnview3, u, v, w, &prims[i], st) == RES_OK); + CHK(prims[i].geom_id == icube); if(prims[i].inst_id == iinst0) { ++nsamps_inst0; } else { - CHECK(prims[i].inst_id, iinst1); + CHK(prims[i].inst_id == iinst1); ++nsamps_inst1; } } - NCHECK(nsamps_inst0, 0); - NCHECK(nsamps_inst1, 0); + CHK(nsamps_inst0 != 0); + CHK(nsamps_inst1 != 0); - CHECK(s3d_scene_attach_shape(scn2, plane), RES_OK); + CHK(s3d_scene_attach_shape(scn2, plane) == RES_OK); - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); - CHECK(s3d_scene_view_create(scn, S3D_SAMPLE, &scnview), RES_OK); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); + CHK(s3d_scene_view_create(scn, S3D_SAMPLE, &scnview) == RES_OK); FOR_EACH(i, 0, NSAMPS) { u = rand_canonic(), v = rand_canonic(), w = rand_canonic(); - CHECK(s3d_scene_view_sample(scnview, u, v, w, &prims[i], st), RES_OK); + CHK(s3d_scene_view_sample(scnview, u, v, w, &prims[i], st) == RES_OK); if(prims[i].inst_id != S3D_INVALID_ID) { - CHECK(prims[i].geom_id, iplane); + CHK(prims[i].geom_id == iplane); if(prims[i].inst_id == iinst0) { ++nsamps_inst0; } else { - CHECK(prims[i].inst_id, iinst1); + CHK(prims[i].inst_id == iinst1); ++nsamps_inst1; } } else { if(prims[i].geom_id == icube) { ++nsamps_cube; } else { - CHECK(prims[i].geom_id, iplane); + CHK(prims[i].geom_id == iplane); ++nsamps_plane; } } } - NCHECK(nsamps_cube, 0); - NCHECK(nsamps_inst0, 0); - NCHECK(nsamps_inst1, 0); - NCHECK(nsamps_plane, 0); + CHK(nsamps_cube != 0); + CHK(nsamps_inst0 != 0); + CHK(nsamps_inst1 != 0); + CHK(nsamps_plane != 0); nsamps_inst0 = 0; nsamps_inst1 = 0; srand(0); FOR_EACH(i, 0, NSAMPS) { u = rand_canonic(), v = rand_canonic(), w = rand_canonic(); - CHECK(s3d_scene_view_sample(scnview3, u, v, w, &prims[i], st), RES_OK); - CHECK(prims[i].geom_id, icube); + CHK(s3d_scene_view_sample(scnview3, u, v, w, &prims[i], st) == RES_OK); + CHK(prims[i].geom_id == icube); if(prims[i].inst_id == iinst0) { ++nsamps_inst0; } else { - CHECK(prims[i].inst_id, iinst1); + CHK(prims[i].inst_id == iinst1); ++nsamps_inst1; } } - NCHECK(nsamps_inst0, 0); - NCHECK(nsamps_inst1, 0); + CHK(nsamps_inst0 != 0); + CHK(nsamps_inst1 != 0); - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); - CHECK(s3d_scene_view_ref_put(scnview3), RES_OK); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); + CHK(s3d_scene_view_ref_put(scnview3) == RES_OK); - CHECK(s3d_scene_view_create(scn3, S3D_SAMPLE, &scnview3), RES_OK); + CHK(s3d_scene_view_create(scn3, S3D_SAMPLE, &scnview3) == RES_OK); nsamps_inst0 = 0; nsamps_inst1 = 0; srand(0); FOR_EACH(i, 0, NSAMPS) { u = rand_canonic(), v = rand_canonic(), w = rand_canonic(); - CHECK(s3d_scene_view_sample(scnview3, u, v, w, &prims[i], st), RES_OK); - CHECK(prims[i].geom_id, iplane); + CHK(s3d_scene_view_sample(scnview3, u, v, w, &prims[i], st) == RES_OK); + CHK(prims[i].geom_id == iplane); if(prims[i].inst_id == iinst0) { ++nsamps_inst0; } else { - CHECK(prims[i].inst_id, iinst1); + CHK(prims[i].inst_id == iinst1); ++nsamps_inst1; } } - NCHECK(nsamps_inst0, 0); - NCHECK(nsamps_inst1, 0); + CHK(nsamps_inst0 != 0); + CHK(nsamps_inst1 != 0); - CHECK(s3d_scene_view_ref_put(scnview3), RES_OK); + CHK(s3d_scene_view_ref_put(scnview3) == RES_OK); - CHECK(s3d_scene_ref_put(scn), RES_OK); - CHECK(s3d_scene_ref_put(scn2), RES_OK); - CHECK(s3d_scene_ref_put(scn3), RES_OK); - CHECK(s3d_shape_ref_put(inst0), RES_OK); - CHECK(s3d_shape_ref_put(inst1), RES_OK); + CHK(s3d_scene_ref_put(scn) == RES_OK); + CHK(s3d_scene_ref_put(scn2) == RES_OK); + CHK(s3d_scene_ref_put(scn3) == RES_OK); + CHK(s3d_shape_ref_put(inst0) == RES_OK); + CHK(s3d_shape_ref_put(inst1) == RES_OK); } static void @@ -775,226 +775,226 @@ test_get_primitive int inst0_prims[12]; int inst1_prims[12]; - CHECK(s3d_scene_create(dev, &scn), RES_OK); - CHECK(s3d_scene_create(dev, &scn2), RES_OK); - CHECK(s3d_scene_create(dev, &scn3), RES_OK); - CHECK(s3d_scene_attach_shape(scn, cube), RES_OK); - CHECK(s3d_scene_attach_shape(scn, plane), RES_OK); - CHECK(s3d_shape_get_id(cube, &icube), RES_OK); - CHECK(s3d_shape_get_id(plane, &iplane), RES_OK); + CHK(s3d_scene_create(dev, &scn) == RES_OK); + CHK(s3d_scene_create(dev, &scn2) == RES_OK); + CHK(s3d_scene_create(dev, &scn3) == RES_OK); + CHK(s3d_scene_attach_shape(scn, cube) == RES_OK); + CHK(s3d_scene_attach_shape(scn, plane) == RES_OK); + CHK(s3d_shape_get_id(cube, &icube) == RES_OK); + CHK(s3d_shape_get_id(plane, &iplane) == RES_OK); - CHECK(s3d_scene_view_create(scn, S3D_TRACE, &scnview), RES_OK); - CHECK(s3d_scene_view_get_primitive(scnview, 0, &prim), RES_BAD_OP); - CHECK(s3d_scene_view_primitives_count(scnview, &nprims), RES_OK); - CHECK(nprims, 14); - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); + CHK(s3d_scene_view_create(scn, S3D_TRACE, &scnview) == RES_OK); + CHK(s3d_scene_view_get_primitive(scnview, 0, &prim) == RES_BAD_OP); + CHK(s3d_scene_view_primitives_count(scnview, &nprims) == RES_OK); + CHK(nprims == 14); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); - CHECK(s3d_scene_view_create(scn, S3D_GET_PRIMITIVE, &scnview), RES_OK); - CHECK(s3d_scene_view_primitives_count(scnview, &nprims), RES_OK); - CHECK(nprims, 14); + CHK(s3d_scene_view_create(scn, S3D_GET_PRIMITIVE, &scnview) == RES_OK); + CHK(s3d_scene_view_primitives_count(scnview, &nprims) == RES_OK); + CHK(nprims == 14); memset(cube_prims, 0, sizeof(cube_prims)); memset(plane_prims, 0, sizeof(plane_prims)); FOR_EACH(i, 0, nprims) { - CHECK(s3d_scene_view_get_primitive(scnview, i, &prim), RES_OK); - CHECK(prim.inst_id, S3D_INVALID_ID); - CHECK(prim.scene_prim_id, i); + CHK(s3d_scene_view_get_primitive(scnview, i, &prim) == RES_OK); + CHK(prim.inst_id == S3D_INVALID_ID); + CHK(prim.scene_prim_id == i); if(prim.geom_id == icube) { cube_prims[prim.prim_id] = 1; } else { - CHECK(prim.geom_id, iplane); + CHK(prim.geom_id == iplane); plane_prims[prim.prim_id] = 1; } } - FOR_EACH(i, 0, 12) CHECK(cube_prims[i], 1); - FOR_EACH(i, 0, 2) CHECK(plane_prims[i], 1); + FOR_EACH(i, 0, 12) CHK(cube_prims[i] == 1); + FOR_EACH(i, 0, 2) CHK(plane_prims[i] == 1); - CHECK(s3d_scene_detach_shape(scn, cube), RES_OK); - CHECK(s3d_scene_view_primitives_count(scnview, &nprims), RES_OK); - CHECK(nprims, 14); + CHK(s3d_scene_detach_shape(scn, cube) == RES_OK); + CHK(s3d_scene_view_primitives_count(scnview, &nprims) == RES_OK); + CHK(nprims == 14); memset(cube_prims, 0, sizeof(cube_prims)); memset(plane_prims, 0, sizeof(plane_prims)); FOR_EACH(i, 0, nprims) { - CHECK(s3d_scene_view_get_primitive(scnview, i, &prim), RES_OK); - CHECK(prim.inst_id, S3D_INVALID_ID); - CHECK(prim.scene_prim_id, i); + CHK(s3d_scene_view_get_primitive(scnview, i, &prim) == RES_OK); + CHK(prim.inst_id == S3D_INVALID_ID); + CHK(prim.scene_prim_id == i); if(prim.geom_id == icube) { cube_prims[prim.prim_id] = 1; } else { - CHECK(prim.geom_id, iplane); + CHK(prim.geom_id == iplane); plane_prims[prim.prim_id] = 1; } } - FOR_EACH(i, 0, 12) CHECK(cube_prims[i], 1); - FOR_EACH(i, 0, 2) CHECK(plane_prims[i], 1); + FOR_EACH(i, 0, 12) CHK(cube_prims[i] == 1); + FOR_EACH(i, 0, 2) CHK(plane_prims[i] == 1); - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); - CHECK(s3d_scene_view_create(scn, S3D_GET_PRIMITIVE, &scnview), RES_OK); - CHECK(s3d_scene_view_primitives_count(scnview, &nprims), RES_OK); - CHECK(nprims, 2); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); + CHK(s3d_scene_view_create(scn, S3D_GET_PRIMITIVE, &scnview) == RES_OK); + CHK(s3d_scene_view_primitives_count(scnview, &nprims) == RES_OK); + CHK(nprims == 2); memset(plane_prims, 0, sizeof(plane_prims)); FOR_EACH(i, 0, nprims) { - CHECK(s3d_scene_view_get_primitive(scnview, i, &prim), RES_OK); - CHECK(prim.inst_id, S3D_INVALID_ID); - CHECK(prim.scene_prim_id, i); - CHECK(prim.geom_id, iplane); + CHK(s3d_scene_view_get_primitive(scnview, i, &prim) == RES_OK); + CHK(prim.inst_id == S3D_INVALID_ID); + CHK(prim.scene_prim_id == i); + CHK(prim.geom_id == iplane); plane_prims[prim.prim_id] = 1; } - FOR_EACH(i, 0, 2) CHECK(plane_prims[i], 1); + FOR_EACH(i, 0, 2) CHK(plane_prims[i] == 1); - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); - CHECK(s3d_scene_attach_shape(scn, cube), RES_OK); + CHK(s3d_scene_attach_shape(scn, cube) == RES_OK); - CHECK(s3d_scene_attach_shape(scn2, plane), RES_OK); - CHECK(s3d_scene_instantiate(scn2, &inst0), RES_OK); - CHECK(s3d_scene_instantiate(scn2, &inst1), RES_OK); - CHECK(s3d_shape_get_id(inst0, &iinst0), RES_OK); - CHECK(s3d_shape_get_id(inst1, &iinst1), RES_OK); - CHECK(s3d_instance_translate - (inst0, S3D_WORLD_TRANSFORM, f3(pos,-2.f, 0.f, 0.f)), RES_OK); - CHECK(s3d_instance_translate - (inst1, S3D_WORLD_TRANSFORM, f3(pos, 2.f, 0.f, 0.f)), RES_OK); + CHK(s3d_scene_attach_shape(scn2, plane) == RES_OK); + CHK(s3d_scene_instantiate(scn2, &inst0) == RES_OK); + CHK(s3d_scene_instantiate(scn2, &inst1) == RES_OK); + CHK(s3d_shape_get_id(inst0, &iinst0) == RES_OK); + CHK(s3d_shape_get_id(inst1, &iinst1) == RES_OK); + CHK(s3d_instance_translate + (inst0, S3D_WORLD_TRANSFORM, f3(pos,-2.f, 0.f, 0.f)) == RES_OK); + CHK(s3d_instance_translate + (inst1, S3D_WORLD_TRANSFORM, f3(pos, 2.f, 0.f, 0.f)) == RES_OK); - CHECK(s3d_scene_attach_shape(scn, inst0), RES_OK); - CHECK(s3d_scene_attach_shape(scn3, inst0), RES_OK); - CHECK(s3d_scene_attach_shape(scn3, inst1), RES_OK); + CHK(s3d_scene_attach_shape(scn, inst0) == RES_OK); + CHK(s3d_scene_attach_shape(scn3, inst0) == RES_OK); + CHK(s3d_scene_attach_shape(scn3, inst1) == RES_OK); - CHECK(s3d_scene_view_create(scn, S3D_GET_PRIMITIVE, &scnview), RES_OK); - CHECK(s3d_scene_view_create(scn3, S3D_GET_PRIMITIVE, &scnview3), RES_OK); + CHK(s3d_scene_view_create(scn, S3D_GET_PRIMITIVE, &scnview) == RES_OK); + CHK(s3d_scene_view_create(scn3, S3D_GET_PRIMITIVE, &scnview3) == RES_OK); - CHECK(s3d_scene_clear(scn2), RES_OK); + CHK(s3d_scene_clear(scn2) == RES_OK); - CHECK(s3d_scene_view_primitives_count(scnview, &nprims), RES_OK); - CHECK(nprims, 16); + CHK(s3d_scene_view_primitives_count(scnview, &nprims) == RES_OK); + CHK(nprims == 16); memset(plane_prims, 0, sizeof(plane_prims)); memset(cube_prims, 0, sizeof(cube_prims)); memset(inst0_prims, 0, sizeof(inst0_prims)); FOR_EACH(i, 0, nprims) { - CHECK(s3d_scene_view_get_primitive(scnview, i, &prim), RES_OK); + CHK(s3d_scene_view_get_primitive(scnview, i, &prim) == RES_OK); if(prim.inst_id != S3D_INVALID_ID) { - CHECK(prim.inst_id, iinst0); - CHECK(prim.geom_id, iplane); + CHK(prim.inst_id == iinst0); + CHK(prim.geom_id == iplane); inst0_prims[prim.prim_id] = 1; } else { if(prim.geom_id == icube) { cube_prims[prim.prim_id] = 1; } else { - CHECK(prim.geom_id, iplane); + CHK(prim.geom_id == iplane); plane_prims[prim.prim_id] = 1; } } } - FOR_EACH(i, 0, 12) CHECK(cube_prims[i], 1); - FOR_EACH(i, 0, 2) CHECK(plane_prims[i], 1); - FOR_EACH(i, 0, 2) CHECK(inst0_prims[i], 1); + FOR_EACH(i, 0, 12) CHK(cube_prims[i] == 1); + FOR_EACH(i, 0, 2) CHK(plane_prims[i] == 1); + FOR_EACH(i, 0, 2) CHK(inst0_prims[i] == 1); - CHECK(s3d_scene_view_primitives_count(scnview3, &nprims), RES_OK); - CHECK(nprims, 4); + CHK(s3d_scene_view_primitives_count(scnview3, &nprims) == RES_OK); + CHK(nprims == 4); memset(inst0_prims, 0, sizeof(inst0_prims)); memset(inst1_prims, 0, sizeof(inst1_prims)); FOR_EACH(i, 0, nprims) { - CHECK(s3d_scene_view_get_primitive(scnview3, i, &prim), RES_OK); - NCHECK(prim.inst_id, S3D_INVALID_ID); - CHECK(prim.geom_id, iplane); + CHK(s3d_scene_view_get_primitive(scnview3, i, &prim) == RES_OK); + CHK(prim.inst_id != S3D_INVALID_ID); + CHK(prim.geom_id == iplane); if(prim.inst_id == iinst0) { inst0_prims[prim.prim_id] = 1; } else { - CHECK(prim.inst_id, iinst1); + CHK(prim.inst_id == iinst1); inst1_prims[prim.prim_id] = 1; } } - FOR_EACH(i, 0, 2) CHECK(inst1_prims[i], 1); - FOR_EACH(i, 0, 2) CHECK(inst1_prims[i], 1); + FOR_EACH(i, 0, 2) CHK(inst1_prims[i] == 1); + FOR_EACH(i, 0, 2) CHK(inst1_prims[i] == 1); - CHECK(s3d_scene_view_ref_put(scnview3), RES_OK); + CHK(s3d_scene_view_ref_put(scnview3) == RES_OK); - CHECK(s3d_scene_view_create(scn3, S3D_GET_PRIMITIVE, &scnview3), RES_OK); - CHECK(s3d_scene_view_primitives_count(scnview3, &nprims), RES_OK); - CHECK(nprims, 0); - CHECK(s3d_scene_view_ref_put(scnview3), RES_OK); + CHK(s3d_scene_view_create(scn3, S3D_GET_PRIMITIVE, &scnview3) == RES_OK); + CHK(s3d_scene_view_primitives_count(scnview3, &nprims) == RES_OK); + CHK(nprims == 0); + CHK(s3d_scene_view_ref_put(scnview3) == RES_OK); - CHECK(s3d_scene_attach_shape(scn2, cube), RES_OK); - CHECK(s3d_scene_view_create(scn3, S3D_GET_PRIMITIVE, &scnview3), RES_OK); + CHK(s3d_scene_attach_shape(scn2, cube) == RES_OK); + CHK(s3d_scene_view_create(scn3, S3D_GET_PRIMITIVE, &scnview3) == RES_OK); - CHECK(s3d_scene_view_primitives_count(scnview, &nprims), RES_OK); - CHECK(nprims, 16); + CHK(s3d_scene_view_primitives_count(scnview, &nprims) == RES_OK); + CHK(nprims == 16); memset(plane_prims, 0, sizeof(plane_prims)); memset(cube_prims, 0, sizeof(cube_prims)); memset(inst0_prims, 0, sizeof(inst0_prims)); FOR_EACH(i, 0, nprims) { - CHECK(s3d_scene_view_get_primitive(scnview, i, &prim), RES_OK); + CHK(s3d_scene_view_get_primitive(scnview, i, &prim) == RES_OK); if(prim.inst_id != S3D_INVALID_ID) { - CHECK(prim.inst_id, iinst0); - CHECK(prim.geom_id, iplane); + CHK(prim.inst_id == iinst0); + CHK(prim.geom_id == iplane); inst0_prims[prim.prim_id] = 1; } else { if(prim.geom_id == icube) { cube_prims[prim.prim_id] = 1; } else { - CHECK(prim.geom_id, iplane); + CHK(prim.geom_id == iplane); plane_prims[prim.prim_id] = 1; } } } - FOR_EACH(i, 0, 12) CHECK(cube_prims[i], 1); - FOR_EACH(i, 0, 2) CHECK(plane_prims[i], 1); - FOR_EACH(i, 0, 2) CHECK(inst0_prims[i], 1); + FOR_EACH(i, 0, 12) CHK(cube_prims[i] == 1); + FOR_EACH(i, 0, 2) CHK(plane_prims[i] == 1); + FOR_EACH(i, 0, 2) CHK(inst0_prims[i] == 1); - CHECK(s3d_scene_view_primitives_count(scnview3, &nprims), RES_OK); - CHECK(nprims, 24); + CHK(s3d_scene_view_primitives_count(scnview3, &nprims) == RES_OK); + CHK(nprims == 24); memset(inst0_prims, 0, sizeof(inst0_prims)); memset(inst1_prims, 0, sizeof(inst1_prims)); FOR_EACH(i, 0, nprims) { - CHECK(s3d_scene_view_get_primitive(scnview3, i, &prim), RES_OK); - NCHECK(prim.inst_id, S3D_INVALID_ID); - CHECK(prim.geom_id, icube); + CHK(s3d_scene_view_get_primitive(scnview3, i, &prim) == RES_OK); + CHK(prim.inst_id != S3D_INVALID_ID); + CHK(prim.geom_id == icube); if(prim.inst_id == iinst0) { inst0_prims[prim.prim_id] = 1; } else { - CHECK(prim.inst_id, iinst1); + CHK(prim.inst_id == iinst1); inst1_prims[prim.prim_id] = 1; } } - FOR_EACH(i, 0, 12) CHECK(inst1_prims[i], 1); - FOR_EACH(i, 0, 12) CHECK(inst1_prims[i], 1); + FOR_EACH(i, 0, 12) CHK(inst1_prims[i] == 1); + FOR_EACH(i, 0, 12) CHK(inst1_prims[i] == 1); - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); - CHECK(s3d_scene_view_ref_put(scnview3), RES_OK); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); + CHK(s3d_scene_view_ref_put(scnview3) == RES_OK); - CHECK(s3d_scene_view_create(scn, S3D_GET_PRIMITIVE, &scnview), RES_OK); + CHK(s3d_scene_view_create(scn, S3D_GET_PRIMITIVE, &scnview) == RES_OK); - CHECK(s3d_scene_view_primitives_count(scnview, &nprims), RES_OK); - CHECK(nprims, 26); + CHK(s3d_scene_view_primitives_count(scnview, &nprims) == RES_OK); + CHK(nprims == 26); memset(plane_prims, 0, sizeof(plane_prims)); memset(cube_prims, 0, sizeof(cube_prims)); memset(inst0_prims, 0, sizeof(inst0_prims)); FOR_EACH(i, 0, nprims) { - CHECK(s3d_scene_view_get_primitive(scnview, i, &prim), RES_OK); + CHK(s3d_scene_view_get_primitive(scnview, i, &prim) == RES_OK); if(prim.inst_id != S3D_INVALID_ID) { - CHECK(prim.inst_id, iinst0); - CHECK(prim.geom_id, icube); + CHK(prim.inst_id == iinst0); + CHK(prim.geom_id == icube); inst0_prims[prim.prim_id] = 1; } else { if(prim.geom_id == icube) { cube_prims[prim.prim_id] = 1; } else { - CHECK(prim.geom_id, iplane); + CHK(prim.geom_id == iplane); plane_prims[prim.prim_id] = 1; } } } - FOR_EACH(i, 0, 12) CHECK(cube_prims[i], 1); - FOR_EACH(i, 0, 2) CHECK(plane_prims[i], 1); - FOR_EACH(i, 0, 12) CHECK(inst0_prims[i], 1); + FOR_EACH(i, 0, 12) CHK(cube_prims[i] == 1); + FOR_EACH(i, 0, 2) CHK(plane_prims[i] == 1); + FOR_EACH(i, 0, 12) CHK(inst0_prims[i] == 1); - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); - CHECK(s3d_shape_ref_put(inst0), RES_OK); - CHECK(s3d_shape_ref_put(inst1), RES_OK); - CHECK(s3d_scene_ref_put(scn), RES_OK); - CHECK(s3d_scene_ref_put(scn2), RES_OK); - CHECK(s3d_scene_ref_put(scn3), RES_OK); + CHK(s3d_shape_ref_put(inst0) == RES_OK); + CHK(s3d_shape_ref_put(inst1) == RES_OK); + CHK(s3d_scene_ref_put(scn) == RES_OK); + CHK(s3d_scene_ref_put(scn2) == RES_OK); + CHK(s3d_scene_ref_put(scn3) == RES_OK); } /******************************************************************************* @@ -1013,7 +1013,7 @@ main(int argc, char** argv) mem_init_proxy_allocator(&allocator, &mem_default_allocator); - CHECK(s3d_device_create(NULL, &allocator, 1, &dev), RES_OK); + CHK(s3d_device_create(NULL, &allocator, 1, &dev) == RES_OK); vdata.type = S3D_FLOAT3; vdata.usage = S3D_POSITION; @@ -1021,28 +1021,28 @@ main(int argc, char** argv) ctx.ids = cube_ids; ctx.verts = cube_verts; - CHECK(s3d_shape_create_mesh(dev, &cube), RES_OK); - CHECK(s3d_mesh_setup_indexed_vertices - (cube, cube_ntris, get_ids, cube_nverts, &vdata, 1, &ctx), RES_OK); + CHK(s3d_shape_create_mesh(dev, &cube) == RES_OK); + CHK(s3d_mesh_setup_indexed_vertices + (cube, cube_ntris, get_ids, cube_nverts, &vdata, 1, &ctx) == RES_OK); ctx.ids = plane_ids; ctx.verts = plane_verts; - CHECK(s3d_shape_create_mesh(dev, &plane), RES_OK); - CHECK(s3d_mesh_setup_indexed_vertices - (plane, plane_ntris, get_ids, plane_nverts, &vdata, 1, &ctx), RES_OK); + CHK(s3d_shape_create_mesh(dev, &plane) == RES_OK); + CHK(s3d_mesh_setup_indexed_vertices + (plane, plane_ntris, get_ids, plane_nverts, &vdata, 1, &ctx) == RES_OK); test_miscellaneous(dev, cube, plane); test_trace_ray(dev, cube, plane); test_sample(dev, cube, plane); test_get_primitive(dev, cube, plane); - CHECK(s3d_shape_ref_put(cube), RES_OK); - CHECK(s3d_shape_ref_put(plane), RES_OK); - CHECK(s3d_device_ref_put(dev), RES_OK); + CHK(s3d_shape_ref_put(cube) == RES_OK); + CHK(s3d_shape_ref_put(plane) == RES_OK); + CHK(s3d_device_ref_put(dev) == RES_OK); check_memory_allocator(&allocator); mem_shutdown_proxy_allocator(&allocator); - CHECK(mem_allocated_size(), 0); + CHK(mem_allocated_size() == 0); return 0; } diff --git a/src/test_s3d_seams.c b/src/test_s3d_seams.c @@ -50,8 +50,8 @@ get_ids(const unsigned itri, unsigned ids[3], void* data) { const unsigned id = itri * 3; struct desc* desc = data; - NCHECK(desc, NULL); - NCHECK(ids, NULL); + CHK(desc != NULL); + CHK(ids != NULL); ids[0] = desc->indices[id + 0]; ids[1] = desc->indices[id + 1]; ids[2] = desc->indices[id + 2]; @@ -61,8 +61,8 @@ static INLINE void get_position(const unsigned ivert, float position[3], void* data) { struct desc* desc = data; - NCHECK(desc, NULL); - NCHECK(position, NULL); + CHK(desc != NULL); + CHK(position != NULL); position[0] = desc->vertices[ivert * 3 + 0]; position[1] = desc->vertices[ivert * 3 + 1]; position[2] = desc->vertices[ivert * 3 + 2]; @@ -72,7 +72,7 @@ static INLINE void get_normal(const unsigned ivert, float normal[3], void* data) { (void) ivert, (void) data; - NCHECK(normal, NULL); + CHK(normal != NULL); normal[0] = 1.f; normal[1] = 0.f; normal[2] = 0.f; @@ -82,7 +82,7 @@ static INLINE void get_uv(const unsigned ivert, float uv[2], void* data) { (void) ivert, (void) data; - NCHECK(uv, NULL); + CHK(uv != NULL); uv[0] = -1.f; uv[1] = 1.f; } @@ -91,8 +91,8 @@ static INLINE void get_polygon_vertices(const size_t ivert, double position[2], void* ctx) { const double* verts = ctx; - NCHECK(position, NULL); - NCHECK(ctx, NULL); + CHK(position != NULL); + CHK(ctx != NULL); position[0] = verts[ivert * 2 + 0]; position[1] = verts[ivert * 2 + 1]; } @@ -142,24 +142,24 @@ check_ray(int use_double) mem_init_proxy_allocator(&allocator, &mem_default_allocator); - CHECK(s3d_device_create(NULL, &allocator, 1, &dev), RES_OK); - CHECK(s3d_scene_create(dev, &scn), RES_OK); - CHECK(s3d_scene_create(dev, &scn2), RES_OK); + CHK(s3d_device_create(NULL, &allocator, 1, &dev) == RES_OK); + CHK(s3d_scene_create(dev, &scn) == RES_OK); + CHK(s3d_scene_create(dev, &scn2) == RES_OK); attribs.usage = S3D_POSITION; attribs.type = S3D_FLOAT3; attribs.get = get_position; - CHECK(s3d_shape_create_mesh(dev, &square), RES_OK); - CHECK(s3d_mesh_setup_indexed_vertices(square, SQUARE_NTRIS__, get_ids, - SQUARE_NVERTS__, &attribs, 1, (void*) &SQUARE_DESC__), RES_OK); - CHECK(s3d_scene_attach_shape(scn, square), RES_OK); + CHK(s3d_shape_create_mesh(dev, &square) == RES_OK); + CHK(s3d_mesh_setup_indexed_vertices(square, SQUARE_NTRIS__, get_ids, + SQUARE_NVERTS__, &attribs, 1, (void*) &SQUARE_DESC__) == RES_OK); + CHK(s3d_scene_attach_shape(scn, square) == RES_OK); s3d_scene_instantiate(scn, &inst); - CHECK(s3d_instance_set_transform(inst, transformf), RES_OK); - CHECK(s3d_scene_attach_shape(scn2, inst), RES_OK); + CHK(s3d_instance_set_transform(inst, transformf) == RES_OK); + CHK(s3d_scene_attach_shape(scn2, inst) == RES_OK); - CHECK(s3d_scene_view_create(scn2, S3D_TRACE, &scnview), RES_OK); - CHECK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit), RES_OK); + CHK(s3d_scene_view_create(scn2, S3D_TRACE, &scnview) == RES_OK); + CHK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit) == RES_OK); printf("\nRaytrace using %s: ", use_double ? "double" : "float"); if (!S3D_HIT_NONE(&hit)) { f3_add(pos, org, f3_mulf(pos, dir, hit.distance)); @@ -167,16 +167,16 @@ check_ray(int use_double) } else { printf("No hit\n"); } - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); - CHECK(s3d_scene_ref_put(scn), RES_OK); - CHECK(s3d_scene_ref_put(scn2), RES_OK); - CHECK(s3d_device_ref_put(dev), RES_OK); - CHECK(s3d_shape_ref_put(square), RES_OK); - CHECK(s3d_shape_ref_put(inst), RES_OK); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); + CHK(s3d_scene_ref_put(scn) == RES_OK); + CHK(s3d_scene_ref_put(scn2) == RES_OK); + CHK(s3d_device_ref_put(dev) == RES_OK); + CHK(s3d_shape_ref_put(square) == RES_OK); + CHK(s3d_shape_ref_put(inst) == RES_OK); check_memory_allocator(&allocator); mem_shutdown_proxy_allocator(&allocator); - CHECK(mem_allocated_size(), 0); + CHK(mem_allocated_size() == 0); return S3D_HIT_NONE(&hit) ? RES_UNKNOWN_ERR : RES_OK; } @@ -185,8 +185,8 @@ int main(int argc, char** argv) { (void)argc, (void)argv; - CHECK(check_ray(1), RES_OK); - CHECK(check_ray(0), RES_OK); + CHK(check_ray(1) == RES_OK); + CHK(check_ray(0) == RES_OK); return 0; } diff --git a/src/test_s3d_shape.c b/src/test_s3d_shape.c @@ -73,303 +73,303 @@ main(int argc, char** argv) mem_init_proxy_allocator(&allocator, &mem_default_allocator); - CHECK(s3d_device_create(NULL, &allocator, 0, &dev), RES_OK); - CHECK(s3d_scene_create(dev, &scn), RES_OK); - - CHECK(s3d_shape_create_mesh(NULL, NULL), RES_BAD_ARG); - CHECK(s3d_shape_create_mesh(dev, NULL), RES_BAD_ARG); - CHECK(s3d_shape_create_mesh(NULL, &shape), RES_BAD_ARG); - CHECK(s3d_shape_create_mesh(dev, &shape), RES_OK); - - CHECK(s3d_shape_get_id(NULL, NULL), RES_BAD_ARG); - CHECK(s3d_shape_get_id(shape, NULL), RES_BAD_ARG); - CHECK(s3d_shape_get_id(NULL, &id), RES_BAD_ARG); - CHECK(s3d_shape_get_id(shape, &id), RES_OK); - NCHECK(id, S3D_INVALID_ID); - - CHECK(s3d_scene_attach_shape(NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_attach_shape(scn, NULL), RES_BAD_ARG); - CHECK(s3d_scene_attach_shape(NULL, shape), RES_BAD_ARG); - CHECK(s3d_scene_attach_shape(scn, shape), RES_OK); - - CHECK(s3d_scene_detach_shape(NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_detach_shape(scn, NULL), RES_BAD_ARG); - CHECK(s3d_scene_detach_shape(NULL, shape), RES_BAD_ARG); - CHECK(s3d_scene_detach_shape(scn, shape), RES_OK); + CHK(s3d_device_create(NULL, &allocator, 0, &dev) == RES_OK); + CHK(s3d_scene_create(dev, &scn) == RES_OK); + + CHK(s3d_shape_create_mesh(NULL, NULL) == RES_BAD_ARG); + CHK(s3d_shape_create_mesh(dev, NULL) == RES_BAD_ARG); + CHK(s3d_shape_create_mesh(NULL, &shape) == RES_BAD_ARG); + CHK(s3d_shape_create_mesh(dev, &shape) == RES_OK); + + CHK(s3d_shape_get_id(NULL, NULL) == RES_BAD_ARG); + CHK(s3d_shape_get_id(shape, NULL) == RES_BAD_ARG); + CHK(s3d_shape_get_id(NULL, &id) == RES_BAD_ARG); + CHK(s3d_shape_get_id(shape, &id) == RES_OK); + CHK(id != S3D_INVALID_ID); + + CHK(s3d_scene_attach_shape(NULL, NULL) == RES_BAD_ARG); + CHK(s3d_scene_attach_shape(scn, NULL) == RES_BAD_ARG); + CHK(s3d_scene_attach_shape(NULL, shape) == RES_BAD_ARG); + CHK(s3d_scene_attach_shape(scn, shape) == RES_OK); + + CHK(s3d_scene_detach_shape(NULL, NULL) == RES_BAD_ARG); + CHK(s3d_scene_detach_shape(scn, NULL) == RES_BAD_ARG); + CHK(s3d_scene_detach_shape(NULL, shape) == RES_BAD_ARG); + CHK(s3d_scene_detach_shape(scn, shape) == RES_OK); attribs[0].type = S3D_FLOAT3; attribs[0].usage = S3D_POSITION; attribs[0].get = cbox_get_position; - CHECK(s3d_mesh_setup_indexed_vertices - (NULL, 0, NULL, 0, NULL, 1, data), RES_BAD_ARG); - CHECK(s3d_mesh_setup_indexed_vertices - (shape, 0, NULL, 0, NULL, 1, data), RES_BAD_ARG); - CHECK(s3d_mesh_setup_indexed_vertices - (NULL, cbox_ntris, NULL, 0, NULL, 1, data), RES_BAD_ARG); - CHECK(s3d_mesh_setup_indexed_vertices - (shape, cbox_ntris, NULL, 0, NULL, 1, data), RES_BAD_ARG); - CHECK(s3d_mesh_setup_indexed_vertices - (NULL, 0, cbox_get_ids, 0, NULL, 1, data), RES_BAD_ARG); - CHECK(s3d_mesh_setup_indexed_vertices - (shape, 0, cbox_get_ids, 0, NULL, 1, data), RES_BAD_ARG); - CHECK(s3d_mesh_setup_indexed_vertices - (NULL, cbox_ntris, cbox_get_ids, 0, NULL, 1, data), RES_BAD_ARG); - CHECK(s3d_mesh_setup_indexed_vertices - (shape, cbox_ntris, cbox_get_ids, 0, NULL, 1, data), RES_BAD_ARG); - CHECK(s3d_mesh_setup_indexed_vertices - (NULL, 0, NULL, cbox_nverts, NULL, 1, data), RES_BAD_ARG); - CHECK(s3d_mesh_setup_indexed_vertices - (shape, 0, NULL, cbox_nverts, NULL, 1, data), RES_BAD_ARG); - CHECK(s3d_mesh_setup_indexed_vertices - (NULL, cbox_ntris, NULL, cbox_nverts, NULL, 1, data), RES_BAD_ARG); - CHECK(s3d_mesh_setup_indexed_vertices - (shape, cbox_ntris, NULL, cbox_nverts, NULL, 1, data), RES_BAD_ARG); - CHECK(s3d_mesh_setup_indexed_vertices - (NULL, 0, cbox_get_ids, cbox_nverts, NULL, 1, data), RES_BAD_ARG); - CHECK(s3d_mesh_setup_indexed_vertices - (shape, 0, cbox_get_ids, cbox_nverts, NULL, 1, data), RES_BAD_ARG); - CHECK(s3d_mesh_setup_indexed_vertices - (NULL, cbox_ntris, cbox_get_ids, cbox_nverts, NULL, 1, data), RES_BAD_ARG); - CHECK(s3d_mesh_setup_indexed_vertices - (shape, cbox_ntris, cbox_get_ids, cbox_nverts, NULL, 1, data), RES_BAD_ARG); - CHECK(s3d_mesh_setup_indexed_vertices - (NULL, 0, NULL, 0, attribs, 1, data), RES_BAD_ARG); - CHECK(s3d_mesh_setup_indexed_vertices - (shape, 0, NULL, 0, attribs, 1, data), RES_BAD_ARG); - CHECK(s3d_mesh_setup_indexed_vertices - (NULL, cbox_ntris, NULL, 0, attribs, 1, data), RES_BAD_ARG); - CHECK(s3d_mesh_setup_indexed_vertices - (shape, cbox_ntris, NULL, 0, attribs, 1, data), RES_BAD_ARG); - CHECK(s3d_mesh_setup_indexed_vertices - (NULL, 0, cbox_get_ids, 0, attribs, 1, data), RES_BAD_ARG); - CHECK(s3d_mesh_setup_indexed_vertices - (shape, 0, cbox_get_ids, 0, attribs, 1, data), RES_BAD_ARG); - CHECK(s3d_mesh_setup_indexed_vertices - (NULL, cbox_ntris, cbox_get_ids, 0, attribs, 1, data), RES_BAD_ARG); - CHECK(s3d_mesh_setup_indexed_vertices - (shape, cbox_ntris, cbox_get_ids, 0, attribs, 1, data), RES_BAD_ARG); - CHECK(s3d_mesh_setup_indexed_vertices - (NULL, 0, NULL, cbox_nverts, attribs, 1, data), RES_BAD_ARG); - CHECK(s3d_mesh_setup_indexed_vertices - (shape, 0, NULL, cbox_nverts, attribs, 1, data), RES_BAD_ARG); - CHECK(s3d_mesh_setup_indexed_vertices - (NULL, cbox_ntris, NULL, cbox_nverts, attribs, 1, data), RES_BAD_ARG); - CHECK(s3d_mesh_setup_indexed_vertices - (shape, cbox_ntris, NULL, cbox_nverts, attribs, 1, data), RES_BAD_ARG); - CHECK(s3d_mesh_setup_indexed_vertices - (NULL, 0, cbox_get_ids, cbox_nverts, attribs, 1, data), RES_BAD_ARG); - CHECK(s3d_mesh_setup_indexed_vertices - (shape, 0, cbox_get_ids, cbox_nverts, attribs, 1, data), RES_BAD_ARG); - CHECK(s3d_mesh_setup_indexed_vertices - (NULL, cbox_ntris, cbox_get_ids, cbox_nverts, attribs, 1, data), RES_BAD_ARG); - CHECK(s3d_mesh_setup_indexed_vertices - (shape, cbox_ntris, cbox_get_ids, cbox_nverts, attribs, 1, data), RES_OK); - CHECK(s3d_mesh_setup_indexed_vertices - (shape, cbox_ntris, cbox_get_ids, cbox_nverts, attribs, 0, data), RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (NULL, 0, NULL, 0, NULL, 1, data) == RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (shape, 0, NULL, 0, NULL, 1, data) == RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (NULL, cbox_ntris, NULL, 0, NULL, 1, data) == RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (shape, cbox_ntris, NULL, 0, NULL, 1, data) == RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (NULL, 0, cbox_get_ids, 0, NULL, 1, data) == RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (shape, 0, cbox_get_ids, 0, NULL, 1, data) == RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (NULL, cbox_ntris, cbox_get_ids, 0, NULL, 1, data) == RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (shape, cbox_ntris, cbox_get_ids, 0, NULL, 1, data) == RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (NULL, 0, NULL, cbox_nverts, NULL, 1, data) == RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (shape, 0, NULL, cbox_nverts, NULL, 1, data) == RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (NULL, cbox_ntris, NULL, cbox_nverts, NULL, 1, data) == RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (shape, cbox_ntris, NULL, cbox_nverts, NULL, 1, data) == RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (NULL, 0, cbox_get_ids, cbox_nverts, NULL, 1, data) == RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (shape, 0, cbox_get_ids, cbox_nverts, NULL, 1, data) == RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (NULL, cbox_ntris, cbox_get_ids, cbox_nverts, NULL, 1, data) == RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (shape, cbox_ntris, cbox_get_ids, cbox_nverts, NULL, 1, data) == RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (NULL, 0, NULL, 0, attribs, 1, data) == RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (shape, 0, NULL, 0, attribs, 1, data) == RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (NULL, cbox_ntris, NULL, 0, attribs, 1, data) == RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (shape, cbox_ntris, NULL, 0, attribs, 1, data) == RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (NULL, 0, cbox_get_ids, 0, attribs, 1, data) == RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (shape, 0, cbox_get_ids, 0, attribs, 1, data) == RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (NULL, cbox_ntris, cbox_get_ids, 0, attribs, 1, data) == RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (shape, cbox_ntris, cbox_get_ids, 0, attribs, 1, data) == RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (NULL, 0, NULL, cbox_nverts, attribs, 1, data) == RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (shape, 0, NULL, cbox_nverts, attribs, 1, data) == RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (NULL, cbox_ntris, NULL, cbox_nverts, attribs, 1, data) == RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (shape, cbox_ntris, NULL, cbox_nverts, attribs, 1, data) == RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (NULL, 0, cbox_get_ids, cbox_nverts, attribs, 1, data) == RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (shape, 0, cbox_get_ids, cbox_nverts, attribs, 1, data) == RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (NULL, cbox_ntris, cbox_get_ids, cbox_nverts, attribs, 1, data) == RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (shape, cbox_ntris, cbox_get_ids, cbox_nverts, attribs, 1, data) == RES_OK); + CHK(s3d_mesh_setup_indexed_vertices + (shape, cbox_ntris, cbox_get_ids, cbox_nverts, attribs, 0, data) == RES_BAD_ARG); attribs[0] = S3D_VERTEX_DATA_NULL; - CHECK(s3d_mesh_setup_indexed_vertices - (shape, cbox_ntris, cbox_get_ids, cbox_nverts, attribs, 1, data), RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (shape, cbox_ntris, cbox_get_ids, cbox_nverts, attribs, 1, data) == RES_BAD_ARG); attribs[0].type = S3D_FLOAT3; attribs[0].usage = S3D_POSITION; attribs[0].get = S3D_KEEP; - CHECK(s3d_mesh_setup_indexed_vertices - (shape, cbox_ntris, cbox_get_ids, cbox_nverts, attribs, 1, data), RES_OK); + CHK(s3d_mesh_setup_indexed_vertices + (shape, cbox_ntris, cbox_get_ids, cbox_nverts, attribs, 1, data) == RES_OK); attribs[0].get = cbox_get_position; - CHECK(s3d_mesh_setup_indexed_vertices - (shape, cbox_ntris, S3D_KEEP, cbox_nverts, attribs, 1, data), RES_OK); + CHK(s3d_mesh_setup_indexed_vertices + (shape, cbox_ntris, S3D_KEEP, cbox_nverts, attribs, 1, data) == RES_OK); attribs[0].type = S3D_FLOAT3; attribs[0].usage = S3D_ATTRIB_0; attribs[0].get = cbox_get_normal; - CHECK(s3d_mesh_setup_indexed_vertices - (shape, cbox_ntris, S3D_KEEP, cbox_nverts, attribs, 1, data), RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (shape, cbox_ntris, S3D_KEEP, cbox_nverts, attribs, 1, data) == RES_BAD_ARG); attribs[1].type = S3D_FLOAT3; attribs[1].usage = S3D_POSITION; attribs[1].get = S3D_KEEP; - CHECK(s3d_mesh_setup_indexed_vertices - (shape, cbox_ntris, S3D_KEEP, cbox_nverts, attribs, 2, data), RES_OK); + CHK(s3d_mesh_setup_indexed_vertices + (shape, cbox_ntris, S3D_KEEP, cbox_nverts, attribs, 2, data) == RES_OK); attribs[2].type = S3D_FLOAT2; attribs[2].usage = S3D_ATTRIB_2; attribs[2].get = cbox_get_uv; - CHECK(s3d_mesh_setup_indexed_vertices - (shape, cbox_ntris, S3D_KEEP, cbox_nverts, attribs, 3, data), RES_OK); + CHK(s3d_mesh_setup_indexed_vertices + (shape, cbox_ntris, S3D_KEEP, cbox_nverts, attribs, 3, data) == RES_OK); attribs[0].get = S3D_KEEP; attribs[1].get = S3D_KEEP; attribs[2].get = S3D_KEEP; - CHECK(s3d_mesh_setup_indexed_vertices - (shape, 2, S3D_KEEP, cbox_nverts, attribs, 3, data), RES_BAD_ARG); - CHECK(s3d_mesh_setup_indexed_vertices - (shape, cbox_ntris, S3D_KEEP, cbox_nverts+1, attribs, 3, data), RES_BAD_ARG); - CHECK(s3d_mesh_setup_indexed_vertices - (shape, cbox_ntris, S3D_KEEP, cbox_nverts, attribs, 3, data), RES_OK); + CHK(s3d_mesh_setup_indexed_vertices + (shape, 2, S3D_KEEP, cbox_nverts, attribs, 3, data) == RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (shape, cbox_ntris, S3D_KEEP, cbox_nverts+1, attribs, 3, data) == RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (shape, cbox_ntris, S3D_KEEP, cbox_nverts, attribs, 3, data) == RES_OK); attribs[2].type = S3D_FLOAT3; - CHECK(s3d_mesh_setup_indexed_vertices - (shape, cbox_ntris, S3D_KEEP, cbox_nverts, attribs, 3, data), RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (shape, cbox_ntris, S3D_KEEP, cbox_nverts, attribs, 3, data) == RES_BAD_ARG); attribs[0].get = cbox_get_position; - CHECK(s3d_mesh_setup_indexed_vertices - (shape, cbox_ntris, S3D_KEEP, cbox_nverts, attribs, 2, data), RES_OK); - - CHECK(s3d_mesh_get_vertices_count(NULL, NULL), RES_BAD_ARG); - CHECK(s3d_mesh_get_vertices_count(shape, NULL), RES_BAD_ARG); - CHECK(s3d_mesh_get_vertices_count(NULL, &nverts), RES_BAD_ARG); - CHECK(s3d_mesh_get_vertices_count(shape, &nverts), RES_OK); - CHECK(nverts, cbox_nverts); - - CHECK(s3d_mesh_get_vertex_attrib(NULL, nverts, S3D_ATTRIBS_COUNT__, NULL), RES_BAD_ARG); - CHECK(s3d_mesh_get_vertex_attrib(shape, nverts, S3D_ATTRIBS_COUNT__, NULL), RES_BAD_ARG); - CHECK(s3d_mesh_get_vertex_attrib(NULL, 0, S3D_ATTRIBS_COUNT__, NULL), RES_BAD_ARG); - CHECK(s3d_mesh_get_vertex_attrib(shape, 0, S3D_ATTRIBS_COUNT__, NULL), RES_BAD_ARG); - CHECK(s3d_mesh_get_vertex_attrib(NULL, nverts, S3D_POSITION, NULL), RES_BAD_ARG); - CHECK(s3d_mesh_get_vertex_attrib(shape, nverts, S3D_POSITION, NULL), RES_BAD_ARG); - CHECK(s3d_mesh_get_vertex_attrib(NULL, 0, S3D_POSITION, NULL), RES_BAD_ARG); - CHECK(s3d_mesh_get_vertex_attrib(shape, 0, S3D_POSITION, NULL), RES_BAD_ARG); - CHECK(s3d_mesh_get_vertex_attrib(NULL, nverts, S3D_ATTRIBS_COUNT__, &attr), RES_BAD_ARG); - CHECK(s3d_mesh_get_vertex_attrib(shape, nverts, S3D_ATTRIBS_COUNT__, &attr), RES_BAD_ARG); - CHECK(s3d_mesh_get_vertex_attrib(NULL, 0, S3D_ATTRIBS_COUNT__, &attr), RES_BAD_ARG); - CHECK(s3d_mesh_get_vertex_attrib(shape, 0, S3D_ATTRIBS_COUNT__, &attr), RES_BAD_ARG); - CHECK(s3d_mesh_get_vertex_attrib(NULL, nverts, S3D_POSITION, &attr), RES_BAD_ARG); - CHECK(s3d_mesh_get_vertex_attrib(shape, nverts, S3D_POSITION, &attr), RES_BAD_ARG); - CHECK(s3d_mesh_get_vertex_attrib(NULL, 0, S3D_POSITION, &attr), RES_BAD_ARG); + CHK(s3d_mesh_setup_indexed_vertices + (shape, cbox_ntris, S3D_KEEP, cbox_nverts, attribs, 2, data) == RES_OK); + + CHK(s3d_mesh_get_vertices_count(NULL, NULL) == RES_BAD_ARG); + CHK(s3d_mesh_get_vertices_count(shape, NULL) == RES_BAD_ARG); + CHK(s3d_mesh_get_vertices_count(NULL, &nverts) == RES_BAD_ARG); + CHK(s3d_mesh_get_vertices_count(shape, &nverts) == RES_OK); + CHK(nverts == cbox_nverts); + + CHK(s3d_mesh_get_vertex_attrib(NULL, nverts, S3D_ATTRIBS_COUNT__, NULL) == RES_BAD_ARG); + CHK(s3d_mesh_get_vertex_attrib(shape, nverts, S3D_ATTRIBS_COUNT__, NULL) == RES_BAD_ARG); + CHK(s3d_mesh_get_vertex_attrib(NULL, 0, S3D_ATTRIBS_COUNT__, NULL) == RES_BAD_ARG); + CHK(s3d_mesh_get_vertex_attrib(shape, 0, S3D_ATTRIBS_COUNT__, NULL) == RES_BAD_ARG); + CHK(s3d_mesh_get_vertex_attrib(NULL, nverts, S3D_POSITION, NULL) == RES_BAD_ARG); + CHK(s3d_mesh_get_vertex_attrib(shape, nverts, S3D_POSITION, NULL) == RES_BAD_ARG); + CHK(s3d_mesh_get_vertex_attrib(NULL, 0, S3D_POSITION, NULL) == RES_BAD_ARG); + CHK(s3d_mesh_get_vertex_attrib(shape, 0, S3D_POSITION, NULL) == RES_BAD_ARG); + CHK(s3d_mesh_get_vertex_attrib(NULL, nverts, S3D_ATTRIBS_COUNT__, &attr) == RES_BAD_ARG); + CHK(s3d_mesh_get_vertex_attrib(shape, nverts, S3D_ATTRIBS_COUNT__, &attr) == RES_BAD_ARG); + CHK(s3d_mesh_get_vertex_attrib(NULL, 0, S3D_ATTRIBS_COUNT__, &attr) == RES_BAD_ARG); + CHK(s3d_mesh_get_vertex_attrib(shape, 0, S3D_ATTRIBS_COUNT__, &attr) == RES_BAD_ARG); + CHK(s3d_mesh_get_vertex_attrib(NULL, nverts, S3D_POSITION, &attr) == RES_BAD_ARG); + CHK(s3d_mesh_get_vertex_attrib(shape, nverts, S3D_POSITION, &attr) == RES_BAD_ARG); + CHK(s3d_mesh_get_vertex_attrib(NULL, 0, S3D_POSITION, &attr) == RES_BAD_ARG); FOR_EACH(id, 0, nverts) { cbox_get_position(id, pos, data); - CHECK(s3d_mesh_get_vertex_attrib(shape, id, S3D_POSITION, &attr), RES_OK); - CHECK(attr.type, S3D_FLOAT3); - CHECK(attr.usage, S3D_POSITION); - CHECK(f3_eq_eps(attr.value, pos, 1.e-6f), 1); + CHK(s3d_mesh_get_vertex_attrib(shape, id, S3D_POSITION, &attr) == RES_OK); + CHK(attr.type == S3D_FLOAT3); + CHK(attr.usage == S3D_POSITION); + CHK(f3_eq_eps(attr.value, pos, 1.e-6f) == 1); - CHECK(s3d_mesh_get_vertex_attrib(shape, id, S3D_ATTRIB_0, &attr), RES_OK); - CHECK(attr.type, S3D_FLOAT3); - CHECK(attr.usage, S3D_ATTRIB_0); - CHECK(f3_eq_eps(attr.value, pos, 1.e-6f), 1); + CHK(s3d_mesh_get_vertex_attrib(shape, id, S3D_ATTRIB_0, &attr) == RES_OK); + CHK(attr.type == S3D_FLOAT3); + CHK(attr.usage == S3D_ATTRIB_0); + CHK(f3_eq_eps(attr.value, pos, 1.e-6f) == 1); } - CHECK(s3d_mesh_get_vertex_attrib(shape, id, S3D_ATTRIB_1, &attr), RES_BAD_ARG); - - CHECK(s3d_mesh_get_triangles_count(NULL, NULL), RES_BAD_ARG); - CHECK(s3d_mesh_get_triangles_count(shape, NULL), RES_BAD_ARG); - CHECK(s3d_mesh_get_triangles_count(NULL, &ntris), RES_BAD_ARG); - CHECK(s3d_mesh_get_triangles_count(shape, &ntris), RES_OK); - CHECK(ntris, cbox_ntris); - - CHECK(s3d_mesh_get_triangle_indices(NULL, ntris, NULL), RES_BAD_ARG); - CHECK(s3d_mesh_get_triangle_indices(shape, ntris, NULL), RES_BAD_ARG); - CHECK(s3d_mesh_get_triangle_indices(NULL, 0, NULL), RES_BAD_ARG); - CHECK(s3d_mesh_get_triangle_indices(shape, 0, NULL), RES_BAD_ARG); - CHECK(s3d_mesh_get_triangle_indices(NULL, ntris, ids), RES_BAD_ARG); - CHECK(s3d_mesh_get_triangle_indices(shape, ntris, ids), RES_BAD_ARG); - CHECK(s3d_mesh_get_triangle_indices(NULL, 0, ids), RES_BAD_ARG); + CHK(s3d_mesh_get_vertex_attrib(shape, id, S3D_ATTRIB_1, &attr) == RES_BAD_ARG); + + CHK(s3d_mesh_get_triangles_count(NULL, NULL) == RES_BAD_ARG); + CHK(s3d_mesh_get_triangles_count(shape, NULL) == RES_BAD_ARG); + CHK(s3d_mesh_get_triangles_count(NULL, &ntris) == RES_BAD_ARG); + CHK(s3d_mesh_get_triangles_count(shape, &ntris) == RES_OK); + CHK(ntris == cbox_ntris); + + CHK(s3d_mesh_get_triangle_indices(NULL, ntris, NULL) == RES_BAD_ARG); + CHK(s3d_mesh_get_triangle_indices(shape, ntris, NULL) == RES_BAD_ARG); + CHK(s3d_mesh_get_triangle_indices(NULL, 0, NULL) == RES_BAD_ARG); + CHK(s3d_mesh_get_triangle_indices(shape, 0, NULL) == RES_BAD_ARG); + CHK(s3d_mesh_get_triangle_indices(NULL, ntris, ids) == RES_BAD_ARG); + CHK(s3d_mesh_get_triangle_indices(shape, ntris, ids) == RES_BAD_ARG); + CHK(s3d_mesh_get_triangle_indices(NULL, 0, ids) == RES_BAD_ARG); FOR_EACH(id, 0, ntris) { unsigned indices[3]; - CHECK(s3d_mesh_get_triangle_indices(shape, id, ids), RES_OK); + CHK(s3d_mesh_get_triangle_indices(shape, id, ids) == RES_OK); cbox_get_ids(id, indices, data); - CHECK(ids[0], indices[0]); - CHECK(ids[1], indices[1]); - CHECK(ids[2], indices[2]); + CHK(ids[0] == indices[0]); + CHK(ids[1] == indices[1]); + CHK(ids[2] == indices[2]); } - CHECK(s3d_shape_is_enabled(NULL, NULL), RES_BAD_ARG); - CHECK(s3d_shape_is_enabled(shape, NULL), RES_BAD_ARG); - CHECK(s3d_shape_is_enabled(NULL, &c), RES_BAD_ARG); - CHECK(s3d_shape_is_enabled(shape, &c), RES_OK); - NCHECK(c, 0); - - CHECK(s3d_shape_enable(NULL, 0), RES_BAD_ARG); - CHECK(s3d_shape_enable(shape, 0), RES_OK); - CHECK(s3d_shape_is_enabled(shape, &c), RES_OK); - CHECK(c, 0); - - CHECK(s3d_shape_flip_surface(NULL), RES_BAD_ARG); - CHECK(s3d_shape_flip_surface(shape), RES_OK); - CHECK(s3d_shape_flip_surface(shape), RES_OK); - - CHECK(s3d_mesh_set_hit_filter_function(NULL, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_mesh_set_hit_filter_function(shape, NULL, NULL), RES_OK); - CHECK(s3d_mesh_set_hit_filter_function(NULL, filter_none, NULL), RES_BAD_ARG); - CHECK(s3d_mesh_set_hit_filter_function(shape, filter_none, NULL), RES_OK); - - CHECK(s3d_mesh_get_hit_filter_data(NULL, NULL), RES_BAD_ARG); - CHECK(s3d_mesh_get_hit_filter_data(shape, NULL), RES_BAD_ARG); - CHECK(s3d_mesh_get_hit_filter_data(NULL, &data), RES_BAD_ARG); - CHECK(s3d_mesh_get_hit_filter_data(shape, &data), RES_OK); - CHECK(data, NULL); - - CHECK(s3d_mesh_set_hit_filter_function(shape, NULL, NULL), RES_OK); - CHECK(s3d_mesh_get_hit_filter_data(shape, &data), RES_OK); - CHECK(data, NULL); - CHECK(s3d_mesh_set_hit_filter_function - (shape, filter_none, (void*)((uintptr_t)0xDEADBEEF)), RES_OK); - CHECK(s3d_mesh_get_hit_filter_data(shape, &data), RES_OK); - CHECK((uintptr_t)data, 0xDEADBEEF); - - CHECK(s3d_scene_attach_shape(scn, shape), RES_OK); - - CHECK(s3d_scene_instantiate(scn, &inst), RES_OK); - - CHECK(s3d_instance_set_position(NULL, NULL), RES_BAD_ARG); - CHECK(s3d_instance_set_position(inst, NULL), RES_BAD_ARG); - CHECK(s3d_instance_set_position(NULL, pos), RES_BAD_ARG); - CHECK(s3d_instance_set_position(inst, pos), RES_OK); - CHECK(s3d_instance_set_position(shape, pos), RES_BAD_ARG); - - CHECK(s3d_instance_translate(NULL, -1, NULL), RES_BAD_ARG); - CHECK(s3d_instance_translate(inst, -1, NULL), RES_BAD_ARG); - CHECK(s3d_instance_translate(NULL, S3D_LOCAL_TRANSFORM, NULL), RES_BAD_ARG); - CHECK(s3d_instance_translate(inst, S3D_LOCAL_TRANSFORM, NULL), RES_BAD_ARG); - CHECK(s3d_instance_translate(NULL, -1, pos), RES_BAD_ARG); - CHECK(s3d_instance_translate(inst, -1, pos), RES_BAD_ARG); - CHECK(s3d_instance_translate(NULL, S3D_LOCAL_TRANSFORM, pos), RES_BAD_ARG); - CHECK(s3d_instance_translate(inst, S3D_LOCAL_TRANSFORM, pos), RES_OK); - CHECK(s3d_instance_translate(inst, S3D_WORLD_TRANSFORM, pos), RES_OK); - CHECK(s3d_instance_translate(shape, S3D_WORLD_TRANSFORM, pos), RES_BAD_ARG); - - CHECK(s3d_instance_transform(NULL, -1, NULL), RES_BAD_ARG); - CHECK(s3d_instance_transform(inst, -1, NULL), RES_BAD_ARG); - CHECK(s3d_instance_transform(NULL, S3D_LOCAL_TRANSFORM, NULL), RES_BAD_ARG); - CHECK(s3d_instance_transform(inst, S3D_LOCAL_TRANSFORM, NULL), RES_BAD_ARG); - CHECK(s3d_instance_transform(NULL, -1, trans), RES_BAD_ARG); - CHECK(s3d_instance_transform(inst, -1, trans), RES_BAD_ARG); - CHECK(s3d_instance_transform(NULL, S3D_LOCAL_TRANSFORM, trans), RES_BAD_ARG); - CHECK(s3d_instance_transform(inst, S3D_LOCAL_TRANSFORM, trans), RES_OK); - CHECK(s3d_instance_transform(inst, S3D_WORLD_TRANSFORM, trans), RES_OK); - CHECK(s3d_instance_transform(shape, S3D_LOCAL_TRANSFORM, trans), RES_BAD_ARG); - - CHECK(s3d_instance_set_transform(NULL, NULL), RES_BAD_ARG); - CHECK(s3d_instance_set_transform(inst, NULL), RES_BAD_ARG); - CHECK(s3d_instance_set_transform(NULL, trans), RES_BAD_ARG); - CHECK(s3d_instance_set_transform(shape, trans), RES_BAD_ARG); - CHECK(s3d_instance_set_transform(inst, trans), RES_OK); - - CHECK(s3d_shape_flip_surface(inst), RES_OK); - - CHECK(s3d_shape_create_mesh(dev, &shape_copy), RES_OK); - CHECK(s3d_mesh_copy(NULL, NULL), RES_BAD_ARG); - CHECK(s3d_mesh_copy(shape, NULL), RES_BAD_ARG); - CHECK(s3d_mesh_copy(NULL, shape_copy), RES_BAD_ARG); - CHECK(s3d_mesh_copy(shape, shape_copy), RES_OK); - - CHECK(s3d_shape_ref_get(NULL), RES_BAD_ARG); - CHECK(s3d_shape_ref_get(shape), RES_OK); - CHECK(s3d_shape_ref_put(NULL), RES_BAD_ARG); - CHECK(s3d_shape_ref_put(shape), RES_OK); - CHECK(s3d_shape_ref_put(shape), RES_OK); - CHECK(s3d_shape_ref_put(inst), RES_OK); - CHECK(s3d_shape_ref_put(shape_copy), RES_OK); - CHECK(s3d_scene_ref_put(scn), RES_OK); - - CHECK(s3d_device_ref_put(dev), RES_OK);; + CHK(s3d_shape_is_enabled(NULL, NULL) == RES_BAD_ARG); + CHK(s3d_shape_is_enabled(shape, NULL) == RES_BAD_ARG); + CHK(s3d_shape_is_enabled(NULL, &c) == RES_BAD_ARG); + CHK(s3d_shape_is_enabled(shape, &c) == RES_OK); + CHK(c != 0); + + CHK(s3d_shape_enable(NULL, 0) == RES_BAD_ARG); + CHK(s3d_shape_enable(shape, 0) == RES_OK); + CHK(s3d_shape_is_enabled(shape, &c) == RES_OK); + CHK(c == 0); + + CHK(s3d_shape_flip_surface(NULL) == RES_BAD_ARG); + CHK(s3d_shape_flip_surface(shape) == RES_OK); + CHK(s3d_shape_flip_surface(shape) == RES_OK); + + CHK(s3d_mesh_set_hit_filter_function(NULL, NULL, NULL) == RES_BAD_ARG); + CHK(s3d_mesh_set_hit_filter_function(shape, NULL, NULL) == RES_OK); + CHK(s3d_mesh_set_hit_filter_function(NULL, filter_none, NULL) == RES_BAD_ARG); + CHK(s3d_mesh_set_hit_filter_function(shape, filter_none, NULL) == RES_OK); + + CHK(s3d_mesh_get_hit_filter_data(NULL, NULL) == RES_BAD_ARG); + CHK(s3d_mesh_get_hit_filter_data(shape, NULL) == RES_BAD_ARG); + CHK(s3d_mesh_get_hit_filter_data(NULL, &data) == RES_BAD_ARG); + CHK(s3d_mesh_get_hit_filter_data(shape, &data) == RES_OK); + CHK(data == NULL); + + CHK(s3d_mesh_set_hit_filter_function(shape, NULL, NULL) == RES_OK); + CHK(s3d_mesh_get_hit_filter_data(shape, &data) == RES_OK); + CHK(data == NULL); + CHK(s3d_mesh_set_hit_filter_function + (shape, filter_none, (void*)((uintptr_t)0xDEADBEEF)) == RES_OK); + CHK(s3d_mesh_get_hit_filter_data(shape, &data) == RES_OK); + CHK((uintptr_t)data == 0xDEADBEEF); + + CHK(s3d_scene_attach_shape(scn, shape) == RES_OK); + + CHK(s3d_scene_instantiate(scn, &inst) == RES_OK); + + CHK(s3d_instance_set_position(NULL, NULL) == RES_BAD_ARG); + CHK(s3d_instance_set_position(inst, NULL) == RES_BAD_ARG); + CHK(s3d_instance_set_position(NULL, pos) == RES_BAD_ARG); + CHK(s3d_instance_set_position(inst, pos) == RES_OK); + CHK(s3d_instance_set_position(shape, pos) == RES_BAD_ARG); + + CHK(s3d_instance_translate(NULL, -1, NULL) == RES_BAD_ARG); + CHK(s3d_instance_translate(inst, -1, NULL) == RES_BAD_ARG); + CHK(s3d_instance_translate(NULL, S3D_LOCAL_TRANSFORM, NULL) == RES_BAD_ARG); + CHK(s3d_instance_translate(inst, S3D_LOCAL_TRANSFORM, NULL) == RES_BAD_ARG); + CHK(s3d_instance_translate(NULL, -1, pos) == RES_BAD_ARG); + CHK(s3d_instance_translate(inst, -1, pos) == RES_BAD_ARG); + CHK(s3d_instance_translate(NULL, S3D_LOCAL_TRANSFORM, pos) == RES_BAD_ARG); + CHK(s3d_instance_translate(inst, S3D_LOCAL_TRANSFORM, pos) == RES_OK); + CHK(s3d_instance_translate(inst, S3D_WORLD_TRANSFORM, pos) == RES_OK); + CHK(s3d_instance_translate(shape, S3D_WORLD_TRANSFORM, pos) == RES_BAD_ARG); + + CHK(s3d_instance_transform(NULL, -1, NULL) == RES_BAD_ARG); + CHK(s3d_instance_transform(inst, -1, NULL) == RES_BAD_ARG); + CHK(s3d_instance_transform(NULL, S3D_LOCAL_TRANSFORM, NULL) == RES_BAD_ARG); + CHK(s3d_instance_transform(inst, S3D_LOCAL_TRANSFORM, NULL) == RES_BAD_ARG); + CHK(s3d_instance_transform(NULL, -1, trans) == RES_BAD_ARG); + CHK(s3d_instance_transform(inst, -1, trans) == RES_BAD_ARG); + CHK(s3d_instance_transform(NULL, S3D_LOCAL_TRANSFORM, trans) == RES_BAD_ARG); + CHK(s3d_instance_transform(inst, S3D_LOCAL_TRANSFORM, trans) == RES_OK); + CHK(s3d_instance_transform(inst, S3D_WORLD_TRANSFORM, trans) == RES_OK); + CHK(s3d_instance_transform(shape, S3D_LOCAL_TRANSFORM, trans) == RES_BAD_ARG); + + CHK(s3d_instance_set_transform(NULL, NULL) == RES_BAD_ARG); + CHK(s3d_instance_set_transform(inst, NULL) == RES_BAD_ARG); + CHK(s3d_instance_set_transform(NULL, trans) == RES_BAD_ARG); + CHK(s3d_instance_set_transform(shape, trans) == RES_BAD_ARG); + CHK(s3d_instance_set_transform(inst, trans) == RES_OK); + + CHK(s3d_shape_flip_surface(inst) == RES_OK); + + CHK(s3d_shape_create_mesh(dev, &shape_copy) == RES_OK); + CHK(s3d_mesh_copy(NULL, NULL) == RES_BAD_ARG); + CHK(s3d_mesh_copy(shape, NULL) == RES_BAD_ARG); + CHK(s3d_mesh_copy(NULL, shape_copy) == RES_BAD_ARG); + CHK(s3d_mesh_copy(shape, shape_copy) == RES_OK); + + CHK(s3d_shape_ref_get(NULL) == RES_BAD_ARG); + CHK(s3d_shape_ref_get(shape) == RES_OK); + CHK(s3d_shape_ref_put(NULL) == RES_BAD_ARG); + CHK(s3d_shape_ref_put(shape) == RES_OK); + CHK(s3d_shape_ref_put(shape) == RES_OK); + CHK(s3d_shape_ref_put(inst) == RES_OK); + CHK(s3d_shape_ref_put(shape_copy) == RES_OK); + CHK(s3d_scene_ref_put(scn) == RES_OK); + + CHK(s3d_device_ref_put(dev) == RES_OK);; check_memory_allocator(&allocator); mem_shutdown_proxy_allocator(&allocator); - CHECK(mem_allocated_size(), 0); + CHK(mem_allocated_size() == 0); return 0; } diff --git a/src/test_s3d_trace_ray.c b/src/test_s3d_trace_ray.c @@ -51,12 +51,12 @@ filter_func void* ray_data, void* filter_data) { - NCHECK(hit, NULL); - NCHECK(pos, NULL); - NCHECK(dir, NULL); - CHECK((uintptr_t)ray_data, 0xDEADBEEF); - CHECK((uintptr_t)filter_data, 0xDECAFBAD); - CHECK(S3D_HIT_NONE(hit), 0); + CHK(hit != NULL); + CHK(pos != NULL); + CHK(dir != NULL); + CHK((uintptr_t)ray_data == 0xDEADBEEF); + CHK((uintptr_t)filter_data == 0xDECAFBAD); + CHK(S3D_HIT_NONE(hit) == 0); return hit->prim.prim_id % 2 == 0; } @@ -103,11 +103,11 @@ main(int argc, char** argv) } image_init(&allocator, &img); - CHECK(image_setup - (&img, IMG_WIDTH, IMG_HEIGHT, IMG_WIDTH*3, IMAGE_RGB8, NULL), RES_OK); + CHK(image_setup + (&img, IMG_WIDTH, IMG_HEIGHT, IMG_WIDTH*3, IMAGE_RGB8, NULL) == RES_OK); - CHECK(s3d_device_create(NULL, &allocator, 0, &dev), RES_OK); - CHECK(s3d_scene_create(dev, &scn), RES_OK); + CHK(s3d_device_create(NULL, &allocator, 0, &dev) == RES_OK); + CHK(s3d_scene_create(dev, &scn) == RES_OK); attribs.usage = S3D_POSITION; attribs.type = S3D_FLOAT3; @@ -117,154 +117,154 @@ main(int argc, char** argv) nverts = cbox_walls_nverts; desc.vertices = cbox_walls; desc.indices = cbox_walls_ids; - CHECK(s3d_shape_create_mesh(dev, &walls), RES_OK); - CHECK(s3d_mesh_setup_indexed_vertices - (walls, ntris, cbox_get_ids, nverts, &attribs, 1, &desc), RES_OK); - CHECK(s3d_scene_attach_shape(scn, walls), RES_OK); - CHECK(s3d_shape_ref_put(walls), RES_OK); - - CHECK(s3d_scene_view_create(scn, S3D_TRACE, &scnview), RES_OK); - CHECK(s3d_scene_view_trace_ray(NULL, NULL, NULL, NULL, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_trace_ray(scnview, NULL, NULL, NULL, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_trace_ray(NULL, org, NULL, NULL, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_trace_ray(scnview, org, NULL, NULL, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_trace_ray(NULL, NULL, dir, NULL, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_trace_ray(scnview, NULL, dir, NULL, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_trace_ray(NULL, org, dir, NULL, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_trace_ray(scnview, org, dir, NULL, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_trace_ray(NULL, NULL, NULL, range, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_trace_ray(scnview, NULL, NULL, range, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_trace_ray(NULL, org, NULL, range, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_trace_ray(scnview, org, NULL, range, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_trace_ray(NULL, NULL, dir, range, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_trace_ray(scnview, NULL, dir, range, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_trace_ray(NULL, org, dir, range, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, NULL), RES_BAD_ARG); - CHECK(s3d_scene_view_trace_ray(NULL, NULL, NULL, NULL, NULL, &hit), RES_BAD_ARG); - CHECK(s3d_scene_view_trace_ray(scnview, NULL, NULL, NULL, NULL, &hit), RES_BAD_ARG); - CHECK(s3d_scene_view_trace_ray(NULL, org, NULL, NULL, NULL, &hit), RES_BAD_ARG); - CHECK(s3d_scene_view_trace_ray(scnview, org, NULL, NULL, NULL, &hit), RES_BAD_ARG); - CHECK(s3d_scene_view_trace_ray(NULL, NULL, dir, NULL, NULL, &hit), RES_BAD_ARG); - CHECK(s3d_scene_view_trace_ray(scnview, NULL, dir, NULL, NULL, &hit), RES_BAD_ARG); - CHECK(s3d_scene_view_trace_ray(NULL, org, dir, NULL, NULL, &hit), RES_BAD_ARG); - CHECK(s3d_scene_view_trace_ray(scnview, org, dir, NULL, NULL, &hit), RES_BAD_ARG); - CHECK(s3d_scene_view_trace_ray(NULL, NULL, NULL, range, NULL, &hit), RES_BAD_ARG); - CHECK(s3d_scene_view_trace_ray(scnview, NULL, NULL, range, NULL, &hit), RES_BAD_ARG); - CHECK(s3d_scene_view_trace_ray(NULL, org, NULL, range, NULL, &hit), RES_BAD_ARG); - CHECK(s3d_scene_view_trace_ray(scnview, org, NULL, range, NULL, &hit), RES_BAD_ARG); - CHECK(s3d_scene_view_trace_ray(NULL, NULL, dir, range, NULL, &hit), RES_BAD_ARG); - CHECK(s3d_scene_view_trace_ray(scnview, NULL, dir, range, NULL, &hit), RES_BAD_ARG); - CHECK(s3d_scene_view_trace_ray(NULL, org, dir, range, NULL, &hit), RES_BAD_ARG); - CHECK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit), RES_OK); - CHECK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit), RES_OK); + CHK(s3d_shape_create_mesh(dev, &walls) == RES_OK); + CHK(s3d_mesh_setup_indexed_vertices + (walls, ntris, cbox_get_ids, nverts, &attribs, 1, &desc) == RES_OK); + CHK(s3d_scene_attach_shape(scn, walls) == RES_OK); + CHK(s3d_shape_ref_put(walls) == RES_OK); + + CHK(s3d_scene_view_create(scn, S3D_TRACE, &scnview) == RES_OK); + CHK(s3d_scene_view_trace_ray(NULL, NULL, NULL, NULL, NULL, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_trace_ray(scnview, NULL, NULL, NULL, NULL, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_trace_ray(NULL, org, NULL, NULL, NULL, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_trace_ray(scnview, org, NULL, NULL, NULL, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_trace_ray(NULL, NULL, dir, NULL, NULL, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_trace_ray(scnview, NULL, dir, NULL, NULL, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_trace_ray(NULL, org, dir, NULL, NULL, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_trace_ray(scnview, org, dir, NULL, NULL, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_trace_ray(NULL, NULL, NULL, range, NULL, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_trace_ray(scnview, NULL, NULL, range, NULL, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_trace_ray(NULL, org, NULL, range, NULL, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_trace_ray(scnview, org, NULL, range, NULL, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_trace_ray(NULL, NULL, dir, range, NULL, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_trace_ray(scnview, NULL, dir, range, NULL, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_trace_ray(NULL, org, dir, range, NULL, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, NULL) == RES_BAD_ARG); + CHK(s3d_scene_view_trace_ray(NULL, NULL, NULL, NULL, NULL, &hit) == RES_BAD_ARG); + CHK(s3d_scene_view_trace_ray(scnview, NULL, NULL, NULL, NULL, &hit) == RES_BAD_ARG); + CHK(s3d_scene_view_trace_ray(NULL, org, NULL, NULL, NULL, &hit) == RES_BAD_ARG); + CHK(s3d_scene_view_trace_ray(scnview, org, NULL, NULL, NULL, &hit) == RES_BAD_ARG); + CHK(s3d_scene_view_trace_ray(NULL, NULL, dir, NULL, NULL, &hit) == RES_BAD_ARG); + CHK(s3d_scene_view_trace_ray(scnview, NULL, dir, NULL, NULL, &hit) == RES_BAD_ARG); + CHK(s3d_scene_view_trace_ray(NULL, org, dir, NULL, NULL, &hit) == RES_BAD_ARG); + CHK(s3d_scene_view_trace_ray(scnview, org, dir, NULL, NULL, &hit) == RES_BAD_ARG); + CHK(s3d_scene_view_trace_ray(NULL, NULL, NULL, range, NULL, &hit) == RES_BAD_ARG); + CHK(s3d_scene_view_trace_ray(scnview, NULL, NULL, range, NULL, &hit) == RES_BAD_ARG); + CHK(s3d_scene_view_trace_ray(NULL, org, NULL, range, NULL, &hit) == RES_BAD_ARG); + CHK(s3d_scene_view_trace_ray(scnview, org, NULL, range, NULL, &hit) == RES_BAD_ARG); + CHK(s3d_scene_view_trace_ray(NULL, NULL, dir, range, NULL, &hit) == RES_BAD_ARG); + CHK(s3d_scene_view_trace_ray(scnview, NULL, dir, range, NULL, &hit) == RES_BAD_ARG); + CHK(s3d_scene_view_trace_ray(NULL, org, dir, range, NULL, &hit) == RES_BAD_ARG); + CHK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit) == RES_OK); + CHK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit) == RES_OK); f3(dir, 1.f, 1.f, 1.f); - CHECK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit), RES_BAD_ARG); - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); + CHK(s3d_scene_view_trace_ray(scnview, org, dir, range, NULL, &hit) == RES_BAD_ARG); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); f3(dir, 0.f, 1.f, 0.f); - CHECK(s3d_scene_clear(scn), RES_OK); + CHK(s3d_scene_clear(scn) == RES_OK); /* Update the inst with the CBox tall block mesh */ ntris = cbox_block_ntris; nverts = cbox_block_nverts; desc.vertices = cbox_short_block; desc.indices = cbox_block_ids; - CHECK(s3d_shape_create_mesh(dev, &tall_block), RES_OK); - CHECK(s3d_shape_get_id(tall_block, &tall_block_id), RES_OK); - CHECK(s3d_mesh_setup_indexed_vertices - (tall_block, ntris, cbox_get_ids, nverts, &attribs, 1, &desc), RES_OK); - CHECK(s3d_scene_attach_shape(scn, tall_block), RES_OK); + CHK(s3d_shape_create_mesh(dev, &tall_block) == RES_OK); + CHK(s3d_shape_get_id(tall_block, &tall_block_id) == RES_OK); + CHK(s3d_mesh_setup_indexed_vertices + (tall_block, ntris, cbox_get_ids, nverts, &attribs, 1, &desc) == RES_OK); + CHK(s3d_scene_attach_shape(scn, tall_block) == RES_OK); /* Update the inst vertices */ desc.vertices = cbox_tall_block; - CHECK(s3d_mesh_setup_indexed_vertices - (tall_block, ntris, S3D_KEEP, nverts, &attribs, 1, &desc), RES_OK); + CHK(s3d_mesh_setup_indexed_vertices + (tall_block, ntris, S3D_KEEP, nverts, &attribs, 1, &desc) == RES_OK); /* Create a the CBox short block inst */ desc.vertices = cbox_short_block; - CHECK(s3d_shape_create_mesh(dev, &short_block), RES_OK); - CHECK(s3d_shape_get_id(short_block, &short_block_id), RES_OK); - CHECK(s3d_mesh_setup_indexed_vertices - (short_block, ntris, cbox_get_ids, nverts, &attribs, 1, &desc), RES_OK); - CHECK(s3d_scene_attach_shape(scn, short_block), RES_OK); + CHK(s3d_shape_create_mesh(dev, &short_block) == RES_OK); + CHK(s3d_shape_get_id(short_block, &short_block_id) == RES_OK); + CHK(s3d_mesh_setup_indexed_vertices + (short_block, ntris, cbox_get_ids, nverts, &attribs, 1, &desc) == RES_OK); + CHK(s3d_scene_attach_shape(scn, short_block) == RES_OK); /* Instantiate the scene */ - CHECK(s3d_scene_instantiate(scn, &inst), RES_OK); - CHECK(s3d_scene_view_create(scn, S3D_SAMPLE, &scnview), RES_OK); - CHECK(s3d_scene_view_primitives_count(scnview, &nprims), RES_OK); - CHECK(nprims, 20); - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); - CHECK(s3d_shape_get_id(inst, &inst_id), RES_OK); + CHK(s3d_scene_instantiate(scn, &inst) == RES_OK); + CHK(s3d_scene_view_create(scn, S3D_SAMPLE, &scnview) == RES_OK); + CHK(s3d_scene_view_primitives_count(scnview, &nprims) == RES_OK); + CHK(nprims == 20); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); + CHK(s3d_shape_get_id(inst, &inst_id) == RES_OK); /* Create the CBox walls */ desc.indices = cbox_walls_ids; desc.vertices = cbox_walls; nverts = cbox_walls_nverts; ntris = cbox_walls_ntris; - CHECK(s3d_shape_create_mesh(dev, &walls), RES_OK); - CHECK(s3d_shape_get_id(walls, &walls_id), RES_OK); - CHECK(s3d_mesh_setup_indexed_vertices - (walls, ntris, cbox_get_ids, nverts, &attribs, 1, &desc), RES_OK); - CHECK(s3d_scene_attach_shape(scn, walls), RES_OK); + CHK(s3d_shape_create_mesh(dev, &walls) == RES_OK); + CHK(s3d_shape_get_id(walls, &walls_id) == RES_OK); + CHK(s3d_mesh_setup_indexed_vertices + (walls, ntris, cbox_get_ids, nverts, &attribs, 1, &desc) == RES_OK); + CHK(s3d_scene_attach_shape(scn, walls) == RES_OK); /* Check that the ids are all different */ - NCHECK(walls_id, short_block_id); - NCHECK(walls_id, tall_block_id); - NCHECK(short_block_id, tall_block_id); + CHK(walls_id != short_block_id); + CHK(walls_id != tall_block_id); + CHK(short_block_id != tall_block_id); /* Attach the CBox instance to a scene */ - CHECK(s3d_scene_create(dev, &scn2), RES_OK); + CHK(s3d_scene_create(dev, &scn2) == RES_OK); f3(org, -100.f, 0.f, -2.f); - CHECK(s3d_scene_attach_shape(scn2, inst), RES_OK); - CHECK(s3d_instance_set_position(inst, org), RES_OK); + CHK(s3d_scene_attach_shape(scn2, inst) == RES_OK); + CHK(s3d_instance_set_position(inst, org) == RES_OK); - CHECK(s3d_shape_enable(inst, 0), RES_OK); - CHECK(s3d_scene_view_create(scn2, S3D_TRACE|S3D_SAMPLE, &scnview), RES_OK); - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); + CHK(s3d_shape_enable(inst, 0) == RES_OK); + CHK(s3d_scene_view_create(scn2, S3D_TRACE|S3D_SAMPLE, &scnview) == RES_OK); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); - CHECK(s3d_shape_enable(inst, 1), RES_OK); - CHECK(s3d_scene_view_create(scn2, S3D_TRACE, &scnview), RES_OK); - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); + CHK(s3d_shape_enable(inst, 1) == RES_OK); + CHK(s3d_scene_view_create(scn2, S3D_TRACE, &scnview) == RES_OK); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); - CHECK(s3d_shape_create_mesh(dev, &walls_copy), RES_OK); - CHECK(s3d_mesh_copy(walls, walls_copy), RES_OK); - CHECK(s3d_shape_ref_put(walls), RES_OK); - CHECK(s3d_shape_get_id(walls_copy, &walls_id), RES_OK); + CHK(s3d_shape_create_mesh(dev, &walls_copy) == RES_OK); + CHK(s3d_mesh_copy(walls, walls_copy) == RES_OK); + CHK(s3d_shape_ref_put(walls) == RES_OK); + CHK(s3d_shape_get_id(walls_copy, &walls_id) == RES_OK); if(filter) { - CHECK(s3d_mesh_set_hit_filter_function - (walls_copy, filter_func, (void*)(uintptr_t)0xDECAFBAD), RES_OK); + CHK(s3d_mesh_set_hit_filter_function + (walls_copy, filter_func, (void*)(uintptr_t)0xDECAFBAD) == RES_OK); } - CHECK(s3d_scene_clear(scn), RES_OK); - CHECK(s3d_scene_attach_shape(scn, walls_copy), RES_OK); - CHECK(s3d_scene_attach_shape(scn, short_block), RES_OK); - CHECK(s3d_scene_attach_shape(scn, tall_block), RES_OK); + CHK(s3d_scene_clear(scn) == RES_OK); + CHK(s3d_scene_attach_shape(scn, walls_copy) == RES_OK); + CHK(s3d_scene_attach_shape(scn, short_block) == RES_OK); + CHK(s3d_scene_attach_shape(scn, tall_block) == RES_OK); - CHECK(s3d_scene_view_create(scn2, S3D_TRACE|S3D_GET_PRIMITIVE, &scnview), RES_OK); - CHECK(s3d_scene_view_primitives_count(scnview, &nprims), RES_OK); - CHECK(nprims, 30); + CHK(s3d_scene_view_create(scn2, S3D_TRACE|S3D_GET_PRIMITIVE, &scnview) == RES_OK); + CHK(s3d_scene_view_primitives_count(scnview, &nprims) == RES_OK); + CHK(nprims == 30); - CHECK(s3d_scene_view_get_aabb(scnview, 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); - CHECK(eq_epsf(upper[0], 452.f, 1.e-6f), 1); - CHECK(eq_epsf(upper[1], 559.f, 1.e-6f), 1); - CHECK(eq_epsf(upper[2], 546.f, 1.e-6f), 1); + CHK(s3d_scene_view_get_aabb(scnview, lower, upper) == RES_OK); + CHK(eq_epsf(lower[0], -100.f, 1.e-6f) == 1); + CHK(eq_epsf(lower[1], 0.f, 1.e-6f) == 1); + CHK(eq_epsf(lower[2], -2.f, 1.e-6f) == 1); + CHK(eq_epsf(upper[0], 452.f, 1.e-6f) == 1); + CHK(eq_epsf(upper[1], 559.f, 1.e-6f) == 1); + CHK(eq_epsf(upper[2], 546.f, 1.e-6f) == 1); FOR_EACH(i, 0, nprims) { size_t j; - CHECK(s3d_scene_view_get_primitive(scnview, (unsigned)i, prims + i), RES_OK); - CHECK(S3D_PRIMITIVE_EQ(prims + i, &S3D_PRIMITIVE_NULL), 0); + CHK(s3d_scene_view_get_primitive(scnview, (unsigned)i, prims + i) == RES_OK); + CHK(S3D_PRIMITIVE_EQ(prims + i, &S3D_PRIMITIVE_NULL) == 0); FOR_EACH(j, 0, i) { - CHECK(S3D_PRIMITIVE_EQ(prims + i, prims + j), 0); + CHK(S3D_PRIMITIVE_EQ(prims + i, prims + j) == 0); } - CHECK(s3d_primitive_get_transform(prims + i, transform), RES_OK); - CHECK(f3_eq(transform + 0, f3(vec, 1.f, 0.f, 0.f)), 1); - CHECK(f3_eq(transform + 3, f3(vec, 0.f, 1.f, 0.f)), 1); - CHECK(f3_eq(transform + 6, f3(vec, 0.f, 0.f, 1.f)), 1); - CHECK(f3_eq(transform + 9, f3(vec, -100.f, 0.f, -2.f)), 1); + CHK(s3d_primitive_get_transform(prims + i, transform) == RES_OK); + CHK(f3_eq(transform + 0, f3(vec, 1.f, 0.f, 0.f)) == 1); + CHK(f3_eq(transform + 3, f3(vec, 0.f, 1.f, 0.f)) == 1); + CHK(f3_eq(transform + 6, f3(vec, 0.f, 0.f, 1.f)) == 1); + CHK(f3_eq(transform + 9, f3(vec, -100.f, 0.f, -2.f)) == 1); } f3(pos, 178.f, -1000.f, 273.f); @@ -281,8 +281,8 @@ main(int argc, char** argv) pixel[0] = (float)ix/(float)IMG_WIDTH; camera_ray(&cam, pixel, org, dir); - CHECK(s3d_scene_view_trace_ray - (scnview, org, dir, range, (void*)(uintptr_t)0xDEADBEEF, &hit), RES_OK); + CHK(s3d_scene_view_trace_ray + (scnview, org, dir, range, (void*)(uintptr_t)0xDEADBEEF, &hit) == RES_OK); if(S3D_HIT_NONE(&hit)) { ((uint8_t*)img.pixels)[ipix+0] = 0; @@ -292,38 +292,38 @@ main(int argc, char** argv) float N[3], len, dot, col[3] = { 1.f, 1.f, 1.f }; struct s3d_attrib attr; - CHECK(hit.prim.inst_id, inst_id); - CHECK(hit.prim.geom_id == walls_id - || hit.prim.geom_id == tall_block_id - || hit.prim.geom_id == short_block_id, 1); - CHECK(hit.prim.geom_id < 10, 1); - - CHECK(s3d_primitive_get_transform(&hit.prim, transform), RES_OK); - CHECK(f3_eq(transform + 0, f3(vec, 1.f, 0.f, 0.f)), 1); - CHECK(f3_eq(transform + 3, f3(vec, 0.f, 1.f, 0.f)), 1); - CHECK(f3_eq(transform + 6, f3(vec, 0.f, 0.f, 1.f)), 1); - CHECK(f3_eq(transform + 9, f3(vec, -100.f, 0.f, -2.f)), 1); - - CHECK(s3d_primitive_get_attrib - (&hit.prim, S3D_POSITION, hit.uv, &attr), RES_OK); - CHECK(attr.type, S3D_FLOAT3); - CHECK(attr.usage, S3D_POSITION); + CHK(hit.prim.inst_id == inst_id); + CHK(hit.prim.geom_id == walls_id + || hit.prim.geom_id == tall_block_id + || hit.prim.geom_id == short_block_id); + CHK(hit.prim.geom_id < 10); + + CHK(s3d_primitive_get_transform(&hit.prim, transform) == RES_OK); + CHK(f3_eq(transform + 0, f3(vec, 1.f, 0.f, 0.f)) == 1); + CHK(f3_eq(transform + 3, f3(vec, 0.f, 1.f, 0.f)) == 1); + CHK(f3_eq(transform + 6, f3(vec, 0.f, 0.f, 1.f)) == 1); + CHK(f3_eq(transform + 9, f3(vec, -100.f, 0.f, -2.f)) == 1); + + CHK(s3d_primitive_get_attrib + (&hit.prim, S3D_POSITION, hit.uv, &attr) == RES_OK); + CHK(attr.type == S3D_FLOAT3); + CHK(attr.usage == S3D_POSITION); f3_add(pos, f3_mulf(pos, dir, hit.distance), org); - CHECK(f3_eq_eps - (pos, attr.value, 1.e-3f/*Sic O_o!! Really bad precision!*/), 1); + CHK(f3_eq_eps + (pos, attr.value, 1.e-3f/*Sic O_o!! Really bad precision!*/)); len = f3_normalize(N, hit.normal); - NCHECK(len, 0); + CHK(len != 0); - CHECK(s3d_primitive_get_attrib - (&hit.prim, S3D_GEOMETRY_NORMAL, hit.uv, &attr), RES_OK); - CHECK(attr.type, S3D_FLOAT3); - CHECK(attr.usage, S3D_GEOMETRY_NORMAL); + CHK(s3d_primitive_get_attrib + (&hit.prim, S3D_GEOMETRY_NORMAL, hit.uv, &attr) == RES_OK); + CHK(attr.type == S3D_FLOAT3); + CHK(attr.usage == S3D_GEOMETRY_NORMAL); f3_normalize(attr.value, attr.value); - CHECK(f3_eq_eps(attr.value, N, 1.e-6f), 1); + CHK(f3_eq_eps(attr.value, N, 1.e-6f) == 1); - CHECK(hit.prim.scene_prim_id >= hit.prim.prim_id, 1); - CHECK(hit.prim.scene_prim_id < 30, 1); + CHK(hit.prim.scene_prim_id >= hit.prim.prim_id); + CHK(hit.prim.scene_prim_id < 30); if(hit.prim.geom_id == walls_id) { if(hit.prim.prim_id == 4 || hit.prim.prim_id == 5) { @@ -343,22 +343,22 @@ main(int argc, char** argv) } } } - CHECK(s3d_scene_view_ref_put(scnview), RES_OK); + CHK(s3d_scene_view_ref_put(scnview) == RES_OK); - CHECK(image_write_ppm_stream(&img, 0, stdout), RES_OK); + CHK(image_write_ppm_stream(&img, 0, stdout) == RES_OK); image_release(&img); - CHECK(s3d_device_ref_put(dev), RES_OK); - CHECK(s3d_shape_ref_put(inst), RES_OK); - CHECK(s3d_shape_ref_put(short_block), RES_OK); - CHECK(s3d_shape_ref_put(tall_block), RES_OK); - CHECK(s3d_shape_ref_put(walls_copy), RES_OK); - CHECK(s3d_scene_ref_put(scn), RES_OK); - CHECK(s3d_scene_ref_put(scn2), RES_OK); + CHK(s3d_device_ref_put(dev) == RES_OK); + CHK(s3d_shape_ref_put(inst) == RES_OK); + CHK(s3d_shape_ref_put(short_block) == RES_OK); + CHK(s3d_shape_ref_put(tall_block) == RES_OK); + CHK(s3d_shape_ref_put(walls_copy) == RES_OK); + CHK(s3d_scene_ref_put(scn) == RES_OK); + CHK(s3d_scene_ref_put(scn2) == RES_OK); check_memory_allocator(&allocator); mem_shutdown_proxy_allocator(&allocator); - CHECK(mem_allocated_size(), 0); + CHK(mem_allocated_size() == 0); return 0; } diff --git a/src/test_s3d_trace_ray_instance.c b/src/test_s3d_trace_ray_instance.c @@ -64,13 +64,13 @@ filter(const struct s3d_hit* hit, { struct ray* ray = ray_data; - NCHECK(hit, NULL); - NCHECK(ray_org, NULL); - NCHECK(ray_dir, NULL); - NCHECK(ray_data, NULL); - CHECK(filter_data, NULL); - CHECK(f3_eq(ray_org, ray->org), 1); - CHECK(f3_eq(ray_dir, ray->dir), 1); + CHK(hit != NULL); + CHK(ray_org != NULL); + CHK(ray_dir != NULL); + CHK(ray_data != NULL); + CHK(filter_data == NULL); + CHK(f3_eq(ray_org, ray->org) == 1); + CHK(f3_eq(ray_dir, ray->dir) == 1); return 0; } @@ -78,8 +78,8 @@ static void quad_get_ids(const unsigned itri, unsigned ids[3], void* data) { const unsigned id = itri * 3; - NCHECK(ids, NULL); - CHECK(itri < quad_ntris, 1); + CHK(ids != NULL); + CHK(itri < quad_ntris); (void)data; ids[0] = quad_ids[id + 0]; ids[1] = quad_ids[id + 1]; @@ -90,8 +90,8 @@ static void quad_get_pos(const unsigned ivert, float pos[3], void* data) { const unsigned i = ivert*3; - NCHECK(pos, NULL); - CHECK(ivert < quad_nverts, 1); + CHK(pos != NULL); + CHK(ivert < quad_nverts); (void)data; pos[0] = quad_verts[i+0]; pos[1] = quad_verts[i+1]; @@ -121,63 +121,63 @@ test_quad(struct s3d_device* dev) vdata.type = S3D_FLOAT3; vdata.usage = S3D_POSITION; vdata.get = quad_get_pos; - CHECK(s3d_shape_create_mesh(dev, &quad), RES_OK); - CHECK(s3d_mesh_set_hit_filter_function(quad, filter, NULL), RES_OK); - CHECK(s3d_mesh_setup_indexed_vertices - (quad, quad_ntris, quad_get_ids, quad_nverts, &vdata, 1, NULL), RES_OK); + CHK(s3d_shape_create_mesh(dev, &quad) == RES_OK); + CHK(s3d_mesh_set_hit_filter_function(quad, filter, NULL) == RES_OK); + CHK(s3d_mesh_setup_indexed_vertices + (quad, quad_ntris, quad_get_ids, quad_nverts, &vdata, 1, NULL) == RES_OK); - CHECK(s3d_scene_create(dev, &scn), RES_OK); - CHECK(s3d_scene_attach_shape(scn, quad), RES_OK); - CHECK(s3d_scene_instantiate(scn, &quad_inst), RES_OK); - CHECK(s3d_instance_set_transform(quad_inst, transform), RES_OK); - CHECK(s3d_scene_ref_put(scn), RES_OK); + CHK(s3d_scene_create(dev, &scn) == RES_OK); + CHK(s3d_scene_attach_shape(scn, quad) == RES_OK); + CHK(s3d_scene_instantiate(scn, &quad_inst) == RES_OK); + CHK(s3d_instance_set_transform(quad_inst, transform) == RES_OK); + CHK(s3d_scene_ref_put(scn) == RES_OK); - CHECK(s3d_scene_create(dev, &scn), RES_OK); - CHECK(s3d_scene_attach_shape(scn, quad_inst), RES_OK); - CHECK(s3d_scene_view_create(scn, S3D_TRACE, &view[0]), RES_OK); + CHK(s3d_scene_create(dev, &scn) == RES_OK); + CHK(s3d_scene_attach_shape(scn, quad_inst) == RES_OK); + CHK(s3d_scene_view_create(scn, S3D_TRACE, &view[0]) == RES_OK); - CHECK(s3d_scene_clear(scn), RES_OK); - CHECK(s3d_scene_attach_shape(scn, quad), RES_OK); - CHECK(s3d_scene_view_create(scn, S3D_TRACE, &view[1]), RES_OK); + CHK(s3d_scene_clear(scn) == RES_OK); + CHK(s3d_scene_attach_shape(scn, quad) == RES_OK); + CHK(s3d_scene_view_create(scn, S3D_TRACE, &view[1]) == RES_OK); - CHECK(s3d_shape_get_id(quad, &quad_id), RES_OK); - CHECK(s3d_shape_get_id(quad_inst, &quad_inst_id), RES_OK); + CHK(s3d_shape_get_id(quad, &quad_id) == RES_OK); + CHK(s3d_shape_get_id(quad_inst, &quad_inst_id) == RES_OK); f3(ray.org, 0.f, 0.5f, -1.f); f3(ray.dir, 0.f, 0.f, 1.f); f2(range, 0.f, FLT_MAX); - CHECK(s3d_scene_view_trace_ray - (view[0], ray.org, ray.dir, range, &ray, &hit[0]), RES_OK); - CHECK(s3d_scene_view_trace_ray - (view[1], ray.org, ray.dir, range, &ray, &hit[1]), RES_OK); - - CHECK(hit[0].prim.prim_id, 0); - CHECK(hit[1].prim.prim_id, 1); - CHECK(hit[0].prim.geom_id, quad_id); - CHECK(hit[1].prim.geom_id, quad_id); - CHECK(hit[0].prim.inst_id, quad_inst_id); - CHECK(hit[1].prim.inst_id, S3D_INVALID_ID); - CHECK(f3_eq_eps(hit[0].normal, f3_minus(dir, hit[1].normal), 1.e-6f), 1); - CHECK(eq_epsf(hit[0].distance, hit[1].distance, 1.e-6f), 1); - - CHECK(s3d_primitive_get_attrib - (&hit[0].prim, S3D_GEOMETRY_NORMAL, hit[0].uv, &attr), RES_OK); + CHK(s3d_scene_view_trace_ray + (view[0], ray.org, ray.dir, range, &ray, &hit[0]) == RES_OK); + CHK(s3d_scene_view_trace_ray + (view[1], ray.org, ray.dir, range, &ray, &hit[1]) == RES_OK); + + CHK(hit[0].prim.prim_id == 0); + CHK(hit[1].prim.prim_id == 1); + CHK(hit[0].prim.geom_id == quad_id); + CHK(hit[1].prim.geom_id == quad_id); + CHK(hit[0].prim.inst_id == quad_inst_id); + CHK(hit[1].prim.inst_id == S3D_INVALID_ID); + CHK(f3_eq_eps(hit[0].normal, f3_minus(dir, hit[1].normal), 1.e-6f) == 1); + CHK(eq_epsf(hit[0].distance, hit[1].distance, 1.e-6f) == 1); + + CHK(s3d_primitive_get_attrib + (&hit[0].prim, S3D_GEOMETRY_NORMAL, hit[0].uv, &attr) == RES_OK); f3_normalize(attr.value, attr.value); f3_normalize(hit[0].normal, hit[0].normal); - CHECK(f3_eq_eps(hit[0].normal, attr.value, 1.e-6f), 1); + CHK(f3_eq_eps(hit[0].normal, attr.value, 1.e-6f) == 1); - CHECK(s3d_primitive_get_attrib - (&hit[1].prim, S3D_GEOMETRY_NORMAL, hit[1].uv, &attr), RES_OK); + CHK(s3d_primitive_get_attrib + (&hit[1].prim, S3D_GEOMETRY_NORMAL, hit[1].uv, &attr) == RES_OK); f3_normalize(attr.value, attr.value); f3_normalize(hit[1].normal, hit[1].normal); - CHECK(f3_eq_eps(hit[1].normal, attr.value, 1.e-6f), 1); + CHK(f3_eq_eps(hit[1].normal, attr.value, 1.e-6f) == 1); - CHECK(s3d_scene_view_ref_put(view[0]), RES_OK); - CHECK(s3d_scene_view_ref_put(view[1]), RES_OK); + CHK(s3d_scene_view_ref_put(view[0]) == RES_OK); + CHK(s3d_scene_view_ref_put(view[1]) == RES_OK); - CHECK(s3d_shape_ref_put(quad_inst), RES_OK); - CHECK(s3d_shape_ref_put(quad), RES_OK); - CHECK(s3d_scene_ref_put(scn), RES_OK); + CHK(s3d_shape_ref_put(quad_inst) == RES_OK); + CHK(s3d_shape_ref_put(quad) == RES_OK); + CHK(s3d_scene_ref_put(scn) == RES_OK); } static void @@ -201,8 +201,8 @@ test_cbox(struct s3d_device* dev) const size_t N = 8; size_t x, y; - CHECK(s3d_scene_create(dev, &cbox), RES_OK); - CHECK(s3d_scene_create(dev, &scn), RES_OK); + CHK(s3d_scene_create(dev, &cbox) == RES_OK); + CHK(s3d_scene_create(dev, &scn) == RES_OK); vdata.usage = S3D_POSITION; vdata.type = S3D_FLOAT3; @@ -211,35 +211,35 @@ test_cbox(struct s3d_device* dev) /* Walls */ cbox_desc.vertices = cbox_walls; cbox_desc.indices = cbox_walls_ids; - CHECK(s3d_shape_create_mesh(dev, &shape), RES_OK); - CHECK(s3d_mesh_setup_indexed_vertices(shape, cbox_walls_ntris, cbox_get_ids, - cbox_walls_nverts, &vdata, 1, &cbox_desc), RES_OK); - CHECK(s3d_scene_attach_shape(cbox, shape), RES_OK); - CHECK(s3d_shape_get_id(shape, &walls_id), RES_OK); - CHECK(s3d_shape_ref_put(shape), RES_OK); + CHK(s3d_shape_create_mesh(dev, &shape) == RES_OK); + CHK(s3d_mesh_setup_indexed_vertices(shape, cbox_walls_ntris, cbox_get_ids, + cbox_walls_nverts, &vdata, 1, &cbox_desc) == RES_OK); + CHK(s3d_scene_attach_shape(cbox, shape) == RES_OK); + CHK(s3d_shape_get_id(shape, &walls_id) == RES_OK); + CHK(s3d_shape_ref_put(shape) == RES_OK); /* Short block */ cbox_desc.vertices = cbox_short_block; cbox_desc.indices = cbox_block_ids; - CHECK(s3d_shape_create_mesh(dev, &shape), RES_OK); - CHECK(s3d_mesh_setup_indexed_vertices(shape, cbox_block_ntris, cbox_get_ids, - cbox_block_nverts, &vdata, 1, &cbox_desc), RES_OK); - CHECK(s3d_scene_attach_shape(cbox, shape), RES_OK); - CHECK(s3d_shape_ref_put(shape), RES_OK); + CHK(s3d_shape_create_mesh(dev, &shape) == RES_OK); + CHK(s3d_mesh_setup_indexed_vertices(shape, cbox_block_ntris, cbox_get_ids, + cbox_block_nverts, &vdata, 1, &cbox_desc) == RES_OK); + CHK(s3d_scene_attach_shape(cbox, shape) == RES_OK); + CHK(s3d_shape_ref_put(shape) == RES_OK); /* Tall block */ cbox_desc.vertices = cbox_tall_block; cbox_desc.indices = cbox_block_ids; - CHECK(s3d_shape_create_mesh(dev, &shape), RES_OK); - CHECK(s3d_mesh_setup_indexed_vertices(shape, cbox_block_ntris, cbox_get_ids, - cbox_block_nverts, &vdata, 1, &cbox_desc), RES_OK); - CHECK(s3d_scene_attach_shape(cbox, shape), RES_OK); - CHECK(s3d_shape_ref_put(shape), RES_OK); + CHK(s3d_shape_create_mesh(dev, &shape) == RES_OK); + CHK(s3d_mesh_setup_indexed_vertices(shape, cbox_block_ntris, cbox_get_ids, + cbox_block_nverts, &vdata, 1, &cbox_desc) == RES_OK); + CHK(s3d_scene_attach_shape(cbox, shape) == RES_OK); + CHK(s3d_shape_ref_put(shape) == RES_OK); /* Compute the cbox extends */ - CHECK(s3d_scene_view_create(cbox, S3D_GET_PRIMITIVE, &view), RES_OK); - CHECK(s3d_scene_view_get_aabb(view, lower, upper), RES_OK); - CHECK(s3d_scene_view_ref_put(view), RES_OK); + CHK(s3d_scene_view_create(cbox, S3D_GET_PRIMITIVE, &view) == RES_OK); + CHK(s3d_scene_view_get_aabb(view, lower, upper) == RES_OK); + CHK(s3d_scene_view_ref_put(view) == RES_OK); f3_sub(extend, upper, lower); /* Create instances */ @@ -250,10 +250,10 @@ test_cbox(struct s3d_device* dev) FOR_EACH(x, 0, N) { pos[2] = -size[1] * 0.5f; FOR_EACH(y, 0, N) { - CHECK(s3d_scene_instantiate(cbox, &shape), RES_OK); - CHECK(s3d_instance_set_position(shape, pos), RES_OK); - CHECK(s3d_scene_attach_shape(scn, shape), RES_OK); - CHECK(s3d_shape_ref_put(shape), RES_OK); + CHK(s3d_scene_instantiate(cbox, &shape) == RES_OK); + CHK(s3d_instance_set_position(shape, pos) == RES_OK); + CHK(s3d_scene_attach_shape(scn, shape) == RES_OK); + CHK(s3d_shape_ref_put(shape) == RES_OK); pos[2] += extend[2] * 1.05f; } pos[0] += extend[0] * 1.05f; @@ -267,11 +267,11 @@ test_cbox(struct s3d_device* dev) camera_init(&cam, pos, tgt, up, (float)PI*0.5f, proj_ratio); image_init(NULL, &img); - CHECK(image_setup - (&img, img_sz[0], img_sz[1], img_sz[0]*3, IMAGE_RGB8, NULL), RES_OK); + CHK(image_setup + (&img, img_sz[0], img_sz[1], img_sz[0]*3, IMAGE_RGB8, NULL) == RES_OK); /* Trace rays */ - CHECK(s3d_scene_view_create(scn, S3D_TRACE, &view), RES_OK); + CHK(s3d_scene_view_create(scn, S3D_TRACE, &view) == RES_OK); range[0] = 0.f; range[1] = FLT_MAX; FOR_EACH(y, 0, img_sz[1]) { @@ -283,7 +283,7 @@ test_cbox(struct s3d_device* dev) pixel[0] = (float)x/(float)img_sz[0]; camera_ray(&cam, pixel, org, dir); - CHECK(s3d_scene_view_trace_ray(view, org, dir, range, NULL, &hit), RES_OK); + CHK(s3d_scene_view_trace_ray(view, org, dir, range, NULL, &hit) == RES_OK); if(S3D_HIT_NONE(&hit)) { ((uint8_t*)img.pixels)[ipix+0] = 0; @@ -311,15 +311,15 @@ test_cbox(struct s3d_device* dev) } } } - CHECK(s3d_scene_view_ref_put(view), RES_OK); + CHK(s3d_scene_view_ref_put(view) == RES_OK); /* Write image */ - CHECK(image_write_ppm_stream(&img, 0, stdout), RES_OK); + CHK(image_write_ppm_stream(&img, 0, stdout) == RES_OK); image_release(&img); /* Release data */ - CHECK(s3d_scene_ref_put(cbox), RES_OK); - CHECK(s3d_scene_ref_put(scn), RES_OK); + CHK(s3d_scene_ref_put(cbox) == RES_OK); + CHK(s3d_scene_ref_put(scn) == RES_OK); } int @@ -330,15 +330,15 @@ main(int argc, char** argv) (void)argc, (void)argv; mem_init_proxy_allocator(&allocator, &mem_default_allocator); - CHECK(s3d_device_create(NULL, &allocator, 0, &dev), RES_OK); + CHK(s3d_device_create(NULL, &allocator, 0, &dev) == RES_OK); test_quad(dev); test_cbox(dev); - CHECK(s3d_device_ref_put(dev), RES_OK); + CHK(s3d_device_ref_put(dev) == RES_OK); check_memory_allocator(&allocator); mem_shutdown_proxy_allocator(&allocator); - CHECK(mem_allocated_size(), 0); + CHK(mem_allocated_size() == 0); return 0; }