109 |
|
/* transform source direction */ |
110 |
|
if (SDmapDir(vsrc, ndp->toloc, ldir) != SDEnone) |
111 |
|
return(0); |
112 |
+ |
/* assign number of samples */ |
113 |
+ |
ec = SDsizeBSDF(&tomega, ndp->vray, vsrc, SDqueryMin, ndp->sd); |
114 |
+ |
if (ec) |
115 |
+ |
goto baderror; |
116 |
|
/* check indirect over-counting */ |
117 |
|
if (ndp->thick != 0 && ndp->pr->crtype & (SPECULAR|AMBIENT) |
118 |
|
&& vsrc[2] > 0 ^ ndp->vray[2] > 0) { |
119 |
|
double dx = vsrc[0] + ndp->vray[0]; |
120 |
|
double dy = vsrc[1] + ndp->vray[1]; |
121 |
< |
if (dx*dx + dy*dy <= omega*(1./PI)) |
121 |
> |
if (dx*dx + dy*dy <= omega+tomega) |
122 |
|
return(0); |
123 |
|
} |
120 |
– |
/* assign number of samples */ |
121 |
– |
ec = SDsizeBSDF(&tomega, ndp->vray, vsrc, SDqueryMin, ndp->sd); |
122 |
– |
if (ec) |
123 |
– |
goto baderror; |
124 |
|
sf = specjitter * ndp->pr->rweight; |
125 |
|
if (25.*tomega <= omega) |
126 |
|
nsamp = 100.*sf + .5; |