clray
diff 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 diff
1.1 --- a/src/rt.h Fri Sep 10 16:47:00 2010 +0100 1.2 +++ b/src/rt.h Sat Sep 11 03:00:21 2010 +0100 1.3 @@ -1,6 +1,7 @@ 1.4 #ifndef RT_H_ 1.5 #define RT_H_ 1.6 1.7 +#include <stdio.h> 1.8 #include "scene.h" 1.9 1.10 enum { 1.11 @@ -23,6 +24,20 @@ 1.12 float origin[4], dir[4]; 1.13 }; 1.14 1.15 +struct RenderStats { 1.16 + unsigned long render_time, tex_update_time; 1.17 + 1.18 + int aabb_tests, triangle_tests; 1.19 + int min_aabb_tests, max_aabb_tests; 1.20 + float avg_aabb_tests; 1.21 + int min_triangle_tests, max_triangle_tests; 1.22 + float avg_triangle_tests; 1.23 + 1.24 + int rays_cast, rays_per_sec; 1.25 + int prim_rays, refl_rays, shadow_rays; 1.26 + int brdf_evals; 1.27 +}; 1.28 + 1.29 1.30 bool init_renderer(int xsz, int ysz, Scene *scn, unsigned int tex); 1.31 void destroy_renderer(); 1.32 @@ -30,6 +45,8 @@ 1.33 void set_xform(float *matrix, float *invtrans); 1.34 1.35 const RendInfo *get_render_info(); 1.36 +const RenderStats *get_render_stats(); 1.37 +void print_render_stats(FILE *out = stdout); 1.38 1.39 void set_render_option(int opt, bool val); 1.40 void set_render_option(int opt, int val); 1.41 @@ -39,12 +56,13 @@ 1.42 int get_render_option_int(int opt); 1.43 float get_render_option_float(int opt); 1.44 1.45 -// raytrace in the CPU 1.46 +// regular C++ raytracing using the KD-tree (single-threaded, keeps extensive debug stats) 1.47 bool init_dbg_renderer(int xsz, int ysz, Scene *scn, unsigned int texid); 1.48 void destroy_dbg_renderer(); 1.49 void dbg_set_primary_rays(const Ray *rays); 1.50 void dbg_render(const float *xform, const float *invtrans_xform, int num_threads = -1); 1.51 1.52 + 1.53 // visualize the scene using OpenGL 1.54 void dbg_render_gl(Scene *scn, bool show_tree = false, bool show_obj = true); 1.55