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

# User Rev Content
1 greg 3.5 /* RCSid $Id$ */
2 gwlarson 3.1 /*
3     * Header file for Radiance - OpenGL routines.
4     */
5    
6 greg 3.5 #include "copyright.h"
7 greg 3.4
8 gwlarson 3.1 #include "standard.h"
9 gwlarson 3.3 #include <GL/glu.h>
10 gwlarson 3.1 #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 gwlarson 3.2 extern int glightid[MAXLIGHTS]; /* OpenGL GL_LIGHTi values */
40 gwlarson 3.1 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 greg 3.4 #define issrcmat(m) ((m) != NULL && islight((m)->type) && \
46     (m)->type != MAT_GLOW)
47    
48     #ifdef NOPROTO
49 gwlarson 3.1
50 greg 3.4 extern void domatobj();
51     extern void domatvert();
52 gwlarson 3.1 extern int newglist();
53 greg 3.4 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 gwlarson 3.1 extern double checkoct();
61 greg 3.4 extern int loadoct();
62     extern void rgl_matclear();
63     extern MATREC *getmatp();
64     extern int o_default();
65 greg 3.6 extern int o_unsupported();
66 greg 3.4 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 greg 3.6 extern int o_unsupported(OBJREC *o);
111 greg 3.4 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 gwlarson 3.1
137 greg 3.4 #endif