set cut_paste_input [stack 0] push $cut_paste_input Group { name Tonemap_Siragusano label "Siragusano \nDecoupled 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 addUserKnob {7 t0 l toe R 0 0.1} t0 0.004 addUserKnob {78 s l scale n 2} s {{(g.0*w.0*(pow(g.1/w.1,1/p)-1))/(g.0-w.0*(pow(g.1/w.1,1/p)))} {w.1*pow(w.0/(w.0+s.0),-p)}} 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 -70 } set Na3a1bd0 [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 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 xpos 70 ypos 51 } Expression { expr0 (s.0*pow(r/s.1,1/p))/(1-pow(r/s.1,1/p)) expr1 (s.0*pow(g/s.1,1/p))/(1-pow(g/s.1,1/p)) expr2 (s.0*pow(b/s.1,1/p))/(1-pow(b/s.1,1/p)) name InvCompress xpos 70 ypos 81 } push $Na3a1bd0 Expression { expr0 s.1*pow(r/(r+s.0),p) expr1 s.1*pow(g/(g+s.0),p) expr2 s.1*pow(b/(b+s.0),p) name Compress 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 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 xpos -150 ypos 81 } Switch { inputs 2 which {{parent.direction}} name SwitchDirection xpos -40 ypos 141 } Output { name Output xpos -40 ypos 200 } end_group