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

Comparing ray/src/util/rtpict.pl (file contents):
Revision 2.18 by greg, Wed Apr 8 16:20:00 2020 UTC vs.
Revision 2.25 by greg, Tue Apr 12 00:30:58 2022 UTC

# Line 21 | Line 21 | my @boolO = ('-w', '-bv', '-dv', '-i', '-u');
21   # view options and the associated number of arguments
22   my %vwraysC = ('-vf',1, '-vtv',0, '-vtl',0, '-vth',0, '-vta',0, '-vts',0, '-vtc',0,
23                  '-x',1, '-y',1, '-vp',3, '-vd',3, '-vu',3, '-vh',1, '-vv',1,
24 <                '-vo',1, '-va',1, '-vs',1, '-vl',1, '-pa',1, '-pj',1);
24 >                '-vo',1, '-va',1, '-vs',1, '-vl',1, '-pa',1, '-pj',1, '-pd',1);
25   # options we need to silently ignore
26 < my %ignoreC = ('-t',1, '-ps',1, '-pt',1, '-pm',1, '-pd',1);
26 > my %ignoreC = ('-t',1, '-ps',1, '-pt',1, '-pm',1,);
27   # Starting options for rtrace (rpict values)
28   my @rtraceA = split(' ', 'rtrace -u- -dt .05 -dc .5 -ds .25 -dr 1 ' .
29                                  '-aa .2 -ar 64 -ad 512 -as 128 -lr 7 -lw 1e-03');
30 < my @vwraysA = ('vwrays', '-ff', '-pj', '.67');
30 > my @vwraysA = ('vwrays', '-pj', '.67');
31   my @vwrightA = ('vwright', '-vtv');
32   my @rpictA = ('rpict', '-ps', '1');
33   my $outpatt = '^-o[vrxlLRXnNsmM]+';
34   my $refDepth = "";
35   my $irrad = 0;
36   my $persist = 0;
37 + my $ambounce = 0;
38 + my $ambcache = 1;
39 + my $ambfile;
40   my $outlyr;
41   my $outdir;
42   my $outpic;
# Line 77 | Line 80 | while ($#ARGV >= 0 && "$ARGV[0]" =~ /^[-\@]/) {
80          }
81          # Check rtrace options
82          if (defined $rtraceC{$ARGV[0]}) {
83 <                $persist ||= ("$ARGV[0]" =~ /^-PP?$/);
83 >                if ("$ARGV[0]" =~ /^-PP?$/) {
84 >                        $persist = 1;
85 >                } elsif ("$ARGV[0]" eq '-ab') {
86 >                        $ambounce = $ARGV[1];
87 >                } elsif ("$ARGV[0]" eq '-aa') {
88 >                        $ambcache = ($ARGV[1] > 0.0);
89 >                } elsif ("$ARGV[0]" eq '-af') {
90 >                        $ambfile = "$ARGV[1]";
91 >                }
92                  push @rtraceA, $ARGV[0];
93                  push @rpictA, shift(@ARGV);
94                  for (my $i = $rtraceC{$rpictA[-1]}; $i-- > 0; ) {
# Line 139 | Line 150 | my $view = `@vwrightA 0`;
150   chomp $view;
151   my @res = split(/\s/, `@vwraysA -d`);
152   #####################################################################
153 + ##### Resort pixels to reduce ambient cache collisions?
154 + if ($nprocs > 1 && $ambounce > 0 && $ambcache && defined($ambfile)) {
155 +        if (!defined($outzbf) && !defined($outdir)) {
156 +                # Straight picture output, so just shuffle sample order
157 +                system "cnt -s $res[1] $res[3] > /tmp/ord$$.txt";
158 +                die "cnt error\n" if ( $? );
159 +                system "@vwraysA -ff -i < /tmp/ord$$.txt " .
160 +                        "| @rtraceA -ffa -ov '$oct' > /tmp/pix$$.txt";
161 +                die "Error running rtrace\n" if ( $? );
162 +                system "( getinfo < /tmp/pix$$.txt | getinfo -a 'VIEW=$view'; " .
163 +                        "getinfo - < /tmp/pix$$.txt | rlam /tmp/ord$$.txt - " .
164 +                        "| sort -k2rn -k1n ) | pvalue -r -Y $res[3] +X $res[1]";
165 +                die "rlam error\n" if ( $? );
166 +                unlink ("/tmp/ord$$.txt", "/tmp/pix$$.txt");
167 +                exit 0;
168 +        }
169 +        # Else randomize overture calculation to prime ambient cache
170 +        my @ores = (int($res[1]/6), int($res[3]/6));
171 +        print STDERR "Running $ores[0] by $ores[1] overture calculation " .
172 +                        "to populate '$ambfile'...\n";
173 +        system "cnt -s @ores | @vwraysA -i -ff -x $ores[0] -y $ores[1] -pj 0 " .
174 +                "| @rtraceA -ff -ov '$oct' > /dev/null";
175 +        die "Failure running overture\n" if ( $? );
176 +        print STDERR "Finished overture.\n";
177 + }
178 + #####################################################################
179   ##### Generating picture with depth buffer?
180   if (defined $outzbf) {
181 <        exec "@vwraysA | @rtraceA -fff -olv @res '$oct' | " .
181 >        exec "@vwraysA -ff | @rtraceA -fff -olv @res '$oct' | " .
182                  "rsplit -ih -iH -f -of '$outzbf' -oh -oH -of3 - | " .
183                  "pvalue -r -df | getinfo -a 'VIEW=$view'";
184   }
185   #####################################################################
186   ##### Base case with output picture only?
187   if (! defined $outdir) {
188 <        exec "@vwraysA | @rtraceA -ffc @res '$oct' | getinfo -a 'VIEW=$view'";
188 >        exec "@vwraysA -ff | @rtraceA -ffc @res '$oct' | getinfo -a 'VIEW=$view'";
189   }
190   #####################################################################
191   ##### Layered image output case
# Line 197 | Line 234 | foreach my $oval (split //, $outlyr) {
234          delete $rtoutC{$oval};
235   }
236                          # call rtrace + rsplit
237 < exec "@vwraysA | @rtraceA -fff @res '$oct' | getinfo -a 'VIEW=$view' | @rsplitA";
237 > exec "@vwraysA -ff | @rtraceA -fff @res '$oct' | getinfo -a 'VIEW=$view' | @rsplitA";

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines