ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/util/genBSDF.pl
(Generate patch)

Comparing ray/src/util/genBSDF.pl (file contents):
Revision 2.78 by greg, Mon Jun 19 03:45:57 2017 UTC vs.
Revision 2.92 by greg, Sun Dec 8 17:36:32 2024 UTC

# Line 13 | Line 13 | sub userror {
13          exit 1;
14   }
15   my ($td,$radscn,$mgfscn,$octree,$fsender,$bsender,$receivers,$facedat,$behinddat,$rmtmp);
16 < my ($tf,$rf,$tb,$rb,$tfx,$rfx,$tbx,$rbx,$tfz,$rfz,$tbz,$rbz,$cph);
16 > my ($tf,$rf,$tb,$rb,$tfx,$rfx,$tbx,$rbx,$tfz,$rfz,$tbz,$rbz);
17   my ($curphase, $recovery);
18   if ($#ARGV == 1 && "$ARGV[0]" =~ /^-rec/) {
19          $td = $ARGV[1];
# Line 57 | Line 57 | if ($windoz) {
57          $rfz = "$td\\rfz.dat";
58          $tbz = "$td\\tbz.dat";
59          $rbz = "$td\\rbz.dat";
60        $cph = "$td\\phase.txt";
60          $rmtmp = "rd /S /Q $td";
61   } else {
62          $radscn = "$td/device.rad";
# Line 80 | Line 79 | if ($windoz) {
79          $rfz = "$td/rfz.dat";
80          $tbz = "$td/tbz.dat";
81          $rbz = "$td/rbz.dat";
83        $cph = "$td/phase.txt";
82          $rmtmp = "rm -rf $td";
83   }
84   my @savedARGV = @ARGV;
# Line 165 | Line 163 | if ( !defined $recovery ) {
163                          ($tensortree==3 && !($doforw && $doback));
164          # Get scene description
165          if ( $mgfin ) {
166 <                system "mgf2rad @ARGV > $radscn";
166 >                my $mgfcv = $docolor ? "mgf2rad -s" : "mgf2rad";
167 >                system "$mgfcv @ARGV > $radscn";
168                  die "Could not load MGF input\n" if ( $? );
169          } else {
170                  system "xform -e @ARGV > $radscn";
# Line 190 | Line 189 | my $CIEuv =    'Xi=.5141*Ri+.3239*Gi+.1620*Bi;' .
189                  'Yi=.2651*Ri+.6701*Gi+.0648*Bi;' .
190                  'Zi=.0241*Ri+.1229*Gi+.8530*Bi;' .
191                  'den=Xi+15*Yi+3*Zi;' .
192 <                'uprime=4*Xi/den;vprime=9*Yi/den;' ;
192 >                'uprime=if(Yi,4*Xi/den,4/19);' .
193 >                'vprime=if(Yi,9*Yi/den,9/19);' ;
194   my $FEPS = 1e-5;
195   my $ns = 2**$ttlog2;
196   my $nx = int(sqrt($nsamp*($dim[1]-$dim[0])/($dim[3]-$dim[2])) + 1);
197   my $ny = int($nsamp/$nx + 1);
198   $nsamp = $nx * $ny;
199 < $rfluxmtx .= " -n $nproc -c $nsamp";
199 > $rfluxmtx .= " -n $nproc -c $nsamp -cs 3";
200   if ( !defined $recovery ) {
201          open(MYAVH, "> $td/savedARGV.txt");
202          foreach (@savedARGV) {
# Line 204 | Line 204 | if ( !defined $recovery ) {
204          }
205          close MYAVH;
206          # Generate octree
207 <        system "oconv -w -f $radscn > $octree";
207 >        system "oconv -w $radscn > $octree";
208          die "Could not compile scene\n" if ( $? );
209          # Add MGF description if requested
210          if ( $geout ) {
# Line 212 | Line 212 | if ( !defined $recovery ) {
212                  printf MGFSCN "xf -t %.6f %.6f 0\n", -($dim[0]+$dim[1])/2, -($dim[2]+$dim[3])/2;
213                  close MGFSCN;
214                  if ( $mgfin ) {
215 +                        die "+mgf requires input file with +geom\n" if ($#ARGV < 0);
216                          system qq{mgfilt "#,o,xf,c,cxy,cspec,cmix,m,sides,rd,td,rs,ts,ir,v,p,n,f,fh,sph,cyl,cone,prism,ring,torus" @ARGV >> $mgfscn};
217                  } else {
218                          system "rad2mgf $radscn >> $mgfscn";
# Line 322 | Line 323 | sub do_ttree_dir {
323                                  qq{| rcalc -e "r1=rand(.8681*recno-.673892)" } .
324                                  qq{-e "r2=rand(-5.37138*recno+67.1737811)" } .
325                                  qq{-e "r3=rand(+3.17603772*recno+83.766771)" } .
326 <                                qq{-e "Dx=1-2*(\$1+r1)/$ns;Dy:0;Dz=sqrt(1-Dx*Dx)" } .
326 >                                qq{-e "r4=rand(-1.5839226*recno-59.82712)" } .
327 >                                qq{-e "odds(n):if(.5*n-floor(.5*n)-.25,-1,1)"} .
328 >                                qq{-e "Dx=1-(\$1+r1)/$ns2" } .
329 >                                qq{-e "Dy=min(1/$ns,sqrt(1-Dx*Dx))*odds(\$1)*r2" } .
330 >                                qq{-e "Dz=sqrt(1-Dx*Dx-Dy*Dy)" } .
331                                  qq{-e "xp=(\$3+r2)*(($dim[1]-$dim[0])/$nx)+$dim[0]" } .
332                                  qq{-e "yp=(\$2+r3)*(($dim[3]-$dim[2])/$ny)+$dim[2]" } .
333                                  qq{-e "zp=$dim[5-$forw]" -e "myDz=Dz*($forw*2-1)" } .
# Line 334 | Line 339 | sub do_ttree_dir {
339                                  qq{| rcalc -e 'r1=rand(.8681*recno-.673892)' } .
340                                  qq{-e 'r2=rand(-5.37138*recno+67.1737811)' } .
341                                  qq{-e 'r3=rand(+3.17603772*recno+83.766771)' } .
342 <                                qq{-e 'Dx=1-2*(\$1+r1)/$ns;Dy:0;Dz=sqrt(1-Dx*Dx)' } .
343 <                                qq{-e 'xp=(\$3+r2)*(($dim[1]-$dim[0])/$nx)+$dim[0]' } .
344 <                                qq{-e 'yp=(\$2+r3)*(($dim[3]-$dim[2])/$ny)+$dim[2]' } .
342 >                                qq{-e 'r4=rand(-1.5839226*recno-59.82712)' } .
343 >                                qq{-e 'odds(n):if(.5*n-floor(.5*n)-.25,-1,1)' } .
344 >                                qq{-e 'Dx=1-(\$1+r1)/$ns2' } .
345 >                                qq{-e 'Dy=min(1/$ns,sqrt(1-Dx*Dx))*odds(\$1)*r2' } .
346 >                                qq{-e 'Dz=sqrt(1-Dx*Dx-Dy*Dy)' } .
347 >                                qq{-e 'xp=(\$3+r3)*(($dim[1]-$dim[0])/$nx)+$dim[0]' } .
348 >                                qq{-e 'yp=(\$2+r4)*(($dim[3]-$dim[2])/$ny)+$dim[2]' } .
349                                  qq{-e 'zp=$dim[5-$forw]' -e 'myDz=Dz*($forw*2-1)' } .
350                                  qq{-e '\$1=xp-Dx;\$2=yp-Dy;\$3=zp-myDz' } .
351                                  qq{-e '\$4=Dx;\$5=Dy;\$6=myDz' -of } .
# Line 427 | Line 436 | sub ttree_comp {
436                  }
437          }
438          if ($pctcull >= 0) {
439 <                my $avg = ( $dorecip && "$typ" =~ /^r[fb]/ ) ? " -a" : "";
439 >                my $avg = ( $dorecip && ( $tensortree == 3 || "$typ" =~ /^r[fb]/ ) ) ? " -a" : "";
440                  my $pcull = ("$spec" eq "Visible") ? $pctcull :
441                                                       (100 - (100-$pctcull)*.25) ;
442                  if ($windoz) {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines