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 dbd826543e0ad5495cdc19840ce6829c678f5588
parent f9466045834737258ae31a3ac8c51345a4e9c8d6
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date:   Wed, 15 Nov 2017 15:27:54 +0100

Use new star-sp 0.5 and make the changes required by the new API.

Diffstat:
Mcmake/CMakeLists.txt | 2+-
Msrc/ssf_lambertian_reflection.c | 5++---
Msrc/test_ssf_microfacet_reflection.c | 8++++----
Msrc/test_ssf_utils.h | 5++---
4 files changed, 9 insertions(+), 11 deletions(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt @@ -26,7 +26,7 @@ set(SSF_SOURCE_DIR ${PROJECT_SOURCE_DIR}/../src) ################################################################################ find_package(RCMake REQUIRED) find_package(RSys 0.4 REQUIRED) -find_package(StarSP 0.3 REQUIRED) +find_package(StarSP 0.5 REQUIRED) include_directories(${RSys_INCLUDE_DIR} ${StarSP_INCLUDE_DIR}) set(CMAKE_MODULE_PATH ${RCMAKE_SOURCE_DIR}) diff --git a/src/ssf_lambertian_reflection.c b/src/ssf_lambertian_reflection.c @@ -63,14 +63,13 @@ lambertian_reflection_sample int* type, double* pdf) { - double sample[4]; + double sample[3]; ASSERT(data && rng && wo && N && wi && type && pdf); ASSERT(d3_is_normalized(wo) && d3_is_normalized(N) && d3_dot(wo, N) > 0); (void)wo; - ssp_ran_hemisphere_cos(rng, N, sample); + ssp_ran_hemisphere_cos(rng, N, sample, pdf); d3_set(wi, sample); - *pdf = sample[3]; *type = SSF_REFLECTION | SSF_DIFFUSE; return ((struct lambertian_reflection*)data)->reflectivity; } diff --git a/src/test_ssf_microfacet_reflection.c b/src/test_ssf_microfacet_reflection.c @@ -28,8 +28,8 @@ main(int argc, char** argv) struct ssf_fresnel* F; struct ssf_microfacet_distribution* D; struct ssp_rng* rng; - double N[4]; /* xyz, pdf */ - double wo[4]; /* xyz, pdf */ + double N[3]; + double wo[3]; size_t i, NSTEPS=100000; (void)argc, (void)argv; @@ -53,8 +53,8 @@ main(int argc, char** argv) CHECK(ssf_microfacet_reflection_setup(bsdf, F, D), RES_OK); /* Check energy conservation */ - ssp_ran_sphere_uniform(rng, N); - ssp_ran_hemisphere_cos(rng, N, wo); + ssp_ran_sphere_uniform(rng, N, NULL); + ssp_ran_hemisphere_cos(rng, N, wo, NULL); FOR_EACH(i, 0, NSTEPS) { double wi[3], pdf; int type; diff --git a/src/test_ssf_utils.h b/src/test_ssf_utils.h @@ -189,7 +189,7 @@ check_microfacet_distribution const size_t NSTEPS = 10000; size_t i; size_t n; - double sample[4]; + double sample[3]; double E, V, SE; double sum, sum2; @@ -204,9 +204,8 @@ check_microfacet_distribution do { FOR_EACH(i, 0, NSTEPS) { double wh[3], pdf, D, weight; - ssp_ran_hemisphere_cos(rng, N, sample); + ssp_ran_hemisphere_cos(rng, N, sample, &pdf); d3_set(wh, sample); - pdf = sample[3]; D = ssf_microfacet_distribution_eval(distrib, N, wh); weight = D * d3_dot(wh, N) / pdf; sum += weight;