--- ray/src/util/genBSDF.pl 2017/05/31 17:25:21 2.76 +++ ray/src/util/genBSDF.pl 2020/05/05 22:35:58 2.85 @@ -1,5 +1,5 @@ #!/usr/bin/perl -w -# RCSid $Id: genBSDF.pl,v 2.76 2017/05/31 17:25:21 greg Exp $ +# RCSid $Id: genBSDF.pl,v 2.85 2020/05/05 22:35:58 greg Exp $ # # Compute BSDF based on geometry and material description # @@ -116,7 +116,7 @@ while ($#ARGV >= 0) { shift @ARGV; } elsif ("$ARGV[0]" =~ /^[-+]C/) { $docolor = ("$ARGV[0]" =~ /^\+/); - } elsif $("$ARGV[0" =~ /^[-+]a/) { + } elsif ("$ARGV[0]" =~ /^[-+]a/) { $dorecip = ("$ARGV[0]" =~ /^\+/); } elsif ("$ARGV[0]" =~ /^[-+]f/) { $doforw = ("$ARGV[0]" =~ /^\+/); @@ -190,7 +190,8 @@ my $CIEuv = 'Xi=.5141*Ri+.3239*Gi+.1620*Bi;' . 'Yi=.2651*Ri+.6701*Gi+.0648*Bi;' . 'Zi=.0241*Ri+.1229*Gi+.8530*Bi;' . 'den=Xi+15*Yi+3*Zi;' . - 'uprime=4*Xi/den;vprime=9*Yi/den;' ; + 'uprime=if(Yi,4*Xi/den,4/19);' . + 'vprime=if(Yi,9*Yi/den,9/19);' ; my $FEPS = 1e-5; my $ns = 2**$ttlog2; my $nx = int(sqrt($nsamp*($dim[1]-$dim[0])/($dim[3]-$dim[2])) + 1); @@ -204,7 +205,7 @@ if ( !defined $recovery ) { } close MYAVH; # Generate octree - system "oconv -w -f $radscn > $octree"; + system "oconv -w $radscn > $octree"; die "Could not compile scene\n" if ( $? ); # Add MGF description if requested if ( $geout ) { @@ -322,7 +323,11 @@ sub do_ttree_dir { qq{| rcalc -e "r1=rand(.8681*recno-.673892)" } . qq{-e "r2=rand(-5.37138*recno+67.1737811)" } . qq{-e "r3=rand(+3.17603772*recno+83.766771)" } . - qq{-e "Dx=1-2*(\$1+r1)/$ns;Dy:0;Dz=sqrt(1-Dx*Dx)" } . + qq{-e "r4=rand(-1.5839226*recno-59.82712)" } . + qq{-e "odds(n):if(.5*n-floor(.5*n)-.25,-1,1)"} . + qq{-e "Dx=1-(\$1+r1)/$ns2" } . + qq{-e "Dy=odds(\$1)/$ns*r2" } . + qq{-e "Dz=sqrt(1-Dx*Dx-Dy*Dy)" } . qq{-e "xp=(\$3+r2)*(($dim[1]-$dim[0])/$nx)+$dim[0]" } . qq{-e "yp=(\$2+r3)*(($dim[3]-$dim[2])/$ny)+$dim[2]" } . qq{-e "zp=$dim[5-$forw]" -e "myDz=Dz*($forw*2-1)" } . @@ -334,9 +339,13 @@ sub do_ttree_dir { qq{| rcalc -e 'r1=rand(.8681*recno-.673892)' } . qq{-e 'r2=rand(-5.37138*recno+67.1737811)' } . qq{-e 'r3=rand(+3.17603772*recno+83.766771)' } . - qq{-e 'Dx=1-2*(\$1+r1)/$ns;Dy:0;Dz=sqrt(1-Dx*Dx)' } . - qq{-e 'xp=(\$3+r2)*(($dim[1]-$dim[0])/$nx)+$dim[0]' } . - qq{-e 'yp=(\$2+r3)*(($dim[3]-$dim[2])/$ny)+$dim[2]' } . + qq{-e 'r4=rand(-1.5839226*recno-59.82712)' } . + qq{-e 'odds(n):if(.5*n-floor(.5*n)-.25,-1,1)' } . + qq{-e 'Dx=1-(\$1+r1)/$ns2' } . + qq{-e 'Dy=odds(\$1)/$ns*r2' } . + qq{-e 'Dz=sqrt(1-Dx*Dx-Dy*Dy)' } . + qq{-e 'xp=(\$3+r3)*(($dim[1]-$dim[0])/$nx)+$dim[0]' } . + qq{-e 'yp=(\$2+r4)*(($dim[3]-$dim[2])/$ny)+$dim[2]' } . qq{-e 'zp=$dim[5-$forw]' -e 'myDz=Dz*($forw*2-1)' } . qq{-e '\$1=xp-Dx;\$2=yp-Dy;\$3=zp-myDz' } . qq{-e '\$4=Dx;\$5=Dy;\$6=myDz' -of } .