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

Comparing ray/src/rt/renderopts.c (file contents):
Revision 2.22 by greg, Tue Aug 15 01:19:37 2023 UTC vs.
Revision 2.28 by greg, Tue Apr 22 18:08:48 2025 UTC

# Line 10 | Line 10 | static const char      RCSid[] = "$Id$";
10   #include "copyright.h"
11  
12   #include  "ray.h"
13 + #include  "func.h"
14   #include  "paths.h"
15   #include  "pmapopt.h"
16  
# Line 23 | Line 24 | char   RFeatureList[2048] =    /* newline-separated feature
24                  "ScatteringModels=WGMD,Ashikhmin-Shirley\n"
25                  "TabulatedBSDFs=DataFile,KlemsXML,TensorTreeXML,+ViewPeakExtraction\n"
26                  "Instancing=Octree,TriangleMesh\nAliases\n"
27 + #if MAXCSAMP>3
28 +                "Hyperspectral\n"
29 + #endif
30   #if !defined(SHADCACHE) || SHADCACHE > 0
31                  "ShadowCache\n"
32   #endif
# Line 72 | Line 76 | match_subfeatures(     /* check if subfeatures are support
76                  while (*reqs && (*cp = *reqs++) != ',')
77                          cp++;
78                  *cp = '\0';
79 <                n = cp - subfeat;
80 <                if (!(cp = strstr(mysublist, subfeat)) ||
81 <                                (cp[-1] != ',') & (cp[-1] != '=') ||
82 <                                (cp[n] != ',') & (cp[n] != '\n'))
79 >                if (!(n = cp - subfeat))
80 >                        continue;       /* empty subfeature */
81 >                for (cp = mysublist; (cp = strstr(cp, subfeat)) != NULL; cp++)
82 >                        if ((cp[-1] == ',') | (cp[-1] == '=') &&
83 >                                        (cp[n] == ',') | (cp[n] == '\n'))
84 >                                break;  /* match */
85 >                if (!cp)
86                          return(0);      /* missing this one! */
87          }
88          return(1);                      /* matched them all */
# Line 307 | Line 314 | getrenderopt(          /* get next render option */
314                          return(1);
315                  }
316                  break;
317 +        case 'f':                               /* .cal file */
318 +                check(2,"s");
319 +                loadfunc(av[1]);
320 +                return(1);
321 +        case 'e':                               /* .cal expression */
322 +                check(2,"s");
323 +                if (!strchr(av[1], '=') && !strchr(av[1], ':'))
324 +                        break;
325 +                scompile(av[1], NULL, 0);
326 +                return(1);
327 + #if MAXCSAMP>3
328 +        case 'c':                               /* spectral sampling */
329 +                switch (av[0][2]) {
330 +                case 's':                       /* spectral bin count */
331 +                        check(3,"i");
332 +                        NCSAMP = atoi(av[1]);
333 +                        return(1);
334 +                case 'w':                       /* wavelength extrema */
335 +                        check(3,"ff");
336 +                        WLPART[0] = atof(av[1]);
337 +                        WLPART[3] = atof(av[2]);
338 +                        return(2);
339 +                }
340 +                break;
341 + #endif
342          }
343          
344          /* PMAP: Parse photon mapping options */
# Line 354 | Line 386 | print_rdefaults(void)          /* print default render values
386                          colval(salbedo,GRN), colval(salbedo,BLU));
387          printf("-mg %f\t\t\t# mist scattering eccentricity\n", seccg);
388          printf("-ms %f\t\t\t# mist sampling distance\n", ssampdist);
389 +        if (NCSAMP > 3) {
390 +                printf("-cs %-2d\t\t\t\t# number of spectral bins\n", NCSAMP);
391 +                printf("-cw %3.0f %3.0f\t\t\t# wavelength limits (nm)\n",
392 +                                WLPART[3], WLPART[0]);
393 +        }
394          printf("-lr %-9d\t\t\t# limit reflection%s\n", maxdepth,
395                          maxdepth<=0 ? " (Russian roulette)" : "");
396          printf("-lw %.2e\t\t\t# limit weight\n", minweight);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines