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

Comparing ray/src/cv/bsdf2ttree.c (file contents):
Revision 2.5 by greg, Fri Nov 9 02:16:29 2012 UTC vs.
Revision 2.10 by greg, Wed Dec 12 04:49:59 2012 UTC

# Line 16 | Line 16 | static const char RCSid[] = "$Id$";
16                                  /* global argv[0] */
17   char                    *progname;
18                                  /* percentage to cull (<0 to turn off) */
19 < int                     pctcull = 90;
19 > double                  pctcull = 90.;
20                                  /* sampling order */
21   int                     samp_order = 6;
22  
# Line 32 | Line 32 | interp_isotropic()
32          float           bsdf;
33   #if DEBUG
34          fprintf(stderr, "Writing isotropic order %d ", samp_order);
35 <        if (pctcull >= 0) fprintf(stderr, "data with %d%% culling\n", pctcull);
35 >        if (pctcull >= 0) fprintf(stderr, "data with %.1f%% culling\n", pctcull);
36          else fputs("raw data\n", stderr);
37   #endif
38          if (pctcull >= 0) {                     /* begin output */
39 <                sprintf(cmd, "rttree_reduce -h -a -ff -r 3 -t %d -g %d",
39 >                sprintf(cmd, "rttree_reduce -h -a -ff -r 3 -t %f -g %d",
40                                  pctcull, samp_order);
41                  fflush(stdout);
42                  ofp = popen(cmd, "w");
# Line 94 | Line 94 | interp_anisotropic()
94          float           bsdf;
95   #if DEBUG
96          fprintf(stderr, "Writing anisotropic order %d ", samp_order);
97 <        if (pctcull >= 0) fprintf(stderr, "data with %d%% culling\n", pctcull);
97 >        if (pctcull >= 0) fprintf(stderr, "data with %.1f%% culling\n", pctcull);
98          else fputs("raw data\n", stderr);
99   #endif
100          if (pctcull >= 0) {                     /* begin output */
101 <                sprintf(cmd, "rttree_reduce -h -a -ff -r 4 -t %d -g %d",
101 >                sprintf(cmd, "rttree_reduce -h -a -ff -r 4 -t %f -g %d",
102                                  pctcull, samp_order);
103                  fflush(stdout);
104                  ofp = popen(cmd, "w");
# Line 112 | Line 112 | interp_anisotropic()
112                                                  /* run through directions */
113          for (ix = 0; ix < sqres; ix++)
114              for (iy = 0; iy < sqres; iy++) {
115 <                RBFNODE *rbf;
115 >                RBFNODE *rbf;                   /* Klems reversal */
116                  SDsquare2disk(ivec, (ix+.5)/sqres, (iy+.5)/sqres);
117 +                ivec[0] = -ivec[0]; ivec[1] = -ivec[1];
118                  ivec[2] = input_orient *
119                                  sqrt(1. - ivec[0]*ivec[0] - ivec[1]*ivec[1]);
120                  rbf = advect_rbf(ivec);
# Line 145 | Line 146 | interp_anisotropic()
146   static void
147   xml_prologue(int ac, char *av[])
148   {
148        static const char       *prologue0[] = {
149 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>",
150 "<WindowElement xmlns=\"http://windows.lbl.gov\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://windows.lbl.gov/BSDF-v1.4.xsd\">",
151                                NULL};
152        static const char       *prologue1[] = {
153 "<WindowElementType>System</WindowElementType>",
154 "<FileType>BSDF</FileType>",
155 "<Optical>",
156 "<Layer>",
157 "\t<Material>",
158 "\t\t<Name>Name</Name>",
159 "\t\t<Manufacturer>Manufacturer</Manufacturer>",
160 "\t\t<DeviceType>Other</DeviceType>",
161 "\t</Material>",
162                                NULL};
163        static const char       *prologue2[] = {
164 "\t<WavelengthData>",
165 "\t\t<LayerNumber>System</LayerNumber>",
166 "\t\t<Wavelength unit=\"Integral\">Visible</Wavelength>",
167 "\t\t<SourceSpectrum>CIE Illuminant D65 1nm.ssp</SourceSpectrum>",
168 "\t\t<DetectorSpectrum>ASTM E308 1931 Y.dsp</DetectorSpectrum>",
169 "\t\t<WavelengthDataBlock>",
170 "\t\t\t<AngleBasis>LBNL/Shirley-Chiu</AngleBasis>",
171 "\t\t\t<ScatteringDataType>BTDF</ScatteringDataType>",
172                                NULL};
149          static const char       *bsdf_type[4] = {
150 <                                        "Reflection Back",
175 <                                        "Transmission Back",
150 >                                        "Reflection Front",
151                                          "Transmission Front",
152 <                                        "Reflection Front"
152 >                                        "Transmission Back",
153 >                                        "Reflection Back"
154                                  };
179        int                     i;
155  
156 <        for (i = 0; prologue0[i] != NULL; i++)
157 <                puts(prologue0[i]);
156 >        puts("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
157 >        puts("<WindowElement xmlns=\"http://windows.lbl.gov\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://windows.lbl.gov/BSDF-v1.4.xsd\">");
158          fputs("<!-- File produced by:", stdout);
159          while (ac-- > 0) {
160                  fputc(' ', stdout);
161                  fputs(*av++, stdout);
162          }
163          puts(" -->");
164 <        for (i = 0; prologue1[i] != NULL; i++)
165 <                puts(prologue1[i]);
164 >        puts("<WindowElementType>System</WindowElementType>");
165 >        puts("<FileType>BSDF</FileType>");
166 >        puts("<Optical>");
167 >        puts("<Layer>");
168 >        puts("\t<Material>");
169 >        puts("\t\t<Name>Name</Name>");
170 >        puts("\t\t<Manufacturer>Manufacturer</Manufacturer>");
171 >        puts("\t\t<DeviceType>Other</DeviceType>");
172 >        puts("\t</Material>");
173          puts("\t<DataDefinition>");
174          printf("\t\t<IncidentDataStructure>TensorTree%c</IncidentDataStructure>\n",
175                          single_plane_incident ? '3' : '4');
176          puts("\t</DataDefinition>");
177 <        for (i = 0; prologue2[i] != NULL; i++)
178 <                puts(prologue2[i]);
177 >        puts("\t<WavelengthData>");
178 >        puts("\t\t<LayerNumber>System</LayerNumber>");
179 >        puts("\t\t<Wavelength unit=\"Integral\">Visible</Wavelength>");
180 >        puts("\t\t<SourceSpectrum>CIE Illuminant D65 1nm.ssp</SourceSpectrum>");
181 >        puts("\t\t<DetectorSpectrum>ASTM E308 1931 Y.dsp</DetectorSpectrum>");
182 >        puts("\t\t<WavelengthDataBlock>");
183          printf("\t\t\t<WavelengthDataDirection>%s</WavelengthDataDirection>\n",
184 <                bsdf_type[(input_orient>0)<<1 | (output_orient>0)]);
184 >                        bsdf_type[(input_orient>0)<<1 | (output_orient>0)]);
185 >        puts("\t\t\t<AngleBasis>LBNL/Shirley-Chiu</AngleBasis>");
186 >        puts("\t\t\t<ScatteringDataType>BTDF</ScatteringDataType>");
187          puts("\t\t\t<ScatteringData>");
188   }
189  
# Line 203 | Line 191 | xml_prologue(int ac, char *av[])
191   static void
192   xml_epilogue(void)
193   {
194 <        static const char       *epilogue[] = {
195 < "\t\t\t</ScatteringData>",
196 < "\t\t</WavelengthDataBlock>",
197 < "\t</WavelengthData>",
198 < "</Layer>",
199 < "</Optical>",
212 < "</WindowElement>",
213 <                                NULL};
214 <        int                     i;
215 <
216 <        for (i = 0; epilogue[i] != NULL; i++)
217 <                puts(epilogue[i]);
194 >        puts("\t\t\t</ScatteringData>");
195 >        puts("\t\t</WavelengthDataBlock>");
196 >        puts("\t</WavelengthData>");
197 >        puts("</Layer>");
198 >        puts("</Optical>");
199 >        puts("</WindowElement>");
200   }
201  
202   /* Read in BSDF and interpolate as tensor tree representation */
# Line 228 | Line 210 | main(int argc, char *argv[])
210          for (i = 1; i < argc-1 && argv[i][0] == '-'; i++)
211                  switch (argv[i][1]) {           /* get option */
212                  case 't':
213 <                        pctcull = atoi(argv[++i]);
213 >                        pctcull = atof(argv[++i]);
214                          break;
215                  case 'g':
216                          samp_order = atoi(argv[++i]);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines