ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/rt/ray.h
Revision: 2.6
Committed: Sat Dec 9 09:35:00 1995 UTC (28 years, 4 months ago) by greg
Content type: text/plain
Branch: MAIN
Changes since 2.5: +8 -2 lines
Log Message:
added M_MIST (mist) type and global participating medium

File Contents

# Content
1 /* Copyright (c) 1995 Regents of the University of California */
2
3 /* SCCSid "$SunId$ LBL" */
4
5 /*
6 * ray.h - header file for routines using rays.
7 *
8 * 8/7/85
9 */
10
11 #include "standard.h"
12
13 #include "object.h"
14
15 #include "color.h"
16
17 #define MAXDIM 32 /* maximum number of dimensions */
18
19 #define MAXSLIST 32 /* maximum sources to check */
20
21 /* ray type flags */
22 #define PRIMARY 01 /* original ray */
23 #define SHADOW 02 /* ray to light source */
24 #define REFLECTED 04 /* reflected ray */
25 #define REFRACTED 010 /* refracted (bent) ray */
26 #define TRANS 020 /* transmitted/transferred ray */
27 #define AMBIENT 040 /* ray scattered for interreflection */
28 #define SPECULAR 0100 /* ray scattered for specular */
29
30 /* reflected ray types */
31 #define RAYREFL (SHADOW|REFLECTED|AMBIENT|SPECULAR)
32
33 typedef struct ray {
34 unsigned long rno; /* unique ray number */
35 int rlvl; /* number of reflections for this ray */
36 float rweight; /* cumulative weight of this ray */
37 short rtype; /* ray type */
38 short crtype; /* cumulative ray type */
39 struct ray *parent; /* ray this originated from */
40 FVECT rorg; /* origin of ray */
41 FVECT rdir; /* normalized direction of ray */
42 double rmax; /* maximum distance (aft clipping plane) */
43 int rsrc; /* source we're aiming for */
44 OBJECT *clipset; /* set of objects currently clipped */
45 OBJECT *newcset; /* next clipset, used for transmission */
46 int (*revf)(); /* evaluation function for this ray */
47 OBJREC *ro; /* intersected object */
48 double rot; /* distance to object */
49 FVECT rop; /* intersection point */
50 FVECT ron; /* intersection surface normal */
51 double rod; /* -DOT(rdir, ron) */
52 FULLXF *rox; /* object transformation */
53 FVECT pert; /* surface normal perturbation */
54 COLOR pcol; /* pattern color */
55 COLOR rcol; /* returned ray value */
56 double rt; /* returned effective ray length */
57 COLOR cext; /* medium extinction coefficient */
58 float albedo; /* medium scattering albedo */
59 float gecc; /* scattering eccentricity coefficient */
60 int *slights; /* list of lights to test for scattering */
61 } RAY;
62
63 extern int raytrace();
64
65 extern double raynormal();
66
67 extern double raydistance();
68
69 extern int dimlist[]; /* dimension list for distribution */
70 extern int ndims; /* number of dimensions so far */
71 extern int samplendx; /* index for this sample */
72
73 #define rayvalue(r) (*(r)->revf)(r)