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.43 by greg, Fri Feb 5 01:07:28 2021 UTC vs.
Revision 3.45 by greg, Wed Feb 24 20:35:22 2021 UTC

# Line 460 | Line 460 | double Ldmax
460          float   *cumf;
461          int     brt0, histlen;
462          HIST_TYP        threshold, ceiling, trimmings, histot;
463 <        double  logLddyn, Ldmin, Ldavg, Lwavg, Tr, Lw, Ld;
463 >        double  logLddyn, Ldmin, Lwavg, Tr, Lw, Ld;
464          double  sum;
465          double  d;
466          int     i, j;
# Line 474 | Line 474 | double Ldmax
474                                          /* compute handy values */
475          Ldmin = Ldmax/Lddyn;
476          logLddyn = log(Lddyn);
477        Ldavg = sqrt(Ldmax*Ldmin);
477          i = HISTI(tms->hbrmin);
478          brt0 = HISTV(i);
479          histlen = HISTI(tms->hbrmax) + 1 - i;
# Line 485 | Line 484 | double Ldmax
484                  histot += tms->histo[i];
485                  sum += (double)(j -= HISTEP) * tms->histo[i];
486          }
487 <        threshold = histot*0.005 + .5;
487 >        threshold = histot*0.002 + .5;
488          if (!histot)
489                  returnErr(TM_E_TMFAIL);
490          Lwavg = tmLuminance( (double)sum / histot );
# Line 504 | Line 503 | double Ldmax
503          do {                            /* iterate to solution */
504                  sum = 0;                /* cumulative probability */
505                  for (i = 0; i < histlen; i++) {
506 <                        cumf[i] = (double)sum/histot;
507 <                        sum += histo[i];
506 >                        cumf[i] = sum/histot;
507 >                        sum += (double)histo[i];
508                  }
509                  cumf[histlen] = 1.;
510                  Tr = histot * (double)(tms->hbrmax - tms->hbrmin) /
511 <                        ((double)histlen*TM_BRTSCALE) / logLddyn;
511 >                                ((double)TM_BRTSCALE*histlen*logLddyn);
512                  ceiling = Tr + 1.;
513                  trimmings = 0;          /* clip to envelope */
514                  for (i = histlen; i--; ) {
# Line 548 | Line 547 | double Ldmax
547          returnOK;
548   linearmap:                              /* linear tone-mapping */
549          if (tms->flags & TM_F_HCONTR)
550 <                d = htcontrs(Ldavg) / htcontrs(Lwavg);
550 >                d = htcontrs(sqrt(Ldmax*Ldmin)) / htcontrs(Lwavg);
551          else
552 <                d = Ldavg / Lwavg;
552 >                d = Ldmax / tmLuminance(tms->hbrmax);
553          return(tmFixedMapping(tms, tms->inpsf*d/Ldmax, gamval));
554   }
555  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines