clray

annotate src/rt.h @ 62:d9520da6b801

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