--- ray/src/common/otypes.h 2003/06/27 06:53:21 2.12 +++ ray/src/common/otypes.h 2012/07/29 19:01:39 2.17 @@ -1,4 +1,4 @@ -/* RCSid $Id: otypes.h,v 2.12 2003/06/27 06:53:21 greg Exp $ */ +/* RCSid $Id: otypes.h,v 2.17 2012/07/29 19:01:39 greg Exp $ */ /* * otypes.h - defines for object types. */ @@ -11,8 +11,19 @@ extern "C" { typedef struct { char *funame; /* function name */ int flags; /* type flags */ +#ifdef FUN_ARGLIST + int (*funp)(FUN_ARGLIST); /* pointer to function */ +#else int (*funp)(); /* pointer to function */ +#endif } FUN; + +#ifdef FUN_ARGLIST +extern int o_default(FUN_ARGLIST); +#else +extern int o_default(); /* XXX conflict with radogl.h */ +#endif + /* object types in decreasing frequency */ #define OBJ_FACE 0 /* polygon */ #define OBJ_CONE 1 /* cone */ @@ -49,23 +60,25 @@ typedef struct { #define MAT_MIST 32 /* mist medium */ #define MAT_MIRROR 33 /* mirror (secondary source) */ #define MAT_TFUNC 34 /* trans brdf function */ -#define MAT_BRTDF 35 /* brtd function */ -#define MAT_PDATA 36 /* plastic brdf data */ -#define MAT_MDATA 37 /* metal brdf data */ -#define MAT_TDATA 38 /* trans brdf data */ -#define PAT_CFUNC 39 /* color function */ -#define MAT_CLIP 40 /* clipping surface */ -#define PAT_CDATA 41 /* color data */ -#define PAT_CTEXT 42 /* colored text */ -#define TEX_DATA 43 /* surface texture data */ -#define MIX_FUNC 44 /* mixing function */ -#define MIX_DATA 45 /* mixing data */ -#define MIX_TEXT 46 /* mixing text */ -#define MIX_PICT 47 /* mixing picture */ -#define MAT_DIRECT1 48 /* unidirecting material */ -#define MAT_DIRECT2 49 /* bidirecting material */ +#define MAT_BRTDF 35 /* BRTD function */ +#define MAT_BSDF 36 /* BSDF data file */ +#define MAT_PDATA 37 /* plastic brdf data */ +#define MAT_MDATA 38 /* metal brdf data */ +#define MAT_TDATA 39 /* trans brdf data */ +#define PAT_CFUNC 40 /* color function */ +#define MAT_CLIP 41 /* clipping surface */ +#define PAT_CDATA 42 /* color data */ +#define PAT_CTEXT 43 /* colored text */ +#define TEX_DATA 44 /* surface texture data */ +#define MIX_FUNC 45 /* mixing function */ +#define MIX_DATA 46 /* mixing data */ +#define MIX_TEXT 47 /* mixing text */ +#define MIX_PICT 48 /* mixing picture */ +#define MAT_DIRECT1 49 /* unidirecting material */ +#define MAT_DIRECT2 50 /* bidirecting material */ +#define MAT_ASHIKHMIN 51 /* Ashikhmin-Shirley BRDF material */ /* number of object types */ -#define NUMOTYPE 50 +#define NUMOTYPE 52 /* type flags */ #define T_S 01 /* surface (object) */ #define T_M 02 /* material */ @@ -100,8 +113,6 @@ extern FUN ofun[]; /* our type list */ #define hastext(t) (ofun[t].flags & T_E) #define isflat(t) ((t)==OBJ_FACE || (t)==OBJ_RING) -extern int o_default(); - #define ALIASKEY "alias" /* alias keyword */ #define ALIASMOD "inherit" /* inherit target modifier */ @@ -142,6 +153,7 @@ extern int o_default(); { "mirror", T_M|T_LV, o_default }, \ { "transfunc", T_M|T_F, o_default }, \ { "BRTDfunc", T_M|T_F, o_default }, \ + { "BSDF", T_M|T_D, o_default }, \ { "plasdata", T_M|T_D, o_default }, \ { "metdata", T_M|T_D, o_default }, \ { "transdata", T_M|T_D, o_default }, \ @@ -156,6 +168,7 @@ extern int o_default(); { "mixpict", T_X|T_I, o_default }, \ { "prism1", T_M|T_F|T_LV, o_default }, \ { "prism2", T_M|T_F|T_LV, o_default }, \ + { "ashik2", T_M|T_F, o_default }, \ }