11 |
|
|
12 |
|
#include "ray.h" |
13 |
|
#include "paths.h" |
14 |
+ |
#include "pmapopt.h" |
15 |
|
|
16 |
|
|
17 |
|
int |
23 |
|
#define check(ol,al) if (av[0][ol] || \ |
24 |
|
badarg(ac-1,av+1,al)) \ |
25 |
|
return(-1) |
26 |
< |
#define bool(olen,var) switch (av[0][olen]) { \ |
26 |
> |
#define check_bool(olen,var) switch (av[0][olen]) { \ |
27 |
|
case '\0': var = !var; break; \ |
28 |
|
case 'y': case 'Y': case 't': case 'T': \ |
29 |
|
case '+': case '1': var = 1; break; \ |
38 |
|
/* check if it's one we know */ |
39 |
|
switch (av[0][1]) { |
40 |
|
case 'u': /* uncorrelated sampling */ |
41 |
< |
bool(2,rand_samp); |
41 |
> |
check_bool(2,rand_samp); |
42 |
|
return(0); |
43 |
|
case 'b': /* back face vis. */ |
44 |
|
if (av[0][2] == 'v') { |
45 |
< |
bool(3,backvis); |
45 |
> |
check_bool(3,backvis); |
46 |
|
return(0); |
47 |
|
} |
48 |
|
break; |
69 |
|
vspretest = atoi(av[1]); |
70 |
|
return(1); |
71 |
|
case 'v': /* visibility */ |
72 |
< |
bool(3,directvis); |
72 |
> |
check_bool(3,directvis); |
73 |
|
return(0); |
74 |
|
case 's': /* size */ |
75 |
|
check(3,"f"); |
102 |
|
} |
103 |
|
break; |
104 |
|
case 'i': /* irradiance */ |
105 |
< |
bool(2,do_irrad); |
105 |
> |
check_bool(2,do_irrad); |
106 |
|
return(0); |
107 |
|
case 'a': /* ambient */ |
108 |
|
switch (av[0][2]) { |
209 |
|
} |
210 |
|
break; |
211 |
|
} |
212 |
< |
return(-1); /* unknown option */ |
212 |
> |
|
213 |
> |
/* PMAP: Parse photon mapping options */ |
214 |
> |
return(getPmapRenderOpt(ac, av)); |
215 |
> |
|
216 |
> |
/* return(-1); */ /* unknown option */ |
217 |
|
|
218 |
|
#undef check |
219 |
< |
#undef bool |
219 |
> |
#undef check_bool |
220 |
|
} |
221 |
|
|
222 |
|
|
258 |
|
printf("-lr %-9d\t\t\t# limit reflection%s\n", maxdepth, |
259 |
|
maxdepth<=0 ? " (Russian roulette)" : ""); |
260 |
|
printf("-lw %.2e\t\t\t# limit weight\n", minweight); |
261 |
+ |
|
262 |
+ |
/* PMAP: output photon map defaults */ |
263 |
+ |
printPmapDefaults(); |
264 |
|
} |