set cut_paste_input [stack 0]
version 12.0 v8
push $cut_paste_input
Dot {
name Dot89
label " Input ACEScg"
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xff
selected true
xpos 5034
ypos 474
}
Dot {
name Dot72
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xff
selected true
xpos 5034
ypos 634
}
Dot {
name Dot76
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xff
selected true
xpos 5034
ypos 754
}
set N39778b50 [stack 0]
Dot {
name Dot77
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xff
selected true
xpos 4914
ypos 754
}
Group {
name Log2Shaper8
selected true
xpos 4880
ypos 790
addUserKnob {20 log2_to_lin_tab l "log2 to lin"}
addUserKnob {35 presets l preset t "Presets for the exposure domain. \n\n48nits shaper small domain matches the log2 shaper used in the ACES 1.0.3 config. \n\nThe new 48nits shaper was expanded to match the acescc curve to reduce artifacts." M {"curve/48nits shaper" "knobs this \{mid_grey 0.18 min_exp -6.5 max_exp 6.5 label \"48nits shaper\"\}" "curve/48nits shaper acescc" "knobs this \{mid_grey 0.18 min_exp -7.246068811667588 max_exp 10.273931188332412 label \"48nits shaper acescc\"\}" "curve/LMT shaper" "knobs this \{mid_grey 0.18 min_exp -10 max_exp 6.5 label \"LMT shaper\"\}" "curve/108nits shaper" "knobs this \{mid_grey 0.18 min_exp -12 max_exp 8 label \"108nits shaper\"\}" "curve/1000nits shaper" "knobs this \{mid_grey 0.18 min_exp -12 max_exp 10 label \"1000nits shaper\"\}" "curve/2000nits shaper" "knobs this \{mid_grey 0.18 min_exp -12 max_exp 11 label \"2000nits shaper\"\}" "curve/4000nits shaper" "knobs this \{mid_grey 0.18 min_exp -12 max_exp 12 label \"4000nits shaper\"\}"}}
addUserKnob {26 ""}
addUserKnob {4 direction M {forward inverse}}
direction inverse
addUserKnob {4 negatives t "how to handle negative values.\n\nclamp does not modify the log curve near black. negative values will clip to 0.0\n\nlinear extension will multiply negatives with a linear extension below cut.\n\nreflect will compress or expand negative values with the mirror of the positive log function." -STARTLINE M {clamp "linear extension" reflect "" ""}}
addUserKnob {26 graph_link l "" -STARTLINE T " graph"}
addUserKnob {7 mid_grey l "mid grey" R 0.1 0.2}
mid_grey 0.18
addUserKnob {7 min_exp l "min exp" R -12 0}
min_exp -6.5
addUserKnob {7 max_exp l "max exp" R 0 12}
max_exp 8
addUserKnob {7 cut t "Transition from log curve to linear extension at cut value." R 0 0.1}
cut 0.005
}
Input {
inputs 0
name Input
xpos -40
ypos -82
}
Dot {
name Dot
xpos -6
ypos -6
}
set N397942e0 [stack 0]
Dot {
name Dot2
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xff
xpos 104
ypos 42
}
set N39798f60 [stack 0]
Expression {
expr0 r>=c?(log(r/mid_grey)/log(2)-min_exp)/(max_exp-min_exp):(r>-c&&r=c?(log(g/mid_grey)/log(2)-min_exp)/(max_exp-min_exp):(g>-c&&g=c?(log(b/mid_grey)/log(2)-min_exp)/(max_exp-min_exp):(b>-c&&b=c?(log(r/mid_grey)/log(2)-min_exp)/(max_exp-min_exp):s*(r-c)+offset
expr1 g>=c?(log(g/mid_grey)/log(2)-min_exp)/(max_exp-min_exp):s*(g-c)+offset
expr2 b>=c?(log(b/mid_grey)/log(2)-min_exp)/(max_exp-min_exp):s*(b-c)+offset
channel3 none
name lin_to_log_extension
xpos 180
ypos 86
}
push $N39798f60
Expression {
expr0 "r > 1e-12 ? (log( r / mid_grey)/log(2) - min_exp) / (max_exp - min_exp) : 0"
expr1 "g > 0 ? (log( g / mid_grey)/log(2) - min_exp) / (max_exp - min_exp) : 0"
expr2 "b > 0 ? (log( b / mid_grey)/log(2) - min_exp) / (max_exp - min_exp) : 0"
name lin_to_log_clamp
xpos 70
ypos 86
}
Switch {
inputs 3
which {{parent.negatives}}
name switch_negatives1
note_font Helvetica
xpos 70
ypos 159
}
push $N397942e0
Dot {
name Dot1
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xff
xpos -116
ypos 42
}
set N397d3130 [stack 0]
Expression {
expr0 r>=o?pow(2,(r*(max_exp-min_exp)+min_exp))*mid_grey:(r=-o+2*r0)?(r-o)/s+c:-(pow(2,(-r+2*r0)*(max_exp-min_exp)+min_exp))*mid_grey
expr1 g>=o?pow(2,(g*(max_exp-min_exp)+min_exp))*mid_grey:(g=-o+2*r0)?(g-o)/s+c:-(pow(2,(-g+2*r0)*(max_exp-min_exp)+min_exp))*mid_grey
expr2 b>=o?pow(2,(b*(max_exp-min_exp)+min_exp))*mid_grey:(b=-o+2*r0)?(b-o)/s+c:-(pow(2,(-b+2*r0)*(max_exp-min_exp)+min_exp))*mid_grey
channel3 none
name log_to_lin_reflect
xpos -150
ypos 86
addUserKnob {20 User}
addUserKnob {7 c l cut R 0 0.2}
c {{max(1e-8,cut)}}
addUserKnob {7 o l offset}
o {{(log(c/mid_grey)/log(2)-min_exp)/(max_exp-min_exp)}}
addUserKnob {7 s l slope}
s {{1/(log(2)*c*(max_exp-min_exp))}}
addUserKnob {7 r0 l root t "zero crossing for linear segment"}
r0 {{-c*s+o}}
addUserKnob {7 add}
}
push $N397d3130
Expression {
temp_name0 c
temp_expr0 max(1e-8,cut)
temp_name1 offset
temp_expr1 (log(c/mid_grey)/log(2)-min_exp)/(max_exp-min_exp)
temp_name2 s
temp_expr2 1/(log(2)*c*(max_exp-min_exp))
expr0 r>=offset?pow(2,(r*(max_exp-min_exp)+min_exp))*mid_grey:(r-offset)/s+c
expr1 g>=offset?pow(2,(g*(max_exp-min_exp)+min_exp))*mid_grey:(g-offset)/s+c
expr2 b>=offset?pow(2,(b*(max_exp-min_exp)+min_exp))*mid_grey:(b-offset)/s+c
channel3 none
name log_to_lin_extension
xpos -260
ypos 86
}
push $N397d3130
Expression {
expr0 "pow(2, ( r * (max_exp - min_exp) + min_exp)) * mid_grey"
expr1 "pow(2, ( g * (max_exp - min_exp) + min_exp)) * mid_grey"
expr2 "pow(2, ( b * (max_exp - min_exp) + min_exp)) * mid_grey"
name log_to_lin_clamp
xpos -370
ypos 86
}
Switch {
inputs 3
which {{parent.negatives}}
name switch_negatives
note_font Helvetica
xpos -150
ypos 159
}
Switch {
inputs 2
which {{parent.direction}}
name switch_direction
xpos -40
ypos 206
}
Output {
name Output
xpos -40
ypos 278
}
end_group
Expression {
channel0 rgba
expr0 max(r,g,b)
channel1 none
channel2 none
name MaxRGB
note_font Helvetica
selected true
xpos 4880
ypos 831
}
Keyer {
operation "red keyer"
range {0.5163758491 1 1 1}
name Keyer5
note_font Helvetica
selected true
xpos 4880
ypos 865
}
Dot {
name Dot97
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xff
selected true
xpos 4914
ypos 914
}
push $N39778b50
Group {
name Colorspace_JzAzBz7
selected true
xpos 5000
ypos 790
addUserKnob {20 JzAzBz_tab l JzAzBz}
addUserKnob {41 gamut T GamutToXYZ.gamut}
addUserKnob {6 JChE t "Output JChE: Lightness, Chroma, hue angle, and perceptual color diffence deltaE" +STARTLINE}
addUserKnob {35 const_d_presets l "" +STARTLINE M {"const d/JzAzBz" "knobs this \{d -0.56\}" "const d/CAM16-UCS" "knobs this \{d 0\}" "const d/IPT" "knobs this \{d -0.64\}" "const d/ICtCp" "knobs this \{d 1.1\}"}}
addUserKnob {7 d l "" t "the d constant which can can be adjusted to tune the lightness predictors to different colorspaces:\ndefault: -0.56\nCAM16-UCS: 0\nIPT: -0.64\nICtCp: 1.1" -STARTLINE R -1 1}
d -0.56
addUserKnob {7 L_p t "Luminance for ST2084 eotf" R 48 1000}
L_p 100
addUserKnob {6 domain_range_scale l "domain range scale" +STARTLINE}
domain_range_scale true
addUserKnob {4 direction M {forward inverse}}
}
Input {
inputs 0
name Input
xpos -40
ypos -490
}
Dot {
name Dot1
xpos -6
ypos -446
}
set N39842940 [stack 0]
Dot {
name Dot2
xpos 114
ypos -446
}
Expression {
temp_name0 d_0
temp_expr0 1.6295499532821565e-11
expr0 ((r+d_0)/(1+d-d*(r+d_0)))
expr1 g
expr2 b
name Expression4
label Iz
note_font Helvetica
xpos 80
ypos -335
}
ColorMatrix {
matrix {
{{parent.ColorMatrix2.matrix} {parent.ColorMatrix2.matrix} {parent.ColorMatrix2.matrix}}
{{parent.ColorMatrix2.matrix} {parent.ColorMatrix2.matrix} {parent.ColorMatrix2.matrix}}
{{parent.ColorMatrix2.matrix} {parent.ColorMatrix2.matrix} {parent.ColorMatrix2.matrix}}
}
invert true
name ColorMatrix4
label IZAZBZ_TO_LMS_P
note_font Helvetica
xpos 80
ypos -295
}
Group {
name eotf_ST2084_
note_font Helvetica
xpos 80
ypos -249
disable {{!parent.domain_range_scale}}
addUserKnob {20 CONSTANTS_tab l CONSTANTS}
addUserKnob {7 m_1}
m_1 {{2610/4096*(1/4)}}
addUserKnob {7 m_2}
m_2 {{1.7*2523/2**5}}
addUserKnob {7 c_1}
c_1 {{3424/4096}}
addUserKnob {7 c_2}
c_2 {{2413/4096*32}}
addUserKnob {7 c_3}
c_3 {{2392/4096*32}}
addUserKnob {7 L_p R 0 10000}
L_p {{parent.L_p}}
}
Input {
inputs 0
name Input
xpos -40
ypos -290
}
Expression {
expr0 "pow(r, 1/m_2)"
expr1 "pow(g, 1/m_2)"
expr2 "pow(b, 1/m_2)"
name Expression1
label V_p
note_font Helvetica
xpos -40
ypos -255
}
Expression {
expr0 pow(((r-c_1)/(c_2-c_3*r)),1/m_1)*L_p
expr1 pow(((g-c_1)/(c_2-c_3*g)),1/m_1)*L_p
expr2 pow(((b-c_1)/(c_2-c_3*b)),1/m_1)*L_p
name Expression2
label C
note_font Helvetica
xpos -40
ypos -215
}
Output {
name Output
xpos -40
ypos -170
}
end_group
ColorMatrix {
matrix {
{{parent.ColorMatrix6.matrix} {parent.ColorMatrix6.matrix} {parent.ColorMatrix6.matrix}}
{{parent.ColorMatrix6.matrix} {parent.ColorMatrix6.matrix} {parent.ColorMatrix6.matrix}}
{{parent.ColorMatrix6.matrix} {parent.ColorMatrix6.matrix} {parent.ColorMatrix6.matrix}}
}
invert true
name ColorMatrix5
label LMS_TO_XYZ
note_font Helvetica
xpos 80
ypos -215
}
Expression {
expr0 (r+(1.15-1)*b)/1.15
expr1 (g+(0.66-1)*((r+(1.15-1)*b)/1.15))/0.66
expr2 b
name Expression2
label "X_p Y_p Z"
note_font Helvetica
xpos 80
ypos -175
}
ColorMatrix {
matrix {
{{parent.GamutToXYZ.ColorMatrix.matrix} {parent.GamutToXYZ.ColorMatrix.matrix} {parent.GamutToXYZ.ColorMatrix.matrix}}
{{parent.GamutToXYZ.ColorMatrix.matrix} {parent.GamutToXYZ.ColorMatrix.matrix} {parent.GamutToXYZ.ColorMatrix.matrix}}
{{parent.GamutToXYZ.ColorMatrix.matrix} {parent.GamutToXYZ.ColorMatrix.matrix} {parent.GamutToXYZ.ColorMatrix.matrix}}
}
invert true
name ColorMatrix3
label "\[if \{\[value invert]\} \{return \"XYZ to \[value GamutToXYZ.gamut]\"\} else \{return \"\[value gamut] to XYZ\"\}]\n\n"
note_font Helvetica
xpos 80
ypos -95
}
push $N39842940
Group {
name GamutToXYZ
label "\[if \{\[value invert]\} \{return \"XYZ to \[value gamut]\"\} else \{return \"\[value gamut] to XYZ\"\}]\n\n"
xpos -40
ypos -416
addUserKnob {20 GamutToXYZ_lite_tab l GamutToXYZ_lite}
addUserKnob {4 gamut t "Choose gamut" M {XYZ ACES ACEScg "Filmlight E-Gamut" "DaVinci WG" Rec709 Rec2020 P3D60 P3D65 P3DCI "Arri AlexaWideGamut" REDDRAGONcolor REDDRAGONcolor2 REDcolor REDcolor2 REDcolor3 REDcolor4 REDWideGamutRGB "GoPro Protune Native" CanonCinemaGamut SonySGamut SonySGamut3Cine PanasonicVGamut "DJI D-Gamut" "Fujifilm F-Gamut" BMDFilmV1 BMD4kFilmV1 BMD4kFilmV3 BMD46kFilmV1 BMD46kFilmV3 BMDWideGamutV4 "AdobeRGB\t" AdobeWideGamutRGB ROMM RIMM ERIMM ProPhotoRGB RusselRGB SharpRGB AppleRGB BestRGB}}
gamut ACEScg
addUserKnob {6 invert +STARTLINE}
addUserKnob {26 ""}
addUserKnob {26 chromaticity_coordinates_label l " " T "Chromaticity Coordinates"}
addUserKnob {20 chromaticities_grp l "" +STARTLINE n 1}
addUserKnob {41 rxy T ColorMatrix.rxy}
addUserKnob {41 gxy T ColorMatrix.gxy}
addUserKnob {41 bxy T ColorMatrix.bxy}
addUserKnob {41 wxy T ColorMatrix.wxy}
addUserKnob {41 matrix T ColorMatrix.matrix}
addUserKnob {20 endGroup n -1}
}
Input {
inputs 0
name Input
xpos -40
ypos -10
}
ColorMatrix {
matrix {
{{curve(which) 1 0.9525524378 0.6624541879 0.7053968906 0.4123907983 0.6369580626 0.5049495697 0.4865709841 0.4451698363 0.6380076408 0.5070186853 0.4462202489 0.4300414324 0.4581649601 0.4878340662 0.4517004192 0.7352752686 0.5022571683 0.7160496712 0.7064827085 0.5990839601 0.6796444654 0.6481720209 0.6369580626 0.6390493512 0.6141571999 0.3724023998 0.60689044 0.4017650783 0.6065810919 0.5766690373 0.7165006995 0.797760427 0.797760427 0.797760427 0.7976718545 0.7015837431 0.8156226277 0.4496616423 0.6318944097} {curve(which) 0 0 0.1340042055 0.1640413404 0.3575843275 0.1446169019 0.2646814585 0.2656676769 0.2771343887 0.2147038579 0.3587769568 0.3157556653 0.3700728714 0.3832037449 0.3432727158 0.3178463876 0.06860940903 0.2929667532 0.1296834797 0.1288010478 0.2489254922 0.1522114277 0.1940581352 0.1446169019 0.1578372866 0.2825684249 0.4324877858 0.2193847299 0.4560420811 0.2203479856 0.1855582297 0.1010205746 0.1351858526 0.1351858526 0.1351858526 0.1351878047 0.1554162204 0.04716260359 0.3162561059 0.2053879201} {curve(which) 0 9.367863095e-05 0.1561876982 0.08101774752 0.180480808 0.1688809693 0.1830150485 0.1982172877 0.1722826511 0.09774444997 0.0868505761 0.190669477 0.152531758 0.1112773567 0.1215386018 0.1830992699 0.1465712637 0.1552320272 0.1047228053 0.1151721701 0.1024464965 0.1186000481 0.108225815 0.1688809693 0.1516760886 0.05183707923 0.1436725408 0.124180764 0.09264881909 0.123526901 0.1882286519 0.1467743814 0.03134934977 0.03134934977 0.03134934977 0.03133957833 0.09979832917 0.1372147948 0.1845382005 0.1270133406}}
{{curve(which) 0 0.3439664543 0.2722287476 0.2801307142 0.2126390189 0.2627002299 0.237623319 0.2289745659 0.209491685 0.2919537723 0.2207257152 0.1942579001 0.2022213936 0.1694435924 0.2289056629 0.2119505703 0.2866941094 0.1387997568 0.2612613738 0.2709796727 0.2150758505 0.2606855333 0.2830046713 0.2627002299 0.1743051857 0.2365771234 0.1383759677 0.1973138005 0.1721783578 0.2680045366 0.2973450124 0.258728236 0.2880711257 0.2880711257 0.2880711257 0.2880405784 0.3152042925 0.3790788651 0.2446159422 0.2276017666} {curve(which) 1 0.7281661034 0.6740817428 0.8202066422 0.7151686549 0.6779980659 0.6891706586 0.6917385459 0.7215952873 0.8238410354 0.839184761 0.7385566831 0.7585275769 0.8648257852 0.7808576822 0.7230190039 0.8429791331 0.910841465 0.8696421385 0.786606431 0.8850684762 0.7748944759 0.8131960034 0.6779980659 0.951146543 0.8896810412 0.911518693 0.943950057 0.8553914428 0.8326833844 0.6273635626 0.7246823311 0.7118432522 0.7118432522 0.7118432522 0.7118694782 0.6648360491 0.5769088268 0.6720442176 0.7383946776} {curve(which) 0 -0.07213255018 0.05368951708 -0.1003373638 0.07219231874 0.05930171534 0.07320601493 0.07928691059 0.06891305745 -0.1157948226 -0.05991046131 0.06718540192 0.03925102949 -0.03426937759 -0.009763340466 0.06503042579 -0.1296732277 -0.04964122549 -0.1309035122 -0.05758608505 -0.1001443192 -0.03558001295 -0.09620071948 0.05930171534 -0.1254517138 -0.1262581497 -0.04989464581 -0.1412638426 -0.02756982669 -0.1006879359 0.07529145479 0.01658944227 8.565396274e-05 8.565396274e-05 8.565396274e-05 8.991353388e-05 0.01995966583 0.04401229322 0.08333983272 0.0340035744}}
{{curve(which) 0 -3.863927134e-08 -0.005574660841 -0.1037815213 0.01933082007 0 0 0 0 0.0027982709 -0.0544523783 -0.04792318866 -0.0176958181 -0.1061859056 -0.02100777067 -0.01945115253 -0.07968087494 0.07801423222 -0.009676366113 -0.009677864611 -0.03206583485 -0.009310216643 -0.01825834997 0 -0.11669112 -0.02325225808 -0.1602820009 -0.1427432895 -0.10720893 -0.02941203304 0.02703136392 -2.906408625e-08 -3.236030111e-08 -3.236030111e-08 -3.236030111e-08 0 0 -0.01229703799 0.02518104948 0} {curve(which) 0 0 0.004060741514 -0.07290724665 0.1191947311 0.0280726999 0.0449459292 0.04511339962 0.04706057906 -0.06703422964 -0.0003228379355 -0.0002844714036 0.08768811822 0.02554347552 0.01782695204 0.01650637016 -0.3473432064 -0.3148325086 -0.2364816219 0.004600019194 -0.02765839547 -0.004612449091 -0.08316776901 0.0280726999 -0.5518454909 -0.4897170365 -0.171635136 -0.4278847873 0.07809129357 -0.08659287542 0.07068887353 0.05121183768 1.2621717e-08 1.2621717e-08 1.2621717e-08 -1.262213711e-08 0.04317118227 0.01672476344 0.1411857158 0.01001892332} {curve(which) 1 1.008825183 1.010339141 1.265746474 0.950532198 1.060985088 0.9638792276 1.043944359 0.9073553085 1.153293729 1.063571215 1.057001948 0.9388025999 1.089437366 1.01197505 1.011739731 1.51608181 1.325875998 1.335215807 1.094135642 1.148782015 1.102980375 1.190483928 1.060985088 1.745692492 1.590125084 1.409072995 1.65968585 1.118175387 1.205062628 0.9913375378 0.7738927603 0.8251045942 0.8251045942 0.8251045942 0.8248898983 0.8782252669 0.9955722094 0.9226909876 0.8150856495}}
}
invert {{parent.invert}}
name ColorMatrix
label "RGB to XYZ"
xpos -40
ypos 32
addUserKnob {20 Gamut}
addUserKnob {3 which}
which {{parent.gamut}}
addUserKnob {12 rxy}
rxy {{curve(which) 1 0.7347 0.713 0.8 0.8 0.64 0.708 0.68 0.68 0.68 0.684 0.7530442228 0.7530444911 0.6997470013 0.8786825105 0.7011810359 0.7011805919 0.780308 0.69848046 0.74 0.73 0.766 0.73 0.71 0.708 0.9173 0.7422 1.0625 0.9175 0.8608 0.7177 0.64 0.7347 0.7347 0.7347 0.7347 0.734699 0.69 0.6898 0.625 0.7351916376} {curve(which) 0 0.2653 0.293 0.3177 0.313 0.33 0.292 0.32 0.32 0.32 0.313 0.3278305767 0.3278310295 0.3290469303 0.3249640074 0.3290141556 0.3290136991 0.304253 0.19302645 0.27 0.28 0.275 0.28 0.31 0.292 0.2502 0.2859 0.3948 0.2983 0.3689 0.3171 0.33 0.2653 0.2653 0.2653 0.2653 0.265301 0.31 0.3206 0.34 0.2648083624}}
addUserKnob {12 gxy}
gxy {{curve(which) 0 0 0.165 0.18 0.1682 0.3 0.17 0.265 0.265 0.265 0.221 0.2995702285 0.2995704905 0.304264039 0.3008887144 0.3006003047 0.3006003955 0.121595 0.32955538 0.17 0.14 0.225 0.165 0.21 0.17 0.2833 0.414 0.3689 0.2983 0.3282 0.228 0.21 0.1152 0.1596 0.1596 0.1596 0.159597 0.18 0.0736 0.28 0.2153361345} {curve(which) 1 1 0.83 0.9 0.9877 0.6 0.797 0.69 0.69 0.69 0.848 0.700699322 0.7006994156 0.6236411451 0.6790547558 0.6837888343 0.6837888243 1.493994 1.02459662 1.14 0.855 0.8 0.84 0.88 0.797 1.7072 1.3035 0.7775 1.2835 0.6156 0.8616 0.71 0.8264 0.8404 0.8404 0.8404 0.840403 0.77 0.9003 0.595 0.7741596639}}
addUserKnob {12 bxy}
bxy {{curve(which) 0 0.0001 0.128 0.065 0.079 0.15 0.131 0.15 0.15 0.15 0.0861 0.07964206674 0.1450115843 0.1349139613 0.09539869461 0.1081544556 0.1453319462 0.095612 0.10844263 0.08 0.1 0.089 0.1 0.09 0.131 0.0856 0.0342 0.0956 0.0756 0.0783 0.1006 0.15 0.1566 0.0366 0.0366 0.0366 0.036598 0.1 0.1166 0.155 0.1301229508} {curve(which) 0 -0.077 0.044 -0.0805 -0.1155 0.06 0.046 0.06 0.06 0.06 -0.102 -0.05493795109 0.05109712509 0.03471744128 -0.02937932683 -0.008688175787 0.05161680362 -0.084589 -0.03467857 -0.1 -0.05 -0.087 -0.03 -0.08 0.046 -0.0708 -0.0833 -0.0332 -0.086 -0.0233 -0.082 0.06 0.0177 0.0001 0.0001 0.0001 0.000105 0.02 0.0374 0.07 0.03483606557}}
addUserKnob {12 wxy}
wxy {{curve(which) 0.33333333 0.32168 0.32168 0.3127 0.3127 0.3127 0.3127 0.32168 0.3127 0.314 0.3127 0.3216831877 0.3216832104 0.3216832894 0.3216832894 0.3216832104 0.3216832894 0.3127 0.3127 0.3127 0.3127 0.3127 0.3127 0.3127 0.3127 0.3135 0.3135 0.3135 0.3127 0.3127 0.3127 0.3127 0.3457 0.3457 0.3457 0.3457 0.345704 0.33243 0.33333333 0.3127 0.3457} {curve(which) 0.33333333 0.33767 0.33767 0.329 0.329 0.329 0.329 0.33767 0.329 0.351 0.329 0.337673316 0.3376736101 0.3376734472 0.3376734472 0.3376736101 0.3376734472 0.329 0.329 0.329 0.329 0.329 0.329 0.329 0.329 0.3305 0.3305 0.3305 0.329 0.329 0.329 0.329 0.3585 0.3585 0.3585 0.3585 0.35854 0.34744 0.33333333 0.329 0.3585}}
}
Output {
name Output
xpos -40
ypos 86
}
end_group
Expression {
expr0 1.15*r-(1.15-1)*b
expr1 0.66*g-(0.66-1)*r
expr2 b
name Expression3
label "X_p Y_p Z"
note_font Helvetica
xpos -40
ypos -335
}
ColorMatrix {
matrix {
{0.41478972 0.579999 0.014648}
{-0.20151 1.120649 0.0531008}
{-0.0166008 0.2648 0.6684799}
}
name ColorMatrix6
label XYZ_TO_LMS
note_font Helvetica
xpos -40
ypos -295
}
Group {
name eotf_inverse_ST2084_
note_font Helvetica
xpos -40
ypos -249
disable {{!parent.domain_range_scale}}
addUserKnob {20 CONSTANTS_tab l CONSTANTS}
addUserKnob {7 m_1}
m_1 {{2610/4096*(1/4)}}
addUserKnob {7 m_2}
m_2 {{1.7*2523/2**5}}
addUserKnob {7 c_1}
c_1 {{3424/4096}}
addUserKnob {7 c_2}
c_2 {{2413/4096*32}}
addUserKnob {7 c_3}
c_3 {{2392/4096*32}}
addUserKnob {7 L_p R 0 10000}
L_p {{parent.L_p}}
}
Input {
inputs 0
name Input
xpos -40
ypos -290
}
Expression {
expr0 "pow(r/L_p, m_1)"
expr1 "pow(g/L_p, m_1)"
expr2 "pow(b/L_p, m_1)"
name Expression4
label Y_p
note_font Helvetica
xpos -40
ypos -255
}
Expression {
expr0 "pow((c_1+c_2*r)/(c_3*r+1), m_2)"
expr1 "pow((c_1+c_2*g)/(c_3*g+1), m_2)"
expr2 "pow((c_1+c_2*b)/(c_3*b+1), m_2)"
name Expression8
label N
note_font Helvetica
xpos -40
ypos -215
}
Output {
name Output
xpos -40
ypos -170
}
end_group
ColorMatrix {
matrix {
{0.5 0.5 0}
{3.524 -4.066708 0.542708}
{0.199076 1.096799 -1.295875}
}
name ColorMatrix2
label LMS_P_TO_IZAZBZ
note_font Helvetica
xpos -40
ypos -215
}
Expression {
temp_name0 d_0
temp_expr0 1.6295499532821565e-11
expr0 r*(1+d)/(1+d*r)-d_0
expr1 g
expr2 b
name Expression1
label Jz
note_font Helvetica
xpos -40
ypos -175
}
Switch {
inputs 2
which {{parent.direction}}
name SwitchDirection
note_font Helvetica
xpos -40
ypos -49
}
Output {
name Output
xpos -40
ypos 42
}
end_group
Group {
name GamutCompress6
label "extreme saturation compress"
note_font Helvetica
selected true
xpos 5000
ypos 847
disable true
addUserKnob {20 GamutCompress_tab l GamutCompress}
addUserKnob {78 blue n 2}
blue {0.1 0.15}
addUserKnob {78 yellow n 2}
yellow {0.1 0.15}
addUserKnob {78 green n 2}
green {0.1 0.15}
addUserKnob {78 red n 2}
red {0.1 0.15}
}
Input {
inputs 0
name Input
label "\[value number]"
xpos -40
ypos -10
}
Dot {
name Dot2
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xff
xpos -6
ypos 74
}
set N26d0ae70 [stack 0]
Expression {
channel0 {rgba.red -rgba.green -rgba.blue none}
expr0 r(-Az is red, +Az is yellow, -Bz is green +Bz is blue)."
note_font Helvetica
note_font_size 14
xpos -156
ypos 24
}
end_group
Multiply {
inputs 1+1
channels {-rgba.red rgba.green rgba.blue -rgba.alpha}
value 0
name Multiply4
label "scale AzBz"
note_font Helvetica
selected true
xpos 5000
ypos 905
}
Group {
name Colorspace_JzAzBz8
selected true
xpos 5000
ypos 950
addUserKnob {20 JzAzBz_tab l JzAzBz}
addUserKnob {41 gamut T GamutToXYZ.gamut}
addUserKnob {6 JChE t "Output JChE: Lightness, Chroma, hue angle, and perceptual color diffence deltaE" +STARTLINE}
addUserKnob {35 const_d_presets l "" +STARTLINE M {"const d/JzAzBz" "knobs this \{d -0.56\}" "const d/CAM16-UCS" "knobs this \{d 0\}" "const d/IPT" "knobs this \{d -0.64\}" "const d/ICtCp" "knobs this \{d 1.1\}"}}
addUserKnob {7 d l "" t "the d constant which can can be adjusted to tune the lightness predictors to different colorspaces:\ndefault: -0.56\nCAM16-UCS: 0\nIPT: -0.64\nICtCp: 1.1" -STARTLINE R -1 1}
d {-0.56}
addUserKnob {7 L_p t "Luminance for ST2084 eotf" R 48 1000}
L_p {{parent.Colorspace_JzAzBz7.L_p}}
addUserKnob {6 domain_range_scale l "domain range scale" +STARTLINE}
domain_range_scale true
addUserKnob {4 direction M {forward inverse}}
direction inverse
}
Input {
inputs 0
name Input
xpos -40
ypos -490
}
Dot {
name Dot1
xpos -6
ypos -446
}
set N39a7d7e0 [stack 0]
Dot {
name Dot2
xpos 114
ypos -446
}
Expression {
temp_name0 d_0
temp_expr0 1.6295499532821565e-11
expr0 ((r+d_0)/(1+d-d*(r+d_0)))
expr1 g
expr2 b
name Expression4
label Iz
note_font Helvetica
xpos 80
ypos -335
}
ColorMatrix {
matrix {
{{parent.ColorMatrix2.matrix} {parent.ColorMatrix2.matrix} {parent.ColorMatrix2.matrix}}
{{parent.ColorMatrix2.matrix} {parent.ColorMatrix2.matrix} {parent.ColorMatrix2.matrix}}
{{parent.ColorMatrix2.matrix} {parent.ColorMatrix2.matrix} {parent.ColorMatrix2.matrix}}
}
invert true
name ColorMatrix4
label IZAZBZ_TO_LMS_P
note_font Helvetica
xpos 80
ypos -295
}
Group {
name eotf_ST2084_
note_font Helvetica
xpos 80
ypos -249
disable {{!parent.domain_range_scale}}
addUserKnob {20 CONSTANTS_tab l CONSTANTS}
addUserKnob {7 m_1}
m_1 {{2610/4096*(1/4)}}
addUserKnob {7 m_2}
m_2 {{1.7*2523/2**5}}
addUserKnob {7 c_1}
c_1 {{3424/4096}}
addUserKnob {7 c_2}
c_2 {{2413/4096*32}}
addUserKnob {7 c_3}
c_3 {{2392/4096*32}}
addUserKnob {7 L_p R 0 10000}
L_p {{parent.L_p}}
}
Input {
inputs 0
name Input
xpos -40
ypos -290
}
Expression {
expr0 "pow(r, 1/m_2)"
expr1 "pow(g, 1/m_2)"
expr2 "pow(b, 1/m_2)"
name Expression1
label V_p
note_font Helvetica
xpos -40
ypos -255
}
Expression {
expr0 pow(((r-c_1)/(c_2-c_3*r)),1/m_1)*L_p
expr1 pow(((g-c_1)/(c_2-c_3*g)),1/m_1)*L_p
expr2 pow(((b-c_1)/(c_2-c_3*b)),1/m_1)*L_p
name Expression2
label C
note_font Helvetica
xpos -40
ypos -215
}
Output {
name Output
xpos -40
ypos -170
}
end_group
ColorMatrix {
matrix {
{{parent.ColorMatrix6.matrix} {parent.ColorMatrix6.matrix} {parent.ColorMatrix6.matrix}}
{{parent.ColorMatrix6.matrix} {parent.ColorMatrix6.matrix} {parent.ColorMatrix6.matrix}}
{{parent.ColorMatrix6.matrix} {parent.ColorMatrix6.matrix} {parent.ColorMatrix6.matrix}}
}
invert true
name ColorMatrix5
label LMS_TO_XYZ
note_font Helvetica
xpos 80
ypos -215
}
Expression {
expr0 (r+(1.15-1)*b)/1.15
expr1 (g+(0.66-1)*((r+(1.15-1)*b)/1.15))/0.66
expr2 b
name Expression2
label "X_p Y_p Z"
note_font Helvetica
xpos 80
ypos -175
}
ColorMatrix {
matrix {
{{parent.GamutToXYZ.ColorMatrix.matrix} {parent.GamutToXYZ.ColorMatrix.matrix} {parent.GamutToXYZ.ColorMatrix.matrix}}
{{parent.GamutToXYZ.ColorMatrix.matrix} {parent.GamutToXYZ.ColorMatrix.matrix} {parent.GamutToXYZ.ColorMatrix.matrix}}
{{parent.GamutToXYZ.ColorMatrix.matrix} {parent.GamutToXYZ.ColorMatrix.matrix} {parent.GamutToXYZ.ColorMatrix.matrix}}
}
invert true
name ColorMatrix3
label "\[if \{\[value invert]\} \{return \"XYZ to \[value GamutToXYZ.gamut]\"\} else \{return \"\[value gamut] to XYZ\"\}]\n\n"
note_font Helvetica
xpos 80
ypos -95
}
push $N39a7d7e0
Group {
name GamutToXYZ
label "\[if \{\[value invert]\} \{return \"XYZ to \[value gamut]\"\} else \{return \"\[value gamut] to XYZ\"\}]\n\n"
xpos -40
ypos -416
addUserKnob {20 GamutToXYZ_lite_tab l GamutToXYZ_lite}
addUserKnob {4 gamut t "Choose gamut" M {XYZ ACES ACEScg "Filmlight E-Gamut" "DaVinci WG" Rec709 Rec2020 P3D60 P3D65 P3DCI "Arri AlexaWideGamut" REDDRAGONcolor REDDRAGONcolor2 REDcolor REDcolor2 REDcolor3 REDcolor4 REDWideGamutRGB "GoPro Protune Native" CanonCinemaGamut SonySGamut SonySGamut3Cine PanasonicVGamut "DJI D-Gamut" "Fujifilm F-Gamut" BMDFilmV1 BMD4kFilmV1 BMD4kFilmV3 BMD46kFilmV1 BMD46kFilmV3 BMDWideGamutV4 "AdobeRGB\t" AdobeWideGamutRGB ROMM RIMM ERIMM ProPhotoRGB RusselRGB SharpRGB AppleRGB BestRGB}}
gamut ACEScg
addUserKnob {6 invert +STARTLINE}
addUserKnob {26 ""}
addUserKnob {26 chromaticity_coordinates_label l " " T "Chromaticity Coordinates"}
addUserKnob {20 chromaticities_grp l "" +STARTLINE n 1}
addUserKnob {41 rxy T ColorMatrix.rxy}
addUserKnob {41 gxy T ColorMatrix.gxy}
addUserKnob {41 bxy T ColorMatrix.bxy}
addUserKnob {41 wxy T ColorMatrix.wxy}
addUserKnob {41 matrix T ColorMatrix.matrix}
addUserKnob {20 endGroup n -1}
}
Input {
inputs 0
name Input
xpos -40
ypos -10
}
ColorMatrix {
matrix {
{{curve(which) 1 0.9525524378 0.6624541879 0.7053968906 0.4123907983 0.6369580626 0.5049495697 0.4865709841 0.4451698363 0.6380076408 0.5070186853 0.4462202489 0.4300414324 0.4581649601 0.4878340662 0.4517004192 0.7352752686 0.5022571683 0.7160496712 0.7064827085 0.5990839601 0.6796444654 0.6481720209 0.6369580626 0.6390493512 0.6141571999 0.3724023998 0.60689044 0.4017650783 0.6065810919 0.5766690373 0.7165006995 0.797760427 0.797760427 0.797760427 0.7976718545 0.7015837431 0.8156226277 0.4496616423 0.6318944097} {curve(which) 0 0 0.1340042055 0.1640413404 0.3575843275 0.1446169019 0.2646814585 0.2656676769 0.2771343887 0.2147038579 0.3587769568 0.3157556653 0.3700728714 0.3832037449 0.3432727158 0.3178463876 0.06860940903 0.2929667532 0.1296834797 0.1288010478 0.2489254922 0.1522114277 0.1940581352 0.1446169019 0.1578372866 0.2825684249 0.4324877858 0.2193847299 0.4560420811 0.2203479856 0.1855582297 0.1010205746 0.1351858526 0.1351858526 0.1351858526 0.1351878047 0.1554162204 0.04716260359 0.3162561059 0.2053879201} {curve(which) 0 9.367863095e-05 0.1561876982 0.08101774752 0.180480808 0.1688809693 0.1830150485 0.1982172877 0.1722826511 0.09774444997 0.0868505761 0.190669477 0.152531758 0.1112773567 0.1215386018 0.1830992699 0.1465712637 0.1552320272 0.1047228053 0.1151721701 0.1024464965 0.1186000481 0.108225815 0.1688809693 0.1516760886 0.05183707923 0.1436725408 0.124180764 0.09264881909 0.123526901 0.1882286519 0.1467743814 0.03134934977 0.03134934977 0.03134934977 0.03133957833 0.09979832917 0.1372147948 0.1845382005 0.1270133406}}
{{curve(which) 0 0.3439664543 0.2722287476 0.2801307142 0.2126390189 0.2627002299 0.237623319 0.2289745659 0.209491685 0.2919537723 0.2207257152 0.1942579001 0.2022213936 0.1694435924 0.2289056629 0.2119505703 0.2866941094 0.1387997568 0.2612613738 0.2709796727 0.2150758505 0.2606855333 0.2830046713 0.2627002299 0.1743051857 0.2365771234 0.1383759677 0.1973138005 0.1721783578 0.2680045366 0.2973450124 0.258728236 0.2880711257 0.2880711257 0.2880711257 0.2880405784 0.3152042925 0.3790788651 0.2446159422 0.2276017666} {curve(which) 1 0.7281661034 0.6740817428 0.8202066422 0.7151686549 0.6779980659 0.6891706586 0.6917385459 0.7215952873 0.8238410354 0.839184761 0.7385566831 0.7585275769 0.8648257852 0.7808576822 0.7230190039 0.8429791331 0.910841465 0.8696421385 0.786606431 0.8850684762 0.7748944759 0.8131960034 0.6779980659 0.951146543 0.8896810412 0.911518693 0.943950057 0.8553914428 0.8326833844 0.6273635626 0.7246823311 0.7118432522 0.7118432522 0.7118432522 0.7118694782 0.6648360491 0.5769088268 0.6720442176 0.7383946776} {curve(which) 0 -0.07213255018 0.05368951708 -0.1003373638 0.07219231874 0.05930171534 0.07320601493 0.07928691059 0.06891305745 -0.1157948226 -0.05991046131 0.06718540192 0.03925102949 -0.03426937759 -0.009763340466 0.06503042579 -0.1296732277 -0.04964122549 -0.1309035122 -0.05758608505 -0.1001443192 -0.03558001295 -0.09620071948 0.05930171534 -0.1254517138 -0.1262581497 -0.04989464581 -0.1412638426 -0.02756982669 -0.1006879359 0.07529145479 0.01658944227 8.565396274e-05 8.565396274e-05 8.565396274e-05 8.991353388e-05 0.01995966583 0.04401229322 0.08333983272 0.0340035744}}
{{curve(which) 0 -3.863927134e-08 -0.005574660841 -0.1037815213 0.01933082007 0 0 0 0 0.0027982709 -0.0544523783 -0.04792318866 -0.0176958181 -0.1061859056 -0.02100777067 -0.01945115253 -0.07968087494 0.07801423222 -0.009676366113 -0.009677864611 -0.03206583485 -0.009310216643 -0.01825834997 0 -0.11669112 -0.02325225808 -0.1602820009 -0.1427432895 -0.10720893 -0.02941203304 0.02703136392 -2.906408625e-08 -3.236030111e-08 -3.236030111e-08 -3.236030111e-08 0 0 -0.01229703799 0.02518104948 0} {curve(which) 0 0 0.004060741514 -0.07290724665 0.1191947311 0.0280726999 0.0449459292 0.04511339962 0.04706057906 -0.06703422964 -0.0003228379355 -0.0002844714036 0.08768811822 0.02554347552 0.01782695204 0.01650637016 -0.3473432064 -0.3148325086 -0.2364816219 0.004600019194 -0.02765839547 -0.004612449091 -0.08316776901 0.0280726999 -0.5518454909 -0.4897170365 -0.171635136 -0.4278847873 0.07809129357 -0.08659287542 0.07068887353 0.05121183768 1.2621717e-08 1.2621717e-08 1.2621717e-08 -1.262213711e-08 0.04317118227 0.01672476344 0.1411857158 0.01001892332} {curve(which) 1 1.008825183 1.010339141 1.265746474 0.950532198 1.060985088 0.9638792276 1.043944359 0.9073553085 1.153293729 1.063571215 1.057001948 0.9388025999 1.089437366 1.01197505 1.011739731 1.51608181 1.325875998 1.335215807 1.094135642 1.148782015 1.102980375 1.190483928 1.060985088 1.745692492 1.590125084 1.409072995 1.65968585 1.118175387 1.205062628 0.9913375378 0.7738927603 0.8251045942 0.8251045942 0.8251045942 0.8248898983 0.8782252669 0.9955722094 0.9226909876 0.8150856495}}
}
invert {{parent.invert}}
name ColorMatrix
label "RGB to XYZ"
xpos -40
ypos 32
addUserKnob {20 Gamut}
addUserKnob {3 which}
which {{parent.gamut}}
addUserKnob {12 rxy}
rxy {{curve(which) 1 0.7347 0.713 0.8 0.8 0.64 0.708 0.68 0.68 0.68 0.684 0.7530442228 0.7530444911 0.6997470013 0.8786825105 0.7011810359 0.7011805919 0.780308 0.69848046 0.74 0.73 0.766 0.73 0.71 0.708 0.9173 0.7422 1.0625 0.9175 0.8608 0.7177 0.64 0.7347 0.7347 0.7347 0.7347 0.734699 0.69 0.6898 0.625 0.7351916376} {curve(which) 0 0.2653 0.293 0.3177 0.313 0.33 0.292 0.32 0.32 0.32 0.313 0.3278305767 0.3278310295 0.3290469303 0.3249640074 0.3290141556 0.3290136991 0.304253 0.19302645 0.27 0.28 0.275 0.28 0.31 0.292 0.2502 0.2859 0.3948 0.2983 0.3689 0.3171 0.33 0.2653 0.2653 0.2653 0.2653 0.265301 0.31 0.3206 0.34 0.2648083624}}
addUserKnob {12 gxy}
gxy {{curve(which) 0 0 0.165 0.18 0.1682 0.3 0.17 0.265 0.265 0.265 0.221 0.2995702285 0.2995704905 0.304264039 0.3008887144 0.3006003047 0.3006003955 0.121595 0.32955538 0.17 0.14 0.225 0.165 0.21 0.17 0.2833 0.414 0.3689 0.2983 0.3282 0.228 0.21 0.1152 0.1596 0.1596 0.1596 0.159597 0.18 0.0736 0.28 0.2153361345} {curve(which) 1 1 0.83 0.9 0.9877 0.6 0.797 0.69 0.69 0.69 0.848 0.700699322 0.7006994156 0.6236411451 0.6790547558 0.6837888343 0.6837888243 1.493994 1.02459662 1.14 0.855 0.8 0.84 0.88 0.797 1.7072 1.3035 0.7775 1.2835 0.6156 0.8616 0.71 0.8264 0.8404 0.8404 0.8404 0.840403 0.77 0.9003 0.595 0.7741596639}}
addUserKnob {12 bxy}
bxy {{curve(which) 0 0.0001 0.128 0.065 0.079 0.15 0.131 0.15 0.15 0.15 0.0861 0.07964206674 0.1450115843 0.1349139613 0.09539869461 0.1081544556 0.1453319462 0.095612 0.10844263 0.08 0.1 0.089 0.1 0.09 0.131 0.0856 0.0342 0.0956 0.0756 0.0783 0.1006 0.15 0.1566 0.0366 0.0366 0.0366 0.036598 0.1 0.1166 0.155 0.1301229508} {curve(which) 0 -0.077 0.044 -0.0805 -0.1155 0.06 0.046 0.06 0.06 0.06 -0.102 -0.05493795109 0.05109712509 0.03471744128 -0.02937932683 -0.008688175787 0.05161680362 -0.084589 -0.03467857 -0.1 -0.05 -0.087 -0.03 -0.08 0.046 -0.0708 -0.0833 -0.0332 -0.086 -0.0233 -0.082 0.06 0.0177 0.0001 0.0001 0.0001 0.000105 0.02 0.0374 0.07 0.03483606557}}
addUserKnob {12 wxy}
wxy {{curve(which) 0.33333333 0.32168 0.32168 0.3127 0.3127 0.3127 0.3127 0.32168 0.3127 0.314 0.3127 0.3216831877 0.3216832104 0.3216832894 0.3216832894 0.3216832104 0.3216832894 0.3127 0.3127 0.3127 0.3127 0.3127 0.3127 0.3127 0.3127 0.3135 0.3135 0.3135 0.3127 0.3127 0.3127 0.3127 0.3457 0.3457 0.3457 0.3457 0.345704 0.33243 0.33333333 0.3127 0.3457} {curve(which) 0.33333333 0.33767 0.33767 0.329 0.329 0.329 0.329 0.33767 0.329 0.351 0.329 0.337673316 0.3376736101 0.3376734472 0.3376734472 0.3376736101 0.3376734472 0.329 0.329 0.329 0.329 0.329 0.329 0.329 0.329 0.3305 0.3305 0.3305 0.329 0.329 0.329 0.329 0.3585 0.3585 0.3585 0.3585 0.35854 0.34744 0.33333333 0.329 0.3585}}
}
Output {
name Output
xpos -40
ypos 86
}
end_group
Expression {
expr0 1.15*r-(1.15-1)*b
expr1 0.66*g-(0.66-1)*r
expr2 b
name Expression3
label "X_p Y_p Z"
note_font Helvetica
xpos -40
ypos -335
}
ColorMatrix {
matrix {
{0.41478972 0.579999 0.014648}
{-0.20151 1.120649 0.0531008}
{-0.0166008 0.2648 0.6684799}
}
name ColorMatrix6
label XYZ_TO_LMS
note_font Helvetica
xpos -40
ypos -295
}
Group {
name eotf_inverse_ST2084_
note_font Helvetica
xpos -40
ypos -249
disable {{!parent.domain_range_scale}}
addUserKnob {20 CONSTANTS_tab l CONSTANTS}
addUserKnob {7 m_1}
m_1 {{2610/4096*(1/4)}}
addUserKnob {7 m_2}
m_2 {{1.7*2523/2**5}}
addUserKnob {7 c_1}
c_1 {{3424/4096}}
addUserKnob {7 c_2}
c_2 {{2413/4096*32}}
addUserKnob {7 c_3}
c_3 {{2392/4096*32}}
addUserKnob {7 L_p R 0 10000}
L_p {{parent.L_p}}
}
Input {
inputs 0
name Input
xpos -40
ypos -290
}
Expression {
expr0 "pow(r/L_p, m_1)"
expr1 "pow(g/L_p, m_1)"
expr2 "pow(b/L_p, m_1)"
name Expression4
label Y_p
note_font Helvetica
xpos -40
ypos -255
}
Expression {
expr0 "pow((c_1+c_2*r)/(c_3*r+1), m_2)"
expr1 "pow((c_1+c_2*g)/(c_3*g+1), m_2)"
expr2 "pow((c_1+c_2*b)/(c_3*b+1), m_2)"
name Expression8
label N
note_font Helvetica
xpos -40
ypos -215
}
Output {
name Output
xpos -40
ypos -170
}
end_group
ColorMatrix {
matrix {
{0.5 0.5 0}
{3.524 -4.066708 0.542708}
{0.199076 1.096799 -1.295875}
}
name ColorMatrix2
label LMS_P_TO_IZAZBZ
note_font Helvetica
xpos -40
ypos -215
}
Expression {
temp_name0 d_0
temp_expr0 1.6295499532821565e-11
expr0 r*(1+d)/(1+d*r)-d_0
expr1 g
expr2 b
name Expression1
label Jz
note_font Helvetica
xpos -40
ypos -175
}
Switch {
inputs 2
which {{parent.direction}}
name SwitchDirection
note_font Helvetica
xpos -40
ypos -49
}
Output {
name Output
xpos -40
ypos 42
}
end_group
Dot {
name Dot73
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xff
selected true
xpos 5034
ypos 1114
}
Group {
name ToneScale29
note_font Helvetica
selected true
xpos 5000
ypos 1148
addUserKnob {20 ToneScale}
addUserKnob {4 norm M {none luminance "max rgb" "weighted power" "" ""}}
norm "weighted power"
addUserKnob {35 weight_presets l "" +STARTLINE M {weights/basic "knobs this \{nmult 1.0 weights \{1 1 1\} pow 4\}" weights/yellow "knobs this \{nmult 0.83743219 weights \{1.22 1.2 0.58\} pow 5\}" "" "" ""}}
addUserKnob {78 weights l "" -STARTLINE n 3}
weights {1.22 1.2 0.58}
addUserKnob {7 nmult l mult R 0.1 1}
nmult 0.83743219
addUserKnob {3 pow l power -STARTLINE}
pow 5
addUserKnob {4 direction t "Apply tonescale in forward or inverse direction" M {forward inverse}}
addUserKnob {26 ""}
addUserKnob {26 display_label l " " T "Single Stage Tone Scale"}
addUserKnob {35 presets l "" t "display output presets." +STARTLINE M {luminance/SDR "knobs this \{lum \{0.02 4.8 48\} override_ssts_params 0\}" "luminance/P3D65 ST2084 108nits 7.2nits" "knobs this \{lum \{0.0001 7.2 108\} override_ssts_params 0\}" "luminance/P3D65 ST2084 1000nits 15nits" "knobs this \{lum \{0.0001 15 1000\} override_ssts_params 0\}" "luminance/P3D65 ST2084 2000nits 15nits" "knobs this \{lum \{0.0001 15 2000\} override_ssts_params 0\}" "luminance/P3D65 ST2084 2000nits 15nits" "knobs this \{lum \{0.0001 15 2000\} override_ssts_params 0\}" "luminance/P3D65 ST2084 4000nits 15nits" "knobs this \{lum \{0.0001 15 4000\} override_ssts_params 0\}" luminance/Rec2020_HLG_1000nits_15nits "knobs this \{lum \{0.0001 15 1000\} override_ssts_params 0\}" luminance/Rec2020_ST2084_1000nits_15nits "knobs this \{lum \{0.0001 15 1000\} override_ssts_params 0\}" luminance/Rec2020_ST2084_2000nits_15nits "knobs this \{lum \{0.0001 15 2000\} override_ssts_params 0\}" luminance/Rec2020_ST2084_4000nits_15nits "knobs this \{lum \{0.0001 15 4000\} override_ssts_params 0\}" luminance/OCES "knobs this \{lum \{0.0001 4.8 10000\} override_ssts_params 0\}" ""}}
addUserKnob {78 lum l "" t "SSTS Display Luminance: \ny_min y_mid y_max\n\nAccording to Zach Lewis's ACES_OT\nhttps://gist.github.com/zachlewis/786c0be941868644c993fde1c3515c2c\n\nStandard Cinema: \n0.02 4.8 48\nDolby Cinema: \n0.0001 7.2 108\nDolby Pulsar: \n0.005 15 4000\nDolby PRR-4220: \n0.005 10 600\nSony BVM-X300: \n0.0001 10 1000\nACES OCES: \n0.0001 4.8 10000\n\n" -STARTLINE n 3}
lum {0.02 4.8 48}
addUserKnob {35 presets_ssts_param l "" t "If you want to override the default SSTS parameters and play around, here are some useful starting points." +STARTLINE M {presets/default "knobs this \{override_ssts_params 0 pctLow 0.35 pctHigh 0.89 slope \{0 1.55 0.\}\}" presets/sdr "knobs this \{override_ssts_params 1 pctLow 0.35 pctHigh 0.89 slope \{0.1 1.6 0.01\}\}" presets/high "knobs this \{override_ssts_params 1 pctLow 0.2 pctHigh 0.89 slope \{0.28 1.75 0.01\}\}" presets/med "knobs this \{override_ssts_params 1 pctLow 0.40 pctHigh 0.89 slope \{0.38 1.3 0.01\}\}" presets/med-low "knobs this \{override_ssts_params 1 pctLow 0.40 pctHigh 0.80 slope \{0.38 1.42 0.01\}\}" presets/low "knobs this \{override_ssts_params 1 pctLow 0.40 pctHigh 0.80 slope \{0.38 1.2 0.01\}\}" "" "" "" "" ""}}
addUserKnob {6 override_ssts_params l "customize ssts params" t "Enable overrides of SSTS params.\n\nOtherwise the values will be calculated automatically by the algorithm." -STARTLINE}
addUserKnob {6 use_c9 l "use c9" +STARTLINE}
addUserKnob {7 exposure R -5 5}
addUserKnob {7 pctLow l knee}
pctLow 0.35
addUserKnob {7 pctHigh l shoulder}
pctHigh 0.89
addUserKnob {78 slope n 3}
slope {0 1.55 0}
}
BackdropNode {
inputs 0
name BackdropNode1
tile_color 0x232323ff
label "Norm\n\n\n\n"
note_font Helvetica
note_font_size 25
note_font_color 0xffffffff
xpos -553
ypos -53
bdwidth 522
bdheight 275
z_order -10
}
BackdropNode {
inputs 0
name BackdropNode2
tile_color 0x232323ff
label "Forward\n\n\n\n"
note_font Helvetica
note_font_size 25
note_font_color 0xffffffff
xpos -413
ypos 228
bdwidth 385
bdheight 442
z_order -10
}
BackdropNode {
inputs 0
name BackdropNode3
tile_color 0x23232301
label "Inverse\n\n\n\n\n\n\n\n"
note_font Helvetica
note_font_size 25
note_font_color 0xffffffff
xpos 16
ypos 229
bdwidth 354
bdheight 446
z_order -10
}
Input {
inputs 0
name Input
xpos -40
ypos -170
}
Dot {
name Dot1
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xff
xpos -6
ypos 34
}
set N277a2b30 [stack 0]
Dot {
name Dot10
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xff
xpos -6
ypos 514
}
set N277a7ac0 [stack 0]
push $N277a2b30
Dot {
name Dot2
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xff
xpos -126
ypos 34
}
Dot {
name Dot12
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xff
xpos -246
ypos 34
}
set N277b18b0 [stack 0]
Dot {
name Dot3
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xff
xpos -366
ypos 34
}
set N277b6780 [stack 0]
Dot {
name Dot11
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xff
xpos -486
ypos 34
}
Expression {
temp_name0 m
temp_expr0 1e-8
temp_name1 mx
temp_expr1 max(r,g,b)
temp_name2 p1
temp_expr2 parent.pow
temp_name3 p2
temp_expr3 parent.pow-1
channel0 rgb
expr0 (fabs(r)SSTS Display Luminance: \ny_min y_mid y_max\n\nAccording to Zach Lewis's ACES_OT\nhttps://gist.github.com/zachlewis/786c0be941868644c993fde1c3515c2c\n\nStandard Cinema: \n0.02 4.8 48\nDolby Cinema: \n0.0001 7.2 108\nDolby Pulsar: \n0.005 15 4000\nDolby PRR-4220: \n0.005 10 600\nSony BVM-X300: \n0.0001 10 1000\nACES OCES: \n0.0001 4.8 10000\n\n" n 3}
lum {{parent.lum} 4.8 {parent.lum}}
addUserKnob {6 override_ssts_params l "override ssts params" t "Enable overrides of SSTS params.\n\nOtherwise the values will be calculated automatically by the algorithm." +STARTLINE}
override_ssts_params {{parent.ACES_SSTS.AcesSSTSKernel_override_curve_params}}
addUserKnob {7 exposure R -5 5}
exposure {{parent.exposure}}
addUserKnob {7 knee}
knee {{parent.pctLow}}
addUserKnob {7 shoulder}
shoulder {{parent.pctHigh}}
addUserKnob {78 slope n 3}
slope {{parent.slope} {parent.slope} {parent.slope}}
addUserKnob {20 TsParams_tab l TsParams}
addUserKnob {7 expShift R -4 4}
expShift {{"override_ssts_params ? exposure : 0"}}
addUserKnob {13 minPoint t "x; // ACES\ny; // luminance\nz; // slope"}
minPoint {{"pow(2, log(0.18*pow(2, MIN_STOP_RRT+((MIN_STOP_SDR-MIN_STOP_RRT)/(log10(MIN_LUM_SDR)-log10(MIN_LUM_RRT)))*(log10(minPoint.y)-log10(MIN_LUM_RRT))))/log(2)-expShift)"} {lum.0} {override_ssts_params?slope.0:0}}
addUserKnob {13 midPoint t "x; // ACES\ny; // luminance\nz; // slope"}
midPoint {{"pow(2, ((log(0.18)/log(2)-expShift)))"} {lum.1} {override_ssts_params?slope.1:1.55}}
addUserKnob {13 maxPoint t "x; // ACES\ny; // luminance\nz; // slope"}
maxPoint {{"pow(2, log(0.18*pow(2, (MAX_STOP_SDR+(MAX_STOP_RRT-MAX_STOP_SDR)/(log10(MAX_LUM_RRT)-log10(MAX_LUM_SDR))*(log10(maxPoint.y)-log10(MAX_LUM_SDR)))))/log(2)-expShift)"} {lum.2} {override_ssts_params?slope.2:0}}
addUserKnob {7 knotIncLow}
knotIncLow {{"(log10(midPoint.x) - log10(minPoint.x)) / 3.0"}}
addUserKnob {7 knotIncHigh}
knotIncHigh {{"(log10(maxPoint.x) - log10(midPoint.x)) / 3.0"}}
addUserKnob {7 pctLow}
pctLow {{0.18+(0.35-0.18)/(MIN_STOP_SDR-MIN_STOP_RRT)*(log(minPoint.x/0.18)/log(2)-MIN_STOP_RRT)}}
addUserKnob {7 pctHigh}
pctHigh {{0.89+(0.90-0.89)/(MAX_STOP_SDR-MAX_STOP_RRT)*(log(maxPoint.x/0.89)/log(2)-MAX_STOP_RRT)}}
addUserKnob {78 coefsLow n 5}
coefsLow {{"(minPoint.z * (log10(minPoint.x)-0.5*knotIncLow)) + ( log10(minPoint.y) - minPoint.z * log10(minPoint.x))"} {"(minPoint.z * (log10(minPoint.x)+0.5*knotIncLow)) + ( log10(minPoint.y) - minPoint.z * log10(minPoint.x))"} {log10(minPoint.y)+pctLow*(log10(midPoint.y)-log10(minPoint.y))} {"(midPoint.z * (log10(midPoint.x)-0.5*knotIncLow)) + ( log10(midPoint.y) - midPoint.z * log10(midPoint.x))"} {"(midPoint.z * (log10(midPoint.x)+0.5*knotIncLow)) + ( log10(midPoint.y) - midPoint.z * log10(midPoint.x))"}}
addUserKnob {78 coefsHigh n 5}
coefsHigh {{"(midPoint.z * (log10(midPoint.x)-0.5*knotIncHigh)) + ( log10(midPoint.y) - midPoint.z * log10(midPoint.x))"} {"(midPoint.z * (log10(midPoint.x)+0.5*knotIncHigh)) + ( log10(midPoint.y) - midPoint.z * log10(midPoint.x))"} {log10(midPoint.y)+pctHigh*(log10(maxPoint.y)-log10(midPoint.y))} {"(maxPoint.z * (log10(maxPoint.x)-0.5*knotIncHigh)) + ( log10(maxPoint.y) - maxPoint.z * log10(maxPoint.x))"} {"(maxPoint.z * (log10(maxPoint.x)+0.5*knotIncHigh)) + ( log10(maxPoint.y) - maxPoint.z * log10(maxPoint.x))"}}
addUserKnob {7 KNOT_INC_LOW}
KNOT_INC_LOW {{"(log10(midPoint.x) - log10(minPoint.x)) / (N_KNOTS_LOW - 1)"}}
addUserKnob {7 KNOT_INC_HIGH}
KNOT_INC_HIGH {{"(log10(maxPoint.x) - log10(midPoint.x)) / (N_KNOTS_HIGH - 1)"}}
addUserKnob {78 KNOT_Y_LOW n 4}
KNOT_Y_LOW {{"(coefsLow.0 + coefsLow.1) / 2"} {"(coefsLow.1 + coefsLow.2) / 2"} {"(coefsLow.2 + coefsLow.3) / 2"} {"(coefsLow.3 + coefsLow.4) / 2"}}
addUserKnob {78 KNOT_Y_HIGH n 4}
KNOT_Y_HIGH {{"(coefsHigh.0 + coefsHigh.1) / 2"} {"(coefsHigh.1 + coefsHigh.2) / 2"} {"(coefsHigh.2 + coefsHigh.3) / 2"} {"(coefsHigh.3 + coefsHigh.4) / 2"}}
addUserKnob {20 Constants_tab l const}
addUserKnob {3 N_KNOTS_LOW}
N_KNOTS_LOW 4
addUserKnob {3 N_KNOTS_HIGH}
N_KNOTS_HIGH 4
addUserKnob {7 MIN_STOP_SDR R -20 20}
MIN_STOP_SDR -6.5
addUserKnob {7 MAX_STOP_SDR R -20 20}
MAX_STOP_SDR 6.5
addUserKnob {7 MIN_STOP_RRT R -20 20}
MIN_STOP_RRT -15
addUserKnob {7 MAX_STOP_RRT R -20 20}
MAX_STOP_RRT 18
addUserKnob {7 MIN_LUM_SDR R 0 0.1}
MIN_LUM_SDR 0.02
addUserKnob {7 MAX_LUM_SDR R 0 100}
MAX_LUM_SDR 48
addUserKnob {7 MIN_LUM_RRT R 0 0.1}
MIN_LUM_RRT 0.0001
addUserKnob {7 MAX_LUM_RRT R 0 10000}
MAX_LUM_RRT 10000
}
Input {
inputs 0
name Input
xpos -1030
ypos -634
}
Dot {
name Dot25
label " "
xpos -996
ypos -318
}
set N2783c8e0 [stack 0]
Dot {
name Dot26
label " "
xpos -996
ypos 1506
}
push $N2783c8e0
Dot {
name Dot4
label " "
xpos -886
ypos -318
}
set N27646450 [stack 0]
Dot {
name Dot5
label " "
xpos -776
ypos -318
}
set N2764b130 [stack 0]
Dot {
name Dot2
label " "
xpos -666
ypos -318
}
set N2764ff50 [stack 0]
Dot {
name Dot3
label " "
xpos -556
ypos -318
}
set N27654df0 [stack 0]
Expression {
temp_name0 logr
temp_expr0 "log10( max(r, 1e-10 ))"
temp_name1 logg
temp_expr1 "log10( max(g, 1e-10 ))"
temp_name2 logb
temp_expr2 "log10( max(b, 1e-10 ))"
expr0 "logr <= log10(minPoint.y)"
expr1 "logg <= log10(minPoint.y)"
expr2 "logb <= log10(minPoint.y)"
name segment_bottom
xpos -590
ypos -202
}
Dot {
name Dot1
label " "
xpos -556
ypos 162
}
push $N27654df0
Dot {
name Dot7
label " "
xpos -336
ypos -318
}
set N2766cc90 [stack 0]
Expression {
temp_name0 logr
temp_expr0 "log10( max(r, 1e-10 ))"
temp_name1 logg
temp_expr1 "log10( max(g, 1e-10 ))"
temp_name2 logb
temp_expr2 "log10( max(b, 1e-10 ))"
channel0 {rgba.red -rgba.green -rgba.blue none}
expr0 log10(minPoint.x)
expr1 log10(minPoint.x)
expr2 log10(minPoint.x)
expr3 1
name Expression
xpos -370
ypos -202
}
Merge2 {
inputs 2
operation multiply
also_merge all
name Multiply3
xpos -370
ypos 158
}
Dot {
name Dot27
label " "
xpos -336
ypos 786
}
push $N2764ff50
Expression {
temp_name0 logr
temp_expr0 "log10( max(r, 1e-10 ))"
temp_name1 logg
temp_expr1 "log10( max(g, 1e-10 ))"
temp_name2 logb
temp_expr2 "log10( max(b, 1e-10 ))"
expr0 "( logr > log10(minPoint.y) ) && ( logr <= log10(midPoint.y) )"
expr1 "( logg > log10(minPoint.y) ) && ( logg <= log10(midPoint.y) )"
expr2 "( logb > log10(minPoint.y) ) && ( logb <= log10(midPoint.y) )"
name segment_low
xpos -700
ypos -202
}
Dot {
name Dot22
label " "
xpos -666
ypos 354
}
push $N2766cc90
Dot {
name Dot9
label " "
xpos -6
ypos -318
}
set N276a8390 [stack 0]
Dot {
name Dot6
label " "
xpos -6
ypos -174
}
set N276ad120 [stack 0]
Dot {
name Dot8
label " "
xpos 214
ypos -174
}
set N276b1f70 [stack 0]
Dot {
name Dot13
label " "
xpos 434
ypos -174
}
Dot {
name Dot19
xpos 434
ypos -78
}
set N276bbd20 [stack 0]
Expression {
temp_name0 logy
temp_expr0 "log10( max(b, 1e-10 ))"
temp_name1 low
temp_expr1 "(logy > KNOT_Y_LOW.0) && (logy <= KNOT_Y_LOW.1)"
temp_name2 mid
temp_expr2 "(logy > KNOT_Y_LOW.1) && (logy <= KNOT_Y_LOW.2)"
temp_name3 high
temp_expr3 "(logy > KNOT_Y_LOW.2) && (logy <= KNOT_Y_LOW.3)"
expr0 "low ? coefsLow.0 : mid ? coefsLow.1 : coefsLow.2"
expr1 "low ? coefsLow.1 : mid ? coefsLow.2 : coefsLow.3"
expr2 "low ? coefsLow.2 : mid ? coefsLow.3 : coefsLow.4"
expr3 "low ? 0 : mid ? 1 : high ? 2 : 0"
name inv_cfLow5
xpos 290
ypos -82
}
ColorMatrix {
channels {rgba.red rgba.green rgba.blue -rgba.alpha}
matrix {
{0.5 -1 0.5}
{-1 1 0}
{0.5 0.5 0}
}
name inv_basis_low5
xpos 290
ypos -34
}
push $N276bbd20
MergeExpression {
inputs 2
temp_name0 logy
temp_expr0 "log10(max(Bb, 1e-10))"
expr0 Ar
expr1 Ag
expr2 Ab-logy
expr3 Aa
name c_minus_logy5
xpos 400
ypos -34
}
Expression {
temp_name0 j
temp_expr0 a
temp_name1 d
temp_expr1 "sqrt(g*g - 4*r*b)"
temp_name2 t
temp_expr2 "(2.*b)/(-sqrt(g*g - 4*r*b)-g)"
expr0 0
channel1 {-rgba.red rgba.green -rgba.blue none}
expr1 0
channel2 {-rgba.red -rgba.green rgba.blue none}
expr2 "log10(minPoint.x) + (t +j) * KNOT_INC_LOW"
expr3 1
maskChannelInput -rgba.alpha
unpremult -rgba.alpha
name inv_knot_vals4
xpos 400
ypos 14
addUserKnob {20 User}
addUserKnob {7 knotIncLow}
knotIncLow {{parent.knotIncLow}}
addUserKnob {13 min l Min}
min {{parent.min.x} {parent.min.y} {parent.minSlope}}
}
push 0
push $N276ad120
Dot {
name Dot10
xpos -6
ypos -78
}
set N276f8540 [stack 0]
Expression {
temp_name0 logy
temp_expr0 "log10( max(r, 1e-10 ))"
temp_name1 low
temp_expr1 "(logy > KNOT_Y_LOW.0) && (logy <= KNOT_Y_LOW.1)"
temp_name2 mid
temp_expr2 "(logy > KNOT_Y_LOW.1) && (logy <= KNOT_Y_LOW.2)"
temp_name3 high
temp_expr3 "(logy > KNOT_Y_LOW.2) && (logy <= KNOT_Y_LOW.3)"
expr0 "low ? coefsLow.0 : mid ? coefsLow.1 : coefsLow.2"
expr1 "low ? coefsLow.1 : mid ? coefsLow.2 : coefsLow.3"
expr2 "low ? coefsLow.2 : mid ? coefsLow.3 : coefsLow.4"
expr3 "low ? 0 : mid ? 1 : high ? 2 : 0"
name inv_cfLow
xpos -150
ypos -82
}
ColorMatrix {
channels {rgba.red rgba.green rgba.blue -rgba.alpha}
matrix {
{0.5 -1 0.5}
{-1 1 0}
{0.5 0.5 0}
}
name inv_basis_low
xpos -150
ypos -34
}
push $N276f8540
MergeExpression {
inputs 2
temp_name0 logy
temp_expr0 "log10(max(Br, 1e-10))"
expr0 Ar
expr1 Ag
expr2 Ab-logy
expr3 Aa
name c_minus_logy
xpos -40
ypos -34
}
Expression {
temp_name0 j
temp_expr0 a
temp_name1 d
temp_expr1 "sqrt(g*g - 4*r*b)"
temp_name2 t
temp_expr2 "(2.*b)/(-sqrt(g*g - 4*r*b)-g)"
expr0 "log10(minPoint.x) + (t +j) * KNOT_INC_LOW"
channel1 {-rgba.red rgba.green -rgba.blue none}
expr1 0
channel2 {-rgba.red -rgba.green rgba.blue none}
expr2 0
expr3 1
maskChannelInput -rgba.alpha
unpremult -rgba.alpha
name inv_knot_vals
xpos -40
ypos 14
addUserKnob {20 User}
addUserKnob {7 knotIncLow}
knotIncLow {{parent.knotIncLow}}
addUserKnob {13 min l Min}
min {{parent.min.x} {parent.min.y} {parent.minSlope}}
}
push $N276b1f70
Dot {
name Dot18
xpos 214
ypos -78
}
set N27734b00 [stack 0]
Expression {
temp_name0 logy
temp_expr0 "log10( max(g, 1e-10 ))"
temp_name1 low
temp_expr1 "(logy > KNOT_Y_LOW.0) && (logy <= KNOT_Y_LOW.1)"
temp_name2 mid
temp_expr2 "(logy > KNOT_Y_LOW.1) && (logy <= KNOT_Y_LOW.2)"
temp_name3 high
temp_expr3 "(logy > KNOT_Y_LOW.2) && (logy <= KNOT_Y_LOW.3)"
expr0 "low ? coefsLow.0 : mid ? coefsLow.1 : coefsLow.2"
expr1 "low ? coefsLow.1 : mid ? coefsLow.2 : coefsLow.3"
expr2 "low ? coefsLow.2 : mid ? coefsLow.3 : coefsLow.4"
expr3 "low ? 0 : mid ? 1 : high ? 2 : 0"
name inv_cfLow4
xpos 70
ypos -82
}
ColorMatrix {
channels {rgba.red rgba.green rgba.blue -rgba.alpha}
matrix {
{0.5 -1 0.5}
{-1 1 0}
{0.5 0.5 0}
}
name inv_basis_low4
xpos 70
ypos -34
}
push $N27734b00
MergeExpression {
inputs 2
temp_name0 logy
temp_expr0 "log10(max(Bg, 1e-10))"
expr0 Ar
expr1 Ag
expr2 Ab-logy
expr3 Aa
name c_minus_logy4
xpos 180
ypos -34
}
Expression {
temp_name0 j
temp_expr0 a
temp_name1 d
temp_expr1 "sqrt(g*g - 4*r*b)"
temp_name2 t
temp_expr2 "(2.*b)/(-sqrt(g*g - 4*r*b)-g)"
expr0 0
channel1 {-rgba.red rgba.green -rgba.blue none}
expr1 "log10(minPoint.x) + (t +j) * KNOT_INC_LOW"
channel2 {-rgba.red -rgba.green rgba.blue none}
expr2 0
expr3 1
maskChannelInput -rgba.alpha
unpremult -rgba.alpha
name inv_knot_vals5
xpos 180
ypos 14
addUserKnob {20 User}
addUserKnob {7 knotIncLow}
knotIncLow {{parent.knotIncLow}}
addUserKnob {13 min l Min}
min {{parent.min.x} {parent.min.y} {parent.minSlope}}
}
Merge2 {
inputs 3+1
operation plus
bbox B
name Merge2
xpos 180
ypos 134
}
Merge2 {
inputs 2
operation multiply
also_merge all
name Multiply1
xpos 180
ypos 350
}
Dot {
name Dot28
label " "
xpos 214
ypos 786
}
push 0
push $N2764b130
Expression {
temp_name0 logr
temp_expr0 "log10( max(r, 1e-10 ))"
temp_name1 logg
temp_expr1 "log10( max(g, 1e-10 ))"
temp_name2 logb
temp_expr2 "log10( max(b, 1e-10 ))"
expr0 "( logr >= log10(midPoint.y) ) && ( logr < log10(maxPoint.y) )"
expr1 "( logg >= log10(midPoint.y) ) && ( logg < log10(maxPoint.y) )"
expr2 "( logb >= log10(midPoint.y) ) && ( logb < log10(maxPoint.y) )"
name segment_high
xpos -810
ypos -202
}
Dot {
name Dot23
label " "
xpos -776
ypos 474
}
push $N276a8390
Dot {
name Dot14
label " "
xpos 764
ypos -318
}
set N275a9e90 [stack 0]
Dot {
name Dot15
label " "
xpos 764
ypos -174
}
set N275aec20 [stack 0]
Dot {
name Dot17
label " "
xpos 984
ypos -174
}
set N275b3a70 [stack 0]
Dot {
name Dot20
label " "
xpos 1204
ypos -174
}
Dot {
name Dot16
xpos 1204
ypos -78
}
set N275bd710 [stack 0]
Expression {
temp_name0 logy
temp_expr0 "log10( max(b, 1e-10 ))"
temp_name1 low
temp_expr1 "(logy > KNOT_Y_HIGH.0) && (logy <= KNOT_Y_HIGH.1)"
temp_name2 mid
temp_expr2 "(logy > KNOT_Y_HIGH.1) && (logy <= KNOT_Y_HIGH.2)"
temp_name3 high
temp_expr3 "(logy > KNOT_Y_HIGH.2) && (logy <= KNOT_Y_HIGH.3)"
expr0 "low ? coefsHigh.0 : mid ? coefsHigh.1 : coefsHigh.2"
expr1 "low ? coefsHigh.1 : mid ? coefsHigh.2 : coefsHigh.3"
expr2 "low ? coefsHigh.2 : mid ? coefsHigh.3 : coefsHigh.4"
expr3 "low ? 0 : mid ? 1 : high ? 2 : 0"
name inv_cfLow3
xpos 1060
ypos -82
}
ColorMatrix {
channels {rgba.red rgba.green rgba.blue -rgba.alpha}
matrix {
{0.5 -1 0.5}
{-1 1 0}
{0.5 0.5 0}
}
name inv_basis_low3
xpos 1060
ypos -34
}
push $N275bd710
MergeExpression {
inputs 2
temp_name0 logy
temp_expr0 "log10(max(Bb, 1e-10))"
expr0 Ar
expr1 Ag
expr2 Ab-logy
expr3 Aa
name c_minus_logy3
xpos 1170
ypos -34
}
Expression {
temp_name0 j
temp_expr0 a
temp_name1 d
temp_expr1 "sqrt(g*g - 4*r*b)"
temp_name2 t
temp_expr2 "(2.*b) / (-sqrt(g*g - 4*r*b) - g)"
expr0 0
channel1 {-rgba.red rgba.green -rgba.blue none}
expr1 0
channel2 {-rgba.red -rgba.green rgba.blue none}
expr2 "log10(midPoint.x) + (t +j) * KNOT_INC_HIGH"
expr3 1
maskChannelInput -rgba.alpha
unpremult -rgba.alpha
name inv_knot_vals3
xpos 1170
ypos 14
}
push 0
push $N275aec20
Dot {
name Dot11
xpos 764
ypos -78
}
set N275f85f0 [stack 0]
Expression {
temp_name0 logy
temp_expr0 "log10( max(r, 1e-10 ))"
temp_name1 low
temp_expr1 "(logy > KNOT_Y_HIGH.0) && (logy <= KNOT_Y_HIGH.1)"
temp_name2 mid
temp_expr2 "(logy > KNOT_Y_HIGH.1) && (logy <= KNOT_Y_HIGH.2)"
temp_name3 high
temp_expr3 "(logy > KNOT_Y_HIGH.2) && (logy <= KNOT_Y_HIGH.3)"
expr0 "low ? coefsHigh.0 : mid ? coefsHigh.1 : coefsHigh.2"
expr1 "low ? coefsHigh.1 : mid ? coefsHigh.2 : coefsHigh.3"
expr2 "low ? coefsHigh.2 : mid ? coefsHigh.3 : coefsHigh.4"
expr3 "low ? 0 : mid ? 1 : high ? 2 : 0"
name inv_cfLow1
xpos 620
ypos -82
}
ColorMatrix {
channels {rgba.red rgba.green rgba.blue -rgba.alpha}
matrix {
{0.5 -1 0.5}
{-1 1 0}
{0.5 0.5 0}
}
name inv_basis_low1
xpos 620
ypos -34
}
push $N275f85f0
MergeExpression {
inputs 2
temp_name0 logy
temp_expr0 "log10(max(Br, 1e-10))"
expr0 Ar
expr1 Ag
expr2 Ab-logy
expr3 Aa
name c_minus_logy1
xpos 730
ypos -34
}
Expression {
temp_name0 j
temp_expr0 a
temp_name1 d
temp_expr1 "sqrt(g*g - 4*r*b)"
temp_name2 t
temp_expr2 "(2.*b) / (-sqrt(g*g - 4*r*b) - g)"
expr0 "log10(midPoint.x) + (t +j) * KNOT_INC_HIGH"
channel1 {-rgba.red rgba.green -rgba.blue none}
expr1 0
channel2 {-rgba.red -rgba.green rgba.blue none}
expr2 0
expr3 1
maskChannelInput -rgba.alpha
unpremult -rgba.alpha
name inv_knot_vals1
xpos 730
ypos 14
}
push $N275b3a70
Dot {
name Dot12
xpos 984
ypos -78
}
set N276337a0 [stack 0]
Expression {
temp_name0 logy
temp_expr0 "log10( max(g, 1e-10 ))"
temp_name1 low
temp_expr1 "(logy > KNOT_Y_HIGH.0) && (logy <= KNOT_Y_HIGH.1)"
temp_name2 mid
temp_expr2 "(logy > KNOT_Y_HIGH.1) && (logy <= KNOT_Y_HIGH.2)"
temp_name3 high
temp_expr3 "(logy > KNOT_Y_HIGH.2) && (logy <= KNOT_Y_HIGH.3)"
expr0 "low ? coefsHigh.0 : mid ? coefsHigh.1 : coefsHigh.2"
expr1 "low ? coefsHigh.1 : mid ? coefsHigh.2 : coefsHigh.3"
expr2 "low ? coefsHigh.2 : mid ? coefsHigh.3 : coefsHigh.4"
expr3 "low ? 0 : mid ? 1 : high ? 2 : 0"
name inv_cfLow2
xpos 840
ypos -82
}
ColorMatrix {
channels {rgba.red rgba.green rgba.blue -rgba.alpha}
matrix {
{0.5 -1 0.5}
{-1 1 0}
{0.5 0.5 0}
}
name inv_basis_low2
xpos 840
ypos -34
}
push $N276337a0
MergeExpression {
inputs 2
temp_name0 logy
temp_expr0 "log10(max(Bg, 1e-10))"
expr0 Ar
expr1 Ag
expr2 Ab-logy
expr3 Aa
name c_minus_logy2
xpos 950
ypos -34
}
Expression {
temp_name0 j
temp_expr0 a
temp_name1 d
temp_expr1 "sqrt(g*g - 4*r*b)"
temp_name2 t
temp_expr2 "(2.*b) / (-sqrt(g*g - 4*r*b) - g)"
expr0 0
channel1 {-rgba.red rgba.green -rgba.blue none}
expr1 "log10(midPoint.x) + (t +j) * KNOT_INC_HIGH"
channel2 {-rgba.red -rgba.green rgba.blue none}
expr2 0
expr3 1
maskChannelInput -rgba.alpha
unpremult -rgba.alpha
name inv_knot_vals2
xpos 950
ypos 14
}
Merge2 {
inputs 3+1
operation plus
bbox B
output rgb
name Merge1
xpos 950
ypos 134
}
Merge2 {
inputs 2
operation multiply
also_merge all
name Multiply2
xpos 950
ypos 470
}
Dot {
name Dot29
label " "
xpos 984
ypos 786
}
push $N27646450
Expression {
temp_name0 logr
temp_expr0 "log10( max(r, 1e-10 ))"
temp_name1 logg
temp_expr1 "log10( max(g, 1e-10 ))"
temp_name2 logb
temp_expr2 "log10( max(b, 1e-10 ))"
expr0 "logr >= log10(maxPoint.y) ? 1 : 0"
expr1 "logg >= log10(maxPoint.y) ? 1 : 0"
expr2 "logb >= log10(maxPoint.y) ? 1 : 0"
name segment_peak
xpos -920
ypos -202
}
Dot {
name Dot24
label " "
xpos -886
ypos 618
}
push $N275a9e90
Dot {
name Dot21
label " "
xpos 1534
ypos -318
}
Expression {
temp_name0 logr
temp_expr0 "log10( max(r, 1e-10 ))"
temp_name1 logg
temp_expr1 "log10( max(g, 1e-10 ))"
temp_name2 logb
temp_expr2 "log10( max(b, 1e-10 ))"
channel0 {rgba.red -rgba.green -rgba.blue none}
expr0 log10(maxPoint.x)
expr1 log10(maxPoint.x)
expr2 log10(maxPoint.x)
expr3 1
name proc_low1
label Expression
xpos 1500
ypos -208
}
Merge2 {
inputs 2
operation multiply
also_merge all
name Multiply4
xpos 1500
ypos 614
}
Merge2 {
inputs 4+1
operation plus
bbox B
output rgb
name Merge3
xpos 510
ypos 1118
}
Expression {
channel0 {rgba.red -rgba.green -rgba.blue none}
expr0 pow(10,r)
expr1 pow(10,g)
expr2 pow(10,b)
name Expression13
xpos 510
ypos 1238
}
Copy {
inputs 2
from0 rgba.alpha
to0 rgba.alpha
name Copy1
xpos 510
ypos 1496
}
Output {
name Output1
xpos 510
ypos 1814
}
end_group
MergeExpression {
inputs 2
expr0 Ar==0?0:Br/Ar
expr1 Ag==0?0:Bg/Ag
expr2 Ab==0?0:Bb/Ab
name MergeDivideReverse1
xpos 200
ypos 430
disable {{!parent.norm}}
}
Merge2 {
inputs 2
operation multiply
bbox B
Achannels rgb
Bchannels rgb
output rgb
name Merge1
note_font Helvetica
xpos 200
ypos 511
disable {{!parent.norm}}
}
Dot {
name Dot9
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xff
xpos 234
ypos 634
}
push $N277a7ac0
push $N277f3110
Dot {
name Dot7
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xff
xpos -126
ypos 274
}
Dot {
name Dot13
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xff
xpos -126
ypos 314
}
set N275256a0 [stack 0]
push $N275256a0
Dot {
name Dot14
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xff
xpos -246
ypos 314
}
set N2752a5a0 [stack 0]
Group {
name ssts
xpos -280
ypos 350
addUserKnob {20 ssts_tab l ssts}
addUserKnob {26 display_label l " " T "Display Settings"}
addUserKnob {78 lum l luminance t "SSTS Display Luminance: \ny_min y_mid y_max\n\nAccording to Zach Lewis's ACES_OT\nhttps://gist.github.com/zachlewis/786c0be941868644c993fde1c3515c2c\n\nStandard Cinema: \n0.02 4.8 48\nDolby Cinema: \n0.0001 7.2 108\nDolby Pulsar: \n0.005 15 4000\nDolby PRR-4220: \n0.005 10 600\nSony BVM-X300: \n0.0001 10 1000\nACES OCES: \n0.0001 4.8 10000\n\n" n 3}
lum {{parent.lum} {parent.lum} {parent.lum}}
addUserKnob {6 override_ssts_params l "override ssts params" t "Enable overrides of SSTS params.\n\nOtherwise the values will be calculated automatically by the algorithm." +STARTLINE}
override_ssts_params {{parent.override_ssts_params}}
addUserKnob {7 exposure R -5 5}
exposure {{parent.exposure}}
addUserKnob {7 knee}
knee {{parent.pctLow}}
addUserKnob {7 shoulder}
shoulder {{parent.pctHigh}}
addUserKnob {78 slope n 3}
slope {{parent.slope} {parent.slope} {parent.slope}}
addUserKnob {20 TsParams_tab l TsParams}
addUserKnob {7 mid_lum l "mid lum" R 0 20}
mid_lum {{parent.lum.1}}
addUserKnob {7 expShift R -4 4}
expShift {{"(parent.override_ssts_params ? exposure : 0) + (mid_lum<= 4.8 ? 0 : \[sample parent.expShift r 0 0] )"}}
addUserKnob {13 minPoint t "x; // ACES\ny; // luminance\nz; // slope"}
minPoint {{"pow(2, log(0.18*pow(2, MIN_STOP_RRT+((MIN_STOP_SDR-MIN_STOP_RRT)/(log10(MIN_LUM_SDR)-log10(MIN_LUM_RRT)))*(log10(minPoint.y)-log10(MIN_LUM_RRT))))/log(2)-expShift)"} {lum.0} {override_ssts_params?slope.0:0}}
addUserKnob {13 midPoint t "x; // ACES\ny; // luminance\nz; // slope"}
midPoint {{"pow(2, ((log(0.18)/log(2)-expShift)))"} 4.8 {override_ssts_params?slope.1:1.55}}
addUserKnob {13 maxPoint t "x; // ACES\ny; // luminance\nz; // slope"}
maxPoint {{"pow(2, log(0.18*pow(2, (MAX_STOP_SDR + (MAX_STOP_RRT-MAX_STOP_SDR) / (log10(MAX_LUM_RRT)-log10(MAX_LUM_SDR)) * (log10(maxPoint.y)-log10(MAX_LUM_SDR)))))/log(2)-expShift)"} {lum.2} {override_ssts_params?slope.2:0}}
addUserKnob {7 knotIncLow}
knotIncLow {{"(log10(midPoint.x) - log10(minPoint.x)) / 3.0"}}
addUserKnob {7 knotIncHigh}
knotIncHigh {{"(log10(maxPoint.x) - log10(midPoint.x)) / 3.0"}}
addUserKnob {7 pctLow}
pctLow {{0.18+(0.35-0.18)/(MIN_STOP_SDR-MIN_STOP_RRT)*(log(minPoint.x/0.18)/log(2)-MIN_STOP_RRT)}}
addUserKnob {7 pctHigh}
pctHigh {{0.89+(0.90-0.89)/(MAX_STOP_SDR-MAX_STOP_RRT)*(log(maxPoint.x/0.89)/log(2)-MAX_STOP_RRT)}}
addUserKnob {78 coefsLow n 5}
coefsLow {{"(minPoint.z * (log10(minPoint.x)-0.5*knotIncLow)) + ( log10(minPoint.y) - minPoint.z * log10(minPoint.x))"} {"(minPoint.z * (log10(minPoint.x)+0.5*knotIncLow)) + ( log10(minPoint.y) - minPoint.z * log10(minPoint.x))"} {log10(minPoint.y)+pctLow*(log10(midPoint.y)-log10(minPoint.y))} {"(midPoint.z * (log10(midPoint.x)-0.5*knotIncLow)) + ( log10(midPoint.y) - midPoint.z * log10(midPoint.x))"} {"(midPoint.z * (log10(midPoint.x)+0.5*knotIncLow)) + ( log10(midPoint.y) - midPoint.z * log10(midPoint.x))"}}
addUserKnob {78 coefsHigh n 5}
coefsHigh {{"(midPoint.z * (log10(midPoint.x)-0.5*knotIncHigh)) + ( log10(midPoint.y) - midPoint.z * log10(midPoint.x))"} {"(midPoint.z * (log10(midPoint.x)+0.5*knotIncHigh)) + ( log10(midPoint.y) - midPoint.z * log10(midPoint.x))"} {log10(midPoint.y)+pctHigh*(log10(maxPoint.y)-log10(midPoint.y))} {"(maxPoint.z * (log10(maxPoint.x)-0.5*knotIncHigh)) + ( log10(maxPoint.y) - maxPoint.z * log10(maxPoint.x))"} {"(maxPoint.z * (log10(maxPoint.x)+0.5*knotIncHigh)) + ( log10(maxPoint.y) - maxPoint.z * log10(maxPoint.x))"}}
addUserKnob {20 Constants_tab l const}
addUserKnob {3 N_KNOTS_LOW}
N_KNOTS_LOW 4
addUserKnob {3 N_KNOTS_HIGH}
N_KNOTS_HIGH 4
addUserKnob {7 MIN_STOP_SDR R -20 20}
MIN_STOP_SDR -6.5
addUserKnob {7 MAX_STOP_SDR R -20 20}
MAX_STOP_SDR 6.5
addUserKnob {7 MIN_STOP_RRT R -20 20}
MIN_STOP_RRT -15
addUserKnob {7 MAX_STOP_RRT R -20 20}
MAX_STOP_RRT 18
addUserKnob {7 MIN_LUM_SDR R 0 0.1}
MIN_LUM_SDR 0.02
addUserKnob {7 MAX_LUM_SDR R 0 100}
MAX_LUM_SDR 48
addUserKnob {7 MIN_LUM_RRT R 0 0.1}
MIN_LUM_RRT 0.0001
addUserKnob {7 MAX_LUM_RRT R 0 10000}
MAX_LUM_RRT 10000
}
Input {
inputs 0
name Input
xpos -1030
ypos -634
}
Dot {
name Dot25
label " "
xpos -996
ypos -318
}
set N27349e50 [stack 0]
Dot {
name Dot26
label " "
xpos -996
ypos 1506
}
push $N27349e50
Dot {
name Dot4
label " "
xpos -886
ypos -318
}
set N273538f0 [stack 0]
Dot {
name Dot5
label " "
xpos -776
ypos -318
}
set N27358680 [stack 0]
Dot {
name Dot2
label " "
xpos -666
ypos -318
}
set N2735d4a0 [stack 0]
Dot {
name Dot3
label " "
xpos -556
ypos -318
}
set N27362340 [stack 0]
Expression {
temp_name0 logr
temp_expr0 "log10( max(r, 5.96046448e-08 ))"
temp_name1 logg
temp_expr1 "log10( max(g, 5.96046448e-08 ))"
temp_name2 logb
temp_expr2 "log10( max(b, 5.96046448e-08 ))"
expr0 "logr <= log10(minPoint.x)"
expr1 "logg <= log10(minPoint.x)"
expr2 "logb <= log10(minPoint.x)"
name segment_bottom
xpos -590
ypos -178
}
Dot {
name Dot1
label " "
xpos -556
ypos 162
}
push $N27362340
Dot {
name Dot7
label " "
xpos -336
ypos -318
}
set N2737a430 [stack 0]
Expression {
temp_name0 logr
temp_expr0 "log10( max(r, 5.96046448e-08 ))"
temp_name1 logg
temp_expr1 "log10( max(g, 5.96046448e-08 ))"
temp_name2 logb
temp_expr2 "log10( max(b, 5.96046448e-08 ))"
channel0 {rgba.red -rgba.green -rgba.blue none}
expr0 "logr * minPoint.z + ( log10(minPoint.y) - minPoint.z * log10(minPoint.x) )"
expr1 "logg * minPoint.z + ( log10(minPoint.y) - minPoint.z * log10(minPoint.x) )"
expr2 "logb* minPoint.z + ( log10(minPoint.y) - minPoint.z * log10(minPoint.x) )"
expr3 1
name Expression
xpos -370
ypos -178
}
Merge2 {
inputs 2
operation multiply
also_merge all
name Multiply3
xpos -370
ypos 158
}
Dot {
name Dot27
label " "
xpos -336
ypos 786
}
push $N2735d4a0
Expression {
temp_name0 logr
temp_expr0 "log10( max(r, 5.96046448e-08 ))"
temp_name1 logg
temp_expr1 "log10( max(g, 5.96046448e-08 ))"
temp_name2 logb
temp_expr2 "log10( max(b, 5.96046448e-08 ))"
expr0 "( logr > log10(minPoint.x) ) * ( logr < log10(midPoint.x) )"
expr1 "( logg > log10(minPoint.x) ) * ( logg < log10(midPoint.x) )"
expr2 "( logb > log10(minPoint.x) ) * ( logb < log10(midPoint.x) )"
name segment_low
xpos -700
ypos -178
}
Dot {
name Dot22
label " "
xpos -666
ypos 354
}
push $N2737a430
Dot {
name Dot9
label " "
xpos -6
ypos -318
}
set N273b5920 [stack 0]
Dot {
name Dot6
label " "
xpos -6
ypos -198
}
set N273ba6b0 [stack 0]
Dot {
name Dot8
label " "
xpos 214
ypos -198
}
set N273bf500 [stack 0]
Dot {
name Dot13
label " "
xpos 434
ypos -198
}
Dot {
name Dot12
label " "
xpos 434
ypos -78
}
set N273c91a0 [stack 0]
Expression {
temp_name0 logx
temp_expr0 "(log10( max(b, 5.96046448e-08 )))"
temp_name1 knot_coord
temp_expr1 "(N_KNOTS_LOW-1) * (logx-log10(minPoint.x))/(log10(midPoint.x)-log10(minPoint.x))"
temp_name2 j
temp_expr2 int(knot_coord)
temp_name3 t
temp_expr3 "knot_coord - j"
expr0 "j == 0 ? coefsLow.0 : j == 1 ? coefsLow.1 : j == 2 ? coefsLow.2 :j == 3 ? coefsLow.3 : j == 4 ? coefsLow.4 : 0"
expr1 "j == 0 ? coefsLow.1 : j == 1 ? coefsLow.2 : j == 2 ? coefsLow.3 :j == 3 ? coefsLow.4 : j == 4 ? coefsLow.4 : 0"
expr2 "j == 0 ? coefsLow.2 : j == 1 ? coefsLow.3 : j == 2 ? coefsLow.4 :j == 3 ? coefsLow.4 : j == 4 ? coefsLow.4 : 0"
name Expression5
xpos 290
ypos -34
}
ColorMatrix {
matrix {
{0.5 -1 0.5}
{-1 1 0}
{0.5 0.5 0}
}
name ColorMatrix3
label "mult_f3_f33( cf, M)"
xpos 290
ypos 8
}
push $N273c91a0
Expression {
temp_name0 logx
temp_expr0 "(log10( max(b, 5.96046448e-08 )))"
temp_name1 knot_coord
temp_expr1 "(N_KNOTS_LOW-1) * (logx-log10(minPoint.x))/(log10(midPoint.x)-log10(minPoint.x))"
temp_name2 j
temp_expr2 int(knot_coord)
temp_name3 t
temp_expr3 "knot_coord - j"
expr0 t*t
expr1 t
expr2 1
expr3 1
name Expression6
xpos 400
ypos -34
}
MergeExpression {
inputs 2
channel0 {rgba.red -rgba.green -rgba.blue none}
expr0 0
expr1 0
expr2 (Ar*Br)+(Ag*Bg)+(Ab*Bb)
name dot_f3_f2
label "logy = dot_f3_f3( monomials, mult_f3_f33( cf, M))"
xpos 400
ypos 8
}
push 0
push $N273bf500
Dot {
name Dot11
label " "
xpos 214
ypos -78
}
set N27403f80 [stack 0]
Expression {
temp_name0 logx
temp_expr0 "(log10( max(g, 5.96046448e-08 )))"
temp_name1 knot_coord
temp_expr1 "(N_KNOTS_LOW-1) * (logx-log10(minPoint.x))/(log10(midPoint.x)-log10(minPoint.x))"
temp_name2 j
temp_expr2 int(knot_coord)
temp_name3 t
temp_expr3 "knot_coord - j"
expr0 "j == 0 ? coefsLow.0 : j == 1 ? coefsLow.1 : j == 2 ? coefsLow.2 :j == 3 ? coefsLow.3 : j == 4 ? coefsLow.4 : 0"
expr1 "j == 0 ? coefsLow.1 : j == 1 ? coefsLow.2 : j == 2 ? coefsLow.3 :j == 3 ? coefsLow.4 : j == 4 ? coefsLow.4 : 0"
expr2 "j == 0 ? coefsLow.2 : j == 1 ? coefsLow.3 : j == 2 ? coefsLow.4 :j == 3 ? coefsLow.4 : j == 4 ? coefsLow.4 : 0"
name Expression3
xpos 70
ypos -34
}
ColorMatrix {
matrix {
{0.5 -1 0.5}
{-1 1 0}
{0.5 0.5 0}
}
name ColorMatrix1
label "mult_f3_f33( cf, M)"
xpos 70
ypos 8
}
push $N27403f80
Expression {
temp_name0 logx
temp_expr0 "(log10( max(g, 5.96046448e-08 )))"
temp_name1 knot_coord
temp_expr1 "(N_KNOTS_LOW-1) * (logx-log10(minPoint.x))/(log10(midPoint.x)-log10(minPoint.x))"
temp_name2 j
temp_expr2 int(knot_coord)
temp_name3 t
temp_expr3 "knot_coord - j"
expr0 t*t
expr1 t
expr2 1
expr3 1
name Expression4
xpos 180
ypos -34
}
MergeExpression {
inputs 2
channel0 {rgba.red -rgba.green -rgba.blue none}
expr0 0
expr1 (Ar*Br)+(Ag*Bg)+(Ab*Bb)
expr2 0
name dot_f3_f7
label "logy = dot_f3_f3( monomials, mult_f3_f33( cf, M))"
xpos 180
ypos 8
}
push $N273ba6b0
Dot {
name Dot10
label " "
xpos -6
ypos -78
}
set N2743f200 [stack 0]
Expression {
temp_name0 logx
temp_expr0 "(log10( max(r, 5.96046448e-08 )))"
temp_name1 knot_coord
temp_expr1 "(N_KNOTS_LOW-1) * (logx-log10(minPoint.x))/(log10(midPoint.x)-log10(minPoint.x))"
temp_name2 j
temp_expr2 int(knot_coord)
temp_name3 t
temp_expr3 "knot_coord - j"
expr0 "j == 0 ? coefsLow.0 : j == 1 ? coefsLow.1 : j == 2 ? coefsLow.2 :j == 3 ? coefsLow.3 : j == 4 ? coefsLow.4 : 0"
expr1 "j == 0 ? coefsLow.1 : j == 1 ? coefsLow.2 : j == 2 ? coefsLow.3 :j == 3 ? coefsLow.4 : j == 4 ? coefsLow.4 : 0"
expr2 "j == 0 ? coefsLow.2 : j == 1 ? coefsLow.3 : j == 2 ? coefsLow.4 :j == 3 ? coefsLow.4 : j == 4 ? coefsLow.4 : 0"
name Expression1
xpos -150
ypos -34
}
ColorMatrix {
matrix {
{0.5 -1 0.5}
{-1 1 0}
{0.5 0.5 0}
}
name ColorMatrix2
label "mult_f3_f33( cf, M)"
xpos -150
ypos 8
}
push $N2743f200
Expression {
temp_name0 logx
temp_expr0 "(log10( max(r, 5.96046448e-08 )))"
temp_name1 knot_coord
temp_expr1 "(N_KNOTS_LOW-1) * (logx-log10(minPoint.x))/(log10(midPoint.x)-log10(minPoint.x))"
temp_name2 j
temp_expr2 int(knot_coord)
temp_name3 t
temp_expr3 "knot_coord - j"
expr0 t*t
expr1 t
expr2 1
expr3 1
name Expression2
xpos -40
ypos -34
}
MergeExpression {
inputs 2
channel0 {rgba.red -rgba.green -rgba.blue none}
expr0 (Ar*Br)+(Ag*Bg)+(Ab*Bb)
expr1 0
expr2 0
name dot_f3_f1
label "logy = dot_f3_f3( monomials, mult_f3_f33( cf, M))"
xpos -40
ypos 8
}
Merge2 {
inputs 3+1
operation plus
bbox B
output rgb
name Merge1
xpos 180
ypos 158
}
Merge2 {
inputs 2
operation multiply
also_merge all
name Multiply1
xpos 180
ypos 350
}
Dot {
name Dot28
label " "
xpos 214
ypos 786
}
push 0
push $N27358680
Expression {
temp_name0 logr
temp_expr0 "log10( max(r, 5.96046448e-08 ))"
temp_name1 logg
temp_expr1 "log10( max(g, 5.96046448e-08 ))"
temp_name2 logb
temp_expr2 "log10( max(b, 5.96046448e-08 ))"
expr0 "( logr >= log10(midPoint.x) ) * ( logr < log10(maxPoint.x) )"
expr1 "( logg >= log10(midPoint.x) ) * ( logg < log10(maxPoint.x) )"
expr2 "( logb >= log10(midPoint.x) ) * ( logb < log10(maxPoint.x) )"
name segment_high
xpos -810
ypos -178
}
Dot {
name Dot23
label " "
xpos -776
ypos 474
}
push $N273b5920
Dot {
name Dot14
label " "
xpos 764
ypos -318
}
set N272b36f0 [stack 0]
Dot {
name Dot15
label " "
xpos 764
ypos -198
}
set N272b8480 [stack 0]
Dot {
name Dot17
label " "
xpos 984
ypos -198
}
set N272bd2d0 [stack 0]
Dot {
name Dot20
label " "
xpos 1204
ypos -198
}
Dot {
name Dot19
label " "
xpos 1204
ypos -78
}
set N272c6f70 [stack 0]
Expression {
temp_name0 logx
temp_expr0 "(log10( max(b, 5.96046448e-08 )))"
temp_name1 knot_coord
temp_expr1 "(N_KNOTS_HIGH-1) * (logx-log10(midPoint.x))/(log10(maxPoint.x)-log10(midPoint.x))"
temp_name2 j
temp_expr2 int(knot_coord)
temp_name3 t
temp_expr3 "knot_coord - j"
expr0 "j == 0 ? coefsHigh.0 : j == 1 ? coefsHigh.1 : j == 2 ? coefsHigh.2 :j == 3 ? coefsHigh.3 : j == 4 ? coefsHigh.4 : 0"
expr1 "j == 0 ? coefsHigh.1 : j == 1 ? coefsHigh.2 : j == 2 ? coefsHigh.3 :j == 3 ? coefsHigh.4 : j == 4 ? coefsHigh.4 : 0"
expr2 "j == 0 ? coefsHigh.2 : j == 1 ? coefsHigh.3 : j == 2 ? coefsHigh.4 :j == 3 ? coefsHigh.4 : j == 4 ? coefsHigh.4 : 0"
expr3 j
name Expression11
xpos 1060
ypos -34
}
ColorMatrix {
matrix {
{0.5 -1 0.5}
{-1 1 0}
{0.5 0.5 0}
}
name ColorMatrix6
label "mult_f3_f33( cf, M)"
xpos 1060
ypos 8
}
push $N272c6f70
Expression {
temp_name0 logx
temp_expr0 "(log10( max(b, 5.96046448e-08 )))"
temp_name1 knot_coord
temp_expr1 "(N_KNOTS_HIGH-1) * (logx-log10(midPoint.x))/(log10(maxPoint.x)-log10(midPoint.x))"
temp_name2 j
temp_expr2 int(knot_coord)
temp_name3 t
temp_expr3 "knot_coord - j"
expr0 t*t
expr1 t
expr2 1
expr3 1
name Expression12
xpos 1170
ypos -34
}
MergeExpression {
inputs 2
channel0 {rgba.red -rgba.green -rgba.blue none}
expr0 0
expr1 0
expr2 (Ar*Br)+(Ag*Bg)+(Ab*Bb)
name dot_f3_f6
label "logy = dot_f3_f3( monomials, mult_f3_f33( cf, M))"
xpos 1170
ypos 8
}
push 0
push $N272bd2d0
Dot {
name Dot18
label " "
xpos 984
ypos -78
}
set N27302230 [stack 0]
Expression {
temp_name0 logx
temp_expr0 "(log10( max(g, 5.96046448e-08 )))"
temp_name1 knot_coord
temp_expr1 "(N_KNOTS_HIGH-1) * (logx-log10(midPoint.x))/(log10(maxPoint.x)-log10(midPoint.x))"
temp_name2 j
temp_expr2 int(knot_coord)
temp_name3 t
temp_expr3 "knot_coord - j"
expr0 "j == 0 ? coefsHigh.0 : j == 1 ? coefsHigh.1 : j == 2 ? coefsHigh.2 :j == 3 ? coefsHigh.3 : j == 4 ? coefsHigh.4 : 0"
expr1 "j == 0 ? coefsHigh.1 : j == 1 ? coefsHigh.2 : j == 2 ? coefsHigh.3 :j == 3 ? coefsHigh.4 : j == 4 ? coefsHigh.4 : 0"
expr2 "j == 0 ? coefsHigh.2 : j == 1 ? coefsHigh.3 : j == 2 ? coefsHigh.4 :j == 3 ? coefsHigh.4 : j == 4 ? coefsHigh.4 : 0"
expr3 j
name Expression9
xpos 840
ypos -34
}
ColorMatrix {
matrix {
{0.5 -1 0.5}
{-1 1 0}
{0.5 0.5 0}
}
name ColorMatrix5
label "mult_f3_f33( cf, M)"
xpos 840
ypos 8
}
push $N27302230
Expression {
temp_name0 logx
temp_expr0 "(log10( max(g, 5.96046448e-08 )))"
temp_name1 knot_coord
temp_expr1 "(N_KNOTS_HIGH-1) * (logx-log10(midPoint.x))/(log10(maxPoint.x)-log10(midPoint.x))"
temp_name2 j
temp_expr2 int(knot_coord)
temp_name3 t
temp_expr3 "knot_coord - j"
expr0 t*t
expr1 t
expr2 1
expr3 1
name Expression10
xpos 950
ypos -34
}
MergeExpression {
inputs 2
channel0 {rgba.red -rgba.green -rgba.blue none}
expr0 0
expr1 (Ar*Br)+(Ag*Bg)+(Ab*Bb)
expr2 0
name dot_f3_f5
label "logy = dot_f3_f3( monomials, mult_f3_f33( cf, M))"
xpos 950
ypos 8
}
push $N272b8480
Dot {
name Dot16
label " "
xpos 764
ypos -78
}
set N2733d510 [stack 0]
Expression {
temp_name0 logx
temp_expr0 "(log10( max(r, 5.96046448e-08 )))"
temp_name1 knot_coord
temp_expr1 "(N_KNOTS_HIGH-1) * (logx-log10(midPoint.x))/(log10(maxPoint.x)-log10(midPoint.x))"
temp_name2 j
temp_expr2 int(knot_coord)
temp_name3 t
temp_expr3 "knot_coord - j"
expr0 "j == 0 ? coefsHigh.0 : j == 1 ? coefsHigh.1 : j == 2 ? coefsHigh.2 :j == 3 ? coefsHigh.3 : j == 4 ? coefsHigh.4 : 0"
expr1 "j == 0 ? coefsHigh.1 : j == 1 ? coefsHigh.2 : j == 2 ? coefsHigh.3 :j == 3 ? coefsHigh.4 : j == 4 ? coefsHigh.4 : 0"
expr2 "j == 0 ? coefsHigh.2 : j == 1 ? coefsHigh.3 : j == 2 ? coefsHigh.4 :j == 3 ? coefsHigh.4 : j == 4 ? coefsHigh.4 : 0"
expr3 j
name Expression7
xpos 620
ypos -34
}
ColorMatrix {
matrix {
{0.5 -1 0.5}
{-1 1 0}
{0.5 0.5 0}
}
name ColorMatrix4
label "mult_f3_f33( cf, M)"
xpos 620
ypos 8
}
push $N2733d510
Expression {
temp_name0 logx
temp_expr0 "(log10( max(r, 5.96046448e-08 )))"
temp_name1 knot_coord
temp_expr1 "(N_KNOTS_HIGH-1) * (logx-log10(midPoint.x))/(log10(maxPoint.x)-log10(midPoint.x))"
temp_name2 j
temp_expr2 int(knot_coord)
temp_name3 t
temp_expr3 "knot_coord - j"
expr0 t*t
expr1 t
expr2 1
expr3 1
name Expression8
xpos 730
ypos -34
}
MergeExpression {
inputs 2
channel0 {rgba.red -rgba.green -rgba.blue none}
expr0 (Ar*Br)+(Ag*Bg)+(Ab*Bb)
expr1 0
expr2 0
name dot_f3_f4
label "logy = dot_f3_f3( monomials, mult_f3_f33( cf, M))"
xpos 730
ypos 8
}
Merge2 {
inputs 3+1
operation plus
bbox B
output rgb
name Merge2
xpos 950
ypos 158
}
Merge2 {
inputs 2
operation multiply
also_merge all
name Multiply2
xpos 950
ypos 470
}
Dot {
name Dot29
label " "
xpos 984
ypos 786
}
push $N273538f0
Expression {
temp_name0 logr
temp_expr0 "log10( max(r, 5.96046448e-08 ))"
temp_name1 logg
temp_expr1 "log10( max(g, 5.96046448e-08 ))"
temp_name2 logb
temp_expr2 "log10( max(b, 5.96046448e-08 ))"
expr0 "logr >= log10(maxPoint.x) ? 1 : 0"
expr1 "logg >= log10(maxPoint.x) ? 1 : 0"
expr2 "logb >= log10(maxPoint.x) ? 1 : 0"
name segment_peak
xpos -920
ypos -178
}
Dot {
name Dot24
label " "
xpos -886
ypos 618
}
push $N272b36f0
Dot {
name Dot21
label " "
xpos 1534
ypos -318
}
Expression {
temp_name0 logr
temp_expr0 "log10( max(r, 5.96046448e-08 ))"
temp_name1 logg
temp_expr1 "log10( max(g, 5.96046448e-08 ))"
temp_name2 logb
temp_expr2 "log10( max(b, 5.96046448e-08 ))"
channel0 {rgba.red -rgba.green -rgba.blue none}
expr0 "logr * maxPoint.z + ( log10(maxPoint.y) - maxPoint.z * log10(maxPoint.x) )"
expr1 "logg * maxPoint.z + ( log10(maxPoint.y) - maxPoint.z * log10(maxPoint.x) )"
expr2 "logb* maxPoint.z + ( log10(maxPoint.y) - maxPoint.z * log10(maxPoint.x) )"
expr3 1
name proc_low1
label Expression
xpos 1500
ypos -160
}
Merge2 {
inputs 2
operation multiply
also_merge all
name Multiply4
xpos 1500
ypos 614
}
Dot {
name Dot30
xpos 1534
ypos 810
}
Merge2 {
inputs 4+1
operation plus
bbox B
output rgb
name Merge3
xpos 510
ypos 1118
}
Expression {
channel0 {rgba.red -rgba.green -rgba.blue none}
expr0 pow(10,r)
expr1 pow(10,g)
expr2 pow(10,b)
name Expression13
xpos 510
ypos 1238
}
Copy {
inputs 2
from0 rgba.alpha
to0 rgba.alpha
name Copy1
xpos 510
ypos 1496
}
Output {
name Output1
xpos 510
ypos 1814
}
end_group
Expression {
expr0 "(r - Ymin) / (Ymax - Ymin)"
expr1 "(g - Ymin) / (Ymax - Ymin)"
expr2 "(b - Ymin) / (Ymax - Ymin)"
expr3 1
name Y_2_linCV_f3_
xpos -280
ypos 390
addUserKnob {20 Luminance}
addUserKnob {7 Ymin R 0.0001 0.02}
Ymin {{parent.lum.0}}
addUserKnob {7 Ymax R 48 10000}
Ymax {{parent.lum.2}}
}
MergeExpression {
inputs 2
expr0 Ar==0?0:Br/Ar
expr1 Ag==0?0:Bg/Ag
expr2 Ab==0?0:Bb/Ab
name MergeDivideReverse
xpos -160
ypos 453
disable {{!parent.norm}}
}
Merge2 {
inputs 2
operation multiply
bbox B
Achannels rgb
Bchannels rgb
output rgb
name Merge2
note_font Helvetica
xpos -160
ypos 511
disable {{!parent.norm}}
}
Dot {
name Dot4
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xff
xpos -126
ypos 634
}
Switch {
inputs 2
which {{parent.direction}}
name SwitchDirection
note_font Helvetica
xpos -40
ypos 791
}
Output {
name Output
xpos -40
ypos 910
}
push $N2752a5a0
Reformat {
type "to box"
box_width 4
box_height 4
box_fixed true
name Reformat1
note_font Helvetica
xpos -400
ypos 311
}
Fill {
output rgb
color {{parent.ssts.mid_lum}}
name Fill1
note_font Helvetica
xpos -400
ypos 351
}
Group {
name inv_ssts1
xpos -400
ypos 390
addUserKnob {20 ssts_tab l ssts}
addUserKnob {78 lum l luminance t "SSTS Display Luminance: \ny_min y_mid y_max\n\nAccording to Zach Lewis's ACES_OT\nhttps://gist.github.com/zachlewis/786c0be941868644c993fde1c3515c2c\n\nStandard Cinema: \n0.02 4.8 48\nDolby Cinema: \n0.0001 7.2 108\nDolby Pulsar: \n0.005 15 4000\nDolby PRR-4220: \n0.005 10 600\nSony BVM-X300: \n0.0001 10 1000\nACES OCES: \n0.0001 4.8 10000\n\n" n 3}
lum {{parent.lum} 4.8 {parent.lum}}
addUserKnob {6 override_ssts_params l "override ssts params" t "Enable overrides of SSTS params.\n\nOtherwise the values will be calculated automatically by the algorithm." +STARTLINE}
override_ssts_params {{parent.ACES_SSTS.AcesSSTSKernel_override_curve_params}}
addUserKnob {7 exposure R -5 5}
exposure {{parent.exposure}}
addUserKnob {7 knee}
knee {{parent.pctLow}}
addUserKnob {7 shoulder}
shoulder {{parent.pctHigh}}
addUserKnob {78 slope n 3}
slope {{parent.slope} {parent.slope} {parent.slope}}
addUserKnob {20 TsParams_tab l TsParams}
addUserKnob {7 expShift R -4 4}
expShift {{"override_ssts_params ? exposure : 0"}}
addUserKnob {13 minPoint t "x; // ACES\ny; // luminance\nz; // slope"}
minPoint {{"pow(2, log(0.18*pow(2, MIN_STOP_RRT+((MIN_STOP_SDR-MIN_STOP_RRT)/(log10(MIN_LUM_SDR)-log10(MIN_LUM_RRT)))*(log10(minPoint.y)-log10(MIN_LUM_RRT))))/log(2)-expShift)"} {lum.0} {override_ssts_params?slope.0:0}}
addUserKnob {13 midPoint t "x; // ACES\ny; // luminance\nz; // slope"}
midPoint {{"pow(2, ((log(0.18)/log(2)-expShift)))"} {lum.1} {override_ssts_params?slope.1:1.55}}
addUserKnob {13 maxPoint t "x; // ACES\ny; // luminance\nz; // slope"}
maxPoint {{"pow(2, log(0.18*pow(2, (MAX_STOP_SDR+(MAX_STOP_RRT-MAX_STOP_SDR)/(log10(MAX_LUM_RRT)-log10(MAX_LUM_SDR))*(log10(maxPoint.y)-log10(MAX_LUM_SDR)))))/log(2)-expShift)"} {lum.2} {override_ssts_params?slope.2:0}}
addUserKnob {7 knotIncLow}
knotIncLow {{"(log10(midPoint.x) - log10(minPoint.x)) / 3.0"}}
addUserKnob {7 knotIncHigh}
knotIncHigh {{"(log10(maxPoint.x) - log10(midPoint.x)) / 3.0"}}
addUserKnob {7 pctLow}
pctLow {{0.18+(0.35-0.18)/(MIN_STOP_SDR-MIN_STOP_RRT)*(log(minPoint.x/0.18)/log(2)-MIN_STOP_RRT)}}
addUserKnob {7 pctHigh}
pctHigh {{0.89+(0.90-0.89)/(MAX_STOP_SDR-MAX_STOP_RRT)*(log(maxPoint.x/0.89)/log(2)-MAX_STOP_RRT)}}
addUserKnob {78 coefsLow n 5}
coefsLow {{"(minPoint.z * (log10(minPoint.x)-0.5*knotIncLow)) + ( log10(minPoint.y) - minPoint.z * log10(minPoint.x))"} {"(minPoint.z * (log10(minPoint.x)+0.5*knotIncLow)) + ( log10(minPoint.y) - minPoint.z * log10(minPoint.x))"} {log10(minPoint.y)+pctLow*(log10(midPoint.y)-log10(minPoint.y))} {"(midPoint.z * (log10(midPoint.x)-0.5*knotIncLow)) + ( log10(midPoint.y) - midPoint.z * log10(midPoint.x))"} {"(midPoint.z * (log10(midPoint.x)+0.5*knotIncLow)) + ( log10(midPoint.y) - midPoint.z * log10(midPoint.x))"}}
addUserKnob {78 coefsHigh n 5}
coefsHigh {{"(midPoint.z * (log10(midPoint.x)-0.5*knotIncHigh)) + ( log10(midPoint.y) - midPoint.z * log10(midPoint.x))"} {"(midPoint.z * (log10(midPoint.x)+0.5*knotIncHigh)) + ( log10(midPoint.y) - midPoint.z * log10(midPoint.x))"} {log10(midPoint.y)+pctHigh*(log10(maxPoint.y)-log10(midPoint.y))} {"(maxPoint.z * (log10(maxPoint.x)-0.5*knotIncHigh)) + ( log10(maxPoint.y) - maxPoint.z * log10(maxPoint.x))"} {"(maxPoint.z * (log10(maxPoint.x)+0.5*knotIncHigh)) + ( log10(maxPoint.y) - maxPoint.z * log10(maxPoint.x))"}}
addUserKnob {7 KNOT_INC_LOW}
KNOT_INC_LOW {{"(log10(midPoint.x) - log10(minPoint.x)) / (N_KNOTS_LOW - 1)"}}
addUserKnob {7 KNOT_INC_HIGH}
KNOT_INC_HIGH {{"(log10(maxPoint.x) - log10(midPoint.x)) / (N_KNOTS_HIGH - 1)"}}
addUserKnob {78 KNOT_Y_LOW n 4}
KNOT_Y_LOW {{"(coefsLow.0 + coefsLow.1) / 2"} {"(coefsLow.1 + coefsLow.2) / 2"} {"(coefsLow.2 + coefsLow.3) / 2"} {"(coefsLow.3 + coefsLow.4) / 2"}}
addUserKnob {78 KNOT_Y_HIGH n 4}
KNOT_Y_HIGH {{"(coefsHigh.0 + coefsHigh.1) / 2"} {"(coefsHigh.1 + coefsHigh.2) / 2"} {"(coefsHigh.2 + coefsHigh.3) / 2"} {"(coefsHigh.3 + coefsHigh.4) / 2"}}
addUserKnob {20 Constants_tab l const}
addUserKnob {3 N_KNOTS_LOW}
N_KNOTS_LOW 4
addUserKnob {3 N_KNOTS_HIGH}
N_KNOTS_HIGH 4
addUserKnob {7 MIN_STOP_SDR R -20 20}
MIN_STOP_SDR -6.5
addUserKnob {7 MAX_STOP_SDR R -20 20}
MAX_STOP_SDR 6.5
addUserKnob {7 MIN_STOP_RRT R -20 20}
MIN_STOP_RRT -15
addUserKnob {7 MAX_STOP_RRT R -20 20}
MAX_STOP_RRT 18
addUserKnob {7 MIN_LUM_SDR R 0 0.1}
MIN_LUM_SDR 0.02
addUserKnob {7 MAX_LUM_SDR R 0 100}
MAX_LUM_SDR 48
addUserKnob {7 MIN_LUM_RRT R 0 0.1}
MIN_LUM_RRT 0.0001
addUserKnob {7 MAX_LUM_RRT R 0 10000}
MAX_LUM_RRT 10000
}
Input {
inputs 0
name Input
xpos -1030
ypos -634
}
Dot {
name Dot25
label " "
xpos -996
ypos -318
}
set N270835b0 [stack 0]
Dot {
name Dot26
label " "
xpos -996
ypos 1506
}
push $N270835b0
Dot {
name Dot4
label " "
xpos -886
ypos -318
}
set N2708d050 [stack 0]
Dot {
name Dot5
label " "
xpos -776
ypos -318
}
set N27091de0 [stack 0]
Dot {
name Dot2
label " "
xpos -666
ypos -318
}
set N27096c00 [stack 0]
Dot {
name Dot3
label " "
xpos -556
ypos -318
}
set N2709baa0 [stack 0]
Expression {
temp_name0 logr
temp_expr0 "log10( max(r, 1e-10 ))"
temp_name1 logg
temp_expr1 "log10( max(g, 1e-10 ))"
temp_name2 logb
temp_expr2 "log10( max(b, 1e-10 ))"
expr0 "logr <= log10(minPoint.y)"
expr1 "logg <= log10(minPoint.y)"
expr2 "logb <= log10(minPoint.y)"
name segment_bottom
xpos -590
ypos -202
}
Dot {
name Dot1
label " "
xpos -556
ypos 162
}
push $N2709baa0
Dot {
name Dot7
label " "
xpos -336
ypos -318
}
set N270b3940 [stack 0]
Expression {
temp_name0 logr
temp_expr0 "log10( max(r, 1e-10 ))"
temp_name1 logg
temp_expr1 "log10( max(g, 1e-10 ))"
temp_name2 logb
temp_expr2 "log10( max(b, 1e-10 ))"
channel0 {rgba.red -rgba.green -rgba.blue none}
expr0 log10(minPoint.x)
expr1 log10(minPoint.x)
expr2 log10(minPoint.x)
expr3 1
name Expression
xpos -370
ypos -202
}
Merge2 {
inputs 2
operation multiply
also_merge all
name Multiply3
xpos -370
ypos 158
}
Dot {
name Dot27
label " "
xpos -336
ypos 786
}
push $N27096c00
Expression {
temp_name0 logr
temp_expr0 "log10( max(r, 1e-10 ))"
temp_name1 logg
temp_expr1 "log10( max(g, 1e-10 ))"
temp_name2 logb
temp_expr2 "log10( max(b, 1e-10 ))"
expr0 "( logr > log10(minPoint.y) ) && ( logr <= log10(midPoint.y) )"
expr1 "( logg > log10(minPoint.y) ) && ( logg <= log10(midPoint.y) )"
expr2 "( logb > log10(minPoint.y) ) && ( logb <= log10(midPoint.y) )"
name segment_low
xpos -700
ypos -202
}
Dot {
name Dot22
label " "
xpos -666
ypos 354
}
push $N270b3940
Dot {
name Dot9
label " "
xpos -6
ypos -318
}
set N270ef040 [stack 0]
Dot {
name Dot6
label " "
xpos -6
ypos -174
}
set N270f3dd0 [stack 0]
Dot {
name Dot8
label " "
xpos 214
ypos -174
}
set N270f8c20 [stack 0]
Dot {
name Dot13
label " "
xpos 434
ypos -174
}
Dot {
name Dot19
xpos 434
ypos -78
}
set N271028c0 [stack 0]
Expression {
temp_name0 logy
temp_expr0 "log10( max(b, 1e-10 ))"
temp_name1 low
temp_expr1 "(logy > KNOT_Y_LOW.0) && (logy <= KNOT_Y_LOW.1)"
temp_name2 mid
temp_expr2 "(logy > KNOT_Y_LOW.1) && (logy <= KNOT_Y_LOW.2)"
temp_name3 high
temp_expr3 "(logy > KNOT_Y_LOW.2) && (logy <= KNOT_Y_LOW.3)"
expr0 "low ? coefsLow.0 : mid ? coefsLow.1 : coefsLow.2"
expr1 "low ? coefsLow.1 : mid ? coefsLow.2 : coefsLow.3"
expr2 "low ? coefsLow.2 : mid ? coefsLow.3 : coefsLow.4"
expr3 "low ? 0 : mid ? 1 : high ? 2 : 0"
name inv_cfLow5
xpos 290
ypos -82
}
ColorMatrix {
channels {rgba.red rgba.green rgba.blue -rgba.alpha}
matrix {
{0.5 -1 0.5}
{-1 1 0}
{0.5 0.5 0}
}
name inv_basis_low5
xpos 290
ypos -34
}
push $N271028c0
MergeExpression {
inputs 2
temp_name0 logy
temp_expr0 "log10(max(Bb, 1e-10))"
expr0 Ar
expr1 Ag
expr2 Ab-logy
expr3 Aa
name c_minus_logy5
xpos 400
ypos -34
}
Expression {
temp_name0 j
temp_expr0 a
temp_name1 d
temp_expr1 "sqrt(g*g - 4*r*b)"
temp_name2 t
temp_expr2 "(2.*b)/(-sqrt(g*g - 4*r*b)-g)"
expr0 0
channel1 {-rgba.red rgba.green -rgba.blue none}
expr1 0
channel2 {-rgba.red -rgba.green rgba.blue none}
expr2 "log10(minPoint.x) + (t +j) * KNOT_INC_LOW"
expr3 1
maskChannelInput -rgba.alpha
unpremult -rgba.alpha
name inv_knot_vals4
xpos 400
ypos 14
addUserKnob {20 User}
addUserKnob {7 knotIncLow}
knotIncLow {{parent.knotIncLow}}
addUserKnob {13 min l Min}
min {{parent.min.x} {parent.min.y} {parent.minSlope}}
}
push 0
push $N270f3dd0
Dot {
name Dot10
xpos -6
ypos -78
}
set N2713f0e0 [stack 0]
Expression {
temp_name0 logy
temp_expr0 "log10( max(r, 1e-10 ))"
temp_name1 low
temp_expr1 "(logy > KNOT_Y_LOW.0) && (logy <= KNOT_Y_LOW.1)"
temp_name2 mid
temp_expr2 "(logy > KNOT_Y_LOW.1) && (logy <= KNOT_Y_LOW.2)"
temp_name3 high
temp_expr3 "(logy > KNOT_Y_LOW.2) && (logy <= KNOT_Y_LOW.3)"
expr0 "low ? coefsLow.0 : mid ? coefsLow.1 : coefsLow.2"
expr1 "low ? coefsLow.1 : mid ? coefsLow.2 : coefsLow.3"
expr2 "low ? coefsLow.2 : mid ? coefsLow.3 : coefsLow.4"
expr3 "low ? 0 : mid ? 1 : high ? 2 : 0"
name inv_cfLow
xpos -150
ypos -82
}
ColorMatrix {
channels {rgba.red rgba.green rgba.blue -rgba.alpha}
matrix {
{0.5 -1 0.5}
{-1 1 0}
{0.5 0.5 0}
}
name inv_basis_low
xpos -150
ypos -34
}
push $N2713f0e0
MergeExpression {
inputs 2
temp_name0 logy
temp_expr0 "log10(max(Br, 1e-10))"
expr0 Ar
expr1 Ag
expr2 Ab-logy
expr3 Aa
name c_minus_logy
xpos -40
ypos -34
}
Expression {
temp_name0 j
temp_expr0 a
temp_name1 d
temp_expr1 "sqrt(g*g - 4*r*b)"
temp_name2 t
temp_expr2 "(2.*b)/(-sqrt(g*g - 4*r*b)-g)"
expr0 "log10(minPoint.x) + (t +j) * KNOT_INC_LOW"
channel1 {-rgba.red rgba.green -rgba.blue none}
expr1 0
channel2 {-rgba.red -rgba.green rgba.blue none}
expr2 0
expr3 1
maskChannelInput -rgba.alpha
unpremult -rgba.alpha
name inv_knot_vals
xpos -40
ypos 14
addUserKnob {20 User}
addUserKnob {7 knotIncLow}
knotIncLow {{parent.knotIncLow}}
addUserKnob {13 min l Min}
min {{parent.min.x} {parent.min.y} {parent.minSlope}}
}
push $N270f8c20
Dot {
name Dot18
xpos 214
ypos -78
}
set N26f7b800 [stack 0]
Expression {
temp_name0 logy
temp_expr0 "log10( max(g, 1e-10 ))"
temp_name1 low
temp_expr1 "(logy > KNOT_Y_LOW.0) && (logy <= KNOT_Y_LOW.1)"
temp_name2 mid
temp_expr2 "(logy > KNOT_Y_LOW.1) && (logy <= KNOT_Y_LOW.2)"
temp_name3 high
temp_expr3 "(logy > KNOT_Y_LOW.2) && (logy <= KNOT_Y_LOW.3)"
expr0 "low ? coefsLow.0 : mid ? coefsLow.1 : coefsLow.2"
expr1 "low ? coefsLow.1 : mid ? coefsLow.2 : coefsLow.3"
expr2 "low ? coefsLow.2 : mid ? coefsLow.3 : coefsLow.4"
expr3 "low ? 0 : mid ? 1 : high ? 2 : 0"
name inv_cfLow4
xpos 70
ypos -82
}
ColorMatrix {
channels {rgba.red rgba.green rgba.blue -rgba.alpha}
matrix {
{0.5 -1 0.5}
{-1 1 0}
{0.5 0.5 0}
}
name inv_basis_low4
xpos 70
ypos -34
}
push $N26f7b800
MergeExpression {
inputs 2
temp_name0 logy
temp_expr0 "log10(max(Bg, 1e-10))"
expr0 Ar
expr1 Ag
expr2 Ab-logy
expr3 Aa
name c_minus_logy4
xpos 180
ypos -34
}
Expression {
temp_name0 j
temp_expr0 a
temp_name1 d
temp_expr1 "sqrt(g*g - 4*r*b)"
temp_name2 t
temp_expr2 "(2.*b)/(-sqrt(g*g - 4*r*b)-g)"
expr0 0
channel1 {-rgba.red rgba.green -rgba.blue none}
expr1 "log10(minPoint.x) + (t +j) * KNOT_INC_LOW"
channel2 {-rgba.red -rgba.green rgba.blue none}
expr2 0
expr3 1
maskChannelInput -rgba.alpha
unpremult -rgba.alpha
name inv_knot_vals5
xpos 180
ypos 14
addUserKnob {20 User}
addUserKnob {7 knotIncLow}
knotIncLow {{parent.knotIncLow}}
addUserKnob {13 min l Min}
min {{parent.min.x} {parent.min.y} {parent.minSlope}}
}
Merge2 {
inputs 3+1
operation plus
bbox B
name Merge2
xpos 180
ypos 134
}
Merge2 {
inputs 2
operation multiply
also_merge all
name Multiply1
xpos 180
ypos 350
}
Dot {
name Dot28
label " "
xpos 214
ypos 786
}
push 0
push $N27091de0
Expression {
temp_name0 logr
temp_expr0 "log10( max(r, 1e-10 ))"
temp_name1 logg
temp_expr1 "log10( max(g, 1e-10 ))"
temp_name2 logb
temp_expr2 "log10( max(b, 1e-10 ))"
expr0 "( logr >= log10(midPoint.y) ) && ( logr < log10(maxPoint.y) )"
expr1 "( logg >= log10(midPoint.y) ) && ( logg < log10(maxPoint.y) )"
expr2 "( logb >= log10(midPoint.y) ) && ( logb < log10(maxPoint.y) )"
name segment_high
xpos -810
ypos -202
}
Dot {
name Dot23
label " "
xpos -776
ypos 474
}
push $N270ef040
Dot {
name Dot14
label " "
xpos 764
ypos -318
}
set N26ff0b70 [stack 0]
Dot {
name Dot15
label " "
xpos 764
ypos -174
}
set N26ff5900 [stack 0]
Dot {
name Dot17
label " "
xpos 984
ypos -174
}
set N26ffa750 [stack 0]
Dot {
name Dot20
label " "
xpos 1204
ypos -174
}
Dot {
name Dot16
xpos 1204
ypos -78
}
set N270043f0 [stack 0]
Expression {
temp_name0 logy
temp_expr0 "log10( max(b, 1e-10 ))"
temp_name1 low
temp_expr1 "(logy > KNOT_Y_HIGH.0) && (logy <= KNOT_Y_HIGH.1)"
temp_name2 mid
temp_expr2 "(logy > KNOT_Y_HIGH.1) && (logy <= KNOT_Y_HIGH.2)"
temp_name3 high
temp_expr3 "(logy > KNOT_Y_HIGH.2) && (logy <= KNOT_Y_HIGH.3)"
expr0 "low ? coefsHigh.0 : mid ? coefsHigh.1 : coefsHigh.2"
expr1 "low ? coefsHigh.1 : mid ? coefsHigh.2 : coefsHigh.3"
expr2 "low ? coefsHigh.2 : mid ? coefsHigh.3 : coefsHigh.4"
expr3 "low ? 0 : mid ? 1 : high ? 2 : 0"
name inv_cfLow3
xpos 1060
ypos -82
}
ColorMatrix {
channels {rgba.red rgba.green rgba.blue -rgba.alpha}
matrix {
{0.5 -1 0.5}
{-1 1 0}
{0.5 0.5 0}
}
name inv_basis_low3
xpos 1060
ypos -34
}
push $N270043f0
MergeExpression {
inputs 2
temp_name0 logy
temp_expr0 "log10(max(Bb, 1e-10))"
expr0 Ar
expr1 Ag
expr2 Ab-logy
expr3 Aa
name c_minus_logy3
xpos 1170
ypos -34
}
Expression {
temp_name0 j
temp_expr0 a
temp_name1 d
temp_expr1 "sqrt(g*g - 4*r*b)"
temp_name2 t
temp_expr2 "(2.*b) / (-sqrt(g*g - 4*r*b) - g)"
expr0 0
channel1 {-rgba.red rgba.green -rgba.blue none}
expr1 0
channel2 {-rgba.red -rgba.green rgba.blue none}
expr2 "log10(midPoint.x) + (t +j) * KNOT_INC_HIGH"
expr3 1
maskChannelInput -rgba.alpha
unpremult -rgba.alpha
name inv_knot_vals3
xpos 1170
ypos 14
}
push 0
push $N26ff5900
Dot {
name Dot11
xpos 764
ypos -78
}
set N2703f2d0 [stack 0]
Expression {
temp_name0 logy
temp_expr0 "log10( max(r, 1e-10 ))"
temp_name1 low
temp_expr1 "(logy > KNOT_Y_HIGH.0) && (logy <= KNOT_Y_HIGH.1)"
temp_name2 mid
temp_expr2 "(logy > KNOT_Y_HIGH.1) && (logy <= KNOT_Y_HIGH.2)"
temp_name3 high
temp_expr3 "(logy > KNOT_Y_HIGH.2) && (logy <= KNOT_Y_HIGH.3)"
expr0 "low ? coefsHigh.0 : mid ? coefsHigh.1 : coefsHigh.2"
expr1 "low ? coefsHigh.1 : mid ? coefsHigh.2 : coefsHigh.3"
expr2 "low ? coefsHigh.2 : mid ? coefsHigh.3 : coefsHigh.4"
expr3 "low ? 0 : mid ? 1 : high ? 2 : 0"
name inv_cfLow1
xpos 620
ypos -82
}
ColorMatrix {
channels {rgba.red rgba.green rgba.blue -rgba.alpha}
matrix {
{0.5 -1 0.5}
{-1 1 0}
{0.5 0.5 0}
}
name inv_basis_low1
xpos 620
ypos -34
}
push $N2703f2d0
MergeExpression {
inputs 2
temp_name0 logy
temp_expr0 "log10(max(Br, 1e-10))"
expr0 Ar
expr1 Ag
expr2 Ab-logy
expr3 Aa
name c_minus_logy1
xpos 730
ypos -34
}
Expression {
temp_name0 j
temp_expr0 a
temp_name1 d
temp_expr1 "sqrt(g*g - 4*r*b)"
temp_name2 t
temp_expr2 "(2.*b) / (-sqrt(g*g - 4*r*b) - g)"
expr0 "log10(midPoint.x) + (t +j) * KNOT_INC_HIGH"
channel1 {-rgba.red rgba.green -rgba.blue none}
expr1 0
channel2 {-rgba.red -rgba.green rgba.blue none}
expr2 0
expr3 1
maskChannelInput -rgba.alpha
unpremult -rgba.alpha
name inv_knot_vals1
xpos 730
ypos 14
}
push $N26ffa750
Dot {
name Dot12
xpos 984
ypos -78
}
set N26e7a4a0 [stack 0]
Expression {
temp_name0 logy
temp_expr0 "log10( max(g, 1e-10 ))"
temp_name1 low
temp_expr1 "(logy > KNOT_Y_HIGH.0) && (logy <= KNOT_Y_HIGH.1)"
temp_name2 mid
temp_expr2 "(logy > KNOT_Y_HIGH.1) && (logy <= KNOT_Y_HIGH.2)"
temp_name3 high
temp_expr3 "(logy > KNOT_Y_HIGH.2) && (logy <= KNOT_Y_HIGH.3)"
expr0 "low ? coefsHigh.0 : mid ? coefsHigh.1 : coefsHigh.2"
expr1 "low ? coefsHigh.1 : mid ? coefsHigh.2 : coefsHigh.3"
expr2 "low ? coefsHigh.2 : mid ? coefsHigh.3 : coefsHigh.4"
expr3 "low ? 0 : mid ? 1 : high ? 2 : 0"
name inv_cfLow2
xpos 840
ypos -82
}
ColorMatrix {
channels {rgba.red rgba.green rgba.blue -rgba.alpha}
matrix {
{0.5 -1 0.5}
{-1 1 0}
{0.5 0.5 0}
}
name inv_basis_low2
xpos 840
ypos -34
}
push $N26e7a4a0
MergeExpression {
inputs 2
temp_name0 logy
temp_expr0 "log10(max(Bg, 1e-10))"
expr0 Ar
expr1 Ag
expr2 Ab-logy
expr3 Aa
name c_minus_logy2
xpos 950
ypos -34
}
Expression {
temp_name0 j
temp_expr0 a
temp_name1 d
temp_expr1 "sqrt(g*g - 4*r*b)"
temp_name2 t
temp_expr2 "(2.*b) / (-sqrt(g*g - 4*r*b) - g)"
expr0 0
channel1 {-rgba.red rgba.green -rgba.blue none}
expr1 "log10(midPoint.x) + (t +j) * KNOT_INC_HIGH"
channel2 {-rgba.red -rgba.green rgba.blue none}
expr2 0
expr3 1
maskChannelInput -rgba.alpha
unpremult -rgba.alpha
name inv_knot_vals2
xpos 950
ypos 14
}
Merge2 {
inputs 3+1
operation plus
bbox B
output rgb
name Merge1
xpos 950
ypos 134
}
Merge2 {
inputs 2
operation multiply
also_merge all
name Multiply2
xpos 950
ypos 470
}
Dot {
name Dot29
label " "
xpos 984
ypos 786
}
push $N2708d050
Expression {
temp_name0 logr
temp_expr0 "log10( max(r, 1e-10 ))"
temp_name1 logg
temp_expr1 "log10( max(g, 1e-10 ))"
temp_name2 logb
temp_expr2 "log10( max(b, 1e-10 ))"
expr0 "logr >= log10(maxPoint.y) ? 1 : 0"
expr1 "logg >= log10(maxPoint.y) ? 1 : 0"
expr2 "logb >= log10(maxPoint.y) ? 1 : 0"
name segment_peak
xpos -920
ypos -202
}
Dot {
name Dot24
label " "
xpos -886
ypos 618
}
push $N26ff0b70
Dot {
name Dot21
label " "
xpos 1534
ypos -318
}
Expression {
temp_name0 logr
temp_expr0 "log10( max(r, 1e-10 ))"
temp_name1 logg
temp_expr1 "log10( max(g, 1e-10 ))"
temp_name2 logb
temp_expr2 "log10( max(b, 1e-10 ))"
channel0 {rgba.red -rgba.green -rgba.blue none}
expr0 log10(maxPoint.x)
expr1 log10(maxPoint.x)
expr2 log10(maxPoint.x)
expr3 1
name proc_low1
label Expression
xpos 1500
ypos -208
}
Merge2 {
inputs 2
operation multiply
also_merge all
name Multiply4
xpos 1500
ypos 614
}
Merge2 {
inputs 4+1
operation plus
bbox B
output rgb
name Merge3
xpos 510
ypos 1118
}
Expression {
channel0 {rgba.red -rgba.green -rgba.blue none}
expr0 pow(10,r)
expr1 pow(10,g)
expr2 pow(10,b)
name Expression13
xpos 510
ypos 1238
}
Copy {
inputs 2
from0 rgba.alpha
to0 rgba.alpha
name Copy1
xpos 510
ypos 1496
}
Output {
name Output1
xpos 510
ypos 1814
}
end_group
Expression {
channel0 rgb
expr0 log(r)/log(2)-log(0.18)/log(2)
name expShift
note_font Helvetica
xpos -400
ypos 431
}
end_group
ColorMatrix {
matrix {
{1.705079317 -0.6242337823 -0.08084625006}
{-0.1297003478 1.138468742 -0.008767957799}
{-0.0241663754 -0.1246140897 1.148780584}
}
name ColorMatrix18
label "ACEScg to Rec709"
note_font Helvetica
selected true
xpos 5000
ypos 1185
}
Clamp {
channels rgba
name Clamp5
note_font Helvetica
selected true
xpos 5000
ypos 1231
}
Group {
name DisplayEOTF23
note_font Helvetica
selected true
xpos 5000
ypos 1271
addUserKnob {20 DisplayEOTF_tab l DisplayEOTF}
addUserKnob {4 eotf l EOTF t "Electrical to Optical Transfer Function of the monitor." M {sRGB BT.1886 "Gamma 2.2" "Gamma 2.4" "Gamma 2.6" DCDM "ST-2084 (PQ)" HLG Linear "" ""}}
eotf BT.1886
addUserKnob {6 legal_range -STARTLINE}
addUserKnob {35 presets l "" t "display output presets." +STARTLINE M {luminance/SDR "knobs this \{lum \{0.02 4.8 48\}\}" "luminance/P3D65 ST2084 108nits 7.2nits" "knobs this \{lum \{0.0001 7.2 108\}\}" "luminance/P3D65 ST2084 1000nits 15nits" "knobs this \{lum \{0.0001 15 1000\}\}" "luminance/P3D65 ST2084 2000nits 15nits" "knobs this \{lum \{0.0001 15 2000\}\}" "luminance/P3D65 ST2084 2000nits 15nits" "knobs this \{lum \{0.0001 15 2000\}\}" "luminance/P3D65 ST2084 4000nits 15nits" "knobs this \{lum \{0.0001 15 4000\}\}" luminance/Rec2020_HLG_1000nits_15nits "knobs this \{lum \{0.0001 15 1000\}\}" luminance/Rec2020_ST2084_1000nits_15nits "knobs this \{lum \{0.0001 15 1000\}\}" luminance/Rec2020_ST2084_2000nits_15nits "knobs this \{lum \{0.0001 15 2000\}\}" luminance/Rec2020_ST2084_4000nits_15nits "knobs this \{lum \{0.0001 15 4000\}\}"}}
addUserKnob {78 lum l "" t "SSTS Display Luminance: \ny_min y_mid y_max\n\nAccording to Zach Lewis's ACES_OT\nhttps://gist.github.com/zachlewis/786c0be941868644c993fde1c3515c2c\n\nStandard Cinema: \n0.02 4.8 48\nDolby Cinema: \n0.0001 7.2 108\nDolby Pulsar: \n0.005 15 4000\nDolby PRR-4220: \n0.005 10 600\nSony BVM-X300: \n0.0001 10 1000\nACES OCES: \n0.0001 4.8 10000\n\n" -STARTLINE n 3}
lum {{parent.ToneScale29.lum} {parent.ToneScale29.lum} {parent.ToneScale29.lum}}
}
BackdropNode {
inputs 0
name Electrical_Optical_Transfer_Function
tile_color 0x151515ff
label "ACESlib.OutputTransforms.ctl : 185\n// EOTF"
note_font_size 12
xpos -1215
ypos 270
bdwidth 3391
bdheight 740
z_order -10
}
BackdropNode {
inputs 0
name BackdropNode1
tile_color 0x272727ff
label "HDR EOTFs"
note_font_size 42
xpos 1225
ypos 331
bdwidth 910
bdheight 617
z_order -5
}
BackdropNode {
inputs 0
name BackdropNode2
tile_color 0x272727ff
label "SDR EOTFs"
note_font_size 42
xpos -319
ypos 332
bdwidth 1545
bdheight 616
z_order -5
}
BackdropNode {
inputs 0
name Output_Legal_Range
tile_color 0x272727ff
label "ACESlib.OutputTransforms.ctl : 216\n"
note_font_size 12
xpos -519
ypos 1432
bdwidth 318
bdheight 176
}
Input {
inputs 0
name Input
xpos -400
ypos 150
}
Dot {
name Dot1
label " "
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos -366
ypos 474
}
set N26d95480 [stack 0]
push $N26d95480
Dot {
name Dot3
label " "
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos -126
ypos 474
}
set N26d9a4f0 [stack 0]
Dot {
name Dot4
label " "
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos 114
ypos 474
}
set N26d9f3c0 [stack 0]
Dot {
name Dot6
label " "
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos 354
ypos 474
}
set N26da42c0 [stack 0]
Dot {
name Dot18
label " "
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos 594
ypos 474
}
set N26da91c0 [stack 0]
Dot {
name Dot20
label " "
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos 834
ypos 474
}
set N26dae100 [stack 0]
Dot {
name Dot25
label " "
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos 1074
ypos 474
}
set N26db3000 [stack 0]
Dot {
name Dot24
label " "
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos 1434
ypos 474
}
Dot {
name Dot2
label " "
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos 1434
ypos 554
}
set N26dbce00 [stack 0]
Expression {
expr0 "r * (Ymax - Ymin) + Ymin"
expr1 "g * (Ymax - Ymin) + Ymin"
expr2 "b * (Ymax - Ymin) + Ymin"
name linCV_2_Y_f3_hdr
label "stretch_black = True"
xpos 1280
ypos 584
addUserKnob {20 Luminance}
addUserKnob {7 Ymin R 0.0001 0.02}
addUserKnob {7 Ymax R 48 10000}
Ymax {{parent.lum.2}}
}
push $N26dbce00
Expression {
expr0 "r * (Ymax - Ymin) + Ymin"
expr1 "g * (Ymax - Ymin) + Ymin"
expr2 "b * (Ymax - Ymin) + Ymin"
name linCV_2_Y_f3_hdr2
label "stretch_black = False"
xpos 1400
ypos 584
addUserKnob {20 Luminance}
addUserKnob {7 Ymin R 0.0001 0.02}
Ymin {{parent.lum.0}}
addUserKnob {7 Ymax R 48 10000}
Ymax {{parent.lum.2}}
}
Switch {
inputs 2
which {{parent.stretch_black}}
name StretchBlacks_Switch
xpos 1400
ypos 670
}
Clamp {
channels rgb
maximum 65535
name clamp_f3__
xpos 1400
ypos 750
}
Expression {
temp_name0 Lm_r
temp_expr0 "pow((r / pq_C), pq_m1)"
temp_name1 Lm_g
temp_expr1 "pow((g / pq_C), pq_m1)"
temp_name2 Lm_b
temp_expr2 "pow((b / pq_C), pq_m1)"
expr0 "pow(( pq_c1 + pq_c2 * Lm_r ) / ( 1.0 + pq_c3 * Lm_r ), pq_m2)"
expr1 "pow(( pq_c1 + pq_c2 * Lm_g ) / ( 1.0 + pq_c3 * Lm_g ), pq_m2)"
expr2 "pow(( pq_c1 + pq_c2 * Lm_b ) / ( 1.0 + pq_c3 * Lm_b ), pq_m2)"
name Y_2_ST2084_
label "ACESlib.OutputTransforms.ctl : 243 \nACESlib.Utilities_Color.ctl : 425"
xpos 1400
ypos 818
addUserKnob {20 SMPTE_ST2084-2014_Constants_tab l "Constants from SMPTE ST 2084-2014"}
addUserKnob {7 pq_m1 t " ( 2610.0 / 4096.0 ) / 4.0;" +DISABLED R 0 100}
pq_m1 0.1593017578
addUserKnob {7 pq_m2 t " ( 2523.0 / 4096.0 ) * 128.0;" +DISABLED R 0 100}
pq_m2 78.84375
addUserKnob {7 pq_c1 t " 3424.0 / 4096.0 or pq_c3 - pq_c2 + 1.0;" +DISABLED R 0 100}
pq_c1 0.8359375
addUserKnob {7 pq_c2 t " ( 2413.0 / 4096.0 ) * 32.0;" +DISABLED R 0 100}
pq_c2 18.8515625
addUserKnob {7 pq_c3 t " ( 2392.0 / 4096.0 ) * 32.0;" +DISABLED R 0 100}
pq_c3 18.6875
addUserKnob {7 pq_C +DISABLED R 0 100}
pq_C 10000
}
set N26df6930 [stack 0]
Dot {
name Dot5
label " "
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos 1794
ypos 474
}
Expression {
temp_name0 Np_r
temp_expr0 "pow( r, 1.0 / pq_m2 )"
temp_name1 Np_g
temp_expr1 "pow( g, 1.0 / pq_m2 )"
temp_name2 Np_b
temp_expr2 "pow( b, 1.0 / pq_m2 )"
expr0 "r < 0 ? 0 : pow((Np_r - pq_c1) / ( pq_c2 - pq_c3 * Np_r ), 1.0/pq_m1) * pq_C"
expr1 "g < 0 ? 0 : pow((Np_g - pq_c1) / ( pq_c2 - pq_c3 * Np_g ), 1.0/pq_m1) * pq_C"
expr2 "b < 0 ? 0 : pow((Np_b - pq_c1) / ( pq_c2 - pq_c3 * Np_b ), 1.0/pq_m1) * pq_C"
name ST2084_2_Y_f3_
label "ACESlib.Utilities_Color.ctl : 408\n// Converts from the non-linear perceptually quantized space to linear cd/m^2"
xpos 1760
ypos 538
addUserKnob {20 SMPTE_ST2084-2014_Constants_tab l "Constants from SMPTE ST 2084-2014"}
addUserKnob {7 pq_m1 t " ( 2610.0 / 4096.0 ) / 4.0;" +DISABLED R 0 100}
pq_m1 0.1593017578
addUserKnob {7 pq_m2 t " ( 2523.0 / 4096.0 ) * 128.0;" +DISABLED R 0 100}
pq_m2 78.84375
addUserKnob {7 pq_c1 t " 3424.0 / 4096.0 or pq_c3 - pq_c2 + 1.0;" +DISABLED R 0 100}
pq_c1 0.8359375
addUserKnob {7 pq_c2 t " ( 2413.0 / 4096.0 ) * 32.0;" +DISABLED R 0 100}
pq_c2 18.8515625
addUserKnob {7 pq_c3 t " ( 2392.0 / 4096.0 ) * 32.0;" +DISABLED R 0 100}
pq_c3 18.6875
addUserKnob {7 pq_C +DISABLED R 0 100}
pq_C 10000
}
Expression {
temp_name0 Y_d
temp_expr0 "0.2627*r + 0.6780*g + 0.0593*b"
expr0 "Y_d == 0 ? 0 : pow( (Y_d-c_beta)/c_alpha, (1-c_gamma)/c_gamma) * ((r-c_beta)/c_alpha)"
expr1 "Y_d == 0 ? 0 : pow( (Y_d-c_beta)/c_alpha, (1-c_gamma)/c_gamma) * ((g-c_beta)/c_alpha)"
expr2 "Y_d == 0 ? 0 : pow( (Y_d-c_beta)/c_alpha, (1-c_gamma)/c_gamma) * ((b-c_beta)/c_alpha)"
name ST2084_2_HLG_1000nits_f3_3
label "ACESlib.Utilities_Color.ctl : 469\n// HLG Inverse EOTF (i.e. HLG inverse OOTF followed by the HLG OETF)\n// HLG Inverse OOTF (display linear to scene linear)"
xpos 1760
ypos 652
addUserKnob {20 Constants_tab l Constants}
addUserKnob {7 L_w +DISABLED}
L_w 1000
addUserKnob {7 L_b +DISABLED}
addUserKnob {7 c_alpha +DISABLED}
c_alpha {{L_w-L_b}}
addUserKnob {7 c_beta +DISABLED}
c_beta {{L_b}}
addUserKnob {7 c_gamma +DISABLED}
c_gamma 1.2
}
Expression {
channel0 {rgba.red -rgba.green -rgba.blue none}
expr0 "r <= 1.0/12 ? sqrt(3.0*r) : c_a * log(12.0 * r - c_b) + c_c"
expr1 "g <= 1.0/12 ? sqrt(3.0*g) : c_a * log(12.0 * g- c_b) + c_c"
expr2 "b <= 1.0/12 ? sqrt(3.0*b) : c_a * log(12.0 * b - c_b) + c_c"
name ST2084_2_HLG_1000nits_f3_
label "ACESlib.Utilities_Color.ctl : 493\n// HLG OETF (scene linear to non-linear signal value)"
xpos 1760
ypos 778
addUserKnob {20 Constants_tab l Constants}
addUserKnob {7 c_a +DISABLED}
c_a 0.17883277
addUserKnob {7 c_b t 1.-4.*a +DISABLED}
c_b 0.28466892
addUserKnob {7 c_c t 0.5-a*log(4.*a) +DISABLED}
c_c 0.55991073
}
Dot {
name Dot17
label " HLG"
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos 1794
ypos 914
}
push $N26df6930
Dot {
name Dot27
label " PQ"
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos 1434
ypos 914
}
push $N26db3000
Expression {
expr0 "pow( (48./52.37) * r, 1./2.6)"
expr1 "pow( (48./52.37) * g, 1./2.6)"
expr2 "pow( (48./52.37) * b, 1./2.6)"
expr3 1
name dcdm_encode
xpos 1040
ypos 590
}
Dot {
name Dot10
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xff
xpos 1074
ypos 914
}
push $N26dae100
Expression {
expr0 pow(r,1/gamma)
expr1 pow(g,1/gamma)
expr2 pow(b,1/gamma)
name pow_f3_gamma_26_
label "ACESlib.Utilities_Color.ctl : 260\n// Gamma 2.6"
xpos 800
ypos 578
addUserKnob {20 Gamma_tab l Gamma}
addUserKnob {7 gamma R 0 4}
gamma 2.6
}
Dot {
name Dot11
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xff
xpos 834
ypos 914
}
push $N26da91c0
Expression {
expr0 pow(r,1/gamma)
expr1 pow(g,1/gamma)
expr2 pow(b,1/gamma)
name pow_f3_gamma_24_
label "ACESlib.Utilities_Color.ctl : 260\n// Gamma 2.4"
xpos 560
ypos 578
addUserKnob {20 Gamma_tab l Gamma}
addUserKnob {7 gamma R 0 4}
gamma 2.4
}
Dot {
name Dot12
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xff
xpos 594
ypos 914
}
push $N26da42c0
Expression {
expr0 pow(r,1/gamma)
expr1 pow(g,1/gamma)
expr2 pow(b,1/gamma)
name pow_f3_gamma_22_
label "ACESlib.Utilities_Color.ctl : 260\n// Gamma 2.2"
xpos 320
ypos 578
addUserKnob {20 Gamma_tab l Gamma}
addUserKnob {7 gamma R 0 4}
gamma 2.2
}
Dot {
name Dot8
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xff
xpos 354
ypos 914
}
push $N26d9f3c0
Expression {
temp_name0 c_a
temp_expr0 "pow( pow( Lw, 1./gamma) - pow( Lb, 1./gamma), gamma)"
temp_name1 c_b
temp_expr1 "pow( Lb, 1./gamma) / ( pow( Lw, 1./gamma) - pow( Lb, 1./gamma))"
expr0 "pow( max( r / c_a, 0.), 1.0/gamma) - c_b"
expr1 "pow( max( g / c_a, 0.), 1.0/gamma) - c_b"
expr2 "pow( max( b / c_a, 0.), 1.0/gamma) - c_b"
name bt1886_r_f3
label "ACESlib.Utilities_Color.ctl : 301\n// The reference EOTF specified in Rec. ITU-R BT.1886\n// L = a(max\[(V+b),0])^g"
xpos 80
ypos 572
addUserKnob {20 Luminance}
addUserKnob {7 Lw R 48 10000}
Lw 1
addUserKnob {7 Lb R 0.0001 0.02}
addUserKnob {7 gamma R 1 4}
gamma 2.4
}
Dot {
name Dot9
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xff
xpos 114
ypos 914
}
push $N26d9a4f0
Expression {
temp_name0 yb
temp_expr0 "pow( offs * gamma / ( ( gamma - 1.0) * ( 1.0 + offs)), gamma)"
temp_name1 rs
temp_expr1 "pow( ( gamma - 1.0) / offs, gamma - 1.0) * pow( ( 1.0 + offs) / gamma, gamma)"
expr0 "r >= yb ? ( 1.0 + offs) * pow( r, 1.0 / gamma) - offs : r * rs"
expr1 "g >= yb ? ( 1.0 + offs) * pow( g, 1.0 / gamma) - offs : g * rs"
expr2 "b >= yb ? ( 1.0 + offs) * pow( b, 1.0 / gamma) - offs : b * rs"
name moncurve_r_f3_
label "ACESlib.Utilities_Color.ctl : 260\nmoncurve_r with gamma of 2.4 and offset of 0.055 matches the EOTF found in IEC 61966-2-1:1999 (sRGB)"
xpos -160
ypos 578
addUserKnob {20 Luminance}
addUserKnob {7 gamma R 0 4}
gamma 2.4
addUserKnob {7 offs}
offs 0.055
}
Dot {
name Dot7
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xff
xpos -126
ypos 914
}
Switch {
inputs 9
which {{parent.eotf}}
name EOTF_Switch
xpos -400
ypos 1270
}
Expression {
temp_name0 REFBLACK
temp_expr0 "64 / 1023"
temp_name1 REFWHITE
temp_expr1 "940 / 1023"
expr0 "r * ( REFWHITE - REFBLACK) + REFBLACK"
expr1 "g * ( REFWHITE - REFBLACK) + REFBLACK"
expr2 "b * ( REFWHITE - REFBLACK) + REFBLACK"
name fullRange_to_smpteRange_f3_
label "ACESlib.OutputTransforms.ctl : 216"
xpos -400
ypos 1504
disable {{!parent.legal_range}}
}
Output {
name Output
xpos -400
ypos 1670
}
end_group