This gist has moved to a proper git repo
Please go here to get the latest version.
A gist containing experiments related to development of a gamut compression algorithm.
Please go here to get the latest version.
A gist containing experiments related to development of a gamut compression algorithm.
kernel GamutCompression : ImageComputationKernel<ePixelWise> { | |
Image<eRead, eAccessPoint, eEdgeClamped> src; | |
Image<eWrite> dst; | |
param: | |
float threshold; | |
float cyan; | |
float magenta; | |
float yellow; | |
int method; | |
bool invert; | |
// calc hyperbolic tangent | |
float tanh( float in) { | |
float f = exp(2.0f*in); | |
return (f-1.0f) / (f+1.0f); | |
} | |
// calc inverse hyperbolic tangent | |
float atanh( float in) { | |
return log((1.0f+in)/(1.0f-in))/2.0f; | |
} | |
void process() { | |
// thr is the complement of threshold. | |
// that is: the percentage of the core gamut to protect | |
float thr = 1.0f - threshold; | |
// bias limits by color component | |
// range is limited to 0.00001 > lim < 1/thr | |
// cyan = 0: no compression | |
// cyan = 1: "normal" compression with limit at 1.0 | |
// 1 > cyan < 1/thr : compress more than edge of gamut. max = hard clip (e.g., thr=0.8, max = 1.25) | |
float3 lim; | |
lim.x = 1.0f/max(0.00001f, min(1.0f/thr, cyan)); | |
lim.y = 1.0f/max(0.00001f, min(1.0f/thr, magenta)); | |
lim.z = 1.0f/max(0.00001f, min(1.0f/thr, yellow)); | |
float r = src().x; | |
float g = src().y; | |
float b = src().z; | |
// achromatic axis | |
float ach = max(r, max(g, b)); | |
// distance from the achromatic axis for each color component | |
float d_r, d_g, d_b; | |
d_r = ach == 0 ? 0 : fabs(float(r-ach)) / ach; | |
d_g = ach == 0 ? 0 : fabs(float(g-ach)) / ach; | |
d_b = ach == 0 ? 0 : fabs(float(b-ach)) / ach; | |
// compress distance for each color component | |
// method 0 : tanh - hyperbolic tangent compression method suggested by Thomas Mansencal https://community.acescentral.com/t/simplistic-gamut-mapping-approaches-in-nuke/2679/2 | |
// method 1 : exp - natural exponent compression method | |
// method 2 : simple - simple Reinhard type compression suggested by Nick Shaw https://community.acescentral.com/t/simplistic-gamut-mapping-approaches-in-nuke/2679/3 | |
// example plots for each method: https://www.desmos.com/calculator/x69iyptspq | |
float cd_r, cd_g, cd_b; | |
if (method == 0.0f) { | |
if (invert == 0.0f) { | |
cd_r = d_r > thr ? thr + (lim.x - thr) * tanh( ( (d_r - thr)/( lim.x-thr))) : d_r; | |
cd_g = d_g > thr ? thr + (lim.y - thr) * tanh( ( (d_g - thr)/( lim.y-thr))) : d_g; | |
cd_b = d_b > thr ? thr + (lim.z - thr) * tanh( ( (d_b - thr)/( lim.z-thr))) : d_b; | |
} else { | |
cd_r = d_r > thr ? thr + (lim.x - thr) * atanh( d_r/( lim.x - thr) - thr/( lim.x - thr)) : d_r; | |
cd_g = d_g > thr ? thr + (lim.y - thr) * atanh( d_g/( lim.y - thr) - thr/( lim.y - thr)) : d_g; | |
cd_b = d_b > thr ? thr + (lim.z - thr) * atanh( d_b/( lim.z - thr) - thr/( lim.z - thr)) : d_b; | |
} | |
} else if (method == 1.0f) { | |
if (invert == 0.0f) { | |
cd_r = d_r > thr ? lim.x-(lim.x-thr)*exp(-(((d_r-thr)*((1.0f*lim.x)/(lim.x-thr))/lim.x))) : d_r; | |
cd_g = d_g > thr ? lim.y-(lim.y-thr)*exp(-(((d_g-thr)*((1.0f*lim.y)/(lim.y-thr))/lim.y))) : d_g; | |
cd_b = d_b > thr ? lim.z-(lim.z-thr)*exp(-(((d_b-thr)*((1.0f*lim.z)/(lim.z-thr))/lim.z))) : d_b; | |
} else { | |
cd_r = d_r > thr ? -log( (d_r-lim.x)/(thr-lim.x))*(-thr+lim.x)/1.0f+thr : d_r; | |
cd_g = d_g > thr ? -log( (d_g-lim.y)/(thr-lim.y))*(-thr+lim.y)/1.0f+thr : d_g; | |
cd_b = d_b > thr ? -log( (d_b-lim.z)/(thr-lim.z))*(-thr+lim.z)/1.0f+thr : d_b; | |
} | |
} else if (method == 2.0f) { | |
if (invert == 0.0f) { | |
cd_r = d_r > thr ? thr+(-1/((d_r-thr)/(lim.x-thr)+1)+1)*(lim.x-thr) : d_r; | |
cd_g = d_g > thr ? thr+(-1/((d_g-thr)/(lim.y-thr)+1)+1)*(lim.y-thr) : d_g; | |
cd_b = d_b > thr ? thr+(-1/((d_b-thr)/(lim.z-thr)+1)+1)*(lim.z-thr) : d_b; | |
} else { | |
cd_r = d_r > thr ? (pow(thr, 2.0f) - thr*d_r + (lim.x-thr)*d_r) / (thr + (lim.x-thr) - d_r) : d_r; | |
cd_g = d_g > thr ? (pow(thr, 2.0f) - thr*d_g + (lim.y-thr)*d_g) / (thr + (lim.y-thr) - d_g) : d_g; | |
cd_b = d_b > thr ? (pow(thr, 2.0f) - thr*d_b + (lim.z-thr)*d_b) / (thr + (lim.z-thr) - d_b) : d_b; | |
} | |
} | |
// scale each color component relative to achromatic axis by gamut compression factor | |
float c_r, c_g, c_b; | |
c_r = ach-cd_r*ach; | |
c_g = ach-cd_g*ach; | |
c_b = ach-cd_b*ach; | |
// write to output | |
dst() = float4(c_r, c_g, c_b, 1); | |
} | |
}; |
set cut_paste_input [stack 0] | |
push $cut_paste_input | |
Group { | |
name GamutCompress_blink | |
label "\[value method]: \[value direction]" | |
note_font Helvetica | |
selected true | |
xpos -2591 | |
ypos 394 | |
addUserKnob {20 GamutCompress} | |
addUserKnob {4 method t "<b>softclip method</b>" M {tanh exp simple "" "" "" ""}} | |
addUserKnob {7 threshold t "Percentage of the gamut to affect. A value of 0.2 will leave leave the core 80% of the colors within the gamut unaffected." R 0 0.2} | |
threshold 0.2 | |
addUserKnob {26 limits_label l " " T <b>limits} | |
addUserKnob {7 cyan t "cyan limit" R 0.001 1.25} | |
cyan 1 | |
addUserKnob {7 magenta t "magenta limit" R 0.001 1.25} | |
magenta 1 | |
addUserKnob {7 yellow t "yellow limit" R 0.001 1.25} | |
yellow 1 | |
addUserKnob {26 ""} | |
addUserKnob {4 direction M {forward reverse}} | |
} | |
Input { | |
inputs 0 | |
name Input | |
xpos -40 | |
ypos -10 | |
} | |
AddChannels { | |
name AddChannels1 | |
note_font Helvetica | |
xpos -40 | |
ypos 24 | |
} | |
BlinkScript { | |
ProgramGroup 1 | |
KernelDescription "2 \"GamutCompression\" iterate pixelWise 39cdc154d9d0744705ee017683e108a77ee5e4d36e0659cdf2f2b7296ac3aee1 2 \"src\" Read Point \"dst\" Write Point 6 \"threshold\" Float 1 AAAAAA== \"cyan\" Float 1 AAAAAA== \"magenta\" Float 1 AAAAAA== \"yellow\" Float 1 AAAAAA== \"method\" Int 1 AAAAAA== \"invert\" Bool 1 AA== 6 \"threshold\" 1 1 \"cyan\" 1 1 \"magenta\" 1 1 \"yellow\" 1 1 \"method\" 1 1 \"invert\" 1 1 0" | |
kernelSource "kernel GamutCompression : ImageComputationKernel<ePixelWise> \{\n Image<eRead, eAccessPoint, eEdgeClamped> src;\n Image<eWrite> dst;\n\n param:\n float threshold;\n float cyan;\n float magenta;\n float yellow;\n int method;\n bool invert;\n\n // calc hyperbolic tangent\n float tanh( float in) \{\n float f = exp(2.0f*in);\n return (f-1.0f) / (f+1.0f);\n \}\n\n // calc inverse hyperbolic tangent\n float atanh( float in) \{\n return log((1.0f+in)/(1.0f-in))/2.0f;\n \}\n\n void process() \{\n // thr is the complement of threshold. \n // that is: the percentage of the core gamut to protect\n float thr = 1.0f - threshold;\n\n // bias limits by color component\n // range is limited to 0.00001 > lim < 1/thr\n // cyan = 0: no compression\n // cyan = 1: \"normal\" compression with limit at 1.0\n // 1 > cyan < 1/thr : compress more than edge of gamut. max = hard clip (e.g., thr=0.8, max = 1.25)\n float3 lim;\n lim.x = 1.0f/max(0.00001f, min(1.0f/thr, cyan));\n lim.y = 1.0f/max(0.00001f, min(1.0f/thr, magenta));\n lim.z = 1.0f/max(0.00001f, min(1.0f/thr, yellow));\n\n float r = src().x;\n float g = src().y;\n float b = src().z;\n\n // achromatic axis \n float ach = max(r, max(g, b));\n\n // distance from the achromatic axis for each color component\n float d_r, d_g, d_b;\n d_r = ach == 0 ? 0 : fabs(float(r-ach)) / ach;\n d_g = ach == 0 ? 0 : fabs(float(g-ach)) / ach;\n d_b = ach == 0 ? 0 : fabs(float(b-ach)) / ach;\n\n // compress distance for each color component\n // method 0 : tanh - hyperbolic tangent compression method suggested by Thomas Mansencal https://community.acescentral.com/t/simplistic-gamut-mapping-approaches-in-nuke/2679/2\n // method 1 : exp - natural exponent compression method\n // method 2 : simple - simple Reinhard type compression suggested by Nick Shaw https://community.acescentral.com/t/simplistic-gamut-mapping-approaches-in-nuke/2679/3\n // example plots for each method: https://www.desmos.com/calculator/x69iyptspq\n float cd_r, cd_g, cd_b;\n if (method == 0.0f) \{\n if (invert == 0.0f) \{\n cd_r = d_r > thr ? thr + (lim.x - thr) * tanh( ( (d_r - thr)/( lim.x-thr))) : d_r;\n cd_g = d_g > thr ? thr + (lim.y - thr) * tanh( ( (d_g - thr)/( lim.y-thr))) : d_g;\n cd_b = d_b > thr ? thr + (lim.z - thr) * tanh( ( (d_b - thr)/( lim.z-thr))) : d_b;\n \} else \{\n cd_r = d_r > thr ? thr + (lim.x - thr) * atanh( d_r/( lim.x - thr) - thr/( lim.x - thr)) : d_r;\n cd_g = d_g > thr ? thr + (lim.y - thr) * atanh( d_g/( lim.y - thr) - thr/( lim.y - thr)) : d_g;\n cd_b = d_b > thr ? thr + (lim.z - thr) * atanh( d_b/( lim.z - thr) - thr/( lim.z - thr)) : d_b;\n \}\n \} else if (method == 1.0f) \{\n if (invert == 0.0f) \{\n cd_r = d_r > thr ? lim.x-(lim.x-thr)*exp(-(((d_r-thr)*((1.0f*lim.x)/(lim.x-thr))/lim.x))) : d_r;\n cd_g = d_g > thr ? lim.y-(lim.y-thr)*exp(-(((d_g-thr)*((1.0f*lim.y)/(lim.y-thr))/lim.y))) : d_g;\n cd_b = d_b > thr ? lim.z-(lim.z-thr)*exp(-(((d_b-thr)*((1.0f*lim.z)/(lim.z-thr))/lim.z))) : d_b;\n \} else \{\n cd_r = d_r > thr ? -log( (d_r-lim.x)/(thr-lim.x))*(-thr+lim.x)/1.0f+thr : d_r;\n cd_g = d_g > thr ? -log( (d_g-lim.y)/(thr-lim.y))*(-thr+lim.y)/1.0f+thr : d_g;\n cd_b = d_b > thr ? -log( (d_b-lim.z)/(thr-lim.z))*(-thr+lim.z)/1.0f+thr : d_b;\n \}\n \} else if (method == 2.0f) \{\n if (invert == 0.0f) \{\n cd_r = d_r > thr ? thr+(-1/((d_r-thr)/(lim.x-thr)+1)+1)*(lim.x-thr) : d_r;\n cd_g = d_g > thr ? thr+(-1/((d_g-thr)/(lim.y-thr)+1)+1)*(lim.y-thr) : d_g;\n cd_b = d_b > thr ? thr+(-1/((d_b-thr)/(lim.z-thr)+1)+1)*(lim.z-thr) : d_b;\n \} else \{\n cd_r = d_r > thr ? (pow(thr, 2.0f) - thr*d_r + (lim.x-thr)*d_r) / (thr + (lim.x-thr) - d_r) : d_r;\n cd_g = d_g > thr ? (pow(thr, 2.0f) - thr*d_g + (lim.y-thr)*d_g) / (thr + (lim.y-thr) - d_g) : d_g;\n cd_b = d_b > thr ? (pow(thr, 2.0f) - thr*d_b + (lim.z-thr)*d_b) / (thr + (lim.z-thr) - d_b) : d_b;\n \}\n \}\n\n // scale each color component relative to achromatic axis by gamut compression factor\n float c_r, c_g, c_b;\n c_r = ach-cd_r*ach;\n c_g = ach-cd_g*ach;\n c_b = ach-cd_b*ach;\n\n // write to output\n dst() = float4(c_r, c_g, c_b, 1);\n\n \}\n\};" | |
rebuild "" | |
GamutCompression_threshold {{parent.threshold}} | |
GamutCompression_cyan {{parent.cyan}} | |
GamutCompression_magenta {{parent.magenta}} | |
GamutCompression_yellow {{parent.yellow}} | |
GamutCompression_method {{parent.method}} | |
GamutCompression_invert {{parent.direction}} | |
rebuild_finalise "" | |
name GamutCompress | |
note_font Helvetica | |
xpos -40 | |
ypos 82 | |
} | |
Output { | |
name Output | |
xpos -40 | |
ypos 134 | |
} | |
end_group | |
push $cut_paste_input | |
Group { | |
name GamutCompress | |
label "\[value method]: \[value direction]" | |
note_font Helvetica | |
selected true | |
xpos -2701 | |
ypos 394 | |
addUserKnob {20 GamutCompress} | |
addUserKnob {4 method t "<b>softclip method</b>" M {tanh exp simple ""}} | |
addUserKnob {7 threshold t "Percentage of the gamut to affect. A value of 0.2 will leave leave the core 80% of the colors within the gamut unaffected." R 0 0.2} | |
threshold 0.2 | |
addUserKnob {26 limits_label l " " T <b>limits} | |
addUserKnob {7 cyan t "cyan limit" R 0.001 1.25} | |
cyan 1 | |
addUserKnob {7 magenta t "magenta limit" R 0.001 1.25} | |
magenta 1 | |
addUserKnob {7 yellow t "yellow limit" R 0.001 1.25} | |
yellow 1 | |
addUserKnob {26 ""} | |
addUserKnob {4 direction M {forward reverse}} | |
addUserKnob {20 info_tab l Info} | |
addUserKnob {26 info_label l " " T "<b>Information</b>\n<br><br>\nThis tool compresses out of gamut colors back\ninto gamut.<br><br>\n\nOut of gamut colors can ocurr with modern<br>\ndigital cinema cameras. <br>\nUsing the original camera gamut, there would be<br>\nno problem, but often when doing visual effects<br>\nor grading, we need to work in a different colorspace<br>\nlike ACEScg. Since ACEScg is designed to operate within<br>\nthe spectral locus, this is where out of gamut colors can appear.<br><br>\n\nCameras can generate color outside of the spectral locus because<br>\nthe spectral response curves of the camera<br>\ndo not match the spectral response curves<br>\nof the human eye, making the camera a <br>\nnon-colorimetric device which does not satisfy<br>\nthe Luther-Ives criterion. <br><br>\n\nOut of gamut colors often ocurr with highly saturated<br>\nlight sources like police lights, neon, or lasers.<br>\nRe-mapping these colors back into gamut is necessary<br>\nfor pleasing color reproduction, and for working.<br><br>\n\n<b>Usage</b><br>\nMethod specifies the type of compression curve to use.<br>\nTanh is a hyperbolic tangent function which has a very <br>\nsmooth rolloff. This method tends to preserve the appearance<br>\nof colors very well.<br>\nExp is a natural exponential compression function which is <br>\na bit more agressive slope.<br>\nSimple has a more aggressive slope, and tends to change<br>\nthe appearance of colors a bit more, but can be good when<br>\nused with creative intent. Good base is 0.8 for limits when <br>\nusing this compression method.<br><br>\nThreshold is the percentage of the core gamut to affect.<br>\nA value of 0 would be a hard clip, a value of 0.2 would affect <br>\nthe outer 20% of the gamut's most saturated colors.<br><br>\n\nThe cyan / magenta / yellow limits allow you to adjust<br>\nthe amount of compression per color component. <br>\nFor example increasing the magenta limit will push blues more cyan.<br>\nA value of 0 is no compression. A value of 1 compresses<br>\nto the gamut boundary. And values above 1<br>\nup to a max of 1/(1-threshold) will compress more than the <br>\ngamut boundary. Note a value at max will be a hard clip at the <br>\nthreshold (inside the gamut boundary!) and is probably not something you want!<br><br>\n\nInverting the gamut compression is possible but should be used<br>\nwith an excess of caution, because saturated values can be pushed<br>\nwell outside of the spectral locus. \n<br><br>\n<b>About</b><br>\nWritten by Jed Smith with help from the <br>\nACES Gamut Mapping Virtual Working Group\n<br>github.com/jedypod\n<br>https://community.acescentral.com/t/rgb-saturation-gamut-mapping-approach-and-a-comp-vfx-perspective"} | |
} | |
Input { | |
inputs 0 | |
name Input | |
label "\[value number]" | |
xpos -40 | |
ypos -184 | |
} | |
Dot { | |
name Dot1 | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xff | |
xpos -6 | |
ypos 66 | |
} | |
set Nbfedae20 [stack 0] | |
Dot { | |
name Dot5 | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xff | |
xpos 104 | |
ypos 66 | |
} | |
set Nbefdcc40 [stack 0] | |
Expression { | |
temp_name0 ach | |
temp_expr0 max(r,g,b) | |
temp_name1 d_r | |
temp_expr1 ach==0?0:fabs(r-ach)/ach | |
temp_name2 d_g | |
temp_expr2 ach==0?0:fabs(g-ach)/ach | |
temp_name3 d_b | |
temp_expr3 ach==0?0:fabs(b-ach)/ach | |
expr0 ach-(d_r<thr?d_r:(pow2(thr)-thr*d_r+(lim_x-thr)*d_r)/(thr+(lim_x-thr)-d_r))*ach | |
expr1 ach-(d_g<thr?d_g:(pow2(thr)-thr*d_g+(lim_y-thr)*d_g)/(thr+(lim_y-thr)-d_g))*ach | |
expr2 ach-(d_b<thr?d_b:(pow2(thr)-thr*d_b+(lim_z-thr)*d_b)/(thr+(lim_z-thr)-d_b))*ach | |
name GamutUnCompress_simple | |
note_font Helvetica | |
xpos 290 | |
ypos 111 | |
addUserKnob {20 User} | |
addUserKnob {7 thr t "complement of threshold"} | |
thr {{1-parent.threshold}} | |
addUserKnob {7 lim_x R 0 1.25} | |
lim_x {{"1/max(0.0001, min(1/thr, cyan))"}} | |
addUserKnob {7 lim_y R 0 1.25} | |
lim_y {{"1/max(0.0001, min(1/thr, magenta))"}} | |
addUserKnob {7 lim_z R 0 1.25} | |
lim_z {{"1/max(0.0001, min(1/thr, yellow))"}} | |
} | |
push $Nbefdcc40 | |
Expression { | |
temp_name0 ach | |
temp_expr0 max(r,g,b) | |
temp_name1 d_r | |
temp_expr1 ach==0?0:fabs(r-ach)/ach | |
temp_name2 d_g | |
temp_expr2 ach==0?0:fabs(g-ach)/ach | |
temp_name3 d_b | |
temp_expr3 ach==0?0:fabs(b-ach)/ach | |
expr0 "ach-(d_r<thr?d_r : -log( (d_r-lim_x)/(thr-lim_x))*(-thr+lim_x)+thr)*ach" | |
expr1 "ach-(d_g<thr?d_g : -log( (d_g-lim_y)/(thr-lim_y))*(-thr+lim_y)+thr)*ach" | |
expr2 "ach-(d_b<thr?d_b : -log( (d_b-lim_z)/(thr-lim_z))*(-thr+lim_z)+thr)*ach" | |
name GamutUnCompress_exp | |
note_font Helvetica | |
xpos 180 | |
ypos 111 | |
addUserKnob {20 User} | |
addUserKnob {7 thr t "complement of threshold"} | |
thr {{1-parent.threshold}} | |
addUserKnob {7 lim_x R 0 1.25} | |
lim_x {{"1/max(0.0001, min(1/thr, cyan))"}} | |
addUserKnob {7 lim_y R 0 1.25} | |
lim_y {{"1/max(0.0001, min(1/thr, magenta))"}} | |
addUserKnob {7 lim_z R 0 1.25} | |
lim_z {{"1/max(0.0001, min(1/thr, yellow))"}} | |
} | |
push $Nbefdcc40 | |
Expression { | |
temp_name0 ach | |
temp_expr0 max(r,g,b) | |
temp_name1 d_r | |
temp_expr1 ach==0?0:fabs(r-ach)/ach | |
temp_name2 d_g | |
temp_expr2 ach==0?0:fabs(g-ach)/ach | |
temp_name3 d_b | |
temp_expr3 ach==0?0:fabs(b-ach)/ach | |
expr0 "ach-(d_r<thr?d_r : thr+(lim_x-thr)*log((1+(d_r/(lim_x-thr)-thr/(lim_x-thr)))/(1-(d_r/(lim_x-thr)-thr/(lim_x-thr))))/2)*ach" | |
expr1 "ach-(d_g<thr?d_g : thr+(lim_y-thr)*log((1+(d_g/(lim_y-thr)-thr/(lim_y-thr)))/(1-(d_g/(lim_y-thr)-thr/(lim_y-thr))))/2)*ach" | |
expr2 "ach-(d_b<thr?d_b : thr+(lim_z-thr)*log((1+(d_b/(lim_z-thr)-thr/(lim_z-thr)))/(1-(d_b/(lim_z-thr)-thr/(lim_z-thr))))/2)*ach" | |
name GamutUnCompress_tanh | |
note_font Helvetica | |
xpos 70 | |
ypos 111 | |
addUserKnob {20 User} | |
addUserKnob {7 thr t "complement of threshold"} | |
thr {{1-parent.threshold}} | |
addUserKnob {7 lim_x R 0 1.25} | |
lim_x {{"1/max(0.0001, min(1/thr, cyan))"}} | |
addUserKnob {7 lim_y R 0 1.25} | |
lim_y {{"1/max(0.0001, min(1/thr, magenta))"}} | |
addUserKnob {7 lim_z R 0 1.25} | |
lim_z {{"1/max(0.0001, min(1/thr, yellow))"}} | |
} | |
Switch { | |
inputs 3 | |
which {{parent.method}} | |
name switch_method1 | |
note_font Helvetica | |
xpos 70 | |
ypos 183 | |
} | |
push $Nbfedae20 | |
Dot { | |
name Dot3 | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xff | |
xpos -116 | |
ypos 66 | |
} | |
set Ne72acc60 [stack 0] | |
Expression { | |
temp_name0 ach | |
temp_expr0 max(r,g,b) | |
temp_name1 d_r | |
temp_expr1 ach==0?0:fabs(r-ach)/ach | |
temp_name2 d_g | |
temp_expr2 ach==0?0:fabs(g-ach)/ach | |
temp_name3 d_b | |
temp_expr3 ach==0?0:fabs(b-ach)/ach | |
expr0 "ach-( d_r < thr ? d_r : thr+(-1/((d_r-thr)/(lim_x-thr)+1)+1)*(lim_x-thr))*ach" | |
expr1 "ach-( d_g < thr ? d_g : thr+(-1/((d_g-thr)/(lim_y-thr)+1)+1)*(lim_y-thr))*ach" | |
expr2 "ach-( d_b < thr ? d_b : thr+(-1/((d_b-thr)/(lim_z-thr)+1)+1)*(lim_z-thr))*ach" | |
name GamutCompress_simple | |
note_font Helvetica | |
xpos -150 | |
ypos 111 | |
addUserKnob {20 User} | |
addUserKnob {7 thr t "complement of threshold"} | |
thr {{1-parent.threshold}} | |
addUserKnob {7 lim_x R 0 1.25} | |
lim_x {{"1/max(0.0001, min(1/thr, cyan))"}} | |
addUserKnob {7 lim_y R 0 1.25} | |
lim_y {{"1/max(0.0001, min(1/thr, magenta))"}} | |
addUserKnob {7 lim_z R 0 1.25} | |
lim_z {{"1/max(0.0001, min(1/thr, yellow))"}} | |
} | |
push $Ne72acc60 | |
Expression { | |
temp_name0 ach | |
temp_expr0 max(r,g,b) | |
temp_name1 d_r | |
temp_expr1 ach==0?0:fabs(r-ach)/ach | |
temp_name2 d_g | |
temp_expr2 ach==0?0:fabs(g-ach)/ach | |
temp_name3 d_b | |
temp_expr3 ach==0?0:fabs(b-ach)/ach | |
expr0 "ach-( d_r > thr ? lim_x-(lim_x-thr)*exp(-(((d_r-thr)*((lim_x)/(lim_x-thr))/lim_x))) : d_r)*ach" | |
expr1 "ach-( d_g > thr ? lim_y-(lim_y-thr)*exp(-(((d_g-thr)*((lim_y)/(lim_y-thr))/lim_y))) : d_g)*ach" | |
expr2 "ach-( d_b > thr ? lim_z-(lim_z-thr)*exp(-(((d_b-thr)*((lim_z)/(lim_z-thr))/lim_z))) : d_b)*ach" | |
name GamutCompress_exp | |
note_font Helvetica | |
xpos -260 | |
ypos 111 | |
addUserKnob {20 User} | |
addUserKnob {7 thr t "complement of threshold"} | |
thr {{1-parent.threshold}} | |
addUserKnob {7 lim_x R 0 1.25} | |
lim_x {{"1/max(0.0001, min(1/thr, cyan))"}} | |
addUserKnob {7 lim_y R 0 1.25} | |
lim_y {{"1/max(0.0001, min(1/thr, magenta))"}} | |
addUserKnob {7 lim_z R 0 1.25} | |
lim_z {{"1/max(0.0001, min(1/thr, yellow))"}} | |
} | |
push $Ne72acc60 | |
Expression { | |
temp_name0 ach | |
temp_expr0 max(r,g,b) | |
temp_name1 d_r | |
temp_expr1 ach==0?0:fabs(r-ach)/ach | |
temp_name2 d_g | |
temp_expr2 ach==0?0:fabs(g-ach)/ach | |
temp_name3 d_b | |
temp_expr3 ach==0?0:fabs(b-ach)/ach | |
expr0 "ach-( d_r > thr ? thr + (lim_x -thr) * tanh( ( (d_r-thr)/( lim_x-thr))) : d_r)*ach" | |
expr1 "ach-( d_g > thr ? thr + (lim_y -thr) * tanh( ( (d_g-thr)/( lim_y-thr))) : d_g)*ach" | |
expr2 "ach-( d_b > thr ? thr + (lim_z -thr) * tanh( ( (d_b-thr)/( lim_z-thr))) : d_b)*ach" | |
name GamutCompress_tanh | |
note_font Helvetica | |
xpos -370 | |
ypos 111 | |
addUserKnob {20 User} | |
addUserKnob {7 thr t "complement of threshold"} | |
thr {{1-parent.threshold}} | |
addUserKnob {7 lim_x R 0 1.25} | |
lim_x {{"1/max(0.0001, min(1/thr, cyan))"}} | |
addUserKnob {7 lim_y R 0 1.25} | |
lim_y {{"1/max(0.0001, min(1/thr, magenta))"}} | |
addUserKnob {7 lim_z R 0 1.25} | |
lim_z {{"1/max(0.0001, min(1/thr, yellow))"}} | |
} | |
Switch { | |
inputs 3 | |
which {{parent.method}} | |
name switch_method | |
note_font Helvetica | |
xpos -150 | |
ypos 183 | |
} | |
Switch { | |
inputs 2 | |
which {{parent.direction}} | |
name switch_direction | |
note_font Helvetica | |
xpos -40 | |
ypos 231 | |
} | |
Output { | |
name Output | |
xpos -40 | |
ypos 422 | |
} | |
end_group |
#! /opt/thefoundry/nuke/Nuke12.1v2/libnuke-12.1.2.so -nx | |
version 12.1 v2 | |
define_window_layout_xml {<?xml version="1.0" encoding="UTF-8"?> | |
<layout version="1.0"> | |
<window x="0" y="0" w="1920" h="1200" fullscreen="1" screen="0"> | |
<splitter orientation="1"> | |
<split size="40"/> | |
<splitter orientation="2"> | |
<split size="1161"/> | |
<dock id="" hideTitles="1" activePageId="Toolbar.1"> | |
<page id="Toolbar.1"/> | |
</dock> | |
</splitter> | |
<split size="642"/> | |
<splitter orientation="2"> | |
<split size="723"/> | |
<dock id="" activePageId="uk.co.thefoundry.scripteditor.1"> | |
<page id="uk.co.thefoundry.scripteditor.1"/> | |
</dock> | |
<split size="434"/> | |
<dock id="" activePageId="Curve Editor.1"> | |
<page id="DopeSheet.1"/> | |
<page id="Curve Editor.1"/> | |
</dock> | |
</splitter> | |
<split size="1230"/> | |
<dock id="" activePageId="DAG.1" focus="true"> | |
<page id="DAG.1"/> | |
<page id="DAG.2"/> | |
<page id="DAG.3"/> | |
</dock> | |
</splitter> | |
</window> | |
<window x="0" y="1" w="717" h="764" screen="0"> | |
<splitter orientation="2"> | |
<split size="764"/> | |
<dock id="" activePageId="Viewer.1"> | |
<page id="Viewer.1"/> | |
</dock> | |
</splitter> | |
</window> | |
</layout> | |
} | |
Root { | |
inputs 0 | |
name "/cave/dev/color/aces_gamut_vwg/work/Jed Smith - gamut_mapping_v01.nk" | |
project_directory "\[python \{nuke.script_directory()\}]" | |
last_frame 52 | |
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 OCIO | |
OCIO_config custom | |
customOCIOConfigPath /cave/dev/ocio/ocio-configs/colour-science-OpenColorIO-Configs/aces_1.2/config.ocio | |
defaultViewerLUT "OCIO LUTs" | |
workingSpaceLUT scene_linear | |
monitorLut ACES/sRGB | |
int8Lut matte_paint | |
int16Lut texture_paint | |
logLut compositing_log | |
floatLut scene_linear | |
addUserKnob {20 mariTab l Mari} | |
addUserKnob {26 cmdStatus l "listen status" t "The status of Nuke's command port" T <b>Disabled</b>} | |
addUserKnob {26 sendStatus l "send status" t "The status of Nuke's connection to Mari" T <b>Inactive</b>} | |
addUserKnob {3 socketPort l "nuke command port" t "Port to listen on. Make sure this matches the command port set in Mari's \"Nuke\" Palette."} | |
socketPort 50107 | |
addUserKnob {6 enableSocket l enabled -STARTLINE} | |
addUserKnob {26 divider l "" +STARTLINE} | |
addUserKnob {20 advanced n 1} | |
advanced 0 | |
addUserKnob {3 portRange l "port range" t "If the main specified command port is unavailable, Nuke will try using the next port number, and continue until successful or the indicated number of ports have been tried."} | |
portRange 200 | |
addUserKnob {4 enablePortRange l "" t "Indicates whether to use a range of ports up to the given number, or to use only the single one specified." -STARTLINE M {"use range" "single port only"}} | |
addUserKnob {6 localhostOnly l "local host only" t "This determines whether the Mari bridge server will listen for connections from any machine, or from \"localhost\" (the local machine) only.<p>Only allowing connections from localhost is more secure, but will prevent you from using the Nuke<>Mari workflow across the network." +STARTLINE} | |
addUserKnob {1 hostName l "mari host" t "The machine name or IP address that Mari is running on.\nLeave empty if both Mari and Nuke are running on the same machine."} | |
hostName localhost | |
addUserKnob {3 socketPortSend l port t "Port that Mari is listening to. Make sure this matches the command port set in Mari's preferences." -STARTLINE} | |
socketPortSend 6100 | |
addUserKnob {2 mariDataDir l "mari data dir" t "Path to directory that will hold transient data to be sent to Mari (exrs, objs and fbx files). If this is left empty, a \"mari\" directory will be created in the nk file's location"} | |
mariDataDir "\[getenv NUKE_TEMP_DIR]/mariData" | |
addUserKnob {2 mariLocation l "mari launch path" t "The path to launch Mari from.<br>This can also be set using the <b>MARI_INSTALL_PATH</b> environment variable."} | |
addUserKnob {20 endGroup n -1} | |
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 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 BackdropNode8 | |
label "Image inputs:\nUse timeline to switch sources\n\nFrame 1: Plot Gamut Grid (see Master node)\nFrame 2: Color Wheel (in plotSourceGamut)\nFrame >= 3: connect your image inputs (expected in scene-linear, ACES/AP0)\n" | |
note_font_size 36 | |
xpos 3480 | |
ypos -1048 | |
bdwidth 5684 | |
bdheight 664 | |
} | |
BackdropNode { | |
inputs 0 | |
name BackdropNode9 | |
tile_color 0x829dccff | |
label "Viewing Nodes:\nImages are in ACEScg (lin_ap1)\nApply display your\ntransform as needed" | |
note_font_size 36 | |
xpos 2987 | |
ypos -677 | |
bdwidth 477 | |
bdheight 312 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/Cornell_Box_Rigid_Spheres_190_Patch_Roughplastic_Point_Grey_Grasshopper_50S5C_RGB_W_lin_ap0.exr | |
format "1024 1024 0 0 1024 1024 1 square_1K" | |
origset true | |
colorspace acescg | |
raw true | |
name Read59 | |
xpos 9025 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{67 111 114 110 101 108 108 95 66 111 120 95 82 105 103 105 100 95 83 112 104 101 114 101 115 95 49 57 48 95 80 97 116 99 104 95 82 111 117 103 104 112 108 97 115 116 105 99 95 80 111 105 110 116 95 71 114 101 121 95 71 114 97 115 115 104 111 112 112 101 114 95 53 48 83 53 67 95 82 71 66 95 87 95 108 105 110 95 97 112 48 46 101 120 114} | |
} | |
old_expression_markers {{0 94} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text45 | |
xpos 9025 | |
ypos -624 | |
} | |
Dot { | |
name Dot1 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 9059 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/Cornell_Box_Rigid_Spheres_190_Patch_Roughplastic_Pentax_K_5_RGB_W_lin_ap0.exr | |
format "1024 1024 0 0 1024 1024 1 square_1K" | |
origset true | |
colorspace acescg | |
raw true | |
name Read58 | |
xpos 8915 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{67 111 114 110 101 108 108 95 66 111 120 95 82 105 103 105 100 95 83 112 104 101 114 101 115 95 49 57 48 95 80 97 116 99 104 95 82 111 117 103 104 112 108 97 115 116 105 99 95 80 101 110 116 97 120 95 75 95 53 95 82 71 66 95 87 95 108 105 110 95 97 112 48 46 101 120 114} | |
} | |
old_expression_markers {{0 76} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text44 | |
xpos 8915 | |
ypos -624 | |
} | |
Dot { | |
name Dot2 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 8949 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/Cornell_Box_Rigid_Spheres_190_Patch_Roughplastic_Olympus_E_PL2_RGB_W_lin_ap0.exr | |
format "1024 1024 0 0 1024 1024 1 square_1K" | |
origset true | |
colorspace acescg | |
raw true | |
name Read57 | |
xpos 8805 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{67 111 114 110 101 108 108 95 66 111 120 95 82 105 103 105 100 95 83 112 104 101 114 101 115 95 49 57 48 95 80 97 116 99 104 95 82 111 117 103 104 112 108 97 115 116 105 99 95 79 108 121 109 112 117 115 95 69 95 80 76 50 95 82 71 66 95 87 95 108 105 110 95 97 112 48 46 101 120 114} | |
} | |
old_expression_markers {{0 79} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text43 | |
xpos 8805 | |
ypos -624 | |
} | |
Dot { | |
name Dot3 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 8839 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/Cornell_Box_Rigid_Spheres_190_Patch_Roughplastic_Nokia_N900_RGB_W_lin_ap0.exr | |
format "1024 1024 0 0 1024 1024 1 square_1K" | |
origset true | |
colorspace acescg | |
raw true | |
name Read56 | |
xpos 8695 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{67 111 114 110 101 108 108 95 66 111 120 95 82 105 103 105 100 95 83 112 104 101 114 101 115 95 49 57 48 95 80 97 116 99 104 95 82 111 117 103 104 112 108 97 115 116 105 99 95 78 111 107 105 97 95 78 57 48 48 95 82 71 66 95 87 95 108 105 110 95 97 112 48 46 101 120 114} | |
} | |
old_expression_markers {{0 76} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text42 | |
xpos 8695 | |
ypos -624 | |
} | |
Dot { | |
name Dot4 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 8729 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/Cornell_Box_Rigid_Spheres_190_Patch_Roughplastic_Nikon_D3_RGB_W_lin_ap0.exr | |
format "1024 1024 0 0 1024 1024 1 square_1K" | |
origset true | |
colorspace acescg | |
raw true | |
name Read55 | |
xpos 8585 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{67 111 114 110 101 108 108 95 66 111 120 95 82 105 103 105 100 95 83 112 104 101 114 101 115 95 49 57 48 95 80 97 116 99 104 95 82 111 117 103 104 112 108 97 115 116 105 99 95 78 105 107 111 110 95 68 51 95 82 71 66 95 87 95 108 105 110 95 97 112 48 46 101 120 114} | |
} | |
old_expression_markers {{0 74} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text41 | |
xpos 8585 | |
ypos -624 | |
} | |
Dot { | |
name Dot5 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 8619 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/Cornell_Box_Rigid_Spheres_190_Patch_Roughplastic_Hasselblad_H2_RGB_W_lin_ap0.exr | |
format "1024 1024 0 0 1024 1024 1 square_1K" | |
origset true | |
colorspace acescg | |
raw true | |
name Read54 | |
xpos 8475 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{67 111 114 110 101 108 108 95 66 111 120 95 82 105 103 105 100 95 83 112 104 101 114 101 115 95 49 57 48 95 80 97 116 99 104 95 82 111 117 103 104 112 108 97 115 116 105 99 95 72 97 115 115 101 108 98 108 97 100 95 72 50 95 82 71 66 95 87 95 108 105 110 95 97 112 48 46 101 120 114} | |
} | |
old_expression_markers {{0 79} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text40 | |
xpos 8475 | |
ypos -624 | |
} | |
Dot { | |
name Dot6 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 8509 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/Cornell_Box_Rigid_Spheres_190_Patch_Roughplastic_Fujifilm_X_T2_RGB_W_lin_ap0.exr | |
format "1024 1024 0 0 1024 1024 1 square_1K" | |
origset true | |
colorspace acescg | |
raw true | |
name Read28 | |
xpos 8365 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{67 111 114 110 101 108 108 95 66 111 120 95 82 105 103 105 100 95 83 112 104 101 114 101 115 95 49 57 48 95 80 97 116 99 104 95 82 111 117 103 104 112 108 97 115 116 105 99 95 70 117 106 105 102 105 108 109 95 88 95 84 50 95 82 71 66 95 87 95 108 105 110 95 97 112 48 46 101 120 114} | |
} | |
old_expression_markers {{0 79} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text39 | |
xpos 8365 | |
ypos -624 | |
} | |
Dot { | |
name Dot7 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 8399 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/Cornell_Box_Rigid_Spheres_190_Patch_Roughplastic_CIE_1931_2_Degree_Standard_Observer_RGB_W_lin_ap0.exr | |
format "1024 1024 0 0 1024 1024 1 square_1K" | |
origset true | |
colorspace acescg | |
raw true | |
name Read27 | |
xpos 8255 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{67 111 114 110 101 108 108 95 66 111 120 95 82 105 103 105 100 95 83 112 104 101 114 101 115 95 49 57 48 95 80 97 116 99 104 95 82 111 117 103 104 112 108 97 115 116 105 99 95 67 73 69 95 49 57 51 49 95 50 95 68 101 103 114 101 101 95 83 116 97 110 100 97 114 100 95 79 98 115 101 114 118 101 114 95 82 71 66 95 87 95 108 105 110 95 97 112 48 46 101 120 114} | |
} | |
old_expression_markers {{0 101} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text38 | |
xpos 8255 | |
ypos -624 | |
} | |
Dot { | |
name Dot8 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 8289 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/Cornell_Box_Rigid_Spheres_190_Patch_Roughplastic_Canon_5DMarkII_RGB_W_lin_ap0.exr | |
format "1024 1024 0 0 1024 1024 1 square_1K" | |
origset true | |
colorspace acescg | |
raw true | |
name Read26 | |
xpos 8145 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{67 111 114 110 101 108 108 95 66 111 120 95 82 105 103 105 100 95 83 112 104 101 114 101 115 95 49 57 48 95 80 97 116 99 104 95 82 111 117 103 104 112 108 97 115 116 105 99 95 67 97 110 111 110 95 53 68 77 97 114 107 73 73 95 82 71 66 95 87 95 108 105 110 95 97 112 48 46 101 120 114} | |
} | |
old_expression_markers {{0 80} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text37 | |
xpos 8145 | |
ypos -624 | |
} | |
Dot { | |
name Dot9 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 8179 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/A004C096_171213_R11N_lin_ap0.0895897.exr | |
format "3168 1782 0 0 3168 1782 1 " | |
origset true | |
colorspace acescg | |
raw true | |
name Read53 | |
xpos 8047 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{65 48 48 52 67 48 57 54 95 49 55 49 50 49 51 95 82 49 49 78 95 108 105 110 95 97 112 48 46 48 56 57 53 56 57 55 46 101 120 114} | |
} | |
old_expression_markers {{0 39} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text36 | |
xpos 8047 | |
ypos -624 | |
} | |
Dot { | |
name Dot10 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 8081 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/A004C095_171213_R11N_lin_ap0.0893744.exr | |
format "3168 1782 0 0 3168 1782 1 " | |
origset true | |
colorspace acescg | |
raw true | |
name Read52 | |
xpos 7937 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{65 48 48 52 67 48 57 53 95 49 55 49 50 49 51 95 82 49 49 78 95 108 105 110 95 97 112 48 46 48 56 57 51 55 52 52 46 101 120 114} | |
} | |
old_expression_markers {{0 39} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text35 | |
xpos 7937 | |
ypos -624 | |
} | |
Dot { | |
name Dot11 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 7971 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/A004C094_171213_R11N_lin_ap0.0892173.exr | |
format "3168 1782 0 0 3168 1782 1 " | |
origset true | |
version 14 | |
colorspace acescg | |
raw true | |
name Read51 | |
xpos 7827 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{65 48 48 52 67 48 57 52 95 49 55 49 50 49 51 95 82 49 49 78 95 108 105 110 95 97 112 48 46 48 56 57 50 49 55 51 46 101 120 114} | |
} | |
old_expression_markers {{0 39} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text34 | |
xpos 7827 | |
ypos -624 | |
} | |
Dot { | |
name Dot12 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 7861 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/A004C093_171213_R11N_lin_ap0.0890902.exr | |
format "3168 1782 0 0 3168 1782 1 " | |
origset true | |
colorspace acescg | |
raw true | |
name Read50 | |
xpos 7717 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{65 48 48 52 67 48 57 51 95 49 55 49 50 49 51 95 82 49 49 78 95 108 105 110 95 97 112 48 46 48 56 57 48 57 48 50 46 101 120 114} | |
} | |
old_expression_markers {{0 39} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text33 | |
xpos 7717 | |
ypos -624 | |
} | |
Dot { | |
name Dot13 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 7751 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/A004C092_171213_R11N_lin_ap0.0889688.exr | |
format "3168 1782 0 0 3168 1782 1 " | |
origset true | |
colorspace acescg | |
raw true | |
name Read49 | |
xpos 7607 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{65 48 48 52 67 48 57 50 95 49 55 49 50 49 51 95 82 49 49 78 95 108 105 110 95 97 112 48 46 48 56 56 57 54 56 56 46 101 120 114} | |
} | |
old_expression_markers {{0 39} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text32 | |
xpos 7607 | |
ypos -624 | |
} | |
Dot { | |
name Dot14 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 7641 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/A004C091_171213_R11N_lin_ap0.0888367.exr | |
format "3168 1782 0 0 3168 1782 1 " | |
origset true | |
colorspace acescg | |
raw true | |
name Read48 | |
xpos 7497 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{65 48 48 52 67 48 57 49 95 49 55 49 50 49 51 95 82 49 49 78 95 108 105 110 95 97 112 48 46 48 56 56 56 51 54 55 46 101 120 114} | |
} | |
old_expression_markers {{0 39} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text31 | |
xpos 7497 | |
ypos -624 | |
} | |
Dot { | |
name Dot15 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 7531 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/A004C090_171213_R11N_lin_ap0.0887144.exr | |
format "3168 1782 0 0 3168 1782 1 " | |
origset true | |
colorspace acescg | |
raw true | |
name Read47 | |
xpos 7387 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{65 48 48 52 67 48 57 48 95 49 55 49 50 49 51 95 82 49 49 78 95 108 105 110 95 97 112 48 46 48 56 56 55 49 52 52 46 101 120 114} | |
} | |
old_expression_markers {{0 39} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text30 | |
xpos 7387 | |
ypos -624 | |
} | |
Dot { | |
name Dot16 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 7421 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/A004C089_171213_R11N_lin_ap0.0885836.exr | |
format "3168 1782 0 0 3168 1782 1 " | |
origset true | |
colorspace acescg | |
raw true | |
name Read46 | |
xpos 7277 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{65 48 48 52 67 48 56 57 95 49 55 49 50 49 51 95 82 49 49 78 95 108 105 110 95 97 112 48 46 48 56 56 53 56 51 54 46 101 120 114} | |
} | |
old_expression_markers {{0 39} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text29 | |
xpos 7277 | |
ypos -624 | |
} | |
Dot { | |
name Dot17 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 7311 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/A004C088_171213_R11N_lin_ap0.0883827.exr | |
format "3168 1782 0 0 3168 1782 1 " | |
origset true | |
colorspace acescg | |
raw true | |
name Read45 | |
xpos 7167 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{65 48 48 52 67 48 56 56 95 49 55 49 50 49 51 95 82 49 49 78 95 108 105 110 95 97 112 48 46 48 56 56 51 56 50 55 46 101 120 114} | |
} | |
old_expression_markers {{0 39} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text28 | |
xpos 7167 | |
ypos -624 | |
} | |
Dot { | |
name Dot18 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 7201 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/A004C087_171213_R11N_lin_ap0.0880363.exr | |
format "3168 1782 0 0 3168 1782 1 " | |
origset true | |
colorspace acescg | |
raw true | |
name Read44 | |
xpos 7057 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{65 48 48 52 67 48 56 55 95 49 55 49 50 49 51 95 82 49 49 78 95 108 105 110 95 97 112 48 46 48 56 56 48 51 54 51 46 101 120 114} | |
} | |
old_expression_markers {{0 39} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text27 | |
xpos 7057 | |
ypos -624 | |
} | |
Dot { | |
name Dot19 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 7091 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/A004C086_171213_R11N_lin_ap0.0878098.exr | |
format "3168 1782 0 0 3168 1782 1 " | |
origset true | |
colorspace acescg | |
raw true | |
name Read43 | |
xpos 6947 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{65 48 48 52 67 48 56 54 95 49 55 49 50 49 51 95 82 49 49 78 95 108 105 110 95 97 112 48 46 48 56 55 56 48 57 56 46 101 120 114} | |
} | |
old_expression_markers {{0 39} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text26 | |
xpos 6947 | |
ypos -624 | |
} | |
Dot { | |
name Dot20 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 6981 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/A004C085_171213_R11N_lin_ap0.0876649.exr | |
format "3168 1782 0 0 3168 1782 1 " | |
origset true | |
colorspace acescg | |
raw true | |
name Read42 | |
xpos 6837 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{65 48 48 52 67 48 56 53 95 49 55 49 50 49 51 95 82 49 49 78 95 108 105 110 95 97 112 48 46 48 56 55 54 54 52 57 46 101 120 114} | |
} | |
old_expression_markers {{0 39} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text25 | |
xpos 6837 | |
ypos -624 | |
} | |
Dot { | |
name Dot21 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 6871 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/A004C084_171213_R11N_lin_ap0.0875601.exr | |
format "3168 1782 0 0 3168 1782 1 " | |
origset true | |
colorspace acescg | |
raw true | |
name Read41 | |
xpos 6727 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{65 48 48 52 67 48 56 52 95 49 55 49 50 49 51 95 82 49 49 78 95 108 105 110 95 97 112 48 46 48 56 55 53 54 48 49 46 101 120 114} | |
} | |
old_expression_markers {{0 39} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text24 | |
xpos 6727 | |
ypos -624 | |
} | |
Dot { | |
name Dot22 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 6761 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/A004C083_171213_R11N_lin_ap0.0874303.exr | |
format "3168 1782 0 0 3168 1782 1 " | |
origset true | |
colorspace acescg | |
raw true | |
name Read40 | |
xpos 6617 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{65 48 48 52 67 48 56 51 95 49 55 49 50 49 51 95 82 49 49 78 95 108 105 110 95 97 112 48 46 48 56 55 52 51 48 51 46 101 120 114} | |
} | |
old_expression_markers {{0 39} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text23 | |
xpos 6617 | |
ypos -624 | |
} | |
Dot { | |
name Dot23 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 6651 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/A004C082_171213_R11N_lin_ap0.0873001.exr | |
format "3168 1782 0 0 3168 1782 1 " | |
origset true | |
colorspace acescg | |
raw true | |
name Read39 | |
xpos 6507 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{65 48 48 52 67 48 56 50 95 49 55 49 50 49 51 95 82 49 49 78 95 108 105 110 95 97 112 48 46 48 56 55 51 48 48 49 46 101 120 114} | |
} | |
old_expression_markers {{0 39} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text22 | |
xpos 6507 | |
ypos -624 | |
} | |
Dot { | |
name Dot24 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 6541 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/A004C081_171213_R11N_lin_ap0.0871457.exr | |
format "3168 1782 0 0 3168 1782 1 " | |
origset true | |
colorspace acescg | |
raw true | |
name Read38 | |
xpos 6397 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{65 48 48 52 67 48 56 49 95 49 55 49 50 49 51 95 82 49 49 78 95 108 105 110 95 97 112 48 46 48 56 55 49 52 53 55 46 101 120 114} | |
} | |
old_expression_markers {{0 39} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text21 | |
xpos 6397 | |
ypos -624 | |
} | |
Dot { | |
name Dot25 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 6431 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/A004C080_171213_R11N_lin_ap0.0869910.exr | |
format "3168 1782 0 0 3168 1782 1 " | |
origset true | |
colorspace acescg | |
raw true | |
name Read37 | |
xpos 6287 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{65 48 48 52 67 48 56 48 95 49 55 49 50 49 51 95 82 49 49 78 95 108 105 110 95 97 112 48 46 48 56 54 57 57 49 48 46 101 120 114} | |
} | |
old_expression_markers {{0 39} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text20 | |
xpos 6287 | |
ypos -624 | |
} | |
Dot { | |
name Dot26 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 6321 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/A004C079_171213_R11N_lin_ap0.0867242.exr | |
format "3168 1782 0 0 3168 1782 1 " | |
origset true | |
colorspace acescg | |
raw true | |
name Read36 | |
xpos 6177 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{65 48 48 52 67 48 55 57 95 49 55 49 50 49 51 95 82 49 49 78 95 108 105 110 95 97 112 48 46 48 56 54 55 50 52 50 46 101 120 114} | |
} | |
old_expression_markers {{0 39} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text19 | |
xpos 6177 | |
ypos -624 | |
} | |
Dot { | |
name Dot27 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 6211 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/A004C078_171213_R11N_lin_ap0.0865904.exr | |
format "3168 1782 0 0 3168 1782 1 " | |
origset true | |
colorspace acescg | |
raw true | |
name Read35 | |
xpos 6067 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{65 48 48 52 67 48 55 56 95 49 55 49 50 49 51 95 82 49 49 78 95 108 105 110 95 97 112 48 46 48 56 54 53 57 48 52 46 101 120 114} | |
} | |
old_expression_markers {{0 39} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text18 | |
xpos 6067 | |
ypos -624 | |
} | |
Dot { | |
name Dot28 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 6101 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/A004C077_171213_R11N_lin_ap0.0864011.exr | |
format "3168 1782 0 0 3168 1782 1 " | |
origset true | |
colorspace acescg | |
raw true | |
name Read34 | |
xpos 5957 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{65 48 48 52 67 48 55 55 95 49 55 49 50 49 51 95 82 49 49 78 95 108 105 110 95 97 112 48 46 48 56 54 52 48 49 49 46 101 120 114} | |
} | |
old_expression_markers {{0 39} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text17 | |
xpos 5957 | |
ypos -624 | |
} | |
Dot { | |
name Dot29 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 5991 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/A004C076_171213_R11N_lin_ap0.0862483.exr | |
format "3168 1782 0 0 3168 1782 1 " | |
origset true | |
colorspace acescg | |
raw true | |
name Read33 | |
xpos 5847 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{65 48 48 52 67 48 55 54 95 49 55 49 50 49 51 95 82 49 49 78 95 108 105 110 95 97 112 48 46 48 56 54 50 52 56 51 46 101 120 114} | |
} | |
old_expression_markers {{0 39} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text16 | |
xpos 5847 | |
ypos -624 | |
} | |
Dot { | |
name Dot30 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 5881 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/A004C075_171213_R11N_lin_ap0.0861340.exr | |
format "3168 1782 0 0 3168 1782 1 " | |
origset true | |
colorspace acescg | |
raw true | |
name Read32 | |
xpos 5737 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{65 48 48 52 67 48 55 53 95 49 55 49 50 49 51 95 82 49 49 78 95 108 105 110 95 97 112 48 46 48 56 54 49 51 52 48 46 101 120 114} | |
} | |
old_expression_markers {{0 39} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text15 | |
xpos 5737 | |
ypos -624 | |
} | |
Dot { | |
name Dot31 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 5771 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/A004C074_171213_R11N_lin_ap0.0858420.exr | |
format "3168 1782 0 0 3168 1782 1 " | |
origset true | |
colorspace acescg | |
raw true | |
name Read31 | |
xpos 5627 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{65 48 48 52 67 48 55 52 95 49 55 49 50 49 51 95 82 49 49 78 95 108 105 110 95 97 112 48 46 48 56 53 56 52 50 48 46 101 120 114} | |
} | |
old_expression_markers {{0 39} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text14 | |
xpos 5627 | |
ypos -624 | |
} | |
Dot { | |
name Dot32 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 5661 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/A004C073_171213_R11N_lin_ap0.0856643.exr | |
format "3168 1782 0 0 3168 1782 1 " | |
origset true | |
colorspace acescg | |
raw true | |
name Read30 | |
xpos 5517 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{65 48 48 52 67 48 55 51 95 49 55 49 50 49 51 95 82 49 49 78 95 108 105 110 95 97 112 48 46 48 56 53 54 54 52 51 46 101 120 114} | |
} | |
old_expression_markers {{0 39} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text13 | |
xpos 5517 | |
ypos -624 | |
} | |
Dot { | |
name Dot33 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 5551 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/A004C072_171213_R11N_lin_ap0.0854945.exr | |
format "3168 1782 0 0 3168 1782 1 " | |
origset true | |
colorspace acescg | |
raw true | |
name Read29 | |
xpos 5407 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{65 48 48 52 67 48 55 50 95 49 55 49 50 49 51 95 82 49 49 78 95 108 105 110 95 97 112 48 46 48 56 53 52 57 52 53 46 101 120 114} | |
} | |
old_expression_markers {{0 39} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text12 | |
xpos 5407 | |
ypos -624 | |
} | |
Dot { | |
name Dot34 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 5441 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/Justin_Johnson_025A6843_lin_ap0.exr | |
format "5796 3870 0 0 5796 3870 1 " | |
origset true | |
colorspace acescg | |
raw true | |
name Read23 | |
xpos 5305 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{74 117 115 116 105 110 95 74 111 104 110 115 111 110 95 48 50 53 65 54 56 52 51 95 108 105 110 95 97 112 48 46 101 120 114} | |
} | |
old_expression_markers {{0 34} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text56 | |
xpos 5305 | |
ypos -624 | |
} | |
Dot { | |
name Dot35 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 5339 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/Justin_Johnson_025A6842_lin_ap0.exr | |
format "5796 3870 0 0 5796 3870 1 " | |
origset true | |
colorspace acescg | |
raw true | |
name Read22 | |
xpos 5195 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{74 117 115 116 105 110 95 74 111 104 110 115 111 110 95 48 50 53 65 54 56 52 50 95 108 105 110 95 97 112 48 46 101 120 114} | |
} | |
old_expression_markers {{0 34} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text55 | |
xpos 5195 | |
ypos -624 | |
} | |
Dot { | |
name Dot36 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 5229 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/Justin_Johnson_025A6841_lin_ap0.exr | |
format "5796 3870 0 0 5796 3870 1 " | |
origset true | |
colorspace acescg | |
raw true | |
name Read21 | |
xpos 5085 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{74 117 115 116 105 110 95 74 111 104 110 115 111 110 95 48 50 53 65 54 56 52 49 95 108 105 110 95 97 112 48 46 101 120 114} | |
} | |
old_expression_markers {{0 34} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text54 | |
xpos 5085 | |
ypos -624 | |
} | |
Dot { | |
name Dot37 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 5119 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/Justin_Johnson_025A6840_lin_ap0.exr | |
format "5796 3870 0 0 5796 3870 1 " | |
origset true | |
colorspace acescg | |
raw true | |
name Read20 | |
xpos 4975 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{74 117 115 116 105 110 95 74 111 104 110 115 111 110 95 48 50 53 65 54 56 52 48 95 108 105 110 95 97 112 48 46 101 120 114} | |
} | |
old_expression_markers {{0 34} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text53 | |
xpos 4975 | |
ypos -624 | |
} | |
Dot { | |
name Dot38 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 5009 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/Justin_Johnson_025A6839_lin_ap0.exr | |
format "5796 3870 0 0 5796 3870 1 " | |
origset true | |
colorspace acescg | |
raw true | |
name Read19 | |
xpos 4865 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{74 117 115 116 105 110 95 74 111 104 110 115 111 110 95 48 50 53 65 54 56 51 57 95 108 105 110 95 97 112 48 46 101 120 114} | |
} | |
old_expression_markers {{0 34} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text52 | |
xpos 4865 | |
ypos -624 | |
} | |
Dot { | |
name Dot39 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 4899 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/Justin_Johnson_025A6838_lin_ap0.exr | |
format "5796 3870 0 0 5796 3870 1 " | |
origset true | |
colorspace acescg | |
raw true | |
name Read18 | |
xpos 4755 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{74 117 115 116 105 110 95 74 111 104 110 115 111 110 95 48 50 53 65 54 56 51 56 95 108 105 110 95 97 112 48 46 101 120 114} | |
} | |
old_expression_markers {{0 34} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text51 | |
xpos 4755 | |
ypos -624 | |
} | |
Dot { | |
name Dot40 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 4789 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/Justin_Johnson_025A6837_lin_ap0.exr | |
format "5796 3870 0 0 5796 3870 1 " | |
origset true | |
colorspace acescg | |
raw true | |
name Read17 | |
xpos 4645 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{74 117 115 116 105 110 95 74 111 104 110 115 111 110 95 48 50 53 65 54 56 51 55 95 108 105 110 95 97 112 48 46 101 120 114} | |
} | |
old_expression_markers {{0 34} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text50 | |
xpos 4645 | |
ypos -624 | |
} | |
Dot { | |
name Dot41 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 4679 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/Justin_Johnson_RED_Helium_lin_ap0.exr | |
format "8192 4320 0 0 8192 4320 1 " | |
origset true | |
colorspace acescg | |
raw true | |
name Read25 | |
xpos 4544 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{74 117 115 116 105 110 95 74 111 104 110 115 111 110 95 82 69 68 95 72 101 108 105 117 109 95 108 105 110 95 97 112 48 46 101 120 114} | |
} | |
old_expression_markers {{0 36} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text49 | |
xpos 4544 | |
ypos -624 | |
} | |
Dot { | |
name Dot42 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 4578 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/Justin_Johnson_RED_Dragon_lin_ap0.exr | |
format "6144 3160 0 0 6144 3160 1 " | |
origset true | |
colorspace acescg | |
raw true | |
name Read24 | |
xpos 4448 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{74 117 115 116 105 110 95 74 111 104 110 115 111 110 95 82 69 68 95 68 114 97 103 111 110 95 108 105 110 95 97 112 48 46 101 120 114} | |
} | |
old_expression_markers {{0 36} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text48 | |
xpos 4448 | |
ypos -624 | |
} | |
Dot { | |
name Dot43 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 4482 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/Justin_Johnson_AlexaMINI_lin_ap0.exr | |
format "3424 2202 0 0 3424 2202 1 " | |
origset true | |
colorspace acescg | |
raw true | |
name Read5 | |
xpos 4352 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{74 117 115 116 105 110 95 74 111 104 110 115 111 110 95 65 108 101 120 97 77 73 78 73 95 108 105 110 95 97 112 48 46 101 120 114} | |
} | |
old_expression_markers {{0 35} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text10 | |
xpos 4352 | |
ypos -624 | |
} | |
Dot { | |
name Dot44 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 4386 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file "../images/Joseph Goldstone_-_Tungsten_3200K_lin_ap0.exr" | |
format "4096 2160 0 0 4096 2160 1 4K_DCP" | |
origset true | |
colorspace acescg | |
raw true | |
name Read1 | |
xpos 4260 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{74 111 115 101 112 104 32 71 111 108 100 115 116 111 110 101 95 45 95 84 117 110 103 115 116 101 110 95 51 50 48 48 75 95 108 105 110 95 97 112 48 46 101 120 114} | |
} | |
old_expression_markers {{0 44} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text11 | |
xpos 4260 | |
ypos -624 | |
} | |
Dot { | |
name Dot50 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 4294 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/Carol_Payne_J001_C001_08178N_001_lin_ap0.exr | |
format "3840 2160 0 0 3840 2160 1 UHD_4K" | |
origset true | |
colorspace acescg | |
raw true | |
name Read2 | |
xpos 4168 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{67 97 114 111 108 95 80 97 121 110 101 95 74 48 48 49 95 67 48 48 49 95 48 56 49 55 56 78 95 48 48 49 95 108 105 110 95 97 112 48 46 101 120 114} | |
} | |
old_expression_markers {{0 43} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text9 | |
xpos 4168 | |
ypos -624 | |
} | |
Dot { | |
name Dot49 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 4202 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/Fabian_Matas_Alexamini_OutofGamut_2_lin_ap0.exr | |
format "2048 1152 0 0 2048 1152 1 2K_1.77" | |
origset true | |
colorspace acescg | |
raw true | |
name Read3 | |
xpos 4080 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{70 97 98 105 97 110 95 77 97 116 97 115 95 65 108 101 120 97 109 105 110 105 95 79 117 116 111 102 71 97 109 117 116 95 50 95 108 105 110 95 97 112 48 46 101 120 114} | |
} | |
old_expression_markers {{0 46} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text8 | |
xpos 4080 | |
ypos -624 | |
} | |
Dot { | |
name Dot48 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 4114 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/Fabian_Matas_Alexamini_OutofGamut_1_lin_ap0.exr | |
format "2048 1152 0 0 2048 1152 1 2K_1.77" | |
origset true | |
colorspace aces | |
raw true | |
name Read4 | |
xpos 3987 | |
ypos -829 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{70 97 98 105 97 110 95 77 97 116 97 115 95 65 108 101 120 97 109 105 110 105 95 79 117 116 111 102 71 97 109 117 116 95 49 95 108 105 110 95 97 112 48 46 101 120 114} | |
} | |
old_expression_markers {{0 46} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text7 | |
xpos 3987 | |
ypos -624 | |
} | |
Dot { | |
name Dot47 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 4021 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/SonyF35.StillLife_lin_ap0.exr | |
format "1920 1080 0 0 1920 1080 1 HD_1080" | |
origset true | |
colorspace acescg | |
raw true | |
name Read16 | |
xpos 3897 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{83 111 110 121 70 51 53 46 83 116 105 108 108 76 105 102 101 95 108 105 110 95 97 112 48 46 101 120 114} | |
} | |
old_expression_markers {{0 28} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text47 | |
xpos 3897 | |
ypos -624 | |
} | |
Dot { | |
name Dot46 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 3931 | |
ypos -526 | |
} | |
Read { | |
inputs 0 | |
file_type exr | |
file ../images/syntheticChart.01_lin_ap0.exr | |
format "2048 1080 0 0 2048 1080 1 2K_DCP" | |
origset true | |
colorspace acescg | |
raw true | |
name Read15 | |
xpos 3805 | |
ypos -830 | |
} | |
Text2 { | |
font_size_toolbar 100 | |
font_width_toolbar 100 | |
font_height_toolbar 100 | |
message "\[python os.path.basename(nuke.thisNode().metadata('input/filename'))]" | |
old_message {{115 121 110 116 104 101 116 105 99 67 104 97 114 116 46 48 49 95 108 105 110 95 97 112 48 46 101 120 114} | |
} | |
old_expression_markers {{0 28} | |
} | |
box {0 0 {width} {height}} | |
yjustify bottom | |
transforms {{0 2} | |
} | |
cursor_position 17 | |
global_font_scale {{width/4000}} | |
center {1024 576} | |
cursor_initialised true | |
autofit_bbox false | |
initial_cursor_position {{0 1152} | |
} | |
group_animations {{0} imported: 0 selected: items: "root transform/"} | |
animation_layers {{1 11 1024 576 0 0 1 1 0 0 0 0} | |
} | |
enable_shadows true | |
name Text46 | |
xpos 3805 | |
ypos -624 | |
} | |
Dot { | |
name Dot45 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 3839 | |
ypos -526 | |
} | |
ColorWheel { | |
inputs 0 | |
format "2048 2048 0 0 2048 2048 1 square_2k" | |
gamma 0.45 | |
name ColorWheel5 | |
note_font "Bitstream Vera Sans" | |
xpos 3700 | |
ypos -822 | |
} | |
Group { | |
inputs 0 | |
name GamutGrid3 | |
xpos 3562 | |
ypos -817 | |
postage_stamp true | |
addUserKnob {20 GamutGrid} | |
addUserKnob {4 gamut t "Choose gamut" M {XYZ ACES ACEScg "Filmlight E-Gamut" Rec709 Rec2020 P3D60 P3D65 P3DCI ArriAlexaWideGamut "AdobeRGB\t" AdobeWideGamutRGB ROMM RIMM ERIMM ProPhotoRGB REDDRAGONcolor REDDRAGONcolor2 REDcolor REDcolor2 REDcolor3 REDcolor4 REDWideGamutRGB GoProProtune CanonCinemaGamut SonySGamut SonySGamut3Cine PanasonicVGamut ""}} | |
gamut ACES | |
addUserKnob {4 style M {dots grid}} | |
style grid | |
addUserKnob {4 distribution t "Which chromaticity space should the overlays be constructed in? \n\nYxy is familiar, but not very perceptually uniform.\n\nLu'v' is designed to be more perceptually uniform." -STARTLINE M {"CIE Yxy" "CIE Lu'v'"}} | |
addUserKnob {7 density R 10 150} | |
density 119 | |
addUserKnob {4 output t "choose pixel output type\n" M {rgb xyz ""}} | |
addUserKnob {26 chromaticity_coordinates_label l " " T "<b>Chromaticity Coordinates</b>"} | |
addUserKnob {20 chromaticities_grp l "" +STARTLINE n 1} | |
addUserKnob {41 rxy T ColorMatrix.rxy} | |
addUserKnob {41 gxy T ColorMatrix.gxy} | |
addUserKnob {41 bxy T ColorMatrix.bxy} | |
addUserKnob {41 wxy T ColorMatrix.wxy} | |
addUserKnob {41 matrix T ColorMatrix.matrix} | |
addUserKnob {20 endGroup n -1} | |
} | |
ColorWheel { | |
inputs 0 | |
format "512 512 0 0 512 512 1 square_512" | |
centerSaturation 1 | |
fillFormat false | |
area {-170 -158 682 670} | |
name ColorWheel4 | |
xpos -260 | |
ypos 14 | |
postage_stamp false | |
} | |
Crop { | |
box {0 0 512 512} | |
crop false | |
name Crop2 | |
xpos -260 | |
ypos 38 | |
} | |
Reformat { | |
type scale | |
scale {{max(parent.density/50,0.25)}} | |
resize distort | |
filter impulse | |
pbb true | |
name Reformat3 | |
note_font "Bitstream Vera Sans" | |
xpos -260 | |
ypos 62 | |
} | |
Dot { | |
name Dot11 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -226 | |
ypos 114 | |
} | |
set Nff55ea0 [stack 0] | |
push $Nff55ea0 | |
ContactSheet { | |
inputs 2 | |
width {{width*columns}} | |
height {{height/pixel_aspect*rows}} | |
rows 1 | |
columns 2 | |
roworder TopBottom | |
name ContactSheet2 | |
xpos -260 | |
ypos 158 | |
} | |
Dot { | |
name Dot1 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -226 | |
ypos 282 | |
} | |
ColorWheel { | |
inputs 0 | |
format "512 512 0 0 512 512 1 square_512" | |
fillFormat false | |
area {40 40 472 472} | |
name ColorWheel1 | |
xpos -40 | |
ypos -672 | |
postage_stamp false | |
} | |
Reformat { | |
type scale | |
scale {{max(parent.density/50,0.25)}} | |
resize distort | |
filter impulse | |
pbb true | |
name Reformat1 | |
note_font "Bitstream Vera Sans" | |
xpos -40 | |
ypos -634 | |
} | |
Crop { | |
box {0 0 {width} {height}} | |
reformat true | |
name Crop1 | |
note_font "Bitstream Vera Sans" | |
xpos -40 | |
ypos -600 | |
} | |
Unpremult { | |
name Unpremult1 | |
xpos -40 | |
ypos -514 | |
} | |
ColorMatrix { | |
matrix { | |
{{curve(which) 1 0.9525524378 0.6624541879 0.7053968906 0.4123907983 0.6369580626 0.5049495697 0.4865709841 0.4451698363 0.6380076408 0.5766690373 0.7165006995 0.797760427 0.797760427 0.797760427 0.7976718545 0.5070186853 0.4462202489 0.4300414324 0.4581649601 0.4878340662 0.4517004192 0.7352752686 0.5022571683 0.7160496712 0.7064827085 0.5990839601 0.6796444654} {curve(which) 0 0 0.1340042055 0.1640413404 0.3575843275 0.1446169019 0.2646814585 0.2656676769 0.2771343887 0.2147038579 0.1855582297 0.1010205746 0.1351858526 0.1351858526 0.1351858526 0.1351878047 0.3587769568 0.3157556653 0.3700728714 0.3832037449 0.3432727158 0.3178463876 0.06860940903 0.2929667532 0.1296834797 0.1288010478 0.2489254922 0.1522114277} {curve(which) 0 9.367863095e-05 0.1561876982 0.08101774752 0.180480808 0.1688809693 0.1830150485 0.1982172877 0.1722826511 0.09774444997 0.1882286519 0.1467743814 0.03134934977 0.03134934977 0.03134934977 0.03133957833 0.0868505761 0.190669477 0.152531758 0.1112773567 0.1215386018 0.1830992699 0.1465712637 0.1552320272 0.1047228053 0.1151721701 0.1024464965 0.1186000481}} | |
{{curve(which) 0 0.3439664543 0.2722287476 0.2801307142 0.2126390189 0.2627002299 0.237623319 0.2289745659 0.209491685 0.2919537723 0.2973450124 0.258728236 0.2880711257 0.2880711257 0.2880711257 0.2880405784 0.2207257152 0.1942579001 0.2022213936 0.1694435924 0.2289056629 0.2119505703 0.2866941094 0.1387997568 0.2612613738 0.2709796727 0.2150758505 0.2606855333} {curve(which) 1 0.7281661034 0.6740817428 0.8202066422 0.7151686549 0.6779980659 0.6891706586 0.6917385459 0.7215952873 0.8238410354 0.6273635626 0.7246823311 0.7118432522 0.7118432522 0.7118432522 0.7118694782 0.839184761 0.7385566831 0.7585275769 0.8648257852 0.7808576822 0.7230190039 0.8429791331 0.910841465 0.8696421385 0.786606431 0.8850684762 0.7748944759} {curve(which) 0 -0.07213255018 0.05368951708 -0.1003373638 0.07219231874 0.05930171534 0.07320601493 0.07928691059 0.06891305745 -0.1157948226 0.07529145479 0.01658944227 8.565396274e-05 8.565396274e-05 8.565396274e-05 8.991353388e-05 -0.05991046131 0.06718540192 0.03925102949 -0.03426937759 -0.009763340466 0.06503042579 -0.1296732277 -0.04964122549 -0.1309035122 -0.05758608505 -0.1001443192 -0.03558001295}} | |
{{curve(which) 0 -3.863927134e-08 -0.005574660841 -0.1037815213 0.01933082007 0 0 0 0 0.0027982709 0.02703136392 -2.906408625e-08 -3.236030111e-08 -3.236030111e-08 -3.236030111e-08 0 -0.0544523783 -0.04792318866 -0.0176958181 -0.1061859056 -0.02100777067 -0.01945115253 -0.07968087494 0.07801423222 -0.009676366113 -0.009677864611 -0.03206583485 -0.009310216643} {curve(which) 0 0 0.004060741514 -0.07290724665 0.1191947311 0.0280726999 0.0449459292 0.04511339962 0.04706057906 -0.06703422964 0.07068887353 0.05121183768 1.2621717e-08 1.2621717e-08 1.2621717e-08 -1.262213711e-08 -0.0003228379355 -0.0002844714036 0.08768811822 0.02554347552 0.01782695204 0.01650637016 -0.3473432064 -0.3148325086 -0.2364816219 0.004600019194 -0.02765839547 -0.004612449091} {curve(which) 1 1.008825183 1.010339141 1.265746474 0.950532198 1.060985088 0.9638792276 1.043944359 0.9073553085 1.153293729 0.9913375378 0.7738927603 0.8251045942 0.8251045942 0.8251045942 0.8248898983 1.063571215 1.057001948 0.9388025999 1.089437366 1.01197505 1.011739731 1.51608181 1.325875998 1.335215807 1.094135642 1.148782015 1.102980375}} | |
} | |
invert {{parent.invert}} | |
name ColorMatrix | |
label "RGB to XYZ" | |
xpos -40 | |
ypos -439 | |
addUserKnob {20 Gamut} | |
addUserKnob {3 which} | |
which {{parent.gamut}} | |
addUserKnob {12 rxy +DISABLED} | |
rxy {{curve(which) 0 0.7347 0.713 0.8 0.64 0.708 0.68 0.68 0.68 0.684 0.64 0.7347 0.7347 0.7347 0.7347 0.734699 0.7530442228 0.7530444911 0.6997470013 0.8786825105 0.7011810359 0.7011805919 0.780308 0.69848046 0.74 0.73 0.766 0.73} {curve(which) 0 0.2653 0.293 0.3177 0.33 0.292 0.32 0.32 0.32 0.313 0.33 0.2653 0.2653 0.2653 0.2653 0.265301 0.3278305767 0.3278310295 0.3290469303 0.3249640074 0.3290141556 0.3290136991 0.304253 0.19302645 0.27 0.28 0.275 0.28}} | |
addUserKnob {12 gxy +DISABLED} | |
gxy {{curve(which) 0 0 0.165 0.18 0.3 0.17 0.265 0.265 0.265 0.221 0.21 0.1152 0.1596 0.1596 0.1596 0.159597 0.2995702285 0.2995704905 0.304264039 0.3008887144 0.3006003047 0.3006003955 0.121595 0.32955538 0.17 0.14 0.225 0.165} {curve(which) 0 1 0.83 0.9 0.6 0.797 0.69 0.69 0.69 0.848 0.71 0.8264 0.8404 0.8404 0.8404 0.840403 0.700699322 0.7006994156 0.6236411451 0.6790547558 0.6837888343 0.6837888243 1.493994 1.02459662 1.14 0.855 0.8 0.84}} | |
addUserKnob {12 bxy +DISABLED} | |
bxy {{curve(which) 0 0.0001 0.128 0.065 0.15 0.131 0.15 0.15 0.15 0.0861 0.15 0.1566 0.0366 0.0366 0.0366 0.036598 0.07964206674 0.1450115843 0.1349139613 0.09539869461 0.1081544556 0.1453319462 0.095612 0.10844263 0.08 0.1 0.089 0.1} {curve(which) 0 -0.077 0.044 -0.0805 0.06 0.046 0.06 0.06 0.06 -0.102 0.06 0.0177 0.0001 0.0001 0.0001 0.000105 -0.05493795109 0.05109712509 0.03471744128 -0.02937932683 -0.008688175787 0.05161680362 -0.084589 -0.03467857 -0.1 -0.05 -0.087 -0.03}} | |
addUserKnob {12 wxy +DISABLED} | |
wxy {{curve(which) 0.33333 0.32168 0.32168 0.3127 0.3127 0.3127 0.32168 0.3127 0.314 0.3127 0.3127 0.3457 0.3457 0.3457 0.3457 0.345704 0.3216831877 0.3216832104 0.3216832894 0.3216832894 0.3216832104 0.3216832894 0.3127 0.3127 0.3127 0.3127 0.3127 0.3127} {curve(which) 0.33333 0.33767 0.33767 0.329 0.329 0.329 0.33767 0.329 0.351 0.329 0.329 0.3585 0.3585 0.3585 0.3585 0.35854 0.337673316 0.3376736101 0.3376734472 0.3376734472 0.3376736101 0.3376734472 0.329 0.329 0.329 0.329 0.329 0.329}} | |
} | |
Colorspace { | |
colorspace_in CIE-XYZ | |
colorspace_out CIE-Yxy | |
name Colorspace1 | |
label "\[value colorspace_in] -> \[value colorspace_out]" | |
xpos -40 | |
ypos -352 | |
} | |
set Nc47c300 [stack 0] | |
Dot { | |
name Dot2 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -556 | |
ypos -342 | |
} | |
Expression { | |
expr0 r | |
expr1 "4*g / ( -2*g + 12*b + 3)" | |
expr2 "9*b / ( -2*g + 12*b + 3)" | |
name Expression10 | |
label "CIE Yxy to CIELuv" | |
xpos -589 | |
ypos -319 | |
disable {{!parent.distribution}} | |
} | |
Expression { | |
expr0 r | |
expr1 "(-(degrees(atan2(g-white.x, b-white.y))-180)+270)%360/360" | |
expr2 "hypot(g-white.x, b-white.y)" | |
expr3 a | |
name Expression11 | |
xpos -590 | |
ypos -250 | |
cached true | |
addUserKnob {20 User} | |
addUserKnob {12 white} | |
white {{"parent.distribution ? 4*parent.wxy.x / ( -2 * parent.wxy.x + 12 * parent.wxy.y + 3) : parent.wxy"} {"parent.distribution ? 9*parent.wxy.y / ( -2*parent.wxy.x + 12*parent.wxy.y + 3) : parent.wxy"}} | |
} | |
set Nc84f9a0 [stack 0] | |
Posterize { | |
channels rgb | |
Colors {{rint(parent.density/3*2)}} | |
name Posterize1 | |
note_font "Bitstream Vera Sans" | |
xpos -590 | |
ypos -202 | |
} | |
set Nb7fc3b0 [stack 0] | |
push $Nc84f9a0 | |
Dot { | |
name Dot15 | |
note_font "Bitstream Vera Sans" | |
xpos -446 | |
ypos -222 | |
} | |
Copy { | |
inputs 2 | |
from0 rgba.blue | |
to0 rgba.blue | |
name Copy1 | |
xpos -480 | |
ypos -136 | |
} | |
push $Nb7fc3b0 | |
push $Nc84f9a0 | |
Dot { | |
name Dot16 | |
note_font "Bitstream Vera Sans" | |
xpos -666 | |
ypos -222 | |
} | |
Copy { | |
inputs 2 | |
from0 rgba.green | |
to0 rgba.green | |
name Copy2 | |
xpos -700 | |
ypos -136 | |
} | |
ContactSheet { | |
inputs 2 | |
width {{width*columns}} | |
height {{height/pixel_aspect*rows}} | |
rows 1 | |
columns 2 | |
center true | |
roworder TopBottom | |
name ContactSheet3 | |
xpos -590 | |
ypos -82 | |
} | |
Expression { | |
expr0 r | |
expr1 cos(radians(g*360))*b+white.x | |
expr2 sin(radians(g*360))*b+white.y | |
expr3 a | |
name Expression12 | |
xpos -590 | |
ypos -46 | |
cached true | |
addUserKnob {20 User} | |
addUserKnob {12 white} | |
white {{parent.Expression11.white} {parent.Expression11.white}} | |
} | |
Expression { | |
expr0 r | |
expr1 "9*g / ( 6*g - 16*b + 12)" | |
expr2 "4*b/ ( 6*g - 16*b + 12)" | |
name Expression13 | |
label "CIELuv to CIE Yxy" | |
xpos -592 | |
ypos -12 | |
disable {{!parent.distribution}} | |
} | |
Colorspace { | |
colorspace_in CIE-Yxy | |
colorspace_out CIE-XYZ | |
name Colorspace2 | |
label "\[value colorspace_in] -> \[value colorspace_out]" | |
xpos -590 | |
ypos 32 | |
} | |
ColorMatrix { | |
matrix { | |
{{parent.ColorMatrix.matrix} {parent.ColorMatrix.matrix} {parent.ColorMatrix.matrix}} | |
{{parent.ColorMatrix.matrix} {parent.ColorMatrix.matrix} {parent.ColorMatrix.matrix}} | |
{{parent.ColorMatrix.matrix} {parent.ColorMatrix.matrix} {parent.ColorMatrix.matrix}} | |
} | |
invert true | |
name ColorMatrix2 | |
label "XYZ to RGB" | |
xpos -590 | |
ypos 80 | |
} | |
Clamp { | |
channels rgba | |
maximum_enable false | |
name ClampMin2 | |
xpos -590 | |
ypos 118 | |
} | |
Clamp { | |
channels {-rgba.red -rgba.green -rgba.blue rgba.alpha} | |
minimum 1 | |
MinClampTo_enable true | |
MaxClampTo_enable true | |
name Clamp1 | |
note_font "Bitstream Vera Sans" | |
xpos -590 | |
ypos 152 | |
} | |
Premult { | |
name Premult1 | |
xpos -590 | |
ypos 206 | |
} | |
Merge2 { | |
inputs 2 | |
operation under | |
bbox B | |
name Merge2 | |
xpos -590 | |
ypos 278 | |
} | |
Shuffle { | |
alpha white | |
name Shuffle1 | |
label "\[value in] -> \[value out]" | |
xpos -590 | |
ypos 320 | |
} | |
Dot { | |
name Dot3 | |
label " GRID" | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -556 | |
ypos 378 | |
} | |
push $Nff55ea0 | |
push $Nc47c300 | |
Expression { | |
expr0 r | |
expr1 "4*g / ( -2*g + 12*b + 3)" | |
expr2 "9*b / ( -2*g + 12*b + 3)" | |
name Expression14 | |
label "CIE Yxy to CIELuv" | |
xpos -40 | |
ypos -302 | |
disable {{!parent.distribution}} | |
} | |
Expression { | |
expr0 r | |
expr1 rint(g*Colors)/Colors | |
expr2 rint(b*Colors)/Colors | |
expr3 a | |
name Expression1 | |
label rint | |
note_font "Bitstream Vera Sans" | |
xpos -40 | |
ypos -248 | |
addUserKnob {20 User} | |
addUserKnob {7 Colors R 1 256} | |
Colors {{parent.density}} | |
} | |
Expression { | |
expr0 r | |
expr1 "9*g / ( 6*g - 16*b + 12)" | |
expr2 "4*b/ ( 6*g - 16*b + 12)" | |
name Expression3 | |
label "CIELuv to CIE Yxy" | |
xpos -40 | |
ypos -190 | |
disable {{!parent.distribution}} | |
} | |
Colorspace { | |
colorspace_in CIE-Yxy | |
colorspace_out CIE-XYZ | |
name Colorspace3 | |
label "\[value colorspace_in] -> \[value colorspace_out]" | |
xpos -40 | |
ypos -142 | |
} | |
ColorMatrix { | |
matrix { | |
{{parent.ColorMatrix.matrix} {parent.ColorMatrix.matrix} {parent.ColorMatrix.matrix}} | |
{{parent.ColorMatrix.matrix} {parent.ColorMatrix.matrix} {parent.ColorMatrix.matrix}} | |
{{parent.ColorMatrix.matrix} {parent.ColorMatrix.matrix} {parent.ColorMatrix.matrix}} | |
} | |
invert true | |
name ColorMatrix1 | |
label "XYZ to RGB" | |
xpos -40 | |
ypos -72 | |
} | |
Clamp { | |
channels {-rgba.red -rgba.green -rgba.blue rgba.alpha} | |
minimum 1 | |
MinClampTo_enable true | |
MaxClampTo_enable true | |
name Clamp4 | |
note_font "Bitstream Vera Sans" | |
xpos -40 | |
ypos -16 | |
} | |
Premult { | |
name Premult2 | |
xpos -40 | |
ypos 38 | |
} | |
Merge2 { | |
inputs 2 | |
operation under | |
bbox B | |
name Merge1 | |
xpos -40 | |
ypos 110 | |
} | |
Clamp { | |
channels rgba | |
maximum_enable false | |
name ClampMin1 | |
xpos -40 | |
ypos 182 | |
} | |
Dot { | |
name Dot4 | |
label " DOTS" | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -6 | |
ypos 378 | |
} | |
Switch { | |
inputs 2 | |
which {{parent.style}} | |
name Switch1 | |
xpos -260 | |
ypos 494 | |
} | |
ColorMatrix { | |
matrix { | |
{{parent.ColorMatrix.matrix} {parent.ColorMatrix.matrix} {parent.ColorMatrix.matrix}} | |
{{parent.ColorMatrix.matrix} {parent.ColorMatrix.matrix} {parent.ColorMatrix.matrix}} | |
{{parent.ColorMatrix.matrix} {parent.ColorMatrix.matrix} {parent.ColorMatrix.matrix}} | |
} | |
name ColorMatrix4 | |
label "RGB to XYZ" | |
xpos -260 | |
ypos 560 | |
disable {{!parent.output}} | |
} | |
Output { | |
name Output | |
xpos -260 | |
ypos 734 | |
} | |
ColorWheel { | |
inputs 0 | |
format "256 256 0 0 256 256 1 square_256" | |
area {40 40 472 472} | |
name ColorWheel2 | |
xpos -40 | |
ypos -706 | |
postage_stamp false | |
} | |
end_group | |
Saturation { | |
saturation 2 | |
mode Average | |
name Saturation1 | |
xpos 3562 | |
ypos -712 | |
disable true | |
} | |
Dot { | |
name Dot55 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 3596 | |
ypos -519 | |
} | |
Switch { | |
inputs 52 | |
which {{frame-1}} | |
name Switch1 | |
note_font "Bitstream Vera Sans" | |
xpos 3700 | |
ypos -442 | |
} | |
Group { | |
name GamutToXYZ1 | |
label "\[if \{\[value invert]==true\} \{return \"XYZ to \[value gamut]\"\} else \{return \"\[value gamut] to XYZ\"\}]" | |
xpos 3700 | |
ypos -328 | |
addUserKnob {20 GamutToXYZ_tab l GamutToXYZ} | |
addUserKnob {4 gamut t "Choose gamut" M {XYZ ACES ACEScg "Filmlight E-Gamut" Rec709 Rec2020 P3D60 P3D65 P3DCI ArriAlexaWideGamut "AdobeRGB\t" AdobeWideGamutRGB ROMM RIMM ERIMM ProPhotoRGB REDDRAGONcolor REDDRAGONcolor2 REDcolor REDcolor2 REDcolor3 REDcolor4 REDWideGamutRGB GoProProtune CanonCinemaGamut SonySGamut SonySGamut3Cine PanasonicVGamut ""}} | |
gamut ACES | |
addUserKnob {6 invert +STARTLINE} | |
addUserKnob {41 matrix T ColorMatrix.matrix} | |
} | |
Input { | |
inputs 0 | |
name Input | |
xpos -40 | |
ypos -10 | |
} | |
ColorMatrix { | |
matrix { | |
{{curve(which) 1 0.9525524378 0.6624541879 0.7053968906 0.4123907983 0.6369580626 0.5049495697 0.4865709841 0.4451698363 0.6380076408 0.5766690373 0.7165006995 0.797760427 0.797760427 0.797760427 0.7976718545 0.5070186853 0.4462202489 0.4300414324 0.4581649601 0.4878340662 0.4517004192 0.7352752686 0.5022571683 0.7160496712 0.7064827085 0.5990839601 0.6796444654} {curve(which) 0 0 0.1340042055 0.1640413404 0.3575843275 0.1446169019 0.2646814585 0.2656676769 0.2771343887 0.2147038579 0.1855582297 0.1010205746 0.1351858526 0.1351858526 0.1351858526 0.1351878047 0.3587769568 0.3157556653 0.3700728714 0.3832037449 0.3432727158 0.3178463876 0.06860940903 0.2929667532 0.1296834797 0.1288010478 0.2489254922 0.1522114277} {curve(which) 0 9.367863095e-05 0.1561876982 0.08101774752 0.180480808 0.1688809693 0.1830150485 0.1982172877 0.1722826511 0.09774444997 0.1882286519 0.1467743814 0.03134934977 0.03134934977 0.03134934977 0.03133957833 0.0868505761 0.190669477 0.152531758 0.1112773567 0.1215386018 0.1830992699 0.1465712637 0.1552320272 0.1047228053 0.1151721701 0.1024464965 0.1186000481}} | |
{{curve(which) 0 0.3439664543 0.2722287476 0.2801307142 0.2126390189 0.2627002299 0.237623319 0.2289745659 0.209491685 0.2919537723 0.2973450124 0.258728236 0.2880711257 0.2880711257 0.2880711257 0.2880405784 0.2207257152 0.1942579001 0.2022213936 0.1694435924 0.2289056629 0.2119505703 0.2866941094 0.1387997568 0.2612613738 0.2709796727 0.2150758505 0.2606855333} {curve(which) 1 0.7281661034 0.6740817428 0.8202066422 0.7151686549 0.6779980659 0.6891706586 0.6917385459 0.7215952873 0.8238410354 0.6273635626 0.7246823311 0.7118432522 0.7118432522 0.7118432522 0.7118694782 0.839184761 0.7385566831 0.7585275769 0.8648257852 0.7808576822 0.7230190039 0.8429791331 0.910841465 0.8696421385 0.786606431 0.8850684762 0.7748944759} {curve(which) 0 -0.07213255018 0.05368951708 -0.1003373638 0.07219231874 0.05930171534 0.07320601493 0.07928691059 0.06891305745 -0.1157948226 0.07529145479 0.01658944227 8.565396274e-05 8.565396274e-05 8.565396274e-05 8.991353388e-05 -0.05991046131 0.06718540192 0.03925102949 -0.03426937759 -0.009763340466 0.06503042579 -0.1296732277 -0.04964122549 -0.1309035122 -0.05758608505 -0.1001443192 -0.03558001295}} | |
{{curve(which) 0 -3.863927134e-08 -0.005574660841 -0.1037815213 0.01933082007 0 0 0 0 0.0027982709 0.02703136392 -2.906408625e-08 -3.236030111e-08 -3.236030111e-08 -3.236030111e-08 0 -0.0544523783 -0.04792318866 -0.0176958181 -0.1061859056 -0.02100777067 -0.01945115253 -0.07968087494 0.07801423222 -0.009676366113 -0.009677864611 -0.03206583485 -0.009310216643} {curve(which) 0 0 0.004060741514 -0.07290724665 0.1191947311 0.0280726999 0.0449459292 0.04511339962 0.04706057906 -0.06703422964 0.07068887353 0.05121183768 1.2621717e-08 1.2621717e-08 1.2621717e-08 -1.262213711e-08 -0.0003228379355 -0.0002844714036 0.08768811822 0.02554347552 0.01782695204 0.01650637016 -0.3473432064 -0.3148325086 -0.2364816219 0.004600019194 -0.02765839547 -0.004612449091} {curve(which) 1 1.008825183 1.010339141 1.265746474 0.950532198 1.060985088 0.9638792276 1.043944359 0.9073553085 1.153293729 0.9913375378 0.7738927603 0.8251045942 0.8251045942 0.8251045942 0.8248898983 1.063571215 1.057001948 0.9388025999 1.089437366 1.01197505 1.011739731 1.51608181 1.325875998 1.335215807 1.094135642 1.148782015 1.102980375}} | |
} | |
invert {{parent.invert}} | |
name ColorMatrix | |
label "RGB to XYZ" | |
xpos -40 | |
ypos 33 | |
addUserKnob {20 Gamut} | |
addUserKnob {3 which} | |
which {{parent.gamut}} | |
addUserKnob {12 rxy +DISABLED} | |
rxy {{curve(which) 0 0.7347 0.713 0.8 0.64 0.708 0.68 0.68 0.68 0.684 0.64 0.7347 0.7347 0.7347 0.7347 0.734699 0.7530442228 0.7530444911 0.6997470013 0.8786825105 0.7011810359 0.7011805919 0.780308 0.69848046 0.74 0.73 0.766 0.73} {curve(which) 0 0.2653 0.293 0.3177 0.33 0.292 0.32 0.32 0.32 0.313 0.33 0.2653 0.2653 0.2653 0.2653 0.265301 0.3278305767 0.3278310295 0.3290469303 0.3249640074 0.3290141556 0.3290136991 0.304253 0.19302645 0.27 0.28 0.275 0.28}} | |
addUserKnob {12 gxy +DISABLED} | |
gxy {{curve(which) 0 0 0.165 0.18 0.3 0.17 0.265 0.265 0.265 0.221 0.21 0.1152 0.1596 0.1596 0.1596 0.159597 0.2995702285 0.2995704905 0.304264039 0.3008887144 0.3006003047 0.3006003955 0.121595 0.32955538 0.17 0.14 0.225 0.165} {curve(which) 0 1 0.83 0.9 0.6 0.797 0.69 0.69 0.69 0.848 0.71 0.8264 0.8404 0.8404 0.8404 0.840403 0.700699322 0.7006994156 0.6236411451 0.6790547558 0.6837888343 0.6837888243 1.493994 1.02459662 1.14 0.855 0.8 0.84}} | |
addUserKnob {12 bxy +DISABLED} | |
bxy {{curve(which) 0 0.0001 0.128 0.065 0.15 0.131 0.15 0.15 0.15 0.0861 0.15 0.1566 0.0366 0.0366 0.0366 0.036598 0.07964206674 0.1450115843 0.1349139613 0.09539869461 0.1081544556 0.1453319462 0.095612 0.10844263 0.08 0.1 0.089 0.1} {curve(which) 0 -0.077 0.044 -0.0805 0.06 0.046 0.06 0.06 0.06 -0.102 0.06 0.0177 0.0001 0.0001 0.0001 0.000105 -0.05493795109 0.05109712509 0.03471744128 -0.02937932683 -0.008688175787 0.05161680362 -0.084589 -0.03467857 -0.1 -0.05 -0.087 -0.03}} | |
addUserKnob {12 wxy +DISABLED} | |
wxy {{curve(which) 0.33333 0.32168 0.32168 0.3127 0.3127 0.3127 0.32168 0.3127 0.314 0.3127 0.3127 0.3457 0.3457 0.3457 0.3457 0.345704 0.3216831877 0.3216832104 0.3216832894 0.3216832894 0.3216832104 0.3216832894 0.3127 0.3127 0.3127 0.3127 0.3127 0.3127} {curve(which) 0.33333 0.33767 0.33767 0.329 0.329 0.329 0.33767 0.329 0.351 0.329 0.329 0.3585 0.3585 0.3585 0.3585 0.35854 0.337673316 0.3376736101 0.3376734472 0.3376734472 0.3376736101 0.3376734472 0.329 0.329 0.329 0.329 0.329 0.329}} | |
} | |
Output { | |
name Output | |
xpos -40 | |
ypos 86 | |
} | |
end_group | |
Group { | |
name GamutToXYZ | |
label "\[if \{\[value invert]==true\} \{return \"XYZ to \[value gamut]\"\} else \{return \"\[value gamut] to XYZ\"\}]" | |
xpos 3700 | |
ypos -256 | |
addUserKnob {20 GamutToXYZ_tab l GamutToXYZ} | |
addUserKnob {4 gamut t "Choose gamut" M {XYZ ACES ACEScg "Filmlight E-Gamut" Rec709 Rec2020 P3D60 P3D65 P3DCI ArriAlexaWideGamut "AdobeRGB\t" AdobeWideGamutRGB ROMM RIMM ERIMM ProPhotoRGB REDDRAGONcolor REDDRAGONcolor2 REDcolor REDcolor2 REDcolor3 REDcolor4 REDWideGamutRGB GoProProtune CanonCinemaGamut SonySGamut SonySGamut3Cine PanasonicVGamut ""}} | |
gamut ACEScg | |
addUserKnob {6 invert +STARTLINE} | |
invert true | |
addUserKnob {41 matrix T ColorMatrix.matrix} | |
} | |
Input { | |
inputs 0 | |
name Input | |
xpos -40 | |
ypos -10 | |
} | |
ColorMatrix { | |
matrix { | |
{{curve(which) 1 0.9525524378 0.6624541879 0.7053968906 0.4123907983 0.6369580626 0.5049495697 0.4865709841 0.4451698363 0.6380076408 0.5766690373 0.7165006995 0.797760427 0.797760427 0.797760427 0.7976718545 0.5070186853 0.4462202489 0.4300414324 0.4581649601 0.4878340662 0.4517004192 0.7352752686 0.5022571683 0.7160496712 0.7064827085 0.5990839601 0.6796444654} {curve(which) 0 0 0.1340042055 0.1640413404 0.3575843275 0.1446169019 0.2646814585 0.2656676769 0.2771343887 0.2147038579 0.1855582297 0.1010205746 0.1351858526 0.1351858526 0.1351858526 0.1351878047 0.3587769568 0.3157556653 0.3700728714 0.3832037449 0.3432727158 0.3178463876 0.06860940903 0.2929667532 0.1296834797 0.1288010478 0.2489254922 0.1522114277} {curve(which) 0 9.367863095e-05 0.1561876982 0.08101774752 0.180480808 0.1688809693 0.1830150485 0.1982172877 0.1722826511 0.09774444997 0.1882286519 0.1467743814 0.03134934977 0.03134934977 0.03134934977 0.03133957833 0.0868505761 0.190669477 0.152531758 0.1112773567 0.1215386018 0.1830992699 0.1465712637 0.1552320272 0.1047228053 0.1151721701 0.1024464965 0.1186000481}} | |
{{curve(which) 0 0.3439664543 0.2722287476 0.2801307142 0.2126390189 0.2627002299 0.237623319 0.2289745659 0.209491685 0.2919537723 0.2973450124 0.258728236 0.2880711257 0.2880711257 0.2880711257 0.2880405784 0.2207257152 0.1942579001 0.2022213936 0.1694435924 0.2289056629 0.2119505703 0.2866941094 0.1387997568 0.2612613738 0.2709796727 0.2150758505 0.2606855333} {curve(which) 1 0.7281661034 0.6740817428 0.8202066422 0.7151686549 0.6779980659 0.6891706586 0.6917385459 0.7215952873 0.8238410354 0.6273635626 0.7246823311 0.7118432522 0.7118432522 0.7118432522 0.7118694782 0.839184761 0.7385566831 0.7585275769 0.8648257852 0.7808576822 0.7230190039 0.8429791331 0.910841465 0.8696421385 0.786606431 0.8850684762 0.7748944759} {curve(which) 0 -0.07213255018 0.05368951708 -0.1003373638 0.07219231874 0.05930171534 0.07320601493 0.07928691059 0.06891305745 -0.1157948226 0.07529145479 0.01658944227 8.565396274e-05 8.565396274e-05 8.565396274e-05 8.991353388e-05 -0.05991046131 0.06718540192 0.03925102949 -0.03426937759 -0.009763340466 0.06503042579 -0.1296732277 -0.04964122549 -0.1309035122 -0.05758608505 -0.1001443192 -0.03558001295}} | |
{{curve(which) 0 -3.863927134e-08 -0.005574660841 -0.1037815213 0.01933082007 0 0 0 0 0.0027982709 0.02703136392 -2.906408625e-08 -3.236030111e-08 -3.236030111e-08 -3.236030111e-08 0 -0.0544523783 -0.04792318866 -0.0176958181 -0.1061859056 -0.02100777067 -0.01945115253 -0.07968087494 0.07801423222 -0.009676366113 -0.009677864611 -0.03206583485 -0.009310216643} {curve(which) 0 0 0.004060741514 -0.07290724665 0.1191947311 0.0280726999 0.0449459292 0.04511339962 0.04706057906 -0.06703422964 0.07068887353 0.05121183768 1.2621717e-08 1.2621717e-08 1.2621717e-08 -1.262213711e-08 -0.0003228379355 -0.0002844714036 0.08768811822 0.02554347552 0.01782695204 0.01650637016 -0.3473432064 -0.3148325086 -0.2364816219 0.004600019194 -0.02765839547 -0.004612449091} {curve(which) 1 1.008825183 1.010339141 1.265746474 0.950532198 1.060985088 0.9638792276 1.043944359 0.9073553085 1.153293729 0.9913375378 0.7738927603 0.8251045942 0.8251045942 0.8251045942 0.8248898983 1.063571215 1.057001948 0.9388025999 1.089437366 1.01197505 1.011739731 1.51608181 1.325875998 1.335215807 1.094135642 1.148782015 1.102980375}} | |
} | |
invert {{parent.invert}} | |
name ColorMatrix | |
label "RGB to XYZ" | |
xpos -40 | |
ypos 33 | |
addUserKnob {20 Gamut} | |
addUserKnob {3 which} | |
which {{parent.gamut}} | |
addUserKnob {12 rxy +DISABLED} | |
rxy {{curve(which) 0 0.7347 0.713 0.8 0.64 0.708 0.68 0.68 0.68 0.684 0.64 0.7347 0.7347 0.7347 0.7347 0.734699 0.7530442228 0.7530444911 0.6997470013 0.8786825105 0.7011810359 0.7011805919 0.780308 0.69848046 0.74 0.73 0.766 0.73} {curve(which) 0 0.2653 0.293 0.3177 0.33 0.292 0.32 0.32 0.32 0.313 0.33 0.2653 0.2653 0.2653 0.2653 0.265301 0.3278305767 0.3278310295 0.3290469303 0.3249640074 0.3290141556 0.3290136991 0.304253 0.19302645 0.27 0.28 0.275 0.28}} | |
addUserKnob {12 gxy +DISABLED} | |
gxy {{curve(which) 0 0 0.165 0.18 0.3 0.17 0.265 0.265 0.265 0.221 0.21 0.1152 0.1596 0.1596 0.1596 0.159597 0.2995702285 0.2995704905 0.304264039 0.3008887144 0.3006003047 0.3006003955 0.121595 0.32955538 0.17 0.14 0.225 0.165} {curve(which) 0 1 0.83 0.9 0.6 0.797 0.69 0.69 0.69 0.848 0.71 0.8264 0.8404 0.8404 0.8404 0.840403 0.700699322 0.7006994156 0.6236411451 0.6790547558 0.6837888343 0.6837888243 1.493994 1.02459662 1.14 0.855 0.8 0.84}} | |
addUserKnob {12 bxy +DISABLED} | |
bxy {{curve(which) 0 0.0001 0.128 0.065 0.15 0.131 0.15 0.15 0.15 0.0861 0.15 0.1566 0.0366 0.0366 0.0366 0.036598 0.07964206674 0.1450115843 0.1349139613 0.09539869461 0.1081544556 0.1453319462 0.095612 0.10844263 0.08 0.1 0.089 0.1} {curve(which) 0 -0.077 0.044 -0.0805 0.06 0.046 0.06 0.06 0.06 -0.102 0.06 0.0177 0.0001 0.0001 0.0001 0.000105 -0.05493795109 0.05109712509 0.03471744128 -0.02937932683 -0.008688175787 0.05161680362 -0.084589 -0.03467857 -0.1 -0.05 -0.087 -0.03}} | |
addUserKnob {12 wxy +DISABLED} | |
wxy {{curve(which) 0.33333 0.32168 0.32168 0.3127 0.3127 0.3127 0.32168 0.3127 0.314 0.3127 0.3127 0.3457 0.3457 0.3457 0.3457 0.345704 0.3216831877 0.3216832104 0.3216832894 0.3216832894 0.3216832104 0.3216832894 0.3127 0.3127 0.3127 0.3127 0.3127 0.3127} {curve(which) 0.33333 0.33767 0.33767 0.329 0.329 0.329 0.33767 0.329 0.351 0.329 0.329 0.3585 0.3585 0.3585 0.3585 0.35854 0.337673316 0.3376736101 0.3376734472 0.3376734472 0.3376736101 0.3376734472 0.329 0.329 0.329 0.329 0.329 0.329}} | |
} | |
Output { | |
name Output | |
xpos -40 | |
ypos 86 | |
} | |
end_group | |
Dot { | |
name Dot53 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 3734 | |
ypos -126 | |
} | |
set Nf447430 [stack 0] | |
Dot { | |
name Dot57 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 3514 | |
ypos -126 | |
} | |
set Nf44c2b0 [stack 0] | |
Dot { | |
name Dot54 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 3294 | |
ypos -126 | |
} | |
Group { | |
name OutOfGamut1 | |
xpos 3260 | |
ypos -58 | |
} | |
Input { | |
inputs 0 | |
name Input | |
xpos 706 | |
ypos -120 | |
} | |
Dot { | |
name Dot56 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 740 | |
ypos -59 | |
} | |
set Ne296920 [stack 0] | |
Expression { | |
expr3 "(r < 0 || g < 0 || b < 0) ? 1 : 0" | |
name Expression1 | |
label "Out of Gamut" | |
xpos 596 | |
ypos -20 | |
} | |
Premult { | |
name Premult1 | |
xpos 596 | |
ypos 32 | |
} | |
push $Ne296920 | |
Fill { | |
color {0.18 0.18 0.18 1} | |
name Fill1 | |
xpos 706 | |
ypos -16 | |
} | |
Merge2 { | |
inputs 2 | |
bbox B | |
name Merge1 | |
xpos 706 | |
ypos 32 | |
} | |
Output { | |
name Output1 | |
xpos 706 | |
ypos 152 | |
} | |
end_group | |
set Nf4560b0 [stack 0] | |
Dot { | |
name Dot52 | |
xpos 3074 | |
ypos -486 | |
hide_input true | |
addUserKnob {20 User} | |
addUserKnob {1 input_node} | |
input_node Dot58 | |
} | |
NoOp { | |
name OutOfGamut | |
note_font_size 20 | |
xpos 3040 | |
ypos -446 | |
} | |
push $Nf447430 | |
Dot { | |
name Dot56 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 3954 | |
ypos -126 | |
} | |
Group { | |
name GamutCompress1 | |
label " Norm. HSV Sat. Softclip in LMS + Purple Suppression" | |
xpos 3920 | |
ypos -64 | |
addUserKnob {20 GamutCompress} | |
addUserKnob {41 src_gamut l "src gamut" T SOURCE_GAMUT_GamutToXYZ.gamut} | |
addUserKnob {35 target_gamut_presets l target t "Cboose target gamut to compress into" M {gamut/ACES "knobs this \{rxy \{0.73470 0.26530\} gxy \{0.00000 1.00000\} bxy \{0.00010 -0.07700\} wxy \{0.32168 0.33767\} target_gamut_name \{ACES\} target_gamut \{ACES\}\}" gamut/ACEScg "knobs this \{rxy \{0.713 0.293\} gxy \{0.165 0.830\} bxy \{0.128 0.044\} wxy \{0.32168 0.33767\} target_gamut_name \{ACEScg\} target_gamut \{ACEScg\}\}" "gamut/Filmlight E-Gamut" "knobs this \{ rxy \{0.8 0.3177\} gxy \{0.18 0.9\} bxy \{0.065 -0.0805\} wxy \{0.3127 0.329\} target_gamut_name \{Filmlight E target_gamut_name \{Filt E-Gamut\}\}" gamut/Rec709 "knobs this \{rxy \{0.64000 0.33000\} gxy \{0.30000 0.60000\} bxy \{0.15000 0.06000\} wxy \{0.31270 0.32900\} target_gamut_name \{Rec709\} target_gamut \{Rec709\}\}" gamut/Rec2020 "knobs this \{rxy \{0.70800 0.29200\} gxy \{0.17000 0.79700\} bxy \{0.13100 0.04600\} wxy \{0.31270 0.32900\} target_gamut_name \{Rec2020\} target_gamut \{Rec2020\}\}" gamut/P3D60 "knobs this \{rxy \{0.68000 0.32000\} gxy \{0.26500 0.69000\} bxy \{0.15000 0.06000\} wxy \{0.32168 0.33767\} target_gamut_name \{P3D60\} target_gamut \{P3D60\}\}" gamut/P3D65 "knobs this \{rxy \{0.68000 0.32000\} gxy \{0.26500 0.69000\} bxy \{0.15000 0.06000\} wxy \{0.31270 0.32900\} target_gamut_name \{P3D65\} target_gamut \{P3D65\}\}" gamut/P3DCI "knobs this \{rxy \{0.68000 0.32000\} gxy \{0.26500 0.69000\} bxy \{0.15000 0.06000\} wxy \{0.31400 0.35100\} target_gamut_name \{P3DCI\} target_gamut \{P3DCI\}\}" gamut/ArriAlexaWideGamut "knobs this \{rxy \{0.68400 0.31300\} gxy \{0.22100 0.84800\} bxy \{0.08610 0.10200\} wxy \{0.31270 0.32900\} target_gamut_name \{ArriAlexaWideGamut\} target_gamut \{ArriAlexaWideGamut\}\}" "gamut/AdobeRGB " "knobs this \{rxy \{0.6400 0.3300\} gxy \{0.2100 0.7100\} bxy \{0.1500 0.0600\} wxy \{0.3127 0.3290\} target_gamut_name \{AdobeRGB\} target_gamut \{AdobeRGB\}\}" gamut/AdobeWideGamutRGB "knobs this \{rxy \{0.7347 0.2653\} gxy \{0.1152 0.8264\} bxy \{0.1566 0.0177\} wxy \{0.3457 0.3585\} target_gamut_name \{AdobeWideGamutRGB\} target_gamut \{AdobeWideGamutRGB\}\}" gamut/ROMM "knobs this \{rxy \{7.34700000e-01 2.65300000e-01\} gxy \{1.59600000e-01 8.40400000e-01\} bxy \{3.66000000e-02 1.00000000e-04\} wxy \{0.3457 0.3585\} target_gamut_name \{ROMM\} target_gamut \{ROMM\}\}" gamut/RIMM "knobs this \{rxy \{7.34700000e-01 2.65300000e-01\} gxy \{1.59600000e-01 8.40400000e-01\} bxy \{3.66000000e-02 1.00000000e-04\} wxy \{0.3457 0.3585\} target_gamut_name \{RIMM\} target_gamut \{RIMM\}\}" gamut/ERIMM "knobs this \{rxy \{7.34700000e-01 2.65300000e-01\} gxy \{1.59600000e-01 8.40400000e-01\} bxy \{3.66000000e-02 1.00000000e-04\} wxy \{0.3457 0.3585\} target_gamut_name \{ERIMM\} target_gamut \{ERIMM\}\}" gamut/ProPhotoRGB "knobs this \{rxy \{0.734699 0.265301\} gxy \{0.159597 0.840403\} bxy \{0.036598 0.000105\} wxy \{0.345704 0.358540\} target_gamut_name \{ProPhotoRGB\} target_gamut \{ProPhotoRGB\}\}" gamut/REDDRAGONcolor "knobs this \{rxy \{0.753044222785 0.327830576682\} gxy \{0.299570228481 0.700699321956\} bxy \{0.079642066735 -0.0549379510888\} wxy \{0.321683187724 0.337673316035\} target_gamut_name \{REDDRAGONcolor\} target_gamut \{REDDRAGONcolor\}\}" gamut/REDDRAGONcolor2 "knobs this \{rxy \{0.753044491143 0.327831029513\} gxy \{0.299570490451 0.700699415614\} bxy \{0.145011584278 0.0510971250879\} wxy \{0.321683210353 0.337673610062\} target_gamut_name \{REDDRAGONcolor2\} target_gamut \{REDDRAGONcolor2\}\}" gamut/REDcolor "knobs this \{rxy \{0.699747001291 0.329046930313\} gxy \{0.304264039024 0.623641145129\} bxy \{0.134913961296 0.0347174412813\} wxy \{0.321683289449 0.337673447208\} target_gamut_name \{REDcolor\} target_gamut \{REDcolor\}\}" gamut/REDcolor2 "knobs this \{rxy \{0.878682510476 0.32496400741\} gxy \{0.300888714367 0.679054755791\} bxy \{0.0953986946056 -0.0293793268343\} wxy \{0.321683289449 0.337673447208\} target_gamut_name \{REDcolor2\} target_gamut \{REDcolor2\}\}" gamut/REDcolor3 "knobs this \{rxy \{0.701181035906 0.329014155583\} gxy \{0.300600304652 0.683788834269\} bxy \{0.108154455624 -0.00868817578666\} wxy \{0.321683210353 0.337673610062\} target_gamut_name \{REDcolor3\} target_gamut \{REDcolor3\}\}" gamut/REDcolor4 "knobs this \{rxy \{0.701180591892 0.329013699116\} gxy \{0.300600395529 0.683788824257\} bxy \{0.145331946229 0.0516168036226\} wxy \{0.321683289449 0.337673447208\} target_gamut_name \{REDcolor4\} target_gamut \{REDcolor4\}\}" gamut/REDWideGamutRGB "knobs this \{rxy \{0.780308 0.304253\} gxy \{0.121595 1.493994\} bxy \{0.095612 -0.084589\} wxy \{0.3127 0.3290\} target_gamut_name \{REDWideGamutRGB\} target_gamut \{REDWideGamutRGB\}\}" gamut/GoProProtune "knobs this \{rxy \{0.69848046 0.19302645\} gxy \{0.32955538 1.02459662\} bxy \{0.10844263 -0.03467857\} wxy \{0.3127 0.329\} target_gamut_name \{GoProProtune\} target_gamut \{GoProProtune\}\}" gamut/CanonCinemaGamut "knobs this \{rxy \{0.74 0.27\} gxy \{0.17 1.14\} bxy \{0.08 -0.1\} wxy \{0.3127 0.329\} target_gamut_name \{CanonCinemaGamut\} target_gamut \{CanonCinemaGamut\}\}" gamut/SonySGamut "knobs this \{rxy \{0.73 0.28\} gxy \{0.14 0.855\} bxy \{0.1 -0.05\} wxy \{0.3127 0.329\} target_gamut_name \{SonySGamut\} target_gamut \{SonySGamut\}\}" gamut/SonySGamut3Cine "knobs this \{rxy \{0.766 0.275\} gxy \{0.225 0.8\} bxy \{0.089 -0.087\} wxy \{0.3127 0.329\} target_gamut_name \{SonySGamut3Cine\} target_gamut \{SonySGamut3Cine\}\}" gamut/PanasonicVGamut "knobs this \{rxy \{0.730 0.280\} gxy \{0.165 0.840\} bxy \{0.100 -0.030\} wxy \{0.3127 0.3290\} target_gamut_name \{PanasonicVGamut\} target_gamut \{PanasonicVGamut\}\}" gamut/XYZ "knobs this \{rxy \{0 0\} gxy \{0 0\} bxy \{0 0\} wxy \{0 0\} target_gamut_name \{XYZ\} target_gamut \{XYZ\}\}" "" ""}} | |
addUserKnob {1 target_gamut_name l "" -STARTLINE +DISABLED} | |
target_gamut_name ACEScg | |
addUserKnob {6 compress_only l "compress only" t "No gamut conversion, just do the compression mapping.\n<b>INPUT</b>: CIE XYZ\n<b>OUTPUT</b>: CIE XYZ" +STARTLINE} | |
addUserKnob {6 invert +STARTLINE} | |
addUserKnob {26 ""} | |
addUserKnob {26 compress_gamut_label l " " T "<b>Compress Gamut"} | |
addUserKnob {7 threshold} | |
threshold 0.665 | |
addUserKnob {7 slope} | |
slope 0.87 | |
addUserKnob {41 limit T SoftCompress15.limit} | |
addUserKnob {22 calc_limit l "Calculate Limit" t "Calculate the max saturation value" T "n = nuke.thisNode()\nnuke.root().begin()\nn.begin()\nct = nuke.toNode('CT')\nnuke.execute(ct, nuke.frame(), nuke.frame())\nmaxpx = ct\['maxlumapixvalue'].getValue()\n\nn\['limit'].setValue(maxpx\[1])" +STARTLINE} | |
addUserKnob {26 ""} | |
addUserKnob {26 purple_supression_label l " " T "<b>Suppress Purple"} | |
addUserKnob {7 strength} | |
addUserKnob {7 hue_phase} | |
hue_phase 0.5 | |
addUserKnob {7 range} | |
range 0.7 | |
addUserKnob {20 Chromaticities} | |
addUserKnob {41 target_gamut l "target gamut" +DISABLED T TARGET_GAMUT_GamutToXYZ1.gamut} | |
addUserKnob {26 target_chromaticities_label l " " T "<b>Target Gamut Chromaticities</b>"} | |
addUserKnob {12 rxy l r t "Red xy chromaticity coordinates in CIE 1931 colorspace."} | |
rxy {0.713 0.293} | |
addUserKnob {12 gxy l g t "Green xy chromaticity coordinates in CIE 1931 colorspace."} | |
gxy {0.165 0.83} | |
addUserKnob {12 bxy l b t "Blue xy chromaticity coordinates in CIE 1931 colorspace."} | |
bxy {0.128 0.044} | |
addUserKnob {12 wxy l w t "Whitepoint xy chromaticity coordinates in CIE 1931 colorspace."} | |
wxy {0.32168 0.33767} | |
addUserKnob {13 primaryAngle} | |
primaryAngle {{"(-(degrees(atan2(rxy.x - wxy.x, rxy.y-wxy.y))-180)+270)%360/360"} {"(-(degrees(atan2(gxy.x-wxy.x, gxy.y-wxy.y))-180)+270)%360/360"} {"(-(degrees(atan2(bxy.x-wxy.x, bxy.y-wxy.y))-180)+270)%360/360"}} | |
} | |
BackdropNode { | |
inputs 0 | |
name BackdropNode1 | |
tile_color 0x5e295fff | |
label "Purple Supress" | |
note_font_size 42 | |
xpos 171 | |
ypos 127 | |
bdwidth 508 | |
bdheight 598 | |
} | |
Input { | |
inputs 0 | |
name Input | |
xpos -40 | |
ypos -202 | |
} | |
Dot { | |
name Dot6 | |
label " SRC GAMUT" | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -6 | |
ypos -136 | |
} | |
Group { | |
name SOURCE_GAMUT_GamutToXYZ | |
label "\[if \{\[value invert]==true\} \{return \"XYZ to \[value gamut]\"\} else \{return \"\[value gamut] to XYZ\"\}]" | |
xpos -40 | |
ypos -80 | |
disable {{parent.compress_only}} | |
addUserKnob {20 GamutToXYZ_tab l GamutToXYZ} | |
addUserKnob {4 gamut t "Choose gamut" M {XYZ ACES ACEScg "Filmlight E-Gamut" Rec709 Rec2020 P3D60 P3D65 P3DCI ArriAlexaWideGamut "AdobeRGB\t" AdobeWideGamutRGB ROMM RIMM ERIMM ProPhotoRGB REDDRAGONcolor REDDRAGONcolor2 REDcolor REDcolor2 REDcolor3 REDcolor4 REDWideGamutRGB GoProProtune CanonCinemaGamut SonySGamut SonySGamut3Cine PanasonicVGamut ""}} | |
gamut ACEScg | |
addUserKnob {6 invert +STARTLINE} | |
addUserKnob {41 matrix T ColorMatrix.matrix} | |
} | |
Input { | |
inputs 0 | |
name Input | |
xpos -40 | |
ypos -10 | |
} | |
ColorMatrix { | |
matrix { | |
{{curve(which) 1 0.9525524378 0.6624541879 0.7053968906 0.4123907983 0.6369580626 0.5049495697 0.4865709841 0.4451698363 0.6380076408 0.5766690373 0.7165006995 0.797760427 0.797760427 0.797760427 0.7976718545 0.5070186853 0.4462202489 0.4300414324 0.4581649601 0.4878340662 0.4517004192 0.7352752686 0.5022571683 0.7160496712 0.7064827085 0.5990839601 0.6796444654} {curve(which) 0 0 0.1340042055 0.1640413404 0.3575843275 0.1446169019 0.2646814585 0.2656676769 0.2771343887 0.2147038579 0.1855582297 0.1010205746 0.1351858526 0.1351858526 0.1351858526 0.1351878047 0.3587769568 0.3157556653 0.3700728714 0.3832037449 0.3432727158 0.3178463876 0.06860940903 0.2929667532 0.1296834797 0.1288010478 0.2489254922 0.1522114277} {curve(which) 0 9.367863095e-05 0.1561876982 0.08101774752 0.180480808 0.1688809693 0.1830150485 0.1982172877 0.1722826511 0.09774444997 0.1882286519 0.1467743814 0.03134934977 0.03134934977 0.03134934977 0.03133957833 0.0868505761 0.190669477 0.152531758 0.1112773567 0.1215386018 0.1830992699 0.1465712637 0.1552320272 0.1047228053 0.1151721701 0.1024464965 0.1186000481}} | |
{{curve(which) 0 0.3439664543 0.2722287476 0.2801307142 0.2126390189 0.2627002299 0.237623319 0.2289745659 0.209491685 0.2919537723 0.2973450124 0.258728236 0.2880711257 0.2880711257 0.2880711257 0.2880405784 0.2207257152 0.1942579001 0.2022213936 0.1694435924 0.2289056629 0.2119505703 0.2866941094 0.1387997568 0.2612613738 0.2709796727 0.2150758505 0.2606855333} {curve(which) 1 0.7281661034 0.6740817428 0.8202066422 0.7151686549 0.6779980659 0.6891706586 0.6917385459 0.7215952873 0.8238410354 0.6273635626 0.7246823311 0.7118432522 0.7118432522 0.7118432522 0.7118694782 0.839184761 0.7385566831 0.7585275769 0.8648257852 0.7808576822 0.7230190039 0.8429791331 0.910841465 0.8696421385 0.786606431 0.8850684762 0.7748944759} {curve(which) 0 -0.07213255018 0.05368951708 -0.1003373638 0.07219231874 0.05930171534 0.07320601493 0.07928691059 0.06891305745 -0.1157948226 0.07529145479 0.01658944227 8.565396274e-05 8.565396274e-05 8.565396274e-05 8.991353388e-05 -0.05991046131 0.06718540192 0.03925102949 -0.03426937759 -0.009763340466 0.06503042579 -0.1296732277 -0.04964122549 -0.1309035122 -0.05758608505 -0.1001443192 -0.03558001295}} | |
{{curve(which) 0 -3.863927134e-08 -0.005574660841 -0.1037815213 0.01933082007 0 0 0 0 0.0027982709 0.02703136392 -2.906408625e-08 -3.236030111e-08 -3.236030111e-08 -3.236030111e-08 0 -0.0544523783 -0.04792318866 -0.0176958181 -0.1061859056 -0.02100777067 -0.01945115253 -0.07968087494 0.07801423222 -0.009676366113 -0.009677864611 -0.03206583485 -0.009310216643} {curve(which) 0 0 0.004060741514 -0.07290724665 0.1191947311 0.0280726999 0.0449459292 0.04511339962 0.04706057906 -0.06703422964 0.07068887353 0.05121183768 1.2621717e-08 1.2621717e-08 1.2621717e-08 -1.262213711e-08 -0.0003228379355 -0.0002844714036 0.08768811822 0.02554347552 0.01782695204 0.01650637016 -0.3473432064 -0.3148325086 -0.2364816219 0.004600019194 -0.02765839547 -0.004612449091} {curve(which) 1 1.008825183 1.010339141 1.265746474 0.950532198 1.060985088 0.9638792276 1.043944359 0.9073553085 1.153293729 0.9913375378 0.7738927603 0.8251045942 0.8251045942 0.8251045942 0.8248898983 1.063571215 1.057001948 0.9388025999 1.089437366 1.01197505 1.011739731 1.51608181 1.325875998 1.335215807 1.094135642 1.148782015 1.102980375}} | |
} | |
invert {{parent.invert}} | |
name ColorMatrix | |
label "RGB to XYZ" | |
xpos -40 | |
ypos 33 | |
addUserKnob {20 Gamut} | |
addUserKnob {3 which} | |
which {{parent.gamut}} | |
addUserKnob {12 rxy +DISABLED} | |
rxy {{curve(which) 0 0.7347 0.713 0.8 0.64 0.708 0.68 0.68 0.68 0.684 0.64 0.7347 0.7347 0.7347 0.7347 0.734699 0.7530442228 0.7530444911 0.6997470013 0.8786825105 0.7011810359 0.7011805919 0.780308 0.69848046 0.74 0.73 0.766 0.73} {curve(which) 0 0.2653 0.293 0.3177 0.33 0.292 0.32 0.32 0.32 0.313 0.33 0.2653 0.2653 0.2653 0.2653 0.265301 0.3278305767 0.3278310295 0.3290469303 0.3249640074 0.3290141556 0.3290136991 0.304253 0.19302645 0.27 0.28 0.275 0.28}} | |
addUserKnob {12 gxy +DISABLED} | |
gxy {{curve(which) 0 0 0.165 0.18 0.3 0.17 0.265 0.265 0.265 0.221 0.21 0.1152 0.1596 0.1596 0.1596 0.159597 0.2995702285 0.2995704905 0.304264039 0.3008887144 0.3006003047 0.3006003955 0.121595 0.32955538 0.17 0.14 0.225 0.165} {curve(which) 0 1 0.83 0.9 0.6 0.797 0.69 0.69 0.69 0.848 0.71 0.8264 0.8404 0.8404 0.8404 0.840403 0.700699322 0.7006994156 0.6236411451 0.6790547558 0.6837888343 0.6837888243 1.493994 1.02459662 1.14 0.855 0.8 0.84}} | |
addUserKnob {12 bxy +DISABLED} | |
bxy {{curve(which) 0 0.0001 0.128 0.065 0.15 0.131 0.15 0.15 0.15 0.0861 0.15 0.1566 0.0366 0.0366 0.0366 0.036598 0.07964206674 0.1450115843 0.1349139613 0.09539869461 0.1081544556 0.1453319462 0.095612 0.10844263 0.08 0.1 0.089 0.1} {curve(which) 0 -0.077 0.044 -0.0805 0.06 0.046 0.06 0.06 0.06 -0.102 0.06 0.0177 0.0001 0.0001 0.0001 0.000105 -0.05493795109 0.05109712509 0.03471744128 -0.02937932683 -0.008688175787 0.05161680362 -0.084589 -0.03467857 -0.1 -0.05 -0.087 -0.03}} | |
addUserKnob {12 wxy +DISABLED} | |
wxy {{curve(which) 0.33333 0.32168 0.32168 0.3127 0.3127 0.3127 0.32168 0.3127 0.314 0.3127 0.3127 0.3457 0.3457 0.3457 0.3457 0.345704 0.3216831877 0.3216832104 0.3216832894 0.3216832894 0.3216832104 0.3216832894 0.3127 0.3127 0.3127 0.3127 0.3127 0.3127} {curve(which) 0.33333 0.33767 0.33767 0.329 0.329 0.329 0.33767 0.329 0.351 0.329 0.329 0.3585 0.3585 0.3585 0.3585 0.35854 0.337673316 0.3376736101 0.3376734472 0.3376734472 0.3376736101 0.3376734472 0.329 0.329 0.329 0.329 0.329 0.329}} | |
} | |
Output { | |
name Output | |
xpos -40 | |
ypos 86 | |
} | |
end_group | |
Dot { | |
name Dot45 | |
label " XYZ" | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -6 | |
ypos -6 | |
} | |
Group { | |
name XYZtoLMS5 | |
label "direction : \[value direction]" | |
xpos -40 | |
ypos 104 | |
addUserKnob {20 XYZtoLMS} | |
addUserKnob {4 direction M {forward inverse}} | |
} | |
Input { | |
inputs 0 | |
name Input | |
xpos -40 | |
ypos -10 | |
} | |
Dot { | |
name Dot1 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -6 | |
ypos 42 | |
} | |
set Ne56e870 [stack 0] | |
ColorMatrix { | |
matrix { | |
{0.41478972 0.579999 0.014648} | |
{-0.20151 1.120649 0.0531008} | |
{-0.0166008 0.2648 0.6684799} | |
} | |
invert true | |
name ColorMatrix1 | |
label "LMS\nto\nX'Y'Z (D65)" | |
note_font "Bitstream Vera Sans" | |
xpos 70 | |
ypos 92 | |
} | |
Expression { | |
temp_name2 Xd65 | |
temp_expr2 (r+(cb-1)*b)/cb | |
expr0 Xd65 | |
expr1 (g+(cg-1)*Xd65)/cg | |
expr2 b | |
name Expression47 | |
label "X'Y'Z (D65)\nto\nXYZ (D65)" | |
note_font "Bitstream Vera Sans" | |
xpos 70 | |
ypos 188 | |
addUserKnob {20 User} | |
addUserKnob {7 cb R 0 2} | |
cb 1.15 | |
addUserKnob {7 cg} | |
cg 0.66 | |
} | |
push $Ne56e870 | |
Expression { | |
expr0 "(cb*r) - ((cb-1)*b)" | |
expr1 "(cg*g) - ((cg-1)*r)" | |
expr2 b | |
name Expression4 | |
label "XYZ (D65)\nto\nX'Y'Z (D65)" | |
note_font "Bitstream Vera Sans" | |
xpos -150 | |
ypos 91 | |
addUserKnob {20 User} | |
addUserKnob {7 cb R 0 2} | |
cb 1.15 | |
addUserKnob {7 cg} | |
cg 0.66 | |
} | |
ColorMatrix { | |
matrix { | |
{0.41478972 0.579999 0.014648} | |
{-0.20151 1.120649 0.0531008} | |
{-0.0166008 0.2648 0.6684799} | |
} | |
name ColorMatrix8 | |
label "X'Y'Z (D65)\nto\nLMS" | |
note_font "Bitstream Vera Sans" | |
xpos -150 | |
ypos 188 | |
} | |
Switch { | |
inputs 2 | |
which {{parent.direction}} | |
name Switch1 | |
xpos -40 | |
ypos 350 | |
} | |
Output { | |
name Output | |
xpos -40 | |
ypos 446 | |
} | |
end_group | |
Dot { | |
name Dot44 | |
label " LMS" | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -6 | |
ypos 162 | |
} | |
Dot { | |
name Dot1 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -6 | |
ypos 234 | |
} | |
set Na4f81b0 [stack 0] | |
Dot { | |
name Dot39 | |
xpos 544 | |
ypos 234 | |
} | |
Expression { | |
temp_name0 v | |
temp_expr0 max(abs(r-g),abs(g-b),abs(r-r)) | |
temp_name1 n | |
temp_expr1 v/max(r,g,b) | |
expr0 n | |
expr1 n | |
expr2 n | |
expr3 n | |
name Expression13 | |
label "saturation mask" | |
xpos 510 | |
ypos 344 | |
} | |
Clamp { | |
channels rgba | |
name Clamp3 | |
xpos 510 | |
ypos 398 | |
} | |
Dot { | |
name Dot38 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 544 | |
ypos 474 | |
} | |
push $Na4f81b0 | |
Group { | |
name RGBtoHSV | |
label "direction : \[value direction]" | |
xpos -40 | |
ypos 296 | |
addUserKnob {20 RGBtoHSV_tab l RGBtoHSV} | |
addUserKnob {4 direction M {forward inverse}} | |
} | |
Input { | |
inputs 0 | |
name Input | |
xpos -700 | |
ypos 566 | |
} | |
set Ne7bf520 [stack 0] | |
Expression { | |
temp_name0 C | |
temp_expr0 b*g | |
temp_name1 X | |
temp_expr1 C*(1-abs((r*6)%2-1)) | |
temp_name2 m | |
temp_expr2 b-C | |
expr0 (r<1/6?C:r<2/6?X:r<3/6?0:r<4/6?0:r<5/6?X:C)+m | |
expr1 (r<1/6?X:r<2/6?C:r<3/6?C:r<4/6?X:r<5/6?0:0)+m | |
expr2 (r<1/6?0:r<2/6?0:r<3/6?X:r<4/6?C:r<5/6?C:X)+m | |
name Expression48 | |
label "HSV to RGB" | |
note_font "Bitstream Vera Sans" | |
xpos -590 | |
ypos 656 | |
} | |
push $Ne7bf520 | |
Expression { | |
temp_name0 cmax | |
temp_expr0 max(r,g,b) | |
temp_name1 cmin | |
temp_expr1 min(r,g,b) | |
temp_name2 delta | |
temp_expr2 cmax-cmin | |
expr0 delta==0?0:cmax==r?(((g-b)/delta+6)%6)/6:cmax==g?(((b-r)/delta+2)/6):(((r-g)/delta+4)/6) | |
expr1 "cmax == 0 ? 0 : delta / cmax" | |
expr2 cmax | |
name Expression47 | |
label "RGB to HSV" | |
note_font "Bitstream Vera Sans" | |
xpos -810 | |
ypos 656 | |
} | |
Switch { | |
inputs 2 | |
which {{parent.direction}} | |
name Switch1 | |
xpos -700 | |
ypos 734 | |
} | |
Output { | |
name Output | |
xpos -700 | |
ypos 806 | |
} | |
end_group | |
Dot { | |
name Dot2 | |
label " HSV" | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -6 | |
ypos 354 | |
} | |
Dot { | |
name Dot46 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -6 | |
ypos 426 | |
} | |
set Nb376330 [stack 0] | |
Expression { | |
expr0 "r < 0 ? 1-abs(r)%1:r%1" | |
expr1 g | |
expr2 b | |
expr3 a | |
name Expression23 | |
label "hue wrap-around" | |
xpos 290 | |
ypos 416 | |
} | |
set Ncb4f770 [stack 0] | |
Expression { | |
expr0 -(r+o)*m/c/c*exp(-(r+o)*m*(r+o)*m/2/c/c) | |
expr1 g | |
expr2 b | |
expr3 a | |
name Expression25 | |
label "gauss derivative" | |
xpos 400 | |
ypos 416 | |
addUserKnob {20 User} | |
addUserKnob {7 amplitude R 0 0.1} | |
amplitude {{"0.6*max(1e-8, parent.strength)/exp(1/parent.range*2)"}} | |
addUserKnob {7 phase R -1 1} | |
phase {{parent.hue_phase}} | |
addUserKnob {7 length} | |
length {{parent.range/2}} | |
addUserKnob {7 c R 0 5} | |
c {{(1/exp(0.5)/amplitude)}} | |
addUserKnob {7 m} | |
m {{exp(1/length)*c}} | |
addUserKnob {7 o} | |
o {{-phase}} | |
} | |
Merge2 { | |
inputs 2 | |
operation multiply | |
name Merge15 | |
xpos 400 | |
ypos 470 | |
} | |
set Nb3ef660 [stack 0] | |
push $Ncb4f770 | |
Merge2 { | |
inputs 2 | |
operation from | |
bbox B | |
output rgb | |
name Merge19 | |
xpos 400 | |
ypos 542 | |
} | |
push $Nb3ef660 | |
push $Ncb4f770 | |
Merge2 { | |
inputs 2 | |
operation plus | |
name Merge16 | |
xpos 290 | |
ypos 542 | |
} | |
Switch { | |
inputs 2 | |
which {{parent.invert}} | |
name Switch_Inverse | |
xpos 290 | |
ypos 590 | |
} | |
Expression { | |
expr0 "r < 0 ? 1 - abs(r) % 1 : r % 1" | |
expr1 g | |
expr2 b | |
expr3 a | |
name Expression26 | |
label "hue wrap-around" | |
xpos 290 | |
ypos 632 | |
} | |
push $Nb376330 | |
Copy { | |
inputs 2 | |
from0 rgba.red | |
to0 rgba.red | |
name Copy3 | |
xpos -40 | |
ypos 632 | |
} | |
Dot { | |
name Dot40 | |
xpos -6 | |
ypos 834 | |
} | |
set Nc4457e0 [stack 0] | |
Dot { | |
name Dot41 | |
xpos 434 | |
ypos 834 | |
} | |
Group { | |
name RGBtoHSV1 | |
label "direction : \[value direction]" | |
xpos 400 | |
ypos 873 | |
addUserKnob {20 RGBtoHSV_tab l RGBtoHSV} | |
addUserKnob {4 direction M {forward inverse}} | |
direction inverse | |
} | |
Input { | |
inputs 0 | |
name Input | |
xpos -700 | |
ypos 566 | |
} | |
set Nc458e30 [stack 0] | |
Expression { | |
temp_name0 C | |
temp_expr0 b*g | |
temp_name1 X | |
temp_expr1 C*(1-abs((r*6)%2-1)) | |
temp_name2 m | |
temp_expr2 b-C | |
expr0 (r<1/6?C:r<2/6?X:r<3/6?0:r<4/6?0:r<5/6?X:C)+m | |
expr1 (r<1/6?X:r<2/6?C:r<3/6?C:r<4/6?X:r<5/6?0:0)+m | |
expr2 (r<1/6?0:r<2/6?0:r<3/6?X:r<4/6?C:r<5/6?C:X)+m | |
name Expression48 | |
label "HSV to RGB" | |
note_font "Bitstream Vera Sans" | |
xpos -590 | |
ypos 656 | |
} | |
push $Nc458e30 | |
Expression { | |
temp_name0 cmax | |
temp_expr0 max(r,g,b) | |
temp_name1 cmin | |
temp_expr1 min(r,g,b) | |
temp_name2 delta | |
temp_expr2 cmax-cmin | |
expr0 delta==0?0:cmax==r?(((g-b)/delta+6)%6)/6:cmax==g?(((b-r)/delta+2)/6):(((r-g)/delta+4)/6) | |
expr1 "cmax == 0 ? 0 : delta / cmax" | |
expr2 cmax | |
name Expression47 | |
label "RGB to HSV" | |
note_font "Bitstream Vera Sans" | |
selected true | |
xpos -810 | |
ypos 656 | |
} | |
Switch { | |
inputs 2 | |
which {{parent.direction}} | |
name Switch1 | |
xpos -700 | |
ypos 734 | |
} | |
Output { | |
name Output | |
xpos -700 | |
ypos 806 | |
} | |
end_group | |
Group { | |
name XYZtoLMS1 | |
label "direction : \[value direction]" | |
xpos 400 | |
ypos 926 | |
addUserKnob {20 XYZtoLMS} | |
addUserKnob {4 direction M {forward inverse}} | |
direction inverse | |
} | |
Input { | |
inputs 0 | |
name Input | |
xpos -40 | |
ypos -10 | |
} | |
Dot { | |
name Dot1 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -6 | |
ypos 42 | |
} | |
set Nc60c030 [stack 0] | |
ColorMatrix { | |
matrix { | |
{0.41478972 0.579999 0.014648} | |
{-0.20151 1.120649 0.0531008} | |
{-0.0166008 0.2648 0.6684799} | |
} | |
invert true | |
name ColorMatrix1 | |
label "LMS\nto\nX'Y'Z (D65)" | |
note_font "Bitstream Vera Sans" | |
xpos 70 | |
ypos 92 | |
} | |
Expression { | |
temp_name2 Xd65 | |
temp_expr2 (r+(cb-1)*b)/cb | |
expr0 Xd65 | |
expr1 (g+(cg-1)*Xd65)/cg | |
expr2 b | |
name Expression47 | |
label "X'Y'Z (D65)\nto\nXYZ (D65)" | |
note_font "Bitstream Vera Sans" | |
xpos 70 | |
ypos 188 | |
addUserKnob {20 User} | |
addUserKnob {7 cb R 0 2} | |
cb 1.15 | |
addUserKnob {7 cg} | |
cg 0.66 | |
} | |
push $Nc60c030 | |
Expression { | |
expr0 "(cb*r) - ((cb-1)*b)" | |
expr1 "(cg*g) - ((cg-1)*r)" | |
expr2 b | |
name Expression4 | |
label "XYZ (D65)\nto\nX'Y'Z (D65)" | |
note_font "Bitstream Vera Sans" | |
xpos -150 | |
ypos 91 | |
addUserKnob {20 User} | |
addUserKnob {7 cb R 0 2} | |
cb 1.15 | |
addUserKnob {7 cg} | |
cg 0.66 | |
} | |
ColorMatrix { | |
matrix { | |
{0.41478972 0.579999 0.014648} | |
{-0.20151 1.120649 0.0531008} | |
{-0.0166008 0.2648 0.6684799} | |
} | |
name ColorMatrix8 | |
label "X'Y'Z (D65)\nto\nLMS" | |
note_font "Bitstream Vera Sans" | |
xpos -150 | |
ypos 188 | |
} | |
Switch { | |
inputs 2 | |
which {{parent.direction}} | |
name Switch1 | |
xpos -40 | |
ypos 350 | |
} | |
Output { | |
name Output | |
xpos -40 | |
ypos 446 | |
} | |
end_group | |
Colorspace { | |
colorspace_in CIE-XYZ | |
colorspace_out CIE-Yxy | |
name Colorspace6 | |
label "\[value colorspace_in] -> \[value colorspace_out]" | |
xpos 400 | |
ypos 1001 | |
} | |
Expression { | |
temp_name0 yellow | |
temp_expr0 "hypot(( (g*white.y-b*white.x)*(red.x-green.x)-(g-white.x)*(red.x*green.y-red.y*green.x) ) / ( (g-white.x)*(red.y-green.y)-(b-white.y)*(red.x-green.x) )-white.x, ( (g*white.y-b*white.x)*(red.y-green.y)-(b-white.y)*(red.x*green.y-red.y*green.x) ) / ( (g-white.x)*(red.y-green.y)-(b-white.y)*(red.x-green.x) )-white.y)" | |
temp_name1 cyan | |
temp_expr1 "hypot(( (g*white.y-b*white.x)*(green.x-blue.x)-(g-white.x)*(green.x*blue.y-green.y*blue.x) ) / ( (g-white.x)*(green.y-blue.y)-(b-white.y)*(green.x-blue.x) )-white.x, ( (g*white.y-b*white.x)*(green.y-blue.y)-(b-white.y)*(green.x*blue.y-green.y*blue.x) ) / ( (g-white.x)*(green.y-blue.y)-(b-white.y)*(green.x-blue.x) )-white.y)" | |
temp_name2 magenta | |
temp_expr2 "hypot(( (g*white.y-b*white.x)*(blue.x-red.x)-(g-white.x)*(blue.x*red.y-blue.y*red.x) ) / ( (g-white.x)*(blue.y-red.y)-(b-white.y)*(blue.x-red.x) )-white.x, ( (g*white.y-b*white.x)*(blue.y-red.y)-(b-white.y)*(blue.x*red.y-blue.y*red.x) ) / ( (g-white.x)*(blue.y-red.y)-(b-white.y)*(blue.x-red.x) )-white.y)" | |
temp_name3 angleNorm | |
temp_expr3 "(-(degrees(atan2(g-white.x, b-white.y))-180)+270)%360/360-primaryNormOffset < 0 ? (-(degrees(atan2(g-white.x, b-white.y))-180)+270)%360/360-primaryNormOffset + 1 : (-(degrees(atan2(g-white.x, b-white.y))-180)+270)%360/360-primaryNormOffset" | |
expr0 r | |
expr1 "(-(degrees(atan2(g-white.x, b-white.y))-180)+270)%360/360" | |
expr2 "g == white.x && b == white.y ? hypot(g-red.x, b-red.y) : angleNorm < primaryAngleNorm.y ? yellow : angleNorm < primaryAngleNorm.z ? cyan : magenta" | |
name Expression_max_rg5 | |
label "Yxy to YHmaxC" | |
note_font "Bitstream Vera Sans" | |
xpos 400 | |
ypos 1050 | |
addUserKnob {20 User} | |
addUserKnob {12 red} | |
red {{parent.rxy} {parent.rxy}} | |
addUserKnob {12 green} | |
green {{parent.gxy} {parent.gxy}} | |
addUserKnob {12 blue} | |
blue {{parent.bxy} {parent.bxy}} | |
addUserKnob {12 white} | |
white {{parent.wxy} {parent.wxy}} | |
addUserKnob {13 primaryAngle} | |
primaryAngle {{parent.primaryAngle} {parent.primaryAngle} {parent.primaryAngle}} | |
addUserKnob {7 primaryNormOffset} | |
primaryNormOffset {{primaryAngle.x}} | |
addUserKnob {13 primaryAngleNorm} | |
primaryAngleNorm {{"primaryAngle.x-primaryNormOffset < 0 ? primaryAngle.x-primaryNormOffset + 1 : primaryAngle.x-primaryNormOffset"} {"primaryAngle.y-primaryNormOffset < 0 ? primaryAngle.y-primaryNormOffset + 1 : primaryAngle.y-primaryNormOffset"} {"primaryAngle.z-primaryNormOffset < 0 ? primaryAngle.z-primaryNormOffset + 1 : primaryAngle.z-primaryNormOffset"}} | |
} | |
Expression { | |
expr0 1 | |
expr1 cos(radians(g*360))*b+white.x | |
expr2 sin(radians(g*360))*b+white.y | |
expr3 1 | |
name Expression40 | |
label "YHC to 1xy" | |
xpos 400 | |
ypos 1096 | |
addUserKnob {20 User} | |
addUserKnob {12 white} | |
white {{parent.wxy} {parent.wxy}} | |
} | |
Colorspace { | |
colorspace_in CIE-Yxy | |
colorspace_out CIE-XYZ | |
name Colorspace7 | |
label "\[value colorspace_in] -> \[value colorspace_out]" | |
xpos 400 | |
ypos 1143 | |
} | |
Group { | |
name XYZtoLMS2 | |
label "direction : \[value direction]" | |
xpos 400 | |
ypos 1197 | |
addUserKnob {20 XYZtoLMS} | |
addUserKnob {4 direction M {forward inverse}} | |
} | |
Input { | |
inputs 0 | |
name Input | |
xpos -40 | |
ypos -10 | |
} | |
Dot { | |
name Dot1 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -6 | |
ypos 42 | |
} | |
set Nb61a410 [stack 0] | |
ColorMatrix { | |
matrix { | |
{0.41478972 0.579999 0.014648} | |
{-0.20151 1.120649 0.0531008} | |
{-0.0166008 0.2648 0.6684799} | |
} | |
invert true | |
name ColorMatrix1 | |
label "LMS\nto\nX'Y'Z (D65)" | |
note_font "Bitstream Vera Sans" | |
xpos 70 | |
ypos 92 | |
} | |
Expression { | |
temp_name2 Xd65 | |
temp_expr2 (r+(cb-1)*b)/cb | |
expr0 Xd65 | |
expr1 (g+(cg-1)*Xd65)/cg | |
expr2 b | |
name Expression47 | |
label "X'Y'Z (D65)\nto\nXYZ (D65)" | |
note_font "Bitstream Vera Sans" | |
xpos 70 | |
ypos 188 | |
addUserKnob {20 User} | |
addUserKnob {7 cb R 0 2} | |
cb 1.15 | |
addUserKnob {7 cg} | |
cg 0.66 | |
} | |
push $Nb61a410 | |
Expression { | |
expr0 "(cb*r) - ((cb-1)*b)" | |
expr1 "(cg*g) - ((cg-1)*r)" | |
expr2 b | |
name Expression4 | |
label "XYZ (D65)\nto\nX'Y'Z (D65)" | |
note_font "Bitstream Vera Sans" | |
xpos -150 | |
ypos 91 | |
addUserKnob {20 User} | |
addUserKnob {7 cb R 0 2} | |
cb 1.15 | |
addUserKnob {7 cg} | |
cg 0.66 | |
} | |
ColorMatrix { | |
matrix { | |
{0.41478972 0.579999 0.014648} | |
{-0.20151 1.120649 0.0531008} | |
{-0.0166008 0.2648 0.6684799} | |
} | |
name ColorMatrix8 | |
label "X'Y'Z (D65)\nto\nLMS" | |
note_font "Bitstream Vera Sans" | |
xpos -150 | |
ypos 188 | |
} | |
Switch { | |
inputs 2 | |
which {{parent.direction}} | |
name Switch1 | |
xpos -40 | |
ypos 350 | |
} | |
Output { | |
name Output | |
xpos -40 | |
ypos 446 | |
} | |
end_group | |
Group { | |
name RGBtoHSV2 | |
label "direction : \[value direction]" | |
xpos 400 | |
ypos 1247 | |
addUserKnob {20 RGBtoHSV_tab l RGBtoHSV} | |
addUserKnob {4 direction M {forward inverse}} | |
} | |
Input { | |
inputs 0 | |
name Input | |
xpos -700 | |
ypos 566 | |
} | |
set Nbb72950 [stack 0] | |
Expression { | |
temp_name0 C | |
temp_expr0 b*g | |
temp_name1 X | |
temp_expr1 C*(1-abs((r*6)%2-1)) | |
temp_name2 m | |
temp_expr2 b-C | |
expr0 (r<1/6?C:r<2/6?X:r<3/6?0:r<4/6?0:r<5/6?X:C)+m | |
expr1 (r<1/6?X:r<2/6?C:r<3/6?C:r<4/6?X:r<5/6?0:0)+m | |
expr2 (r<1/6?0:r<2/6?0:r<3/6?X:r<4/6?C:r<5/6?C:X)+m | |
name Expression48 | |
label "HSV to RGB" | |
note_font "Bitstream Vera Sans" | |
xpos -590 | |
ypos 656 | |
} | |
push $Nbb72950 | |
Expression { | |
temp_name0 cmax | |
temp_expr0 max(r,g,b) | |
temp_name1 cmin | |
temp_expr1 min(r,g,b) | |
temp_name2 delta | |
temp_expr2 cmax-cmin | |
expr0 delta==0?0:cmax==r?(((g-b)/delta+6)%6)/6:cmax==g?(((b-r)/delta+2)/6):(((r-g)/delta+4)/6) | |
expr1 "cmax == 0 ? 0 : delta / cmax" | |
expr2 cmax | |
name Expression47 | |
label "RGB to HSV" | |
note_font "Bitstream Vera Sans" | |
xpos -810 | |
ypos 656 | |
} | |
Switch { | |
inputs 2 | |
which {{parent.direction}} | |
name Switch1 | |
xpos -700 | |
ypos 734 | |
} | |
Output { | |
name Output | |
xpos -700 | |
ypos 806 | |
} | |
end_group | |
Dot { | |
name Dot3 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 434 | |
ypos 1329 | |
} | |
set Nb6c30b0 [stack 0] | |
Dot { | |
name Dot42 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 434 | |
ypos 1520 | |
} | |
push $Nc4457e0 | |
Dot { | |
name Dot4 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -6 | |
ypos 1262 | |
} | |
set Nb6ccf50 [stack 0] | |
push $Nb6c30b0 | |
Merge2 { | |
inputs 2 | |
operation divide | |
name Merge17 | |
note_font "Bitstream Vera Sans" | |
xpos 190 | |
ypos 1325 | |
} | |
set Nb6d1e50 [stack 0] | |
Group { | |
name SoftCompress15 | |
label "direction: \[knob direction]" | |
xpos 190 | |
ypos 1421 | |
addUserKnob {20 SoftCompress} | |
addUserKnob {7 slope t "The softness of the compressing curve's slope. 0 is a clamp."} | |
slope {{parent.threshold}} | |
addUserKnob {7 threshold t "The minimum threshold. Values below this number will not be affected." R 0 2} | |
threshold {{parent.slope}} | |
addUserKnob {7 limit t "The asymptotic maximum value. For example, the value that inf becomes." R 0 2} | |
limit 1 | |
addUserKnob {4 direction M {forward inverse}} | |
} | |
Input { | |
inputs 0 | |
name InputMask | |
xpos -590 | |
ypos 806 | |
number 1 | |
} | |
Input { | |
inputs 0 | |
name Input | |
xpos -810 | |
ypos 494 | |
} | |
Dot { | |
name Dot1 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -776 | |
ypos 546 | |
} | |
set N1050db10 [stack 0] | |
Expression { | |
temp_name0 sl | |
temp_expr0 "(1-slope)*(max(0, limit-threshold))" | |
temp_name1 th | |
temp_expr1 threshold | |
temp_name2 lim | |
temp_expr2 "max(0, (limit-threshold))" | |
expr0 "r < th + sl ? r : (pow(sl, 2) + 2 * sl * th - 2 * sl * r + pow(th, 2) - th * r + lim * r)/(th + lim - r)" | |
expr1 "g < th + sl ? g : (pow(sl, 2) + 2 * sl * th - 2 * sl * g + pow(th, 2) - th * g + lim * g)/(th + lim - g)" | |
expr2 "b < th + sl ? b : (pow(sl, 2) + 2 * sl * th - 2 * sl * b + pow(th, 2) - th * b + lim * b)/(th + lim - b)" | |
expr3 "a < th + sl ? a : (pow(sl, 2) + 2 * sl * th - 2 * sl * a + pow(th, 2) - th * a + lim * a)/(th + lim - a)" | |
name SoftCompress_inverse | |
xpos -700 | |
ypos 638 | |
addUserKnob {20 Params_tab l Params} | |
addUserKnob {7 slope} | |
slope {{parent.slope}} | |
addUserKnob {7 threshold R 0 25} | |
threshold {{parent.threshold}} | |
addUserKnob {7 limit R 0 25} | |
limit {{parent.limit}} | |
} | |
push $N1050db10 | |
Expression { | |
temp_name0 sl | |
temp_expr0 "(1-slope)*(max(0, limit-threshold))" | |
temp_name1 th | |
temp_expr1 "min(threshold, limit)" | |
temp_name2 lim | |
temp_expr2 "max(0, (limit-threshold))" | |
expr0 "r < th + sl ? r : th + (-1 / ((r - th - sl) / (lim - sl) + 1) + 1) * (lim - sl) + sl" | |
expr1 "g < th + sl ? g : th + (-1 / ((g - th - sl) / (lim - sl) + 1) + 1) * (lim - sl) + sl" | |
expr2 "b < th + sl ? b : th + (-1 / ((b - th - sl) / (lim - sl) + 1) + 1) * (lim - sl) + sl" | |
expr3 "a < th + sl ? a : th + (-1 / ((a - th - sl) / (lim - sl) + 1) + 1) * (lim - sl) + sl" | |
name SoftCompress | |
xpos -920 | |
ypos 638 | |
addUserKnob {20 Params_tab l Params} | |
addUserKnob {7 slope} | |
slope {{parent.slope}} | |
addUserKnob {7 threshold R 0 25} | |
threshold {{parent.threshold}} | |
addUserKnob {7 limit R 0 25} | |
limit {{parent.limit}} | |
} | |
Switch { | |
inputs 2 | |
which {{parent.direction}} | |
name SwitchDirection | |
xpos -810 | |
ypos 710 | |
} | |
push $N1050db10 | |
Dot { | |
name Dot2 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -996 | |
ypos 546 | |
} | |
Dot { | |
name Dot3 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -996 | |
ypos 810 | |
} | |
NodeWrapper { | |
inputs 2+1 | |
channels rgba | |
name NodeWrapper1 | |
xpos -810 | |
ypos 806 | |
} | |
Output { | |
name Output | |
xpos -810 | |
ypos 926 | |
} | |
end_group | |
Merge2 { | |
inputs 2 | |
operation multiply | |
name Merge18 | |
note_font "Bitstream Vera Sans" | |
xpos 190 | |
ypos 1516 | |
} | |
Dot { | |
name Dot5 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 224 | |
ypos 1610 | |
} | |
push $Nb6ccf50 | |
Copy { | |
inputs 2 | |
from0 rgba.green | |
to0 rgba.green | |
name Copy1 | |
xpos -40 | |
ypos 1600 | |
} | |
Group { | |
name RGBtoHSV3 | |
label "direction : \[value direction]" | |
xpos -40 | |
ypos 1689 | |
addUserKnob {20 RGBtoHSV_tab l RGBtoHSV} | |
addUserKnob {4 direction M {forward inverse}} | |
direction inverse | |
} | |
Input { | |
inputs 0 | |
name Input | |
xpos -700 | |
ypos 566 | |
} | |
set N105bbe30 [stack 0] | |
Expression { | |
temp_name0 C | |
temp_expr0 b*g | |
temp_name1 X | |
temp_expr1 C*(1-abs((r*6)%2-1)) | |
temp_name2 m | |
temp_expr2 b-C | |
expr0 (r<1/6?C:r<2/6?X:r<3/6?0:r<4/6?0:r<5/6?X:C)+m | |
expr1 (r<1/6?X:r<2/6?C:r<3/6?C:r<4/6?X:r<5/6?0:0)+m | |
expr2 (r<1/6?0:r<2/6?0:r<3/6?X:r<4/6?C:r<5/6?C:X)+m | |
name Expression48 | |
label "HSV to RGB" | |
note_font "Bitstream Vera Sans" | |
xpos -590 | |
ypos 656 | |
} | |
push $N105bbe30 | |
Expression { | |
temp_name0 cmax | |
temp_expr0 max(r,g,b) | |
temp_name1 cmin | |
temp_expr1 min(r,g,b) | |
temp_name2 delta | |
temp_expr2 cmax-cmin | |
expr0 delta==0?0:cmax==r?(((g-b)/delta+6)%6)/6:cmax==g?(((b-r)/delta+2)/6):(((r-g)/delta+4)/6) | |
expr1 "cmax == 0 ? 0 : delta / cmax" | |
expr2 cmax | |
name Expression47 | |
label "RGB to HSV" | |
note_font "Bitstream Vera Sans" | |
xpos -810 | |
ypos 656 | |
} | |
Switch { | |
inputs 2 | |
which {{parent.direction}} | |
name Switch1 | |
xpos -700 | |
ypos 734 | |
} | |
Output { | |
name Output | |
xpos -700 | |
ypos 806 | |
} | |
end_group | |
Group { | |
name XYZtoLMS4 | |
label "direction : \[value direction]" | |
xpos -40 | |
ypos 1741 | |
addUserKnob {20 XYZtoLMS} | |
addUserKnob {4 direction M {forward inverse}} | |
direction inverse | |
} | |
Input { | |
inputs 0 | |
name Input | |
xpos -40 | |
ypos -10 | |
} | |
Dot { | |
name Dot1 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -6 | |
ypos 42 | |
} | |
set N107ff9a0 [stack 0] | |
ColorMatrix { | |
matrix { | |
{0.41478972 0.579999 0.014648} | |
{-0.20151 1.120649 0.0531008} | |
{-0.0166008 0.2648 0.6684799} | |
} | |
invert true | |
name ColorMatrix1 | |
label "LMS\nto\nX'Y'Z (D65)" | |
note_font "Bitstream Vera Sans" | |
xpos 70 | |
ypos 92 | |
} | |
Expression { | |
temp_name2 Xd65 | |
temp_expr2 (r+(cb-1)*b)/cb | |
expr0 Xd65 | |
expr1 (g+(cg-1)*Xd65)/cg | |
expr2 b | |
name Expression47 | |
label "X'Y'Z (D65)\nto\nXYZ (D65)" | |
note_font "Bitstream Vera Sans" | |
xpos 70 | |
ypos 188 | |
addUserKnob {20 User} | |
addUserKnob {7 cb R 0 2} | |
cb 1.15 | |
addUserKnob {7 cg} | |
cg 0.66 | |
} | |
push $N107ff9a0 | |
Expression { | |
expr0 "(cb*r) - ((cb-1)*b)" | |
expr1 "(cg*g) - ((cg-1)*r)" | |
expr2 b | |
name Expression4 | |
label "XYZ (D65)\nto\nX'Y'Z (D65)" | |
note_font "Bitstream Vera Sans" | |
xpos -150 | |
ypos 91 | |
addUserKnob {20 User} | |
addUserKnob {7 cb R 0 2} | |
cb 1.15 | |
addUserKnob {7 cg} | |
cg 0.66 | |
} | |
ColorMatrix { | |
matrix { | |
{0.41478972 0.579999 0.014648} | |
{-0.20151 1.120649 0.0531008} | |
{-0.0166008 0.2648 0.6684799} | |
} | |
name ColorMatrix8 | |
label "X'Y'Z (D65)\nto\nLMS" | |
note_font "Bitstream Vera Sans" | |
xpos -150 | |
ypos 188 | |
} | |
Switch { | |
inputs 2 | |
which {{parent.direction}} | |
name Switch1 | |
xpos -40 | |
ypos 350 | |
} | |
Output { | |
name Output | |
xpos -40 | |
ypos 446 | |
} | |
end_group | |
ColorMatrix { | |
matrix { | |
{{parent.SOURCE_GAMUT_GamutToXYZ.ColorMatrix.matrix} {parent.SOURCE_GAMUT_GamutToXYZ.ColorMatrix.matrix} {parent.SOURCE_GAMUT_GamutToXYZ.ColorMatrix.matrix}} | |
{{parent.SOURCE_GAMUT_GamutToXYZ.ColorMatrix.matrix} {parent.SOURCE_GAMUT_GamutToXYZ.ColorMatrix.matrix} {parent.SOURCE_GAMUT_GamutToXYZ.ColorMatrix.matrix}} | |
{{parent.SOURCE_GAMUT_GamutToXYZ.ColorMatrix.matrix} {parent.SOURCE_GAMUT_GamutToXYZ.ColorMatrix.matrix} {parent.SOURCE_GAMUT_GamutToXYZ.ColorMatrix.matrix}} | |
} | |
invert true | |
name ColorMatrix1 | |
label "XYZ to \[value parent.src_gamut]" | |
xpos -40 | |
ypos 1909 | |
disable {{parent.compress_only}} | |
} | |
Dot { | |
name Dot7 | |
label " OUTPUT GAMUT" | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -6 | |
ypos 1986 | |
} | |
Output { | |
name Output | |
xpos -40 | |
ypos 2121 | |
} | |
push $Nb6d1e50 | |
Group { | |
name SoftCompress16 | |
label "direction: \[knob direction]" | |
xpos 1023 | |
ypos 1394 | |
addUserKnob {20 SoftCompress} | |
addUserKnob {7 slope t "The softness of the compressing curve's slope. 0 is a clamp."} | |
slope {{parent.SoftCompress15.slope}} | |
addUserKnob {7 threshold t "The minimum threshold. Values below this number will not be affected." R 0 2} | |
threshold {{parent.SoftCompress15.threshold}} | |
addUserKnob {7 limit t "The asymptotic maximum value. For example, the value that inf becomes." R 0 2} | |
limit {{parent.SoftCompress15.limit}} | |
addUserKnob {4 direction M {forward inverse}} | |
direction inverse | |
} | |
Input { | |
inputs 0 | |
name InputMask | |
xpos -590 | |
ypos 806 | |
number 1 | |
} | |
Input { | |
inputs 0 | |
name Input | |
xpos -810 | |
ypos 494 | |
} | |
Dot { | |
name Dot1 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -776 | |
ypos 546 | |
} | |
set Ndf97a00 [stack 0] | |
Expression { | |
temp_name0 sl | |
temp_expr0 "(1-slope)*(max(0, limit-threshold))" | |
temp_name1 th | |
temp_expr1 threshold | |
temp_name2 lim | |
temp_expr2 "max(0, (limit-threshold))" | |
expr0 "r < th + sl ? r : (pow(sl, 2) + 2 * sl * th - 2 * sl * r + pow(th, 2) - th * r + lim * r)/(th + lim - r)" | |
expr1 "g < th + sl ? g : (pow(sl, 2) + 2 * sl * th - 2 * sl * g + pow(th, 2) - th * g + lim * g)/(th + lim - g)" | |
expr2 "b < th + sl ? b : (pow(sl, 2) + 2 * sl * th - 2 * sl * b + pow(th, 2) - th * b + lim * b)/(th + lim - b)" | |
name SoftCompress_inverse | |
xpos -700 | |
ypos 638 | |
addUserKnob {20 Params_tab l Params} | |
addUserKnob {7 slope} | |
slope {{parent.slope}} | |
addUserKnob {7 threshold R 0 25} | |
threshold {{parent.threshold}} | |
addUserKnob {7 limit R 0 25} | |
limit {{parent.limit}} | |
} | |
push $Ndf97a00 | |
Expression { | |
temp_name0 sl | |
temp_expr0 "(1-slope)*(max(0, limit-threshold))" | |
temp_name1 th | |
temp_expr1 "min(threshold, limit)" | |
temp_name2 lim | |
temp_expr2 "max(0, (limit-threshold))" | |
expr0 "r < th + sl ? r : th + (-1 / ((r - th - sl) / (lim - sl) + 1) + 1) * (lim - sl) + sl" | |
expr1 "g < th + sl ? g : th + (-1 / ((g - th - sl) / (lim - sl) + 1) + 1) * (lim - sl) + sl" | |
expr2 "b < th + sl ? b : th + (-1 / ((b - th - sl) / (lim - sl) + 1) + 1) * (lim - sl) + sl" | |
name SoftCompress | |
xpos -920 | |
ypos 638 | |
addUserKnob {20 Params_tab l Params} | |
addUserKnob {7 slope} | |
slope {{parent.slope}} | |
addUserKnob {7 threshold R 0 25} | |
threshold {{parent.threshold}} | |
addUserKnob {7 limit R 0 25} | |
limit {{parent.limit}} | |
} | |
Switch { | |
inputs 2 | |
which {{parent.direction}} | |
name Switch1 | |
xpos -810 | |
ypos 710 | |
} | |
push $Ndf97a00 | |
Dot { | |
name Dot2 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -996 | |
ypos 546 | |
} | |
Dot { | |
name Dot3 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -996 | |
ypos 810 | |
} | |
NodeWrapper { | |
inputs 2+1 | |
channels rgb | |
name NodeWrapper1 | |
xpos -810 | |
ypos 806 | |
} | |
Output { | |
name Output | |
xpos -810 | |
ypos 926 | |
} | |
end_group | |
push 0 | |
Switch { | |
inputs 2 | |
which {{parent.invert}} | |
name Switch_Inverse1 | |
xpos 1023 | |
ypos 1482 | |
} | |
Group { | |
inputs 0 | |
name SoftclipExpression8 | |
label "Type A" | |
note_font "Bitstream Vera Sans" | |
xpos 610 | |
ypos 1441 | |
addUserKnob {20 User} | |
addUserKnob {18 threshold} | |
threshold {0 0 0} | |
addUserKnob {6 threshold_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {3 direction} | |
addUserKnob {7 mix} | |
mix 1 | |
} | |
Input { | |
inputs 0 | |
name Input1 | |
xpos -284 | |
ypos 147 | |
} | |
set Ncb3edb0 [stack 0] | |
Expression { | |
temp_name0 one_minus_e | |
temp_expr0 "1 - pow(10,-15)" | |
temp_name1 maxr | |
temp_expr1 "(pow(threshold.r, 2) - 2 * threshold.r * one_minus_e + one_minus_e ) / ( 1 - one_minus_e )" | |
temp_name2 maxg | |
temp_expr2 "(pow(threshold.g, 2) - 2 * threshold.g * one_minus_e + one_minus_e ) / ( 1 - one_minus_e )" | |
temp_name3 maxb | |
temp_expr3 "(pow(threshold.b, 2) - 2 * threshold.b * one_minus_e + one_minus_e ) / ( 1 - one_minus_e )" | |
expr0 " threshold.r < 1 ? r >= 1 ? maxr : r > threshold.r ? (pow(threshold.r, 2) - 2 * threshold.r * r + r ) / ( 1 - r ) : r : r" | |
expr1 " threshold.g < 1 ? g >= 1 ? maxg : g > threshold.g ? (pow(threshold.g, 2) - 2 * threshold.g * g + g ) / ( 1 - g ) : g : g" | |
expr2 " threshold.b < 1 ? b >= 1 ? maxb : b > threshold.b ? (pow(threshold.b, 2) - 2 * threshold.b * b + b ) / ( 1 - b ) : b : b" | |
expr3 a | |
mix {{parent.mix}} | |
name Expression2 | |
label inverse | |
xpos -222 | |
ypos 258 | |
addUserKnob {20 User} | |
addUserKnob {18 threshold} | |
threshold {{parent.threshold.r} {parent.threshold.g} {parent.threshold.b}} | |
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 {6 threshold_panelDropped_1_1_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_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_panelDropped_1_1_1_1_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_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_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_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_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_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_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_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_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_1_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_1_1_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_1_1_1_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_1_1_1_1_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_1_1_1_1_1_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_1_1_1_1_1_1_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_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_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_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
} | |
push $Ncb3edb0 | |
Expression { | |
expr0 "threshold.r < 1 ? r > threshold.r ? ( -1 / (( r - threshold.r ) / ( 1 - threshold.r ) +1 ) +1 ) * ( 1 - threshold.r ) + threshold.r : r : r" | |
expr1 "threshold.g < 1 ? g > threshold.g ? ( -1 / (( g - threshold.g ) / ( 1 - threshold.g ) +1 ) +1 ) * ( 1 - threshold.g ) + threshold.g : g : g" | |
expr2 "threshold.b < 1 ? b > threshold.b ? ( -1 / (( b - threshold.b ) / ( 1 - threshold.b ) +1 ) +1 ) * ( 1 - threshold.b ) + threshold.b : b : b" | |
expr3 a | |
mix {{parent.mix}} | |
name Expression1 | |
label forward | |
xpos -349 | |
ypos 258 | |
addUserKnob {20 User} | |
addUserKnob {18 threshold_1 l threshold} | |
threshold_1 {{parent.threshold.r} {parent.threshold.g} {parent.threshold.b}} | |
addUserKnob {6 threshold_1_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_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 threshold_1_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 threshold_1_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 threshold_1_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 threshold_1_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 threshold_1_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 threshold_1_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 threshold_1_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 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshold_1_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
} | |
Switch { | |
inputs 2 | |
which {{parent.direction}} | |
name Switch2 | |
note_font "Bitstream Vera Sans" | |
xpos -287 | |
ypos 351 | |
} | |
Output { | |
name Output1 | |
xpos -287 | |
ypos 463 | |
} | |
end_group | |
Group { | |
inputs 0 | |
name SoftclipExpression1 | |
label "Type B" | |
note_font "Bitstream Vera Sans" | |
xpos 720 | |
ypos 1441 | |
addUserKnob {20 User} | |
addUserKnob {18 threshold} | |
threshold {0 0 0} | |
addUserKnob {6 threshold_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {3 direction} | |
addUserKnob {7 mix} | |
mix 1 | |
} | |
Input { | |
inputs 0 | |
name Input1 | |
xpos -284 | |
ypos 147 | |
} | |
set Ne188f20 [stack 0] | |
Expression { | |
temp_name0 atanh_r | |
temp_expr0 log((1+(threshold.r-r)/threshCompl.r)/(1-(threshold.r-r)/threshCompl.r))/2 | |
temp_name1 atanh_g | |
temp_expr1 log((1+(threshold.g-g)/threshCompl.g)/(1-(threshold.g-g)/threshCompl.g))/2 | |
temp_name2 atanh_b | |
temp_expr2 log((1+(threshold.b-b)/threshCompl.b)/(1-(threshold.b-b)/threshCompl.b))/2 | |
expr0 "r > threshold.r ? threshold.r*(-atanh_r) + atanh_r + threshold.r : r" | |
expr1 "g > threshold.g ? threshold.g*(-atanh_g) + atanh_g + threshold.g : g" | |
expr2 "b > threshold.b ? threshold.b*(-atanh_b) + atanh_b + threshold.b : b" | |
expr3 a | |
name Expression12 | |
label inverse | |
xpos -204 | |
ypos 272 | |
addUserKnob {20 User} | |
addUserKnob {18 threshold} | |
threshold {{parent.threshold.r} {parent.threshold.g} {parent.threshold.b}} | |
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 {18 threshCompl} | |
threshCompl {{threshold.r-1} {threshold.g-1} {threshold.b-1}} | |
addUserKnob {6 threshCompl_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshCompl_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshCompl_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshCompl_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshCompl_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshCompl_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshCompl_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshCompl_panelDropped_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshCompl_panelDropped_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshCompl_panelDropped_1_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
} | |
push $Ne188f20 | |
Expression { | |
expr0 "r > threshold.r ? threshold.r + threshCompl.r * tanh((r - threshold.r) / threshCompl.r) : r" | |
expr1 "g > threshold.g ? threshold.g + threshCompl.g * tanh((g - threshold.g) / threshCompl.g) : g" | |
expr2 "b > threshold.b ? threshold.b + threshCompl.b * tanh((b - threshold.b) / threshCompl.b) : b" | |
expr3 a | |
name Expression3 | |
label forward | |
xpos -376 | |
ypos 269 | |
addUserKnob {20 User} | |
addUserKnob {18 threshold} | |
threshold {{parent.threshold.r} {parent.threshold.g} {parent.threshold.b}} | |
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 {18 threshCompl} | |
threshCompl {{1-threshold.r} {1-threshold.g} {1-threshold.b}} | |
addUserKnob {6 threshCompl_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshCompl_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshCompl_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshCompl_panelDropped_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshCompl_panelDropped_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshCompl_panelDropped_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshCompl_panelDropped_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshCompl_panelDropped_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
addUserKnob {6 threshCompl_panelDropped_1_1_1_1_1_1_1_1 l "panel dropped state" -STARTLINE +HIDDEN} | |
} | |
Switch { | |
inputs 2 | |
which {{parent.direction}} | |
name Switch2 | |
note_font "Bitstream Vera Sans" | |
xpos -287 | |
ypos 356 | |
} | |
Output { | |
name Output1 | |
xpos -287 | |
ypos 463 | |
} | |
end_group | |
Group { | |
inputs 0 | |
name SoftCompress1 | |
label "direction: \[knob direction]" | |
xpos 73 | |
ypos 1417 | |
addUserKnob {20 SoftCompress} | |
addUserKnob {7 slope t "The softness of the compressing curve's slope. 0 is a clamp."} | |
slope 0.945 | |
addUserKnob {7 threshold t "The minimum threshold. Values below this number will not be affected." R 0 2} | |
threshold 0.57 | |
addUserKnob {7 limit t "The asymptotic maximum value. For example, the value that inf becomes." R 0 2} | |
limit 1.07 | |
addUserKnob {4 direction M {forward inverse}} | |
} | |
Input { | |
inputs 0 | |
name InputMask | |
xpos -590 | |
ypos 806 | |
number 1 | |
} | |
Input { | |
inputs 0 | |
name Input | |
xpos -810 | |
ypos 494 | |
} | |
Dot { | |
name Dot1 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -776 | |
ypos 546 | |
} | |
set Ndd817b0 [stack 0] | |
Expression { | |
temp_name0 sl | |
temp_expr0 "(1-slope)*(max(0, limit-threshold))" | |
temp_name1 th | |
temp_expr1 threshold | |
temp_name2 lim | |
temp_expr2 "max(0, (limit-threshold))" | |
expr0 "r < th + sl ? r : (pow(sl, 2) + 2 * sl * th - 2 * sl * r + pow(th, 2) - th * r + lim * r)/(th + lim - r)" | |
expr1 "g < th + sl ? g : (pow(sl, 2) + 2 * sl * th - 2 * sl * g + pow(th, 2) - th * g + lim * g)/(th + lim - g)" | |
expr2 "b < th + sl ? b : (pow(sl, 2) + 2 * sl * th - 2 * sl * b + pow(th, 2) - th * b + lim * b)/(th + lim - b)" | |
expr3 "a < th + sl ? a : (pow(sl, 2) + 2 * sl * th - 2 * sl * a + pow(th, 2) - th * a + lim * a)/(th + lim - a)" | |
name SoftCompress_inverse | |
xpos -702 | |
ypos 636 | |
addUserKnob {20 Params_tab l Params} | |
addUserKnob {7 slope} | |
slope {{parent.slope}} | |
addUserKnob {7 threshold R 0 25} | |
threshold {{parent.threshold}} | |
addUserKnob {7 limit R 0 25} | |
limit {{parent.limit}} | |
} | |
push $Ndd817b0 | |
Expression { | |
temp_name0 sl | |
temp_expr0 "(1-slope)*(max(0, limit-threshold))" | |
temp_name1 th | |
temp_expr1 "min(threshold, limit)" | |
temp_name2 lim | |
temp_expr2 "max(0, (limit-threshold))" | |
expr0 "r < th + sl ? r : th + (-1 / ((r - th - sl) / (lim - sl) + 1) + 1) * (lim - sl) + sl" | |
expr1 "g < th + sl ? g : th + (-1 / ((g - th - sl) / (lim - sl) + 1) + 1) * (lim - sl) + sl" | |
expr2 "b < th + sl ? b : th + (-1 / ((b - th - sl) / (lim - sl) + 1) + 1) * (lim - sl) + sl" | |
expr3 "a < th + sl ? a : th + (-1 / ((a - th - sl) / (lim - sl) + 1) + 1) * (lim - sl) + sl" | |
name SoftCompress | |
xpos -921 | |
ypos 639 | |
addUserKnob {20 Params_tab l Params} | |
addUserKnob {7 slope} | |
slope {{parent.slope}} | |
addUserKnob {7 threshold R 0 25} | |
threshold {{parent.threshold}} | |
addUserKnob {7 limit R 0 25} | |
limit {{parent.limit}} | |
} | |
Switch { | |
inputs 2 | |
which {{parent.direction}} | |
name SwitchDirection | |
xpos -810 | |
ypos 709 | |
} | |
push $Ndd817b0 | |
Dot { | |
name Dot2 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -996 | |
ypos 546 | |
} | |
Dot { | |
name Dot3 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -996 | |
ypos 810 | |
} | |
NodeWrapper { | |
inputs 2+1 | |
channels rgba | |
name NodeWrapper1 | |
xpos -810 | |
ypos 806 | |
} | |
Output { | |
name Output | |
xpos -810 | |
ypos 926 | |
} | |
end_group | |
push $Nb6d1e50 | |
CurveTool { | |
operation "Max Luma Pixel" | |
ROI {0 0 {input.width} {input.height}} | |
autocropdata {0 0 {input.width} {input.height}} | |
maxlumapixdata {{curve x1 478 x6 1021 x14 1800} {curve x1 364 x6 199 x14 436}} | |
maxlumapixvalue {{curve x1 329576.0312 x6 17232.42383 x14 3.869687557} {curve x1 1.28495717 x6 0.3491346538 x14 4.130000114} {curve x1 0.4011462331 x6 0.05546005815 x14 3.160937548}} | |
minlumapixdata {{curve x1 145 x6 253 x14 380} {curve x1 425 x6 2 x14 0}} | |
minlumapixvalue {{curve x1 2.707561186e-25 x6 0.01374461688 x14 0} {curve x1 0 x6 0.002241947223 x14 0} {curve x1 0 x6 0.03770677745 x14 0}} | |
name CT | |
xpos 320 | |
ypos 1424 | |
} | |
push $Nb6d1e50 | |
Viewer { | |
frame_range 1-52 | |
viewerProcess "sRGB (ACES)" | |
name Viewer1 | |
selected true | |
xpos 533 | |
ypos 692 | |
addUserKnob {20 Lock} | |
addUserKnob {6 lock_all_buffers l "lock all buffers" -STARTLINE} | |
addUserKnob {6 lock_buffer_1 l "lock buffer 1" +STARTLINE} | |
addUserKnob {6 lock_buffer_2 l "lock buffer 2" +STARTLINE} | |
addUserKnob {6 lock_buffer_3 l "lock buffer 3" +STARTLINE} | |
addUserKnob {6 lock_buffer_4 l "lock buffer 4" +STARTLINE} | |
addUserKnob {6 lock_buffer_5 l "lock buffer 5" +STARTLINE} | |
addUserKnob {6 lock_buffer_6 l "lock buffer 6" +STARTLINE} | |
addUserKnob {6 lock_buffer_7 l "lock buffer 7" +STARTLINE} | |
addUserKnob {6 lock_buffer_8 l "lock buffer 8" +STARTLINE} | |
addUserKnob {6 lock_buffer_9 l "lock buffer 9" +STARTLINE} | |
addUserKnob {6 lock_buffer_0 l "lock buffer 0" +STARTLINE} | |
} | |
end_group | |
push $Nf447430 | |
Group { | |
name GamutCompress2 | |
label "Saturation Adjust - Pre-Keyed for best fit to input imagery" | |
xpos 3700 | |
ypos -48 | |
addUserKnob {20 User} | |
addUserKnob {22 calc_max_sat l "Calculate Max Saturation" t "Calculate the max saturation of the input image. That is, how far out of gamut is the most offending pixel." T "n = nuke.thisNode()\nnuke.root().begin()\nn.begin()\nct = nuke.toNode('CT')\nnuke.execute(ct, nuke.frame(), nuke.frame())\nmaxpx = ct\['maxlumapixvalue'].getValue()\nmaxpx = max(1, maxpx\[0])\nn\['max_sat'].setValue(maxpx)" +STARTLINE} | |
addUserKnob {7 max_sat l "max sat" t "max saturation\ni.e. how far out of gamut is the worst pixel" R 1 1.5} | |
max_sat {{curve x1 1.434577703 1.409547567 1.2 1.143328071 1.060532331 1.110794544 1.057173729 1 1.192092896 1.28297925 1.259831667 x18 1.060389042 x19 1 x24 1 x34 1.041455269 x35 1.077255249 1.1039536 x40 1.091059685 x41 1.08315599 1.06418395 1 1.161405921 1.209861159}} | |
addUserKnob {7 desat} | |
desat {{curve x1 0.295 0.31 0.315 0.06 0.07 0.105 0.1 0 0.15 0.24 0.24 x18 0.19 x19 0 x24 0.04 x26 0.05 x30 0 0.05 x35 0.125 0.14 x40 0.12 x41 0.11 0.1 0 0.15 0.18}} | |
addUserKnob {7 core_threshold l "core threshold" t "core or \"confidence\" gamut threshold.\n\n1 is a clip. 0 is no confidence gamut."} | |
core_threshold {{curve x1 0.62 0.66 0.76 0.77 0.75 0.505 0.845 0.835 0.63 0.695 0.75 x18 0.77 x19 0 x24 0.925 x26 0.915 x34 0.725 x35 0.745 0.745 x44 0.715 x45 0.75}} | |
addUserKnob {20 weights_grp l weights n 1} | |
addUserKnob {7 r_weight} | |
r_weight 1 | |
addUserKnob {7 g_weight} | |
g_weight 1 | |
addUserKnob {7 b_weight} | |
b_weight {{curve x3 1 0 1 1}} | |
addUserKnob {20 endGroup n -1} | |
} | |
BackdropNode { | |
inputs 0 | |
name BackdropNode1 | |
tile_color 0x4c4c4c01 | |
label "<left><font size=6><b>Other Failed Ideas</b></font>\n" | |
note_font_size 24 | |
note_font_color 0x1e1e1eff | |
xpos 1639 | |
ypos 214.8 | |
bdwidth 1445 | |
bdheight 880 | |
} | |
Input { | |
inputs 0 | |
name Input | |
xpos 730 | |
ypos 313 | |
} | |
Dot { | |
name Dot68 | |
xpos 764 | |
ypos 402 | |
} | |
set Ndda9900 [stack 0] | |
Dot { | |
name Dot70 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 984 | |
ypos 402 | |
} | |
set Nddae750 [stack 0] | |
Expression { | |
temp_name0 lum | |
temp_expr0 "max(max(r,g,b), 1e-2)" | |
temp_name1 minpx | |
temp_expr1 min(r,g,b) | |
temp_name2 sat | |
temp_expr2 (lum-minpx)/lum | |
expr0 "lum == 0 ? 1 : sat" | |
expr1 "lum == 0 ? 1 : sat" | |
expr2 "lum == 0 ? 1 : sat" | |
expr3 "lum == 0 ? 1 : sat" | |
name Saturation3 | |
xpos 950 | |
ypos 439 | |
} | |
set Nddb3720 [stack 0] | |
Group { | |
name BlurPercent | |
tile_color 0xc4814dff | |
xpos 1081 | |
ypos 439 | |
addUserKnob {20 percentBlur l "Percent Blur"} | |
addUserKnob {41 channels T _BLUR_.channels} | |
addUserKnob {14 percent R 0 100} | |
percent 3 | |
addUserKnob {41 filter T _BLUR_.filter} | |
addUserKnob {41 quality l "" -STARTLINE T _BLUR_.quality} | |
addUserKnob {41 crop l "crop to format" -STARTLINE T _BLUR_.crop} | |
addUserKnob {41 mix T _BLUR_.mix} | |
} | |
Input { | |
inputs 0 | |
name Input | |
xpos 440 | |
ypos -225 | |
} | |
Blur { | |
channels rgba | |
size {{width/3*(percent/100) x1001 6.826666667e+10} {width/3*(percent/100)*(1/pixel_aspect)}} | |
crop false | |
name _BLUR_ | |
xpos 440 | |
ypos -153 | |
addUserKnob {20 User} | |
addUserKnob {7 xpercent l xPercent R 0 100} | |
xpercent 25.5 | |
addUserKnob {7 ypercent l yPercent R 0 100} | |
ypercent {{xpercent}} | |
} | |
Output { | |
name Output1 | |
xpos 440 | |
ypos -81 | |
} | |
end_group | |
CurveTool { | |
operation "Max Luma Pixel" | |
ROI {0 0 {input.width} {input.height}} | |
autocropdata {0 0 {input.width} {input.height}} | |
maxlumapixdata {{curve x1 0 35 85 1431 2047 0 799 1807 3423 1777 5355 x18 3534 x24 2134 x34 1837 x35 1807 1813 x40 1843 x41 1843 1846 1681 1023 186} {curve x1 275 1028 320 849 0 1151 478 532 1795 1807 2565 x18 2750 x24 664 x34 526 x35 595 526 x40 526 x41 526 526 43 1023 303}} | |
maxlumapixvalue {{curve x1 1.434577703 1.409547567 4476280.5 1.143328071 1.060532331 1.110794544 1.057173729 0.9376456141 1.192092896 1.28297925 1.259831667 x18 1.060389042 x24 0.957698822 x34 1.041455269 x35 1.077255249 1.1039536 x40 1.091059685 x41 1.08315599 1.06418395 0.9758271575 1.161405921 1.209861159} {curve x1 1.434577703 1.409547567 4476280.5 1.143328071 1.060532331 1.110794544 1.057173729 0.9376456141 1.192092896 1.28297925 1.259831667 x18 1.060389042 x24 0.957698822 x34 1.041455269 x35 1.077255249 1.1039536 x40 1.091059685 x41 1.08315599 1.06418395 0.9758271575 1.161405921 1.209861159} {curve x1 1.434577703 1.409547567 4476280.5 1.143328071 1.060532331 1.110794544 1.057173729 0.9376456141 1.192092896 1.28297925 1.259831667 x18 1.060389042 x24 0.957698822 x34 1.041455269 x35 1.077255249 1.1039536 x40 1.091059685 x41 1.08315599 1.06418395 0.9758271575 1.161405921 1.209861159}} | |
minlumapixdata {{curve x1 776 1025 685 1851 1131 99 2449 4069 1330 1807 3909 x18 2082 x24 1258 x34 91 x35 91 1501 x40 91 x41 91 1258 1258 519 522} {curve x1 240 1023 145 347 27 20 721 346 46 57 2553 x18 1969 x24 46 x34 46 x35 46 1030 x40 46 x41 46 46 46 395 395}} | |
minlumapixvalue {{curve x1 6.984702736e-07 0.2395722866 0.0030396441 0.151778549 0.5825394988 0.004060547333 0.07391577214 0.02645999752 0.6499049067 0.6279835701 0.5038699508 x18 0.3795001209 x24 0.5246937275 x34 0.5586354733 x35 0.6015037298 0.5296355486 x40 0.5670491457 x41 0.5622775555 0.5552452803 0.5526627302 0.04067442194 0.04791568592} {curve x1 6.984702736e-07 0.2395722866 0.0030396441 0.151778549 0.5825394988 0.004060547333 0.07391577214 0.02645999752 0.6499049067 0.6279835701 0.5038699508 x18 0.3795001209 x24 0.5246937275 x34 0.5586354733 x35 0.6015037298 0.5296355486 x40 0.5670491457 x41 0.5622775555 0.5552452803 0.5526627302 0.04067442194 0.04791568592} {curve x1 6.984702736e-07 0.2395722866 0.0030396441 0.151778549 0.5825394988 0.004060547333 0.07391577214 0.02645999752 0.6499049067 0.6279835701 0.5038699508 x18 0.3795001209 x24 0.5246937275 x34 0.5586354733 x35 0.6015037298 0.5296355486 x40 0.5670491457 x41 0.5622775555 0.5552452803 0.5526627302 0.04067442194 0.04791568592}} | |
name CT | |
xpos 1081 | |
ypos 481 | |
} | |
push $Nddb3720 | |
Expression { | |
expr3 a/pivot | |
name Remap | |
xpos 950 | |
ypos 488 | |
addUserKnob {20 User} | |
addUserKnob {7 pivot R 1 2} | |
pivot {{parent.max_sat}} | |
} | |
Expression { | |
expr3 1-a | |
name Complement2 | |
xpos 950 | |
ypos 535 | |
} | |
Expression { | |
expr0 r | |
expr1 g | |
expr2 b | |
expr3 "1/(wp-bp) * a - 1/(wp-bp) * bp" | |
name WhitepointBlackpoint4 | |
xpos 950 | |
ypos 583 | |
addUserKnob {20 User} | |
addUserKnob {7 wp R 0 2} | |
wp {{1-parent.core_threshold}} | |
addUserKnob {7 bp} | |
} | |
Dot { | |
name Dot1 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 984 | |
ypos 664 | |
} | |
set Nd3ace90 [stack 0] | |
push $Ndda9900 | |
Dot { | |
name Dot2 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 764 | |
ypos 614 | |
} | |
set Nd3b1fe0 [stack 0] | |
Expression { | |
inputs 1+1 | |
temp_name0 lum | |
temp_expr0 max(r,g,b) | |
expr0 (r-lum)*saturation+lum | |
expr1 (g-lum)*saturation+lum | |
expr2 (b-lum)*saturation+lum | |
expr3 a | |
invert_mask true | |
name Saturation | |
label max | |
xpos 840 | |
ypos 741 | |
dope_sheet true | |
addUserKnob {20 User} | |
addUserKnob {7 saturation} | |
saturation {{1-parent.desat}} | |
} | |
push $Nd3ace90 | |
push $Nd3b1fe0 | |
Expression { | |
inputs 1+1 | |
temp_name0 lum | |
temp_expr0 r*weight.x+g*weight.y+b*weight.z | |
expr0 (r-lum)*saturation+lum | |
expr1 (g-lum)*saturation+lum | |
expr2 (b-lum)*saturation+lum | |
expr3 a | |
invert_mask true | |
name Saturation2 | |
label coefficients | |
xpos 950 | |
ypos 741 | |
dope_sheet true | |
addUserKnob {20 User} | |
addUserKnob {13 weight} | |
weight {0.1 0.7 0.2} | |
addUserKnob {7 saturation} | |
saturation {{1-parent.desat}} | |
} | |
push $Nddae750 | |
Dot { | |
name Dot61 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 1892 | |
ypos 402 | |
} | |
set Nc0e1360 [stack 0] | |
BlinkScript { | |
recompileCount 11 | |
ProgramGroup 1 | |
KernelDescription "2 \"ACES_rrt_sweeteners\" iterate pixelWise f8a9ce320f06d7e170d1557518df73160acb98a9d89a22f03ddd75c61a3f7f73 2 \"src\" Read Point \"dst\" Write Point 5 \"RRT_RED_SCALE\" Float 1 AAAAAA== \"RRT_RED_PIVOT\" Float 1 AAAAAA== \"RRT_RED_HUE\" Float 1 AAAAAA== \"RRT_RED_WIDTH\" Float 1 AAAAAA== \"invert\" Bool 1 AA== 5 \"RRT_RED_SCALE\" 1 1 \"RRT_RED_PIVOT\" 1 1 \"RRT_RED_HUE\" 1 1 \"RRT_RED_WIDTH\" 1 1 \"invert\" 1 1 0" | |
kernelSource "kernel ACES_rrt_sweeteners : public ImageComputationKernel<ePixelWise>\n\{\n Image<eRead, eAccessPoint, eEdgeClamped> src;\n Image<eWrite> dst;\n\nparam:\n // User controllable parameters\n float RRT_RED_SCALE;\n float RRT_RED_PIVOT;\n float RRT_RED_HUE;\n float RRT_RED_WIDTH;\n bool invert;\n\n // // Red modifier constants\n // RRT_RED_SCALE = 0.82;\n // RRT_RED_PIVOT = 0.03;\n // RRT_RED_HUE = 0.;\n // RRT_RED_WIDTH = 135.;\n\n\n float min_f3(float3 a) \{\n return min( a.x, min( a.y, a.z));\n \}\n\n float max_f3(float3 a) \{\n return max( a.x, max( a.y, a.z));\n \}\n\n float rgb_2_saturation( float3 rgb ) \{\n return ( max( max_f3(rgb), 1e-10) - max( min_f3(rgb), 1e-10)) / max( max_f3(rgb), 1e-2);\n \}\n\n float sigmoid_shaper( float x) \{\n float t = max( float(1. - fabs( float(x / 2.))), float(0));\n float y = 1. + sign(float(x)) * (1. - t * t);\n return y / 2.;\n \}\n\n float rgb_2_yc( float3 rgb, float ycRadiusWeight) \{\n // keyword arguments don't work with blink.. ycRadiusWeight default if not specified was 1.75\n float r = rgb.x; \n float g = rgb.y; \n float b = rgb.z;\n float chroma = sqrt(float(b*(b-g)+g*(g-r)+r*(r-b)));\n return ( b + g + r + ycRadiusWeight * chroma) / 3.;\n \}\n\n // ------- Glow module functions\n float glow_fwd( float ycIn, float glowGainIn, float glowMid) \{\n float glowGainOut;\n if (ycIn <= 2./3. * glowMid) \{\n glowGainOut = glowGainIn;\n \} else if ( ycIn >= 2. * glowMid) \{\n glowGainOut = 0.;\n \} else \{\n glowGainOut = glowGainIn * (glowMid / ycIn - 1./2.);\n \}\n return glowGainOut;\n \}\n\n // Transformations from RGB to other color representations\n float rgb_2_hue( float3 rgb) \n \{\n // Returns a geometric hue angle in degrees (0-360) based on RGB values.\n // For neutral colors, hue is undefined and the function will return a quiet NaN value.\n float hue;\n if (rgb.x == rgb.y && rgb.y == rgb.z) \{\n hue = 0.; // RGB triplets where RGB are equal have an undefined hue\n \} else \{\n hue = (180./3.14159265359) * atan2( sqrt(3)*(rgb.y-rgb.z), 2*rgb.x-rgb.y-rgb.z);\n \}\n if (hue < 0.) hue = hue + 360.;\n return hue;\n \}\n\n float center_hue( float hue, float centerH) \{\n float hueCentered = hue - centerH;\n if (hueCentered < -180.) hueCentered = hueCentered + 360.;\n else if (hueCentered > 180.) hueCentered = hueCentered - 360.;\n return hueCentered;\n \}\n\n float cubic_basis_shaper( float x, float w) \{\n float M\[4]\[4] = \{ \{ -1./6, 3./6, -3./6, 1./6 \},\n \{ 3./6, -6./6, 3./6, 0./6 \},\n \{ -3./6, 0./6, 3./6, 0./6 \},\n \{ 1./6, 4./6, 1./6, 0./6 \} \};\n \n double knots\[5] = \{ -w/2.,\n -w/4.,\n 0.,\n w/4.,\n w/2. \};\n float y = 0;\n if ((x > knots\[0]) && (x < knots\[4])) \{ \n float knot_coord = (x - knots\[0]) * 4./w; \n int j = knot_coord;\n float t = knot_coord - j;\n float monomials\[4] = \{ t*t*t, t*t, t, 1. \};\n // (if/else structure required for compatibility with CTL < v1.5.)\n if ( j == 3) \{\n y = monomials\[0] * M\[0]\[0] + monomials\[1] * M\[1]\[0] + \n monomials\[2] * M\[2]\[0] + monomials\[3] * M\[3]\[0];\n \} else if ( j == 2) \{\n y = monomials\[0] * M\[0]\[1] + monomials\[1] * M\[1]\[1] + \n monomials\[2] * M\[2]\[1] + monomials\[3] * M\[3]\[1];\n \} else if ( j == 1) \{\n y = monomials\[0] * M\[0]\[2] + monomials\[1] * M\[1]\[2] + \n monomials\[2] * M\[2]\[2] + monomials\[3] * M\[3]\[2];\n \} else if ( j == 0) \{\n y = monomials\[0] * M\[0]\[3] + monomials\[1] * M\[1]\[3] + \n monomials\[2] * M\[2]\[3] + monomials\[3] * M\[3]\[3];\n \} else \{\n y = 0.0;\n \}\n \}\n return y * 3/2.;\n \}\n\n\n void process() \{\n float3 aces = float3(src().x, src().y, src().z);\n\n float saturation = rgb_2_saturation(aces);\n\n // --- Red modifier --- //\n float hue = rgb_2_hue( aces);\n float centeredHue = center_hue( hue, RRT_RED_HUE);\n float hueWeight = cubic_basis_shaper( centeredHue, RRT_RED_WIDTH);\n\n if ( invert == 0 ) \{\n aces.x = aces.x + hueWeight * saturation * (RRT_RED_PIVOT - aces.x) * (1. - RRT_RED_SCALE);\n \} \n else \{ // invert red modifier: note that this is not mathematically perfect\n float minChan;\n if (centeredHue < 0) \{ // min_f3(aces) = aces\[1] (i.e. magenta-red)\n minChan = aces.y;\n \} else \{ // min_f3(aces) = aces\[2] (i.e. yellow-red)\n minChan = aces.z;\n \}\n float a = hueWeight * (1. - RRT_RED_SCALE) - 1.;\n float b = aces.x - hueWeight * (RRT_RED_PIVOT + minChan) * (1. - RRT_RED_SCALE);\n float c = hueWeight * RRT_RED_PIVOT * minChan * (1. - RRT_RED_SCALE);\n aces.x = ( -b - sqrt( float(b * b - 4. * a * c )) ) / ( 2. * a);\n \}\n\n //dst() = float4(aces.x, aces.y, aces.z, src().w);\n dst() = float4(hue/360.0, centeredHue/360.0, aces.x, hueWeight);\n \}\n\};" | |
rebuild "" | |
ACES_rrt_sweeteners_RRT_RED_SCALE 1 | |
ACES_rrt_sweeteners_RRT_RED_PIVOT 1 | |
ACES_rrt_sweeteners_RRT_RED_HUE {{parent.rrt_sweetener_red_modifier1.ACES_rrt_sweeteners_RRT_RED_HUE+240}} | |
ACES_rrt_sweeteners_RRT_RED_WIDTH {{parent.rrt_sweetener_red_modifier1.ACES_rrt_sweeteners_RRT_RED_WIDTH}} | |
rebuild_finalise "" | |
name rrt_sweetener_red_modifier3 | |
xpos 1749 | |
ypos 462 | |
} | |
push 0 | |
push $Nc0e1360 | |
BlinkScript { | |
recompileCount 11 | |
ProgramGroup 1 | |
KernelDescription "2 \"ACES_rrt_sweeteners\" iterate pixelWise f8a9ce320f06d7e170d1557518df73160acb98a9d89a22f03ddd75c61a3f7f73 2 \"src\" Read Point \"dst\" Write Point 5 \"RRT_RED_SCALE\" Float 1 AAAAAA== \"RRT_RED_PIVOT\" Float 1 AAAAAA== \"RRT_RED_HUE\" Float 1 AAAAAA== \"RRT_RED_WIDTH\" Float 1 AAAAAA== \"invert\" Bool 1 AA== 5 \"RRT_RED_SCALE\" 1 1 \"RRT_RED_PIVOT\" 1 1 \"RRT_RED_HUE\" 1 1 \"RRT_RED_WIDTH\" 1 1 \"invert\" 1 1 0" | |
kernelSource "kernel ACES_rrt_sweeteners : public ImageComputationKernel<ePixelWise>\n\{\n Image<eRead, eAccessPoint, eEdgeClamped> src;\n Image<eWrite> dst;\n\nparam:\n // User controllable parameters\n float RRT_RED_SCALE;\n float RRT_RED_PIVOT;\n float RRT_RED_HUE;\n float RRT_RED_WIDTH;\n bool invert;\n\n // // Red modifier constants\n // RRT_RED_SCALE = 0.82;\n // RRT_RED_PIVOT = 0.03;\n // RRT_RED_HUE = 0.;\n // RRT_RED_WIDTH = 135.;\n\n\n float min_f3(float3 a) \{\n return min( a.x, min( a.y, a.z));\n \}\n\n float max_f3(float3 a) \{\n return max( a.x, max( a.y, a.z));\n \}\n\n float rgb_2_saturation( float3 rgb ) \{\n return ( max( max_f3(rgb), 1e-10) - max( min_f3(rgb), 1e-10)) / max( max_f3(rgb), 1e-2);\n \}\n\n float sigmoid_shaper( float x) \{\n float t = max( float(1. - fabs( float(x / 2.))), float(0));\n float y = 1. + sign(float(x)) * (1. - t * t);\n return y / 2.;\n \}\n\n float rgb_2_yc( float3 rgb, float ycRadiusWeight) \{\n // keyword arguments don't work with blink.. ycRadiusWeight default if not specified was 1.75\n float r = rgb.x; \n float g = rgb.y; \n float b = rgb.z;\n float chroma = sqrt(float(b*(b-g)+g*(g-r)+r*(r-b)));\n return ( b + g + r + ycRadiusWeight * chroma) / 3.;\n \}\n\n // ------- Glow module functions\n float glow_fwd( float ycIn, float glowGainIn, float glowMid) \{\n float glowGainOut;\n if (ycIn <= 2./3. * glowMid) \{\n glowGainOut = glowGainIn;\n \} else if ( ycIn >= 2. * glowMid) \{\n glowGainOut = 0.;\n \} else \{\n glowGainOut = glowGainIn * (glowMid / ycIn - 1./2.);\n \}\n return glowGainOut;\n \}\n\n // Transformations from RGB to other color representations\n float rgb_2_hue( float3 rgb) \n \{\n // Returns a geometric hue angle in degrees (0-360) based on RGB values.\n // For neutral colors, hue is undefined and the function will return a quiet NaN value.\n float hue;\n if (rgb.x == rgb.y && rgb.y == rgb.z) \{\n hue = 0.; // RGB triplets where RGB are equal have an undefined hue\n \} else \{\n hue = (180./3.14159265359) * atan2( sqrt(3)*(rgb.y-rgb.z), 2*rgb.x-rgb.y-rgb.z);\n \}\n if (hue < 0.) hue = hue + 360.;\n return hue;\n \}\n\n float center_hue( float hue, float centerH) \{\n float hueCentered = hue - centerH;\n if (hueCentered < -180.) hueCentered = hueCentered + 360.;\n else if (hueCentered > 180.) hueCentered = hueCentered - 360.;\n return hueCentered;\n \}\n\n float cubic_basis_shaper( float x, float w) \{\n float M\[4]\[4] = \{ \{ -1./6, 3./6, -3./6, 1./6 \},\n \{ 3./6, -6./6, 3./6, 0./6 \},\n \{ -3./6, 0./6, 3./6, 0./6 \},\n \{ 1./6, 4./6, 1./6, 0./6 \} \};\n \n double knots\[5] = \{ -w/2.,\n -w/4.,\n 0.,\n w/4.,\n w/2. \};\n float y = 0;\n if ((x > knots\[0]) && (x < knots\[4])) \{ \n float knot_coord = (x - knots\[0]) * 4./w; \n int j = knot_coord;\n float t = knot_coord - j;\n float monomials\[4] = \{ t*t*t, t*t, t, 1. \};\n // (if/else structure required for compatibility with CTL < v1.5.)\n if ( j == 3) \{\n y = monomials\[0] * M\[0]\[0] + monomials\[1] * M\[1]\[0] + \n monomials\[2] * M\[2]\[0] + monomials\[3] * M\[3]\[0];\n \} else if ( j == 2) \{\n y = monomials\[0] * M\[0]\[1] + monomials\[1] * M\[1]\[1] + \n monomials\[2] * M\[2]\[1] + monomials\[3] * M\[3]\[1];\n \} else if ( j == 1) \{\n y = monomials\[0] * M\[0]\[2] + monomials\[1] * M\[1]\[2] + \n monomials\[2] * M\[2]\[2] + monomials\[3] * M\[3]\[2];\n \} else if ( j == 0) \{\n y = monomials\[0] * M\[0]\[3] + monomials\[1] * M\[1]\[3] + \n monomials\[2] * M\[2]\[3] + monomials\[3] * M\[3]\[3];\n \} else \{\n y = 0.0;\n \}\n \}\n return y * 3/2.;\n \}\n\n\n void process() \{\n float3 aces = float3(src().x, src().y, src().z);\n\n float saturation = rgb_2_saturation(aces);\n\n // --- Red modifier --- //\n float hue = rgb_2_hue( aces);\n float centeredHue = center_hue( hue, RRT_RED_HUE);\n float hueWeight = cubic_basis_shaper( centeredHue, RRT_RED_WIDTH);\n\n if ( invert == 0 ) \{\n aces.x = aces.x + hueWeight * saturation * (RRT_RED_PIVOT - aces.x) * (1. - RRT_RED_SCALE);\n \} \n else \{ // invert red modifier: note that this is not mathematically perfect\n float minChan;\n if (centeredHue < 0) \{ // min_f3(aces) = aces\[1] (i.e. magenta-red)\n minChan = aces.y;\n \} else \{ // min_f3(aces) = aces\[2] (i.e. yellow-red)\n minChan = aces.z;\n \}\n float a = hueWeight * (1. - RRT_RED_SCALE) - 1.;\n float b = aces.x - hueWeight * (RRT_RED_PIVOT + minChan) * (1. - RRT_RED_SCALE);\n float c = hueWeight * RRT_RED_PIVOT * minChan * (1. - RRT_RED_SCALE);\n aces.x = ( -b - sqrt( float(b * b - 4. * a * c )) ) / ( 2. * a);\n \}\n\n //dst() = float4(aces.x, aces.y, aces.z, src().w);\n dst() = float4(hue/360.0, centeredHue/360.0, aces.x, hueWeight);\n \}\n\};" | |
rebuild "" | |
ACES_rrt_sweeteners_RRT_RED_SCALE 1 | |
ACES_rrt_sweeteners_RRT_RED_PIVOT 1 | |
ACES_rrt_sweeteners_RRT_RED_HUE {{parent.rrt_sweetener_red_modifier1.ACES_rrt_sweeteners_RRT_RED_HUE+120}} | |
ACES_rrt_sweeteners_RRT_RED_WIDTH {{parent.rrt_sweetener_red_modifier1.ACES_rrt_sweeteners_RRT_RED_WIDTH}} | |
rebuild_finalise "" | |
name rrt_sweetener_red_modifier2 | |
xpos 1858 | |
ypos 464 | |
} | |
push $Nc0e1360 | |
BlinkScript { | |
recompileCount 12 | |
ProgramGroup 1 | |
KernelDescription "2 \"ACES_rrt_sweeteners\" iterate pixelWise 525953e4a603c811da0cfa6bf8fda5775d0803ca6090c445a640ce77d1fee80c 2 \"src\" Read Point \"dst\" Write Point 5 \"RRT_RED_SCALE\" Float 1 AAAAAA== \"RRT_RED_PIVOT\" Float 1 AAAAAA== \"RRT_RED_HUE\" Float 1 AAAAAA== \"RRT_RED_WIDTH\" Float 1 AAAAAA== \"invert\" Bool 1 AA== 5 \"RRT_RED_SCALE\" 1 1 \"RRT_RED_PIVOT\" 1 1 \"RRT_RED_HUE\" 1 1 \"RRT_RED_WIDTH\" 1 1 \"invert\" 1 1 0" | |
kernelSource "kernel ACES_rrt_sweeteners : public ImageComputationKernel<ePixelWise>\n\{\n Image<eRead, eAccessPoint, eEdgeClamped> src;\n Image<eWrite> dst;\n\nparam:\n // User controllable parameters\n float RRT_RED_SCALE;\n float RRT_RED_PIVOT;\n float RRT_RED_HUE;\n float RRT_RED_WIDTH;\n bool invert;\n\n // // Red modifier constants\n // RRT_RED_SCALE = 0.82;\n // RRT_RED_PIVOT = 0.03;\n // RRT_RED_HUE = 0.;\n // RRT_RED_WIDTH = 135.;\n\n\n float min_f3(float3 a) \{\n return min( a.x, min( a.y, a.z));\n \}\n\n float max_f3(float3 a) \{\n return max( a.x, max( a.y, a.z));\n \}\n\n float rgb_2_saturation( float3 rgb ) \{\n return ( max( max_f3(rgb), 1e-10) - max( min_f3(rgb), 1e-10)) / max( max_f3(rgb), 1e-2);\n \}\n\n float sigmoid_shaper( float x) \{\n float t = max( float(1. - fabs( float(x / 2.))), float(0));\n float y = 1. + sign(float(x)) * (1. - t * t);\n return y / 2.;\n \}\n\n float rgb_2_yc( float3 rgb, float ycRadiusWeight) \{\n // keyword arguments don't work with blink.. ycRadiusWeight default if not specified was 1.75\n float r = rgb.x; \n float g = rgb.y; \n float b = rgb.z;\n float chroma = sqrt(float(b*(b-g)+g*(g-r)+r*(r-b)));\n return ( b + g + r + ycRadiusWeight * chroma) / 3.;\n \}\n\n // ------- Glow module functions\n float glow_fwd( float ycIn, float glowGainIn, float glowMid) \{\n float glowGainOut;\n if (ycIn <= 2./3. * glowMid) \{\n glowGainOut = glowGainIn;\n \} else if ( ycIn >= 2. * glowMid) \{\n glowGainOut = 0.;\n \} else \{\n glowGainOut = glowGainIn * (glowMid / ycIn - 1./2.);\n \}\n return glowGainOut;\n \}\n\n // Transformations from RGB to other color representations\n float rgb_2_hue( float3 rgb) \n \{\n // Returns a geometric hue angle in degrees (0-360) based on RGB values.\n // For neutral colors, hue is undefined and the function will return a quiet NaN value.\n float hue;\n if (rgb.x == rgb.y && rgb.y == rgb.z) \{\n hue = 0.; // RGB triplets where RGB are equal have an undefined hue\n \} else \{\n hue = (180./3.14159265359) * atan2( sqrt(3)*(rgb.y-rgb.z), 2*rgb.x-rgb.y-rgb.z);\n \}\n if (hue < 0.) hue = hue + 360.;\n return hue;\n \}\n\n float center_hue( float hue, float centerH) \{\n float hueCentered = hue - centerH;\n if (hueCentered < -180.) hueCentered = hueCentered + 360.;\n else if (hueCentered > 180.) hueCentered = hueCentered - 360.;\n return hueCentered;\n \}\n\n float cubic_basis_shaper( float x, float w) \{\n float M\[4]\[4] = \{ \{ -1./6, 3./6, -3./6, 1./6 \},\n \{ 3./6, -6./6, 3./6, 0./6 \},\n \{ -3./6, 0./6, 3./6, 0./6 \},\n \{ 1./6, 4./6, 1./6, 0./6 \} \};\n \n double knots\[5] = \{ -w/2.,\n -w/4.,\n 0.,\n w/4.,\n w/2. \};\n float y = 0;\n if ((x > knots\[0]) && (x < knots\[4])) \{ \n float knot_coord = (x - knots\[0]) * 4./w; \n int j = knot_coord;\n float t = knot_coord - j;\n float monomials\[4] = \{ t*t*t, t*t, t, 1. \};\n // (if/else structure required for compatibility with CTL < v1.5.)\n if ( j == 3) \{\n y = monomials\[0] * M\[0]\[0] + monomials\[1] * M\[1]\[0] + \n monomials\[2] * M\[2]\[0] + monomials\[3] * M\[3]\[0];\n \} else if ( j == 2) \{\n y = monomials\[0] * M\[0]\[1] + monomials\[1] * M\[1]\[1] + \n monomials\[2] * M\[2]\[1] + monomials\[3] * M\[3]\[1];\n \} else if ( j == 1) \{\n y = monomials\[0] * M\[0]\[2] + monomials\[1] * M\[1]\[2] + \n monomials\[2] * M\[2]\[2] + monomials\[3] * M\[3]\[2];\n \} else if ( j == 0) \{\n y = monomials\[0] * M\[0]\[3] + monomials\[1] * M\[1]\[3] + \n monomials\[2] * M\[2]\[3] + monomials\[3] * M\[3]\[3];\n \} else \{\n y = 0.0;\n \}\n \}\n return y * 3/2.;\n \}\n\n\n void process() \{\n float3 aces = float3(src().x, src().y, src().z);\n\n float saturation = rgb_2_saturation(aces);\n\n // --- Red modifier --- //\n float hue = rgb_2_hue( aces);\n float centeredHue = center_hue( hue, RRT_RED_HUE);\n float hueWeight = cubic_basis_shaper( centeredHue, RRT_RED_WIDTH);\n\n if ( invert == 0 ) \{\n aces.x = aces.x + hueWeight * saturation * (RRT_RED_PIVOT - aces.x) * (1. - RRT_RED_SCALE);\n \} \n else \{ // invert red modifier: note that this is not mathematically perfect\n float minChan;\n if (centeredHue < 0) \{ // min_f3(aces) = aces\[1] (i.e. magenta-red)\n minChan = aces.y;\n \} else \{ // min_f3(aces) = aces\[2] (i.e. yellow-red)\n minChan = aces.z;\n \}\n float a = hueWeight * (1. - RRT_RED_SCALE) - 1.;\n float b = aces.x - hueWeight * (RRT_RED_PIVOT + minChan) * (1. - RRT_RED_SCALE);\n float c = hueWeight * RRT_RED_PIVOT * minChan * (1. - RRT_RED_SCALE);\n aces.x = ( -b - sqrt( float(b * b - 4. * a * c )) ) / ( 2. * a);\n \}\n\n //dst() = float4(aces.x, aces.y, aces.z, src().w);\n dst() = float4(hue/360.0, centeredHue/360.0, aces.x, hueWeight);\n \}\n\};" | |
rebuild "" | |
ACES_rrt_sweeteners_RRT_RED_SCALE 1 | |
ACES_rrt_sweeteners_RRT_RED_PIVOT 1 | |
ACES_rrt_sweeteners_RRT_RED_WIDTH 360 | |
rebuild_finalise "" | |
name rrt_sweetener_red_modifier1 | |
xpos 1967 | |
ypos 462 | |
} | |
Merge2 { | |
inputs 3+1 | |
operation screen | |
name Merge2 | |
xpos 1858 | |
ypos 535 | |
} | |
Group { | |
name SoftCompress1 | |
label "direction: \[knob direction]" | |
xpos 1858 | |
ypos 595 | |
disable true | |
addUserKnob {20 SoftCompress} | |
addUserKnob {7 slope t "The softness of the compressing curve's slope. 0 is a clamp."} | |
slope 1 | |
addUserKnob {7 threshold t "The minimum threshold. Values below this number will not be affected." R 0 2} | |
threshold 0.75 | |
addUserKnob {7 limit t "The asymptotic maximum value. For example, the value that inf becomes." R 0 2} | |
limit 1 | |
addUserKnob {4 direction M {forward inverse}} | |
} | |
Input { | |
inputs 0 | |
name InputMask | |
xpos -590 | |
ypos 806 | |
number 1 | |
} | |
Input { | |
inputs 0 | |
name Input | |
xpos -810 | |
ypos 494 | |
} | |
Dot { | |
name Dot1 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -776 | |
ypos 546 | |
} | |
set Nce8a300 [stack 0] | |
Expression { | |
temp_name0 sl | |
temp_expr0 "(1-slope)*(max(0, limit-threshold))" | |
temp_name1 th | |
temp_expr1 threshold | |
temp_name2 lim | |
temp_expr2 "max(0, (limit-threshold))" | |
expr0 "r < th + sl ? r : (pow(sl, 2) + 2 * sl * th - 2 * sl * r + pow(th, 2) - th * r + lim * r)/(th + lim - r)" | |
expr1 "g < th + sl ? g : (pow(sl, 2) + 2 * sl * th - 2 * sl * g + pow(th, 2) - th * g + lim * g)/(th + lim - g)" | |
expr2 "b < th + sl ? b : (pow(sl, 2) + 2 * sl * th - 2 * sl * b + pow(th, 2) - th * b + lim * b)/(th + lim - b)" | |
expr3 "a < th + sl ? a : (pow(sl, 2) + 2 * sl * th - 2 * sl * a + pow(th, 2) - th * a + lim * a)/(th + lim - a)" | |
name SoftCompress_inverse | |
xpos -702 | |
ypos 636 | |
addUserKnob {20 Params_tab l Params} | |
addUserKnob {7 slope} | |
slope {{parent.slope}} | |
addUserKnob {7 threshold R 0 25} | |
threshold {{parent.threshold}} | |
addUserKnob {7 limit R 0 25} | |
limit {{parent.limit}} | |
} | |
push $Nce8a300 | |
Expression { | |
temp_name0 sl | |
temp_expr0 "(1-slope)*(max(0, limit-threshold))" | |
temp_name1 th | |
temp_expr1 "min(threshold, limit)" | |
temp_name2 lim | |
temp_expr2 "max(0, (limit-threshold))" | |
expr0 "r < th + sl ? r : th + (-1 / ((r - th - sl) / (lim - sl) + 1) + 1) * (lim - sl) + sl" | |
expr1 "g < th + sl ? g : th + (-1 / ((g - th - sl) / (lim - sl) + 1) + 1) * (lim - sl) + sl" | |
expr2 "b < th + sl ? b : th + (-1 / ((b - th - sl) / (lim - sl) + 1) + 1) * (lim - sl) + sl" | |
expr3 "a < th + sl ? a : th + (-1 / ((a - th - sl) / (lim - sl) + 1) + 1) * (lim - sl) + sl" | |
name SoftCompress | |
xpos -921 | |
ypos 639 | |
addUserKnob {20 Params_tab l Params} | |
addUserKnob {7 slope} | |
slope {{parent.slope}} | |
addUserKnob {7 threshold R 0 25} | |
threshold {{parent.threshold}} | |
addUserKnob {7 limit R 0 25} | |
limit {{parent.limit}} | |
} | |
Switch { | |
inputs 2 | |
which {{parent.direction}} | |
name SwitchDirection | |
xpos -810 | |
ypos 709 | |
} | |
push $Nce8a300 | |
Dot { | |
name Dot2 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -996 | |
ypos 546 | |
} | |
Dot { | |
name Dot3 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -996 | |
ypos 810 | |
} | |
NodeWrapper { | |
inputs 2+1 | |
channels rgba | |
name NodeWrapper1 | |
xpos -810 | |
ypos 806 | |
} | |
Output { | |
name Output | |
xpos -810 | |
ypos 926 | |
} | |
end_group | |
Fill { | |
name Fill1 | |
xpos 1858 | |
ypos 649 | |
disable true | |
} | |
Gamma { | |
channels rgba | |
name Gamma1 | |
xpos 1858 | |
ypos 699 | |
} | |
Expression { | |
expr0 r | |
expr1 g | |
expr2 b | |
expr3 "1/(wp-bp) * a - 1/(wp-bp) * bp" | |
name WhitepointBlackpoint3 | |
xpos 1858 | |
ypos 745 | |
addUserKnob {20 User} | |
addUserKnob {7 wp R 0 2} | |
wp 0.48 | |
addUserKnob {7 bp} | |
} | |
Clamp { | |
channels rgba | |
name Clamp1 | |
xpos 1858 | |
ypos 781 | |
disable true | |
} | |
Merge2 { | |
operation stencil | |
bbox B | |
name Merge1 | |
xpos 1858 | |
ypos 866 | |
} | |
push $Nc0e1360 | |
Dot { | |
name Dot3 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 2258 | |
ypos 402 | |
} | |
set Nc8bdbd0 [stack 0] | |
Dot { | |
name Dot4 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 2258 | |
ypos 469 | |
} | |
set Nc8c2b40 [stack 0] | |
Dot { | |
name Dot12 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 2404 | |
ypos 469 | |
} | |
set Nc8c79a0 [stack 0] | |
Dot { | |
name Dot5 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 2734 | |
ypos 469 | |
} | |
Dot { | |
name Dot13 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 2734 | |
ypos 565 | |
} | |
set Nc225a80 [stack 0] | |
Expression { | |
expr3 "max(0, (r-g))/r" | |
name Expression4 | |
label "magenta sat" | |
xpos 2700 | |
ypos 610 | |
} | |
push $Nc225a80 | |
Expression { | |
expr3 "max(0, (g-b))/g" | |
name Expression10 | |
label "green sat" | |
xpos 2911 | |
ypos 610 | |
} | |
push $Nc225a80 | |
Expression { | |
expr3 "max(0, (r-b))/r" | |
name Expression7 | |
label "yellow sat" | |
xpos 2808 | |
ypos 610 | |
} | |
push $Nc225a80 | |
Expression { | |
temp_name0 w | |
temp_expr0 b | |
temp_name1 z | |
temp_expr1 r | |
expr3 "max(0, (w-z))/w" | |
name Expression9 | |
label "blue sat" | |
xpos 2592 | |
ypos 610 | |
} | |
push $Nc8c79a0 | |
Expression { | |
expr3 "max(0, (b-g))/b" | |
name Expression8 | |
label "blue magenta sat" | |
xpos 2484 | |
ypos 610 | |
} | |
push $Nc8c79a0 | |
Expression { | |
expr3 "max(0, (g-r))/g" | |
name Expression6 | |
label "cyan sat" | |
xpos 2370 | |
ypos 610 | |
} | |
StickyNote { | |
inputs 0 | |
name StickyNote1 | |
tile_color 0x40454aff | |
label "<left><pre>\nUse sigmoid shaper hue keyer function from \nRRT red modifier to adjust hue angles independently" | |
note_font_size 18 | |
xpos 1703 | |
ypos 325 | |
} | |
push $Nc8c2b40 | |
Expression { | |
temp_name0 lum | |
temp_expr0 max(r,g,b) | |
temp_name1 minpx | |
temp_expr1 min(r,g,b) | |
temp_name2 sat | |
temp_expr2 (lum-minpx)/lum | |
expr0 0 | |
expr1 0 | |
expr2 0 | |
expr3 sat | |
name SatMask | |
xpos 2224 | |
ypos 611 | |
} | |
push $Nc8bdbd0 | |
Dot { | |
name Dot60 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 2159 | |
ypos 508 | |
} | |
set Na087120 [stack 0] | |
Expression { | |
expr3 "(max( max(r,g,b), 1e-10) - max( min(r,g,b), 1e-10)) / max( max(r,g,b), 1e-2)" | |
name RGB_to_Saturation | |
xpos 2015 | |
ypos 576 | |
} | |
push $Na087120 | |
Expression { | |
temp_name1 hue | |
temp_expr1 "( atan2( sqrt(3) * (g-b), 2 * r - g - b) / pi +1 ) / 2" | |
expr3 hue | |
name RGB_to_Hue | |
xpos 2125 | |
ypos 576 | |
} | |
ColorLookup { | |
inputs 0 | |
lut {master {curve L 0 1 s0} | |
red {} | |
green {} | |
blue {} | |
alpha {}} | |
name ColorLookup2 | |
label "smoothstep - \\n changes falloff, but doesn't really help" | |
xpos 1190 | |
ypos 551 | |
disable true | |
} | |
StickyNote { | |
inputs 0 | |
name StickyNote2 | |
tile_color 0x40454aff | |
label "<left><pre>\nUse different hue saturation masks to control different hue angles\nindependently. Might be better done in the desaturation algorithm" | |
note_font_size 18 | |
xpos 2298 | |
ypos 383 | |
} | |
push $Nd3ace90 | |
push $Nd3b1fe0 | |
HueShift { | |
color {1 1 1} | |
hue_rotation -45 | |
name HueShift1 | |
xpos 1272 | |
ypos 664 | |
} | |
Expression { | |
inputs 1+1 | |
temp_name0 lum | |
temp_expr0 "max(r*weight.x, g*weight.y, b*weight.z)" | |
temp_name1 lum2 | |
temp_expr1 (g+b)/2 | |
expr0 (r-lum)*saturation+lum | |
expr1 (g-lum)*saturation+lum | |
expr2 (b-lum)*saturation+lum | |
expr3 a | |
invert_mask true | |
name Saturation4 | |
label "cmy weighted" | |
xpos 1120 | |
ypos 735 | |
dope_sheet true | |
addUserKnob {20 User} | |
addUserKnob {13 weight} | |
weight {{parent.r_weight} {parent.g_weight} {parent.b_weight}} | |
addUserKnob {7 saturation} | |
saturation {{1-parent.desat}} | |
} | |
HueShift { | |
hue_rotation {{-parent.HueShift1.hue_rotation}} | |
name HueShift2 | |
xpos 1272 | |
ypos 822 | |
} | |
push $Nd3ace90 | |
push $Nd3b1fe0 | |
Expression { | |
inputs 1+1 | |
temp_name0 lum | |
temp_expr0 "max(r*weight.x, g*weight.y, b*weight.z)" | |
expr0 (r-lum)*saturation+lum | |
expr1 (g-lum)*saturation+lum | |
expr2 (b-lum)*saturation+lum | |
expr3 a | |
invert_mask true | |
name Saturation1 | |
label "rgb weighted" | |
xpos 730 | |
ypos 741 | |
dope_sheet true | |
addUserKnob {20 User} | |
addUserKnob {13 weight} | |
weight {{parent.r_weight} {parent.g_weight} {parent.b_weight}} | |
addUserKnob {7 saturation} | |
saturation {{1-parent.desat}} | |
} | |
Output { | |
name Output | |
xpos 730 | |
ypos 927 | |
} | |
StickyNote { | |
inputs 0 | |
name StickyNote3 | |
tile_color 0x40454aff | |
label "<left><pre>\nRotate hue 45 degrees before desat\nmakes rgb weights cmy weights\nI wonder how we could have both cmy + rgb weights?" | |
note_font_size 18 | |
xpos 1249 | |
ypos 711 | |
} | |
end_group | |
Switch { | |
inputs 2 | |
which 1 | |
name Switch2 | |
xpos 3700 | |
ypos 110 | |
disable true | |
} | |
Dot { | |
name Dot58 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 3734 | |
ypos 234 | |
} | |
set Ncf0e990 [stack 0] | |
Group { | |
name OutOfGamut2 | |
xpos 3275 | |
ypos 230 | |
} | |
Input { | |
inputs 0 | |
name Input | |
xpos 706 | |
ypos -120 | |
} | |
Dot { | |
name Dot56 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 740 | |
ypos -59 | |
} | |
set Nabac500 [stack 0] | |
Expression { | |
expr3 "(r < 0 || g < 0 || b < 0) ? 1 : 0" | |
name Expression1 | |
label "Out of Gamut" | |
xpos 596 | |
ypos -20 | |
} | |
Premult { | |
name Premult1 | |
xpos 596 | |
ypos 32 | |
} | |
push $Nabac500 | |
Fill { | |
color {0.18 0.18 0.18 1} | |
name Fill1 | |
xpos 706 | |
ypos -16 | |
} | |
Merge2 { | |
inputs 2 | |
bbox B | |
name Merge1 | |
xpos 706 | |
ypos 32 | |
} | |
Output { | |
name Output1 | |
xpos 706 | |
ypos 152 | |
} | |
end_group | |
push $Nf4560b0 | |
push 0 | |
push 0 | |
push 0 | |
push 0 | |
push 0 | |
push $Ncf0e990 | |
Group { | |
name PlotChromaticity1 | |
xpos 3700 | |
ypos 317 | |
addUserKnob {20 PlotGamut_tab l PlotGamut} | |
addUserKnob {6 plot_input l " <b>Plot Input Pixels" t "Enable plotting of the input pixels" +STARTLINE} | |
plot_input true | |
addUserKnob {41 input_gamut t "Set the gamut that the input colors are encoded in" T GamutToXYZ3.gamut} | |
addUserKnob {4 diagram t "Choose the type of chromaticity diagram" M {"CIE 1931 xy Chromaticity Diagram" "CIE 1976 u' v' Uniform Chromaticity Scale Diagram" ""}} | |
addUserKnob {4 plot_type l "plot type" t "Choose the type of plot rendering.\n\nBlinkScript uses a custom blinkscript plotting node which is very fast.\n\nPositionToPoints renders each pixels as a point in 3D space and renders it through a ScanlineRender node. Much slower and more buggy, but can be useful for visualizing the 3 dimensional aspect of the color data." M {BlinkScript "PositionToPoints + ScanlineRender"}} | |
addUserKnob {6 enable_sample_color l "enable sample color" t "Enable plotting of the sampled color below" +STARTLINE} | |
addUserKnob {41 sample_color l "sample color" t "sample and plot selected color" T SampleColor.color} | |
addUserKnob {26 ""} | |
addUserKnob {26 plot_dimensions_label l " " T "<b>Plot Dimensions"} | |
addUserKnob {7 right_margin l "right margin" R 1 1.5} | |
right_margin 1.1 | |
addUserKnob {7 left_margin l "left margin" R 0 0.2} | |
left_margin 0.12 | |
addUserKnob {41 output_format l format T Plot_Input.format} | |
addUserKnob {6 resample_input l "resample input" t "scale down input - can help speed up plotting for high resolution inputs." +STARTLINE} | |
addUserKnob {3 input_width l " " t "width to resample input to" -STARTLINE} | |
input_width 2048 | |
addUserKnob {6 map_overlays_to_input_gamut l "map overlays to input gamut" t "This maps the overlays like the spectral locus, pointer's gamut, and the gamut overlay to the working gamut instead of keeping them as XYZ.\n\nFor example if the input gamut is ACEScg, these overlays will be mapped to that. Note that this can cause most of the overlays to be negative or highly saturated which might harm the visual appearance." +STARTLINE} | |
addUserKnob {26 ""} | |
addUserKnob {6 draw_axis l " <b> Coordinate Grid" t "Draw coordinate grid" +STARTLINE} | |
draw_axis true | |
addUserKnob {6 full_width_grid l "full width grid" t "Enable full width coordinate grid" +STARTLINE} | |
addUserKnob {41 plot_cie_xy_axis_color l "axis color" T Plot_SpectralLocus_and_Axis.plot_cie_xy_axis_color} | |
addUserKnob {41 plot_cie_xy_axis_hatch_color l "grid color" T Plot_SpectralLocus_and_Axis.plot_cie_xy_axis_hatch_color} | |
addUserKnob {26 ""} | |
addUserKnob {6 draw_spectral_locus l " <b> Spectral Locus" t "draw the spectrum locus: the boundary of color the human eye can see." +STARTLINE} | |
draw_spectral_locus true | |
addUserKnob {6 colorize_spectral_locus l "colorize spectral locus" +STARTLINE} | |
addUserKnob {41 spectral_locus_color l color T Fill2.color} | |
addUserKnob {26 ""} | |
addUserKnob {6 draw_gamut_overlay l " <b> Gamut Overlay" t "draw an overlay of a color gamut (choose gamut below)" +STARTLINE} | |
draw_gamut_overlay true | |
addUserKnob {41 gamut_overlay l gamut t "choose gamut to overlay" T GamutToXYZ_OVERLAY.gamut} | |
addUserKnob {4 style t "Choose the style to display the gamut plot" M {boundary dots grid}} | |
addUserKnob {4 distribution t "Which chromaticity space should the overlays be constructed in? \n\nYxy is familiar, but not very perceptually uniform.\n\nLu'v' is designed to be more perceptually uniform." -STARTLINE M {"CIE Yxy" "CIE Lu'v'"}} | |
addUserKnob {7 density t "Density of the grid or points if style is not boundary" R 10 100} | |
density 55 | |
addUserKnob {7 opacity_gamut_overlay l opacity R 0.1 1} | |
opacity_gamut_overlay 0.5 | |
addUserKnob {6 colorize_gamut_boundary l "colorize gamut boundary" t "use a constant color for the gamut overlay instead of the spectral boundary colors." +STARTLINE} | |
colorize_gamut_boundary true | |
addUserKnob {41 overlay_gamut_color l color t "gamut boundary fill color, if enabled." T Fill1.color} | |
addUserKnob {26 ""} | |
addUserKnob {6 enable_pointers_gamut l " <b>Pointers Gamut" t "Enable Pointer's gamut overlay" +STARTLINE} | |
addUserKnob {6 enable_pointer_samples l "enable samples" t "show the individual pointer gamut samples" +STARTLINE} | |
addUserKnob {6 colorize_pointers_gamut l "colorize pointers gamut" t "set the pointer's gamut colors to a constant" +STARTLINE} | |
addUserKnob {41 color T ColorizePointers.color} | |
} | |
BackdropNode { | |
inputs 0 | |
name BackdropNode1 | |
tile_color 0x222222ff | |
label "Draw Gamut" | |
note_font_size 42 | |
xpos -2165 | |
ypos -325 | |
bdwidth 585 | |
bdheight 1462 | |
} | |
BackdropNode { | |
inputs 0 | |
name BackdropNode2 | |
tile_color 0x222222ff | |
label "Draw Spectral Locus" | |
note_font_size 42 | |
xpos -955 | |
ypos -321 | |
bdwidth 582 | |
bdheight 1458 | |
} | |
BackdropNode { | |
inputs 0 | |
name BackdropNode3 | |
tile_color 0x222222ff | |
label "Plot Input Pixels" | |
note_font_size 42 | |
xpos -222 | |
ypos -633 | |
bdwidth 797 | |
bdheight 2562 | |
} | |
BackdropNode { | |
inputs 0 | |
name BackdropNode4 | |
tile_color 0x202020ff | |
label "Pointer's Gamut" | |
note_font_size 48 | |
xpos -1535 | |
ypos -321 | |
bdwidth 554 | |
bdheight 1458 | |
} | |
BackdropNode { | |
inputs 0 | |
name BackdropNode5 | |
tile_color 0x3a3a3aff | |
label "Sample Input Color" | |
note_font_size 42 | |
xpos -237 | |
ypos 114 | |
bdwidth 415 | |
bdheight 639 | |
z_order 4 | |
} | |
Camera2 { | |
inputs 0 | |
display off | |
selectable false | |
translate {{0.5-parent.left_margin*0.3 x14 0.476000011} {0.5-parent.left_margin*0.3 x14 0.476000011} 3} | |
projection_mode orthographic | |
focal {{40/parent.right_margin}} | |
haperture 50 | |
vaperture 18 | |
far 10 | |
name Camera1 | |
xpos -708 | |
ypos 1329 | |
} | |
Input { | |
inputs 0 | |
name Input | |
xpos 180 | |
ypos -490 | |
} | |
AddChannels { | |
name AddChannels1 | |
xpos 180 | |
ypos -424 | |
} | |
Reformat { | |
type "to box" | |
box_width 2048 | |
box_height {{rint(input.width/box_width*input.height)}} | |
box_fixed true | |
box_pixel_aspect {{input.pixel_aspect}} | |
filter impulse | |
name ResampleInput | |
xpos 180 | |
ypos -370 | |
disable {{!parent.resample_input}} | |
} | |
Dot { | |
name Dot7 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 214 | |
ypos 244 | |
} | |
set Nfcb9c40 [stack 0] | |
Dot { | |
name Dot1 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 324 | |
ypos 244 | |
} | |
Group { | |
name GamutToXYZ3 | |
label "\[value gamut] to XYZ\n" | |
xpos 290 | |
ypos 392 | |
addUserKnob {20 GamutToXYZ_tab l GamutToXYZ} | |
addUserKnob {4 gamut t "Choose gamut" M {XYZ ACES ACEScg "Filmlight E-Gamut" Rec709 Rec2020 P3D60 P3D65 P3DCI ArriAlexaWideGamut "AdobeRGB\t" AdobeWideGamutRGB ROMM RIMM ERIMM ProPhotoRGB REDDRAGONcolor REDDRAGONcolor2 REDcolor REDcolor2 REDcolor3 REDcolor4 REDWideGamutRGB GoProProtune CanonCinemaGamut SonySGamut SonySGamut3Cine PanasonicVGamut ""}} | |
gamut ACEScg | |
addUserKnob {6 invert +STARTLINE} | |
addUserKnob {26 ""} | |
addUserKnob {26 chromaticity_coordinates_label l " " T "<b>Chromaticity Coordinates</b>"} | |
addUserKnob {41 rxy T ColorMatrix.rxy} | |
addUserKnob {41 gxy T ColorMatrix.gxy} | |
addUserKnob {41 bxy T ColorMatrix.bxy} | |
addUserKnob {41 wxy T ColorMatrix.wxy} | |
addUserKnob {41 matrix T ColorMatrix.matrix} | |
} | |
Input { | |
inputs 0 | |
name Input | |
xpos -40 | |
ypos -10 | |
} | |
ColorMatrix { | |
matrix { | |
{{curve(which) 1 0.9525524378 0.6624541879 0.7053968906 0.4123907983 0.6369580626 0.5049495697 0.4865709841 0.4451698363 0.6380076408 0.5766690373 0.7165006995 0.797760427 0.797760427 0.797760427 0.7976718545 0.5070186853 0.4462202489 0.4300414324 0.4581649601 0.4878340662 0.4517004192 0.7352752686 0.5022571683 0.7160496712 0.7064827085 0.5990839601 0.6796444654} {curve(which) 0 0 0.1340042055 0.1640413404 0.3575843275 0.1446169019 0.2646814585 0.2656676769 0.2771343887 0.2147038579 0.1855582297 0.1010205746 0.1351858526 0.1351858526 0.1351858526 0.1351878047 0.3587769568 0.3157556653 0.3700728714 0.3832037449 0.3432727158 0.3178463876 0.06860940903 0.2929667532 0.1296834797 0.1288010478 0.2489254922 0.1522114277} {curve(which) 0 9.367863095e-05 0.1561876982 0.08101774752 0.180480808 0.1688809693 0.1830150485 0.1982172877 0.1722826511 0.09774444997 0.1882286519 0.1467743814 0.03134934977 0.03134934977 0.03134934977 0.03133957833 0.0868505761 0.190669477 0.152531758 0.1112773567 0.1215386018 0.1830992699 0.1465712637 0.1552320272 0.1047228053 0.1151721701 0.1024464965 0.1186000481}} | |
{{curve(which) 0 0.3439664543 0.2722287476 0.2801307142 0.2126390189 0.2627002299 0.237623319 0.2289745659 0.209491685 0.2919537723 0.2973450124 0.258728236 0.2880711257 0.2880711257 0.2880711257 0.2880405784 0.2207257152 0.1942579001 0.2022213936 0.1694435924 0.2289056629 0.2119505703 0.2866941094 0.1387997568 0.2612613738 0.2709796727 0.2150758505 0.2606855333} {curve(which) 1 0.7281661034 0.6740817428 0.8202066422 0.7151686549 0.6779980659 0.6891706586 0.6917385459 0.7215952873 0.8238410354 0.6273635626 0.7246823311 0.7118432522 0.7118432522 0.7118432522 0.7118694782 0.839184761 0.7385566831 0.7585275769 0.8648257852 0.7808576822 0.7230190039 0.8429791331 0.910841465 0.8696421385 0.786606431 0.8850684762 0.7748944759} {curve(which) 0 -0.07213255018 0.05368951708 -0.1003373638 0.07219231874 0.05930171534 0.07320601493 0.07928691059 0.06891305745 -0.1157948226 0.07529145479 0.01658944227 8.565396274e-05 8.565396274e-05 8.565396274e-05 8.991353388e-05 -0.05991046131 0.06718540192 0.03925102949 -0.03426937759 -0.009763340466 0.06503042579 -0.1296732277 -0.04964122549 -0.1309035122 -0.05758608505 -0.1001443192 -0.03558001295}} | |
{{curve(which) 0 -3.863927134e-08 -0.005574660841 -0.1037815213 0.01933082007 0 0 0 0 0.0027982709 0.02703136392 -2.906408625e-08 -3.236030111e-08 -3.236030111e-08 -3.236030111e-08 0 -0.0544523783 -0.04792318866 -0.0176958181 -0.1061859056 -0.02100777067 -0.01945115253 -0.07968087494 0.07801423222 -0.009676366113 -0.009677864611 -0.03206583485 -0.009310216643} {curve(which) 0 0 0.004060741514 -0.07290724665 0.1191947311 0.0280726999 0.0449459292 0.04511339962 0.04706057906 -0.06703422964 0.07068887353 0.05121183768 1.2621717e-08 1.2621717e-08 1.2621717e-08 -1.262213711e-08 -0.0003228379355 -0.0002844714036 0.08768811822 0.02554347552 0.01782695204 0.01650637016 -0.3473432064 -0.3148325086 -0.2364816219 0.004600019194 -0.02765839547 -0.004612449091} {curve(which) 1 1.008825183 1.010339141 1.265746474 0.950532198 1.060985088 0.9638792276 1.043944359 0.9073553085 1.153293729 0.9913375378 0.7738927603 0.8251045942 0.8251045942 0.8251045942 0.8248898983 1.063571215 1.057001948 0.9388025999 1.089437366 1.01197505 1.011739731 1.51608181 1.325875998 1.335215807 1.094135642 1.148782015 1.102980375}} | |
} | |
invert {{parent.invert}} | |
name ColorMatrix | |
label "RGB to XYZ" | |
xpos -40 | |
ypos 33 | |
addUserKnob {20 Gamut} | |
addUserKnob {3 which} | |
which {{parent.gamut}} | |
addUserKnob {12 rxy +DISABLED} | |
rxy {{curve(which) 0 0.7347 0.713 0.8 0.64 0.708 0.68 0.68 0.68 0.684 0.64 0.7347 0.7347 0.7347 0.7347 0.734699 0.7530442228 0.7530444911 0.6997470013 0.8786825105 0.7011810359 0.7011805919 0.780308 0.69848046 0.74 0.73 0.766 0.73} {curve(which) 0 0.2653 0.293 0.3177 0.33 0.292 0.32 0.32 0.32 0.313 0.33 0.2653 0.2653 0.2653 0.2653 0.265301 0.3278305767 0.3278310295 0.3290469303 0.3249640074 0.3290141556 0.3290136991 0.304253 0.19302645 0.27 0.28 0.275 0.28}} | |
addUserKnob {12 gxy +DISABLED} | |
gxy {{curve(which) 0 0 0.165 0.18 0.3 0.17 0.265 0.265 0.265 0.221 0.21 0.1152 0.1596 0.1596 0.1596 0.159597 0.2995702285 0.2995704905 0.304264039 0.3008887144 0.3006003047 0.3006003955 0.121595 0.32955538 0.17 0.14 0.225 0.165} {curve(which) 0 1 0.83 0.9 0.6 0.797 0.69 0.69 0.69 0.848 0.71 0.8264 0.8404 0.8404 0.8404 0.840403 0.700699322 0.7006994156 0.6236411451 0.6790547558 0.6837888343 0.6837888243 1.493994 1.02459662 1.14 0.855 0.8 0.84}} | |
addUserKnob {12 bxy +DISABLED} | |
bxy {{curve(which) 0 0.0001 0.128 0.065 0.15 0.131 0.15 0.15 0.15 0.0861 0.15 0.1566 0.0366 0.0366 0.0366 0.036598 0.07964206674 0.1450115843 0.1349139613 0.09539869461 0.1081544556 0.1453319462 0.095612 0.10844263 0.08 0.1 0.089 0.1} {curve(which) 0 -0.077 0.044 -0.0805 0.06 0.046 0.06 0.06 0.06 -0.102 0.06 0.0177 0.0001 0.0001 0.0001 0.000105 -0.05493795109 0.05109712509 0.03471744128 -0.02937932683 -0.008688175787 0.05161680362 -0.084589 -0.03467857 -0.1 -0.05 -0.087 -0.03}} | |
addUserKnob {12 wxy +DISABLED} | |
wxy {{curve(which) 0.33333 0.32168 0.32168 0.3127 0.3127 0.3127 0.32168 0.3127 0.314 0.3127 0.3127 0.3457 0.3457 0.3457 0.3457 0.345704 0.3216831877 0.3216832104 0.3216832894 0.3216832894 0.3216832104 0.3216832894 0.3127 0.3127 0.3127 0.3127 0.3127 0.3127} {curve(which) 0.33333 0.33767 0.33767 0.329 0.329 0.329 0.33767 0.329 0.351 0.329 0.329 0.3585 0.3585 0.3585 0.3585 0.35854 0.337673316 0.3376736101 0.3376734472 0.3376734472 0.3376736101 0.3376734472 0.329 0.329 0.329 0.329 0.329 0.329}} | |
} | |
Output { | |
name Output | |
xpos -40 | |
ypos 86 | |
} | |
end_group | |
Colorspace { | |
colorspace_in CIE-XYZ | |
primary_in "Adobe (1998)" | |
colorspace_out CIE-Yxy | |
name Colorspace2 | |
label "\[value colorspace_in] -> \[value colorspace_out]" | |
xpos 290 | |
ypos 440 | |
} | |
Expression { | |
expr0 r | |
expr1 "4*g / ( -2*g + 12*b + 3)" | |
expr2 "9*b / ( -2*g + 12*b + 3)" | |
name Expression4 | |
label "CIE Yxy to CIELuv" | |
xpos 290 | |
ypos 512 | |
disable {{!parent.diagram}} | |
} | |
Dot { | |
name Dot13 | |
label " Pos" | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 324 | |
ypos 618 | |
} | |
set Nf015710 [stack 0] | |
push $Nfcb9c40 | |
Dot { | |
name Dot16 | |
label " Col" | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 214 | |
ypos 522 | |
} | |
set Nf01a7f0 [stack 0] | |
Group { | |
inputs 2 | |
name PlotPoints2 | |
xpos 290 | |
ypos 676 | |
addUserKnob {20 User} | |
addUserKnob {41 detail l "point detail" T PositionToPoints1.detail} | |
addUserKnob {41 pointSize l "point size" T PositionToPoints1.pointSize} | |
} | |
Input { | |
inputs 0 | |
name Inputpos | |
xpos 510 | |
ypos 588 | |
number 1 | |
} | |
Input { | |
inputs 0 | |
name Inputcol | |
xpos 400 | |
ypos 590 | |
} | |
add_layer {pos pos.red pos.green pos.blue pos.alpha} | |
ShuffleCopy { | |
inputs 2 | |
alpha alpha2 | |
black green | |
white blue | |
red2 red | |
green2 alpha | |
out2 pos | |
name ShuffleCopy1 | |
label "\[value in] | \[value in2] -> \[value out]" | |
xpos 400 | |
ypos 665 | |
} | |
PositionToPoints2 { | |
display textured | |
render_mode textured | |
P_channel pos | |
detail 0.1 | |
pointSize 2 | |
name PositionToPoints1 | |
xpos 400 | |
ypos 742 | |
} | |
Output { | |
name Output | |
xpos 404 | |
ypos 880 | |
} | |
end_group | |
Dot { | |
name Dot19 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 324 | |
ypos 1266 | |
} | |
Constant { | |
inputs 0 | |
format "256 256 0 0 256 256 1 square_256" | |
name Constant6 | |
xpos -1470 | |
ypos -58 | |
postage_stamp false | |
} | |
Reformat { | |
type "to box" | |
box_width 296 | |
box_height 2 | |
box_fixed true | |
name ReformatBox3 | |
xpos -1470 | |
ypos -9 | |
addUserKnob {20 User} | |
addUserKnob {7 bits l "" +STARTLINE R 0 16} | |
bits 12 | |
} | |
Ramp { | |
p0 {0 0} | |
p1 {{input.width} 0} | |
color {{input.width}} | |
name Ramp1 | |
xpos -1470 | |
ypos 38 | |
} | |
ColorLookup { | |
lut {master {} | |
red {curve 0.31 0.31 0.31 0.31 0.31 0.31 0.31 0.31 0.31 0.31 0.31 0.31 0.31 0.31 0.31 0.31 0.31 0.31 0.31 0.31 0.31 0.31 0.31 0.31 0.31 0.31 0.31 0.31 0.31 0.31 0.31 0.31 0.31 0.31 0.31 0.31 0.31 0.397 0.397 0.397 0.397 0.397 0.397 0.397 0.397 0.397 0.397 0.397 0.397 0.397 0.397 0.397 0.397 0.397 0.397 0.397 0.397 0.397 0.397 0.397 0.397 0.397 0.397 0.397 0.397 0.397 0.397 0.397 0.397 0.397 0.397 0.397 0.397 0.397 0.483 0.483 0.483 0.483 0.483 0.483 0.483 0.483 0.483 0.483 0.483 0.483 0.483 0.483 0.483 0.483 0.483 0.483 0.483 0.483 0.483 0.483 0.483 0.483 0.483 0.483 0.483 0.483 0.483 0.483 0.483 0.483 0.483 0.483 0.483 0.483 0.483 0.569 0.569 0.569 0.569 0.569 0.569 0.569 0.569 0.569 0.569 0.569 0.569 0.569 0.569 0.569 0.569 0.569 0.569 0.569 0.569 0.569 0.569 0.569 0.569 0.569 0.569 0.569 0.569 0.569 0.569 0.569 0.569 0.569 0.569 0.569 0.569 0.569 0.655 0.655 0.655 0.655 0.655 0.655 0.655 0.655 0.655 0.655 0.655 0.655 0.655 0.655 0.655 0.655 0.655 0.655 0.655 0.655 0.655 0.655 0.655 0.655 0.655 0.655 0.655 0.655 0.655 0.655 0.655 0.655 0.655 0.655 0.655 0.655 0.655 0.741 0.741 0.741 0.741 0.741 0.741 0.741 0.741 0.741 0.741 0.741 0.741 0.741 0.741 0.741 0.741 0.741 0.741 0.741 0.741 0.741 0.741 0.741 0.741 0.741 0.741 0.741 0.741 0.741 0.741 0.741 0.741 0.741 0.741 0.741 0.741 0.741 0.828 0.828 0.828 0.828 0.828 0.828 0.828 0.828 0.828 0.828 0.828 0.828 0.828 0.828 0.828 0.828 0.828 0.828 0.828 0.828 0.828 0.828 0.828 0.828 0.828 0.828 0.828 0.828 0.828 0.828 0.828 0.828 0.828 0.828 0.828 0.828 0.828 0.914 0.914 0.914 0.914 0.914 0.914 0.914 0.914 0.914 0.914 0.914 0.914 0.914 0.914 0.914 0.914 0.914 0.914 0.914 0.914 0.914 0.914 0.914 0.914 0.914 0.914 0.914 0.914 0.914 0.914 0.914 0.914 0.914 0.914 0.914 0.914 0.914} | |
green {curve 0.433 0.464 0.513 0.611 0.576 0.46 0.426 0.412 0.404 0.397 0.384 0.374 0.346 0.333 0.311 0.287 0.257 0.23 0.21 0.219 0.208 0.211 0.208 0.187 0.191 0.187 0.18 0.164 0.17 0.177 0.175 0.188 0.252 0.325 0.385 0.416 0.433 0.487 0.532 0.588 0.637 0.634 0.549 0.506 0.49 0.458 0.426 0.412 0.397 0.365 0.337 0.301 0.262 0.221 0.192 0.164 0.167 0.162 0.176 0.179 0.148 0.156 0.142 0.148 0.138 0.145 0.145 0.161 0.197 0.256 0.324 0.393 0.451 0.487 0.508 0.538 0.587 0.634 0.659 0.611 0.552 0.526 0.484 0.452 0.428 0.406 0.371 0.334 0.293 0.243 0.204 0.177 0.151 0.151 0.162 0.158 0.161 0.142 0.141 0.129 0.134 0.14 0.156 0.166 0.192 0.221 0.265 0.325 0.392 0.451 0.508 0.48 0.513 0.554 0.597 0.63 0.634 0.58 0.546 0.499 0.466 0.434 0.408 0.372 0.332 0.288 0.242 0.202 0.179 0.16 0.157 0.162 0.157 0.159 0.149 0.153 0.147 0.154 0.164 0.18 0.199 0.226 0.25 0.279 0.325 0.38 0.439 0.48 0.436 0.468 0.502 0.541 0.57 0.605 0.594 0.555 0.511 0.473 0.439 0.409 0.371 0.332 0.288 0.252 0.217 0.196 0.181 0.178 0.185 0.176 0.173 0.168 0.176 0.178 0.19 0.202 0.214 0.235 0.254 0.27 0.291 0.323 0.366 0.41 0.436 0.396 0.414 0.438 0.465 0.485 0.527 0.566 0.557 0.523 0.478 0.442 0.409 0.371 0.334 0.294 0.265 0.244 0.223 0.225 0.212 0.218 0.211 0.211 0.207 0.214 0.217 0.229 0.237 0.244 0.264 0.275 0.285 0.3 0.321 0.348 0.376 0.396 0.357 0.368 0.377 0.391 0.402 0.431 0.481 0.503 0.521 0.482 0.444 0.409 0.372 0.337 0.307 0.286 0.27 0.257 0.247 0.251 0.257 0.255 0.254 0.25 0.258 0.259 0.265 0.269 0.278 0.284 0.292 0.297 0.305 0.317 0.33 0.344 0.357 0.321 0.322 0.328 0.332 0.333 0.346 0.365 0.389 0.411 0.459 0.443 0.399 0.352 0.327 0.313 0.304 0.3 0.294 0.295 0.294 0.293 0.292 0.291 0.295 0.3 0.301 0.302 0.304 0.304 0.304 0.305 0.307 0.309 0.312 0.313 0.316 0.321} | |
blue {curve 0.26 0.281 0.298 0.306 0.342 0.365 0.39 0.381 0.392 0.416 0.413 0.43 0.448 0.446 0.433 0.425 0.419 0.394 0.362 0.328 0.305 0.298 0.286 0.247 0.26 0.219 0.199 0.168 0.178 0.14 0.11 0.084 0.104 0.158 0.18 0.225 0.26 0.235 0.26 0.28 0.298 0.327 0.372 0.395 0.417 0.43 0.435 0.455 0.488 0.479 0.521 0.522 0.515 0.49 0.436 0.383 0.331 0.295 0.282 0.258 0.219 0.208 0.179 0.168 0.141 0.129 0.106 0.094 0.095 0.112 0.127 0.165 0.199 0.235 0.226 0.258 0.28 0.298 0.316 0.361 0.399 0.427 0.446 0.461 0.482 0.52 0.521 0.553 0.563 0.573 0.524 0.454 0.389 0.33 0.295 0.266 0.247 0.214 0.195 0.168 0.178 0.142 0.14 0.128 0.129 0.126 0.131 0.144 0.167 0.199 0.226 0.238 0.266 0.289 0.31 0.329 0.351 0.395 0.428 0.453 0.475 0.494 0.533 0.542 0.568 0.584 0.576 0.53 0.451 0.385 0.331 0.299 0.266 0.245 0.22 0.206 0.184 0.174 0.167 0.166 0.166 0.173 0.172 0.165 0.172 0.187 0.208 0.238 0.258 0.28 0.3 0.321 0.343 0.362 0.391 0.427 0.458 0.482 0.503 0.546 0.554 0.573 0.582 0.546 0.499 0.431 0.375 0.33 0.304 0.275 0.254 0.234 0.225 0.212 0.209 0.206 0.203 0.21 0.215 0.212 0.204 0.208 0.214 0.231 0.258 0.277 0.294 0.31 0.328 0.348 0.372 0.397 0.427 0.462 0.487 0.51 0.544 0.558 0.559 0.556 0.503 0.444 0.402 0.355 0.329 0.309 0.289 0.275 0.26 0.254 0.245 0.245 0.241 0.238 0.249 0.249 0.245 0.241 0.242 0.246 0.258 0.277 0.295 0.305 0.315 0.327 0.339 0.359 0.39 0.421 0.461 0.491 0.515 0.54 0.546 0.522 0.478 0.429 0.393 0.368 0.345 0.325 0.313 0.303 0.295 0.286 0.284 0.279 0.277 0.274 0.277 0.277 0.28 0.276 0.273 0.274 0.279 0.285 0.295 0.311 0.314 0.316 0.32 0.323 0.331 0.346 0.367 0.397 0.468 0.513 0.494 0.425 0.388 0.372 0.348 0.336 0.331 0.326 0.32 0.316 0.314 0.312 0.309 0.321 0.32 0.319 0.305 0.317 0.316 0.316 0.315 0.316 0.317 0.319 0.321 0.311} | |
alpha {}} | |
name ColorLookup1 | |
label "Pointers Samples Yxy\nSource: https://www.rit.edu/cos/colorscience/rc_useful_data.php" | |
xpos -1470 | |
ypos 98 | |
} | |
BlackOutside { | |
name BlackOutside2 | |
xpos -1470 | |
ypos 179 | |
} | |
Crop { | |
box {0 0 {input.width} {height+1}} | |
reformat true | |
name Crop1 | |
xpos -1470 | |
ypos 227 | |
} | |
Dot { | |
name Dot12 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -1436 | |
ypos 282 | |
} | |
Constant { | |
inputs 0 | |
format "256 256 0 0 256 256 1 square_256" | |
name Constant1 | |
xpos -1250 | |
ypos -58 | |
postage_stamp false | |
} | |
Reformat { | |
type "to box" | |
box_width 8000.731495 | |
box_height 2 | |
box_fixed true | |
name ReformatBox2 | |
xpos -1250 | |
ypos -10 | |
addUserKnob {20 User} | |
addUserKnob {7 bits l "" +STARTLINE R 0 16} | |
bits 12 | |
} | |
Ramp { | |
p0 {0 0} | |
p1 {{input.width} 0} | |
color {{input.width}} | |
name Ramp2 | |
xpos -1250 | |
ypos 38 | |
} | |
ColorLookup { | |
lut {master {} | |
red {curve R 0.4830000103 x50 0.5045000315 0.5260000229 0.5475000143 0.5690000057 0.5904999971 0.6119999886 0.63349998 0.6549999714 0.6805312037 0.7087500095 0.7315937281 0.7409999967 0.7409999967 0.7409999967 0.7409999967 0.7409999967 0.75459373 0.7845000029 0.8144062757 0.8280000091 0.8280000091 0.8280000091 0.8280000091 0.8280000091 0.8009687662 0.74150002 0.6820312142 0.6549999714 0.6684374809 0.6980000138 0.7275624871 0.7409999967 0.7315937281 0.7087500095 0.6805312037 0.6549999714 0.629468739 0.6012499928 0.5784062743 0.5690000057 0.5690000057 0.5690000057 0.5690000057 0.5690000057 0.5690000057 0.5690000057 0.5690000057 0.5690000057 0.5555624962 0.5260000229 0.4964375198 0.4830000103 0.4830000103 0.4830000103 0.4830000103 0.4830000103 0.4830000103 0.4830000103 0.4830000103 0.4830000103 0.4964375198 0.5260000229 0.5555624962 0.5690000057 0.5690000057 0.5690000057 0.5690000057 0.5690000057 0.5690000057 0.5690000057 0.5690000057 0.5690000057 0.5690000057 0.5690000057 0.5690000057 0.5690000057 0.5690000057 0.5690000057 0.5690000057 0.5690000057 0.5653046966 0.5555624962 0.5417890549 0.5260000229 0.5102109313 0.4964375198 0.4866953194 0.4830000103 0.4830000103 0.4830000103 0.4830000103 0.4830000103 0.4830000103 0.4830000103 0.4830000103 0.4830000103 0.4830000103 0.4830000103 0.4830000103 0.4830000103 0.4695625007 0.4400000274 0.4104375243 0.3970000148 0.3970000148 0.3970000148 0.3970000148 0.3970000148 0.3970000148 0.3970000148 0.3970000148 0.3970000148 0.3970000148 0.3970000148 0.3970000148 0.3970000148 0.3970000148 0.3970000148 0.3970000148 0.3970000148 0.3970000148 0.3970000148 0.3970000148 0.3970000148 0.3970000148 0.3970000148 0.3970000148 0.3970000148 0.3970000148 0.3970000148 0.3970000148 0.3970000148 0.3970000148 0.3970000148 0.3970000148 0.3970000148 0.4104375243 0.4400000274 0.4695625007 0.4830000103 0.4830000103 0.4830000103 0.4830000103 0.4830000103 0.4830000103 0.4830000103 0.4830000103 0.4830000103 0.4830000103 0.4830000103 0.4830000103 0.4830000103 0.4830000103 0.4830000103 0.4830000103 0.4830000103 0.4830000103 0.4830000103 0.4830000103 0.4830000103} | |
green {curve R 0.6589999795 x50 0.6536288857 0.6479062438 0.6414804459 0.6340000033 0.6249843836 0.6147499681 0.6041406393 0.5939999819 0.5844687223 0.575124979 0.5659687519 0.5569999814 0.5484530926 0.5402500033 0.5319218636 0.5230000019 0.5131718516 0.5027499795 0.4922031164 0.4819999933 0.4722187519 0.4626249969 0.4532187581 0.4440000057 0.4351093769 0.4265000224 0.4178906381 0.4090000093 0.3997343779 0.3902499974 0.380640626 0.3709999919 0.3614374995 0.3518749774 0.3421249986 0.3319999874 0.321398437 0.3104375005 0.2992577851 0.2879999876 0.2764999866 0.2647500038 0.2531249821 0.2419999987 0.2312265635 0.2206875086 0.2108047009 0.202000007 0.1947187632 0.1886250079 0.1829687506 0.1770000011 0.1693515629 0.1608124971 0.1538671851 0.1509999931 0.1509999931 0.1509999931 0.1509999931 0.1509999931 0.1527187377 0.1564999968 0.1602812558 0.1620000005 0.1620000005 0.1620000005 0.1620000005 0.1620000005 0.1612187475 0.1595000029 0.1577812582 0.1570000052 0.1573124975 0.1579999924 0.1586875021 0.1589999944 0.1575781256 0.1543750018 0.1509843767 0.1490000039 0.1485625058 0.1484999955 0.1484375 0.1480000019 0.1467812508 0.1449999958 0.1432187557 0.1420000046 0.1415625066 0.1414999962 0.1414375007 0.1410000026 0.1397656202 0.1378750056 0.1357968748 0.1340000033 0.1323750019 0.1307500005 0.1295000017 0.1289999932 0.130031243 0.1324999928 0.1354687512 0.1379999965 0.1402187496 0.1424999982 0.1442812532 0.1449999958 0.1449999958 0.1449999958 0.1449999958 0.1449999958 0.1464921832 0.1503124982 0.1554765552 0.1609999985 0.1673984379 0.1749375015 0.1822578013 0.1879999936 0.1906718612 0.1913749874 0.1926406175 0.1969999969 0.2064140588 0.2199375033 0.2357421964 0.2520000041 0.2688750029 0.2871249914 0.3058125079 0.324000001 0.3417187631 0.359375 0.3765937686 0.3930000067 0.4082968831 0.4227499962 0.4368281364 0.451000005 0.4659531415 0.4812500179 0.4956718981 0.5080000162 0.5169296861 0.5234375 0.5297265649 0.5379999876 0.5491171479 0.5618124604 0.5751015544 0.5879999995 0.6009531021 0.6142500043 0.6266719103 0.6370000243 0.6447148919 0.6505312324 0.655082047 0.6589999795} | |
blue {curve R 0.3160000145 x50 0.3244570494 0.3330312669 0.3418398499 0.351000011 0.3607422113 0.3709374964 0.3811640739 0.3910000026 0.4003046751 0.4093124866 0.4181640446 0.4269999862 0.4359609187 0.4449374974 0.453695327 0.4620000124 0.4697890878 0.4771875143 0.4842422009 0.4909999967 0.4971874952 0.5028749704 0.5086249709 0.5149999857 0.5227031112 0.53125 0.5394218564 0.5460000038 0.5502656102 0.5530000329 0.5552343726 0.5580000281 0.561632812 0.5655625463 0.5694609284 0.5730000138 0.5765469074 0.5801249743 0.5828906298 0.5839999914 0.5838750005 0.5830000043 0.5806249976 0.5759999752 0.5682968497 0.5576249957 0.5446406007 0.5299999714 0.5128515363 0.4931874871 0.4729296863 0.4539999962 0.4368359447 0.420437485 0.4045703113 0.3889999986 0.3731718659 0.3573749959 0.3426406384 0.3300000131 0.3193906248 0.310375005 0.3034218848 0.298999995 0.2972500026 0.2969999909 0.2967499793 0.2949999869 0.2899531126 0.2821249962 0.2734843791 0.2660000026 0.2602812648 0.2552500069 0.2503437698 0.2450000048 0.2380000055 0.2300000042 0.2232500017 0.2199999988 0.2195625007 0.2194999903 0.2194374949 0.2189999968 0.2183593661 0.2176249921 0.2163281292 0.2140000015 0.2101874948 0.205249995 0.1999374926 0.1949999928 0.1904453039 0.185937494 0.1817109436 0.1780000031 0.1754062474 0.1736250073 0.1715312451 0.1679999977 0.1620937437 0.1546249986 0.147093758 0.1410000026 0.1372031271 0.1347499937 0.1324218661 0.1289999932 0.1237656176 0.1174999923 0.1112343743 0.1059999987 0.1021796837 0.09918750077 0.09660156071 0.09399999678 0.09089062363 0.0876249969 0.0850468725 0.08399999887 0.08524999768 0.0882499963 0.09187500179 0.09499999881 0.09706249833 0.09875000268 0.1008125022 0.1040000021 0.1084140688 0.1136875004 0.1198671907 0.1270000041 0.1355390698 0.145312503 0.1554296911 0.1650000066 0.1739453226 0.1826875061 0.1910859346 0.199000001 0.2061250061 0.2126249969 0.2190624923 0.2259999961 0.2338827997 0.2423124909 0.2505859137 0.2579999864 0.2642968595 0.26987499 0.2750156224 0.2800000012 0.2847812474 0.2892500162 0.2935937643 0.2980000079 0.3025000095 0.3070000112 0.3115000129 0.3160000145} | |
alpha {}} | |
name ColorLookup3 | |
label "Pointer's Gamut Boundary Yxy\ninterpolated: incr 50 - 0 to 8000" | |
xpos -1250 | |
ypos 98 | |
} | |
BlackOutside { | |
name BlackOutside3 | |
xpos -1250 | |
ypos 179 | |
} | |
Crop { | |
box {0 -1 {input.width} {height}} | |
reformat true | |
name Crop8 | |
xpos -1250 | |
ypos 228 | |
} | |
Merge2 { | |
inputs 2 | |
name Merge5 | |
xpos -1250 | |
ypos 278 | |
disable {{!parent.enable_pointer_samples}} | |
} | |
BlackOutside { | |
name BlackOutside4 | |
xpos -1250 | |
ypos 325 | |
} | |
Crop { | |
box {0 -1 {input.width} {height}} | |
reformat true | |
name Crop2 | |
xpos -1250 | |
ypos 367 | |
} | |
Dot { | |
name Dot4 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -1216 | |
ypos 402 | |
} | |
Dot { | |
name Dot15 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -776 | |
ypos 402 | |
} | |
set Nc64ffb0 [stack 0] | |
Constant { | |
inputs 0 | |
format "256 256 0 0 256 256 1 square_256" | |
name Constant5 | |
xpos -700 | |
ypos -122 | |
postage_stamp false | |
} | |
Reformat { | |
type "to box" | |
box_width {{pow(2,bits)}} | |
box_height 2 | |
box_fixed true | |
name ReformatBox1 | |
label "\[value bits]bit" | |
xpos -700 | |
ypos -80 | |
addUserKnob {20 User} | |
addUserKnob {7 bits l "" +STARTLINE R 0 16} | |
bits 14 | |
} | |
Ramp { | |
p0 {0 0} | |
p1 {{input.width} 0} | |
name Ramp3 | |
xpos -700 | |
ypos -26 | |
} | |
set Nc7da7d0 [stack 0] | |
Dot { | |
name Dot9 | |
note_font "Bitstream Vera Sans" | |
xpos -556 | |
ypos -22 | |
} | |
Expression { | |
expr0 r*-0.00132+0.00142 | |
expr1 r*-0.565+0.737 | |
expr2 r*-0.26+0.2637 | |
expr3 1 | |
name Expression1 | |
label "line of purples" | |
xpos -590 | |
ypos 16 | |
} | |
Transform { | |
translate {13300 0} | |
scale {0.1 1} | |
filter impulse | |
name Transform1 | |
note_font "Bitstream Vera Sans" | |
xpos -590 | |
ypos 70 | |
} | |
BlackOutside { | |
name BlackOutside1 | |
xpos -590 | |
ypos 118 | |
} | |
Dot { | |
name Dot10 | |
note_font "Bitstream Vera Sans" | |
xpos -556 | |
ypos 194 | |
} | |
push $Nc7da7d0 | |
Expression { | |
temp_name0 start | |
temp_expr0 360 | |
temp_name1 end | |
temp_expr1 830 | |
channel0 {rgba.red rgba.green rgba.blue none} | |
expr0 r*(end-start)+start | |
channel1 none | |
channel2 none | |
expr3 1 | |
name Expression2 | |
label "360nm to 830nm" | |
xpos -700 | |
ypos 16 | |
} | |
ColorLookup { | |
lut {master {} | |
red {curve x360 0.0001298999996 C 0.0001458470069 0.0001638021058 0.0001840037003 0.0002066901943 0.0002321000065 0.0002607280039 0.0002930749906 0.0003293880145 0.0003699139925 0.0004148999869 0.0004641586856 0.000518986024 0.000581854023 0.0006552346749 0.0007416000008 0.0008450296009 0.0009645267855 0.001094948966 0.001231153961 0.001368000056 0.00150204997 0.001642327989 0.001802381943 0.001995756989 0.002236000029 0.00253538508 0.002892602934 0.003300829092 0.003753236029 0.004242999945 0.004762389231 0.005330048036 0.005978711881 0.00674111722 0.007650000043 0.008751372807 0.01002888009 0.01142170001 0.01286900975 0.01431000046 0.01570443064 0.01714744046 0.01878122054 0.02074800991 0.02318999916 0.02620735951 0.02978247963 0.03388091922 0.03846824169 0.04351000115 0.04899559915 0.05502260104 0.06171879917 0.06921199709 0.07762999833 0.08695811033 0.09717672318 0.1084062979 0.1207671985 0.1343799978 0.149358198 0.1653957069 0.1819830984 0.1986110061 0.2147700042 0.2301868051 0.2448796928 0.2587772906 0.271807909 0.2838999927 0.2949438095 0.3048965037 0.3137873113 0.3216454089 0.3285000026 0.3343513012 0.339210093 0.3431212902 0.3461295962 0.3482800126 0.3495998979 0.3501473963 0.3500129879 0.3492870033 0.3480600119 0.3463732898 0.3442623913 0.3418087959 0.3390941024 0.3361999989 0.3331977129 0.3300411105 0.3266356885 0.3228867948 0.3186999857 0.314025104 0.3088839948 0.3032903969 0.2972579002 0.2908000052 0.2839700878 0.2767213881 0.268917799 0.2604227066 0.2511000037 0.2408474982 0.2298512012 0.2184071988 0.2068115026 0.1953600049 0.1842135936 0.173327297 0.1626881063 0.152283296 0.1421000063 0.1321786046 0.1225695983 0.1132752001 0.1042978987 0.09564000368 0.08729954809 0.07930804044 0.07171776146 0.06458099186 0.05795000866 0.05186210945 0.04628152028 0.04115087911 0.0364128314 0.0320100002 0.0279172007 0.02414439991 0.02068700083 0.01754040085 0.01470000017 0.01216179039 0.009919960052 0.007967240177 0.006296345964 0.004900000058 0.003777173115 0.002945319982 0.002424879931 0.00223629293 0.002400000114 0.002925520064 0.003836560063 0.005174839869 0.006982080173 0.009300000034 0.01214949042 0.01553587988 0.01947752014 0.02399276942 0.02910000086 0.0348148495 0.04112016037 0.04798503965 0.05537860841 0.0632700026 0.07163500786 0.08046223968 0.08973996341 0.09945645183 0.1096000001 0.120167397 0.1311144978 0.1423678994 0.1538542062 0.1655000001 0.1772571057 0.1891400069 0.2011694014 0.2133657932 0.225749895 0.238320902 0.2510668039 0.2639921904 0.2771016955 0.2903999984 0.3038912117 0.3175725937 0.3314383924 0.3454827964 0.3596999943 0.3740839064 0.3886395991 0.4033783972 0.4183115065 0.4334498942 0.4487952888 0.4643360078 0.4800640047 0.4959712923 0.5120500922 0.5282958746 0.5446916223 0.5612093806 0.5778214931 0.5945000052 0.6112208962 0.6279758215 0.6447601914 0.6615697145 0.6783999801 0.6952391863 0.7120586038 0.7288283706 0.7455188036 0.7620999813 0.7785431743 0.7948256135 0.8109263778 0.8268247843 0.8424999714 0.857932508 0.8730816245 0.887894392 0.90231812 0.9162999988 0.9297994971 0.9427983761 0.9552776217 0.9672179222 0.9786000252 0.9893856049 0.9995487928 1.009089231 1.018006444 1.026299953 1.033982754 1.040985942 1.047188044 1.05246675 1.056699991 1.059794426 1.061799169 1.062806845 1.062909603 1.06219995 1.060735226 1.058443546 1.055224419 1.050976753 1.045600057 1.03903687 1.031360745 1.022666216 1.013047695 1.002599955 0.9913675189 0.9793313742 0.96649158 0.952847898 0.9383999705 0.9231939912 0.9072440267 0.890501976 0.8729199767 0.8544499278 0.8350840211 0.8149459958 0.7941859961 0.7729539871 0.7513999939 0.729583621 0.7075887918 0.6856021881 0.6638103724 0.6424000263 0.6215149164 0.6011137962 0.5811051726 0.5613976717 0.5418999791 0.5225995183 0.5035464168 0.4847435951 0.4661939144 0.4478999972 0.4298613071 0.4120979905 0.3946439922 0.3775332868 0.360799998 0.3444562852 0.3285168111 0.3130191863 0.2980011106 0.2834999859 0.2695448101 0.256118387 0.2431896031 0.2307271957 0.2187000066 0.2070970982 0.1959231943 0.1851707995 0.1748322994 0.1649000049 0.1553667039 0.1462299973 0.1374900043 0.1291466951 0.1212000027 0.1136396974 0.1064649969 0.09969043732 0.09333060682 0.08739999682 0.0819009617 0.07680428028 0.07207711786 0.06768663973 0.06360000372 0.05980684981 0.05628215894 0.05297103897 0.04981860891 0.04676999897 0.04378404841 0.04087536037 0.03807263821 0.03540461138 0.03290000185 0.03056419082 0.02838055976 0.02634483948 0.02445274964 0.02270000055 0.02108429 0.01959987916 0.01823732071 0.01698716916 0.01583999954 0.01479064021 0.01383132022 0.01294867974 0.01212919969 0.01135915983 0.01062935032 0.009938846342 0.009288421832 0.008678854443 0.008110916242 0.007582387887 0.007088745944 0.006627312861 0.006195407826 0.005790345836 0.005409826059 0.005052582826 0.004717512056 0.004403506871 0.004109457135 0.003833913011 0.003575748065 0.003334342036 0.003109074896 0.002899327083 0.002704347949 0.00252301991 0.0023541681 0.002196616028 0.002049189992 0.001910959953 0.001781438012 0.001660109963 0.00154645904 0.001439971034 0.001340041985 0.001246275031 0.001158470986 0.001076429966 0.0009999492904 0.0009287358262 0.0008624332258 0.0008007502765 0.0007433959981 0.0006900785957 0.0006405155873 0.0005945020821 0.0005518646212 0.0005124289892 0.0004760212905 0.0004424536019 0.0004115116899 0.0003829814086 0.0003566491068 0.0003323011042 0.0003097585868 0.0002888870949 0.0002695393923 0.0002515682136 0.0002348261041 0.0002191709937 0.0002045258007 0.0001908404956 0.0001780653984 0.0001661504939 0.0001550236047 0.0001446218957 0.000134909802 0.000125852006 0.0001174130011 0.0001095515036 0.0001022244978 9.539444727e-05 8.902390255e-05 8.307526878e-05 7.751269004e-05 7.231304335e-05 6.745778228e-05 6.292844046e-05 5.870651876e-05 5.477028026e-05 5.109918129e-05 4.767654173e-05 4.448567051e-05 4.150993846e-05 3.873324022e-05 3.61420316e-05 3.372352148e-05 3.146487143e-05 2.935325938e-05 2.73757305e-05 2.552433034e-05 2.379376019e-05 2.217869951e-05 2.067382957e-05 1.927226003e-05 1.796640026e-05 1.674990926e-05 1.56164806e-05 1.455976962e-05 1.357387009e-05 1.265436003e-05 1.17972304e-05 1.09984403e-05 1.025397978e-05 9.55964606e-06 8.912043995e-06 8.308357792e-06 7.745768926e-06 7.221456144e-06 6.732474958e-06 6.276422937e-06 5.851304195e-06 5.455117844e-06 5.085867997e-06 4.741466e-06 4.42023611e-06 4.12078316e-06 3.841716079e-06 3.581651981e-06 3.339127034e-06 3.112948889e-06 2.902120968e-06 2.705645102e-06 2.522524937e-06 2.351725925e-06 2.192414968e-06 2.043901986e-06 1.905497015e-06 1.776508952e-06 1.656214977e-06 1.544021984e-06 1.439439984e-06 1.341977054e-06 S 1.251141043e-06} | |
green {curve x360 3.916999958e-06 C 4.393581094e-06 4.929604074e-06 5.532136129e-06 6.20824494e-06 6.965000011e-06 7.813218872e-06 8.767336112e-06 9.839844097e-06 1.104323019e-05 1.238999994e-05 1.388640976e-05 1.555727977e-05 1.74429606e-05 1.958374924e-05 2.201999996e-05 2.483965e-05 2.804126052e-05 3.153103899e-05 3.521520921e-05 3.899999865e-05 4.282639929e-05 4.691459981e-05 5.158959902e-05 5.717639942e-05 6.399999984e-05 7.234421355e-05 8.221223834e-05 9.350816254e-05 0.0001061361036 0.000119999997 0.0001349840022 0.0001514920004 0.0001702080044 0.0001918159978 0.0002169999934 0.0002469067113 0.0002812400053 0.0003185200039 0.0003572666901 0.0003959999885 0.0004337147111 0.0004730240034 0.0005178760039 0.0005722186761 0.0006399999838 0.0007245599991 0.0008254999993 0.0009411600186 0.001069879974 0.001210000017 0.001362091047 0.001530752052 0.001720368047 0.001935323002 0.002180000069 0.002454800066 0.002764000092 0.003117799992 0.003526400076 0.00400000019 0.004546239972 0.005159319844 0.005829279777 0.006546160206 0.007300000172 0.008086507209 0.008908719756 0.009767680429 0.01066443045 0.01159999985 0.01257316954 0.01358272042 0.01462967973 0.01571509056 0.01683999971 0.0180073604 0.01921447925 0.02045392059 0.02171823941 0.02300000004 0.0242946092 0.02561024018 0.02695856988 0.02835124917 0.02979999967 0.03131083027 0.03288368136 0.03452112153 0.03622571006 0.03799999878 0.03984666988 0.04176799953 0.04376599938 0.0458426699 0.04800000042 0.05024367943 0.05257304013 0.05498056114 0.0574587211 0.05999999866 0.06260196865 0.06527751684 0.06804207712 0.0709110871 0.07389999926 0.07701600343 0.08026640117 0.08366680145 0.08723279834 0.09098000079 0.09491755068 0.09904584289 0.1033674031 0.1078846008 0.1125999987 0.1175319999 0.1226743981 0.1279927939 0.1334528029 0.1390199959 0.1446764022 0.1504693031 0.1564618945 0.1627177 0.1693000048 0.1762430966 0.1835581064 0.1912734956 0.1994179934 0.2080200016 0.2171199024 0.2267345041 0.2368571013 0.2474811971 0.2585999966 0.2701849043 0.2822938859 0.2950505018 0.3085780144 0.3230000138 0.3384020925 0.3546858132 0.3716985881 0.3892875016 0.4072999954 0.4256299138 0.4443095922 0.4633944035 0.4829395115 0.503000021 0.5235692859 0.5445119739 0.565689981 0.5869653225 0.6082000136 0.6293455958 0.6503068209 0.6708751917 0.6908423901 0.7099999785 0.7281851768 0.7454636097 0.7619693875 0.7778367996 0.793200016 0.8081104159 0.8224961758 0.8363068104 0.8494915962 0.8619999886 0.8738108277 0.8849623799 0.8954936266 0.9054431915 0.9148501158 0.9237347841 0.9320924282 0.9399225712 0.9472252131 0.9539999962 0.9602560997 0.9660074115 0.9712606072 0.9760224819 0.9803000093 0.9840924144 0.9874181747 0.9903128147 0.9928116202 0.9949501157 0.9967107773 0.9980983138 0.99911201 0.9997481704 1 0.9998567104 0.9993045926 0.9983255267 0.9968987107 0.9950000048 0.9926005006 0.9897425771 0.9864444137 0.9827240705 0.9786000252 0.9740837216 0.969171226 0.9638568163 0.9581348896 0.9520000219 0.9454504251 0.9384992123 0.9311627746 0.9234576225 0.9154000282 0.9070063829 0.8982772231 0.8892048001 0.8797816038 0.8700000048 0.8598613143 0.8493919969 0.838621974 0.8275812864 0.8162999749 0.8047947288 0.7930819988 0.7811920047 0.7691547275 0.7570000291 0.744754076 0.7324224114 0.7200036049 0.7074965239 0.6948999763 0.6822192073 0.6694716215 0.6566743851 0.6438447833 0.6309999824 0.6181554794 0.605314374 0.5924755931 0.5796378851 0.5667999983 0.5539610982 0.5411372185 0.528352797 0.5156322718 0.503000021 0.4904688001 0.4780304134 0.4656775892 0.4534032047 0.4411999881 0.4290800095 0.4170359969 0.4050320089 0.3930320144 0.3810000122 0.3689183891 0.3568271995 0.3447768092 0.3328176141 0.3210000098 0.3093380928 0.2978504002 0.2865935862 0.2756245136 0.2649999857 0.254763186 0.2448896021 0.2353343964 0.2260528058 0.2169999927 0.2081616074 0.1995487958 0.1911551952 0.1829743981 0.174999997 0.1672234982 0.1596464068 0.1522776037 0.1451258957 0.1381999999 0.1315003037 0.1250247955 0.1187791973 0.1127690971 0.1070000008 0.1014761999 0.09618864208 0.09112296253 0.08626484871 0.08160000294 0.07712063938 0.07282552123 0.06871008128 0.06476975977 0.06100000069 0.05739621073 0.05395504087 0.05067376047 0.04754965007 0.04458000138 0.04175871983 0.03908495978 0.03656383976 0.03420047835 0.03200000152 0.02996261045 0.0280766394 0.0263293609 0.02470804937 0.0231999997 0.02180076949 0.02050112002 0.01928107999 0.01812068932 0.01700000092 0.01590378955 0.01483718026 0.01381068025 0.01283477992 0.01192000043 0.01106830966 0.01027339045 0.00953331124 0.00884615723 0.008209999651 0.007623780984 0.007085423917 0.006591476034 0.006138484925 0.005723000038 0.005343059078 0.004995795898 0.004676403943 0.004380074795 0.004102000035 0.003838452976 0.00358909904 0.003354219021 0.003134093015 0.002928999951 0.002738138894 0.002559876069 0.002393244067 0.00223727501 0.002091000089 0.001953586936 0.001824580017 0.001703580027 0.001590186963 0.001484000008 0.00138449599 0.001291268039 0.001204092056 0.001122744055 0.001047000056 0.0009765896248 0.0009111088002 0.0008501331904 0.0007932384033 0.0007399999886 0.0006900827284 0.0006433100207 0.0005994960084 0.000558454718 0.0005200000014 0.0004839136091 0.0004500527866 0.0004183452111 0.0003887184139 0.0003611000138 0.0003353834909 0.0003114404099 0.0002891655895 0.0002684539068 0.0002492000058 0.0002313019068 0.0002146855986 0.0001992884063 0.0001850474946 0.0001718999993 0.0001597780938 0.0001486044057 0.0001383016061 0.000128792497 0.000119999997 0.0001118595028 0.0001043223965 9.73356e-05 9.084586782e-05 8.479999815e-05 7.914666639e-05 7.385799836e-05 6.89160006e-05 6.43026724e-05 5.999999848e-05 5.598186908e-05 5.222560139e-05 4.871840065e-05 4.544746844e-05 4.239999907e-05 3.956104047e-05 3.691512029e-05 3.44486798e-05 3.214816024e-05 2.999999924e-05 2.799124923e-05 2.611355922e-05 2.436024079e-05 2.272460915e-05 2.119999954e-05 1.977855027e-05 1.845285078e-05 1.721686931e-05 1.606459045e-05 1.498999973e-05 1.398728e-05 1.305155001e-05 1.217818044e-05 1.136254014e-05 1.059999977e-05 9.885877262e-06 9.217304068e-06 8.592362065e-06 8.009133126e-06 7.465700037e-06 6.959567145e-06 6.487995051e-06 6.048699106e-06 5.639396022e-06 5.257799785e-06 4.901770808e-06 4.569720204e-06 4.260194146e-06 3.971738806e-06 3.702899903e-06 3.4521629e-06 3.218302027e-06 3.000300012e-06 2.797138904e-06 2.60780007e-06 2.431220082e-06 2.266531055e-06 2.113012897e-06 1.969943014e-06 1.836599949e-06 1.71222996e-06 1.596228003e-06 1.488089993e-06 1.387314001e-06 1.293400032e-06 1.205820013e-06 1.124142955e-06 1.04800904e-06 9.770579936e-07 9.109299981e-07 8.492510233e-07 7.917209928e-07 7.380900229e-07 6.881099921e-07 6.415299936e-07 5.980900255e-07 5.575749924e-07 5.198079975e-07 4.846119737e-07 S 4.518099956e-07} | |
blue {curve x360 0.0006061000167 C 0.0006808792241 0.0007651455817 0.0008600124274 0.0009665928083 0.001086000004 0.001220586011 0.001372728962 0.001543579041 0.001734285965 0.001946000033 0.002177777002 0.002435809001 0.002731953049 0.00307806395 0.003486000001 0.00397522701 0.004540880211 0.005158320069 0.00580290705 0.00645000115 0.007083216216 0.007745488081 0.008501151577 0.009414544329 0.01054999046 0.01196580008 0.01365587022 0.01558804978 0.01773015037 0.02005000971 0.0225113593 0.02520287968 0.02827971987 0.03189703822 0.03621000051 0.04143771157 0.04750372097 0.05411988124 0.06099803001 0.06785000861 0.0744863227 0.08136156201 0.08915363997 0.09854047745 0.1102000028 0.1246133 0.1417016983 0.1613035053 0.1832568049 0.2073999941 0.2336920947 0.2626113892 0.2947745919 0.3307985067 0.3713000119 0.4162091017 0.4654642045 0.5196948051 0.5795302987 0.6456000209 0.7184838057 0.7967132926 0.8778458834 0.9594389796 1.039050102 1.115367293 1.188497066 1.258123279 1.323929548 1.385599971 1.442635179 1.494803548 1.542190313 1.58488071 1.622959971 1.656404853 1.685295939 1.709874511 1.730382085 1.747059941 1.760044575 1.76962328 1.776263714 1.780433416 1.782600045 1.782968163 1.781699777 1.77919817 1.775867105 1.772109985 1.768258929 1.76403904 1.758943796 1.752466321 1.744099975 1.733559489 1.720858097 1.705936909 1.688737154 1.669199944 1.647528648 1.623412728 1.596022248 1.564527988 1.528100014 1.486111403 1.439521551 1.389879942 1.338736176 1.287639976 1.237422347 1.187824249 1.138761044 1.090147972 1.041900039 0.994197607 0.9473472834 0.9014530778 0.8566192985 0.8129500747 0.7705172896 0.7294448018 0.6899135709 0.6521049142 0.6161999702 0.5823286176 0.5504161716 0.5203375816 0.4919672906 0.4651800096 0.4399245977 0.4161835909 0.3938821852 0.3729459047 0.3533000052 0.3348577917 0.3175520897 0.3013375103 0.2861686051 0.2720000148 0.2588171065 0.2464838028 0.234771803 0.2234532982 0.2123000026 0.2011691928 0.1901195943 0.1792254001 0.1685608029 0.1581999958 0.1481382996 0.1383758038 0.1289941967 0.1200750992 0.1116999984 0.1039047986 0.09666748345 0.08998271823 0.08384530991 0.07824999094 0.07320898771 0.06867816299 0.06456784159 0.06078834832 0.05725001171 0.05390435085 0.05074663833 0.04775276035 0.04489858821 0.04216000065 0.03950728104 0.03693563864 0.03445836157 0.03208871931 0.02983999997 0.02771181054 0.02569443919 0.02378715947 0.02198925056 0.02030000091 0.01871805079 0.01724036038 0.01586364023 0.01458461024 0.01339999959 0.01230723038 0.01130187977 0.01037792023 0.009529305622 0.008749999106 0.008035199717 0.007381599862 0.006785400212 0.006242800038 0.00574999908 0.005303599872 0.004899799824 0.004534199834 0.004202399869 0.003899999894 0.003623200115 0.003370600054 0.003141399939 0.002934799995 0.002749999054 0.002585199894 0.002438599942 0.00230939989 0.002196799964 0.002099999925 0.002017732942 0.00194820005 0.001889799954 0.001840932993 0.001799999969 0.001766267 0.001737799961 0.001711199991 0.001683066948 0.001650001039 0.001610132982 0.001564400038 0.0015136 0.001458532992 0.00139999995 0.001336666988 0.001270000008 0.001204999979 0.001146667055 0.001099999994 0.001068799989 0.001049399958 0.001035599969 0.001021199976 0.001000000047 0.0009686399717 0.0009299200028 0.0008868799778 0.0008425600245 0.0007999999798 0.0007609599852 0.0007236800157 0.0006859200075 0.0006454400136 0.0006000000285 0.0005478666862 0.000491600018 0.0004353999975 0.0003834666859 0.0003399999987 0.0003072533 0.0002831600141 0.0002654400014 0.0002518132969 0.0002399999939 0.0002295466984 0.000220639995 0.0002119599958 0.0002021866967 0.0001900000061 0.0001742133027 0.0001556399948 0.0001359599992 0.0001168532981 9.999999747e-05 8.613333193e-05 7.460000052e-05 6.500000018e-05 5.693333151e-05 4.999999146e-05 4.415999865e-05 3.948000085e-05 3.57200006e-05 3.264000043e-05 2.999999924e-05 2.765333011e-05 2.556000072e-05 2.36399992e-05 2.181333002e-05 1.999999949e-05 1.813333074e-05 1.619999966e-05 1.41999999e-05 1.213332962e-05 9.999999747e-06 7.733333405e-06 5.400000191e-06 3.200000037e-06 1.333332989e-06 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 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 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 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 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 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 S 0} | |
alpha {}} | |
name ColorLookup2 | |
label "CIE 1931 2 Degree Standard Observer\n360nm to 830nm" | |
xpos -700 | |
ypos 74 | |
} | |
Colorspace { | |
colorspace_in CIE-XYZ | |
primary_in "Adobe (1998)" | |
colorspace_out CIE-Yxy | |
name Colorspace5 | |
label "\[value colorspace_in] -> \[value colorspace_out]" | |
xpos -700 | |
ypos 136 | |
} | |
Merge2 { | |
inputs 2 | |
name Merge4 | |
xpos -700 | |
ypos 190 | |
} | |
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 | |
label "increase brightness of line of purples" | |
xpos -700 | |
ypos 227 | |
dope_sheet true | |
addUserKnob {20 User} | |
addUserKnob {18 lift} | |
lift {0.08 0 0} | |
addUserKnob {6 lift_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} | |
lift_panelDropped true | |
addUserKnob {18 sole R 0 0.1} | |
sole {0 0 0} | |
addUserKnob {6 sole_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} | |
} | |
Crop { | |
box {0 0 16384 1} | |
name Crop10 | |
xpos -700 | |
ypos 279 | |
} | |
Crop { | |
box {0 0 16384 3} | |
reformat true | |
name Crop9 | |
xpos -700 | |
ypos 305 | |
disable {{!parent.enable_pointers_gamut}} | |
} | |
Fill { | |
color {0 0 0 1} | |
name Disable_SpectralLocus | |
xpos -700 | |
ypos 337 | |
disable {{parent.draw_spectral_locus}} | |
} | |
Dot { | |
name Dot2 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -666 | |
ypos 378 | |
} | |
set Ne92ae80 [stack 0] | |
Dot { | |
name Dot5 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -556 | |
ypos 378 | |
} | |
Merge2 { | |
inputs 2 | |
name Merge3 | |
xpos -590 | |
ypos 398 | |
disable {{!parent.enable_pointers_gamut}} | |
} | |
Expression { | |
expr0 r | |
expr1 "4*g / ( -2*g + 12*b + 3)" | |
expr2 "9*b / ( -2*g + 12*b + 3)" | |
name Expression5 | |
label "CIE Yxy to CIELuv" | |
xpos -590 | |
ypos 493 | |
disable {{!parent.diagram}} | |
} | |
Dot { | |
name Dot11 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -556 | |
ypos 609 | |
} | |
set Nf273580 [stack 0] | |
push $Nc64ffb0 | |
Colorspace { | |
colorspace_in CIE-Yxy | |
primary_in "Adobe (1998)" | |
colorspace_out CIE-XYZ | |
name Colorspace4 | |
label "\[value colorspace_in] -> \[value colorspace_out]" | |
xpos -810 | |
ypos 440 | |
} | |
ColorMatrix { | |
matrix { | |
{{parent.GamutToXYZ3.ColorMatrix.matrix} {parent.GamutToXYZ3.ColorMatrix.matrix} {parent.GamutToXYZ3.ColorMatrix.matrix}} | |
{{parent.GamutToXYZ3.ColorMatrix.matrix} {parent.GamutToXYZ3.ColorMatrix.matrix} {parent.GamutToXYZ3.ColorMatrix.matrix}} | |
{{parent.GamutToXYZ3.ColorMatrix.matrix} {parent.GamutToXYZ3.ColorMatrix.matrix} {parent.GamutToXYZ3.ColorMatrix.matrix}} | |
} | |
invert true | |
name ColorMatrix3 | |
label "XYZ to working" | |
xpos -810 | |
ypos 478 | |
disable {{!map_overlays_to_input_gamut}} | |
} | |
Fill { | |
color {1 0.43 1 1} | |
unpremult rgba.alpha | |
name ColorizePointers | |
xpos -810 | |
ypos 575 | |
disable {{!parent.colorize_pointers_gamut x1 1}} | |
} | |
push $Ne92ae80 | |
Colorspace { | |
colorspace_in CIE-Yxy | |
primary_in "Adobe (1998)" | |
colorspace_out CIE-XYZ | |
name Colorspace6 | |
label "\[value colorspace_in] -> \[value colorspace_out]" | |
xpos -700 | |
ypos 429 | |
} | |
ColorMatrix { | |
matrix { | |
{{parent.GamutToXYZ3.ColorMatrix.matrix} {parent.GamutToXYZ3.ColorMatrix.matrix} {parent.GamutToXYZ3.ColorMatrix.matrix}} | |
{{parent.GamutToXYZ3.ColorMatrix.matrix} {parent.GamutToXYZ3.ColorMatrix.matrix} {parent.GamutToXYZ3.ColorMatrix.matrix}} | |
{{parent.GamutToXYZ3.ColorMatrix.matrix} {parent.GamutToXYZ3.ColorMatrix.matrix} {parent.GamutToXYZ3.ColorMatrix.matrix}} | |
} | |
invert true | |
name ColorMatrix1 | |
label "XYZ to working" | |
xpos -700 | |
ypos 477 | |
disable {{!map_overlays_to_input_gamut}} | |
} | |
Fill { | |
color {0 0.5 1 1} | |
unpremult rgba.alpha | |
name Fill2 | |
xpos -700 | |
ypos 528 | |
disable {{!parent.colorize_spectral_locus}} | |
} | |
Merge2 { | |
inputs 2 | |
name Merge6 | |
xpos -700 | |
ypos 581 | |
disable {{!parent.enable_pointers_gamut}} | |
} | |
set Nc279f50 [stack 0] | |
Group { | |
inputs 2 | |
name PlotPoints1 | |
xpos -590 | |
ypos 650 | |
disable {{!(parent.draw_spectral_locus||parent.enable_pointers_gamut)}} | |
addUserKnob {20 User} | |
addUserKnob {41 detail l "point detail" T PositionToPoints1.detail} | |
addUserKnob {41 pointSize l "point size" T PositionToPoints1.pointSize} | |
} | |
Input { | |
inputs 0 | |
name Inputpos | |
xpos 510 | |
ypos 588 | |
number 1 | |
} | |
Input { | |
inputs 0 | |
name Inputcol | |
xpos 400 | |
ypos 590 | |
} | |
ShuffleCopy { | |
inputs 2 | |
alpha alpha2 | |
black green | |
white blue | |
red2 red | |
green2 alpha | |
out2 pos | |
name ShuffleCopy1 | |
label "\[value in] | \[value in2] -> \[value out]" | |
xpos 400 | |
ypos 665 | |
} | |
PositionToPoints2 { | |
display textured | |
render_mode textured | |
P_channel pos | |
detail 1 | |
pointSize 1.5 | |
name PositionToPoints1 | |
xpos 400 | |
ypos 742 | |
} | |
Output { | |
name Output | |
xpos 404 | |
ypos 880 | |
} | |
end_group | |
Group { | |
inputs 0 | |
name GamutGrid | |
xpos -2020 | |
ypos 398 | |
addUserKnob {20 GamutGrid} | |
addUserKnob {3 style} | |
style {{max(0,parent.style-1)}} | |
addUserKnob {3 distribution -STARTLINE} | |
distribution {{parent.distribution}} | |
addUserKnob {7 density R 10 150} | |
density {{parent.density}} | |
addUserKnob {26 ""} | |
addUserKnob {41 matrix T ColorMatrix.matrix} | |
addUserKnob {12 wxy} | |
wxy {{parent.GamutToXYZ_OVERLAY.wxy} {parent.GamutToXYZ_OVERLAY.wxy}} | |
} | |
ColorWheel { | |
inputs 0 | |
format "512 512 0 0 512 512 1 square_512" | |
centerSaturation 1 | |
fillFormat false | |
area {-170 -158 682 670} | |
name ColorWheel4 | |
xpos -260 | |
ypos 3 | |
postage_stamp false | |
} | |
Crop { | |
box {0 0 512 512} | |
crop false | |
name Crop2 | |
xpos -260 | |
ypos 29 | |
} | |
Reformat { | |
type scale | |
scale {{max(parent.density/50,0.25)}} | |
resize distort | |
filter impulse | |
pbb true | |
name Reformat3 | |
note_font "Bitstream Vera Sans" | |
xpos -260 | |
ypos 110 | |
} | |
set Ncaa33c0 [stack 0] | |
push $Ncaa33c0 | |
ContactSheet { | |
inputs 2 | |
width {{width*columns}} | |
height {{height/pixel_aspect*rows}} | |
rows 1 | |
columns 2 | |
roworder TopBottom | |
name ContactSheet2 | |
xpos -260 | |
ypos 169 | |
} | |
Dot { | |
name Dot1 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -226 | |
ypos 246 | |
} | |
ColorWheel { | |
inputs 0 | |
format "512 512 0 0 512 512 1 square_512" | |
fillFormat false | |
area {40 40 472 472} | |
name ColorWheel1 | |
xpos -40 | |
ypos -664 | |
postage_stamp false | |
} | |
Reformat { | |
type scale | |
scale {{max(parent.density/50,0.25)}} | |
resize distort | |
filter impulse | |
pbb true | |
name Reformat1 | |
note_font "Bitstream Vera Sans" | |
xpos -40 | |
ypos -628 | |
} | |
Crop { | |
box {0 0 {width} {height}} | |
reformat true | |
name Crop1 | |
note_font "Bitstream Vera Sans" | |
xpos -40 | |
ypos -602 | |
} | |
Unpremult { | |
name Unpremult1 | |
xpos -40 | |
ypos -526 | |
} | |
ColorMatrix { | |
matrix { | |
{{parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix} {parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix} {parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix}} | |
{{parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix} {parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix} {parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix}} | |
{{parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix} {parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix} {parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix}} | |
} | |
name ColorMatrix | |
label "RGB to XYZ" | |
xpos -40 | |
ypos -415 | |
} | |
Colorspace { | |
colorspace_in CIE-XYZ | |
colorspace_out CIE-Yxy | |
name Colorspace1 | |
label "\[value colorspace_in] -> \[value colorspace_out]" | |
xpos -40 | |
ypos -341 | |
} | |
set Nb7434e0 [stack 0] | |
Dot { | |
name Dot2 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -556 | |
ypos -331 | |
} | |
Expression { | |
expr0 r | |
expr1 "4*g / ( -2*g + 12*b + 3)" | |
expr2 "9*b / ( -2*g + 12*b + 3)" | |
name Expression5 | |
label "CIE Yxy to CIELuv" | |
xpos -590 | |
ypos -304 | |
disable {{!parent.distribution}} | |
} | |
Expression { | |
expr0 r | |
expr1 "(-(degrees(atan2(g-white.x, b-white.y))-180)+270)%360/360" | |
expr2 "hypot(g-white.x, b-white.y)" | |
expr3 a | |
name Expression3 | |
xpos -590 | |
ypos -261 | |
cached true | |
addUserKnob {20 User} | |
addUserKnob {12 white} | |
white {{"parent.distribution ? 4*parent.wxy.x / ( -2 * parent.wxy.x + 12 * parent.wxy.y + 3) : parent.wxy"} {"parent.distribution ? 9*parent.wxy.y / ( -2*parent.wxy.x + 12*parent.wxy.y + 3) : parent.wxy"}} | |
} | |
set Nb76ed10 [stack 0] | |
Posterize { | |
channels rgb | |
Colors {{rint(parent.density/3*2)}} | |
name Posterize1 | |
note_font "Bitstream Vera Sans" | |
xpos -590 | |
ypos -194 | |
} | |
set Nb6803a0 [stack 0] | |
push $Nb76ed10 | |
Dot { | |
name Dot15 | |
note_font "Bitstream Vera Sans" | |
xpos -446 | |
ypos -257 | |
} | |
Copy { | |
inputs 2 | |
from0 rgba.blue | |
to0 rgba.blue | |
name Copy1 | |
xpos -480 | |
ypos -154 | |
} | |
push $Nb6803a0 | |
push $Nb76ed10 | |
Dot { | |
name Dot16 | |
note_font "Bitstream Vera Sans" | |
xpos -666 | |
ypos -257 | |
} | |
Copy { | |
inputs 2 | |
from0 rgba.green | |
to0 rgba.green | |
name Copy2 | |
xpos -700 | |
ypos -153 | |
} | |
ContactSheet { | |
inputs 2 | |
width {{width*columns}} | |
height {{height/pixel_aspect*rows}} | |
rows 1 | |
columns 2 | |
center true | |
roworder TopBottom | |
name ContactSheet3 | |
xpos -590 | |
ypos -102 | |
} | |
Expression { | |
expr0 r | |
expr1 cos(radians(g*360))*b+white.x | |
expr2 sin(radians(g*360))*b+white.y | |
expr3 a | |
name Expression19 | |
xpos -590 | |
ypos -57 | |
cached true | |
addUserKnob {20 User} | |
addUserKnob {12 white} | |
white {{parent.Expression3.white} {parent.Expression3.white}} | |
} | |
Expression { | |
expr0 r | |
expr1 "9*g / ( 6*g - 16*b + 12)" | |
expr2 "4*b/ ( 6*g - 16*b + 12)" | |
name Expression2 | |
label "CIELuv to CIE Yxy" | |
xpos -590 | |
ypos -16 | |
disable {{!parent.distribution}} | |
} | |
Colorspace { | |
colorspace_in CIE-Yxy | |
colorspace_out CIE-XYZ | |
name Colorspace2 | |
label "\[value colorspace_in] -> \[value colorspace_out]" | |
xpos -590 | |
ypos 31 | |
} | |
ColorMatrix { | |
matrix { | |
{{parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix} {parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix} {parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix}} | |
{{parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix} {parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix} {parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix}} | |
{{parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix} {parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix} {parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix}} | |
} | |
invert true | |
name ColorMatrix1 | |
label "XYZ to RGB" | |
xpos -590 | |
ypos 81 | |
} | |
Clamp { | |
channels rgba | |
maximum_enable false | |
name ClampMin2 | |
xpos -590 | |
ypos 119 | |
} | |
Clamp { | |
channels {-rgba.red -rgba.green -rgba.blue rgba.alpha} | |
minimum 1 | |
MinClampTo_enable true | |
MaxClampTo_enable true | |
name Clamp1 | |
note_font "Bitstream Vera Sans" | |
xpos -590 | |
ypos 156 | |
} | |
Premult { | |
name Premult1 | |
xpos -590 | |
ypos 194 | |
} | |
Merge2 { | |
inputs 2 | |
operation under | |
bbox B | |
name Merge2 | |
xpos -590 | |
ypos 242 | |
} | |
Shuffle { | |
alpha white | |
name Shuffle1 | |
label "\[value in] -> \[value out]" | |
xpos -590 | |
ypos 314 | |
} | |
Dot { | |
name Dot3 | |
label " GRID" | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -556 | |
ypos 378 | |
} | |
push $Ncaa33c0 | |
push $Nb7434e0 | |
Expression { | |
expr0 r | |
expr1 "4*g / ( -2*g + 12*b + 3)" | |
expr2 "9*b / ( -2*g + 12*b + 3)" | |
name Expression4 | |
label "CIE Yxy to CIELuv" | |
xpos -40 | |
ypos -304 | |
disable {{!parent.distribution}} | |
} | |
Expression { | |
expr0 r | |
expr1 rint(g*Colors)/Colors | |
expr2 rint(b*Colors)/Colors | |
expr3 a | |
name Expression1 | |
label rint | |
note_font "Bitstream Vera Sans" | |
xpos -40 | |
ypos -233 | |
addUserKnob {20 User} | |
addUserKnob {7 Colors R 1 256} | |
Colors {{parent.density}} | |
} | |
Expression { | |
expr0 r | |
expr1 "9*g / ( 6*g - 16*b + 12)" | |
expr2 "4*b/ ( 6*g - 16*b + 12)" | |
name Expression6 | |
label "CIELuv to CIE Yxy" | |
xpos -40 | |
ypos -184 | |
disable {{!parent.distribution}} | |
} | |
Colorspace { | |
colorspace_in CIE-Yxy | |
colorspace_out CIE-XYZ | |
name Colorspace3 | |
label "\[value colorspace_in] -> \[value colorspace_out]" | |
xpos -40 | |
ypos -133 | |
} | |
ColorMatrix { | |
matrix { | |
{{parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix} {parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix} {parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix}} | |
{{parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix} {parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix} {parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix}} | |
{{parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix} {parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix} {parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix}} | |
} | |
invert true | |
name ColorMatrix3 | |
label "XYZ to RGB" | |
xpos -40 | |
ypos -57 | |
} | |
Clamp { | |
channels {-rgba.red -rgba.green -rgba.blue rgba.alpha} | |
minimum 1 | |
MinClampTo_enable true | |
MaxClampTo_enable true | |
name Clamp4 | |
note_font "Bitstream Vera Sans" | |
xpos -40 | |
ypos -13 | |
} | |
Premult { | |
name Premult2 | |
xpos -40 | |
ypos 34 | |
} | |
Merge2 { | |
inputs 2 | |
operation under | |
bbox B | |
name Merge1 | |
xpos -40 | |
ypos 110 | |
} | |
Clamp { | |
channels rgba | |
maximum_enable false | |
name ClampMin1 | |
xpos -40 | |
ypos 175 | |
} | |
Dot { | |
name Dot4 | |
label " DOTS" | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -6 | |
ypos 378 | |
} | |
Switch { | |
inputs 2 | |
which {{parent.style}} | |
name Switch1 | |
xpos -257 | |
ypos 483 | |
} | |
ColorMatrix { | |
matrix { | |
{{parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix} {parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix} {parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix}} | |
{{parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix} {parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix} {parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix}} | |
{{parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix} {parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix} {parent.parent.GamutToXYZ_OVERLAY.ColorMatrix.matrix}} | |
} | |
name ColorMatrix2 | |
label "RGB to XYZ" | |
xpos -257 | |
ypos 560 | |
} | |
Output { | |
name Output | |
xpos -257 | |
ypos 740 | |
} | |
ColorWheel { | |
inputs 0 | |
format "256 256 0 0 256 256 1 square_256" | |
area {40 40 472 472} | |
name ColorWheel2 | |
xpos -37 | |
ypos -705 | |
postage_stamp false | |
} | |
end_group | |
ColorWheel { | |
inputs 0 | |
format "256 256 0 0 256 256 1 square_256" | |
centerSaturation 1 | |
name ColorWheel4 | |
xpos -1910 | |
ypos 254 | |
postage_stamp false | |
} | |
Unpremult { | |
name Unpremult1 | |
xpos -1910 | |
ypos 302 | |
} | |
Group { | |
name GamutToXYZ_OVERLAY | |
label "\[value gamut] to XYZ\n" | |
xpos -1910 | |
ypos 344 | |
addUserKnob {20 GamutToXYZ_tab l GamutToXYZ} | |
addUserKnob {4 gamut t "Choose gamut" M {XYZ ACES ACEScg "Filmlight E-Gamut" Rec709 Rec2020 P3D60 P3D65 P3DCI ArriAlexaWideGamut "AdobeRGB\t" AdobeWideGamutRGB ROMM RIMM ERIMM ProPhotoRGB REDDRAGONcolor REDDRAGONcolor2 REDcolor REDcolor2 REDcolor3 REDcolor4 REDWideGamutRGB GoProProtune CanonCinemaGamut SonySGamut SonySGamut3Cine PanasonicVGamut ""}} | |
gamut ACEScg | |
addUserKnob {6 invert +STARTLINE} | |
addUserKnob {26 ""} | |
addUserKnob {26 chromaticity_coordinates_label l " " T "<b>Chromaticity Coordinates</b>"} | |
addUserKnob {41 rxy T ColorMatrix.rxy} | |
addUserKnob {41 gxy T ColorMatrix.gxy} | |
addUserKnob {41 bxy T ColorMatrix.bxy} | |
addUserKnob {41 wxy T ColorMatrix.wxy} | |
addUserKnob {41 matrix T ColorMatrix.matrix} | |
} | |
Input { | |
inputs 0 | |
name Input | |
xpos -40 | |
ypos -10 | |
} | |
ColorMatrix { | |
matrix { | |
{{curve(which) 1 0.9525524378 0.6624541879 0.7053968906 0.4123907983 0.6369580626 0.5049495697 0.4865709841 0.4451698363 0.6380076408 0.5766690373 0.7165006995 0.797760427 0.797760427 0.797760427 0.7976718545 0.5070186853 0.4462202489 0.4300414324 0.4581649601 0.4878340662 0.4517004192 0.7352752686 0.5022571683 0.7160496712 0.7064827085 0.5990839601 0.6796444654} {curve(which) 0 0 0.1340042055 0.1640413404 0.3575843275 0.1446169019 0.2646814585 0.2656676769 0.2771343887 0.2147038579 0.1855582297 0.1010205746 0.1351858526 0.1351858526 0.1351858526 0.1351878047 0.3587769568 0.3157556653 0.3700728714 0.3832037449 0.3432727158 0.3178463876 0.06860940903 0.2929667532 0.1296834797 0.1288010478 0.2489254922 0.1522114277} {curve(which) 0 9.367863095e-05 0.1561876982 0.08101774752 0.180480808 0.1688809693 0.1830150485 0.1982172877 0.1722826511 0.09774444997 0.1882286519 0.1467743814 0.03134934977 0.03134934977 0.03134934977 0.03133957833 0.0868505761 0.190669477 0.152531758 0.1112773567 0.1215386018 0.1830992699 0.1465712637 0.1552320272 0.1047228053 0.1151721701 0.1024464965 0.1186000481}} | |
{{curve(which) 0 0.3439664543 0.2722287476 0.2801307142 0.2126390189 0.2627002299 0.237623319 0.2289745659 0.209491685 0.2919537723 0.2973450124 0.258728236 0.2880711257 0.2880711257 0.2880711257 0.2880405784 0.2207257152 0.1942579001 0.2022213936 0.1694435924 0.2289056629 0.2119505703 0.2866941094 0.1387997568 0.2612613738 0.2709796727 0.2150758505 0.2606855333} {curve(which) 1 0.7281661034 0.6740817428 0.8202066422 0.7151686549 0.6779980659 0.6891706586 0.6917385459 0.7215952873 0.8238410354 0.6273635626 0.7246823311 0.7118432522 0.7118432522 0.7118432522 0.7118694782 0.839184761 0.7385566831 0.7585275769 0.8648257852 0.7808576822 0.7230190039 0.8429791331 0.910841465 0.8696421385 0.786606431 0.8850684762 0.7748944759} {curve(which) 0 -0.07213255018 0.05368951708 -0.1003373638 0.07219231874 0.05930171534 0.07320601493 0.07928691059 0.06891305745 -0.1157948226 0.07529145479 0.01658944227 8.565396274e-05 8.565396274e-05 8.565396274e-05 8.991353388e-05 -0.05991046131 0.06718540192 0.03925102949 -0.03426937759 -0.009763340466 0.06503042579 -0.1296732277 -0.04964122549 -0.1309035122 -0.05758608505 -0.1001443192 -0.03558001295}} | |
{{curve(which) 0 -3.863927134e-08 -0.005574660841 -0.1037815213 0.01933082007 0 0 0 0 0.0027982709 0.02703136392 -2.906408625e-08 -3.236030111e-08 -3.236030111e-08 -3.236030111e-08 0 -0.0544523783 -0.04792318866 -0.0176958181 -0.1061859056 -0.02100777067 -0.01945115253 -0.07968087494 0.07801423222 -0.009676366113 -0.009677864611 -0.03206583485 -0.009310216643} {curve(which) 0 0 0.004060741514 -0.07290724665 0.1191947311 0.0280726999 0.0449459292 0.04511339962 0.04706057906 -0.06703422964 0.07068887353 0.05121183768 1.2621717e-08 1.2621717e-08 1.2621717e-08 -1.262213711e-08 -0.0003228379355 -0.0002844714036 0.08768811822 0.02554347552 0.01782695204 0.01650637016 -0.3473432064 -0.3148325086 -0.2364816219 0.004600019194 -0.02765839547 -0.004612449091} {curve(which) 1 1.008825183 1.010339141 1.265746474 0.950532198 1.060985088 0.9638792276 1.043944359 0.9073553085 1.153293729 0.9913375378 0.7738927603 0.8251045942 0.8251045942 0.8251045942 0.8248898983 1.063571215 1.057001948 0.9388025999 1.089437366 1.01197505 1.011739731 1.51608181 1.325875998 1.335215807 1.094135642 1.148782015 1.102980375}} | |
} | |
invert {{parent.invert}} | |
name ColorMatrix | |
label "RGB to XYZ" | |
xpos -40 | |
ypos 29 | |
addUserKnob {20 Gamut} | |
addUserKnob {3 which} | |
which {{parent.gamut}} | |
addUserKnob {12 rxy +DISABLED} | |
rxy {{curve(which) 0 0.7347 0.713 0.8 0.64 0.708 0.68 0.68 0.68 0.684 0.64 0.7347 0.7347 0.7347 0.7347 0.734699 0.7530442228 0.7530444911 0.6997470013 0.8786825105 0.7011810359 0.7011805919 0.780308 0.69848046 0.74 0.73 0.766 0.73} {curve(which) 0 0.2653 0.293 0.3177 0.33 0.292 0.32 0.32 0.32 0.313 0.33 0.2653 0.2653 0.2653 0.2653 0.265301 0.3278305767 0.3278310295 0.3290469303 0.3249640074 0.3290141556 0.3290136991 0.304253 0.19302645 0.27 0.28 0.275 0.28}} | |
addUserKnob {12 gxy +DISABLED} | |
gxy {{curve(which) 0 0 0.165 0.18 0.3 0.17 0.265 0.265 0.265 0.221 0.21 0.1152 0.1596 0.1596 0.1596 0.159597 0.2995702285 0.2995704905 0.304264039 0.3008887144 0.3006003047 0.3006003955 0.121595 0.32955538 0.17 0.14 0.225 0.165} {curve(which) 0 1 0.83 0.9 0.6 0.797 0.69 0.69 0.69 0.848 0.71 0.8264 0.8404 0.8404 0.8404 0.840403 0.700699322 0.7006994156 0.6236411451 0.6790547558 0.6837888343 0.6837888243 1.493994 1.02459662 1.14 0.855 0.8 0.84}} | |
addUserKnob {12 bxy +DISABLED} | |
bxy {{curve(which) 0 0.0001 0.128 0.065 0.15 0.131 0.15 0.15 0.15 0.0861 0.15 0.1566 0.0366 0.0366 0.0366 0.036598 0.07964206674 0.1450115843 0.1349139613 0.09539869461 0.1081544556 0.1453319462 0.095612 0.10844263 0.08 0.1 0.089 0.1} {curve(which) 0 -0.077 0.044 -0.0805 0.06 0.046 0.06 0.06 0.06 -0.102 0.06 0.0177 0.0001 0.0001 0.0001 0.000105 -0.05493795109 0.05109712509 0.03471744128 -0.02937932683 -0.008688175787 0.05161680362 -0.084589 -0.03467857 -0.1 -0.05 -0.087 -0.03}} | |
addUserKnob {12 wxy +DISABLED} | |
wxy {{curve(which) 0.33333 0.32168 0.32168 0.3127 0.3127 0.3127 0.32168 0.3127 0.314 0.3127 0.3127 0.3457 0.3457 0.3457 0.3457 0.345704 0.3216831877 0.3216832104 0.3216832894 0.3216832894 0.3216832104 0.3216832894 0.3127 0.3127 0.3127 0.3127 0.3127 0.3127} {curve(which) 0.33333 0.33767 0.33767 0.329 0.329 0.329 0.33767 0.329 0.351 0.329 0.329 0.3585 0.3585 0.3585 0.3585 0.35854 0.337673316 0.3376736101 0.3376734472 0.3376734472 0.3376736101 0.3376734472 0.329 0.329 0.329 0.329 0.329 0.329}} | |
} | |
Output { | |
name Output | |
xpos -40 | |
ypos 89 | |
} | |
end_group | |
Switch { | |
inputs 2 | |
which {{parent.style}} | |
name Switch_Outline | |
xpos -1910 | |
ypos 398 | |
} | |
Dot { | |
name Dot14 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -1876 | |
ypos 450 | |
} | |
set Nba80040 [stack 0] | |
Colorspace { | |
colorspace_in CIE-XYZ | |
primary_in "Adobe (1998)" | |
colorspace_out CIE-Yxy | |
name Colorspace3 | |
label "\[value colorspace_in] -> \[value colorspace_out]" | |
xpos -1800 | |
ypos 440 | |
} | |
Expression { | |
expr0 r | |
expr1 "4*g / ( -2*g + 12*b + 3)" | |
expr2 "9*b / ( -2*g + 12*b + 3)" | |
name Expression3 | |
label "CIE Yxy to CIELuv" | |
xpos -1800 | |
ypos 512 | |
disable {{!parent.diagram}} | |
} | |
Dot { | |
name Dot6 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -1766 | |
ypos 570 | |
} | |
set N10860ef0 [stack 0] | |
push $Nba80040 | |
ColorMatrix { | |
matrix { | |
{{parent.GamutToXYZ3.ColorMatrix.matrix} {parent.GamutToXYZ3.ColorMatrix.matrix} {parent.GamutToXYZ3.ColorMatrix.matrix}} | |
{{parent.GamutToXYZ3.ColorMatrix.matrix} {parent.GamutToXYZ3.ColorMatrix.matrix} {parent.GamutToXYZ3.ColorMatrix.matrix}} | |
{{parent.GamutToXYZ3.ColorMatrix.matrix} {parent.GamutToXYZ3.ColorMatrix.matrix} {parent.GamutToXYZ3.ColorMatrix.matrix}} | |
} | |
invert true | |
name ColorMatrix2 | |
label "XYZ to working" | |
xpos -1910 | |
ypos 471 | |
disable {{!map_overlays_to_input_gamut}} | |
} | |
Fill { | |
color {1 0.5 0.1 1} | |
name Fill1 | |
xpos -1910 | |
ypos 521 | |
disable {{!parent.colorize_gamut_boundary}} | |
} | |
set N108735c0 [stack 0] | |
Group { | |
inputs 2 | |
name PlotPoints | |
xpos -1800 | |
ypos 614 | |
addUserKnob {20 User} | |
addUserKnob {41 detail l "point detail" T PositionToPoints1.detail} | |
addUserKnob {41 pointSize l "point size" T PositionToPoints1.pointSize} | |
} | |
Input { | |
inputs 0 | |
name Inputpos | |
xpos 510 | |
ypos 588 | |
number 1 | |
} | |
Input { | |
inputs 0 | |
name Inputcol | |
xpos 400 | |
ypos 590 | |
} | |
ShuffleCopy { | |
inputs 2 | |
alpha alpha2 | |
black green | |
white blue | |
red2 red | |
green2 alpha | |
out2 pos | |
name ShuffleCopy1 | |
label "\[value in] | \[value in2] -> \[value out]" | |
xpos 400 | |
ypos 665 | |
} | |
PositionToPoints2 { | |
display textured | |
render_mode textured | |
P_channel pos | |
detail 1 | |
pointSize 1.5 | |
name PositionToPoints1 | |
xpos 400 | |
ypos 742 | |
} | |
Output { | |
name Output | |
xpos 404 | |
ypos 880 | |
} | |
end_group | |
Dot { | |
name Dot18 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -1766 | |
ypos 1266 | |
} | |
Scene { | |
inputs 3 | |
name Scene1 | |
xpos -580 | |
ypos 1242 | |
} | |
push $Nf015710 | |
push $Nf01a7f0 | |
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<ePixelWise>\n\{\n Image<eRead, eAccessRandom, eEdgeClamped> col;\n Image<eRead, eAccessRandom, eEdgeClamped> Yxy;\n Image<eWrite, eAccessRandom> 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\};" | |
useGPUIfAvailable false | |
vectorize false | |
rebuild "" | |
plot_cie_xy_padding {{"parent.diagram? parent.right_margin * 0.72 : parent.right_margin"}} | |
plot_cie_xy_left_margin {{parent.left_margin}} | |
plot_cie_xy_process_input {{parent.plot_input}} | |
format "2048 2048 0 0 2048 2048 1 square_2K" | |
specifiedFormat true | |
rebuild_finalise "" | |
name Plot_Input | |
xpos 180 | |
ypos 608 | |
} | |
set Nd686020 [stack 0] | |
Fill { | |
color 0 | |
name Fill4 | |
selected true | |
xpos -464 | |
ypos 1353 | |
hide_input true | |
} | |
ScanlineRender { | |
inputs 3 | |
conservative_shader_sampling false | |
transparency false | |
ztest_enabled false | |
filter impulse | |
projection_mode orthographic | |
samples 0 | |
shutteroffset centred | |
motion_vectors_type off | |
name ScanlineRender1 | |
xpos -590 | |
ypos 1382 | |
} | |
Dot { | |
name Dot17 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -556 | |
ypos 1482 | |
} | |
push $N10860ef0 | |
push $N108735c0 | |
BlinkScript { | |
inputs 2 | |
recompileCount 2 | |
ProgramGroup 1 | |
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise 3a854edac5c1c8e3a3d2801ec73798509e6e91ec7294287590bd8357a67964d1 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 5 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"antialias\" Bool 1 AA== \"process_input\" Bool 1 AA== \"add_samples\" Float 1 AAAAAA== 5 \"padding\" 1 1 \"left_margin\" 1 1 \"antialias\" 1 1 \"process_input\" 1 1 \"add_samples\" 1 1 2 \"outsize\" Float 1 1 AAAAAA== \"offset\" Float 1 1 AAAAAA==" | |
kernelSource "kernel plot_cie_xy : public ImageComputationKernel<ePixelWise>\n\{\n Image<eRead, eAccessRandom, eEdgeClamped> col;\n Image<eRead, eAccessRandom, eEdgeClamped> Yxy;\n Image<eWrite, eAccessRandom> dst;\n\nparam:\n float padding;\n float left_margin;\n bool antialias;\n bool process_input;\n float add_samples;\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 = float(dst.bounds.height()/padding);\n // xy offset for margin on lower left corner\n offset = dst.bounds.height()*left_margin;\n \}\n\n void write(float posx, float posy, float4 color, float weight=1.0f) \{\n // Check if we are inside the bounds of the output image\n if ( dst.bounds.inside(posx, posy)) \{\n float4 dst_sample = (float4)dst(posx, posy);\n float4 out = dst_sample*add_samples + (color * weight);\n out.w = min(1.0f, out.w);\n dst(posx, posy) = out;\n \}\n \}\n \n void bilin(float2 tpos, float4 color) \{\n float2 p;\n p.x = tpos.x - floor(tpos.x);\n p.y = tpos.y - floor(tpos.y);\n float weights\[] = \{(1.0f-p.x)*(1.0f-p.y), p.x*(1.0f-p.y), (1.0f-p.x)*p.y, p.x*p.y\};\n int2 _position = int2(floor(tpos.x)-0,floor(tpos.y)-0);\n write(_position.x, _position.y, color, weights\[0]);\n write(_position.x+1, _position.y, color, weights\[1]);\n write(_position.x, _position.y+1, color, weights\[2]);\n write(_position.x+1, _position.y+1, color, weights\[3]);\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\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 (antialias) \{\n bilin(out_pos, bilinear(col, i, j));\n \} else \{\n // Remember there is a bug: no keyword arguments inside process()\n // write(out_pos.x, out_pos.y, col(i, j), 1.0f);\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{\n dst(out_pos.x, out_pos.y) = col(i, j);\n \}\n \}\n \}\n \}\n \}\n \}\n\};" | |
useGPUIfAvailable false | |
vectorize false | |
rebuild "" | |
plot_cie_xy_padding {{parent.Plot_Input.plot_cie_xy_padding}} | |
plot_cie_xy_left_margin {{parent.Plot_Input.plot_cie_xy_left_margin}} | |
plot_cie_xy_antialias true | |
plot_cie_xy_process_input true | |
plot_cie_xy_add_samples 0.5 | |
format {{{parent.Plot_Input.format}}} | |
specifiedFormat true | |
rebuild_finalise "" | |
name Plot_Gamut | |
xpos -1910 | |
ypos 604 | |
} | |
Multiply { | |
channels rgba | |
value {{parent.opacity_gamut_overlay}} | |
name GamutOverlayOpacity | |
xpos -1910 | |
ypos 686 | |
disable true | |
} | |
FrameHold { | |
first_frame 1 | |
name FrameHold2 | |
xpos -1910 | |
ypos 764 | |
cached true | |
} | |
Dot { | |
name Dot8 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -1876 | |
ypos 834 | |
} | |
push $Nf273580 | |
push $Nc279f50 | |
BlinkScript { | |
inputs 2 | |
recompileCount 5 | |
ProgramGroup 1 | |
KernelDescription "2 \"plot_cie_xy\" iterate pixelWise 65751dc3c93d46b59ba922fda7175ada4e69018b6dd8c29c890f1487b4a4c5d0 3 \"col\" Read Random \"Yxy\" Read Random \"dst\" Write Random 9 \"padding\" Float 1 AAAAAA== \"left_margin\" Float 1 AAAAAA== \"draw_axes\" Bool 1 AA== \"grid_hatch_length\" Float 1 AAAAAA== \"axis_color\" Float 4 AAAAAAAAAAAAAAAAAAAAAA== \"axis_hatch_color\" Float 4 AAAAAAAAAAAAAAAAAAAAAA== \"antialias\" Bool 1 AA== \"process_input\" Bool 1 AA== \"add_samples\" Float 1 AAAAAA== 9 \"padding\" 1 1 \"left_margin\" 1 1 \"draw_axes\" 1 1 \"grid_hatch_length\" 1 1 \"axis_color\" 4 1 \"axis_hatch_color\" 4 1 \"antialias\" 1 1 \"process_input\" 1 1 \"add_samples\" 1 1 2 \"outsize\" Float 1 1 AAAAAA== \"offset\" Float 1 1 AAAAAA==" | |
kernelSource "kernel plot_cie_xy : public ImageComputationKernel<ePixelWise>\n\{\n Image<eRead, eAccessRandom, eEdgeClamped> col;\n Image<eRead, eAccessRandom, eEdgeClamped> Yxy;\n Image<eWrite, eAccessRandom> dst;\n\nparam:\n float padding;\n float left_margin;\n bool draw_axes;\n float grid_hatch_length;\n float4 axis_color;\n float4 axis_hatch_color;\n bool antialias;\n bool process_input;\n float add_samples;\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 = float(dst.bounds.height()/padding);\n // xy offset for margin on lower left corner\n offset = dst.bounds.height()*left_margin;\n \}\n\n void write(float posx, float posy, float4 color, float weight=1.0f) \{\n // Check if we are inside the bounds of the output image\n if ( dst.bounds.inside(posx, posy)) \{\n float4 dst_sample = (float4)dst(posx, posy);\n float4 out = dst_sample*add_samples + (color * weight);\n out.w = min(1.0f, out.w);\n dst(posx, posy) = out;\n \}\n \}\n \n void bilin(float2 tpos, float4 color) \{\n float2 p;\n p.x = tpos.x - floor(tpos.x);\n p.y = tpos.y - floor(tpos.y);\n float weights\[] = \{(1.0f-p.x)*(1.0f-p.y), p.x*(1.0f-p.y), (1.0f-p.x)*p.y, p.x*p.y\};\n int2 _position = int2(floor(tpos.x)-0,floor(tpos.y)-0);\n write(_position.x, _position.y, color, weights\[0]);\n write(_position.x+1, _position.y, color, weights\[1]);\n write(_position.x, _position.y+1, color, weights\[2]);\n write(_position.x+1, _position.y+1, color, weights\[3]);\n \}\n\n\n void draw_grid() \{\n // grid width in pixels. expresses a 0 to 1 range in CIE xy\n float grid_width = 1.0f * outsize + offset;\n // hatch interval gives us cross-hatching at specified interval in pixels. defaults to 0.1\n int hatch_int = int(round(grid_width - offset) * 0.1f);\n float hatchw = outsize * grid_hatch_length; // The width of the cross-hatch: 1% of grid width\n\n int hatch_ct = 0;\n for ( int i = offset; i < grid_width; i++ ) \{\n // draw vertical axis\n bilin( float2(offset, i), axis_color);\n // draw horizontal axis\n bilin( float2(i, offset), axis_color);\n // draw cross hatches at every \n if (hatch_ct == hatch_int) \{\n hatch_ct = 0;\n for ( int j = -outsize*0.01; j < hatchw; j++) \{\n bilin(float2(round(offset + j), i), axis_hatch_color);\n bilin(float2(i+ (offset-offset), round(offset + j)), axis_hatch_color);\n \}\n \}\n hatch_ct++;\n \}\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\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 (antialias) \{\n bilin(out_pos, bilinear(col, i, j));\n \} else \{\n // Remember there is a bug: no keyword arguments inside process()\n // write(out_pos.x, out_pos.y, col(i, j), 1.0f);\n if ( dst.bounds.inside(out_pos.x, out_pos.y)) \{\n dst(out_pos.x, out_pos.y) = col(i, j);\n \}\n \}\n \}\n \}\n \}\n // Draw axes if enabled\n if (draw_axes) \{\n draw_grid();\n \}\n \}\n\};" | |
useGPUIfAvailable false | |
vectorize false | |
rebuild "" | |
plot_cie_xy_padding {{parent.Plot_Input.plot_cie_xy_padding}} | |
plot_cie_xy_left_margin {{parent.Plot_Input.plot_cie_xy_left_margin}} | |
plot_cie_xy_draw_axes {{parent.draw_axis}} | |
plot_cie_xy_grid_hatch_length {{"parent.full_width_grid ? 1 : 0.01"}} | |
plot_cie_xy_axis_color 0.1 | |
plot_cie_xy_axis_hatch_color 0.02 | |
plot_cie_xy_antialias true | |
plot_cie_xy_process_input {{"parent.draw_spectral_locus || parent.enable_pointers_gamut"}} | |
plot_cie_xy_add_samples 0.7 | |
format {{{parent.Plot_Input.format}}} | |
specifiedFormat true | |
rebuild_finalise "" | |
name Plot_SpectralLocus_and_Axis | |
xpos -700 | |
ypos 643 | |
} | |
FrameHold { | |
first_frame 1 | |
name FrameHold1 | |
xpos -700 | |
ypos 699 | |
cached true | |
} | |
Dot { | |
name Dot3 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -666 | |
ypos 762 | |
} | |
push $Nfcb9c40 | |
Constant { | |
inputs 0 | |
channels rgb | |
color {0 0 0 1} | |
format "256 256 0 0 256 256 1 square_256" | |
name Constant2 | |
xpos 66 | |
ypos 182 | |
postage_stamp false | |
} | |
Switch { | |
inputs 2 | |
which {{"\[exists parent.input0]"}} | |
name Switch1 | |
xpos 66 | |
ypos 240 | |
} | |
Fill { | |
output rgb | |
color {1 0.00634765625 0.00634765625 0.00634765625} | |
name SampleColor | |
xpos -40 | |
ypos 240 | |
} | |
Fill { | |
output alpha | |
name Fill3 | |
xpos -40 | |
ypos 266 | |
} | |
Reformat { | |
type "to box" | |
box_width 1 | |
box_height {{box_width}} | |
box_fixed true | |
name ReformatBox | |
xpos -40 | |
ypos 326 | |
} | |
set Ncc5b2e0 [stack 0] | |
ColorMatrix { | |
matrix { | |
{{parent.GamutToXYZ3.ColorMatrix.matrix} {parent.GamutToXYZ3.ColorMatrix.matrix} {parent.GamutToXYZ3.ColorMatrix.matrix}} | |
{{parent.GamutToXYZ3.ColorMatrix.matrix} {parent.GamutToXYZ3.ColorMatrix.matrix} {parent.GamutToXYZ3.ColorMatrix.matrix}} | |
{{parent.GamutToXYZ3.ColorMatrix.matrix} {parent.GamutToXYZ3.ColorMatrix.matrix} {parent.GamutToXYZ3.ColorMatrix.matrix}} | |
} | |
name ColorMatrix4 | |
label "working to XYZ" | |
xpos -150 | |
ypos 320 | |
} | |
Colorspace { | |
colorspace_in CIE-XYZ | |
primary_in "Adobe (1998)" | |
colorspace_out CIE-Yxy | |
name Colorspace1 | |
label "\[value colorspace_in] -> \[value colorspace_out]" | |
xpos -150 | |
ypos 368 | |
} | |
Expression { | |
expr0 r | |
expr1 "4*g / ( -2*g + 12*b + 3)" | |
expr2 "9*b / ( -2*g + 12*b + 3)" | |
name Expression6 | |
label "CIE Yxy to CIELuv" | |
xpos -150 | |
ypos 416 | |
disable {{!parent.diagram}} | |
} | |
push $Ncc5b2e0 | |
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<ePixelWise>\n\{\n Image<eRead, eAccessRandom, eEdgeClamped> col;\n Image<eRead, eAccessRandom, eEdgeClamped> Yxy;\n Image<eWrite, eAccessRandom> 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\};" | |
useGPUIfAvailable false | |
vectorize false | |
rebuild "" | |
plot_cie_xy_padding {{parent.Plot_Input.plot_cie_xy_padding}} | |
plot_cie_xy_left_margin {{parent.Plot_Input.plot_cie_xy_left_margin}} | |
plot_cie_xy_process_input true | |
format "2048 2048 0 0 2048 2048 1 square_2K" | |
specifiedFormat true | |
rebuild_finalise "" | |
name Plot_SampledColor | |
xpos -40 | |
ypos 416 | |
} | |
set Ndef9a40 [stack 0] | |
Dilate { | |
channels rgba | |
size 10 | |
name Dilate2 | |
label "\[value size]" | |
xpos -150 | |
ypos 464 | |
} | |
Laplacian { | |
channels rgba | |
size {{parent.Dilate1.size*2}} | |
name Laplacian1 | |
xpos -150 | |
ypos 502 | |
} | |
Grade { | |
channels rgba | |
white 0 | |
add {2 0 0 0} | |
white_clamp true | |
unpremult rgba.alpha | |
name Grade1 | |
xpos -150 | |
ypos 539 | |
} | |
CCorrect { | |
contrast 2.6 | |
name CCorrect2 | |
xpos -150 | |
ypos 590 | |
} | |
push $Ndef9a40 | |
Dilate { | |
channels rgba | |
size 4 | |
name Dilate1 | |
label "\[value size]" | |
xpos -40 | |
ypos 487 | |
} | |
Merge2 { | |
inputs 2 | |
bbox B | |
name Merge8 | |
xpos -40 | |
ypos 590 | |
} | |
Dot { | |
name Dot20 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -6 | |
ypos 690 | |
} | |
push $Nd686020 | |
Merge2 { | |
inputs 2 | |
bbox B | |
name Merge7 | |
xpos 180 | |
ypos 686 | |
disable {{!parent.enable_sample_color}} | |
} | |
Merge2 { | |
inputs 2 | |
name Merge1 | |
xpos 180 | |
ypos 758 | |
disable {{"!parent.draw_spectral_locus && !parent.draw_axis"}} | |
} | |
Merge2 { | |
inputs 2 | |
bbox B | |
name Merge2 | |
xpos 180 | |
ypos 830 | |
disable {{!parent.draw_gamut_overlay}} | |
} | |
Blur { | |
channels rgba | |
size 1.5 | |
name Blur1 | |
label "poor man's antialiasing" | |
xpos 180 | |
ypos 1136 | |
} | |
Switch { | |
inputs 2 | |
which {{parent.plot_type}} | |
name Switch_PlotType | |
xpos 180 | |
ypos 1478 | |
} | |
Output { | |
name Output | |
xpos 180 | |
ypos 1641 | |
} | |
end_group | |
Dot { | |
name Dot51 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 3734 | |
ypos 420 | |
} | |
set Nc6fcd30 [stack 0] | |
Dot { | |
name Dot70 | |
xpos 3404 | |
ypos -486 | |
hide_input true | |
} | |
NoOp { | |
name GamutPlot | |
note_font_size 20 | |
xpos 3370 | |
ypos -447 | |
} | |
push $Ncf0e990 | |
Dot { | |
name Dot72 | |
xpos 3294 | |
ypos -486 | |
hide_input true | |
addUserKnob {20 User} | |
addUserKnob {1 input_node} | |
input_node Dot58 | |
} | |
NoOp { | |
name Mapped | |
note_font_size 20 | |
xpos 3260 | |
ypos -446 | |
} | |
push $Nf447430 | |
Dot { | |
name Dot74 | |
xpos 3184 | |
ypos -486 | |
hide_input true | |
} | |
NoOp { | |
name UnMapped | |
note_font_size 20 | |
xpos 3150 | |
ypos -445 | |
} | |
push $Nc6fcd30 | |
Viewer { | |
inputs 10 | |
frame 1 | |
frame_range 52-52 | |
center_fstop 0 | |
colour_sample_bbox {0.41796875 -0.12109375 0.4189453125 -0.1201171875} | |
samplepoints {{-0.08984375 0.1059570312} | |
} | |
viewerProcess "Rec.709 (ACES)" | |
translate {-0.02300000004 0.04399999976} | |
rotate -90 | |
name Viewer3 | |
note_font "Bitstream Vera Sans" | |
xpos 3040 | |
ypos -58 | |
addUserKnob {20 Lock} | |
addUserKnob {6 lock_all_buffers l "lock all buffers" -STARTLINE} | |
addUserKnob {6 lock_buffer_1 l "lock buffer 1" +STARTLINE} | |
addUserKnob {6 lock_buffer_2 l "lock buffer 2" +STARTLINE} | |
addUserKnob {6 lock_buffer_3 l "lock buffer 3" +STARTLINE} | |
addUserKnob {6 lock_buffer_4 l "lock buffer 4" +STARTLINE} | |
addUserKnob {6 lock_buffer_5 l "lock buffer 5" +STARTLINE} | |
addUserKnob {6 lock_buffer_6 l "lock buffer 6" +STARTLINE} | |
addUserKnob {6 lock_buffer_7 l "lock buffer 7" +STARTLINE} | |
addUserKnob {6 lock_buffer_8 l "lock buffer 8" +STARTLINE} | |
addUserKnob {6 lock_buffer_9 l "lock buffer 9" +STARTLINE} | |
addUserKnob {6 lock_buffer_0 l "lock buffer 0" +STARTLINE} | |
} | |
StickyNote { | |
inputs 0 | |
name StickyNote1 | |
tile_color 0x40454aff | |
label "<left><pre><b>Saturation Adjust Method</b>\n 1). Click Calc Max Saturation \n 2). With core threshold at 0, \n increase desat to get all values in gamut\n 3). Bring core threshold / \"confidence gamut\" up as far as you can.\n You need to allow room for the transition between core and compressed area\n\n\n\nThis is a different method which is quite a bit simpler. It relies on a \nsaturation adjustment weighted by the brightest pixel in each color channel,\nmasked by a core gamut. The core gamut is calculated by a saturation key,\nwith a threshold. \n\nThe saturation key must include values above 1 as these values represent \nout of gamut pixel values. The farther they are out of gamut the higher above\n1 they will be. The Calc max saturation button finds the maximum value and sets\nthe max_sat knob to this.\n\nI feel like there might be potential with this approach, especially if there could be \nsome type of weightingin the desat operation so that one could shift the colors\nthat are brought into gamut towards cyan, yellow, magenta.\n\n\n" | |
note_font_size 18 | |
xpos 4085 | |
ypos -104 | |
} | |
push $Nf44c2b0 | |
Group { | |
name GamutCompress3 | |
label "Saturation Adjust" | |
xpos 3480 | |
ypos -57 | |
addUserKnob {20 User} | |
addUserKnob {22 calc_max_sat l "Calculate Max Saturation" t "Calculate the max saturation of the input image. That is, how far out of gamut is the most offending pixel." T "n = nuke.thisNode()\nnuke.root().begin()\nn.begin()\nct = nuke.toNode('CT')\nnuke.execute(ct, nuke.frame(), nuke.frame())\nmaxpx = ct\['maxlumapixvalue'].getValue()\nmaxpx = max(1, maxpx\[0])\nn\['max_sat'].setValue(maxpx)" +STARTLINE} | |
addUserKnob {7 max_sat l "max sat" t "max saturation\ni.e. how far out of gamut is the worst pixel" R 1 1.5} | |
max_sat 1 | |
addUserKnob {7 desat} | |
addUserKnob {7 core_threshold l "core threshold" t "core or \"confidence\" gamut threshold.\n\n1 is a clip. 0 is no confidence gamut."} | |
addUserKnob {20 weights_grp l weights n 1} | |
addUserKnob {7 r_weight} | |
r_weight 1 | |
addUserKnob {7 g_weight} | |
g_weight 1 | |
addUserKnob {7 b_weight} | |
b_weight 1 | |
addUserKnob {20 endGroup n -1} | |
} | |
BackdropNode { | |
inputs 0 | |
name BackdropNode1 | |
tile_color 0x4c4c4c01 | |
label "<left><font size=6><b>Other Failed Ideas</b></font>\n" | |
note_font_size 24 | |
note_font_color 0x1e1e1eff | |
xpos 1639 | |
ypos 214.8 | |
bdwidth 1445 | |
bdheight 880 | |
} | |
Input { | |
inputs 0 | |
name Input | |
xpos 730 | |
ypos 313 | |
} | |
Dot { | |
name Dot68 | |
xpos 764 | |
ypos 402 | |
} | |
set Nc0c8dd0 [stack 0] | |
Dot { | |
name Dot70 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 984 | |
ypos 402 | |
} | |
set N96a6f40 [stack 0] | |
Expression { | |
temp_name0 lum | |
temp_expr0 "max(max(r,g,b), 1e-2)" | |
temp_name1 minpx | |
temp_expr1 min(r,g,b) | |
temp_name2 sat | |
temp_expr2 (lum-minpx)/lum | |
expr0 "lum == 0 ? 1 : sat" | |
expr1 "lum == 0 ? 1 : sat" | |
expr2 "lum == 0 ? 1 : sat" | |
expr3 "lum == 0 ? 1 : sat" | |
name Saturation3 | |
xpos 950 | |
ypos 439 | |
} | |
set Nea84990 [stack 0] | |
Group { | |
name BlurPercent | |
tile_color 0xc4814dff | |
xpos 1081 | |
ypos 439 | |
addUserKnob {20 percentBlur l "Percent Blur"} | |
addUserKnob {41 channels T _BLUR_.channels} | |
addUserKnob {14 percent R 0 100} | |
percent 3 | |
addUserKnob {41 filter T _BLUR_.filter} | |
addUserKnob {41 quality l "" -STARTLINE T _BLUR_.quality} | |
addUserKnob {41 crop l "crop to format" -STARTLINE T _BLUR_.crop} | |
addUserKnob {41 mix T _BLUR_.mix} | |
} | |
Input { | |
inputs 0 | |
name Input | |
xpos 440 | |
ypos -225 | |
} | |
Blur { | |
channels rgba | |
size {{width/3*(percent/100) x1001 6.826666667e+10} {width/3*(percent/100)*(1/pixel_aspect)}} | |
crop false | |
name _BLUR_ | |
xpos 440 | |
ypos -153 | |
addUserKnob {20 User} | |
addUserKnob {7 xpercent l xPercent R 0 100} | |
xpercent 25.5 | |
addUserKnob {7 ypercent l yPercent R 0 100} | |
ypercent {{xpercent}} | |
} | |
Output { | |
name Output1 | |
xpos 440 | |
ypos -81 | |
} | |
end_group | |
CurveTool { | |
operation "Max Luma Pixel" | |
ROI {0 0 {input.width} {input.height}} | |
autocropdata {0 0 {input.width} {input.height}} | |
maxlumapixdata {{curve x1 0 35 85 1431 2047 0 799 1807 3423 1777 5355 x18 3534 x24 2134 x34 1837 x35 1807 1813 x40 1843 x41 1843 1846 1681 1023 186} {curve x1 655 1028 320 849 0 1151 478 532 1795 1807 2565 x18 2750 x24 664 x34 526 x35 595 526 x40 526 x41 526 526 43 1023 303}} | |
maxlumapixvalue {{curve x1 1.434563994 1.409547567 4476280.5 1.143328071 1.060532331 1.110794544 1.057173729 0.9376456141 1.192092896 1.28297925 1.259831667 x18 1.060389042 x24 0.957698822 x34 1.041455269 x35 1.077255249 1.1039536 x40 1.091059685 x41 1.08315599 1.06418395 0.9758271575 1.161405921 1.209861159} {curve x1 1.434563994 1.409547567 4476280.5 1.143328071 1.060532331 1.110794544 1.057173729 0.9376456141 1.192092896 1.28297925 1.259831667 x18 1.060389042 x24 0.957698822 x34 1.041455269 x35 1.077255249 1.1039536 x40 1.091059685 x41 1.08315599 1.06418395 0.9758271575 1.161405921 1.209861159} {curve x1 1.434563994 1.409547567 4476280.5 1.143328071 1.060532331 1.110794544 1.057173729 0.9376456141 1.192092896 1.28297925 1.259831667 x18 1.060389042 x24 0.957698822 x34 1.041455269 x35 1.077255249 1.1039536 x40 1.091059685 x41 1.08315599 1.06418395 0.9758271575 1.161405921 1.209861159}} | |
minlumapixdata {{curve x1 1829 1025 685 1851 1131 99 2449 4069 1330 1807 3909 x18 2082 x24 1258 x34 91 x35 91 1501 x40 91 x41 91 1258 1258 519 522} {curve x1 609 1023 145 347 27 20 721 346 46 57 2553 x18 1969 x24 46 x34 46 x35 46 1030 x40 46 x41 46 46 46 395 395}} | |
minlumapixvalue {{curve x1 8.137147233e-05 0.2395722866 0.0030396441 0.151778549 0.5825394988 0.004060547333 0.07391577214 0.02645999752 0.6499049067 0.6279835701 0.5038699508 x18 0.3795001209 x24 0.5246937275 x34 0.5586354733 x35 0.6015037298 0.5296355486 x40 0.5670491457 x41 0.5622775555 0.5552452803 0.5526627302 0.04067442194 0.04791568592} {curve x1 8.137147233e-05 0.2395722866 0.0030396441 0.151778549 0.5825394988 0.004060547333 0.07391577214 0.02645999752 0.6499049067 0.6279835701 0.5038699508 x18 0.3795001209 x24 0.5246937275 x34 0.5586354733 x35 0.6015037298 0.5296355486 x40 0.5670491457 x41 0.5622775555 0.5552452803 0.5526627302 0.04067442194 0.04791568592} {curve x1 8.137147233e-05 0.2395722866 0.0030396441 0.151778549 0.5825394988 0.004060547333 0.07391577214 0.02645999752 0.6499049067 0.6279835701 0.5038699508 x18 0.3795001209 x24 0.5246937275 x34 0.5586354733 x35 0.6015037298 0.5296355486 x40 0.5670491457 x41 0.5622775555 0.5552452803 0.5526627302 0.04067442194 0.04791568592}} | |
name CT | |
xpos 1081 | |
ypos 481 | |
} | |
push $Nea84990 | |
Expression { | |
expr3 a/pivot | |
name Remap | |
xpos 950 | |
ypos 488 | |
addUserKnob {20 User} | |
addUserKnob {7 pivot R 1 2} | |
pivot {{parent.max_sat}} | |
} | |
Expression { | |
expr3 1-a | |
name Complement2 | |
xpos 950 | |
ypos 535 | |
} | |
Expression { | |
expr0 r | |
expr1 g | |
expr2 b | |
expr3 "1/(wp-bp) * a - 1/(wp-bp) * bp" | |
name WhitepointBlackpoint4 | |
xpos 950 | |
ypos 583 | |
addUserKnob {20 User} | |
addUserKnob {7 wp R 0 2} | |
wp {{1-parent.core_threshold}} | |
addUserKnob {7 bp} | |
} | |
Dot { | |
name Dot1 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 984 | |
ypos 664 | |
} | |
set Nbb21c50 [stack 0] | |
push $Nc0c8dd0 | |
Dot { | |
name Dot2 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 764 | |
ypos 614 | |
} | |
set Nbe3c5e0 [stack 0] | |
Expression { | |
inputs 1+1 | |
temp_name0 lum | |
temp_expr0 max(r,g,b) | |
expr0 (r-lum)*saturation+lum | |
expr1 (g-lum)*saturation+lum | |
expr2 (b-lum)*saturation+lum | |
expr3 a | |
invert_mask true | |
name Saturation | |
label max | |
xpos 840 | |
ypos 741 | |
dope_sheet true | |
addUserKnob {20 User} | |
addUserKnob {7 saturation} | |
saturation {{1-parent.desat}} | |
} | |
push $Nbb21c50 | |
push $Nbe3c5e0 | |
Expression { | |
inputs 1+1 | |
temp_name0 lum | |
temp_expr0 r*weight.x+g*weight.y+b*weight.z | |
expr0 (r-lum)*saturation+lum | |
expr1 (g-lum)*saturation+lum | |
expr2 (b-lum)*saturation+lum | |
expr3 a | |
invert_mask true | |
name Saturation2 | |
label coefficients | |
xpos 950 | |
ypos 741 | |
dope_sheet true | |
addUserKnob {20 User} | |
addUserKnob {13 weight} | |
weight {0.1 0.7 0.2} | |
addUserKnob {7 saturation} | |
saturation {{1-parent.desat}} | |
} | |
push $N96a6f40 | |
Dot { | |
name Dot61 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 1892 | |
ypos 402 | |
} | |
set Nbe3db00 [stack 0] | |
BlinkScript { | |
recompileCount 11 | |
ProgramGroup 1 | |
KernelDescription "2 \"ACES_rrt_sweeteners\" iterate pixelWise f8a9ce320f06d7e170d1557518df73160acb98a9d89a22f03ddd75c61a3f7f73 2 \"src\" Read Point \"dst\" Write Point 5 \"RRT_RED_SCALE\" Float 1 AAAAAA== \"RRT_RED_PIVOT\" Float 1 AAAAAA== \"RRT_RED_HUE\" Float 1 AAAAAA== \"RRT_RED_WIDTH\" Float 1 AAAAAA== \"invert\" Bool 1 AA== 5 \"RRT_RED_SCALE\" 1 1 \"RRT_RED_PIVOT\" 1 1 \"RRT_RED_HUE\" 1 1 \"RRT_RED_WIDTH\" 1 1 \"invert\" 1 1 0" | |
kernelSource "kernel ACES_rrt_sweeteners : public ImageComputationKernel<ePixelWise>\n\{\n Image<eRead, eAccessPoint, eEdgeClamped> src;\n Image<eWrite> dst;\n\nparam:\n // User controllable parameters\n float RRT_RED_SCALE;\n float RRT_RED_PIVOT;\n float RRT_RED_HUE;\n float RRT_RED_WIDTH;\n bool invert;\n\n // // Red modifier constants\n // RRT_RED_SCALE = 0.82;\n // RRT_RED_PIVOT = 0.03;\n // RRT_RED_HUE = 0.;\n // RRT_RED_WIDTH = 135.;\n\n\n float min_f3(float3 a) \{\n return min( a.x, min( a.y, a.z));\n \}\n\n float max_f3(float3 a) \{\n return max( a.x, max( a.y, a.z));\n \}\n\n float rgb_2_saturation( float3 rgb ) \{\n return ( max( max_f3(rgb), 1e-10) - max( min_f3(rgb), 1e-10)) / max( max_f3(rgb), 1e-2);\n \}\n\n float sigmoid_shaper( float x) \{\n float t = max( float(1. - fabs( float(x / 2.))), float(0));\n float y = 1. + sign(float(x)) * (1. - t * t);\n return y / 2.;\n \}\n\n float rgb_2_yc( float3 rgb, float ycRadiusWeight) \{\n // keyword arguments don't work with blink.. ycRadiusWeight default if not specified was 1.75\n float r = rgb.x; \n float g = rgb.y; \n float b = rgb.z;\n float chroma = sqrt(float(b*(b-g)+g*(g-r)+r*(r-b)));\n return ( b + g + r + ycRadiusWeight * chroma) / 3.;\n \}\n\n // ------- Glow module functions\n float glow_fwd( float ycIn, float glowGainIn, float glowMid) \{\n float glowGainOut;\n if (ycIn <= 2./3. * glowMid) \{\n glowGainOut = glowGainIn;\n \} else if ( ycIn >= 2. * glowMid) \{\n glowGainOut = 0.;\n \} else \{\n glowGainOut = glowGainIn * (glowMid / ycIn - 1./2.);\n \}\n return glowGainOut;\n \}\n\n // Transformations from RGB to other color representations\n float rgb_2_hue( float3 rgb) \n \{\n // Returns a geometric hue angle in degrees (0-360) based on RGB values.\n // For neutral colors, hue is undefined and the function will return a quiet NaN value.\n float hue;\n if (rgb.x == rgb.y && rgb.y == rgb.z) \{\n hue = 0.; // RGB triplets where RGB are equal have an undefined hue\n \} else \{\n hue = (180./3.14159265359) * atan2( sqrt(3)*(rgb.y-rgb.z), 2*rgb.x-rgb.y-rgb.z);\n \}\n if (hue < 0.) hue = hue + 360.;\n return hue;\n \}\n\n float center_hue( float hue, float centerH) \{\n float hueCentered = hue - centerH;\n if (hueCentered < -180.) hueCentered = hueCentered + 360.;\n else if (hueCentered > 180.) hueCentered = hueCentered - 360.;\n return hueCentered;\n \}\n\n float cubic_basis_shaper( float x, float w) \{\n float M\[4]\[4] = \{ \{ -1./6, 3./6, -3./6, 1./6 \},\n \{ 3./6, -6./6, 3./6, 0./6 \},\n \{ -3./6, 0./6, 3./6, 0./6 \},\n \{ 1./6, 4./6, 1./6, 0./6 \} \};\n \n double knots\[5] = \{ -w/2.,\n -w/4.,\n 0.,\n w/4.,\n w/2. \};\n float y = 0;\n if ((x > knots\[0]) && (x < knots\[4])) \{ \n float knot_coord = (x - knots\[0]) * 4./w; \n int j = knot_coord;\n float t = knot_coord - j;\n float monomials\[4] = \{ t*t*t, t*t, t, 1. \};\n // (if/else structure required for compatibility with CTL < v1.5.)\n if ( j == 3) \{\n y = monomials\[0] * M\[0]\[0] + monomials\[1] * M\[1]\[0] + \n monomials\[2] * M\[2]\[0] + monomials\[3] * M\[3]\[0];\n \} else if ( j == 2) \{\n y = monomials\[0] * M\[0]\[1] + monomials\[1] * M\[1]\[1] + \n monomials\[2] * M\[2]\[1] + monomials\[3] * M\[3]\[1];\n \} else if ( j == 1) \{\n y = monomials\[0] * M\[0]\[2] + monomials\[1] * M\[1]\[2] + \n monomials\[2] * M\[2]\[2] + monomials\[3] * M\[3]\[2];\n \} else if ( j == 0) \{\n y = monomials\[0] * M\[0]\[3] + monomials\[1] * M\[1]\[3] + \n monomials\[2] * M\[2]\[3] + monomials\[3] * M\[3]\[3];\n \} else \{\n y = 0.0;\n \}\n \}\n return y * 3/2.;\n \}\n\n\n void process() \{\n float3 aces = float3(src().x, src().y, src().z);\n\n float saturation = rgb_2_saturation(aces);\n\n // --- Red modifier --- //\n float hue = rgb_2_hue( aces);\n float centeredHue = center_hue( hue, RRT_RED_HUE);\n float hueWeight = cubic_basis_shaper( centeredHue, RRT_RED_WIDTH);\n\n if ( invert == 0 ) \{\n aces.x = aces.x + hueWeight * saturation * (RRT_RED_PIVOT - aces.x) * (1. - RRT_RED_SCALE);\n \} \n else \{ // invert red modifier: note that this is not mathematically perfect\n float minChan;\n if (centeredHue < 0) \{ // min_f3(aces) = aces\[1] (i.e. magenta-red)\n minChan = aces.y;\n \} else \{ // min_f3(aces) = aces\[2] (i.e. yellow-red)\n minChan = aces.z;\n \}\n float a = hueWeight * (1. - RRT_RED_SCALE) - 1.;\n float b = aces.x - hueWeight * (RRT_RED_PIVOT + minChan) * (1. - RRT_RED_SCALE);\n float c = hueWeight * RRT_RED_PIVOT * minChan * (1. - RRT_RED_SCALE);\n aces.x = ( -b - sqrt( float(b * b - 4. * a * c )) ) / ( 2. * a);\n \}\n\n //dst() = float4(aces.x, aces.y, aces.z, src().w);\n dst() = float4(hue/360.0, centeredHue/360.0, aces.x, hueWeight);\n \}\n\};" | |
rebuild "" | |
ACES_rrt_sweeteners_RRT_RED_SCALE 1 | |
ACES_rrt_sweeteners_RRT_RED_PIVOT 1 | |
ACES_rrt_sweeteners_RRT_RED_HUE {{parent.rrt_sweetener_red_modifier1.ACES_rrt_sweeteners_RRT_RED_HUE+240}} | |
ACES_rrt_sweeteners_RRT_RED_WIDTH {{parent.rrt_sweetener_red_modifier1.ACES_rrt_sweeteners_RRT_RED_WIDTH}} | |
rebuild_finalise "" | |
name rrt_sweetener_red_modifier3 | |
xpos 1749 | |
ypos 462 | |
} | |
push 0 | |
push $Nbe3db00 | |
BlinkScript { | |
recompileCount 11 | |
ProgramGroup 1 | |
KernelDescription "2 \"ACES_rrt_sweeteners\" iterate pixelWise f8a9ce320f06d7e170d1557518df73160acb98a9d89a22f03ddd75c61a3f7f73 2 \"src\" Read Point \"dst\" Write Point 5 \"RRT_RED_SCALE\" Float 1 AAAAAA== \"RRT_RED_PIVOT\" Float 1 AAAAAA== \"RRT_RED_HUE\" Float 1 AAAAAA== \"RRT_RED_WIDTH\" Float 1 AAAAAA== \"invert\" Bool 1 AA== 5 \"RRT_RED_SCALE\" 1 1 \"RRT_RED_PIVOT\" 1 1 \"RRT_RED_HUE\" 1 1 \"RRT_RED_WIDTH\" 1 1 \"invert\" 1 1 0" | |
kernelSource "kernel ACES_rrt_sweeteners : public ImageComputationKernel<ePixelWise>\n\{\n Image<eRead, eAccessPoint, eEdgeClamped> src;\n Image<eWrite> dst;\n\nparam:\n // User controllable parameters\n float RRT_RED_SCALE;\n float RRT_RED_PIVOT;\n float RRT_RED_HUE;\n float RRT_RED_WIDTH;\n bool invert;\n\n // // Red modifier constants\n // RRT_RED_SCALE = 0.82;\n // RRT_RED_PIVOT = 0.03;\n // RRT_RED_HUE = 0.;\n // RRT_RED_WIDTH = 135.;\n\n\n float min_f3(float3 a) \{\n return min( a.x, min( a.y, a.z));\n \}\n\n float max_f3(float3 a) \{\n return max( a.x, max( a.y, a.z));\n \}\n\n float rgb_2_saturation( float3 rgb ) \{\n return ( max( max_f3(rgb), 1e-10) - max( min_f3(rgb), 1e-10)) / max( max_f3(rgb), 1e-2);\n \}\n\n float sigmoid_shaper( float x) \{\n float t = max( float(1. - fabs( float(x / 2.))), float(0));\n float y = 1. + sign(float(x)) * (1. - t * t);\n return y / 2.;\n \}\n\n float rgb_2_yc( float3 rgb, float ycRadiusWeight) \{\n // keyword arguments don't work with blink.. ycRadiusWeight default if not specified was 1.75\n float r = rgb.x; \n float g = rgb.y; \n float b = rgb.z;\n float chroma = sqrt(float(b*(b-g)+g*(g-r)+r*(r-b)));\n return ( b + g + r + ycRadiusWeight * chroma) / 3.;\n \}\n\n // ------- Glow module functions\n float glow_fwd( float ycIn, float glowGainIn, float glowMid) \{\n float glowGainOut;\n if (ycIn <= 2./3. * glowMid) \{\n glowGainOut = glowGainIn;\n \} else if ( ycIn >= 2. * glowMid) \{\n glowGainOut = 0.;\n \} else \{\n glowGainOut = glowGainIn * (glowMid / ycIn - 1./2.);\n \}\n return glowGainOut;\n \}\n\n // Transformations from RGB to other color representations\n float rgb_2_hue( float3 rgb) \n \{\n // Returns a geometric hue angle in degrees (0-360) based on RGB values.\n // For neutral colors, hue is undefined and the function will return a quiet NaN value.\n float hue;\n if (rgb.x == rgb.y && rgb.y == rgb.z) \{\n hue = 0.; // RGB triplets where RGB are equal have an undefined hue\n \} else \{\n hue = (180./3.14159265359) * atan2( sqrt(3)*(rgb.y-rgb.z), 2*rgb.x-rgb.y-rgb.z);\n \}\n if (hue < 0.) hue = hue + 360.;\n return hue;\n \}\n\n float center_hue( float hue, float centerH) \{\n float hueCentered = hue - centerH;\n if (hueCentered < -180.) hueCentered = hueCentered + 360.;\n else if (hueCentered > 180.) hueCentered = hueCentered - 360.;\n return hueCentered;\n \}\n\n float cubic_basis_shaper( float x, float w) \{\n float M\[4]\[4] = \{ \{ -1./6, 3./6, -3./6, 1./6 \},\n \{ 3./6, -6./6, 3./6, 0./6 \},\n \{ -3./6, 0./6, 3./6, 0./6 \},\n \{ 1./6, 4./6, 1./6, 0./6 \} \};\n \n double knots\[5] = \{ -w/2.,\n -w/4.,\n 0.,\n w/4.,\n w/2. \};\n float y = 0;\n if ((x > knots\[0]) && (x < knots\[4])) \{ \n float knot_coord = (x - knots\[0]) * 4./w; \n int j = knot_coord;\n float t = knot_coord - j;\n float monomials\[4] = \{ t*t*t, t*t, t, 1. \};\n // (if/else structure required for compatibility with CTL < v1.5.)\n if ( j == 3) \{\n y = monomials\[0] * M\[0]\[0] + monomials\[1] * M\[1]\[0] + \n monomials\[2] * M\[2]\[0] + monomials\[3] * M\[3]\[0];\n \} else if ( j == 2) \{\n y = monomials\[0] * M\[0]\[1] + monomials\[1] * M\[1]\[1] + \n monomials\[2] * M\[2]\[1] + monomials\[3] * M\[3]\[1];\n \} else if ( j == 1) \{\n y = monomials\[0] * M\[0]\[2] + monomials\[1] * M\[1]\[2] + \n monomials\[2] * M\[2]\[2] + monomials\[3] * M\[3]\[2];\n \} else if ( j == 0) \{\n y = monomials\[0] * M\[0]\[3] + monomials\[1] * M\[1]\[3] + \n monomials\[2] * M\[2]\[3] + monomials\[3] * M\[3]\[3];\n \} else \{\n y = 0.0;\n \}\n \}\n return y * 3/2.;\n \}\n\n\n void process() \{\n float3 aces = float3(src().x, src().y, src().z);\n\n float saturation = rgb_2_saturation(aces);\n\n // --- Red modifier --- //\n float hue = rgb_2_hue( aces);\n float centeredHue = center_hue( hue, RRT_RED_HUE);\n float hueWeight = cubic_basis_shaper( centeredHue, RRT_RED_WIDTH);\n\n if ( invert == 0 ) \{\n aces.x = aces.x + hueWeight * saturation * (RRT_RED_PIVOT - aces.x) * (1. - RRT_RED_SCALE);\n \} \n else \{ // invert red modifier: note that this is not mathematically perfect\n float minChan;\n if (centeredHue < 0) \{ // min_f3(aces) = aces\[1] (i.e. magenta-red)\n minChan = aces.y;\n \} else \{ // min_f3(aces) = aces\[2] (i.e. yellow-red)\n minChan = aces.z;\n \}\n float a = hueWeight * (1. - RRT_RED_SCALE) - 1.;\n float b = aces.x - hueWeight * (RRT_RED_PIVOT + minChan) * (1. - RRT_RED_SCALE);\n float c = hueWeight * RRT_RED_PIVOT * minChan * (1. - RRT_RED_SCALE);\n aces.x = ( -b - sqrt( float(b * b - 4. * a * c )) ) / ( 2. * a);\n \}\n\n //dst() = float4(aces.x, aces.y, aces.z, src().w);\n dst() = float4(hue/360.0, centeredHue/360.0, aces.x, hueWeight);\n \}\n\};" | |
rebuild "" | |
ACES_rrt_sweeteners_RRT_RED_SCALE 1 | |
ACES_rrt_sweeteners_RRT_RED_PIVOT 1 | |
ACES_rrt_sweeteners_RRT_RED_HUE {{parent.rrt_sweetener_red_modifier1.ACES_rrt_sweeteners_RRT_RED_HUE+120}} | |
ACES_rrt_sweeteners_RRT_RED_WIDTH {{parent.rrt_sweetener_red_modifier1.ACES_rrt_sweeteners_RRT_RED_WIDTH}} | |
rebuild_finalise "" | |
name rrt_sweetener_red_modifier2 | |
xpos 1858 | |
ypos 464 | |
} | |
push $Nbe3db00 | |
BlinkScript { | |
recompileCount 12 | |
ProgramGroup 1 | |
KernelDescription "2 \"ACES_rrt_sweeteners\" iterate pixelWise 525953e4a603c811da0cfa6bf8fda5775d0803ca6090c445a640ce77d1fee80c 2 \"src\" Read Point \"dst\" Write Point 5 \"RRT_RED_SCALE\" Float 1 AAAAAA== \"RRT_RED_PIVOT\" Float 1 AAAAAA== \"RRT_RED_HUE\" Float 1 AAAAAA== \"RRT_RED_WIDTH\" Float 1 AAAAAA== \"invert\" Bool 1 AA== 5 \"RRT_RED_SCALE\" 1 1 \"RRT_RED_PIVOT\" 1 1 \"RRT_RED_HUE\" 1 1 \"RRT_RED_WIDTH\" 1 1 \"invert\" 1 1 0" | |
kernelSource "kernel ACES_rrt_sweeteners : public ImageComputationKernel<ePixelWise>\n\{\n Image<eRead, eAccessPoint, eEdgeClamped> src;\n Image<eWrite> dst;\n\nparam:\n // User controllable parameters\n float RRT_RED_SCALE;\n float RRT_RED_PIVOT;\n float RRT_RED_HUE;\n float RRT_RED_WIDTH;\n bool invert;\n\n // // Red modifier constants\n // RRT_RED_SCALE = 0.82;\n // RRT_RED_PIVOT = 0.03;\n // RRT_RED_HUE = 0.;\n // RRT_RED_WIDTH = 135.;\n\n\n float min_f3(float3 a) \{\n return min( a.x, min( a.y, a.z));\n \}\n\n float max_f3(float3 a) \{\n return max( a.x, max( a.y, a.z));\n \}\n\n float rgb_2_saturation( float3 rgb ) \{\n return ( max( max_f3(rgb), 1e-10) - max( min_f3(rgb), 1e-10)) / max( max_f3(rgb), 1e-2);\n \}\n\n float sigmoid_shaper( float x) \{\n float t = max( float(1. - fabs( float(x / 2.))), float(0));\n float y = 1. + sign(float(x)) * (1. - t * t);\n return y / 2.;\n \}\n\n float rgb_2_yc( float3 rgb, float ycRadiusWeight) \{\n // keyword arguments don't work with blink.. ycRadiusWeight default if not specified was 1.75\n float r = rgb.x; \n float g = rgb.y; \n float b = rgb.z;\n float chroma = sqrt(float(b*(b-g)+g*(g-r)+r*(r-b)));\n return ( b + g + r + ycRadiusWeight * chroma) / 3.;\n \}\n\n // ------- Glow module functions\n float glow_fwd( float ycIn, float glowGainIn, float glowMid) \{\n float glowGainOut;\n if (ycIn <= 2./3. * glowMid) \{\n glowGainOut = glowGainIn;\n \} else if ( ycIn >= 2. * glowMid) \{\n glowGainOut = 0.;\n \} else \{\n glowGainOut = glowGainIn * (glowMid / ycIn - 1./2.);\n \}\n return glowGainOut;\n \}\n\n // Transformations from RGB to other color representations\n float rgb_2_hue( float3 rgb) \n \{\n // Returns a geometric hue angle in degrees (0-360) based on RGB values.\n // For neutral colors, hue is undefined and the function will return a quiet NaN value.\n float hue;\n if (rgb.x == rgb.y && rgb.y == rgb.z) \{\n hue = 0.; // RGB triplets where RGB are equal have an undefined hue\n \} else \{\n hue = (180./3.14159265359) * atan2( sqrt(3)*(rgb.y-rgb.z), 2*rgb.x-rgb.y-rgb.z);\n \}\n if (hue < 0.) hue = hue + 360.;\n return hue;\n \}\n\n float center_hue( float hue, float centerH) \{\n float hueCentered = hue - centerH;\n if (hueCentered < -180.) hueCentered = hueCentered + 360.;\n else if (hueCentered > 180.) hueCentered = hueCentered - 360.;\n return hueCentered;\n \}\n\n float cubic_basis_shaper( float x, float w) \{\n float M\[4]\[4] = \{ \{ -1./6, 3./6, -3./6, 1./6 \},\n \{ 3./6, -6./6, 3./6, 0./6 \},\n \{ -3./6, 0./6, 3./6, 0./6 \},\n \{ 1./6, 4./6, 1./6, 0./6 \} \};\n \n double knots\[5] = \{ -w/2.,\n -w/4.,\n 0.,\n w/4.,\n w/2. \};\n float y = 0;\n if ((x > knots\[0]) && (x < knots\[4])) \{ \n float knot_coord = (x - knots\[0]) * 4./w; \n int j = knot_coord;\n float t = knot_coord - j;\n float monomials\[4] = \{ t*t*t, t*t, t, 1. \};\n // (if/else structure required for compatibility with CTL < v1.5.)\n if ( j == 3) \{\n y = monomials\[0] * M\[0]\[0] + monomials\[1] * M\[1]\[0] + \n monomials\[2] * M\[2]\[0] + monomials\[3] * M\[3]\[0];\n \} else if ( j == 2) \{\n y = monomials\[0] * M\[0]\[1] + monomials\[1] * M\[1]\[1] + \n monomials\[2] * M\[2]\[1] + monomials\[3] * M\[3]\[1];\n \} else if ( j == 1) \{\n y = monomials\[0] * M\[0]\[2] + monomials\[1] * M\[1]\[2] + \n monomials\[2] * M\[2]\[2] + monomials\[3] * M\[3]\[2];\n \} else if ( j == 0) \{\n y = monomials\[0] * M\[0]\[3] + monomials\[1] * M\[1]\[3] + \n monomials\[2] * M\[2]\[3] + monomials\[3] * M\[3]\[3];\n \} else \{\n y = 0.0;\n \}\n \}\n return y * 3/2.;\n \}\n\n\n void process() \{\n float3 aces = float3(src().x, src().y, src().z);\n\n float saturation = rgb_2_saturation(aces);\n\n // --- Red modifier --- //\n float hue = rgb_2_hue( aces);\n float centeredHue = center_hue( hue, RRT_RED_HUE);\n float hueWeight = cubic_basis_shaper( centeredHue, RRT_RED_WIDTH);\n\n if ( invert == 0 ) \{\n aces.x = aces.x + hueWeight * saturation * (RRT_RED_PIVOT - aces.x) * (1. - RRT_RED_SCALE);\n \} \n else \{ // invert red modifier: note that this is not mathematically perfect\n float minChan;\n if (centeredHue < 0) \{ // min_f3(aces) = aces\[1] (i.e. magenta-red)\n minChan = aces.y;\n \} else \{ // min_f3(aces) = aces\[2] (i.e. yellow-red)\n minChan = aces.z;\n \}\n float a = hueWeight * (1. - RRT_RED_SCALE) - 1.;\n float b = aces.x - hueWeight * (RRT_RED_PIVOT + minChan) * (1. - RRT_RED_SCALE);\n float c = hueWeight * RRT_RED_PIVOT * minChan * (1. - RRT_RED_SCALE);\n aces.x = ( -b - sqrt( float(b * b - 4. * a * c )) ) / ( 2. * a);\n \}\n\n //dst() = float4(aces.x, aces.y, aces.z, src().w);\n dst() = float4(hue/360.0, centeredHue/360.0, aces.x, hueWeight);\n \}\n\};" | |
rebuild "" | |
ACES_rrt_sweeteners_RRT_RED_SCALE 1 | |
ACES_rrt_sweeteners_RRT_RED_PIVOT 1 | |
ACES_rrt_sweeteners_RRT_RED_WIDTH 360 | |
rebuild_finalise "" | |
name rrt_sweetener_red_modifier1 | |
xpos 1967 | |
ypos 462 | |
} | |
Merge2 { | |
inputs 3+1 | |
operation screen | |
name Merge2 | |
xpos 1858 | |
ypos 535 | |
} | |
Group { | |
name SoftCompress1 | |
label "direction: \[knob direction]" | |
xpos 1858 | |
ypos 595 | |
disable true | |
addUserKnob {20 SoftCompress} | |
addUserKnob {7 slope t "The softness of the compressing curve's slope. 0 is a clamp."} | |
slope 1 | |
addUserKnob {7 threshold t "The minimum threshold. Values below this number will not be affected." R 0 2} | |
threshold 0.75 | |
addUserKnob {7 limit t "The asymptotic maximum value. For example, the value that inf becomes." R 0 2} | |
limit 1 | |
addUserKnob {4 direction M {forward inverse}} | |
} | |
Input { | |
inputs 0 | |
name InputMask | |
xpos -590 | |
ypos 806 | |
number 1 | |
} | |
Input { | |
inputs 0 | |
name Input | |
xpos -810 | |
ypos 494 | |
} | |
Dot { | |
name Dot1 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -776 | |
ypos 546 | |
} | |
set Nd014320 [stack 0] | |
Expression { | |
temp_name0 sl | |
temp_expr0 "(1-slope)*(max(0, limit-threshold))" | |
temp_name1 th | |
temp_expr1 threshold | |
temp_name2 lim | |
temp_expr2 "max(0, (limit-threshold))" | |
expr0 "r < th + sl ? r : (pow(sl, 2) + 2 * sl * th - 2 * sl * r + pow(th, 2) - th * r + lim * r)/(th + lim - r)" | |
expr1 "g < th + sl ? g : (pow(sl, 2) + 2 * sl * th - 2 * sl * g + pow(th, 2) - th * g + lim * g)/(th + lim - g)" | |
expr2 "b < th + sl ? b : (pow(sl, 2) + 2 * sl * th - 2 * sl * b + pow(th, 2) - th * b + lim * b)/(th + lim - b)" | |
expr3 "a < th + sl ? a : (pow(sl, 2) + 2 * sl * th - 2 * sl * a + pow(th, 2) - th * a + lim * a)/(th + lim - a)" | |
name SoftCompress_inverse | |
xpos -702 | |
ypos 636 | |
addUserKnob {20 Params_tab l Params} | |
addUserKnob {7 slope} | |
slope {{parent.slope}} | |
addUserKnob {7 threshold R 0 25} | |
threshold {{parent.threshold}} | |
addUserKnob {7 limit R 0 25} | |
limit {{parent.limit}} | |
} | |
push $Nd014320 | |
Expression { | |
temp_name0 sl | |
temp_expr0 "(1-slope)*(max(0, limit-threshold))" | |
temp_name1 th | |
temp_expr1 "min(threshold, limit)" | |
temp_name2 lim | |
temp_expr2 "max(0, (limit-threshold))" | |
expr0 "r < th + sl ? r : th + (-1 / ((r - th - sl) / (lim - sl) + 1) + 1) * (lim - sl) + sl" | |
expr1 "g < th + sl ? g : th + (-1 / ((g - th - sl) / (lim - sl) + 1) + 1) * (lim - sl) + sl" | |
expr2 "b < th + sl ? b : th + (-1 / ((b - th - sl) / (lim - sl) + 1) + 1) * (lim - sl) + sl" | |
expr3 "a < th + sl ? a : th + (-1 / ((a - th - sl) / (lim - sl) + 1) + 1) * (lim - sl) + sl" | |
name SoftCompress | |
xpos -921 | |
ypos 639 | |
addUserKnob {20 Params_tab l Params} | |
addUserKnob {7 slope} | |
slope {{parent.slope}} | |
addUserKnob {7 threshold R 0 25} | |
threshold {{parent.threshold}} | |
addUserKnob {7 limit R 0 25} | |
limit {{parent.limit}} | |
} | |
Switch { | |
inputs 2 | |
which {{parent.direction}} | |
name SwitchDirection | |
xpos -810 | |
ypos 709 | |
} | |
push $Nd014320 | |
Dot { | |
name Dot2 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -996 | |
ypos 546 | |
} | |
Dot { | |
name Dot3 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -996 | |
ypos 810 | |
} | |
NodeWrapper { | |
inputs 2+1 | |
channels rgba | |
name NodeWrapper1 | |
xpos -810 | |
ypos 806 | |
} | |
Output { | |
name Output | |
xpos -810 | |
ypos 926 | |
} | |
end_group | |
Fill { | |
name Fill1 | |
xpos 1858 | |
ypos 649 | |
disable true | |
} | |
Gamma { | |
channels rgba | |
name Gamma1 | |
xpos 1858 | |
ypos 699 | |
} | |
Expression { | |
expr0 r | |
expr1 g | |
expr2 b | |
expr3 "1/(wp-bp) * a - 1/(wp-bp) * bp" | |
name WhitepointBlackpoint3 | |
xpos 1858 | |
ypos 745 | |
addUserKnob {20 User} | |
addUserKnob {7 wp R 0 2} | |
wp 0.48 | |
addUserKnob {7 bp} | |
} | |
Clamp { | |
channels rgba | |
name Clamp1 | |
xpos 1858 | |
ypos 781 | |
disable true | |
} | |
Merge2 { | |
operation stencil | |
bbox B | |
name Merge1 | |
xpos 1858 | |
ypos 866 | |
} | |
push $Nbe3db00 | |
Dot { | |
name Dot3 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 2258 | |
ypos 402 | |
} | |
set Nd71b180 [stack 0] | |
Dot { | |
name Dot4 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 2258 | |
ypos 469 | |
} | |
set Nd5817b0 [stack 0] | |
Dot { | |
name Dot12 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 2404 | |
ypos 469 | |
} | |
set Nb0d4550 [stack 0] | |
Dot { | |
name Dot5 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 2734 | |
ypos 469 | |
} | |
Dot { | |
name Dot13 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 2734 | |
ypos 565 | |
} | |
set Ndeac620 [stack 0] | |
Expression { | |
expr3 "max(0, (r-g))/r" | |
name Expression4 | |
label "magenta sat" | |
xpos 2700 | |
ypos 610 | |
} | |
push $Ndeac620 | |
Expression { | |
expr3 "max(0, (g-b))/g" | |
name Expression10 | |
label "green sat" | |
xpos 2911 | |
ypos 610 | |
} | |
push $Ndeac620 | |
Expression { | |
expr3 "max(0, (r-b))/r" | |
name Expression7 | |
label "yellow sat" | |
xpos 2808 | |
ypos 610 | |
} | |
push $Ndeac620 | |
Expression { | |
temp_name0 w | |
temp_expr0 b | |
temp_name1 z | |
temp_expr1 r | |
expr3 "max(0, (w-z))/w" | |
name Expression9 | |
label "blue sat" | |
xpos 2592 | |
ypos 610 | |
} | |
push $Nb0d4550 | |
Expression { | |
expr3 "max(0, (b-g))/b" | |
name Expression8 | |
label "blue magenta sat" | |
xpos 2484 | |
ypos 610 | |
} | |
push $Nb0d4550 | |
Expression { | |
expr3 "max(0, (g-r))/g" | |
name Expression6 | |
label "cyan sat" | |
xpos 2370 | |
ypos 610 | |
} | |
StickyNote { | |
inputs 0 | |
name StickyNote1 | |
tile_color 0x40454aff | |
label "<left><pre>\nUse sigmoid shaper hue keyer function from \nRRT red modifier to adjust hue angles independently" | |
note_font_size 18 | |
xpos 1703 | |
ypos 325 | |
} | |
push $Nd5817b0 | |
Expression { | |
temp_name0 lum | |
temp_expr0 max(r,g,b) | |
temp_name1 minpx | |
temp_expr1 min(r,g,b) | |
temp_name2 sat | |
temp_expr2 (lum-minpx)/lum | |
expr0 0 | |
expr1 0 | |
expr2 0 | |
expr3 sat | |
name SatMask | |
xpos 2224 | |
ypos 611 | |
} | |
push $Nd71b180 | |
Dot { | |
name Dot60 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos 2159 | |
ypos 508 | |
} | |
set Nea5f250 [stack 0] | |
Expression { | |
expr3 "(max( max(r,g,b), 1e-10) - max( min(r,g,b), 1e-10)) / max( max(r,g,b), 1e-2)" | |
name RGB_to_Saturation | |
xpos 2015 | |
ypos 576 | |
} | |
push $Nea5f250 | |
Expression { | |
temp_name1 hue | |
temp_expr1 "( atan2( sqrt(3) * (g-b), 2 * r - g - b) / pi +1 ) / 2" | |
expr3 hue | |
name RGB_to_Hue | |
xpos 2125 | |
ypos 576 | |
} | |
ColorLookup { | |
inputs 0 | |
lut {master {curve L 0 1 s0} | |
red {} | |
green {} | |
blue {} | |
alpha {}} | |
name ColorLookup2 | |
label "smoothstep - \\n changes falloff, but doesn't really help" | |
xpos 1190 | |
ypos 551 | |
disable true | |
} | |
StickyNote { | |
inputs 0 | |
name StickyNote2 | |
tile_color 0x40454aff | |
label "<left><pre>\nUse different hue saturation masks to control different hue angles\nindependently. Might be better done in the desaturation algorithm" | |
note_font_size 18 | |
xpos 2298 | |
ypos 383 | |
} | |
StickyNote { | |
inputs 0 | |
name StickyNote3 | |
tile_color 0x40454aff | |
label "<left><pre>\nRotate hue 45 degrees before desat\nmakes rgb weights cmy weights" | |
note_font_size 18 | |
xpos 1255 | |
ypos 713 | |
} | |
push $Nbb21c50 | |
push $Nbe3c5e0 | |
HueShift { | |
color {1 1 1} | |
hue_rotation -45 | |
name HueShift1 | |
xpos 1272 | |
ypos 664 | |
} | |
Expression { | |
inputs 1+1 | |
temp_name0 lum | |
temp_expr0 "max(r*weight.x, g*weight.y, b*weight.z)" | |
temp_name1 lum2 | |
temp_expr1 (g+b)/2 | |
expr0 (r-lum)*saturation+lum | |
expr1 (g-lum)*saturation+lum | |
expr2 (b-lum)*saturation+lum | |
expr3 a | |
invert_mask true | |
name Saturation4 | |
label weighted | |
xpos 1120 | |
ypos 737 | |
dope_sheet true | |
addUserKnob {20 User} | |
addUserKnob {13 weight} | |
weight {{parent.r_weight} {parent.g_weight} {parent.b_weight}} | |
addUserKnob {7 saturation} | |
saturation {{1-parent.desat}} | |
} | |
HueShift { | |
hue_rotation {{-parent.HueShift1.hue_rotation}} | |
name HueShift2 | |
xpos 1272 | |
ypos 822 | |
} | |
push $Nbb21c50 | |
push $Nbe3c5e0 | |
Expression { | |
inputs 1+1 | |
temp_name0 lum | |
temp_expr0 "max(r*weight.x, g*weight.y, b*weight.z)" | |
expr0 (r-lum)*saturation+lum | |
expr1 (g-lum)*saturation+lum | |
expr2 (b-lum)*saturation+lum | |
expr3 a | |
invert_mask true | |
name Saturation1 | |
label weighted | |
xpos 730 | |
ypos 741 | |
dope_sheet true | |
addUserKnob {20 User} | |
addUserKnob {13 weight} | |
weight {{parent.r_weight} {parent.g_weight} {parent.b_weight}} | |
addUserKnob {7 saturation} | |
saturation {{1-parent.desat}} | |
} | |
Output { | |
name Output | |
xpos 730 | |
ypos 927 | |
} | |
end_group |