ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/hd/holo.h
(Generate patch)

Comparing ray/src/hd/holo.h (file contents):
Revision 3.15 by gwlarson, Wed Aug 12 17:54:15 1998 UTC vs.
Revision 3.19 by gwlarson, Thu Jan 7 22:04:48 1999 UTC

# Line 1 | Line 1
1 < /* Copyright (c) 1998 Silicon Graphics, Inc. */
1 > /* Copyright (c) 1999 Silicon Graphics, Inc. */
2  
3   /* SCCSid "$SunId$ SGI" */
4  
# Line 15 | Line 15
15   #define HDMAX           128     /* maximum active holodeck sections */
16   #endif
17  
18 + #ifndef MAXDIRSE
19 + #define MAXDIRSE        32      /* maximum seeks per directory write */
20 + #endif
21 +
22   #define DCINF   (unsigned)((1L<<16)-1)  /* special value for infinity */
23   #define DCLIN   (unsigned)(1L<<11)      /* linear depth limit */
24  
# Line 65 | Line 69 | typedef struct holo {
69          FVECT   xv[3];          /* side vectors (second) */
70          int2    grid[3];        /* grid resolution (third) */
71          int     fd;             /* file descriptor */
72 <        short   dirty;          /* beam index needs update to file */
72 >        struct {
73 >                int     s, n;           /* dirty section start, length */
74 >        } dirseg[MAXDIRSE+1];   /* dirty beam index segments */
75 >        short   dirty;          /* number of dirty segments */
76          double  tlin;           /* linear range for depth encoding */
77          FVECT   wg[3];          /* wall grid vectors (derived) */
71        double  wo[6];          /* wall grid offsets (derived) */
78          int     wi[6];          /* wall super-indices (derived) */
79          char    *priv;          /* pointer to private client data */
80          BEAM    **bl;           /* beam pointers (memory cache) */
# Line 86 | Line 92 | typedef struct {
92  
93   #define bnrays(hp,i)    ((hp)->bl[i]!=NULL ? (hp)->bl[i]->nrm : (hp)->bi[i].nrd)
94  
95 < #define hdflush(hp)     (hdfreebeam(hp,0) && hdsync(hp,0))
96 < #define hdclobber(hp)   (hdkillbeam(hp,0) && hdsync(hp,0))
95 > #define hdflush(hp)     (hdfreebeam(hp,0), hdsync(hp,0))
96 > #define hdclobber(hp)   (hdkillbeam(hp,0), hdsync(hp,0))
97  
98   extern HOLO     *hdinit(), *hdalloc();
99   extern BEAM     *hdgetbeam();
# Line 98 | Line 104 | extern double  hdray(), hdinter();
104   extern unsigned hdcode();
105   extern int      hdfilord();
106  
107 + #define FF_NEVER        0               /* never free fragments */
108 + #define FF_WRITE        01              /* free fragment on write */
109 + #define FF_ALLOC        02              /* free fragment on ray alloc */
110 + #define FF_READ         04              /* free fragment on read */
111 + #define FF_KILL         010             /* free fragment on beam kill */
112 +
113 + extern int      hdfragflags;            /* tells when to free fragments */
114   extern unsigned hdcachesize;            /* target cache size (bytes) */
115   extern unsigned long    hdclock;        /* holodeck system clock */
116   extern HOLO     *hdlist[HDMAX+1];       /* holodeck pointers (NULL term.) */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines