| 66 |
|
const PhotonPrimary* addPhotonPrimary (PhotonMap *pmap, const RAY *ray) |
| 67 |
|
{ |
| 68 |
|
PhotonPrimary *prim = NULL; |
| 69 |
+ |
FVECT dvec; |
| 70 |
|
|
| 71 |
|
if (!pmap || !ray) |
| 72 |
|
return NULL; |
| 99 |
|
prim -> srcIdx = -1; |
| 100 |
|
|
| 101 |
|
/* Reverse incident direction to point to light source */ |
| 102 |
< |
prim -> dir [0] = -ray -> rdir [0]; |
| 103 |
< |
prim -> dir [1] = -ray -> rdir [1]; |
| 104 |
< |
prim -> dir [2] = -ray -> rdir [2]; |
| 102 |
> |
dvec [0] = -ray -> rdir [0]; |
| 103 |
> |
dvec [1] = -ray -> rdir [1]; |
| 104 |
> |
dvec [2] = -ray -> rdir [2]; |
| 105 |
> |
prim -> dir = encodedir(dvec); |
| 106 |
|
|
| 107 |
|
VCOPY(prim -> pos, ray -> rop); |
| 108 |
|
|
| 240 |
|
if (srcIdx < 0 || srcIdx >= nsources) |
| 241 |
|
error(INTERNAL, "invalid light source index in photon map"); |
| 242 |
|
|
| 243 |
< |
srcMod = objptr(source [srcIdx].so -> omod); |
| 243 |
> |
srcMod = findmaterial(source [srcIdx].so); |
| 244 |
|
|
| 245 |
|
/* Reject photon if contributions from light source which emitted it |
| 246 |
|
* are not sought */ |