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