--- ray/src/rt/source.h 1989/06/07 08:35:12 1.2 +++ ray/src/rt/source.h 1989/06/07 10:29:01 1.3 @@ -10,12 +10,24 @@ #define SDISTANT 01 /* source distant flag */ #define SSKIP 02 /* source skip flag */ +#define SPROX 04 /* source proximity flag */ +#define SSPOT 010 /* source spotlight flag */ typedef struct { + float siz; /* output solid angle */ + float flen; /* focal length */ + FVECT aim; /* aim direction */ +} SPOT; /* spotlight */ + +typedef struct { short sflags; /* source flags */ FVECT sloc; /* direction or position of source */ float ss; /* tangent or disk radius */ float ss2; /* domega or projected area */ + union { + float prox; /* proximity */ + SPOT *s; /* spot */ + } sl; /* localized source information */ long ntests, nhits; /* shadow tests and hits */ OBJREC *so; /* source object */ } SRCREC; /* light source */ @@ -32,3 +44,5 @@ extern SRCREC *source; /* our source list */ extern int nsources; /* the number of sources */ extern double srcray(); /* ray to source */ + +extern SPOT *makespot(); /* make spotlight */