clray

annotate src/rt.h @ 54:6a30f27fa1e6

separated the OpenGL visualization and added a CPU raytracing mode
author John Tsiombikas <nuclear@member.fsf.org>
date Fri, 10 Sep 2010 16:47:00 +0100
parents 30bf84881553
children df239a52a091
rev   line source
nuclear@3 1 #ifndef RT_H_
nuclear@3 2 #define RT_H_
nuclear@3 3
nuclear@22 4 #include "scene.h"
nuclear@13 5
nuclear@47 6 enum {
nuclear@47 7 ROPT_ITER,
nuclear@47 8 ROPT_SHAD,
nuclear@47 9 ROPT_REFL,
nuclear@47 10
nuclear@47 11 NUM_RENDER_OPTIONS
nuclear@47 12 };
nuclear@47 13
nuclear@54 14 struct RendInfo {
nuclear@54 15 float ambient[4];
nuclear@54 16 int xsz, ysz;
nuclear@54 17 int num_faces, num_lights;
nuclear@54 18 int max_iter;
nuclear@54 19 int cast_shadows;
nuclear@54 20 };
nuclear@54 21
nuclear@54 22 struct Ray {
nuclear@54 23 float origin[4], dir[4];
nuclear@54 24 };
nuclear@54 25
nuclear@54 26
nuclear@39 27 bool init_renderer(int xsz, int ysz, Scene *scn, unsigned int tex);
nuclear@3 28 void destroy_renderer();
nuclear@3 29 bool render();
nuclear@12 30 void set_xform(float *matrix, float *invtrans);
nuclear@12 31
nuclear@54 32 const RendInfo *get_render_info();
nuclear@54 33
nuclear@47 34 void set_render_option(int opt, bool val);
nuclear@47 35 void set_render_option(int opt, int val);
nuclear@47 36 void set_render_option(int opt, float val);
nuclear@47 37
nuclear@47 38 bool get_render_option_bool(int opt);
nuclear@47 39 int get_render_option_int(int opt);
nuclear@47 40 float get_render_option_float(int opt);
nuclear@47 41
nuclear@54 42 // raytrace in the CPU
nuclear@54 43 bool init_dbg_renderer(int xsz, int ysz, Scene *scn, unsigned int texid);
nuclear@54 44 void destroy_dbg_renderer();
nuclear@54 45 void dbg_set_primary_rays(const Ray *rays);
nuclear@54 46 void dbg_render(const float *xform, const float *invtrans_xform, int num_threads = -1);
nuclear@54 47
nuclear@54 48 // visualize the scene using OpenGL
nuclear@27 49 void dbg_render_gl(Scene *scn, bool show_tree = false, bool show_obj = true);
nuclear@3 50
nuclear@3 51 #endif /* RT_H_ */