calacirya

view 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
line source
1 #ifndef PRIM_H_
2 #define PRIM_H_
4 #include <vmath.h>
6 struct object;
8 typedef struct vertex isect_info_t;
10 typedef float (*isect_func_t)(struct primitive*, ray_t, isect_info_t*);
12 enum {
13 PRIM_SPHERE,
14 PRIM_PLANE,
15 PRIM_TRIANGLE
16 };
18 #define PRIM_COMMON_VARS \
19 int type; \
20 struct object *obj; \
21 isect_func_t intersect; \
22 struct primitive *next
24 struct prim_sphere {
25 PRIM_COMMON_VARS;
27 float radius;
28 };
30 struct prim_plane {
31 PRIM_COMMON_VARS;
32 };
34 struct vertex {
35 vec3_t pos, norm, tang;
36 vec2_t texcoord;
37 };
39 struct prim_triangle {
40 PRIM_COMMON_VARS;
42 struct vertex v[3];
43 };
45 union primitive {
46 struct prim_sphere sph;
47 struct prim_plane plane;
48 struct prim_triangle tri;
49 };
51 #endif /* PRIM_H_ */