From 5c287c99a3fa8f137dc279b2253c628e83786afe Mon Sep 17 00:00:00 2001 From: Vito Caputo Date: Sun, 10 Dec 2017 12:32:19 -0800 Subject: 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. --- src/modules/ray/ray_render.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 src/modules/ray/ray_render.h (limited to 'src/modules/ray/ray_render.h') diff --git a/src/modules/ray/ray_render.h b/src/modules/ray/ray_render.h new file mode 100644 index 0000000..a6d6c67 --- /dev/null +++ b/src/modules/ray/ray_render.h @@ -0,0 +1,15 @@ +#ifndef _RAY_RENDER_H +#define _RAY_RENDER_H + +#include "fb.h" + +#include "ray_camera.h" +#include "ray_scene.h" + +typedef struct ray_render_t ray_render_t; + +ray_render_t * ray_render_new(ray_scene_t *scene, ray_camera_t *camera); +void ray_render_free(ray_render_t *render); +void ray_render_trace_fragment(ray_render_t *render, fb_fragment_t *fb_fragment); + +#endif -- cgit v1.2.1