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

Comparing ray/src/rt/source.c (file contents):
Revision 2.14 by greg, Wed Jan 12 21:25:59 1994 UTC vs.
Revision 2.16 by greg, Tue Apr 25 19:51:38 1995 UTC

# Line 68 | Line 68 | marksources()                  /* find and mark source objects */
68                                  o->otype != OBJ_SOURCE &&
69                                  m->oargs.farg[3] <= FTINY)
70                          continue;                       /* don't bother */
71 +                if (m->oargs.farg[0] <= FTINY && m->oargs.farg[1] <= FTINY &&
72 +                                m->oargs.farg[2] <= FTINY)
73 +                        continue;                       /* don't bother */
74  
75                  if (sfun[o->otype].of == NULL ||
76                                  sfun[o->otype].of->setsrc == NULL)
# Line 152 | Line 155 | SRCINDEX  *si;                 /* source sample index */
155  
156  
157   srcvalue(r)                     /* punch ray to source and compute value */
158 < RAY  *r;
158 > register RAY  *r;
159   {
160          register SRCREC  *sp;
161  
# Line 161 | Line 164 | RAY  *r;
164                                          /* check intersection */
165                  if (!(*ofun[sp->so->otype].funp)(sp->so, r))
166                          return;
167 <                raycont(r);             /* compute contribution */
167 >                if (!rayshade(r, r->ro->omod))  /* compute contribution */
168 >                        goto nomat;
169                  return;
170          }
171                                          /* compute intersection */
# Line 169 | Line 173 | RAY  *r;
173                          (*ofun[sp->so->otype].funp)(sp->so, r)) {
174                  if (sp->sa.success >= 0)
175                          sp->sa.success++;
176 <                raycont(r);             /* compute contribution */
176 >                if (!rayshade(r, r->ro->omod))  /* compute contribution */
177 >                        goto nomat;
178                  return;
179          }
180 +                                        /* we missed our mark! */
181          if (sp->sa.success < 0)
182                  return;                 /* bitched already */
183          sp->sa.success -= AIMREQT;
# Line 180 | Line 186 | RAY  *r;
186          sprintf(errmsg, "aiming failure for light source \"%s\"",
187                          sp->so->oname);
188          error(WARNING, errmsg);         /* issue warning */
189 +        return;
190 + nomat:
191 +        objerror(r->ro, USER, "material not found");
192   }
193  
194  
# Line 318 | Line 327 | char  *p;                      /* data for f */
327                                  ( sr.ro != source[scp->sno].so ||
328                                  source[scp->sno].sflags & SFOLLOW )) {
329                                                  /* follow entire path */
330 <                        raycont(&sr);
330 >                        if (!raycont(&sr))
331 >                                objerror(sr.ro, USER, "material not found");
332                          if (trace != NULL)
333                                  (*trace)(&sr);  /* trace execution */
334                          if (bright(sr.rcol) <= FTINY)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines