| 23 |
|
|
| 24 |
|
/* ray type flags */ |
| 25 |
|
#define PRIMARY 01 /* original ray */ |
| 26 |
< |
#define SHADOW 02 /* ray to light source */ |
| 26 |
> |
#define RSHADOW 02 /* reflected ray to light source */ |
| 27 |
|
#define REFLECTED 04 /* reflected ray */ |
| 28 |
|
#define REFRACTED 010 /* refracted (bent) ray */ |
| 29 |
|
#define TRANS 020 /* transmitted/transferred ray */ |
| 30 |
< |
#define AMBIENT 040 /* ray scattered for interreflection */ |
| 31 |
< |
#define SPECULAR 0100 /* ray scattered for specular */ |
| 30 |
> |
#define RAMBIENT 040 /* reflected diffuse interreflection */ |
| 31 |
> |
#define RSPECULAR 0100 /* reflected specular */ |
| 32 |
> |
#define TSHADOW 0200 /* transmitted shadow */ |
| 33 |
> |
#define TAMBIENT 0400 /* transmitted ambient */ |
| 34 |
> |
#define TSPECULAR 01000 /* transmitted specular */ |
| 35 |
> |
#define SHADOW (RSHADOW|TSHADOW) |
| 36 |
> |
#define AMBIENT (RAMBIENT|TAMBIENT) |
| 37 |
> |
#define SPECULAR (RSPECULAR|TSPECULAR) |
| 38 |
|
|
| 39 |
|
/* reflected ray types */ |
| 40 |
< |
#define RAYREFL (SHADOW|REFLECTED|AMBIENT|SPECULAR) |
| 40 |
> |
#define RAYREFL (RSHADOW|REFLECTED|RAMBIENT|RSPECULAR) |
| 41 |
|
|
| 42 |
|
/* Arrange so double's come first for optimal alignment */ |
| 43 |
|
/* Pointers and long's come second for 64-bit mode */ |
| 80 |
|
} RAY; |
| 81 |
|
|
| 82 |
|
#define rayvalue(r) (*(r)->revf)(r) |
| 83 |
+ |
|
| 84 |
+ |
#define thrudir(r,v) ((r)->rod > 0 ^ DOT((r)->ron,v) > 0) |
| 85 |
|
|
| 86 |
|
#define raydistance(r) (pbright((r)->mcol) > 0.5*pbright((r)->rcol) ? \ |
| 87 |
|
(r)->rmt : (r)->rxt) |