| 42 |
|
extern RNUMBER lastray; /* last ray number sent */ |
| 43 |
|
extern RNUMBER lastdone; /* last ray processed */ |
| 44 |
|
|
| 45 |
< |
typedef double DCOLOR[3]; /* double-precision color */ |
| 45 |
> |
extern int report_intvl; /* reporting interval (seconds) */ |
| 46 |
|
|
| 47 |
+ |
typedef double DCOLORV; /* double-precision color type */ |
| 48 |
+ |
|
| 49 |
|
/* |
| 50 |
|
* The MODCONT structure is used to accumulate ray contributions |
| 51 |
|
* for a particular modifier, which may be subdivided into bins |
| 53 |
|
* be replaced with the modifier name. If outspec contains a %d in it, |
| 54 |
|
* this will be used to create one output file per bin, otherwise all bins |
| 55 |
|
* will be written to the same file, in order. If the global outfmt |
| 56 |
< |
* is 'c', then a 4-byte RGBE pixel will be output for each bin value |
| 57 |
< |
* and the file will conform to a RADIANCE image if xres & yres are set. |
| 56 |
> |
* is 'c', then a common-exponent pixel will be output for each bin value |
| 57 |
> |
* and the file will conform to a RADIANCE picture if NCSAMP==3 and |
| 58 |
> |
* xres and yres are set. |
| 59 |
|
*/ |
| 60 |
|
typedef struct { |
| 61 |
|
const char *outspec; /* output file specification */ |
| 62 |
|
const char *modname; /* modifier name */ |
| 63 |
|
const char *params; /* parameter list */ |
| 64 |
|
EPNODE *binv; /* bin value expression */ |
| 65 |
+ |
int bin0; /* starting bin offset */ |
| 66 |
|
int nbins; /* number of contribution bins */ |
| 67 |
< |
DCOLOR cbin[1]; /* contribution bins (extends struct) */ |
| 67 |
> |
DCOLORV cbin[1]; /* contribution bins (extends struct) */ |
| 68 |
|
} MODCONT; /* modifier contribution */ |
| 69 |
|
|
| 70 |
+ |
#define DCOLORSIZ (sizeof(DCOLORV)*NCSAMP) |
| 71 |
+ |
#define mcsize(nb) (sizeof(MODCONT)-sizeof(DCOLORV)+(nb)*DCOLORSIZ) |
| 72 |
+ |
#define mcbin(mp,bi) ((mp)->cbin + (bi)*NCSAMP) |
| 73 |
+ |
|
| 74 |
|
extern LUTAB modconttab; /* modifier contribution table */ |
| 75 |
|
|
| 76 |
|
/* |
| 87 |
|
extern LUTAB ofiletab; /* output stream table */ |
| 88 |
|
|
| 89 |
|
#ifndef MAXPROCESS |
| 90 |
< |
#ifdef _WIN32 |
| 90 |
> |
#if defined(_WIN32) || defined(_WIN64) |
| 91 |
|
#define MAXPROCESS 1 |
| 92 |
|
#else |
| 93 |
|
#define MAXPROCESS 128 |
| 94 |
|
#endif |
| 95 |
|
#endif |
| 96 |
|
|
| 97 |
< |
#ifndef MAXMODLIST |
| 90 |
< |
#define MAXMODLIST 2048 /* maximum modifiers we'll track */ |
| 91 |
< |
#endif |
| 92 |
< |
|
| 93 |
< |
extern const char *modname[MAXMODLIST]; /* ordered modifier name list */ |
| 97 |
> |
extern char **modname; /* ordered modifier name list */ |
| 98 |
|
extern int nmods; /* number of modifiers */ |
| 99 |
+ |
extern int modasiz; /* allocated modifier array size */ |
| 100 |
|
|
| 101 |
|
extern char RCCONTEXT[]; /* special evaluation context */ |
| 102 |
|
|
| 98 |
– |
extern char *formstr(int f); /* return format identifier */ |
| 99 |
– |
|
| 103 |
|
extern void process_rcontrib(void); /* trace ray contributions */ |
| 104 |
|
|
| 105 |
|
extern STREAMOUT * getostream(const char *ospec, const char *mname, |
| 122 |
|
extern void end_children(int immed); |
| 123 |
|
|
| 124 |
|
extern void put_zero_record(int ndx); |
| 125 |
+ |
|
| 126 |
+ |
extern int morays(void); /* reached end of input? */ |
| 127 |
|
|
| 128 |
|
extern void parental_loop(void); /* controlling process */ |
| 129 |
|
|