set cut_paste_input [stack 0]
push $cut_paste_input
Group {
name Tonemap_PiecewiseHyperbolic
addUserKnob {20 Tonemap}
addUserKnob {35 presets l " " M {"presets/SDR - Dark" "knobs this \{Lw \{100 100\} Lg 10 g \{0.18 \{Lg/Lw.0*pow(2,ex)\}\} w \{40 \{Lw.1/Lw.0\}\} ex 0 p 1.3 ps 1 t0 0.003\}" "presets/SDR - Dim" "knobs this \{Lw \{100 100\} Lg 10 g \{0.18 \{Lg/Lw.0*pow(2,ex)\}\} w \{40 \{Lw.1/Lw.0\}\} ex 0 p 1.3 ps 0.95 t0 0.003\}" "presets/SDR - Average" "knobs this \{Lw \{100 100\} Lg 10 g \{0.18 \{Lg/Lw.0*pow(2,ex)\}\} w \{40 \{Lw.1/Lw.0\}\} ex 0 p 1.3 ps 0.9 t0 0.003\}" "presets/Rec.2100 PQ ST-2084 600 nit" "knobs this \{Lw \{10000 600\} Lg 14 g \{0.18 \{Lg/Lw.0*pow(2,ex)\}\} w \{80 \{Lw.1/Lw.0\}\} ex \{\{0.1*log(Lw.1/1000)/log(2)\}\} p 1.2 t0 0.0001\}" "presets/Rec.2100 PQ ST-2084 1000 nit" "knobs this \{Lw \{10000 1000\} Lg 14 g \{0.18 \{Lg/Lw.0*pow(2,ex)\}\} w \{90 \{Lw.1/Lw.0\}\} ex \{\{0.1*log(Lw.1/1000)/log(2)\}\} p 1.2 t0 0.0001\}" "presets/Rec.2100 PQ ST-2084 2000 nit" "knobs this \{Lw \{10000 2000\} Lg 14 g \{0.18 \{Lg/Lw.0*pow(2,ex)\}\} w \{100 \{Lw.1/Lw.0\}\} ex \{\{0.1*log(Lw.1/1000)/log(2)\}\} p 1.2 t0 0.0001\}" "presets/Rec.2100 PQ ST-2084 4000 nit" "knobs this \{Lw \{10000 4000\} Lg 14 g \{0.18 \{Lg/Lw.0*pow(2,ex)\}\} w \{110 \{Lw.1/Lw.0\}\} ex \{\{0.1*log(Lw.1/1000)/log(2)\}\} p 1.2 t0 0.0001\}" "" ""}}
addUserKnob {78 Lw t "Peak white to reference white ratio. Useful for HDR, if you need to ouput a 1000 nit peak luminance image in the 10,000 nit peak luminance ST-2084 PQ container for example." n 2}
Lw {100 100}
addUserKnob {7 Lg t "Grey luminance in nits." R 4 20}
Lg 10
addUserKnob {26 ""}
addUserKnob {7 ex l exposure t "scene-referred exposure control"}
addUserKnob {78 g l grey t "input -> output grey" n 2}
g {0.18 {Lg/Lw.0*pow(2,ex)}}
addUserKnob {78 w l white t "input -> output white" n 2}
w {40 {Lw.1/Lw.0}}
addUserKnob {7 p l contrast R 0.8 2}
p 1.3
addUserKnob {7 ps l surround t "surround compensation: un-pivoted power function" R 0.8 1.2}
ps 1
addUserKnob {7 t0 l toe R 0 0.01}
t0 0.003
addUserKnob {78 s l scale n 2}
s {{pow(g.1,1/p)/g.0} {(s.0*pow(w.0-g.0,2)*pow(g.0*s.0-pow(w.1,1/p),2))/pow(s.0*w.0-pow(w.1,1/p),2)}}
addUserKnob {4 direction M {forward inverse}}
addUserKnob {26 ""}
addUserKnob {26 plot_label l " " T "desmos plot"}
}
Input {
inputs 0
name Input
xpos -40
ypos -70
}
set Naa1fce50 [stack 0]
Expression {
expr0 w.1*pow(r/w.1,1/ps)
expr1 w.1*pow(g/w.1,1/ps)
expr2 w.1*pow(b/w.1,1/ps)
name InvSurround
note_font Helvetica
xpos 70
ypos 21
}
Expression {
temp_name0 st
temp_expr0 (w.1+t0)/w.1
expr0 (r+sqrt(r*(4*st*t0+r)))/(2*st)
expr1 (g+sqrt(g*(4*st*t0+g)))/(2*st)
expr2 (b+sqrt(b*(4*st*t0+b)))/(2*st)
name InvToe
note_font Helvetica
xpos 70
ypos 51
}
Expression {
temp_name0 h0
temp_expr0 g.0-sqrt(s.1/s.0)
temp_name1 h1
temp_expr1 s.0*g.0+sqrt(s.0*s.1)
expr0 r>g.1?h0-s.1/(pow(r,1/p)-h1):pow(r,1/p)/s.0
expr1 g>g.1?h0-s.1/(pow(g,1/p)-h1):pow(g,1/p)/s.0
expr2 b>g.1?h0-s.1/(pow(b,1/p)-h1):pow(b,1/p)/s.0
name InvCompress
note_font Helvetica
xpos 70
ypos 81
}
push $Naa1fce50
Expression {
temp_name0 h0
temp_expr0 g.0-sqrt(s.1/s.0)
temp_name1 h1
temp_expr1 s.0*g.0+sqrt(s.0*s.1)
expr0 r>g.0?pow(h1-s.1/(r-h0),p):pow(s.0*r,p)
expr1 g>g.0?pow(h1-s.1/(g-h0),p):pow(s.0*g,p)
expr2 b>g.0?pow(h1-s.1/(b-h0),p):pow(s.0*b,p)
name Shoulder
note_font Helvetica
xpos -150
ypos 21
}
Expression {
temp_name0 st
temp_expr0 (w.1+t0)/w.1
expr0 (st*r*r)/(r+t0)
expr1 (st*g*g)/(g+t0)
expr2 (st*b*b)/(b+t0)
name Toe
note_font Helvetica
xpos -150
ypos 51
}
Expression {
expr0 w.1*pow(r/w.1,ps)
expr1 w.1*pow(g/w.1,ps)
expr2 w.1*pow(b/w.1,ps)
name Surround
note_font Helvetica
xpos -150
ypos 81
}
Switch {
inputs 2
which {{parent.direction}}
name SwitchDirection
note_font Helvetica
xpos -40
ypos 141
}
Output {
name Output
xpos -40
ypos 200
}
end_group