diff options
author | Vito Caputo <vcaputo@pengaru.com> | 2017-05-12 15:17:52 -0700 |
---|---|---|
committer | Vito Caputo <vcaputo@pengaru.com> | 2017-05-12 18:34:40 -0700 |
commit | 73ef51a819138e50b3d0b162d61a9f272fe07d01 (patch) | |
tree | 21c76ee677da8cd15b229af4715078dbbc1da796 /src/modules/ray/ray_scene.c | |
parent | 6ebf0d428b25a8b4a2dee9af7a91c38b1f8ff124 (diff) |
ray: add ray_scene_prepare() object precomputing
Just embed a _prepared struct in the object where precomputed stuff can be
cached. Gets called once before rendering, which ends up calling the
object-specific ray_object_$type_prepare() methods per object.
Diffstat (limited to 'src/modules/ray/ray_scene.c')
-rw-r--r-- | src/modules/ray/ray_scene.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/modules/ray/ray_scene.c b/src/modules/ray/ray_scene.c index e2c7f2c..87a77af 100644 --- a/src/modules/ray/ray_scene.c +++ b/src/modules/ray/ray_scene.c @@ -167,3 +167,13 @@ void ray_scene_render_fragment(ray_scene_t *scene, ray_camera_t *camera, fb_frag buf += stride; } while (ray_camera_frame_y_step(&frame)); } + + +/* prepare the scene for rendering, must be called whenever the scene has been changed. */ +void ray_scene_prepare(ray_scene_t *scene) +{ + unsigned i; + + for (i = 0; i < scene->n_objects; i++) + ray_object_prepare(&scene->objects[i]); +} |