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