ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/rglmat.c
(Generate patch)

Comparing ray/src/common/rglmat.c (file contents):
Revision 3.1 by gwlarson, Tue Jun 9 11:18:35 1998 UTC vs.
Revision 3.7 by greg, Fri Feb 18 00:40:25 2011 UTC

# Line 1 | Line 1
1 /* Copyright (c) 1998 Silicon Graphics, Inc. */
2
1   #ifndef lint
2 < static char SCCSid[] = "$SunId$ SGI";
2 > static const char       RCSid[] = "$Id$";
3   #endif
6
4   /*
5   * Routines for Radiance -> OpenGL materials.
6   */
7  
8 + #include "copyright.h"
9 +
10   #include "radogl.h"
11  
13 extern int      free(), freemtl();
14
12   int     domats = 1;                     /* are we doing materials? */
13  
14 + extern lut_free_t       freemtl;
15 +
16   LUTAB   mtab = LU_SINIT(free,freemtl);
17  
18  
19 < rgl_matclear()                  /* clean up materials */
19 > void
20 > rgl_matclear(void)                      /* clean up materials */
21   {
22          lu_done(&mtab);
23          domats = 1;
# Line 25 | Line 25 | rgl_matclear()                 /* clean up materials */
25  
26  
27   MATREC *
28 < getmatp(nam)                    /* find material record for modifier name */
29 < char    *nam;
28 > getmatp(                        /* find material record for modifier name */
29 >        char    *nam
30 > )
31   {
32          register LUENT  *lup;
33  
# Line 38 | Line 39 | char   *nam;
39   }
40  
41  
42 < o_default(o)                    /* default object is non-material modifier */
43 < register OBJREC *o;
42 > int
43 > o_default(                      /* default object is non-material modifier */
44 >        register OBJREC *o
45 > )
46   {
47          register LUENT  *lup;
48   #ifdef DEBUG
# Line 58 | Line 61 | register OBJREC        *o;
61                  freemtl(lup->data);
62          if ((lup->data = o->os) != NULL)        /* make material reference */
63                  ((MATREC *)lup->data)->nlinks++;
64 <        return;
64 >        return(0);
65   memerr:
66          error(SYSTEM, "out of memory in o_default");
67 +        return(0);
68   }
69  
70  
71 + int
72 + o_unsupported(          /* unsupported object primitive */
73 +        OBJREC  *o
74 + )
75 + {
76 +        objerror(o, WARNING, "unsupported type");
77 +        return(0);
78 + }
79 +
80 +
81   MATREC *
82 < newmaterial(nam)                /* get an entry for a new material */
83 < char    *nam;
82 > newmaterial(            /* get an entry for a new material */
83 >        char    *nam
84 > )
85   {
86          register LUENT  *lup;
87                                          /* look it up (assign entry) */
# Line 86 | Line 101 | char   *nam;
101          return((MATREC *)lup->data);
102   memerr:
103          error(SYSTEM, "out of memory in newmaterial");
104 +        return NULL; /* pro forma return */
105   }
106  
107  
108 < freemtl(mp)                     /* free a material */
109 < register MATREC *mp;
108 > void
109 > freemtl(void *p)                /* free a material */
110   {
111 +        register MATREC *mp = (MATREC *)p;
112 +
113          if (!--mp->nlinks)
114 <                free((char *)mp);
114 >                free((void *)mp);
115   }
116  
117  
118 < m_normal(o)                     /* compute normal material parameters */
119 < register OBJREC *o;
118 > int
119 > m_normal(                       /* compute normal material parameters */
120 >        register OBJREC *o
121 > )
122   {
123          register MATREC *m;
124                                          /* check arguments */
# Line 125 | Line 145 | register OBJREC        *o;
145                  m->u.m.specexp = 2./(o->oargs.farg[4]*o->oargs.farg[4]);
146          if (m->u.m.specexp > MAXSPECEXP)
147                  m->u.m.specexp = MAXSPECEXP;
148 +        return(0);
149   }
150  
151  
152 < m_aniso(o)                      /* anisotropic material */
153 < register OBJREC *o;
152 > int
153 > m_aniso(                        /* anisotropic material */
154 >        register OBJREC *o
155 > )
156   {
157          register MATREC *m;
158                                          /* check arguments */
# Line 156 | Line 179 | register OBJREC        *o;
179                  m->u.m.specexp = 2./(o->oargs.farg[4]*o->oargs.farg[5]);
180          if (m->u.m.specexp > MAXSPECEXP)
181                  m->u.m.specexp = MAXSPECEXP;
182 +        return(0);
183   }
184  
185  
186 < m_glass(o)                      /* glass material (hopeless) */
187 < OBJREC  *o;
186 > int
187 > m_glass(                        /* glass material (hopeless) */
188 >        OBJREC  *o
189 > )
190   {
191          register MATREC *m;
192  
# Line 169 | Line 195 | OBJREC *o;
195          setcolor(m->u.m.ambdiff, 0., 0., 0.);
196          setcolor(m->u.m.specular, .08, .08, .08);
197          m->u.m.specexp = MAXSPECEXP;
198 +        return(0);
199   }
200  
201  
202 + int
203   m_brdf(o)                       /* convert functional material */
204   register OBJREC *o;
205   {
# Line 195 | Line 223 | register OBJREC        *o;
223                  scalecolor(m->u.m.ambdiff, 1.-o->oargs.farg[4]);
224          }
225          m->u.m.specexp = UNKSPECEXP;
226 +        return(0);
227   }
228  
229  
230 + int
231   m_brdf2(o)                      /* convert advanced functional material */
232   register OBJREC *o;
233   {
# Line 214 | Line 244 | register OBJREC        *o;
244                                          /* guess the rest */
245          setcolor(m->u.m.specular, .1, .1, .1);
246          m->u.m.specexp = UNKSPECEXP;
247 +        return(0);
248   }
249  
250  
251 + int
252   m_light(o)                      /* convert light type */
253   register OBJREC *o;
254   {
# Line 242 | Line 274 | register OBJREC        *o;
274                  m->u.l.spotdir[0] = m->u.l.spotdir[1] = 0.;
275                  m->u.l.spotdir[2] = -1.;
276          }
277 +        return(0);
278   }
279  
280  
281 + int
282   m_mirror(o)                     /* convert mirror type */
283   register OBJREC *o;
284   {
# Line 258 | Line 292 | register OBJREC        *o;
292          setcolor(m->u.m.specular, o->oargs.farg[0],
293                          o->oargs.farg[1], o->oargs.farg[2]);
294          m->u.m.specexp = MAXSPECEXP;
295 +        return(0);
296   }
297  
298  
299 + int
300   m_prism(o)                      /* convert prism type */
301   register OBJREC *o;
302   {
# Line 271 | Line 307 | register OBJREC        *o;
307          setcolor(m->u.m.ambdiff, 0.2, 0.2, 0.2);
308          setcolor(m->u.m.specular, 0.1, 0.1, 0.1);
309          m->u.m.specexp = UNKSPECEXP;
310 +        return(0);
311   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines