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