commit cc9ac6210658e7263edf4e5e1bae3edbafe56dd6
parent 0e4d2f2ddf6fd4801bca635c0e9d5cefe6a803a0
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Fri, 9 Sep 2016 14:47:09 +0200
Fix naming issues
Diffstat:
8 files changed, 75 insertions(+), 76 deletions(-)
diff --git a/src/ssf.h b/src/ssf.h
@@ -48,7 +48,7 @@ struct ssf_bxdf_type {
res_T (*init)(struct mem_allocator* allocator, void* bxdf);
void (*release)(void* bxdf);
- double /* Sampled radiance */
+ double /* Sampled reflectivity */
(*sample)
(void* bxdf,
const double u, /* Canonical random number */
@@ -121,7 +121,7 @@ ssf_bsdf_sample
const double w[3], /* Normalized incoming direction */
const double N[3], /* Normalized normal */
double dir[4], /* Sampled direction. The PDF is stored in dir[3] */
- double* radiance); /* Sampled radiance */
+ double* reflectivity); /* Sampled reflectivity */
/*******************************************************************************
* Fresnel API - Define the equation of the fresnel term
@@ -158,15 +158,16 @@ SSF_API res_T
ssf_fresnel_dielectric_setup
(struct ssf_fresnel* fresnel,
/* Refraction id of the medium the incoming ray travels in */
- const double lambda_i,
+ const double eta_i,
/* Refraction id of the medium the outgoing transmission ray travels in */
- const double lambda_t);
+ const double eta_t);
SSF_API res_T
ssf_fresnel_conductor_setup
(struct ssf_fresnel* fresnel,
- const double eta, /* Real part of the refraction id */
- const double k); /* Imaginary part of the refraction id */
+ const double eta_i, /* Refraction id of the dielectric medium */
+ const double eta_t, /* Real part of the refraction id of the conductor */
+ const double k_t); /* Imaginary part of the refraction id of the conductor */
/*******************************************************************************
* BxDF API - Bidirecitonal <Reflectance|Transmittance> distribution function.
@@ -194,7 +195,7 @@ ssf_bxdf_sample
const double w[3], /* Normalized direction. Point inward the surface */
const double N[3], /* Normalized normal */
double dir[4], /* Sampled direction. The PDF is stored in dir[3] */
- double* radiance); /* Sampled radiance */
+ double* reflectivity); /* Sampled reflectivity */
/* Retrieve the internal data of the BxDF. Usefull for user defined BxDFs on
* which the caller has to retrieve their data to setup the their parameters */
diff --git a/src/ssf_bsdf.c b/src/ssf_bsdf.c
@@ -128,10 +128,10 @@ ssf_bsdf_sample
const double w[3],
const double N[3],
double dir[4],
- double* radiance)
+ double* reflectivity)
{
const size_t PDF = 3;
- double radiances[MAX_BxDFs];
+ double reflectivities[MAX_BxDFs];
double dirs[MAX_BxDFs][4];
double probas[MAX_BxDFs];
double cumul[MAX_BxDFs];
@@ -139,7 +139,7 @@ ssf_bsdf_sample
size_t i, n;
res_T res = RES_OK;
- if(!bsdf || u<0 || u>=1 || v<0 || v>=1 || !w || !N || !dir || !radiance) {
+ if(!bsdf || u<0 || u>=1 || v<0 || v>=1 || !w || !N || !dir || !reflectivity) {
res = RES_BAD_ARG;
goto error;
}
@@ -154,18 +154,18 @@ ssf_bsdf_sample
FOR_EACH(i, 0, bsdf->nbxdfs) {
struct ssf_bxdf* bxdf = bsdf->bxdfs[i];
- SSF(bxdf_sample(bxdf, u, v, w, N, dirs[n], radiances+n));
- if(radiances[n] <= 0 || dirs[n][PDF] <= 0)
+ SSF(bxdf_sample(bxdf, u, v, w, N, dirs[n], reflectivities+n));
+ if(reflectivities[n] <= 0 || dirs[n][PDF] <= 0)
continue; /* Discard BxDF */
- probas[n] = radiances[n] / dirs[n][PDF];
+ probas[n] = reflectivities[n] / dirs[n][PDF];
probas_sum += probas[n];
++n;
}
if(!n) { /* No valid BxDF to sample */
d4_splat(dir, 0);
- *radiance = 0;
+ *reflectivity = 0;
goto exit;
}
@@ -180,13 +180,13 @@ ssf_bsdf_sample
/* Finally sample the distribution */
FOR_EACH(i, 0, n-1) if(u <= cumul[i]) break;
d4_set(dir, dirs[i]);
- *radiance = radiances[i];
+ *reflectivity = reflectivities[i];
exit:
return res;
error:
if(dir) d4_splat(dir, -DBL_MAX);
- if(radiance) *radiance = -DBL_MAX;
+ if(reflectivity) *reflectivity = -DBL_MAX;
goto exit;
}
diff --git a/src/ssf_bxdf.c b/src/ssf_bxdf.c
@@ -119,13 +119,13 @@ ssf_bxdf_sample
const double w[3],
const double N[3],
double dir[4],
- double* radiance)
+ double* reflectivity)
{
- if(!bxdf || u<0 || u>=1 || v<0 || v>=1 || !w || !N || !dir || !radiance)
+ if(!bxdf || u<0 || u>=1 || v<0 || v>=1 || !w || !N || !dir || !reflectivity)
return RES_BAD_ARG;
if(!d3_is_normalized(w) || !d3_is_normalized(N))
return RES_BAD_ARG;
- *radiance = bxdf->type.sample(bxdf->data, u, v, w, N, dir);
+ *reflectivity = bxdf->type.sample(bxdf->data, u, v, w, N, dir);
return RES_OK;
}
diff --git a/src/ssf_fresnel_dielectric.c b/src/ssf_fresnel_dielectric.c
@@ -19,8 +19,8 @@
#include <math.h>
struct fresnel_dielectric {
- double lambda_i;
- double lambda_t;
+ double eta_i;
+ double eta_t;
};
/*******************************************************************************
@@ -32,8 +32,8 @@ fresnel_dielectric_init(struct mem_allocator* allocator, void* fresnel)
struct fresnel_dielectric* fd = fresnel;
(void)allocator;
ASSERT(fresnel);
- fd->lambda_i = 0.0;
- fd->lambda_t = 0.0;
+ fd->eta_i = 0.0;
+ fd->eta_t = 0.0;
return RES_OK;
}
@@ -50,32 +50,32 @@ fresnel_dielectric_eval(void* fresnel, const double cos_theta_i)
double sin_theta_i;
double sin_theta_t;
double cos_theta_t;
- double R_par;
- double R_per;
+ double Rp; /* Parallel */
+ double Rs; /* Orthogonal */
ASSERT(fresnel && cos_theta_i >= 0);
/* Use Snell's low to retrieve cos_theta_t:
- * lambda_i * sin_theta_i = lambda_t * sin_theta_t */
+ * eta_i * sin_theta_i = eta_t * sin_theta_t */
sin_theta_i = sqrt(MMAX(0.0, 1.0 - cos_theta_i*cos_theta_i));
- sin_theta_t = fd->lambda_i * sin_theta_i / fd->lambda_t;
+ sin_theta_t = fd->eta_i * sin_theta_i / fd->eta_t;
if(sin_theta_t >= 1) return 1.0; /* Full reflection */
cos_theta_t = sqrt(1.0 - sin_theta_t*sin_theta_t);
/* Compute the reflectance for the light polarized with its electric field
* parallel to the plane of incidence */
- R_par = (fd->lambda_i*cos_theta_t - fd->lambda_t*cos_theta_i)
- / (fd->lambda_i*cos_theta_t + fd->lambda_t*cos_theta_i);
- R_par = fabs(R_par);
- R_par = R_par * R_par;
+ Rp = (fd->eta_i*cos_theta_t - fd->eta_t*cos_theta_i)
+ / (fd->eta_i*cos_theta_t + fd->eta_t*cos_theta_i);
+ Rp = fabs(Rp);
+ Rp = Rp * Rp;
/* Compute the reflectance for the light polarized with its electric field
* perpendicular to the plane of incidence */
- R_per = (fd->lambda_i*cos_theta_i - fd->lambda_t*cos_theta_t)
- / (fd->lambda_i*cos_theta_i + fd->lambda_t*cos_theta_t);
- R_per = fabs(R_per);
- R_per = R_per * R_per;
+ Rs = (fd->eta_i*cos_theta_i - fd->eta_t*cos_theta_t)
+ / (fd->eta_i*cos_theta_i + fd->eta_t*cos_theta_t);
+ Rs = fabs(Rs);
+ Rs = Rs * Rs;
- return 0.5 * (R_par + R_per);
+ return 0.5 * (Rp + Rs);
}
/*******************************************************************************
@@ -91,16 +91,14 @@ const struct ssf_fresnel_type ssf_fresnel_dielectric = {
res_T
ssf_fresnel_dielectric_setup
- (struct ssf_fresnel* fresnel, const double lambda_i, const double lambda_t)
+ (struct ssf_fresnel* fresnel, const double eta_i, const double eta_t)
{
struct fresnel_dielectric* fd;
-
- if(!fresnel) return RES_BAD_ARG;
- if(!FRESNEL_TYPE_EQ(&fresnel->type, &ssf_fresnel_dielectric))
+ if(!fresnel || !FRESNEL_TYPE_EQ(&fresnel->type, &ssf_fresnel_dielectric))
return RES_BAD_ARG;
fd = fresnel->data;
- fd->lambda_i = lambda_i;
- fd->lambda_t = lambda_t;
+ fd->eta_i = eta_i;
+ fd->eta_t = eta_t;
return RES_OK;
}
diff --git a/src/ssf_specular_reflection.c b/src/ssf_specular_reflection.c
@@ -19,7 +19,7 @@
#include <rsys/double3.h>
struct specular_reflection {
- double reflectivity; /* W . sr^-1 . m^-2 */
+ double reflectivity;
};
/*******************************************************************************
diff --git a/src/test_ssf_bsdf.c b/src/test_ssf_bsdf.c
@@ -27,7 +27,7 @@ main(int argc, char** argv)
double w[3];
double N[3];
double dir[4];
- double rad;
+ double refl;
(void)argc, (void)argv;
mem_init_proxy_allocator(&allocator, &mem_default_allocator);
@@ -53,30 +53,30 @@ main(int argc, char** argv)
d3_normalize(w, d3(w, -1, -1, 0));
d3(N, 0.0, 1.0, 0.0);
- CHECK(ssf_bsdf_sample(NULL, 0, 0, w, N, dir, &rad), RES_BAD_ARG);
- CHECK(ssf_bsdf_sample(bsdf, 0, -1, w, N, dir, &rad), RES_BAD_ARG);
- CHECK(ssf_bsdf_sample(bsdf, 1, 0, w, N, dir, &rad), RES_BAD_ARG);
- CHECK(ssf_bsdf_sample(bsdf, 0, 0, NULL, N, dir, &rad), RES_BAD_ARG);
- CHECK(ssf_bsdf_sample(bsdf, 0, 0, w, NULL, dir, &rad), RES_BAD_ARG);
- CHECK(ssf_bsdf_sample(bsdf, 0, 0, w, N, NULL, &rad), RES_BAD_ARG);
+ CHECK(ssf_bsdf_sample(NULL, 0, 0, w, N, dir, &refl), RES_BAD_ARG);
+ CHECK(ssf_bsdf_sample(bsdf, 0, -1, w, N, dir, &refl), RES_BAD_ARG);
+ CHECK(ssf_bsdf_sample(bsdf, 1, 0, w, N, dir, &refl), RES_BAD_ARG);
+ CHECK(ssf_bsdf_sample(bsdf, 0, 0, NULL, N, dir, &refl), RES_BAD_ARG);
+ CHECK(ssf_bsdf_sample(bsdf, 0, 0, w, NULL, dir, &refl), RES_BAD_ARG);
+ CHECK(ssf_bsdf_sample(bsdf, 0, 0, w, N, NULL, &refl), RES_BAD_ARG);
CHECK(ssf_bsdf_sample(bsdf, 0, 0, w, N, dir, NULL), RES_BAD_ARG);
- CHECK(ssf_bsdf_sample(bsdf, 0, 0, w, N, dir, &rad), RES_OK);
- CHECK(rad, 2.0);
- CHECK(ssf_bsdf_sample(bsdf, 0.5, 0.5, w, N, dir, &rad), RES_OK);
- CHECK(rad, 2.0);
+ CHECK(ssf_bsdf_sample(bsdf, 0, 0, w, N, dir, &refl), RES_OK);
+ CHECK(refl, 2.0);
+ CHECK(ssf_bsdf_sample(bsdf, 0.5, 0.5, w, N, dir, &refl), RES_OK);
+ CHECK(refl, 2.0);
CHECK(ssf_bsdf_clear(NULL), RES_BAD_ARG);
CHECK(ssf_bsdf_clear(bsdf), RES_OK);
- CHECK(ssf_bsdf_sample(bsdf, 0, 0, w, N, dir, &rad), RES_OK);
- CHECK(rad, 0.0);
+ CHECK(ssf_bsdf_sample(bsdf, 0, 0, w, N, dir, &refl), RES_OK);
+ CHECK(refl, 0.0);
d3(w, -1, -1, 0);
- CHECK(ssf_bsdf_sample(bsdf, 0.5, 0.5, w, N, dir, &rad), RES_BAD_ARG);
+ CHECK(ssf_bsdf_sample(bsdf, 0.5, 0.5, w, N, dir, &refl), RES_BAD_ARG);
d3_normalize(w, w);
d3(N, 0.0, 2.0, 1.0);
- CHECK(ssf_bsdf_sample(bsdf, 0.5, 0.5, w, N, dir, &rad), RES_BAD_ARG);
+ CHECK(ssf_bsdf_sample(bsdf, 0.5, 0.5, w, N, dir, &refl), RES_BAD_ARG);
d3_normalize(N, N);
- CHECK(ssf_bsdf_sample(bsdf, 0.5, 0.5, w, N, dir, &rad), RES_OK);
+ CHECK(ssf_bsdf_sample(bsdf, 0.5, 0.5, w, N, dir, &refl), RES_OK);
CHECK(ssf_bsdf_ref_put(bsdf), RES_OK);
CHECK(ssf_bxdf_ref_put(bxdf), RES_OK);
diff --git a/src/test_ssf_bxdf.c b/src/test_ssf_bxdf.c
@@ -27,7 +27,7 @@ struct ALIGN(64) bxdf {
double v;
double w[3];
double N[3];
- double radiance;
+ double reflectivity;
};
static res_T
@@ -65,7 +65,7 @@ bxdf_sample
CHECK(d3_eq(BxDF->w, w), 1);
CHECK(d3_eq(BxDF->N, N), 1);
d4(dir, 1.0, 2.0, 3.0, 4.0);
- return BxDF->radiance;
+ return BxDF->reflectivity;
}
int
@@ -145,7 +145,7 @@ main(int argc, char** argv)
d3_set(data->N, N);
data->u = 0.0;
data->v = 0.0;
- data->radiance = 1.234;
+ data->reflectivity = 1.234;
CHECK(ssf_bxdf_sample(NULL, 0, 0, w, N, dir, &rad), RES_BAD_ARG);
CHECK(ssf_bxdf_sample(bxdf, 0, -1, w, N, dir, &rad), RES_BAD_ARG);
@@ -169,7 +169,7 @@ main(int argc, char** argv)
d3_normalize(N, N);
d3_set(data->w, w);
d3_set(data->N, N);
- data->radiance = 3.14;
+ data->reflectivity = 3.14;
CHECK(ssf_bxdf_sample(bxdf, 0.5, 0.5, w, N, dir, &rad), RES_OK);
CHECK(rad, 3.14);
diff --git a/src/test_ssf_specular_reflection.c b/src/test_ssf_specular_reflection.c
@@ -27,7 +27,7 @@ main(int argc, char** argv)
double w[3];
double N[3];
double dir[4];
- double rad;
+ double refl;
(void)argc, (void)argv;
mem_init_proxy_allocator(&allocator, &mem_default_allocator);
@@ -44,33 +44,33 @@ main(int argc, char** argv)
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, &rad), RES_OK);
- CHECK(rad, 0.0);
+ CHECK(ssf_bxdf_sample(brdf, 0, 0, w, N, dir, &refl), RES_OK);
+ CHECK(refl, 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, &rad), RES_OK);
- CHECK(rad, 1.23);
+ CHECK(ssf_bxdf_sample(brdf, 0, 0, w, N, dir, &refl), RES_OK);
+ CHECK(refl, 1.23);
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, &rad), RES_OK);
- CHECK(rad, 1.23);
+ CHECK(ssf_bxdf_sample(brdf, 0, 0, w, N, dir, &refl), RES_OK);
+ CHECK(refl, 1.23);
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, &rad), RES_OK);
- CHECK(rad, 1.23);
+ CHECK(ssf_bxdf_sample(brdf, 0, 0, w, N, dir, &refl), RES_OK);
+ CHECK(refl, 1.23);
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, &rad), RES_OK);
- CHECK(rad, 1.23);
+ CHECK(ssf_bxdf_sample(brdf, 0, 0, w, N, dir, &refl), RES_OK);
+ CHECK(refl, 1.23);
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, &rad), RES_OK);
- CHECK(rad, 1.23);
+ CHECK(ssf_bxdf_sample(brdf, 0, 0, w, N, dir, &refl), RES_OK);
+ CHECK(refl, 1.23);
CHECK(d3_eq_eps(w, dir, 1.e-6), 1);
CHECK(ssf_bxdf_ref_put(brdf), RES_OK);