solstice-solver

Solver library of the solstice app
git clone git://git.meso-star.com/solstice-solver.git
Log | Files | Refs | README | LICENSE

commit 6ced9b886fb50767b4f1ec51272ffdc96c955bac
parent 7e2dfcb9e962625fcd690b004b5583c0b00b2ff2
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Fri, 24 Mar 2017 17:08:08 +0100

Update the material API

Rename the set_shader functions in setup. Define the thin dielectric
material as an interface between 2 mediums.

Diffstat:
Msrc/ssol.h | 16++++++++--------
Msrc/ssol_material.c | 50+++++++++++++++++++++++++++-----------------------
Msrc/ssol_material_c.h | 8+++++++-
Msrc/test_ssol_by_receiver_integration.c | 2+-
Msrc/test_ssol_draw.c | 2+-
Msrc/test_ssol_material.c | 111++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------------
Msrc/test_ssol_solver1.c | 4++--
Msrc/test_ssol_solver2.c | 2+-
Msrc/test_ssol_solver2b.c | 2+-
Msrc/test_ssol_solver3.c | 2+-
Msrc/test_ssol_solver4.c | 2+-
Msrc/test_ssol_solver5.c | 2+-
Msrc/test_ssol_solver6.c | 4++--
Msrc/test_ssol_solver7.c | 4++--
14 files changed, 126 insertions(+), 85 deletions(-)

diff --git a/src/ssol.h b/src/ssol.h @@ -276,11 +276,8 @@ static const struct ssol_matte_shader SSOL_MATTE_SHADER_NULL = /* Thin dielectric shader */ struct ssol_thin_dielectric_shader { ssol_shader_getter_T normal; - ssol_shader_getter_T absorption; - ssol_shader_getter_T thickness; - ssol_shader_getter_T refractive_index; }; -#define SSOL_THIN_DIELECTRIC_SHADER_NULL__ { NULL, NULL, NULL, NULL } +#define SSOL_THIN_DIELECTRIC_SHADER_NULL__ { NULL } static const struct ssol_thin_dielectric_shader SSOL_THIN_DIELECTRIC_SHADER_NULL = SSOL_THIN_DIELECTRIC_SHADER_NULL__; @@ -720,19 +717,22 @@ ssol_dielectric_setup const struct ssol_medium* inside_medium); SSOL_API res_T -ssol_mirror_set_shader +ssol_mirror_setup (struct ssol_material* mtl, const struct ssol_mirror_shader* shader); SSOL_API res_T -ssol_matte_set_shader +ssol_matte_setup (struct ssol_material* mtl, const struct ssol_matte_shader* shader); SSOL_API res_T -ssol_thin_dielectric_set_shader +ssol_thin_dielectric_setup (struct ssol_material* mtl, - const struct ssol_thin_dielectric_shader* shader); + const struct ssol_thin_dielectric_shader* shader, + const struct ssol_medium* outside_medium, + const struct ssol_medium* slab_medium, + const double thickness); /******************************************************************************* * Object API - Opaque abstraction of a geometry with its associated properties. diff --git a/src/ssol_material.c b/src/ssol_material.c @@ -217,31 +217,29 @@ thin_dielectric_shade const struct ssol_thin_dielectric_shader* shader; double N[3]; double thickness; - double absorption; - const double eta_i = 1.0002772; /* Refractive index of the air */ + double absorptivity; + double eta_i; double eta_t; res_T res = RES_OK; ASSERT(mtl && fragment && mtl->type == SSOL_MATERIAL_THIN_DIELECTRIC); ASSERT(bsdf); - shader = &mtl->data.thin_dielectric; + shader = &mtl->data.thin_dielectric.shader; /* Fetch material attribs */ - #define FETCH(Attr, Dst) \ - shader->Attr(mtl->dev, mtl->buf, wavelength, fragment->pos, \ - fragment->Ng, fragment->Ns, fragment->uv, fragment->dir, Dst) - FETCH(normal, N); - FETCH(thickness, &thickness); - FETCH(absorption, &absorption); - FETCH(refractive_index, &eta_t); - #undef FETCH + shader->normal(mtl->dev, mtl->buf, wavelength, fragment->pos, + fragment->Ng, fragment->Ns, fragment->uv, fragment->dir, N); + eta_i = mtl->out_medium.refractive_index; + eta_t = mtl->data.thin_dielectric.slab_medium.refractive_index; + absorptivity = mtl->data.thin_dielectric.slab_medium.absorptivity; + thickness = mtl->data.thin_dielectric.thickness; /* Setup the BxDF */ res = ssf_bxdf_create (mtl->dev->allocator, &ssf_thin_specular_dielectric, &bxdf); if(res != RES_OK) goto error; res = ssf_thin_specular_dielectric_setup - (bxdf, absorption, eta_i, eta_t, thickness); + (bxdf, absorptivity, eta_i, eta_t, thickness); if(res != RES_OK) goto error; /* Setup the BSDF */ @@ -314,11 +312,7 @@ check_shader_matte(const struct ssol_matte_shader* shader) static INLINE int check_shader_thin_differential(const struct ssol_thin_dielectric_shader* shader) { - return shader - && shader->normal - && shader->absorption - && shader->thickness - && shader->refractive_index; + return shader && shader->normal; } static INLINE int @@ -474,7 +468,7 @@ ssol_dielectric_setup } res_T -ssol_mirror_set_shader +ssol_mirror_setup (struct ssol_material* material, const struct ssol_mirror_shader* shader) { if(!material @@ -486,7 +480,7 @@ ssol_mirror_set_shader } res_T -ssol_matte_set_shader +ssol_matte_setup (struct ssol_material* material, const struct ssol_matte_shader* shader) { if(!material @@ -498,15 +492,25 @@ ssol_matte_set_shader } res_T -ssol_thin_dielectric_set_shader +ssol_thin_dielectric_setup (struct ssol_material* material, - const struct ssol_thin_dielectric_shader* shader) + const struct ssol_thin_dielectric_shader* shader, + const struct ssol_medium* outside_medium, + const struct ssol_medium* slab_medium, + const double thickness) { if(!material || material->type != SSOL_MATERIAL_THIN_DIELECTRIC - || !check_shader_thin_differential(shader)) + || !check_shader_thin_differential(shader) + || !check_medium(outside_medium) + || !check_medium(slab_medium) + || thickness < 0) return RES_BAD_ARG; - material->data.thin_dielectric = *shader; + material->data.thin_dielectric.shader = *shader; + material->data.thin_dielectric.slab_medium = *slab_medium; + material->data.thin_dielectric.thickness = thickness; + material->out_medium = *outside_medium; + material->in_medium = *outside_medium; return RES_OK; } diff --git a/src/ssol_material_c.h b/src/ssol_material_c.h @@ -38,6 +38,12 @@ struct surface_fragment { static const struct surface_fragment SURFACE_FRAGMENT_NULL = SURFACE_FRAGMENT_NULL__; +struct thin_dielectric { + struct ssol_thin_dielectric_shader shader; + struct ssol_medium slab_medium; + double thickness; +}; + struct ssol_material { enum ssol_material_type type; @@ -45,7 +51,7 @@ struct ssol_material { struct ssol_dielectric_shader dielectric; struct ssol_matte_shader matte; struct ssol_mirror_shader mirror; - struct ssol_thin_dielectric_shader thin_dielectric; + struct thin_dielectric thin_dielectric; } data; struct ssol_medium out_medium; diff --git a/src/test_ssol_by_receiver_integration.c b/src/test_ssol_by_receiver_integration.c @@ -114,7 +114,7 @@ main(int argc, char** argv) shader.normal = get_shader_normal; shader.reflectivity = get_shader_reflectivity; shader.roughness = get_shader_roughness; - CHECK(ssol_mirror_set_shader(m_mtl, &shader), RES_OK); + CHECK(ssol_mirror_setup(m_mtl, &shader), RES_OK); CHECK(ssol_material_create_virtual(dev, &v_mtl), RES_OK); CHECK(ssol_object_create(dev, &m_object), RES_OK); diff --git a/src/test_ssol_draw.c b/src/test_ssol_draw.c @@ -126,7 +126,7 @@ setup_cornell_box(struct ssol_device* dev, struct ssol_scene* scn) shader.normal = get_shader_normal; shader.reflectivity = get_shader_reflectivity; CHECK(ssol_material_create_matte(dev, &mtl), RES_OK); - CHECK(ssol_matte_set_shader(mtl, &shader), RES_OK); + CHECK(ssol_matte_setup(mtl, &shader), RES_OK); vdata.usage = SSOL_POSITION; vdata.get = get_position; diff --git a/src/test_ssol_material.c b/src/test_ssol_material.c @@ -48,10 +48,10 @@ test_mirror(struct ssol_device* dev) mirror.reflectivity = get_shader_reflectivity; mirror.roughness = get_shader_roughness; - CHECK(ssol_mirror_set_shader(NULL, &mirror), RES_BAD_ARG); - CHECK(ssol_mirror_set_shader(material, NULL), RES_BAD_ARG); - CHECK(ssol_mirror_set_shader(material, &mirror), RES_OK); - CHECK(ssol_mirror_set_shader(material, &mirror), RES_OK); + CHECK(ssol_mirror_setup(NULL, &mirror), RES_BAD_ARG); + CHECK(ssol_mirror_setup(material, NULL), RES_BAD_ARG); + CHECK(ssol_mirror_setup(material, &mirror), RES_OK); + CHECK(ssol_mirror_setup(material, &mirror), RES_OK); CHECK(ssol_material_set_param_buffer(NULL, NULL), RES_BAD_ARG); CHECK(ssol_material_set_param_buffer(material, NULL), RES_BAD_ARG); @@ -59,15 +59,15 @@ test_mirror(struct ssol_device* dev) CHECK(ssol_material_set_param_buffer(material, pbuf), RES_OK); mirror.normal = NULL; - CHECK(ssol_mirror_set_shader(material, &mirror), RES_BAD_ARG); + CHECK(ssol_mirror_setup(material, &mirror), RES_BAD_ARG); mirror.normal = get_shader_normal; mirror.reflectivity = NULL; - CHECK(ssol_mirror_set_shader(material, &mirror), RES_BAD_ARG); + CHECK(ssol_mirror_setup(material, &mirror), RES_BAD_ARG); mirror.reflectivity = get_shader_reflectivity; mirror.roughness = NULL; - CHECK(ssol_mirror_set_shader(material, &mirror), RES_BAD_ARG); + CHECK(ssol_mirror_setup(material, &mirror), RES_BAD_ARG); mirror.roughness = get_shader_roughness; CHECK(ssol_material_ref_put(material), RES_OK); @@ -91,16 +91,16 @@ test_matte(struct ssol_device* dev) matte.normal = get_shader_normal; matte.reflectivity = get_shader_reflectivity; - CHECK(ssol_matte_set_shader(NULL, NULL), RES_BAD_ARG); - CHECK(ssol_matte_set_shader(material, NULL), RES_BAD_ARG); - CHECK(ssol_matte_set_shader(NULL, &matte), RES_BAD_ARG); - CHECK(ssol_matte_set_shader(material, &matte), RES_OK); + CHECK(ssol_matte_setup(NULL, NULL), RES_BAD_ARG); + CHECK(ssol_matte_setup(material, NULL), RES_BAD_ARG); + CHECK(ssol_matte_setup(NULL, &matte), RES_BAD_ARG); + CHECK(ssol_matte_setup(material, &matte), RES_OK); matte.normal = NULL; - CHECK(ssol_matte_set_shader(material, &matte), RES_BAD_ARG); + CHECK(ssol_matte_setup(material, &matte), RES_BAD_ARG); matte.normal = get_shader_normal; matte.reflectivity = NULL; - CHECK(ssol_matte_set_shader(material, &matte), RES_BAD_ARG); + CHECK(ssol_matte_setup(material, &matte), RES_BAD_ARG); CHECK(ssol_material_ref_put(material), RES_OK); } @@ -108,46 +108,77 @@ test_matte(struct ssol_device* dev) static void test_thin_dielectric(struct ssol_device* dev) { - struct ssol_thin_dielectric_shader thin_dielectric = + struct ssol_thin_dielectric_shader shader = SSOL_THIN_DIELECTRIC_SHADER_NULL; - struct ssol_material* material; + struct ssol_material* mtl; + struct ssol_medium mdm0 = SSOL_MEDIUM_VACUUM; + struct ssol_medium mdm1 = SSOL_MEDIUM_VACUUM; enum ssol_material_type type; CHECK(ssol_material_create_thin_dielectric(NULL, NULL), RES_BAD_ARG); CHECK(ssol_material_create_thin_dielectric(dev, NULL), RES_BAD_ARG); - CHECK(ssol_material_create_thin_dielectric(NULL, &material), RES_BAD_ARG); - CHECK(ssol_material_create_thin_dielectric(dev, &material), RES_OK); + CHECK(ssol_material_create_thin_dielectric(NULL, &mtl), RES_BAD_ARG); + CHECK(ssol_material_create_thin_dielectric(dev, &mtl), RES_OK); - CHECK(ssol_material_get_type(material, &type), RES_OK); + CHECK(ssol_material_get_type(mtl, &type), RES_OK); CHECK(type, SSOL_MATERIAL_THIN_DIELECTRIC); - thin_dielectric.normal = get_shader_normal; - thin_dielectric.absorption = get_shader_absorption; - thin_dielectric.thickness = get_shader_thickness; - thin_dielectric.refractive_index = get_shader_refractive_index; - - CHECK(ssol_thin_dielectric_set_shader(NULL, NULL), RES_BAD_ARG); - CHECK(ssol_thin_dielectric_set_shader(material, NULL), RES_BAD_ARG); - CHECK(ssol_thin_dielectric_set_shader(NULL, &thin_dielectric), RES_BAD_ARG); - CHECK(ssol_thin_dielectric_set_shader(material, &thin_dielectric), RES_OK); + shader.normal = get_shader_normal; + + CHECK(ssol_thin_dielectric_setup(NULL, NULL, NULL, NULL, -1), RES_BAD_ARG); + CHECK(ssol_thin_dielectric_setup(mtl, NULL, NULL, NULL, -1), RES_BAD_ARG); + CHECK(ssol_thin_dielectric_setup(NULL, &shader, NULL, NULL, -1), RES_BAD_ARG); + CHECK(ssol_thin_dielectric_setup(mtl, &shader, NULL, NULL, -1), RES_BAD_ARG); + CHECK(ssol_thin_dielectric_setup(NULL, NULL, &mdm0, NULL, -1), RES_BAD_ARG); + CHECK(ssol_thin_dielectric_setup(mtl, NULL, &mdm0, NULL, -1), RES_BAD_ARG); + CHECK(ssol_thin_dielectric_setup(NULL, &shader, &mdm0, NULL, -1), RES_BAD_ARG); + CHECK(ssol_thin_dielectric_setup(mtl, &shader, &mdm0, NULL, -1), RES_BAD_ARG); + CHECK(ssol_thin_dielectric_setup(NULL, NULL, NULL, NULL, 1), RES_BAD_ARG); + CHECK(ssol_thin_dielectric_setup(mtl, NULL, NULL, NULL, 1), RES_BAD_ARG); + CHECK(ssol_thin_dielectric_setup(NULL, &shader, NULL, NULL, 1), RES_BAD_ARG); + CHECK(ssol_thin_dielectric_setup(mtl, &shader, NULL, NULL, 1), RES_BAD_ARG); + CHECK(ssol_thin_dielectric_setup(NULL, NULL, &mdm0, NULL, 1), RES_BAD_ARG); + CHECK(ssol_thin_dielectric_setup(mtl, NULL, &mdm0, NULL, 1), RES_BAD_ARG); + CHECK(ssol_thin_dielectric_setup(NULL, &shader, &mdm0, NULL, 1), RES_BAD_ARG); + CHECK(ssol_thin_dielectric_setup(mtl, &shader, &mdm0, NULL, 1), RES_BAD_ARG); + CHECK(ssol_thin_dielectric_setup(NULL, NULL, NULL, &mdm1, -1), RES_BAD_ARG); + CHECK(ssol_thin_dielectric_setup(mtl, NULL, NULL, &mdm1, -1), RES_BAD_ARG); + CHECK(ssol_thin_dielectric_setup(NULL, &shader, NULL, &mdm1, -1), RES_BAD_ARG); + CHECK(ssol_thin_dielectric_setup(mtl, &shader, NULL, &mdm1, -1), RES_BAD_ARG); + CHECK(ssol_thin_dielectric_setup(NULL, NULL, &mdm0, &mdm1, -1), RES_BAD_ARG); + CHECK(ssol_thin_dielectric_setup(mtl, NULL, &mdm0, &mdm1, -1), RES_BAD_ARG); + CHECK(ssol_thin_dielectric_setup(NULL, &shader, &mdm0, &mdm1, -1), RES_BAD_ARG); + CHECK(ssol_thin_dielectric_setup(mtl, &shader, &mdm0, &mdm1, -1), RES_BAD_ARG); + CHECK(ssol_thin_dielectric_setup(NULL, NULL, NULL, &mdm1, 1), RES_BAD_ARG); + CHECK(ssol_thin_dielectric_setup(mtl, NULL, NULL, &mdm1, 1), RES_BAD_ARG); + CHECK(ssol_thin_dielectric_setup(NULL, &shader, NULL, &mdm1, 1), RES_BAD_ARG); + CHECK(ssol_thin_dielectric_setup(mtl, &shader, NULL, &mdm1, 1), RES_BAD_ARG); + CHECK(ssol_thin_dielectric_setup(NULL, NULL, &mdm0, &mdm1, 1), RES_BAD_ARG); + CHECK(ssol_thin_dielectric_setup(mtl, NULL, &mdm0, &mdm1, 1), RES_BAD_ARG); + CHECK(ssol_thin_dielectric_setup(NULL, &shader, &mdm0, &mdm1, 1), RES_BAD_ARG); + CHECK(ssol_thin_dielectric_setup(mtl, &shader, &mdm0, &mdm1, 1), RES_OK); + + shader.normal = NULL; + CHECK(ssol_thin_dielectric_setup(mtl, &shader, &mdm0, &mdm1, 1), RES_BAD_ARG); + shader.normal = get_shader_normal; - thin_dielectric.normal = NULL; - CHECK(ssol_thin_dielectric_set_shader(material, &thin_dielectric), RES_BAD_ARG); - thin_dielectric.normal = get_shader_normal; + mdm0.absorptivity = -1; + CHECK(ssol_thin_dielectric_setup(mtl, &shader, &mdm0, &mdm1, 1), RES_BAD_ARG); + mdm0.absorptivity = SSOL_MEDIUM_VACUUM.absorptivity; - thin_dielectric.absorption = NULL; - CHECK(ssol_thin_dielectric_set_shader(material, &thin_dielectric), RES_BAD_ARG); - thin_dielectric.absorption = get_shader_absorption; + mdm0.refractive_index = 0; + CHECK(ssol_thin_dielectric_setup(mtl, &shader, &mdm0, &mdm1, 1), RES_BAD_ARG); + mdm0.refractive_index = SSOL_MEDIUM_VACUUM.refractive_index; - thin_dielectric.thickness = NULL; - CHECK(ssol_thin_dielectric_set_shader(material, &thin_dielectric), RES_BAD_ARG); - thin_dielectric.thickness = get_shader_thickness; + mdm1.absorptivity = -1; + CHECK(ssol_thin_dielectric_setup(mtl, &shader, &mdm0, &mdm1, 1), RES_BAD_ARG); + mdm1.absorptivity = SSOL_MEDIUM_VACUUM.absorptivity; - thin_dielectric.refractive_index = NULL; - CHECK(ssol_thin_dielectric_set_shader(material, &thin_dielectric), RES_BAD_ARG); - thin_dielectric.thickness = get_shader_refractive_index; + mdm1.refractive_index = 0; + CHECK(ssol_thin_dielectric_setup(mtl, &shader, &mdm0, &mdm1, 1), RES_BAD_ARG); + mdm1.refractive_index = SSOL_MEDIUM_VACUUM.refractive_index; - CHECK(ssol_material_ref_put(material), RES_OK); + CHECK(ssol_material_ref_put(mtl), RES_OK); } static void diff --git a/src/test_ssol_solver1.c b/src/test_ssol_solver1.c @@ -143,7 +143,7 @@ main(int argc, char** argv) shader.normal = get_shader_normal; shader.reflectivity = get_shader_reflectivity; shader.roughness = get_shader_roughness; - CHECK(ssol_mirror_set_shader(m_mtl, &shader), RES_OK); + CHECK(ssol_mirror_setup(m_mtl, &shader), RES_OK); CHECK(ssol_material_create_virtual(dev, &v_mtl), RES_OK); CHECK(ssol_object_create(dev, &m_object), RES_OK); @@ -398,7 +398,7 @@ main(int argc, char** argv) shader.normal = get_shader_normal; shader.reflectivity = get_shader_reflectivity_2; shader.roughness = get_shader_roughness; - CHECK(ssol_mirror_set_shader(m_mtl2, &shader), RES_OK); + CHECK(ssol_mirror_setup(m_mtl2, &shader), RES_OK); CHECK(ssol_object_create(dev, &m_object2), RES_OK); CHECK(ssol_object_add_shaded_shape(m_object2, square, m_mtl2, m_mtl2), RES_OK); diff --git a/src/test_ssol_solver2.c b/src/test_ssol_solver2.c @@ -145,7 +145,7 @@ main(int argc, char** argv) shader.normal = get_shader_normal; shader.reflectivity = get_shader_reflectivity; shader.roughness = get_shader_roughness; - CHECK(ssol_mirror_set_shader(m_mtl, &shader), RES_OK); + CHECK(ssol_mirror_setup(m_mtl, &shader), RES_OK); CHECK(ssol_material_create_virtual(dev, &v_mtl), RES_OK); CHECK(ssol_object_create(dev, &m_object), RES_OK); diff --git a/src/test_ssol_solver2b.c b/src/test_ssol_solver2b.c @@ -149,7 +149,7 @@ main(int argc, char** argv) shader.normal = get_shader_normal; shader.reflectivity = get_shader_reflectivity; shader.roughness = get_shader_roughness; - CHECK(ssol_mirror_set_shader(m_mtl, &shader), RES_OK); + CHECK(ssol_mirror_setup(m_mtl, &shader), RES_OK); CHECK(ssol_material_create_virtual(dev, &v_mtl), RES_OK); CHECK(ssol_object_create(dev, &m_object), RES_OK); diff --git a/src/test_ssol_solver3.c b/src/test_ssol_solver3.c @@ -118,7 +118,7 @@ main(int argc, char** argv) shader.normal = get_shader_normal; shader.reflectivity = get_shader_reflectivity; shader.roughness = get_shader_roughness; - CHECK(ssol_mirror_set_shader(m_mtl, &shader), RES_OK); + CHECK(ssol_mirror_setup(m_mtl, &shader), RES_OK); CHECK(ssol_material_create_virtual(dev, &v_mtl), RES_OK); CHECK(ssol_object_create(dev, &m_object), RES_OK); diff --git a/src/test_ssol_solver4.c b/src/test_ssol_solver4.c @@ -121,7 +121,7 @@ main(int argc, char** argv) shader.normal = get_shader_normal; shader.reflectivity = get_shader_reflectivity; shader.roughness = get_shader_roughness; - CHECK(ssol_mirror_set_shader(m_mtl, &shader), RES_OK); + CHECK(ssol_mirror_setup(m_mtl, &shader), RES_OK); CHECK(ssol_material_create_virtual(dev, &v_mtl), RES_OK); CHECK(ssol_object_create(dev, &m_object), RES_OK); diff --git a/src/test_ssol_solver5.c b/src/test_ssol_solver5.c @@ -120,7 +120,7 @@ main(int argc, char** argv) shader.normal = get_shader_normal; shader.reflectivity = get_shader_reflectivity; shader.roughness = get_shader_roughness; - CHECK(ssol_mirror_set_shader(m_mtl, &shader), RES_OK); + CHECK(ssol_mirror_setup(m_mtl, &shader), RES_OK); CHECK(ssol_material_create_virtual(dev, &v_mtl), RES_OK); CHECK(ssol_object_create(dev, &m_object), RES_OK); diff --git a/src/test_ssol_solver6.c b/src/test_ssol_solver6.c @@ -120,11 +120,11 @@ main(int argc, char** argv) m_shader.normal = get_shader_normal; m_shader.reflectivity = get_shader_reflectivity; m_shader.roughness = get_shader_roughness; - CHECK(ssol_mirror_set_shader(m_mtl, &m_shader), RES_OK); + CHECK(ssol_mirror_setup(m_mtl, &m_shader), RES_OK); CHECK(ssol_material_create_matte(dev, &bck_mtl), RES_OK); bck_shader.normal = get_shader_normal; bck_shader.reflectivity = get_shader_reflectivity_2; - CHECK(ssol_matte_set_shader(bck_mtl, &bck_shader), RES_OK); + CHECK(ssol_matte_setup(bck_mtl, &bck_shader), RES_OK); CHECK(ssol_material_create_virtual(dev, &v_mtl), RES_OK); /* 1st reflector */ diff --git a/src/test_ssol_solver7.c b/src/test_ssol_solver7.c @@ -131,11 +131,11 @@ main(int argc, char** argv) m_shader.normal = get_shader_normal; m_shader.reflectivity = get_shader_reflectivity; m_shader.roughness = get_shader_roughness; - CHECK(ssol_mirror_set_shader(m_mtl, &m_shader), RES_OK); + CHECK(ssol_mirror_setup(m_mtl, &m_shader), RES_OK); CHECK(ssol_material_create_matte(dev, &bck_mtl), RES_OK); bck_shader.normal = get_shader_normal; bck_shader.reflectivity = get_shader_reflectivity_2; - CHECK(ssol_matte_set_shader(bck_mtl, &bck_shader), RES_OK); + CHECK(ssol_matte_setup(bck_mtl, &bck_shader), RES_OK); CHECK(ssol_material_create_virtual(dev, &v_mtl), RES_OK); carving1.get = get_polygon_vertices;