| 116 |  | if (photonMapping && rt != TRANS) | 
| 117 |  | return(-1); | 
| 118 |  | } | 
| 119 | < | if (maxdepth <= 0 && rc != NULL) {      /* Russian roulette */ | 
| 119 | > | if ((maxdepth <= 0) & (rc != NULL)) {   /* Russian roulette */ | 
| 120 |  | if (minweight <= 0.0) | 
| 121 |  | error(USER, "zero ray weight in Russian roulette"); | 
| 122 | < | if (maxdepth < 0 && r->rlvl > -maxdepth) | 
| 122 | > | if ((maxdepth < 0) & (r->rlvl > -maxdepth)) | 
| 123 |  | return(-1);             /* upper reflection limit */ | 
| 124 |  | if (r->rweight >= minweight) | 
| 125 |  | return(0); | 
| 130 |  | r->rweight = minweight; | 
| 131 |  | return(0); | 
| 132 |  | } | 
| 133 | < | return(r->rweight >= minweight && r->rlvl <= abs(maxdepth) ? 0 : -1); | 
| 133 | > | return((r->rweight >= minweight) & (r->rlvl <= abs(maxdepth)) ? 0 : -1); | 
| 134 |  | } | 
| 135 |  |  | 
| 136 |  |  | 
| 403 |  | int  flags | 
| 404 |  | ) | 
| 405 |  | { | 
| 406 | + | static int      warnedPM = 0; | 
| 407 | + |  | 
| 408 |  | rc[0] = rc[1] = rc[2] = 1.; | 
| 409 |  |  | 
| 410 |  | while (r != NULL && r->crtype&flags) { | 
| 411 |  | int     i = 3; | 
| 412 |  | while (i--) | 
| 413 |  | rc[i] *= colval(r->rcoef,i); | 
| 414 | + | /* check for participating medium */ | 
| 415 | + | if (!warnedPM && (bright(r->cext) > FTINY) | | 
| 416 | + | (bright(r->albedo) > FTINY)) { | 
| 417 | + | error(WARNING, | 
| 418 | + | "ray contribution calculation does not support participating media"); | 
| 419 | + | warnedPM++; | 
| 420 | + | } | 
| 421 |  | r = r->parent; | 
| 422 |  | } | 
| 423 |  | } |