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

Comparing ray/src/rt/virtuals.c (file contents):
Revision 2.20 by greg, Fri Sep 14 13:34:02 2012 UTC vs.
Revision 2.25 by greg, Fri Feb 12 00:41:19 2021 UTC

# Line 11 | Line 11 | static const char      RCSid[] = "$Id$";
11   #include "copyright.h"
12  
13   #include  "ray.h"
14
14   #include  "otypes.h"
15 <
15 > #include  "otspecial.h"
16   #include  "source.h"
18
17   #include  "random.h"
18  
19   #define  MINSAMPLES     16              /* minimum number of pretest samples */
20   #define  STESTMAX       32              /* maximum seeks per sample */
21  
24 #define FEQ(a,b)        ((a)-(b)+FTINY >= 0 && (b)-(a)+FTINY >= 0)
22  
26
23   static OBJECT  *vobject;                /* virtual source objects */
24   static int  nvobjects = 0;              /* number of virtual source objects */
25  
# Line 35 | Line 31 | isident4(MAT4 m)
31  
32          for (i = 4; i--; )
33                  for (j = 4; j--; )
34 <                        if (!FEQ(m[i][j], i==j))
34 >                        if (!FABSEQ(m[i][j], i==j))
35                                  return(0);
36          return(1);
37   }
# Line 141 | Line 137 | vsmaterial(                    /* get virtual source material pointer *
137          OBJREC  *m;
138  
139          i = o->omod;
140 <        m = findmaterial(objptr(i));
140 >        m = findmaterial(o);
141          if (m == NULL)
142                  return(objptr(i));
143          if (m->otype != MAT_ILLUM || m->oargs.nsargs < 1 ||
# Line 324 | Line 320 | vstestvis(             /* pretest source visibility */
320   {
321          RAY  sr;
322          FVECT  onorm;
323 <        FVECT  offsdir;
323 >        double  offsdir[3];
324          SRCINDEX  si;
325          double  or, d, d1;
326          int  stestlim, ssn;
# Line 340 | Line 336 | vstestvis(             /* pretest source visibility */
336                                          /* 32. == heuristic constant */
337                  n = 32.*or2/(thescene.cusize*thescene.cusize)*vspretest + .5;
338          } else {
339 <                for (i = 0; i < 3; i++)
344 <                        offsdir[i] = source[sn].sloc[i] - oc[i];
339 >                VSUB(offsdir, source[sn].sloc, oc);
340                  d = DOT(offsdir,offsdir);
341                  if (d <= FTINY)
342                          n = 2.*PI * vspretest + .5;
# Line 377 | Line 372 | vstestvis(             /* pretest source visibility */
372                                  sr.rorg[i] = oc[i] + offsdir[i] + d*onorm[i];
373                                  sr.rdir[i] = -onorm[i];
374                          }
375 +                        sr.rmax = 0.0;
376                          rayorigin(&sr, PRIMARY, NULL, NULL);
377                  } while (!(*ofun[o->otype].funp)(o, &sr));
378                                          /* check against source */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines