#! /Applications/Nuke11.2v3/Nuke11.2v3.app/Contents/MacOS/libnuke-11.2.3.dylib -nx
version 11.2 v3
define_window_layout_xml {
}
Root {
inputs 0
name /Users/matthias/Workspace/ampas/aces_gamut_vwg/nuke/model_default_values_visualisation_v03.nk
frame 2
last_frame 56
lock_range true
format "2048 1556 0 0 2048 1556 1 2K_Super_35_full_ap"
proxy_type scale
proxy_format "640 480 0 0 640 480 1 PC_Video"
colorManagement Nuke
workingSpaceLUT linear
monitorLut sRGB
int8Lut sRGB
int16Lut sRGB
logLut Cineon
floatLut linear
addUserKnob {20 GMS l "Global MotionBlur Settings"}
addUserKnob {20 TGC l "Transform Global Control" n 1}
addUserKnob {7 motionblur t "reference the motionblur setting on the Transform node" R 0 4}
motionblur 1
addUserKnob {7 shutter R 0 4}
shutter 0.5
addUserKnob {22 batchoninteractiveon l " Int ON - Batch ON" T "n = nuke.thisNode()\nif n\['motionblur'].hasExpression():\n\tn\['motionblur'].clearAnimated()\n\tn\['motionblur'].setValue(n\['msamplert'].value())\nelse:\n\tn\['msamplert'].setValue(n\['motionblur'].value())\n\tn\['motionblur'].setValue(n\['msamplert'].value())\n\nn\['t_ind'].setValue('Interactive ON - Batch ON')" +STARTLINE}
addUserKnob {22 batchoninteractiveoff l " Int OFF - Batch ON" -STARTLINE T "n = nuke.thisNode()\nif n\['motionblur'].hasExpression() is False:\n\tvaluemb = n\['motionblur'].value()\n\tn\['msamplert'].setValue(valuemb)\nn\['motionblur'].clearAnimated()\nn\['motionblur'].setExpression(\"!\$gui ? \[knob root.msamplert] : 0\")\nn\['t_ind'].setValue(\"Interactive OFF - Batch ON\")"}
addUserKnob {22 batchoffinteractiveoff l " Int OFF - Batch OFF" -STARTLINE T "n = nuke.thisNode()\nif n\['motionblur'].hasExpression():\n\tn\['motionblur'].clearAnimated()\nn\['motionblur'].setExpression(\"0\")\n#n\['motionblur'].setValue(0)\nn\['t_ind'].setValue(\"Interactive OFF - Batch OFF\")"}
addUserKnob {7 msamplert l INVISIBLE -STARTLINE +INVISIBLE}
msamplert 1
addUserKnob {1 t_ind l status:}
t_ind "Interactive ON - Batch ON"
addUserKnob {20 endGroup n -1}
addUserKnob {20 RRGC l "Roto Render Global Control" n 1}
addUserKnob {6 motionBlur t "toggle motionBlur button on RotoRenders on or off\n" +STARTLINE}
motionBlur true
addUserKnob {6 motionBlurAllCrvs t "toggle motionBlurAllCrvs on/off" +STARTLINE}
motionBlurAllCrvs true
addUserKnob {7 shutterAngle R 0 360}
shutterAngle 180
addUserKnob {7 shutterStart R -180 180}
shutterStart -90
addUserKnob {7 motionBlurSteps R 0 2}
motionBlurSteps 15
addUserKnob {22 rrbatchoninteractiveon l " Int ON - Batch ON" T "n = nuke.thisNode()\nn\['motionBlur'].clearAnimated()\nn\['motionBlurAllCrvs'].clearAnimated()\nn\['motionBlur'].setValue(1)\nn\['motionBlurAllCrvs'].setValue(1)\nn\['rr_ind'].setValue(\"Interactive ON - Batch ON\")" +STARTLINE}
addUserKnob {22 rrbatchointeractiveoff l " Int OFF - Batch ON" -STARTLINE T "n = nuke.thisNode()\nn\['motionBlur'].setExpression(\"!\$gui ? 1: 0\")\nn\['motionBlurAllCrvs'].setExpression(\"!\$gui ? 1: 0\")\nn\['rr_ind'].setValue(\"Interactive OFF - Batch ON\")"}
addUserKnob {22 rrbatchoffinteractiveoff l " Int OFF - Batch OFF" -STARTLINE T "n = nuke.thisNode()\nn\['motionBlur'].clearAnimated()\nn\['motionBlur'].setValue(0)\nn\['motionBlurAllCrvs'].clearAnimated()\nn\['motionBlurAllCrvs'].setValue(0)\nn\['rr_ind'].setValue(\"Interactive OFF - Batch OFF\")"}
addUserKnob {1 rr_ind l status:}
rr_ind "Interactive ON - Batch ON"
addUserKnob {20 endGroup_2 l endGroup n -1}
addUserKnob {20 C3dGC l "Card3D Global Control" n 1}
addUserKnob {7 motionblurc3d l motionblur R 0 4}
motionblurc3d 1
addUserKnob {7 shutterc3d l shutter R 0 2}
shutterc3d 0.5
addUserKnob {22 c3dbatchoninteractiveon l " Int ON - Batch ON" T "n = nuke.thisNode()\nif n\['motionblurc3d'].hasExpression():\n\tn\['motionblurc3d'].clearAnimated()\n\tn\['motionblurc3d'].setValue(n\['msamplerc3d'].value())\nelse:\n\tn\['msamplerc3d'].setValue(n\['motionblurc3d'].value())\n\tn\['motionblurc3d'].setValue(n\['msamplerc3d'].value())\n\tn\['c3d_ind'].setValue(\"Interactive ON - Batch ON\")" +STARTLINE}
addUserKnob {22 crdbatchoninteractiveoff l " Int OFF - Batch ON" -STARTLINE T "n = nuke.thisNode()\nif n\['motionblurc3d'].hasExpression() is False:\n\tvaluemb = n\['motionblurc3d'].value()\n\tprint \"foo\", n\['msamplerc3d'].value()\n\tif n\['motionblurc3d'].value() != 0:\n\t\tn\['msamplerc3d'].setValue(valuemb)\n\tn\['motionblurc3d'].setExpression(\"!\$gui ? \[knob root.msamplerc3d] : 0\")\nn\['c3d_ind'].setValue(\"Interactive OFF - Batch ON\")\n\n"}
addUserKnob {22 c3dbatchoffinteractiveoff l " Int OFF - Batch OFF" -STARTLINE T "n = nuke.thisNode()\nif n\['motionblurc3d'].hasExpression():\n\tn\['motionblurc3d'].clearAnimated()\nelse:\n\tn\['msamplerc3d'].setValue(n\['motionblurc3d'].value())\nn\['motionblurc3d'].setExpression(\"0\")\nn\['c3d_ind'].setValue(\"Interactive OFF - Batch OFF\")"}
addUserKnob {7 msamplerc3d l INVISIBLE +INVISIBLE}
msamplerc3d 1
addUserKnob {1 c3d_ind l status:}
c3d_ind "Interactive ON - Batch ON"
addUserKnob {20 endGroup_3 l endGroup n -1}
addUserKnob {20 sr l "Scanline Render" n 1}
addUserKnob {7 prescan_samples l samples R 0 50}
prescan_samples 5
addUserKnob {7 batch_samples l "batch samples" R 0 50}
batch_samples 5
addUserKnob {7 scan_shutter l shutter}
scan_shutter 0.5
addUserKnob {22 srbatchoninteractiveon l " Int ON - Batch ON" T "n = nuke.thisNode()\nif n\['scan_samples'].hasExpression():\n n\['scan_samples'].clearAnimated()\nif n\['prescan_samples'].hasExpression():\n\tn\['prescan_samples'].clearAnimated()\n\tn\['prescan_samples'].setValue(n\['scan_sampler'].value())\nelse:\n\tn\['scan_sampler'].setValue(n\['prescan_samples'].value())\n\n\nif n\['batch_samples'].hasExpression():\n\tn\['batch_samples'].clearAnimated()\n\tn\['batch_samples'].setValue(n\['batch_sampler'].value())\nelse:\n\tn\['batch_sampler'].setValue(n\['batch_samples'].value())\n\n\nn\['batch_samples'].setValue(n\['batch_sampler'].value())\nn\['prescan_samples'].setValue(n\['scan_sampler'].value())\nn\['scan_samples'].setExpression(\"\$gui ? %s : %s\" % (\"root.prescan_samples\",\"root.batch_samples\" ))\nn\['sr_ind'].setValue(\"Interactive ON - Batch ON\")\n" +STARTLINE}
addUserKnob {22 srbatchoninteractiveoff l " Int OFF - Batch ON" -STARTLINE T "n = nuke.thisNode()\n\nif n\['prescan_samples'].hasExpression():\n\tn\['prescan_samples'].clearAnimated()\n\tn\['prescan_samples'].setExpression(\"0\")\nelse:\n\tn\['scan_sampler'].setValue(n\['prescan_samples'].value())\n\tn\['prescan_samples'].setExpression(\"0\")\n\nif n\['batch_samples'].hasExpression():\n\tn\['batch_samples'].clearAnimated()\nelse:\n\tn\['batch_sampler'].setValue(n\['batch_samples'].value())\n\nn\['batch_samples'].setValue(n\['batch_sampler'].value())\nn\['scan_samples'].setExpression(\"!\$gui ? root.batch_samples : root.prescan_samples\")\nn\['sr_ind'].setValue(\"Interactive OFF - Batch ON\")"}
addUserKnob {22 srbatchoffinteractiveoff l " Int OFF - Batch OFF" -STARTLINE T "n = nuke.thisNode()\nif n\['prescan_samples'].hasExpression() is False:\n\tn\['scan_sampler'].setValue(n\['prescan_samples'].value())\n\nif n\['batch_samples'].hasExpression() is False:\n\tn\['batch_sampler'].setValue(n\['batch_samples'].value())\n\nn\['scan_samples'].setExpression(\"!\$gui ? root.batch_samples : root.prescan_samples\")\nn\['prescan_samples'].setExpression(\"0\")\nn\['batch_samples'].setExpression(\"0\")\n\nn\['sr_ind'].setValue(\"Interactive OFF - Batch OFF\")"}
addUserKnob {7 scan_sampler l INVISIBLE -STARTLINE +INVISIBLE}
scan_sampler 10
addUserKnob {7 scan_samples l INVISIBLE -STARTLINE +INVISIBLE}
scan_samples {{"\$gui ? root.prescan_samples : root.batch_samples"}}
addUserKnob {7 batch_sampler l INVISIBLE -STARTLINE +INVISIBLE}
batch_sampler 10
addUserKnob {1 sr_ind l status:}
sr_ind "Interactive ON - Batch ON"
addUserKnob {20 endGroup_4 l endGroup n -1}
addUserKnob {20 rn l "Roto Node Global Control" n 1}
addUserKnob {6 rotoMotionBlur_on l motionblur t "toggle motionBlur button on Roto nodes on or off\n" +STARTLINE}
rotoMotionBlur_on true
addUserKnob {7 rotoMotionBlur_samples l "motionblur samples" t "Sets the number of motion blur samples" R 0 4}
rotoMotionBlur_samples 1
addUserKnob {7 rotoMotionBlur_shutter l "motionblur shutter" t "This sets how long the shutter should be open. The value is in frames, so 0.5 is half a frame" R 0 2}
rotoMotionBlur_shutter 0.5
addUserKnob {4 rotoShutterOffsetType l "shutter offset type" t "The value of this controls how the shutter behaves with respect to the current frame value" M {centred start end custom}}
addUserKnob {7 rotoShutterOffset l "shutter offset" t "If the \"shutter offset type\" is set to 'custom', this parameter is used to set the time the shutter opens by adding it to the current frame. \nValues are in frames, so -0.5 would open the shutter half a frame before the current frame" R -1 1}
addUserKnob {22 rnbatchoninteractiveon l " Int ON - Batch ON" T "n = nuke.thisNode()\nn\['rotoMotionBlur_on'].clearAnimated()\nn\['rotoMotionBlur_on'].setValue(1)\nn\['rn_ind'].setValue(\"Interactive ON - Batch ON\")" +STARTLINE}
addUserKnob {22 rnbatchointeractiveoff l " Int OFF - Batch ON" -STARTLINE T "n = nuke.thisNode()\nn\['rotoMotionBlur_on'].setExpression(\"!\$gui ? 1: 0\")\nn\['rn_ind'].setValue(\"Interactive OFF - Batch ON\")"}
addUserKnob {22 rnbatchoffinteractiveoff l " Int OFF - Batch OFF" -STARTLINE T "n = nuke.thisNode()\nn\['rotoMotionBlur_on'].clearAnimated()\nn\['rotoMotionBlur_on'].setValue(0)\nn\['rn_ind'].setValue(\"Interactive OFF - Batch OFF\")"}
addUserKnob {1 rn_ind l status:}
rn_ind "Interactive ON - Batch ON"
addUserKnob {20 endGroup_5 l endGroup n -1}
}
BackdropNode {
inputs 0
name BackdropNode1
tile_color 0x424242ff
label "Distance Limit"
note_font_size 64
xpos 11015
ypos 118
bdwidth 1241
bdheight 1008
z_order -1
}
BackdropNode {
inputs 0
name BackdropNode2
tile_color 0x424242ff
label Threshold
note_font_size 64
xpos 9674
ypos 118
bdwidth 1240
bdheight 1018
z_order -1
}
BackdropNode {
inputs 0
name BackdropNode3
label "convert to distance\nfrom gamut boundary\n(i.e. from achromatic - 1)"
xpos 11170
ypos 638
bdwidth 358
bdheight 353
}
BackdropNode {
inputs 0
name BackdropNode4
label "convert to distance\nfrom achromatic axis"
xpos 9751
ypos 393
bdwidth 354
bdheight 310
}
BackdropNode {
inputs 0
name BackdropNode5
label "ACES ColorChecker values\nfrom ACES TB-2014-004 (Annex B)\nconverted to ACEScg"
xpos 9753
ypos 231
bdwidth 351
bdheight 152
}
BackdropNode {
inputs 0
name BackdropNode6
label "Plot vendor gamuts\nand inverse compression\nof ACEScg boundary"
xpos 11761
ypos 499
bdwidth 426
bdheight 587
}
BackdropNode {
inputs 0
name BackdropNode7
label "Plot threshold boundary\nand ColorChecker chip chromaticities"
xpos 10135
ypos 226
bdwidth 711
bdheight 866
}
Group {
inputs 0
name ACESColorChecker1
note_font "Bitstream Vera Sans"
xpos 9915
ypos 283
}
Constant {
inputs 0
color {0.03745 0.03766 0.03895 1}
format "512 512 0 0 512 512 1 square_512"
name Constant25
label "Black\n"
note_font "Bitstream Vera Sans"
xpos 509
ypos 165
}
Constant {
inputs 0
color {0.09467 0.0952 0.09637 1}
format "512 512 0 0 512 512 1 square_512"
name Constant24
label "Neutral 3.5\n"
note_font "Bitstream Vera Sans"
xpos 413
ypos 167
}
Constant {
inputs 0
color {0.20253 0.20243 0.20287 1}
format "512 512 0 0 512 512 1 square_512"
name Constant26
label "Neutral 5\n"
note_font "Bitstream Vera Sans"
xpos 316
ypos 167
}
Constant {
inputs 0
color {0.35346 0.35337 0.35391 1}
format "512 512 0 0 512 512 1 square_512"
name Constant23
label "Neutral 6.5\n"
note_font "Bitstream Vera Sans"
xpos 220
ypos 166
}
Constant {
inputs 0
color {0.57356 0.57256 0.57169 1}
format "512 512 0 0 512 512 1 square_512"
name Constant22
label "Neutral 8\n"
note_font "Bitstream Vera Sans"
xpos 124
ypos 168
}
Constant {
inputs 0
color {0.86653 0.86792 0.85818 1}
format "512 512 0 0 512 512 1 square_512"
name Constant21
label "White\n"
note_font "Bitstream Vera Sans"
xpos 29
ypos 169
}
Constant {
inputs 0
color {0.149 0.23377 0.35939 1}
format "512 512 0 0 512 512 1 square_512"
name Constant19
label "Cyan\n"
note_font "Bitstream Vera Sans"
xpos 507
ypos 83
}
Constant {
inputs 0
color {0.30904 0.14818 0.27426 1}
format "512 512 0 0 512 512 1 square_512"
name Constant18
label "Magenta\n"
note_font "Bitstream Vera Sans"
xpos 411
ypos 85
}
Constant {
inputs 0
color {0.58921 0.53944 0.09157 1}
format "512 512 0 0 512 512 1 square_512"
name Constant20
label "Yellow\n"
note_font "Bitstream Vera Sans"
xpos 314
ypos 85
}
Constant {
inputs 0
color {0.21743 0.0707 0.0513 1}
format "512 512 0 0 512 512 1 square_512"
name Constant17
label "Red\n"
note_font "Bitstream Vera Sans"
xpos 218
ypos 84
}
Constant {
inputs 0
color {0.15366 0.25692 0.09071 1}
format "512 512 0 0 512 512 1 square_512"
name Constant16
label "Green\n"
note_font "Bitstream Vera Sans"
xpos 122
ypos 86
}
Constant {
inputs 0
color {0.08731 0.07443 0.27274 1}
format "512 512 0 0 512 512 1 square_512"
name Constant15
label "Blue\n"
note_font "Bitstream Vera Sans"
xpos 25
ypos 86
}
Constant {
inputs 0
color {0.48657 0.36686 0.08061 1}
format "512 512 0 0 512 512 1 square_512"
name Constant13
label "Orange Yellow\n"
note_font "Bitstream Vera Sans"
xpos 508
ypos -1
}
Constant {
inputs 0
color {0.34877 0.43655 0.10613 1}
format "512 512 0 0 512 512 1 square_512"
name Constant12
label "Yellow Green\n"
note_font "Bitstream Vera Sans"
xpos 412
ypos 1
}
Constant {
inputs 0
color {0.0931 0.06347 0.13525 1}
format "512 512 0 0 512 512 1 square_512"
name Constant14
label "Purple\n"
note_font "Bitstream Vera Sans"
xpos 315
ypos 1
}
Constant {
inputs 0
color {0.30203 0.13752 0.12758 1}
format "512 512 0 0 512 512 1 square_512"
name Constant11
label "Moderate Red\n"
note_font "Bitstream Vera Sans"
xpos 219
}
Constant {
inputs 0
color {0.13822 0.13037 0.33703 1}
format "512 512 0 0 512 512 1 square_512"
name Constant10
label "Purplish Blue\n"
note_font "Bitstream Vera Sans"
xpos 123
ypos 2
}
Constant {
inputs 0
color {0.38607 0.22744 0.05777 1}
format "512 512 0 0 512 512 1 square_512"
name Constant9
label "Orange\n"
note_font "Bitstream Vera Sans"
selected true
xpos 26
ypos 2
}
Constant {
inputs 0
color {0.32283 0.46208 0.40606 1}
format "512 512 0 0 512 512 1 square_512"
name Constant8
label "Bluish Green\n"
note_font "Bitstream Vera Sans"
xpos 508
ypos -89
}
Constant {
inputs 0
color {0.26684 0.24604 0.40932 1}
format "512 512 0 0 512 512 1 square_512"
name Constant7
label "Blue Flower\n"
note_font "Bitstream Vera Sans"
xpos 412
ypos -87
}
Constant {
inputs 0
color {0.10901 0.13511 0.06493 1}
format "512 512 0 0 512 512 1 square_512"
name Constant6
label "Foliage\n"
note_font "Bitstream Vera Sans"
xpos 315
ypos -87
}
Constant {
inputs 0
color {0.18476 0.20398 0.31311 1}
format "512 512 0 0 512 512 1 square_512"
name Constant4
label "Blue Sky\n"
note_font "Bitstream Vera Sans"
xpos 219
ypos -88
}
Constant {
inputs 0
color {0.40003 0.31916 0.23737 1}
format "512 512 0 0 512 512 1 square_512"
name Constant3
label "Light Skin\n"
note_font "Bitstream Vera Sans"
xpos 123
ypos -86
}
Constant {
inputs 0
color {0.11877 0.08709 0.05895 1}
format "512 512 0 0 512 512 1 square_512"
name Constant2
label "Dark Skin\n"
note_font "Bitstream Vera Sans"
xpos 26
ypos -86
}
ContactSheet {
inputs 24
width 1920
height 1280
rows 4
columns 6
roworder TopBottom
name ContactSheet1
note_font "Bitstream Vera Sans"
xpos 253
ypos 343
}
Output {
name Output1
xpos 253
ypos 443
}
end_group
Reformat {
type scale
scale 0.1
filter Impulse
name Reformat2
xpos 9915
ypos 307
}
ColorMatrix {
matrix {
{1.451439316 -0.2365107469 -0.2149285693}
{-0.0765537734 1.1762297 -0.0996759264}
{0.0083161484 -0.0060324498 0.9977163014}
}
name ColorMatrix1
label "ACES2065-1 -> ACEScg"
xpos 9915
ypos 331
}
Dot {
name Dot45
xpos 9949
ypos 441
}
set Nf0f595c0 [stack 0]
Dot {
name Dot46
xpos 9837
ypos 441
}
Expression {
channel0 {rgba.red rgba.green rgba.blue none}
expr0 max(r,g,b)
name achromatic4
xpos 9803
ypos 476
}
set Nf0f5dd60 [stack 0]
push $Nf0f595c0
Merge2 {
inputs 2
operation minus
bbox B
Achannels rgb
Bchannels rgb
output rgb
name Merge30
xpos 9915
ypos 476
}
push $Nf0f5dd60
Expression {
expr0 abs(r)
expr1 abs(g)
expr2 abs(b)
name abs3
xpos 9803
ypos 525
}
Merge2 {
inputs 2
operation divide
bbox B
Achannels rgb
Bchannels rgb
output rgb
name Merge31
xpos 9915
ypos 525
}
StickyNote {
inputs 0
name StickyNote1
label "Canon CinemaGamut primaries were\nderived from the published daylight ACES IDT\nso primary chromaticities will need to be\n\"taken with a grain of salt\" here"
note_font_size 12
xpos 11819
ypos 429
}
Constant {
inputs 0
channels rgb
color {0.814599 0.802943 0.879638 0.9999999404}
format "2048 2048 0 0 2048 2048 1 square_2K"
name Constant6
label "Sampled MAX(R,G,B)\nis used as threshold"
xpos 9918
ypos 582
}
Group {
inputs 0
name Group2
label "Gamut Boundary"
xpos 11380
ypos 332
}
Constant {
inputs 0
channels rgb
format "256 256 0 0 256 256 1 square_256"
name Constant3
xpos 430
ypos 180
}
Ramp {
output {rgba.red -rgba.green -rgba.blue -rgba.alpha}
p0 {0 {input.height/2}}
p1 {{input.width-1} {input.height/2}}
name Ramp1
xpos 430
ypos 252
}
Ramp {
output {-rgba.red rgba.green -rgba.blue -rgba.alpha}
p0 {{input.width/2} 0}
p1 {{input.width/2} {input.height-1}}
name Ramp2
xpos 430
ypos 276
}
Multiply {
value {{1/input.height} {(input.height-1)/input.height} 1 1}
name Multiply5
xpos 430
ypos 300
}
Expression {
expr0 r+g
expr1 1
expr2 1
name Expression1
xpos 430
ypos 332
}
Colorspace {
colorspace_in HSV
name Colorspace1
selected true
xpos 430
ypos 356
}
Output {
name Output1
xpos 430
ypos 380
}
end_group
set Nec359400 [stack 0]
Group {
name FreeformGamut5
label "Canon\nCinemaGamut (daylight)"
xpos 11713
ypos 441
addUserKnob {20 Primaries}
addUserKnob {26 inputPrimaries -STARTLINE T ""}
addUserKnob {41 white T FromMatrix.white}
addUserKnob {41 red T FromMatrix.red}
addUserKnob {41 green T FromMatrix.green}
addUserKnob {41 blue T FromMatrix.blue}
addUserKnob {26 ""}
addUserKnob {41 outputColorspace T ColorMatrix3.gamut}
addUserKnob {6 inverse -STARTLINE}
addUserKnob {26 ""}
addUserKnob {6 showPlot +STARTLINE}
addUserKnob {20 plotSettings n 1}
plotSettings 0
addUserKnob {7 plotScale R 0 2}
plotScale 0.5
addUserKnob {12 plotOffset}
plotOffset {409.6 409.6}
addUserKnob {20 endGroup n -1}
addUserKnob {20 Matrices}
addUserKnob {41 rgbToXyzMatrix T ColorMatrix1.matrix}
addUserKnob {26 ""}
addUserKnob {41 cat T ColorMatrix4.cat}
addUserKnob {26 ""}
addUserKnob {41 xyzToRgbMatrix T ColorMatrix2.matrix}
}
Constant {
inputs 0
format "1 1 0 0 1 1 1 1_pixel"
name Constant1
xpos -1301
ypos 69
}
ColorMatrix {
matrix {
{{red.x/red.y} {green.x/green.y} {blue.x/blue.y}}
{1 1 1}
{{(1-red.x-red.y)/red.y} {(1-green.x-green.y)/green.y} {(1-blue.x-blue.y)/blue.y}}
}
name FromMatrix
label FromParimaries
xpos -1301
ypos 167
addUserKnob {20 User}
addUserKnob {12 white}
white {0.3127 0.329}
addUserKnob {12 red}
red {0.74 0.27}
addUserKnob {12 green}
green {0.17 1.14}
addUserKnob {12 blue}
blue {0.08 -0.1}
addUserKnob {7 determinant}
determinant {{matrix.0*(matrix.4*matrix.8-matrix.7*matrix.5)+matrix.1*(matrix.5*matrix.6-matrix.8*matrix.3)+matrix.2*(matrix.3*matrix.7-matrix.6*matrix.4)}}
}
Reformat {
format "2048 2048 0 0 2048 2048 1 square_2k"
resize distort
filter Impulse
name Reformat1
xpos -1301
ypos 291
}
Shuffle {
red black
green black
blue black
alpha black
name Shuffle2
label "\[value in]-->\[value out]"
xpos -1301
ypos 331
}
Transform {
translate {{parent.plotOffset.x} {parent.plotOffset.y}}
scale {{parent.plotScale}}
black_outside false
name Transform1
xpos -1301
ypos 363
}
ColorWheel {
inputs 0
format "512 512 0 0 512 512 1 square_512"
centerSaturation 1
name ColorWheel4
xpos -554
ypos -58
}
ColorMatrix {
matrix {
{{FromMatrix.matrix.0*FromMatrixInverse.S.r} {FromMatrix.matrix.1*FromMatrixInverse.S.g} {FromMatrix.matrix.2*FromMatrixInverse.S.b}}
{{FromMatrix.matrix.3*FromMatrixInverse.S.r} {FromMatrix.matrix.4*FromMatrixInverse.S.g} {FromMatrix.matrix.5*FromMatrixInverse.S.b}}
{{FromMatrix.matrix.6*FromMatrixInverse.S.r} {FromMatrix.matrix.7*FromMatrixInverse.S.g} {FromMatrix.matrix.8*FromMatrixInverse.S.b}}
}
name ColorMatrix1
label Input_to_XYZ
xpos -554
ypos 53
addUserKnob {20 User}
addUserKnob {7 determinant}
determinant {{matrix.0*(matrix.4*matrix.8-matrix.7*matrix.5)+matrix.1*(matrix.5*matrix.6-matrix.8*matrix.3)+matrix.2*(matrix.3*matrix.7-matrix.6*matrix.4)}}
}
set Cf0fd49e0 [stack 0]
set Nf0fd49e0 [stack 0]
Colorspace {
colorspace_in CIE-XYZ
primary_in ACES
colorspace_out CIE-Yxy
name Colorspace4
xpos -434
ypos 109
}
push $Nf0fd49e0
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos -554
ypos 93
}
Multiply {
value {1 0 0 1}
name Multiply4
xpos -554
ypos 117
}
BlinkScript {
inputs 2
recompileCount 4
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise 4f09b488f640fe57a9b92d835cc81424078e447e427d9f43fb8d958e7333c795 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 4 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"bottom_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 4 \"padding\" 1 1 \"left_margin\" 1 1 \"bottom_margin\" 1 1 \"process_input\" 1 1 3 \"outsize\" Float 1 1 AAAAAA== \"offsetX\" Float 1 1 AAAAAA== \"offsetY\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n float bottom_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offsetX;\n float offsetY;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offsetX = left_margin;\n offsetY = bottom_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offsetX, xy.y * outsize + offsetY);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding {{1/parent.plotScale}}
plot_cie_xy_left_margin {{parent.plotOffset.x}}
plot_cie_xy_bottom_margin {{parent.plotOffset.y}}
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input
xpos -554
ypos 159
cached true
}
Dilate {
size 1
name Dilate1
xpos -554
ypos 232
}
set Nf0dd3020 [stack 0]
push $Nf0dd3020
ShuffleCopy {
inputs 2
alpha alpha2
name ShuffleCopy1
xpos -554
ypos 314
}
Group {
inputs 0
name PlanckianLocus
xpos -1030
ypos 256
addUserKnob {20 User}
addUserKnob {6 colorize +STARTLINE}
addUserKnob {41 value T Multiply1.value}
addUserKnob {26 temperature}
addUserKnob {7 start -STARTLINE R 1000 100000}
start 1000
addUserKnob {7 end R 1000 100000}
end 100000
}
Constant {
inputs 0
channels rgb
format "1620 2 0 0 1620 2 1 visible_spectrum_quarter nm"
name bg1
xpos 507
ypos -50
addUserKnob {20 User}
addUserKnob {7 wl}
wl {{clamp(frame+375,375,780)}}
}
set Nf0dface0 [stack 0]
Rectangle {
area {{"(log10(parent.start)-3)/2 * width"} 0 {"(log10(parent.end)-3)/2 * width"} {height}}
name Rectangle7
xpos 289
ypos 130
}
push $Nf0dface0
Ramp {
p0 {0 1}
p1 {1619 1}
name Ramp4
xpos 507
ypos 55
}
Multiply {
value {405 405 405 2}
name Multiply4
xpos 507
ypos 81
}
Add {
value {375 375 375 3}
name Add3
xpos 507
ypos 119
}
ColorLookup {
lut {master {}
red {curve x380 0.0014 x385 0.0022 0.0042 0.0076 0.0143 0.0232 0.0435 0.0776 0.1344 0.2148 0.2839 0.3285 0.3483 0.3481 0.3362 0.3187 0.2908 0.2511 0.1954 0.1421 0.0956 0.058 0.032 0.0147 0.0049 0.0024 0.0093 0.0291 0.0633 0.1096 0.1655 0.2257 0.2904 0.3597 0.4334 0.5121 0.5945 0.6784 0.7621 0.8425 0.9163 0.9786 1.0263 1.0567 1.0622 1.0456 1.0026 0.9384 0.8544 0.7514 0.6424 0.5419 0.4479 0.3608 0.2835 0.2187 0.1649 0.1212 0.0874 0.0636 0.0468 0.0329 0.0227 0.0158 0.0114 0.0081 0.0058 0.0041 0.0029 0.002 0.0014 0.001 0.0007 0.0005 0.0003 0.0002 0.0002 0.0001 0.0001 0.0001 0}
green {curve x380 0 x385 0.0001 0.0001 0.0002 0.0004 0.0006 0.0012 0.0022 0.004 0.0073 0.0116 0.0168 0.023 0.0298 0.038 0.048 0.06 0.0739 0.091 0.1126 0.139 0.1693 0.208 0.2586 0.323 0.4073 0.503 0.6082 0.71 0.7932 0.862 0.9149 0.954 0.9803 0.995 1 0.995 0.9786 0.952 0.9154 0.87 0.8163 0.757 0.6949 0.631 0.5668 0.503 0.4412 0.381 0.321 0.265 0.217 0.175 0.1382 0.107 0.0816 0.061 0.0446 0.032 0.0232 0.017 0.0119 0.0082 0.0057 0.0041 0.0029 0.0021 0.0015 0.001 0.0007 0.0005 0.0004 0.0002 0.0002 0.0001 0.0001 0.0001 0 0 0 0}
blue {curve x375 0 x380 0.0065 0.0105 0.0201 0.0362 0.0679 0.1102 0.2074 0.3713 0.6456 1.0391 1.3856 1.623 1.7471 1.7826 1.7721 1.7441 1.6692 1.5281 1.2876 1.0419 0.831 0.6162 0.4652 0.3533 0.272 0.2123 0.1582 0.1117 0.0782 0.0573 0.0422 0.0298 0.0203 0.0134 0.0087 0.0057 0.0039 0.0027 0.0021 0.0018 0.0017 0.0014 0.0011 0.001 0.0008 0.0006 0.0003 0.0002 0.0002 0.0001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
alpha {}}
name ColorLookup2
xpos 507
ypos 157
}
Expression {
expr0 r
expr1 g
expr2 b
expr3 pow(10,a)
name Expression1
xpos 507
ypos 181
}
BlinkScript {
ProgramGroup 1
KernelDescription "1 \"CCT2XYZ\" iterate pixelWise 1e5106c0628b69d1e3286f708ff894031c5f2cc6dcce2f5b6f5a0f9b492ad4d3 2 \"input\" Read Random \"dst\" Write Point 0"
kernelSource "// this kernel assumes the following in it's input:\n// an image with a width of 1620 pixels - representing 405 nm range in quarter-nm steps\n// RGB channel : CIE XYZ colour matching functions from 375nm to 780nm\n// Alpha channel : colour temperature in kelvin\n\nkernel CCT2XYZ : public ImageComputationKernel\n\{\n\tImage input; //the input image\n\tImage dst; //the output image\n\n\t//The kernel function is run at every pixel to produce the output.\n\tvoid process(int2 pos)\n\t\{\n \tSampleType(input) in = input(pos.x, pos.y);\n \tSampleType(input) cmf;\n \tfloat kelvin = in.w;\n \tint cmfY = 1;\n\t\tfloat3 ret = float3(0.f);\n\n\t\tfloat C1 = 2.0 * 3.141592653589793 * 6.626176 * 2.99792458 * 2.99792458;\n\t\tfloat C2 = (6.626176 * 2.99792458) / 1.380662;\n\n\t\t\n\t\tfor(int cmfX = 0; cmfX < input.bounds.width(); cmfX += 1)\n\t\t\{\n\t\t\tfloat nm = float(cmfX) / 4.f + 375.f;\n\t\t\tfloat dWavelengthM = nm * 1.0e-3; // * 1.0e-6\n\t\t\tfloat dWavelengthM5 = pow(dWavelengthM, 5.f); // * 1.0e-30\n\t\t\tfloat expArg = C2 / (kelvin * dWavelengthM * 1.0e-3);\n\t\t\tfloat blackbody = C1 / (dWavelengthM5 * 1.0e-12 * ( exp(expArg) - 1.0)); // -12 = -30 - (-18)\n\n\t\t\tcmf = input(cmfX, cmfY);\n\n\t\t\tret.x += (blackbody * cmf.x);\n\t\t\tret.y += (blackbody * cmf.y);\n\t\t\tret.z += (blackbody * cmf.z);\n\n\t\t\}\n\n\n\n\n\n\n\t\tret.x /= ret.y;\n\t\tret.z /= ret.y;\n\t\tret.y = 1.f;\n\n\t\tSampleType(input) out = in;\n\n\t\tout.x = ret.x;\n\t\tout.y = ret.y;\n\t\tout.z = ret.z;\n\n\t\tdst() = out;\n\t\}\n\};\n\n"
rebuild ""
rebuild_finalise ""
name BlinkScript1
selected true
xpos 507
ypos 219
}
Merge2 {
inputs 2
operation multiply
name Merge22
xpos 507
ypos 267
}
set Nf3f00f30 [stack 0]
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
primary_out "CIE (1931)"
name Colorspace15
xpos 347
ypos 419
}
push $Nf3f00f30
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos 640
ypos 378
}
Multiply {
value {0 0 0 1}
name Multiply1
xpos 640
ypos 404
}
push $Nf3f00f30
ColorMatrix {
matrix {
{1.04981102 0 -9.748e-05}
{-0.49590302 1.37331305 0.09824004}
{0 0 0.99125202}
}
name ColorMatrix3
xpos 507
ypos 362
}
Expression {
temp_name0 max
temp_expr0 max(r,g,b)
expr0 "r / max"
expr1 "g / max"
expr2 "b / max"
name Expression2
xpos 507
ypos 386
}
Switch {
inputs 2
which {{parent.colorize}}
name Switch1
xpos 569
ypos 462
}
BlinkScript {
inputs 2
recompileCount 4
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise 4f09b488f640fe57a9b92d835cc81424078e447e427d9f43fb8d958e7333c795 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 4 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"bottom_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 4 \"padding\" 1 1 \"left_margin\" 1 1 \"bottom_margin\" 1 1 \"process_input\" 1 1 3 \"outsize\" Float 1 1 AAAAAA== \"offsetX\" Float 1 1 AAAAAA== \"offsetY\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n float bottom_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offsetX;\n float offsetY;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offsetX = left_margin;\n offsetY = bottom_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offsetX, xy.y * outsize + offsetY);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding {{1/parent.parent.plotScale}}
plot_cie_xy_left_margin {{parent.parent.plotOffset.x}}
plot_cie_xy_bottom_margin {{parent.parent.plotOffset.y}}
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input1
xpos 569
ypos 578
cached true
}
Dilate {
size 1
name Dilate1
xpos 569
ypos 616
}
Output {
name Output1
xpos 569
ypos 690
}
end_group
push 0
Group {
inputs 0
name SpectralLocus2
xpos -914
ypos 254
addUserKnob {20 User}
addUserKnob {6 colorize +STARTLINE}
addUserKnob {41 value T Multiply1.value}
addUserKnob {26 wavelength}
addUserKnob {7 start -STARTLINE R 375 780}
start 375
addUserKnob {7 end R 375 780}
end 780
addUserKnob {6 purples l "show \"line of purples\"" +STARTLINE}
addUserKnob {41 plotColorSpace T Switch3.which}
}
Constant {
inputs 0
channels rgb
format "16384 2 0 0 16384 2 1 14bit_lut"
name bg1
xpos 507
ypos -17
addUserKnob {20 User}
addUserKnob {7 wl}
wl {{clamp(frame+375,375,780)}}
}
set Nf3f49820 [stack 0]
Ramp {
p0 {0 1}
p1 {16383 1}
name Ramp4
xpos 507
ypos 55
}
set Nf3f4e140 [stack 0]
Dot {
name Dot8
note_font "Bitstream Vera Sans"
xpos 681
ypos 58
}
Multiply {
value {-0.001319684205 -0.565 -0.26 1}
name Multiply2
note_font "Bitstream Vera Sans"
xpos 647
ypos 122
}
Add {
value {0.001419684151 0.737 0.2637 1}
name Add7
note_font "Bitstream Vera Sans"
xpos 647
ypos 158
}
Shuffle {
alpha white
name Shuffle22
label "\[value in]-->\[value out]"
note_font "Bitstream Vera Sans"
xpos 647
ypos 207
}
Transform {
translate {13300 0}
scale {0.1883 1}
center {0 1}
filter Impulse
name Transform1
note_font "Bitstream Vera Sans"
xpos 647
ypos 243
}
Dot {
name Dot9
note_font "Bitstream Vera Sans"
xpos 681
ypos 376
}
push $Nf3f49820
Rectangle {
area {{width*((parent.start-375)/405)} 0 {width*((parent.end-375)/405)} 2}
name Rectangle7
xpos 289
ypos 130
}
push $Nf3f4e140
Multiply {
value 405
name Multiply4
xpos 507
ypos 81
}
Add {
value 375
name Add3
xpos 507
ypos 119
}
ColorLookup {
lut {master {}
red {curve x380 0.0014 x385 0.0022 0.0042 0.0076 0.0143 0.0232 0.0435 0.0776 0.1344 0.2148 0.2839 0.3285 0.3483 0.3481 0.3362 0.3187 0.2908 0.2511 0.1954 0.1421 0.0956 0.058 0.032 0.0147 0.0049 0.0024 0.0093 0.0291 0.0633 0.1096 0.1655 0.2257 0.2904 0.3597 0.4334 0.5121 0.5945 0.6784 0.7621 0.8425 0.9163 0.9786 1.0263 1.0567 1.0622 1.0456 1.0026 0.9384 0.8544 0.7514 0.6424 0.5419 0.4479 0.3608 0.2835 0.2187 0.1649 0.1212 0.0874 0.0636 0.0468 0.0329 0.0227 0.0158 0.0114 0.0081 0.0058 0.0041 0.0029 0.002 0.0014 0.001 0.0007 0.0005 0.0003 0.0002 0.0002 0.0001 0.0001 0.0001 0}
green {curve x380 0 x385 0.0001 0.0001 0.0002 0.0004 0.0006 0.0012 0.0022 0.004 0.0073 0.0116 0.0168 0.023 0.0298 0.038 0.048 0.06 0.0739 0.091 0.1126 0.139 0.1693 0.208 0.2586 0.323 0.4073 0.503 0.6082 0.71 0.7932 0.862 0.9149 0.954 0.9803 0.995 1 0.995 0.9786 0.952 0.9154 0.87 0.8163 0.757 0.6949 0.631 0.5668 0.503 0.4412 0.381 0.321 0.265 0.217 0.175 0.1382 0.107 0.0816 0.061 0.0446 0.032 0.0232 0.017 0.0119 0.0082 0.0057 0.0041 0.0029 0.0021 0.0015 0.001 0.0007 0.0005 0.0004 0.0002 0.0002 0.0001 0.0001 0.0001 0 0 0 0}
blue {curve x375 0 x380 0.0065 0.0105 0.0201 0.0362 0.0679 0.1102 0.2074 0.3713 0.6456 1.0391 1.3856 1.623 1.7471 1.7826 1.7721 1.7441 1.6692 1.5281 1.2876 1.0419 0.831 0.6162 0.4652 0.3533 0.272 0.2123 0.1582 0.1117 0.0782 0.0573 0.0422 0.0298 0.0203 0.0134 0.0087 0.0057 0.0039 0.0027 0.0021 0.0018 0.0017 0.0014 0.0011 0.001 0.0008 0.0006 0.0003 0.0002 0.0002 0.0001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
alpha {}}
name ColorLookup2
xpos 507
ypos 157
}
Merge2 {
inputs 2
operation multiply
name Merge22
xpos 507
ypos 226
}
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
name Colorspace1
note_font "Bitstream Vera Sans"
xpos 507
ypos 297
}
Crop {
box {500 0 13800 2}
name Crop13
xpos 507
ypos 321
}
Transform {
translate {-500 0}
center {8192 1}
name Transform3
note_font "Bitstream Vera Sans"
xpos 507
ypos 349
}
Merge2 {
inputs 2
name Merge1
note_font "Bitstream Vera Sans"
xpos 507
ypos 373
disable {{!parent.purples}}
}
Expression {
expr0 "r < 0 ? r * sole.r + lift.r : r < lift.r * 2 ? pow( (lift.r *2 - r) / (lift.r * 2), 2) * lift.r + r : r"
expr1 "g < 0 ? g * sole.g + lift.g : g < lift.g * 2 ? pow( (lift.g *2 - g) / (lift.g * 2), 2) * lift.g + g : g"
expr2 "b < 0 ? b * sole.b + lift.b : b < lift.b * 2 ? pow( (lift.b *2 - b) / (lift.b * 2), 2) * lift.b + b : b"
name ToeExpr1
xpos 507
ypos 397
addUserKnob {20 User}
addUserKnob {18 lift}
lift {0.15 0 0}
addUserKnob {6 lift_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
lift_panelDropped true
addUserKnob {6 lift_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 sole R 0 0.1}
sole {0 0 0}
addUserKnob {6 sole_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
}
Colorspace {
colorspace_in CIE-Yxy
colorspace_out CIE-XYZ
name Colorspace2
note_font "Bitstream Vera Sans"
xpos 507
ypos 421
}
set Nf3fcdaf0 [stack 0]
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
primary_out "CIE (1931)"
name Colorspace15
xpos 347
ypos 612
}
push $Nf3fcdaf0
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos 640
ypos 571
}
Multiply {
value {1 1 1 1}
name Multiply1
xpos 640
ypos 597
}
push $Nf3fcdaf0
ColorMatrix {
matrix {
{1.04981102 0 -9.748e-05}
{-0.49590302 1.37331305 0.09824004}
{0 0 0.99125202}
}
name ColorMatrix3
xpos 507
ypos 572
}
Shuffle {
alpha white
name Shuffle2
label "\[value in]-->\[value out]"
note_font "Bitstream Vera Sans"
xpos 507
ypos 596
}
Switch {
inputs 2
which {{parent.colorize}}
name Switch1
xpos 569
ypos 655
}
BlinkScript {
inputs 2
recompileCount 4
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise 4f09b488f640fe57a9b92d835cc81424078e447e427d9f43fb8d958e7333c795 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 4 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"bottom_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 4 \"padding\" 1 1 \"left_margin\" 1 1 \"bottom_margin\" 1 1 \"process_input\" 1 1 3 \"outsize\" Float 1 1 AAAAAA== \"offsetX\" Float 1 1 AAAAAA== \"offsetY\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n float bottom_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offsetX;\n float offsetY;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offsetX = left_margin;\n offsetY = bottom_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offsetX, xy.y * outsize + offsetY);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding {{1/parent.parent.plotScale}}
plot_cie_xy_left_margin {{parent.parent.plotOffset.x}}
plot_cie_xy_bottom_margin {{parent.parent.plotOffset.y}}
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input1
selected true
xpos 569
ypos 737
cached true
}
Dilate {
size 1
name Dilate1
xpos 569
ypos 769
}
Output {
name Output1
xpos 569
ypos 875
}
end_group
Group {
inputs 0
name SpectralLocusFill
xpos -806
ypos 230
addUserKnob {20 User}
addUserKnob {41 value T Multiply1.value}
addUserKnob {6 colorize +STARTLINE}
}
Constant {
inputs 0
channels rgb
format "16384 2 0 0 16384 2 1 14bit_lut"
name bg1
xpos 510
ypos -223
addUserKnob {20 User}
addUserKnob {7 wl}
wl {{clamp(frame+375,375,780)}}
}
Ramp {
p0 {0 1}
p1 {16383 1}
name Ramp4
xpos 510
ypos -152
}
Multiply {
value 405
name Multiply4
xpos 510
ypos -134
}
Add {
value 375
name Add3
xpos 510
ypos -86
}
ColorLookup {
lut {master {}
red {curve x380 0.0014 x385 0.0022 0.0042 0.0076 0.0143 0.0232 0.0435 0.0776 0.1344 0.2148 0.2839 0.3285 0.3483 0.3481 0.3362 0.3187 0.2908 0.2511 0.1954 0.1421 0.0956 0.058 0.032 0.0147 0.0049 0.0024 0.0093 0.0291 0.0633 0.1096 0.1655 0.2257 0.2904 0.3597 0.4334 0.5121 0.5945 0.6784 0.7621 0.8425 0.9163 0.9786 1.0263 1.0567 1.0622 1.0456 1.0026 0.9384 0.8544 0.7514 0.6424 0.5419 0.4479 0.3608 0.2835 0.2187 0.1649 0.1212 0.0874 0.0636 0.0468 0.0329 0.0227 0.0158 0.0114 0.0081 0.0058 0.0041 0.0029 0.002 0.0014 0.001 0.0007 0.0005 0.0003 0.0002 0.0002 0.0001 0.0001 0.0001 0}
green {curve x380 0 x385 0.0001 0.0001 0.0002 0.0004 0.0006 0.0012 0.0022 0.004 0.0073 0.0116 0.0168 0.023 0.0298 0.038 0.048 0.06 0.0739 0.091 0.1126 0.139 0.1693 0.208 0.2586 0.323 0.4073 0.503 0.6082 0.71 0.7932 0.862 0.9149 0.954 0.9803 0.995 1 0.995 0.9786 0.952 0.9154 0.87 0.8163 0.757 0.6949 0.631 0.5668 0.503 0.4412 0.381 0.321 0.265 0.217 0.175 0.1382 0.107 0.0816 0.061 0.0446 0.032 0.0232 0.017 0.0119 0.0082 0.0057 0.0041 0.0029 0.0021 0.0015 0.001 0.0007 0.0005 0.0004 0.0002 0.0002 0.0001 0.0001 0.0001 0 0 0 0}
blue {curve x375 0 x380 0.0065 0.0105 0.0201 0.0362 0.0679 0.1102 0.2074 0.3713 0.6456 1.0391 1.3856 1.623 1.7471 1.7826 1.7721 1.7441 1.6692 1.5281 1.2876 1.0419 0.831 0.6162 0.4652 0.3533 0.272 0.2123 0.1582 0.1117 0.0782 0.0573 0.0422 0.0298 0.0203 0.0134 0.0087 0.0057 0.0039 0.0027 0.0021 0.0018 0.0017 0.0014 0.0011 0.001 0.0008 0.0006 0.0003 0.0002 0.0002 0.0001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
alpha {}}
name ColorLookup2
xpos 510
ypos -56
}
Crop {
box {500 0 13800 2}
reformat true
crop false
name Crop13
xpos 510
ypos -5
}
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
name Colorspace9
xpos 510
ypos 84
}
Reformat {
type "to box"
format "2048 2048 0 0 2048 2048 1 square_2k"
box_width 2048
box_height 240
box_fixed true
resize distort
filter Impulse
name Reformat5
xpos 510
ypos 162
}
set Nf4842700 [stack 0]
Crop {
box {0 0 {input.width/2.5} {height}}
reformat true
crop false
name Crop4
xpos 429
ypos 269
}
set Nf484a110 [stack 0]
Shuffle {
red black
green black
blue black
alpha black
name Shuffle7
label "\[value in]-->\[value out]"
xpos 359
ypos 422
}
Ramp {
p0 {{width/2} 0}
p1 {{width/2} {height-1}}
name Ramp8
xpos 359
ypos 460
}
push $Nf484a110
push $Nf4842700
Crop {
box {{Crop4.box.r} 0 {width} {height}}
reformat true
crop false
name Crop5
xpos 578
ypos 269
}
Reformat {
type "to box"
box_width {{Crop4.box.r-Crop4.box.x}}
box_height {{Crop4.box.t-Crop4.box.y}}
box_fixed true
scale {1 0.5}
resize distort
flop true
name Reformat7
xpos 578
ypos 306
}
Keymix {
inputs 3
name Keymix5
xpos 522
ypos 525
}
Reformat {
type scale
scale 2
name Reformat1
xpos 522
ypos 557
}
set Nf486f410 [stack 0]
push $Nf486f410
Colorspace {
colorspace_in CIE-Yxy
colorspace_out CIE-XYZ
name Colorspace1
xpos 643
ypos 656
}
set Nf4876e20 [stack 0]
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos 643
ypos 762
}
Multiply {
value 0.5
name Multiply1
xpos 643
ypos 804
}
push $Nf4876e20
ColorMatrix {
matrix {
{1.04981102 0 -9.748e-05}
{-0.49590302 1.37331305 0.09824004}
{0 0 0.99125202}
}
name ColorMatrix3
xpos 767
ypos 781
}
Switch {
inputs 2
which {{parent.colorize}}
name Switch1
xpos 643
ypos 858
}
Multiply {
value {{parent.value.r} {parent.value.g} {parent.value.b} {parent.value.a}}
name Multiply2
xpos 643
ypos 902
}
BlinkScript {
inputs 2
recompileCount 4
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise 4f09b488f640fe57a9b92d835cc81424078e447e427d9f43fb8d958e7333c795 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 4 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"bottom_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 4 \"padding\" 1 1 \"left_margin\" 1 1 \"bottom_margin\" 1 1 \"process_input\" 1 1 3 \"outsize\" Float 1 1 AAAAAA== \"offsetX\" Float 1 1 AAAAAA== \"offsetY\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n float bottom_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offsetX;\n float offsetY;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offsetX = left_margin;\n offsetY = bottom_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offsetX, xy.y * outsize + offsetY);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding {{1/parent.parent.plotScale}}
plot_cie_xy_left_margin {{parent.parent.plotOffset.x}}
plot_cie_xy_bottom_margin {{parent.parent.plotOffset.y}}
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input1
selected true
xpos 522
ypos 986
cached true
}
Dilate {
size 2.5
name Dilate1
xpos 522
ypos 1018
}
Dilate {
size -2.5
name Dilate2
xpos 522
ypos 1050
}
Output {
name Output1
xpos 522
ypos 1117
}
end_group
Multiply {
value 0.18
name Multiply1
xpos -806
ypos 254
}
Merge2 {
inputs 4+1
name Merge2
xpos -875
ypos 314
}
Merge2 {
inputs 2
operation plus
name Merge1
xpos -875
ypos 363
}
Input {
inputs 0
name Input1
xpos 122
ypos -140
}
Dot {
name Dot2
xpos 156
ypos 11
}
set Nf48ca0f0 [stack 0]
Dot {
name Dot4
xpos 266
ypos 11
}
ColorMatrix {
matrix {
{{parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix}}
{{parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix}}
{{parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix}}
}
name ColorMatrix5
label "output to XYZ"
xpos 232
ypos 84
}
set Nf48cecb0 [stack 0]
ColorMatrix {
matrix {
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
}
name ColorMatrix8
label "CAT Matrix\nforward"
xpos 350
ypos 79
}
Multiply {
value {{whiteInLMS.r/whiteOutLMS.r} {whiteInLMS.g/whiteOutLMS.g} {whiteInLMS.b/whiteOutLMS.b} 1}
name Multiply3
label "Scale White"
xpos 350
ypos 121
addUserKnob {20 User}
addUserKnob {18 whiteInXYZ}
whiteInXYZ {{ColorMatrix1.matrix.0+ColorMatrix1.matrix.1+ColorMatrix1.matrix.2} {ColorMatrix1.matrix.3+ColorMatrix1.matrix.4+ColorMatrix1.matrix.5} {ColorMatrix1.matrix.6+ColorMatrix1.matrix.7+ColorMatrix1.matrix.8}}
addUserKnob {6 whiteInXYZ_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteInLMS}
whiteInLMS {{whiteInXYZ.r*ColorMatrix4.matrix.0+whiteInXYZ.g*ColorMatrix4.matrix.1+whiteInXYZ.b*ColorMatrix4.matrix.2} {whiteInXYZ.r*ColorMatrix4.matrix.3+whiteInXYZ.g*ColorMatrix4.matrix.4+whiteInXYZ.b*ColorMatrix4.matrix.5} {whiteInXYZ.r*ColorMatrix4.matrix.6+whiteInXYZ.g*ColorMatrix4.matrix.7+whiteInXYZ.b*ColorMatrix4.matrix.8}}
addUserKnob {6 whiteInLMS_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteOutXYZ}
whiteOutXYZ {{ColorMatrix3.matrix.0+ColorMatrix3.matrix.1+ColorMatrix3.matrix.2} {ColorMatrix3.matrix.3+ColorMatrix3.matrix.4+ColorMatrix3.matrix.5} {ColorMatrix3.matrix.6+ColorMatrix3.matrix.7+ColorMatrix3.matrix.8}}
addUserKnob {6 whiteOutXYZ_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteOutLMS}
whiteOutLMS {{whiteOutXYZ.r*ColorMatrix4.matrix.0+whiteOutXYZ.g*ColorMatrix4.matrix.1+whiteOutXYZ.b*ColorMatrix4.matrix.2} {whiteOutXYZ.r*ColorMatrix4.matrix.3+whiteOutXYZ.g*ColorMatrix4.matrix.4+whiteOutXYZ.b*ColorMatrix4.matrix.5} {whiteOutXYZ.r*ColorMatrix4.matrix.6+whiteOutXYZ.g*ColorMatrix4.matrix.7+whiteOutXYZ.b*ColorMatrix4.matrix.8}}
addUserKnob {6 whiteOutLMS_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOut_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteIn_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
}
ColorMatrix {
matrix {
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
}
invert true
name ColorMatrix9
label "CAT Matrix\ninverse"
xpos 350
ypos 163
}
push $Nf48cecb0
Switch {
inputs 2
which {{"ColorMatrix4.cat > 0"}}
name Switch4
xpos 232
ypos 172
}
ColorMatrix {
matrix {
{{FromMatrix.matrix.0*FromMatrixInverse.S.r} {FromMatrix.matrix.1*FromMatrixInverse.S.g} {FromMatrix.matrix.2*FromMatrixInverse.S.b}}
{{FromMatrix.matrix.3*FromMatrixInverse.S.r} {FromMatrix.matrix.4*FromMatrixInverse.S.g} {FromMatrix.matrix.5*FromMatrixInverse.S.b}}
{{FromMatrix.matrix.6*FromMatrixInverse.S.r} {FromMatrix.matrix.7*FromMatrixInverse.S.g} {FromMatrix.matrix.8*FromMatrixInverse.S.b}}
}
invert true
name ColorMatrix6
label "XYZ to Input"
xpos 232
ypos 213
addUserKnob {20 User}
addUserKnob {7 determinant}
determinant {{matrix.0*(matrix.4*matrix.8-matrix.7*matrix.5)+matrix.1*(matrix.5*matrix.6-matrix.8*matrix.3)+matrix.2*(matrix.3*matrix.7-matrix.6*matrix.4)}}
}
Dot {
name Dot5
xpos 266
ypos 272
}
push $Nf48ca0f0
Dot {
name Dot1
xpos 46
ypos 11
}
clone $Cf0fd49e0 {
xpos 12
ypos 74
selected false
}
set Nf49021a0 [stack 0]
ColorMatrix {
matrix {
{{"\[python (1, 1, 0.8951, 0.7328)\\\[\[numvalue cat]\\]]"} {"\[python (0, 0, 0.2664, 0.4296)\\\[\[numvalue cat]\\]]"} {"\[python (0, 0, -0.1614, -0.1624)\\\[\[numvalue cat]\\]]"}}
{{"\[python (0, 0, -0.7502, -0.7036)\\\[\[numvalue cat]\\]]"} {"\[python (1, 1, 1.7135, 1.6975)\\\[\[numvalue cat]\\]]"} {"\[python (0, 0, 0.0367, 0.0061)\\\[\[numvalue cat]\\]]"}}
{{"\[python (0, 0, 0.0389, 0.003)\\\[\[numvalue cat]\\]]"} {"\[python (0, 0, -0.0685, 0.0136)\\\[\[numvalue cat]\\]]"} {"\[python (1, 1, 1.0296, 0.9834)\\\[\[numvalue cat]\\]]"}}
}
name ColorMatrix4
label "CAT Matrix\n\[value cat]\n\[python ('forward', 'inverse')\\\[\[numvalue invert]\\]]"
xpos -113
ypos 64
addUserKnob {20 User}
addUserKnob {4 cat M {None "XYZ Scaling" Bradford CAT02}}
cat CAT02
}
Multiply {
value {{whiteOutLMS.r/whiteInLMS.r} {whiteOutLMS.g/whiteInLMS.g} {whiteOutLMS.b/whiteInLMS.b} 1}
name Multiply2
label "Scale White"
xpos -113
ypos 116
addUserKnob {20 User}
addUserKnob {18 whiteInXYZ}
whiteInXYZ {{ColorMatrix1.matrix.0+ColorMatrix1.matrix.1+ColorMatrix1.matrix.2} {ColorMatrix1.matrix.3+ColorMatrix1.matrix.4+ColorMatrix1.matrix.5} {ColorMatrix1.matrix.6+ColorMatrix1.matrix.7+ColorMatrix1.matrix.8}}
addUserKnob {6 whiteInXYZ_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteInLMS}
whiteInLMS {{whiteInXYZ.r*ColorMatrix4.matrix.0+whiteInXYZ.g*ColorMatrix4.matrix.1+whiteInXYZ.b*ColorMatrix4.matrix.2} {whiteInXYZ.r*ColorMatrix4.matrix.3+whiteInXYZ.g*ColorMatrix4.matrix.4+whiteInXYZ.b*ColorMatrix4.matrix.5} {whiteInXYZ.r*ColorMatrix4.matrix.6+whiteInXYZ.g*ColorMatrix4.matrix.7+whiteInXYZ.b*ColorMatrix4.matrix.8}}
addUserKnob {6 whiteInLMS_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteOutXYZ}
whiteOutXYZ {{ColorMatrix3.matrix.0+ColorMatrix3.matrix.1+ColorMatrix3.matrix.2} {ColorMatrix3.matrix.3+ColorMatrix3.matrix.4+ColorMatrix3.matrix.5} {ColorMatrix3.matrix.6+ColorMatrix3.matrix.7+ColorMatrix3.matrix.8}}
addUserKnob {6 whiteOutXYZ_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteOutLMS}
whiteOutLMS {{whiteOutXYZ.r*ColorMatrix4.matrix.0+whiteOutXYZ.g*ColorMatrix4.matrix.1+whiteOutXYZ.b*ColorMatrix4.matrix.2} {whiteOutXYZ.r*ColorMatrix4.matrix.3+whiteOutXYZ.g*ColorMatrix4.matrix.4+whiteOutXYZ.b*ColorMatrix4.matrix.5} {whiteOutXYZ.r*ColorMatrix4.matrix.6+whiteOutXYZ.g*ColorMatrix4.matrix.7+whiteOutXYZ.b*ColorMatrix4.matrix.8}}
addUserKnob {6 whiteOutLMS_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOut_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteIn_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
}
ColorMatrix {
matrix {
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
}
invert true
name ColorMatrix7
label "CAT Matrix\ninverse"
xpos -113
ypos 158
}
push $Nf49021a0
Switch {
inputs 2
which {{"ColorMatrix4.cat > 0"}}
name Switch2
xpos 12
ypos 167
}
ColorMatrix {
matrix {
{{"\[python (0.9525523959, 0.6624541811, 0.4123907993, 0.6369580483, 0.4865709486, 0.6380076193, 0.4581609159, 0.4878301118, 0.4516946649, 0.5070147865, 0.4462154077, 0.7352752459, 0.7064827132, 0.7064827132, 0.5990839208, 0.7976672348, 1.0000000000, 1.48804061)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.0000000000, 0.1340042065, 0.3575843394, 0.1446169036, 0.2656676932, 0.2147038563, 0.3832048061, 0.3432736678, 0.3178467119, 0.3587783652, 0.3157557129, 0.0686094106, 0.1288010498, 0.1288010498, 0.2489255161, 0.1351922306, 0.0000000000, -0.23423647)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.0000936786, 0.1561876870, 0.1804807884, 0.1688809752, 0.1982172852, 0.0977444514, 0.1112803526, 0.1215422950, 0.1831046977, 0.0868529229, 0.1906749540, 0.1465712705, 0.1151721641, 0.1151721641, 0.1024464902, 0.0313525290, 0.0000000000, -0.3011580651)\\\[\[numvalue gamut]\\]]\n"}}
{{"\[python (0.3439664498, 0.2722287168, 0.2126390059, 0.2627002120, 0.2289745641, 0.2919537790, 0.1694420971, 0.2289038124, 0.2119478695, 0.2207240223, 0.1942557952, 0.2866940995, 0.2709796708, 0.2709796708, 0.2150758201, 0.2880374539, 0.0000000000, 0.2501373809)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.7281660966, 0.6740817658, 0.7151686788, 0.6779980715, 0.6917385218, 0.8238410415, 0.8648282025, 0.7808598244, 0.7230197720, 0.8391880546, 0.7385568692, 0.8429791340, 0.7866064112, 0.7866064112, 0.8850685017, 0.7118768834, 1.0000000000, 1.210452347)\\\[\[numvalue gamut]\\]]\n"} {"\[python (-0.0721325464, 0.0536895174, 0.0721923154, 0.0593017165, 0.0792869141, -0.1157948205, -0.0342702996, -0.0097636368, 0.0650323585, -0.0599120769, 0.0671873356, -0.1296732335, -0.0575860820, -0.0575860820, -0.1001443219, 0.0000856626, 0.0000000000, -0.4605897283)\\\[\[numvalue gamut]\\]]\n"}}
{{"\[python (0.0000000000, -0.0055746495, 0.0193308187, 0.0000000000, 0.0000000000, 0.0027982790, -0.1061849690, -0.0210075899, -0.0194509094, -0.0544519405, -0.0479226710, -0.0796808569, -0.0096778454, -0.0096778454, -0.0320658495, 0.0000000000, 0.0000000000, -0.4416591448)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.0000000000, 0.0040607335, 0.1191947798, 0.0280726930, 0.0451133819, -0.0670342357, 0.0255435258, 0.0178269864, 0.0165064159, -0.0003228254, -0.0002844886, -0.3473432170, 0.0046000375, 0.0046000375, -0.0276583907, 0.0000000000, 0.0000000000, -0.2480497808)\\\[\[numvalue gamut]\\]]\n"} {"\[python (1.0088251844, 1.0103391003, 0.9505321522, 1.0609850577, 1.0439443689, 1.1532937074, 1.0894666276, 1.0120057879, 1.0117696778, 1.0635999502, 1.0570323440, 1.5160818246, 1.0941355587, 1.0941355587, 1.1487819910, 0.8251882845, 1.0000000000, 1.69853411)\\\[\[numvalue gamut]\\]]\n"}}
}
invert true
name ColorMatrix3
label "XYZ to output"
note_font "Bitstream Vera Sans"
xpos 12
ypos 210
addUserKnob {20 User}
addUserKnob {4 gamut M {ACES ACEScg "Rec709 / sRGB" Rec2020 P3 AlexaWideGamut REDColor2 REDColor3 REDColor4 DRAGONcolor DRAGONcolor2 REDWideGamutRGB SGamut SGamut3 SGamut3.Cine ProPhoto "CIE XYZ" "Huge Gamut AP0 x 2" ""}}
gamut ACEScg
}
Dot {
name Dot3
xpos 46
ypos 272
}
Switch {
inputs 2
which {{parent.inverse}}
name Switch3
xpos 126
ypos 269
}
Switch {
inputs 2
which {{parent.showPlot}}
name Switch1
xpos 126
ypos 363
}
Output {
name Output1
xpos 126
ypos 434
}
ColorMatrix {
inputs 0
matrix {
{{(FromMatrix.matrix.4*FromMatrix.matrix.8-FromMatrix.matrix.7*FromMatrix.matrix.5)/FromMatrix.determinant} {(FromMatrix.matrix.7*FromMatrix.matrix.2-FromMatrix.matrix.1*FromMatrix.matrix.8)/FromMatrix.determinant} {(FromMatrix.matrix.1*FromMatrix.matrix.5-FromMatrix.matrix.4*FromMatrix.matrix.2)/FromMatrix.determinant}}
{{(FromMatrix.matrix.5*FromMatrix.matrix.6-FromMatrix.matrix.8*FromMatrix.matrix.3)/FromMatrix.determinant} {(FromMatrix.matrix.8*FromMatrix.matrix.0-FromMatrix.matrix.2*FromMatrix.matrix.6)/FromMatrix.determinant} {(FromMatrix.matrix.2*FromMatrix.matrix.3-FromMatrix.matrix.5*FromMatrix.matrix.0)/FromMatrix.determinant}}
{{(FromMatrix.matrix.3*FromMatrix.matrix.7-FromMatrix.matrix.6*FromMatrix.matrix.4)/FromMatrix.determinant} {(FromMatrix.matrix.6*FromMatrix.matrix.1-FromMatrix.matrix.0*FromMatrix.matrix.7)/FromMatrix.determinant} {(FromMatrix.matrix.0*FromMatrix.matrix.4-FromMatrix.matrix.3*FromMatrix.matrix.1)/FromMatrix.determinant}}
}
name FromMatrixInverse
label FromParimaries-1
xpos -1169
ypos 165
addUserKnob {20 User}
addUserKnob {13 white}
white {{FromMatrix.white.x/FromMatrix.white.y} 1 {(1-FromMatrix.white.x-FromMatrix.white.y)/FromMatrix.white.y}}
addUserKnob {18 S}
S {{matrix.0*white.x+matrix.1*white.y+matrix.2*white.z} {matrix.3*white.x+matrix.4*white.y+matrix.5*white.z} {matrix.6*white.x+matrix.7*white.y+matrix.8*white.z}}
addUserKnob {6 S_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
}
ColorMatrix {
inputs 0
matrix {
{{(ColorMatrix1.matrix.4*ColorMatrix1.matrix.8-ColorMatrix1.matrix.7*ColorMatrix1.matrix.5)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.7*ColorMatrix1.matrix.2-ColorMatrix1.matrix.1*ColorMatrix1.matrix.8)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.1*ColorMatrix1.matrix.5-ColorMatrix1.matrix.4*ColorMatrix1.matrix.2)/ColorMatrix1.determinant}}
{{(ColorMatrix1.matrix.5*ColorMatrix1.matrix.6-ColorMatrix1.matrix.8*ColorMatrix1.matrix.3)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.8*ColorMatrix1.matrix.0-ColorMatrix1.matrix.2*ColorMatrix1.matrix.6)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.2*ColorMatrix1.matrix.3-ColorMatrix1.matrix.5*ColorMatrix1.matrix.0)/ColorMatrix1.determinant}}
{{(ColorMatrix1.matrix.3*ColorMatrix1.matrix.7-ColorMatrix1.matrix.6*ColorMatrix1.matrix.4)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.6*ColorMatrix1.matrix.1-ColorMatrix1.matrix.0*ColorMatrix1.matrix.7)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.0*ColorMatrix1.matrix.4-ColorMatrix1.matrix.3*ColorMatrix1.matrix.1)/ColorMatrix1.determinant}}
}
name ColorMatrix2
label XYZ_to_Input
note_font "Bitstream Vera Sans"
xpos -435
ypos 52
}
end_group
push $Nec359400
Group {
name FreeformGamut4
label "Panasonic\nV-Gamut"
xpos 11601
ypos 440
addUserKnob {20 Primaries}
addUserKnob {26 inputPrimaries -STARTLINE T ""}
addUserKnob {41 white T FromMatrix.white}
addUserKnob {41 red T FromMatrix.red}
addUserKnob {41 green T FromMatrix.green}
addUserKnob {41 blue T FromMatrix.blue}
addUserKnob {26 ""}
addUserKnob {41 outputColorspace T ColorMatrix3.gamut}
addUserKnob {6 inverse -STARTLINE}
addUserKnob {26 ""}
addUserKnob {6 showPlot +STARTLINE}
addUserKnob {20 plotSettings n 1}
plotSettings 0
addUserKnob {7 plotScale R 0 2}
plotScale 0.5
addUserKnob {12 plotOffset}
plotOffset {409.6 409.6}
addUserKnob {20 endGroup n -1}
addUserKnob {20 Matrices}
addUserKnob {41 rgbToXyzMatrix T ColorMatrix1.matrix}
addUserKnob {26 ""}
addUserKnob {41 cat T ColorMatrix4.cat}
addUserKnob {26 ""}
addUserKnob {41 xyzToRgbMatrix T ColorMatrix2.matrix}
}
Constant {
inputs 0
format "1 1 0 0 1 1 1 1_pixel"
name Constant1
xpos -1301
ypos 69
}
ColorMatrix {
matrix {
{{red.x/red.y} {green.x/green.y} {blue.x/blue.y}}
{1 1 1}
{{(1-red.x-red.y)/red.y} {(1-green.x-green.y)/green.y} {(1-blue.x-blue.y)/blue.y}}
}
name FromMatrix
label FromParimaries
xpos -1301
ypos 167
addUserKnob {20 User}
addUserKnob {12 white}
white {0.3127 0.329}
addUserKnob {12 red}
red {0.73 0.28}
addUserKnob {12 green}
green {0.165 0.84}
addUserKnob {12 blue}
blue {0.1 -0.03}
addUserKnob {7 determinant}
determinant {{matrix.0*(matrix.4*matrix.8-matrix.7*matrix.5)+matrix.1*(matrix.5*matrix.6-matrix.8*matrix.3)+matrix.2*(matrix.3*matrix.7-matrix.6*matrix.4)}}
}
Reformat {
format "2048 2048 0 0 2048 2048 1 square_2k"
resize distort
filter Impulse
name Reformat1
xpos -1301
ypos 291
}
Shuffle {
red black
green black
blue black
alpha black
name Shuffle2
label "\[value in]-->\[value out]"
xpos -1301
ypos 331
}
Transform {
translate {{parent.plotOffset.x} {parent.plotOffset.y}}
scale {{parent.plotScale}}
black_outside false
name Transform1
xpos -1301
ypos 363
}
ColorWheel {
inputs 0
format "512 512 0 0 512 512 1 square_512"
centerSaturation 1
name ColorWheel4
xpos -554
ypos -58
}
ColorMatrix {
matrix {
{{FromMatrix.matrix.0*FromMatrixInverse.S.r} {FromMatrix.matrix.1*FromMatrixInverse.S.g} {FromMatrix.matrix.2*FromMatrixInverse.S.b}}
{{FromMatrix.matrix.3*FromMatrixInverse.S.r} {FromMatrix.matrix.4*FromMatrixInverse.S.g} {FromMatrix.matrix.5*FromMatrixInverse.S.b}}
{{FromMatrix.matrix.6*FromMatrixInverse.S.r} {FromMatrix.matrix.7*FromMatrixInverse.S.g} {FromMatrix.matrix.8*FromMatrixInverse.S.b}}
}
name ColorMatrix1
label Input_to_XYZ
xpos -554
ypos 53
addUserKnob {20 User}
addUserKnob {7 determinant}
determinant {{matrix.0*(matrix.4*matrix.8-matrix.7*matrix.5)+matrix.1*(matrix.5*matrix.6-matrix.8*matrix.3)+matrix.2*(matrix.3*matrix.7-matrix.6*matrix.4)}}
}
set Cf4976e70 [stack 0]
set Nf4976e70 [stack 0]
Colorspace {
colorspace_in CIE-XYZ
primary_in ACES
colorspace_out CIE-Yxy
name Colorspace4
xpos -434
ypos 109
}
push $Nf4976e70
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos -554
ypos 93
}
Multiply {
value {1 0 0 1}
name Multiply4
xpos -554
ypos 117
}
BlinkScript {
inputs 2
recompileCount 4
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise 4f09b488f640fe57a9b92d835cc81424078e447e427d9f43fb8d958e7333c795 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 4 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"bottom_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 4 \"padding\" 1 1 \"left_margin\" 1 1 \"bottom_margin\" 1 1 \"process_input\" 1 1 3 \"outsize\" Float 1 1 AAAAAA== \"offsetX\" Float 1 1 AAAAAA== \"offsetY\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n float bottom_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offsetX;\n float offsetY;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offsetX = left_margin;\n offsetY = bottom_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offsetX, xy.y * outsize + offsetY);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding {{1/parent.plotScale}}
plot_cie_xy_left_margin {{parent.plotOffset.x}}
plot_cie_xy_bottom_margin {{parent.plotOffset.y}}
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input
xpos -554
ypos 159
cached true
}
Dilate {
size 1
name Dilate1
xpos -554
ypos 232
}
set Nf499d200 [stack 0]
push $Nf499d200
ShuffleCopy {
inputs 2
alpha alpha2
name ShuffleCopy1
xpos -554
ypos 314
}
Group {
inputs 0
name PlanckianLocus
xpos -1030
ypos 256
addUserKnob {20 User}
addUserKnob {6 colorize +STARTLINE}
addUserKnob {41 value T Multiply1.value}
addUserKnob {26 temperature}
addUserKnob {7 start -STARTLINE R 1000 100000}
start 1000
addUserKnob {7 end R 1000 100000}
end 100000
}
Constant {
inputs 0
channels rgb
format "1620 2 0 0 1620 2 1 visible_spectrum_quarter nm"
name bg1
xpos 507
ypos -50
addUserKnob {20 User}
addUserKnob {7 wl}
wl {{clamp(frame+375,375,780)}}
}
set Nf49af060 [stack 0]
Rectangle {
area {{"(log10(parent.start)-3)/2 * width"} 0 {"(log10(parent.end)-3)/2 * width"} {height}}
name Rectangle7
xpos 289
ypos 130
}
push $Nf49af060
Ramp {
p0 {0 1}
p1 {1619 1}
name Ramp4
xpos 507
ypos 55
}
Multiply {
value {405 405 405 2}
name Multiply4
xpos 507
ypos 81
}
Add {
value {375 375 375 3}
name Add3
xpos 507
ypos 119
}
ColorLookup {
lut {master {}
red {curve x380 0.0014 x385 0.0022 0.0042 0.0076 0.0143 0.0232 0.0435 0.0776 0.1344 0.2148 0.2839 0.3285 0.3483 0.3481 0.3362 0.3187 0.2908 0.2511 0.1954 0.1421 0.0956 0.058 0.032 0.0147 0.0049 0.0024 0.0093 0.0291 0.0633 0.1096 0.1655 0.2257 0.2904 0.3597 0.4334 0.5121 0.5945 0.6784 0.7621 0.8425 0.9163 0.9786 1.0263 1.0567 1.0622 1.0456 1.0026 0.9384 0.8544 0.7514 0.6424 0.5419 0.4479 0.3608 0.2835 0.2187 0.1649 0.1212 0.0874 0.0636 0.0468 0.0329 0.0227 0.0158 0.0114 0.0081 0.0058 0.0041 0.0029 0.002 0.0014 0.001 0.0007 0.0005 0.0003 0.0002 0.0002 0.0001 0.0001 0.0001 0}
green {curve x380 0 x385 0.0001 0.0001 0.0002 0.0004 0.0006 0.0012 0.0022 0.004 0.0073 0.0116 0.0168 0.023 0.0298 0.038 0.048 0.06 0.0739 0.091 0.1126 0.139 0.1693 0.208 0.2586 0.323 0.4073 0.503 0.6082 0.71 0.7932 0.862 0.9149 0.954 0.9803 0.995 1 0.995 0.9786 0.952 0.9154 0.87 0.8163 0.757 0.6949 0.631 0.5668 0.503 0.4412 0.381 0.321 0.265 0.217 0.175 0.1382 0.107 0.0816 0.061 0.0446 0.032 0.0232 0.017 0.0119 0.0082 0.0057 0.0041 0.0029 0.0021 0.0015 0.001 0.0007 0.0005 0.0004 0.0002 0.0002 0.0001 0.0001 0.0001 0 0 0 0}
blue {curve x375 0 x380 0.0065 0.0105 0.0201 0.0362 0.0679 0.1102 0.2074 0.3713 0.6456 1.0391 1.3856 1.623 1.7471 1.7826 1.7721 1.7441 1.6692 1.5281 1.2876 1.0419 0.831 0.6162 0.4652 0.3533 0.272 0.2123 0.1582 0.1117 0.0782 0.0573 0.0422 0.0298 0.0203 0.0134 0.0087 0.0057 0.0039 0.0027 0.0021 0.0018 0.0017 0.0014 0.0011 0.001 0.0008 0.0006 0.0003 0.0002 0.0002 0.0001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
alpha {}}
name ColorLookup2
xpos 507
ypos 157
}
Expression {
expr0 r
expr1 g
expr2 b
expr3 pow(10,a)
name Expression1
xpos 507
ypos 181
}
BlinkScript {
ProgramGroup 1
KernelDescription "1 \"CCT2XYZ\" iterate pixelWise 1e5106c0628b69d1e3286f708ff894031c5f2cc6dcce2f5b6f5a0f9b492ad4d3 2 \"input\" Read Random \"dst\" Write Point 0"
kernelSource "// this kernel assumes the following in it's input:\n// an image with a width of 1620 pixels - representing 405 nm range in quarter-nm steps\n// RGB channel : CIE XYZ colour matching functions from 375nm to 780nm\n// Alpha channel : colour temperature in kelvin\n\nkernel CCT2XYZ : public ImageComputationKernel\n\{\n\tImage input; //the input image\n\tImage dst; //the output image\n\n\t//The kernel function is run at every pixel to produce the output.\n\tvoid process(int2 pos)\n\t\{\n \tSampleType(input) in = input(pos.x, pos.y);\n \tSampleType(input) cmf;\n \tfloat kelvin = in.w;\n \tint cmfY = 1;\n\t\tfloat3 ret = float3(0.f);\n\n\t\tfloat C1 = 2.0 * 3.141592653589793 * 6.626176 * 2.99792458 * 2.99792458;\n\t\tfloat C2 = (6.626176 * 2.99792458) / 1.380662;\n\n\t\t\n\t\tfor(int cmfX = 0; cmfX < input.bounds.width(); cmfX += 1)\n\t\t\{\n\t\t\tfloat nm = float(cmfX) / 4.f + 375.f;\n\t\t\tfloat dWavelengthM = nm * 1.0e-3; // * 1.0e-6\n\t\t\tfloat dWavelengthM5 = pow(dWavelengthM, 5.f); // * 1.0e-30\n\t\t\tfloat expArg = C2 / (kelvin * dWavelengthM * 1.0e-3);\n\t\t\tfloat blackbody = C1 / (dWavelengthM5 * 1.0e-12 * ( exp(expArg) - 1.0)); // -12 = -30 - (-18)\n\n\t\t\tcmf = input(cmfX, cmfY);\n\n\t\t\tret.x += (blackbody * cmf.x);\n\t\t\tret.y += (blackbody * cmf.y);\n\t\t\tret.z += (blackbody * cmf.z);\n\n\t\t\}\n\n\n\n\n\n\n\t\tret.x /= ret.y;\n\t\tret.z /= ret.y;\n\t\tret.y = 1.f;\n\n\t\tSampleType(input) out = in;\n\n\t\tout.x = ret.x;\n\t\tout.y = ret.y;\n\t\tout.z = ret.z;\n\n\t\tdst() = out;\n\t\}\n\};\n\n"
rebuild ""
rebuild_finalise ""
name BlinkScript1
selected true
xpos 507
ypos 219
}
Merge2 {
inputs 2
operation multiply
name Merge22
xpos 507
ypos 267
}
set Nf49dd620 [stack 0]
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
primary_out "CIE (1931)"
name Colorspace15
xpos 347
ypos 419
}
push $Nf49dd620
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos 640
ypos 378
}
Multiply {
value {0 0 0 1}
name Multiply1
xpos 640
ypos 404
}
push $Nf49dd620
ColorMatrix {
matrix {
{1.04981102 0 -9.748e-05}
{-0.49590302 1.37331305 0.09824004}
{0 0 0.99125202}
}
name ColorMatrix3
xpos 507
ypos 362
}
Expression {
temp_name0 max
temp_expr0 max(r,g,b)
expr0 "r / max"
expr1 "g / max"
expr2 "b / max"
name Expression2
xpos 507
ypos 386
}
Switch {
inputs 2
which {{parent.colorize}}
name Switch1
xpos 569
ypos 462
}
BlinkScript {
inputs 2
recompileCount 4
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise 4f09b488f640fe57a9b92d835cc81424078e447e427d9f43fb8d958e7333c795 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 4 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"bottom_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 4 \"padding\" 1 1 \"left_margin\" 1 1 \"bottom_margin\" 1 1 \"process_input\" 1 1 3 \"outsize\" Float 1 1 AAAAAA== \"offsetX\" Float 1 1 AAAAAA== \"offsetY\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n float bottom_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offsetX;\n float offsetY;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offsetX = left_margin;\n offsetY = bottom_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offsetX, xy.y * outsize + offsetY);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding {{1/parent.parent.plotScale}}
plot_cie_xy_left_margin {{parent.parent.plotOffset.x}}
plot_cie_xy_bottom_margin {{parent.parent.plotOffset.y}}
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input1
xpos 569
ypos 578
cached true
}
Dilate {
size 1
name Dilate1
xpos 569
ypos 616
}
Output {
name Output1
xpos 569
ypos 690
}
end_group
push 0
Group {
inputs 0
name SpectralLocus2
xpos -914
ypos 254
addUserKnob {20 User}
addUserKnob {6 colorize +STARTLINE}
addUserKnob {41 value T Multiply1.value}
addUserKnob {26 wavelength}
addUserKnob {7 start -STARTLINE R 375 780}
start 375
addUserKnob {7 end R 375 780}
end 780
addUserKnob {6 purples l "show \"line of purples\"" +STARTLINE}
addUserKnob {41 plotColorSpace T Switch3.which}
}
Constant {
inputs 0
channels rgb
format "16384 2 0 0 16384 2 1 14bit_lut"
name bg1
xpos 507
ypos -17
addUserKnob {20 User}
addUserKnob {7 wl}
wl {{clamp(frame+375,375,780)}}
}
set Nf4a29ef0 [stack 0]
Ramp {
p0 {0 1}
p1 {16383 1}
name Ramp4
xpos 507
ypos 55
}
set Nf4a2e810 [stack 0]
Dot {
name Dot8
note_font "Bitstream Vera Sans"
xpos 681
ypos 58
}
Multiply {
value {-0.001319684205 -0.565 -0.26 1}
name Multiply2
note_font "Bitstream Vera Sans"
xpos 647
ypos 122
}
Add {
value {0.001419684151 0.737 0.2637 1}
name Add7
note_font "Bitstream Vera Sans"
xpos 647
ypos 158
}
Shuffle {
alpha white
name Shuffle22
label "\[value in]-->\[value out]"
note_font "Bitstream Vera Sans"
xpos 647
ypos 207
}
Transform {
translate {13300 0}
scale {0.1883 1}
center {0 1}
filter Impulse
name Transform1
note_font "Bitstream Vera Sans"
xpos 647
ypos 243
}
Dot {
name Dot9
note_font "Bitstream Vera Sans"
xpos 681
ypos 376
}
push $Nf4a29ef0
Rectangle {
area {{width*((parent.start-375)/405)} 0 {width*((parent.end-375)/405)} 2}
name Rectangle7
xpos 289
ypos 130
}
push $Nf4a2e810
Multiply {
value 405
name Multiply4
xpos 507
ypos 81
}
Add {
value 375
name Add3
xpos 507
ypos 119
}
ColorLookup {
lut {master {}
red {curve x380 0.0014 x385 0.0022 0.0042 0.0076 0.0143 0.0232 0.0435 0.0776 0.1344 0.2148 0.2839 0.3285 0.3483 0.3481 0.3362 0.3187 0.2908 0.2511 0.1954 0.1421 0.0956 0.058 0.032 0.0147 0.0049 0.0024 0.0093 0.0291 0.0633 0.1096 0.1655 0.2257 0.2904 0.3597 0.4334 0.5121 0.5945 0.6784 0.7621 0.8425 0.9163 0.9786 1.0263 1.0567 1.0622 1.0456 1.0026 0.9384 0.8544 0.7514 0.6424 0.5419 0.4479 0.3608 0.2835 0.2187 0.1649 0.1212 0.0874 0.0636 0.0468 0.0329 0.0227 0.0158 0.0114 0.0081 0.0058 0.0041 0.0029 0.002 0.0014 0.001 0.0007 0.0005 0.0003 0.0002 0.0002 0.0001 0.0001 0.0001 0}
green {curve x380 0 x385 0.0001 0.0001 0.0002 0.0004 0.0006 0.0012 0.0022 0.004 0.0073 0.0116 0.0168 0.023 0.0298 0.038 0.048 0.06 0.0739 0.091 0.1126 0.139 0.1693 0.208 0.2586 0.323 0.4073 0.503 0.6082 0.71 0.7932 0.862 0.9149 0.954 0.9803 0.995 1 0.995 0.9786 0.952 0.9154 0.87 0.8163 0.757 0.6949 0.631 0.5668 0.503 0.4412 0.381 0.321 0.265 0.217 0.175 0.1382 0.107 0.0816 0.061 0.0446 0.032 0.0232 0.017 0.0119 0.0082 0.0057 0.0041 0.0029 0.0021 0.0015 0.001 0.0007 0.0005 0.0004 0.0002 0.0002 0.0001 0.0001 0.0001 0 0 0 0}
blue {curve x375 0 x380 0.0065 0.0105 0.0201 0.0362 0.0679 0.1102 0.2074 0.3713 0.6456 1.0391 1.3856 1.623 1.7471 1.7826 1.7721 1.7441 1.6692 1.5281 1.2876 1.0419 0.831 0.6162 0.4652 0.3533 0.272 0.2123 0.1582 0.1117 0.0782 0.0573 0.0422 0.0298 0.0203 0.0134 0.0087 0.0057 0.0039 0.0027 0.0021 0.0018 0.0017 0.0014 0.0011 0.001 0.0008 0.0006 0.0003 0.0002 0.0002 0.0001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
alpha {}}
name ColorLookup2
xpos 507
ypos 157
}
Merge2 {
inputs 2
operation multiply
name Merge22
xpos 507
ypos 226
}
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
name Colorspace1
note_font "Bitstream Vera Sans"
xpos 507
ypos 297
}
Crop {
box {500 0 13800 2}
name Crop13
xpos 507
ypos 321
}
Transform {
translate {-500 0}
center {8192 1}
name Transform3
note_font "Bitstream Vera Sans"
xpos 507
ypos 349
}
Merge2 {
inputs 2
name Merge1
note_font "Bitstream Vera Sans"
xpos 507
ypos 373
disable {{!parent.purples}}
}
Expression {
expr0 "r < 0 ? r * sole.r + lift.r : r < lift.r * 2 ? pow( (lift.r *2 - r) / (lift.r * 2), 2) * lift.r + r : r"
expr1 "g < 0 ? g * sole.g + lift.g : g < lift.g * 2 ? pow( (lift.g *2 - g) / (lift.g * 2), 2) * lift.g + g : g"
expr2 "b < 0 ? b * sole.b + lift.b : b < lift.b * 2 ? pow( (lift.b *2 - b) / (lift.b * 2), 2) * lift.b + b : b"
name ToeExpr1
xpos 507
ypos 397
addUserKnob {20 User}
addUserKnob {18 lift}
lift {0.15 0 0}
addUserKnob {6 lift_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
lift_panelDropped true
addUserKnob {6 lift_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 sole R 0 0.1}
sole {0 0 0}
addUserKnob {6 sole_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
}
Colorspace {
colorspace_in CIE-Yxy
colorspace_out CIE-XYZ
name Colorspace2
note_font "Bitstream Vera Sans"
xpos 507
ypos 421
}
set Nf4aae1c0 [stack 0]
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
primary_out "CIE (1931)"
name Colorspace15
xpos 347
ypos 612
}
push $Nf4aae1c0
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos 640
ypos 571
}
Multiply {
value {1 1 1 1}
name Multiply1
xpos 640
ypos 597
}
push $Nf4aae1c0
ColorMatrix {
matrix {
{1.04981102 0 -9.748e-05}
{-0.49590302 1.37331305 0.09824004}
{0 0 0.99125202}
}
name ColorMatrix3
xpos 507
ypos 572
}
Shuffle {
alpha white
name Shuffle2
label "\[value in]-->\[value out]"
note_font "Bitstream Vera Sans"
xpos 507
ypos 596
}
Switch {
inputs 2
which {{parent.colorize}}
name Switch1
xpos 569
ypos 655
}
BlinkScript {
inputs 2
recompileCount 4
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise 4f09b488f640fe57a9b92d835cc81424078e447e427d9f43fb8d958e7333c795 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 4 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"bottom_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 4 \"padding\" 1 1 \"left_margin\" 1 1 \"bottom_margin\" 1 1 \"process_input\" 1 1 3 \"outsize\" Float 1 1 AAAAAA== \"offsetX\" Float 1 1 AAAAAA== \"offsetY\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n float bottom_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offsetX;\n float offsetY;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offsetX = left_margin;\n offsetY = bottom_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offsetX, xy.y * outsize + offsetY);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding {{1/parent.parent.plotScale}}
plot_cie_xy_left_margin {{parent.parent.plotOffset.x}}
plot_cie_xy_bottom_margin {{parent.parent.plotOffset.y}}
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input1
selected true
xpos 569
ypos 737
cached true
}
Dilate {
size 1
name Dilate1
xpos 569
ypos 769
}
Output {
name Output1
xpos 569
ypos 875
}
end_group
Group {
inputs 0
name SpectralLocusFill
xpos -806
ypos 230
addUserKnob {20 User}
addUserKnob {41 value T Multiply1.value}
addUserKnob {6 colorize +STARTLINE}
}
Constant {
inputs 0
channels rgb
format "16384 2 0 0 16384 2 1 14bit_lut"
name bg1
xpos 510
ypos -223
addUserKnob {20 User}
addUserKnob {7 wl}
wl {{clamp(frame+375,375,780)}}
}
Ramp {
p0 {0 1}
p1 {16383 1}
name Ramp4
xpos 510
ypos -152
}
Multiply {
value 405
name Multiply4
xpos 510
ypos -134
}
Add {
value 375
name Add3
xpos 510
ypos -86
}
ColorLookup {
lut {master {}
red {curve x380 0.0014 x385 0.0022 0.0042 0.0076 0.0143 0.0232 0.0435 0.0776 0.1344 0.2148 0.2839 0.3285 0.3483 0.3481 0.3362 0.3187 0.2908 0.2511 0.1954 0.1421 0.0956 0.058 0.032 0.0147 0.0049 0.0024 0.0093 0.0291 0.0633 0.1096 0.1655 0.2257 0.2904 0.3597 0.4334 0.5121 0.5945 0.6784 0.7621 0.8425 0.9163 0.9786 1.0263 1.0567 1.0622 1.0456 1.0026 0.9384 0.8544 0.7514 0.6424 0.5419 0.4479 0.3608 0.2835 0.2187 0.1649 0.1212 0.0874 0.0636 0.0468 0.0329 0.0227 0.0158 0.0114 0.0081 0.0058 0.0041 0.0029 0.002 0.0014 0.001 0.0007 0.0005 0.0003 0.0002 0.0002 0.0001 0.0001 0.0001 0}
green {curve x380 0 x385 0.0001 0.0001 0.0002 0.0004 0.0006 0.0012 0.0022 0.004 0.0073 0.0116 0.0168 0.023 0.0298 0.038 0.048 0.06 0.0739 0.091 0.1126 0.139 0.1693 0.208 0.2586 0.323 0.4073 0.503 0.6082 0.71 0.7932 0.862 0.9149 0.954 0.9803 0.995 1 0.995 0.9786 0.952 0.9154 0.87 0.8163 0.757 0.6949 0.631 0.5668 0.503 0.4412 0.381 0.321 0.265 0.217 0.175 0.1382 0.107 0.0816 0.061 0.0446 0.032 0.0232 0.017 0.0119 0.0082 0.0057 0.0041 0.0029 0.0021 0.0015 0.001 0.0007 0.0005 0.0004 0.0002 0.0002 0.0001 0.0001 0.0001 0 0 0 0}
blue {curve x375 0 x380 0.0065 0.0105 0.0201 0.0362 0.0679 0.1102 0.2074 0.3713 0.6456 1.0391 1.3856 1.623 1.7471 1.7826 1.7721 1.7441 1.6692 1.5281 1.2876 1.0419 0.831 0.6162 0.4652 0.3533 0.272 0.2123 0.1582 0.1117 0.0782 0.0573 0.0422 0.0298 0.0203 0.0134 0.0087 0.0057 0.0039 0.0027 0.0021 0.0018 0.0017 0.0014 0.0011 0.001 0.0008 0.0006 0.0003 0.0002 0.0002 0.0001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
alpha {}}
name ColorLookup2
xpos 510
ypos -56
}
Crop {
box {500 0 13800 2}
reformat true
crop false
name Crop13
xpos 510
ypos -5
}
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
name Colorspace9
xpos 510
ypos 84
}
Reformat {
type "to box"
format "2048 2048 0 0 2048 2048 1 square_2k"
box_width 2048
box_height 240
box_fixed true
resize distort
filter Impulse
name Reformat5
xpos 510
ypos 162
}
set Nf3c683b0 [stack 0]
Crop {
box {0 0 {input.width/2.5} {height}}
reformat true
crop false
name Crop4
xpos 429
ypos 269
}
set Nf3c6fdc0 [stack 0]
Shuffle {
red black
green black
blue black
alpha black
name Shuffle7
label "\[value in]-->\[value out]"
xpos 359
ypos 422
}
Ramp {
p0 {{width/2} 0}
p1 {{width/2} {height-1}}
name Ramp8
xpos 359
ypos 460
}
push $Nf3c6fdc0
push $Nf3c683b0
Crop {
box {{Crop4.box.r} 0 {width} {height}}
reformat true
crop false
name Crop5
xpos 578
ypos 269
}
Reformat {
type "to box"
box_width {{Crop4.box.r-Crop4.box.x}}
box_height {{Crop4.box.t-Crop4.box.y}}
box_fixed true
scale {1 0.5}
resize distort
flop true
name Reformat7
xpos 578
ypos 306
}
Keymix {
inputs 3
name Keymix5
xpos 522
ypos 525
}
Reformat {
type scale
scale 2
name Reformat1
xpos 522
ypos 557
}
set Nf3c950c0 [stack 0]
push $Nf3c950c0
Colorspace {
colorspace_in CIE-Yxy
colorspace_out CIE-XYZ
name Colorspace1
xpos 643
ypos 656
}
set Nf3c9cad0 [stack 0]
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos 643
ypos 762
}
Multiply {
value 0.5
name Multiply1
xpos 643
ypos 804
}
push $Nf3c9cad0
ColorMatrix {
matrix {
{1.04981102 0 -9.748e-05}
{-0.49590302 1.37331305 0.09824004}
{0 0 0.99125202}
}
name ColorMatrix3
xpos 767
ypos 781
}
Switch {
inputs 2
which {{parent.colorize}}
name Switch1
xpos 643
ypos 858
}
Multiply {
value {{parent.value.r} {parent.value.g} {parent.value.b} {parent.value.a}}
name Multiply2
xpos 643
ypos 902
}
BlinkScript {
inputs 2
recompileCount 4
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise 4f09b488f640fe57a9b92d835cc81424078e447e427d9f43fb8d958e7333c795 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 4 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"bottom_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 4 \"padding\" 1 1 \"left_margin\" 1 1 \"bottom_margin\" 1 1 \"process_input\" 1 1 3 \"outsize\" Float 1 1 AAAAAA== \"offsetX\" Float 1 1 AAAAAA== \"offsetY\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n float bottom_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offsetX;\n float offsetY;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offsetX = left_margin;\n offsetY = bottom_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offsetX, xy.y * outsize + offsetY);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding {{1/parent.parent.plotScale}}
plot_cie_xy_left_margin {{parent.parent.plotOffset.x}}
plot_cie_xy_bottom_margin {{parent.parent.plotOffset.y}}
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input1
selected true
xpos 522
ypos 986
cached true
}
Dilate {
size 2.5
name Dilate1
xpos 522
ypos 1018
}
Dilate {
size -2.5
name Dilate2
xpos 522
ypos 1050
}
Output {
name Output1
xpos 522
ypos 1117
}
end_group
Multiply {
value 0.18
name Multiply1
xpos -806
ypos 254
}
Merge2 {
inputs 4+1
name Merge2
xpos -875
ypos 314
}
Merge2 {
inputs 2
operation plus
name Merge1
xpos -875
ypos 363
}
Input {
inputs 0
name Input1
xpos 122
ypos -140
}
Dot {
name Dot2
xpos 156
ypos 11
}
set Nf3cefda0 [stack 0]
Dot {
name Dot4
xpos 266
ypos 11
}
ColorMatrix {
matrix {
{{parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix}}
{{parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix}}
{{parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix}}
}
name ColorMatrix5
label "output to XYZ"
xpos 232
ypos 84
}
set Nf3cf4960 [stack 0]
ColorMatrix {
matrix {
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
}
name ColorMatrix8
label "CAT Matrix\nforward"
xpos 350
ypos 79
}
Multiply {
value {{whiteInLMS.r/whiteOutLMS.r} {whiteInLMS.g/whiteOutLMS.g} {whiteInLMS.b/whiteOutLMS.b} 1}
name Multiply3
label "Scale White"
xpos 350
ypos 121
addUserKnob {20 User}
addUserKnob {18 whiteInXYZ}
whiteInXYZ {{ColorMatrix1.matrix.0+ColorMatrix1.matrix.1+ColorMatrix1.matrix.2} {ColorMatrix1.matrix.3+ColorMatrix1.matrix.4+ColorMatrix1.matrix.5} {ColorMatrix1.matrix.6+ColorMatrix1.matrix.7+ColorMatrix1.matrix.8}}
addUserKnob {6 whiteInXYZ_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteInLMS}
whiteInLMS {{whiteInXYZ.r*ColorMatrix4.matrix.0+whiteInXYZ.g*ColorMatrix4.matrix.1+whiteInXYZ.b*ColorMatrix4.matrix.2} {whiteInXYZ.r*ColorMatrix4.matrix.3+whiteInXYZ.g*ColorMatrix4.matrix.4+whiteInXYZ.b*ColorMatrix4.matrix.5} {whiteInXYZ.r*ColorMatrix4.matrix.6+whiteInXYZ.g*ColorMatrix4.matrix.7+whiteInXYZ.b*ColorMatrix4.matrix.8}}
addUserKnob {6 whiteInLMS_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteOutXYZ}
whiteOutXYZ {{ColorMatrix3.matrix.0+ColorMatrix3.matrix.1+ColorMatrix3.matrix.2} {ColorMatrix3.matrix.3+ColorMatrix3.matrix.4+ColorMatrix3.matrix.5} {ColorMatrix3.matrix.6+ColorMatrix3.matrix.7+ColorMatrix3.matrix.8}}
addUserKnob {6 whiteOutXYZ_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteOutLMS}
whiteOutLMS {{whiteOutXYZ.r*ColorMatrix4.matrix.0+whiteOutXYZ.g*ColorMatrix4.matrix.1+whiteOutXYZ.b*ColorMatrix4.matrix.2} {whiteOutXYZ.r*ColorMatrix4.matrix.3+whiteOutXYZ.g*ColorMatrix4.matrix.4+whiteOutXYZ.b*ColorMatrix4.matrix.5} {whiteOutXYZ.r*ColorMatrix4.matrix.6+whiteOutXYZ.g*ColorMatrix4.matrix.7+whiteOutXYZ.b*ColorMatrix4.matrix.8}}
addUserKnob {6 whiteOutLMS_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOut_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteIn_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
}
ColorMatrix {
matrix {
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
}
invert true
name ColorMatrix9
label "CAT Matrix\ninverse"
xpos 350
ypos 163
}
push $Nf3cf4960
Switch {
inputs 2
which {{"ColorMatrix4.cat > 0"}}
name Switch4
xpos 232
ypos 172
}
ColorMatrix {
matrix {
{{FromMatrix.matrix.0*FromMatrixInverse.S.r} {FromMatrix.matrix.1*FromMatrixInverse.S.g} {FromMatrix.matrix.2*FromMatrixInverse.S.b}}
{{FromMatrix.matrix.3*FromMatrixInverse.S.r} {FromMatrix.matrix.4*FromMatrixInverse.S.g} {FromMatrix.matrix.5*FromMatrixInverse.S.b}}
{{FromMatrix.matrix.6*FromMatrixInverse.S.r} {FromMatrix.matrix.7*FromMatrixInverse.S.g} {FromMatrix.matrix.8*FromMatrixInverse.S.b}}
}
invert true
name ColorMatrix6
label "XYZ to Input"
xpos 232
ypos 213
addUserKnob {20 User}
addUserKnob {7 determinant}
determinant {{matrix.0*(matrix.4*matrix.8-matrix.7*matrix.5)+matrix.1*(matrix.5*matrix.6-matrix.8*matrix.3)+matrix.2*(matrix.3*matrix.7-matrix.6*matrix.4)}}
}
Dot {
name Dot5
xpos 266
ypos 272
}
push $Nf3cefda0
Dot {
name Dot1
xpos 46
ypos 11
}
clone $Cf4976e70 {
xpos 12
ypos 74
selected false
}
set Nf4b27f30 [stack 0]
ColorMatrix {
matrix {
{{"\[python (1, 1, 0.8951, 0.7328)\\\[\[numvalue cat]\\]]"} {"\[python (0, 0, 0.2664, 0.4296)\\\[\[numvalue cat]\\]]"} {"\[python (0, 0, -0.1614, -0.1624)\\\[\[numvalue cat]\\]]"}}
{{"\[python (0, 0, -0.7502, -0.7036)\\\[\[numvalue cat]\\]]"} {"\[python (1, 1, 1.7135, 1.6975)\\\[\[numvalue cat]\\]]"} {"\[python (0, 0, 0.0367, 0.0061)\\\[\[numvalue cat]\\]]"}}
{{"\[python (0, 0, 0.0389, 0.003)\\\[\[numvalue cat]\\]]"} {"\[python (0, 0, -0.0685, 0.0136)\\\[\[numvalue cat]\\]]"} {"\[python (1, 1, 1.0296, 0.9834)\\\[\[numvalue cat]\\]]"}}
}
name ColorMatrix4
label "CAT Matrix\n\[value cat]\n\[python ('forward', 'inverse')\\\[\[numvalue invert]\\]]"
xpos -113
ypos 64
addUserKnob {20 User}
addUserKnob {4 cat M {None "XYZ Scaling" Bradford CAT02}}
cat CAT02
}
Multiply {
value {{whiteOutLMS.r/whiteInLMS.r} {whiteOutLMS.g/whiteInLMS.g} {whiteOutLMS.b/whiteInLMS.b} 1}
name Multiply2
label "Scale White"
xpos -113
ypos 116
addUserKnob {20 User}
addUserKnob {18 whiteInXYZ}
whiteInXYZ {{ColorMatrix1.matrix.0+ColorMatrix1.matrix.1+ColorMatrix1.matrix.2} {ColorMatrix1.matrix.3+ColorMatrix1.matrix.4+ColorMatrix1.matrix.5} {ColorMatrix1.matrix.6+ColorMatrix1.matrix.7+ColorMatrix1.matrix.8}}
addUserKnob {6 whiteInXYZ_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteInLMS}
whiteInLMS {{whiteInXYZ.r*ColorMatrix4.matrix.0+whiteInXYZ.g*ColorMatrix4.matrix.1+whiteInXYZ.b*ColorMatrix4.matrix.2} {whiteInXYZ.r*ColorMatrix4.matrix.3+whiteInXYZ.g*ColorMatrix4.matrix.4+whiteInXYZ.b*ColorMatrix4.matrix.5} {whiteInXYZ.r*ColorMatrix4.matrix.6+whiteInXYZ.g*ColorMatrix4.matrix.7+whiteInXYZ.b*ColorMatrix4.matrix.8}}
addUserKnob {6 whiteInLMS_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteOutXYZ}
whiteOutXYZ {{ColorMatrix3.matrix.0+ColorMatrix3.matrix.1+ColorMatrix3.matrix.2} {ColorMatrix3.matrix.3+ColorMatrix3.matrix.4+ColorMatrix3.matrix.5} {ColorMatrix3.matrix.6+ColorMatrix3.matrix.7+ColorMatrix3.matrix.8}}
addUserKnob {6 whiteOutXYZ_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteOutLMS}
whiteOutLMS {{whiteOutXYZ.r*ColorMatrix4.matrix.0+whiteOutXYZ.g*ColorMatrix4.matrix.1+whiteOutXYZ.b*ColorMatrix4.matrix.2} {whiteOutXYZ.r*ColorMatrix4.matrix.3+whiteOutXYZ.g*ColorMatrix4.matrix.4+whiteOutXYZ.b*ColorMatrix4.matrix.5} {whiteOutXYZ.r*ColorMatrix4.matrix.6+whiteOutXYZ.g*ColorMatrix4.matrix.7+whiteOutXYZ.b*ColorMatrix4.matrix.8}}
addUserKnob {6 whiteOutLMS_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOut_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteIn_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
}
ColorMatrix {
matrix {
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
}
invert true
name ColorMatrix7
label "CAT Matrix\ninverse"
xpos -113
ypos 158
}
push $Nf4b27f30
Switch {
inputs 2
which {{"ColorMatrix4.cat > 0"}}
name Switch2
xpos 12
ypos 167
}
ColorMatrix {
matrix {
{{"\[python (0.9525523959, 0.6624541811, 0.4123907993, 0.6369580483, 0.4865709486, 0.6380076193, 0.4581609159, 0.4878301118, 0.4516946649, 0.5070147865, 0.4462154077, 0.7352752459, 0.7064827132, 0.7064827132, 0.5990839208, 0.7976672348, 1.0000000000, 1.48804061)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.0000000000, 0.1340042065, 0.3575843394, 0.1446169036, 0.2656676932, 0.2147038563, 0.3832048061, 0.3432736678, 0.3178467119, 0.3587783652, 0.3157557129, 0.0686094106, 0.1288010498, 0.1288010498, 0.2489255161, 0.1351922306, 0.0000000000, -0.23423647)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.0000936786, 0.1561876870, 0.1804807884, 0.1688809752, 0.1982172852, 0.0977444514, 0.1112803526, 0.1215422950, 0.1831046977, 0.0868529229, 0.1906749540, 0.1465712705, 0.1151721641, 0.1151721641, 0.1024464902, 0.0313525290, 0.0000000000, -0.3011580651)\\\[\[numvalue gamut]\\]]\n"}}
{{"\[python (0.3439664498, 0.2722287168, 0.2126390059, 0.2627002120, 0.2289745641, 0.2919537790, 0.1694420971, 0.2289038124, 0.2119478695, 0.2207240223, 0.1942557952, 0.2866940995, 0.2709796708, 0.2709796708, 0.2150758201, 0.2880374539, 0.0000000000, 0.2501373809)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.7281660966, 0.6740817658, 0.7151686788, 0.6779980715, 0.6917385218, 0.8238410415, 0.8648282025, 0.7808598244, 0.7230197720, 0.8391880546, 0.7385568692, 0.8429791340, 0.7866064112, 0.7866064112, 0.8850685017, 0.7118768834, 1.0000000000, 1.210452347)\\\[\[numvalue gamut]\\]]\n"} {"\[python (-0.0721325464, 0.0536895174, 0.0721923154, 0.0593017165, 0.0792869141, -0.1157948205, -0.0342702996, -0.0097636368, 0.0650323585, -0.0599120769, 0.0671873356, -0.1296732335, -0.0575860820, -0.0575860820, -0.1001443219, 0.0000856626, 0.0000000000, -0.4605897283)\\\[\[numvalue gamut]\\]]\n"}}
{{"\[python (0.0000000000, -0.0055746495, 0.0193308187, 0.0000000000, 0.0000000000, 0.0027982790, -0.1061849690, -0.0210075899, -0.0194509094, -0.0544519405, -0.0479226710, -0.0796808569, -0.0096778454, -0.0096778454, -0.0320658495, 0.0000000000, 0.0000000000, -0.4416591448)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.0000000000, 0.0040607335, 0.1191947798, 0.0280726930, 0.0451133819, -0.0670342357, 0.0255435258, 0.0178269864, 0.0165064159, -0.0003228254, -0.0002844886, -0.3473432170, 0.0046000375, 0.0046000375, -0.0276583907, 0.0000000000, 0.0000000000, -0.2480497808)\\\[\[numvalue gamut]\\]]\n"} {"\[python (1.0088251844, 1.0103391003, 0.9505321522, 1.0609850577, 1.0439443689, 1.1532937074, 1.0894666276, 1.0120057879, 1.0117696778, 1.0635999502, 1.0570323440, 1.5160818246, 1.0941355587, 1.0941355587, 1.1487819910, 0.8251882845, 1.0000000000, 1.69853411)\\\[\[numvalue gamut]\\]]\n"}}
}
invert true
name ColorMatrix3
label "XYZ to output"
note_font "Bitstream Vera Sans"
xpos 12
ypos 210
addUserKnob {20 User}
addUserKnob {4 gamut M {ACES ACEScg "Rec709 / sRGB" Rec2020 P3 AlexaWideGamut REDColor2 REDColor3 REDColor4 DRAGONcolor DRAGONcolor2 REDWideGamutRGB SGamut SGamut3 SGamut3.Cine ProPhoto "CIE XYZ" "Huge Gamut AP0 x 2" ""}}
gamut ACEScg
}
Dot {
name Dot3
xpos 46
ypos 272
}
Switch {
inputs 2
which {{parent.inverse}}
name Switch3
xpos 126
ypos 269
}
Switch {
inputs 2
which {{parent.showPlot}}
name Switch1
xpos 126
ypos 363
}
Output {
name Output1
xpos 126
ypos 434
}
ColorMatrix {
inputs 0
matrix {
{{(FromMatrix.matrix.4*FromMatrix.matrix.8-FromMatrix.matrix.7*FromMatrix.matrix.5)/FromMatrix.determinant} {(FromMatrix.matrix.7*FromMatrix.matrix.2-FromMatrix.matrix.1*FromMatrix.matrix.8)/FromMatrix.determinant} {(FromMatrix.matrix.1*FromMatrix.matrix.5-FromMatrix.matrix.4*FromMatrix.matrix.2)/FromMatrix.determinant}}
{{(FromMatrix.matrix.5*FromMatrix.matrix.6-FromMatrix.matrix.8*FromMatrix.matrix.3)/FromMatrix.determinant} {(FromMatrix.matrix.8*FromMatrix.matrix.0-FromMatrix.matrix.2*FromMatrix.matrix.6)/FromMatrix.determinant} {(FromMatrix.matrix.2*FromMatrix.matrix.3-FromMatrix.matrix.5*FromMatrix.matrix.0)/FromMatrix.determinant}}
{{(FromMatrix.matrix.3*FromMatrix.matrix.7-FromMatrix.matrix.6*FromMatrix.matrix.4)/FromMatrix.determinant} {(FromMatrix.matrix.6*FromMatrix.matrix.1-FromMatrix.matrix.0*FromMatrix.matrix.7)/FromMatrix.determinant} {(FromMatrix.matrix.0*FromMatrix.matrix.4-FromMatrix.matrix.3*FromMatrix.matrix.1)/FromMatrix.determinant}}
}
name FromMatrixInverse
label FromParimaries-1
xpos -1169
ypos 165
addUserKnob {20 User}
addUserKnob {13 white}
white {{FromMatrix.white.x/FromMatrix.white.y} 1 {(1-FromMatrix.white.x-FromMatrix.white.y)/FromMatrix.white.y}}
addUserKnob {18 S}
S {{matrix.0*white.x+matrix.1*white.y+matrix.2*white.z} {matrix.3*white.x+matrix.4*white.y+matrix.5*white.z} {matrix.6*white.x+matrix.7*white.y+matrix.8*white.z}}
addUserKnob {6 S_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
}
ColorMatrix {
inputs 0
matrix {
{{(ColorMatrix1.matrix.4*ColorMatrix1.matrix.8-ColorMatrix1.matrix.7*ColorMatrix1.matrix.5)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.7*ColorMatrix1.matrix.2-ColorMatrix1.matrix.1*ColorMatrix1.matrix.8)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.1*ColorMatrix1.matrix.5-ColorMatrix1.matrix.4*ColorMatrix1.matrix.2)/ColorMatrix1.determinant}}
{{(ColorMatrix1.matrix.5*ColorMatrix1.matrix.6-ColorMatrix1.matrix.8*ColorMatrix1.matrix.3)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.8*ColorMatrix1.matrix.0-ColorMatrix1.matrix.2*ColorMatrix1.matrix.6)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.2*ColorMatrix1.matrix.3-ColorMatrix1.matrix.5*ColorMatrix1.matrix.0)/ColorMatrix1.determinant}}
{{(ColorMatrix1.matrix.3*ColorMatrix1.matrix.7-ColorMatrix1.matrix.6*ColorMatrix1.matrix.4)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.6*ColorMatrix1.matrix.1-ColorMatrix1.matrix.0*ColorMatrix1.matrix.7)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.0*ColorMatrix1.matrix.4-ColorMatrix1.matrix.3*ColorMatrix1.matrix.1)/ColorMatrix1.determinant}}
}
name ColorMatrix2
label XYZ_to_Input
note_font "Bitstream Vera Sans"
xpos -435
ypos 52
}
end_group
push $Nec359400
Group {
name FreeformGamut3
label "Blackmagic Design\nBMDWide v4"
xpos 11495
ypos 444
addUserKnob {20 Primaries}
addUserKnob {26 inputPrimaries -STARTLINE T ""}
addUserKnob {41 white T FromMatrix.white}
addUserKnob {41 red T FromMatrix.red}
addUserKnob {41 green T FromMatrix.green}
addUserKnob {41 blue T FromMatrix.blue}
addUserKnob {26 ""}
addUserKnob {41 outputColorspace T ColorMatrix3.gamut}
addUserKnob {6 inverse -STARTLINE}
addUserKnob {26 ""}
addUserKnob {6 showPlot +STARTLINE}
addUserKnob {20 plotSettings n 1}
plotSettings 0
addUserKnob {7 plotScale R 0 2}
plotScale 0.5
addUserKnob {12 plotOffset}
plotOffset {409.6 409.6}
addUserKnob {20 endGroup n -1}
addUserKnob {20 Matrices}
addUserKnob {41 rgbToXyzMatrix T ColorMatrix1.matrix}
addUserKnob {26 ""}
addUserKnob {41 cat T ColorMatrix4.cat}
addUserKnob {26 ""}
addUserKnob {41 xyzToRgbMatrix T ColorMatrix2.matrix}
}
Constant {
inputs 0
format "1 1 0 0 1 1 1 1_pixel"
name Constant1
xpos -1301
ypos 69
}
ColorMatrix {
matrix {
{{red.x/red.y} {green.x/green.y} {blue.x/blue.y}}
{1 1 1}
{{(1-red.x-red.y)/red.y} {(1-green.x-green.y)/green.y} {(1-blue.x-blue.y)/blue.y}}
}
name FromMatrix
label FromParimaries
xpos -1301
ypos 167
addUserKnob {20 User}
addUserKnob {12 white}
white {0.3127 0.329}
addUserKnob {12 red}
red {0.7177 0.3171}
addUserKnob {12 green}
green {0.228 0.8616}
addUserKnob {12 blue}
blue {0.1006 -0.082}
addUserKnob {7 determinant}
determinant {{matrix.0*(matrix.4*matrix.8-matrix.7*matrix.5)+matrix.1*(matrix.5*matrix.6-matrix.8*matrix.3)+matrix.2*(matrix.3*matrix.7-matrix.6*matrix.4)}}
}
Reformat {
format "2048 2048 0 0 2048 2048 1 square_2k"
resize distort
filter Impulse
name Reformat1
xpos -1301
ypos 291
}
Shuffle {
red black
green black
blue black
alpha black
name Shuffle2
label "\[value in]-->\[value out]"
xpos -1301
ypos 331
}
Transform {
translate {{parent.plotOffset.x} {parent.plotOffset.y}}
scale {{parent.plotScale}}
black_outside false
name Transform1
xpos -1301
ypos 363
}
ColorWheel {
inputs 0
format "512 512 0 0 512 512 1 square_512"
centerSaturation 1
name ColorWheel4
xpos -554
ypos -58
}
ColorMatrix {
matrix {
{{FromMatrix.matrix.0*FromMatrixInverse.S.r} {FromMatrix.matrix.1*FromMatrixInverse.S.g} {FromMatrix.matrix.2*FromMatrixInverse.S.b}}
{{FromMatrix.matrix.3*FromMatrixInverse.S.r} {FromMatrix.matrix.4*FromMatrixInverse.S.g} {FromMatrix.matrix.5*FromMatrixInverse.S.b}}
{{FromMatrix.matrix.6*FromMatrixInverse.S.r} {FromMatrix.matrix.7*FromMatrixInverse.S.g} {FromMatrix.matrix.8*FromMatrixInverse.S.b}}
}
name ColorMatrix1
label Input_to_XYZ
xpos -554
ypos 53
addUserKnob {20 User}
addUserKnob {7 determinant}
determinant {{matrix.0*(matrix.4*matrix.8-matrix.7*matrix.5)+matrix.1*(matrix.5*matrix.6-matrix.8*matrix.3)+matrix.2*(matrix.3*matrix.7-matrix.6*matrix.4)}}
}
set Cf4b9cc00 [stack 0]
set Nf4b9cc00 [stack 0]
Colorspace {
colorspace_in CIE-XYZ
primary_in ACES
colorspace_out CIE-Yxy
name Colorspace4
xpos -434
ypos 109
}
push $Nf4b9cc00
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos -554
ypos 93
}
Multiply {
value {1 0 0 1}
name Multiply4
xpos -554
ypos 117
}
BlinkScript {
inputs 2
recompileCount 4
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise 4f09b488f640fe57a9b92d835cc81424078e447e427d9f43fb8d958e7333c795 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 4 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"bottom_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 4 \"padding\" 1 1 \"left_margin\" 1 1 \"bottom_margin\" 1 1 \"process_input\" 1 1 3 \"outsize\" Float 1 1 AAAAAA== \"offsetX\" Float 1 1 AAAAAA== \"offsetY\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n float bottom_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offsetX;\n float offsetY;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offsetX = left_margin;\n offsetY = bottom_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offsetX, xy.y * outsize + offsetY);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding {{1/parent.plotScale}}
plot_cie_xy_left_margin {{parent.plotOffset.x}}
plot_cie_xy_bottom_margin {{parent.plotOffset.y}}
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input
xpos -554
ypos 159
cached true
}
Dilate {
size 1
name Dilate1
xpos -554
ypos 232
}
set Nf4bc2f90 [stack 0]
push $Nf4bc2f90
ShuffleCopy {
inputs 2
alpha alpha2
name ShuffleCopy1
xpos -554
ypos 314
}
Group {
inputs 0
name PlanckianLocus
xpos -1030
ypos 256
addUserKnob {20 User}
addUserKnob {6 colorize +STARTLINE}
addUserKnob {41 value T Multiply1.value}
addUserKnob {26 temperature}
addUserKnob {7 start -STARTLINE R 1000 100000}
start 1000
addUserKnob {7 end R 1000 100000}
end 100000
}
Constant {
inputs 0
channels rgb
format "1620 2 0 0 1620 2 1 visible_spectrum_quarter nm"
name bg1
xpos 507
ypos -50
addUserKnob {20 User}
addUserKnob {7 wl}
wl {{clamp(frame+375,375,780)}}
}
set Nf4bd4df0 [stack 0]
Rectangle {
area {{"(log10(parent.start)-3)/2 * width"} 0 {"(log10(parent.end)-3)/2 * width"} {height}}
name Rectangle7
xpos 289
ypos 130
}
push $Nf4bd4df0
Ramp {
p0 {0 1}
p1 {1619 1}
name Ramp4
xpos 507
ypos 55
}
Multiply {
value {405 405 405 2}
name Multiply4
xpos 507
ypos 81
}
Add {
value {375 375 375 3}
name Add3
xpos 507
ypos 119
}
ColorLookup {
lut {master {}
red {curve x380 0.0014 x385 0.0022 0.0042 0.0076 0.0143 0.0232 0.0435 0.0776 0.1344 0.2148 0.2839 0.3285 0.3483 0.3481 0.3362 0.3187 0.2908 0.2511 0.1954 0.1421 0.0956 0.058 0.032 0.0147 0.0049 0.0024 0.0093 0.0291 0.0633 0.1096 0.1655 0.2257 0.2904 0.3597 0.4334 0.5121 0.5945 0.6784 0.7621 0.8425 0.9163 0.9786 1.0263 1.0567 1.0622 1.0456 1.0026 0.9384 0.8544 0.7514 0.6424 0.5419 0.4479 0.3608 0.2835 0.2187 0.1649 0.1212 0.0874 0.0636 0.0468 0.0329 0.0227 0.0158 0.0114 0.0081 0.0058 0.0041 0.0029 0.002 0.0014 0.001 0.0007 0.0005 0.0003 0.0002 0.0002 0.0001 0.0001 0.0001 0}
green {curve x380 0 x385 0.0001 0.0001 0.0002 0.0004 0.0006 0.0012 0.0022 0.004 0.0073 0.0116 0.0168 0.023 0.0298 0.038 0.048 0.06 0.0739 0.091 0.1126 0.139 0.1693 0.208 0.2586 0.323 0.4073 0.503 0.6082 0.71 0.7932 0.862 0.9149 0.954 0.9803 0.995 1 0.995 0.9786 0.952 0.9154 0.87 0.8163 0.757 0.6949 0.631 0.5668 0.503 0.4412 0.381 0.321 0.265 0.217 0.175 0.1382 0.107 0.0816 0.061 0.0446 0.032 0.0232 0.017 0.0119 0.0082 0.0057 0.0041 0.0029 0.0021 0.0015 0.001 0.0007 0.0005 0.0004 0.0002 0.0002 0.0001 0.0001 0.0001 0 0 0 0}
blue {curve x375 0 x380 0.0065 0.0105 0.0201 0.0362 0.0679 0.1102 0.2074 0.3713 0.6456 1.0391 1.3856 1.623 1.7471 1.7826 1.7721 1.7441 1.6692 1.5281 1.2876 1.0419 0.831 0.6162 0.4652 0.3533 0.272 0.2123 0.1582 0.1117 0.0782 0.0573 0.0422 0.0298 0.0203 0.0134 0.0087 0.0057 0.0039 0.0027 0.0021 0.0018 0.0017 0.0014 0.0011 0.001 0.0008 0.0006 0.0003 0.0002 0.0002 0.0001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
alpha {}}
name ColorLookup2
xpos 507
ypos 157
}
Expression {
expr0 r
expr1 g
expr2 b
expr3 pow(10,a)
name Expression1
xpos 507
ypos 181
}
BlinkScript {
ProgramGroup 1
KernelDescription "1 \"CCT2XYZ\" iterate pixelWise 1e5106c0628b69d1e3286f708ff894031c5f2cc6dcce2f5b6f5a0f9b492ad4d3 2 \"input\" Read Random \"dst\" Write Point 0"
kernelSource "// this kernel assumes the following in it's input:\n// an image with a width of 1620 pixels - representing 405 nm range in quarter-nm steps\n// RGB channel : CIE XYZ colour matching functions from 375nm to 780nm\n// Alpha channel : colour temperature in kelvin\n\nkernel CCT2XYZ : public ImageComputationKernel\n\{\n\tImage input; //the input image\n\tImage dst; //the output image\n\n\t//The kernel function is run at every pixel to produce the output.\n\tvoid process(int2 pos)\n\t\{\n \tSampleType(input) in = input(pos.x, pos.y);\n \tSampleType(input) cmf;\n \tfloat kelvin = in.w;\n \tint cmfY = 1;\n\t\tfloat3 ret = float3(0.f);\n\n\t\tfloat C1 = 2.0 * 3.141592653589793 * 6.626176 * 2.99792458 * 2.99792458;\n\t\tfloat C2 = (6.626176 * 2.99792458) / 1.380662;\n\n\t\t\n\t\tfor(int cmfX = 0; cmfX < input.bounds.width(); cmfX += 1)\n\t\t\{\n\t\t\tfloat nm = float(cmfX) / 4.f + 375.f;\n\t\t\tfloat dWavelengthM = nm * 1.0e-3; // * 1.0e-6\n\t\t\tfloat dWavelengthM5 = pow(dWavelengthM, 5.f); // * 1.0e-30\n\t\t\tfloat expArg = C2 / (kelvin * dWavelengthM * 1.0e-3);\n\t\t\tfloat blackbody = C1 / (dWavelengthM5 * 1.0e-12 * ( exp(expArg) - 1.0)); // -12 = -30 - (-18)\n\n\t\t\tcmf = input(cmfX, cmfY);\n\n\t\t\tret.x += (blackbody * cmf.x);\n\t\t\tret.y += (blackbody * cmf.y);\n\t\t\tret.z += (blackbody * cmf.z);\n\n\t\t\}\n\n\n\n\n\n\n\t\tret.x /= ret.y;\n\t\tret.z /= ret.y;\n\t\tret.y = 1.f;\n\n\t\tSampleType(input) out = in;\n\n\t\tout.x = ret.x;\n\t\tout.y = ret.y;\n\t\tout.z = ret.z;\n\n\t\tdst() = out;\n\t\}\n\};\n\n"
rebuild ""
rebuild_finalise ""
name BlinkScript1
selected true
xpos 507
ypos 219
}
Merge2 {
inputs 2
operation multiply
name Merge22
xpos 507
ypos 267
}
set Nf4c073c0 [stack 0]
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
primary_out "CIE (1931)"
name Colorspace15
xpos 347
ypos 419
}
push $Nf4c073c0
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos 640
ypos 378
}
Multiply {
value {0 0 0 1}
name Multiply1
xpos 640
ypos 404
}
push $Nf4c073c0
ColorMatrix {
matrix {
{1.04981102 0 -9.748e-05}
{-0.49590302 1.37331305 0.09824004}
{0 0 0.99125202}
}
name ColorMatrix3
xpos 507
ypos 362
}
Expression {
temp_name0 max
temp_expr0 max(r,g,b)
expr0 "r / max"
expr1 "g / max"
expr2 "b / max"
name Expression2
xpos 507
ypos 386
}
Switch {
inputs 2
which {{parent.colorize}}
name Switch1
xpos 569
ypos 462
}
BlinkScript {
inputs 2
recompileCount 4
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise 4f09b488f640fe57a9b92d835cc81424078e447e427d9f43fb8d958e7333c795 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 4 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"bottom_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 4 \"padding\" 1 1 \"left_margin\" 1 1 \"bottom_margin\" 1 1 \"process_input\" 1 1 3 \"outsize\" Float 1 1 AAAAAA== \"offsetX\" Float 1 1 AAAAAA== \"offsetY\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n float bottom_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offsetX;\n float offsetY;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offsetX = left_margin;\n offsetY = bottom_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offsetX, xy.y * outsize + offsetY);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding {{1/parent.parent.plotScale}}
plot_cie_xy_left_margin {{parent.parent.plotOffset.x}}
plot_cie_xy_bottom_margin {{parent.parent.plotOffset.y}}
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input1
xpos 569
ypos 578
cached true
}
Dilate {
size 1
name Dilate1
xpos 569
ypos 616
}
Output {
name Output1
xpos 569
ypos 690
}
end_group
push 0
Group {
inputs 0
name SpectralLocus2
xpos -914
ypos 254
addUserKnob {20 User}
addUserKnob {6 colorize +STARTLINE}
addUserKnob {41 value T Multiply1.value}
addUserKnob {26 wavelength}
addUserKnob {7 start -STARTLINE R 375 780}
start 375
addUserKnob {7 end R 375 780}
end 780
addUserKnob {6 purples l "show \"line of purples\"" +STARTLINE}
addUserKnob {41 plotColorSpace T Switch3.which}
}
Constant {
inputs 0
channels rgb
format "16384 2 0 0 16384 2 1 14bit_lut"
name bg1
xpos 507
ypos -17
addUserKnob {20 User}
addUserKnob {7 wl}
wl {{clamp(frame+375,375,780)}}
}
set Nf4c4fcb0 [stack 0]
Ramp {
p0 {0 1}
p1 {16383 1}
name Ramp4
xpos 507
ypos 55
}
set Nf4c545d0 [stack 0]
Dot {
name Dot8
note_font "Bitstream Vera Sans"
xpos 681
ypos 58
}
Multiply {
value {-0.001319684205 -0.565 -0.26 1}
name Multiply2
note_font "Bitstream Vera Sans"
xpos 647
ypos 122
}
Add {
value {0.001419684151 0.737 0.2637 1}
name Add7
note_font "Bitstream Vera Sans"
xpos 647
ypos 158
}
Shuffle {
alpha white
name Shuffle22
label "\[value in]-->\[value out]"
note_font "Bitstream Vera Sans"
xpos 647
ypos 207
}
Transform {
translate {13300 0}
scale {0.1883 1}
center {0 1}
filter Impulse
name Transform1
note_font "Bitstream Vera Sans"
xpos 647
ypos 243
}
Dot {
name Dot9
note_font "Bitstream Vera Sans"
xpos 681
ypos 376
}
push $Nf4c4fcb0
Rectangle {
area {{width*((parent.start-375)/405)} 0 {width*((parent.end-375)/405)} 2}
name Rectangle7
xpos 289
ypos 130
}
push $Nf4c545d0
Multiply {
value 405
name Multiply4
xpos 507
ypos 81
}
Add {
value 375
name Add3
xpos 507
ypos 119
}
ColorLookup {
lut {master {}
red {curve x380 0.0014 x385 0.0022 0.0042 0.0076 0.0143 0.0232 0.0435 0.0776 0.1344 0.2148 0.2839 0.3285 0.3483 0.3481 0.3362 0.3187 0.2908 0.2511 0.1954 0.1421 0.0956 0.058 0.032 0.0147 0.0049 0.0024 0.0093 0.0291 0.0633 0.1096 0.1655 0.2257 0.2904 0.3597 0.4334 0.5121 0.5945 0.6784 0.7621 0.8425 0.9163 0.9786 1.0263 1.0567 1.0622 1.0456 1.0026 0.9384 0.8544 0.7514 0.6424 0.5419 0.4479 0.3608 0.2835 0.2187 0.1649 0.1212 0.0874 0.0636 0.0468 0.0329 0.0227 0.0158 0.0114 0.0081 0.0058 0.0041 0.0029 0.002 0.0014 0.001 0.0007 0.0005 0.0003 0.0002 0.0002 0.0001 0.0001 0.0001 0}
green {curve x380 0 x385 0.0001 0.0001 0.0002 0.0004 0.0006 0.0012 0.0022 0.004 0.0073 0.0116 0.0168 0.023 0.0298 0.038 0.048 0.06 0.0739 0.091 0.1126 0.139 0.1693 0.208 0.2586 0.323 0.4073 0.503 0.6082 0.71 0.7932 0.862 0.9149 0.954 0.9803 0.995 1 0.995 0.9786 0.952 0.9154 0.87 0.8163 0.757 0.6949 0.631 0.5668 0.503 0.4412 0.381 0.321 0.265 0.217 0.175 0.1382 0.107 0.0816 0.061 0.0446 0.032 0.0232 0.017 0.0119 0.0082 0.0057 0.0041 0.0029 0.0021 0.0015 0.001 0.0007 0.0005 0.0004 0.0002 0.0002 0.0001 0.0001 0.0001 0 0 0 0}
blue {curve x375 0 x380 0.0065 0.0105 0.0201 0.0362 0.0679 0.1102 0.2074 0.3713 0.6456 1.0391 1.3856 1.623 1.7471 1.7826 1.7721 1.7441 1.6692 1.5281 1.2876 1.0419 0.831 0.6162 0.4652 0.3533 0.272 0.2123 0.1582 0.1117 0.0782 0.0573 0.0422 0.0298 0.0203 0.0134 0.0087 0.0057 0.0039 0.0027 0.0021 0.0018 0.0017 0.0014 0.0011 0.001 0.0008 0.0006 0.0003 0.0002 0.0002 0.0001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
alpha {}}
name ColorLookup2
xpos 507
ypos 157
}
Merge2 {
inputs 2
operation multiply
name Merge22
xpos 507
ypos 226
}
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
name Colorspace1
note_font "Bitstream Vera Sans"
xpos 507
ypos 297
}
Crop {
box {500 0 13800 2}
name Crop13
xpos 507
ypos 321
}
Transform {
translate {-500 0}
center {8192 1}
name Transform3
note_font "Bitstream Vera Sans"
xpos 507
ypos 349
}
Merge2 {
inputs 2
name Merge1
note_font "Bitstream Vera Sans"
xpos 507
ypos 373
disable {{!parent.purples}}
}
Expression {
expr0 "r < 0 ? r * sole.r + lift.r : r < lift.r * 2 ? pow( (lift.r *2 - r) / (lift.r * 2), 2) * lift.r + r : r"
expr1 "g < 0 ? g * sole.g + lift.g : g < lift.g * 2 ? pow( (lift.g *2 - g) / (lift.g * 2), 2) * lift.g + g : g"
expr2 "b < 0 ? b * sole.b + lift.b : b < lift.b * 2 ? pow( (lift.b *2 - b) / (lift.b * 2), 2) * lift.b + b : b"
name ToeExpr1
xpos 507
ypos 397
addUserKnob {20 User}
addUserKnob {18 lift}
lift {0.15 0 0}
addUserKnob {6 lift_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
lift_panelDropped true
addUserKnob {6 lift_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 sole R 0 0.1}
sole {0 0 0}
addUserKnob {6 sole_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
}
Colorspace {
colorspace_in CIE-Yxy
colorspace_out CIE-XYZ
name Colorspace2
note_font "Bitstream Vera Sans"
xpos 507
ypos 421
}
set Nf4cd3f80 [stack 0]
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
primary_out "CIE (1931)"
name Colorspace15
xpos 347
ypos 612
}
push $Nf4cd3f80
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos 640
ypos 571
}
Multiply {
value {1 1 1 1}
name Multiply1
xpos 640
ypos 597
}
push $Nf4cd3f80
ColorMatrix {
matrix {
{1.04981102 0 -9.748e-05}
{-0.49590302 1.37331305 0.09824004}
{0 0 0.99125202}
}
name ColorMatrix3
xpos 507
ypos 572
}
Shuffle {
alpha white
name Shuffle2
label "\[value in]-->\[value out]"
note_font "Bitstream Vera Sans"
xpos 507
ypos 596
}
Switch {
inputs 2
which {{parent.colorize}}
name Switch1
xpos 569
ypos 655
}
BlinkScript {
inputs 2
recompileCount 4
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise 4f09b488f640fe57a9b92d835cc81424078e447e427d9f43fb8d958e7333c795 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 4 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"bottom_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 4 \"padding\" 1 1 \"left_margin\" 1 1 \"bottom_margin\" 1 1 \"process_input\" 1 1 3 \"outsize\" Float 1 1 AAAAAA== \"offsetX\" Float 1 1 AAAAAA== \"offsetY\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n float bottom_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offsetX;\n float offsetY;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offsetX = left_margin;\n offsetY = bottom_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offsetX, xy.y * outsize + offsetY);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding {{1/parent.parent.plotScale}}
plot_cie_xy_left_margin {{parent.parent.plotOffset.x}}
plot_cie_xy_bottom_margin {{parent.parent.plotOffset.y}}
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input1
selected true
xpos 569
ypos 737
cached true
}
Dilate {
size 1
name Dilate1
xpos 569
ypos 769
}
Output {
name Output1
xpos 569
ypos 875
}
end_group
Group {
inputs 0
name SpectralLocusFill
xpos -806
ypos 230
addUserKnob {20 User}
addUserKnob {41 value T Multiply1.value}
addUserKnob {6 colorize +STARTLINE}
}
Constant {
inputs 0
channels rgb
format "16384 2 0 0 16384 2 1 14bit_lut"
name bg1
xpos 510
ypos -223
addUserKnob {20 User}
addUserKnob {7 wl}
wl {{clamp(frame+375,375,780)}}
}
Ramp {
p0 {0 1}
p1 {16383 1}
name Ramp4
xpos 510
ypos -152
}
Multiply {
value 405
name Multiply4
xpos 510
ypos -134
}
Add {
value 375
name Add3
xpos 510
ypos -86
}
ColorLookup {
lut {master {}
red {curve x380 0.0014 x385 0.0022 0.0042 0.0076 0.0143 0.0232 0.0435 0.0776 0.1344 0.2148 0.2839 0.3285 0.3483 0.3481 0.3362 0.3187 0.2908 0.2511 0.1954 0.1421 0.0956 0.058 0.032 0.0147 0.0049 0.0024 0.0093 0.0291 0.0633 0.1096 0.1655 0.2257 0.2904 0.3597 0.4334 0.5121 0.5945 0.6784 0.7621 0.8425 0.9163 0.9786 1.0263 1.0567 1.0622 1.0456 1.0026 0.9384 0.8544 0.7514 0.6424 0.5419 0.4479 0.3608 0.2835 0.2187 0.1649 0.1212 0.0874 0.0636 0.0468 0.0329 0.0227 0.0158 0.0114 0.0081 0.0058 0.0041 0.0029 0.002 0.0014 0.001 0.0007 0.0005 0.0003 0.0002 0.0002 0.0001 0.0001 0.0001 0}
green {curve x380 0 x385 0.0001 0.0001 0.0002 0.0004 0.0006 0.0012 0.0022 0.004 0.0073 0.0116 0.0168 0.023 0.0298 0.038 0.048 0.06 0.0739 0.091 0.1126 0.139 0.1693 0.208 0.2586 0.323 0.4073 0.503 0.6082 0.71 0.7932 0.862 0.9149 0.954 0.9803 0.995 1 0.995 0.9786 0.952 0.9154 0.87 0.8163 0.757 0.6949 0.631 0.5668 0.503 0.4412 0.381 0.321 0.265 0.217 0.175 0.1382 0.107 0.0816 0.061 0.0446 0.032 0.0232 0.017 0.0119 0.0082 0.0057 0.0041 0.0029 0.0021 0.0015 0.001 0.0007 0.0005 0.0004 0.0002 0.0002 0.0001 0.0001 0.0001 0 0 0 0}
blue {curve x375 0 x380 0.0065 0.0105 0.0201 0.0362 0.0679 0.1102 0.2074 0.3713 0.6456 1.0391 1.3856 1.623 1.7471 1.7826 1.7721 1.7441 1.6692 1.5281 1.2876 1.0419 0.831 0.6162 0.4652 0.3533 0.272 0.2123 0.1582 0.1117 0.0782 0.0573 0.0422 0.0298 0.0203 0.0134 0.0087 0.0057 0.0039 0.0027 0.0021 0.0018 0.0017 0.0014 0.0011 0.001 0.0008 0.0006 0.0003 0.0002 0.0002 0.0001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
alpha {}}
name ColorLookup2
xpos 510
ypos -56
}
Crop {
box {500 0 13800 2}
reformat true
crop false
name Crop13
xpos 510
ypos -5
}
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
name Colorspace9
xpos 510
ypos 84
}
Reformat {
type "to box"
format "2048 2048 0 0 2048 2048 1 square_2k"
box_width 2048
box_height 240
box_fixed true
resize distort
filter Impulse
name Reformat5
xpos 510
ypos 162
}
set Nf3e41e70 [stack 0]
Crop {
box {0 0 {input.width/2.5} {height}}
reformat true
crop false
name Crop4
xpos 429
ypos 269
}
set Nf3e49880 [stack 0]
Shuffle {
red black
green black
blue black
alpha black
name Shuffle7
label "\[value in]-->\[value out]"
xpos 359
ypos 422
}
Ramp {
p0 {{width/2} 0}
p1 {{width/2} {height-1}}
name Ramp8
xpos 359
ypos 460
}
push $Nf3e49880
push $Nf3e41e70
Crop {
box {{Crop4.box.r} 0 {width} {height}}
reformat true
crop false
name Crop5
xpos 578
ypos 269
}
Reformat {
type "to box"
box_width {{Crop4.box.r-Crop4.box.x}}
box_height {{Crop4.box.t-Crop4.box.y}}
box_fixed true
scale {1 0.5}
resize distort
flop true
name Reformat7
xpos 578
ypos 306
}
Keymix {
inputs 3
name Keymix5
xpos 522
ypos 525
}
Reformat {
type scale
scale 2
name Reformat1
xpos 522
ypos 557
}
set Nf3e6eb80 [stack 0]
push $Nf3e6eb80
Colorspace {
colorspace_in CIE-Yxy
colorspace_out CIE-XYZ
name Colorspace1
xpos 643
ypos 656
}
set Nf3e76590 [stack 0]
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos 643
ypos 762
}
Multiply {
value 0.5
name Multiply1
xpos 643
ypos 804
}
push $Nf3e76590
ColorMatrix {
matrix {
{1.04981102 0 -9.748e-05}
{-0.49590302 1.37331305 0.09824004}
{0 0 0.99125202}
}
name ColorMatrix3
xpos 767
ypos 781
}
Switch {
inputs 2
which {{parent.colorize}}
name Switch1
xpos 643
ypos 858
}
Multiply {
value {{parent.value.r} {parent.value.g} {parent.value.b} {parent.value.a}}
name Multiply2
xpos 643
ypos 902
}
BlinkScript {
inputs 2
recompileCount 4
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise 4f09b488f640fe57a9b92d835cc81424078e447e427d9f43fb8d958e7333c795 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 4 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"bottom_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 4 \"padding\" 1 1 \"left_margin\" 1 1 \"bottom_margin\" 1 1 \"process_input\" 1 1 3 \"outsize\" Float 1 1 AAAAAA== \"offsetX\" Float 1 1 AAAAAA== \"offsetY\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n float bottom_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offsetX;\n float offsetY;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offsetX = left_margin;\n offsetY = bottom_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offsetX, xy.y * outsize + offsetY);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding {{1/parent.parent.plotScale}}
plot_cie_xy_left_margin {{parent.parent.plotOffset.x}}
plot_cie_xy_bottom_margin {{parent.parent.plotOffset.y}}
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input1
selected true
xpos 522
ypos 986
cached true
}
Dilate {
size 2.5
name Dilate1
xpos 522
ypos 1018
}
Dilate {
size -2.5
name Dilate2
xpos 522
ypos 1050
}
Output {
name Output1
xpos 522
ypos 1117
}
end_group
Multiply {
value 0.18
name Multiply1
xpos -806
ypos 254
}
Merge2 {
inputs 4+1
name Merge2
xpos -875
ypos 314
}
Merge2 {
inputs 2
operation plus
name Merge1
xpos -875
ypos 363
}
Input {
inputs 0
name Input1
xpos 122
ypos -140
}
Dot {
name Dot2
xpos 156
ypos 11
}
set Nf3ec9a60 [stack 0]
Dot {
name Dot4
xpos 266
ypos 11
}
ColorMatrix {
matrix {
{{parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix}}
{{parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix}}
{{parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix}}
}
name ColorMatrix5
label "output to XYZ"
xpos 232
ypos 84
}
set Nf3ece620 [stack 0]
ColorMatrix {
matrix {
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
}
name ColorMatrix8
label "CAT Matrix\nforward"
xpos 350
ypos 79
}
Multiply {
value {{whiteInLMS.r/whiteOutLMS.r} {whiteInLMS.g/whiteOutLMS.g} {whiteInLMS.b/whiteOutLMS.b} 1}
name Multiply3
label "Scale White"
xpos 350
ypos 121
addUserKnob {20 User}
addUserKnob {18 whiteInXYZ}
whiteInXYZ {{ColorMatrix1.matrix.0+ColorMatrix1.matrix.1+ColorMatrix1.matrix.2} {ColorMatrix1.matrix.3+ColorMatrix1.matrix.4+ColorMatrix1.matrix.5} {ColorMatrix1.matrix.6+ColorMatrix1.matrix.7+ColorMatrix1.matrix.8}}
addUserKnob {6 whiteInXYZ_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteInLMS}
whiteInLMS {{whiteInXYZ.r*ColorMatrix4.matrix.0+whiteInXYZ.g*ColorMatrix4.matrix.1+whiteInXYZ.b*ColorMatrix4.matrix.2} {whiteInXYZ.r*ColorMatrix4.matrix.3+whiteInXYZ.g*ColorMatrix4.matrix.4+whiteInXYZ.b*ColorMatrix4.matrix.5} {whiteInXYZ.r*ColorMatrix4.matrix.6+whiteInXYZ.g*ColorMatrix4.matrix.7+whiteInXYZ.b*ColorMatrix4.matrix.8}}
addUserKnob {6 whiteInLMS_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteOutXYZ}
whiteOutXYZ {{ColorMatrix3.matrix.0+ColorMatrix3.matrix.1+ColorMatrix3.matrix.2} {ColorMatrix3.matrix.3+ColorMatrix3.matrix.4+ColorMatrix3.matrix.5} {ColorMatrix3.matrix.6+ColorMatrix3.matrix.7+ColorMatrix3.matrix.8}}
addUserKnob {6 whiteOutXYZ_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteOutLMS}
whiteOutLMS {{whiteOutXYZ.r*ColorMatrix4.matrix.0+whiteOutXYZ.g*ColorMatrix4.matrix.1+whiteOutXYZ.b*ColorMatrix4.matrix.2} {whiteOutXYZ.r*ColorMatrix4.matrix.3+whiteOutXYZ.g*ColorMatrix4.matrix.4+whiteOutXYZ.b*ColorMatrix4.matrix.5} {whiteOutXYZ.r*ColorMatrix4.matrix.6+whiteOutXYZ.g*ColorMatrix4.matrix.7+whiteOutXYZ.b*ColorMatrix4.matrix.8}}
addUserKnob {6 whiteOutLMS_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOut_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteIn_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
}
ColorMatrix {
matrix {
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
}
invert true
name ColorMatrix9
label "CAT Matrix\ninverse"
xpos 350
ypos 163
}
push $Nf3ece620
Switch {
inputs 2
which {{"ColorMatrix4.cat > 0"}}
name Switch4
xpos 232
ypos 172
}
ColorMatrix {
matrix {
{{FromMatrix.matrix.0*FromMatrixInverse.S.r} {FromMatrix.matrix.1*FromMatrixInverse.S.g} {FromMatrix.matrix.2*FromMatrixInverse.S.b}}
{{FromMatrix.matrix.3*FromMatrixInverse.S.r} {FromMatrix.matrix.4*FromMatrixInverse.S.g} {FromMatrix.matrix.5*FromMatrixInverse.S.b}}
{{FromMatrix.matrix.6*FromMatrixInverse.S.r} {FromMatrix.matrix.7*FromMatrixInverse.S.g} {FromMatrix.matrix.8*FromMatrixInverse.S.b}}
}
invert true
name ColorMatrix6
label "XYZ to Input"
xpos 232
ypos 213
addUserKnob {20 User}
addUserKnob {7 determinant}
determinant {{matrix.0*(matrix.4*matrix.8-matrix.7*matrix.5)+matrix.1*(matrix.5*matrix.6-matrix.8*matrix.3)+matrix.2*(matrix.3*matrix.7-matrix.6*matrix.4)}}
}
Dot {
name Dot5
xpos 266
ypos 272
}
push $Nf3ec9a60
Dot {
name Dot1
xpos 46
ypos 11
}
clone $Cf4b9cc00 {
xpos 12
ypos 74
selected false
}
set Nf4e01b80 [stack 0]
ColorMatrix {
matrix {
{{"\[python (1, 1, 0.8951, 0.7328)\\\[\[numvalue cat]\\]]"} {"\[python (0, 0, 0.2664, 0.4296)\\\[\[numvalue cat]\\]]"} {"\[python (0, 0, -0.1614, -0.1624)\\\[\[numvalue cat]\\]]"}}
{{"\[python (0, 0, -0.7502, -0.7036)\\\[\[numvalue cat]\\]]"} {"\[python (1, 1, 1.7135, 1.6975)\\\[\[numvalue cat]\\]]"} {"\[python (0, 0, 0.0367, 0.0061)\\\[\[numvalue cat]\\]]"}}
{{"\[python (0, 0, 0.0389, 0.003)\\\[\[numvalue cat]\\]]"} {"\[python (0, 0, -0.0685, 0.0136)\\\[\[numvalue cat]\\]]"} {"\[python (1, 1, 1.0296, 0.9834)\\\[\[numvalue cat]\\]]"}}
}
name ColorMatrix4
label "CAT Matrix\n\[value cat]\n\[python ('forward', 'inverse')\\\[\[numvalue invert]\\]]"
xpos -113
ypos 64
addUserKnob {20 User}
addUserKnob {4 cat M {None "XYZ Scaling" Bradford CAT02}}
cat Bradford
}
Multiply {
value {{whiteOutLMS.r/whiteInLMS.r} {whiteOutLMS.g/whiteInLMS.g} {whiteOutLMS.b/whiteInLMS.b} 1}
name Multiply2
label "Scale White"
xpos -113
ypos 116
addUserKnob {20 User}
addUserKnob {18 whiteInXYZ}
whiteInXYZ {{ColorMatrix1.matrix.0+ColorMatrix1.matrix.1+ColorMatrix1.matrix.2} {ColorMatrix1.matrix.3+ColorMatrix1.matrix.4+ColorMatrix1.matrix.5} {ColorMatrix1.matrix.6+ColorMatrix1.matrix.7+ColorMatrix1.matrix.8}}
addUserKnob {6 whiteInXYZ_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteInLMS}
whiteInLMS {{whiteInXYZ.r*ColorMatrix4.matrix.0+whiteInXYZ.g*ColorMatrix4.matrix.1+whiteInXYZ.b*ColorMatrix4.matrix.2} {whiteInXYZ.r*ColorMatrix4.matrix.3+whiteInXYZ.g*ColorMatrix4.matrix.4+whiteInXYZ.b*ColorMatrix4.matrix.5} {whiteInXYZ.r*ColorMatrix4.matrix.6+whiteInXYZ.g*ColorMatrix4.matrix.7+whiteInXYZ.b*ColorMatrix4.matrix.8}}
addUserKnob {6 whiteInLMS_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteOutXYZ}
whiteOutXYZ {{ColorMatrix3.matrix.0+ColorMatrix3.matrix.1+ColorMatrix3.matrix.2} {ColorMatrix3.matrix.3+ColorMatrix3.matrix.4+ColorMatrix3.matrix.5} {ColorMatrix3.matrix.6+ColorMatrix3.matrix.7+ColorMatrix3.matrix.8}}
addUserKnob {6 whiteOutXYZ_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteOutLMS}
whiteOutLMS {{whiteOutXYZ.r*ColorMatrix4.matrix.0+whiteOutXYZ.g*ColorMatrix4.matrix.1+whiteOutXYZ.b*ColorMatrix4.matrix.2} {whiteOutXYZ.r*ColorMatrix4.matrix.3+whiteOutXYZ.g*ColorMatrix4.matrix.4+whiteOutXYZ.b*ColorMatrix4.matrix.5} {whiteOutXYZ.r*ColorMatrix4.matrix.6+whiteOutXYZ.g*ColorMatrix4.matrix.7+whiteOutXYZ.b*ColorMatrix4.matrix.8}}
addUserKnob {6 whiteOutLMS_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOut_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteIn_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
}
ColorMatrix {
matrix {
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
}
invert true
name ColorMatrix7
label "CAT Matrix\ninverse"
xpos -113
ypos 158
}
push $Nf4e01b80
Switch {
inputs 2
which {{"ColorMatrix4.cat > 0"}}
name Switch2
xpos 12
ypos 167
}
ColorMatrix {
matrix {
{{"\[python (0.9525523959, 0.6624541811, 0.4123907993, 0.6369580483, 0.4865709486, 0.6380076193, 0.4581609159, 0.4878301118, 0.4516946649, 0.5070147865, 0.4462154077, 0.7352752459, 0.7064827132, 0.7064827132, 0.5990839208, 0.7976672348, 1.0000000000, 1.48804061)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.0000000000, 0.1340042065, 0.3575843394, 0.1446169036, 0.2656676932, 0.2147038563, 0.3832048061, 0.3432736678, 0.3178467119, 0.3587783652, 0.3157557129, 0.0686094106, 0.1288010498, 0.1288010498, 0.2489255161, 0.1351922306, 0.0000000000, -0.23423647)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.0000936786, 0.1561876870, 0.1804807884, 0.1688809752, 0.1982172852, 0.0977444514, 0.1112803526, 0.1215422950, 0.1831046977, 0.0868529229, 0.1906749540, 0.1465712705, 0.1151721641, 0.1151721641, 0.1024464902, 0.0313525290, 0.0000000000, -0.3011580651)\\\[\[numvalue gamut]\\]]\n"}}
{{"\[python (0.3439664498, 0.2722287168, 0.2126390059, 0.2627002120, 0.2289745641, 0.2919537790, 0.1694420971, 0.2289038124, 0.2119478695, 0.2207240223, 0.1942557952, 0.2866940995, 0.2709796708, 0.2709796708, 0.2150758201, 0.2880374539, 0.0000000000, 0.2501373809)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.7281660966, 0.6740817658, 0.7151686788, 0.6779980715, 0.6917385218, 0.8238410415, 0.8648282025, 0.7808598244, 0.7230197720, 0.8391880546, 0.7385568692, 0.8429791340, 0.7866064112, 0.7866064112, 0.8850685017, 0.7118768834, 1.0000000000, 1.210452347)\\\[\[numvalue gamut]\\]]\n"} {"\[python (-0.0721325464, 0.0536895174, 0.0721923154, 0.0593017165, 0.0792869141, -0.1157948205, -0.0342702996, -0.0097636368, 0.0650323585, -0.0599120769, 0.0671873356, -0.1296732335, -0.0575860820, -0.0575860820, -0.1001443219, 0.0000856626, 0.0000000000, -0.4605897283)\\\[\[numvalue gamut]\\]]\n"}}
{{"\[python (0.0000000000, -0.0055746495, 0.0193308187, 0.0000000000, 0.0000000000, 0.0027982790, -0.1061849690, -0.0210075899, -0.0194509094, -0.0544519405, -0.0479226710, -0.0796808569, -0.0096778454, -0.0096778454, -0.0320658495, 0.0000000000, 0.0000000000, -0.4416591448)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.0000000000, 0.0040607335, 0.1191947798, 0.0280726930, 0.0451133819, -0.0670342357, 0.0255435258, 0.0178269864, 0.0165064159, -0.0003228254, -0.0002844886, -0.3473432170, 0.0046000375, 0.0046000375, -0.0276583907, 0.0000000000, 0.0000000000, -0.2480497808)\\\[\[numvalue gamut]\\]]\n"} {"\[python (1.0088251844, 1.0103391003, 0.9505321522, 1.0609850577, 1.0439443689, 1.1532937074, 1.0894666276, 1.0120057879, 1.0117696778, 1.0635999502, 1.0570323440, 1.5160818246, 1.0941355587, 1.0941355587, 1.1487819910, 0.8251882845, 1.0000000000, 1.69853411)\\\[\[numvalue gamut]\\]]\n"}}
}
invert true
name ColorMatrix3
label "XYZ to output"
note_font "Bitstream Vera Sans"
xpos 12
ypos 210
addUserKnob {20 User}
addUserKnob {4 gamut M {ACES ACEScg "Rec709 / sRGB" Rec2020 P3 AlexaWideGamut REDColor2 REDColor3 REDColor4 DRAGONcolor DRAGONcolor2 REDWideGamutRGB SGamut SGamut3 SGamut3.Cine ProPhoto "CIE XYZ" "Huge Gamut AP0 x 2" ""}}
gamut ACEScg
}
Dot {
name Dot3
xpos 46
ypos 272
}
Switch {
inputs 2
which {{parent.inverse}}
name Switch3
xpos 126
ypos 269
}
Switch {
inputs 2
which {{parent.showPlot}}
name Switch1
xpos 126
ypos 363
}
Output {
name Output1
xpos 126
ypos 434
}
ColorMatrix {
inputs 0
matrix {
{{(FromMatrix.matrix.4*FromMatrix.matrix.8-FromMatrix.matrix.7*FromMatrix.matrix.5)/FromMatrix.determinant} {(FromMatrix.matrix.7*FromMatrix.matrix.2-FromMatrix.matrix.1*FromMatrix.matrix.8)/FromMatrix.determinant} {(FromMatrix.matrix.1*FromMatrix.matrix.5-FromMatrix.matrix.4*FromMatrix.matrix.2)/FromMatrix.determinant}}
{{(FromMatrix.matrix.5*FromMatrix.matrix.6-FromMatrix.matrix.8*FromMatrix.matrix.3)/FromMatrix.determinant} {(FromMatrix.matrix.8*FromMatrix.matrix.0-FromMatrix.matrix.2*FromMatrix.matrix.6)/FromMatrix.determinant} {(FromMatrix.matrix.2*FromMatrix.matrix.3-FromMatrix.matrix.5*FromMatrix.matrix.0)/FromMatrix.determinant}}
{{(FromMatrix.matrix.3*FromMatrix.matrix.7-FromMatrix.matrix.6*FromMatrix.matrix.4)/FromMatrix.determinant} {(FromMatrix.matrix.6*FromMatrix.matrix.1-FromMatrix.matrix.0*FromMatrix.matrix.7)/FromMatrix.determinant} {(FromMatrix.matrix.0*FromMatrix.matrix.4-FromMatrix.matrix.3*FromMatrix.matrix.1)/FromMatrix.determinant}}
}
name FromMatrixInverse
label FromParimaries-1
xpos -1169
ypos 165
addUserKnob {20 User}
addUserKnob {13 white}
white {{FromMatrix.white.x/FromMatrix.white.y} 1 {(1-FromMatrix.white.x-FromMatrix.white.y)/FromMatrix.white.y}}
addUserKnob {18 S}
S {{matrix.0*white.x+matrix.1*white.y+matrix.2*white.z} {matrix.3*white.x+matrix.4*white.y+matrix.5*white.z} {matrix.6*white.x+matrix.7*white.y+matrix.8*white.z}}
addUserKnob {6 S_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
}
ColorMatrix {
inputs 0
matrix {
{{(ColorMatrix1.matrix.4*ColorMatrix1.matrix.8-ColorMatrix1.matrix.7*ColorMatrix1.matrix.5)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.7*ColorMatrix1.matrix.2-ColorMatrix1.matrix.1*ColorMatrix1.matrix.8)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.1*ColorMatrix1.matrix.5-ColorMatrix1.matrix.4*ColorMatrix1.matrix.2)/ColorMatrix1.determinant}}
{{(ColorMatrix1.matrix.5*ColorMatrix1.matrix.6-ColorMatrix1.matrix.8*ColorMatrix1.matrix.3)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.8*ColorMatrix1.matrix.0-ColorMatrix1.matrix.2*ColorMatrix1.matrix.6)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.2*ColorMatrix1.matrix.3-ColorMatrix1.matrix.5*ColorMatrix1.matrix.0)/ColorMatrix1.determinant}}
{{(ColorMatrix1.matrix.3*ColorMatrix1.matrix.7-ColorMatrix1.matrix.6*ColorMatrix1.matrix.4)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.6*ColorMatrix1.matrix.1-ColorMatrix1.matrix.0*ColorMatrix1.matrix.7)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.0*ColorMatrix1.matrix.4-ColorMatrix1.matrix.3*ColorMatrix1.matrix.1)/ColorMatrix1.determinant}}
}
name ColorMatrix2
label XYZ_to_Input
note_font "Bitstream Vera Sans"
xpos -435
ypos 52
}
end_group
push $Nec359400
Group {
name FreeformGamut1
label "Sony\nVenice SGamut3"
xpos 11380
ypos 444
addUserKnob {20 Primaries}
addUserKnob {26 inputPrimaries -STARTLINE T ""}
addUserKnob {41 white T FromMatrix.white}
addUserKnob {41 red T FromMatrix.red}
addUserKnob {41 green T FromMatrix.green}
addUserKnob {41 blue T FromMatrix.blue}
addUserKnob {26 ""}
addUserKnob {41 outputColorspace T ColorMatrix3.gamut}
addUserKnob {6 inverse -STARTLINE}
addUserKnob {26 ""}
addUserKnob {6 showPlot +STARTLINE}
addUserKnob {20 plotSettings n 1}
plotSettings 0
addUserKnob {7 plotScale R 0 2}
plotScale 0.5
addUserKnob {12 plotOffset}
plotOffset {409.6 409.6}
addUserKnob {20 endGroup n -1}
addUserKnob {20 Matrices}
addUserKnob {41 rgbToXyzMatrix T ColorMatrix1.matrix}
addUserKnob {26 ""}
addUserKnob {41 cat T ColorMatrix4.cat}
addUserKnob {26 ""}
addUserKnob {41 xyzToRgbMatrix T ColorMatrix2.matrix}
}
Constant {
inputs 0
format "1 1 0 0 1 1 1 1_pixel"
name Constant1
xpos -1301
ypos 69
}
ColorMatrix {
matrix {
{{red.x/red.y} {green.x/green.y} {blue.x/blue.y}}
{1 1 1}
{{(1-red.x-red.y)/red.y} {(1-green.x-green.y)/green.y} {(1-blue.x-blue.y)/blue.y}}
}
name FromMatrix
label FromParimaries
xpos -1301
ypos 167
addUserKnob {20 User}
addUserKnob {12 white}
white {0.3127 0.329}
addUserKnob {12 red}
red {0.7404642643 0.2793643748}
addUserKnob {12 green}
green {0.08924114542 0.8938095286}
addUserKnob {12 blue}
blue {0.1104882367 -0.05257933308}
addUserKnob {7 determinant}
determinant {{matrix.0*(matrix.4*matrix.8-matrix.7*matrix.5)+matrix.1*(matrix.5*matrix.6-matrix.8*matrix.3)+matrix.2*(matrix.3*matrix.7-matrix.6*matrix.4)}}
}
Reformat {
format "2048 2048 0 0 2048 2048 1 square_2k"
resize distort
filter Impulse
name Reformat1
xpos -1301
ypos 291
}
Shuffle {
red black
green black
blue black
alpha black
name Shuffle2
label "\[value in]-->\[value out]"
xpos -1301
ypos 331
}
Transform {
translate {{parent.plotOffset.x} {parent.plotOffset.y}}
scale {{parent.plotScale}}
black_outside false
name Transform1
xpos -1301
ypos 363
}
ColorWheel {
inputs 0
format "512 512 0 0 512 512 1 square_512"
centerSaturation 1
name ColorWheel4
xpos -554
ypos -58
}
ColorMatrix {
matrix {
{{FromMatrix.matrix.0*FromMatrixInverse.S.r} {FromMatrix.matrix.1*FromMatrixInverse.S.g} {FromMatrix.matrix.2*FromMatrixInverse.S.b}}
{{FromMatrix.matrix.3*FromMatrixInverse.S.r} {FromMatrix.matrix.4*FromMatrixInverse.S.g} {FromMatrix.matrix.5*FromMatrixInverse.S.b}}
{{FromMatrix.matrix.6*FromMatrixInverse.S.r} {FromMatrix.matrix.7*FromMatrixInverse.S.g} {FromMatrix.matrix.8*FromMatrixInverse.S.b}}
}
name ColorMatrix1
label Input_to_XYZ
xpos -554
ypos 53
addUserKnob {20 User}
addUserKnob {7 determinant}
determinant {{matrix.0*(matrix.4*matrix.8-matrix.7*matrix.5)+matrix.1*(matrix.5*matrix.6-matrix.8*matrix.3)+matrix.2*(matrix.3*matrix.7-matrix.6*matrix.4)}}
}
set Cf4e76890 [stack 0]
set Nf4e76890 [stack 0]
Colorspace {
colorspace_in CIE-XYZ
primary_in ACES
colorspace_out CIE-Yxy
name Colorspace4
xpos -434
ypos 109
}
push $Nf4e76890
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos -554
ypos 93
}
Multiply {
value {1 0 0 1}
name Multiply4
xpos -554
ypos 117
}
BlinkScript {
inputs 2
recompileCount 4
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise 4f09b488f640fe57a9b92d835cc81424078e447e427d9f43fb8d958e7333c795 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 4 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"bottom_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 4 \"padding\" 1 1 \"left_margin\" 1 1 \"bottom_margin\" 1 1 \"process_input\" 1 1 3 \"outsize\" Float 1 1 AAAAAA== \"offsetX\" Float 1 1 AAAAAA== \"offsetY\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n float bottom_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offsetX;\n float offsetY;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offsetX = left_margin;\n offsetY = bottom_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offsetX, xy.y * outsize + offsetY);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding {{1/parent.plotScale}}
plot_cie_xy_left_margin {{parent.plotOffset.x}}
plot_cie_xy_bottom_margin {{parent.plotOffset.y}}
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input
xpos -554
ypos 159
cached true
}
Dilate {
size 1
name Dilate1
xpos -554
ypos 232
}
set Nf4e9cc20 [stack 0]
push $Nf4e9cc20
ShuffleCopy {
inputs 2
alpha alpha2
name ShuffleCopy1
xpos -554
ypos 314
}
Group {
inputs 0
name PlanckianLocus
xpos -1030
ypos 256
addUserKnob {20 User}
addUserKnob {6 colorize +STARTLINE}
addUserKnob {41 value T Multiply1.value}
addUserKnob {26 temperature}
addUserKnob {7 start -STARTLINE R 1000 100000}
start 1000
addUserKnob {7 end R 1000 100000}
end 100000
}
Constant {
inputs 0
channels rgb
format "1620 2 0 0 1620 2 1 visible_spectrum_quarter nm"
name bg1
xpos 507
ypos -50
addUserKnob {20 User}
addUserKnob {7 wl}
wl {{clamp(frame+375,375,780)}}
}
set Nf4eaea80 [stack 0]
Rectangle {
area {{"(log10(parent.start)-3)/2 * width"} 0 {"(log10(parent.end)-3)/2 * width"} {height}}
name Rectangle7
xpos 289
ypos 130
}
push $Nf4eaea80
Ramp {
p0 {0 1}
p1 {1619 1}
name Ramp4
xpos 507
ypos 55
}
Multiply {
value {405 405 405 2}
name Multiply4
xpos 507
ypos 81
}
Add {
value {375 375 375 3}
name Add3
xpos 507
ypos 119
}
ColorLookup {
lut {master {}
red {curve x380 0.0014 x385 0.0022 0.0042 0.0076 0.0143 0.0232 0.0435 0.0776 0.1344 0.2148 0.2839 0.3285 0.3483 0.3481 0.3362 0.3187 0.2908 0.2511 0.1954 0.1421 0.0956 0.058 0.032 0.0147 0.0049 0.0024 0.0093 0.0291 0.0633 0.1096 0.1655 0.2257 0.2904 0.3597 0.4334 0.5121 0.5945 0.6784 0.7621 0.8425 0.9163 0.9786 1.0263 1.0567 1.0622 1.0456 1.0026 0.9384 0.8544 0.7514 0.6424 0.5419 0.4479 0.3608 0.2835 0.2187 0.1649 0.1212 0.0874 0.0636 0.0468 0.0329 0.0227 0.0158 0.0114 0.0081 0.0058 0.0041 0.0029 0.002 0.0014 0.001 0.0007 0.0005 0.0003 0.0002 0.0002 0.0001 0.0001 0.0001 0}
green {curve x380 0 x385 0.0001 0.0001 0.0002 0.0004 0.0006 0.0012 0.0022 0.004 0.0073 0.0116 0.0168 0.023 0.0298 0.038 0.048 0.06 0.0739 0.091 0.1126 0.139 0.1693 0.208 0.2586 0.323 0.4073 0.503 0.6082 0.71 0.7932 0.862 0.9149 0.954 0.9803 0.995 1 0.995 0.9786 0.952 0.9154 0.87 0.8163 0.757 0.6949 0.631 0.5668 0.503 0.4412 0.381 0.321 0.265 0.217 0.175 0.1382 0.107 0.0816 0.061 0.0446 0.032 0.0232 0.017 0.0119 0.0082 0.0057 0.0041 0.0029 0.0021 0.0015 0.001 0.0007 0.0005 0.0004 0.0002 0.0002 0.0001 0.0001 0.0001 0 0 0 0}
blue {curve x375 0 x380 0.0065 0.0105 0.0201 0.0362 0.0679 0.1102 0.2074 0.3713 0.6456 1.0391 1.3856 1.623 1.7471 1.7826 1.7721 1.7441 1.6692 1.5281 1.2876 1.0419 0.831 0.6162 0.4652 0.3533 0.272 0.2123 0.1582 0.1117 0.0782 0.0573 0.0422 0.0298 0.0203 0.0134 0.0087 0.0057 0.0039 0.0027 0.0021 0.0018 0.0017 0.0014 0.0011 0.001 0.0008 0.0006 0.0003 0.0002 0.0002 0.0001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
alpha {}}
name ColorLookup2
xpos 507
ypos 157
}
Expression {
expr0 r
expr1 g
expr2 b
expr3 pow(10,a)
name Expression1
xpos 507
ypos 181
}
BlinkScript {
ProgramGroup 1
KernelDescription "1 \"CCT2XYZ\" iterate pixelWise 1e5106c0628b69d1e3286f708ff894031c5f2cc6dcce2f5b6f5a0f9b492ad4d3 2 \"input\" Read Random \"dst\" Write Point 0"
kernelSource "// this kernel assumes the following in it's input:\n// an image with a width of 1620 pixels - representing 405 nm range in quarter-nm steps\n// RGB channel : CIE XYZ colour matching functions from 375nm to 780nm\n// Alpha channel : colour temperature in kelvin\n\nkernel CCT2XYZ : public ImageComputationKernel\n\{\n\tImage input; //the input image\n\tImage dst; //the output image\n\n\t//The kernel function is run at every pixel to produce the output.\n\tvoid process(int2 pos)\n\t\{\n \tSampleType(input) in = input(pos.x, pos.y);\n \tSampleType(input) cmf;\n \tfloat kelvin = in.w;\n \tint cmfY = 1;\n\t\tfloat3 ret = float3(0.f);\n\n\t\tfloat C1 = 2.0 * 3.141592653589793 * 6.626176 * 2.99792458 * 2.99792458;\n\t\tfloat C2 = (6.626176 * 2.99792458) / 1.380662;\n\n\t\t\n\t\tfor(int cmfX = 0; cmfX < input.bounds.width(); cmfX += 1)\n\t\t\{\n\t\t\tfloat nm = float(cmfX) / 4.f + 375.f;\n\t\t\tfloat dWavelengthM = nm * 1.0e-3; // * 1.0e-6\n\t\t\tfloat dWavelengthM5 = pow(dWavelengthM, 5.f); // * 1.0e-30\n\t\t\tfloat expArg = C2 / (kelvin * dWavelengthM * 1.0e-3);\n\t\t\tfloat blackbody = C1 / (dWavelengthM5 * 1.0e-12 * ( exp(expArg) - 1.0)); // -12 = -30 - (-18)\n\n\t\t\tcmf = input(cmfX, cmfY);\n\n\t\t\tret.x += (blackbody * cmf.x);\n\t\t\tret.y += (blackbody * cmf.y);\n\t\t\tret.z += (blackbody * cmf.z);\n\n\t\t\}\n\n\n\n\n\n\n\t\tret.x /= ret.y;\n\t\tret.z /= ret.y;\n\t\tret.y = 1.f;\n\n\t\tSampleType(input) out = in;\n\n\t\tout.x = ret.x;\n\t\tout.y = ret.y;\n\t\tout.z = ret.z;\n\n\t\tdst() = out;\n\t\}\n\};\n\n"
rebuild ""
rebuild_finalise ""
name BlinkScript1
selected true
xpos 507
ypos 219
}
Merge2 {
inputs 2
operation multiply
name Merge22
xpos 507
ypos 267
}
set Nf4edd040 [stack 0]
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
primary_out "CIE (1931)"
name Colorspace15
xpos 347
ypos 419
}
push $Nf4edd040
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos 640
ypos 378
}
Multiply {
value {0 0 0 1}
name Multiply1
xpos 640
ypos 404
}
push $Nf4edd040
ColorMatrix {
matrix {
{1.04981102 0 -9.748e-05}
{-0.49590302 1.37331305 0.09824004}
{0 0 0.99125202}
}
name ColorMatrix3
xpos 507
ypos 362
}
Expression {
temp_name0 max
temp_expr0 max(r,g,b)
expr0 "r / max"
expr1 "g / max"
expr2 "b / max"
name Expression2
xpos 507
ypos 386
}
Switch {
inputs 2
which {{parent.colorize}}
name Switch1
xpos 569
ypos 462
}
BlinkScript {
inputs 2
recompileCount 4
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise 4f09b488f640fe57a9b92d835cc81424078e447e427d9f43fb8d958e7333c795 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 4 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"bottom_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 4 \"padding\" 1 1 \"left_margin\" 1 1 \"bottom_margin\" 1 1 \"process_input\" 1 1 3 \"outsize\" Float 1 1 AAAAAA== \"offsetX\" Float 1 1 AAAAAA== \"offsetY\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n float bottom_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offsetX;\n float offsetY;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offsetX = left_margin;\n offsetY = bottom_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offsetX, xy.y * outsize + offsetY);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding {{1/parent.parent.plotScale}}
plot_cie_xy_left_margin {{parent.parent.plotOffset.x}}
plot_cie_xy_bottom_margin {{parent.parent.plotOffset.y}}
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input1
xpos 569
ypos 578
cached true
}
Dilate {
size 1
name Dilate1
xpos 569
ypos 616
}
Output {
name Output1
xpos 569
ypos 690
}
end_group
push 0
Group {
inputs 0
name SpectralLocus2
xpos -914
ypos 254
addUserKnob {20 User}
addUserKnob {6 colorize +STARTLINE}
addUserKnob {41 value T Multiply1.value}
addUserKnob {26 wavelength}
addUserKnob {7 start -STARTLINE R 375 780}
start 375
addUserKnob {7 end R 375 780}
end 780
addUserKnob {6 purples l "show \"line of purples\"" +STARTLINE}
addUserKnob {41 plotColorSpace T Switch3.which}
}
Constant {
inputs 0
channels rgb
format "16384 2 0 0 16384 2 1 14bit_lut"
name bg1
xpos 507
ypos -17
addUserKnob {20 User}
addUserKnob {7 wl}
wl {{clamp(frame+375,375,780)}}
}
set Nf4f29990 [stack 0]
Ramp {
p0 {0 1}
p1 {16383 1}
name Ramp4
xpos 507
ypos 55
}
set Nf4f2e2b0 [stack 0]
Dot {
name Dot8
note_font "Bitstream Vera Sans"
xpos 681
ypos 58
}
Multiply {
value {-0.001319684205 -0.565 -0.26 1}
name Multiply2
note_font "Bitstream Vera Sans"
xpos 647
ypos 122
}
Add {
value {0.001419684151 0.737 0.2637 1}
name Add7
note_font "Bitstream Vera Sans"
xpos 647
ypos 158
}
Shuffle {
alpha white
name Shuffle22
label "\[value in]-->\[value out]"
note_font "Bitstream Vera Sans"
xpos 647
ypos 207
}
Transform {
translate {13300 0}
scale {0.1883 1}
center {0 1}
filter Impulse
name Transform1
note_font "Bitstream Vera Sans"
xpos 647
ypos 243
}
Dot {
name Dot9
note_font "Bitstream Vera Sans"
xpos 681
ypos 376
}
push $Nf4f29990
Rectangle {
area {{width*((parent.start-375)/405)} 0 {width*((parent.end-375)/405)} 2}
name Rectangle7
xpos 289
ypos 130
}
push $Nf4f2e2b0
Multiply {
value 405
name Multiply4
xpos 507
ypos 81
}
Add {
value 375
name Add3
xpos 507
ypos 119
}
ColorLookup {
lut {master {}
red {curve x380 0.0014 x385 0.0022 0.0042 0.0076 0.0143 0.0232 0.0435 0.0776 0.1344 0.2148 0.2839 0.3285 0.3483 0.3481 0.3362 0.3187 0.2908 0.2511 0.1954 0.1421 0.0956 0.058 0.032 0.0147 0.0049 0.0024 0.0093 0.0291 0.0633 0.1096 0.1655 0.2257 0.2904 0.3597 0.4334 0.5121 0.5945 0.6784 0.7621 0.8425 0.9163 0.9786 1.0263 1.0567 1.0622 1.0456 1.0026 0.9384 0.8544 0.7514 0.6424 0.5419 0.4479 0.3608 0.2835 0.2187 0.1649 0.1212 0.0874 0.0636 0.0468 0.0329 0.0227 0.0158 0.0114 0.0081 0.0058 0.0041 0.0029 0.002 0.0014 0.001 0.0007 0.0005 0.0003 0.0002 0.0002 0.0001 0.0001 0.0001 0}
green {curve x380 0 x385 0.0001 0.0001 0.0002 0.0004 0.0006 0.0012 0.0022 0.004 0.0073 0.0116 0.0168 0.023 0.0298 0.038 0.048 0.06 0.0739 0.091 0.1126 0.139 0.1693 0.208 0.2586 0.323 0.4073 0.503 0.6082 0.71 0.7932 0.862 0.9149 0.954 0.9803 0.995 1 0.995 0.9786 0.952 0.9154 0.87 0.8163 0.757 0.6949 0.631 0.5668 0.503 0.4412 0.381 0.321 0.265 0.217 0.175 0.1382 0.107 0.0816 0.061 0.0446 0.032 0.0232 0.017 0.0119 0.0082 0.0057 0.0041 0.0029 0.0021 0.0015 0.001 0.0007 0.0005 0.0004 0.0002 0.0002 0.0001 0.0001 0.0001 0 0 0 0}
blue {curve x375 0 x380 0.0065 0.0105 0.0201 0.0362 0.0679 0.1102 0.2074 0.3713 0.6456 1.0391 1.3856 1.623 1.7471 1.7826 1.7721 1.7441 1.6692 1.5281 1.2876 1.0419 0.831 0.6162 0.4652 0.3533 0.272 0.2123 0.1582 0.1117 0.0782 0.0573 0.0422 0.0298 0.0203 0.0134 0.0087 0.0057 0.0039 0.0027 0.0021 0.0018 0.0017 0.0014 0.0011 0.001 0.0008 0.0006 0.0003 0.0002 0.0002 0.0001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
alpha {}}
name ColorLookup2
xpos 507
ypos 157
}
Merge2 {
inputs 2
operation multiply
name Merge22
xpos 507
ypos 226
}
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
name Colorspace1
note_font "Bitstream Vera Sans"
xpos 507
ypos 297
}
Crop {
box {500 0 13800 2}
name Crop13
xpos 507
ypos 321
}
Transform {
translate {-500 0}
center {8192 1}
name Transform3
note_font "Bitstream Vera Sans"
xpos 507
ypos 349
}
Merge2 {
inputs 2
name Merge1
note_font "Bitstream Vera Sans"
xpos 507
ypos 373
disable {{!parent.purples}}
}
Expression {
expr0 "r < 0 ? r * sole.r + lift.r : r < lift.r * 2 ? pow( (lift.r *2 - r) / (lift.r * 2), 2) * lift.r + r : r"
expr1 "g < 0 ? g * sole.g + lift.g : g < lift.g * 2 ? pow( (lift.g *2 - g) / (lift.g * 2), 2) * lift.g + g : g"
expr2 "b < 0 ? b * sole.b + lift.b : b < lift.b * 2 ? pow( (lift.b *2 - b) / (lift.b * 2), 2) * lift.b + b : b"
name ToeExpr1
xpos 507
ypos 397
addUserKnob {20 User}
addUserKnob {18 lift}
lift {0.15 0 0}
addUserKnob {6 lift_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
lift_panelDropped true
addUserKnob {6 lift_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 sole R 0 0.1}
sole {0 0 0}
addUserKnob {6 sole_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
}
Colorspace {
colorspace_in CIE-Yxy
colorspace_out CIE-XYZ
name Colorspace2
note_font "Bitstream Vera Sans"
xpos 507
ypos 421
}
set Nf4fadc60 [stack 0]
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
primary_out "CIE (1931)"
name Colorspace15
xpos 347
ypos 612
}
push $Nf4fadc60
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos 640
ypos 571
}
Multiply {
value {1 1 1 1}
name Multiply1
xpos 640
ypos 597
}
push $Nf4fadc60
ColorMatrix {
matrix {
{1.04981102 0 -9.748e-05}
{-0.49590302 1.37331305 0.09824004}
{0 0 0.99125202}
}
name ColorMatrix3
xpos 507
ypos 572
}
Shuffle {
alpha white
name Shuffle2
label "\[value in]-->\[value out]"
note_font "Bitstream Vera Sans"
xpos 507
ypos 596
}
Switch {
inputs 2
which {{parent.colorize}}
name Switch1
xpos 569
ypos 655
}
BlinkScript {
inputs 2
recompileCount 4
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise 4f09b488f640fe57a9b92d835cc81424078e447e427d9f43fb8d958e7333c795 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 4 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"bottom_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 4 \"padding\" 1 1 \"left_margin\" 1 1 \"bottom_margin\" 1 1 \"process_input\" 1 1 3 \"outsize\" Float 1 1 AAAAAA== \"offsetX\" Float 1 1 AAAAAA== \"offsetY\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n float bottom_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offsetX;\n float offsetY;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offsetX = left_margin;\n offsetY = bottom_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offsetX, xy.y * outsize + offsetY);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding {{1/parent.parent.plotScale}}
plot_cie_xy_left_margin {{parent.parent.plotOffset.x}}
plot_cie_xy_bottom_margin {{parent.parent.plotOffset.y}}
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input1
selected true
xpos 569
ypos 737
cached true
}
Dilate {
size 1
name Dilate1
xpos 569
ypos 769
}
Output {
name Output1
xpos 569
ypos 875
}
end_group
Group {
inputs 0
name SpectralLocusFill
xpos -806
ypos 230
addUserKnob {20 User}
addUserKnob {41 value T Multiply1.value}
addUserKnob {6 colorize +STARTLINE}
}
Constant {
inputs 0
channels rgb
format "16384 2 0 0 16384 2 1 14bit_lut"
name bg1
xpos 510
ypos -223
addUserKnob {20 User}
addUserKnob {7 wl}
wl {{clamp(frame+375,375,780)}}
}
Ramp {
p0 {0 1}
p1 {16383 1}
name Ramp4
xpos 510
ypos -152
}
Multiply {
value 405
name Multiply4
xpos 510
ypos -134
}
Add {
value 375
name Add3
xpos 510
ypos -86
}
ColorLookup {
lut {master {}
red {curve x380 0.0014 x385 0.0022 0.0042 0.0076 0.0143 0.0232 0.0435 0.0776 0.1344 0.2148 0.2839 0.3285 0.3483 0.3481 0.3362 0.3187 0.2908 0.2511 0.1954 0.1421 0.0956 0.058 0.032 0.0147 0.0049 0.0024 0.0093 0.0291 0.0633 0.1096 0.1655 0.2257 0.2904 0.3597 0.4334 0.5121 0.5945 0.6784 0.7621 0.8425 0.9163 0.9786 1.0263 1.0567 1.0622 1.0456 1.0026 0.9384 0.8544 0.7514 0.6424 0.5419 0.4479 0.3608 0.2835 0.2187 0.1649 0.1212 0.0874 0.0636 0.0468 0.0329 0.0227 0.0158 0.0114 0.0081 0.0058 0.0041 0.0029 0.002 0.0014 0.001 0.0007 0.0005 0.0003 0.0002 0.0002 0.0001 0.0001 0.0001 0}
green {curve x380 0 x385 0.0001 0.0001 0.0002 0.0004 0.0006 0.0012 0.0022 0.004 0.0073 0.0116 0.0168 0.023 0.0298 0.038 0.048 0.06 0.0739 0.091 0.1126 0.139 0.1693 0.208 0.2586 0.323 0.4073 0.503 0.6082 0.71 0.7932 0.862 0.9149 0.954 0.9803 0.995 1 0.995 0.9786 0.952 0.9154 0.87 0.8163 0.757 0.6949 0.631 0.5668 0.503 0.4412 0.381 0.321 0.265 0.217 0.175 0.1382 0.107 0.0816 0.061 0.0446 0.032 0.0232 0.017 0.0119 0.0082 0.0057 0.0041 0.0029 0.0021 0.0015 0.001 0.0007 0.0005 0.0004 0.0002 0.0002 0.0001 0.0001 0.0001 0 0 0 0}
blue {curve x375 0 x380 0.0065 0.0105 0.0201 0.0362 0.0679 0.1102 0.2074 0.3713 0.6456 1.0391 1.3856 1.623 1.7471 1.7826 1.7721 1.7441 1.6692 1.5281 1.2876 1.0419 0.831 0.6162 0.4652 0.3533 0.272 0.2123 0.1582 0.1117 0.0782 0.0573 0.0422 0.0298 0.0203 0.0134 0.0087 0.0057 0.0039 0.0027 0.0021 0.0018 0.0017 0.0014 0.0011 0.001 0.0008 0.0006 0.0003 0.0002 0.0002 0.0001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
alpha {}}
name ColorLookup2
xpos 510
ypos -56
}
Crop {
box {500 0 13800 2}
reformat true
crop false
name Crop13
xpos 510
ypos -5
}
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
name Colorspace9
xpos 510
ypos 84
}
Reformat {
type "to box"
format "2048 2048 0 0 2048 2048 1 square_2k"
box_width 2048
box_height 240
box_fixed true
resize distort
filter Impulse
name Reformat5
xpos 510
ypos 162
}
set Nf5022630 [stack 0]
Crop {
box {0 0 {input.width/2.5} {height}}
reformat true
crop false
name Crop4
xpos 429
ypos 269
}
set Nf502a040 [stack 0]
Shuffle {
red black
green black
blue black
alpha black
name Shuffle7
label "\[value in]-->\[value out]"
xpos 359
ypos 422
}
Ramp {
p0 {{width/2} 0}
p1 {{width/2} {height-1}}
name Ramp8
xpos 359
ypos 460
}
push $Nf502a040
push $Nf5022630
Crop {
box {{Crop4.box.r} 0 {width} {height}}
reformat true
crop false
name Crop5
xpos 578
ypos 269
}
Reformat {
type "to box"
box_width {{Crop4.box.r-Crop4.box.x}}
box_height {{Crop4.box.t-Crop4.box.y}}
box_fixed true
scale {1 0.5}
resize distort
flop true
name Reformat7
xpos 578
ypos 306
}
Keymix {
inputs 3
name Keymix5
xpos 522
ypos 525
}
Reformat {
type scale
scale 2
name Reformat1
xpos 522
ypos 557
}
set Nf504f340 [stack 0]
push $Nf504f340
Colorspace {
colorspace_in CIE-Yxy
colorspace_out CIE-XYZ
name Colorspace1
xpos 643
ypos 656
}
set Nf5056d50 [stack 0]
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos 643
ypos 762
}
Multiply {
value 0.5
name Multiply1
xpos 643
ypos 804
}
push $Nf5056d50
ColorMatrix {
matrix {
{1.04981102 0 -9.748e-05}
{-0.49590302 1.37331305 0.09824004}
{0 0 0.99125202}
}
name ColorMatrix3
xpos 767
ypos 781
}
Switch {
inputs 2
which {{parent.colorize}}
name Switch1
xpos 643
ypos 858
}
Multiply {
value {{parent.value.r} {parent.value.g} {parent.value.b} {parent.value.a}}
name Multiply2
xpos 643
ypos 902
}
BlinkScript {
inputs 2
recompileCount 4
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise 4f09b488f640fe57a9b92d835cc81424078e447e427d9f43fb8d958e7333c795 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 4 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"bottom_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 4 \"padding\" 1 1 \"left_margin\" 1 1 \"bottom_margin\" 1 1 \"process_input\" 1 1 3 \"outsize\" Float 1 1 AAAAAA== \"offsetX\" Float 1 1 AAAAAA== \"offsetY\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n float bottom_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offsetX;\n float offsetY;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offsetX = left_margin;\n offsetY = bottom_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offsetX, xy.y * outsize + offsetY);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding {{1/parent.parent.plotScale}}
plot_cie_xy_left_margin {{parent.parent.plotOffset.x}}
plot_cie_xy_bottom_margin {{parent.parent.plotOffset.y}}
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input1
selected true
xpos 522
ypos 986
cached true
}
Dilate {
size 2.5
name Dilate1
xpos 522
ypos 1018
}
Dilate {
size -2.5
name Dilate2
xpos 522
ypos 1050
}
Output {
name Output1
xpos 522
ypos 1117
}
end_group
Multiply {
value 0.18
name Multiply1
xpos -806
ypos 254
}
Merge2 {
inputs 4+1
name Merge2
xpos -875
ypos 314
}
Merge2 {
inputs 2
operation plus
name Merge1
xpos -875
ypos 363
}
Input {
inputs 0
name Input1
xpos 122
ypos -140
}
Dot {
name Dot2
xpos 156
ypos 11
}
set Nf50aa020 [stack 0]
Dot {
name Dot4
xpos 266
ypos 11
}
ColorMatrix {
matrix {
{{parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix}}
{{parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix}}
{{parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix}}
}
name ColorMatrix5
label "output to XYZ"
xpos 232
ypos 84
}
set Nf50aebe0 [stack 0]
ColorMatrix {
matrix {
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
}
name ColorMatrix8
label "CAT Matrix\nforward"
xpos 350
ypos 79
}
Multiply {
value {{whiteInLMS.r/whiteOutLMS.r} {whiteInLMS.g/whiteOutLMS.g} {whiteInLMS.b/whiteOutLMS.b} 1}
name Multiply3
label "Scale White"
xpos 350
ypos 121
addUserKnob {20 User}
addUserKnob {18 whiteInXYZ}
whiteInXYZ {{ColorMatrix1.matrix.0+ColorMatrix1.matrix.1+ColorMatrix1.matrix.2} {ColorMatrix1.matrix.3+ColorMatrix1.matrix.4+ColorMatrix1.matrix.5} {ColorMatrix1.matrix.6+ColorMatrix1.matrix.7+ColorMatrix1.matrix.8}}
addUserKnob {6 whiteInXYZ_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteInLMS}
whiteInLMS {{whiteInXYZ.r*ColorMatrix4.matrix.0+whiteInXYZ.g*ColorMatrix4.matrix.1+whiteInXYZ.b*ColorMatrix4.matrix.2} {whiteInXYZ.r*ColorMatrix4.matrix.3+whiteInXYZ.g*ColorMatrix4.matrix.4+whiteInXYZ.b*ColorMatrix4.matrix.5} {whiteInXYZ.r*ColorMatrix4.matrix.6+whiteInXYZ.g*ColorMatrix4.matrix.7+whiteInXYZ.b*ColorMatrix4.matrix.8}}
addUserKnob {6 whiteInLMS_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteOutXYZ}
whiteOutXYZ {{ColorMatrix3.matrix.0+ColorMatrix3.matrix.1+ColorMatrix3.matrix.2} {ColorMatrix3.matrix.3+ColorMatrix3.matrix.4+ColorMatrix3.matrix.5} {ColorMatrix3.matrix.6+ColorMatrix3.matrix.7+ColorMatrix3.matrix.8}}
addUserKnob {6 whiteOutXYZ_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteOutLMS}
whiteOutLMS {{whiteOutXYZ.r*ColorMatrix4.matrix.0+whiteOutXYZ.g*ColorMatrix4.matrix.1+whiteOutXYZ.b*ColorMatrix4.matrix.2} {whiteOutXYZ.r*ColorMatrix4.matrix.3+whiteOutXYZ.g*ColorMatrix4.matrix.4+whiteOutXYZ.b*ColorMatrix4.matrix.5} {whiteOutXYZ.r*ColorMatrix4.matrix.6+whiteOutXYZ.g*ColorMatrix4.matrix.7+whiteOutXYZ.b*ColorMatrix4.matrix.8}}
addUserKnob {6 whiteOutLMS_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOut_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteIn_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
}
ColorMatrix {
matrix {
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
}
invert true
name ColorMatrix9
label "CAT Matrix\ninverse"
xpos 350
ypos 163
}
push $Nf50aebe0
Switch {
inputs 2
which {{"ColorMatrix4.cat > 0"}}
name Switch4
xpos 232
ypos 172
}
ColorMatrix {
matrix {
{{FromMatrix.matrix.0*FromMatrixInverse.S.r} {FromMatrix.matrix.1*FromMatrixInverse.S.g} {FromMatrix.matrix.2*FromMatrixInverse.S.b}}
{{FromMatrix.matrix.3*FromMatrixInverse.S.r} {FromMatrix.matrix.4*FromMatrixInverse.S.g} {FromMatrix.matrix.5*FromMatrixInverse.S.b}}
{{FromMatrix.matrix.6*FromMatrixInverse.S.r} {FromMatrix.matrix.7*FromMatrixInverse.S.g} {FromMatrix.matrix.8*FromMatrixInverse.S.b}}
}
invert true
name ColorMatrix6
label "XYZ to Input"
xpos 232
ypos 213
addUserKnob {20 User}
addUserKnob {7 determinant}
determinant {{matrix.0*(matrix.4*matrix.8-matrix.7*matrix.5)+matrix.1*(matrix.5*matrix.6-matrix.8*matrix.3)+matrix.2*(matrix.3*matrix.7-matrix.6*matrix.4)}}
}
Dot {
name Dot5
xpos 266
ypos 272
}
push $Nf50aa020
Dot {
name Dot1
xpos 46
ypos 11
}
clone $Cf4e76890 {
xpos 12
ypos 74
selected false
}
set Nf50de140 [stack 0]
ColorMatrix {
matrix {
{{"\[python (1, 1, 0.8951, 0.7328)\\\[\[numvalue cat]\\]]"} {"\[python (0, 0, 0.2664, 0.4296)\\\[\[numvalue cat]\\]]"} {"\[python (0, 0, -0.1614, -0.1624)\\\[\[numvalue cat]\\]]"}}
{{"\[python (0, 0, -0.7502, -0.7036)\\\[\[numvalue cat]\\]]"} {"\[python (1, 1, 1.7135, 1.6975)\\\[\[numvalue cat]\\]]"} {"\[python (0, 0, 0.0367, 0.0061)\\\[\[numvalue cat]\\]]"}}
{{"\[python (0, 0, 0.0389, 0.003)\\\[\[numvalue cat]\\]]"} {"\[python (0, 0, -0.0685, 0.0136)\\\[\[numvalue cat]\\]]"} {"\[python (1, 1, 1.0296, 0.9834)\\\[\[numvalue cat]\\]]"}}
}
name ColorMatrix4
label "CAT Matrix\n\[value cat]\n\[python ('forward', 'inverse')\\\[\[numvalue invert]\\]]"
xpos -113
ypos 64
addUserKnob {20 User}
addUserKnob {4 cat M {None "XYZ Scaling" Bradford CAT02}}
cat CAT02
}
Multiply {
value {{whiteOutLMS.r/whiteInLMS.r} {whiteOutLMS.g/whiteInLMS.g} {whiteOutLMS.b/whiteInLMS.b} 1}
name Multiply2
label "Scale White"
xpos -113
ypos 116
addUserKnob {20 User}
addUserKnob {18 whiteInXYZ}
whiteInXYZ {{ColorMatrix1.matrix.0+ColorMatrix1.matrix.1+ColorMatrix1.matrix.2} {ColorMatrix1.matrix.3+ColorMatrix1.matrix.4+ColorMatrix1.matrix.5} {ColorMatrix1.matrix.6+ColorMatrix1.matrix.7+ColorMatrix1.matrix.8}}
addUserKnob {6 whiteInXYZ_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteInLMS}
whiteInLMS {{whiteInXYZ.r*ColorMatrix4.matrix.0+whiteInXYZ.g*ColorMatrix4.matrix.1+whiteInXYZ.b*ColorMatrix4.matrix.2} {whiteInXYZ.r*ColorMatrix4.matrix.3+whiteInXYZ.g*ColorMatrix4.matrix.4+whiteInXYZ.b*ColorMatrix4.matrix.5} {whiteInXYZ.r*ColorMatrix4.matrix.6+whiteInXYZ.g*ColorMatrix4.matrix.7+whiteInXYZ.b*ColorMatrix4.matrix.8}}
addUserKnob {6 whiteInLMS_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteOutXYZ}
whiteOutXYZ {{ColorMatrix3.matrix.0+ColorMatrix3.matrix.1+ColorMatrix3.matrix.2} {ColorMatrix3.matrix.3+ColorMatrix3.matrix.4+ColorMatrix3.matrix.5} {ColorMatrix3.matrix.6+ColorMatrix3.matrix.7+ColorMatrix3.matrix.8}}
addUserKnob {6 whiteOutXYZ_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteOutLMS}
whiteOutLMS {{whiteOutXYZ.r*ColorMatrix4.matrix.0+whiteOutXYZ.g*ColorMatrix4.matrix.1+whiteOutXYZ.b*ColorMatrix4.matrix.2} {whiteOutXYZ.r*ColorMatrix4.matrix.3+whiteOutXYZ.g*ColorMatrix4.matrix.4+whiteOutXYZ.b*ColorMatrix4.matrix.5} {whiteOutXYZ.r*ColorMatrix4.matrix.6+whiteOutXYZ.g*ColorMatrix4.matrix.7+whiteOutXYZ.b*ColorMatrix4.matrix.8}}
addUserKnob {6 whiteOutLMS_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOut_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteIn_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
}
ColorMatrix {
matrix {
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
}
invert true
name ColorMatrix7
label "CAT Matrix\ninverse"
xpos -113
ypos 158
}
push $Nf50de140
Switch {
inputs 2
which {{"ColorMatrix4.cat > 0"}}
name Switch2
xpos 12
ypos 167
}
ColorMatrix {
matrix {
{{"\[python (0.9525523959, 0.6624541811, 0.4123907993, 0.6369580483, 0.4865709486, 0.6380076193, 0.4581609159, 0.4878301118, 0.4516946649, 0.5070147865, 0.4462154077, 0.7352752459, 0.7064827132, 0.7064827132, 0.5990839208, 0.7976672348, 1.0000000000, 1.48804061)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.0000000000, 0.1340042065, 0.3575843394, 0.1446169036, 0.2656676932, 0.2147038563, 0.3832048061, 0.3432736678, 0.3178467119, 0.3587783652, 0.3157557129, 0.0686094106, 0.1288010498, 0.1288010498, 0.2489255161, 0.1351922306, 0.0000000000, -0.23423647)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.0000936786, 0.1561876870, 0.1804807884, 0.1688809752, 0.1982172852, 0.0977444514, 0.1112803526, 0.1215422950, 0.1831046977, 0.0868529229, 0.1906749540, 0.1465712705, 0.1151721641, 0.1151721641, 0.1024464902, 0.0313525290, 0.0000000000, -0.3011580651)\\\[\[numvalue gamut]\\]]\n"}}
{{"\[python (0.3439664498, 0.2722287168, 0.2126390059, 0.2627002120, 0.2289745641, 0.2919537790, 0.1694420971, 0.2289038124, 0.2119478695, 0.2207240223, 0.1942557952, 0.2866940995, 0.2709796708, 0.2709796708, 0.2150758201, 0.2880374539, 0.0000000000, 0.2501373809)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.7281660966, 0.6740817658, 0.7151686788, 0.6779980715, 0.6917385218, 0.8238410415, 0.8648282025, 0.7808598244, 0.7230197720, 0.8391880546, 0.7385568692, 0.8429791340, 0.7866064112, 0.7866064112, 0.8850685017, 0.7118768834, 1.0000000000, 1.210452347)\\\[\[numvalue gamut]\\]]\n"} {"\[python (-0.0721325464, 0.0536895174, 0.0721923154, 0.0593017165, 0.0792869141, -0.1157948205, -0.0342702996, -0.0097636368, 0.0650323585, -0.0599120769, 0.0671873356, -0.1296732335, -0.0575860820, -0.0575860820, -0.1001443219, 0.0000856626, 0.0000000000, -0.4605897283)\\\[\[numvalue gamut]\\]]\n"}}
{{"\[python (0.0000000000, -0.0055746495, 0.0193308187, 0.0000000000, 0.0000000000, 0.0027982790, -0.1061849690, -0.0210075899, -0.0194509094, -0.0544519405, -0.0479226710, -0.0796808569, -0.0096778454, -0.0096778454, -0.0320658495, 0.0000000000, 0.0000000000, -0.4416591448)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.0000000000, 0.0040607335, 0.1191947798, 0.0280726930, 0.0451133819, -0.0670342357, 0.0255435258, 0.0178269864, 0.0165064159, -0.0003228254, -0.0002844886, -0.3473432170, 0.0046000375, 0.0046000375, -0.0276583907, 0.0000000000, 0.0000000000, -0.2480497808)\\\[\[numvalue gamut]\\]]\n"} {"\[python (1.0088251844, 1.0103391003, 0.9505321522, 1.0609850577, 1.0439443689, 1.1532937074, 1.0894666276, 1.0120057879, 1.0117696778, 1.0635999502, 1.0570323440, 1.5160818246, 1.0941355587, 1.0941355587, 1.1487819910, 0.8251882845, 1.0000000000, 1.69853411)\\\[\[numvalue gamut]\\]]\n"}}
}
invert true
name ColorMatrix3
label "XYZ to output"
note_font "Bitstream Vera Sans"
xpos 12
ypos 210
addUserKnob {20 User}
addUserKnob {4 gamut M {ACES ACEScg "Rec709 / sRGB" Rec2020 P3 AlexaWideGamut REDColor2 REDColor3 REDColor4 DRAGONcolor DRAGONcolor2 REDWideGamutRGB SGamut SGamut3 SGamut3.Cine ProPhoto "CIE XYZ" "Huge Gamut AP0 x 2" ""}}
gamut ACEScg
}
Dot {
name Dot3
xpos 46
ypos 272
}
Switch {
inputs 2
which {{parent.inverse}}
name Switch3
xpos 126
ypos 269
}
Switch {
inputs 2
which {{parent.showPlot}}
name Switch1
xpos 126
ypos 363
}
Output {
name Output1
xpos 126
ypos 434
}
ColorMatrix {
inputs 0
matrix {
{{(FromMatrix.matrix.4*FromMatrix.matrix.8-FromMatrix.matrix.7*FromMatrix.matrix.5)/FromMatrix.determinant} {(FromMatrix.matrix.7*FromMatrix.matrix.2-FromMatrix.matrix.1*FromMatrix.matrix.8)/FromMatrix.determinant} {(FromMatrix.matrix.1*FromMatrix.matrix.5-FromMatrix.matrix.4*FromMatrix.matrix.2)/FromMatrix.determinant}}
{{(FromMatrix.matrix.5*FromMatrix.matrix.6-FromMatrix.matrix.8*FromMatrix.matrix.3)/FromMatrix.determinant} {(FromMatrix.matrix.8*FromMatrix.matrix.0-FromMatrix.matrix.2*FromMatrix.matrix.6)/FromMatrix.determinant} {(FromMatrix.matrix.2*FromMatrix.matrix.3-FromMatrix.matrix.5*FromMatrix.matrix.0)/FromMatrix.determinant}}
{{(FromMatrix.matrix.3*FromMatrix.matrix.7-FromMatrix.matrix.6*FromMatrix.matrix.4)/FromMatrix.determinant} {(FromMatrix.matrix.6*FromMatrix.matrix.1-FromMatrix.matrix.0*FromMatrix.matrix.7)/FromMatrix.determinant} {(FromMatrix.matrix.0*FromMatrix.matrix.4-FromMatrix.matrix.3*FromMatrix.matrix.1)/FromMatrix.determinant}}
}
name FromMatrixInverse
label FromParimaries-1
xpos -1169
ypos 165
addUserKnob {20 User}
addUserKnob {13 white}
white {{FromMatrix.white.x/FromMatrix.white.y} 1 {(1-FromMatrix.white.x-FromMatrix.white.y)/FromMatrix.white.y}}
addUserKnob {18 S}
S {{matrix.0*white.x+matrix.1*white.y+matrix.2*white.z} {matrix.3*white.x+matrix.4*white.y+matrix.5*white.z} {matrix.6*white.x+matrix.7*white.y+matrix.8*white.z}}
addUserKnob {6 S_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
}
ColorMatrix {
inputs 0
matrix {
{{(ColorMatrix1.matrix.4*ColorMatrix1.matrix.8-ColorMatrix1.matrix.7*ColorMatrix1.matrix.5)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.7*ColorMatrix1.matrix.2-ColorMatrix1.matrix.1*ColorMatrix1.matrix.8)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.1*ColorMatrix1.matrix.5-ColorMatrix1.matrix.4*ColorMatrix1.matrix.2)/ColorMatrix1.determinant}}
{{(ColorMatrix1.matrix.5*ColorMatrix1.matrix.6-ColorMatrix1.matrix.8*ColorMatrix1.matrix.3)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.8*ColorMatrix1.matrix.0-ColorMatrix1.matrix.2*ColorMatrix1.matrix.6)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.2*ColorMatrix1.matrix.3-ColorMatrix1.matrix.5*ColorMatrix1.matrix.0)/ColorMatrix1.determinant}}
{{(ColorMatrix1.matrix.3*ColorMatrix1.matrix.7-ColorMatrix1.matrix.6*ColorMatrix1.matrix.4)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.6*ColorMatrix1.matrix.1-ColorMatrix1.matrix.0*ColorMatrix1.matrix.7)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.0*ColorMatrix1.matrix.4-ColorMatrix1.matrix.3*ColorMatrix1.matrix.1)/ColorMatrix1.determinant}}
}
name ColorMatrix2
label XYZ_to_Input
note_font "Bitstream Vera Sans"
xpos -435
ypos 52
}
end_group
push $Nec359400
Group {
name FreeformGamut2
label "Sony\nSGamut/SGamut3"
xpos 11280
ypos 442
addUserKnob {20 Primaries}
addUserKnob {26 inputPrimaries -STARTLINE T ""}
addUserKnob {41 white T FromMatrix.white}
addUserKnob {41 red T FromMatrix.red}
addUserKnob {41 green T FromMatrix.green}
addUserKnob {41 blue T FromMatrix.blue}
addUserKnob {26 ""}
addUserKnob {41 outputColorspace T ColorMatrix3.gamut}
addUserKnob {6 inverse -STARTLINE}
addUserKnob {26 ""}
addUserKnob {6 showPlot +STARTLINE}
addUserKnob {20 plotSettings n 1}
plotSettings 0
addUserKnob {7 plotScale R 0 2}
plotScale 0.5
addUserKnob {12 plotOffset}
plotOffset {409.6 409.6}
addUserKnob {20 endGroup n -1}
addUserKnob {20 Matrices}
addUserKnob {41 rgbToXyzMatrix T ColorMatrix1.matrix}
addUserKnob {26 ""}
addUserKnob {41 cat T ColorMatrix4.cat}
addUserKnob {26 ""}
addUserKnob {41 xyzToRgbMatrix T ColorMatrix2.matrix}
}
Constant {
inputs 0
format "1 1 0 0 1 1 1 1_pixel"
name Constant1
xpos -1301
ypos 69
}
ColorMatrix {
matrix {
{{red.x/red.y} {green.x/green.y} {blue.x/blue.y}}
{1 1 1}
{{(1-red.x-red.y)/red.y} {(1-green.x-green.y)/green.y} {(1-blue.x-blue.y)/blue.y}}
}
name FromMatrix
label FromParimaries
xpos -1301
ypos 167
addUserKnob {20 User}
addUserKnob {12 white}
white {0.3127 0.329}
addUserKnob {12 red}
red {0.73 0.28}
addUserKnob {12 green}
green {0.14 0.855}
addUserKnob {12 blue}
blue {0.1 -0.05}
addUserKnob {7 determinant}
determinant {{matrix.0*(matrix.4*matrix.8-matrix.7*matrix.5)+matrix.1*(matrix.5*matrix.6-matrix.8*matrix.3)+matrix.2*(matrix.3*matrix.7-matrix.6*matrix.4)}}
}
Reformat {
format "2048 2048 0 0 2048 2048 1 square_2k"
resize distort
filter Impulse
name Reformat1
xpos -1301
ypos 291
}
Shuffle {
red black
green black
blue black
alpha black
name Shuffle2
label "\[value in]-->\[value out]"
xpos -1301
ypos 331
}
Transform {
translate {{parent.plotOffset.x} {parent.plotOffset.y}}
scale {{parent.plotScale}}
black_outside false
name Transform1
xpos -1301
ypos 363
}
ColorWheel {
inputs 0
format "512 512 0 0 512 512 1 square_512"
centerSaturation 1
name ColorWheel4
xpos -554
ypos -58
}
ColorMatrix {
matrix {
{{FromMatrix.matrix.0*FromMatrixInverse.S.r} {FromMatrix.matrix.1*FromMatrixInverse.S.g} {FromMatrix.matrix.2*FromMatrixInverse.S.b}}
{{FromMatrix.matrix.3*FromMatrixInverse.S.r} {FromMatrix.matrix.4*FromMatrixInverse.S.g} {FromMatrix.matrix.5*FromMatrixInverse.S.b}}
{{FromMatrix.matrix.6*FromMatrixInverse.S.r} {FromMatrix.matrix.7*FromMatrixInverse.S.g} {FromMatrix.matrix.8*FromMatrixInverse.S.b}}
}
name ColorMatrix1
label Input_to_XYZ
xpos -554
ypos 53
addUserKnob {20 User}
addUserKnob {7 determinant}
determinant {{matrix.0*(matrix.4*matrix.8-matrix.7*matrix.5)+matrix.1*(matrix.5*matrix.6-matrix.8*matrix.3)+matrix.2*(matrix.3*matrix.7-matrix.6*matrix.4)}}
}
set Cf5156f40 [stack 0]
set Nf5156f40 [stack 0]
Colorspace {
colorspace_in CIE-XYZ
primary_in ACES
colorspace_out CIE-Yxy
name Colorspace4
xpos -434
ypos 109
}
push $Nf5156f40
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos -554
ypos 93
}
Multiply {
value {1 0 0 1}
name Multiply4
xpos -554
ypos 117
}
BlinkScript {
inputs 2
recompileCount 4
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise 4f09b488f640fe57a9b92d835cc81424078e447e427d9f43fb8d958e7333c795 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 4 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"bottom_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 4 \"padding\" 1 1 \"left_margin\" 1 1 \"bottom_margin\" 1 1 \"process_input\" 1 1 3 \"outsize\" Float 1 1 AAAAAA== \"offsetX\" Float 1 1 AAAAAA== \"offsetY\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n float bottom_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offsetX;\n float offsetY;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offsetX = left_margin;\n offsetY = bottom_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offsetX, xy.y * outsize + offsetY);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding {{1/parent.plotScale}}
plot_cie_xy_left_margin {{parent.plotOffset.x}}
plot_cie_xy_bottom_margin {{parent.plotOffset.y}}
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input
xpos -554
ypos 159
cached true
}
Dilate {
size 1
name Dilate1
xpos -554
ypos 232
}
set Nf517d2d0 [stack 0]
push $Nf517d2d0
ShuffleCopy {
inputs 2
alpha alpha2
name ShuffleCopy1
xpos -554
ypos 314
}
Group {
inputs 0
name PlanckianLocus
xpos -1030
ypos 256
addUserKnob {20 User}
addUserKnob {6 colorize +STARTLINE}
addUserKnob {41 value T Multiply1.value}
addUserKnob {26 temperature}
addUserKnob {7 start -STARTLINE R 1000 100000}
start 1000
addUserKnob {7 end R 1000 100000}
end 100000
}
Constant {
inputs 0
channels rgb
format "1620 2 0 0 1620 2 1 visible_spectrum_quarter nm"
name bg1
xpos 507
ypos -50
addUserKnob {20 User}
addUserKnob {7 wl}
wl {{clamp(frame+375,375,780)}}
}
set Nf518f130 [stack 0]
Rectangle {
area {{"(log10(parent.start)-3)/2 * width"} 0 {"(log10(parent.end)-3)/2 * width"} {height}}
name Rectangle7
xpos 289
ypos 130
}
push $Nf518f130
Ramp {
p0 {0 1}
p1 {1619 1}
name Ramp4
xpos 507
ypos 55
}
Multiply {
value {405 405 405 2}
name Multiply4
xpos 507
ypos 81
}
Add {
value {375 375 375 3}
name Add3
xpos 507
ypos 119
}
ColorLookup {
lut {master {}
red {curve x380 0.0014 x385 0.0022 0.0042 0.0076 0.0143 0.0232 0.0435 0.0776 0.1344 0.2148 0.2839 0.3285 0.3483 0.3481 0.3362 0.3187 0.2908 0.2511 0.1954 0.1421 0.0956 0.058 0.032 0.0147 0.0049 0.0024 0.0093 0.0291 0.0633 0.1096 0.1655 0.2257 0.2904 0.3597 0.4334 0.5121 0.5945 0.6784 0.7621 0.8425 0.9163 0.9786 1.0263 1.0567 1.0622 1.0456 1.0026 0.9384 0.8544 0.7514 0.6424 0.5419 0.4479 0.3608 0.2835 0.2187 0.1649 0.1212 0.0874 0.0636 0.0468 0.0329 0.0227 0.0158 0.0114 0.0081 0.0058 0.0041 0.0029 0.002 0.0014 0.001 0.0007 0.0005 0.0003 0.0002 0.0002 0.0001 0.0001 0.0001 0}
green {curve x380 0 x385 0.0001 0.0001 0.0002 0.0004 0.0006 0.0012 0.0022 0.004 0.0073 0.0116 0.0168 0.023 0.0298 0.038 0.048 0.06 0.0739 0.091 0.1126 0.139 0.1693 0.208 0.2586 0.323 0.4073 0.503 0.6082 0.71 0.7932 0.862 0.9149 0.954 0.9803 0.995 1 0.995 0.9786 0.952 0.9154 0.87 0.8163 0.757 0.6949 0.631 0.5668 0.503 0.4412 0.381 0.321 0.265 0.217 0.175 0.1382 0.107 0.0816 0.061 0.0446 0.032 0.0232 0.017 0.0119 0.0082 0.0057 0.0041 0.0029 0.0021 0.0015 0.001 0.0007 0.0005 0.0004 0.0002 0.0002 0.0001 0.0001 0.0001 0 0 0 0}
blue {curve x375 0 x380 0.0065 0.0105 0.0201 0.0362 0.0679 0.1102 0.2074 0.3713 0.6456 1.0391 1.3856 1.623 1.7471 1.7826 1.7721 1.7441 1.6692 1.5281 1.2876 1.0419 0.831 0.6162 0.4652 0.3533 0.272 0.2123 0.1582 0.1117 0.0782 0.0573 0.0422 0.0298 0.0203 0.0134 0.0087 0.0057 0.0039 0.0027 0.0021 0.0018 0.0017 0.0014 0.0011 0.001 0.0008 0.0006 0.0003 0.0002 0.0002 0.0001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
alpha {}}
name ColorLookup2
xpos 507
ypos 157
}
Expression {
expr0 r
expr1 g
expr2 b
expr3 pow(10,a)
name Expression1
xpos 507
ypos 181
}
BlinkScript {
ProgramGroup 1
KernelDescription "1 \"CCT2XYZ\" iterate pixelWise 1e5106c0628b69d1e3286f708ff894031c5f2cc6dcce2f5b6f5a0f9b492ad4d3 2 \"input\" Read Random \"dst\" Write Point 0"
kernelSource "// this kernel assumes the following in it's input:\n// an image with a width of 1620 pixels - representing 405 nm range in quarter-nm steps\n// RGB channel : CIE XYZ colour matching functions from 375nm to 780nm\n// Alpha channel : colour temperature in kelvin\n\nkernel CCT2XYZ : public ImageComputationKernel\n\{\n\tImage input; //the input image\n\tImage dst; //the output image\n\n\t//The kernel function is run at every pixel to produce the output.\n\tvoid process(int2 pos)\n\t\{\n \tSampleType(input) in = input(pos.x, pos.y);\n \tSampleType(input) cmf;\n \tfloat kelvin = in.w;\n \tint cmfY = 1;\n\t\tfloat3 ret = float3(0.f);\n\n\t\tfloat C1 = 2.0 * 3.141592653589793 * 6.626176 * 2.99792458 * 2.99792458;\n\t\tfloat C2 = (6.626176 * 2.99792458) / 1.380662;\n\n\t\t\n\t\tfor(int cmfX = 0; cmfX < input.bounds.width(); cmfX += 1)\n\t\t\{\n\t\t\tfloat nm = float(cmfX) / 4.f + 375.f;\n\t\t\tfloat dWavelengthM = nm * 1.0e-3; // * 1.0e-6\n\t\t\tfloat dWavelengthM5 = pow(dWavelengthM, 5.f); // * 1.0e-30\n\t\t\tfloat expArg = C2 / (kelvin * dWavelengthM * 1.0e-3);\n\t\t\tfloat blackbody = C1 / (dWavelengthM5 * 1.0e-12 * ( exp(expArg) - 1.0)); // -12 = -30 - (-18)\n\n\t\t\tcmf = input(cmfX, cmfY);\n\n\t\t\tret.x += (blackbody * cmf.x);\n\t\t\tret.y += (blackbody * cmf.y);\n\t\t\tret.z += (blackbody * cmf.z);\n\n\t\t\}\n\n\n\n\n\n\n\t\tret.x /= ret.y;\n\t\tret.z /= ret.y;\n\t\tret.y = 1.f;\n\n\t\tSampleType(input) out = in;\n\n\t\tout.x = ret.x;\n\t\tout.y = ret.y;\n\t\tout.z = ret.z;\n\n\t\tdst() = out;\n\t\}\n\};\n\n"
rebuild ""
rebuild_finalise ""
name BlinkScript1
selected true
xpos 507
ypos 219
}
Merge2 {
inputs 2
operation multiply
name Merge22
xpos 507
ypos 267
}
set Nf51bd6f0 [stack 0]
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
primary_out "CIE (1931)"
name Colorspace15
xpos 347
ypos 419
}
push $Nf51bd6f0
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos 640
ypos 378
}
Multiply {
value {0 0 0 1}
name Multiply1
xpos 640
ypos 404
}
push $Nf51bd6f0
ColorMatrix {
matrix {
{1.04981102 0 -9.748e-05}
{-0.49590302 1.37331305 0.09824004}
{0 0 0.99125202}
}
name ColorMatrix3
xpos 507
ypos 362
}
Expression {
temp_name0 max
temp_expr0 max(r,g,b)
expr0 "r / max"
expr1 "g / max"
expr2 "b / max"
name Expression2
xpos 507
ypos 386
}
Switch {
inputs 2
which {{parent.colorize}}
name Switch1
xpos 569
ypos 462
}
BlinkScript {
inputs 2
recompileCount 4
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise 4f09b488f640fe57a9b92d835cc81424078e447e427d9f43fb8d958e7333c795 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 4 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"bottom_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 4 \"padding\" 1 1 \"left_margin\" 1 1 \"bottom_margin\" 1 1 \"process_input\" 1 1 3 \"outsize\" Float 1 1 AAAAAA== \"offsetX\" Float 1 1 AAAAAA== \"offsetY\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n float bottom_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offsetX;\n float offsetY;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offsetX = left_margin;\n offsetY = bottom_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offsetX, xy.y * outsize + offsetY);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding {{1/parent.parent.plotScale}}
plot_cie_xy_left_margin {{parent.parent.plotOffset.x}}
plot_cie_xy_bottom_margin {{parent.parent.plotOffset.y}}
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input1
xpos 569
ypos 578
cached true
}
Dilate {
size 1
name Dilate1
xpos 569
ypos 616
}
Output {
name Output1
xpos 569
ypos 690
}
end_group
push 0
Group {
inputs 0
name SpectralLocus2
xpos -914
ypos 254
addUserKnob {20 User}
addUserKnob {6 colorize +STARTLINE}
addUserKnob {41 value T Multiply1.value}
addUserKnob {26 wavelength}
addUserKnob {7 start -STARTLINE R 375 780}
start 375
addUserKnob {7 end R 375 780}
end 780
addUserKnob {6 purples l "show \"line of purples\"" +STARTLINE}
addUserKnob {41 plotColorSpace T Switch3.which}
}
Constant {
inputs 0
channels rgb
format "16384 2 0 0 16384 2 1 14bit_lut"
name bg1
xpos 507
ypos -17
addUserKnob {20 User}
addUserKnob {7 wl}
wl {{clamp(frame+375,375,780)}}
}
set Nf5209fd0 [stack 0]
Ramp {
p0 {0 1}
p1 {16383 1}
name Ramp4
xpos 507
ypos 55
}
set Nf520e8f0 [stack 0]
Dot {
name Dot8
note_font "Bitstream Vera Sans"
xpos 681
ypos 58
}
Multiply {
value {-0.001319684205 -0.565 -0.26 1}
name Multiply2
note_font "Bitstream Vera Sans"
xpos 647
ypos 122
}
Add {
value {0.001419684151 0.737 0.2637 1}
name Add7
note_font "Bitstream Vera Sans"
xpos 647
ypos 158
}
Shuffle {
alpha white
name Shuffle22
label "\[value in]-->\[value out]"
note_font "Bitstream Vera Sans"
xpos 647
ypos 207
}
Transform {
translate {13300 0}
scale {0.1883 1}
center {0 1}
filter Impulse
name Transform1
note_font "Bitstream Vera Sans"
xpos 647
ypos 243
}
Dot {
name Dot9
note_font "Bitstream Vera Sans"
xpos 681
ypos 376
}
push $Nf5209fd0
Rectangle {
area {{width*((parent.start-375)/405)} 0 {width*((parent.end-375)/405)} 2}
name Rectangle7
xpos 289
ypos 130
}
push $Nf520e8f0
Multiply {
value 405
name Multiply4
xpos 507
ypos 81
}
Add {
value 375
name Add3
xpos 507
ypos 119
}
ColorLookup {
lut {master {}
red {curve x380 0.0014 x385 0.0022 0.0042 0.0076 0.0143 0.0232 0.0435 0.0776 0.1344 0.2148 0.2839 0.3285 0.3483 0.3481 0.3362 0.3187 0.2908 0.2511 0.1954 0.1421 0.0956 0.058 0.032 0.0147 0.0049 0.0024 0.0093 0.0291 0.0633 0.1096 0.1655 0.2257 0.2904 0.3597 0.4334 0.5121 0.5945 0.6784 0.7621 0.8425 0.9163 0.9786 1.0263 1.0567 1.0622 1.0456 1.0026 0.9384 0.8544 0.7514 0.6424 0.5419 0.4479 0.3608 0.2835 0.2187 0.1649 0.1212 0.0874 0.0636 0.0468 0.0329 0.0227 0.0158 0.0114 0.0081 0.0058 0.0041 0.0029 0.002 0.0014 0.001 0.0007 0.0005 0.0003 0.0002 0.0002 0.0001 0.0001 0.0001 0}
green {curve x380 0 x385 0.0001 0.0001 0.0002 0.0004 0.0006 0.0012 0.0022 0.004 0.0073 0.0116 0.0168 0.023 0.0298 0.038 0.048 0.06 0.0739 0.091 0.1126 0.139 0.1693 0.208 0.2586 0.323 0.4073 0.503 0.6082 0.71 0.7932 0.862 0.9149 0.954 0.9803 0.995 1 0.995 0.9786 0.952 0.9154 0.87 0.8163 0.757 0.6949 0.631 0.5668 0.503 0.4412 0.381 0.321 0.265 0.217 0.175 0.1382 0.107 0.0816 0.061 0.0446 0.032 0.0232 0.017 0.0119 0.0082 0.0057 0.0041 0.0029 0.0021 0.0015 0.001 0.0007 0.0005 0.0004 0.0002 0.0002 0.0001 0.0001 0.0001 0 0 0 0}
blue {curve x375 0 x380 0.0065 0.0105 0.0201 0.0362 0.0679 0.1102 0.2074 0.3713 0.6456 1.0391 1.3856 1.623 1.7471 1.7826 1.7721 1.7441 1.6692 1.5281 1.2876 1.0419 0.831 0.6162 0.4652 0.3533 0.272 0.2123 0.1582 0.1117 0.0782 0.0573 0.0422 0.0298 0.0203 0.0134 0.0087 0.0057 0.0039 0.0027 0.0021 0.0018 0.0017 0.0014 0.0011 0.001 0.0008 0.0006 0.0003 0.0002 0.0002 0.0001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
alpha {}}
name ColorLookup2
xpos 507
ypos 157
}
Merge2 {
inputs 2
operation multiply
name Merge22
xpos 507
ypos 226
}
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
name Colorspace1
note_font "Bitstream Vera Sans"
xpos 507
ypos 297
}
Crop {
box {500 0 13800 2}
name Crop13
xpos 507
ypos 321
}
Transform {
translate {-500 0}
center {8192 1}
name Transform3
note_font "Bitstream Vera Sans"
xpos 507
ypos 349
}
Merge2 {
inputs 2
name Merge1
note_font "Bitstream Vera Sans"
xpos 507
ypos 373
disable {{!parent.purples}}
}
Expression {
expr0 "r < 0 ? r * sole.r + lift.r : r < lift.r * 2 ? pow( (lift.r *2 - r) / (lift.r * 2), 2) * lift.r + r : r"
expr1 "g < 0 ? g * sole.g + lift.g : g < lift.g * 2 ? pow( (lift.g *2 - g) / (lift.g * 2), 2) * lift.g + g : g"
expr2 "b < 0 ? b * sole.b + lift.b : b < lift.b * 2 ? pow( (lift.b *2 - b) / (lift.b * 2), 2) * lift.b + b : b"
name ToeExpr1
xpos 507
ypos 397
addUserKnob {20 User}
addUserKnob {18 lift}
lift {0.15 0 0}
addUserKnob {6 lift_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
lift_panelDropped true
addUserKnob {6 lift_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 sole R 0 0.1}
sole {0 0 0}
addUserKnob {6 sole_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
}
Colorspace {
colorspace_in CIE-Yxy
colorspace_out CIE-XYZ
name Colorspace2
note_font "Bitstream Vera Sans"
xpos 507
ypos 421
}
set Nf528e2a0 [stack 0]
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
primary_out "CIE (1931)"
name Colorspace15
xpos 347
ypos 612
}
push $Nf528e2a0
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos 640
ypos 571
}
Multiply {
value {1 1 1 1}
name Multiply1
xpos 640
ypos 597
}
push $Nf528e2a0
ColorMatrix {
matrix {
{1.04981102 0 -9.748e-05}
{-0.49590302 1.37331305 0.09824004}
{0 0 0.99125202}
}
name ColorMatrix3
xpos 507
ypos 572
}
Shuffle {
alpha white
name Shuffle2
label "\[value in]-->\[value out]"
note_font "Bitstream Vera Sans"
xpos 507
ypos 596
}
Switch {
inputs 2
which {{parent.colorize}}
name Switch1
xpos 569
ypos 655
}
BlinkScript {
inputs 2
recompileCount 4
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise 4f09b488f640fe57a9b92d835cc81424078e447e427d9f43fb8d958e7333c795 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 4 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"bottom_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 4 \"padding\" 1 1 \"left_margin\" 1 1 \"bottom_margin\" 1 1 \"process_input\" 1 1 3 \"outsize\" Float 1 1 AAAAAA== \"offsetX\" Float 1 1 AAAAAA== \"offsetY\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n float bottom_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offsetX;\n float offsetY;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offsetX = left_margin;\n offsetY = bottom_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offsetX, xy.y * outsize + offsetY);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding {{1/parent.parent.plotScale}}
plot_cie_xy_left_margin {{parent.parent.plotOffset.x}}
plot_cie_xy_bottom_margin {{parent.parent.plotOffset.y}}
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input1
selected true
xpos 569
ypos 737
cached true
}
Dilate {
size 1
name Dilate1
xpos 569
ypos 769
}
Output {
name Output1
xpos 569
ypos 875
}
end_group
Group {
inputs 0
name SpectralLocusFill
xpos -806
ypos 230
addUserKnob {20 User}
addUserKnob {41 value T Multiply1.value}
addUserKnob {6 colorize +STARTLINE}
}
Constant {
inputs 0
channels rgb
format "16384 2 0 0 16384 2 1 14bit_lut"
name bg1
xpos 510
ypos -223
addUserKnob {20 User}
addUserKnob {7 wl}
wl {{clamp(frame+375,375,780)}}
}
Ramp {
p0 {0 1}
p1 {16383 1}
name Ramp4
xpos 510
ypos -152
}
Multiply {
value 405
name Multiply4
xpos 510
ypos -134
}
Add {
value 375
name Add3
xpos 510
ypos -86
}
ColorLookup {
lut {master {}
red {curve x380 0.0014 x385 0.0022 0.0042 0.0076 0.0143 0.0232 0.0435 0.0776 0.1344 0.2148 0.2839 0.3285 0.3483 0.3481 0.3362 0.3187 0.2908 0.2511 0.1954 0.1421 0.0956 0.058 0.032 0.0147 0.0049 0.0024 0.0093 0.0291 0.0633 0.1096 0.1655 0.2257 0.2904 0.3597 0.4334 0.5121 0.5945 0.6784 0.7621 0.8425 0.9163 0.9786 1.0263 1.0567 1.0622 1.0456 1.0026 0.9384 0.8544 0.7514 0.6424 0.5419 0.4479 0.3608 0.2835 0.2187 0.1649 0.1212 0.0874 0.0636 0.0468 0.0329 0.0227 0.0158 0.0114 0.0081 0.0058 0.0041 0.0029 0.002 0.0014 0.001 0.0007 0.0005 0.0003 0.0002 0.0002 0.0001 0.0001 0.0001 0}
green {curve x380 0 x385 0.0001 0.0001 0.0002 0.0004 0.0006 0.0012 0.0022 0.004 0.0073 0.0116 0.0168 0.023 0.0298 0.038 0.048 0.06 0.0739 0.091 0.1126 0.139 0.1693 0.208 0.2586 0.323 0.4073 0.503 0.6082 0.71 0.7932 0.862 0.9149 0.954 0.9803 0.995 1 0.995 0.9786 0.952 0.9154 0.87 0.8163 0.757 0.6949 0.631 0.5668 0.503 0.4412 0.381 0.321 0.265 0.217 0.175 0.1382 0.107 0.0816 0.061 0.0446 0.032 0.0232 0.017 0.0119 0.0082 0.0057 0.0041 0.0029 0.0021 0.0015 0.001 0.0007 0.0005 0.0004 0.0002 0.0002 0.0001 0.0001 0.0001 0 0 0 0}
blue {curve x375 0 x380 0.0065 0.0105 0.0201 0.0362 0.0679 0.1102 0.2074 0.3713 0.6456 1.0391 1.3856 1.623 1.7471 1.7826 1.7721 1.7441 1.6692 1.5281 1.2876 1.0419 0.831 0.6162 0.4652 0.3533 0.272 0.2123 0.1582 0.1117 0.0782 0.0573 0.0422 0.0298 0.0203 0.0134 0.0087 0.0057 0.0039 0.0027 0.0021 0.0018 0.0017 0.0014 0.0011 0.001 0.0008 0.0006 0.0003 0.0002 0.0002 0.0001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
alpha {}}
name ColorLookup2
xpos 510
ypos -56
}
Crop {
box {500 0 13800 2}
reformat true
crop false
name Crop13
xpos 510
ypos -5
}
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
name Colorspace9
xpos 510
ypos 84
}
Reformat {
type "to box"
format "2048 2048 0 0 2048 2048 1 square_2k"
box_width 2048
box_height 240
box_fixed true
resize distort
filter Impulse
name Reformat5
xpos 510
ypos 162
}
set Nf5322970 [stack 0]
Crop {
box {0 0 {input.width/2.5} {height}}
reformat true
crop false
name Crop4
xpos 429
ypos 269
}
set Nf532a380 [stack 0]
Shuffle {
red black
green black
blue black
alpha black
name Shuffle7
label "\[value in]-->\[value out]"
xpos 359
ypos 422
}
Ramp {
p0 {{width/2} 0}
p1 {{width/2} {height-1}}
name Ramp8
xpos 359
ypos 460
}
push $Nf532a380
push $Nf5322970
Crop {
box {{Crop4.box.r} 0 {width} {height}}
reformat true
crop false
name Crop5
xpos 578
ypos 269
}
Reformat {
type "to box"
box_width {{Crop4.box.r-Crop4.box.x}}
box_height {{Crop4.box.t-Crop4.box.y}}
box_fixed true
scale {1 0.5}
resize distort
flop true
name Reformat7
xpos 578
ypos 306
}
Keymix {
inputs 3
name Keymix5
xpos 522
ypos 525
}
Reformat {
type scale
scale 2
name Reformat1
xpos 522
ypos 557
}
set Nf534f680 [stack 0]
push $Nf534f680
Colorspace {
colorspace_in CIE-Yxy
colorspace_out CIE-XYZ
name Colorspace1
xpos 643
ypos 656
}
set Nf5357090 [stack 0]
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos 643
ypos 762
}
Multiply {
value 0.5
name Multiply1
xpos 643
ypos 804
}
push $Nf5357090
ColorMatrix {
matrix {
{1.04981102 0 -9.748e-05}
{-0.49590302 1.37331305 0.09824004}
{0 0 0.99125202}
}
name ColorMatrix3
xpos 767
ypos 781
}
Switch {
inputs 2
which {{parent.colorize}}
name Switch1
xpos 643
ypos 858
}
Multiply {
value {{parent.value.r} {parent.value.g} {parent.value.b} {parent.value.a}}
name Multiply2
xpos 643
ypos 902
}
BlinkScript {
inputs 2
recompileCount 4
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise 4f09b488f640fe57a9b92d835cc81424078e447e427d9f43fb8d958e7333c795 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 4 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"bottom_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 4 \"padding\" 1 1 \"left_margin\" 1 1 \"bottom_margin\" 1 1 \"process_input\" 1 1 3 \"outsize\" Float 1 1 AAAAAA== \"offsetX\" Float 1 1 AAAAAA== \"offsetY\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n float bottom_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offsetX;\n float offsetY;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offsetX = left_margin;\n offsetY = bottom_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offsetX, xy.y * outsize + offsetY);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding {{1/parent.parent.plotScale}}
plot_cie_xy_left_margin {{parent.parent.plotOffset.x}}
plot_cie_xy_bottom_margin {{parent.parent.plotOffset.y}}
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input1
selected true
xpos 522
ypos 986
cached true
}
Dilate {
size 2.5
name Dilate1
xpos 522
ypos 1018
}
Dilate {
size -2.5
name Dilate2
xpos 522
ypos 1050
}
Output {
name Output1
xpos 522
ypos 1117
}
end_group
Multiply {
value 0.18
name Multiply1
xpos -806
ypos 254
}
Merge2 {
inputs 4+1
name Merge2
xpos -875
ypos 314
}
Merge2 {
inputs 2
operation plus
name Merge1
xpos -875
ypos 363
}
Input {
inputs 0
name Input1
xpos 122
ypos -140
}
Dot {
name Dot2
xpos 156
ypos 11
}
set Nf53aa360 [stack 0]
Dot {
name Dot4
xpos 266
ypos 11
}
ColorMatrix {
matrix {
{{parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix}}
{{parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix}}
{{parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix}}
}
name ColorMatrix5
label "output to XYZ"
xpos 232
ypos 84
}
set Nf53aef20 [stack 0]
ColorMatrix {
matrix {
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
}
name ColorMatrix8
label "CAT Matrix\nforward"
xpos 350
ypos 79
}
Multiply {
value {{whiteInLMS.r/whiteOutLMS.r} {whiteInLMS.g/whiteOutLMS.g} {whiteInLMS.b/whiteOutLMS.b} 1}
name Multiply3
label "Scale White"
xpos 350
ypos 121
addUserKnob {20 User}
addUserKnob {18 whiteInXYZ}
whiteInXYZ {{ColorMatrix1.matrix.0+ColorMatrix1.matrix.1+ColorMatrix1.matrix.2} {ColorMatrix1.matrix.3+ColorMatrix1.matrix.4+ColorMatrix1.matrix.5} {ColorMatrix1.matrix.6+ColorMatrix1.matrix.7+ColorMatrix1.matrix.8}}
addUserKnob {6 whiteInXYZ_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteInLMS}
whiteInLMS {{whiteInXYZ.r*ColorMatrix4.matrix.0+whiteInXYZ.g*ColorMatrix4.matrix.1+whiteInXYZ.b*ColorMatrix4.matrix.2} {whiteInXYZ.r*ColorMatrix4.matrix.3+whiteInXYZ.g*ColorMatrix4.matrix.4+whiteInXYZ.b*ColorMatrix4.matrix.5} {whiteInXYZ.r*ColorMatrix4.matrix.6+whiteInXYZ.g*ColorMatrix4.matrix.7+whiteInXYZ.b*ColorMatrix4.matrix.8}}
addUserKnob {6 whiteInLMS_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteOutXYZ}
whiteOutXYZ {{ColorMatrix3.matrix.0+ColorMatrix3.matrix.1+ColorMatrix3.matrix.2} {ColorMatrix3.matrix.3+ColorMatrix3.matrix.4+ColorMatrix3.matrix.5} {ColorMatrix3.matrix.6+ColorMatrix3.matrix.7+ColorMatrix3.matrix.8}}
addUserKnob {6 whiteOutXYZ_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteOutLMS}
whiteOutLMS {{whiteOutXYZ.r*ColorMatrix4.matrix.0+whiteOutXYZ.g*ColorMatrix4.matrix.1+whiteOutXYZ.b*ColorMatrix4.matrix.2} {whiteOutXYZ.r*ColorMatrix4.matrix.3+whiteOutXYZ.g*ColorMatrix4.matrix.4+whiteOutXYZ.b*ColorMatrix4.matrix.5} {whiteOutXYZ.r*ColorMatrix4.matrix.6+whiteOutXYZ.g*ColorMatrix4.matrix.7+whiteOutXYZ.b*ColorMatrix4.matrix.8}}
addUserKnob {6 whiteOutLMS_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOut_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteIn_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
}
ColorMatrix {
matrix {
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
}
invert true
name ColorMatrix9
label "CAT Matrix\ninverse"
xpos 350
ypos 163
}
push $Nf53aef20
Switch {
inputs 2
which {{"ColorMatrix4.cat > 0"}}
name Switch4
xpos 232
ypos 172
}
ColorMatrix {
matrix {
{{FromMatrix.matrix.0*FromMatrixInverse.S.r} {FromMatrix.matrix.1*FromMatrixInverse.S.g} {FromMatrix.matrix.2*FromMatrixInverse.S.b}}
{{FromMatrix.matrix.3*FromMatrixInverse.S.r} {FromMatrix.matrix.4*FromMatrixInverse.S.g} {FromMatrix.matrix.5*FromMatrixInverse.S.b}}
{{FromMatrix.matrix.6*FromMatrixInverse.S.r} {FromMatrix.matrix.7*FromMatrixInverse.S.g} {FromMatrix.matrix.8*FromMatrixInverse.S.b}}
}
invert true
name ColorMatrix6
label "XYZ to Input"
xpos 232
ypos 213
addUserKnob {20 User}
addUserKnob {7 determinant}
determinant {{matrix.0*(matrix.4*matrix.8-matrix.7*matrix.5)+matrix.1*(matrix.5*matrix.6-matrix.8*matrix.3)+matrix.2*(matrix.3*matrix.7-matrix.6*matrix.4)}}
}
Dot {
name Dot5
xpos 266
ypos 272
}
push $Nf53aa360
Dot {
name Dot1
xpos 46
ypos 11
}
clone $Cf5156f40 {
xpos 12
ypos 74
selected false
}
set Nf53de480 [stack 0]
ColorMatrix {
matrix {
{{"\[python (1, 1, 0.8951, 0.7328)\\\[\[numvalue cat]\\]]"} {"\[python (0, 0, 0.2664, 0.4296)\\\[\[numvalue cat]\\]]"} {"\[python (0, 0, -0.1614, -0.1624)\\\[\[numvalue cat]\\]]"}}
{{"\[python (0, 0, -0.7502, -0.7036)\\\[\[numvalue cat]\\]]"} {"\[python (1, 1, 1.7135, 1.6975)\\\[\[numvalue cat]\\]]"} {"\[python (0, 0, 0.0367, 0.0061)\\\[\[numvalue cat]\\]]"}}
{{"\[python (0, 0, 0.0389, 0.003)\\\[\[numvalue cat]\\]]"} {"\[python (0, 0, -0.0685, 0.0136)\\\[\[numvalue cat]\\]]"} {"\[python (1, 1, 1.0296, 0.9834)\\\[\[numvalue cat]\\]]"}}
}
name ColorMatrix4
label "CAT Matrix\n\[value cat]\n\[python ('forward', 'inverse')\\\[\[numvalue invert]\\]]"
xpos -113
ypos 64
addUserKnob {20 User}
addUserKnob {4 cat M {None "XYZ Scaling" Bradford CAT02}}
cat CAT02
}
Multiply {
value {{whiteOutLMS.r/whiteInLMS.r} {whiteOutLMS.g/whiteInLMS.g} {whiteOutLMS.b/whiteInLMS.b} 1}
name Multiply2
label "Scale White"
xpos -113
ypos 116
addUserKnob {20 User}
addUserKnob {18 whiteInXYZ}
whiteInXYZ {{ColorMatrix1.matrix.0+ColorMatrix1.matrix.1+ColorMatrix1.matrix.2} {ColorMatrix1.matrix.3+ColorMatrix1.matrix.4+ColorMatrix1.matrix.5} {ColorMatrix1.matrix.6+ColorMatrix1.matrix.7+ColorMatrix1.matrix.8}}
addUserKnob {6 whiteInXYZ_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteInLMS}
whiteInLMS {{whiteInXYZ.r*ColorMatrix4.matrix.0+whiteInXYZ.g*ColorMatrix4.matrix.1+whiteInXYZ.b*ColorMatrix4.matrix.2} {whiteInXYZ.r*ColorMatrix4.matrix.3+whiteInXYZ.g*ColorMatrix4.matrix.4+whiteInXYZ.b*ColorMatrix4.matrix.5} {whiteInXYZ.r*ColorMatrix4.matrix.6+whiteInXYZ.g*ColorMatrix4.matrix.7+whiteInXYZ.b*ColorMatrix4.matrix.8}}
addUserKnob {6 whiteInLMS_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteOutXYZ}
whiteOutXYZ {{ColorMatrix3.matrix.0+ColorMatrix3.matrix.1+ColorMatrix3.matrix.2} {ColorMatrix3.matrix.3+ColorMatrix3.matrix.4+ColorMatrix3.matrix.5} {ColorMatrix3.matrix.6+ColorMatrix3.matrix.7+ColorMatrix3.matrix.8}}
addUserKnob {6 whiteOutXYZ_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteOutLMS}
whiteOutLMS {{whiteOutXYZ.r*ColorMatrix4.matrix.0+whiteOutXYZ.g*ColorMatrix4.matrix.1+whiteOutXYZ.b*ColorMatrix4.matrix.2} {whiteOutXYZ.r*ColorMatrix4.matrix.3+whiteOutXYZ.g*ColorMatrix4.matrix.4+whiteOutXYZ.b*ColorMatrix4.matrix.5} {whiteOutXYZ.r*ColorMatrix4.matrix.6+whiteOutXYZ.g*ColorMatrix4.matrix.7+whiteOutXYZ.b*ColorMatrix4.matrix.8}}
addUserKnob {6 whiteOutLMS_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOut_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteIn_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
}
ColorMatrix {
matrix {
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
}
invert true
name ColorMatrix7
label "CAT Matrix\ninverse"
xpos -113
ypos 158
}
push $Nf53de480
Switch {
inputs 2
which {{"ColorMatrix4.cat > 0"}}
name Switch2
xpos 12
ypos 167
}
ColorMatrix {
matrix {
{{"\[python (0.9525523959, 0.6624541811, 0.4123907993, 0.6369580483, 0.4865709486, 0.6380076193, 0.4581609159, 0.4878301118, 0.4516946649, 0.5070147865, 0.4462154077, 0.7352752459, 0.7064827132, 0.7064827132, 0.5990839208, 0.7976672348, 1.0000000000, 1.48804061)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.0000000000, 0.1340042065, 0.3575843394, 0.1446169036, 0.2656676932, 0.2147038563, 0.3832048061, 0.3432736678, 0.3178467119, 0.3587783652, 0.3157557129, 0.0686094106, 0.1288010498, 0.1288010498, 0.2489255161, 0.1351922306, 0.0000000000, -0.23423647)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.0000936786, 0.1561876870, 0.1804807884, 0.1688809752, 0.1982172852, 0.0977444514, 0.1112803526, 0.1215422950, 0.1831046977, 0.0868529229, 0.1906749540, 0.1465712705, 0.1151721641, 0.1151721641, 0.1024464902, 0.0313525290, 0.0000000000, -0.3011580651)\\\[\[numvalue gamut]\\]]\n"}}
{{"\[python (0.3439664498, 0.2722287168, 0.2126390059, 0.2627002120, 0.2289745641, 0.2919537790, 0.1694420971, 0.2289038124, 0.2119478695, 0.2207240223, 0.1942557952, 0.2866940995, 0.2709796708, 0.2709796708, 0.2150758201, 0.2880374539, 0.0000000000, 0.2501373809)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.7281660966, 0.6740817658, 0.7151686788, 0.6779980715, 0.6917385218, 0.8238410415, 0.8648282025, 0.7808598244, 0.7230197720, 0.8391880546, 0.7385568692, 0.8429791340, 0.7866064112, 0.7866064112, 0.8850685017, 0.7118768834, 1.0000000000, 1.210452347)\\\[\[numvalue gamut]\\]]\n"} {"\[python (-0.0721325464, 0.0536895174, 0.0721923154, 0.0593017165, 0.0792869141, -0.1157948205, -0.0342702996, -0.0097636368, 0.0650323585, -0.0599120769, 0.0671873356, -0.1296732335, -0.0575860820, -0.0575860820, -0.1001443219, 0.0000856626, 0.0000000000, -0.4605897283)\\\[\[numvalue gamut]\\]]\n"}}
{{"\[python (0.0000000000, -0.0055746495, 0.0193308187, 0.0000000000, 0.0000000000, 0.0027982790, -0.1061849690, -0.0210075899, -0.0194509094, -0.0544519405, -0.0479226710, -0.0796808569, -0.0096778454, -0.0096778454, -0.0320658495, 0.0000000000, 0.0000000000, -0.4416591448)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.0000000000, 0.0040607335, 0.1191947798, 0.0280726930, 0.0451133819, -0.0670342357, 0.0255435258, 0.0178269864, 0.0165064159, -0.0003228254, -0.0002844886, -0.3473432170, 0.0046000375, 0.0046000375, -0.0276583907, 0.0000000000, 0.0000000000, -0.2480497808)\\\[\[numvalue gamut]\\]]\n"} {"\[python (1.0088251844, 1.0103391003, 0.9505321522, 1.0609850577, 1.0439443689, 1.1532937074, 1.0894666276, 1.0120057879, 1.0117696778, 1.0635999502, 1.0570323440, 1.5160818246, 1.0941355587, 1.0941355587, 1.1487819910, 0.8251882845, 1.0000000000, 1.69853411)\\\[\[numvalue gamut]\\]]\n"}}
}
invert true
name ColorMatrix3
label "XYZ to output"
note_font "Bitstream Vera Sans"
xpos 12
ypos 210
addUserKnob {20 User}
addUserKnob {4 gamut M {ACES ACEScg "Rec709 / sRGB" Rec2020 P3 AlexaWideGamut REDColor2 REDColor3 REDColor4 DRAGONcolor DRAGONcolor2 REDWideGamutRGB SGamut SGamut3 SGamut3.Cine ProPhoto "CIE XYZ" "Huge Gamut AP0 x 2" ""}}
gamut ACEScg
}
Dot {
name Dot3
xpos 46
ypos 272
}
Switch {
inputs 2
which {{parent.inverse}}
name Switch3
xpos 126
ypos 269
}
Switch {
inputs 2
which {{parent.showPlot}}
name Switch1
xpos 126
ypos 363
}
Output {
name Output1
xpos 126
ypos 434
}
ColorMatrix {
inputs 0
matrix {
{{(FromMatrix.matrix.4*FromMatrix.matrix.8-FromMatrix.matrix.7*FromMatrix.matrix.5)/FromMatrix.determinant} {(FromMatrix.matrix.7*FromMatrix.matrix.2-FromMatrix.matrix.1*FromMatrix.matrix.8)/FromMatrix.determinant} {(FromMatrix.matrix.1*FromMatrix.matrix.5-FromMatrix.matrix.4*FromMatrix.matrix.2)/FromMatrix.determinant}}
{{(FromMatrix.matrix.5*FromMatrix.matrix.6-FromMatrix.matrix.8*FromMatrix.matrix.3)/FromMatrix.determinant} {(FromMatrix.matrix.8*FromMatrix.matrix.0-FromMatrix.matrix.2*FromMatrix.matrix.6)/FromMatrix.determinant} {(FromMatrix.matrix.2*FromMatrix.matrix.3-FromMatrix.matrix.5*FromMatrix.matrix.0)/FromMatrix.determinant}}
{{(FromMatrix.matrix.3*FromMatrix.matrix.7-FromMatrix.matrix.6*FromMatrix.matrix.4)/FromMatrix.determinant} {(FromMatrix.matrix.6*FromMatrix.matrix.1-FromMatrix.matrix.0*FromMatrix.matrix.7)/FromMatrix.determinant} {(FromMatrix.matrix.0*FromMatrix.matrix.4-FromMatrix.matrix.3*FromMatrix.matrix.1)/FromMatrix.determinant}}
}
name FromMatrixInverse
label FromParimaries-1
xpos -1169
ypos 165
addUserKnob {20 User}
addUserKnob {13 white}
white {{FromMatrix.white.x/FromMatrix.white.y} 1 {(1-FromMatrix.white.x-FromMatrix.white.y)/FromMatrix.white.y}}
addUserKnob {18 S}
S {{matrix.0*white.x+matrix.1*white.y+matrix.2*white.z} {matrix.3*white.x+matrix.4*white.y+matrix.5*white.z} {matrix.6*white.x+matrix.7*white.y+matrix.8*white.z}}
addUserKnob {6 S_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
}
ColorMatrix {
inputs 0
matrix {
{{(ColorMatrix1.matrix.4*ColorMatrix1.matrix.8-ColorMatrix1.matrix.7*ColorMatrix1.matrix.5)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.7*ColorMatrix1.matrix.2-ColorMatrix1.matrix.1*ColorMatrix1.matrix.8)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.1*ColorMatrix1.matrix.5-ColorMatrix1.matrix.4*ColorMatrix1.matrix.2)/ColorMatrix1.determinant}}
{{(ColorMatrix1.matrix.5*ColorMatrix1.matrix.6-ColorMatrix1.matrix.8*ColorMatrix1.matrix.3)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.8*ColorMatrix1.matrix.0-ColorMatrix1.matrix.2*ColorMatrix1.matrix.6)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.2*ColorMatrix1.matrix.3-ColorMatrix1.matrix.5*ColorMatrix1.matrix.0)/ColorMatrix1.determinant}}
{{(ColorMatrix1.matrix.3*ColorMatrix1.matrix.7-ColorMatrix1.matrix.6*ColorMatrix1.matrix.4)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.6*ColorMatrix1.matrix.1-ColorMatrix1.matrix.0*ColorMatrix1.matrix.7)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.0*ColorMatrix1.matrix.4-ColorMatrix1.matrix.3*ColorMatrix1.matrix.1)/ColorMatrix1.determinant}}
}
name ColorMatrix2
label XYZ_to_Input
note_font "Bitstream Vera Sans"
xpos -435
ypos 52
}
end_group
push $Nec359400
Group {
name FreeformGamut8
label "RED\nRedWideGamutRGB"
xpos 11173
ypos 439
addUserKnob {20 Primaries}
addUserKnob {26 inputPrimaries -STARTLINE T ""}
addUserKnob {41 white T FromMatrix.white}
addUserKnob {41 red T FromMatrix.red}
addUserKnob {41 green T FromMatrix.green}
addUserKnob {41 blue T FromMatrix.blue}
addUserKnob {26 ""}
addUserKnob {41 outputColorspace T ColorMatrix3.gamut}
addUserKnob {6 inverse -STARTLINE}
addUserKnob {26 ""}
addUserKnob {6 showPlot +STARTLINE}
addUserKnob {20 plotSettings n 1}
plotSettings 0
addUserKnob {7 plotScale R 0 2}
plotScale 0.5
addUserKnob {12 plotOffset}
plotOffset {409.6 409.6}
addUserKnob {20 endGroup n -1}
addUserKnob {20 Matrices}
addUserKnob {41 rgbToXyzMatrix T ColorMatrix1.matrix}
addUserKnob {26 ""}
addUserKnob {41 cat T ColorMatrix4.cat}
addUserKnob {26 ""}
addUserKnob {41 xyzToRgbMatrix T ColorMatrix2.matrix}
}
Constant {
inputs 0
format "1 1 0 0 1 1 1 1_pixel"
name Constant1
xpos -1301
ypos 69
}
ColorMatrix {
matrix {
{{red.x/red.y} {green.x/green.y} {blue.x/blue.y}}
{1 1 1}
{{(1-red.x-red.y)/red.y} {(1-green.x-green.y)/green.y} {(1-blue.x-blue.y)/blue.y}}
}
name FromMatrix
label FromParimaries
xpos -1301
ypos 167
addUserKnob {20 User}
addUserKnob {12 white}
white {0.3127 0.329}
addUserKnob {12 red}
red {0.780308 0.304253}
addUserKnob {12 green}
green {0.121595 1.493994}
addUserKnob {12 blue}
blue {0.095612 -0.084589}
addUserKnob {7 determinant}
determinant {{matrix.0*(matrix.4*matrix.8-matrix.7*matrix.5)+matrix.1*(matrix.5*matrix.6-matrix.8*matrix.3)+matrix.2*(matrix.3*matrix.7-matrix.6*matrix.4)}}
}
Reformat {
format "2048 2048 0 0 2048 2048 1 square_2k"
resize distort
filter Impulse
name Reformat1
xpos -1301
ypos 291
}
Shuffle {
red black
green black
blue black
alpha black
name Shuffle2
label "\[value in]-->\[value out]"
xpos -1301
ypos 331
}
Transform {
translate {{parent.plotOffset.x} {parent.plotOffset.y}}
scale {{parent.plotScale}}
black_outside false
name Transform1
xpos -1301
ypos 363
}
ColorWheel {
inputs 0
format "512 512 0 0 512 512 1 square_512"
centerSaturation 1
name ColorWheel4
xpos -554
ypos -58
}
ColorMatrix {
matrix {
{{FromMatrix.matrix.0*FromMatrixInverse.S.r} {FromMatrix.matrix.1*FromMatrixInverse.S.g} {FromMatrix.matrix.2*FromMatrixInverse.S.b}}
{{FromMatrix.matrix.3*FromMatrixInverse.S.r} {FromMatrix.matrix.4*FromMatrixInverse.S.g} {FromMatrix.matrix.5*FromMatrixInverse.S.b}}
{{FromMatrix.matrix.6*FromMatrixInverse.S.r} {FromMatrix.matrix.7*FromMatrixInverse.S.g} {FromMatrix.matrix.8*FromMatrixInverse.S.b}}
}
name ColorMatrix1
label Input_to_XYZ
xpos -554
ypos 53
addUserKnob {20 User}
addUserKnob {7 determinant}
determinant {{matrix.0*(matrix.4*matrix.8-matrix.7*matrix.5)+matrix.1*(matrix.5*matrix.6-matrix.8*matrix.3)+matrix.2*(matrix.3*matrix.7-matrix.6*matrix.4)}}
}
set Cf5457120 [stack 0]
set Nf5457120 [stack 0]
Colorspace {
colorspace_in CIE-XYZ
primary_in ACES
colorspace_out CIE-Yxy
name Colorspace4
xpos -434
ypos 109
}
push $Nf5457120
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos -554
ypos 93
}
Multiply {
value {1 0 0 1}
name Multiply4
xpos -554
ypos 117
}
BlinkScript {
inputs 2
recompileCount 4
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise 4f09b488f640fe57a9b92d835cc81424078e447e427d9f43fb8d958e7333c795 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 4 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"bottom_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 4 \"padding\" 1 1 \"left_margin\" 1 1 \"bottom_margin\" 1 1 \"process_input\" 1 1 3 \"outsize\" Float 1 1 AAAAAA== \"offsetX\" Float 1 1 AAAAAA== \"offsetY\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n float bottom_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offsetX;\n float offsetY;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offsetX = left_margin;\n offsetY = bottom_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offsetX, xy.y * outsize + offsetY);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding {{1/parent.plotScale}}
plot_cie_xy_left_margin {{parent.plotOffset.x}}
plot_cie_xy_bottom_margin {{parent.plotOffset.y}}
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input
xpos -554
ypos 159
cached true
}
Dilate {
size 1
name Dilate1
xpos -554
ypos 232
}
set Nf547d4b0 [stack 0]
push $Nf547d4b0
ShuffleCopy {
inputs 2
alpha alpha2
name ShuffleCopy1
xpos -554
ypos 314
}
Group {
inputs 0
name PlanckianLocus
xpos -1030
ypos 256
addUserKnob {20 User}
addUserKnob {6 colorize +STARTLINE}
addUserKnob {41 value T Multiply1.value}
addUserKnob {26 temperature}
addUserKnob {7 start -STARTLINE R 1000 100000}
start 1000
addUserKnob {7 end R 1000 100000}
end 100000
}
Constant {
inputs 0
channels rgb
format "1620 2 0 0 1620 2 1 visible_spectrum_quarter nm"
name bg1
xpos 507
ypos -50
addUserKnob {20 User}
addUserKnob {7 wl}
wl {{clamp(frame+375,375,780)}}
}
set Nf548f310 [stack 0]
Rectangle {
area {{"(log10(parent.start)-3)/2 * width"} 0 {"(log10(parent.end)-3)/2 * width"} {height}}
name Rectangle7
xpos 289
ypos 130
}
push $Nf548f310
Ramp {
p0 {0 1}
p1 {1619 1}
name Ramp4
xpos 507
ypos 55
}
Multiply {
value {405 405 405 2}
name Multiply4
xpos 507
ypos 81
}
Add {
value {375 375 375 3}
name Add3
xpos 507
ypos 119
}
ColorLookup {
lut {master {}
red {curve x380 0.0014 x385 0.0022 0.0042 0.0076 0.0143 0.0232 0.0435 0.0776 0.1344 0.2148 0.2839 0.3285 0.3483 0.3481 0.3362 0.3187 0.2908 0.2511 0.1954 0.1421 0.0956 0.058 0.032 0.0147 0.0049 0.0024 0.0093 0.0291 0.0633 0.1096 0.1655 0.2257 0.2904 0.3597 0.4334 0.5121 0.5945 0.6784 0.7621 0.8425 0.9163 0.9786 1.0263 1.0567 1.0622 1.0456 1.0026 0.9384 0.8544 0.7514 0.6424 0.5419 0.4479 0.3608 0.2835 0.2187 0.1649 0.1212 0.0874 0.0636 0.0468 0.0329 0.0227 0.0158 0.0114 0.0081 0.0058 0.0041 0.0029 0.002 0.0014 0.001 0.0007 0.0005 0.0003 0.0002 0.0002 0.0001 0.0001 0.0001 0}
green {curve x380 0 x385 0.0001 0.0001 0.0002 0.0004 0.0006 0.0012 0.0022 0.004 0.0073 0.0116 0.0168 0.023 0.0298 0.038 0.048 0.06 0.0739 0.091 0.1126 0.139 0.1693 0.208 0.2586 0.323 0.4073 0.503 0.6082 0.71 0.7932 0.862 0.9149 0.954 0.9803 0.995 1 0.995 0.9786 0.952 0.9154 0.87 0.8163 0.757 0.6949 0.631 0.5668 0.503 0.4412 0.381 0.321 0.265 0.217 0.175 0.1382 0.107 0.0816 0.061 0.0446 0.032 0.0232 0.017 0.0119 0.0082 0.0057 0.0041 0.0029 0.0021 0.0015 0.001 0.0007 0.0005 0.0004 0.0002 0.0002 0.0001 0.0001 0.0001 0 0 0 0}
blue {curve x375 0 x380 0.0065 0.0105 0.0201 0.0362 0.0679 0.1102 0.2074 0.3713 0.6456 1.0391 1.3856 1.623 1.7471 1.7826 1.7721 1.7441 1.6692 1.5281 1.2876 1.0419 0.831 0.6162 0.4652 0.3533 0.272 0.2123 0.1582 0.1117 0.0782 0.0573 0.0422 0.0298 0.0203 0.0134 0.0087 0.0057 0.0039 0.0027 0.0021 0.0018 0.0017 0.0014 0.0011 0.001 0.0008 0.0006 0.0003 0.0002 0.0002 0.0001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
alpha {}}
name ColorLookup2
xpos 507
ypos 157
}
Expression {
expr0 r
expr1 g
expr2 b
expr3 pow(10,a)
name Expression1
xpos 507
ypos 181
}
BlinkScript {
ProgramGroup 1
KernelDescription "1 \"CCT2XYZ\" iterate pixelWise 1e5106c0628b69d1e3286f708ff894031c5f2cc6dcce2f5b6f5a0f9b492ad4d3 2 \"input\" Read Random \"dst\" Write Point 0"
kernelSource "// this kernel assumes the following in it's input:\n// an image with a width of 1620 pixels - representing 405 nm range in quarter-nm steps\n// RGB channel : CIE XYZ colour matching functions from 375nm to 780nm\n// Alpha channel : colour temperature in kelvin\n\nkernel CCT2XYZ : public ImageComputationKernel\n\{\n\tImage input; //the input image\n\tImage dst; //the output image\n\n\t//The kernel function is run at every pixel to produce the output.\n\tvoid process(int2 pos)\n\t\{\n \tSampleType(input) in = input(pos.x, pos.y);\n \tSampleType(input) cmf;\n \tfloat kelvin = in.w;\n \tint cmfY = 1;\n\t\tfloat3 ret = float3(0.f);\n\n\t\tfloat C1 = 2.0 * 3.141592653589793 * 6.626176 * 2.99792458 * 2.99792458;\n\t\tfloat C2 = (6.626176 * 2.99792458) / 1.380662;\n\n\t\t\n\t\tfor(int cmfX = 0; cmfX < input.bounds.width(); cmfX += 1)\n\t\t\{\n\t\t\tfloat nm = float(cmfX) / 4.f + 375.f;\n\t\t\tfloat dWavelengthM = nm * 1.0e-3; // * 1.0e-6\n\t\t\tfloat dWavelengthM5 = pow(dWavelengthM, 5.f); // * 1.0e-30\n\t\t\tfloat expArg = C2 / (kelvin * dWavelengthM * 1.0e-3);\n\t\t\tfloat blackbody = C1 / (dWavelengthM5 * 1.0e-12 * ( exp(expArg) - 1.0)); // -12 = -30 - (-18)\n\n\t\t\tcmf = input(cmfX, cmfY);\n\n\t\t\tret.x += (blackbody * cmf.x);\n\t\t\tret.y += (blackbody * cmf.y);\n\t\t\tret.z += (blackbody * cmf.z);\n\n\t\t\}\n\n\n\n\n\n\n\t\tret.x /= ret.y;\n\t\tret.z /= ret.y;\n\t\tret.y = 1.f;\n\n\t\tSampleType(input) out = in;\n\n\t\tout.x = ret.x;\n\t\tout.y = ret.y;\n\t\tout.z = ret.z;\n\n\t\tdst() = out;\n\t\}\n\};\n\n"
rebuild ""
rebuild_finalise ""
name BlinkScript1
selected true
xpos 507
ypos 219
}
Merge2 {
inputs 2
operation multiply
name Merge22
xpos 507
ypos 267
}
set Nf54bd8d0 [stack 0]
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
primary_out "CIE (1931)"
name Colorspace15
xpos 347
ypos 419
}
push $Nf54bd8d0
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos 640
ypos 378
}
Multiply {
value {0 0 0 1}
name Multiply1
xpos 640
ypos 404
}
push $Nf54bd8d0
ColorMatrix {
matrix {
{1.04981102 0 -9.748e-05}
{-0.49590302 1.37331305 0.09824004}
{0 0 0.99125202}
}
name ColorMatrix3
xpos 507
ypos 362
}
Expression {
temp_name0 max
temp_expr0 max(r,g,b)
expr0 "r / max"
expr1 "g / max"
expr2 "b / max"
name Expression2
xpos 507
ypos 386
}
Switch {
inputs 2
which {{parent.colorize}}
name Switch1
xpos 569
ypos 462
}
BlinkScript {
inputs 2
recompileCount 4
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise 4f09b488f640fe57a9b92d835cc81424078e447e427d9f43fb8d958e7333c795 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 4 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"bottom_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 4 \"padding\" 1 1 \"left_margin\" 1 1 \"bottom_margin\" 1 1 \"process_input\" 1 1 3 \"outsize\" Float 1 1 AAAAAA== \"offsetX\" Float 1 1 AAAAAA== \"offsetY\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n float bottom_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offsetX;\n float offsetY;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offsetX = left_margin;\n offsetY = bottom_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offsetX, xy.y * outsize + offsetY);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding {{1/parent.parent.plotScale}}
plot_cie_xy_left_margin {{parent.parent.plotOffset.x}}
plot_cie_xy_bottom_margin {{parent.parent.plotOffset.y}}
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input1
xpos 569
ypos 578
cached true
}
Dilate {
size 1
name Dilate1
xpos 569
ypos 616
}
Output {
name Output1
xpos 569
ypos 690
}
end_group
push 0
Group {
inputs 0
name SpectralLocus2
xpos -914
ypos 254
addUserKnob {20 User}
addUserKnob {6 colorize +STARTLINE}
addUserKnob {41 value T Multiply1.value}
addUserKnob {26 wavelength}
addUserKnob {7 start -STARTLINE R 375 780}
start 375
addUserKnob {7 end R 375 780}
end 780
addUserKnob {6 purples l "show \"line of purples\"" +STARTLINE}
addUserKnob {41 plotColorSpace T Switch3.which}
}
Constant {
inputs 0
channels rgb
format "16384 2 0 0 16384 2 1 14bit_lut"
name bg1
xpos 507
ypos -17
addUserKnob {20 User}
addUserKnob {7 wl}
wl {{clamp(frame+375,375,780)}}
}
set Nf550a160 [stack 0]
Ramp {
p0 {0 1}
p1 {16383 1}
name Ramp4
xpos 507
ypos 55
}
set Nf550ea80 [stack 0]
Dot {
name Dot8
note_font "Bitstream Vera Sans"
xpos 681
ypos 58
}
Multiply {
value {-0.001319684205 -0.565 -0.26 1}
name Multiply2
note_font "Bitstream Vera Sans"
xpos 647
ypos 122
}
Add {
value {0.001419684151 0.737 0.2637 1}
name Add7
note_font "Bitstream Vera Sans"
xpos 647
ypos 158
}
Shuffle {
alpha white
name Shuffle22
label "\[value in]-->\[value out]"
note_font "Bitstream Vera Sans"
xpos 647
ypos 207
}
Transform {
translate {13300 0}
scale {0.1883 1}
center {0 1}
filter Impulse
name Transform1
note_font "Bitstream Vera Sans"
xpos 647
ypos 243
}
Dot {
name Dot9
note_font "Bitstream Vera Sans"
xpos 681
ypos 376
}
push $Nf550a160
Rectangle {
area {{width*((parent.start-375)/405)} 0 {width*((parent.end-375)/405)} 2}
name Rectangle7
xpos 289
ypos 130
}
push $Nf550ea80
Multiply {
value 405
name Multiply4
xpos 507
ypos 81
}
Add {
value 375
name Add3
xpos 507
ypos 119
}
ColorLookup {
lut {master {}
red {curve x380 0.0014 x385 0.0022 0.0042 0.0076 0.0143 0.0232 0.0435 0.0776 0.1344 0.2148 0.2839 0.3285 0.3483 0.3481 0.3362 0.3187 0.2908 0.2511 0.1954 0.1421 0.0956 0.058 0.032 0.0147 0.0049 0.0024 0.0093 0.0291 0.0633 0.1096 0.1655 0.2257 0.2904 0.3597 0.4334 0.5121 0.5945 0.6784 0.7621 0.8425 0.9163 0.9786 1.0263 1.0567 1.0622 1.0456 1.0026 0.9384 0.8544 0.7514 0.6424 0.5419 0.4479 0.3608 0.2835 0.2187 0.1649 0.1212 0.0874 0.0636 0.0468 0.0329 0.0227 0.0158 0.0114 0.0081 0.0058 0.0041 0.0029 0.002 0.0014 0.001 0.0007 0.0005 0.0003 0.0002 0.0002 0.0001 0.0001 0.0001 0}
green {curve x380 0 x385 0.0001 0.0001 0.0002 0.0004 0.0006 0.0012 0.0022 0.004 0.0073 0.0116 0.0168 0.023 0.0298 0.038 0.048 0.06 0.0739 0.091 0.1126 0.139 0.1693 0.208 0.2586 0.323 0.4073 0.503 0.6082 0.71 0.7932 0.862 0.9149 0.954 0.9803 0.995 1 0.995 0.9786 0.952 0.9154 0.87 0.8163 0.757 0.6949 0.631 0.5668 0.503 0.4412 0.381 0.321 0.265 0.217 0.175 0.1382 0.107 0.0816 0.061 0.0446 0.032 0.0232 0.017 0.0119 0.0082 0.0057 0.0041 0.0029 0.0021 0.0015 0.001 0.0007 0.0005 0.0004 0.0002 0.0002 0.0001 0.0001 0.0001 0 0 0 0}
blue {curve x375 0 x380 0.0065 0.0105 0.0201 0.0362 0.0679 0.1102 0.2074 0.3713 0.6456 1.0391 1.3856 1.623 1.7471 1.7826 1.7721 1.7441 1.6692 1.5281 1.2876 1.0419 0.831 0.6162 0.4652 0.3533 0.272 0.2123 0.1582 0.1117 0.0782 0.0573 0.0422 0.0298 0.0203 0.0134 0.0087 0.0057 0.0039 0.0027 0.0021 0.0018 0.0017 0.0014 0.0011 0.001 0.0008 0.0006 0.0003 0.0002 0.0002 0.0001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
alpha {}}
name ColorLookup2
xpos 507
ypos 157
}
Merge2 {
inputs 2
operation multiply
name Merge22
xpos 507
ypos 226
}
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
name Colorspace1
note_font "Bitstream Vera Sans"
xpos 507
ypos 297
}
Crop {
box {500 0 13800 2}
name Crop13
xpos 507
ypos 321
}
Transform {
translate {-500 0}
center {8192 1}
name Transform3
note_font "Bitstream Vera Sans"
xpos 507
ypos 349
}
Merge2 {
inputs 2
name Merge1
note_font "Bitstream Vera Sans"
xpos 507
ypos 373
disable {{!parent.purples}}
}
Expression {
expr0 "r < 0 ? r * sole.r + lift.r : r < lift.r * 2 ? pow( (lift.r *2 - r) / (lift.r * 2), 2) * lift.r + r : r"
expr1 "g < 0 ? g * sole.g + lift.g : g < lift.g * 2 ? pow( (lift.g *2 - g) / (lift.g * 2), 2) * lift.g + g : g"
expr2 "b < 0 ? b * sole.b + lift.b : b < lift.b * 2 ? pow( (lift.b *2 - b) / (lift.b * 2), 2) * lift.b + b : b"
name ToeExpr1
xpos 507
ypos 397
addUserKnob {20 User}
addUserKnob {18 lift}
lift {0.15 0 0}
addUserKnob {6 lift_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
lift_panelDropped true
addUserKnob {6 lift_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 sole R 0 0.1}
sole {0 0 0}
addUserKnob {6 sole_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
}
Colorspace {
colorspace_in CIE-Yxy
colorspace_out CIE-XYZ
name Colorspace2
note_font "Bitstream Vera Sans"
xpos 507
ypos 421
}
set Nf558e430 [stack 0]
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
primary_out "CIE (1931)"
name Colorspace15
xpos 347
ypos 612
}
push $Nf558e430
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos 640
ypos 571
}
Multiply {
value {1 1 1 1}
name Multiply1
xpos 640
ypos 597
}
push $Nf558e430
ColorMatrix {
matrix {
{1.04981102 0 -9.748e-05}
{-0.49590302 1.37331305 0.09824004}
{0 0 0.99125202}
}
name ColorMatrix3
xpos 507
ypos 572
}
Shuffle {
alpha white
name Shuffle2
label "\[value in]-->\[value out]"
note_font "Bitstream Vera Sans"
xpos 507
ypos 596
}
Switch {
inputs 2
which {{parent.colorize}}
name Switch1
xpos 569
ypos 655
}
BlinkScript {
inputs 2
recompileCount 4
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise 4f09b488f640fe57a9b92d835cc81424078e447e427d9f43fb8d958e7333c795 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 4 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"bottom_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 4 \"padding\" 1 1 \"left_margin\" 1 1 \"bottom_margin\" 1 1 \"process_input\" 1 1 3 \"outsize\" Float 1 1 AAAAAA== \"offsetX\" Float 1 1 AAAAAA== \"offsetY\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n float bottom_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offsetX;\n float offsetY;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offsetX = left_margin;\n offsetY = bottom_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offsetX, xy.y * outsize + offsetY);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding {{1/parent.parent.plotScale}}
plot_cie_xy_left_margin {{parent.parent.plotOffset.x}}
plot_cie_xy_bottom_margin {{parent.parent.plotOffset.y}}
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input1
selected true
xpos 569
ypos 737
cached true
}
Dilate {
size 1
name Dilate1
xpos 569
ypos 769
}
Output {
name Output1
xpos 569
ypos 875
}
end_group
Group {
inputs 0
name SpectralLocusFill
xpos -806
ypos 230
addUserKnob {20 User}
addUserKnob {41 value T Multiply1.value}
addUserKnob {6 colorize +STARTLINE}
}
Constant {
inputs 0
channels rgb
format "16384 2 0 0 16384 2 1 14bit_lut"
name bg1
xpos 510
ypos -223
addUserKnob {20 User}
addUserKnob {7 wl}
wl {{clamp(frame+375,375,780)}}
}
Ramp {
p0 {0 1}
p1 {16383 1}
name Ramp4
xpos 510
ypos -152
}
Multiply {
value 405
name Multiply4
xpos 510
ypos -134
}
Add {
value 375
name Add3
xpos 510
ypos -86
}
ColorLookup {
lut {master {}
red {curve x380 0.0014 x385 0.0022 0.0042 0.0076 0.0143 0.0232 0.0435 0.0776 0.1344 0.2148 0.2839 0.3285 0.3483 0.3481 0.3362 0.3187 0.2908 0.2511 0.1954 0.1421 0.0956 0.058 0.032 0.0147 0.0049 0.0024 0.0093 0.0291 0.0633 0.1096 0.1655 0.2257 0.2904 0.3597 0.4334 0.5121 0.5945 0.6784 0.7621 0.8425 0.9163 0.9786 1.0263 1.0567 1.0622 1.0456 1.0026 0.9384 0.8544 0.7514 0.6424 0.5419 0.4479 0.3608 0.2835 0.2187 0.1649 0.1212 0.0874 0.0636 0.0468 0.0329 0.0227 0.0158 0.0114 0.0081 0.0058 0.0041 0.0029 0.002 0.0014 0.001 0.0007 0.0005 0.0003 0.0002 0.0002 0.0001 0.0001 0.0001 0}
green {curve x380 0 x385 0.0001 0.0001 0.0002 0.0004 0.0006 0.0012 0.0022 0.004 0.0073 0.0116 0.0168 0.023 0.0298 0.038 0.048 0.06 0.0739 0.091 0.1126 0.139 0.1693 0.208 0.2586 0.323 0.4073 0.503 0.6082 0.71 0.7932 0.862 0.9149 0.954 0.9803 0.995 1 0.995 0.9786 0.952 0.9154 0.87 0.8163 0.757 0.6949 0.631 0.5668 0.503 0.4412 0.381 0.321 0.265 0.217 0.175 0.1382 0.107 0.0816 0.061 0.0446 0.032 0.0232 0.017 0.0119 0.0082 0.0057 0.0041 0.0029 0.0021 0.0015 0.001 0.0007 0.0005 0.0004 0.0002 0.0002 0.0001 0.0001 0.0001 0 0 0 0}
blue {curve x375 0 x380 0.0065 0.0105 0.0201 0.0362 0.0679 0.1102 0.2074 0.3713 0.6456 1.0391 1.3856 1.623 1.7471 1.7826 1.7721 1.7441 1.6692 1.5281 1.2876 1.0419 0.831 0.6162 0.4652 0.3533 0.272 0.2123 0.1582 0.1117 0.0782 0.0573 0.0422 0.0298 0.0203 0.0134 0.0087 0.0057 0.0039 0.0027 0.0021 0.0018 0.0017 0.0014 0.0011 0.001 0.0008 0.0006 0.0003 0.0002 0.0002 0.0001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
alpha {}}
name ColorLookup2
xpos 510
ypos -56
}
Crop {
box {500 0 13800 2}
reformat true
crop false
name Crop13
xpos 510
ypos -5
}
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
name Colorspace9
xpos 510
ypos 84
}
Reformat {
type "to box"
format "2048 2048 0 0 2048 2048 1 square_2k"
box_width 2048
box_height 240
box_fixed true
resize distort
filter Impulse
name Reformat5
xpos 510
ypos 162
}
set Nf5603040 [stack 0]
Crop {
box {0 0 {input.width/2.5} {height}}
reformat true
crop false
name Crop4
xpos 429
ypos 269
}
set Nf560aa50 [stack 0]
Shuffle {
red black
green black
blue black
alpha black
name Shuffle7
label "\[value in]-->\[value out]"
xpos 359
ypos 422
}
Ramp {
p0 {{width/2} 0}
p1 {{width/2} {height-1}}
name Ramp8
xpos 359
ypos 460
}
push $Nf560aa50
push $Nf5603040
Crop {
box {{Crop4.box.r} 0 {width} {height}}
reformat true
crop false
name Crop5
xpos 578
ypos 269
}
Reformat {
type "to box"
box_width {{Crop4.box.r-Crop4.box.x}}
box_height {{Crop4.box.t-Crop4.box.y}}
box_fixed true
scale {1 0.5}
resize distort
flop true
name Reformat7
xpos 578
ypos 306
}
Keymix {
inputs 3
name Keymix5
xpos 522
ypos 525
}
Reformat {
type scale
scale 2
name Reformat1
xpos 522
ypos 557
}
set Nf562fd50 [stack 0]
push $Nf562fd50
Colorspace {
colorspace_in CIE-Yxy
colorspace_out CIE-XYZ
name Colorspace1
xpos 643
ypos 656
}
set Nf5637760 [stack 0]
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos 643
ypos 762
}
Multiply {
value 0.5
name Multiply1
xpos 643
ypos 804
}
push $Nf5637760
ColorMatrix {
matrix {
{1.04981102 0 -9.748e-05}
{-0.49590302 1.37331305 0.09824004}
{0 0 0.99125202}
}
name ColorMatrix3
xpos 767
ypos 781
}
Switch {
inputs 2
which {{parent.colorize}}
name Switch1
xpos 643
ypos 858
}
Multiply {
value {{parent.value.r} {parent.value.g} {parent.value.b} {parent.value.a}}
name Multiply2
xpos 643
ypos 902
}
BlinkScript {
inputs 2
recompileCount 4
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise 4f09b488f640fe57a9b92d835cc81424078e447e427d9f43fb8d958e7333c795 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 4 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"bottom_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 4 \"padding\" 1 1 \"left_margin\" 1 1 \"bottom_margin\" 1 1 \"process_input\" 1 1 3 \"outsize\" Float 1 1 AAAAAA== \"offsetX\" Float 1 1 AAAAAA== \"offsetY\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n float bottom_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offsetX;\n float offsetY;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offsetX = left_margin;\n offsetY = bottom_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offsetX, xy.y * outsize + offsetY);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding {{1/parent.parent.plotScale}}
plot_cie_xy_left_margin {{parent.parent.plotOffset.x}}
plot_cie_xy_bottom_margin {{parent.parent.plotOffset.y}}
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input1
selected true
xpos 522
ypos 986
cached true
}
Dilate {
size 2.5
name Dilate1
xpos 522
ypos 1018
}
Dilate {
size -2.5
name Dilate2
xpos 522
ypos 1050
}
Output {
name Output1
xpos 522
ypos 1117
}
end_group
Multiply {
value 0.18
name Multiply1
xpos -806
ypos 254
}
Merge2 {
inputs 4+1
name Merge2
xpos -875
ypos 314
}
Merge2 {
inputs 2
operation plus
name Merge1
xpos -875
ypos 363
}
Input {
inputs 0
name Input1
xpos 122
ypos -140
}
Dot {
name Dot2
xpos 156
ypos 11
}
set Nf568aa30 [stack 0]
Dot {
name Dot4
xpos 266
ypos 11
}
ColorMatrix {
matrix {
{{parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix}}
{{parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix}}
{{parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix}}
}
name ColorMatrix5
label "output to XYZ"
xpos 232
ypos 84
}
set Nf568f310 [stack 0]
ColorMatrix {
matrix {
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
}
name ColorMatrix8
label "CAT Matrix\nforward"
xpos 350
ypos 79
}
Multiply {
value {{whiteInLMS.r/whiteOutLMS.r} {whiteInLMS.g/whiteOutLMS.g} {whiteInLMS.b/whiteOutLMS.b} 1}
name Multiply3
label "Scale White"
xpos 350
ypos 121
addUserKnob {20 User}
addUserKnob {18 whiteInXYZ}
whiteInXYZ {{ColorMatrix1.matrix.0+ColorMatrix1.matrix.1+ColorMatrix1.matrix.2} {ColorMatrix1.matrix.3+ColorMatrix1.matrix.4+ColorMatrix1.matrix.5} {ColorMatrix1.matrix.6+ColorMatrix1.matrix.7+ColorMatrix1.matrix.8}}
addUserKnob {6 whiteInXYZ_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteInLMS}
whiteInLMS {{whiteInXYZ.r*ColorMatrix4.matrix.0+whiteInXYZ.g*ColorMatrix4.matrix.1+whiteInXYZ.b*ColorMatrix4.matrix.2} {whiteInXYZ.r*ColorMatrix4.matrix.3+whiteInXYZ.g*ColorMatrix4.matrix.4+whiteInXYZ.b*ColorMatrix4.matrix.5} {whiteInXYZ.r*ColorMatrix4.matrix.6+whiteInXYZ.g*ColorMatrix4.matrix.7+whiteInXYZ.b*ColorMatrix4.matrix.8}}
addUserKnob {6 whiteInLMS_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteOutXYZ}
whiteOutXYZ {{ColorMatrix3.matrix.0+ColorMatrix3.matrix.1+ColorMatrix3.matrix.2} {ColorMatrix3.matrix.3+ColorMatrix3.matrix.4+ColorMatrix3.matrix.5} {ColorMatrix3.matrix.6+ColorMatrix3.matrix.7+ColorMatrix3.matrix.8}}
addUserKnob {6 whiteOutXYZ_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteOutLMS}
whiteOutLMS {{whiteOutXYZ.r*ColorMatrix4.matrix.0+whiteOutXYZ.g*ColorMatrix4.matrix.1+whiteOutXYZ.b*ColorMatrix4.matrix.2} {whiteOutXYZ.r*ColorMatrix4.matrix.3+whiteOutXYZ.g*ColorMatrix4.matrix.4+whiteOutXYZ.b*ColorMatrix4.matrix.5} {whiteOutXYZ.r*ColorMatrix4.matrix.6+whiteOutXYZ.g*ColorMatrix4.matrix.7+whiteOutXYZ.b*ColorMatrix4.matrix.8}}
addUserKnob {6 whiteOutLMS_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOut_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteIn_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
}
ColorMatrix {
matrix {
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
}
invert true
name ColorMatrix9
label "CAT Matrix\ninverse"
xpos 350
ypos 163
}
push $Nf568f310
Switch {
inputs 2
which {{"ColorMatrix4.cat > 0"}}
name Switch4
xpos 232
ypos 172
}
ColorMatrix {
matrix {
{{FromMatrix.matrix.0*FromMatrixInverse.S.r} {FromMatrix.matrix.1*FromMatrixInverse.S.g} {FromMatrix.matrix.2*FromMatrixInverse.S.b}}
{{FromMatrix.matrix.3*FromMatrixInverse.S.r} {FromMatrix.matrix.4*FromMatrixInverse.S.g} {FromMatrix.matrix.5*FromMatrixInverse.S.b}}
{{FromMatrix.matrix.6*FromMatrixInverse.S.r} {FromMatrix.matrix.7*FromMatrixInverse.S.g} {FromMatrix.matrix.8*FromMatrixInverse.S.b}}
}
invert true
name ColorMatrix6
label "XYZ to Input"
xpos 232
ypos 213
addUserKnob {20 User}
addUserKnob {7 determinant}
determinant {{matrix.0*(matrix.4*matrix.8-matrix.7*matrix.5)+matrix.1*(matrix.5*matrix.6-matrix.8*matrix.3)+matrix.2*(matrix.3*matrix.7-matrix.6*matrix.4)}}
}
Dot {
name Dot5
xpos 266
ypos 272
}
push $Nf568aa30
Dot {
name Dot1
xpos 46
ypos 11
}
clone $Cf5457120 {
xpos 12
ypos 74
selected false
}
set Nf56be900 [stack 0]
ColorMatrix {
matrix {
{{"\[python (1, 1, 0.8951, 0.7328)\\\[\[numvalue cat]\\]]"} {"\[python (0, 0, 0.2664, 0.4296)\\\[\[numvalue cat]\\]]"} {"\[python (0, 0, -0.1614, -0.1624)\\\[\[numvalue cat]\\]]"}}
{{"\[python (0, 0, -0.7502, -0.7036)\\\[\[numvalue cat]\\]]"} {"\[python (1, 1, 1.7135, 1.6975)\\\[\[numvalue cat]\\]]"} {"\[python (0, 0, 0.0367, 0.0061)\\\[\[numvalue cat]\\]]"}}
{{"\[python (0, 0, 0.0389, 0.003)\\\[\[numvalue cat]\\]]"} {"\[python (0, 0, -0.0685, 0.0136)\\\[\[numvalue cat]\\]]"} {"\[python (1, 1, 1.0296, 0.9834)\\\[\[numvalue cat]\\]]"}}
}
name ColorMatrix4
label "CAT Matrix\n\[value cat]\n\[python ('forward', 'inverse')\\\[\[numvalue invert]\\]]"
xpos -113
ypos 64
addUserKnob {20 User}
addUserKnob {4 cat M {None "XYZ Scaling" Bradford CAT02}}
cat Bradford
}
Multiply {
value {{whiteOutLMS.r/whiteInLMS.r} {whiteOutLMS.g/whiteInLMS.g} {whiteOutLMS.b/whiteInLMS.b} 1}
name Multiply2
label "Scale White"
xpos -113
ypos 116
addUserKnob {20 User}
addUserKnob {18 whiteInXYZ}
whiteInXYZ {{ColorMatrix1.matrix.0+ColorMatrix1.matrix.1+ColorMatrix1.matrix.2} {ColorMatrix1.matrix.3+ColorMatrix1.matrix.4+ColorMatrix1.matrix.5} {ColorMatrix1.matrix.6+ColorMatrix1.matrix.7+ColorMatrix1.matrix.8}}
addUserKnob {6 whiteInXYZ_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteInLMS}
whiteInLMS {{whiteInXYZ.r*ColorMatrix4.matrix.0+whiteInXYZ.g*ColorMatrix4.matrix.1+whiteInXYZ.b*ColorMatrix4.matrix.2} {whiteInXYZ.r*ColorMatrix4.matrix.3+whiteInXYZ.g*ColorMatrix4.matrix.4+whiteInXYZ.b*ColorMatrix4.matrix.5} {whiteInXYZ.r*ColorMatrix4.matrix.6+whiteInXYZ.g*ColorMatrix4.matrix.7+whiteInXYZ.b*ColorMatrix4.matrix.8}}
addUserKnob {6 whiteInLMS_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteOutXYZ}
whiteOutXYZ {{ColorMatrix3.matrix.0+ColorMatrix3.matrix.1+ColorMatrix3.matrix.2} {ColorMatrix3.matrix.3+ColorMatrix3.matrix.4+ColorMatrix3.matrix.5} {ColorMatrix3.matrix.6+ColorMatrix3.matrix.7+ColorMatrix3.matrix.8}}
addUserKnob {6 whiteOutXYZ_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteOutLMS}
whiteOutLMS {{whiteOutXYZ.r*ColorMatrix4.matrix.0+whiteOutXYZ.g*ColorMatrix4.matrix.1+whiteOutXYZ.b*ColorMatrix4.matrix.2} {whiteOutXYZ.r*ColorMatrix4.matrix.3+whiteOutXYZ.g*ColorMatrix4.matrix.4+whiteOutXYZ.b*ColorMatrix4.matrix.5} {whiteOutXYZ.r*ColorMatrix4.matrix.6+whiteOutXYZ.g*ColorMatrix4.matrix.7+whiteOutXYZ.b*ColorMatrix4.matrix.8}}
addUserKnob {6 whiteOutLMS_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOut_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteIn_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
}
ColorMatrix {
matrix {
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
}
invert true
name ColorMatrix7
label "CAT Matrix\ninverse"
xpos -113
ypos 158
}
push $Nf56be900
Switch {
inputs 2
which {{"ColorMatrix4.cat > 0"}}
name Switch2
xpos 12
ypos 167
}
ColorMatrix {
matrix {
{{"\[python (0.9525523959, 0.6624541811, 0.4123907993, 0.6369580483, 0.4865709486, 0.6380076193, 0.4581609159, 0.4878301118, 0.4516946649, 0.5070147865, 0.4462154077, 0.7352752459, 0.7064827132, 0.7064827132, 0.5990839208, 0.7976672348, 1.0000000000, 1.48804061)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.0000000000, 0.1340042065, 0.3575843394, 0.1446169036, 0.2656676932, 0.2147038563, 0.3832048061, 0.3432736678, 0.3178467119, 0.3587783652, 0.3157557129, 0.0686094106, 0.1288010498, 0.1288010498, 0.2489255161, 0.1351922306, 0.0000000000, -0.23423647)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.0000936786, 0.1561876870, 0.1804807884, 0.1688809752, 0.1982172852, 0.0977444514, 0.1112803526, 0.1215422950, 0.1831046977, 0.0868529229, 0.1906749540, 0.1465712705, 0.1151721641, 0.1151721641, 0.1024464902, 0.0313525290, 0.0000000000, -0.3011580651)\\\[\[numvalue gamut]\\]]\n"}}
{{"\[python (0.3439664498, 0.2722287168, 0.2126390059, 0.2627002120, 0.2289745641, 0.2919537790, 0.1694420971, 0.2289038124, 0.2119478695, 0.2207240223, 0.1942557952, 0.2866940995, 0.2709796708, 0.2709796708, 0.2150758201, 0.2880374539, 0.0000000000, 0.2501373809)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.7281660966, 0.6740817658, 0.7151686788, 0.6779980715, 0.6917385218, 0.8238410415, 0.8648282025, 0.7808598244, 0.7230197720, 0.8391880546, 0.7385568692, 0.8429791340, 0.7866064112, 0.7866064112, 0.8850685017, 0.7118768834, 1.0000000000, 1.210452347)\\\[\[numvalue gamut]\\]]\n"} {"\[python (-0.0721325464, 0.0536895174, 0.0721923154, 0.0593017165, 0.0792869141, -0.1157948205, -0.0342702996, -0.0097636368, 0.0650323585, -0.0599120769, 0.0671873356, -0.1296732335, -0.0575860820, -0.0575860820, -0.1001443219, 0.0000856626, 0.0000000000, -0.4605897283)\\\[\[numvalue gamut]\\]]\n"}}
{{"\[python (0.0000000000, -0.0055746495, 0.0193308187, 0.0000000000, 0.0000000000, 0.0027982790, -0.1061849690, -0.0210075899, -0.0194509094, -0.0544519405, -0.0479226710, -0.0796808569, -0.0096778454, -0.0096778454, -0.0320658495, 0.0000000000, 0.0000000000, -0.4416591448)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.0000000000, 0.0040607335, 0.1191947798, 0.0280726930, 0.0451133819, -0.0670342357, 0.0255435258, 0.0178269864, 0.0165064159, -0.0003228254, -0.0002844886, -0.3473432170, 0.0046000375, 0.0046000375, -0.0276583907, 0.0000000000, 0.0000000000, -0.2480497808)\\\[\[numvalue gamut]\\]]\n"} {"\[python (1.0088251844, 1.0103391003, 0.9505321522, 1.0609850577, 1.0439443689, 1.1532937074, 1.0894666276, 1.0120057879, 1.0117696778, 1.0635999502, 1.0570323440, 1.5160818246, 1.0941355587, 1.0941355587, 1.1487819910, 0.8251882845, 1.0000000000, 1.69853411)\\\[\[numvalue gamut]\\]]\n"}}
}
invert true
name ColorMatrix3
label "XYZ to output"
note_font "Bitstream Vera Sans"
xpos 12
ypos 210
addUserKnob {20 User}
addUserKnob {4 gamut M {ACES ACEScg "Rec709 / sRGB" Rec2020 P3 AlexaWideGamut REDColor2 REDColor3 REDColor4 DRAGONcolor DRAGONcolor2 REDWideGamutRGB SGamut SGamut3 SGamut3.Cine ProPhoto "CIE XYZ" "Huge Gamut AP0 x 2" ""}}
gamut ACEScg
}
Dot {
name Dot3
xpos 46
ypos 272
}
Switch {
inputs 2
which {{parent.inverse}}
name Switch3
xpos 126
ypos 269
}
Switch {
inputs 2
which {{parent.showPlot}}
name Switch1
xpos 126
ypos 363
}
Output {
name Output1
xpos 126
ypos 434
}
ColorMatrix {
inputs 0
matrix {
{{(FromMatrix.matrix.4*FromMatrix.matrix.8-FromMatrix.matrix.7*FromMatrix.matrix.5)/FromMatrix.determinant} {(FromMatrix.matrix.7*FromMatrix.matrix.2-FromMatrix.matrix.1*FromMatrix.matrix.8)/FromMatrix.determinant} {(FromMatrix.matrix.1*FromMatrix.matrix.5-FromMatrix.matrix.4*FromMatrix.matrix.2)/FromMatrix.determinant}}
{{(FromMatrix.matrix.5*FromMatrix.matrix.6-FromMatrix.matrix.8*FromMatrix.matrix.3)/FromMatrix.determinant} {(FromMatrix.matrix.8*FromMatrix.matrix.0-FromMatrix.matrix.2*FromMatrix.matrix.6)/FromMatrix.determinant} {(FromMatrix.matrix.2*FromMatrix.matrix.3-FromMatrix.matrix.5*FromMatrix.matrix.0)/FromMatrix.determinant}}
{{(FromMatrix.matrix.3*FromMatrix.matrix.7-FromMatrix.matrix.6*FromMatrix.matrix.4)/FromMatrix.determinant} {(FromMatrix.matrix.6*FromMatrix.matrix.1-FromMatrix.matrix.0*FromMatrix.matrix.7)/FromMatrix.determinant} {(FromMatrix.matrix.0*FromMatrix.matrix.4-FromMatrix.matrix.3*FromMatrix.matrix.1)/FromMatrix.determinant}}
}
name FromMatrixInverse
label FromParimaries-1
xpos -1169
ypos 165
addUserKnob {20 User}
addUserKnob {13 white}
white {{FromMatrix.white.x/FromMatrix.white.y} 1 {(1-FromMatrix.white.x-FromMatrix.white.y)/FromMatrix.white.y}}
addUserKnob {18 S}
S {{matrix.0*white.x+matrix.1*white.y+matrix.2*white.z} {matrix.3*white.x+matrix.4*white.y+matrix.5*white.z} {matrix.6*white.x+matrix.7*white.y+matrix.8*white.z}}
addUserKnob {6 S_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
}
ColorMatrix {
inputs 0
matrix {
{{(ColorMatrix1.matrix.4*ColorMatrix1.matrix.8-ColorMatrix1.matrix.7*ColorMatrix1.matrix.5)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.7*ColorMatrix1.matrix.2-ColorMatrix1.matrix.1*ColorMatrix1.matrix.8)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.1*ColorMatrix1.matrix.5-ColorMatrix1.matrix.4*ColorMatrix1.matrix.2)/ColorMatrix1.determinant}}
{{(ColorMatrix1.matrix.5*ColorMatrix1.matrix.6-ColorMatrix1.matrix.8*ColorMatrix1.matrix.3)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.8*ColorMatrix1.matrix.0-ColorMatrix1.matrix.2*ColorMatrix1.matrix.6)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.2*ColorMatrix1.matrix.3-ColorMatrix1.matrix.5*ColorMatrix1.matrix.0)/ColorMatrix1.determinant}}
{{(ColorMatrix1.matrix.3*ColorMatrix1.matrix.7-ColorMatrix1.matrix.6*ColorMatrix1.matrix.4)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.6*ColorMatrix1.matrix.1-ColorMatrix1.matrix.0*ColorMatrix1.matrix.7)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.0*ColorMatrix1.matrix.4-ColorMatrix1.matrix.3*ColorMatrix1.matrix.1)/ColorMatrix1.determinant}}
}
name ColorMatrix2
label XYZ_to_Input
note_font "Bitstream Vera Sans"
xpos -435
ypos 52
}
end_group
push $Nec359400
Group {
name FreeformGamut7
label "ARRI\nAlexaWideGamut"
xpos 11060
ypos 435
addUserKnob {20 Primaries}
addUserKnob {26 inputPrimaries -STARTLINE T ""}
addUserKnob {41 white T FromMatrix.white}
addUserKnob {41 red T FromMatrix.red}
addUserKnob {41 green T FromMatrix.green}
addUserKnob {41 blue T FromMatrix.blue}
addUserKnob {26 ""}
addUserKnob {41 outputColorspace T ColorMatrix3.gamut}
addUserKnob {6 inverse -STARTLINE}
addUserKnob {26 ""}
addUserKnob {6 showPlot +STARTLINE}
addUserKnob {20 plotSettings n 1}
plotSettings 0
addUserKnob {7 plotScale R 0 2}
plotScale 0.5
addUserKnob {12 plotOffset}
plotOffset {409.6 409.6}
addUserKnob {20 endGroup n -1}
addUserKnob {20 Matrices}
addUserKnob {41 rgbToXyzMatrix T ColorMatrix1.matrix}
addUserKnob {26 ""}
addUserKnob {41 cat T ColorMatrix4.cat}
addUserKnob {26 ""}
addUserKnob {41 xyzToRgbMatrix T ColorMatrix2.matrix}
}
Constant {
inputs 0
format "1 1 0 0 1 1 1 1_pixel"
name Constant1
xpos -1301
ypos 69
}
ColorMatrix {
matrix {
{{red.x/red.y} {green.x/green.y} {blue.x/blue.y}}
{1 1 1}
{{(1-red.x-red.y)/red.y} {(1-green.x-green.y)/green.y} {(1-blue.x-blue.y)/blue.y}}
}
name FromMatrix
label FromParimaries
xpos -1301
ypos 167
addUserKnob {20 User}
addUserKnob {12 white}
white {0.3127 0.329}
addUserKnob {12 red}
red {0.684 0.313}
addUserKnob {12 green}
green {0.221 0.848}
addUserKnob {12 blue}
blue {0.0861 -0.102}
addUserKnob {7 determinant}
determinant {{matrix.0*(matrix.4*matrix.8-matrix.7*matrix.5)+matrix.1*(matrix.5*matrix.6-matrix.8*matrix.3)+matrix.2*(matrix.3*matrix.7-matrix.6*matrix.4)}}
}
Reformat {
format "2048 2048 0 0 2048 2048 1 square_2k"
resize distort
filter Impulse
name Reformat1
xpos -1301
ypos 291
}
Shuffle {
red black
green black
blue black
alpha black
name Shuffle2
label "\[value in]-->\[value out]"
xpos -1301
ypos 331
}
Transform {
translate {{parent.plotOffset.x} {parent.plotOffset.y}}
scale {{parent.plotScale}}
black_outside false
name Transform1
xpos -1301
ypos 363
}
ColorWheel {
inputs 0
format "512 512 0 0 512 512 1 square_512"
centerSaturation 1
name ColorWheel4
xpos -554
ypos -58
}
ColorMatrix {
matrix {
{{FromMatrix.matrix.0*FromMatrixInverse.S.r} {FromMatrix.matrix.1*FromMatrixInverse.S.g} {FromMatrix.matrix.2*FromMatrixInverse.S.b}}
{{FromMatrix.matrix.3*FromMatrixInverse.S.r} {FromMatrix.matrix.4*FromMatrixInverse.S.g} {FromMatrix.matrix.5*FromMatrixInverse.S.b}}
{{FromMatrix.matrix.6*FromMatrixInverse.S.r} {FromMatrix.matrix.7*FromMatrixInverse.S.g} {FromMatrix.matrix.8*FromMatrixInverse.S.b}}
}
name ColorMatrix1
label Input_to_XYZ
xpos -554
ypos 53
addUserKnob {20 User}
addUserKnob {7 determinant}
determinant {{matrix.0*(matrix.4*matrix.8-matrix.7*matrix.5)+matrix.1*(matrix.5*matrix.6-matrix.8*matrix.3)+matrix.2*(matrix.3*matrix.7-matrix.6*matrix.4)}}
}
set Cf5737cd0 [stack 0]
set Nf5737cd0 [stack 0]
Colorspace {
colorspace_in CIE-XYZ
primary_in ACES
colorspace_out CIE-Yxy
name Colorspace4
xpos -434
ypos 109
}
push $Nf5737cd0
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos -554
ypos 93
}
Multiply {
value {1 0 0 1}
name Multiply4
xpos -554
ypos 117
}
BlinkScript {
inputs 2
recompileCount 4
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise 4f09b488f640fe57a9b92d835cc81424078e447e427d9f43fb8d958e7333c795 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 4 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"bottom_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 4 \"padding\" 1 1 \"left_margin\" 1 1 \"bottom_margin\" 1 1 \"process_input\" 1 1 3 \"outsize\" Float 1 1 AAAAAA== \"offsetX\" Float 1 1 AAAAAA== \"offsetY\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n float bottom_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offsetX;\n float offsetY;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offsetX = left_margin;\n offsetY = bottom_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offsetX, xy.y * outsize + offsetY);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding {{1/parent.plotScale}}
plot_cie_xy_left_margin {{parent.plotOffset.x}}
plot_cie_xy_bottom_margin {{parent.plotOffset.y}}
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input
xpos -554
ypos 159
cached true
}
Dilate {
size 1
name Dilate1
xpos -554
ypos 232
}
set Nf575e000 [stack 0]
push $Nf575e000
ShuffleCopy {
inputs 2
alpha alpha2
name ShuffleCopy1
xpos -554
ypos 314
}
Group {
inputs 0
name PlanckianLocus
xpos -1030
ypos 256
addUserKnob {20 User}
addUserKnob {6 colorize +STARTLINE}
addUserKnob {41 value T Multiply1.value}
addUserKnob {26 temperature}
addUserKnob {7 start -STARTLINE R 1000 100000}
start 1000
addUserKnob {7 end R 1000 100000}
end 100000
}
Constant {
inputs 0
channels rgb
format "1620 2 0 0 1620 2 1 visible_spectrum_quarter nm"
name bg1
xpos 507
ypos -50
addUserKnob {20 User}
addUserKnob {7 wl}
wl {{clamp(frame+375,375,780)}}
}
set Nf576fe60 [stack 0]
Rectangle {
area {{"(log10(parent.start)-3)/2 * width"} 0 {"(log10(parent.end)-3)/2 * width"} {height}}
name Rectangle7
xpos 289
ypos 130
}
push $Nf576fe60
Ramp {
p0 {0 1}
p1 {1619 1}
name Ramp4
xpos 507
ypos 55
}
Multiply {
value {405 405 405 2}
name Multiply4
xpos 507
ypos 81
}
Add {
value {375 375 375 3}
name Add3
xpos 507
ypos 119
}
ColorLookup {
lut {master {}
red {curve x380 0.0014 x385 0.0022 0.0042 0.0076 0.0143 0.0232 0.0435 0.0776 0.1344 0.2148 0.2839 0.3285 0.3483 0.3481 0.3362 0.3187 0.2908 0.2511 0.1954 0.1421 0.0956 0.058 0.032 0.0147 0.0049 0.0024 0.0093 0.0291 0.0633 0.1096 0.1655 0.2257 0.2904 0.3597 0.4334 0.5121 0.5945 0.6784 0.7621 0.8425 0.9163 0.9786 1.0263 1.0567 1.0622 1.0456 1.0026 0.9384 0.8544 0.7514 0.6424 0.5419 0.4479 0.3608 0.2835 0.2187 0.1649 0.1212 0.0874 0.0636 0.0468 0.0329 0.0227 0.0158 0.0114 0.0081 0.0058 0.0041 0.0029 0.002 0.0014 0.001 0.0007 0.0005 0.0003 0.0002 0.0002 0.0001 0.0001 0.0001 0}
green {curve x380 0 x385 0.0001 0.0001 0.0002 0.0004 0.0006 0.0012 0.0022 0.004 0.0073 0.0116 0.0168 0.023 0.0298 0.038 0.048 0.06 0.0739 0.091 0.1126 0.139 0.1693 0.208 0.2586 0.323 0.4073 0.503 0.6082 0.71 0.7932 0.862 0.9149 0.954 0.9803 0.995 1 0.995 0.9786 0.952 0.9154 0.87 0.8163 0.757 0.6949 0.631 0.5668 0.503 0.4412 0.381 0.321 0.265 0.217 0.175 0.1382 0.107 0.0816 0.061 0.0446 0.032 0.0232 0.017 0.0119 0.0082 0.0057 0.0041 0.0029 0.0021 0.0015 0.001 0.0007 0.0005 0.0004 0.0002 0.0002 0.0001 0.0001 0.0001 0 0 0 0}
blue {curve x375 0 x380 0.0065 0.0105 0.0201 0.0362 0.0679 0.1102 0.2074 0.3713 0.6456 1.0391 1.3856 1.623 1.7471 1.7826 1.7721 1.7441 1.6692 1.5281 1.2876 1.0419 0.831 0.6162 0.4652 0.3533 0.272 0.2123 0.1582 0.1117 0.0782 0.0573 0.0422 0.0298 0.0203 0.0134 0.0087 0.0057 0.0039 0.0027 0.0021 0.0018 0.0017 0.0014 0.0011 0.001 0.0008 0.0006 0.0003 0.0002 0.0002 0.0001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
alpha {}}
name ColorLookup2
xpos 507
ypos 157
}
Expression {
expr0 r
expr1 g
expr2 b
expr3 pow(10,a)
name Expression1
xpos 507
ypos 181
}
BlinkScript {
ProgramGroup 1
KernelDescription "1 \"CCT2XYZ\" iterate pixelWise 1e5106c0628b69d1e3286f708ff894031c5f2cc6dcce2f5b6f5a0f9b492ad4d3 2 \"input\" Read Random \"dst\" Write Point 0"
kernelSource "// this kernel assumes the following in it's input:\n// an image with a width of 1620 pixels - representing 405 nm range in quarter-nm steps\n// RGB channel : CIE XYZ colour matching functions from 375nm to 780nm\n// Alpha channel : colour temperature in kelvin\n\nkernel CCT2XYZ : public ImageComputationKernel\n\{\n\tImage input; //the input image\n\tImage dst; //the output image\n\n\t//The kernel function is run at every pixel to produce the output.\n\tvoid process(int2 pos)\n\t\{\n \tSampleType(input) in = input(pos.x, pos.y);\n \tSampleType(input) cmf;\n \tfloat kelvin = in.w;\n \tint cmfY = 1;\n\t\tfloat3 ret = float3(0.f);\n\n\t\tfloat C1 = 2.0 * 3.141592653589793 * 6.626176 * 2.99792458 * 2.99792458;\n\t\tfloat C2 = (6.626176 * 2.99792458) / 1.380662;\n\n\t\t\n\t\tfor(int cmfX = 0; cmfX < input.bounds.width(); cmfX += 1)\n\t\t\{\n\t\t\tfloat nm = float(cmfX) / 4.f + 375.f;\n\t\t\tfloat dWavelengthM = nm * 1.0e-3; // * 1.0e-6\n\t\t\tfloat dWavelengthM5 = pow(dWavelengthM, 5.f); // * 1.0e-30\n\t\t\tfloat expArg = C2 / (kelvin * dWavelengthM * 1.0e-3);\n\t\t\tfloat blackbody = C1 / (dWavelengthM5 * 1.0e-12 * ( exp(expArg) - 1.0)); // -12 = -30 - (-18)\n\n\t\t\tcmf = input(cmfX, cmfY);\n\n\t\t\tret.x += (blackbody * cmf.x);\n\t\t\tret.y += (blackbody * cmf.y);\n\t\t\tret.z += (blackbody * cmf.z);\n\n\t\t\}\n\n\n\n\n\n\n\t\tret.x /= ret.y;\n\t\tret.z /= ret.y;\n\t\tret.y = 1.f;\n\n\t\tSampleType(input) out = in;\n\n\t\tout.x = ret.x;\n\t\tout.y = ret.y;\n\t\tout.z = ret.z;\n\n\t\tdst() = out;\n\t\}\n\};\n\n"
rebuild ""
rebuild_finalise ""
name BlinkScript1
selected true
xpos 507
ypos 219
}
Merge2 {
inputs 2
operation multiply
name Merge22
xpos 507
ypos 267
}
set Nf579e420 [stack 0]
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
primary_out "CIE (1931)"
name Colorspace15
xpos 347
ypos 419
}
push $Nf579e420
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos 640
ypos 378
}
Multiply {
value {0 0 0 1}
name Multiply1
xpos 640
ypos 404
}
push $Nf579e420
ColorMatrix {
matrix {
{1.04981102 0 -9.748e-05}
{-0.49590302 1.37331305 0.09824004}
{0 0 0.99125202}
}
name ColorMatrix3
xpos 507
ypos 362
}
Expression {
temp_name0 max
temp_expr0 max(r,g,b)
expr0 "r / max"
expr1 "g / max"
expr2 "b / max"
name Expression2
xpos 507
ypos 386
}
Switch {
inputs 2
which {{parent.colorize}}
name Switch1
xpos 569
ypos 462
}
BlinkScript {
inputs 2
recompileCount 4
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise 4f09b488f640fe57a9b92d835cc81424078e447e427d9f43fb8d958e7333c795 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 4 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"bottom_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 4 \"padding\" 1 1 \"left_margin\" 1 1 \"bottom_margin\" 1 1 \"process_input\" 1 1 3 \"outsize\" Float 1 1 AAAAAA== \"offsetX\" Float 1 1 AAAAAA== \"offsetY\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n float bottom_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offsetX;\n float offsetY;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offsetX = left_margin;\n offsetY = bottom_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offsetX, xy.y * outsize + offsetY);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding {{1/parent.parent.plotScale}}
plot_cie_xy_left_margin {{parent.parent.plotOffset.x}}
plot_cie_xy_bottom_margin {{parent.parent.plotOffset.y}}
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input1
xpos 569
ypos 578
cached true
}
Dilate {
size 1
name Dilate1
xpos 569
ypos 616
}
Output {
name Output1
xpos 569
ypos 690
}
end_group
push 0
Group {
inputs 0
name SpectralLocus2
xpos -914
ypos 254
addUserKnob {20 User}
addUserKnob {6 colorize +STARTLINE}
addUserKnob {41 value T Multiply1.value}
addUserKnob {26 wavelength}
addUserKnob {7 start -STARTLINE R 375 780}
start 375
addUserKnob {7 end R 375 780}
end 780
addUserKnob {6 purples l "show \"line of purples\"" +STARTLINE}
addUserKnob {41 plotColorSpace T Switch3.which}
}
Constant {
inputs 0
channels rgb
format "16384 2 0 0 16384 2 1 14bit_lut"
name bg1
xpos 507
ypos -17
addUserKnob {20 User}
addUserKnob {7 wl}
wl {{clamp(frame+375,375,780)}}
}
set Nf57e6d10 [stack 0]
Ramp {
p0 {0 1}
p1 {16383 1}
name Ramp4
xpos 507
ypos 55
}
set Nf57eb630 [stack 0]
Dot {
name Dot8
note_font "Bitstream Vera Sans"
xpos 681
ypos 58
}
Multiply {
value {-0.001319684205 -0.565 -0.26 1}
name Multiply2
note_font "Bitstream Vera Sans"
xpos 647
ypos 122
}
Add {
value {0.001419684151 0.737 0.2637 1}
name Add7
note_font "Bitstream Vera Sans"
xpos 647
ypos 158
}
Shuffle {
alpha white
name Shuffle22
label "\[value in]-->\[value out]"
note_font "Bitstream Vera Sans"
xpos 647
ypos 207
}
Transform {
translate {13300 0}
scale {0.1883 1}
center {0 1}
filter Impulse
name Transform1
note_font "Bitstream Vera Sans"
xpos 647
ypos 243
}
Dot {
name Dot9
note_font "Bitstream Vera Sans"
xpos 681
ypos 376
}
push $Nf57e6d10
Rectangle {
area {{width*((parent.start-375)/405)} 0 {width*((parent.end-375)/405)} 2}
name Rectangle7
xpos 289
ypos 130
}
push $Nf57eb630
Multiply {
value 405
name Multiply4
xpos 507
ypos 81
}
Add {
value 375
name Add3
xpos 507
ypos 119
}
ColorLookup {
lut {master {}
red {curve x380 0.0014 x385 0.0022 0.0042 0.0076 0.0143 0.0232 0.0435 0.0776 0.1344 0.2148 0.2839 0.3285 0.3483 0.3481 0.3362 0.3187 0.2908 0.2511 0.1954 0.1421 0.0956 0.058 0.032 0.0147 0.0049 0.0024 0.0093 0.0291 0.0633 0.1096 0.1655 0.2257 0.2904 0.3597 0.4334 0.5121 0.5945 0.6784 0.7621 0.8425 0.9163 0.9786 1.0263 1.0567 1.0622 1.0456 1.0026 0.9384 0.8544 0.7514 0.6424 0.5419 0.4479 0.3608 0.2835 0.2187 0.1649 0.1212 0.0874 0.0636 0.0468 0.0329 0.0227 0.0158 0.0114 0.0081 0.0058 0.0041 0.0029 0.002 0.0014 0.001 0.0007 0.0005 0.0003 0.0002 0.0002 0.0001 0.0001 0.0001 0}
green {curve x380 0 x385 0.0001 0.0001 0.0002 0.0004 0.0006 0.0012 0.0022 0.004 0.0073 0.0116 0.0168 0.023 0.0298 0.038 0.048 0.06 0.0739 0.091 0.1126 0.139 0.1693 0.208 0.2586 0.323 0.4073 0.503 0.6082 0.71 0.7932 0.862 0.9149 0.954 0.9803 0.995 1 0.995 0.9786 0.952 0.9154 0.87 0.8163 0.757 0.6949 0.631 0.5668 0.503 0.4412 0.381 0.321 0.265 0.217 0.175 0.1382 0.107 0.0816 0.061 0.0446 0.032 0.0232 0.017 0.0119 0.0082 0.0057 0.0041 0.0029 0.0021 0.0015 0.001 0.0007 0.0005 0.0004 0.0002 0.0002 0.0001 0.0001 0.0001 0 0 0 0}
blue {curve x375 0 x380 0.0065 0.0105 0.0201 0.0362 0.0679 0.1102 0.2074 0.3713 0.6456 1.0391 1.3856 1.623 1.7471 1.7826 1.7721 1.7441 1.6692 1.5281 1.2876 1.0419 0.831 0.6162 0.4652 0.3533 0.272 0.2123 0.1582 0.1117 0.0782 0.0573 0.0422 0.0298 0.0203 0.0134 0.0087 0.0057 0.0039 0.0027 0.0021 0.0018 0.0017 0.0014 0.0011 0.001 0.0008 0.0006 0.0003 0.0002 0.0002 0.0001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
alpha {}}
name ColorLookup2
xpos 507
ypos 157
}
Merge2 {
inputs 2
operation multiply
name Merge22
xpos 507
ypos 226
}
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
name Colorspace1
note_font "Bitstream Vera Sans"
xpos 507
ypos 297
}
Crop {
box {500 0 13800 2}
name Crop13
xpos 507
ypos 321
}
Transform {
translate {-500 0}
center {8192 1}
name Transform3
note_font "Bitstream Vera Sans"
xpos 507
ypos 349
}
Merge2 {
inputs 2
name Merge1
note_font "Bitstream Vera Sans"
xpos 507
ypos 373
disable {{!parent.purples}}
}
Expression {
expr0 "r < 0 ? r * sole.r + lift.r : r < lift.r * 2 ? pow( (lift.r *2 - r) / (lift.r * 2), 2) * lift.r + r : r"
expr1 "g < 0 ? g * sole.g + lift.g : g < lift.g * 2 ? pow( (lift.g *2 - g) / (lift.g * 2), 2) * lift.g + g : g"
expr2 "b < 0 ? b * sole.b + lift.b : b < lift.b * 2 ? pow( (lift.b *2 - b) / (lift.b * 2), 2) * lift.b + b : b"
name ToeExpr1
xpos 507
ypos 397
addUserKnob {20 User}
addUserKnob {18 lift}
lift {0.15 0 0}
addUserKnob {6 lift_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
lift_panelDropped true
addUserKnob {6 lift_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 sole R 0 0.1}
sole {0 0 0}
addUserKnob {6 sole_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
}
Colorspace {
colorspace_in CIE-Yxy
colorspace_out CIE-XYZ
name Colorspace2
note_font "Bitstream Vera Sans"
xpos 507
ypos 421
}
set Nf606eb80 [stack 0]
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
primary_out "CIE (1931)"
name Colorspace15
xpos 347
ypos 612
}
push $Nf606eb80
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos 640
ypos 571
}
Multiply {
value {1 1 1 1}
name Multiply1
xpos 640
ypos 597
}
push $Nf606eb80
ColorMatrix {
matrix {
{1.04981102 0 -9.748e-05}
{-0.49590302 1.37331305 0.09824004}
{0 0 0.99125202}
}
name ColorMatrix3
xpos 507
ypos 572
}
Shuffle {
alpha white
name Shuffle2
label "\[value in]-->\[value out]"
note_font "Bitstream Vera Sans"
xpos 507
ypos 596
}
Switch {
inputs 2
which {{parent.colorize}}
name Switch1
xpos 569
ypos 655
}
BlinkScript {
inputs 2
recompileCount 4
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise 4f09b488f640fe57a9b92d835cc81424078e447e427d9f43fb8d958e7333c795 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 4 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"bottom_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 4 \"padding\" 1 1 \"left_margin\" 1 1 \"bottom_margin\" 1 1 \"process_input\" 1 1 3 \"outsize\" Float 1 1 AAAAAA== \"offsetX\" Float 1 1 AAAAAA== \"offsetY\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n float bottom_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offsetX;\n float offsetY;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offsetX = left_margin;\n offsetY = bottom_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offsetX, xy.y * outsize + offsetY);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding {{1/parent.parent.plotScale}}
plot_cie_xy_left_margin {{parent.parent.plotOffset.x}}
plot_cie_xy_bottom_margin {{parent.parent.plotOffset.y}}
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input1
selected true
xpos 569
ypos 737
cached true
}
Dilate {
size 1
name Dilate1
xpos 569
ypos 769
}
Output {
name Output1
xpos 569
ypos 875
}
end_group
Group {
inputs 0
name SpectralLocusFill
xpos -806
ypos 230
addUserKnob {20 User}
addUserKnob {41 value T Multiply1.value}
addUserKnob {6 colorize +STARTLINE}
}
Constant {
inputs 0
channels rgb
format "16384 2 0 0 16384 2 1 14bit_lut"
name bg1
xpos 510
ypos -223
addUserKnob {20 User}
addUserKnob {7 wl}
wl {{clamp(frame+375,375,780)}}
}
Ramp {
p0 {0 1}
p1 {16383 1}
name Ramp4
xpos 510
ypos -152
}
Multiply {
value 405
name Multiply4
xpos 510
ypos -134
}
Add {
value 375
name Add3
xpos 510
ypos -86
}
ColorLookup {
lut {master {}
red {curve x380 0.0014 x385 0.0022 0.0042 0.0076 0.0143 0.0232 0.0435 0.0776 0.1344 0.2148 0.2839 0.3285 0.3483 0.3481 0.3362 0.3187 0.2908 0.2511 0.1954 0.1421 0.0956 0.058 0.032 0.0147 0.0049 0.0024 0.0093 0.0291 0.0633 0.1096 0.1655 0.2257 0.2904 0.3597 0.4334 0.5121 0.5945 0.6784 0.7621 0.8425 0.9163 0.9786 1.0263 1.0567 1.0622 1.0456 1.0026 0.9384 0.8544 0.7514 0.6424 0.5419 0.4479 0.3608 0.2835 0.2187 0.1649 0.1212 0.0874 0.0636 0.0468 0.0329 0.0227 0.0158 0.0114 0.0081 0.0058 0.0041 0.0029 0.002 0.0014 0.001 0.0007 0.0005 0.0003 0.0002 0.0002 0.0001 0.0001 0.0001 0}
green {curve x380 0 x385 0.0001 0.0001 0.0002 0.0004 0.0006 0.0012 0.0022 0.004 0.0073 0.0116 0.0168 0.023 0.0298 0.038 0.048 0.06 0.0739 0.091 0.1126 0.139 0.1693 0.208 0.2586 0.323 0.4073 0.503 0.6082 0.71 0.7932 0.862 0.9149 0.954 0.9803 0.995 1 0.995 0.9786 0.952 0.9154 0.87 0.8163 0.757 0.6949 0.631 0.5668 0.503 0.4412 0.381 0.321 0.265 0.217 0.175 0.1382 0.107 0.0816 0.061 0.0446 0.032 0.0232 0.017 0.0119 0.0082 0.0057 0.0041 0.0029 0.0021 0.0015 0.001 0.0007 0.0005 0.0004 0.0002 0.0002 0.0001 0.0001 0.0001 0 0 0 0}
blue {curve x375 0 x380 0.0065 0.0105 0.0201 0.0362 0.0679 0.1102 0.2074 0.3713 0.6456 1.0391 1.3856 1.623 1.7471 1.7826 1.7721 1.7441 1.6692 1.5281 1.2876 1.0419 0.831 0.6162 0.4652 0.3533 0.272 0.2123 0.1582 0.1117 0.0782 0.0573 0.0422 0.0298 0.0203 0.0134 0.0087 0.0057 0.0039 0.0027 0.0021 0.0018 0.0017 0.0014 0.0011 0.001 0.0008 0.0006 0.0003 0.0002 0.0002 0.0001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
alpha {}}
name ColorLookup2
xpos 510
ypos -56
}
Crop {
box {500 0 13800 2}
reformat true
crop false
name Crop13
xpos 510
ypos -5
}
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
name Colorspace9
xpos 510
ypos 84
}
Reformat {
type "to box"
format "2048 2048 0 0 2048 2048 1 square_2k"
box_width 2048
box_height 240
box_fixed true
resize distort
filter Impulse
name Reformat5
xpos 510
ypos 162
}
set Nf60df810 [stack 0]
Crop {
box {0 0 {input.width/2.5} {height}}
reformat true
crop false
name Crop4
xpos 429
ypos 269
}
set Nf60e7220 [stack 0]
Shuffle {
red black
green black
blue black
alpha black
name Shuffle7
label "\[value in]-->\[value out]"
xpos 359
ypos 422
}
Ramp {
p0 {{width/2} 0}
p1 {{width/2} {height-1}}
name Ramp8
xpos 359
ypos 460
}
push $Nf60e7220
push $Nf60df810
Crop {
box {{Crop4.box.r} 0 {width} {height}}
reformat true
crop false
name Crop5
xpos 578
ypos 269
}
Reformat {
type "to box"
box_width {{Crop4.box.r-Crop4.box.x}}
box_height {{Crop4.box.t-Crop4.box.y}}
box_fixed true
scale {1 0.5}
resize distort
flop true
name Reformat7
xpos 578
ypos 306
}
Keymix {
inputs 3
name Keymix5
xpos 522
ypos 525
}
Reformat {
type scale
scale 2
name Reformat1
xpos 522
ypos 557
}
set Nf61104e0 [stack 0]
push $Nf61104e0
Colorspace {
colorspace_in CIE-Yxy
colorspace_out CIE-XYZ
name Colorspace1
xpos 643
ypos 656
}
set Nf6117ef0 [stack 0]
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos 643
ypos 762
}
Multiply {
value 0.5
name Multiply1
xpos 643
ypos 804
}
push $Nf6117ef0
ColorMatrix {
matrix {
{1.04981102 0 -9.748e-05}
{-0.49590302 1.37331305 0.09824004}
{0 0 0.99125202}
}
name ColorMatrix3
xpos 767
ypos 781
}
Switch {
inputs 2
which {{parent.colorize}}
name Switch1
xpos 643
ypos 858
}
Multiply {
value {{parent.value.r} {parent.value.g} {parent.value.b} {parent.value.a}}
name Multiply2
xpos 643
ypos 902
}
BlinkScript {
inputs 2
recompileCount 4
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise 4f09b488f640fe57a9b92d835cc81424078e447e427d9f43fb8d958e7333c795 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 4 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"bottom_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 4 \"padding\" 1 1 \"left_margin\" 1 1 \"bottom_margin\" 1 1 \"process_input\" 1 1 3 \"outsize\" Float 1 1 AAAAAA== \"offsetX\" Float 1 1 AAAAAA== \"offsetY\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n float bottom_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offsetX;\n float offsetY;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offsetX = left_margin;\n offsetY = bottom_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offsetX, xy.y * outsize + offsetY);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding {{1/parent.parent.plotScale}}
plot_cie_xy_left_margin {{parent.parent.plotOffset.x}}
plot_cie_xy_bottom_margin {{parent.parent.plotOffset.y}}
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input1
selected true
xpos 522
ypos 986
cached true
}
Dilate {
size 2.5
name Dilate1
xpos 522
ypos 1018
}
Dilate {
size -2.5
name Dilate2
xpos 522
ypos 1050
}
Output {
name Output1
xpos 522
ypos 1117
}
end_group
Multiply {
value 0.18
name Multiply1
xpos -806
ypos 254
}
Merge2 {
inputs 4+1
name Merge2
xpos -875
ypos 314
}
Merge2 {
inputs 2
operation plus
name Merge1
xpos -875
ypos 363
}
Input {
inputs 0
name Input1
xpos 122
ypos -140
}
Dot {
name Dot2
xpos 156
ypos 11
}
set Nf616b1c0 [stack 0]
Dot {
name Dot4
xpos 266
ypos 11
}
ColorMatrix {
matrix {
{{parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix}}
{{parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix}}
{{parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix} {parent.ColorMatrix3.matrix}}
}
name ColorMatrix5
label "output to XYZ"
xpos 232
ypos 84
}
set Nf616faa0 [stack 0]
ColorMatrix {
matrix {
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
}
name ColorMatrix8
label "CAT Matrix\nforward"
xpos 350
ypos 79
}
Multiply {
value {{whiteInLMS.r/whiteOutLMS.r} {whiteInLMS.g/whiteOutLMS.g} {whiteInLMS.b/whiteOutLMS.b} 1}
name Multiply3
label "Scale White"
xpos 350
ypos 121
addUserKnob {20 User}
addUserKnob {18 whiteInXYZ}
whiteInXYZ {{ColorMatrix1.matrix.0+ColorMatrix1.matrix.1+ColorMatrix1.matrix.2} {ColorMatrix1.matrix.3+ColorMatrix1.matrix.4+ColorMatrix1.matrix.5} {ColorMatrix1.matrix.6+ColorMatrix1.matrix.7+ColorMatrix1.matrix.8}}
addUserKnob {6 whiteInXYZ_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteInLMS}
whiteInLMS {{whiteInXYZ.r*ColorMatrix4.matrix.0+whiteInXYZ.g*ColorMatrix4.matrix.1+whiteInXYZ.b*ColorMatrix4.matrix.2} {whiteInXYZ.r*ColorMatrix4.matrix.3+whiteInXYZ.g*ColorMatrix4.matrix.4+whiteInXYZ.b*ColorMatrix4.matrix.5} {whiteInXYZ.r*ColorMatrix4.matrix.6+whiteInXYZ.g*ColorMatrix4.matrix.7+whiteInXYZ.b*ColorMatrix4.matrix.8}}
addUserKnob {6 whiteInLMS_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteOutXYZ}
whiteOutXYZ {{ColorMatrix3.matrix.0+ColorMatrix3.matrix.1+ColorMatrix3.matrix.2} {ColorMatrix3.matrix.3+ColorMatrix3.matrix.4+ColorMatrix3.matrix.5} {ColorMatrix3.matrix.6+ColorMatrix3.matrix.7+ColorMatrix3.matrix.8}}
addUserKnob {6 whiteOutXYZ_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteOutLMS}
whiteOutLMS {{whiteOutXYZ.r*ColorMatrix4.matrix.0+whiteOutXYZ.g*ColorMatrix4.matrix.1+whiteOutXYZ.b*ColorMatrix4.matrix.2} {whiteOutXYZ.r*ColorMatrix4.matrix.3+whiteOutXYZ.g*ColorMatrix4.matrix.4+whiteOutXYZ.b*ColorMatrix4.matrix.5} {whiteOutXYZ.r*ColorMatrix4.matrix.6+whiteOutXYZ.g*ColorMatrix4.matrix.7+whiteOutXYZ.b*ColorMatrix4.matrix.8}}
addUserKnob {6 whiteOutLMS_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOut_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteIn_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
}
ColorMatrix {
matrix {
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
}
invert true
name ColorMatrix9
label "CAT Matrix\ninverse"
xpos 350
ypos 163
}
push $Nf616faa0
Switch {
inputs 2
which {{"ColorMatrix4.cat > 0"}}
name Switch4
xpos 232
ypos 172
}
ColorMatrix {
matrix {
{{FromMatrix.matrix.0*FromMatrixInverse.S.r} {FromMatrix.matrix.1*FromMatrixInverse.S.g} {FromMatrix.matrix.2*FromMatrixInverse.S.b}}
{{FromMatrix.matrix.3*FromMatrixInverse.S.r} {FromMatrix.matrix.4*FromMatrixInverse.S.g} {FromMatrix.matrix.5*FromMatrixInverse.S.b}}
{{FromMatrix.matrix.6*FromMatrixInverse.S.r} {FromMatrix.matrix.7*FromMatrixInverse.S.g} {FromMatrix.matrix.8*FromMatrixInverse.S.b}}
}
invert true
name ColorMatrix6
label "XYZ to Input"
xpos 232
ypos 213
addUserKnob {20 User}
addUserKnob {7 determinant}
determinant {{matrix.0*(matrix.4*matrix.8-matrix.7*matrix.5)+matrix.1*(matrix.5*matrix.6-matrix.8*matrix.3)+matrix.2*(matrix.3*matrix.7-matrix.6*matrix.4)}}
}
Dot {
name Dot5
xpos 266
ypos 272
}
push $Nf616b1c0
Dot {
name Dot1
xpos 46
ypos 11
}
clone $Cf5737cd0 {
xpos 12
ypos 74
selected false
}
set Nf619e810 [stack 0]
ColorMatrix {
matrix {
{{"\[python (1, 1, 0.8951, 0.7328)\\\[\[numvalue cat]\\]]"} {"\[python (0, 0, 0.2664, 0.4296)\\\[\[numvalue cat]\\]]"} {"\[python (0, 0, -0.1614, -0.1624)\\\[\[numvalue cat]\\]]"}}
{{"\[python (0, 0, -0.7502, -0.7036)\\\[\[numvalue cat]\\]]"} {"\[python (1, 1, 1.7135, 1.6975)\\\[\[numvalue cat]\\]]"} {"\[python (0, 0, 0.0367, 0.0061)\\\[\[numvalue cat]\\]]"}}
{{"\[python (0, 0, 0.0389, 0.003)\\\[\[numvalue cat]\\]]"} {"\[python (0, 0, -0.0685, 0.0136)\\\[\[numvalue cat]\\]]"} {"\[python (1, 1, 1.0296, 0.9834)\\\[\[numvalue cat]\\]]"}}
}
name ColorMatrix4
label "CAT Matrix\n\[value cat]\n\[python ('forward', 'inverse')\\\[\[numvalue invert]\\]]"
xpos -113
ypos 64
addUserKnob {20 User}
addUserKnob {4 cat M {None "XYZ Scaling" Bradford CAT02}}
cat CAT02
}
Multiply {
value {{whiteOutLMS.r/whiteInLMS.r} {whiteOutLMS.g/whiteInLMS.g} {whiteOutLMS.b/whiteInLMS.b} 1}
name Multiply2
label "Scale White"
xpos -113
ypos 116
addUserKnob {20 User}
addUserKnob {18 whiteInXYZ}
whiteInXYZ {{ColorMatrix1.matrix.0+ColorMatrix1.matrix.1+ColorMatrix1.matrix.2} {ColorMatrix1.matrix.3+ColorMatrix1.matrix.4+ColorMatrix1.matrix.5} {ColorMatrix1.matrix.6+ColorMatrix1.matrix.7+ColorMatrix1.matrix.8}}
addUserKnob {6 whiteInXYZ_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInXYZ_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteInLMS}
whiteInLMS {{whiteInXYZ.r*ColorMatrix4.matrix.0+whiteInXYZ.g*ColorMatrix4.matrix.1+whiteInXYZ.b*ColorMatrix4.matrix.2} {whiteInXYZ.r*ColorMatrix4.matrix.3+whiteInXYZ.g*ColorMatrix4.matrix.4+whiteInXYZ.b*ColorMatrix4.matrix.5} {whiteInXYZ.r*ColorMatrix4.matrix.6+whiteInXYZ.g*ColorMatrix4.matrix.7+whiteInXYZ.b*ColorMatrix4.matrix.8}}
addUserKnob {6 whiteInLMS_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteInLMS_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteOutXYZ}
whiteOutXYZ {{ColorMatrix3.matrix.0+ColorMatrix3.matrix.1+ColorMatrix3.matrix.2} {ColorMatrix3.matrix.3+ColorMatrix3.matrix.4+ColorMatrix3.matrix.5} {ColorMatrix3.matrix.6+ColorMatrix3.matrix.7+ColorMatrix3.matrix.8}}
addUserKnob {6 whiteOutXYZ_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutXYZ_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 whiteOutLMS}
whiteOutLMS {{whiteOutXYZ.r*ColorMatrix4.matrix.0+whiteOutXYZ.g*ColorMatrix4.matrix.1+whiteOutXYZ.b*ColorMatrix4.matrix.2} {whiteOutXYZ.r*ColorMatrix4.matrix.3+whiteOutXYZ.g*ColorMatrix4.matrix.4+whiteOutXYZ.b*ColorMatrix4.matrix.5} {whiteOutXYZ.r*ColorMatrix4.matrix.6+whiteOutXYZ.g*ColorMatrix4.matrix.7+whiteOutXYZ.b*ColorMatrix4.matrix.8}}
addUserKnob {6 whiteOutLMS_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOutLMS_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteOut_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 whiteIn_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
}
ColorMatrix {
matrix {
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
{{parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix} {parent.ColorMatrix4.matrix}}
}
invert true
name ColorMatrix7
label "CAT Matrix\ninverse"
xpos -113
ypos 158
}
push $Nf619e810
Switch {
inputs 2
which {{"ColorMatrix4.cat > 0"}}
name Switch2
xpos 12
ypos 167
}
ColorMatrix {
matrix {
{{"\[python (0.9525523959, 0.6624541811, 0.4123907993, 0.6369580483, 0.4865709486, 0.6380076193, 0.4581609159, 0.4878301118, 0.4516946649, 0.5070147865, 0.4462154077, 0.7352752459, 0.7064827132, 0.7064827132, 0.5990839208, 0.7976672348, 1.0000000000, 1.48804061)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.0000000000, 0.1340042065, 0.3575843394, 0.1446169036, 0.2656676932, 0.2147038563, 0.3832048061, 0.3432736678, 0.3178467119, 0.3587783652, 0.3157557129, 0.0686094106, 0.1288010498, 0.1288010498, 0.2489255161, 0.1351922306, 0.0000000000, -0.23423647)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.0000936786, 0.1561876870, 0.1804807884, 0.1688809752, 0.1982172852, 0.0977444514, 0.1112803526, 0.1215422950, 0.1831046977, 0.0868529229, 0.1906749540, 0.1465712705, 0.1151721641, 0.1151721641, 0.1024464902, 0.0313525290, 0.0000000000, -0.3011580651)\\\[\[numvalue gamut]\\]]\n"}}
{{"\[python (0.3439664498, 0.2722287168, 0.2126390059, 0.2627002120, 0.2289745641, 0.2919537790, 0.1694420971, 0.2289038124, 0.2119478695, 0.2207240223, 0.1942557952, 0.2866940995, 0.2709796708, 0.2709796708, 0.2150758201, 0.2880374539, 0.0000000000, 0.2501373809)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.7281660966, 0.6740817658, 0.7151686788, 0.6779980715, 0.6917385218, 0.8238410415, 0.8648282025, 0.7808598244, 0.7230197720, 0.8391880546, 0.7385568692, 0.8429791340, 0.7866064112, 0.7866064112, 0.8850685017, 0.7118768834, 1.0000000000, 1.210452347)\\\[\[numvalue gamut]\\]]\n"} {"\[python (-0.0721325464, 0.0536895174, 0.0721923154, 0.0593017165, 0.0792869141, -0.1157948205, -0.0342702996, -0.0097636368, 0.0650323585, -0.0599120769, 0.0671873356, -0.1296732335, -0.0575860820, -0.0575860820, -0.1001443219, 0.0000856626, 0.0000000000, -0.4605897283)\\\[\[numvalue gamut]\\]]\n"}}
{{"\[python (0.0000000000, -0.0055746495, 0.0193308187, 0.0000000000, 0.0000000000, 0.0027982790, -0.1061849690, -0.0210075899, -0.0194509094, -0.0544519405, -0.0479226710, -0.0796808569, -0.0096778454, -0.0096778454, -0.0320658495, 0.0000000000, 0.0000000000, -0.4416591448)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.0000000000, 0.0040607335, 0.1191947798, 0.0280726930, 0.0451133819, -0.0670342357, 0.0255435258, 0.0178269864, 0.0165064159, -0.0003228254, -0.0002844886, -0.3473432170, 0.0046000375, 0.0046000375, -0.0276583907, 0.0000000000, 0.0000000000, -0.2480497808)\\\[\[numvalue gamut]\\]]\n"} {"\[python (1.0088251844, 1.0103391003, 0.9505321522, 1.0609850577, 1.0439443689, 1.1532937074, 1.0894666276, 1.0120057879, 1.0117696778, 1.0635999502, 1.0570323440, 1.5160818246, 1.0941355587, 1.0941355587, 1.1487819910, 0.8251882845, 1.0000000000, 1.69853411)\\\[\[numvalue gamut]\\]]\n"}}
}
invert true
name ColorMatrix3
label "XYZ to output"
note_font "Bitstream Vera Sans"
xpos 12
ypos 210
addUserKnob {20 User}
addUserKnob {4 gamut M {ACES ACEScg "Rec709 / sRGB" Rec2020 P3 AlexaWideGamut REDColor2 REDColor3 REDColor4 DRAGONcolor DRAGONcolor2 REDWideGamutRGB SGamut SGamut3 SGamut3.Cine ProPhoto "CIE XYZ" "Huge Gamut AP0 x 2" ""}}
gamut ACEScg
}
Dot {
name Dot3
xpos 46
ypos 272
}
Switch {
inputs 2
which {{parent.inverse}}
name Switch3
xpos 126
ypos 269
}
Switch {
inputs 2
which {{parent.showPlot}}
name Switch1
xpos 126
ypos 363
}
Output {
name Output1
xpos 126
ypos 434
}
ColorMatrix {
inputs 0
matrix {
{{(FromMatrix.matrix.4*FromMatrix.matrix.8-FromMatrix.matrix.7*FromMatrix.matrix.5)/FromMatrix.determinant} {(FromMatrix.matrix.7*FromMatrix.matrix.2-FromMatrix.matrix.1*FromMatrix.matrix.8)/FromMatrix.determinant} {(FromMatrix.matrix.1*FromMatrix.matrix.5-FromMatrix.matrix.4*FromMatrix.matrix.2)/FromMatrix.determinant}}
{{(FromMatrix.matrix.5*FromMatrix.matrix.6-FromMatrix.matrix.8*FromMatrix.matrix.3)/FromMatrix.determinant} {(FromMatrix.matrix.8*FromMatrix.matrix.0-FromMatrix.matrix.2*FromMatrix.matrix.6)/FromMatrix.determinant} {(FromMatrix.matrix.2*FromMatrix.matrix.3-FromMatrix.matrix.5*FromMatrix.matrix.0)/FromMatrix.determinant}}
{{(FromMatrix.matrix.3*FromMatrix.matrix.7-FromMatrix.matrix.6*FromMatrix.matrix.4)/FromMatrix.determinant} {(FromMatrix.matrix.6*FromMatrix.matrix.1-FromMatrix.matrix.0*FromMatrix.matrix.7)/FromMatrix.determinant} {(FromMatrix.matrix.0*FromMatrix.matrix.4-FromMatrix.matrix.3*FromMatrix.matrix.1)/FromMatrix.determinant}}
}
name FromMatrixInverse
label FromParimaries-1
xpos -1169
ypos 165
addUserKnob {20 User}
addUserKnob {13 white}
white {{FromMatrix.white.x/FromMatrix.white.y} 1 {(1-FromMatrix.white.x-FromMatrix.white.y)/FromMatrix.white.y}}
addUserKnob {18 S}
S {{matrix.0*white.x+matrix.1*white.y+matrix.2*white.z} {matrix.3*white.x+matrix.4*white.y+matrix.5*white.z} {matrix.6*white.x+matrix.7*white.y+matrix.8*white.z}}
addUserKnob {6 S_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 S_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
}
ColorMatrix {
inputs 0
matrix {
{{(ColorMatrix1.matrix.4*ColorMatrix1.matrix.8-ColorMatrix1.matrix.7*ColorMatrix1.matrix.5)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.7*ColorMatrix1.matrix.2-ColorMatrix1.matrix.1*ColorMatrix1.matrix.8)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.1*ColorMatrix1.matrix.5-ColorMatrix1.matrix.4*ColorMatrix1.matrix.2)/ColorMatrix1.determinant}}
{{(ColorMatrix1.matrix.5*ColorMatrix1.matrix.6-ColorMatrix1.matrix.8*ColorMatrix1.matrix.3)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.8*ColorMatrix1.matrix.0-ColorMatrix1.matrix.2*ColorMatrix1.matrix.6)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.2*ColorMatrix1.matrix.3-ColorMatrix1.matrix.5*ColorMatrix1.matrix.0)/ColorMatrix1.determinant}}
{{(ColorMatrix1.matrix.3*ColorMatrix1.matrix.7-ColorMatrix1.matrix.6*ColorMatrix1.matrix.4)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.6*ColorMatrix1.matrix.1-ColorMatrix1.matrix.0*ColorMatrix1.matrix.7)/ColorMatrix1.determinant} {(ColorMatrix1.matrix.0*ColorMatrix1.matrix.4-ColorMatrix1.matrix.3*ColorMatrix1.matrix.1)/ColorMatrix1.determinant}}
}
name ColorMatrix2
label XYZ_to_Input
note_font "Bitstream Vera Sans"
xpos -435
ypos 52
}
end_group
ContactSheet {
inputs 7
width {{input0.width*columns}}
height {{input0.height*rows}}
rows 2
name ContactSheet2
xpos 11380
ypos 576
}
set Nf61e77b0 [stack 0]
Dot {
name Dot43
xpos 11414
ypos 688
}
set Nf61ed3b0 [stack 0]
Dot {
name Dot44
xpos 11302
ypos 688
}
Expression {
channel0 {rgba.red rgba.green rgba.blue none}
expr0 max(r,g,b)
name achromatic3
xpos 11268
ypos 723
}
set Nf61f1e70 [stack 0]
push $Nf61ed3b0
Merge2 {
inputs 2
operation minus
bbox B
Achannels rgb
Bchannels rgb
output rgb
name Merge27
xpos 11380
ypos 723
}
push $Nf61f1e70
Expression {
expr0 abs(r)
expr1 abs(g)
expr2 abs(b)
name abs2
xpos 11268
ypos 772
}
Merge2 {
inputs 2
operation divide
bbox B
Achannels rgb
Bchannels rgb
output rgb
name Merge28
xpos 11380
ypos 772
}
Add {
value -1
name Add2
xpos 11380
ypos 809
}
push $Nf61e77b0
push $Nf61e77b0
Group {
inputs 2
name PlotGamut5
xpos 11812
ypos 576
addUserKnob {20 User}
addUserKnob {6 colorize +STARTLINE}
colorize true
addUserKnob {4 gamut M {"Adobe (1998)" Apple "Best RGB" "Beta RGB" "Bruce RGB" "CIE (1931)" ColorMatch DCI-P3 "Don RGB 4" "ECI RGB" "Ekta Space PS5" "NTSC (1953)" PAL/SECAM ProPhoto SMPTE-C sRGB "Wide Gamut" AlexaV3LogC "Sony S-Gamut" ACES Rec.2020 ACEScg "CIE XYZ"}}
gamut ACEScg
addUserKnob {41 value l color T Multiply4.value}
addUserKnob {4 plotColorspace M {"CIE 1931 xy" "CIE 1976 u'v'"}}
}
Input {
inputs 0
name Input1
xpos 444
ypos 16
}
Dot {
name Dot3
xpos 478
ypos 82
}
set Nf622aba0 [stack 0]
Dot {
name Dot2
xpos 723
ypos 82
}
set Nf622d010 [stack 0]
Colorspace {
colorspace_in CIE-XYZ
primary_in ACES
colorspace_out CIE-Yxy
name Colorspace2
xpos 787
ypos 166
}
push $Nf622d010
ColorMatrix {
matrix {
{0.6624541811 0.1340042065 0.156187687}
{0.2722287168 0.6740817658 0.0536895174}
{-0.0055746495 0.0040607335 1.0103391}
}
name ColorMatrix1
label "ACEScg -> XYZ (none)"
xpos 689
ypos 152
}
Colorspace {
colorspace_in CIE-XYZ
illuminant_in ACES
primary_in ACES
colorspace_out CIE-Yxy
name Colorspace1
xpos 689
ypos 184
}
push $Nf622d010
Colorspace {
primary_in {{parent.gamut}}
colorspace_out CIE-Yxy
primary_out "CIE (1931)"
name Colorspace14
xpos 579
ypos 170
}
Switch {
inputs 3
which {{"parent.gamut == 21 ? 1 : parent.gamut == 22 ? 2 : 0"}}
name Switch1
xpos 689
ypos 249
}
Dot {
name Dot8
xpos 723
ypos 279
}
set Nf6254b20 [stack 0]
Dot {
name Dot9
xpos 829
ypos 279
}
Expression {
expr0 r
expr1 (4*g)/(-2*g+12*b+3)
expr2 (9*b)/(-2*g+12*b+3)
name Expression1
label "Yxy -> Yu'v'"
xpos 795
ypos 304
}
push $Nf6254b20
Switch {
inputs 2
which {{parent.plotColorspace}}
name Switch3
xpos 689
ypos 308
}
Dot {
name Dot1
xpos 723
ypos 342
}
Input {
inputs 0
name Color
xpos 327
ypos 16
number 1
}
Dot {
name Dot7
xpos 361
ypos 243
}
push $Nf622aba0
Dot {
name Dot6
xpos 478
ypos 106
}
set Nf626b740 [stack 0]
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos 444
ypos 149
}
Multiply {
value {0 1 1 1}
name Multiply4
xpos 444
ypos 175
}
push $Nf626b740
Dot {
name Dot4
xpos 554
ypos 106
}
Dot {
name Dot5
xpos 554
ypos 243
}
Switch {
inputs 3
which {{"\[exists parent.input1] ? 2 : parent.colorize"}}
name Switch2
xpos 444
ypos 239
}
BlinkScript {
inputs 2
recompileCount 2
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise fc48d30b761944f4622c7e7cade9c548789bc618dc38d8ca992161542531f81f 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 3 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 3 \"padding\" 1 1 \"left_margin\" 1 1 \"process_input\" 1 1 2 \"outsize\" Float 1 1 AAAAAA== \"offset\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offset;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offset = dst.bounds.height()*left_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offset, xy.y * outsize + offset);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding 2
plot_cie_xy_left_margin 0.2
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input
selected true
xpos 444
ypos 335
}
Output {
name Output1
xpos 444
ypos 403
}
end_group
Group {
inputs 0
name Group3
label "Gamut Boundary"
xpos 11992
ypos 605
}
Constant {
inputs 0
channels rgb
format "256 256 0 0 256 256 1 square_256"
name Constant3
xpos 430
ypos 180
}
Ramp {
output {rgba.red -rgba.green -rgba.blue -rgba.alpha}
p0 {0 {input.height/2}}
p1 {{input.width-1} {input.height/2}}
name Ramp1
xpos 430
ypos 252
}
Ramp {
output {-rgba.red rgba.green -rgba.blue -rgba.alpha}
p0 {{input.width/2} 0}
p1 {{input.width/2} {input.height-1}}
name Ramp2
xpos 430
ypos 276
}
Multiply {
value {{1/input.height} {(input.height-1)/input.height} 1 1}
name Multiply5
xpos 430
ypos 300
}
Expression {
expr0 r+g
expr1 1
expr2 1
name Expression1
xpos 430
ypos 332
}
Colorspace {
colorspace_in HSV
name Colorspace1
xpos 430
ypos 356
}
Output {
name Output1
selected true
xpos 430
ypos 380
}
end_group
Group {
name GamutCompress_blink5
label "\[value direction]\n\nRough default values"
xpos 11992
ypos 668
addUserKnob {20 GamutCompress}
addUserKnob {6 use_gpu l "use gpu" t "use gpu for blinkscript node" -STARTLINE}
use_gpu true
addUserKnob {18 threshold t "Percentage of the gamut protect. A value of 0.8 means 20% of the outer gamut will be utilized for gamut compression." R 0.4 1}
threshold {0.81459934 0.80294287 0.87963814}
addUserKnob {6 threshold_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 threshold_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 threshold_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 threshold_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 threshold_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 threshold_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 threshold_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 threshold_panelDropped_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 threshold_panelDropped_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 threshold_panelDropped_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 threshold_panelDropped_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 threshold_panelDropped_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 threshold_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {7 power t "Adjust the aggressiveness of the curve. 1 is equal to reinhard. Higher values bias compressed values closer to the gamut boundary." R 1 3}
power 1
addUserKnob {26 distance_limit_label l " " t "Specifies the distance beyond the gamut boundary to map to the gamut boundary for each color component." T "distance limit"}
addUserKnob {7 cyan t "Maximum distance beyond the green-blue gamut boundary to compress to the gamut boundary." R 0.001 1}
cyan 0.147279
addUserKnob {7 magenta t "Maximum distance beyond the blue-red gamut boundary to compress to the gamut boundary." R 0.001 1}
magenta 0.264283
addUserKnob {7 yellow t "Maximum distance beyond the red-green gamut boundary to compress to the gamut boundary." R 0.001 1}
yellow 0.312372
addUserKnob {6 overlay l "graph overlay" +STARTLINE}
addUserKnob {22 reset t "Reset knobs to default values. Distance limits are calculated based on an the average of a selection of digital cinema cameras." T "n = nuke.thisNode()\nnuke.root().begin()\ndefaults = \{\n 'threshold': 0.8,\n 'power': 1.2,\n 'cyan': 0.09,\n 'magenta':0.24,\n 'yellow': 0.12,\n\}\nfor k, v in defaults.items():\n n\[k].setValue(v)" +STARTLINE}
addUserKnob {26 ""}
addUserKnob {4 direction M {forward inverse}}
direction inverse
addUserKnob {20 info_tab l Info}
addUserKnob {26 info_label l " " T "\n\nGamutCompress
\nmaps out of gamut colors back into gamut.\n
Documentation"}
addUserKnob {26 about_label l " " T "\n
\nAbout
\nWritten by Jed Smith
with help from the ACES Gamut Mapping VWG"}
}
Input {
inputs 0
name Input
xpos -40
ypos -10
}
AddChannels {
name AddChannels
xpos -40
ypos 32
}
BlinkScript {
recompileCount 27
ProgramGroup 1
KernelDescription "2 \"GamutCompression\" iterate pixelWise 145be670507b989fefed31d1e3d61091a96dc9f58a4df29d9fbbe005884e64ca 2 \"src\" Read Point \"dst\" Write Point 8 \"threshold\" Float 3 AAAAAAAAAAAAAAAAAAAAAA== \"p\" Float 1 AAAAAA== \"cyan\" Float 1 AAAAAA== \"magenta\" Float 1 AAAAAA== \"yellow\" Float 1 AAAAAA== \"p_Height\" Float 1 AAAAAA== \"invert\" Bool 1 AA== \"overlay\" Bool 1 AA== 8 \"threshold\" 3 1 \"p\" 1 1 \"cyan\" 1 1 \"magenta\" 1 1 \"yellow\" 1 1 \"p_Height\" 1 1 \"invert\" 1 1 \"overlay\" 1 1 3 \"thr\" Float 3 1 AAAAAAAAAAAAAAAAAAAAAA== \"lim\" Float 3 1 AAAAAAAAAAAAAAAAAAAAAA== \"pi\" Float 1 1 AAAAAA=="
kernelSource "kernel GamutCompression : public ImageComputationKernel \{\n Image src;\n Image dst;\n\n param:\n float3 threshold;\n float p;\n float cyan;\n float magenta;\n float yellow;\n float p_Height;\n bool invert;\n bool overlay;\n\n local:\n float3 thr;\n float3 lim;\n float pi;\n\n void init() \{\n pi = 3.14159265359;\n\n // thr is the percentage of the core gamut to preserve\n thr = float3(min(0.9999f, threshold.x), min(0.9999f, threshold.y), min(0.9999f, threshold.z));\n\n // lim is the max distance from the gamut boundary that will be compressed\n // 0 is a no-op, 1 will compress colors from a distance of 2.0 from achromatic to the gamut boundary\n lim = float3(cyan+1.0f, magenta+1.0f, yellow+1.0f);\n \}\n\n // calculate compressed distance\n float compress(float x, float l, float t) \{\n float cx, s;\n if (x < t) \{\n cx = x;\n \} else \{\n // power(p) compression function plot https://www.desmos.com/calculator/54aytu7hek\n if (l < 1.0001) \{\n return x; // disable compression, avoid nan\n \}\n s = (l-t)/pow(pow((1.0f-t)/(l-t),-p)-1.0f,1.0f/p); // calc y=1 intersect\n if (invert == 0) \{\n cx = t+s*((x-t)/s)/(pow(1.0f+pow((x-t)/s,p),1.0f/p)); // compress\n \} else \{\n if (x > (t + s)) \{\n cx = x; // avoid singularity\n \} else \{\n cx = t+s*pow(-(pow((x-t)/s,p)/(pow((x-t)/s,p)-1.0f)),1.0f/p); // uncompress\n \}\n \}\n \}\n return cx;\n \}\n\n\n void process(int2 pos) \{\n // source pixels\n SampleType(src) rgba = src();\n float3 rgb = float3(rgba.x, rgba.y, rgba.z);\n\n // normalised pixel coordinates\n float2 fpos = float2((float)pos.x / dst.bounds.width(), (float)pos.y / p_Height);\n\n // achromatic axis \n float ach = max(rgb.x, max(rgb.y, rgb.z));\n\n // distance from the achromatic axis for each color component aka inverse rgb ratios\n // distance is normalized by achromatic, so that 1.0f is at gamut boundary, avoid 0 div\n float3 dist = ach == 0 ? float3(0.0f, 0.0f, 0.0f) : (ach-rgb)/fabs(ach);\n\n // compress distance with user controlled parameterized shaper function\n float sat;\n float3 csat, cdist;\n cdist = float3(\n compress(dist.x, lim.x, thr.x),\n compress(dist.y, lim.y, thr.y),\n compress(dist.z, lim.z, thr.z));\n\n // recalculate rgb from compressed distance and achromatic\n // effectively this scales each color component relative to achromatic axis by the compressed distance\n float3 crgb = ach-cdist*fabs(ach);\n\n // Graph overlay method based on one by Paul Dore\n // https://github.com/baldavenger/DCTLs/tree/master/ACES%20TOOLS\n if (overlay) \{\n float3 cramp = float3(\n compress(2.0f * fpos.x, lim.x, thr.x),\n compress(2.0f * fpos.x, lim.y, thr.y),\n compress(2.0f * fpos.x, lim.z, thr.z));\n bool overlay_r = fabs(2.0f * fpos.y - cramp.x) < 0.004f || fabs(fpos.y - 0.5f) < 0.0005f ? true : false;\n bool overlay_g = fabs(2.0f * fpos.y - cramp.y) < 0.004f || fabs(fpos.y - 0.5f) < 0.0005f ? true : false;\n bool overlay_b = fabs(2.0f * fpos.y - cramp.z) < 0.004f || fabs(fpos.y - 0.5f) < 0.0005f ? true : false;\n crgb.x = overlay_g || overlay_b ? 1.0f : crgb.x;\n crgb.y = overlay_b || overlay_r ? 1.0f : crgb.y;\n crgb.z = overlay_r || overlay_g ? 1.0f : crgb.z;\n \}\n\n // write to output\n dst() = float4(crgb.x, crgb.y, crgb.z, rgba.w);\n \}\n\};"
useGPUIfAvailable {{parent.use_gpu}}
rebuild ""
GamutCompression_threshold {{parent.threshold} {parent.threshold} {parent.threshold}}
GamutCompression_p {{parent.power}}
GamutCompression_cyan {{parent.cyan}}
GamutCompression_magenta {{parent.magenta}}
GamutCompression_yellow {{parent.yellow}}
GamutCompression_p_Height {{height}}
GamutCompression_invert {{parent.direction}}
GamutCompression_overlay {{parent.overlay}}
rebuild_finalise ""
name GamutCompress
selected true
xpos -40
ypos 80
}
Output {
name Output
xpos -40
ypos 134
}
end_group
Group {
name PlotGamut6
xpos 11992
ypos 762
addUserKnob {20 User}
addUserKnob {6 colorize +STARTLINE}
colorize true
addUserKnob {4 gamut M {"Adobe (1998)" Apple "Best RGB" "Beta RGB" "Bruce RGB" "CIE (1931)" ColorMatch DCI-P3 "Don RGB 4" "ECI RGB" "Ekta Space PS5" "NTSC (1953)" PAL/SECAM ProPhoto SMPTE-C sRGB "Wide Gamut" AlexaV3LogC "Sony S-Gamut" ACES Rec.2020 ACEScg "CIE XYZ"}}
gamut ACEScg
addUserKnob {41 value l color T Multiply4.value}
addUserKnob {4 plotColorspace M {"CIE 1931 xy" "CIE 1976 u'v'"}}
}
Input {
inputs 0
name Input1
xpos 444
ypos 16
}
Dot {
name Dot3
xpos 478
ypos 82
}
set Nf62dbcf0 [stack 0]
Dot {
name Dot2
xpos 723
ypos 82
}
set Nf62de160 [stack 0]
Colorspace {
colorspace_in CIE-XYZ
primary_in ACES
colorspace_out CIE-Yxy
name Colorspace2
xpos 787
ypos 166
}
push $Nf62de160
ColorMatrix {
matrix {
{0.6624541811 0.1340042065 0.156187687}
{0.2722287168 0.6740817658 0.0536895174}
{-0.0055746495 0.0040607335 1.0103391}
}
name ColorMatrix1
label "ACEScg -> XYZ (none)"
xpos 689
ypos 152
}
Colorspace {
colorspace_in CIE-XYZ
illuminant_in ACES
primary_in ACES
colorspace_out CIE-Yxy
name Colorspace1
xpos 689
ypos 184
}
push $Nf62de160
Colorspace {
primary_in {{parent.gamut}}
colorspace_out CIE-Yxy
primary_out "CIE (1931)"
name Colorspace14
xpos 579
ypos 170
}
Switch {
inputs 3
which {{"parent.gamut == 21 ? 1 : parent.gamut == 22 ? 2 : 0"}}
name Switch1
xpos 689
ypos 249
}
Dot {
name Dot8
xpos 723
ypos 279
}
set Nf6309d20 [stack 0]
Dot {
name Dot9
xpos 829
ypos 279
}
Expression {
expr0 r
expr1 (4*g)/(-2*g+12*b+3)
expr2 (9*b)/(-2*g+12*b+3)
name Expression1
label "Yxy -> Yu'v'"
xpos 795
ypos 304
}
push $Nf6309d20
Switch {
inputs 2
which {{parent.plotColorspace}}
name Switch3
xpos 689
ypos 308
}
Dot {
name Dot1
xpos 723
ypos 342
}
Input {
inputs 0
name Color
xpos 327
ypos 16
number 1
}
Dot {
name Dot7
xpos 361
ypos 243
}
push $Nf62dbcf0
Dot {
name Dot6
xpos 478
ypos 106
}
set Nf6320940 [stack 0]
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos 444
ypos 149
}
Multiply {
value {0 1 1 1}
name Multiply4
xpos 444
ypos 175
}
push $Nf6320940
Dot {
name Dot4
xpos 554
ypos 106
}
Dot {
name Dot5
xpos 554
ypos 243
}
Switch {
inputs 3
which {{"\[exists parent.input1] ? 2 : parent.colorize"}}
name Switch2
xpos 444
ypos 239
}
BlinkScript {
inputs 2
recompileCount 2
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise fc48d30b761944f4622c7e7cade9c548789bc618dc38d8ca992161542531f81f 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 3 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 3 \"padding\" 1 1 \"left_margin\" 1 1 \"process_input\" 1 1 2 \"outsize\" Float 1 1 AAAAAA== \"offset\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offset;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offset = dst.bounds.height()*left_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offset, xy.y * outsize + offset);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding 2
plot_cie_xy_left_margin 0.2
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input
selected true
xpos 444
ypos 335
}
Output {
name Output1
xpos 444
ypos 403
}
end_group
Merge2 {
inputs 2
name Merge29
xpos 11812
ypos 762
}
Group {
inputs 0
name SpectralLocus3
xpos 11965
ypos 841
addUserKnob {20 User}
addUserKnob {6 colorize +STARTLINE}
addUserKnob {41 value T Multiply1.value}
addUserKnob {26 wavelength}
addUserKnob {7 start -STARTLINE R 375 780}
start 375
addUserKnob {7 end R 375 780}
end 780
addUserKnob {6 purples l "show \"line of purples\"" +STARTLINE}
}
Constant {
inputs 0
channels rgb
format "16384 2 0 0 16384 2 1 14bit_lut"
name bg1
xpos 507
ypos -17
addUserKnob {20 User}
addUserKnob {7 wl}
wl {{clamp(frame+375,375,780)}}
}
set Nf634f020 [stack 0]
Ramp {
p0 {0 1}
p1 {16383 1}
name Ramp4
xpos 507
ypos 55
}
set Nf6353940 [stack 0]
Dot {
name Dot8
note_font "Bitstream Vera Sans"
xpos 681
ypos 58
}
Multiply {
value {-0.001319684205 -0.565 -0.26 1}
name Multiply2
note_font "Bitstream Vera Sans"
xpos 647
ypos 122
}
Add {
value {0.001419684151 0.737 0.2637 1}
name Add7
note_font "Bitstream Vera Sans"
xpos 647
ypos 158
}
Shuffle {
alpha white
name Shuffle22
label "\[value in]-->\[value out]"
note_font "Bitstream Vera Sans"
xpos 647
ypos 207
}
Transform {
translate {13300 0}
scale {0.1883 1}
center {0 1}
filter Impulse
name Transform1
note_font "Bitstream Vera Sans"
xpos 647
ypos 243
}
Dot {
name Dot9
note_font "Bitstream Vera Sans"
xpos 681
ypos 376
}
push $Nf634f020
Rectangle {
area {{width*((parent.start-375)/405)} 0 {width*((parent.end-375)/405)} 2}
name Rectangle7
xpos 289
ypos 130
}
push $Nf6353940
Multiply {
value 405
name Multiply4
xpos 507
ypos 81
}
Add {
value 375
name Add3
xpos 507
ypos 119
}
ColorLookup {
lut {master {}
red {curve x380 0.0014 x385 0.0022 0.0042 0.0076 0.0143 0.0232 0.0435 0.0776 0.1344 0.2148 0.2839 0.3285 0.3483 0.3481 0.3362 0.3187 0.2908 0.2511 0.1954 0.1421 0.0956 0.058 0.032 0.0147 0.0049 0.0024 0.0093 0.0291 0.0633 0.1096 0.1655 0.2257 0.2904 0.3597 0.4334 0.5121 0.5945 0.6784 0.7621 0.8425 0.9163 0.9786 1.0263 1.0567 1.0622 1.0456 1.0026 0.9384 0.8544 0.7514 0.6424 0.5419 0.4479 0.3608 0.2835 0.2187 0.1649 0.1212 0.0874 0.0636 0.0468 0.0329 0.0227 0.0158 0.0114 0.0081 0.0058 0.0041 0.0029 0.002 0.0014 0.001 0.0007 0.0005 0.0003 0.0002 0.0002 0.0001 0.0001 0.0001 0}
green {curve x380 0 x385 0.0001 0.0001 0.0002 0.0004 0.0006 0.0012 0.0022 0.004 0.0073 0.0116 0.0168 0.023 0.0298 0.038 0.048 0.06 0.0739 0.091 0.1126 0.139 0.1693 0.208 0.2586 0.323 0.4073 0.503 0.6082 0.71 0.7932 0.862 0.9149 0.954 0.9803 0.995 1 0.995 0.9786 0.952 0.9154 0.87 0.8163 0.757 0.6949 0.631 0.5668 0.503 0.4412 0.381 0.321 0.265 0.217 0.175 0.1382 0.107 0.0816 0.061 0.0446 0.032 0.0232 0.017 0.0119 0.0082 0.0057 0.0041 0.0029 0.0021 0.0015 0.001 0.0007 0.0005 0.0004 0.0002 0.0002 0.0001 0.0001 0.0001 0 0 0 0}
blue {curve x375 0 x380 0.0065 0.0105 0.0201 0.0362 0.0679 0.1102 0.2074 0.3713 0.6456 1.0391 1.3856 1.623 1.7471 1.7826 1.7721 1.7441 1.6692 1.5281 1.2876 1.0419 0.831 0.6162 0.4652 0.3533 0.272 0.2123 0.1582 0.1117 0.0782 0.0573 0.0422 0.0298 0.0203 0.0134 0.0087 0.0057 0.0039 0.0027 0.0021 0.0018 0.0017 0.0014 0.0011 0.001 0.0008 0.0006 0.0003 0.0002 0.0002 0.0001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
alpha {}}
name ColorLookup2
xpos 507
ypos 157
}
Merge2 {
inputs 2
operation multiply
name Merge22
xpos 507
ypos 226
}
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
name Colorspace1
note_font "Bitstream Vera Sans"
xpos 507
ypos 297
}
Crop {
box {500 0 13800 2}
name Crop13
xpos 507
ypos 321
}
Transform {
translate {-500 0}
center {8192 1}
name Transform3
note_font "Bitstream Vera Sans"
xpos 507
ypos 349
}
Merge2 {
inputs 2
name Merge1
note_font "Bitstream Vera Sans"
xpos 507
ypos 373
disable {{!parent.purples}}
}
Expression {
expr0 "r < 0 ? r * sole.r + lift.r : r < lift.r * 2 ? pow( (lift.r *2 - r) / (lift.r * 2), 2) * lift.r + r : r"
expr1 "g < 0 ? g * sole.g + lift.g : g < lift.g * 2 ? pow( (lift.g *2 - g) / (lift.g * 2), 2) * lift.g + g : g"
expr2 "b < 0 ? b * sole.b + lift.b : b < lift.b * 2 ? pow( (lift.b *2 - b) / (lift.b * 2), 2) * lift.b + b : b"
name ToeExpr1
xpos 507
ypos 397
addUserKnob {20 User}
addUserKnob {18 lift}
lift {0.15 0 0}
addUserKnob {6 lift_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
lift_panelDropped true
addUserKnob {6 lift_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 sole R 0 0.1}
sole {0 0 0}
addUserKnob {6 sole_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
}
Colorspace {
colorspace_in CIE-Yxy
colorspace_out CIE-XYZ
name Colorspace2
note_font "Bitstream Vera Sans"
xpos 507
ypos 421
}
set Nf63d5930 [stack 0]
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
primary_out "CIE (1931)"
name Colorspace15
xpos 347
ypos 612
}
push $Nf63d5930
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos 640
ypos 571
}
Multiply {
value {1 1 1 1}
name Multiply1
xpos 640
ypos 597
}
push $Nf63d5930
ColorMatrix {
matrix {
{1.04981102 0 -9.748e-05}
{-0.49590302 1.37331305 0.09824004}
{0 0 0.99125202}
}
name ColorMatrix3
xpos 507
ypos 572
}
Shuffle {
alpha white
name Shuffle2
label "\[value in]-->\[value out]"
note_font "Bitstream Vera Sans"
xpos 507
ypos 596
}
Switch {
inputs 2
which {{parent.colorize}}
name Switch1
xpos 569
ypos 655
}
BlinkScript {
inputs 2
recompileCount 4
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise 4f09b488f640fe57a9b92d835cc81424078e447e427d9f43fb8d958e7333c795 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 4 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"bottom_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 4 \"padding\" 1 1 \"left_margin\" 1 1 \"bottom_margin\" 1 1 \"process_input\" 1 1 3 \"outsize\" Float 1 1 AAAAAA== \"offsetX\" Float 1 1 AAAAAA== \"offsetY\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n float bottom_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offsetX;\n float offsetY;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offsetX = left_margin;\n offsetY = bottom_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offsetX, xy.y * outsize + offsetY);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding 2
plot_cie_xy_left_margin 409.6
plot_cie_xy_bottom_margin 409.6
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input1
selected true
xpos 569
ypos 737
cached true
}
Dilate {
size 1
name Dilate1
xpos 569
ypos 769
}
Output {
name Output1
xpos 569
ypos 875
}
end_group
Group {
inputs 0
name SpectralLocusFill
xpos 12056
ypos 835
addUserKnob {20 User}
addUserKnob {41 value T Multiply1.value}
addUserKnob {6 colorize +STARTLINE}
}
Constant {
inputs 0
channels rgb
format "16384 2 0 0 16384 2 1 14bit_lut"
name bg1
xpos 510
ypos -223
addUserKnob {20 User}
addUserKnob {7 wl}
wl {{clamp(frame+375,375,780)}}
}
Ramp {
p0 {0 1}
p1 {16383 1}
name Ramp4
xpos 510
ypos -152
}
Multiply {
value 405
name Multiply4
xpos 510
ypos -134
}
Add {
value 375
name Add3
xpos 510
ypos -86
}
ColorLookup {
lut {master {}
red {curve x380 0.0014 x385 0.0022 0.0042 0.0076 0.0143 0.0232 0.0435 0.0776 0.1344 0.2148 0.2839 0.3285 0.3483 0.3481 0.3362 0.3187 0.2908 0.2511 0.1954 0.1421 0.0956 0.058 0.032 0.0147 0.0049 0.0024 0.0093 0.0291 0.0633 0.1096 0.1655 0.2257 0.2904 0.3597 0.4334 0.5121 0.5945 0.6784 0.7621 0.8425 0.9163 0.9786 1.0263 1.0567 1.0622 1.0456 1.0026 0.9384 0.8544 0.7514 0.6424 0.5419 0.4479 0.3608 0.2835 0.2187 0.1649 0.1212 0.0874 0.0636 0.0468 0.0329 0.0227 0.0158 0.0114 0.0081 0.0058 0.0041 0.0029 0.002 0.0014 0.001 0.0007 0.0005 0.0003 0.0002 0.0002 0.0001 0.0001 0.0001 0}
green {curve x380 0 x385 0.0001 0.0001 0.0002 0.0004 0.0006 0.0012 0.0022 0.004 0.0073 0.0116 0.0168 0.023 0.0298 0.038 0.048 0.06 0.0739 0.091 0.1126 0.139 0.1693 0.208 0.2586 0.323 0.4073 0.503 0.6082 0.71 0.7932 0.862 0.9149 0.954 0.9803 0.995 1 0.995 0.9786 0.952 0.9154 0.87 0.8163 0.757 0.6949 0.631 0.5668 0.503 0.4412 0.381 0.321 0.265 0.217 0.175 0.1382 0.107 0.0816 0.061 0.0446 0.032 0.0232 0.017 0.0119 0.0082 0.0057 0.0041 0.0029 0.0021 0.0015 0.001 0.0007 0.0005 0.0004 0.0002 0.0002 0.0001 0.0001 0.0001 0 0 0 0}
blue {curve x375 0 x380 0.0065 0.0105 0.0201 0.0362 0.0679 0.1102 0.2074 0.3713 0.6456 1.0391 1.3856 1.623 1.7471 1.7826 1.7721 1.7441 1.6692 1.5281 1.2876 1.0419 0.831 0.6162 0.4652 0.3533 0.272 0.2123 0.1582 0.1117 0.0782 0.0573 0.0422 0.0298 0.0203 0.0134 0.0087 0.0057 0.0039 0.0027 0.0021 0.0018 0.0017 0.0014 0.0011 0.001 0.0008 0.0006 0.0003 0.0002 0.0002 0.0001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
alpha {}}
name ColorLookup2
xpos 510
ypos -56
}
Crop {
box {500 0 13800 2}
reformat true
crop false
name Crop13
xpos 510
ypos -5
}
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
name Colorspace9
xpos 510
ypos 84
}
Reformat {
type "to box"
format "2048 2048 0 0 2048 2048 1 square_2k"
box_width 2048
box_height 240
box_fixed true
resize distort
filter Impulse
name Reformat5
xpos 510
ypos 162
}
set Nf644a1a0 [stack 0]
Crop {
box {0 0 {input.width/2.5} {height}}
reformat true
crop false
name Crop4
xpos 429
ypos 269
}
set Nf6451bb0 [stack 0]
Shuffle {
red black
green black
blue black
alpha black
name Shuffle7
label "\[value in]-->\[value out]"
xpos 359
ypos 422
}
Ramp {
p0 {{width/2} 0}
p1 {{width/2} {height-1}}
name Ramp8
xpos 359
ypos 460
}
push $Nf6451bb0
push $Nf644a1a0
Crop {
box {{Crop4.box.r} 0 {width} {height}}
reformat true
crop false
name Crop5
xpos 578
ypos 269
}
Reformat {
type "to box"
box_width {{Crop4.box.r-Crop4.box.x}}
box_height {{Crop4.box.t-Crop4.box.y}}
box_fixed true
scale {1 0.5}
resize distort
flop true
name Reformat7
xpos 578
ypos 306
}
Keymix {
inputs 3
name Keymix5
xpos 522
ypos 525
}
Reformat {
type scale
scale 2
name Reformat1
xpos 522
ypos 557
}
set Nf6476eb0 [stack 0]
push $Nf6476eb0
Colorspace {
colorspace_in CIE-Yxy
colorspace_out CIE-XYZ
name Colorspace1
xpos 643
ypos 656
}
set Nf647e8c0 [stack 0]
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos 643
ypos 762
}
Multiply {
value 0.5
name Multiply1
xpos 643
ypos 804
}
push $Nf647e8c0
ColorMatrix {
matrix {
{1.04981102 0 -9.748e-05}
{-0.49590302 1.37331305 0.09824004}
{0 0 0.99125202}
}
name ColorMatrix3
xpos 767
ypos 781
}
Switch {
inputs 2
which {{parent.colorize}}
name Switch1
xpos 643
ypos 858
}
Multiply {
value {{parent.value.r} {parent.value.g} {parent.value.b} {parent.value.a}}
name Multiply2
xpos 643
ypos 902
}
BlinkScript {
inputs 2
recompileCount 4
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise 4f09b488f640fe57a9b92d835cc81424078e447e427d9f43fb8d958e7333c795 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 4 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"bottom_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 4 \"padding\" 1 1 \"left_margin\" 1 1 \"bottom_margin\" 1 1 \"process_input\" 1 1 3 \"outsize\" Float 1 1 AAAAAA== \"offsetX\" Float 1 1 AAAAAA== \"offsetY\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n float bottom_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offsetX;\n float offsetY;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offsetX = left_margin;\n offsetY = bottom_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offsetX, xy.y * outsize + offsetY);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding 2
plot_cie_xy_left_margin 409.6
plot_cie_xy_bottom_margin 409.6
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input1
selected true
xpos 522
ypos 986
cached true
}
Dilate {
size 2.5
name Dilate1
xpos 522
ypos 1018
}
Dilate {
size -2.5
name Dilate2
xpos 522
ypos 1050
}
Output {
name Output1
xpos 522
ypos 1117
}
end_group
Multiply {
value 0.18
name Multiply1
xpos 12056
ypos 859
}
Merge2 {
inputs 2
name Merge32
xpos 11999
ypos 901
}
Merge2 {
inputs 2
name Merge33
xpos 11812
ypos 901
}
Dot {
name Dot1
label "View Plot"
note_font_size 32
xpos 11846
ypos 1020
}
Group {
inputs 0
name Group1
label "Gamut Boundary"
xpos 10366
ypos 375
}
Constant {
inputs 0
channels rgb
format "256 256 0 0 256 256 1 square_256"
name Constant3
xpos 430
ypos 180
}
Ramp {
output {rgba.red -rgba.green -rgba.blue -rgba.alpha}
p0 {0 {input.height/2}}
p1 {{input.width-1} {input.height/2}}
name Ramp1
xpos 430
ypos 252
}
Ramp {
output {-rgba.red rgba.green -rgba.blue -rgba.alpha}
p0 {{input.width/2} 0}
p1 {{input.width/2} {input.height-1}}
name Ramp2
xpos 430
ypos 276
}
Multiply {
value {{1/input.height} {(input.height-1)/input.height} 1 1}
name Multiply5
xpos 430
ypos 300
}
Expression {
expr0 r+g
expr1 1
expr2 1
name Expression1
xpos 430
ypos 332
}
Colorspace {
colorspace_in HSV
name Colorspace1
xpos 430
ypos 356
}
Output {
name Output1
selected true
xpos 430
ypos 380
}
end_group
Dot {
name Dot3
xpos 10400
ypos 430
}
set Nf6503480 [stack 0]
Dot {
name Dot4
xpos 10219
ypos 430
}
Expression {
channel0 {rgba.red rgba.green rgba.blue none}
expr0 max(r,g,b)
name achromatic1
xpos 10185
ypos 448
}
set Nf6508090 [stack 0]
Dot {
name Dot5
xpos 10219
ypos 612
}
push $Nf6508090
Dot {
name Dot8
xpos 10295
ypos 451
}
set Nf6511b40 [stack 0]
Expression {
expr0 abs(r)
expr1 abs(g)
expr2 abs(b)
name abs1
xpos 10261
ypos 472
}
set Nf6514040 [stack 0]
Dot {
name Dot7
xpos 10295
ypos 588
}
push $Nf6511b40
push $Nf6503480
Merge2 {
inputs 2
operation minus
bbox B
Achannels rgb
Bchannels rgb
output rgb
name Merge5
xpos 10366
ypos 448
}
push $Nf6514040
Merge2 {
inputs 2
operation divide
bbox B
Achannels rgb
Bchannels rgb
output rgb
name Merge6
xpos 10366
ypos 472
}
Multiply {
channels rgb
value {0.8145989776 0.8029429913 0.8796380162 0.9999999404}
name Multiply4
label "threshold values"
xpos 10366
ypos 526
}
Merge2 {
inputs 2
operation multiply
bbox B
Achannels rgb
Bchannels rgb
output rgb
name Merge7
xpos 10366
ypos 585
}
Merge2 {
inputs 2
operation minus
bbox B
Achannels rgb
Bchannels rgb
output rgb
name Merge8
xpos 10366
ypos 609
}
Group {
name PlotGamut2
xpos 10366
ypos 689
addUserKnob {20 User}
addUserKnob {6 colorize +STARTLINE}
colorize true
addUserKnob {4 gamut M {"Adobe (1998)" Apple "Best RGB" "Beta RGB" "Bruce RGB" "CIE (1931)" ColorMatch DCI-P3 "Don RGB 4" "ECI RGB" "Ekta Space PS5" "NTSC (1953)" PAL/SECAM ProPhoto SMPTE-C sRGB "Wide Gamut" AlexaV3LogC "Sony S-Gamut" ACES Rec.2020 ACEScg "CIE XYZ"}}
gamut ACEScg
addUserKnob {41 value l color T Multiply4.value}
addUserKnob {4 plotColorspace M {"CIE 1931 xy" "CIE 1976 u'v'"}}
}
Input {
inputs 0
name Input1
xpos 444
ypos 16
}
Dot {
name Dot3
xpos 478
ypos 82
}
set Nf6547b20 [stack 0]
Dot {
name Dot2
xpos 723
ypos 82
}
set Nf6549f90 [stack 0]
Colorspace {
colorspace_in CIE-XYZ
primary_in ACES
colorspace_out CIE-Yxy
name Colorspace2
xpos 787
ypos 166
}
push $Nf6549f90
ColorMatrix {
matrix {
{0.6624541811 0.1340042065 0.156187687}
{0.2722287168 0.6740817658 0.0536895174}
{-0.0055746495 0.0040607335 1.0103391}
}
name ColorMatrix1
label "ACEScg -> XYZ (none)"
xpos 689
ypos 152
}
Colorspace {
colorspace_in CIE-XYZ
illuminant_in ACES
primary_in ACES
colorspace_out CIE-Yxy
name Colorspace1
xpos 689
ypos 184
}
push $Nf6549f90
Colorspace {
primary_in {{parent.gamut}}
colorspace_out CIE-Yxy
primary_out "CIE (1931)"
name Colorspace14
xpos 579
ypos 170
}
Switch {
inputs 3
which {{"parent.gamut == 21 ? 1 : parent.gamut == 22 ? 2 : 0"}}
name Switch1
xpos 689
ypos 249
}
Dot {
name Dot8
xpos 723
ypos 279
}
set Nf6571aa0 [stack 0]
Dot {
name Dot9
xpos 829
ypos 279
}
Expression {
expr0 r
expr1 (4*g)/(-2*g+12*b+3)
expr2 (9*b)/(-2*g+12*b+3)
name Expression1
label "Yxy -> Yu'v'"
xpos 795
ypos 304
}
push $Nf6571aa0
Switch {
inputs 2
which {{parent.plotColorspace}}
name Switch3
xpos 689
ypos 308
}
Dot {
name Dot1
xpos 723
ypos 342
}
Input {
inputs 0
name Color
xpos 327
ypos 16
number 1
}
Dot {
name Dot7
xpos 361
ypos 243
}
push $Nf6547b20
Dot {
name Dot6
xpos 478
ypos 106
}
set Nf65886c0 [stack 0]
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos 444
ypos 149
}
Multiply {
value {0 1 1 1}
name Multiply4
xpos 444
ypos 175
}
push $Nf65886c0
Dot {
name Dot4
xpos 554
ypos 106
}
Dot {
name Dot5
xpos 554
ypos 243
}
Switch {
inputs 3
which {{"\[exists parent.input1] ? 2 : parent.colorize"}}
name Switch2
xpos 444
ypos 239
}
BlinkScript {
inputs 2
recompileCount 2
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise fc48d30b761944f4622c7e7cade9c548789bc618dc38d8ca992161542531f81f 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 3 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 3 \"padding\" 1 1 \"left_margin\" 1 1 \"process_input\" 1 1 2 \"outsize\" Float 1 1 AAAAAA== \"offset\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offset;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offset = dst.bounds.height()*left_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offset, xy.y * outsize + offset);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding 2
plot_cie_xy_left_margin 0.2
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input
selected true
xpos 444
ypos 335
}
Output {
name Output1
xpos 444
ypos 403
}
end_group
Group {
inputs 0
name PlotColorChecker1
xpos 10455
ypos 690
}
Group {
inputs 0
name ACESColorChecker
note_font "Bitstream Vera Sans"
xpos 317
ypos 186
}
Constant {
inputs 0
color {0.03745 0.03766 0.03895 1}
format "512 512 0 0 512 512 1 square_512"
name Constant25
label "Black\n"
note_font "Bitstream Vera Sans"
xpos 509
ypos 165
}
Constant {
inputs 0
color {0.09467 0.0952 0.09637 1}
format "512 512 0 0 512 512 1 square_512"
name Constant24
label "Neutral 3.5\n"
note_font "Bitstream Vera Sans"
xpos 413
ypos 167
}
Constant {
inputs 0
color {0.20253 0.20243 0.20287 1}
format "512 512 0 0 512 512 1 square_512"
name Constant26
label "Neutral 5\n"
note_font "Bitstream Vera Sans"
xpos 316
ypos 167
}
Constant {
inputs 0
color {0.35346 0.35337 0.35391 1}
format "512 512 0 0 512 512 1 square_512"
name Constant23
label "Neutral 6.5\n"
note_font "Bitstream Vera Sans"
xpos 220
ypos 166
}
Constant {
inputs 0
color {0.57356 0.57256 0.57169 1}
format "512 512 0 0 512 512 1 square_512"
name Constant22
label "Neutral 8\n"
note_font "Bitstream Vera Sans"
xpos 124
ypos 168
}
Constant {
inputs 0
color {0.86653 0.86792 0.85818 1}
format "512 512 0 0 512 512 1 square_512"
name Constant21
label "White\n"
note_font "Bitstream Vera Sans"
xpos 29
ypos 169
}
Constant {
inputs 0
color {0.149 0.23377 0.35939 1}
format "512 512 0 0 512 512 1 square_512"
name Constant19
label "Cyan\n"
note_font "Bitstream Vera Sans"
xpos 507
ypos 83
}
Constant {
inputs 0
color {0.30904 0.14818 0.27426 1}
format "512 512 0 0 512 512 1 square_512"
name Constant18
label "Magenta\n"
note_font "Bitstream Vera Sans"
xpos 411
ypos 85
}
Constant {
inputs 0
color {0.58921 0.53944 0.09157 1}
format "512 512 0 0 512 512 1 square_512"
name Constant20
label "Yellow\n"
note_font "Bitstream Vera Sans"
xpos 314
ypos 85
}
Constant {
inputs 0
color {0.21743 0.0707 0.0513 1}
format "512 512 0 0 512 512 1 square_512"
name Constant17
label "Red\n"
note_font "Bitstream Vera Sans"
xpos 218
ypos 84
}
Constant {
inputs 0
color {0.15366 0.25692 0.09071 1}
format "512 512 0 0 512 512 1 square_512"
name Constant16
label "Green\n"
note_font "Bitstream Vera Sans"
xpos 122
ypos 86
}
Constant {
inputs 0
color {0.08731 0.07443 0.27274 1}
format "512 512 0 0 512 512 1 square_512"
name Constant15
label "Blue\n"
note_font "Bitstream Vera Sans"
xpos 25
ypos 86
}
Constant {
inputs 0
color {0.48657 0.36686 0.08061 1}
format "512 512 0 0 512 512 1 square_512"
name Constant13
label "Orange Yellow\n"
note_font "Bitstream Vera Sans"
xpos 508
ypos -1
}
Constant {
inputs 0
color {0.34877 0.43655 0.10613 1}
format "512 512 0 0 512 512 1 square_512"
name Constant12
label "Yellow Green\n"
note_font "Bitstream Vera Sans"
xpos 412
ypos 1
}
Constant {
inputs 0
color {0.0931 0.06347 0.13525 1}
format "512 512 0 0 512 512 1 square_512"
name Constant14
label "Purple\n"
note_font "Bitstream Vera Sans"
xpos 315
ypos 1
}
Constant {
inputs 0
color {0.30203 0.13752 0.12758 1}
format "512 512 0 0 512 512 1 square_512"
name Constant11
label "Moderate Red\n"
note_font "Bitstream Vera Sans"
xpos 219
}
Constant {
inputs 0
color {0.13822 0.13037 0.33703 1}
format "512 512 0 0 512 512 1 square_512"
name Constant10
label "Purplish Blue\n"
note_font "Bitstream Vera Sans"
xpos 123
ypos 2
}
Constant {
inputs 0
color {0.38607 0.22744 0.05777 1}
format "512 512 0 0 512 512 1 square_512"
name Constant9
label "Orange\n"
note_font "Bitstream Vera Sans"
xpos 26
ypos 2
}
Constant {
inputs 0
color {0.32283 0.46208 0.40606 1}
format "512 512 0 0 512 512 1 square_512"
name Constant8
label "Bluish Green\n"
note_font "Bitstream Vera Sans"
xpos 508
ypos -89
}
Constant {
inputs 0
color {0.26684 0.24604 0.40932 1}
format "512 512 0 0 512 512 1 square_512"
name Constant7
label "Blue Flower\n"
note_font "Bitstream Vera Sans"
xpos 412
ypos -87
}
Constant {
inputs 0
color {0.10901 0.13511 0.06493 1}
format "512 512 0 0 512 512 1 square_512"
name Constant6
label "Foliage\n"
note_font "Bitstream Vera Sans"
xpos 315
ypos -87
}
Constant {
inputs 0
color {0.18476 0.20398 0.31311 1}
format "512 512 0 0 512 512 1 square_512"
name Constant4
label "Blue Sky\n"
note_font "Bitstream Vera Sans"
xpos 219
ypos -88
}
Constant {
inputs 0
color {0.40003 0.31916 0.23737 1}
format "512 512 0 0 512 512 1 square_512"
name Constant3
label "Light Skin\n"
note_font "Bitstream Vera Sans"
xpos 123
ypos -86
}
Constant {
inputs 0
color {0.11877 0.08709 0.05895 1}
format "512 512 0 0 512 512 1 square_512"
name Constant2
label "Dark Skin\n"
note_font "Bitstream Vera Sans"
selected true
xpos 26
ypos -86
}
ContactSheet {
inputs 24
width 1920
height 1280
rows 4
columns 6
roworder TopBottom
name ContactSheet1
note_font "Bitstream Vera Sans"
xpos 253
ypos 343
}
Output {
name Output1
xpos 253
ypos 443
}
end_group
Reformat {
type "to box"
box_width 6
box_height 4
box_fixed true
resize distort
filter Impulse
name Reformat2
xpos 317
ypos 210
}
ColorMatrix {
matrix {
{{"\[python (0.9525523959, 0.6624541811, 0.4123907993, 0.6369580483, 0.4865709486, 0.6380076193, 0.4581609159, 0.4878301118, 0.4516946649, 0.5070147865, 0.4462154077, 0.7352752459, 0.7064827132, 0.7064827132, 0.5990839208, 0.7976672348, 1.0000000000, 1.48804061)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.0000000000, 0.1340042065, 0.3575843394, 0.1446169036, 0.2656676932, 0.2147038563, 0.3832048061, 0.3432736678, 0.3178467119, 0.3587783652, 0.3157557129, 0.0686094106, 0.1288010498, 0.1288010498, 0.2489255161, 0.1351922306, 0.0000000000, -0.23423647)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.0000936786, 0.1561876870, 0.1804807884, 0.1688809752, 0.1982172852, 0.0977444514, 0.1112803526, 0.1215422950, 0.1831046977, 0.0868529229, 0.1906749540, 0.1465712705, 0.1151721641, 0.1151721641, 0.1024464902, 0.0313525290, 0.0000000000, -0.3011580651)\\\[\[numvalue gamut]\\]]\n"}}
{{"\[python (0.3439664498, 0.2722287168, 0.2126390059, 0.2627002120, 0.2289745641, 0.2919537790, 0.1694420971, 0.2289038124, 0.2119478695, 0.2207240223, 0.1942557952, 0.2866940995, 0.2709796708, 0.2709796708, 0.2150758201, 0.2880374539, 0.0000000000, 0.2501373809)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.7281660966, 0.6740817658, 0.7151686788, 0.6779980715, 0.6917385218, 0.8238410415, 0.8648282025, 0.7808598244, 0.7230197720, 0.8391880546, 0.7385568692, 0.8429791340, 0.7866064112, 0.7866064112, 0.8850685017, 0.7118768834, 1.0000000000, 1.210452347)\\\[\[numvalue gamut]\\]]\n"} {"\[python (-0.0721325464, 0.0536895174, 0.0721923154, 0.0593017165, 0.0792869141, -0.1157948205, -0.0342702996, -0.0097636368, 0.0650323585, -0.0599120769, 0.0671873356, -0.1296732335, -0.0575860820, -0.0575860820, -0.1001443219, 0.0000856626, 0.0000000000, -0.4605897283)\\\[\[numvalue gamut]\\]]\n"}}
{{"\[python (0.0000000000, -0.0055746495, 0.0193308187, 0.0000000000, 0.0000000000, 0.0027982790, -0.1061849690, -0.0210075899, -0.0194509094, -0.0544519405, -0.0479226710, -0.0796808569, -0.0096778454, -0.0096778454, -0.0320658495, 0.0000000000, 0.0000000000, -0.4416591448)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.0000000000, 0.0040607335, 0.1191947798, 0.0280726930, 0.0451133819, -0.0670342357, 0.0255435258, 0.0178269864, 0.0165064159, -0.0003228254, -0.0002844886, -0.3473432170, 0.0046000375, 0.0046000375, -0.0276583907, 0.0000000000, 0.0000000000, -0.2480497808)\\\[\[numvalue gamut]\\]]\n"} {"\[python (1.0088251844, 1.0103391003, 0.9505321522, 1.0609850577, 1.0439443689, 1.1532937074, 1.0894666276, 1.0120057879, 1.0117696778, 1.0635999502, 1.0570323440, 1.5160818246, 1.0941355587, 1.0941355587, 1.1487819910, 0.8251882845, 1.0000000000, 1.69853411)\\\[\[numvalue gamut]\\]]\n"}}
}
name ColorMatrix44
label "ACES to XYZ"
note_font "Bitstream Vera Sans"
selected true
xpos 317
ypos 234
addUserKnob {20 User}
addUserKnob {4 gamut M {ACES ACEScg "Rec709 / sRGB" Rec2020 P3 AlexaWideGamut REDColor2 REDColor3 REDColor4 DRAGONcolor DRAGONcolor2 REDWideGamutRGB SGamut SGamut3 SGamut3.Cine ProPhoto "CIE XYZ" "Huge Gamut AP0 x 2" ""}}
}
set Nf662a330 [stack 0]
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
primary_out "CIE (1931)"
name Colorspace15
xpos 317
ypos 270
}
push $Nf662a330
ColorMatrix {
matrix {
{{"\[python (0.9525523959, 0.6624541811, 0.4123907993, 0.6369580483, 0.4865709486, 0.6380076193, 0.4581609159, 0.4878301118, 0.4516946649, 0.5070147865, 0.4462154077, 0.7352752459, 0.7064827132, 0.7064827132, 0.5990839208, 0.7976672348, 1.0000000000, 1.48804061)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.0000000000, 0.1340042065, 0.3575843394, 0.1446169036, 0.2656676932, 0.2147038563, 0.3832048061, 0.3432736678, 0.3178467119, 0.3587783652, 0.3157557129, 0.0686094106, 0.1288010498, 0.1288010498, 0.2489255161, 0.1351922306, 0.0000000000, -0.23423647)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.0000936786, 0.1561876870, 0.1804807884, 0.1688809752, 0.1982172852, 0.0977444514, 0.1112803526, 0.1215422950, 0.1831046977, 0.0868529229, 0.1906749540, 0.1465712705, 0.1151721641, 0.1151721641, 0.1024464902, 0.0313525290, 0.0000000000, -0.3011580651)\\\[\[numvalue gamut]\\]]\n"}}
{{"\[python (0.3439664498, 0.2722287168, 0.2126390059, 0.2627002120, 0.2289745641, 0.2919537790, 0.1694420971, 0.2289038124, 0.2119478695, 0.2207240223, 0.1942557952, 0.2866940995, 0.2709796708, 0.2709796708, 0.2150758201, 0.2880374539, 0.0000000000, 0.2501373809)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.7281660966, 0.6740817658, 0.7151686788, 0.6779980715, 0.6917385218, 0.8238410415, 0.8648282025, 0.7808598244, 0.7230197720, 0.8391880546, 0.7385568692, 0.8429791340, 0.7866064112, 0.7866064112, 0.8850685017, 0.7118768834, 1.0000000000, 1.210452347)\\\[\[numvalue gamut]\\]]\n"} {"\[python (-0.0721325464, 0.0536895174, 0.0721923154, 0.0593017165, 0.0792869141, -0.1157948205, -0.0342702996, -0.0097636368, 0.0650323585, -0.0599120769, 0.0671873356, -0.1296732335, -0.0575860820, -0.0575860820, -0.1001443219, 0.0000856626, 0.0000000000, -0.4605897283)\\\[\[numvalue gamut]\\]]\n"}}
{{"\[python (0.0000000000, -0.0055746495, 0.0193308187, 0.0000000000, 0.0000000000, 0.0027982790, -0.1061849690, -0.0210075899, -0.0194509094, -0.0544519405, -0.0479226710, -0.0796808569, -0.0096778454, -0.0096778454, -0.0320658495, 0.0000000000, 0.0000000000, -0.4416591448)\\\[\[numvalue gamut]\\]]\n"} {"\[python (0.0000000000, 0.0040607335, 0.1191947798, 0.0280726930, 0.0451133819, -0.0670342357, 0.0255435258, 0.0178269864, 0.0165064159, -0.0003228254, -0.0002844886, -0.3473432170, 0.0046000375, 0.0046000375, -0.0276583907, 0.0000000000, 0.0000000000, -0.2480497808)\\\[\[numvalue gamut]\\]]\n"} {"\[python (1.0088251844, 1.0103391003, 0.9505321522, 1.0609850577, 1.0439443689, 1.1532937074, 1.0894666276, 1.0120057879, 1.0117696778, 1.0635999502, 1.0570323440, 1.5160818246, 1.0941355587, 1.0941355587, 1.1487819910, 0.8251882845, 1.0000000000, 1.69853411)\\\[\[numvalue gamut]\\]]\n"}}
}
invert true
name ColorMatrix3
label "XYZ to \[value gamut]"
note_font "Bitstream Vera Sans"
xpos 170
ypos 322
addUserKnob {20 User}
addUserKnob {4 gamut M {ACES ACEScg "Rec709 / sRGB" Rec2020 P3 AlexaWideGamut REDColor2 REDColor3 REDColor4 DRAGONcolor DRAGONcolor2 REDWideGamutRGB SGamut SGamut3 SGamut3.Cine ProPhoto "CIE XYZ" "Huge Gamut AP0 x 2" ""}}
gamut "Rec709 / sRGB"
}
BlinkScript {
inputs 2
recompileCount 2
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise fc48d30b761944f4622c7e7cade9c548789bc618dc38d8ca992161542531f81f 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 3 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 3 \"padding\" 1 1 \"left_margin\" 1 1 \"process_input\" 1 1 2 \"outsize\" Float 1 1 AAAAAA== \"offset\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offset;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offset = dst.bounds.height()*left_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offset, xy.y * outsize + offset);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding 2
plot_cie_xy_left_margin 0.2
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input
xpos 317
ypos 381
}
set Nf66434a0 [stack 0]
Dilate {
size 2.7
name Dilate1
xpos 317
ypos 413
}
push $Nf66434a0
Shuffle {
red white
green white
blue white
name Shuffle1
xpos 438
ypos 406
}
Merge2 {
inputs 2
name Merge1
xpos 317
ypos 445
}
Dilate {
channels alpha
size 1
name Dilate2
xpos 317
ypos 469
}
Premult {
name Premult1
xpos 317
ypos 501
}
Output {
name Output1
xpos 317
ypos 545
}
end_group
push 0
Group {
inputs 0
name SpectralLocus1
xpos 10550
ypos 691
addUserKnob {20 User}
addUserKnob {6 colorize +STARTLINE}
addUserKnob {41 value T Multiply1.value}
addUserKnob {26 wavelength}
addUserKnob {7 start -STARTLINE R 375 780}
start 375
addUserKnob {7 end R 375 780}
end 780
addUserKnob {6 purples l "show \"line of purples\"" +STARTLINE}
}
Constant {
inputs 0
channels rgb
format "16384 2 0 0 16384 2 1 14bit_lut"
name bg1
xpos 507
ypos -17
addUserKnob {20 User}
addUserKnob {7 wl}
wl {{clamp(frame+375,375,780)}}
}
set Nf52ca060 [stack 0]
Ramp {
p0 {0 1}
p1 {16383 1}
name Ramp4
xpos 507
ypos 55
}
set Nf52ce980 [stack 0]
Dot {
name Dot8
note_font "Bitstream Vera Sans"
xpos 681
ypos 58
}
Multiply {
value {-0.001319684205 -0.565 -0.26 1}
name Multiply2
note_font "Bitstream Vera Sans"
xpos 647
ypos 122
}
Add {
value {0.001419684151 0.737 0.2637 1}
name Add7
note_font "Bitstream Vera Sans"
xpos 647
ypos 158
}
Shuffle {
alpha white
name Shuffle22
label "\[value in]-->\[value out]"
note_font "Bitstream Vera Sans"
xpos 647
ypos 207
}
Transform {
translate {13300 0}
scale {0.1883 1}
center {0 1}
filter Impulse
name Transform1
note_font "Bitstream Vera Sans"
xpos 647
ypos 243
}
Dot {
name Dot9
note_font "Bitstream Vera Sans"
xpos 681
ypos 376
}
push $Nf52ca060
Rectangle {
area {{width*((parent.start-375)/405)} 0 {width*((parent.end-375)/405)} 2}
name Rectangle7
xpos 289
ypos 130
}
push $Nf52ce980
Multiply {
value 405
name Multiply4
xpos 507
ypos 81
}
Add {
value 375
name Add3
xpos 507
ypos 119
}
ColorLookup {
lut {master {}
red {curve x380 0.0014 x385 0.0022 0.0042 0.0076 0.0143 0.0232 0.0435 0.0776 0.1344 0.2148 0.2839 0.3285 0.3483 0.3481 0.3362 0.3187 0.2908 0.2511 0.1954 0.1421 0.0956 0.058 0.032 0.0147 0.0049 0.0024 0.0093 0.0291 0.0633 0.1096 0.1655 0.2257 0.2904 0.3597 0.4334 0.5121 0.5945 0.6784 0.7621 0.8425 0.9163 0.9786 1.0263 1.0567 1.0622 1.0456 1.0026 0.9384 0.8544 0.7514 0.6424 0.5419 0.4479 0.3608 0.2835 0.2187 0.1649 0.1212 0.0874 0.0636 0.0468 0.0329 0.0227 0.0158 0.0114 0.0081 0.0058 0.0041 0.0029 0.002 0.0014 0.001 0.0007 0.0005 0.0003 0.0002 0.0002 0.0001 0.0001 0.0001 0}
green {curve x380 0 x385 0.0001 0.0001 0.0002 0.0004 0.0006 0.0012 0.0022 0.004 0.0073 0.0116 0.0168 0.023 0.0298 0.038 0.048 0.06 0.0739 0.091 0.1126 0.139 0.1693 0.208 0.2586 0.323 0.4073 0.503 0.6082 0.71 0.7932 0.862 0.9149 0.954 0.9803 0.995 1 0.995 0.9786 0.952 0.9154 0.87 0.8163 0.757 0.6949 0.631 0.5668 0.503 0.4412 0.381 0.321 0.265 0.217 0.175 0.1382 0.107 0.0816 0.061 0.0446 0.032 0.0232 0.017 0.0119 0.0082 0.0057 0.0041 0.0029 0.0021 0.0015 0.001 0.0007 0.0005 0.0004 0.0002 0.0002 0.0001 0.0001 0.0001 0 0 0 0}
blue {curve x375 0 x380 0.0065 0.0105 0.0201 0.0362 0.0679 0.1102 0.2074 0.3713 0.6456 1.0391 1.3856 1.623 1.7471 1.7826 1.7721 1.7441 1.6692 1.5281 1.2876 1.0419 0.831 0.6162 0.4652 0.3533 0.272 0.2123 0.1582 0.1117 0.0782 0.0573 0.0422 0.0298 0.0203 0.0134 0.0087 0.0057 0.0039 0.0027 0.0021 0.0018 0.0017 0.0014 0.0011 0.001 0.0008 0.0006 0.0003 0.0002 0.0002 0.0001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
alpha {}}
name ColorLookup2
xpos 507
ypos 157
}
Merge2 {
inputs 2
operation multiply
name Merge22
xpos 507
ypos 226
}
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
name Colorspace1
note_font "Bitstream Vera Sans"
xpos 507
ypos 297
}
Crop {
box {500 0 13800 2}
name Crop13
xpos 507
ypos 321
}
Transform {
translate {-500 0}
center {8192 1}
name Transform3
note_font "Bitstream Vera Sans"
xpos 507
ypos 349
}
Merge2 {
inputs 2
name Merge1
note_font "Bitstream Vera Sans"
xpos 507
ypos 373
disable {{!parent.purples}}
}
Expression {
expr0 "r < 0 ? r * sole.r + lift.r : r < lift.r * 2 ? pow( (lift.r *2 - r) / (lift.r * 2), 2) * lift.r + r : r"
expr1 "g < 0 ? g * sole.g + lift.g : g < lift.g * 2 ? pow( (lift.g *2 - g) / (lift.g * 2), 2) * lift.g + g : g"
expr2 "b < 0 ? b * sole.b + lift.b : b < lift.b * 2 ? pow( (lift.b *2 - b) / (lift.b * 2), 2) * lift.b + b : b"
name ToeExpr1
xpos 507
ypos 397
addUserKnob {20 User}
addUserKnob {18 lift}
lift {0.15 0 0}
addUserKnob {6 lift_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
lift_panelDropped true
addUserKnob {6 lift_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {18 sole R 0 0.1}
sole {0 0 0}
addUserKnob {6 sole_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 sole_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
addUserKnob {6 lift_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
}
Colorspace {
colorspace_in CIE-Yxy
colorspace_out CIE-XYZ
name Colorspace2
note_font "Bitstream Vera Sans"
xpos 507
ypos 421
}
set Nf6754d90 [stack 0]
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
primary_out "CIE (1931)"
name Colorspace15
xpos 347
ypos 612
}
push $Nf6754d90
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos 640
ypos 571
}
Multiply {
value {1 1 1 1}
name Multiply1
xpos 640
ypos 597
}
push $Nf6754d90
ColorMatrix {
matrix {
{1.04981102 0 -9.748e-05}
{-0.49590302 1.37331305 0.09824004}
{0 0 0.99125202}
}
name ColorMatrix3
xpos 507
ypos 572
}
Shuffle {
alpha white
name Shuffle2
label "\[value in]-->\[value out]"
note_font "Bitstream Vera Sans"
xpos 507
ypos 596
}
Switch {
inputs 2
which {{parent.colorize}}
name Switch1
xpos 569
ypos 655
}
BlinkScript {
inputs 2
recompileCount 4
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise 4f09b488f640fe57a9b92d835cc81424078e447e427d9f43fb8d958e7333c795 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 4 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"bottom_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 4 \"padding\" 1 1 \"left_margin\" 1 1 \"bottom_margin\" 1 1 \"process_input\" 1 1 3 \"outsize\" Float 1 1 AAAAAA== \"offsetX\" Float 1 1 AAAAAA== \"offsetY\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n float bottom_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offsetX;\n float offsetY;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offsetX = left_margin;\n offsetY = bottom_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offsetX, xy.y * outsize + offsetY);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding 2
plot_cie_xy_left_margin 409.6
plot_cie_xy_bottom_margin 409.6
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input1
xpos 569
ypos 737
cached true
}
Dilate {
size 1
name Dilate1
xpos 569
ypos 769
}
Output {
name Output1
xpos 569
ypos 875
}
end_group
Group {
inputs 0
name SpectralLocusFill1
xpos 10641
ypos 685
addUserKnob {20 User}
addUserKnob {41 value T Multiply1.value}
addUserKnob {6 colorize +STARTLINE}
}
Constant {
inputs 0
channels rgb
format "16384 2 0 0 16384 2 1 14bit_lut"
name bg1
xpos 510
ypos -223
addUserKnob {20 User}
addUserKnob {7 wl}
wl {{clamp(frame+375,375,780)}}
}
Ramp {
p0 {0 1}
p1 {16383 1}
name Ramp4
xpos 510
ypos -152
}
Multiply {
value 405
name Multiply4
xpos 510
ypos -134
}
Add {
value 375
name Add3
xpos 510
ypos -86
}
ColorLookup {
lut {master {}
red {curve x380 0.0014 x385 0.0022 0.0042 0.0076 0.0143 0.0232 0.0435 0.0776 0.1344 0.2148 0.2839 0.3285 0.3483 0.3481 0.3362 0.3187 0.2908 0.2511 0.1954 0.1421 0.0956 0.058 0.032 0.0147 0.0049 0.0024 0.0093 0.0291 0.0633 0.1096 0.1655 0.2257 0.2904 0.3597 0.4334 0.5121 0.5945 0.6784 0.7621 0.8425 0.9163 0.9786 1.0263 1.0567 1.0622 1.0456 1.0026 0.9384 0.8544 0.7514 0.6424 0.5419 0.4479 0.3608 0.2835 0.2187 0.1649 0.1212 0.0874 0.0636 0.0468 0.0329 0.0227 0.0158 0.0114 0.0081 0.0058 0.0041 0.0029 0.002 0.0014 0.001 0.0007 0.0005 0.0003 0.0002 0.0002 0.0001 0.0001 0.0001 0}
green {curve x380 0 x385 0.0001 0.0001 0.0002 0.0004 0.0006 0.0012 0.0022 0.004 0.0073 0.0116 0.0168 0.023 0.0298 0.038 0.048 0.06 0.0739 0.091 0.1126 0.139 0.1693 0.208 0.2586 0.323 0.4073 0.503 0.6082 0.71 0.7932 0.862 0.9149 0.954 0.9803 0.995 1 0.995 0.9786 0.952 0.9154 0.87 0.8163 0.757 0.6949 0.631 0.5668 0.503 0.4412 0.381 0.321 0.265 0.217 0.175 0.1382 0.107 0.0816 0.061 0.0446 0.032 0.0232 0.017 0.0119 0.0082 0.0057 0.0041 0.0029 0.0021 0.0015 0.001 0.0007 0.0005 0.0004 0.0002 0.0002 0.0001 0.0001 0.0001 0 0 0 0}
blue {curve x375 0 x380 0.0065 0.0105 0.0201 0.0362 0.0679 0.1102 0.2074 0.3713 0.6456 1.0391 1.3856 1.623 1.7471 1.7826 1.7721 1.7441 1.6692 1.5281 1.2876 1.0419 0.831 0.6162 0.4652 0.3533 0.272 0.2123 0.1582 0.1117 0.0782 0.0573 0.0422 0.0298 0.0203 0.0134 0.0087 0.0057 0.0039 0.0027 0.0021 0.0018 0.0017 0.0014 0.0011 0.001 0.0008 0.0006 0.0003 0.0002 0.0002 0.0001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
alpha {}}
name ColorLookup2
xpos 510
ypos -56
}
Crop {
box {500 0 13800 2}
reformat true
crop false
name Crop13
xpos 510
ypos -5
}
Colorspace {
colorspace_in CIE-XYZ
colorspace_out CIE-Yxy
name Colorspace9
xpos 510
ypos 84
}
Reformat {
type "to box"
format "2048 2048 0 0 2048 2048 1 square_2k"
box_width 2048
box_height 240
box_fixed true
resize distort
filter Impulse
name Reformat5
xpos 510
ypos 162
}
set Nf67c55b0 [stack 0]
Crop {
box {0 0 {input.width/2.5} {height}}
reformat true
crop false
name Crop4
xpos 429
ypos 269
}
set Nf67ccfc0 [stack 0]
Shuffle {
red black
green black
blue black
alpha black
name Shuffle7
label "\[value in]-->\[value out]"
xpos 359
ypos 422
}
Ramp {
p0 {{width/2} 0}
p1 {{width/2} {height-1}}
name Ramp8
xpos 359
ypos 460
}
push $Nf67ccfc0
push $Nf67c55b0
Crop {
box {{Crop4.box.r} 0 {width} {height}}
reformat true
crop false
name Crop5
xpos 578
ypos 269
}
Reformat {
type "to box"
box_width {{Crop4.box.r-Crop4.box.x}}
box_height {{Crop4.box.t-Crop4.box.y}}
box_fixed true
scale {1 0.5}
resize distort
flop true
name Reformat7
xpos 578
ypos 306
}
Keymix {
inputs 3
name Keymix5
xpos 522
ypos 525
}
Reformat {
type scale
scale 2
name Reformat1
xpos 522
ypos 557
}
set Nf67f22c0 [stack 0]
push $Nf67f22c0
Colorspace {
colorspace_in CIE-Yxy
colorspace_out CIE-XYZ
name Colorspace1
xpos 643
ypos 656
}
set Nf67f9cd0 [stack 0]
Shuffle {
red white
green white
blue white
alpha white
name Shuffle1
xpos 643
ypos 762
}
Multiply {
value 0.5
name Multiply1
xpos 643
ypos 804
}
push $Nf67f9cd0
ColorMatrix {
matrix {
{1.04981102 0 -9.748e-05}
{-0.49590302 1.37331305 0.09824004}
{0 0 0.99125202}
}
name ColorMatrix3
selected true
xpos 767
ypos 781
}
Switch {
inputs 2
which {{parent.colorize}}
name Switch1
xpos 643
ypos 858
}
Multiply {
value {{parent.value.r} {parent.value.g} {parent.value.b} {parent.value.a}}
name Multiply2
xpos 643
ypos 902
}
BlinkScript {
inputs 2
recompileCount 4
ProgramGroup 1
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise 4f09b488f640fe57a9b92d835cc81424078e447e427d9f43fb8d958e7333c795 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 4 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"bottom_margin\" Float 1 AAAAAA== \"process_input\" Bool 1 AA== 4 \"padding\" 1 1 \"left_margin\" 1 1 \"bottom_margin\" 1 1 \"process_input\" 1 1 3 \"outsize\" Float 1 1 AAAAAA== \"offsetX\" Float 1 1 AAAAAA== \"offsetY\" Float 1 1 AAAAAA=="
kernelSource "kernel plot_cie_xy : public ImageComputationKernel\n\{\n Image col;\n Image Yxy;\n Image dst;\n\nparam:\n float padding;\n float left_margin;\n float bottom_margin;\n bool process_input;\n\n\nlocal:\n float outsize;\n float offsetX;\n float offsetY;\n\n void init() \{\n // calculate output width and height and offset based on padding\n outsize = dst.bounds.height()/padding;\n // xy offset for margin on lower left corner\n offsetX = left_margin;\n offsetY = bottom_margin;\n \}\n\n void process(int2 pos) \{\n // All the work will be done in the first pixel of the iteration. Essentially a single thread.\n if ( pos.x > 1 || pos.y > 1) \{ return; \}\n // Loop over all pixels in input Yxy\n if (process_input) \{\n for ( int j = Yxy.bounds.y1; j < Yxy.bounds.y2; j++) \{\n for ( int i = Yxy.bounds.x1; i < Yxy.bounds.x2; i++) \{\n // sample Yxy pixel at position i, j\n float2 xy = float2(Yxy(i, j, 1), Yxy(i, j, 2));\n // don't process black pixels\n if( xy.x == 0.0f && xy.y == 0.0f) \{ continue; \}\n // calculate output position: xy chromaticity coordinates at centered output pixel position\n float2 out_pos = float2(xy.x * outsize + offsetX, xy.y * outsize + offsetY);\n // Write color value to xy sample position in dst\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{ dst(out_pos.x, out_pos.y) = col(i, j); \}\n \}\n \}\n \}\n \}\n\};"
vectorize false
rebuild ""
plot_cie_xy_padding 2
plot_cie_xy_left_margin 409.6
plot_cie_xy_bottom_margin 409.6
plot_cie_xy_process_input true
format "2048 2048 0 0 2048 2048 1 square_2K"
specifiedFormat true
rebuild_finalise ""
name Plot_Input1
xpos 522
ypos 986
cached true
}
Dilate {
size 2.5
name Dilate1
xpos 522
ypos 1018
}
Dilate {
size -2.5
name Dilate2
xpos 522
ypos 1050
}
Output {
name Output1
xpos 522
ypos 1117
}
end_group
Multiply {
value 0.18
name Multiply2
xpos 10641
ypos 709
}
Merge2 {
inputs 3+1
name Merge1
xpos 10550
ypos 765
}
Merge2 {
inputs 2
name Merge4
xpos 10550
ypos 819
}
Dot {
name Dot2
label "View Plot"
note_font_size 32
xpos 10584
ypos 1030
}
Viewer {
inputs 2
frame_range 1-56
colour_sample_bbox {0.34765625 -0.2109375 0.349609375 -0.208984375}
samplepoints {{0.28515625 -0.056640625}
}
name Viewer1
xpos 10910
ypos 1363
}
Constant {
inputs 0
channels rgb
color {0.147279 0.264283 0.312372 0}
format "2048 2048 0 0 2048 2048 1 square_2K"
name Constant5
label "Sampled MAX(R,G,B)\nis used as distance limit"
xpos 11380
ypos 868
}