solstice-solver

Solver library of the solstice app
git clone git://git.meso-star.com/solstice-solver.git
Log | Files | Refs | README | LICENSE

commit fb1f3fe52b7d9f0711bc83d0e312b96fabbf4de1
parent 04a0d990f6d2dff63680fb9e9b3c5fb52e180c2f
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Tue, 11 Oct 2016 15:27:42 +0200

Replace the ssol_instance_dont_sample function by ssol_instance_sample

Diffstat:
Msrc/ssol.h | 8++++++--
Msrc/ssol_instance.c | 7++++---
Msrc/ssol_instance_c.h | 2+-
Msrc/ssol_scene.c | 2+-
Msrc/test_ssol_instance.c | 6+++---
Msrc/test_ssol_solver1.c | 16++++++++--------
Msrc/test_ssol_solver2.c | 4++--
Msrc/test_ssol_solver2b.c | 4++--
Msrc/test_ssol_solver3.c | 2+-
Msrc/test_ssol_solver3N.c | 2+-
Msrc/test_ssol_solver4.c | 4++--
Msrc/test_ssol_solver5.c | 2+-
12 files changed, 32 insertions(+), 27 deletions(-)

diff --git a/src/ssol.h b/src/ssol.h @@ -223,6 +223,8 @@ struct ssol_receiver_data { float normal[3]; double weight; float uv[2]; + + /* TODO Add the geometry and primitive identifier */ }; /* result for MC simulations */ @@ -490,10 +492,12 @@ ssol_instance_set_receiver (struct ssol_instance* instance, const int mask); /* Combination of ssol_face_flags */ +/* Define whether or not the instance is sampled or not. By default an instance + * is sampled. */ SSOL_API res_T -ssol_instance_dont_sample +ssol_instance_sample (struct ssol_instance* instance, - const int dont_sample); + const int sample); /* Retrieve the id of the shape */ SSOL_API res_T diff --git a/src/ssol_instance.c b/src/ssol_instance.c @@ -77,6 +77,7 @@ ssol_object_instantiate SSOL(object_ref_get(object)); instance->dev = dev; instance->object = object; + instance->sample = 1; d33_set_identity(instance->transform); d3_splat(instance->transform + 9, 0); @@ -159,12 +160,12 @@ ssol_instance_set_receiver(struct ssol_instance* instance, const int mask) } res_T -ssol_instance_dont_sample +ssol_instance_sample (struct ssol_instance* instance, - const int dont_sample) + const int sample) { if(!instance) return RES_BAD_ARG; - instance->dont_sample = dont_sample; + instance->sample = sample; return RES_OK; } diff --git a/src/ssol_instance_c.h b/src/ssol_instance_c.h @@ -26,7 +26,7 @@ struct ssol_instance { struct s3d_shape* shape_samp; /* Instantiated Star-3D shape to sample */ double transform[12]; /* Column major 4x3 affine transformation */ int receiver_mask; /* Combination of ssol_face_flag */ - int dont_sample; + int sample; /* Define whether or not the instance is sampled or not */ struct fid id; /* Unique identifier */ diff --git a/src/ssol_scene.c b/src/ssol_scene.c @@ -295,7 +295,7 @@ scene_setup_s3d_sampling_scene hr = 1; } - if(inst->dont_sample) continue; + if(!inst->sample) continue; /* FIXME: should not sample virtual (material) instance as material is used to compute output dir */ hs = 1; diff --git a/src/test_ssol_instance.c b/src/test_ssol_instance.c @@ -75,9 +75,9 @@ main(int argc, char** argv) CHECK(ssol_instance_set_receiver(NULL, 0), RES_BAD_ARG); CHECK(ssol_instance_set_receiver(instance, 0), RES_OK); #undef SET_RECEIVER - CHECK(ssol_instance_dont_sample(NULL, 1), RES_BAD_ARG); - CHECK(ssol_instance_dont_sample(instance, 1), RES_OK); - CHECK(ssol_instance_dont_sample(instance, 0), RES_OK); + CHECK(ssol_instance_sample(NULL, 0), RES_BAD_ARG); + CHECK(ssol_instance_sample(instance, 0), RES_OK); + CHECK(ssol_instance_sample(instance, 1), RES_OK); CHECK(ssol_instance_ref_put(instance), RES_OK); diff --git a/src/test_ssol_solver1.c b/src/test_ssol_solver1.c @@ -147,13 +147,13 @@ main(int argc, char** argv) CHECK(ssol_solve(scene, rng, 1, stdout, estimator), RES_OK); /* ready to solve! */ - CHECK(ssol_instance_dont_sample(target, 1), RES_OK); - CHECK(ssol_instance_dont_sample(secondary, 1), RES_OK); - CHECK(ssol_instance_dont_sample(heliostat, 1), RES_OK); + CHECK(ssol_instance_sample(target, 0), RES_OK); + CHECK(ssol_instance_sample(secondary, 0), RES_OK); + CHECK(ssol_instance_sample(heliostat, 0), RES_OK); CHECK(ssol_solve(scene, rng, 10, stdout, estimator), RES_BAD_ARG); /* no geometry to sample */ - CHECK(ssol_instance_dont_sample(target, 0), RES_OK); - CHECK(ssol_instance_dont_sample(secondary, 0), RES_OK); - CHECK(ssol_instance_dont_sample(heliostat, 0), RES_OK); + CHECK(ssol_instance_sample(target, 1), RES_OK); + CHECK(ssol_instance_sample(secondary, 1), RES_OK); + CHECK(ssol_instance_sample(heliostat, 1), RES_OK); CHECK(ssol_scene_detach_sun(scene, sun), RES_OK); CHECK(ssol_solve(scene, rng, 10, stdout, estimator), RES_BAD_ARG); /* no attached sun */ @@ -224,8 +224,8 @@ main(int argc, char** argv) CHECK(status.Nf, fcount); /* sample primary mirror only; variance is low */ - CHECK(ssol_instance_dont_sample(target, 1), RES_OK); - CHECK(ssol_instance_dont_sample(secondary, 1), RES_OK); + CHECK(ssol_instance_sample(target, 0), RES_OK); + CHECK(ssol_instance_sample(secondary, 0), RES_OK); NCHECK(tmp = tmpfile(), 0); CHECK(ssol_estimator_clear(estimator), RES_OK); diff --git a/src/test_ssol_solver2.c b/src/test_ssol_solver2.c @@ -169,7 +169,7 @@ main(int argc, char** argv) CHECK(ssol_object_instantiate(s_object, &secondary), RES_OK); CHECK(ssol_instance_set_receiver(secondary, SSOL_FRONT), RES_OK); CHECK(ssol_instance_set_transform(secondary, transform1), RES_OK); - CHECK(ssol_instance_dont_sample(secondary, 1), RES_OK); + CHECK(ssol_instance_sample(secondary, 0), RES_OK); CHECK(ssol_scene_attach_instance(scene, secondary), RES_OK); CHECK(ssol_object_create(dev, &t_object), RES_OK); @@ -177,7 +177,7 @@ main(int argc, char** argv) CHECK(ssol_object_instantiate(t_object, &target), RES_OK); CHECK(ssol_instance_set_transform(target, transform2), RES_OK); CHECK(ssol_instance_set_receiver(target, SSOL_FRONT), RES_OK); - CHECK(ssol_instance_dont_sample(target, 1), RES_OK); + CHECK(ssol_instance_sample(target, 0), RES_OK); CHECK(ssol_scene_attach_instance(scene, target), RES_OK); NCHECK(tmp = tmpfile(), 0); diff --git a/src/test_ssol_solver2b.c b/src/test_ssol_solver2b.c @@ -174,7 +174,7 @@ main(int argc, char** argv) CHECK(ssol_object_instantiate(s_object, &secondary), RES_OK); CHECK(ssol_instance_set_receiver(secondary, SSOL_FRONT), RES_OK); CHECK(ssol_instance_set_transform(secondary, transform1), RES_OK); - CHECK(ssol_instance_dont_sample(secondary, 1), RES_OK); + CHECK(ssol_instance_sample(secondary, 0), RES_OK); CHECK(ssol_scene_attach_instance(scene, secondary), RES_OK); CHECK(ssol_object_create(dev, &t_object), RES_OK); @@ -182,7 +182,7 @@ main(int argc, char** argv) CHECK(ssol_object_instantiate(t_object, &target), RES_OK); CHECK(ssol_instance_set_transform(target, transform2), RES_OK); CHECK(ssol_instance_set_receiver(target, SSOL_FRONT), RES_OK); - CHECK(ssol_instance_dont_sample(target, 1), RES_OK); + CHECK(ssol_instance_sample(target, 0), RES_OK); CHECK(ssol_scene_attach_instance(scene, target), RES_OK); NCHECK(tmp = tmpfile(), 0); diff --git a/src/test_ssol_solver3.c b/src/test_ssol_solver3.c @@ -136,7 +136,7 @@ main(int argc, char** argv) CHECK(ssol_object_instantiate(t_object, &target), RES_OK); CHECK(ssol_instance_set_transform(target, transform), RES_OK); CHECK(ssol_instance_set_receiver(target, SSOL_FRONT), RES_OK); - CHECK(ssol_instance_dont_sample(target, 1), RES_OK); + CHECK(ssol_instance_sample(target, 0), RES_OK); CHECK(ssol_scene_attach_instance(scene, target), RES_OK); NCHECK(tmp = tmpfile(), 0); diff --git a/src/test_ssol_solver3N.c b/src/test_ssol_solver3N.c @@ -201,7 +201,7 @@ main(int argc, char** argv) CHECK(ssol_object_instantiate(t_object, &target), RES_OK); CHECK(ssol_instance_set_transform(target, transform), RES_OK); CHECK(ssol_instance_set_receiver(target, SSOL_FRONT), RES_OK); - CHECK(ssol_instance_dont_sample(target, 1), RES_OK); + CHECK(ssol_instance_sample(target, 0), RES_OK); CHECK(ssol_scene_attach_instance(scene, target), RES_OK); NCHECK(tmp = tmpfile(), 0); diff --git a/src/test_ssol_solver4.c b/src/test_ssol_solver4.c @@ -137,12 +137,12 @@ main(int argc, char** argv) CHECK(ssol_object_instantiate(t_object, &target1), RES_OK); CHECK(ssol_instance_set_transform(target1, transform), RES_OK); CHECK(ssol_instance_set_receiver(target1, SSOL_FRONT), RES_OK); - CHECK(ssol_instance_dont_sample(target1, 1), RES_OK); + CHECK(ssol_instance_sample(target1, 0), RES_OK); CHECK(ssol_scene_attach_instance(scene, target1), RES_OK); CHECK(ssol_object_instantiate(t_object, &target2), RES_OK); CHECK(ssol_instance_set_transform(target2, transform), RES_OK); CHECK(ssol_instance_set_receiver(target2, SSOL_FRONT), RES_OK); - CHECK(ssol_instance_dont_sample(target2, 1), RES_OK); + CHECK(ssol_instance_sample(target2, 0), RES_OK); CHECK(ssol_scene_attach_instance(scene, target2), RES_OK); NCHECK(tmp = tmpfile(), 0); diff --git a/src/test_ssol_solver5.c b/src/test_ssol_solver5.c @@ -136,7 +136,7 @@ main(int argc, char** argv) CHECK(ssol_object_instantiate(t_object, &target), RES_OK); CHECK(ssol_instance_set_transform(target, transform), RES_OK); CHECK(ssol_instance_set_receiver(target, SSOL_FRONT), RES_OK); - CHECK(ssol_instance_dont_sample(target, 1), RES_OK); + CHECK(ssol_instance_sample(target, 0), RES_OK); CHECK(ssol_scene_attach_instance(scene, target), RES_OK); NCHECK(tmp = tmpfile(), 0);