/usr/share/radiance/ferwerda.cal is in radiance-materials 4R1+20120125-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | {
Tone Mapping Operator due to Ferwerda, Pattanaik, Shirley and Greenberg
(Siggraph 1996, pp. 249-258). Equilibrium adaptation version.
Greg Ward August 30, 1996
We assume that the input picture has already been adjusted with
a reasonable exposure value, which gives the adaptation level
implicitly. The visual acuity function should also be applied
if desired separately prior to applying this mapping. We're
also assuming that the picture is in standard RGB Radiance format,
not CIE XYZ format.
Don't use the -o option of pcomb, just execute like so:
% pcomb -f ferwerda.cal exposed.pic > mapped.pic
}
sL(r,g,b) = .062*r + .608*g + .330*b; { approx. scotopic brightness }
Lwa : WE*.5/le(1); { world adaptation luminance }
lLwa : log10(Lwa);
Ldmax : 100; { maximum display luminance (cd/m^2) }
Lda : Ldmax/2; { display adaptation luminance }
lLda : log10(Lda);
{ log10 of cone threshold luminance }
ltp(lLa) : if(-2.6 - lLa, -.72, if(lLa - 1.9, lLa - 1.255,
(.249*lLa + .65)^2.7 - .72));
{ log10 of rod threshold luminance }
lts(lLa) : if(-3.94 - lLa, -2.86, if(lLa - -1.44, lLa - .395,
(.405*lLa + 1.6)^2.18 - 2.86));
{ photopic multiplier }
mp : 10^(ltp(lLda) - ltp(lLwa));
{ scotopic multiplier }
ms : 10^(lts(lLda) - lts(lLwa)) *
if(-2.5 - lLwa, 1, if(lLwa - .8, 0, (.8 - lLwa)/(.8 - -2.5)));
{ display calibration factor }
df : WE/Ldmax/le(1);
{ adjusted scotopic luminance }
msl = ms*df * sL(ri(1),gi(1),bi(1));
{ compute output pixel }
ro = msl + mp*df * ri(1);
go = msl + mp*df * gi(1);
bo = msl + mp*df * bi(1);
|