# HG changeset patch # User John Tsiombikas # Date 1316335615 -10800 # Node ID df9e0bc7685a8abd17d5e9326b29e3f878fe590a starting calacirya project diff -r 000000000000 -r df9e0bc7685a README --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/README Sun Sep 18 11:46:55 2011 +0300 @@ -0,0 +1,1 @@ +calacirya: n. cleft of light diff -r 000000000000 -r df9e0bc7685a src/attr.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/attr.h Sun Sep 18 11:46:55 2011 +0300 @@ -0,0 +1,27 @@ +#ifndef ATTR_H_ +#define ATTR_H_ + +#include + +struct attribute { + struct anm_node *node; + char *name; + + struct attribute *left, *right; +}; + + +struct attrdb { + struct attribute *root; +}; + +struct attribute *create_attrib(const char *name); +void free_attrib(struct attribute *attr); + +struct attrdb *create_attrdb(void); +void free_attrib(struct attrdb *db); + +void add_attrib(struct attrdb *db, struct attribute *attr); +struct attribute *find_attrib(struct attrdb *db, const char *name); + +#endif /* ATTR_H_ */ diff -r 000000000000 -r df9e0bc7685a src/camera.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/camera.h Sun Sep 18 11:46:55 2011 +0300 @@ -0,0 +1,17 @@ +#ifndef CAMERA_H_ +#define CAMERA_H_ + +#include +#include + +struct camera { + struct anm_node *node; + float vfov; + float shutter, aperture; + + struct camera *next; +}; + +ray_t get_prim_ray(struct camera *cam, vec2_t ppos, float tm); + +#endif /* CAMERA_H_ */ diff -r 000000000000 -r df9e0bc7685a src/object.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/object.h Sun Sep 18 11:46:55 2011 +0300 @@ -0,0 +1,10 @@ +#ifndef OBJECT_H_ +#define OBJECT_H_ + +#include + +struct object { + struct anm_node *node; +}; + +#endif /* OBJECT_H_ */ diff -r 000000000000 -r df9e0bc7685a src/prim.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/prim.h Sun Sep 18 11:46:55 2011 +0300 @@ -0,0 +1,51 @@ +#ifndef PRIM_H_ +#define PRIM_H_ + +#include + +struct object; + +typedef struct vertex isect_info_t; + +typedef float (*isect_func_t)(struct primitive*, ray_t, isect_info_t*); + +enum { + PRIM_SPHERE, + PRIM_PLANE, + PRIM_TRIANGLE +}; + +#define PRIM_COMMON_VARS \ + int type; \ + struct object *obj; \ + isect_func_t intersect; \ + struct primitive *next + +struct prim_sphere { + PRIM_COMMON_VARS; + + float radius; +}; + +struct prim_plane { + PRIM_COMMON_VARS; +}; + +struct vertex { + vec3_t pos, norm, tang; + vec2_t texcoord; +}; + +struct prim_triangle { + PRIM_COMMON_VARS; + + struct vertex v[3]; +}; + +union primitive { + struct prim_sphere sph; + struct prim_plane plane; + struct prim_triangle tri; +}; + +#endif /* PRIM_H_ */ diff -r 000000000000 -r df9e0bc7685a src/scene.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/scene.h Sun Sep 18 11:46:55 2011 +0300 @@ -0,0 +1,14 @@ +#ifndef SCENE_H_ +#define SCENE_H_ + +#include "object.h" +#include "prim.h" +#include "kdtree.h" + +struct scene { + struct object *objlist; + struct primitive *primlist; + struct kdtree *tree; +}; + +#endif /* SCENE_H_ */