set cut_paste_input [stack 0] Group { inputs 0 name HueSweep17 selected true xpos 15470 ypos 3747 postage_stamp true addUserKnob {20 HueSweep} addUserKnob {26 swatch_label l " " T swatch} addUserKnob {3 size} size 1024 addUserKnob {7 ar l aspect R 1 2} ar 1 addUserKnob {41 rotate T Rotate.rotate} addUserKnob {7 sat l saturation} sat 1 addUserKnob {6 enable_hsamples l "h samples" +STARTLINE} addUserKnob {7 hsamples l "" -STARTLINE R 1 256} hsamples 128 addUserKnob {6 enable_lsamples l "l samples" +STARTLINE} addUserKnob {7 lsamples l "" -STARTLINE R 1 256} lsamples 16 addUserKnob {6 achromatic_row l "achromatic row" +STARTLINE} achromatic_row true } Constant { inputs 0 format "512 512 0 0 512 512 1 square_512" name Constant13 xpos 1170 ypos 501 postage_stamp false } Reformat { type "to box" box_width {{parent.size}} box_height {{box_width/parent.ar}} box_fixed true name Reformat1 xpos 1170 ypos 531 } Dot { name Dot1 note_font "Helvetica Bold" note_font_size 24 note_font_color 0xff xpos 1204 ypos 594 } set Nd28b5070 [stack 0] Dot { name Dot2 note_font "Helvetica Bold" note_font_size 24 note_font_color 0xff xpos 984 ypos 594 } Expression { channel0 {rgba.red -rgba.green -rgba.blue none} expr0 y/height expr3 y/height name Chrominance xpos 950 ypos 621 } Expression { expr0 rint(r*samples+0.5001)/samples expr1 rint(g*samples+0.5001f)/samples expr2 rint(b*samples+0.5001)/samples expr3 rint(a*samples+0.5)/samples name Quantize2 xpos 950 ypos 651 disable {{!parent.enable_hsamples}} addUserKnob {20 Quantize} addUserKnob {3 samples} samples {{parent.hsamples}} } Expression { expr0 (r+shift)%1 name Rotate xpos 950 ypos 681 addUserKnob {20 User} addUserKnob {7 rotate R 0 360} rotate 270 addUserKnob {7 shift} shift {{radians(rotate)/pi/2}} } Dot { name Dot3 note_font "Helvetica Bold" note_font_size 24 note_font_color 0xff xpos 984 ypos 744 } push $Nd28b5070 Expression { channel0 {rgba.red -rgba.green -rgba.blue none} expr0 0 expr1 sat expr2 x/width expr3 1 name Luminance xpos 1170 ypos 621 } Expression { expr0 rint(r*samples+0.5)/samples expr1 rint(g*samples+0.5)/samples expr2 rint(b*samples+0.5)/samples expr3 rint(a*samples+0.5)/samples name Quantize1 xpos 1170 ypos 663 disable {{!parent.enable_lsamples}} addUserKnob {20 Quantize} addUserKnob {3 samples} samples {{parent.lsamples*(input.width/input.height)}} } Copy { inputs 2 from0 rgba.red to0 rgba.red name Copy1 xpos 1170 ypos 735 } set Nd270cc30 [stack 0] Expression { expr0 yheight/3&&yheight/3*2?1-(y-height/3*2)/(height/3):0 expr2 yheight/3*2?(y-height/3*2)/(height/3):0 expr3 x/width name SweepHue xpos 1280 ypos 801 } Multiply { channels rgb value 0 maskChannelInput rgba.alpha invert_mask true name Multiply1 xpos 1280 ypos 831 } push $Nd270cc30 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 HSV_to_RGB xpos 1170 ypos 800 } Crop { box {0 -1 {width} {height}} crop false name Crop2 xpos 1170 ypos 861 disable {{!parent.achromatic_row}} } Expression { expr0 y==-1?x/width:r expr1 y==-1?x/width:g expr2 y==-1?x/width:b name Expression1 label "achromatic row" xpos 1170 ypos 885 disable {{!parent.achromatic_row}} } Crop { box {0 {-height/hsamples} {width} {height}} reformat true crop false name Crop1 xpos 1170 ypos 921 disable {{!parent.achromatic_row}} } Expression { temp_name0 mx temp_expr0 max(r,g,b) temp_name1 pmx temp_expr1 mx==0?0:pow(mx,p)/mx expr0 r*pmx expr1 g*pmx expr2 b*pmx name Power xpos 1170 ypos 981 addUserKnob {20 User} addUserKnob {7 p R 0 4} p 1 } Output { name Output xpos 1170 ypos 1070 } end_group Group { name Exposure24 selected true xpos 15470 ypos 3880 addUserKnob {20 Exposure_tab l Exposure} addUserKnob {41 channels T Multiply.channels} addUserKnob {18 exposure R -6 6} exposure 4 addUserKnob {6 exposure_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} addUserKnob {26 ""} addUserKnob {41 maskChannelMask l mask -STARTLINE T NodeWrapper.maskChannelMask} addUserKnob {41 invert_mask l invert -STARTLINE T NodeWrapper.invert_mask} addUserKnob {41 mix T NodeWrapper.mix} } Input { inputs 0 name Inputmask xpos 70 ypos -70 number 1 } Input { inputs 0 name Input xpos -40 ypos -190 } set Nc4d5faf0 [stack 0] Multiply { channels rgb value {{"pow(2, parent.exposure)"}} name Multiply xpos -40 ypos -130 } push $Nc4d5faf0 NodeWrapper { inputs 2+1 channels rgb invert_mask true name NodeWrapper note_font Helvetica xpos -40 ypos -69 } Output { name Output xpos -40 ypos -40 } end_group Dot { name Dot453 note_font "Helvetica Bold" note_font_size 24 note_font_color 0xff selected true xpos 15504 ypos 4014 } set Nd27868b0 [stack 0] Dot { name Dot454 note_font "Helvetica Bold" note_font_size 24 note_font_color 0xff selected true xpos 15174 ypos 4014 } set Nd278b860 [stack 0] Expression { channel0 {rgba.red rgba.green rgba.blue none} expr0 sqrt(pow(w.0*r,2)+pow(w.1*g,2)+pow(w.2*b,2))/sum channel1 none channel2 none channel3 none name WeightedSmoothMax1 selected true xpos 15140 ypos 4070 addUserKnob {20 Param} addUserKnob {78 w n 3} w {1 1 1} addUserKnob {7 sum t "Normalize so achromatic in=out" R 0 2} sum {{sqrt(w.0*w.0+w.1*w.1+w.2*w.2)}} } Dot { name Dot455 note_font "Helvetica Bold" note_font_size 24 note_font_color 0xff selected true xpos 15174 ypos 4134 } set Nd221df20 [stack 0] Group { name ToneCompress13 selected true xpos 15140 ypos 4220 addUserKnob {20 ToneCompress} addUserKnob {78 gr l grey t "input -> output grey" n 2} gr {0.18 0.1} addUserKnob {78 wh l white t "input -> output white" n 2} wh {35 1} addUserKnob {7 p l contrast R 0.8 2} p 1.2 addUserKnob {7 _t l toe R 0 0.05} _t 0.004 addUserKnob {7 s l scale t "input domain scale" R 0 10} s {{(gr.0*pow(gr.1,1/p)+gr.0*pow(gr.1,1/(2*p))*sqrt(pow(gr.1,1/p)+4*_t))/(2*gr.0*gr.0)}} addUserKnob {4 direction M {forward inverse}} } Input { inputs 0 name Input xpos -40 ypos -70 } Dot { name Dot1 note_font "Helvetica Bold" note_font_size 24 note_font_color 0xff xpos -6 ypos -6 } set N2715b220 [stack 0] Expression { expr0 r/s expr1 g/s expr2 b/s name InvOutputScale note_font Helvetica xpos 70 ypos 51 addUserKnob {20 Params_tab l Params} addUserKnob {7 s l scale R 0 2} s {{wh.1}} } Expression { expr0 pow(r,1/p) expr1 pow(g,1/p) expr2 pow(b,1/p) name InvContrast note_font Helvetica xpos 70 ypos 81 addUserKnob {20 Params_tab l Params} addUserKnob {7 p l power R 0.01 2} p {{parent.p}} } Expression { expr0 rBased on this tonemap function posted by Daniele Siragusano\nhttps://community.acescentral.com/t/output-transform-tone-scale/3498/14\nhttps://en.wikipedia.org/wiki/Michaelis-Menten_kinetics\n\nWith some modifications:\n- Piecewise hyperbolic shoulder compression. Linear where x < g_1\n- Intersection constraint at (g_0, g_1)\n- Intersection constraint at (w_0, w_1)\n- Toe / Flare applied before shoulder compression in scene-linear\n\nhttps://www.desmos.com/calculator/sedu6rhyxn\n\nNote: these nodes could be combined into 1 but I've split them out for readability.\n\n" note_font Helvetica note_font_size 14 note_font_color 0xa8a8a8ff xpos 199 } end_group Dot { name Dot456 note_font "Helvetica Bold" note_font_size 24 note_font_color 0xff selected true xpos 15174 ypos 4314 } push $Nd221df20 push $Nd27868b0 MergeExpression { inputs 2 expr0 Ar==0?0:Br/Ar expr1 Ag==0?0:Bg/Ag expr2 Ab==0?0:Bb/Ab name MergeDivideReverse4 selected true xpos 15470 ypos 4130 } MergeExpression { inputs 2 expr0 Ar*Br expr1 Ar*Bg expr2 Ar*Bb name Multiply21 note_font Helvetica selected true xpos 15470 ypos 4311 } Group { name PlotRGBCube4 selected true xpos 15470 ypos 4481 addUserKnob {20 PlotRGBCube_tab l PlotRGBCube} addUserKnob {6 plot_input l "plot input" t "plot input pixels" -STARTLINE} plot_input true addUserKnob {6 rgb_cube l "rgb cube" t "enable rgb cube" -STARTLINE} rgb_cube true addUserKnob {6 achromatic_up l "achromatic up" t "orient cube such that achromatic axis is up" -STARTLINE} achromatic_up true addUserKnob {7 exposure R -8 8} addUserKnob {26 ""} addUserKnob {4 view M {top side perspective}} addUserKnob {22 minus_rot l - T "rot = nuke.thisNode()\['rotate']\nrot.setValue(rot.getValue()-30)" +STARTLINE} addUserKnob {22 plus_rot l + -STARTLINE T "rot = nuke.thisNode()\['rotate']\nrot.setValue(rot.getValue()+30)"} addUserKnob {7 x_rot l "persp xrot" t "if view is perspective: rotate x between 0 and -90" R -1 1} x_rot 0.5 addUserKnob {7 rotate R 0 360} rotate 180 addUserKnob {6 high_quality l "high quality" t "enable high quality rendering" +STARTLINE} high_quality true addUserKnob {7 point_detail l "point detail" t "point detail of the position to points "} point_detail 1 addUserKnob {41 box_width l width/height T Reformat26.box_width} addUserKnob {41 box_height l "" -STARTLINE T Reformat26.box_height} addUserKnob {22 set_viewer_color l "set 3d view black" t "set 3d viewer to have a black background" T "prefs = nuke.toNode('preferences')\ncol = prefs\['viewer_bg_color_3D']\ncol.setValue(0)" +STARTLINE} } Axis2 { inputs 0 display off selectable false translate {0 1 0} rotate {{-parent.x_rot*90} {parent.rotate} 0} name Axis1 xpos -470 ypos 270 } Camera2 { display off selectable false translate {0 0 3.5} name PERSP xpos -470 ypos 390 } Axis2 { inputs 0 display off selectable false translate {0 0.8660254038 0} rotate {0 {parent.rotate} 0} name Axis2 xpos -360 ypos 270 } Camera2 { display off selectable false translate {0 0 2} projection_mode orthographic focal 14 name ORTHO_SIDE xpos -360 ypos 390 } Camera2 { inputs 0 display off selectable false translate {0 6 0} rotate {-90 {parent.rotate} 0} projection_mode orthographic focal 14 name ORTHO_TOP xpos -250 ypos 390 } Switch { inputs 3 which {{parent.view}} name SwitchView xpos -260 ypos 501 } Dot { name Dot1 note_font "Helvetica Bold" note_font_size 24 note_font_color 0xff xpos -226 ypos 534 } Dot { name Dot4 note_font "Helvetica Bold" note_font_size 24 note_font_color 0xff xpos -6 ypos 534 } set Nd213b5b0 [stack 0] Input { inputs 0 name Input xpos -150 ypos 50 } Multiply { channels rgb value {{pow(2,e)} {pow(2,e)} {pow(2,e)} 1} name Exposure xpos -150 ypos 140 addUserKnob {20 User} addUserKnob {7 e R -8 8} e {{parent.exposure}} } PositionToPoints2 { display textured selectable false render_mode textured cast_shadow false receive_shadow false P_channel rgb detail {{parent.point_detail}} pointSize 1 name PositionToPoints7 xpos -150 ypos 200 disable {{!parent.plot_input}} } Dot { name Dot2 note_font "Helvetica Bold" note_font_size 24 note_font_color 0xff xpos -116 ypos 294 } Group { inputs 0 name RGBCubeAlt2 xpos 70 ypos 141 disable {{!parent.rgb_cube}} addUserKnob {20 User} addUserKnob {6 top_half l "top half" +STARTLINE} top_half true addUserKnob {6 posterize -STARTLINE} posterize true } Group { inputs 0 name HueSweep_4 xpos 1170 ypos 657 hide_input true postage_stamp true addUserKnob {20 User} addUserKnob {6 white +STARTLINE} addUserKnob {6 black +STARTLINE} black true } Constant { inputs 0 format "256 256 0 0 256 256 1 square_256" name Constant15 xpos 1160 ypos 651 postage_stamp false } set Nd2176540 [stack 0] Expression { expr1 1-x/width expr2 x/width name Expression28 label "green/red\n" xpos 1280 ypos 712 postage_stamp true } push $Nd2176540 Expression { expr0 1-x/width expr1 x/width name Expression19 label "green/red\n" xpos 1160 ypos 712 postage_stamp true } push $Nd2176540 Expression { expr0 x/width expr2 1-x/width name Expression21 label "green/red\n" xpos 1040 ypos 712 postage_stamp true } ContactSheet { inputs 3 width {{width*columns}} height {{height/pixel_aspect*rows}} rows 1 columns 3 roworder TopBottom name ContactSheet3 xpos 1160 ypos 831 } Shuffle { alpha white name Shuffle1 xpos 1160 ypos 861 } Dot { name Dot1 note_font "Helvetica Bold" note_font_size 24 note_font_color 0xff xpos 1194 ypos 894 } set Nd21c5c10 [stack 0] Expression { expr3 (y/height-0.5)*2 name Expression2 xpos 1040 ypos 951 } push $Nd21c5c10 Expression { expr3 1-y/(height/2) name Expression1 xpos 1040 ypos 891 } push $Nd21c5c10 Fill { inputs 1+1 color {0 0 0 1} name Fill2 xpos 1160 ypos 937 disable {{!parent.black}} } Fill { inputs 1+1 color {1 1 1 1} name Fill1 xpos 1160 ypos 981 disable {{!parent.white}} } Output { name Output1 xpos 1160 ypos 1070 } end_group Group { name Exposure4 tile_color 0x79a9ffff xpos 1170 ypos 770 addUserKnob {20 Exposure} addUserKnob {18 exposure R -8 8} exposure 4 addUserKnob {6 exposure_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} } Input { inputs 0 name Inputmask xpos 120 ypos -9 number 1 } Input { inputs 0 name Input xpos -40 ypos -81 } Multiply { inputs 1+1 channels rgb value {{"pow(2, parent.exposure)"} {"pow(2, parent.exposure)"} {"pow(2, parent.exposure)"} {"pow(2, parent.exposure)"}} name _EXPOSURE_ xpos -40 ypos -9 } Output { name Output1 xpos -40 ypos 63 } end_group Clamp { channels rgba name Clamp18 xpos 1170 ypos 801 } Posterize { channels rgba Colors 64 name Posterize1 xpos 1170 ypos 831 disable {{!parent.posterize}} } Dot { name Dot1 note_font "Helvetica Bold" note_font_size 24 note_font_color 0xff xpos 1204 ypos 924 } set Nd20429f0 [stack 0] Expression { expr0 1-r expr1 1-g expr2 1-b channel3 none name Complement1 xpos 1060 ypos 921 } push $Nd20429f0 ContactSheet { inputs 2 width {{width*columns}} height {{height/pixel_aspect*rows}} rows 2 columns 1 roworder TopBottom name ContactSheet1 xpos 1170 ypos 951 disable {{!parent.top_half}} } Output { name Output xpos 1170 ypos 1010 } end_group PositionToPoints2 { display textured selectable false render_mode textured cast_shadow false receive_shadow false P_channel rgb detail 1 pointSize 1 name PositionToPoints8 xpos 70 ypos 200 disable {{!parent.rgb_cube}} } Scene { inputs 2 name Scene3 xpos 80 ypos 270 disable {{!parent.plot_input}} } TransformGeo { rotate {{"-degrees(atan(sqrt(1/2))) "} 0 45} name OrientAchromatic xpos 70 ypos 381 disable {{!parent.achromatic_up}} } push $Nd213b5b0 Scene { inputs 2 name Scene4 xpos 80 ypos 510 } Constant { inputs 0 format "256 256 0 0 256 256 1 square_256" name Constant9 xpos 180 ypos 621 postage_stamp false } Reformat { type "to box" box_width 2048 box_height {{box_width}} box_fixed true black_outside true name Reformat26 xpos 180 ypos 651 } ScanlineRender { inputs 3 conservative_shader_sampling false samples {{parent.high_quality?6:1}} shutteroffset centred stochastic_samples {{parent.high_quality?12:1}} motion_vectors_type distance name ScanlineRender xpos 70 ypos 651 } Output { name Output xpos 70 ypos 920 } end_group push $Nd278b860 Expression { channel0 rgb expr0 sqrt(r*r+g*g+b*b) channel1 none channel2 none channel3 none name Norm_Euclidean2 note_font Helvetica selected true xpos 15030 ypos 4071 } push $Nd278b860 Expression { temp_name0 L temp_expr0 w.0*r+w.1*g+w.2*b channel0 rgba expr0 L channel1 none channel2 none channel3 none name Luminance_Weights14 selected true xpos 14920 ypos 4070 addUserKnob {20 Param} addUserKnob {35 weight_presets l "" +STARTLINE M {weights/ACEScg "knobs this \{w \{0.26806405 0.67246455 0.05947147\}\}" weights/Rec.2020 "knobs this \{w \{0.26270026 0.67799819 0.05930173\}\}" weights/P3D65 "knobs this \{w \{0.22897467 0.69173867 0.07928693\}\}" weights/Rec.709 "knobs this \{w \{0.21263911 0.71516877 0.07219233\}\}" "weights/Red WideGamut RGB" "knobs this \{w \{0.28669411 0.84297919 -0.12967324\}\}" "weights/Alexa Wide Gamut" "knobs this \{w \{0.2919538 0.82384098 -0.11579483\}\}" "weights/Sony S-Gamut3.Cine" "knobs this \{w \{0.21507585 0.88506854 -0.10014433\}\}" "weights/Filmlight E-Gamut" "knobs this \{w \{0.28013074 0.82020682 -0.10033739\}\}" "weights/DaVinci Wide Gamut" "knobs this \{w \{0.27411851 0.87363189 -0.14775042\}\}"}} addUserKnob {78 w l "" t "luminance weighting" -STARTLINE n 3} w {0.26806405 0.67246455 0.05947147} } push $Nd278b860 Expression { temp_name0 p2 temp_expr0 p-1 temp_name1 num temp_expr1 sign(r)*pow(w.0*fabs(r),p)+sign(g)*pow(w.1*fabs(g),p)+sign(b)*pow(w.2*fabs(b),p) temp_name2 den temp_expr2 sign(r)*pow(w.0*fabs(r),p2)+sign(g)*pow(w.1*fabs(g),p2)+sign(b)*pow(w.2*fabs(b),p2) channel0 rgb expr0 m*num/den channel1 none channel2 none channel3 none name Norm_WeightedPower2 note_font Helvetica selected true xpos 14810 ypos 4071 addUserKnob {20 Params} addUserKnob {35 weight_presets l "" +STARTLINE M {weights/basic "knobs this \{m 1.0 w \{1 1 1\} p 4\}" "weights/doug walker yellow" "knobs this \{m 0.83743219 w \{1.22 1.2 0.58\} p 5\}" weights/warmer "knobs this \{m 0.9 w \{0.8 1 1.2\} p 5\}"}} addUserKnob {78 w l "" -STARTLINE n 3} w {1 1 1} addUserKnob {7 m l mult R 0.5 1} m 1 addUserKnob {7 p l power R 1 6} p 2.38 } push $Nd278b860 Expression { channel0 rgb expr0 max(r,g,b) channel1 none channel2 none channel3 none name Norm_MaxRGB7 note_font Helvetica selected true xpos 14700 ypos 4071 } push $Nd278b860 Expression { channel0 rgb expr0 max(r,g,b)*0.5+min(r,g,b)*0.5 channel1 none channel2 none channel3 none name Norm_HalfChrominance note_font Helvetica selected true xpos 14590 ypos 4071 }