ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/rt/ambient.h
(Generate patch)

Comparing ray/src/rt/ambient.h (file contents):
Revision 2.6 by greg, Wed Feb 14 15:18:19 1996 UTC vs.
Revision 2.7 by greg, Sat Feb 22 02:07:28 2003 UTC

# Line 1 | Line 1
1 < /* Copyright (c) 1991 Regents of the University of California */
2 <
3 < /* SCCSid "$SunId$ LBL" */
4 <
1 > /* RCSid: $Id$ */
2   /*
3   * Common definitions for interreflection routines.
4 + *
5 + * Include after ray.h
6   */
7  
8 + /* ====================================================================
9 + * The Radiance Software License, Version 1.0
10 + *
11 + * Copyright (c) 1990 - 2002 The Regents of the University of California,
12 + * through Lawrence Berkeley National Laboratory.   All rights reserved.
13 + *
14 + * Redistribution and use in source and binary forms, with or without
15 + * modification, are permitted provided that the following conditions
16 + * are met:
17 + *
18 + * 1. Redistributions of source code must retain the above copyright
19 + *         notice, this list of conditions and the following disclaimer.
20 + *
21 + * 2. Redistributions in binary form must reproduce the above copyright
22 + *       notice, this list of conditions and the following disclaimer in
23 + *       the documentation and/or other materials provided with the
24 + *       distribution.
25 + *
26 + * 3. The end-user documentation included with the redistribution,
27 + *           if any, must include the following acknowledgment:
28 + *             "This product includes Radiance software
29 + *                 (http://radsite.lbl.gov/)
30 + *                 developed by the Lawrence Berkeley National Laboratory
31 + *               (http://www.lbl.gov/)."
32 + *       Alternately, this acknowledgment may appear in the software itself,
33 + *       if and wherever such third-party acknowledgments normally appear.
34 + *
35 + * 4. The names "Radiance," "Lawrence Berkeley National Laboratory"
36 + *       and "The Regents of the University of California" must
37 + *       not be used to endorse or promote products derived from this
38 + *       software without prior written permission. For written
39 + *       permission, please contact [email protected].
40 + *
41 + * 5. Products derived from this software may not be called "Radiance",
42 + *       nor may "Radiance" appear in their name, without prior written
43 + *       permission of Lawrence Berkeley National Laboratory.
44 + *
45 + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
46 + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
47 + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
48 + * DISCLAIMED.   IN NO EVENT SHALL Lawrence Berkeley National Laboratory OR
49 + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
50 + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
51 + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
52 + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
53 + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
54 + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
55 + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
56 + * SUCH DAMAGE.
57 + * ====================================================================
58 + *
59 + * This software consists of voluntary contributions made by many
60 + * individuals on behalf of Lawrence Berkeley National Laboratory.   For more
61 + * information on Lawrence Berkeley National Laboratory, please see
62 + * <http://www.lbl.gov/>.
63 + */
64 +
65   /*
66   * Since we've defined our vectors as float below to save space,
67   * watch out for changes in the definitions of VCOPY() and DOT()
# Line 24 | Line 80 | typedef struct ambrec {
80          struct ambrec  *next;   /* next in list */
81   }  AMBVAL;                      /* ambient value */
82  
83 < extern COLOR  ambval;           /* global ambient component */
84 < extern int  ambvwt;             /* initial weight for ambient value */
85 < extern double  ambacc;          /* ambient accuracy */
86 < extern int  ambres;             /* ambient resolution */
87 < extern int  ambdiv;             /* number of divisions for calculation */
88 < extern int  ambssamp;           /* number of super-samples */
89 < extern int  ambounce;           /* number of ambient bounces */
90 < extern char  *amblist[];        /* ambient include/exclude list */
91 < extern int  ambincl;            /* include == 1, exclude == 0 */
83 > typedef struct ambtree {
84 >        AMBVAL  *alist;         /* ambient value list */
85 >        struct ambtree  *kid;   /* 8 child nodes */
86 > }  AMBTREE;                     /* ambient octree */
87 >
88 > typedef struct {
89 >        short  t, p;            /* theta, phi indices */
90 >        COLOR  v;               /* value sum */
91 >        float  r;               /* 1/distance sum */
92 >        float  k;               /* variance for this division */
93 >        int  n;                 /* number of subsamples */
94 > }  AMBSAMP;             /* ambient sample division */
95 >
96 > typedef struct {
97 >        FVECT  ux, uy, uz;      /* x, y and z axis directions */
98 >        short  nt, np;          /* number of theta and phi directions */
99 > }  AMBHEMI;             /* ambient sample hemisphere */
100 >
101   extern double  maxarad;         /* maximum ambient radius */
102   extern double  minarad;         /* minimum ambient radius */
103  
39 extern double  sumambient(), doambient(), makeambient();
40
104   #define  AVGREFL        0.5     /* assumed average reflectance */
105  
106   #define  AMBVALSIZ      75      /* number of bytes in portable AMBVAL struct */
107   #define  AMBMAGIC       557     /* magic number for ambient value files */
108   #define  AMBFMT         "Radiance_ambval"       /* format id string */
109 +
110 + #ifdef NOPROTO
111 +
112 + extern int      divsample();
113 + extern double   doambient();
114 + extern void     inithemi();
115 + extern void     comperrs();
116 + extern void     posgradient();
117 + extern void     dirgradient();
118 + extern void     setambres();
119 + extern void     setambacc();
120 + extern void     setambient();
121 + extern void     ambdone();
122 + extern void     ambnotify();
123 + extern void     ambient();
124 + extern double   sumambient();
125 + extern double   makeambient();
126 + extern void     extambient();
127 + extern int      ambsync();
128 + extern void     putambmagic();
129 + extern int      hasambmagic();
130 + extern int      writambval();
131 + extern int      ambvalOK();
132 + extern int      readambval();
133 + extern void     lookamb();
134 + extern void     writamb();
135 +
136 + #else
137 +                                        /* defined in ambcomp.c */
138 + extern int      divsample(AMBSAMP *dp, AMBHEMI *h, RAY *r);
139 + extern double   doambient(COLOR acol, RAY *r, double wt, FVECT pg, FVECT dg);
140 + extern void     inithemi(AMBHEMI *hp, RAY *r, double wt);
141 + extern void     comperrs(AMBSAMP *da, AMBHEMI *hp);
142 + extern void     posgradient(FVECT gv, AMBSAMP *da, AMBHEMI *hp);
143 + extern void     dirgradient(FVECT gv, AMBSAMP *da, AMBHEMI *hp);
144 +                                        /* defined in ambient.c */
145 + extern void     setambres(int ar);
146 + extern void     setambacc(double newa);
147 + extern void     setambient(void);
148 + extern void     ambdone(void);
149 + extern void     ambnotify(OBJECT obj);
150 + extern void     ambient(COLOR acol, RAY *r, FVECT nrm);
151 + extern double   sumambient(COLOR acol, RAY *r, FVECT rn, int al,
152 +                                AMBTREE *at, FVECT c0, double s);
153 + extern double   makeambient(COLOR acol, RAY *r, FVECT rn, int al);
154 + extern void     extambient(COLOR cr, AMBVAL *ap, FVECT pv, FVECT nv);
155 + extern int      ambsync(void);
156 +                                        /* defined in ambio.c */
157 + extern void     putambmagic(FILE *fp);
158 + extern int      hasambmagic(FILE *fp);
159 + extern int      writambval(AMBVAL *av, FILE *fp);
160 + extern int      ambvalOK(AMBVAL *av);
161 + extern int      readambval(AMBVAL *av, FILE *fp);
162 +                                        /* defined in lookamb.c */
163 + extern void     lookamb(FILE *fp);
164 + extern void     writamb(FILE *fp);
165 +
166 + #endif

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines