ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/rt/ambient.h
Revision: 2.27
Committed: Wed Nov 15 18:02:52 2023 UTC (6 months, 2 weeks ago) by greg
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Changes since 2.26: +9 -6 lines
Log Message:
feat(rpict,rtrace,rcontrib,rtpict): Hyperspectral rendering (except photon map)

File Contents

# User Rev Content
1 greg 2.27 /* RCSid $Id: ambient.h,v 2.26 2022/03/07 17:52:14 greg Exp $ */
2 greg 1.1 /*
3     * Common definitions for interreflection routines.
4 greg 2.7 *
5     * Include after ray.h
6     */
7 greg 2.19
8 schorsch 2.9 #ifndef _RAD_AMBIENT_H_
9     #define _RAD_AMBIENT_H_
10     #ifdef __cplusplus
11     extern "C" {
12     #endif
13 greg 1.1
14 greg 2.19 /*
15     * Normal and u-vector directions encoded using dircode.c
16     */
17     typedef struct ambrec {
18     struct ambrec *next; /* next in list */
19     float pos[3]; /* position in space */
20     int32 ndir; /* encoded surface normal */
21     int32 udir; /* u-vector direction */
22 greg 2.24 short lvl; /* recursion level of parent ray */
23 greg 2.19 float weight; /* weight of parent ray */
24     float rad[2]; /* anisotropic radii (rad[0] <= rad[1]) */
25     float gpos[2]; /* (u,v) gradient wrt. position */
26     float gdir[2]; /* (u,v) gradient wrt. direction */
27 greg 2.22 uint32 corral; /* potential light leak direction flags */
28 greg 2.27 SCOLOR val; /* computed indirect irradiance (last!) */
29 greg 2.19 } AMBVAL; /* ambient value */
30    
31     typedef struct ambtree {
32     AMBVAL *alist; /* ambient value list */
33     struct ambtree *kid; /* 8 child nodes */
34     } AMBTREE; /* ambient octree */
35    
36     extern double maxarad; /* maximum ambient radius */
37     extern double minarad; /* minimum ambient radius */
38    
39     #ifndef AVGREFL
40     #define AVGREFL 0.5 /* assumed average reflectance */
41     #endif
42    
43 greg 2.27 #define AMBVALSIZ (64+AMB_CNDX[3]) /* number of bytes in portable AMBVAL */
44     #define AMBMAGIC 561 /* magic number for ambient value file */
45 greg 2.19 #define AMBFMT "Radiance_ambval" /* format id string */
46    
47     /* defined in ambient.c */
48     extern void setambres(int ar);
49     extern void setambacc(double newa);
50     extern void setambient(void);
51 greg 2.27 extern void multambient(SCOLOR aval, RAY *r, FVECT nrm);
52 greg 2.19 extern void ambdone(void);
53     extern void ambnotify(OBJECT obj);
54     extern int ambsync(void);
55     /* defined in ambcomp.c */
56 greg 2.27 extern int doambient(SCOLOR acol, RAY *r, double wt,
57 greg 2.19 FVECT uv[2], float rad[2],
58 greg 2.22 float gpos[2], float gdir[2], uint32 *crlp);
59 greg 2.19 /* defined in ambio.c */
60 greg 2.27 extern int *AMB_CNDX; /* open ambient file RGBE indices */
61     extern float *AMB_WLPART; /* open ambient file spectral range */
62     extern int amb_headline(char *hl, void *p);
63 greg 2.19 extern void putambmagic(FILE *fp);
64     extern int hasambmagic(FILE *fp);
65     extern int writambval(AMBVAL *av, FILE *fp);
66 greg 2.20 extern int readambval(AMBVAL *av, FILE *fp);
67 greg 2.19 extern int ambvalOK(AMBVAL *av);
68    
69 schorsch 2.9 #ifdef __cplusplus
70     }
71 greg 2.7 #endif
72 schorsch 2.9 #endif /* _RAD_AMBIENT_H_ */
73