ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/hd/rhd_qtree.h
Revision: 3.18
Committed: Fri Jan 7 20:33:02 2005 UTC (19 years, 3 months ago) by greg
Content type: text/plain
Branch: MAIN
CVS Tags: rad3R7P2, rad3R7P1, rad4R0, rad3R8, rad3R9
Changes since 3.17: +3 -1 lines
Log Message:
Modernized tone-mapping routines with structure pointer r.t. stack

File Contents

# Content
1 /* RCSid $Id: rhd_qtree.h,v 3.17 2004/01/01 11:21:55 schorsch Exp $ */
2 /*
3 * Quadtree data structures for holodeck display drivers.
4 */
5 #ifndef _RAD_RHD_QTREE_H_
6 #define _RAD_RHD_QTREE_H_
7
8 #include "color.h"
9 #include "tonemap.h"
10 #include "rhdriver.h"
11
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15
16 #define DL 0 /* down left */
17 #define DR 1 /* down right */
18 #define UL 2 /* up left */
19 #define UR 3 /* up right */
20
21 #define BRF(i) (0x1<<(i)) /* branch flag bit */
22 #define LFF(i) (0x10<<(i)) /* leaf flag bit */
23 #define CHF(i) (0x100<<(i)) /* change flag bit */
24 #define CHBRF(i) (0x101<<(i)) /* changed branch bit */
25 #define CHLFF(i) (0x110<<(i)) /* changed leaf bit */
26 #define BR_ANY 0xf /* flags for any branches */
27 #define LF_ANY 0xf0 /* flags for any leaves */
28 #define CH_ANY 0xf00 /* flags for any change */
29
30 typedef struct rtree {
31 short flgs; /* content flags (defined above) */
32 union {
33 struct rtree *b; /* if branch */
34 int li; /* if leaf */
35 } k[4]; /* children */
36 } RTREE;
37
38 extern struct rleaves {
39 float (*wp)[3]; /* world intersection point array */
40 int32 *wd; /* world direction array */
41 TMbright *brt; /* encoded brightness array */
42 BYTE (*chr)[3]; /* encoded chrominance array */
43 BYTE (*rgb)[3]; /* tone-mapped color array */
44 int nl; /* count of leaves in our pile */
45 int bl, tl; /* bottom and top (next) leaf index */
46 int tml; /* next leaf needing tone-mapping */
47 char *base; /* base of allocated memory */
48 } qtL; /* our pile of leaves */
49
50 #define is_stump(t) (!((t)->flgs & (BR_ANY|LF_ANY)))
51
52 extern RTREE qtrunk; /* trunk of quadtree */
53 extern double qtDepthEps; /* epsilon to compare depths (z fraction) */
54 extern int qtMinNodesiz; /* minimum node dimension (pixels) */
55
56 extern int rayqleft; /* number of rays to queue before flush */
57
58 extern TMstruct *tmGlobal; /* global tone-mapping structure */
59
60 /*
61 extern int32 encodedir();
62 extern double fdir2diff(), dir2diff();
63 */
64
65 /* rhd_qtree.c */
66 extern int qtAllocLeaves(register int n);
67 extern void qtFreeLeaves(void);
68 extern int qtCompost(int pct);
69 extern void qtReplant(void);
70 extern int qtFindLeaf(int x, int y);
71 extern int qtMapLeaves(int redo);
72 /* rhd_qtree2c.c rhd_qtree2r.c */
73 extern void qtRedraw(int x0, int y0, int x1, int y1);
74 extern void qtUpdate(void);
75
76 #ifdef __cplusplus
77 }
78 #endif
79 #endif /* _RAD_RHD_QTREE_H_ */
80