clray

view src/rt.h @ 55:df239a52a091

extensive render stats for the CPU raytracer
author John Tsiombikas <nuclear@member.fsf.org>
date Sat, 11 Sep 2010 03:00:21 +0100
parents 6a30f27fa1e6
children
line source
1 #ifndef RT_H_
2 #define RT_H_
4 #include <stdio.h>
5 #include "scene.h"
7 enum {
8 ROPT_ITER,
9 ROPT_SHAD,
10 ROPT_REFL,
12 NUM_RENDER_OPTIONS
13 };
15 struct RendInfo {
16 float ambient[4];
17 int xsz, ysz;
18 int num_faces, num_lights;
19 int max_iter;
20 int cast_shadows;
21 };
23 struct Ray {
24 float origin[4], dir[4];
25 };
27 struct RenderStats {
28 unsigned long render_time, tex_update_time;
30 int aabb_tests, triangle_tests;
31 int min_aabb_tests, max_aabb_tests;
32 float avg_aabb_tests;
33 int min_triangle_tests, max_triangle_tests;
34 float avg_triangle_tests;
36 int rays_cast, rays_per_sec;
37 int prim_rays, refl_rays, shadow_rays;
38 int brdf_evals;
39 };
42 bool init_renderer(int xsz, int ysz, Scene *scn, unsigned int tex);
43 void destroy_renderer();
44 bool render();
45 void set_xform(float *matrix, float *invtrans);
47 const RendInfo *get_render_info();
48 const RenderStats *get_render_stats();
49 void print_render_stats(FILE *out = stdout);
51 void set_render_option(int opt, bool val);
52 void set_render_option(int opt, int val);
53 void set_render_option(int opt, float val);
55 bool get_render_option_bool(int opt);
56 int get_render_option_int(int opt);
57 float get_render_option_float(int opt);
59 // regular C++ raytracing using the KD-tree (single-threaded, keeps extensive debug stats)
60 bool init_dbg_renderer(int xsz, int ysz, Scene *scn, unsigned int texid);
61 void destroy_dbg_renderer();
62 void dbg_set_primary_rays(const Ray *rays);
63 void dbg_render(const float *xform, const float *invtrans_xform, int num_threads = -1);
66 // visualize the scene using OpenGL
67 void dbg_render_gl(Scene *scn, bool show_tree = false, bool show_obj = true);
69 #endif /* RT_H_ */