--- ray/src/rt/ambient.h 2003/02/25 02:47:22 2.8 +++ ray/src/rt/ambient.h 2005/05/25 18:06:22 2.13 @@ -1,12 +1,15 @@ -/* RCSid $Id: ambient.h,v 2.8 2003/02/25 02:47:22 greg Exp $ */ +/* RCSid $Id: ambient.h,v 2.13 2005/05/25 18:06:22 greg Exp $ */ /* * Common definitions for interreflection routines. * * Include after ray.h */ +#ifndef _RAD_AMBIENT_H_ +#define _RAD_AMBIENT_H_ +#ifdef __cplusplus +extern "C" { +#endif -#include "copyright.h" - /* * Since we've defined our vectors as float below to save space, * watch out for changes in the definitions of VCOPY() and DOT() @@ -39,6 +42,7 @@ typedef struct { } AMBSAMP; /* ambient sample division */ typedef struct { + COLOR acoef; /* coefficient for rayorigin() */ FVECT ux, uy, uz; /* x, y and z axis directions */ short nt, np; /* number of theta and phi directions */ } AMBHEMI; /* ambient sample hemisphere */ @@ -46,58 +50,34 @@ typedef struct { extern double maxarad; /* maximum ambient radius */ extern double minarad; /* minimum ambient radius */ +#ifndef AVGREFL #define AVGREFL 0.5 /* assumed average reflectance */ +#endif #define AMBVALSIZ 75 /* number of bytes in portable AMBVAL struct */ #define AMBMAGIC 557 /* magic number for ambient value files */ #define AMBFMT "Radiance_ambval" /* format id string */ -#ifdef NOPROTO - -extern int divsample(); -extern double doambient(); -extern void inithemi(); -extern void comperrs(); -extern void posgradient(); -extern void dirgradient(); -extern void setambres(); -extern void setambacc(); -extern void setambient(); -extern void ambdone(); -extern void ambnotify(); -extern void ambient(); -extern double sumambient(); -extern double makeambient(); -extern void extambient(); -extern int ambsync(); -extern void putambmagic(); -extern int hasambmagic(); -extern int writambval(); -extern int ambvalOK(); -extern int readambval(); -extern void lookamb(); -extern void writamb(); - -#else - /* defined in ambcomp.c */ -extern int divsample(AMBSAMP *dp, AMBHEMI *h, RAY *r); -extern double doambient(COLOR acol, RAY *r, double wt, FVECT pg, FVECT dg); -extern void inithemi(AMBHEMI *hp, RAY *r, double wt); -extern void comperrs(AMBSAMP *da, AMBHEMI *hp); -extern void posgradient(FVECT gv, AMBSAMP *da, AMBHEMI *hp); -extern void dirgradient(FVECT gv, AMBSAMP *da, AMBHEMI *hp); /* defined in ambient.c */ extern void setambres(int ar); extern void setambacc(double newa); extern void setambient(void); +extern void multambient(COLOR aval, RAY *r, FVECT nrm); extern void ambdone(void); extern void ambnotify(OBJECT obj); -extern void ambient(COLOR acol, RAY *r, FVECT nrm); -extern double sumambient(COLOR acol, RAY *r, FVECT rn, int al, +extern double sumambient(COLOR acol, RAY *r, double rw, FVECT rn, int al, AMBTREE *at, FVECT c0, double s); -extern double makeambient(COLOR acol, RAY *r, FVECT rn, int al); +extern double makeambient(COLOR acol, RAY *r, COLOR ac, FVECT rn, int al); extern void extambient(COLOR cr, AMBVAL *ap, FVECT pv, FVECT nv); extern int ambsync(void); + /* defined in ambcomp.c */ +extern double doambient(COLOR acol, RAY *r, COLOR ac, double wt, + FVECT pg, FVECT dg); +extern int inithemi(AMBHEMI *hp, RAY *r, COLOR ac, double wt); +extern int divsample(AMBSAMP *dp, AMBHEMI *h, RAY *r); +extern void comperrs(AMBSAMP *da, AMBHEMI *hp); +extern void posgradient(FVECT gv, AMBSAMP *da, AMBHEMI *hp); +extern void dirgradient(FVECT gv, AMBSAMP *da, AMBHEMI *hp); /* defined in ambio.c */ extern void putambmagic(FILE *fp); extern int hasambmagic(FILE *fp); @@ -108,4 +88,9 @@ extern int readambval(AMBVAL *av, FILE *fp); extern void lookamb(FILE *fp); extern void writamb(FILE *fp); + +#ifdef __cplusplus +} #endif +#endif /* _RAD_AMBIENT_H_ */ +