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