--- ray/src/rt/ray.h 2003/02/25 02:47:23 2.13 +++ ray/src/rt/ray.h 2003/06/27 06:53:22 2.19 @@ -1,10 +1,13 @@ -/* RCSid $Id: ray.h,v 2.13 2003/02/25 02:47:23 greg Exp $ */ +/* RCSid $Id: ray.h,v 2.19 2003/06/27 06:53:22 greg Exp $ */ /* * ray.h - header file for routines using rays. */ +#ifndef _RAD_RAY_H_ +#define _RAD_RAY_H_ +#ifdef __cplusplus +extern "C" { +#endif -#include "copyright.h" - #include "standard.h" #include "octree.h" @@ -41,6 +44,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 +52,7 @@ typedef struct ray { FVECT ron; /* intersection surface normal */ double rod; /* -DOT(rdir, ron) */ FULLXF *rox; /* object transformation */ + RREAL uv[2]; /* local coordinates */ FVECT pert; /* surface normal perturbation */ COLOR pcol; /* pattern color */ COLOR rcol; /* returned ray value */ @@ -153,54 +158,6 @@ typedef struct { /* rendering parameter holder */ #define rpambmod(p,i) ( (i)>=AMBLLEN||(p)->amblndx[i]<0 ? \ (char *)NULL : (p)->amblval+(p)->amblndx[i] ) -#ifdef NOPROTO - -extern void headclean(); -extern void openheader(); -extern void dupheader(); -extern void pfdetach(); -extern void pfclean(); -extern void pflock(); -extern void pfhold(); -extern void io_process(); -extern int free_objs(); -extern void free_objmem(); -extern int load_os(); -extern void preload_objs(); -extern void ray_init(); -extern void ray_trace(); -extern void ray_done(); -extern void ray_save(); -extern void ray_restore(); -extern void ray_defaults(); -extern void ray_pinit(); -extern void ray_psend(); -extern int ray_pqueue(); -extern int ray_presult(); -extern void ray_pdone(); -extern void ray_popen(); -extern void ray_pclose(); -extern int rayorigin(); -extern void rayclear(); -extern void raytrace(); -extern void raycont(); -extern void raytrans(); -extern int rayshade(); -extern void rayparticipate(); -extern int raymixture(); -extern double raydist(); -extern double raynormal(); -extern void newrayxf(); -extern void flipsurface(); -extern int localhit(); -extern int getrenderopt(); -extern void print_rdefaults(); -extern void drawsources(); -extern void rtrace(); -extern void rview(); -extern void rpict(); - -#else /* defined in duphead.c */ extern void headclean(void); extern void openheader(void); @@ -235,10 +192,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); @@ -256,4 +215,9 @@ extern void rtrace(char *fname); extern void rview(void); extern void rpict(int seq, char *pout, char *zout, char *prvr); + +#ifdef __cplusplus +} #endif +#endif /* _RAD_RAY_H_ */ +