diff options
author | Vito Caputo <vcaputo@pengaru.com> | 2017-12-10 12:32:19 -0800 |
---|---|---|
committer | Vito Caputo <vcaputo@pengaru.com> | 2017-12-10 12:38:29 -0800 |
commit | 5c287c99a3fa8f137dc279b2253c628e83786afe (patch) | |
tree | 6c9922849280552c97fa3961425dd63c4153db64 /src/modules/ray/ray_scene.h | |
parent | 1d73823602297ab490dc4222f63c1845f84a9e98 (diff) |
ray: split scene data from render state
This introduces ray_render_t, and ray_render.[ch].
The _prepared member of ray_scene_t has been moved to ray_render_t,
and the other _prepared members (e.g. objects) will follow.
Up until now I've just been sticking the precomputed state under
_prepared members of their associated structures, and simply using
convention to enforce anything resembling an api boundary. It's
been convenient without being inefficient, but I'd like to move
the ray code into more of a reusable library and this wart needs
to be addressed.
The render state is also where any spatial indexes will be built
and maintained, another thing I've been experimenting with.
Note most of the churn here is just renaming ray_scene.c to
ray_render.c. A nearly global s/ray_scene/ray_render/ has occurred,
now that ray_scene_t really only serves as glue to bind objects,
lights, and scene-global properties into a cohesive unit.
Diffstat (limited to 'src/modules/ray/ray_scene.h')
-rw-r--r-- | src/modules/ray/ray_scene.h | 20 |
1 files changed, 4 insertions, 16 deletions
diff --git a/src/modules/ray/ray_scene.h b/src/modules/ray/ray_scene.h index 5c7cd5e..ff9c440 100644 --- a/src/modules/ray/ray_scene.h +++ b/src/modules/ray/ray_scene.h @@ -1,28 +1,16 @@ #ifndef _RAY_SCENE_H #define _RAY_SCENE_H -#include "fb.h" - -#include "ray_camera.h" #include "ray_color.h" -#include "ray_ray.h" typedef union ray_object_t ray_object_t; typedef struct ray_scene_t { - ray_object_t *objects; - ray_object_t *lights; - - ray_color_t ambient_color; - float ambient_brightness; + ray_object_t *objects; + ray_object_t *lights; - struct { - ray_color_t ambient_light; - ray_camera_frame_t frame; - } _prepared; + ray_color_t ambient_color; + float ambient_brightness; } ray_scene_t; -void ray_scene_prepare(ray_scene_t *scene, ray_camera_t *camera); -void ray_scene_render_fragment(ray_scene_t *scene, fb_fragment_t *fb_fragment); - #endif |