1 |
< |
/* Copyright (c) 1990 Regents of the University of California */ |
1 |
> |
/* Copyright (c) 1995 Regents of the University of California */ |
2 |
|
|
3 |
|
/* SCCSid "$SunId$ LBL" */ |
4 |
|
|
21 |
|
#define REFRACTED 010 /* refracted (bent) ray */ |
22 |
|
#define TRANS 020 /* transmitted/transferred ray */ |
23 |
|
#define AMBIENT 040 /* ray scattered for interreflection */ |
24 |
+ |
#define SPECULAR 0100 /* ray scattered for specular */ |
25 |
|
|
26 |
|
/* reflected ray types */ |
27 |
< |
#define RAYREFL (SHADOW|REFLECTED|AMBIENT) |
27 |
> |
#define RAYREFL (SHADOW|REFLECTED|AMBIENT|SPECULAR) |
28 |
|
|
29 |
|
typedef struct ray { |
30 |
< |
long rno; /* unique ray number */ |
30 |
> |
unsigned long rno; /* unique ray number */ |
31 |
|
int rlvl; /* number of reflections for this ray */ |
32 |
|
float rweight; /* cumulative weight of this ray */ |
33 |
|
short rtype; /* ray type */ |
35 |
|
struct ray *parent; /* ray this originated from */ |
36 |
|
FVECT rorg; /* origin of ray */ |
37 |
|
FVECT rdir; /* normalized direction of ray */ |
38 |
+ |
double rmax; /* maximum distance (aft clipping plane) */ |
39 |
|
int rsrc; /* source we're aiming for */ |
40 |
|
OBJECT *clipset; /* set of objects currently clipped */ |
41 |
|
OBJECT *newcset; /* next clipset, used for transmission */ |
56 |
|
|
57 |
|
extern double raynormal(); |
58 |
|
|
59 |
+ |
extern double raydistance(); |
60 |
+ |
|
61 |
|
extern int dimlist[]; /* dimension list for distribution */ |
62 |
|
extern int ndims; /* number of dimensions so far */ |
63 |
|
extern int samplendx; /* index for this sample */ |
64 |
|
|
65 |
< |
#define MAXDIM 16 /* maximum number of dimensions */ |
65 |
> |
#define MAXDIM 32 /* maximum number of dimensions */ |
66 |
|
|
67 |
|
#define rayvalue(r) (*(r)->revf)(r) |