star-sf

Set of surface and volume scattering functions
git clone git://git.meso-star.fr/star-sf.git
Log | Files | Refs | README | LICENSE

commit 1d5c6b8d327e3c8107e3480919b467d9f7122cbd
parent 0423d8686216f088137ee7d1a6bbd3c13acf89f6
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Thu, 15 Sep 2016 15:25:40 +0200

Check that the reflectivity of the specular reflection is in [0, 1]

Diffstat:
Msrc/ssf_specular_reflection.c | 2+-
Msrc/test_ssf_bsdf.c | 7+++----
Msrc/test_ssf_specular_reflection.c | 14+++++++-------
3 files changed, 11 insertions(+), 12 deletions(-)

diff --git a/src/ssf_specular_reflection.c b/src/ssf_specular_reflection.c @@ -90,7 +90,7 @@ const struct ssf_bxdf_type ssf_specular_reflection = { res_T ssf_specular_reflection_setup(struct ssf_bxdf* bxdf, const double reflectivity) { - if(!bxdf || reflectivity < 0) return RES_BAD_ARG; + if(!bxdf || reflectivity < 0 || reflectivity > 1) return RES_BAD_ARG; if(!BXDF_TYPE_EQ(&bxdf->type, &ssf_specular_reflection)) return RES_BAD_ARG; ((struct specular_reflection*)bxdf->data)->reflectivity = reflectivity; return RES_OK; diff --git a/src/test_ssf_bsdf.c b/src/test_ssf_bsdf.c @@ -44,7 +44,7 @@ main(int argc, char** argv) CHECK(ssf_bsdf_create(&allocator, &bsdf), RES_OK); CHECK(ssf_bxdf_create(&allocator, &ssf_specular_reflection, &bxdf), RES_OK); - CHECK(ssf_specular_reflection_setup(bxdf, 2.0), RES_OK); + CHECK(ssf_specular_reflection_setup(bxdf, 0.123), RES_OK); CHECK(ssf_bsdf_add(NULL, NULL, -1.0), RES_BAD_ARG); CHECK(ssf_bsdf_add(bsdf, NULL, -1.0), RES_BAD_ARG); @@ -59,8 +59,8 @@ main(int argc, char** argv) d3_normalize(w, d3(w, -1, -1, 0)); d3(N, 0.0, 1.0, 0.0); - CHECK(ssf_bsdf_view_sample(view, 0, 0, w, N, dir), 2.0); - CHECK(ssf_bsdf_view_sample(view, 0.5, 0.5, w, N, dir), 2.0); + CHECK(ssf_bsdf_view_sample(view, 0, 0, w, N, dir), 0.123); + CHECK(ssf_bsdf_view_sample(view, 0.5, 0.5, w, N, dir), 0.123); CHECK(ssf_bsdf_clear(NULL), RES_BAD_ARG); CHECK(ssf_bsdf_clear(bsdf), RES_OK); @@ -76,6 +76,5 @@ main(int argc, char** argv) check_memory_allocator(&allocator); mem_shutdown_proxy_allocator(&allocator); CHECK(mem_allocated_size(), 0); - return 0; } diff --git a/src/test_ssf_specular_reflection.c b/src/test_ssf_specular_reflection.c @@ -38,35 +38,35 @@ main(int argc, char** argv) CHECK(ssf_specular_reflection_setup(NULL, 1.0), RES_BAD_ARG); CHECK(ssf_specular_reflection_setup(brdf, 1.0), RES_OK); CHECK(ssf_specular_reflection_setup(brdf, 0.0), RES_OK); + CHECK(ssf_specular_reflection_setup(brdf, 1.1), RES_BAD_ARG); CHECK(ssf_specular_reflection_setup(dummy, 0.0), RES_BAD_ARG); d3(N, 0.0, 1.0, 0.0); - d3_normalize(w, d3(w, -1.0, -1.0, 0.0)); CHECK(ssf_bxdf_sample(brdf, 0, 0, w, N, dir), 0.0); d3_normalize(w, d3(w, -1.0, -1.0, 0.0)); - CHECK(ssf_specular_reflection_setup(brdf, 1.23), RES_OK); - CHECK(ssf_bxdf_sample(brdf, 0, 0, w, N, dir), 1.23); + CHECK(ssf_specular_reflection_setup(brdf, 0.123), RES_OK); + CHECK(ssf_bxdf_sample(brdf, 0, 0, w, N, dir), 0.123); CHECK(d3_eq_eps(d3(w, w[0], -w[1], 0.0), dir, 1.e-6), 1); CHECK(ssf_bxdf_eval(brdf, w, dir), 0.0); CHECK(ssf_bxdf_pdf(brdf, w, dir), 0.0); d3(w, 0.0, -1.0, 0.0); - CHECK(ssf_bxdf_sample(brdf, 0, 0, w, N, dir), 1.23); + CHECK(ssf_bxdf_sample(brdf, 0, 0, w, N, dir), 0.123); CHECK(d3_eq_eps(d3(w, 0.0, 1.0, 0.0), dir, 1.e-6), 1); d3_normalize(w, d3(w, -1.0, 1.0, 0.0)); - CHECK(ssf_bxdf_sample(brdf, 0, 0, w, N, dir), 1.23); + CHECK(ssf_bxdf_sample(brdf, 0, 0, w, N, dir), 0.123); CHECK(d3_eq_eps(d3(w, w[0], -w[1], 0.0), dir, 1.e-6), 1); d3(w, 0.0, 1.0, 0.0); - CHECK(ssf_bxdf_sample(brdf, 0, 0, w, N, dir), 1.23); + CHECK(ssf_bxdf_sample(brdf, 0, 0, w, N, dir), 0.123); CHECK(d3_eq_eps(d3(w, 0.0, -1.0, 0.0), dir, 1.e-6), 1); d3(w, -1.0, 0.0, 0.0); - CHECK(ssf_bxdf_sample(brdf, 0, 0, w, N, dir), 1.23); + CHECK(ssf_bxdf_sample(brdf, 0, 0, w, N, dir), 0.123); CHECK(d3_eq_eps(w, dir, 1.e-6), 1); CHECK(ssf_bxdf_ref_put(brdf), RES_OK);