set cut_paste_input [stack 0]
push $cut_paste_input
Group {
name Tonemap_PiecewiseHyperbolic
label "Piecewise Hyperbolic\n Grey + White Pivoted Toe + Surround"
addUserKnob {20 Tonemap}
addUserKnob {78 g l grey t "input -> output grey" n 2}
g {0.18 0.1}
addUserKnob {78 w l white t "input -> output white" n 2}
w {16 1}
addUserKnob {7 p l contrast R 0.8 2}
p 1.2
addUserKnob {7 ps l surround t "surround compensation: un-pivoted power function" R 0.8 1.2}
ps 1.05
addUserKnob {7 t0 l toe R 0 0.1}
t0 0.01
addUserKnob {78 s l scale n 2}
s {{(pow(2,-1/p)*pow(g.1+sqrt(g.1)*sqrt(4*t0+g.1),1/p))/g.0} {(s.0*pow(w.0-g.0,2)*pow(s.0*g.0-pow(2,-1/p)*pow(w.1+sqrt(w.1)*sqrt(w.1+4*t0),1/p),2))/pow(s.0*w.0-pow(2,-1/p)*pow(w.1+sqrt(w.1)*sqrt(w.1+4*t0),1/p),2)}}
addUserKnob {4 direction M {forward inverse}}
addUserKnob {26 "" +STARTLINE}
addUserKnob {26 plot_label l " " T "desmos plot"}
}
Input {
inputs 0
name Input
xpos -40
ypos 20
}
set N95558f0 [stack 0]
Expression {
temp_name0 tr
temp_expr0 pow(0.5*(pow(r,1/ps)+sqrt(pow(r,1/ps)*(pow(r,1/ps)+4*t0))),1/p)
temp_name1 tg
temp_expr1 pow(0.5*(pow(g,1/ps)+sqrt(pow(g,1/ps)*(pow(g,1/ps)+4*t0))),1/p)
temp_name2 tb
temp_expr2 pow(0.5*(pow(b,1/ps)+sqrt(pow(b,1/ps)*(pow(b,1/ps)+4*t0))),1/p)
temp_name3 th
temp_expr3 pow(g.1,ps)
expr0 r>th?h.0-s.1/(tr-h.1):tr/s.0
expr1 g>th?h.0-s.1/(tg-h.1):tg/s.0
expr2 b>th?h.0-s.1/(tb-h.1):tb/s.0
name InvCompress
xpos 70
ypos 81
addUserKnob {20 Param_tab l Param}
addUserKnob {78 h n 2}
h {{g.0-sqrt(s.1/s.0)} {s.0*g.0+sqrt(s.0*s.1)}}
}
push $N95558f0
Expression {
temp_name0 hr
temp_expr0 pow(h.1-s.1/(r-h.0),p)
temp_name1 hg
temp_expr1 pow(h.1-s.1/(g-h.0),p)
temp_name2 hb
temp_expr2 pow(h.1-s.1/(b-h.0),p)
expr0 r>g.0?pow(pow(hr,2)/(hr+t0),ps):pow(pow(s.0*r,2*p)/(pow(s.0*r,p)+t0),ps)
expr1 g>g.0?pow(pow(hg,2)/(hg+t0),ps):pow(pow(s.0*g,2*p)/(pow(s.0*g,p)+t0),ps)
expr2 b>g.0?pow(pow(hb,2)/(hb+t0),ps):pow(pow(s.0*b,2*p)/(pow(s.0*b,p)+t0),ps)
name Compress
xpos -150
ypos 81
addUserKnob {20 Param_tab l Param}
addUserKnob {78 h n 2}
h {{g.0-sqrt(s.1/s.0)} {s.0*g.0+sqrt(s.0*s.1)}}
}
Switch {
inputs 2
which {{parent.direction}}
name SwitchDirection
xpos -40
ypos 141
}
Output {
name Output
xpos -40
ypos 223
}
end_group