\n- ACES Output Output Color Encoding Specification \n- An idealized reference display with 0.0001 / 4.8 / 10000 luma\n w/ ACES AP0 Primaries."
note_font_size 27.4
xpos -1833
ypos 2379
bdwidth 367
bdheight 377
}
BackdropNode {
inputs 0
name Output_Legal_Range
tile_color 0x272727ff
label "ACESlib.OutputTransforms.ctl : 216\n"
note_font_size 12
xpos -1369
ypos 3128
bdwidth 318
bdheight 176
}
BackdropNode {
inputs 0
name Single_Stage_Tone_Scale
tile_color 0x272727ff
label "Single Stage Tone Scale : ACESlib.OutputTransforms.ctl : 82// Apply the tonescale independently in rendering-space RGB\nfloat rgbPost\[3] = ssts_f3( rgbPre, PARAMS);\n\nIf output is SDR, output OCES from SSTS and use SegmentedSpline_c9."
note_font_size 12
xpos -1502
ypos -653
bdwidth 609
bdheight 533
}
BackdropNode {
inputs 0
name clamp_negatives
tile_color 0x272727ff
label "ACESlib.OutputTransforms.ctl : 174\n// Clip values < 0 (i.e. projecting outside the display primaries)\nNote: Also clamping values > 1 here."
note_font_size 12
xpos -1393
ypos 2087
bdwidth 386
bdheight 120
}
BackdropNode {
inputs 0
name dim_surround_gamma_adjustment
tile_color 0x272727ff
label "ACESlib.OutputTransforms.ctl : 92\n// Apply gamma adjustment to compensate for dim surround\n"
note_font_size 12
xpos -1407
ypos 1063
bdwidth 395
bdheight 258
}
BackdropNode {
inputs 0
name limit_primaries
tile_color 0x555a5cff
label "ACESlib.OutputTransforms.ctl : 130\n// Gamut limit to limiting primaries\n"
note_font_size 12
xpos -1408
ypos 1655
bdwidth 396
bdheight 194
}
BackdropNode {
inputs 0
name limit_primaries1
tile_color 0x555a5cff
label "ACESlib.OutputTransforms.ctl : 144\n// CIE XYZ to display encoding primaries\n"
note_font_size 12
xpos -1402
ypos 1892
bdwidth 384
bdheight 151
}
BackdropNode {
inputs 0
name limit_primaries2
tile_color 0x555a5cff
label "ACESlib.OutputTransforms.ctl : 130\n // Apply CAT from ACES white point to assumed observer adapted white point\n // TODO: Needs to expand from just supporting D60 sim to allow for any\n // observer adapted white point.\n"
note_font_size 12
xpos -1407
ypos 1337
bdwidth 467
bdheight 301
}
BackdropNode {
inputs 0
name rrt_sweeteners_
tile_color 0x555a5cff
label "RRT Sweeteners : ACESlib.OutputTransforms.ctl : 79// RRT sweeteners\nfloat rgbPre\[3] = rrt_sweeteners( in);\n"
note_font_size 18
xpos -1469
ypos -1234
bdwidth 519
bdheight 548
}
Input {
inputs 0
name Input
xpos -1250
ypos -1450
}
AddChannels {
channels rgba
name AddChannels
xpos -1250
ypos -1415
}
Group {
name GamutToXYZ_lite
xpos -1250
ypos -1373
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
ColorMatrix {
matrix {
{1.049811006 0 -9.748453158e-05}
{-0.4959030151 1.373313069 0.09824004024}
{4.020908051e-08 0 0.9912520051}
}
name ColorMatrix4
label "XYZ to ACES"
note_font Helvetica
xpos -1250
ypos -1338
}
Dot {
name Dot7
label " ACES 2065-1 IN"
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos -1216
ypos -1268
}
Group {
name glow_module1
note_font Helvetica
xpos -1250
ypos -1089
addUserKnob {20 Params_tab l Params}
addUserKnob {7 RRT_GLOW_GAIN}
RRT_GLOW_GAIN 0.05
addUserKnob {7 RRT_GLOW_MID}
RRT_GLOW_MID 0.08
addUserKnob {6 invert +STARTLINE}
}
Input {
inputs 0
name Input
xpos -40
ypos -562
}
Dot {
name Dot2
xpos -6
ypos -510
}
set N80b69730 [stack 0]
Dot {
name Dot4
xpos -116
ypos -510
}
set N4e983f20 [stack 0]
Expression {
temp_name0 chroma
temp_expr0 sqrt(b*(b-g)+g*(g-r)+r*(r-b))
temp_name1 ycRadiusWeight
temp_expr1 1.75
channel0 {-rgba.red rgba.green -rgba.blue none}
expr0 "( b + g + r + ycRadiusWeight * chroma) / 3.0"
channel1 {rgba.red -rgba.green -rgba.blue none}
expr1 0
expr2 0
name rgb_2_yc1
xpos -150
ypos -466
}
push 0
push $N4e983f20
Dot {
name Dot3
xpos -226
ypos -510
}
Expression {
temp_name0 TINY
temp_expr0 1e-10
temp_name1 min_f3
temp_expr1 min(r,min(g,b))
temp_name2 max_f3
temp_expr2 max(r,max(g,b))
expr0 "(max( max_f3, TINY) - max( min_f3, TINY)) / max( max_f3, 1e-2)"
expr1 0
expr2 0
name rgb_2_saturation1
xpos -260
ypos -466
}
set N4e99ba30 [stack 0]
Expression {
channel0 {rgba.red rgba.green rgba.blue none}
expr0 "(r - 0.4) / 0.2"
name Expression1
xpos -370
ypos -466
}
Expression {
temp_name0 t
temp_expr0 "max( 1.0 - fabs( r / 2.0), 0.0)"
temp_name1 sign
temp_expr1 r>0?1:r<0?-1:0
temp_name2 valy
temp_expr2 "1.0 + sign * (1.0 - t * t)"
channel0 {-rgba.red -rgba.green rgba.blue none}
expr0 "valy / 2"
channel1 {rgba.red rgba.green -rgba.blue none}
expr1 0
channel2 {-rgba.red rgba.green rgba.blue none}
expr2 0
name sigmoid_shaper1
xpos -370
ypos -442
}
push $N4e99ba30
Merge2 {
inputs 3+1
operation plus
bbox B
output rgb
name Merge2
note_font Helvetica
xpos -260
ypos -393
}
set N4e9c60c0 [stack 0]
Expression {
temp_name0 ycOut
temp_expr0 g
temp_name1 glowGainIn
temp_expr1 "RRT_GLOW_GAIN * b"
temp_name2 glowMid
temp_expr2 RRT_GLOW_MID
channel0 rgb
expr0 "1 + ((ycOut <= ((1 + glowGainIn) * 2./3. * glowMid)) ? -glowGainIn / (1 + glowGainIn) : ( ycOut >= (2. * glowMid)) ? 0 : glowGainIn * (glowMid / ycOut - 1./2.) / (glowGainIn / 2. - 1.))"
channel1 none
channel2 none
name glow_inv
xpos -150
ypos -346
}
push $N4e9c60c0
Expression {
temp_name0 ycIn
temp_expr0 g
temp_name1 glowGainIn
temp_expr1 "RRT_GLOW_GAIN * b"
temp_name2 glowMid
temp_expr2 RRT_GLOW_MID
channel0 rgb
expr0 "1 + ( ycIn <= 2./3. * glowMid ? glowGainIn : ycIn >= 2. * glowMid ? 0 : glowGainIn * (glowMid / ycIn - 1./2.) )"
channel1 none
channel2 none
name glow_fwd
xpos -370
ypos -346
}
Switch {
inputs 2
which {{parent.invert}}
name Switch_direction
note_font Helvetica
xpos -260
ypos -297
}
Dot {
name Dot5
xpos -226
ypos -246
}
push $N80b69730
Merge2 {
inputs 2
operation multiply
bbox B
output rgb
name Merge3
note_font Helvetica
xpos -40
ypos -249
}
Output {
name Output
xpos -40
ypos -178
}
end_group
Group {
name red_modifier1
note_font Helvetica
xpos -1250
ypos -1041
addUserKnob {20 Params_tab l Params}
addUserKnob {7 RRT_RED_SCALE}
RRT_RED_SCALE 0.82
addUserKnob {7 RRT_RED_PIVOT}
RRT_RED_PIVOT 0.03
addUserKnob {7 RRT_RED_HUE}
addUserKnob {7 RRT_RED_WIDTH R 0 360}
RRT_RED_WIDTH 135
addUserKnob {6 invert +STARTLINE}
}
Input {
inputs 0
name Input
xpos -40
ypos -10
}
Dot {
name Dot1
xpos -6
ypos 42
}
set N4e922e40 [stack 0]
Dot {
name Dot2
xpos -226
ypos 42
}
set N4e927cb0 [stack 0]
Expression {
temp_name0 TINY
temp_expr0 1e-10
temp_name1 min_f3
temp_expr1 min(r,min(g,b))
temp_name2 max_f3
temp_expr2 max(r,max(g,b))
channel0 rgb
expr0 "(max( max_f3, TINY) - max( min_f3, TINY)) / max( max_f3, 1e-2)"
channel1 none
expr1 0
channel2 none
expr2 0
name rgb_2_saturation
xpos -260
ypos 86
}
push $N4e927cb0
Dot {
name Dot3
xpos -336
ypos 42
}
Expression {
temp_name0 hue
temp_expr0 "(r==g&&g==b)?0:(180/pi) * atan2( sqrt(3)*(g-b), 2*r-g-b)"
channel0 {rgba.red -rgba.green -rgba.blue -rgba.alpha}
expr0 "hue < 0 ? hue + 360 : hue"
channel1 {-rgba.red rgba.green -rgba.blue none}
expr1 0
expr2 0
name rgb_2_hue
xpos -370
ypos 86
}
Expression {
temp_name0 hue
temp_expr0 r
temp_name1 centerH
temp_expr1 RRT_RED_HUE
temp_name2 hueCentered
temp_expr2 hue-centerH
channel0 {-rgba.red rgba.green -rgba.blue -rgba.alpha}
expr0 "hueCentered < -180.0 ? hueCentered + 360.0 : (hueCentered > 180.0) ? hueCentered - 360.0 : hueCentered"
name center_hue
xpos -370
ypos 134
}
Expression {
temp_name0 centeredHue
temp_expr0 g
temp_name1 knot_coord
temp_expr1 "(centeredHue - knots.0) * 4.0/w"
temp_name2 j
temp_expr2 int(knot_coord)
temp_name3 t
temp_expr3 "knot_coord - j"
channel0 {rgba.red -rgba.green -rgba.blue -rgba.alpha}
expr0 "(min((centeredHue > knots.0?1:0) , (centeredHue < knots.4?1:0)) ? j == 3 ? t*t*t * -1./6 + t*t * 3./6 + t * -3./6 + 1 * 1./6 : j == 2 ? t*t*t * 3./6 + t*t * -6./6 + t * 0./6 + 1. *4./6 : j == 1 ? t*t*t * -3./6 + t*t * 3./6 + t * 3./6 + 1. * 1./6 : j == 0 ? t*t*t * 1./6 + t*t * 0./6 + t * 0./6 + 1. * 0./6 : 0 : 0) * 3/2"
channel1 none
channel2 none
name cubic_basis_shaper
xpos -370
ypos 182
addUserKnob {20 param}
addUserKnob {7 w R 0 360}
w {{parent.RRT_RED_WIDTH}}
addUserKnob {78 knots n 5}
knots {{-w/2} {-w/4} 0 {w/4} {w/2}}
}
Dot {
name Dot4
xpos -336
ypos 234
}
Copy {
inputs 2
from0 rgba.blue
to0 rgba.blue
name Copy4
note_font Helvetica
xpos -260
ypos 226
}
Dot {
name Dot6
label " r : hueWeight\n g : centeredHue\n b : saturation"
note_font "Helvetica \[pyrs]"
note_font_size 12
note_font_color 0xff
xpos -226
ypos 282
}
Dot {
name Dot7
xpos -226
ypos 330
}
set N4e85cb70 [stack 0]
push $N4e922e40
Dot {
name Dot8
xpos -6
ypos 258
}
set N4e861a00 [stack 0]
MergeExpression {
inputs 2
temp_name0 minChan
temp_expr0 "Ag < 0 ? Bg : Bb"
temp_name1 a_
temp_expr1 "Ar * (1. - RRT_RED_SCALE) - 1."
temp_name2 b
temp_expr2 "Br - Ar* (RRT_RED_PIVOT + minChan) * (1. - RRT_RED_SCALE)"
temp_name3 c
temp_expr3 "Ar * RRT_RED_PIVOT * minChan * (1. - RRT_RED_SCALE)"
expr0 "( -b - sqrt( b * b - 4. * a_ * c)) / ( 2. * a_)"
name red_modifier_rev
note_font Helvetica
xpos -150
ypos 351
}
push $N4e85cb70
push $N4e861a00
MergeExpression {
inputs 2
expr0 "r + Ar * Ab * (RRT_RED_PIVOT - r) * (1. - RRT_RED_SCALE)"
name red_modifier_fwd
note_font Helvetica
xpos -40
ypos 327
}
Switch {
inputs 2
which {{parent.invert}}
name Switch_direction
note_font Helvetica
xpos -40
ypos 423
}
Output {
name Output
xpos -40
ypos 494
}
end_group
Clamp {
channels rgb
maximum_enable false
name clamp_f3_min
label "Clamp Negative Values"
xpos -1250
ypos -976
}
ColorMatrix {
matrix {
{1.451439381 -0.2365107685 -0.2149285674}
{-0.07655383646 1.176229835 -0.09967593104}
{0.008316127583 -0.0060324613 0.997716248}
}
name ColorMatrix15
label "ACES to ACEScg"
xpos -1250
ypos -928
}
Clamp {
channels rgb
maximum 65535
name clamp_f3_
label "clamp to HALF_MAX"
xpos -1250
ypos -880
}
ColorMatrix {
matrix {
{{"(1.0 - sat) * rgb2Y.x + sat"} {"(1.0 - sat) * rgb2Y.y"} {"(1.0 - sat) * rgb2Y.z"}}
{{"(1.0 - sat) * rgb2Y.x"} {"(1.0 - sat) * rgb2Y.y + sat"} {"(1.0 - sat) * rgb2Y.z"}}
{{"(1.0 - sat) * rgb2Y.x"} {"(1.0 - sat) * rgb2Y.y"} {"(1.0 - sat) * rgb2Y.z + sat"}}
}
name ColorMatrix
label "// --- Global desaturation --- //\nrgbPre = mult_f3_f33( rgbPre, RRT_SAT_MAT);"
xpos -1250
ypos -790
addUserKnob {20 params}
addUserKnob {13 rgb2Y}
rgb2Y {0.27222875 0.67408174 0.05368952}
addUserKnob {7 sat}
sat 0.96
}
Dot {
name Dot29
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xff
xpos -1216
ypos -558
}
set N4e8c5de0 [stack 0]
Group {
name ssts
xpos -1250
ypos -517
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 {{"use_c9 ? 0.0001 : parent.lum"} {parent.lum} {"use_c9 ? 10000 : 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 x20 5.55}}
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 N4e8e4ce0 [stack 0]
Dot {
name Dot26
label " "
xpos -996
ypos 1506
}
push $N4e8e4ce0
Dot {
name Dot4
label " "
xpos -886
ypos -318
}
set N4ea392f0 [stack 0]
Dot {
name Dot5
label " "
xpos -776
ypos -318
}
set N4ea3e0b0 [stack 0]
Dot {
name Dot2
label " "
xpos -666
ypos -318
}
set N4ea42f00 [stack 0]
Dot {
name Dot3
label " "
xpos -556
ypos -318
}
set N4ea47dd0 [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 $N4ea47dd0
Dot {
name Dot7
label " "
xpos -336
ypos -318
}
set N4ea5fd00 [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 $N4ea42f00
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 $N4ea5fd00
Dot {
name Dot9
label " "
xpos -6
ypos -318
}
set N4ea9aa20 [stack 0]
Dot {
name Dot6
label " "
xpos -6
ypos -198
}
set N4ea9f7e0 [stack 0]
Dot {
name Dot8
label " "
xpos 214
ypos -198
}
set N4eaa4660 [stack 0]
Dot {
name Dot13
label " "
xpos 434
ypos -198
}
Dot {
name Dot12
label " "
xpos 434
ypos -78
}
set N4eaae360 [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 $N4eaae360
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 $N4eaa4660
Dot {
name Dot11
label " "
xpos 214
ypos -78
}
set N4eae9230 [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 $N4eae9230
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 $N4ea9f7e0
Dot {
name Dot10
label " "
xpos -6
ypos -78
}
set N4e531380 [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 $N4e531380
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 $N4ea3e0b0
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 $N4ea9aa20
Dot {
name Dot14
label " "
xpos 764
ypos -318
}
set N4e5a4650 [stack 0]
Dot {
name Dot15
label " "
xpos 764
ypos -198
}
set N4e5a9410 [stack 0]
Dot {
name Dot17
label " "
xpos 984
ypos -198
}
set N4e5ae290 [stack 0]
Dot {
name Dot20
label " "
xpos 1204
ypos -198
}
Dot {
name Dot19
label " "
xpos 1204
ypos -78
}
set N4e5b7f90 [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 $N4e5b7f90
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 $N4e5ae290
Dot {
name Dot18
label " "
xpos 984
ypos -78
}
set N4e5f3340 [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 $N4e5f3340
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 $N4e5a9410
Dot {
name Dot16
label " "
xpos 764
ypos -78
}
set N4ec2e730 [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 $N4ec2e730
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 $N4ea392f0
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 $N4e5a4650
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
Dot {
name Dot23
label " "
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos -1216
ypos -462
}
set N4ecfd1e0 [stack 0]
Dot {
name Dot22
label " "
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos -1656
ypos -462
}
ColorMatrix {
matrix {
{0.6954522133 0.1406786889 0.163869068}
{0.04479461163 0.8596711159 0.09553432465}
{-0.005525866989 0.004025223665 1.001500726}
}
name ColorMatrix7
label "ACEScg to ACES"
note_font Helvetica
xpos -1690
ypos -398
}
Dot {
name Dot21
label " OCES"
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos -1656
ypos 2658
}
push $N4ecfd1e0
Dot {
name Dot28
label " "
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos -1216
ypos -342
}
set N4e419f60 [stack 0]
Group {
name segmented_spline_c9_fwd
xpos -1140
ypos -346
addUserKnob {20 SegmentedSplineParams_c9_tab l SegmentedSplineParams_c9}
addUserKnob {78 coefsLow n 10}
coefsLow {-1.698970004 -1.698970004 -1.4779 -1.2291 -0.8648 -0.448 0.00518 0.4511080334 0.9113744414 0.9113744414}
addUserKnob {78 coefsHigh n 10}
coefsHigh {0.5154386965 0.8470437783 1.1358 1.3802 1.5197 1.5985 1.6467 1.674609136 1.687873339 1.687873339}
addUserKnob {12 minPoint}
minPoint {0.0028799 0.02}
addUserKnob {12 midPoint}
midPoint {4.79999924 4.8}
addUserKnob {12 maxPoint}
maxPoint {1005.719116 48}
addUserKnob {7 slopeLow}
addUserKnob {7 slopeHigh}
slopeHigh 0.04
addUserKnob {3 N_KNOTS_LOW}
N_KNOTS_LOW 8
addUserKnob {3 N_KNOTS_HIGH}
N_KNOTS_HIGH 8
}
Input {
inputs 0
name Input
xpos -1030
ypos -634
}
Dot {
name Dot25
label " "
xpos -996
ypos -318
}
set N4e42f150 [stack 0]
Dot {
name Dot26
label " "
xpos -996
ypos 1506
}
push $N4e42f150
Dot {
name Dot4
label " "
xpos -886
ypos -318
}
set N4e438dd0 [stack 0]
Dot {
name Dot5
label " "
xpos -776
ypos -318
}
set N4e43db90 [stack 0]
Dot {
name Dot2
label " "
xpos -666
ypos -318
}
set N4e4429e0 [stack 0]
Dot {
name Dot3
label " "
xpos -556
ypos -318
}
set N4e4478b0 [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 $N4e4478b0
Dot {
name Dot7
label " "
xpos -336
ypos -318
}
set N4e45fa30 [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 * slopeLow + ( log10(minPoint.y) - slopeLow * log10(minPoint.x) )"
expr1 "logg * slopeLow + ( log10(minPoint.y) - slopeLow * log10(minPoint.x) )"
expr2 "logb* slopeLow + ( log10(minPoint.y) - slopeLow * 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 $N4e4429e0
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 $N4e45fa30
Dot {
name Dot9
label " "
xpos -6
ypos -318
}
set N4e49b600 [stack 0]
Dot {
name Dot6
label " "
xpos -6
ypos -198
}
set N4e4a03c0 [stack 0]
Dot {
name Dot8
label " "
xpos 214
ypos -198
}
set N4e4a5240 [stack 0]
Dot {
name Dot13
label " "
xpos 434
ypos -198
}
Dot {
name Dot12
label " "
xpos 434
ypos -78
}
set N4e4aef40 [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 : j == 5 ? coefsLow.5 : j == 6 ? coefsLow.6 : j == 7 ? coefsLow.7 : j == 8 ? coefsLow.8 : j == 9 ? coefsLow.9 : coefsLow.9"
expr1 "j == 0 ? coefsLow.1 : j == 1 ? coefsLow.2 : j == 2 ? coefsLow.3 :j == 3 ? coefsLow.4 : j == 4 ? coefsLow.5 : j == 5 ? coefsLow.6 : j == 6 ? coefsLow.7 : j == 7 ? coefsLow.8 : j == 8 ? coefsLow.9 : j == 9 ? coefsLow.9 : coefsLow.9"
expr2 "j == 0 ? coefsLow.2 : j == 1 ? coefsLow.3 : j == 2 ? coefsLow.4 :j == 3 ? coefsLow.5 : j == 4 ? coefsLow.6 : j == 5 ? coefsLow.7 : j == 6 ? coefsLow.8 : j == 7 ? coefsLow.9 : j == 8 ? coefsLow.9 : j == 9 ? coefsLow.9 : coefsLow.9"
expr3 j
name Expression15
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 $N4e4aef40
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 $N4e4a5240
Dot {
name Dot11
label " "
xpos 214
ypos -78
}
set N4e4ea080 [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 : j == 5 ? coefsLow.5 : j == 6 ? coefsLow.6 : j == 7 ? coefsLow.7 : j == 8 ? coefsLow.8 : j == 9 ? coefsLow.9 : coefsLow.9"
expr1 "j == 0 ? coefsLow.1 : j == 1 ? coefsLow.2 : j == 2 ? coefsLow.3 :j == 3 ? coefsLow.4 : j == 4 ? coefsLow.5 : j == 5 ? coefsLow.6 : j == 6 ? coefsLow.7 : j == 7 ? coefsLow.8 : j == 8 ? coefsLow.9 : j == 9 ? coefsLow.9 : coefsLow.9"
expr2 "j == 0 ? coefsLow.2 : j == 1 ? coefsLow.3 : j == 2 ? coefsLow.4 :j == 3 ? coefsLow.5 : j == 4 ? coefsLow.6 : j == 5 ? coefsLow.7 : j == 6 ? coefsLow.8 : j == 7 ? coefsLow.9 : j == 8 ? coefsLow.9 : j == 9 ? coefsLow.9 : coefsLow.9"
expr3 j
name Expression14
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 $N4e4ea080
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 $N4e4a03c0
Dot {
name Dot10
label " "
xpos -6
ypos -78
}
set N4e3255c0 [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 : j == 5 ? coefsLow.5 : j == 6 ? coefsLow.6 : j == 7 ? coefsLow.7 : j == 8 ? coefsLow.8 : j == 9 ? coefsLow.9 : coefsLow.9"
expr1 "j == 0 ? coefsLow.1 : j == 1 ? coefsLow.2 : j == 2 ? coefsLow.3 :j == 3 ? coefsLow.4 : j == 4 ? coefsLow.5 : j == 5 ? coefsLow.6 : j == 6 ? coefsLow.7 : j == 7 ? coefsLow.8 : j == 8 ? coefsLow.9 : j == 9 ? coefsLow.9 : coefsLow.9"
expr2 "j == 0 ? coefsLow.2 : j == 1 ? coefsLow.3 : j == 2 ? coefsLow.4 :j == 3 ? coefsLow.5 : j == 4 ? coefsLow.6 : j == 5 ? coefsLow.7 : j == 6 ? coefsLow.8 : j == 7 ? coefsLow.9 : j == 8 ? coefsLow.9 : j == 9 ? coefsLow.9 : coefsLow.9"
expr3 j
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 $N4e3255c0
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 $N4e43db90
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 $N4e49b600
Dot {
name Dot14
label " "
xpos 764
ypos -318
}
set N4e399e20 [stack 0]
Dot {
name Dot15
label " "
xpos 764
ypos -198
}
set N4e39ebe0 [stack 0]
Dot {
name Dot17
label " "
xpos 984
ypos -198
}
set N4e3a3a60 [stack 0]
Dot {
name Dot20
label " "
xpos 1204
ypos -198
}
Dot {
name Dot19
label " "
xpos 1204
ypos -78
}
set N4e3ad760 [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 : j == 5 ? coefsHigh.5 : j == 6 ? coefsHigh.6 : j == 7 ? coefsHigh.7 : j == 8 ? coefsHigh.8 : j == 9 ? coefsHigh.9 : coefsHigh.9"
expr1 "j == 0 ? coefsHigh.1 : j == 1 ? coefsHigh.2 : j == 2 ? coefsHigh.3 :j == 3 ? coefsHigh.4 : j == 4 ? coefsHigh.5 : j == 5 ? coefsHigh.6 : j == 6 ? coefsHigh.7 : j == 7 ? coefsHigh.8 : j == 8 ? coefsHigh.9 : j == 9 ? coefsHigh.9 : coefsHigh.9"
expr2 "j == 0 ? coefsHigh.2 : j == 1 ? coefsHigh.3 : j == 2 ? coefsHigh.4 :j == 3 ? coefsHigh.5 : j == 4 ? coefsHigh.6 : j == 5 ? coefsHigh.7 : j == 6 ? coefsHigh.8 : j == 7 ? coefsHigh.9 : j == 8 ? coefsHigh.9 : j == 9 ? coefsHigh.9 : coefsHigh.9"
expr3 j
name Expression3
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 $N4e3ad760
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 $N4e3a3a60
Dot {
name Dot18
label " "
xpos 984
ypos -78
}
set N4e3e8c90 [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 : j == 5 ? coefsHigh.5 : j == 6 ? coefsHigh.6 : j == 7 ? coefsHigh.7 : j == 8 ? coefsHigh.8 : j == 9 ? coefsHigh.9 : coefsHigh.9"
expr1 "j == 0 ? coefsHigh.1 : j == 1 ? coefsHigh.2 : j == 2 ? coefsHigh.3 :j == 3 ? coefsHigh.4 : j == 4 ? coefsHigh.5 : j == 5 ? coefsHigh.6 : j == 6 ? coefsHigh.7 : j == 7 ? coefsHigh.8 : j == 8 ? coefsHigh.9 : j == 9 ? coefsHigh.9 : coefsHigh.9"
expr2 "j == 0 ? coefsHigh.2 : j == 1 ? coefsHigh.3 : j == 2 ? coefsHigh.4 :j == 3 ? coefsHigh.5 : j == 4 ? coefsHigh.6 : j == 5 ? coefsHigh.7 : j == 6 ? coefsHigh.8 : j == 7 ? coefsHigh.9 : j == 8 ? coefsHigh.9 : j == 9 ? coefsHigh.9 : coefsHigh.9"
expr3 j
name Expression5
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 $N4e3e8c90
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 $N4e39ebe0
Dot {
name Dot16
label " "
xpos 764
ypos -78
}
set N814b9200 [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 : j == 5 ? coefsHigh.5 : j == 6 ? coefsHigh.6 : j == 7 ? coefsHigh.7 : j == 8 ? coefsHigh.8 : j == 9 ? coefsHigh.9 : coefsHigh.9"
expr1 "j == 0 ? coefsHigh.1 : j == 1 ? coefsHigh.2 : j == 2 ? coefsHigh.3 :j == 3 ? coefsHigh.4 : j == 4 ? coefsHigh.5 : j == 5 ? coefsHigh.6 : j == 6 ? coefsHigh.7 : j == 7 ? coefsHigh.8 : j == 8 ? coefsHigh.9 : j == 9 ? coefsHigh.9 : coefsHigh.9"
expr2 "j == 0 ? coefsHigh.2 : j == 1 ? coefsHigh.3 : j == 2 ? coefsHigh.4 :j == 3 ? coefsHigh.5 : j == 4 ? coefsHigh.6 : j == 5 ? coefsHigh.7 : j == 6 ? coefsHigh.8 : j == 7 ? coefsHigh.9 : j == 8 ? coefsHigh.9 : j == 9 ? coefsHigh.9 : coefsHigh.9"
expr3 j
name Expression16
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 $N814b9200
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 $N4e438dd0
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 $N4e399e20
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 * slopeHigh + ( log10(maxPoint.y) - slopeHigh * log10(maxPoint.x) )"
expr1 "logg * slopeHigh + ( log10(maxPoint.y) - slopeHigh * log10(maxPoint.x) )"
expr2 "logb* slopeHigh + ( log10(maxPoint.y) - slopeHigh * log10(maxPoint.x) )"
expr3 1
name proc_low1
label Expression
xpos 1500
ypos -202
}
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
push $N4e419f60
Switch {
inputs 2
which {{parent.use_c9}}
name Switch_c9
xpos -1250
ypos -298
}
Expression {
expr0 "(r - Ymin) / (Ymax - Ymin)"
expr1 "(g - Ymin) / (Ymax - Ymin)"
expr2 "(b - Ymin) / (Ymax - Ymin)"
expr3 1
name Y_2_linCV_f3_
xpos -1250
ypos 38
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}}
}
Dot {
name Dot12
label " "
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos -1216
ypos 282
}
set N4e105730 [stack 0]
Dot {
name Dot15
label " "
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos -1106
ypos 282
}
set N4e10a7e0 [stack 0]
Dot {
name Dot13
label " "
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos -886
ypos 282
}
Dot {
name Dot16
label " "
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos -886
ypos 354
}
set N4e114640 [stack 0]
Expression {
temp_name0 tr
temp_expr0 "(-r - c_x_0) / (c_x_1 - c_x_0)"
temp_name1 tg
temp_expr1 "(-g - c_x_0) / (c_x_1 - c_x_0)"
temp_name2 tb
temp_expr2 "(-b - c_x_0) / (c_x_1 - c_x_0)"
expr0 "tr < 0.0 ? -(tr * c_b + c_c) : tr > 1.0 ? r : -(( tr * c_a + c_b) * tr + c_c)"
expr1 "tg < 0.0 ? -(tg * c_b + c_c) : tg > 1.0 ? g : -(( tg * c_a + c_b) * tg + c_c)"
expr2 "tb < 0.0 ? -(tb * c_b + c_c) : tb > 1.0 ? b : -(( tb * c_a + c_b) * tb + c_c)"
name roll_white_fwd_1
xpos -920
ypos 398
addUserKnob {20 Params}
addUserKnob {7 new_wht}
new_wht 0.918
addUserKnob {7 c_width}
c_width 0.5
addUserKnob {7 c_x_0 +DISABLED}
c_x_0 -1
addUserKnob {7 c_x_1 +DISABLED}
c_x_1 {{"c_x_0 + c_width"}}
addUserKnob {7 c_y0 +DISABLED}
c_y0 {{-new_wht}}
addUserKnob {7 c_y1 +DISABLED}
c_y1 {{c_x_1}}
addUserKnob {7 c_m1 +DISABLED}
c_m1 {{"(c_x_1 - c_x_0)"}}
addUserKnob {7 c_a +DISABLED}
c_a {{"c_y0 - c_y1 + c_m1"}}
addUserKnob {7 c_b +DISABLED}
c_b {{"2 * (c_y1 - c_y0) - c_m1"}}
addUserKnob {7 c_c +DISABLED}
c_c {{c_y0}}
}
Expression {
temp_name0 SCALE
temp_expr0 0.96
temp_name1 NEW_WHT
temp_expr1 0.918
expr0 "min( r, NEW_WHT) * SCALE"
expr1 "min( g, NEW_WHT) * SCALE"
expr2 "min( b, NEW_WHT) * SCALE"
name Expression2
label "// Scale and clamp white to avoid casted highlights due to D60 simulation"
xpos -920
ypos 440
}
Dot {
name Dot11
label " "
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos -886
ypos 498
}
push $N4e114640
Expression {
temp_name0 SCALE
temp_expr0 0.96362
expr0 "r * SCALE"
expr1 "g * SCALE"
expr2 "b * SCALE"
name mult_f_f3_
label D65
xpos -1030
ypos 344
}
push $N4e10a7e0
Switch {
inputs 2
which {{"parent.display_pri < 3"}}
name switch_wp_is_d65_
xpos -1140
ypos 350
}
Dot {
name Dot14
label " "
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos -1106
ypos 426
}
push $N4e105730
Switch {
inputs 2
which {{parent.d60_sim}}
name d60_sim_switch1
xpos -1250
ypos 422
}
Switch {
inputs 2
which {{"parent.display_pri == 3"}}
name switch_wp_is_dci_
xpos -1250
ypos 494
}
Dot {
name Dot26
label " "
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos -1216
ypos 762
}
set N4e16a090 [stack 0]
ColorMatrix {
matrix {
{{"(1.0 - sat) * rgb2Y.x + sat"} {"(1.0 - sat) * rgb2Y.y"} {"(1.0 - sat) * rgb2Y.z"}}
{{"(1.0 - sat) * rgb2Y.x"} {"(1.0 - sat) * rgb2Y.y + sat"} {"(1.0 - sat) * rgb2Y.z"}}
{{"(1.0 - sat) * rgb2Y.x"} {"(1.0 - sat) * rgb2Y.y"} {"(1.0 - sat) * rgb2Y.z + sat"}}
}
name ColorMatrix3
label "// Apply desaturation to compensate \nfor luminance difference"
xpos -1140
ypos 746
addUserKnob {20 params}
addUserKnob {13 rgb2Y}
rgb2Y {0.27222875 0.67408174 0.05368952}
addUserKnob {7 sat}
sat 0.93
}
push $N4e16a090
Switch {
inputs 2
which {{"parent.eotf < 5 && display_pri < 2"}}
name Switch_eotf
label "Use if output is SDR"
xpos -1250
ypos 800
}
ColorMatrix {
matrix {
{0.6624541879 0.1340042055 0.1561876982}
{0.2722287476 0.6740817428 0.05368951708}
{-0.005574660841 0.004060741514 1.010339141}
}
name ColorMatrix1
label "ACES AP1 to XYZ"
xpos -1250
ypos 968
}
Dot {
name Dot8
label " "
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos -1216
ypos 1146
}
set N4e190ef0 [stack 0]
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
name Colorspace2
label "\[value colorspace_in] -> \[value colorspace_out]"
xpos -1140
ypos 1136
}
Clamp {
channels {rgba.red -rgba.green -rgba.blue none}
maximum_enable false
name ClampMin4
xpos -1140
ypos 1190
}
Expression {
expr0 "pow(r, DIM_SURROUND_GAMMA)"
expr1 g
expr2 b
channel3 none
name dark_to_dim3
xpos -1140
ypos 1214
addUserKnob {20 Params}
addUserKnob {7 DIM_SURROUND_GAMMA}
DIM_SURROUND_GAMMA 0.9811
}
Colorspace {
colorspace_in CIE-Yxy
colorspace_out CIE-XYZ
name Colorspace4
label "\[value colorspace_in] -> \[value colorspace_out]"
xpos -1140
ypos 1256
}
push $N4e190ef0
Switch {
inputs 2
which {{"(parent.eotf <= 4) ? parent.dark_to_dim : 0"}}
name DarkToDim_Switch
label "enable if sdr\nand dark_to_dim enabled"
xpos -1250
ypos 1250
}
Dot {
name Dot19
label " "
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos -1216
ypos 1434
}
set N4e1eb640 [stack 0]
Dot {
name Dot9
label " "
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos -1106
ypos 1434
}
set N4e1f0740 [stack 0]
ColorMatrix {
matrix {
{0.9872254133 -0.006114810705 0.01592640579}
{-0.007603884675 1.001874804 0.005322027951}
{0.003066040576 -0.005084238946 1.081519246}
}
name ColorMatrix2
label "CAT: Bradford\n D60 to D65"
xpos -1140
ypos 1466
}
set N4e1f5670 [stack 0]
push $N4e1f0740
Dot {
name Dot10
label " "
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos -996
ypos 1434
}
push $N4e1f5670
Switch {
inputs 2
which {{parent.d60_sim}}
name d60_sim_switch
xpos -1140
ypos 1550
}
push $N4e1eb640
Switch {
inputs 2
which {{"parent.display_pri < 3"}}
name switch_wp_is_d65_1
xpos -1250
ypos 1550
}
Switch {
inputs 2
which {{parent.force_d65_cat}}
name switch_force_d65_cat
xpos -1250
ypos 1598
}
Group {
name limit_to_primaries
label "Only enabled when display_pri != limiting_pri"
xpos -1250
ypos 1760
disable {{"!(parent.display_pri != parent.limiting_pri)"}}
addUserKnob {20 limit_to_primaries}
addUserKnob {4 limiting_pri l "limiting pri" M {Rec709 Rec2020 P3D65 P3DCI P3D60 ACEScg ACES XYZ}}
limiting_pri {{parent.limiting_pri}}
}
Input {
inputs 0
name Input
xpos -40
ypos -298
}
Dot {
name Dot1
label " XYZ to limiting primaries"
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos -6
ypos -198
}
set N4e02d1c0 [stack 0]
push $N4e02d1c0
ColorMatrix {
matrix {
{1.049811006 0 -9.748453158e-05}
{-0.4959030151 1.373313069 0.09824004024}
{4.020908051e-08 0 0.9912520051}
}
name ColorMatrix5
label "XYZ to ACES"
xpos 730
ypos -136
}
push $N4e02d1c0
ColorMatrix {
matrix {
{1.641023397 -0.3248033226 -0.2364246994}
{-0.6636629701 1.615331769 0.01675636508}
{0.01172191743 -0.008284457959 0.9883947968}
}
name ColorMatrix21
label "XYZ to ACEScg"
xpos 620
ypos -136
}
push $N4e02d1c0
ColorMatrix {
matrix {
{2.402741432 -0.8974840641 -0.3880533576}
{-0.8325796723 1.769231915 0.02371272631}
{0.03882339597 -0.08249972761 1.036368608}
}
name ColorMatrix15
label "XYZ to P3D60"
xpos 510
ypos -136
}
push $N4e02d1c0
ColorMatrix {
matrix {
{2.725393534 -1.018002748 -0.4401631057}
{-0.795167923 1.689731717 0.02264718339}
{0.04124190658 -0.0876390487 1.100929499}
}
name ColorMatrix19
label "XYZ to P3DCI"
xpos 400
ypos -136
}
push $N4e02d1c0
ColorMatrix {
matrix {
{2.493496418 -0.9313833117 -0.4027107358}
{-0.8294888139 1.762663841 0.02362467349}
{0.03584583849 -0.07617240399 0.9568845034}
}
name ColorMatrix17
label "XYZ to P3D65"
xpos 290
ypos -136
}
push $N4e02d1c0
ColorMatrix {
matrix {
{0.6954522133 0.1406786889 0.163869068}
{0.04479461163 0.8596711159 0.09553432465}
{-0.005525866989 0.004025223665 1.001500726}
}
name ColorMatrix12
label "XYZ to Rec2020"
xpos 180
ypos -136
}
push $N4e02d1c0
ColorMatrix {
matrix {
{3.240970135 -1.537383318 -0.4986107945}
{-0.9692437053 1.875967622 0.04155509174}
{0.0556300357 -0.2039768547 1.056971431}
}
name ColorMatrix2
label "XYZ to Rec709"
xpos 70
ypos -136
}
Switch {
inputs 8
which {{parent.limiting_pri}}
name limiting_primary_switch
xpos -40
ypos -34
}
Clamp {
channels rgb
name clamp_f3
label "Clip any values outside the limiting primaries"
xpos -40
ypos 56
}
Dot {
name Dot2
label " Convert limited RGB to XYZ"
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos -6
ypos 162
}
set N4e09dd50 [stack 0]
push $N4e09dd50
ColorMatrix {
matrix {
{0.9525524378 0 9.367863095e-05}
{0.3439664543 0.7281661034 -0.07213255018}
{-3.863927134e-08 0 1.008825183}
}
name ColorMatrix4
label "ACES to XYZ"
xpos 730
ypos 224
}
push $N4e09dd50
ColorMatrix {
matrix {
{0.6624541879 0.1340042055 0.1561876982}
{0.2722287476 0.6740817428 0.05368951708}
{-0.005574660841 0.004060741514 1.010339141}
}
name ColorMatrix20
label "ACEScg to XYZ"
xpos 620
ypos 224
}
push $N4e09dd50
ColorMatrix {
matrix {
{0.5049495697 0.2646814585 0.1830150485}
{0.237623319 0.6891706586 0.07320601493}
{0 0.0449459292 0.9638792276}
}
name ColorMatrix13
label "P3D60 to XYZ"
xpos 510
ypos 224
}
push $N4e09dd50
ColorMatrix {
matrix {
{0.4451698363 0.2771343887 0.1722826511}
{0.209491685 0.7215952873 0.06891305745}
{0 0.04706057906 0.9073553085}
}
name ColorMatrix18
label "P3DCI to XYZ"
xpos 400
ypos 224
}
push $N4e09dd50
ColorMatrix {
matrix {
{0.4865709841 0.2656676769 0.1982172877}
{0.2289745659 0.6917385459 0.07928691059}
{0 0.04511339962 1.043944359}
}
name ColorMatrix16
label "P3D65 to XYZ"
xpos 290
ypos 224
}
push $N4e09dd50
ColorMatrix {
matrix {
{0.6369580626 0.1446169019 0.1688809693}
{0.2627002299 0.6779980659 0.05930171534}
{0 0.0280726999 1.060985088}
}
name ColorMatrix3
label "Rec2020 to XYZ"
xpos 180
ypos 224
}
push $N4e09dd50
ColorMatrix {
matrix {
{0.4123907983 0.3575843275 0.180480808}
{0.2126390189 0.7151686549 0.07219231874}
{0.01933082007 0.1191947311 0.950532198}
}
name ColorMatrix1
label "Rec709 to XYZ"
xpos 70
ypos 224
}
Switch {
inputs 8
which {{parent.limiting_pri}}
name limiting_primary_switch1
xpos -40
ypos 326
}
Output {
name Output
xpos -40
ypos 446
}
end_group
Group {
name XYZ_2_DISPLAY_PRI
label "CIE XYZ to display encoding primaries"
xpos -1250
ypos 1976
addUserKnob {20 XYZ_2_DISPLAY_PRI_tab l XYZ_2_DISPLAY_PRI}
addUserKnob {4 display_pri l "display pri" M {Rec709 Rec2020 P3D65 P3DCI P3D60 ACEScg ACES XYZ}}
display_pri {{parent.display_pri}}
}
Input {
inputs 0
name Input
xpos -40
ypos -298
}
Dot {
name Dot1
label " XYZ to display primaries"
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos -6
ypos -198
}
set N4df13890 [stack 0]
push $N4df13890
ColorMatrix {
matrix {
{1.049811006 0 -9.748453158e-05}
{-0.4959030151 1.373313069 0.09824004024}
{4.020908051e-08 0 0.9912520051}
}
name ColorMatrix3
label "XYZ to ACES"
xpos 730
ypos -136
}
push $N4df13890
ColorMatrix {
matrix {
{1.641023397 -0.3248033226 -0.2364246994}
{-0.6636629701 1.615331769 0.01675636508}
{0.01172191743 -0.008284457959 0.9883947968}
}
name ColorMatrix21
label "XYZ to ACEScg"
xpos 620
ypos -136
}
push $N4df13890
ColorMatrix {
matrix {
{2.402741432 -0.8974840641 -0.3880533576}
{-0.8325796723 1.769231915 0.02371272631}
{0.03882339597 -0.08249972761 1.036368608}
}
name ColorMatrix15
label "XYZ to P3D60"
xpos 510
ypos -136
}
push $N4df13890
ColorMatrix {
matrix {
{2.725393534 -1.018002748 -0.4401631057}
{-0.795167923 1.689731717 0.02264718339}
{0.04124190658 -0.0876390487 1.100929499}
}
name ColorMatrix19
label "XYZ to P3DCI"
xpos 400
ypos -136
}
push $N4df13890
ColorMatrix {
matrix {
{2.493496418 -0.9313833117 -0.4027107358}
{-0.8294888139 1.762663841 0.02362467349}
{0.03584583849 -0.07617240399 0.9568845034}
}
name ColorMatrix17
label "XYZ to P3D65"
xpos 290
ypos -136
}
push $N4df13890
ColorMatrix {
matrix {
{1.71665132 -0.3556708097 -0.2533662617}
{-0.6666844487 1.616481304 0.01576855592}
{0.01763986237 -0.04277062416 0.9421030879}
}
name ColorMatrix12
label "XYZ to Rec2020"
xpos 180
ypos -136
}
push $N4df13890
ColorMatrix {
matrix {
{3.240970135 -1.537383318 -0.4986107945}
{-0.9692437053 1.875967622 0.04155509174}
{0.0556300357 -0.2039768547 1.056971431}
}
name ColorMatrix2
label "XYZ to Rec709"
xpos 70
ypos -136
}
Switch {
inputs 8
which {{parent.display_pri}}
name limiting_primary_switch
xpos -40
ypos -34
}
Output {
name Output
xpos -40
ypos 86
}
end_group
Clamp {
channels rgb
name clamp_f3_all
xpos -1250
ypos 2164
}
Dot {
name Dot1
label " "
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos -1216
ypos 2514
}
set N4df88e10 [stack 0]
push $N4df88e10
Dot {
name Dot3
label " "
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos -886
ypos 2514
}
set N4df8e390 [stack 0]
Dot {
name Dot4
label " "
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos -666
ypos 2514
}
set N4df93260 [stack 0]
Dot {
name Dot6
label " "
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos -446
ypos 2514
}
set N4df98190 [stack 0]
Dot {
name Dot18
label " "
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos -226
ypos 2514
}
set N4df9d0c0 [stack 0]
Dot {
name Dot20
label " "
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos -6
ypos 2514
}
set N4dfa1ff0 [stack 0]
Dot {
name Dot25
label " "
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos 214
ypos 2514
}
set N4dfa6f20 [stack 0]
Dot {
name Dot24
label " "
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos 654
ypos 2514
}
Dot {
name Dot2
label " "
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos 654
ypos 2610
}
set N4dfb0d80 [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 510
ypos 2672
addUserKnob {20 Luminance}
addUserKnob {7 Ymin R 0.0001 0.02}
addUserKnob {7 Ymax R 48 10000}
Ymax {{parent.lum.2}}
}
push $N4dfb0d80
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 620
ypos 2672
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 620
ypos 2750
}
Clamp {
channels rgb
maximum 65535
name clamp_f3__
xpos 620
ypos 2822
}
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 620
ypos 2882
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 N4dfeadc0 [stack 0]
Dot {
name Dot5
label " "
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos 984
ypos 2514
}
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 950
ypos 2618
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 950
ypos 2732
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 950
ypos 2834
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 984
ypos 2970
}
push $N4dfeadc0
Dot {
name Dot27
label " PQ"
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xa5a5a501
xpos 654
ypos 2970
}
push $N4dfa6f20
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 180
ypos 2702
}
push $N4dfa1ff0
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 -40
ypos 2690
addUserKnob {20 Gamma_tab l Gamma}
addUserKnob {7 gamma R 0 4}
gamma 2.6
}
push $N4df9d0c0
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 -260
ypos 2690
addUserKnob {20 Gamma_tab l Gamma}
addUserKnob {7 gamma R 0 4}
gamma 2.4
}
push $N4df98190
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 -480
ypos 2690
addUserKnob {20 Gamma_tab l Gamma}
addUserKnob {7 gamma R 0 4}
gamma 2.2
}
push $N4df93260
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 -700
ypos 2684
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
}
push $N4df8e390
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 -920
ypos 2690
addUserKnob {20 Luminance}
addUserKnob {7 gamma R 0 4}
gamma 2.4
addUserKnob {7 offs}
offs 0.055
}
Switch {
inputs 10
which {{parent.eotf}}
name EOTF_Switch
xpos -1250
ypos 2966
}
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 -1250
ypos 3224
disable {{!parent.legal_range}}
}
Output {
name Output
xpos -1250
ypos 3446
}
StickyNote {
inputs 0
name StickyNote1
tile_color 0x535a61ff
label "\nACESlib.RRT_Common.ctl : 135\n\nfloat\[3] rrt_sweeteners( float in\[3])\n\{\n float aces\[3] = in;\n \n // --- Glow module --- //\n float saturation = rgb_2_saturation( aces);\n float ycIn = rgb_2_yc( aces);\n float s = sigmoid_shaper( (saturation - 0.4) / 0.2);\n float addedGlow = 1. + glow_fwd( ycIn, RRT_GLOW_GAIN * s, RRT_GLOW_MID);\n\n aces = mult_f_f3( addedGlow, aces);\n\n // --- Red modifier --- //\n float hue = rgb_2_hue( aces);\n float centeredHue = center_hue( hue, RRT_RED_HUE);\n float hueWeight = cubic_basis_shaper( centeredHue, RRT_RED_WIDTH);\n\n aces\[0] = aces\[0] + hueWeight * saturation * (RRT_RED_PIVOT - aces\[0]) * (1. - RRT_RED_SCALE);\n\n // --- ACES to RGB rendering space --- //\n aces = clamp_f3( aces, 0., HALF_POS_INF);\n float rgbPre\[3] = mult_f3_f44( aces, AP0_2_AP1_MAT);\n rgbPre = clamp_f3( rgbPre, 0., HALF_MAX);\n \n // --- Global desaturation --- //\n rgbPre = mult_f3_f33( rgbPre, RRT_SAT_MAT);\n return rgbPre;\n\}\n\n\n\n"
note_font_size 10
xpos -825
ypos -1204
}
StickyNote {
inputs 0
name StickyNote2
tile_color 0x535a61ff
label "\n\nACESlib.SSTS.ctl : 163float ssts\n( \n varying float x,\n varying TsParams C\n)\n\{\n const int N_KNOTS_LOW = 4;\n const int N_KNOTS_HIGH = 4;\n\n // Check for negatives or zero before taking the log. If negative or zero,\n // set to HALF_MIN.\n float logx = log10( max(x, HALF_MIN )); \n\n float logy;\n\n if ( logx <= log10(C.Min.x) ) \{ \n\n logy = logx * C.Min.slope + ( log10(C.Min.y) - C.Min.slope * log10(C.Min.x) );\n\n \} else if (( logx > log10(C.Min.x) ) && ( logx < log10(C.Mid.x) )) \{\n\n float knot_coord = (N_KNOTS_LOW-1) * (logx-log10(C.Min.x))/(log10(C.Mid.x)-log10(C.Min.x));\n int j = knot_coord;\n float t = knot_coord - j;\n\n float cf\[ 3] = \{ C.coefsLow\[ j], C.coefsLow\[ j + 1], C.coefsLow\[ j + 2]\};\n\n float monomials\[ 3] = \{ t * t, t, 1. \};\n logy = dot_f3_f3( monomials, mult_f3_f33( cf, M1));\n\n \} else if (( logx >= log10(C.Mid.x) ) && ( logx < log10(C.Max.x) )) \{\n\n float knot_coord = (N_KNOTS_HIGH-1) * (logx-log10(C.Mid.x))/(log10(C.Max.x)-log10(C.Mid.x));\n int j = knot_coord;\n float t = knot_coord - j;\n\n float cf\[ 3] = \{ C.coefsHigh\[ j], C.coefsHigh\[ j + 1], C.coefsHigh\[ j + 2]\}; \n\n float monomials\[ 3] = \{ t * t, t, 1. \};\n logy = dot_f3_f3( monomials, mult_f3_f33( cf, M1));\n\n \} else \{ //if ( logIn >= log10(C.Max.x) ) \{ \n\n logy = logx * C.Max.slope + ( log10(C.Max.y) - C.Max.slope * log10(C.Max.x) );\n\n \}\n\n return pow10(logy);\n\n\}"
note_font_size 10
xpos -830
ypos -664
}
StickyNote {
inputs 0
name StickyNote3
tile_color 0x535a61ff
label "\n\nACESlib.Tonescales.ctl : 271float segmented_spline_c9_fwd\n ( \n varying float x,\n varying SegmentedSplineParams_c9 C = ODT_48nits\n )\n\{ \n const int N_KNOTS_LOW = 8;\n const int N_KNOTS_HIGH = 8;\n\n // Check for negatives or zero before taking the log. If negative or zero,\n // set to HALF_MIN.\n float logx = log10( max(x, HALF_MIN )); \n\n float logy;\n\n if ( logx <= log10(C.minPoint.x) ) \{ \n\n logy = logx * C.slopeLow + ( log10(C.minPoint.y) - C.slopeLow * log10(C.minPoint.x) );\n\n \} else if (( logx > log10(C.minPoint.x) ) && ( logx < log10(C.midPoint.x) )) \{\n\n float knot_coord = (N_KNOTS_LOW-1) * (logx-log10(C.minPoint.x))/(log10(C.midPoint.x)-log10(C.minPoint.x));\n int j = knot_coord;\n float t = knot_coord - j;\n\n float cf\[ 3] = \{ C.coefsLow\[ j], C.coefsLow\[ j + 1], C.coefsLow\[ j + 2]\};\n \n float monomials\[ 3] = \{ t * t, t, 1. \};\n logy = dot_f3_f3( monomials, mult_f3_f33( cf, M));\n\n \} else if (( logx >= log10(C.midPoint.x) ) && ( logx < log10(C.maxPoint.x) )) \{\n\n float knot_coord = (N_KNOTS_HIGH-1) * (logx-log10(C.midPoint.x))/(log10(C.maxPoint.x)-log10(C.midPoint.x));\n int j = knot_coord;\n float t = knot_coord - j;\n\n float cf\[ 3] = \{ C.coefsHigh\[ j], C.coefsHigh\[ j + 1], C.coefsHigh\[ j + 2]\}; \n\n float monomials\[ 3] = \{ t * t, t, 1. \};\n logy = dot_f3_f3( monomials, mult_f3_f33( cf, M));\n\n \} else \{ //if ( logIn >= log10(C.maxPoint.x) ) \{ \n\n logy = logx * C.slopeHigh + ( log10(C.maxPoint.y) - C.slopeHigh * log10(C.maxPoint.x) );\n\n \}\n\n return pow10(logy);\n \n\}"
note_font_size 10
xpos -200
ypos -660
}
push $N4e8c5de0
Reformat {
type "to box"
box_width 4
box_height 4
box_fixed true
name Reformat1
note_font Helvetica
xpos -1140
ypos -561
}
Fill {
output rgb
color {{parent.ssts.mid_lum}}
name Fill1
note_font Helvetica
xpos -1140
ypos -537
}
Group {
name inv_ssts
xpos -1140
ypos -514
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 {{"use_c9 ? 0.0001 : parent.lum"} 4.8 {"use_c9 ? 10000 : 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 N4def3ac0 [stack 0]
Dot {
name Dot26
label " "
xpos -996
ypos 1506
}
push $N4def3ac0
Dot {
name Dot4
label " "
xpos -886
ypos -318
}
set N4defd5c0 [stack 0]
Dot {
name Dot5
label " "
xpos -776
ypos -318
}
set N4dd02540 [stack 0]
Dot {
name Dot2
label " "
xpos -666
ypos -318
}
set N4dd071f0 [stack 0]
Dot {
name Dot3
label " "
xpos -556
ypos -318
}
set N4dd0c0c0 [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 $N4dd0c0c0
Dot {
name Dot7
label " "
xpos -336
ypos -318
}
set N4dd24650 [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 $N4dd071f0
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 $N4dd24650
Dot {
name Dot9
label " "
xpos -6
ypos -318
}
set N4dd5fb50 [stack 0]
Dot {
name Dot6
label " "
xpos -6
ypos -174
}
set N4dd64910 [stack 0]
Dot {
name Dot8
label " "
xpos 214
ypos -174
}
set N4dd69790 [stack 0]
Dot {
name Dot13
label " "
xpos 434
ypos -174
}
Dot {
name Dot19
xpos 434
ypos -78
}
set N4dd735a0 [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 $N4dd735a0
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 $N4dd64910
Dot {
name Dot10
xpos -6
ypos -78
}
set N4ddafeb0 [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 $N4ddafeb0
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 $N4dd69790
Dot {
name Dot18
xpos 214
ypos -78
}
set N4ddec560 [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 $N4ddec560
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 $N4dd02540
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 $N4dd5fb50
Dot {
name Dot14
label " "
xpos 764
ypos -318
}
set N4dc61490 [stack 0]
Dot {
name Dot15
label " "
xpos 764
ypos -174
}
set N4dc66250 [stack 0]
Dot {
name Dot17
label " "
xpos 984
ypos -174
}
set N4dc6b0d0 [stack 0]
Dot {
name Dot20
label " "
xpos 1204
ypos -174
}
Dot {
name Dot16
xpos 1204
ypos -78
}
set N4dc74dd0 [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 $N4dc74dd0
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 $N4dc66250
Dot {
name Dot11
xpos 764
ypos -78
}
set N4dcafda0 [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 $N4dcafda0
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 $N4dc6b0d0
Dot {
name Dot12
xpos 984
ypos -78
}
set N4dceb040 [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 $N4dceb040
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 $N4defd5c0
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 $N4dc61490
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 -1140
ypos -489
}
end_group
Dot {
name Dot385
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xff
selected true
xpos 20344
ypos 1644
}
set N206378d0 [stack 0]
Gamma {
channels rgba
value 2.2
name Gamma37
label "Inverse EOTF: sRGB Display"
note_font Helvetica
selected true
xpos 20310
ypos 1748
}
Dot {
name Dot386
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xff
selected true
xpos 20344
ypos 1914
}
push $cut_paste_input
Axis2 {
display off
selectable false
translate {0.5 0.5 0.5}
rotate {-30 50 0}
name CUBE_CENTER
note_font Helvetica
selected true
xpos 19880
ypos 1710
}
Camera2 {
display off
selectable false
translate {0 -0.08 3.8}
name ACHR_ROT
note_font Helvetica
selected true
xpos 19880
ypos 1800
}
Group {
inputs 0
name CUBE2
note_font Helvetica
selected true
xpos 19980
ypos 1611
}
Group {
inputs 0
name HueSweep_4
note_font Helvetica
xpos 1161
ypos 627
hide_input true
postage_stamp true
addUserKnob {20 User}
addUserKnob {6 white +STARTLINE}
addUserKnob {6 black +STARTLINE}
black true
}
Constant {
inputs 0
format "256 256 0 0 256 256 1 square_256"
name Constant15
note_font Helvetica
xpos 1160
ypos 651
postage_stamp false
}
set N81454840 [stack 0]
Expression {
expr1 1-x/width
expr2 x/width
name Expression28
label "green/red\n"
note_font Helvetica
xpos 1280
ypos 712
postage_stamp true
}
push $N81454840
Expression {
expr0 1-x/width
expr1 x/width
name Expression19
label "green/red\n"
note_font Helvetica
xpos 1160
ypos 712
postage_stamp true
}
push $N81454840
Expression {
expr0 x/width
expr2 1-x/width
name Expression21
label "green/red\n"
note_font Helvetica
xpos 1040
ypos 712
postage_stamp true
}
ContactSheet {
inputs 3
width {{width*columns}}
height {{height/pixel_aspect*rows}}
rows 1
columns 3
roworder TopBottom
name ContactSheet3
note_font Helvetica
xpos 1160
ypos 831
}
Shuffle {
alpha white
name Shuffle1
note_font Helvetica
xpos 1160
ypos 861
}
Dot {
name Dot1
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xff
xpos 1194
ypos 894
}
set N803213b0 [stack 0]
Expression {
expr3 (y/height-0.5)*2
name Expression2
note_font Helvetica
xpos 1040
ypos 951
}
push $N803213b0
Expression {
expr3 1-y/(height/2)
name Expression1
note_font Helvetica
xpos 1040
ypos 891
}
push $N803213b0
Fill {
inputs 1+1
color {0 0 0 1}
name Fill2
note_font Helvetica
xpos 1160
ypos 937
disable {{!parent.black}}
}
Fill {
inputs 1+1
color {1 1 1 1}
name Fill1
note_font Helvetica
xpos 1160
ypos 981
disable {{!parent.white}}
}
Output {
name Output1
xpos 1160
ypos 1070
}
end_group
Group {
name Exposure4
tile_color 0x79a9ffff
xpos 1161
ypos 757
addUserKnob {20 Exposure}
addUserKnob {18 exposure R -8 8}
exposure 4
addUserKnob {6 exposure_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
}
Input {
inputs 0
name Inputmask
xpos 120
ypos -9
number 1
}
Input {
inputs 0
name Input
xpos -40
ypos -81
}
Multiply {
inputs 1+1
channels rgb
value {{"pow(2, parent.exposure)"} {"pow(2, parent.exposure)"} {"pow(2, parent.exposure)"} {"pow(2, parent.exposure)"}}
name _EXPOSURE_
xpos -40
ypos -9
}
Output {
name Output1
xpos -40
ypos 63
}
end_group
Clamp {
channels rgba
name Clamp18
note_font Helvetica
xpos 1161
ypos 812
}
Output {
name Output1
xpos 1161
ypos 889
}
end_group
PositionToPoints2 {
display textured
selectable false
render_mode textured
cast_shadow false
receive_shadow false
P_channel rgb
detail 1
pointSize 1
name PositionToPoints18
selected true
xpos 19980
ypos 1640
}
push $N206378d0
PositionToPoints2 {
display textured
selectable false
render_mode textured
cast_shadow false
receive_shadow false
P_channel rgb
detail 1
pointSize 1
name PositionToPoints19
selected true
xpos 20090
ypos 1640
}
Scene {
inputs 2
name Scene7
note_font Helvetica
selected true
xpos 20100
ypos 1680
}
Dot {
name Dot384
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xff
selected true
xpos 20124
ypos 1824
}
Constant {
inputs 0
format "1024 1024 0 0 1024 1024 1 square_1K"
name Constant17
note_font Helvetica
selected true
xpos 19980
ypos 1761
postage_stamp false
}
ScanlineRender {
inputs 3
conservative_shader_sampling false
samples 12
shutteroffset centred
motion_vectors_type distance
name ScanlineRender12
note_font Helvetica
selected true
xpos 19980
ypos 1821
}
Dot {
name Dot383
note_font "Helvetica Bold"
note_font_size 24
note_font_color 0xff
selected true
xpos 20014
ypos 1914
}
Write {
channels rgba
file /cave/dev/color/aces-vwg_odt/render/plot_aces_rec709_output_transform_rgb_six_rotate.mov
file_type mov
mov64_codec ap4h
mov64_bitrate 20000
mov64_bitrate_tolerance 40000000
mov64_quality_min 2
mov64_quality_max 31
mov64_gop_size 12
mov64_b_frames 0
checkHashOnRead false
name write_six
note_font Helvetica
selected true
xpos 19980
ypos 1965
}