Creates Swirly Bokeh or Cat's Eye Bokeh shapes on the edges of frame. Does not perform depth-varying defocus. Needs a good GPU to run fast.
Based on Alexander Koolikov's CatsEyeDefocus.
Creates Swirly Bokeh or Cat's Eye Bokeh shapes on the edges of frame. Does not perform depth-varying defocus. Needs a good GPU to run fast.
Based on Alexander Koolikov's CatsEyeDefocus.
set cut_paste_input [stack 0] | |
push $cut_paste_input | |
Group { | |
name DefocusSwirlyBokeh | |
tile_color 0xb16f43ff | |
addUserKnob {20 DefocusSwirlyBokeh} | |
addUserKnob {6 usegpu l "use gpu" t "You REALLY need a good GPU to use this node effectively. With CPU it will be excruciatingly slow." +STARTLINE} | |
usegpu true | |
addUserKnob {7 size l "bokeh size" t "The size of your defocus." R 2 100} | |
size 25 | |
addUserKnob {7 aspect_ratio l "aspect ratio" R 0.25 1.5} | |
aspect_ratio 1 | |
addUserKnob {7 swirl_amount l "swirly amount" t "How much to increase the cat's eye effect on the edges of frame."} | |
swirl_amount 1 | |
addUserKnob {26 spacer2 l " " T ""} | |
addUserKnob {7 bokeh_contrast l "bokeh contrast" t "adjust contrast of bokeh up or down: 0 is grey. 1 is no change. 4 is high contrast.\n" R 0 2} | |
bokeh_contrast 1 | |
addUserKnob {7 bokeh_blur l "bokeh blur" t "Blur the bokeh to soften out the edges. (percent of input resolution)." R 0 0.5} | |
addUserKnob {26 spacer l " " T ""} | |
addUserKnob {6 enable_bokeh_masking l "enable bokeh masking" t "false: \nuse the input filter for the whole frame. \n\ntrue: \nthe outward facing edges of the bokeh get increasingly masked by a radial towards the edge of frame." +STARTLINE} | |
addUserKnob {7 bokeh_radial_softness l "radial softness" t "How soft is the radial that masks the edge bokeh if enable bokeh masking is true."} | |
bokeh_radial_softness 0.5 | |
addUserKnob {15 mattebox} | |
addUserKnob {7 mattebox_softness l "mattebox softness" R 0 25} | |
addUserKnob {20 About} | |
addUserKnob {26 about_label l " " T "<br/>\nBased on Alexander Kulikov's CatsEyeDefocus.<br/>\nwww.nukepedia.com/blink/filter/catseyedefocus\n<br/><br/>\nSimplifying the node. The blink convolution node is the same.\n<br/><br/>\ngist.github.com/jedypod\n"} | |
} | |
Input { | |
inputs 0 | |
name Inputfilter | |
label "\[value number]" | |
xpos -370 | |
ypos -568 | |
number 1 | |
} | |
Reformat { | |
inputs 0 | |
type "to box" | |
box_width 128 | |
box_height {{box_width}} | |
box_fixed true | |
name ReformatBox | |
xpos -590 | |
ypos -562 | |
} | |
Flare { | |
position {{width/2} {height/2}} | |
radius {{position.x-(position.x*0.15)} {radius.0+(radius.0*0.02)} {radius.0+(radius.0*0.05)}} | |
inner_color 0.145 | |
outer_falloff 0.54 | |
inner_falloff 0.88 | |
name Flare1 | |
xpos -590 | |
ypos -514 | |
} | |
Keyer { | |
operation "luminance key" | |
range {0 0.404087018 1 1} | |
name Keyer1 | |
xpos -590 | |
ypos -472 | |
} | |
Switch { | |
inputs 2 | |
which {{"\[exists parent.input1]"}} | |
name Switch1 | |
xpos -370 | |
ypos -466 | |
} | |
Dot { | |
name Dot2 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -336 | |
ypos -366 | |
} | |
set Nbb9b3530 [stack 0] | |
Radial { | |
replace true | |
area {0 0 {input.width} {input.height}} | |
softness {{parent.bokeh_radial_softness}} | |
name LensEdgeBokehSoften | |
xpos -370 | |
ypos -346 | |
} | |
Reformat { | |
type "to box" | |
box_width {{parent.size}} | |
box_height {{box_width}} | |
box_fixed true | |
name SCALE_FILTER1 | |
xpos -370 | |
ypos -298 | |
} | |
Reformat { | |
type scale | |
box_fixed true | |
scale {{parent.aspect_ratio} 1} | |
resize distort | |
name ASPECT_RATIO2 | |
xpos -370 | |
ypos -250 | |
} | |
Crop { | |
box {{parent.mattebox+(parent.mattebox*input.width)} {parent.mattebox+(parent.mattebox*input.height)} {input.width-(parent.mattebox*input.width)} {input.height-(parent.mattebox*input.height)}} | |
softness {{parent.mattebox_softness}} | |
name MATTEBOX | |
xpos -370 | |
ypos -202 | |
} | |
Mirror2 { | |
flip true | |
flop true | |
name Mirror2_1 | |
xpos -370 | |
ypos -154 | |
} | |
Reformat { | |
type "to box" | |
box_width {{"\[exists input] ? input.width : root.width"}} | |
box_height {{"\[exists input] ? input.height : root.height"}} | |
box_fixed true | |
box_pixel_aspect {{"\[exists input] ? input.pixel_aspect : root.pixel_aspect"}} | |
resize none | |
black_outside true | |
name BboxRemove | |
xpos -370 | |
ypos -34 | |
} | |
Dot { | |
name Dot3 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -336 | |
ypos 138 | |
} | |
push $Nbb9b3530 | |
Dot { | |
name Dot1 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -116 | |
ypos -366 | |
} | |
Reformat { | |
type "to box" | |
box_width {{parent.size}} | |
box_height {{box_width}} | |
box_fixed true | |
name SCALE_FILTER | |
xpos -150 | |
ypos -298 | |
} | |
Reformat { | |
type scale | |
box_fixed true | |
scale {{parent.aspect_ratio} 1} | |
resize distort | |
name ASPECT_RATIO | |
selected true | |
xpos -150 | |
ypos -250 | |
} | |
Crop { | |
box {{parent.mattebox+(parent.mattebox*input.width)} {parent.mattebox+(parent.mattebox*input.height)} {input.width-(parent.mattebox*input.width)} {input.height-(parent.mattebox*input.height)}} | |
softness {{parent.mattebox_softness}} | |
name MATTEBOX1 | |
xpos -150 | |
ypos -202 | |
} | |
CCorrect { | |
channels rgb | |
contrast {{parent.bokeh_contrast}} | |
name BokehContrast | |
xpos -150 | |
ypos -154 | |
} | |
Clamp { | |
channels rgba | |
maximum_enable false | |
name ClampMin | |
xpos -150 | |
ypos -118 | |
} | |
Group { | |
name BlurPercent | |
tile_color 0xc4814dff | |
xpos -150 | |
ypos -82 | |
addUserKnob {20 percentBlur l "Percent Blur"} | |
addUserKnob {41 channels T _BLUR_.channels} | |
addUserKnob {14 percent R 0 100} | |
percent {{parent.bokeh_blur*100}} | |
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 | |
Reformat { | |
type "to box" | |
box_width {{"\[exists input] ? input.width : root.width"}} | |
box_height {{"\[exists input] ? input.height : root.height"}} | |
box_fixed true | |
box_pixel_aspect {{"\[exists input] ? input.pixel_aspect : root.pixel_aspect"}} | |
resize none | |
black_outside true | |
name BboxRemove1 | |
xpos -150 | |
ypos -10 | |
} | |
Dot { | |
name Dot4 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -116 | |
ypos 66 | |
} | |
set N27ba37a0 [stack 0] | |
Switch { | |
inputs 2 | |
which {{parent.enable_bokeh_masking}} | |
name SoftEdgeBokeh | |
xpos -150 | |
ypos 134 | |
} | |
push $N27ba37a0 | |
Dot { | |
name Dot5 | |
label " " | |
note_font "Helvetica Bold" | |
note_font_size 24 | |
note_font_color 0xa5a5a501 | |
xpos -6 | |
ypos 66 | |
} | |
Input { | |
inputs 0 | |
name Input | |
label "\[value number]" | |
xpos 70 | |
ypos -568 | |
} | |
Constant { | |
inputs 0 | |
name Constant1 | |
xpos 290 | |
ypos -442 | |
postage_stamp false | |
} | |
Switch { | |
inputs 2 | |
which {{"\[exists parent.input0]"}} | |
name Switch2 | |
xpos 70 | |
ypos -442 | |
} | |
BlinkScript { | |
inputs 3 | |
ProgramGroup 1 | |
KernelDescription "2 \"CatsEyeConvolve\" iterate pixelWise d3f7f7268f50afeb0ffd385b019c65664a5775e0f4a8983e20044cb012fe17e8 4 \"src\" Read Ranged2D \"filter\" Read Random \"ext\" Read Random \"dst\" Write Point 3 \"Amount\" Float 1 AACAPw== \"Format\" Int 2 AAUAANACAAA= \"Interpolate\" Bool 1 AQ== 3 \"amount\" 1 1 \"_format\" 2 1 \"interpolate\" 1 1 7 \"srcrangeMin\" Int 2 1 AAAAAAAAAAA= \"srcrangeMax\" Int 2 1 AAAAAAAAAAA= \"extconstEdgeColor\" Float 4 1 AAAAAAAAAAAAAAAAAAAAAA== \"_filterOffset\" Int 2 1 AAAAAAAAAAA= \"halfWidth\" Int 1 1 AAAAAA== \"halfHeight\" Int 1 1 AAAAAA== \"step\" Float 1 1 AAAAAA==" | |
EncodedSource "1 2904 +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" | |
rebuild "" | |
CatsEyeConvolve_Amount {{parent.swirl_amount}} | |
CatsEyeConvolve_Format {{input.width} {input.height}} | |
protectKernelWhenPublishing true | |
rebuild_finalise "" | |
name BlinkScript2 | |
xpos 70 | |
ypos 128 | |
} | |
Output { | |
name Output | |
xpos 70 | |
ypos 254 | |
} | |
end_group |