rngrd

Describe a surface and its physical properties
git clone git://git.meso-star.fr/rngrd.git
Log | Files | Refs | README | LICENSE

commit b13283453f5a333d2b8a8180a23b9858d256ba32
parent 8de6d4639d2e1fa4aa497bafe5439549eca6da1b
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Thu, 27 Oct 2022 09:07:41 +0200

Small cleanup of the BSDF creation function

Diffstat:
Msrc/rngrd_properties.c | 8+++++---
1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/rngrd_properties.c b/src/rngrd_properties.c @@ -156,26 +156,29 @@ create_bsdf { struct mrumtl_brdf_lambertian lambertian; struct mrumtl_brdf_specular specular; + struct ssf_bsdf* bsdf = NULL; res_T res = RES_OK; ASSERT(ground && brdf && out_bsdf); switch(mrumtl_brdf_get_type(brdf)) { case MRUMTL_BRDF_LAMBERTIAN: MRUMTL(brdf_get_lambertian(brdf, &lambertian)); - res = create_bsdf_diffuse(ground, &lambertian, out_bsdf); + res = create_bsdf_diffuse(ground, &lambertian, &bsdf); if(res != RES_OK) goto error; break; case MRUMTL_BRDF_SPECULAR: MRUMTL(brdf_get_specular(brdf, &specular)); - res = create_bsdf_specular(ground, &specular, out_bsdf); + res = create_bsdf_specular(ground, &specular, &bsdf); if(res != RES_OK) goto error; break; default: FATAL("Unreachable code.\n"); break; } exit: + *out_bsdf = bsdf; return res; error: + if(bsdf) { SSF(bsdf_ref_put(bsdf)); bsdf = NULL; } goto exit; } @@ -324,7 +327,6 @@ rngrd_create_bsdf /* Get the BSDF based on the input wavelength */ res = mrumtl_fetch_brdf(mtl->mrumtl, args->wavelength, args->r, &ibsdf); if(res != RES_OK) goto error; - bsdf = darray_bsdf_data_get(&mtl->bsdf_lst)[ibsdf]; ASSERT(bsdf); SSF(bsdf_ref_get(bsdf));