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_ */ |