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.93 by greg, Sun Dec 8 18:16:28 2024 UTC vs.
Revision 2.96 by greg, Thu Jun 19 22:03:37 2025 UTC

# Line 163 | Line 163 | if ( !defined $recovery ) {
163                          ($tensortree==3 && !($doforw && $doback));
164          # Get scene description
165          if ( $mgfin ) {
166 <                system "mgf2rad @ARGV > $radscn";
166 >                system "mgf2rad -s @ARGV > $radscn";
167                  die "Could not load MGF input\n" if ( $? );
168          } else {
169                  system "xform -e @ARGV > $radscn";
# Line 184 | Line 184 | $wrapper .= ' -f "t=' . (-$dim[4]) . ';w=' . ($dim[1]
184                  ';h=' . ($dim[3] - $dim[2]) . '"';
185   $wrapper .= " -g $mgfscn" if ( $geout );
186   # Calculate CIE (u',v') from Radiance RGB:
187 < my $CIEuv =     'Xi=.5141*Ri+.3239*Gi+.1620*Bi;' .
188 <                'Yi=.2651*Ri+.6701*Gi+.0648*Bi;' .
189 <                'Zi=.0241*Ri+.1229*Gi+.8530*Bi;' .
190 <                'den=Xi+15*Yi+3*Zi;' .
187 > my $CIEuv =     'den=Xi+15*Yi+3*Zi;' .
188                  'uprime=if(Yi,4*Xi/den,4/19);' .
189                  'vprime=if(Yi,9*Yi/den,9/19);' ;
190   my $FEPS = 1e-5;
# Line 195 | Line 192 | my $ns = 2**$ttlog2;
192   my $nx = int(sqrt($nsamp*($dim[1]-$dim[0])/($dim[3]-$dim[2])) + 1);
193   my $ny = int($nsamp/$nx + 1);
194   $nsamp = $nx * $ny;
195 < $rfluxmtx .= " -n $nproc -c $nsamp -cs 3";
195 > $rfluxmtx .= " -n $nproc -c $nsamp";
196   if ( !defined $recovery ) {
197          open(MYAVH, "> $td/savedARGV.txt");
198          foreach (@savedARGV) {
# Line 260 | Line 257 | if ( $tensortree ) {
257          do_matrix_bsdf();
258   }
259   # Output XML
260 < # print STDERR "Running: $wrapper\n";
260 > print STDERR "Running: $wrapper\n";
261   system "$wrapper -C \"Created by: genBSDF @savedARGV\"";
262   die "Could not wrap BSDF data\n" if ( $? );
263   # Clean up temporary files and exit
264 + exit;
265   exec $rmtmp;
266  
267   #============== End of main program segment ==============#
# Line 294 | Line 292 | sub active_phase {
292   sub run_check {
293          if ( !active_phase() ) { return; }
294          my $cmd = shift;
295 <        # print STDERR "Running: $cmd\n";
295 >        print STDERR "Running: $cmd\n";
296          system $cmd;
297          die "Failure running: $cmd\n" if ( $? );
298   }
# Line 348 | Line 346 | sub do_ttree_dir {
346                                  qq{-e 'zp=$dim[5-$forw]' -e 'myDz=Dz*($forw*2-1)' } .
347                                  qq{-e '\$1=xp-Dx;\$2=yp-Dy;\$3=zp-myDz' } .
348                                  qq{-e '\$4=Dx;\$5=Dy;\$6=myDz' -of } .
349 <                                "| $rfluxmtx$r -h -ff -y $ns2 - $receivers -i $octree";
349 >                                "| $rfluxmtx$r -ff -y $ns2 - $receivers -i $octree";
350                  }
351          } else {
352                  # Anisotropic BSDF
# Line 356 | Line 354 | sub do_ttree_dir {
354                  if ($windoz) {
355                          $cmd = "$rfluxmtx$r -fa $sender $receivers -i $octree";
356                  } else {
357 <                        $cmd = "$rfluxmtx$r -h -ff $sender $receivers -i $octree";
357 >                        $cmd = "$rfluxmtx$r -ff $sender $receivers -i $octree";
358                  }
359          }
360          if ( $dop ) {
361 <                # print STDERR "Running: $cmd\n";
361 >                print STDERR "Running: $cmd\n";
362                  system $cmd;
363                  die "Failure running rfluxmtx" if ( $? );
364          }
# Line 404 | Line 402 | sub ttree_comp {
402          my $dest = shift;
403          my $cmd;
404          if ($windoz) {
405 +                $cmd = "rcomb -fa -c xyz $src | rcollate -ho -oc 1" .
406 +                                q{ | rcalc -e "Xi=$1;Yi=$2;Zi=$3" };
407                  if ("$spec" eq "Visible") {
408 <                        $cmd = qq{rcalc -e "Omega:PI/($ns*$ns)" } .
409 <                                q{-e "Ri=$1;Gi=$2;Bi=$3" } .
410 <                                qq{-e "$CIEuv" } .
408 >                        $cmd .= qq{-e "Omega:PI/($ns*$ns)" } .
409                                  q{-e "$1=Yi/Omega"};
410                  } elsif ("$spec" eq "CIE-u") {
411 <                        $cmd = q{rcalc -e "Ri=$1;Gi=$2;Bi=$3" } .
414 <                                qq{-e "$CIEuv" } .
411 >                        $cmd .= qq{-e "$CIEuv" } .
412                                  q{-e "$1=uprime"};
413                  } elsif ("$spec" eq "CIE-v") {
414 <                        $cmd = q{rcalc -e "Ri=$1;Gi=$2;Bi=$3" } .
418 <                                qq{-e "$CIEuv" } .
414 >                        $cmd .= qq{-e "$CIEuv" } .
415                                  q{-e "$1=vprime"};
416                  }
417          } else {
418 +                $cmd = "rcomb -ff -c xyz $src | getinfo -" .
419 +                                q{ | rcalc -if3 -of -e 'Xi=$1;Yi=$2;Zi=$3' };
420                  if ("$spec" eq "Visible") {
421 <                        $cmd = "rcalc -if3 -e 'Omega:PI/($ns*$ns)' " .
424 <                                q{-e 'Ri=$1;Gi=$2;Bi=$3' } .
425 <                                "-e '$CIEuv' " .
421 >                        $cmd .= "-e 'Omega:PI/($ns*$ns)' " .
422                                  q{-e '$1=Yi/Omega'};
423                  } elsif ("$spec" eq "CIE-u") {
424 <                        $cmd = q{rcalc -if3 -e 'Ri=$1;Gi=$2;Bi=$3' } .
429 <                                "-e '$CIEuv' " .
424 >                        $cmd .= "-e '$CIEuv' " .
425                                  q{-e '$1=uprime'};
426                  } elsif ("$spec" eq "CIE-v") {
427 <                        $cmd = q{rcalc -if3 -e 'Ri=$1;Gi=$2;Bi=$3' } .
433 <                                "-e '$CIEuv' " .
427 >                        $cmd .= "-e '$CIEuv' " .
428                                  q{-e '$1=vprime'};
429                  }
430          }
# Line 439 | Line 433 | sub ttree_comp {
433                  my $pcull = ("$spec" eq "Visible") ? $pctcull :
434                                                       (100 - (100-$pctcull)*.25) ;
435                  if ($windoz) {
436 <                        $cmd = "rcollate -ho -oc 1 $src | " .
443 <                                        $cmd .
444 <                                        " | rttree_reduce$avg -h -fa -t $pcull -r $tensortree -g $ttlog2";
436 >                        $cmd .= " | rttree_reduce$avg -h -fa -t $pcull -r $tensortree -g $ttlog2";
437                  } else {
438 <                        $cmd .= " -of $src " .
447 <                                        "| rttree_reduce$avg -h -ff -t $pcull -r $tensortree -g $ttlog2";
438 >                        $cmd .= " | rttree_reduce$avg -h -ff -t $pcull -r $tensortree -g $ttlog2";
439                  }
440                  run_check "$cmd > $dest";
441          } else {
451                if ($windoz) {
452                        $cmd = "rcollate -ho -oc 1 $src | " . $cmd ;
453                } else {
454                        $cmd .= " $src";
455                }
442                  if ( active_phase() ) {
443                          open(DATOUT, "> $dest");
444                          print DATOUT "{\n";
445                          close DATOUT;
446 <                        # print STDERR "Running: $cmd\n";
446 >                        print STDERR "Running: $cmd\n";
447                          system "$cmd >> $dest";
448                          die "Failure running rcalc" if ( $? );
449                          open(DATOUT, ">> $dest");
# Line 492 | Line 478 | sub do_matrix_dir {
478          my $dop = do_phase();
479          my $r = ($dop < 0) ? " -r" : "";
480          my $sender = ($bsender,$fsender)[$forw];
481 <        my $cmd = "$rfluxmtx$r -fd $sender $receivers -i $octree";
481 >        my $cmd = "$rfluxmtx$r -ff $sender $receivers -i $octree";
482          if ( $dop ) {
483 <                # print STDERR "Running: $cmd\n";
483 >                print STDERR "Running: $cmd\n";
484                  system $cmd;
485                  die "Failure running rfluxmtx" if ( $? );
486          }
# Line 535 | Line 521 | sub matrix_comp {
521          my $dest = shift;
522          my $cmd = "rmtxop -fa -t";
523          if ("$spec" eq "Visible") {
524 <                $cmd .= " -c 0.2651 0.6701 0.0648";
524 >                $cmd .= " -c y";
525          } elsif ("$spec" eq "CIE-X") {
526 <                $cmd .= " -c 0.5141 0.3239 0.1620";
526 >                $cmd .= " -c x";
527          } elsif ("$spec" eq "CIE-Z") {
528 <                $cmd .= " -c 0.0241 0.1229 0.8530";
528 >                $cmd .= " -c z";
529          }
530          $cmd .= " $src | getinfo -";
531          run_check "$cmd > $dest";

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines