ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/radogl.h
Revision: 3.6
Committed: Wed Apr 23 02:28:06 2003 UTC (21 years ago) by greg
Content type: text/plain
Branch: MAIN
Changes since 3.5: +2 -0 lines
Log Message:
Added check for mesh primitive and warning when encountered

File Contents

# Content
1 /* RCSid $Id$ */
2 /*
3 * Header file for Radiance - OpenGL routines.
4 */
5
6 #include "copyright.h"
7
8 #include "standard.h"
9 #include <GL/glu.h>
10 #include "color.h"
11 #include "object.h"
12 #include "otypes.h"
13 #include "lookup.h"
14
15 #define MAXLIGHTS 8 /* number of OGL light sources */
16
17 #define MAXSPECEXP 128. /* maximum allowed specular exponent */
18 #define UNKSPECEXP 25. /* value to use when exponent unknown */
19
20 typedef struct {
21 short type; /* material type (from otypes.h) */
22 short nlinks; /* number of links to this material */
23 union {
24 struct {
25 COLOR ambdiff; /* ambient and diffuse color */
26 COLOR specular; /* specular color */
27 GLfloat specexp; /* specular exponent */
28 } m; /* regular material */
29 struct {
30 COLOR emission; /* emitting component */
31 GLfloat spotdir[3]; /* spot direction */
32 GLfloat spotang; /* spot cutoff angle */
33 } l; /* light source */
34 } u; /* union of types */
35 } MATREC; /* OGL material properties */
36
37 extern double expval; /* global exposure value */
38 extern COLOR ambval; /* global ambient value */
39 extern int glightid[MAXLIGHTS]; /* OpenGL GL_LIGHTi values */
40 extern int dolights; /* are we outputting light sources? */
41 extern int domats; /* are we doing materials? */
42
43 extern LUTAB mtab; /* material/modifier lookup table */
44
45 #define issrcmat(m) ((m) != NULL && islight((m)->type) && \
46 (m)->type != MAT_GLOW)
47
48 #ifdef NOPROTO
49
50 extern void domatobj();
51 extern void domatvert();
52 extern int newglist();
53 extern void rgl_checkerr();
54 extern int rgl_filelist();
55 extern int rgl_octlist();
56 extern void rgl_load();
57 extern void rgl_object();
58 extern int o_instance();
59 extern int loadoctrees();
60 extern double checkoct();
61 extern int loadoct();
62 extern void rgl_matclear();
63 extern MATREC *getmatp();
64 extern int o_default();
65 extern int o_unsupported();
66 extern MATREC *newmaterial();
67 extern void freemtl();
68 extern int m_normal();
69 extern int m_aniso();
70 extern int m_glass();
71 extern int m_brdf();
72 extern int m_brdf2();
73 extern int m_light();
74 extern int m_mirror();
75 extern int m_prism();
76 extern void lightinit();
77 extern void lightclean();
78 extern void lightdefs();
79 extern int o_source();
80 extern int doflatsrc();
81 extern int dosphsrc();
82 extern void setmaterial();
83 extern double polyarea();
84 extern int o_face();
85 extern void surfclean();
86 extern int o_sphere();
87 extern int o_cone();
88 extern int o_ring();
89
90 #else
91 /* defined in rgldomat.c */
92 extern void domatobj(MATREC *mp, FVECT cent);
93 extern void domatvert(MATREC *mp, FVECT v, FVECT n);
94 /* defined in rglfile.c */
95 extern int newglist(void);
96 extern void rgl_checkerr(char *where);
97 extern int rgl_filelist(int ic, char **inp, int *nl);
98 extern int rgl_octlist(char *fname, FVECT cent, FLOAT *radp, int *nl);
99 extern void rgl_load(char *inpspec);
100 extern void rgl_object(char *name, FILE *fp);
101 /* defined in rglinst.c */
102 extern int o_instance(OBJREC *o);
103 extern int loadoctrees(void);
104 extern double checkoct(char *fname, FVECT cent);
105 extern int loadoct(char *fname);
106 /* defined in rglmat.c */
107 extern void rgl_matclear(void);
108 extern MATREC *getmatp(char *nam);
109 extern int o_default(OBJREC *o);
110 extern int o_unsupported(OBJREC *o);
111 extern MATREC *newmaterial(char *nam);
112 extern void freemtl(MATREC *mp);
113 extern int m_normal(OBJREC *o);
114 extern int m_aniso(OBJREC *o);
115 extern int m_glass(OBJREC *o);
116 extern int m_brdf(OBJREC *o);
117 extern int m_brdf2(OBJREC *o);
118 extern int m_light(OBJREC *o);
119 extern int m_mirror(OBJREC *o);
120 extern int m_prism(OBJREC *o);
121 /* defined in rglsrc.c */
122 extern void lightinit(void);
123 extern void lightclean(void);
124 extern void lightdefs(void);
125 extern int o_source(OBJREC *o);
126 extern int doflatsrc(MATREC *m, FVECT pos, FVECT norm, double area);
127 extern int dosphsrc(MATREC *m, FVECT pos, double area);
128 /* defined in rglsurf.c */
129 extern void setmaterial(MATREC *mp, FVECT cent, int ispoly);
130 extern double polyarea(FVECT cent, FVECT norm, int n, FVECT v[]);
131 extern int o_face(OBJREC *o);
132 extern void surfclean(void);
133 extern int o_sphere(OBJREC *o);
134 extern int o_cone(OBJREC *o);
135 extern int o_ring(OBJREC *o);
136
137 #endif