Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F99923605
rcontrib.h
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Mon, Jan 27, 07:31
Size
4 KB
Mime Type
text/x-c
Expires
Wed, Jan 29, 07:31 (1 d, 4 h)
Engine
blob
Format
Raw Data
Handle
23811466
Attached To
R10977 RADIANCE Photon Map
rcontrib.h
View Options
/* RCSid $Id: rcontrib.h,v 2.17 2021/02/16 20:06:06 greg Exp $ */
/*
* Header file for rcontrib modules
*/
#include "platform.h"
#include "paths.h"
#include "rtprocess.h"
#include "ray.h"
#include "func.h"
#include "lookup.h"
extern int gargc; /* global argc */
extern char **gargv; /* global argv */
extern char *octname; /* global octree name */
extern int nproc; /* number of processes requested */
extern int nchild; /* number of children (-1 in child) */
extern int inpfmt; /* input format */
extern int outfmt; /* output format */
extern int header; /* output header? */
extern int force_open; /* truncate existing output? */
extern int recover; /* recover previous output? */
extern int accumulate; /* input rays per output record */
extern int contrib; /* computing contributions? */
extern int xres; /* horizontal (scan) size */
extern int yres; /* vertical resolution */
extern int using_stdout; /* are we using stdout? */
extern int imm_irrad; /* compute immediate irradiance? */
extern int lim_dist; /* limit distance? */
extern int account; /* current accumulation count */
extern RNUMBER raysleft; /* number of rays left to trace */
extern long waitflush; /* how long until next flush */
extern RNUMBER lastray; /* last ray number sent */
extern RNUMBER lastdone; /* last ray processed */
extern int report_intvl; /* reporting interval (seconds) */
typedef double DCOLOR[3]; /* double-precision color */
/*
* The MODCONT structure is used to accumulate ray contributions
* for a particular modifier, which may be subdivided into bins
* if binv evaluates > 0. If outspec contains a %s in it, this will
* be replaced with the modifier name. If outspec contains a %d in it,
* this will be used to create one output file per bin, otherwise all bins
* will be written to the same file, in order. If the global outfmt
* is 'c', then a 4-byte RGBE pixel will be output for each bin value
* and the file will conform to a RADIANCE image if xres & yres are set.
*/
typedef struct {
const char *outspec; /* output file specification */
const char *modname; /* modifier name */
const char *params; /* parameter list */
EPNODE *binv; /* bin value expression */
int bin0; /* starting bin offset */
int nbins; /* number of contribution bins */
DCOLOR cbin[1]; /* contribution bins (extends struct) */
} MODCONT; /* modifier contribution */
extern LUTAB modconttab; /* modifier contribution table */
/*
* The STREAMOUT structure holds an open FILE pointer and a count of
* the number of RGB triplets per record, or 0 if unknown.
*/
typedef struct {
FILE *ofp; /* output file pointer */
int outpipe; /* output is to a pipe */
int reclen; /* triplets/record */
int xr, yr; /* output resolution for picture */
} STREAMOUT;
extern LUTAB ofiletab; /* output stream table */
#ifndef MAXPROCESS
#if defined(_WIN32) || defined(_WIN64)
#define MAXPROCESS 1
#else
#define MAXPROCESS 128
#endif
#endif
extern char **modname; /* ordered modifier name list */
extern int nmods; /* number of modifiers */
extern int modasiz; /* allocated modifier array size */
extern char RCCONTEXT[]; /* special evaluation context */
extern char *formstr(int f); /* return format identifier */
extern void process_rcontrib(void); /* trace ray contributions */
extern STREAMOUT * getostream(const char *ospec, const char *mname,
int bn, int noopen);
extern void mod_output(MODCONT *mp);
extern void end_record(void);
extern MODCONT *addmodifier(char *modn, char *outf,
char *prms, char *binv, int bincnt);
extern void addmodfile(char *fname, char *outf,
char *prms, char *binv, int bincnt);
extern void reload_output(void);
extern void recover_output(void);
extern int getvec(FVECT vec);
extern int in_rchild(void);
extern void end_children(int immed);
extern void put_zero_record(int ndx);
extern int morays(void); /* reached end of input? */
extern void parental_loop(void); /* controlling process */
extern void feeder_loop(void); /* feeder process */
extern void rcontrib(void); /* main calculation loop */
Event Timeline
Log In to Comment