--- ray/src/rt/ambient.h 2005/05/28 22:27:54 2.14 +++ ray/src/rt/ambient.h 2005/09/23 19:04:53 2.16 @@ -1,4 +1,4 @@ -/* RCSid $Id: ambient.h,v 2.14 2005/05/28 22:27:54 greg Exp $ */ +/* RCSid $Id: ambient.h,v 2.16 2005/09/23 19:04:53 greg Exp $ */ /* * Common definitions for interreflection routines. * @@ -34,19 +34,18 @@ typedef struct ambtree { } AMBTREE; /* ambient octree */ typedef struct { - short t, p; /* theta, phi indices */ - COLOR v; /* value sum */ + COLOR v; /* division sum (partial) */ float r; /* 1/distance sum */ float k; /* variance for this division */ int n; /* number of subsamples */ + short t, p; /* theta, phi indices */ } AMBSAMP; /* ambient sample division */ typedef struct { - COLOR acoef; /* ambient contribution coefficient */ - float drc; /* daughter ray coefficient */ FVECT ux, uy, uz; /* x, y and z axis directions */ - short nt, np; /* number of theta and phi directions */ + COLOR acoef; /* division contribution coefficient */ int ns; /* number of super-samples */ + short nt, np; /* number of theta and phi directions */ } AMBHEMI; /* ambient sample hemisphere */ extern double maxarad; /* maximum ambient radius */ @@ -67,15 +66,15 @@ extern void setambient(void); extern void multambient(COLOR aval, RAY *r, FVECT nrm); extern void ambdone(void); extern void ambnotify(OBJECT obj); -extern double sumambient(COLOR acol, RAY *r, double rw, FVECT rn, int al, +extern double sumambient(COLOR acol, RAY *r, FVECT rn, int al, AMBTREE *at, FVECT c0, double s); -extern double makeambient(COLOR acol, RAY *r, COLOR ac, FVECT rn, int al); +extern double makeambient(COLOR acol, RAY *r, 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, +extern double doambient(COLOR acol, RAY *r, double wt, FVECT pg, FVECT dg); -extern void inithemi(AMBHEMI *hp, RAY *r, COLOR ac, double wt); +extern void inithemi(AMBHEMI *hp, COLOR ac, RAY *r, 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);