ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/tonemap.c
(Generate patch)

Comparing ray/src/common/tonemap.c (file contents):
Revision 3.47 by greg, Wed Apr 7 21:13:52 2021 UTC vs.
Revision 3.50 by greg, Tue Apr 13 02:42:31 2021 UTC

# Line 439 | Line 439 | double  Lddyn
439          for (i = tms->mbrmax-tms->mbrmin+1; i--; ) {
440                  double  d;
441                  d = expmult/tms->inpsf * tmLuminance(tms->mbrmin + i);
442 <                if (d <= minD)
443 <                        break;          /* map initialized to zeroes */
444 <                d = (d - minD)/(1. - minD);
442 >                if (d >= 2.*minD)
443 >                        d -= minD;
444 >                else                    /* soft black crushing */
445 >                        d *= d/(4.*minD);
446 >                d /= 1. - minD;
447                  d = TM_BRES*pow(d, 1./gamval);
448                  tms->lumap[i] = (d > maxV) ? maxV : (int)d;
449          }
# Line 486 | Line 488 | double Ldmax
488                  histot += tms->histo[i];
489                  sum += (double)(j -= HISTEP) * tms->histo[i];
490          }
489        threshold = histot*0.002 + .5;
491          if (!histot)
492                  returnErr(TM_E_TMFAIL);
493 +        threshold = histot/40 + 1;
494          Lwavg = tmLuminance( (double)sum / histot );
495                                          /* use linear tone mapping? */
496          if (tms->flags & TM_F_LINEAR || threshold < 4 ||
# Line 532 | Line 534 | double Ldmax
534                          free(cumf);
535                          goto linearmap;
536                  }
537 <        } while (trimmings > threshold);
537 >        } while (40*trimmings > histot);
538                                          /* allocate space for mapping */
539          if (!tmNewMap(tms))
540                  returnErr(TM_E_NOMEM);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines