530 |
|
{ |
531 |
|
int i; |
532 |
|
|
533 |
< |
if (!getperpendicular(uva[0], nrm)) { |
533 |
> |
if (!getperpendicular(uva[0], nrm, 1)) { |
534 |
|
fputs(progname, stderr); |
535 |
|
fputs(": bad surface normal in make_axes!\n", stderr); |
536 |
|
exit(1); |
849 |
|
|
850 |
|
while (n--) { /* stratified sampling */ |
851 |
|
SDmultiSamp(samp2, 2, (n+frandom())/sampcnt); |
852 |
< |
if (!fi_getvec(duvw, b+samp2[1], kbasis[bi])) |
852 |
> |
if (!fo_getvec(duvw, b+samp2[1], kbasis[bi])) |
853 |
|
return(0); |
854 |
|
for (i = 3; i--; ) |
855 |
|
orig_dir[1][i] = -duvw[0]*p->udir[i] - |
1292 |
|
if (argv[a][2] != 'v') na = 2; |
1293 |
|
break; |
1294 |
|
case 'a': /* special case */ |
1295 |
< |
na = (argv[a][2] == 'v') ? 4 : 2; |
1295 |
> |
if (argv[a][2] == 'p') { |
1296 |
> |
na = 2; /* photon map [+ bandwidth(s)] */ |
1297 |
> |
if (a < argc-3 && atoi(argv[a+1]) > 0) |
1298 |
> |
na += 1 + (a < argc-4 && atoi(argv[a+2]) > 0); |
1299 |
> |
} else |
1300 |
> |
na = (argv[a][2] == 'v') ? 4 : 2; |
1301 |
|
break; |
1302 |
|
case 'm': /* special case */ |
1303 |
|
if (!argv[a][2]) goto userr; |