calacirya

annotate src/prim.h @ 0:df9e0bc7685a

starting calacirya project
author John Tsiombikas <nuclear@mutantstargoat.com>
date Sun, 18 Sep 2011 11:46:55 +0300
parents
children
rev   line source
nuclear@0 1 #ifndef PRIM_H_
nuclear@0 2 #define PRIM_H_
nuclear@0 3
nuclear@0 4 #include <vmath.h>
nuclear@0 5
nuclear@0 6 struct object;
nuclear@0 7
nuclear@0 8 typedef struct vertex isect_info_t;
nuclear@0 9
nuclear@0 10 typedef float (*isect_func_t)(struct primitive*, ray_t, isect_info_t*);
nuclear@0 11
nuclear@0 12 enum {
nuclear@0 13 PRIM_SPHERE,
nuclear@0 14 PRIM_PLANE,
nuclear@0 15 PRIM_TRIANGLE
nuclear@0 16 };
nuclear@0 17
nuclear@0 18 #define PRIM_COMMON_VARS \
nuclear@0 19 int type; \
nuclear@0 20 struct object *obj; \
nuclear@0 21 isect_func_t intersect; \
nuclear@0 22 struct primitive *next
nuclear@0 23
nuclear@0 24 struct prim_sphere {
nuclear@0 25 PRIM_COMMON_VARS;
nuclear@0 26
nuclear@0 27 float radius;
nuclear@0 28 };
nuclear@0 29
nuclear@0 30 struct prim_plane {
nuclear@0 31 PRIM_COMMON_VARS;
nuclear@0 32 };
nuclear@0 33
nuclear@0 34 struct vertex {
nuclear@0 35 vec3_t pos, norm, tang;
nuclear@0 36 vec2_t texcoord;
nuclear@0 37 };
nuclear@0 38
nuclear@0 39 struct prim_triangle {
nuclear@0 40 PRIM_COMMON_VARS;
nuclear@0 41
nuclear@0 42 struct vertex v[3];
nuclear@0 43 };
nuclear@0 44
nuclear@0 45 union primitive {
nuclear@0 46 struct prim_sphere sph;
nuclear@0 47 struct prim_plane plane;
nuclear@0 48 struct prim_triangle tri;
nuclear@0 49 };
nuclear@0 50
nuclear@0 51 #endif /* PRIM_H_ */