solstice-solver

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

commit 8077d0fb5673448b70cfb5698491f9bb169b5edd
parent 617cc197d9c3b90196aad0674d28c4107f88d50f
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Fri,  2 Sep 2016 09:07:41 +0200

Fix compilation errors & warnings on GCC

Diffstat:
Msrc/ssol_material_c.h | 3+++
Msrc/ssol_scene.c | 6+++---
Msrc/ssol_solver.c | 19++++++-------------
Msrc/ssol_solver_c.h | 12++++++++++--
Msrc/test_ssol_geometries.h | 5++---
Msrc/test_ssol_shape.c | 14+++++++-------
Msrc/test_ssol_solver.c | 2+-
7 files changed, 32 insertions(+), 29 deletions(-)

diff --git a/src/ssol_material_c.h b/src/ssol_material_c.h @@ -30,6 +30,9 @@ struct surface_fragment { double Ns[3]; /* Normalized world space shading normal */ double uv[2]; /* Texture coordinates */ }; +#define SURFACE_FRAGMENT_NULL__ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0}} +static const struct surface_fragment SURFACE_FRAGMENT_NULL = + SURFACE_FRAGMENT_NULL__; enum material_type { MATERIAL_VIRTUAL, diff --git a/src/ssol_scene.c b/src/ssol_scene.c @@ -268,9 +268,9 @@ hit_filter_function prev = previous_segment(rz); seg = current_segment(rz); ASSERT(seg); - - /* TODO: need to detect self intersect at the instance level, - using front/back face to avoid false self intersect events */ + + /* TODO: need to detect self intersect at the instance level, + * using front/back face to avoid false self intersect events */ if(prev && S3D_PRIMITIVE_EQ(&hit->prim, &prev->hit.prim)) return 1; /* Discard self intersection */ diff --git a/src/ssol_solver.c b/src/ssol_solver.c @@ -32,18 +32,11 @@ #include <rsys/double3.h> #include <rsys/double44.h> -#define END_TEXT__ { "NONE", "SUCCESS", "SHADOW", "POINTING", "MISSING", "BLOCKED", "ERROR" }; +#define END_TEXT__ \ + { "NONE", "SUCCESS", "SHADOW", "POINTING", "MISSING", "BLOCKED", "ERROR" } static const char* END_TEXT[] = END_TEXT__; -enum realization_mode { - MODE_NONE, - MODE_STD, - MODE_ROULETTE, - - MODE_COUNT__ -}; - /******************************************************************************* * Helper functions ******************************************************************************/ @@ -171,7 +164,7 @@ set_views(struct solver_data* data) { struct ssol_material* mat; struct ssol_object* object; inst = *htable_instance_iterator_data_get(&it); - + /* TODO: keep only primary mirrors */ mat = inst->object->material; if (material_get_type(mat) != MATERIAL_MIRROR) @@ -297,7 +290,7 @@ reset_realization(size_t cpt, struct realisation* rz) static res_T init_realization (struct ssol_scene* scene, - struct ssp_rng* rng, + struct ssp_rng* rng, FILE* out, struct realisation* rz) { @@ -377,7 +370,7 @@ sample_point_on_primary_mirror(struct realisation* rz) S3D(primitive_get_attrib(&tmp_prim, S3D_POSITION, rz->start.uv, &attrib)); CHECK(attrib.type, S3D_FLOAT3); /* find the solstice shape and project the sampled point on the mirror */ - rz->start.instance = + rz->start.instance = *htable_instance_find(&data->scene->instances, &tmp_prim.inst_id); ASSERT(rz->start.instance); object = object_instance_get_object(rz->start.instance); @@ -589,7 +582,7 @@ ssol_solve /* sample a frequency */ sample_wavelength(&rz); - + /* check if the point receives sun light */ if (!receive_sunlight(&rz)) { rz.end = rz.start.cos_sun >= 0 ? TERM_POINTING : TERM_SHADOW; diff --git a/src/ssol_solver_c.h b/src/ssol_solver_c.h @@ -48,6 +48,14 @@ enum realization_termination { TERM_COUNT__ }; +enum realization_mode { + MODE_NONE, + MODE_STD, + MODE_ROULETTE, + + MODE_COUNT__ +}; + struct segment { double weight; float range[2]; @@ -88,8 +96,6 @@ struct solver_data { struct surface_fragment fragment; }; -#define SOLVER_DATA_NULL__ { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; - struct realisation { enum realization_termination end; enum realization_mode mode; @@ -102,6 +108,8 @@ struct realisation { uint32_t success_mask; }; +#define SOLVER_DATA_NULL__ \ + {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, SURFACE_FRAGMENT_NULL__} static const struct solver_data SOLVER_DATA_NULL = SOLVER_DATA_NULL__; extern LOCAL_SYM res_T diff --git a/src/test_ssol_geometries.h b/src/test_ssol_geometries.h @@ -37,8 +37,7 @@ const unsigned square_walls_ids [] = { 0, 2, 1, 2, 0, 3 }; const unsigned square_walls_ntris = sizeof(square_walls_ids) / sizeof(unsigned[3]); - -static struct desc square_walls_desc = { square_walls, square_walls_ids }; +static const struct desc square_walls_desc = { square_walls, square_walls_ids }; /******************************************************************************* * Box @@ -64,7 +63,7 @@ const unsigned box_walls_ids [] = { }; const unsigned box_walls_ntris = sizeof(box_walls_ids) / sizeof(unsigned[3]); -static struct desc box_walls_desc = { box_walls, box_walls_ids }; +static const struct desc box_walls_desc = { box_walls, box_walls_ids }; /******************************************************************************* * Callbacks diff --git a/src/test_ssol_shape.c b/src/test_ssol_shape.c @@ -63,19 +63,19 @@ main(int argc, char** argv) attribs[2].get = get_uv; CHECK(ssol_mesh_setup - (NULL, box_walls_ntris, get_ids, box_walls_nverts, attribs, 1, &box_walls_desc), RES_BAD_ARG); + (NULL, box_walls_ntris, get_ids, box_walls_nverts, attribs, 1, (void*)&box_walls_desc), RES_BAD_ARG); CHECK(ssol_mesh_setup - (shape, 0, get_ids, box_walls_nverts, attribs, 1, &box_walls_desc), RES_BAD_ARG); + (shape, 0, get_ids, box_walls_nverts, attribs, 1, (void*)&box_walls_desc), RES_BAD_ARG); CHECK(ssol_mesh_setup - (shape, box_walls_ntris, NULL, box_walls_nverts, attribs, 1, &box_walls_desc), RES_BAD_ARG); + (shape, box_walls_ntris, NULL, box_walls_nverts, attribs, 1, (void*)&box_walls_desc), RES_BAD_ARG); CHECK(ssol_mesh_setup - (shape, box_walls_ntris, get_ids, 0, attribs, 1, &box_walls_desc), RES_BAD_ARG); + (shape, box_walls_ntris, get_ids, 0, attribs, 1, (void*)&box_walls_desc), RES_BAD_ARG); CHECK(ssol_mesh_setup - (shape, box_walls_ntris, get_ids, box_walls_nverts, NULL, 1, &box_walls_desc), RES_BAD_ARG); + (shape, box_walls_ntris, get_ids, box_walls_nverts, NULL, 1, (void*)&box_walls_desc), RES_BAD_ARG); CHECK(ssol_mesh_setup - (shape, box_walls_ntris, get_ids, box_walls_nverts, attribs, 0, &box_walls_desc), RES_BAD_ARG); + (shape, box_walls_ntris, get_ids, box_walls_nverts, attribs, 0, (void*)&box_walls_desc), RES_BAD_ARG); CHECK(ssol_mesh_setup - (shape, box_walls_ntris, get_ids, box_walls_nverts, attribs, 3, &box_walls_desc), RES_OK); + (shape, box_walls_ntris, get_ids, box_walls_nverts, attribs, 3, (void*)&box_walls_desc), RES_OK); CHECK(ssol_shape_ref_put(shape), RES_OK); diff --git a/src/test_ssol_solver.c b/src/test_ssol_solver.c @@ -102,7 +102,7 @@ main(int argc, char** argv) attribs[0].usage = SSOL_POSITION; attribs[0].get = get_position; CHECK(ssol_mesh_setup - (square, square_walls_ntris, get_ids, square_walls_nverts, attribs, 1, &square_walls_desc), RES_OK); + (square, square_walls_ntris, get_ids, square_walls_nverts, attribs, 1, (void*)&square_walls_desc), RES_OK); CHECK(ssol_material_create_mirror(dev, &m_material), RES_OK); shader.normal = get_shader_normal;