Difference between revisions of "Nuke Gizmos"
Jump to navigation
Jump to search
(→Push pixel) |
|||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
=Nuke Custom Gizmos= | =Nuke Custom Gizmos= | ||
+ | === Normal Relight === | ||
+ | <pre> | ||
+ | //Custom adaptation from "V-Ray Relight" Gizmo by Alexandre Ribeiro. | ||
+ | //Choose the channel of your Normal pass in "NameNormal". | ||
+ | |||
+ | Root { | ||
+ | inputs 0 | ||
+ | frame 11 | ||
+ | last_frame 16 | ||
+ | lock_range true | ||
+ | format "2048 2048 0 0 2048 2048 1 square_2K" | ||
+ | proxy_type scale | ||
+ | proxy_format "1024 778 0 0 1024 778 1 1K_Super_35(full-ap)" | ||
+ | colorManagement Nuke | ||
+ | workingSpaceLUT linear | ||
+ | monitorLut sRGB | ||
+ | int8Lut sRGB | ||
+ | int16Lut sRGB | ||
+ | logLut Cineon | ||
+ | floatLut linear | ||
+ | } | ||
+ | add_layer {ShN ShN.red ShN.green ShN.blue ShN.alpha} | ||
+ | Group { | ||
+ | inputs 0 | ||
+ | name Normal_Relight | ||
+ | selected true | ||
+ | xpos 840 | ||
+ | ypos 86 | ||
+ | addUserKnob {20 settings} | ||
+ | addUserKnob {41 longitude T Constant1.longitude} | ||
+ | addUserKnob {41 latitude T Constant1.latitude} | ||
+ | addUserKnob {6 postmult l post-multiply +STARTLINE} | ||
+ | postmult true | ||
+ | addUserKnob {20 NameNormal} | ||
+ | addUserKnob {41 in l "in 1" T Shuffle8.in} | ||
+ | } | ||
+ | Constant { | ||
+ | inputs 0 | ||
+ | channels rgb | ||
+ | color {{sin(radians(longitude))*cos(radians(latitude))} {sin(radians(latitude))} {cos(radians(longitude))*cos(radians(latitude))} 0} | ||
+ | format "256 256 0 0 256 256 1 square_256" | ||
+ | name Constant1 | ||
+ | xpos 180 | ||
+ | ypos -105 | ||
+ | addUserKnob {20 User} | ||
+ | addUserKnob {7 longitude R -180 180} | ||
+ | longitude 82 | ||
+ | addUserKnob {7 latitude R -90 90} | ||
+ | latitude 44.5 | ||
+ | } | ||
+ | set N5ac82000 [stack 0] | ||
+ | Input { | ||
+ | inputs 0 | ||
+ | name Input1 | ||
+ | xpos -36 | ||
+ | ypos -202 | ||
+ | } | ||
+ | add_layer {VRay_Normals VRay_Normals.X VRay_Normals.Y VRay_Normals.Z} | ||
+ | Shuffle { | ||
+ | in ShN | ||
+ | out VRay_Normals | ||
+ | name Shuffle8 | ||
+ | xpos -36 | ||
+ | ypos -154 | ||
+ | } | ||
+ | Expression { | ||
+ | channel0 {none none none VRay_Normals.Z} | ||
+ | expr0 VRay_Normals.Z-(1-a) | ||
+ | channel1 none | ||
+ | channel2 none | ||
+ | channel3 none | ||
+ | name Expression1 | ||
+ | xpos -36 | ||
+ | ypos -118 | ||
+ | } | ||
+ | Unpremult { | ||
+ | channels VRay_Normals | ||
+ | name Unpremult1 | ||
+ | xpos -36 | ||
+ | ypos -71 | ||
+ | } | ||
+ | MergeExpression { | ||
+ | inputs 2 | ||
+ | expr0 Ar*BVRay_Normals.X | ||
+ | expr1 Ag*BVRay_Normals.Y | ||
+ | expr2 Ab*BVRay_Normals.Z | ||
+ | channel3 none | ||
+ | name MergeExpression1 | ||
+ | xpos 21 | ||
+ | ypos 2 | ||
+ | } | ||
+ | Expression { | ||
+ | channel0 rgb | ||
+ | expr0 r+b+g | ||
+ | channel1 none | ||
+ | channel2 none | ||
+ | channel3 none | ||
+ | name Expression2 | ||
+ | xpos 21 | ||
+ | ypos 54 | ||
+ | } | ||
+ | Premult { | ||
+ | name Premult1 | ||
+ | xpos 21 | ||
+ | ypos 111 | ||
+ | disable {{1-parent.postmult}} | ||
+ | } | ||
+ | set Na4942380 [stack 0] | ||
+ | Output { | ||
+ | name Output1 | ||
+ | xpos 21 | ||
+ | ypos 172 | ||
+ | } | ||
+ | push $N5ac82000 | ||
+ | push 0 | ||
+ | push 0 | ||
+ | push 0 | ||
+ | push 0 | ||
+ | push 0 | ||
+ | push 0 | ||
+ | push 0 | ||
+ | push 0 | ||
+ | push $Na4942380 | ||
+ | Viewer { | ||
+ | inputs 10 | ||
+ | frame_range 1-16 | ||
+ | name Viewer1 | ||
+ | selected true | ||
+ | xpos 233 | ||
+ | ypos 152 | ||
+ | } | ||
+ | end_group | ||
+ | |||
+ | </pre> | ||
+ | |||
+ | === Position Pass === | ||
+ | <pre> | ||
+ | // Select a specific zone to alpha from position pass. | ||
+ | // This script comes from Jean-François Theault. | ||
+ | |||
+ | set cut_paste_input [stack 0] | ||
+ | version 10.5 v4 | ||
+ | push $cut_paste_input | ||
+ | add_layer {POSITION POSITION.red POSITION.green POSITION.blue} | ||
+ | Group { | ||
+ | name Group1 | ||
+ | help "<b>P_Matte</b> creates a sphere or cube shaped 3D matte based on\na pass/layer containing position data" | ||
+ | knobChanged "\nn = nuke.thisNode()\nk = nuke.thisKnob()\ns =\nnuke.toNode('SphereMatte')\nr = nuke.toNode('Start_End')\n\nif k.name()\n== \"falloffType\":\n n\['falloff'].setVisible( k.value() != 'None'\n)\n n\['exp'].setVisible( k.value() == 'Exponential' )\n\n" | ||
+ | selected true | ||
+ | xpos 2903 | ||
+ | ypos 344 | ||
+ | addUserKnob {20 User} | ||
+ | addUserKnob {41 in l "position data" t "Choose a layer from the input\nthat contains position data" T Shuffle_Input_Channels.in} | ||
+ | addUserKnob {41 output t "Resulting matte will be written to this layer\nonly" T OutChannel.out} | ||
+ | addUserKnob {6 unpremultiply t "Check if your position layer is\npremultiplied" +STARTLINE} | ||
+ | addUserKnob {6 useAlpha l "ignore outside alpha" t "If your input has\nan alpha channel, checking this will force everything outside that alpha\nchannel to be black" -STARTLINE} | ||
+ | useAlpha true | ||
+ | addUserKnob {26 ""} | ||
+ | addUserKnob {4 matteShape t "Choose the shape of the 3D matte. Current\noptions are \"Sphere\" and \"Cube\"" M {Sphere Cube ""}} | ||
+ | matteShape Cube | ||
+ | addUserKnob {41 center t "Sample the viewer or copy XYZ coordinates\nhere to choose the center of the 3D sphere or cube" T Center.center} | ||
+ | addUserKnob {26 ""} | ||
+ | addUserKnob {41 rot_order l "rotation order" T Axis1.rot_order} | ||
+ | addUserKnob {41 rotate T Axis1.rotate} | ||
+ | addUserKnob {41 scaling l scale T Axis1.scaling} | ||
+ | addUserKnob {41 uniform_scale l "uniform scale" T Axis1.uniform_scale} | ||
+ | addUserKnob {41 skew T Axis1.skew} | ||
+ | addUserKnob {41 pivot T Axis1.pivot} | ||
+ | addUserKnob {26 ""} | ||
+ | addUserKnob {4 falloffType M {None Linear Smooth Quadratic Cubic Exponential ""}} | ||
+ | falloffType Exponential | ||
+ | addUserKnob {7 falloff} | ||
+ | falloff 1 | ||
+ | addUserKnob {7 exp R 0.1 10} | ||
+ | exp 0.1 | ||
+ | } | ||
+ | Input { | ||
+ | inputs 0 | ||
+ | name img | ||
+ | xpos -828 | ||
+ | ypos -353 | ||
+ | } | ||
+ | AddChannels { | ||
+ | channels alpha | ||
+ | color 1 | ||
+ | name AddChannels1 | ||
+ | xpos -828 | ||
+ | ypos -259 | ||
+ | } | ||
+ | Shuffle { | ||
+ | in POSITION | ||
+ | alpha blue | ||
+ | out rgb | ||
+ | name Shuffle_Input_Channels | ||
+ | xpos -828 | ||
+ | ypos -198 | ||
+ | } | ||
+ | set N7196d60 [stack 0] | ||
+ | Unpremult { | ||
+ | name Unpremult1 | ||
+ | xpos -646 | ||
+ | ypos -198 | ||
+ | disable {{!parent.unpremultiply i}} | ||
+ | } | ||
+ | Dot { | ||
+ | name Dot2 | ||
+ | xpos -326 | ||
+ | ypos -193 | ||
+ | } | ||
+ | Add { | ||
+ | channels rgb | ||
+ | value {{-center i} {-center i} {-center i} {curve i}} | ||
+ | name Center | ||
+ | xpos -360 | ||
+ | ypos -160 | ||
+ | addUserKnob {20 User} | ||
+ | addUserKnob {18 center} | ||
+ | center {66.5625 10.0390625 -31.046875} | ||
+ | addUserKnob {6 center_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} | ||
+ | } | ||
+ | Add { | ||
+ | channels rgb | ||
+ | value {{-Axis1.world_matrix.3 i} {-Axis1.world_matrix.7 i} {-Axis1.world_matrix.11 i} {curve i}} | ||
+ | name Translate_Pivot | ||
+ | xpos -360 | ||
+ | ypos -116 | ||
+ | } | ||
+ | ColorMatrix { | ||
+ | matrix { | ||
+ | {{Axis1.world_matrix.0 i} {Axis1.world_matrix.1 i} {Axis1.world_matrix.2 i}} | ||
+ | {{Axis1.world_matrix.4 i} {Axis1.world_matrix.5 i} {Axis1.world_matrix.6 i}} | ||
+ | {{Axis1.world_matrix.8 i} {Axis1.world_matrix.9 i} {Axis1.world_matrix.10 i}} | ||
+ | } | ||
+ | invert true | ||
+ | name Rotate_Scale_Skew | ||
+ | xpos -360 | ||
+ | ypos -88 | ||
+ | disable {{hasError i x200 1}} | ||
+ | } | ||
+ | set N71cf150 [stack 0] | ||
+ | Expression { | ||
+ | expr3 "(parent.useAlpha && a == 0.0 )? 0 : 1-max(abs(r),abs(g),abs(b))" | ||
+ | name CubeMatte | ||
+ | xpos -285 | ||
+ | ypos -11 | ||
+ | } | ||
+ | push $N71cf150 | ||
+ | Expression { | ||
+ | expr3 "(parent.useAlpha && a == 0.0 )? 0 : 1-(sqrt((r*r)+(g*g)+(b*b)))" | ||
+ | name SphereMatte | ||
+ | xpos -442 | ||
+ | ypos -12 | ||
+ | } | ||
+ | Switch { | ||
+ | inputs 2 | ||
+ | which {{matteShape i}} | ||
+ | name Switch1 | ||
+ | xpos -366 | ||
+ | ypos 58 | ||
+ | } | ||
+ | Grade { | ||
+ | channels alpha | ||
+ | whitepoint {{falloffType?falloff:0}} | ||
+ | white_clamp true | ||
+ | name Falloff | ||
+ | xpos -366 | ||
+ | ypos 124 | ||
+ | } | ||
+ | set N7202600 [stack 0] | ||
+ | Expression { | ||
+ | expr3 pow(a,parent.exp) | ||
+ | name Exponential | ||
+ | xpos -81 | ||
+ | ypos 229 | ||
+ | } | ||
+ | push $N7202600 | ||
+ | Expression { | ||
+ | expr3 clamp((a**3),0,1) | ||
+ | name Cubic | ||
+ | xpos -175 | ||
+ | ypos 228 | ||
+ | } | ||
+ | push $N7202600 | ||
+ | Expression { | ||
+ | expr3 clamp(pow2(a),0,1) | ||
+ | name Quadratic | ||
+ | xpos -269 | ||
+ | ypos 227 | ||
+ | } | ||
+ | push $N7202600 | ||
+ | Expression { | ||
+ | expr3 smoothstep(0,1,a) | ||
+ | name Smooth | ||
+ | xpos -366 | ||
+ | ypos 230 | ||
+ | } | ||
+ | push $N7202600 | ||
+ | NoOp { | ||
+ | name Linear | ||
+ | xpos -457 | ||
+ | ypos 231 | ||
+ | } | ||
+ | push $N7202600 | ||
+ | NoOp { | ||
+ | name None | ||
+ | xpos -557 | ||
+ | ypos 231 | ||
+ | } | ||
+ | Switch { | ||
+ | inputs 6 | ||
+ | which {{falloffType i}} | ||
+ | name Switch2 | ||
+ | xpos -366 | ||
+ | ypos 318 | ||
+ | } | ||
+ | Remove { | ||
+ | operation keep | ||
+ | channels alpha | ||
+ | name Remove1 | ||
+ | xpos -366 | ||
+ | ypos 378 | ||
+ | } | ||
+ | Shuffle { | ||
+ | in alpha | ||
+ | out alpha | ||
+ | name OutChannel | ||
+ | xpos -366 | ||
+ | ypos 439 | ||
+ | } | ||
+ | push $N7196d60 | ||
+ | Dot { | ||
+ | name Dot1 | ||
+ | xpos -794 | ||
+ | ypos 527 | ||
+ | } | ||
+ | Copy { | ||
+ | inputs 2 | ||
+ | from0 -rgba.alpha | ||
+ | to0 -rgba.alpha | ||
+ | channels all | ||
+ | name Copy1 | ||
+ | xpos -366 | ||
+ | ypos 508 | ||
+ | } | ||
+ | Output { | ||
+ | name Output1 | ||
+ | xpos -366 | ||
+ | ypos 637 | ||
+ | } | ||
+ | Axis2 { | ||
+ | inputs 0 | ||
+ | xform_order STR | ||
+ | rot_order ZYX | ||
+ | scaling {5 2.3 9} | ||
+ | uniform_scale 0.36 | ||
+ | name Axis1 | ||
+ | xpos -86 | ||
+ | ypos -102 | ||
+ | } | ||
+ | end_group | ||
+ | |||
+ | </pre> | ||
+ | |||
=== Push pixel === | === Push pixel === | ||
<pre> | <pre> |
Latest revision as of 00:26, 8 June 2019
Nuke Custom Gizmos
Normal Relight
//Custom adaptation from "V-Ray Relight" Gizmo by Alexandre Ribeiro. //Choose the channel of your Normal pass in "NameNormal". Root { inputs 0 frame 11 last_frame 16 lock_range true format "2048 2048 0 0 2048 2048 1 square_2K" proxy_type scale proxy_format "1024 778 0 0 1024 778 1 1K_Super_35(full-ap)" colorManagement Nuke workingSpaceLUT linear monitorLut sRGB int8Lut sRGB int16Lut sRGB logLut Cineon floatLut linear } add_layer {ShN ShN.red ShN.green ShN.blue ShN.alpha} Group { inputs 0 name Normal_Relight selected true xpos 840 ypos 86 addUserKnob {20 settings} addUserKnob {41 longitude T Constant1.longitude} addUserKnob {41 latitude T Constant1.latitude} addUserKnob {6 postmult l post-multiply +STARTLINE} postmult true addUserKnob {20 NameNormal} addUserKnob {41 in l "in 1" T Shuffle8.in} } Constant { inputs 0 channels rgb color {{sin(radians(longitude))*cos(radians(latitude))} {sin(radians(latitude))} {cos(radians(longitude))*cos(radians(latitude))} 0} format "256 256 0 0 256 256 1 square_256" name Constant1 xpos 180 ypos -105 addUserKnob {20 User} addUserKnob {7 longitude R -180 180} longitude 82 addUserKnob {7 latitude R -90 90} latitude 44.5 } set N5ac82000 [stack 0] Input { inputs 0 name Input1 xpos -36 ypos -202 } add_layer {VRay_Normals VRay_Normals.X VRay_Normals.Y VRay_Normals.Z} Shuffle { in ShN out VRay_Normals name Shuffle8 xpos -36 ypos -154 } Expression { channel0 {none none none VRay_Normals.Z} expr0 VRay_Normals.Z-(1-a) channel1 none channel2 none channel3 none name Expression1 xpos -36 ypos -118 } Unpremult { channels VRay_Normals name Unpremult1 xpos -36 ypos -71 } MergeExpression { inputs 2 expr0 Ar*BVRay_Normals.X expr1 Ag*BVRay_Normals.Y expr2 Ab*BVRay_Normals.Z channel3 none name MergeExpression1 xpos 21 ypos 2 } Expression { channel0 rgb expr0 r+b+g channel1 none channel2 none channel3 none name Expression2 xpos 21 ypos 54 } Premult { name Premult1 xpos 21 ypos 111 disable {{1-parent.postmult}} } set Na4942380 [stack 0] Output { name Output1 xpos 21 ypos 172 } push $N5ac82000 push 0 push 0 push 0 push 0 push 0 push 0 push 0 push 0 push $Na4942380 Viewer { inputs 10 frame_range 1-16 name Viewer1 selected true xpos 233 ypos 152 } end_group
Position Pass
// Select a specific zone to alpha from position pass. // This script comes from Jean-François Theault. set cut_paste_input [stack 0] version 10.5 v4 push $cut_paste_input add_layer {POSITION POSITION.red POSITION.green POSITION.blue} Group { name Group1 help "<b>P_Matte</b> creates a sphere or cube shaped 3D matte based on\na pass/layer containing position data" knobChanged "\nn = nuke.thisNode()\nk = nuke.thisKnob()\ns =\nnuke.toNode('SphereMatte')\nr = nuke.toNode('Start_End')\n\nif k.name()\n== \"falloffType\":\n n\['falloff'].setVisible( k.value() != 'None'\n)\n n\['exp'].setVisible( k.value() == 'Exponential' )\n\n" selected true xpos 2903 ypos 344 addUserKnob {20 User} addUserKnob {41 in l "position data" t "Choose a layer from the input\nthat contains position data" T Shuffle_Input_Channels.in} addUserKnob {41 output t "Resulting matte will be written to this layer\nonly" T OutChannel.out} addUserKnob {6 unpremultiply t "Check if your position layer is\npremultiplied" +STARTLINE} addUserKnob {6 useAlpha l "ignore outside alpha" t "If your input has\nan alpha channel, checking this will force everything outside that alpha\nchannel to be black" -STARTLINE} useAlpha true addUserKnob {26 ""} addUserKnob {4 matteShape t "Choose the shape of the 3D matte. Current\noptions are \"Sphere\" and \"Cube\"" M {Sphere Cube ""}} matteShape Cube addUserKnob {41 center t "Sample the viewer or copy XYZ coordinates\nhere to choose the center of the 3D sphere or cube" T Center.center} addUserKnob {26 ""} addUserKnob {41 rot_order l "rotation order" T Axis1.rot_order} addUserKnob {41 rotate T Axis1.rotate} addUserKnob {41 scaling l scale T Axis1.scaling} addUserKnob {41 uniform_scale l "uniform scale" T Axis1.uniform_scale} addUserKnob {41 skew T Axis1.skew} addUserKnob {41 pivot T Axis1.pivot} addUserKnob {26 ""} addUserKnob {4 falloffType M {None Linear Smooth Quadratic Cubic Exponential ""}} falloffType Exponential addUserKnob {7 falloff} falloff 1 addUserKnob {7 exp R 0.1 10} exp 0.1 } Input { inputs 0 name img xpos -828 ypos -353 } AddChannels { channels alpha color 1 name AddChannels1 xpos -828 ypos -259 } Shuffle { in POSITION alpha blue out rgb name Shuffle_Input_Channels xpos -828 ypos -198 } set N7196d60 [stack 0] Unpremult { name Unpremult1 xpos -646 ypos -198 disable {{!parent.unpremultiply i}} } Dot { name Dot2 xpos -326 ypos -193 } Add { channels rgb value {{-center i} {-center i} {-center i} {curve i}} name Center xpos -360 ypos -160 addUserKnob {20 User} addUserKnob {18 center} center {66.5625 10.0390625 -31.046875} addUserKnob {6 center_panelDropped l "panel dropped state" -STARTLINE +HIDDEN} } Add { channels rgb value {{-Axis1.world_matrix.3 i} {-Axis1.world_matrix.7 i} {-Axis1.world_matrix.11 i} {curve i}} name Translate_Pivot xpos -360 ypos -116 } ColorMatrix { matrix { {{Axis1.world_matrix.0 i} {Axis1.world_matrix.1 i} {Axis1.world_matrix.2 i}} {{Axis1.world_matrix.4 i} {Axis1.world_matrix.5 i} {Axis1.world_matrix.6 i}} {{Axis1.world_matrix.8 i} {Axis1.world_matrix.9 i} {Axis1.world_matrix.10 i}} } invert true name Rotate_Scale_Skew xpos -360 ypos -88 disable {{hasError i x200 1}} } set N71cf150 [stack 0] Expression { expr3 "(parent.useAlpha && a == 0.0 )? 0 : 1-max(abs(r),abs(g),abs(b))" name CubeMatte xpos -285 ypos -11 } push $N71cf150 Expression { expr3 "(parent.useAlpha && a == 0.0 )? 0 : 1-(sqrt((r*r)+(g*g)+(b*b)))" name SphereMatte xpos -442 ypos -12 } Switch { inputs 2 which {{matteShape i}} name Switch1 xpos -366 ypos 58 } Grade { channels alpha whitepoint {{falloffType?falloff:0}} white_clamp true name Falloff xpos -366 ypos 124 } set N7202600 [stack 0] Expression { expr3 pow(a,parent.exp) name Exponential xpos -81 ypos 229 } push $N7202600 Expression { expr3 clamp((a**3),0,1) name Cubic xpos -175 ypos 228 } push $N7202600 Expression { expr3 clamp(pow2(a),0,1) name Quadratic xpos -269 ypos 227 } push $N7202600 Expression { expr3 smoothstep(0,1,a) name Smooth xpos -366 ypos 230 } push $N7202600 NoOp { name Linear xpos -457 ypos 231 } push $N7202600 NoOp { name None xpos -557 ypos 231 } Switch { inputs 6 which {{falloffType i}} name Switch2 xpos -366 ypos 318 } Remove { operation keep channels alpha name Remove1 xpos -366 ypos 378 } Shuffle { in alpha out alpha name OutChannel xpos -366 ypos 439 } push $N7196d60 Dot { name Dot1 xpos -794 ypos 527 } Copy { inputs 2 from0 -rgba.alpha to0 -rgba.alpha channels all name Copy1 xpos -366 ypos 508 } Output { name Output1 xpos -366 ypos 637 } Axis2 { inputs 0 xform_order STR rot_order ZYX scaling {5 2.3 9} uniform_scale 0.36 name Axis1 xpos -86 ypos -102 } end_group
Push pixel
//Don't know the source of this custom Push pixel set cut_paste_input [stack 0] version 10.5 v7 push $cut_paste_input Unpremult { name Unpremult4 selected true xpos 180 ypos 3374 } Grade { channels alpha blackpoint 0.99 name Grade15 selected true xpos 180 ypos 3416 } Premult { name Premult1 selected true xpos 180 ypos 3470 } EdgeBlur { size 1 name EdgeBlur2 selected true xpos 180 ypos 3536 } Unpremult { name Unpremult11 selected true xpos 180 ypos 3590 } Expression { channel3 alpha expr3 "r == 0 ? 0 : 1" name Expression7 selected true xpos 180 ypos 3638 } EdgeBlur { size 2 name EdgeBlur3 selected true xpos 180 ypos 3704 } Unpremult { name Unpremult12 selected true xpos 180 ypos 3758 } Expression { channel3 alpha expr3 "r == 0 ? 0 : 1" name Expression8 selected true xpos 180 ypos 3806 } EdgeBlur { size 4 name EdgeBlur4 selected true xpos 180 ypos 3872 } Unpremult { name Unpremult14 selected true xpos 180 ypos 3926 } Expression { channel3 alpha expr3 "r == 0 ? 0 : 1" name Expression9 selected true xpos 180 ypos 3974 } EdgeBlur { size 8 name EdgeBlur12 selected true xpos 180 ypos 4040 } Unpremult { name Unpremult15 selected true xpos 180 ypos 4094 } Expression { channel3 alpha expr3 "r == 0 ? 0 : 1" name Expression10 selected true xpos 180 ypos 4142 } EdgeBlur { size 16 name EdgeBlur13 selected true xpos 180 ypos 4208 } Unpremult { name Unpremult16 selected true xpos 180 ypos 4262 } Expression { channel3 alpha expr3 "r == 0 ? 0 : 1" name Expression11 selected true xpos 180 ypos 4310 }