--- ray/src/rt/ray.h 2003/02/25 02:47:23 2.13 +++ ray/src/rt/ray.h 2003/05/09 22:18:03 2.16 @@ -1,4 +1,4 @@ -/* RCSid $Id: ray.h,v 2.13 2003/02/25 02:47:23 greg Exp $ */ +/* RCSid $Id: ray.h,v 2.16 2003/05/09 22:18:03 greg Exp $ */ /* * ray.h - header file for routines using rays. */ @@ -41,6 +41,7 @@ typedef struct ray { OBJECT *clipset; /* set of objects currently clipped */ OBJECT *newcset; /* next clipset, used for transmission */ void (*revf)(); /* evaluation function for this ray */ + void (*hitf)(); /* custom hit test for this traversal */ OBJECT robj; /* intersected object number */ OBJREC *ro; /* intersected object (one with material) */ double rot; /* distance to object */ @@ -48,6 +49,7 @@ typedef struct ray { FVECT ron; /* intersection surface normal */ double rod; /* -DOT(rdir, ron) */ FULLXF *rox; /* object transformation */ + FLOAT uv[2]; /* local coordinates */ FVECT pert; /* surface normal perturbation */ COLOR pcol; /* pattern color */ COLOR rcol; /* returned ray value */ @@ -183,10 +185,12 @@ extern void ray_pclose(); extern int rayorigin(); extern void rayclear(); extern void raytrace(); +extern void rayhit(); extern void raycont(); extern void raytrans(); extern int rayshade(); extern void rayparticipate(); +extern void raytexture(); extern int raymixture(); extern double raydist(); extern double raynormal(); @@ -235,10 +239,12 @@ extern void ray_pclose(int nsub); extern int rayorigin(RAY *r, RAY *ro, int rt, double rw); extern void rayclear(RAY *r); extern void raytrace(RAY *r); +extern void rayhit(OBJECT *oset, RAY *r); extern void raycont(RAY *r); extern void raytrans(RAY *r); extern int rayshade(RAY *r, int mod); extern void rayparticipate(RAY *r); +extern void raytexture(RAY *r, OBJECT mod); extern int raymixture(RAY *r, OBJECT fore, OBJECT back, double coef); extern double raydist(RAY *r, int flags); extern double raynormal(FVECT norm, RAY *r);