From 6173fda1a190b3e28e936cb4f9235179476471ab Mon Sep 17 00:00:00 2001 From: Tanasart <22589759+Ttanasart-pt@users.noreply.github.com> Date: Fri, 29 Sep 2023 09:22:41 +0700 Subject: [PATCH] - [Particle, VFX] Add bounce ground friction property. --- datafiles/data/locale/en.zip | Bin 34211 -> 34058 bytes datafiles/data/locale/en/nodes.json | 12398 ++++++++-------- objects/o_main/Alarm_1.gml | 2 +- scripts/__VFX/__VFX.gml | 7 +- .../_node_VFX_spawner/_node_VFX_spawner.gml | 39 +- scripts/globals/globals.gml | 2 +- scripts/node_VFX_spawner/node_VFX_spawner.gml | 26 +- scripts/node_data/node_data.gml | 3 + scripts/node_particle/node_particle.gml | 2 + scripts/node_value/node_value.gml | 6 +- 10 files changed, 6264 insertions(+), 6221 deletions(-) diff --git a/datafiles/data/locale/en.zip b/datafiles/data/locale/en.zip index ffc2102b216204ee01ee9cbfef9b9d79d94d246d..53e629282e6e06b9161e4f5d9f7a051faf02a0b7 100644 GIT binary patch delta 27339 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 T4Hr@-&CQ%hxQB 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

iwZO~kZs@_aTw0SI@KXKc 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 Ar~m)} diff --git a/datafiles/data/locale/en/nodes.json b/datafiles/data/locale/en/nodes.json index 646254676..b38b52b7d 100644 --- a/datafiles/data/locale/en/nodes.json +++ b/datafiles/data/locale/en/nodes.json @@ -1,2244 +1,4 @@ { - "Node_Image_Animated":{ - "name":"Animation", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Path", - "tooltip":"" - }, - { - "name":"Padding", - "tooltip":"" - }, - { - "name":"Stretch frame", - "tooltip":"Stretch animation speed to match project length." - }, - { - "name":"Frame duration", - "tooltip":"" - }, - { - "name":"Animation end", - "display_data":[ - "Loop", - "Ping pong", - "Hold last frame", - "Hide" - ], - "tooltip":"" - }, - { - "name":"Set animation length to match", - "tooltip":"" - } - ], - "tooltip":"Load multiple images from your computer as animation." - }, - "Node_3D_Mesh_Sphere_Ico":{ - "name":"3D Icosphere", - "outputs":[ - { - "name":"Mesh", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Position", - "tooltip":"" - }, - { - "name":"Rotation", - "tooltip":"" - }, - { - "name":"Scale", - "tooltip":"" - }, - { - "name":"Subdivision", - "tooltip":"" - }, - { - "name":"Material", - "tooltip":"" - }, - { - "name":"Smooth Normal", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_Combine_HSV":{ - "name":"HSV Combine", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Hue", - "tooltip":"" - }, - { - "name":"Saturation", - "tooltip":"" - }, - { - "name":"Value", - "tooltip":"" - } - ], - "tooltip":"Combine 4 image in to one. Each image use to control HSVA channel." - }, - "Node_Strand_Create":{ - "name":"Strand Create", - "outputs":[ - { - "name":"Strand", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Type", - "display_data":[ - "Point", - "Path", - "Mesh" - ], - "tooltip":"" - }, - { - "name":"Density", - "tooltip":"How many strands to generate." - }, - { - "name":"Length", - "tooltip":"" - }, - { - "name":"Segment", - "tooltip":"" - }, - { - "name":"Elasticity", - "tooltip":"Length preservation, the higher the value the easier it is to stretch each segment." - }, - { - "name":"Path", - "tooltip":"" - }, - { - "name":"Position", - "tooltip":"" - }, - { - "name":"Side", - "display_data":[ - "Inner", - "Outer", - "Both" - ], - "tooltip":"" - }, - { - "name":"Spring", - "tooltip":"Angular stiffness, the higher the value the easier it is to bend each segment." - }, - { - "name":"Structure", - "tooltip":"The ability to keep its original shape." - }, - { - "name":"Seed", - "tooltip":"" - }, - { - "name":"Curl frequency", - "tooltip":"" - }, - { - "name":"Curliness", - "tooltip":"" - }, - { - "name":"Mesh", - "tooltip":"" - }, - { - "name":"Distribution", - "display_data":[ - "Uniform", - "Random" - ], - "tooltip":"" - }, - { - "name":"Bake hair", - "tooltip":"Prevent strand reseting to apply manual modification. Unbaking will remove all changes." - }, - { - "name":"View fix hair", - "tooltip":"" - }, - { - "name":"Root strength", - "tooltip":"The force required to break strand from its root. Set to -1 to make strand infinitely strong." - } - ], - "tooltip":"" - }, - "Node_Armature":{ - "name":"Armature Create", - "outputs":[ - { - "name":"Armature", - "tooltip":"" - } - ], - "inputs":[ - ], - "tooltip":"" - }, - "Node_Grey_Alpha":{ - "name":"Grey to Alpha", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Surface in", - "tooltip":"" - }, - { - "name":"Replace color", - "tooltip":"Replace output with solid color." - }, - { - "name":"Color", - "tooltip":"" - }, - { - "name":"Active", - "tooltip":"" - } - ], - "tooltip":"Convert greyscale to alpha value." - }, - "Node_3D_Light_Directional":{ - "name":"Directional Light", - "outputs":[ - { - "name":"Light", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Position", - "tooltip":"" - }, - { - "name":"Rotation", - "tooltip":"" - }, - { - "name":"Scale", - "tooltip":"" - }, - { - "name":"Active", - "tooltip":"" - }, - { - "name":"Color", - "tooltip":"" - }, - { - "name":"Intensity", - "tooltip":"" - }, - { - "name":"Cast Shadow", - "tooltip":"" - }, - { - "name":"Shadow Map Size", - "tooltip":"" - }, - { - "name":"Shadow Map Scale", - "tooltip":"" - }, - { - "name":"Shadow Bias", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_Strand_Update":{ - "name":"Strand Update", - "outputs":[ - { - "name":"Strand", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Strand", - "tooltip":"" - }, - { - "name":"Step", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_PB_Draw_Angle":{ - "name":"Angle", - "outputs":[ - { - "name":"pBox", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"pBox", - "tooltip":"" - }, - { - "name":"Color", - "tooltip":"" - }, - { - "name":"Apply Mask", - "tooltip":"" - }, - { - "name":"Side", - "display_data":[ - 766.0, - 766.0, - 766.0, - 766.0 - ], - "tooltip":"" - }, - { - "name":"Round", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_Padding":{ - "name":"Padding", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Surface in", - "tooltip":"" - }, - { - "name":"Padding", - "tooltip":"" - }, - { - "name":"Fill method", - "display_data":[ - "Empty", - "Solid" - ], - "tooltip":"" - }, - { - "name":"Fill color", - "tooltip":"" - }, - { - "name":"Active", - "tooltip":"" - }, - { - "name":"Pad mode", - "display_data":[ - "Pad out", - "Pad to size" - ], - "tooltip":"" - }, - { - "name":"Target dimension", - "tooltip":"" - }, - { - "name":"Horizontal alignment", - "display_data":[ - 739.0, - 739.0, - 739.0 - ], - "tooltip":"" - }, - { - "name":"Vertical alignment", - "display_data":[ - 867.0, - 867.0, - 867.0 - ], - "tooltip":"" - } - ], - "tooltip":"Make image bigger by adding space in 4 directions." - }, - "Node_Noise_Hex":{ - "name":"Hexagonal Noise", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Dimension", - "tooltip":"" - }, - { - "name":"Seed", - "tooltip":"" - }, - { - "name":"Position", - "tooltip":"" - }, - { - "name":"Scale", - "tooltip":"" - }, - { - "name":"Texture sample", - "tooltip":"" - }, - { - "name":"Oversample mode", - "display_data":[ - "Empty", - "Clamp", - "Repeat" - ], - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_Scale_Algo":{ - "name":"Scale Algorithm", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Surface in", - "tooltip":"" - }, - { - "name":"Algorithm", - "display_data":[ - "Scale2x", - "Scale3x" - ], - "tooltip":"" - }, - { - "name":"Tolerance", - "tooltip":"" - }, - { - "name":"Active", - "tooltip":"" - } - ], - "tooltip":"Scale image using scale2x, scale3x algorithm." - }, - "Node_String_Trim":{ - "name":"Trim Text", - "outputs":[ - { - "name":"Text", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Text", - "tooltip":"" - }, - { - "name":"Head", - "tooltip":"" - }, - { - "name":"Tail", - "tooltip":"" - }, - { - "name":"Trim", - "display_data":[ - "Character", - "Word" - ], - "tooltip":"" - }, - { - "name":"Mode", - "display_data":[ - "Counter", - "Progress" - ], - "tooltip":"Set to progress to use ratio, where 0 means no change and 1 means the entire length of the text." - } - ], - "tooltip":"" - }, - "Node_Rigid_Object":{ - "name":"Object", - "outputs":[ - { - "name":"Object", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Affect by force", - "tooltip":"" - }, - { - "name":"Weight", - "tooltip":"" - }, - { - "name":"Contact friction", - "tooltip":"" - }, - { - "name":"Air resistance", - "tooltip":"" - }, - { - "name":"Rotation resistance", - "tooltip":"" - }, - { - "name":"Shape", - "display_data":[ - "Box", - "Circle", - "Custom" - ], - "tooltip":"" - }, - { - "name":"Texture", - "tooltip":"" - }, - { - "name":"Start shape", - "tooltip":"" - }, - { - "name":"Spawn", - "tooltip":"Make object spawn when start." - }, - { - "name":"Generate mesh", - "tooltip":"" - }, - { - "name":"Mesh expansion", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_Flood_Fill":{ - "name":"Flood Fill", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Surface in", - "tooltip":"" - }, - { - "name":"Mask", - "tooltip":"" - }, - { - "name":"Mix", - "tooltip":"" - }, - { - "name":"Active", - "tooltip":"" - }, - { - "name":"Position", - "tooltip":"" - }, - { - "name":"Colors", - "tooltip":"" - }, - { - "name":"Threshold", - "tooltip":"" - }, - { - "name":"Diagonal", - "tooltip":"" - } - ], - "tooltip":"Filled connected pixel given position and color." - }, - "Node_PB_Fx_Radial":{ - "name":"Radial", - "outputs":[ - { - "name":"pBox", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"pBox", - "tooltip":"" - }, - { - "name":"Amount", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_3D_Mesh_Plane":{ - "name":"3D Plane", - "outputs":[ - { - "name":"Mesh", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Position", - "tooltip":"" - }, - { - "name":"Rotation", - "tooltip":"" - }, - { - "name":"Scale", - "tooltip":"" - }, - { - "name":"Material", - "tooltip":"" - }, - { - "name":"Normal", - "display_data":[ - "X", - "Y", - "Z" - ], - "tooltip":"" - } - ], - "tooltip":"Put 2D image on a plane in 3D space." - }, - "Node_Array_Reverse":{ - "name":"Array Reverse", - "outputs":[ - { - "name":"Array", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Array", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_PB_Draw_Semi_Ellipse":{ - "name":"Semi-Ellipse", - "outputs":[ - { - "name":"pBox", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"pBox", - "tooltip":"" - }, - { - "name":"Color", - "tooltip":"" - }, - { - "name":"Apply Mask", - "tooltip":"" - }, - { - "name":"Side", - "display_data":[ - 776.0, - 776.0, - 776.0, - 776.0 - ], - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_Array_Insert":{ - "name":"Array Insert", - "outputs":[ - { - "name":"Array", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Array", - "tooltip":"" - }, - { - "name":"Index", - "tooltip":"" - }, - { - "name":"Value", - "tooltip":"" - }, - { - "name":"Spread array", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_Feedback_Input":{ - "name":"Input", - "outputs":[ - { - "name":"Value", - "tooltip":"" - }, - { - "name":"Feedback loop", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Display type", - "display_data":[ - "Default", - "Range", - "Rotation", - "Rotation range", - "Slider", - "Slider range", - "Padding", - "Vector", - "Vector range", - "Area", - "Enum button", - "Menu scroll" - ], - "tooltip":"" - }, - { - "name":"Range", - "tooltip":"" - }, - { - "name":"Input type", - "display_data":[ - "Integer", - "Float", - "Boolean", - "Color", - "Surface", - "File Path", - "Curve", - "Text", - "Object", - "Node", - "3D object", - "Any", - "Path", - "Particle", - "Rigidbody Object", - "Fluid Domain", - "Struct", - "Strands", - "Mesh", - "Trigger" - ], - "tooltip":"" - }, - { - "name":"Enum label", - "tooltip":"" - }, - { - "name":"Vector size", - "display_data":[ - "2", - "3", - "4" - ], - "tooltip":"" - }, - { - "name":"Order", - "tooltip":"" - }, - { - "name":"Display preview gizmo", - "tooltip":"" - }, - { - "name":"Step", - "tooltip":"" - }, - { - "name":"Button Label", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_String_Join":{ - "name":"Join Text", - "outputs":[ - { - "name":"Text", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Text array", - "tooltip":"" - }, - { - "name":"Divider", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_Armature_Sample":{ - "name":"Armature Sample", - "outputs":[ - { - "name":"Position", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Armature", - "tooltip":"" - }, - { - "name":"Bone name", - "tooltip":"" - }, - { - "name":"Sample point", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_Camera":{ - "name":"Camera", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Background", - "tooltip":"" - }, - { - "name":"Focus area", - "tooltip":"" - }, - { - "name":"Zoom", - "tooltip":"" - }, - { - "name":"Oversample mode", - "display_data":[ - "Empty", - "Repeat", - "Repeat X", - "Repeat Y" - ], - "tooltip":"How to deal with pixel outside the surface.\n - Empty: Use empty pixel\n - Clamp: Repeat edge pixel\n - Repeat: Repeat texture." - }, - { - "name":"Fix background", - "tooltip":"" - }, - { - "name":"Depth of Field", - "tooltip":"" - }, - { - "name":"Focal distance", - "tooltip":"" - }, - { - "name":"Defocus", - "tooltip":"" - }, - { - "name":"Focal range", - "tooltip":"" - } - ], - "tooltip":"Create camera that crop image to fix dimension with control of position, zoom. Also can be use to create parallax effect." - }, - "Node_Blur_Bokeh":{ - "name":"Lens Blur", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Surface in", - "tooltip":"" - }, - { - "name":"Strength", - "tooltip":"" - }, - { - "name":"Mask", - "tooltip":"" - }, - { - "name":"Mix", - "tooltip":"" - }, - { - "name":"Active", - "tooltip":"" - } - ], - "tooltip":"Create bokeh effect. Blur lighter color in a lens-like manner." - }, - "Node_Image":{ - "name":"Image", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - }, - { - "name":"Path", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Path", - "tooltip":"" - }, - { - "name":"Padding", - "tooltip":"" - } - ], - "tooltip":"Load a single image from your computer." - }, - "Node_Array_Get":{ - "name":"Array Get", - "outputs":[ - { - "name":"Value", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Array", - "tooltip":"" - }, - { - "name":"Index", - "tooltip":"" - }, - { - "name":"Overflow", - "display_data":[ - "Clamp", - "Loop", - "Ping Pong" - ], - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_Strand_Force_Apply":{ - "name":"Strand Force Apply", - "outputs":[ - { - "name":"Strand", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Strand", - "tooltip":"" - }, - { - "name":"Shape", - "display_data":[ - "Point", - "Band" - ], - "tooltip":"" - }, - { - "name":"Position", - "tooltip":"" - }, - { - "name":"Range", - "tooltip":"" - }, - { - "name":"Direction", - "tooltip":"" - }, - { - "name":"Falloff", - "tooltip":"" - }, - { - "name":"Strength", - "tooltip":"" - }, - { - "name":"Turbulence", - "tooltip":"" - }, - { - "name":"Seed", - "tooltip":"" - }, - { - "name":"Turbulence frequency", - "tooltip":"" - }, - { - "name":"Turbulence detail", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_Audio_Window":{ - "name":"Audio Window", - "outputs":[ - { - "name":"Windowed Array", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Audio Array", - "tooltip":"" - }, - { - "name":"Sample", - "tooltip":"" - }, - { - "name":"Size", - "tooltip":"" - } - ], - "tooltip":"Take a slice of an audio array based on the current frame." - }, - "Node_WAV_File_Read":{ - "name":"WAV File In", - "outputs":[ - { - "name":"Data", - "tooltip":"" - }, - { - "name":"Path", - "tooltip":"" - }, - { - "name":"Sample rate", - "tooltip":"" - }, - { - "name":"Channels", - "tooltip":"" - }, - { - "name":"Duration (s)", - "tooltip":"" - }, - { - "name":"Loudness", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Path", - "tooltip":"" - }, - { - "name":"Sync lenght", - "tooltip":"" - } - ], - "tooltip":"Load wav audio file." - }, - "Node_Gradient_Extract":{ - "name":"Gradient Data", - "outputs":[ - { - "name":"Colors", - "tooltip":"" - }, - { - "name":"Positions", - "tooltip":"" - }, - { - "name":"Type", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Gradient", - "tooltip":"" - } - ], - "tooltip":"Get palatte and array of key positions from gradient." - }, - "Node_Glow":{ - "name":"Glow", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Surface in", - "tooltip":"" - }, - { - "name":"Border", - "tooltip":"" - }, - { - "name":"Size", - "tooltip":"" - }, - { - "name":"Strength", - "tooltip":"" - }, - { - "name":"Color", - "tooltip":"" - }, - { - "name":"Mask", - "tooltip":"" - }, - { - "name":"Mix", - "tooltip":"" - }, - { - "name":"Active", - "tooltip":"" - } - ], - "tooltip":"Apply glow to the border of the image." - }, - "Node_Array_Remove":{ - "name":"Array Remove", - "outputs":[ - { - "name":"Array", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Array", - "tooltip":"" - }, - { - "name":"Type", - "display_data":[ - "Index", - "Value" - ], - "tooltip":"" - }, - { - "name":"Index", - "tooltip":"" - }, - { - "name":"Value", - "tooltip":"" - }, - { - "name":"Spread array", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_Vector3":{ - "name":"Vector3", - "outputs":[ - { - "name":"Vector", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"x", - "tooltip":"" - }, - { - "name":"y", - "tooltip":"" - }, - { - "name":"z", - "tooltip":"" - }, - { - "name":"Integer", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_Display_Text":{ - "name":"Display Text", - "outputs":[ - ], - "inputs":[ - { - "name":"Color", - "tooltip":"" - }, - { - "name":"Text", - "tooltip":"" - }, - { - "name":"Style", - "display_data":[ - "Header", - "Sub header", - "Normal" - ], - "tooltip":"" - }, - { - "name":"Alpha", - "tooltip":"" - }, - { - "name":"Line width", - "tooltip":"" - } - ], - "tooltip":"Display text on the graph." - }, - "Node_Render_Sprite_Sheet":{ - "name":"Render Spritesheet", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - }, - { - "name":"Atlas Data", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Sprites", - "tooltip":"" - }, - { - "name":"Sprite set", - "display_data":[ - "Animation", - "Sprite array" - ], - "tooltip":"" - }, - { - "name":"Frame step", - "tooltip":"Number of frames until next sprite. Can be seen as (Step - 1) frame skip." - }, - { - "name":"Packing type", - "display_data":[ - "Horizontal", - "Vertical", - "Grid" - ], - "tooltip":"" - }, - { - "name":"Grid column", - "tooltip":"" - }, - { - "name":"Alignment", - "display_data":[ - "First", - "Middle", - "Last" - ], - "tooltip":"" - }, - { - "name":"Spacing", - "tooltip":"" - }, - { - "name":"Padding", - "tooltip":"" - }, - { - "name":"Range", - "tooltip":"Starting\/ending frames, set end to 0 to default to last frame." - } - ], - "tooltip":"Create spritesheet from image array or animation." - }, - "Node_3D_Mesh_Extrude":{ - "name":"Surface Extrude", - "outputs":[ - { - "name":"Mesh", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Position", - "tooltip":"" - }, - { - "name":"Rotation", - "tooltip":"" - }, - { - "name":"Scale", - "tooltip":"" - }, - { - "name":"Surface in", - "tooltip":"" - }, - { - "name":"Height map", - "tooltip":"" - }, - { - "name":"Smooth", - "tooltip":"" - }, - { - "name":"Always update", - "tooltip":"" - } - ], - "tooltip":"Extrude 2D image into 3D object." - }, - "Node_ASE_File_Read":{ - "name":"ASE File In", - "outputs":[ - { - "name":"Output", - "tooltip":"" - }, - { - "name":"Content", - "tooltip":"" - }, - { - "name":"Path", - "tooltip":"" - }, - { - "name":"Palette", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Path", - "tooltip":"" - }, - { - "name":"Generate layers", - "tooltip":"" - }, - { - "name":"Current tag", - "tooltip":"" - }, - { - "name":"Use cel dimension", - "tooltip":"" - } - ], - "tooltip":"Load Aseprite file with support for layers, tags." - }, - "Node_PB_Fx_Stack":{ - "name":"Stack", - "outputs":[ - { - "name":"pBox", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"pBox", - "tooltip":"" - }, - { - "name":"Amount", - "tooltip":"" - }, - { - "name":"Direction", - "display_data":[ - 798.0, - 798.0, - 798.0, - 798.0 - ], - "tooltip":"" - }, - { - "name":"Color", - "tooltip":"" - }, - { - "name":"Highlight", - "tooltip":"" - }, - { - "name":"Highlight Color", - "tooltip":"" - }, - { - "name":"Invert", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_Color":{ - "name":"Color", - "outputs":[ - { - "name":"Color", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Color", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_3D_Mesh_Sphere_UV":{ - "name":"3D UV Sphere", - "outputs":[ - { - "name":"Mesh", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Position", - "tooltip":"" - }, - { - "name":"Rotation", - "tooltip":"" - }, - { - "name":"Scale", - "tooltip":"" - }, - { - "name":"Horizontal Slices", - "tooltip":"" - }, - { - "name":"Vertical Slices", - "tooltip":"" - }, - { - "name":"Material", - "tooltip":"" - }, - { - "name":"Smooth Normal", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_3D_Mesh_Cylinder":{ - "name":"3D Cylinder", - "outputs":[ - { - "name":"Mesh", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Position", - "tooltip":"" - }, - { - "name":"Rotation", - "tooltip":"" - }, - { - "name":"Scale", - "tooltip":"" - }, - { - "name":"Side", - "tooltip":"" - }, - { - "name":"Material Top", - "tooltip":"" - }, - { - "name":"Material Bottom", - "tooltip":"" - }, - { - "name":"Material Side", - "tooltip":"" - }, - { - "name":"Smooth Side", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_Shadow":{ - "name":"Shadow", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Surface in", - "tooltip":"" - }, - { - "name":"Color", - "tooltip":"" - }, - { - "name":"Strength", - "tooltip":"" - }, - { - "name":"Shift", - "tooltip":"" - }, - { - "name":"Grow", - "tooltip":"" - }, - { - "name":"Blur", - "tooltip":"" - }, - { - "name":"Mask", - "tooltip":"" - }, - { - "name":"Mix", - "tooltip":"" - }, - { - "name":"Active", - "tooltip":"" - } - ], - "tooltip":"Apply shadow behind the image." - }, - "Node_Iterator_Each_Output":{ - "name":"Output", - "outputs":[ - { - "name":"Preview", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Value out", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_SDF":{ - "name":"SDF", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Surface in", - "tooltip":"" - }, - { - "name":"Active", - "tooltip":"" - }, - { - "name":"Side", - "display_data":[ - "Inside", - "Outside", - "Both" - ], - "tooltip":"" - }, - { - "name":"Max distance", - "tooltip":"" - } - ], - "tooltip":"Create signed distance field using jump flooding algorithm." - }, - "Node_Path_Shift":{ - "name":"Shift Path", - "outputs":[ - { - "name":"Path", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Path", - "tooltip":"" - }, - { - "name":"Distance", - "tooltip":"" - } - ], - "tooltip":"Move path along its normal." - }, - "Node_Shape_Polygon":{ - "name":"Polygon Shape", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - }, - { - "name":"Mesh", - "tooltip":"" - }, - { - "name":"Path", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Dimension", - "tooltip":"" - }, - { - "name":"Background", - "tooltip":"" - }, - { - "name":"Background color", - "tooltip":"" - }, - { - "name":"Shape color", - "tooltip":"" - }, - { - "name":"Shape", - "display_data":[ - "Rectangle", - "Ellipse", - "Star", - "Capsule", - "Ring", - "Arc", - "Gear", - "Cross" - ], - "tooltip":"" - }, - { - "name":"Position", - "tooltip":"" - }, - { - "name":"Rotation", - "tooltip":"" - }, - { - "name":"Scale", - "tooltip":"" - }, - { - "name":"Sides", - "tooltip":"" - }, - { - "name":"Inner radius", - "tooltip":"" - }, - { - "name":"Radius", - "tooltip":"" - }, - { - "name":"Teeth", - "tooltip":"" - }, - { - "name":"Teeth height", - "tooltip":"" - }, - { - "name":"Teeth taper", - "tooltip":"" - }, - { - "name":"Angle range", - "tooltip":"" - }, - { - "name":"Round cap", - "tooltip":"" - }, - { - "name":"Mesh", - "tooltip":"" - } - ], - "tooltip":"Draw simple shapes using triangles." - }, - "Node_Wiggler":{ - "name":"Wiggler", - "outputs":[ - { - "name":"Output", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Range", - "tooltip":"" - }, - { - "name":"Frequency", - "tooltip":"" - }, - { - "name":"Seed", - "tooltip":"" - }, - { - "name":"Display", - "display_data":[ - "Number", - "Graph" - ], - "tooltip":"" - } - ], - "tooltip":"Create smooth random value." - }, - "Node_Array_Range":{ - "name":"Array Range", - "outputs":[ - { - "name":"Array", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Start", - "tooltip":"" - }, - { - "name":"End", - "tooltip":"" - }, - { - "name":"Step", - "tooltip":"" - } - ], - "tooltip":"Create array of numbers by setting start, end and step length." - }, - "Node_Image_Sheet":{ - "name":"Splice Spritesheet", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - }, - { - "name":"Atlas Data", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Surface in", - "tooltip":"" - }, - { - "name":"Sprite size", - "tooltip":"" - }, - { - "name":"Row", - "tooltip":"" - }, - { - "name":"Amount", - "tooltip":"" - }, - { - "name":"Offset", - "tooltip":"" - }, - { - "name":"Spacing", - "tooltip":"" - }, - { - "name":"Padding", - "tooltip":"" - }, - { - "name":"Output", - "display_data":[ - "Animation", - "Array" - ], - "tooltip":"" - }, - { - "name":"Animation speed", - "tooltip":"" - }, - { - "name":"Orientation", - "display_data":[ - "Horizontal", - "Vertical" - ], - "tooltip":"" - }, - { - "name":"Auto fill", - "tooltip":"Automatically set amount based on sprite size." - }, - { - "name":"Sync animation", - "tooltip":"" - }, - { - "name":"Filter empty output", - "tooltip":"" - }, - { - "name":"Filtered Pixel", - "display_data":[ - "Transparent", - "Color" - ], - "tooltip":"" - }, - { - "name":"Filtered Color", - "tooltip":"" - } - ], - "tooltip":"Cut up spritesheet into animation or image array." - }, - "Node_Scatter":{ - "name":"Scatter", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - }, - { - "name":"Atlas data", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Surface in", - "tooltip":"" - }, - { - "name":"Dimension", - "tooltip":"" - }, - { - "name":"Amount", - "tooltip":"" - }, - { - "name":"Scale", - "tooltip":"" - }, - { - "name":"Angle", - "tooltip":"" - }, - { - "name":"Area", - "tooltip":"" - }, - { - "name":"Distribution", - "display_data":[ - "Area", - "Border", - "Map", - "Direct Data", - "Path", - "Full image + Tile" - ], - "tooltip":"" - }, - { - "name":"Point at center", - "tooltip":"Rotate each copy to face the spawn center." - }, - { - "name":"Uniform scaling", - "tooltip":"" - }, - { - "name":"Scatter", - "display_data":[ - "Uniform", - "Random" - ], - "tooltip":"" - }, - { - "name":"Seed", - "tooltip":"" - }, - { - "name":"Random blend", - "tooltip":"" - }, - { - "name":"Alpha", - "tooltip":"" - }, - { - "name":"Distribution map", - "tooltip":"" - }, - { - "name":"Distribution data", - "tooltip":"" - }, - { - "name":"Array", - "display_data":[ - "Spread output", - "Mixed" - ], - "tooltip":"What to do when input array of surface.\r\n- Spread: Create Array of output each scattering single surface.\r\n- Mixed: Create single output scattering multiple images." - }, - { - "name":"Multiply alpha", - "tooltip":"" - }, - { - "name":"Use value", - "tooltip":"Apply the third value in each data point (if exist) on given properties." - }, - { - "name":"Blend mode", - "display_data":[ - "Normal", - "Add" - ], - "tooltip":"" - }, - { - "name":"Path", - "tooltip":"" - }, - { - "name":"Rotate along path", - "tooltip":"" - }, - { - "name":"Path Shift", - "tooltip":"" - }, - { - "name":"Scatter Distance", - "tooltip":"" - } - ], - "tooltip":"Scatter image randomly multiple times." - }, - "Node_Iterator_Index":{ - "name":"Index", - "outputs":[ - { - "name":"Loop index", - "tooltip":"" - } - ], - "inputs":[ - ], - "tooltip":"" - }, - "Node_HSV_Channel":{ - "name":"HSV Extract", - "outputs":[ - { - "name":"Hue", - "tooltip":"" - }, - { - "name":"Saturation", - "tooltip":"" - }, - { - "name":"Value", - "tooltip":"" - }, - { - "name":"Alpha", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Surface in", - "tooltip":"" - } - ], - "tooltip":"Extract HSVA channel on an image, each channel becomes its own image." - }, - "Node_Rigid_Override":{ - "name":"Rigidbody Override", - "outputs":[ - { - "name":"Object", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Object", - "tooltip":"" - }, - { - "name":"Positions", - "tooltip":"" - }, - { - "name":"Scales", - "tooltip":"" - }, - { - "name":"Rotations", - "tooltip":"" - }, - { - "name":"Blends", - "tooltip":"" - }, - { - "name":"Alpha", - "tooltip":"" - }, - { - "name":"Velocity", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_Websocket_Receiver":{ - "name":"Websocket Receiver", - "outputs":[ - { - "name":"Data", - "tooltip":"" - }, - { - "name":"Receive data", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Port", - "tooltip":"" - }, - { - "name":"Active", - "tooltip":"" - } - ], - "tooltip":"Create websocket server to receive data from the network." - }, - "Node_Statistic":{ - "name":"Statistic", - "outputs":[ - { - "name":"Statistic", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Type", - "display_data":[ - "Sum", - "Mean", - "Median", - "Max", - "Min" - ], - "tooltip":"" - } - ], - "tooltip":"" - }, "Node_Scatter_Points":{ "name":"Scatter Points", "outputs":[ @@ -2292,54 +52,6 @@ ], "tooltip":"Generate array of vector 2 points for scattering." }, - "Node_HLSL":{ - "name":"HLSL", - "outputs":[ - { - "name":"Surface", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Vertex", - "tooltip":"" - }, - { - "name":"Fragment", - "tooltip":"" - }, - { - "name":"Base Texture", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_Array_Copy":{ - "name":"Array Copy", - "outputs":[ - { - "name":"Array", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Array", - "tooltip":"" - }, - { - "name":"Starting Index", - "tooltip":"" - }, - { - "name":"Size", - "tooltip":"" - } - ], - "tooltip":"" - }, "Node_Colors_Replace":{ "name":"Replace Colors", "outputs":[ @@ -2432,25 +144,25 @@ ], "tooltip":"" }, - "Node_Array_Shuffle":{ - "name":"Shuffle Array", + "Node_Path_Map_Area":{ + "name":"Remap Path", "outputs":[ { - "name":"Shuffled array", + "name":"Path", "tooltip":"" } ], "inputs":[ { - "name":"Array in", + "name":"Path", "tooltip":"" }, { - "name":"Seed", + "name":"Area", "tooltip":"" } ], - "tooltip":"" + "tooltip":"Scale path to fit a given area." }, "Node_Path_Anchor":{ "name":"Path Anchor", @@ -2480,79 +192,6 @@ ], "tooltip":"" }, - "Node_Path_Map_Area":{ - "name":"Remap Path", - "outputs":[ - { - "name":"Path", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Path", - "tooltip":"" - }, - { - "name":"Area", - "tooltip":"" - } - ], - "tooltip":"Scale path to fit a given area." - }, - "Node_Math":{ - "name":"Math", - "outputs":[ - { - "name":"Result", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Type", - "display_data":[ - "Add", - "Subtract", - "Multiply", - "Divide", - "Power", - "Root", - "Sin", - "Cos", - "Tan", - "Modulo", - "Floor", - "Ceil", - "Round", - "Lerp", - "Abs" - ], - "tooltip":"" - }, - { - "name":"a", - "tooltip":"" - }, - { - "name":"b", - "tooltip":"" - }, - { - "name":"Degree angle", - "tooltip":"" - }, - { - "name":"To integer", - "tooltip":"" - }, - { - "name":"Amount", - "tooltip":"" - } - ], - "tooltip":"" - }, "Node_Shape":{ "name":"Shape", "outputs":[ @@ -2723,8 +362,8 @@ ], "tooltip":"" }, - "Node_PB_Fx_Intersect":{ - "name":"Intersect", + "Node_PB_Draw_Angle":{ + "name":"Angle", "outputs":[ { "name":"pBox", @@ -2737,7 +376,25 @@ "tooltip":"" }, { - "name":"Surface", + "name":"Color", + "tooltip":"" + }, + { + "name":"Apply Mask", + "tooltip":"" + }, + { + "name":"Side", + "display_data":[ + 766.0, + 766.0, + 766.0, + 766.0 + ], + "tooltip":"" + }, + { + "name":"Round", "tooltip":"" } ], @@ -2751,101 +408,8 @@ ], "tooltip":"Create group for fluid simulation." }, - "Node_Palette_Sort":{ - "name":"Sort Palette", - "outputs":[ - { - "name":"Sorted palette", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Palette in", - "tooltip":"" - }, - { - "name":"Order", - "display_data":[ - "Brightness", - -1.0, - "Hue (HSV)", - "Saturation (SHV)", - "Value (VHS)", - -1.0, - "Red (RGB)", - "Green (GBR)", - "Blue (BRG)", - -1.0, - "Custom" - ], - "tooltip":"" - }, - { - "name":"Reverse", - "tooltip":"" - }, - { - "name":"Sort Order", - "tooltip":"Compose sorting algorithm using string.\r\n - RGB: Red\/Green\/Blur channel\r\n - HSV: Hue\/Saturation\/Value\r\n - L: Brightness\r\n - Use small letter for ascending, capital letter for descending order." - } - ], - "tooltip":"" - }, - "Node_Stripe":{ - "name":"Stripe", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Dimension", - "tooltip":"" - }, - { - "name":"Amount", - "tooltip":"" - }, - { - "name":"Angle", - "tooltip":"" - }, - { - "name":"Blend", - "tooltip":"Smoothly blend between each stripe." - }, - { - "name":"Position", - "tooltip":"" - }, - { - "name":"Random", - "tooltip":"" - }, - { - "name":"Random color", - "tooltip":"" - }, - { - "name":"Colors", - "tooltip":"" - }, - { - "name":"Color 1", - "tooltip":"" - }, - { - "name":"Color 2", - "tooltip":"" - } - ], - "tooltip":"Generate stripe pattern." - }, - "Node_Threshold":{ - "name":"Threshold", + "Node_Padding":{ + "name":"Padding", "outputs":[ { "name":"Surface out", @@ -2858,23 +422,19 @@ "tooltip":"" }, { - "name":"Brightness", + "name":"Padding", "tooltip":"" }, { - "name":"Brightness Threshold", + "name":"Fill method", + "display_data":[ + "Empty", + "Solid" + ], "tooltip":"" }, { - "name":"Brightness Smoothness", - "tooltip":"" - }, - { - "name":"Mask", - "tooltip":"" - }, - { - "name":"Mix", + "name":"Fill color", "tooltip":"" }, { @@ -2882,19 +442,37 @@ "tooltip":"" }, { - "name":"Alpha", + "name":"Pad mode", + "display_data":[ + "Pad out", + "Pad to size" + ], "tooltip":"" }, { - "name":"Alpha Threshold", + "name":"Target dimension", "tooltip":"" }, { - "name":"Alpha Smoothness", + "name":"Horizontal alignment", + "display_data":[ + 739.0, + 739.0, + 739.0 + ], + "tooltip":"" + }, + { + "name":"Vertical alignment", + "display_data":[ + 867.0, + 867.0, + 867.0 + ], "tooltip":"" } ], - "tooltip":"Set a threshold where pixel darker will becomes black, and brighter to white. Also works with alpha." + "tooltip":"Make image bigger by adding space in 4 directions." }, "Node_Vector_Cross_3D":{ "name":"Cross product 3D", @@ -3082,6 +660,26 @@ ], "tooltip":"Generate white noise." }, + "Node_PB_Fx_Subtract":{ + "name":"Subtract", + "outputs":[ + { + "name":"pBox", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"pBox", + "tooltip":"" + }, + { + "name":"Surface", + "tooltip":"" + } + ], + "tooltip":"" + }, "Node_Base_Convert":{ "name":"Convert Base", "outputs":[ @@ -3106,6 +704,22 @@ ], "tooltip":"" }, + "Node_Array_Reverse":{ + "name":"Array Reverse", + "outputs":[ + { + "name":"Array", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Array", + "tooltip":"" + } + ], + "tooltip":"" + }, "Node_Noise_Simplex":{ "name":"Simplex Noise", "outputs":[ @@ -3207,17 +821,113 @@ ], "tooltip":"" }, - "Node_Path_Array":{ - "name":"Path Array", + "__Node_3D_Extrude":{ + "name":"3D Extrude", "outputs":[ { - "name":"Path array", + "name":"Surface out", + "tooltip":"" + }, + { + "name":"3D scene", + "tooltip":"" + }, + { + "name":"Normal pass", + "tooltip":"" + }, + { + "name":"3D vertex", "tooltip":"" } ], "inputs":[ + { + "name":"Surface in", + "tooltip":"" + }, + { + "name":"Dimension", + "tooltip":"" + }, + { + "name":"Object position", + "tooltip":"" + }, + { + "name":"Object rotation", + "tooltip":"" + }, + { + "name":"Object scale", + "tooltip":"" + }, + { + "name":"Render position", + "tooltip":"" + }, + { + "name":"Render rotation", + "tooltip":"" + }, + { + "name":"Render scale", + "tooltip":"" + }, + { + "name":"Manual generate", + "tooltip":"" + }, + { + "name":"Light direction", + "tooltip":"" + }, + { + "name":"Light height", + "tooltip":"" + }, + { + "name":"Light intensity", + "tooltip":"" + }, + { + "name":"Light color", + "tooltip":"" + }, + { + "name":"Ambient color", + "tooltip":"" + }, + { + "name":"Height map", + "tooltip":"" + }, + { + "name":"Always update", + "tooltip":"" + }, + { + "name":"Projection", + "display_data":[ + "Orthographic", + "Perspective" + ], + "tooltip":"" + }, + { + "name":"Field of view", + "tooltip":"" + }, + { + "name":"Scale view with dimension", + "tooltip":"" + }, + { + "name":"Smooth", + "tooltip":"" + } ], - "tooltip":"" + "tooltip":"Extrude 2D image into 3D object." }, "Node_Equation":{ "name":"Equation", @@ -3235,28 +945,8 @@ ], "tooltip":"Evaluate string of equation. With an option for setting variables." }, - "Node_String_Merge":{ - "name":"Combine Text", - "outputs":[ - { - "name":"Text", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Text A", - "tooltip":"" - }, - { - "name":"Text B", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_Transform":{ - "name":"Transform", + "Node_Gradient":{ + "name":"Draw Gradient", "outputs":[ { "name":"Surface out", @@ -3265,66 +955,104 @@ ], "inputs":[ { - "name":"Surface in", + "name":"Dimension", "tooltip":"" }, { - "name":"Output dimension", + "name":"Gradient", "tooltip":"" }, { - "name":"Position", + "name":"Type", + "display_data":[ + "Linear", + "Circular", + "Radial" + ], "tooltip":"" }, { - "name":"Anchor", + "name":"Angle", "tooltip":"" }, { - "name":"Relative anchor", + "name":"Radius", "tooltip":"" }, { - "name":"Rotation", + "name":"Shift", + "tooltip":"" + }, + { + "name":"Center", + "tooltip":"" + }, + { + "name":"Loop", + "tooltip":"" + }, + { + "name":"Mask", "tooltip":"" }, { "name":"Scale", "tooltip":"" - }, + } + ], + "tooltip":"Create image from gradient." + }, + "Node_Palette_Replace":{ + "name":"Palette Replace", + "outputs":[ { - "name":"Render Mode", - "display_data":[ - "Normal", - "Tile", - "Wrap" - ], - "tooltip":"" - }, - { - "name":"Rotate by velocity", - "tooltip":"Make the surface rotates to follow its movement." - }, - { - "name":"Output dimension type", - "display_data":[ - "Same as input", - "Constant", - "Relative to input", - "Scale" - ], - "tooltip":"" - }, - { - "name":"Round position", - "tooltip":"Round position to the closest integer value to avoid jittering." - }, - { - "name":"Active", + "name":"Surface out", "tooltip":"" } ], - "tooltip":"Move, rotate, and scale image." + "inputs":[ + { + "name":"Palette in", + "tooltip":"" + }, + { + "name":"Palette from", + "tooltip":"" + }, + { + "name":"Palette to", + "tooltip":"" + }, + { + "name":"Threshold", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_Image":{ + "name":"Image", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + }, + { + "name":"Path", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Path", + "tooltip":"" + }, + { + "name":"Padding", + "tooltip":"" + } + ], + "tooltip":"Load a single image from your computer." }, "__Node_3D_Plane":{ "name":"3D Plane", @@ -3440,42 +1168,6 @@ ], "tooltip":"" }, - "Node_Lua_Surface":{ - "name":"Lua Surface", - "outputs":[ - { - "name":"Execution thread", - "tooltip":"" - }, - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Function name", - "tooltip":"" - }, - { - "name":"Output dimension", - "tooltip":"" - }, - { - "name":"Lua code", - "tooltip":14.0 - }, - { - "name":"Execution thread", - "tooltip":"" - }, - { - "name":"Execute on frame", - "tooltip":"" - } - ], - "tooltip":"" - }, "Node_VFX_Attract":{ "name":"Attract", "outputs":[ @@ -3520,46 +1212,6 @@ ], "tooltip":"" }, - "Node_Colorize":{ - "name":"Colorize", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Surface in", - "tooltip":"" - }, - { - "name":"Gradient", - "tooltip":"" - }, - { - "name":"Gradient shift", - "tooltip":"" - }, - { - "name":"Mask", - "tooltip":"" - }, - { - "name":"Mix", - "tooltip":"" - }, - { - "name":"Active", - "tooltip":"" - }, - { - "name":"Multiply alpha", - "tooltip":"" - } - ], - "tooltip":"Map brightness of a pixel to a color from a gradient." - }, "Node_Atlas":{ "name":"Pixel Expand", "outputs":[ @@ -3580,6 +1232,42 @@ ], "tooltip":"Replace transparent pixel with the closet non-transparent pixel." }, + "Node_Array_Remove":{ + "name":"Array Remove", + "outputs":[ + { + "name":"Array", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Array", + "tooltip":"" + }, + { + "name":"Type", + "display_data":[ + "Index", + "Value" + ], + "tooltip":"" + }, + { + "name":"Index", + "tooltip":"" + }, + { + "name":"Value", + "tooltip":"" + }, + { + "name":"Spread array", + "tooltip":"" + } + ], + "tooltip":"" + }, "Node_Normal":{ "name":"Normal", "outputs":[ @@ -3608,50 +1296,6 @@ ], "tooltip":"Create normal map using greyscale value as height." }, - "Node_Path_L_System":{ - "name":"L system", - "outputs":[ - { - "name":"Path", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Length", - "tooltip":"" - }, - { - "name":"Angle", - "tooltip":"" - }, - { - "name":"Starting position", - "tooltip":"" - }, - { - "name":"Iteration", - "tooltip":"" - }, - { - "name":"Starting rule", - "tooltip":31.0 - }, - { - "name":"End replacement", - "tooltip":"Replace symbol of the last generated rule, for example a=F to replace all a with F. Use comma to separate different replacements." - }, - { - "name":"Starting angle", - "tooltip":"" - }, - { - "name":"Seed", - "tooltip":"" - } - ], - "tooltip":"" - }, "Node_Number":{ "name":"Number", "outputs":[ @@ -3789,85 +1433,73 @@ ], "tooltip":"Create surface from buffer." }, - "Node_Tunnel_Out":{ - "name":"Tunnel Out", + "Node_3D_Mesh_Extrude":{ + "name":"Surface Extrude", "outputs":[ { - "name":"Value out", + "name":"Mesh", "tooltip":"" } ], "inputs":[ { - "name":"Name", + "name":"Position", + "tooltip":"" + }, + { + "name":"Rotation", + "tooltip":"" + }, + { + "name":"Scale", + "tooltip":"" + }, + { + "name":"Surface in", + "tooltip":"" + }, + { + "name":"Height map", + "tooltip":"" + }, + { + "name":"Smooth", + "tooltip":"" + }, + { + "name":"Always update", "tooltip":"" } ], - "tooltip":"Receive value from tunnel in of the same key." + "tooltip":"Extrude 2D image into 3D object." }, - "Node_Iterator_Sort_Input":{ - "name":"Sort Input", + "Node_Invert":{ + "name":"Invert", "outputs":[ { - "name":"Value in", + "name":"Surface out", "tooltip":"" } ], "inputs":[ { - "name":"Value in", + "name":"Surface in", + "tooltip":"" + }, + { + "name":"Mask", + "tooltip":"" + }, + { + "name":"Mix", + "tooltip":"" + }, + { + "name":"Active", "tooltip":"" } ], - "tooltip":"" - }, - "Node_PB_Draw_Round_Rectangle":{ - "name":"Round Rectangle", - "outputs":[ - { - "name":"pBox", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"pBox", - "tooltip":"" - }, - { - "name":"Color", - "tooltip":"" - }, - { - "name":"Apply Mask", - "tooltip":"" - }, - { - "name":"Type", - "display_data":[ - "Uniform", - "Per Corner" - ], - "tooltip":"" - }, - { - "name":"Corner Radius", - "tooltip":"" - }, - { - "name":"Corner Radius", - "tooltip":"" - }, - { - "name":"Relative", - "tooltip":"" - }, - { - "name":"Cut Corner", - "tooltip":"" - } - ], - "tooltip":"" + "tooltip":"Invert color." }, "Node_PB_Box_Divide":{ "name":"Divide", @@ -4063,58 +1695,6 @@ ], "tooltip":"Displace each pixel of the image randomly." }, - "Node_Blur_Directional":{ - "name":"Directional Blur", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Surface in", - "tooltip":"" - }, - { - "name":"Strength", - "tooltip":"" - }, - { - "name":"Direction", - "tooltip":"" - }, - { - "name":"Mask", - "tooltip":"" - }, - { - "name":"Mix", - "tooltip":"" - }, - { - "name":"Active", - "tooltip":"" - } - ], - "tooltip":"Blur image given a direction." - }, - "Node_Armature_Pose":{ - "name":"Armature Pose", - "outputs":[ - { - "name":"Armature", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Armature", - "tooltip":"" - } - ], - "tooltip":"" - }, "Node_Cache":{ "name":"Cache", "outputs":[ @@ -4159,6 +1739,104 @@ ], "tooltip":"Load animated .gif from your computer." }, + "Node_Shape_Polygon":{ + "name":"Polygon Shape", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + }, + { + "name":"Mesh", + "tooltip":"" + }, + { + "name":"Path", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Dimension", + "tooltip":"" + }, + { + "name":"Background", + "tooltip":"" + }, + { + "name":"Background color", + "tooltip":"" + }, + { + "name":"Shape color", + "tooltip":"" + }, + { + "name":"Shape", + "display_data":[ + "Rectangle", + "Ellipse", + "Star", + "Capsule", + "Ring", + "Arc", + "Gear", + "Cross" + ], + "tooltip":"" + }, + { + "name":"Position", + "tooltip":"" + }, + { + "name":"Rotation", + "tooltip":"" + }, + { + "name":"Scale", + "tooltip":"" + }, + { + "name":"Sides", + "tooltip":"" + }, + { + "name":"Inner radius", + "tooltip":"" + }, + { + "name":"Radius", + "tooltip":"" + }, + { + "name":"Teeth", + "tooltip":"" + }, + { + "name":"Teeth height", + "tooltip":"" + }, + { + "name":"Teeth taper", + "tooltip":"" + }, + { + "name":"Angle range", + "tooltip":"" + }, + { + "name":"Round cap", + "tooltip":"" + }, + { + "name":"Mesh", + "tooltip":"" + } + ], + "tooltip":"Draw simple shapes using triangles." + }, "Node_3D_Scene":{ "name":"3D Scene", "outputs":[ @@ -4171,30 +1849,6 @@ ], "tooltip":"" }, - "Node_De_Corner":{ - "name":"De-Corner", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Surface in", - "tooltip":"" - }, - { - "name":"Active", - "tooltip":"" - }, - { - "name":"Tolerance", - "tooltip":"" - } - ], - "tooltip":"Attempt to remove single pixel corner from the image." - }, "Node_9Slice":{ "name":"Nine Slice", "outputs":[ @@ -4227,12 +1881,16 @@ ], "tooltip":"Cut image into 3x3 parts, and scale\/repeat only the middle part." }, - "Node_Displace":{ - "name":"Displace", + "Node_Scatter":{ + "name":"Scatter", "outputs":[ { "name":"Surface out", "tooltip":"" + }, + { + "name":"Atlas data", + "tooltip":"" } ], "inputs":[ @@ -4241,57 +1899,115 @@ "tooltip":"" }, { - "name":"Displace map", + "name":"Dimension", "tooltip":"" }, { - "name":"Position", - "tooltip":"Vector to displace pixel by." - }, - { - "name":"Strength", + "name":"Amount", "tooltip":"" }, { - "name":"Mid value", - "tooltip":"Brightness value to be use as a basis for 'no displacement'." + "name":"Scale", + "tooltip":"" }, { - "name":"Color data", + "name":"Angle", + "tooltip":"" + }, + { + "name":"Area", + "tooltip":"" + }, + { + "name":"Distribution", "display_data":[ - "Ignore", - "Vector", - "Angle" + "Area", + "Border", + "Map", + "Direct Data", + "Path", + "Full image + Tile" ], - "tooltip":"Use color data set extra information.\r\n - Ignore: Don't use color data.\r\n - Vector: Use red as X displacement, green as Y displacement.\r\n - Angle: Use red as angle, green as distance." + "tooltip":"" }, { - "name":"Iterate", - "tooltip":"If not set, then strength value is multiplied directly to the displacement.\r\nIf set, then strength value control how many times the effect applies on itself." + "name":"Point at center", + "tooltip":"Rotate each copy to face the spawn center." }, { - "name":"Oversample mode", + "name":"Uniform scaling", + "tooltip":"" + }, + { + "name":"Scatter", "display_data":[ - "Empty", - "Clamp", - "Repeat" + "Uniform", + "Random" ], - "tooltip":"How to deal with pixel outside the surface.\n - Empty: Use empty pixel\n - Clamp: Repeat edge pixel\n - Repeat: Repeat texture." - }, - { - "name":"Mask", "tooltip":"" }, { - "name":"Mix", + "name":"Seed", "tooltip":"" }, { - "name":"Active", + "name":"Random blend", + "tooltip":"" + }, + { + "name":"Alpha", + "tooltip":"" + }, + { + "name":"Distribution map", + "tooltip":"" + }, + { + "name":"Distribution data", + "tooltip":"" + }, + { + "name":"Array", + "display_data":[ + "Spread output", + "Mixed" + ], + "tooltip":"What to do when input array of surface.\r\n- Spread: Create Array of output each scattering single surface.\r\n- Mixed: Create single output scattering multiple images." + }, + { + "name":"Multiply alpha", + "tooltip":"" + }, + { + "name":"Use value", + "tooltip":"Apply the third value in each data point (if exist) on given properties." + }, + { + "name":"Blend mode", + "display_data":[ + "Normal", + "Add" + ], + "tooltip":"" + }, + { + "name":"Path", + "tooltip":"" + }, + { + "name":"Rotate along path", + "tooltip":"" + }, + { + "name":"Path Shift", + "tooltip":"" + }, + { + "name":"Scatter Distance", "tooltip":"" } ], - "tooltip":"Distort image using another image as a map." + "tooltip":"Scatter image randomly multiple times." }, "Node_Strand_Gravity":{ "name":"Strand Gravity", @@ -4317,6 +2033,26 @@ ], "tooltip":"" }, + "Node_Iterator_Output":{ + "name":"Output", + "outputs":[ + ], + "inputs":[ + { + "name":"Value", + "tooltip":"" + }, + { + "name":"Order", + "tooltip":"" + }, + { + "name":"Loop exit", + "tooltip":"" + } + ], + "tooltip":"" + }, "Node_PCX_Condition":{ "name":"Condition", "outputs":[ @@ -4405,41 +2141,65 @@ ], "tooltip":"Apply chromatic aberration effect to the image." }, - "Node_PCX_Equation":{ - "name":"Equation", + "Node_Warp":{ + "name":"Warp", "outputs":[ { - "name":"Result", + "name":"Surface out", "tooltip":"" } ], "inputs":[ { - "name":"Equation", + "name":"Surface in", + "tooltip":"" + }, + { + "name":"Top left", + "tooltip":"" + }, + { + "name":"Top right", + "tooltip":"" + }, + { + "name":"Bottom left", + "tooltip":"" + }, + { + "name":"Bottom right", + "tooltip":"" + }, + { + "name":"Active", "tooltip":"" } ], - "tooltip":"" + "tooltip":"Warp image by freely moving the corners." }, - "Node_Frame":{ - "name":"Frame", + "Node_Websocket_Receiver":{ + "name":"Websocket Receiver", "outputs":[ - ], - "inputs":[ { - "name":"Size", + "name":"Data", "tooltip":"" }, { - "name":"Color", - "tooltip":"" - }, - { - "name":"Alpha", + "name":"Receive data", "tooltip":"" } ], - "tooltip":"Create frame surrounding nodes." + "inputs":[ + { + "name":"Port", + "tooltip":"" + }, + { + "name":"Active", + "tooltip":"" + } + ], + "tooltip":"Create websocket server to receive data from the network." }, "Node_Surface_To_Buffer":{ "name":"Buffer from Surface", @@ -4457,54 +2217,6 @@ ], "tooltip":"Create buffer from surface." }, - "Node_VFX_Variable":{ - "name":"VFX Variable", - "outputs":[ - { - "name":"Positions", - "tooltip":"" - }, - { - "name":"Scales", - "tooltip":"" - }, - { - "name":"Rotations", - "tooltip":"" - }, - { - "name":"Blending", - "tooltip":"" - }, - { - "name":"Alpha", - "tooltip":"" - }, - { - "name":"Life", - "tooltip":"" - }, - { - "name":"Max life", - "tooltip":"" - }, - { - "name":"Surface", - "tooltip":"" - }, - { - "name":"Velocity", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Particles", - "tooltip":"" - } - ], - "tooltip":"" - }, "Node_Fluid_Domain_Queue":{ "name":"Queue Domain", "outputs":[ @@ -4517,25 +2229,85 @@ ], "tooltip":"" }, - "Node_String_Get_Char":{ - "name":"Get Character", + "Node_HLSL":{ + "name":"HLSL", "outputs":[ { - "name":"Text", + "name":"Surface", "tooltip":"" } ], "inputs":[ { - "name":"Text", + "name":"Vertex", "tooltip":"" }, { - "name":"Index", + "name":"Fragment", "tooltip":"" }, { - "name":"Amount", + "name":"Base Texture", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_Scale":{ + "name":"Scale", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Surface in", + "tooltip":"" + }, + { + "name":"Scale", + "tooltip":"" + }, + { + "name":"Mode", + "display_data":[ + "Upscale", + "Scale to fit" + ], + "tooltip":"" + }, + { + "name":"Target dimension", + "tooltip":"" + }, + { + "name":"Active", + "tooltip":"" + } + ], + "tooltip":"Simple node for scaling image." + }, + "Node_Array_Copy":{ + "name":"Array Copy", + "outputs":[ + { + "name":"Array", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Array", + "tooltip":"" + }, + { + "name":"Starting Index", + "tooltip":"" + }, + { + "name":"Size", "tooltip":"" } ], @@ -4747,6 +2519,10 @@ "name":"Bounce amount", "tooltip":"" }, + { + "name":"Bounce friction", + "tooltip":"Apply horizontal friction once particle stop bouncing." + }, { "name":"Spawn trigger", "tooltip":"" @@ -4786,186 +2562,59 @@ ], "tooltip":"" }, - "Node_Gradient_Points":{ - "name":"4 Points Gradient", + "Node_Math":{ + "name":"Math", "outputs":[ { - "name":"Surface out", + "name":"Result", "tooltip":"" } ], "inputs":[ { - "name":"Dimension", + "name":"Type", + "display_data":[ + "Add", + "Subtract", + "Multiply", + "Divide", + "Power", + "Root", + "Sin", + "Cos", + "Tan", + "Modulo", + "Floor", + "Ceil", + "Round", + "Lerp", + "Abs" + ], "tooltip":"" }, { - "name":"Center 1", + "name":"a", "tooltip":"" }, { - "name":"Color 1", + "name":"b", "tooltip":"" }, { - "name":"Center 2", + "name":"Degree angle", "tooltip":"" }, { - "name":"Color 2", + "name":"To integer", "tooltip":"" }, { - "name":"Center 3", - "tooltip":"" - }, - { - "name":"Color 3", - "tooltip":"" - }, - { - "name":"Center 4", - "tooltip":"" - }, - { - "name":"Color 4", - "tooltip":"" - }, - { - "name":"Use palette", - "tooltip":"" - }, - { - "name":"Palette", - "tooltip":"" - }, - { - "name":"Falloff 1", - "tooltip":"" - }, - { - "name":"Falloff 2", - "tooltip":"" - }, - { - "name":"Falloff 3", - "tooltip":"" - }, - { - "name":"Falloff 4", - "tooltip":"" - } - ], - "tooltip":"Create image from 4 color points." - }, - "Node_To_Number":{ - "name":"To Number", - "outputs":[ - { - "name":"Number", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Text", + "name":"Amount", "tooltip":"" } ], "tooltip":"" }, - "Node_Rigid_Variable":{ - "name":"Rigidbody Variable", - "outputs":[ - { - "name":"Positions", - "tooltip":"" - }, - { - "name":"Scales", - "tooltip":"" - }, - { - "name":"Rotations", - "tooltip":"" - }, - { - "name":"Blends", - "tooltip":"" - }, - { - "name":"Alpha", - "tooltip":"" - }, - { - "name":"Velocity", - "tooltip":"" - }, - { - "name":"Center of mass", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Object", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_Color_replace":{ - "name":"Replace Palette", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Surface in", - "tooltip":"" - }, - { - "name":"Palette from", - "tooltip":"Color to be replaced." - }, - { - "name":"Palette to", - "tooltip":"Palette to be replaced to." - }, - { - "name":"Threshold", - "tooltip":"" - }, - { - "name":"Set others to black", - "tooltip":"Set pixel that doesn't match any color in 'palette from' to black." - }, - { - "name":"Multiply alpha", - "tooltip":"" - }, - { - "name":"Hard replace", - "tooltip":"Completely override pixel with new color instead of blending between it." - }, - { - "name":"Mask", - "tooltip":"" - }, - { - "name":"Mix", - "tooltip":"" - }, - { - "name":"Active", - "tooltip":"" - } - ], - "tooltip":"Replace color that match one palette with another palette." - }, "Node_Array_Shift":{ "name":"Array Shift", "outputs":[ @@ -4986,103 +2635,6 @@ ], "tooltip":"" }, - "Node_Shadow_Cast":{ - "name":"Cast Shadow", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - }, - { - "name":"Light mask", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Background", - "tooltip":"" - }, - { - "name":"Solid", - "tooltip":"" - }, - { - "name":"Light Position", - "tooltip":"" - }, - { - "name":"Soft light radius", - "tooltip":"" - }, - { - "name":"Light density", - "tooltip":"" - }, - { - "name":"Light type", - "display_data":[ - "Point", - "Sun" - ], - "tooltip":"" - }, - { - "name":"Ambient color", - "tooltip":"" - }, - { - "name":"Light color", - "tooltip":"" - }, - { - "name":"Light radius", - "tooltip":"" - }, - { - "name":"Render solid", - "tooltip":"" - }, - { - "name":"Use BG color", - "tooltip":"If checked, background color will be used as shadow caster." - }, - { - "name":"BG threshold", - "tooltip":"" - }, - { - "name":"Light intensity", - "tooltip":"" - }, - { - "name":"Banding", - "tooltip":"" - }, - { - "name":"Attenuation", - "display_data":[ - "Quadratic", - "Invert quadratic", - "Linear" - ], - "tooltip":"Control how light fade out over distance." - }, - { - "name":"Ambient occlusion", - "tooltip":"" - }, - { - "name":"Ambient occlusion strength", - "tooltip":"" - }, - { - "name":"Active", - "tooltip":"" - } - ], - "tooltip":"Apply light that create shadow using shadow mask." - }, "Node_Rate_Remap":{ "name":"Rate Remap", "outputs":[ @@ -5107,74 +2659,43 @@ ], "tooltip":"Remap animation to a new framerate." }, - "Node_Logic":{ - "name":"Logic Opr", + "Node_Palette_Sort":{ + "name":"Sort Palette", "outputs":[ { - "name":"Result", + "name":"Sorted palette", "tooltip":"" } ], "inputs":[ { - "name":"Type", + "name":"Palette in", + "tooltip":"" + }, + { + "name":"Order", "display_data":[ - "And", - "Or", - "Not", - "Nand", - "Nor", - "Xor" + "Brightness", + -1.0, + "Hue (HSV)", + "Saturation (SHV)", + "Value (VHS)", + -1.0, + "Red (RGB)", + "Green (GBR)", + "Blue (BRG)", + -1.0, + "Custom" ], "tooltip":"" }, { - "name":"a", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_Fluid_Vortex":{ - "name":"Vortex", - "outputs":[ - { - "name":"Fluid Domain", + "name":"Reverse", "tooltip":"" }, { - "name":"Fluid Domain", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Fluid Domain", - "tooltip":"" - }, - { - "name":"Position", - "tooltip":"" - }, - { - "name":"Radius", - "tooltip":"" - }, - { - "name":"Strength", - "tooltip":"" - }, - { - "name":"Attraction", - "tooltip":"" - }, - { - "name":"Mode", - "display_data":[ - "Override", - "Add" - ], - "tooltip":"" + "name":"Sort Order", + "tooltip":"Compose sorting algorithm using string.\r\n - RGB: Red\/Green\/Blur channel\r\n - HSV: Hue\/Saturation\/Value\r\n - L: Brightness\r\n - Use small letter for ascending, capital letter for descending order." } ], "tooltip":"" @@ -5303,62 +2824,97 @@ ], "tooltip":"" }, - "Node_Path_Plot":{ - "name":"Path plot", + "Node_Stripe":{ + "name":"Stripe", "outputs":[ { - "name":"Path", + "name":"Surface out", "tooltip":"" } ], "inputs":[ { - "name":"Output scale", + "name":"Dimension", "tooltip":"" }, { - "name":"Coordinate", - "display_data":[ - "Cartesian", - "Polar" - ], + "name":"Amount", "tooltip":"" }, { - "name":"Equation type", - "display_data":[ - "x function", - "y function", - "parametric" - ], + "name":"Angle", "tooltip":"" }, { - "name":"0 function", + "name":"Blend", + "tooltip":"Smoothly blend between each stripe." + }, + { + "name":"Position", "tooltip":"" }, { - "name":"1 function", + "name":"Random", "tooltip":"" }, { - "name":"Origin", + "name":"Random color", "tooltip":"" }, { - "name":"Range", + "name":"Colors", "tooltip":"" }, { - "name":"Input scale", + "name":"Color 1", "tooltip":"" }, { - "name":"Input shift", + "name":"Color 2", "tooltip":"" } ], - "tooltip":"" + "tooltip":"Generate stripe pattern." + }, + "Node_RGB_Channel":{ + "name":"RGBA Extract", + "outputs":[ + { + "name":"Red", + "tooltip":"" + }, + { + "name":"Green", + "tooltip":"" + }, + { + "name":"Blue", + "tooltip":"" + }, + { + "name":"Alpha", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Surface In", + "tooltip":"" + }, + { + "name":"Output Type", + "display_data":[ + "Channel value", + "Greyscale" + ], + "tooltip":"" + }, + { + "name":"Keep Alpha", + "tooltip":"" + } + ], + "tooltip":"Extract RGBA channel on an image, each channel becomes its own image." }, "Node_String_Regex_Match":{ "name":"RegEx Match", @@ -5380,6 +2936,58 @@ ], "tooltip":"" }, + "Node_Threshold":{ + "name":"Threshold", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Surface in", + "tooltip":"" + }, + { + "name":"Brightness", + "tooltip":"" + }, + { + "name":"Brightness Threshold", + "tooltip":"" + }, + { + "name":"Brightness Smoothness", + "tooltip":"" + }, + { + "name":"Mask", + "tooltip":"" + }, + { + "name":"Mix", + "tooltip":"" + }, + { + "name":"Active", + "tooltip":"" + }, + { + "name":"Alpha", + "tooltip":"" + }, + { + "name":"Alpha Threshold", + "tooltip":"" + }, + { + "name":"Alpha Smoothness", + "tooltip":"" + } + ], + "tooltip":"Set a threshold where pixel darker will becomes black, and brighter to white. Also works with alpha." + }, "Node_Gradient_Palette":{ "name":"Palette to Gradient", "outputs":[ @@ -5413,101 +3021,41 @@ ], "tooltip":"Create gradient from palette." }, - "__Node_3D_Cone":{ + "Node_3D_Mesh_Cone":{ "name":"3D Cone", "outputs":[ { - "name":"Surface out", - "tooltip":"" - }, - { - "name":"3D scene", - "tooltip":"" - }, - { - "name":"Normal pass", - "tooltip":"" - }, - { - "name":"3D vertex", + "name":"Mesh", "tooltip":"" } ], "inputs":[ { - "name":"Dimension", + "name":"Position", "tooltip":"" }, { - "name":"Render position", + "name":"Rotation", "tooltip":"" }, { - "name":"Render rotation", + "name":"Scale", "tooltip":"" }, { - "name":"Render scale", + "name":"Side", "tooltip":"" }, { - "name":"Object scale", + "name":"Material Bottom", "tooltip":"" }, { - "name":"Light direction", + "name":"Material Side", "tooltip":"" }, { - "name":"Light height", - "tooltip":"" - }, - { - "name":"Light intensity", - "tooltip":"" - }, - { - "name":"Light color", - "tooltip":"" - }, - { - "name":"Ambient color", - "tooltip":"" - }, - { - "name":"Object rotation", - "tooltip":"" - }, - { - "name":"Object position", - "tooltip":"" - }, - { - "name":"Projection", - "display_data":[ - "Orthographic", - "Perspective" - ], - "tooltip":"" - }, - { - "name":"Field of view", - "tooltip":"" - }, - { - "name":"Sides", - "tooltip":"" - }, - { - "name":"Textures base", - "tooltip":"" - }, - { - "name":"Textures side", - "tooltip":"" - }, - { - "name":"Scale view with dimension", + "name":"Smooth Side", "tooltip":"" } ], @@ -5541,167 +3089,22 @@ ], "tooltip":"Move gradients keys." }, - "Node_VFX_Accelerate":{ - "name":"Accelerate", + "Node_PCX_fn_Surface_Height":{ + "name":"Surface Height", "outputs":[ { - "name":"Particles", + "name":"PCX", "tooltip":"" } ], "inputs":[ { - "name":"Particles", - "tooltip":"" - }, - { - "name":"Area", - "tooltip":"" - }, - { - "name":"Falloff", - "tooltip":"" - }, - { - "name":"Falloff distance", - "tooltip":"" - }, - { - "name":"Effect Vector", - "tooltip":"" - }, - { - "name":"Strength", - "tooltip":"" - }, - { - "name":"Rotate particle", - "tooltip":"" - }, - { - "name":"Scale particle", + "name":"Surface", "tooltip":"" } ], "tooltip":"" }, - "__Node_3D_Export":{ - "name":"3D Export", - "outputs":[ - ], - "inputs":[ - { - "name":"Vertex data", - "tooltip":"" - }, - { - "name":"Path", - "tooltip":"Export location without '.obj' extension." - }, - { - "name":"Export texture", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_Blend":{ - "name":"Blend", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Background", - "tooltip":"" - }, - { - "name":"Foreground", - "tooltip":"" - }, - { - "name":"Blend mode", - "display_data":[ - "Normal", - "Add", - "Subtract", - "Multiply", - "Screen", - "Overlay", - "Hue", - "Saturation", - "Luminosity", - "Maximum", - "Minimum", - "Replace", - "Difference" - ], - "tooltip":"" - }, - { - "name":"Opacity", - "tooltip":"" - }, - { - "name":"Mask", - "tooltip":"" - }, - { - "name":"Fill mode", - "display_data":[ - "None", - "Stretch", - "Tile" - ], - "tooltip":"" - }, - { - "name":"Output dimension", - "display_data":[ - "Background", - "Forground", - "Mask", - "Maximum", - "Constant" - ], - "tooltip":"" - }, - { - "name":"Constant dimension", - "tooltip":"" - }, - { - "name":"Active", - "tooltip":"" - }, - { - "name":"Preserve alpha", - "tooltip":"" - }, - { - "name":"Horizontal Align", - "display_data":[ - 739.0, - 739.0, - 739.0 - ], - "tooltip":"" - }, - { - "name":"Vertical Align", - "display_data":[ - 867.0, - 867.0, - 867.0 - ], - "tooltip":"" - } - ], - "tooltip":"Blend 2 images using different blendmodes." - }, "Node_PB_Box_Mirror":{ "name":"Mirror", "outputs":[ @@ -5879,46 +3282,6 @@ ], "tooltip":"Blur image using simpler algorithm. Allowing for variable blur strength." }, - "Node_Pixel_Sort":{ - "name":"Pixel Sort", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Surface in", - "tooltip":"" - }, - { - "name":"Iteration", - "tooltip":"" - }, - { - "name":"Threshold", - "tooltip":"" - }, - { - "name":"Direction", - "tooltip":"" - }, - { - "name":"Mask", - "tooltip":"" - }, - { - "name":"Mix", - "tooltip":"" - }, - { - "name":"Active", - "tooltip":"" - } - ], - "tooltip":"Sort pixel by brightness in horizontal, or vertial axis." - }, "Node_Blur":{ "name":"Blur", "outputs":[ @@ -6031,21 +3394,21 @@ ], "tooltip":"" }, - "Node_Text_File_Write":{ - "name":"Text File Out", + "Node_Group_Output":{ + "name":"Output", "outputs":[ ], "inputs":[ { - "name":"Path", + "name":"Value", "tooltip":"" }, { - "name":"Content", + "name":"Order", "tooltip":"" } ], - "tooltip":"Save text as a .txt file." + "tooltip":"" }, "Node_PB_Box_Contract":{ "name":"Contract", @@ -6139,18 +3502,6 @@ ], "tooltip":"" }, - "Node_Iterator_Filter_Input":{ - "name":"Input", - "outputs":[ - { - "name":"Value in", - "tooltip":"" - } - ], - "inputs":[ - ], - "tooltip":"" - }, "Node_Struct_JSON_Parse":{ "name":"Parse JSON", "outputs":[ @@ -6167,6 +3518,46 @@ ], "tooltip":"" }, + "Node_Colorize":{ + "name":"Colorize", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Surface in", + "tooltip":"" + }, + { + "name":"Gradient", + "tooltip":"" + }, + { + "name":"Gradient shift", + "tooltip":"" + }, + { + "name":"Mask", + "tooltip":"" + }, + { + "name":"Mix", + "tooltip":"" + }, + { + "name":"Active", + "tooltip":"" + }, + { + "name":"Multiply alpha", + "tooltip":"" + } + ], + "tooltip":"Map brightness of a pixel to a color from a gradient." + }, "Node_Canvas":{ "name":"Canvas", "outputs":[ @@ -6232,21 +3623,29 @@ ], "tooltip":"Draw on surface using brush, eraser, etc." }, - "Node_Armature_Path":{ - "name":"Armature Path", + "Node_Texture_Remap":{ + "name":"Texture Remap", "outputs":[ { - "name":"Path", + "name":"Surface out", "tooltip":"" } ], "inputs":[ { - "name":"Armature", + "name":"Surface in", + "tooltip":"" + }, + { + "name":"RG Map", + "tooltip":"Displacement map where red retermine the X position, and green determine the Y position." + }, + { + "name":"Active", "tooltip":"" } ], - "tooltip":"" + "tooltip":"Remap image using texture map. Where red channel control x position and green channel control y position." }, "Node_Perlin":{ "name":"Perlin Noise", @@ -6343,140 +3742,92 @@ ], "tooltip":"" }, - "Node_3D_Camera":{ - "name":"3D Camera", + "Node_Strand_Render":{ + "name":"Strand Render", "outputs":[ { - "name":"Rendered", - "tooltip":"" - }, - { - "name":"Normal", - "tooltip":"" - }, - { - "name":"Depth", + "name":"Surface out", "tooltip":"" } ], "inputs":[ - { - "name":"Position", - "tooltip":"" - }, - { - "name":"Rotation", - "tooltip":"" - }, - { - "name":"Scale", - "tooltip":"" - }, - { - "name":"FOV", - "tooltip":"" - }, - { - "name":"Clipping Distance", - "tooltip":"" - }, { "name":"Dimension", "tooltip":"" }, { - "name":"Projection", - "display_data":[ - "Perspective", - "Orthographic" - ], + "name":"Strand", "tooltip":"" }, { - "name":"Scene", + "name":"Thickness", "tooltip":"" }, { - "name":"Ambient Light", + "name":"Thickness over length", "tooltip":"" }, { - "name":"Show Background", + "name":"Random color", "tooltip":"" }, { - "name":"Backface Culling", - "display_data":[ - "None", - "CW", - "CCW" - ], + "name":"Color over length", "tooltip":"" }, { - "name":"Orthographic Scale", + "name":"Seed", "tooltip":"" }, { - "name":"Postioning Mode", - "display_data":[ - "Position + Rotation", - "Position + Lookat", - "Lookat + Rotation" - ], - "tooltip":"" - }, - { - "name":"Lookat Position", - "tooltip":"" - }, - { - "name":"Roll", - "tooltip":"" - }, - { - "name":"Horizontal Angle", - "tooltip":"" - }, - { - "name":"Vertical Angle", - "tooltip":"" - }, - { - "name":"Distance", - "tooltip":"" - }, - { - "name":"Gamma Adjust", - "tooltip":"" - }, - { - "name":"Environment Texture", - "tooltip":"" - }, - { - "name":"Ambient Occlusion", - "tooltip":"" - }, - { - "name":"AO Radius", - "tooltip":"" - }, - { - "name":"AO Bias", - "tooltip":"" - }, - { - "name":"AO Strength", - "tooltip":"" - }, - { - "name":"Round Normal", - "tooltip":"" + "name":"Child", + "tooltip":"Render extra strands between the real strands." } ], "tooltip":"" }, + "Node_Pack_Sprites":{ + "name":"Pack Sprites", + "outputs":[ + { + "name":"Packed image", + "tooltip":"" + }, + { + "name":"Atlas data", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Sprites", + "tooltip":"" + }, + { + "name":"Algorithm", + "display_data":[ + "Skyline", + "Shelf", + "Top left", + "Best fit" + ], + "tooltip":"" + }, + { + "name":"Max width", + "tooltip":"" + }, + { + "name":"Max height", + "tooltip":"" + }, + { + "name":"Spacing", + "tooltip":"" + } + ], + "tooltip":"Combine array of images with different dimension using different algorithms." + }, "Node_Path_Separate_Folder":{ "name":"Separate File Path", "outputs":[ @@ -6501,62 +3852,6 @@ ], "tooltip":"" }, - "Node_DynaSurf_Out_Height":{ - "name":"getHeight", - "outputs":[ - { - "name":"PCX", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Height", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_Flip":{ - "name":"Flip", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Surface in", - "tooltip":"" - }, - { - "name":"Axis", - "display_data":[ - "x", - "y" - ], - "tooltip":"" - }, - { - "name":"Active", - "tooltip":"" - } - ], - "tooltip":"Flip image horizontally or vertically." - }, - "Node_Iterate":{ - "name":"Loop", - "outputs":[ - ], - "inputs":[ - { - "name":"Repeat", - "tooltip":"" - } - ], - "tooltip":"Create group that reuse output as input repeatedly in one frame." - }, "Node_Greyscale":{ "name":"Greyscale", "outputs":[ @@ -6593,23 +3888,15 @@ ], "tooltip":"Convert color image to greyscale." }, - "Node_Level":{ - "name":"Level", + "Node_Color_RGB":{ + "name":"RGB Color", "outputs":[ { - "name":"Surface out", + "name":"Color", "tooltip":"" } ], "inputs":[ - { - "name":"Surface in", - "tooltip":"" - }, - { - "name":"White", - "tooltip":"" - }, { "name":"Red", "tooltip":"" @@ -6623,23 +3910,11 @@ "tooltip":"" }, { - "name":"Alpha", - "tooltip":"" - }, - { - "name":"Mask", - "tooltip":"" - }, - { - "name":"Mix", - "tooltip":"" - }, - { - "name":"Active", + "name":"Normalized", "tooltip":"" } ], - "tooltip":"Adjust brightness of an image by changing its brightness range." + "tooltip":"Create color from RGB value." }, "Node_String_Length":{ "name":"Text Length", @@ -6665,26 +3940,6 @@ ], "tooltip":"" }, - "Node_Strand_Collision":{ - "name":"Strand Collision", - "outputs":[ - { - "name":"Strand", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Strand", - "tooltip":"" - }, - { - "name":"Collision mesh", - "tooltip":"" - } - ], - "tooltip":"" - }, "Node_Path":{ "name":"Path", "outputs":[ @@ -6725,43 +3980,17 @@ ], "tooltip":"" }, - "Node_2D_light":{ - "name":"2D Light", + "Node_PB_Draw_Round_Rectangle":{ + "name":"Round Rectangle", "outputs":[ { - "name":"Surface out", - "tooltip":"" - }, - { - "name":"Light only", + "name":"pBox", "tooltip":"" } ], "inputs":[ { - "name":"Surface in", - "tooltip":"" - }, - { - "name":"Light shape", - "display_data":[ - "Point", - "Line", - "Line asymmetric", - "Spot" - ], - "tooltip":"" - }, - { - "name":"Center", - "tooltip":"" - }, - { - "name":"Range", - "tooltip":"" - }, - { - "name":"Intensity", + "name":"pBox", "tooltip":"" }, { @@ -6769,52 +3998,35 @@ "tooltip":"" }, { - "name":"Start", + "name":"Apply Mask", "tooltip":"" }, { - "name":"Finish", - "tooltip":"" - }, - { - "name":"Sweep", - "tooltip":"" - }, - { - "name":"Sweep end", - "tooltip":"" - }, - { - "name":"Banding", - "tooltip":"" - }, - { - "name":"Attenuation", + "name":"Type", "display_data":[ - "Quadratic", - "Invert quadratic", - "Linear" + "Uniform", + "Per Corner" ], - "tooltip":"Control how light fade out over distance." - }, - { - "name":"Radial banding", "tooltip":"" }, { - "name":"Radial start", + "name":"Corner Radius", "tooltip":"" }, { - "name":"Radial band ratio", + "name":"Corner Radius", "tooltip":"" }, { - "name":"Active", + "name":"Relative", + "tooltip":"" + }, + { + "name":"Cut Corner", "tooltip":"" } ], - "tooltip":"Apply different shaped light on the image." + "tooltip":"" }, "Node_VFX_Turbulence":{ "name":"Turbulence", @@ -6888,79 +4100,6 @@ ], "tooltip":"" }, - "Node_PB_Box_Split":{ - "name":"Split", - "outputs":[ - { - "name":"pBox Left", - "tooltip":"" - }, - { - "name":"pBox Right", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Layer Shift", - "tooltip":"" - }, - { - "name":"pBox", - "tooltip":"" - }, - { - "name":"Type", - "display_data":[ - "Ratio", - "Fix Left", - "Fix Right" - ], - "tooltip":"" - }, - { - "name":"Ratio", - "tooltip":"" - }, - { - "name":"Fix width", - "tooltip":"" - }, - { - "name":"Axis", - "display_data":[ - "X", - "Y" - ], - "tooltip":"" - }, - { - "name":"Mirror", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_Switch":{ - "name":"Switch", - "outputs":[ - { - "name":"Result", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Index", - "tooltip":"" - }, - { - "name":"Default value", - "tooltip":"" - } - ], - "tooltip":"Given an index, output value base on index matching." - }, "Node_Array_Length":{ "name":"Array Length", "outputs":[ @@ -7025,6 +4164,165 @@ ], "tooltip":"" }, + "Node_Repeat":{ + "name":"Repeat", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Surface in", + "tooltip":"" + }, + { + "name":"Dimension", + "tooltip":"" + }, + { + "name":"Amount", + "tooltip":"" + }, + { + "name":"Pattern", + "display_data":[ + "Linear", + "Grid", + "Circular" + ], + "tooltip":"" + }, + { + "name":"Repeat position", + "tooltip":"" + }, + { + "name":"Repeat rotation", + "tooltip":"" + }, + { + "name":"Scale multiply", + "tooltip":"" + }, + { + "name":"Angle range", + "tooltip":"" + }, + { + "name":"Radius", + "tooltip":"" + }, + { + "name":"Start position", + "tooltip":"" + }, + { + "name":"Scale over copy", + "tooltip":"" + }, + { + "name":"Path", + "tooltip":"Make each copy follow along path." + }, + { + "name":"Path range", + "tooltip":"Range of the path to follow." + }, + { + "name":"Path shift", + "tooltip":"" + }, + { + "name":"Color over copy", + "tooltip":"" + }, + { + "name":"Alpha over copy", + "tooltip":"" + }, + { + "name":"Array select", + "display_data":[ + "Order", + "Random", + "Spread" + ], + "tooltip":"Whether to select image from an array in order, at random, pr spread or each image to one output." + }, + { + "name":"Seed", + "tooltip":"" + }, + { + "name":"Column", + "tooltip":"" + }, + { + "name":"Column shift", + "tooltip":"" + }, + { + "name":"Animator midpoint", + "tooltip":"" + }, + { + "name":"Animator range", + "tooltip":"" + }, + { + "name":"Animator position", + "tooltip":"" + }, + { + "name":"Animator rotation", + "tooltip":"" + }, + { + "name":"Animator scale", + "tooltip":"" + }, + { + "name":"Animator falloff", + "tooltip":"" + }, + { + "name":"Stack", + "display_data":[ + "None", + "X", + "Y" + ], + "tooltip":"Place each copy next to each other, taking surface dimension into account." + }, + { + "name":"Animator blend", + "tooltip":"" + }, + { + "name":"Animator alpha", + "tooltip":"" + } + ], + "tooltip":"Repeat image multiple times linearly, or in grid pattern." + }, + "Node_Json_File_Write":{ + "name":"JSON File Out", + "outputs":[ + ], + "inputs":[ + { + "name":"Path", + "tooltip":"" + }, + { + "name":"Struct", + "tooltip":"" + } + ], + "tooltip":"Save data to .json file." + }, "Node_Array_Add":{ "name":"Array Add", "outputs":[ @@ -7045,53 +4343,25 @@ ], "tooltip":"" }, - "Node_Rigid_Object_Spawner":{ - "name":"Object Spawner", + "Node_Atlas_Draw":{ + "name":"Draw Atlas", "outputs":[ { - "name":"Object", + "name":"Surface", "tooltip":"" } ], "inputs":[ { - "name":"Object", + "name":"Dimension", "tooltip":"" }, { - "name":"Spawn area", - "tooltip":"" - }, - { - "name":"Spawn type", - "display_data":[ - "Stream", - "Burst" - ], - "tooltip":"" - }, - { - "name":"Spawn delay", - "tooltip":"" - }, - { - "name":"Spawn amount", - "tooltip":"" - }, - { - "name":"Spawn frame", - "tooltip":"" - }, - { - "name":"Spawn", - "tooltip":"" - }, - { - "name":"Seed", + "name":"Atlas", "tooltip":"" } ], - "tooltip":"" + "tooltip":"Render image atlas to a surface." }, "Node_IsoSurf":{ "name":"IsoSurf", @@ -7121,6 +4391,58 @@ ], "tooltip":"" }, + "Node_BW":{ + "name":"BW", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Surface in", + "tooltip":"" + }, + { + "name":"Brightness", + "tooltip":"" + }, + { + "name":"Contrast", + "tooltip":"" + }, + { + "name":"Mask", + "tooltip":"" + }, + { + "name":"Mix", + "tooltip":"" + }, + { + "name":"Active", + "tooltip":"" + } + ], + "tooltip":"Convert color image to black and white." + }, + "Node_PCX_Equation":{ + "name":"Equation", + "outputs":[ + { + "name":"Result", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Equation", + "tooltip":"" + } + ], + "tooltip":"" + }, "Node_PB_Box_Transform":{ "name":"Transform", "outputs":[ @@ -7145,6 +4467,64 @@ ], "tooltip":"" }, + "Node_Bevel":{ + "name":"Bevel", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Surface in", + "tooltip":"" + }, + { + "name":"Height", + "tooltip":"" + }, + { + "name":"Shift", + "tooltip":"" + }, + { + "name":"Scale", + "tooltip":"" + }, + { + "name":"Slope", + "display_data":[ + "Linear", + "Smooth", + "Circular" + ], + "tooltip":"" + }, + { + "name":"Mask", + "tooltip":"" + }, + { + "name":"Mix", + "tooltip":"" + }, + { + "name":"Active", + "tooltip":"" + }, + { + "name":"Oversample mode", + "display_data":[ + "Empty", + "Clamp", + "Repeat" + ], + "tooltip":"How to deal with pixel outside the surface.\n - Empty: Use empty pixel\n - Clamp: Repeat edge pixel\n - Repeat: Repeat texture." + } + ], + "tooltip":"Apply 2D bevel on the image." + }, "Node_Array_Find":{ "name":"Array Find", "outputs":[ @@ -7165,33 +4545,110 @@ ], "tooltip":"" }, - "Node_Array":{ - "name":"Array", + "Node_String_Get_Char":{ + "name":"Get Character", "outputs":[ { - "name":"Array", + "name":"Text", "tooltip":"" } ], "inputs":[ { - "name":"Type", - "display_data":[ - "Any", - "Surface", - "Number", - "Color", - "Text" - ], + "name":"Text", "tooltip":"" }, { - "name":"Spread array", + "name":"Index", + "tooltip":"" + }, + { + "name":"Amount", "tooltip":"" } ], "tooltip":"" }, + "__Node_3D_Combine":{ + "name":"3D Combine", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + }, + { + "name":"3D objects", + "tooltip":"" + }, + { + "name":"Normal pass", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Dimension", + "tooltip":"" + }, + { + "name":"Object position", + "tooltip":"" + }, + { + "name":"Object rotation", + "tooltip":"" + }, + { + "name":"Object scale", + "tooltip":"" + }, + { + "name":"Render position", + "tooltip":"" + }, + { + "name":"Render scale", + "tooltip":"" + }, + { + "name":"Light direction", + "tooltip":"" + }, + { + "name":"Light height", + "tooltip":"" + }, + { + "name":"Light intensity", + "tooltip":"" + }, + { + "name":"Light color", + "tooltip":"" + }, + { + "name":"Ambient color", + "tooltip":"" + }, + { + "name":"Projection", + "display_data":[ + "Orthographic", + "Perspective" + ], + "tooltip":"" + }, + { + "name":"Field of view", + "tooltip":"" + }, + { + "name":"Scale view with dimension", + "tooltip":"" + } + ], + "tooltip":"Combine multiple 3D object to a single scene," + }, "Node_Crop_Content":{ "name":"Crop Content", "outputs":[ @@ -7224,29 +4681,109 @@ ], "tooltip":"Crop out empty pixel pixel from the image." }, - "Node_Path_Blend":{ - "name":"Blend Path", + "Node_3D_Mesh_Obj":{ + "name":"3D Object", "outputs":[ { - "name":"Path", + "name":"Mesh", "tooltip":"" } ], "inputs":[ { - "name":"Path 1", + "name":"Position", "tooltip":"" }, { - "name":"Path 2", + "name":"Rotation", "tooltip":"" }, { - "name":"Ratio", + "name":"Scale", + "tooltip":"" + }, + { + "name":"File Path", + "tooltip":"" + }, + { + "name":"Flip UV", + "tooltip":"Flip UV axis, can be use to fix some texture mapping error." + } + ], + "tooltip":"Load .obj file from your computer as a 3D object." + }, + "Node_Gradient_Points":{ + "name":"4 Points Gradient", + "outputs":[ + { + "name":"Surface out", "tooltip":"" } ], - "tooltip":"Blend between 2 paths." + "inputs":[ + { + "name":"Dimension", + "tooltip":"" + }, + { + "name":"Center 1", + "tooltip":"" + }, + { + "name":"Color 1", + "tooltip":"" + }, + { + "name":"Center 2", + "tooltip":"" + }, + { + "name":"Color 2", + "tooltip":"" + }, + { + "name":"Center 3", + "tooltip":"" + }, + { + "name":"Color 3", + "tooltip":"" + }, + { + "name":"Center 4", + "tooltip":"" + }, + { + "name":"Color 4", + "tooltip":"" + }, + { + "name":"Use palette", + "tooltip":"" + }, + { + "name":"Palette", + "tooltip":"" + }, + { + "name":"Falloff 1", + "tooltip":"" + }, + { + "name":"Falloff 2", + "tooltip":"" + }, + { + "name":"Falloff 3", + "tooltip":"" + }, + { + "name":"Falloff 4", + "tooltip":"" + } + ], + "tooltip":"Create image from 4 color points." }, "Node_Sprite_Stack":{ "name":"Sprite Stack", @@ -7313,6 +4850,50 @@ ], "tooltip":"Create sprite stack either from repeating a single image or stacking different images using array." }, + "Node_Fluid_Vortex":{ + "name":"Vortex", + "outputs":[ + { + "name":"Fluid Domain", + "tooltip":"" + }, + { + "name":"Fluid Domain", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Fluid Domain", + "tooltip":"" + }, + { + "name":"Position", + "tooltip":"" + }, + { + "name":"Radius", + "tooltip":"" + }, + { + "name":"Strength", + "tooltip":"" + }, + { + "name":"Attraction", + "tooltip":"" + }, + { + "name":"Mode", + "display_data":[ + "Override", + "Add" + ], + "tooltip":"" + } + ], + "tooltip":"" + }, "Node_Rigid_Force_Apply":{ "name":"Apply Force", "outputs":[ @@ -7463,18 +5044,6 @@ ], "tooltip":"" }, - "Node_Struct":{ - "name":"Struct", - "outputs":[ - { - "name":"Struct", - "tooltip":"" - } - ], - "inputs":[ - ], - "tooltip":"" - }, "Node_PCX_Array_Set":{ "name":"Array Set", "outputs":[ @@ -7499,24 +5068,80 @@ ], "tooltip":"" }, - "Node_Path_Reverse":{ - "name":"Reverse Path", + "Node_Feedback_Output":{ + "name":"Output", "outputs":[ - { - "name":"Path", - "tooltip":"" - } ], "inputs":[ { - "name":"Path", + "name":"Value", + "tooltip":"" + }, + { + "name":"Order", + "tooltip":"" + }, + { + "name":"Feedback loop", "tooltip":"" } ], "tooltip":"" }, - "__Node_3D_Extrude":{ - "name":"3D Extrude", + "Node_3D_Mesh_Cube":{ + "name":"3D Cube", + "outputs":[ + { + "name":"Mesh", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Position", + "tooltip":"" + }, + { + "name":"Rotation", + "tooltip":"" + }, + { + "name":"Scale", + "tooltip":"" + }, + { + "name":"Material per side", + "tooltip":"" + }, + { + "name":"Material", + "tooltip":"" + }, + { + "name":"Material Bottom", + "tooltip":"" + }, + { + "name":"Material Left", + "tooltip":"" + }, + { + "name":"Material Right", + "tooltip":"" + }, + { + "name":"Material Back", + "tooltip":"" + }, + { + "name":"Material Front", + "tooltip":"" + } + ], + "tooltip":"" + }, + "__Node_3D_Cone":{ + "name":"3D Cone", "outputs":[ { "name":"Surface out", @@ -7536,26 +5161,10 @@ } ], "inputs":[ - { - "name":"Surface in", - "tooltip":"" - }, { "name":"Dimension", "tooltip":"" }, - { - "name":"Object position", - "tooltip":"" - }, - { - "name":"Object rotation", - "tooltip":"" - }, - { - "name":"Object scale", - "tooltip":"" - }, { "name":"Render position", "tooltip":"" @@ -7569,7 +5178,7 @@ "tooltip":"" }, { - "name":"Manual generate", + "name":"Object scale", "tooltip":"" }, { @@ -7593,11 +5202,11 @@ "tooltip":"" }, { - "name":"Height map", + "name":"Object rotation", "tooltip":"" }, { - "name":"Always update", + "name":"Object position", "tooltip":"" }, { @@ -7613,15 +5222,128 @@ "tooltip":"" }, { - "name":"Scale view with dimension", + "name":"Sides", "tooltip":"" }, { - "name":"Smooth", + "name":"Textures base", + "tooltip":"" + }, + { + "name":"Textures side", + "tooltip":"" + }, + { + "name":"Scale view with dimension", "tooltip":"" } ], - "tooltip":"Extrude 2D image into 3D object." + "tooltip":"" + }, + "Node_Group":{ + "name":"Group", + "outputs":[ + ], + "inputs":[ + ], + "tooltip":"" + }, + "Node_Blend":{ + "name":"Blend", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Background", + "tooltip":"" + }, + { + "name":"Foreground", + "tooltip":"" + }, + { + "name":"Blend mode", + "display_data":[ + "Normal", + "Add", + "Subtract", + "Multiply", + "Screen", + "Overlay", + "Hue", + "Saturation", + "Luminosity", + "Maximum", + "Minimum", + "Replace", + "Difference" + ], + "tooltip":"" + }, + { + "name":"Opacity", + "tooltip":"" + }, + { + "name":"Mask", + "tooltip":"" + }, + { + "name":"Fill mode", + "display_data":[ + "None", + "Stretch", + "Tile" + ], + "tooltip":"" + }, + { + "name":"Output dimension", + "display_data":[ + "Background", + "Forground", + "Mask", + "Maximum", + "Constant" + ], + "tooltip":"" + }, + { + "name":"Constant dimension", + "tooltip":"" + }, + { + "name":"Active", + "tooltip":"" + }, + { + "name":"Preserve alpha", + "tooltip":"" + }, + { + "name":"Horizontal Align", + "display_data":[ + 739.0, + 739.0, + 739.0 + ], + "tooltip":"" + }, + { + "name":"Vertical Align", + "display_data":[ + 867.0, + 867.0, + 867.0 + ], + "tooltip":"" + } + ], + "tooltip":"Blend 2 images using different blendmodes." }, "Node_Image_Sequence":{ "name":"Image Array", @@ -7721,46 +5443,66 @@ ], "tooltip":"Skew image horizontally, or vertically." }, - "Node_PB_Fx_Hash":{ - "name":"Hashing", + "Node_ASE_layer":{ + "name":"ASE Layer", "outputs":[ { - "name":"pBox", + "name":"Surface out", "tooltip":"" } ], "inputs":[ { - "name":"pBox", + "name":"ASE data", "tooltip":"" }, { - "name":"Color", - "tooltip":"" - }, - { - "name":"Hash", - "tooltip":"" - }, - { - "name":"Invert", - "tooltip":"" - }, - { - "name":"Dissolve", - "tooltip":"" - }, - { - "name":"Detail", - "tooltip":"" - }, - { - "name":"Dissolve Scale", + "name":"Use cel dimension", "tooltip":"" } ], "tooltip":"" }, + "Node_Pixel_Sort":{ + "name":"Pixel Sort", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Surface in", + "tooltip":"" + }, + { + "name":"Iteration", + "tooltip":"" + }, + { + "name":"Threshold", + "tooltip":"" + }, + { + "name":"Direction", + "tooltip":"" + }, + { + "name":"Mask", + "tooltip":"" + }, + { + "name":"Mix", + "tooltip":"" + }, + { + "name":"Active", + "tooltip":"" + } + ], + "tooltip":"Sort pixel by brightness in horizontal, or vertial axis." + }, "Node_Grid":{ "name":"Grid", "outputs":[ @@ -7983,189 +5725,21 @@ ], "tooltip":"Combine 4 image in to one. Each image use to control RGBA channel." }, - "Node_Palette_Replace":{ - "name":"Palette Replace", + "Node_Array_CSV_Parse":{ + "name":"Parse CSV", "outputs":[ { - "name":"Surface out", + "name":"Array", "tooltip":"" } ], "inputs":[ { - "name":"Palette in", + "name":"CSV string", "tooltip":"" }, { - "name":"Palette from", - "tooltip":"" - }, - { - "name":"Palette to", - "tooltip":"" - }, - { - "name":"Threshold", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_DynaSurf_In":{ - "name":"Input", - "outputs":[ - { - "name":"Value", - "tooltip":"" - } - ], - "inputs":[ - ], - "tooltip":"" - }, - "Node_Strand_Group":{ - "name":"StrandSim", - "outputs":[ - ], - "inputs":[ - ], - "tooltip":"Create group for hair simulation." - }, - "Node_PB_Fx_Brick":{ - "name":"Brick", - "outputs":[ - { - "name":"pBox", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"pBox", - "tooltip":"" - }, - { - "name":"Scale", - "tooltip":"" - }, - { - "name":"Axis", - "display_data":[ - "X", - "Y" - ], - "tooltip":"" - }, - { - "name":"Shift", - "tooltip":"" - }, - { - "name":"Color", - "tooltip":"" - }, - { - "name":"Dissolve", - "tooltip":"" - }, - { - "name":"Detail", - "tooltip":"" - }, - { - "name":"Dissolve Scale", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_PB_Box_Inset":{ - "name":"Inset", - "outputs":[ - { - "name":"pBox Inset", - "tooltip":"" - }, - { - "name":"pBox Frame", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Layer Shift", - "tooltip":"" - }, - { - "name":"pBox", - "tooltip":"" - }, - { - "name":"Inset", - "tooltip":"" - }, - { - "name":"Type", - "display_data":[ - "Padding", - "Ratio" - ], - "tooltip":"" - }, - { - "name":"Width", - "tooltip":"" - }, - { - "name":"Height", - "tooltip":"" - }, - { - "name":"Horizontal alignment", - "tooltip":"" - }, - { - "name":"Vertical alignment", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_Struct_Get":{ - "name":"Struct Get", - "outputs":[ - { - "name":"Struct", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Struct", - "tooltip":"" - }, - { - "name":"Key", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_Vector_Cross_2D":{ - "name":"Cross product 2D", - "outputs":[ - { - "name":"Result", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Point 1", - "tooltip":"" - }, - { - "name":"Point 2", + "name":"Skip line", "tooltip":"" } ], @@ -8245,6 +5819,22 @@ ], "tooltip":"" }, + "Node_DynaSurf_Out_Width":{ + "name":"getWidth", + "outputs":[ + { + "name":"PCX", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Width", + "tooltip":"" + } + ], + "tooltip":"" + }, "Node_Mesh_Create_Path":{ "name":"Path to Mesh", "outputs":[ @@ -8358,6 +5948,22 @@ ], "tooltip":"Load .json file using keys." }, + "Node_Armature_Path":{ + "name":"Armature Path", + "outputs":[ + { + "name":"Path", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Armature", + "tooltip":"" + } + ], + "tooltip":"" + }, "Node_PCX_var":{ "name":"Variable", "outputs":[ @@ -8418,6 +6024,140 @@ ], "tooltip":"Reduce and remap color to match a palette." }, + "Node_3D_Camera":{ + "name":"3D Camera", + "outputs":[ + { + "name":"Rendered", + "tooltip":"" + }, + { + "name":"Normal", + "tooltip":"" + }, + { + "name":"Depth", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Position", + "tooltip":"" + }, + { + "name":"Rotation", + "tooltip":"" + }, + { + "name":"Scale", + "tooltip":"" + }, + { + "name":"FOV", + "tooltip":"" + }, + { + "name":"Clipping Distance", + "tooltip":"" + }, + { + "name":"Dimension", + "tooltip":"" + }, + { + "name":"Projection", + "display_data":[ + "Perspective", + "Orthographic" + ], + "tooltip":"" + }, + { + "name":"Scene", + "tooltip":"" + }, + { + "name":"Ambient Light", + "tooltip":"" + }, + { + "name":"Show Background", + "tooltip":"" + }, + { + "name":"Backface Culling", + "display_data":[ + "None", + "CW", + "CCW" + ], + "tooltip":"" + }, + { + "name":"Orthographic Scale", + "tooltip":"" + }, + { + "name":"Postioning Mode", + "display_data":[ + "Position + Rotation", + "Position + Lookat", + "Lookat + Rotation" + ], + "tooltip":"" + }, + { + "name":"Lookat Position", + "tooltip":"" + }, + { + "name":"Roll", + "tooltip":"" + }, + { + "name":"Horizontal Angle", + "tooltip":"" + }, + { + "name":"Vertical Angle", + "tooltip":"" + }, + { + "name":"Distance", + "tooltip":"" + }, + { + "name":"Gamma Adjust", + "tooltip":"" + }, + { + "name":"Environment Texture", + "tooltip":"" + }, + { + "name":"Ambient Occlusion", + "tooltip":"" + }, + { + "name":"AO Radius", + "tooltip":"" + }, + { + "name":"AO Bias", + "tooltip":"" + }, + { + "name":"AO Strength", + "tooltip":"" + }, + { + "name":"Round Normal", + "tooltip":"" + } + ], + "tooltip":"" + }, "Node_PB_Draw_Rectangle":{ "name":"Rectangle", "outputs":[ @@ -8442,6 +6182,70 @@ ], "tooltip":"" }, + "Node_Flip":{ + "name":"Flip", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Surface in", + "tooltip":"" + }, + { + "name":"Axis", + "display_data":[ + "x", + "y" + ], + "tooltip":"" + }, + { + "name":"Active", + "tooltip":"" + } + ], + "tooltip":"Flip image horizontally or vertically." + }, + "Node_Animation_Control":{ + "name":"Animation Control", + "outputs":[ + ], + "inputs":[ + { + "name":"Toggle Play \/ Pause", + "tooltip":"" + }, + { + "name":"Pause", + "tooltip":"" + }, + { + "name":"Resume", + "tooltip":"" + }, + { + "name":"Play From Beginning", + "tooltip":"" + }, + { + "name":"Play once", + "tooltip":"" + }, + { + "name":"Skip Frames", + "tooltip":"" + }, + { + "name":"Skip Frames Count", + "tooltip":"" + } + ], + "tooltip":"Control animation state with triggers." + }, "Node_PB_Fx_Highlight":{ "name":"Highlight", "outputs":[ @@ -8482,41 +6286,41 @@ ], "tooltip":"" }, - "Node_Animation_Control":{ - "name":"Animation Control", + "Node_PCX_fn_Random":{ + "name":"Random", + "outputs":[ + { + "name":"PCX", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Min", + "tooltip":"" + }, + { + "name":"Max", + "tooltip":"" + }, + { + "name":"Integer", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_Iterate":{ + "name":"Loop", "outputs":[ ], "inputs":[ { - "name":"Toggle Play \/ Pause", - "tooltip":"" - }, - { - "name":"Pause", - "tooltip":"" - }, - { - "name":"Resume", - "tooltip":"" - }, - { - "name":"Play From Beginning", - "tooltip":"" - }, - { - "name":"Play once", - "tooltip":"" - }, - { - "name":"Skip Frames", - "tooltip":"" - }, - { - "name":"Skip Frames Count", + "name":"Repeat", "tooltip":"" } ], - "tooltip":"Control animation state with triggers." + "tooltip":"Create group that reuse output as input repeatedly in one frame." }, "Node_Iterator_Filter_Output":{ "name":"Output", @@ -8534,6 +6338,42 @@ ], "tooltip":"" }, + "Node_Palette_Shift":{ + "name":"Palette Shift", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Surface in", + "tooltip":"" + }, + { + "name":"Palette", + "tooltip":"" + }, + { + "name":"Shift", + "tooltip":"" + }, + { + "name":"Mask", + "tooltip":"" + }, + { + "name":"Mix", + "tooltip":"" + }, + { + "name":"Active", + "tooltip":"" + } + ], + "tooltip":"" + }, "Node_VFX_Renderer":{ "name":"Renderer", "outputs":[ @@ -8563,33 +6403,101 @@ ], "tooltip":"" }, - "Node_Invert":{ - "name":"Invert", + "__Node_3D_Sphere":{ + "name":"3D Sphere", "outputs":[ { "name":"Surface out", "tooltip":"" + }, + { + "name":"3D scene", + "tooltip":"" + }, + { + "name":"Normal pass", + "tooltip":"" + }, + { + "name":"3D vertex", + "tooltip":"" } ], "inputs":[ { - "name":"Surface in", + "name":"Subdivisions", + "tooltip":"Amount of polygon in X and Y axis." + }, + { + "name":"Dimension", "tooltip":"" }, { - "name":"Mask", + "name":"Render position", "tooltip":"" }, { - "name":"Mix", + "name":"Render rotation", "tooltip":"" }, { - "name":"Active", + "name":"Render scale", + "tooltip":"" + }, + { + "name":"Textures", + "tooltip":"" + }, + { + "name":"Object scale", + "tooltip":"" + }, + { + "name":"Light direction", + "tooltip":"" + }, + { + "name":"Light height", + "tooltip":"" + }, + { + "name":"Light intensity", + "tooltip":"" + }, + { + "name":"Light color", + "tooltip":"" + }, + { + "name":"Ambient color", + "tooltip":"" + }, + { + "name":"Object rotation", + "tooltip":"" + }, + { + "name":"Object position", + "tooltip":"" + }, + { + "name":"Projection", + "display_data":[ + "Orthographic", + "Perspective" + ], + "tooltip":"" + }, + { + "name":"Field of view", + "tooltip":"" + }, + { + "name":"Scale view with dimension", "tooltip":"" } ], - "tooltip":"Invert color." + "tooltip":"" }, "Node_Fluid_Add_Collider":{ "name":"Add Collider", @@ -8615,6 +6523,34 @@ ], "tooltip":"" }, + "Node_Array_Sort":{ + "name":"Sort Number", + "outputs":[ + { + "name":"Sorted array", + "tooltip":"" + }, + { + "name":"Sorted index", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Array in", + "tooltip":"" + }, + { + "name":"Order", + "display_data":[ + "Ascending", + "Descending" + ], + "tooltip":"" + } + ], + "tooltip":"" + }, "Node_Anim_Curve":{ "name":"Evaluate Curve", "outputs":[ @@ -8643,6 +6579,26 @@ ], "tooltip":"Evaluate value from an animation curve." }, + "Node_Alpha_Grey":{ + "name":"Alpha to Grey", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Surface in", + "tooltip":"" + }, + { + "name":"Active", + "tooltip":"" + } + ], + "tooltip":"Convert alpha value into solid greyscale." + }, "Node_Average":{ "name":"Average", "outputs":[ @@ -8675,6 +6631,97 @@ ], "tooltip":"Average color of every pixels in the image." }, + "Node_2D_light":{ + "name":"2D Light", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + }, + { + "name":"Light only", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Surface in", + "tooltip":"" + }, + { + "name":"Light shape", + "display_data":[ + "Point", + "Line", + "Line asymmetric", + "Spot" + ], + "tooltip":"" + }, + { + "name":"Center", + "tooltip":"" + }, + { + "name":"Range", + "tooltip":"" + }, + { + "name":"Intensity", + "tooltip":"" + }, + { + "name":"Color", + "tooltip":"" + }, + { + "name":"Start", + "tooltip":"" + }, + { + "name":"Finish", + "tooltip":"" + }, + { + "name":"Sweep", + "tooltip":"" + }, + { + "name":"Sweep end", + "tooltip":"" + }, + { + "name":"Banding", + "tooltip":"" + }, + { + "name":"Attenuation", + "display_data":[ + "Quadratic", + "Invert quadratic", + "Linear" + ], + "tooltip":"Control how light fade out over distance." + }, + { + "name":"Radial banding", + "tooltip":"" + }, + { + "name":"Radial start", + "tooltip":"" + }, + { + "name":"Radial band ratio", + "tooltip":"" + }, + { + "name":"Active", + "tooltip":"" + } + ], + "tooltip":"Apply different shaped light on the image." + }, "Node_PB_Fx_Add":{ "name":"Add", "outputs":[ @@ -8695,6 +6742,26 @@ ], "tooltip":"" }, + "Node_Switch":{ + "name":"Switch", + "outputs":[ + { + "name":"Result", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Index", + "tooltip":"" + }, + { + "name":"Default value", + "tooltip":"" + } + ], + "tooltip":"Given an index, output value base on index matching." + }, "Node_Group_Input":{ "name":"Input", "outputs":[ @@ -8808,25 +6875,37 @@ ], "tooltip":"" }, - "Node_Iterator_Output":{ - "name":"Output", + "Node_Solid":{ + "name":"Solid", "outputs":[ - ], - "inputs":[ { - "name":"Value", - "tooltip":"" - }, - { - "name":"Order", - "tooltip":"" - }, - { - "name":"Loop exit", + "name":"Surface out", "tooltip":"" } ], - "tooltip":"" + "inputs":[ + { + "name":"Dimension", + "tooltip":"" + }, + { + "name":"Color", + "tooltip":"" + }, + { + "name":"Empty", + "tooltip":"" + }, + { + "name":"Mask", + "tooltip":"" + }, + { + "name":"Use mask dimension", + "tooltip":"" + } + ], + "tooltip":"Create image of a single color." }, "Node_Rigid_Global":{ "name":"RigidSim Global", @@ -8840,44 +6919,8 @@ ], "tooltip":"" }, - "Node_Warp":{ - "name":"Warp", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Surface in", - "tooltip":"" - }, - { - "name":"Top left", - "tooltip":"" - }, - { - "name":"Top right", - "tooltip":"" - }, - { - "name":"Bottom left", - "tooltip":"" - }, - { - "name":"Bottom right", - "tooltip":"" - }, - { - "name":"Active", - "tooltip":"" - } - ], - "tooltip":"Warp image by freely moving the corners." - }, - "Node_PB_Fx_Subtract":{ - "name":"Subtract", + "Node_PB_Fx_Radial":{ + "name":"Radial", "outputs":[ { "name":"pBox", @@ -8890,7 +6933,7 @@ "tooltip":"" }, { - "name":"Surface", + "name":"Amount", "tooltip":"" } ], @@ -8929,6 +6972,50 @@ ], "tooltip":"Extract palette from an image." }, + "Node_DynaSurf_Out":{ + "name":"Output", + "outputs":[ + { + "name":"PCX", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Surface", + "tooltip":"" + }, + { + "name":"x", + "tooltip":"" + }, + { + "name":"y", + "tooltip":"" + }, + { + "name":"sx", + "tooltip":"" + }, + { + "name":"sy", + "tooltip":"" + }, + { + "name":"angle", + "tooltip":"" + }, + { + "name":"color", + "tooltip":"" + }, + { + "name":"alpha", + "tooltip":"" + } + ], + "tooltip":"" + }, "Node_Condition":{ "name":"Condition", "outputs":[ @@ -9014,41 +7101,32 @@ ], "tooltip":"Get the position of the first pixel with a given color." }, - "Node_Scale":{ - "name":"Scale", + "Node_Array":{ + "name":"Array", "outputs":[ { - "name":"Surface out", + "name":"Array", "tooltip":"" } ], "inputs":[ { - "name":"Surface in", - "tooltip":"" - }, - { - "name":"Scale", - "tooltip":"" - }, - { - "name":"Mode", + "name":"Type", "display_data":[ - "Upscale", - "Scale to fit" + "Any", + "Surface", + "Number", + "Color", + "Text" ], "tooltip":"" }, { - "name":"Target dimension", - "tooltip":"" - }, - { - "name":"Active", + "name":"Spread array", "tooltip":"" } ], - "tooltip":"Simple node for scaling image." + "tooltip":"" }, "Node_PB_Box_Divide_Grid":{ "name":"Divide Grid", @@ -9102,107 +7180,29 @@ ], "tooltip":"" }, - "Node_Gradient":{ - "name":"Draw Gradient", + "Node_Path_Blend":{ + "name":"Blend Path", "outputs":[ { - "name":"Surface out", + "name":"Path", "tooltip":"" } ], "inputs":[ { - "name":"Dimension", + "name":"Path 1", "tooltip":"" }, { - "name":"Gradient", + "name":"Path 2", "tooltip":"" }, { - "name":"Type", - "display_data":[ - "Linear", - "Circular", - "Radial" - ], - "tooltip":"" - }, - { - "name":"Angle", - "tooltip":"" - }, - { - "name":"Radius", - "tooltip":"" - }, - { - "name":"Shift", - "tooltip":"" - }, - { - "name":"Center", - "tooltip":"" - }, - { - "name":"Loop", - "tooltip":"" - }, - { - "name":"Mask", - "tooltip":"" - }, - { - "name":"Scale", + "name":"Ratio", "tooltip":"" } ], - "tooltip":"Create image from gradient." - }, - "Node_Blur_Radial":{ - "name":"Radial Blur", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Surface in", - "tooltip":"" - }, - { - "name":"Strength", - "tooltip":"" - }, - { - "name":"Center", - "tooltip":"" - }, - { - "name":"Oversample mode", - "display_data":[ - "Empty", - "Clamp", - "Repeat" - ], - "tooltip":"How to deal with pixel outside the surface.\n - Empty: Use empty pixel\n - Clamp: Repeat edge pixel\n - Repeat: Repeat texture." - }, - { - "name":"Mask", - "tooltip":"" - }, - { - "name":"Mix", - "tooltip":"" - }, - { - "name":"Active", - "tooltip":"" - } - ], - "tooltip":"Blur image by rotating aroung a mid point." + "tooltip":"Blend between 2 paths." }, "Node_Color_Remove":{ "name":"Remove Color", @@ -9272,6 +7272,38 @@ ], "tooltip":"Output current frame as frame index, or animation progress (0 - 1)." }, + "Node_Blur_Bokeh":{ + "name":"Lens Blur", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Surface in", + "tooltip":"" + }, + { + "name":"Strength", + "tooltip":"" + }, + { + "name":"Mask", + "tooltip":"" + }, + { + "name":"Mix", + "tooltip":"" + }, + { + "name":"Active", + "tooltip":"" + } + ], + "tooltip":"Create bokeh effect. Blur lighter color in a lens-like manner." + }, "Node_Palette":{ "name":"Palette", "outputs":[ @@ -9320,68 +7352,6 @@ ], "tooltip":"Morph pixel bewteen two surfaces." }, - "Node_Dither":{ - "name":"Dither", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Surface in", - "tooltip":"" - }, - { - "name":"Palette", - "tooltip":"" - }, - { - "name":"Pattern", - "display_data":[ - "2 x 2 Bayer", - "4 x 4 Bayer", - "8 x 8 Bayer", - "Custom" - ], - "tooltip":"" - }, - { - "name":"Dither map", - "tooltip":"" - }, - { - "name":"Contrast", - "tooltip":"" - }, - { - "name":"Contrast map", - "tooltip":"" - }, - { - "name":"Mode", - "display_data":[ - "Color", - "Alpha" - ], - "tooltip":"" - }, - { - "name":"Mask", - "tooltip":"" - }, - { - "name":"Mix", - "tooltip":"" - }, - { - "name":"Active", - "tooltip":"" - } - ], - "tooltip":"Reduce color and use dithering to preserve original color." - }, "Node_Gradient_Replace_Color":{ "name":"Gradient Replace", "outputs":[ @@ -9430,103 +7400,6 @@ ], "tooltip":"" }, - "Node_Grid_Noise":{ - "name":"Grid Noise", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Dimension", - "tooltip":"" - }, - { - "name":"Position", - "tooltip":"" - }, - { - "name":"Scale", - "tooltip":"" - }, - { - "name":"Seed", - "tooltip":"" - }, - { - "name":"Shift", - "tooltip":"" - }, - { - "name":"Texture sample", - "tooltip":"" - }, - { - "name":"Shift axis", - "display_data":[ - "x", - "y" - ], - "tooltip":"" - }, - { - "name":"Color mode", - "display_data":[ - "Greyscale", - "RGB", - "HSV" - ], - "tooltip":"" - }, - { - "name":"Color R range", - "tooltip":"" - }, - { - "name":"Color G range", - "tooltip":"" - }, - { - "name":"Color B range", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_Region_Fill":{ - "name":"Region Fill", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Surface in", - "tooltip":"" - }, - { - "name":"Mask", - "tooltip":"" - }, - { - "name":"Colors", - "tooltip":"" - }, - { - "name":"Fill Color", - "tooltip":"" - }, - { - "name":"Seed", - "tooltip":"" - } - ], - "tooltip":"Fill connected pixel with the same color." - }, "Node_Bloom":{ "name":"Bloom", "outputs":[ @@ -9571,30 +7444,6 @@ ], "tooltip":"Apply bloom effect, bluring and brighten the bright part of the image." }, - "Node_Array_Set":{ - "name":"Array Set", - "outputs":[ - { - "name":"Array", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Array", - "tooltip":"" - }, - { - "name":"Index", - "tooltip":"" - }, - { - "name":"Value", - "tooltip":"" - } - ], - "tooltip":"" - }, "Node_Fluid_Repulse":{ "name":"Repulse", "outputs":[ @@ -9631,58 +7480,22 @@ ], "tooltip":"" }, - "Node_Iterator_Each_Length":{ - "name":"Array Length", + "Node_Pixel_Builder":{ + "name":"Pixel Builder", "outputs":[ { - "name":"Length", + "name":"Surface Out", "tooltip":"" } ], "inputs":[ + { + "name":"Dimension", + "tooltip":"" + } ], "tooltip":"" }, - "Node_RGB_Channel":{ - "name":"RGBA Extract", - "outputs":[ - { - "name":"Red", - "tooltip":"" - }, - { - "name":"Green", - "tooltip":"" - }, - { - "name":"Blue", - "tooltip":"" - }, - { - "name":"Alpha", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Surface In", - "tooltip":"" - }, - { - "name":"Output Type", - "display_data":[ - "Channel value", - "Greyscale" - ], - "tooltip":"" - }, - { - "name":"Keep Alpha", - "tooltip":"" - } - ], - "tooltip":"Extract RGBA channel on an image, each channel becomes its own image." - }, "Node_PB_Draw_Blob":{ "name":"Blob", "outputs":[ @@ -9735,73 +7548,17 @@ ], "tooltip":"" }, - "Node_PCX_fn_Surface_Height":{ - "name":"Surface Height", + "Node_Path_Reverse":{ + "name":"Reverse Path", "outputs":[ { - "name":"PCX", + "name":"Path", "tooltip":"" } ], "inputs":[ { - "name":"Surface", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_PB_Draw_Trapezoid":{ - "name":"Trapezoid", - "outputs":[ - { - "name":"pBox", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"pBox", - "tooltip":"" - }, - { - "name":"Color", - "tooltip":"" - }, - { - "name":"Apply Mask", - "tooltip":"" - }, - { - "name":"Axis", - "display_data":[ - "Horizontal", - "Vertical" - ], - "tooltip":"" - }, - { - "name":"Type", - "display_data":[ - "Symmetric", - "Independent" - ], - "tooltip":"" - }, - { - "name":"Bevel", - "tooltip":"" - }, - { - "name":"Bevel 1", - "tooltip":"" - }, - { - "name":"Bevel 2", - "tooltip":"" - }, - { - "name":"Invert", + "name":"Path", "tooltip":"" } ], @@ -9898,6 +7655,46 @@ ], "tooltip":"Twist the image around a mid point." }, + "Node_PB_Fx_Hash":{ + "name":"Hashing", + "outputs":[ + { + "name":"pBox", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"pBox", + "tooltip":"" + }, + { + "name":"Color", + "tooltip":"" + }, + { + "name":"Hash", + "tooltip":"" + }, + { + "name":"Invert", + "tooltip":"" + }, + { + "name":"Dissolve", + "tooltip":"" + }, + { + "name":"Detail", + "tooltip":"" + }, + { + "name":"Dissolve Scale", + "tooltip":"" + } + ], + "tooltip":"" + }, "Node_PB_Draw_Diamond":{ "name":"Diamond", "outputs":[ @@ -9922,6 +7719,30 @@ ], "tooltip":"" }, + "Node_De_Stray":{ + "name":"De-Stray", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Surface in", + "tooltip":"" + }, + { + "name":"Tolerance", + "tooltip":"" + }, + { + "name":"Active", + "tooltip":"" + } + ], + "tooltip":"Attempt to remove orphan pixel." + }, "Node_Vector2":{ "name":"Vector2", "outputs":[ @@ -9958,6 +7779,54 @@ ], "tooltip":"" }, + "Node_Strand_Break":{ + "name":"Strand Break", + "outputs":[ + { + "name":"Strand", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Strand", + "tooltip":"" + }, + { + "name":"Shape", + "display_data":[ + "Point", + "Band" + ], + "tooltip":"" + }, + { + "name":"Position", + "tooltip":"" + }, + { + "name":"Range", + "tooltip":"" + }, + { + "name":"Direction", + "tooltip":"" + }, + { + "name":"Falloff", + "tooltip":"" + }, + { + "name":"Chance", + "tooltip":"" + }, + { + "name":"Seed", + "tooltip":"" + } + ], + "tooltip":"" + }, "Node_Alpha_Cutoff":{ "name":"Alpha Cutoff", "outputs":[ @@ -9990,17 +7859,33 @@ ], "tooltip":"Remove pixel with low alpha value." }, - "Node_Group_Output":{ - "name":"Output", + "Node_DynaSurf_In":{ + "name":"Input", "outputs":[ - ], - "inputs":[ { "name":"Value", "tooltip":"" + } + ], + "inputs":[ + ], + "tooltip":"" + }, + "Node_PCX_Array_Get":{ + "name":"Array Get", + "outputs":[ + { + "name":"PCX", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Array", + "tooltip":"" }, { - "name":"Order", + "name":"Index", "tooltip":"" } ], @@ -10200,6 +8085,10 @@ "name":"Bounce amount", "tooltip":"" }, + { + "name":"Bounce friction", + "tooltip":"Apply horizontal friction once particle stop bouncing." + }, { "name":"Output dimension", "tooltip":"" @@ -10220,6 +8109,62 @@ ], "tooltip":"Generate particle effect." }, + "Node_Strand_Group":{ + "name":"StrandSim", + "outputs":[ + ], + "inputs":[ + ], + "tooltip":"Create group for hair simulation." + }, + "Node_PB_Fx_Brick":{ + "name":"Brick", + "outputs":[ + { + "name":"pBox", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"pBox", + "tooltip":"" + }, + { + "name":"Scale", + "tooltip":"" + }, + { + "name":"Axis", + "display_data":[ + "X", + "Y" + ], + "tooltip":"" + }, + { + "name":"Shift", + "tooltip":"" + }, + { + "name":"Color", + "tooltip":"" + }, + { + "name":"Dissolve", + "tooltip":"" + }, + { + "name":"Detail", + "tooltip":"" + }, + { + "name":"Dissolve Scale", + "tooltip":"" + } + ], + "tooltip":"" + }, "Node_Sequence_Anim":{ "name":"Array to Anim", "outputs":[ @@ -10254,6 +8199,26 @@ ], "tooltip":"Convert array of images into animation." }, + "Node_Vector_Cross_2D":{ + "name":"Cross product 2D", + "outputs":[ + { + "name":"Result", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Point 1", + "tooltip":"" + }, + { + "name":"Point 2", + "tooltip":"" + } + ], + "tooltip":"" + }, "Node_Fluid_Turbulence":{ "name":"Turbulence", "outputs":[ @@ -10485,30 +8450,6 @@ ], "tooltip":"Remove pixel that are close to the border of the image." }, - "Node_Texture_Remap":{ - "name":"Texture Remap", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Surface in", - "tooltip":"" - }, - { - "name":"RG Map", - "tooltip":"Displacement map where red retermine the X position, and green determine the Y position." - }, - { - "name":"Active", - "tooltip":"" - } - ], - "tooltip":"Remap image using texture map. Where red channel control x position and green channel control y position." - }, "Node_Gradient_Out":{ "name":"Gradient", "outputs":[ @@ -10533,8 +8474,8 @@ ], "tooltip":"" }, - "Node_Strand_Render":{ - "name":"Strand Render", + "Node_Grey_Alpha":{ + "name":"Grey to Alpha", "outputs":[ { "name":"Surface out", @@ -10543,105 +8484,23 @@ ], "inputs":[ { - "name":"Dimension", + "name":"Surface in", "tooltip":"" }, { - "name":"Strand", + "name":"Replace color", + "tooltip":"Replace output with solid color." + }, + { + "name":"Color", "tooltip":"" }, { - "name":"Thickness", - "tooltip":"" - }, - { - "name":"Thickness over length", - "tooltip":"" - }, - { - "name":"Random color", - "tooltip":"" - }, - { - "name":"Color over length", - "tooltip":"" - }, - { - "name":"Seed", - "tooltip":"" - }, - { - "name":"Child", - "tooltip":"Render extra strands between the real strands." - } - ], - "tooltip":"" - }, - "Node_Pack_Sprites":{ - "name":"Pack Sprites", - "outputs":[ - { - "name":"Packed image", - "tooltip":"" - }, - { - "name":"Atlas data", + "name":"Active", "tooltip":"" } ], - "inputs":[ - { - "name":"Sprites", - "tooltip":"" - }, - { - "name":"Algorithm", - "display_data":[ - "Skyline", - "Shelf", - "Top left", - "Best fit" - ], - "tooltip":"" - }, - { - "name":"Max width", - "tooltip":"" - }, - { - "name":"Max height", - "tooltip":"" - }, - { - "name":"Spacing", - "tooltip":"" - } - ], - "tooltip":"Combine array of images with different dimension using different algorithms." - }, - "Node_PCX_fn_var":{ - "name":"Fn Variable", - "outputs":[ - { - "name":"PCX", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Default Value", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_VFX_Group":{ - "name":"VFX", - "outputs":[ - ], - "inputs":[ - ], - "tooltip":"Create VFX group, which generate particles that can be manipulated using different force nodes." + "tooltip":"Convert greyscale to alpha value." }, "Node_PB_Fx_Outline":{ "name":"Outline", @@ -10675,24 +8534,8 @@ ], "tooltip":"" }, - "Node_CSV_File_Write":{ - "name":"CSV File Out", - "outputs":[ - ], - "inputs":[ - { - "name":"Path", - "tooltip":"" - }, - { - "name":"Content", - "tooltip":"" - } - ], - "tooltip":"Save array as .csv file." - }, - "Node_Noise_Tri":{ - "name":"Triangular Noise", + "Node_Flood_Fill":{ + "name":"Flood Fill", "outputs":[ { "name":"Surface out", @@ -10701,11 +8544,19 @@ ], "inputs":[ { - "name":"Dimension", + "name":"Surface in", "tooltip":"" }, { - "name":"Seed", + "name":"Mask", + "tooltip":"" + }, + { + "name":"Mix", + "tooltip":"" + }, + { + "name":"Active", "tooltip":"" }, { @@ -10713,25 +8564,71 @@ "tooltip":"" }, { - "name":"Scale", + "name":"Colors", "tooltip":"" }, { - "name":"Texture sample", + "name":"Threshold", "tooltip":"" }, { - "name":"Oversample mode", + "name":"Diagonal", + "tooltip":"" + } + ], + "tooltip":"Filled connected pixel given position and color." + }, + "Node_Statistic":{ + "name":"Statistic", + "outputs":[ + { + "name":"Statistic", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Type", "display_data":[ - "Empty", - "Clamp", - "Repeat" + "Sum", + "Mean", + "Median", + "Max", + "Min" ], "tooltip":"" } ], "tooltip":"" }, + "Node_Array_Insert":{ + "name":"Array Insert", + "outputs":[ + { + "name":"Array", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Array", + "tooltip":"" + }, + { + "name":"Index", + "tooltip":"" + }, + { + "name":"Value", + "tooltip":"" + }, + { + "name":"Spread array", + "tooltip":"" + } + ], + "tooltip":"" + }, "Node_Trigger_Bool":{ "name":"Boolean Trigger", "outputs":[ @@ -10790,24 +8687,32 @@ ], "tooltip":"" }, - "Node_Iterate_Each":{ - "name":"Loop Array", + "Node_Armature_Sample":{ + "name":"Armature Sample", "outputs":[ { - "name":"Array", + "name":"Position", "tooltip":"" } ], "inputs":[ { - "name":"Array", + "name":"Armature", + "tooltip":"" + }, + { + "name":"Bone name", + "tooltip":"" + }, + { + "name":"Sample point", "tooltip":"" } ], - "tooltip":"Create group that iterate to each member in an array." + "tooltip":"" }, - "Node_Repeat":{ - "name":"Repeat", + "Node_Camera":{ + "name":"Camera", "outputs":[ { "name":"Surface out", @@ -10816,138 +8721,49 @@ ], "inputs":[ { - "name":"Surface in", + "name":"Background", "tooltip":"" }, { - "name":"Dimension", + "name":"Focus area", "tooltip":"" }, { - "name":"Amount", + "name":"Zoom", "tooltip":"" }, { - "name":"Pattern", + "name":"Oversample mode", "display_data":[ - "Linear", - "Grid", - "Circular" + "Empty", + "Repeat", + "Repeat X", + "Repeat Y" ], + "tooltip":"How to deal with pixel outside the surface.\n - Empty: Use empty pixel\n - Clamp: Repeat edge pixel\n - Repeat: Repeat texture." + }, + { + "name":"Fix background", "tooltip":"" }, { - "name":"Repeat position", + "name":"Depth of Field", "tooltip":"" }, { - "name":"Repeat rotation", + "name":"Focal distance", "tooltip":"" }, { - "name":"Scale multiply", + "name":"Defocus", "tooltip":"" }, { - "name":"Angle range", - "tooltip":"" - }, - { - "name":"Radius", - "tooltip":"" - }, - { - "name":"Start position", - "tooltip":"" - }, - { - "name":"Scale over copy", - "tooltip":"" - }, - { - "name":"Path", - "tooltip":"Make each copy follow along path." - }, - { - "name":"Path range", - "tooltip":"Range of the path to follow." - }, - { - "name":"Path shift", - "tooltip":"" - }, - { - "name":"Color over copy", - "tooltip":"" - }, - { - "name":"Alpha over copy", - "tooltip":"" - }, - { - "name":"Array select", - "display_data":[ - "Order", - "Random", - "Spread" - ], - "tooltip":"Whether to select image from an array in order, at random, pr spread or each image to one output." - }, - { - "name":"Seed", - "tooltip":"" - }, - { - "name":"Column", - "tooltip":"" - }, - { - "name":"Column shift", - "tooltip":"" - }, - { - "name":"Animator midpoint", - "tooltip":"" - }, - { - "name":"Animator range", - "tooltip":"" - }, - { - "name":"Animator position", - "tooltip":"" - }, - { - "name":"Animator rotation", - "tooltip":"" - }, - { - "name":"Animator scale", - "tooltip":"" - }, - { - "name":"Animator falloff", - "tooltip":"" - }, - { - "name":"Stack", - "display_data":[ - "None", - "X", - "Y" - ], - "tooltip":"Place each copy next to each other, taking surface dimension into account." - }, - { - "name":"Animator blend", - "tooltip":"" - }, - { - "name":"Animator alpha", + "name":"Focal range", "tooltip":"" } ], - "tooltip":"Repeat image multiple times linearly, or in grid pattern." + "tooltip":"Create camera that crop image to fix dimension with control of position, zoom. Also can be use to create parallax effect." }, "Node_VFX_Destroy":{ "name":"Destroy", @@ -11009,62 +8825,6 @@ ], "tooltip":"" }, - "Node_Atlas_Draw":{ - "name":"Draw Atlas", - "outputs":[ - { - "name":"Surface", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Dimension", - "tooltip":"" - }, - { - "name":"Atlas", - "tooltip":"" - } - ], - "tooltip":"Render image atlas to a surface." - }, - "Node_BW":{ - "name":"BW", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Surface in", - "tooltip":"" - }, - { - "name":"Brightness", - "tooltip":"" - }, - { - "name":"Contrast", - "tooltip":"" - }, - { - "name":"Mask", - "tooltip":"" - }, - { - "name":"Mix", - "tooltip":"" - }, - { - "name":"Active", - "tooltip":"" - } - ], - "tooltip":"Convert color image to black and white." - }, "Node_Display_Image":{ "name":"Display Image", "outputs":[ @@ -11077,45 +8837,45 @@ ], "tooltip":"Display image on the graph." }, - "Node_3D_Mesh_Cone":{ - "name":"3D Cone", + "Node_WAV_File_Read":{ + "name":"WAV File In", "outputs":[ { - "name":"Mesh", + "name":"Data", + "tooltip":"" + }, + { + "name":"Path", + "tooltip":"" + }, + { + "name":"Sample rate", + "tooltip":"" + }, + { + "name":"Channels", + "tooltip":"" + }, + { + "name":"Duration (s)", + "tooltip":"" + }, + { + "name":"Loudness", "tooltip":"" } ], "inputs":[ { - "name":"Position", + "name":"Path", "tooltip":"" }, { - "name":"Rotation", - "tooltip":"" - }, - { - "name":"Scale", - "tooltip":"" - }, - { - "name":"Side", - "tooltip":"" - }, - { - "name":"Material Bottom", - "tooltip":"" - }, - { - "name":"Material Side", - "tooltip":"" - }, - { - "name":"Smooth Side", + "name":"Sync lenght", "tooltip":"" } ], - "tooltip":"" + "tooltip":"Load wav audio file." }, "Node_Boolean":{ "name":"Boolean", @@ -11145,86 +8905,6 @@ ], "tooltip":"" }, - "__Node_3D_Combine":{ - "name":"3D Combine", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - }, - { - "name":"3D objects", - "tooltip":"" - }, - { - "name":"Normal pass", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Dimension", - "tooltip":"" - }, - { - "name":"Object position", - "tooltip":"" - }, - { - "name":"Object rotation", - "tooltip":"" - }, - { - "name":"Object scale", - "tooltip":"" - }, - { - "name":"Render position", - "tooltip":"" - }, - { - "name":"Render scale", - "tooltip":"" - }, - { - "name":"Light direction", - "tooltip":"" - }, - { - "name":"Light height", - "tooltip":"" - }, - { - "name":"Light intensity", - "tooltip":"" - }, - { - "name":"Light color", - "tooltip":"" - }, - { - "name":"Ambient color", - "tooltip":"" - }, - { - "name":"Projection", - "display_data":[ - "Orthographic", - "Perspective" - ], - "tooltip":"" - }, - { - "name":"Field of view", - "tooltip":"" - }, - { - "name":"Scale view with dimension", - "tooltip":"" - } - ], - "tooltip":"Combine multiple 3D object to a single scene," - }, "Node_Text_File_Read":{ "name":"Text File In", "outputs":[ @@ -11311,37 +8991,50 @@ ], "tooltip":"Generate voronoi pattern." }, - "Node_3D_Mesh_Obj":{ - "name":"3D Object", + "Node_Blur_Radial":{ + "name":"Radial Blur", "outputs":[ { - "name":"Mesh", + "name":"Surface out", "tooltip":"" } ], "inputs":[ { - "name":"Position", + "name":"Surface in", "tooltip":"" }, { - "name":"Rotation", + "name":"Strength", "tooltip":"" }, { - "name":"Scale", + "name":"Center", "tooltip":"" }, { - "name":"File Path", + "name":"Oversample mode", + "display_data":[ + "Empty", + "Clamp", + "Repeat" + ], + "tooltip":"How to deal with pixel outside the surface.\n - Empty: Use empty pixel\n - Clamp: Repeat edge pixel\n - Repeat: Repeat texture." + }, + { + "name":"Mask", "tooltip":"" }, { - "name":"Flip UV", - "tooltip":"Flip UV axis, can be use to fix some texture mapping error." + "name":"Mix", + "tooltip":"" + }, + { + "name":"Active", + "tooltip":"" } ], - "tooltip":"Load .obj file from your computer as a 3D object." + "tooltip":"Blur image by rotating aroung a mid point." }, "Node_Iterator_Each_Input":{ "name":"Input", @@ -11355,8 +9048,8 @@ ], "tooltip":"" }, - "Node_Time_Remap":{ - "name":"Time Remap", + "Node_Dither":{ + "name":"Dither", "outputs":[ { "name":"Surface out", @@ -11369,19 +9062,257 @@ "tooltip":"" }, { - "name":"Map", + "name":"Palette", "tooltip":"" }, { - "name":"Max life", + "name":"Pattern", + "display_data":[ + "2 x 2 Bayer", + "4 x 4 Bayer", + "8 x 8 Bayer", + "Custom" + ], "tooltip":"" }, { - "name":"Loop", + "name":"Dither map", + "tooltip":"" + }, + { + "name":"Contrast", + "tooltip":"" + }, + { + "name":"Contrast map", + "tooltip":"" + }, + { + "name":"Mode", + "display_data":[ + "Color", + "Alpha" + ], + "tooltip":"" + }, + { + "name":"Mask", + "tooltip":"" + }, + { + "name":"Mix", + "tooltip":"" + }, + { + "name":"Active", "tooltip":"" } ], - "tooltip":"Remap image using texture as time map. Where brighter pixel means using pixel from an older frame." + "tooltip":"Reduce color and use dithering to preserve original color." + }, + "Node_Transform":{ + "name":"Transform", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Surface in", + "tooltip":"" + }, + { + "name":"Output dimension", + "tooltip":"" + }, + { + "name":"Position", + "tooltip":"" + }, + { + "name":"Anchor", + "tooltip":"" + }, + { + "name":"Relative anchor", + "tooltip":"" + }, + { + "name":"Rotation", + "tooltip":"" + }, + { + "name":"Scale", + "tooltip":"" + }, + { + "name":"Render Mode", + "display_data":[ + "Normal", + "Tile", + "Wrap" + ], + "tooltip":"" + }, + { + "name":"Rotate by velocity", + "tooltip":"Make the surface rotates to follow its movement." + }, + { + "name":"Output dimension type", + "display_data":[ + "Same as input", + "Constant", + "Relative to input", + "Scale" + ], + "tooltip":"" + }, + { + "name":"Round position", + "tooltip":"Round position to the closest integer value to avoid jittering." + }, + { + "name":"Active", + "tooltip":"" + } + ], + "tooltip":"Move, rotate, and scale image." + }, + "Node_Grid_Noise":{ + "name":"Grid Noise", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Dimension", + "tooltip":"" + }, + { + "name":"Position", + "tooltip":"" + }, + { + "name":"Scale", + "tooltip":"" + }, + { + "name":"Seed", + "tooltip":"" + }, + { + "name":"Shift", + "tooltip":"" + }, + { + "name":"Texture sample", + "tooltip":"" + }, + { + "name":"Shift axis", + "display_data":[ + "x", + "y" + ], + "tooltip":"" + }, + { + "name":"Color mode", + "display_data":[ + "Greyscale", + "RGB", + "HSV" + ], + "tooltip":"" + }, + { + "name":"Color R range", + "tooltip":"" + }, + { + "name":"Color G range", + "tooltip":"" + }, + { + "name":"Color B range", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_Region_Fill":{ + "name":"Region Fill", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Surface in", + "tooltip":"" + }, + { + "name":"Mask", + "tooltip":"" + }, + { + "name":"Colors", + "tooltip":"" + }, + { + "name":"Fill Color", + "tooltip":"" + }, + { + "name":"Seed", + "tooltip":"" + } + ], + "tooltip":"Fill connected pixel with the same color." + }, + "Node_Lua_Surface":{ + "name":"Lua Surface", + "outputs":[ + { + "name":"Execution thread", + "tooltip":"" + }, + { + "name":"Surface out", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Function name", + "tooltip":"" + }, + { + "name":"Output dimension", + "tooltip":"" + }, + { + "name":"Lua code", + "tooltip":14.0 + }, + { + "name":"Execution thread", + "tooltip":"" + }, + { + "name":"Execute on frame", + "tooltip":"" + } + ], + "tooltip":"" }, "Node_Convolution":{ "name":"Convolution", @@ -11424,6 +9355,30 @@ ], "tooltip":"Apply convolution operation on each pixel using a custom 3x3 kernel." }, + "Node_Array_Set":{ + "name":"Array Set", + "outputs":[ + { + "name":"Array", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Array", + "tooltip":"" + }, + { + "name":"Index", + "tooltip":"" + }, + { + "name":"Value", + "tooltip":"" + } + ], + "tooltip":"" + }, "Node_Iterator_Length":{ "name":"Loop amount", "outputs":[ @@ -11436,35 +9391,15 @@ ], "tooltip":"" }, - "Node_Compare":{ - "name":"Compare", + "Node_Iterator_Each_Length":{ + "name":"Array Length", "outputs":[ { - "name":"Result", + "name":"Length", "tooltip":"" } ], "inputs":[ - { - "name":"Type", - "display_data":[ - "Equal", - "Not equal", - "Greater", - "Greater or equal", - "Lesser", - "Lesser or equal" - ], - "tooltip":"" - }, - { - "name":"a", - "tooltip":"" - }, - { - "name":"b", - "tooltip":"" - } ], "tooltip":"" }, @@ -11587,14 +9522,6 @@ ], "tooltip":"" }, - "Node_Group":{ - "name":"Group", - "outputs":[ - ], - "inputs":[ - ], - "tooltip":"" - }, "Node_Wrap_Area":{ "name":"Area Warp", "outputs":[ @@ -11619,37 +9546,57 @@ ], "tooltip":"Wrap image to fit area value (x, y, w, h)." }, - "Node_String":{ - "name":"Text", + "Node_PB_Draw_Trapezoid":{ + "name":"Trapezoid", "outputs":[ { - "name":"Text", + "name":"pBox", "tooltip":"" } ], "inputs":[ { - "name":"Text", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_Rigid_Activate":{ - "name":"Activate Physics", - "outputs":[ - { - "name":"Object", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Object", + "name":"pBox", "tooltip":"" }, { - "name":"Physics activated", + "name":"Color", + "tooltip":"" + }, + { + "name":"Apply Mask", + "tooltip":"" + }, + { + "name":"Axis", + "display_data":[ + "Horizontal", + "Vertical" + ], + "tooltip":"" + }, + { + "name":"Type", + "display_data":[ + "Symmetric", + "Independent" + ], + "tooltip":"" + }, + { + "name":"Bevel", + "tooltip":"" + }, + { + "name":"Bevel 1", + "tooltip":"" + }, + { + "name":"Bevel 2", + "tooltip":"" + }, + { + "name":"Invert", "tooltip":"" } ], @@ -11679,26 +9626,6 @@ ], "tooltip":"" }, - "Node_ASE_layer":{ - "name":"ASE Layer", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"ASE data", - "tooltip":"" - }, - { - "name":"Use cel dimension", - "tooltip":"" - } - ], - "tooltip":"" - }, "Node_Composite":{ "name":"Composite", "outputs":[ @@ -11772,22 +9699,6 @@ ], "tooltip":"Create group for rigidbody simulation." }, - "Node_Iterate_Filter":{ - "name":"Filter Array", - "outputs":[ - { - "name":"Array", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Array", - "tooltip":"" - } - ], - "tooltip":"Filter array using condition." - }, "Node_Array_Zip":{ "name":"Array Zip", "outputs":[ @@ -11836,43 +9747,25 @@ ], "tooltip":"" }, - "Node_Stack":{ - "name":"Stack", + "Node_Path_Shift":{ + "name":"Shift Path", "outputs":[ { - "name":"Surface out", - "tooltip":"" - }, - { - "name":"Atlas data", + "name":"Path", "tooltip":"" } ], "inputs":[ { - "name":"Axis", - "display_data":[ - "Horizontal", - "Vertical", - "On top" - ], + "name":"Path", "tooltip":"" }, { - "name":"Align", - "display_data":[ - "Start", - "Middle", - "End" - ], - "tooltip":"" - }, - { - "name":"Spacing", + "name":"Distance", "tooltip":"" } ], - "tooltip":"Place image next to each other linearly, or on top of each other." + "tooltip":"Move path along its normal." }, "Node_Lua_Compute":{ "name":"Lua Compute", @@ -12187,106 +10080,6 @@ ], "tooltip":"" }, - "Node_Array_CSV_Parse":{ - "name":"Parse CSV", - "outputs":[ - { - "name":"Array", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"CSV string", - "tooltip":"" - }, - { - "name":"Skip line", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_Strand_Length_Adjust":{ - "name":"Strand Length Adjust", - "outputs":[ - { - "name":"Strand", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Strand", - "tooltip":"" - }, - { - "name":"Shape", - "display_data":[ - "Point", - "Band" - ], - "tooltip":"" - }, - { - "name":"Position", - "tooltip":"" - }, - { - "name":"Range", - "tooltip":"" - }, - { - "name":"Direction", - "tooltip":"" - }, - { - "name":"Falloff", - "tooltip":"" - }, - { - "name":"Type", - "display_data":[ - "Increase", - "Decrease" - ], - "tooltip":"" - }, - { - "name":"Strength", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_Color_RGB":{ - "name":"RGB Color", - "outputs":[ - { - "name":"Color", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Red", - "tooltip":"" - }, - { - "name":"Green", - "tooltip":"" - }, - { - "name":"Blue", - "tooltip":"" - }, - { - "name":"Normalized", - "tooltip":"" - } - ], - "tooltip":"Create color from RGB value." - }, "Node_Fluid_Add":{ "name":"Add Fluid", "outputs":[ @@ -12387,22 +10180,6 @@ ], "tooltip":"Perform fourier transform on number array." }, - "Node_DynaSurf_Out_Width":{ - "name":"getWidth", - "outputs":[ - { - "name":"PCX", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Width", - "tooltip":"" - } - ], - "tooltip":"" - }, "Node_Mesh_Transform":{ "name":"Mesh Transform", "outputs":[ @@ -12435,6 +10212,26 @@ ], "tooltip":"" }, + "Node_Array_Shuffle":{ + "name":"Shuffle Array", + "outputs":[ + { + "name":"Shuffled array", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Array in", + "tooltip":"" + }, + { + "name":"Seed", + "tooltip":"" + } + ], + "tooltip":"" + }, "Node_Crop":{ "name":"Crop", "outputs":[ @@ -12491,45 +10288,21 @@ ], "tooltip":"Round out sharp corner of the image." }, - "Node_Json_File_Write":{ - "name":"JSON File Out", - "outputs":[ - ], - "inputs":[ - { - "name":"Path", - "tooltip":"" - }, - { - "name":"Struct", - "tooltip":"" - } - ], - "tooltip":"Save data to .json file." - }, - "Node_Move_Point":{ - "name":"Translate Point", + "Node_Blur_Directional":{ + "name":"Directional Blur", "outputs":[ { - "name":"Result", + "name":"Surface out", "tooltip":"" } ], "inputs":[ { - "name":"Point", + "name":"Surface in", "tooltip":"" }, { - "name":"Mode", - "display_data":[ - "XY Shift", - "Direction + Distance" - ], - "tooltip":"" - }, - { - "name":"Shift", + "name":"Strength", "tooltip":"" }, { @@ -12537,7 +10310,31 @@ "tooltip":"" }, { - "name":"Distance", + "name":"Mask", + "tooltip":"" + }, + { + "name":"Mix", + "tooltip":"" + }, + { + "name":"Active", + "tooltip":"" + } + ], + "tooltip":"Blur image given a direction." + }, + "Node_Armature_Pose":{ + "name":"Armature Pose", + "outputs":[ + { + "name":"Armature", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Armature", "tooltip":"" } ], @@ -12579,80 +10376,28 @@ ], "tooltip":"Isolate part of the image that falls in the selected brightness range." }, - "Node_Path_Wave":{ - "name":"Wave Path", + "Node_PB_Fx_Intersect":{ + "name":"Intersect", "outputs":[ { - "name":"Path", + "name":"pBox", "tooltip":"" } ], "inputs":[ { - "name":"Path", - "tooltip":"" - }, - { - "name":"Frequency", - "tooltip":"" - }, - { - "name":"Size", - "tooltip":"" - }, - { - "name":"Shift", - "tooltip":"" - }, - { - "name":"Smooth", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_Atlas_Set":{ - "name":"Atlas Set", - "outputs":[ - { - "name":"Atlas", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Atlas", + "name":"pBox", "tooltip":"" }, { "name":"Surface", "tooltip":"" - }, - { - "name":"Position", - "tooltip":"" - }, - { - "name":"Rotation", - "tooltip":"" - }, - { - "name":"Scale", - "tooltip":"" - }, - { - "name":"Blend", - "tooltip":"" - }, - { - "name":"Alpha", - "tooltip":"" } ], "tooltip":"" }, - "Node_PCX_fn_Random":{ - "name":"Random", + "Node_PCX_fn_var":{ + "name":"Fn Variable", "outputs":[ { "name":"PCX", @@ -12661,22 +10406,14 @@ ], "inputs":[ { - "name":"Min", - "tooltip":"" - }, - { - "name":"Max", - "tooltip":"" - }, - { - "name":"Integer", + "name":"Default Value", "tooltip":"" } ], "tooltip":"" }, - "Node_Palette_Shift":{ - "name":"Palette Shift", + "Node_Displace":{ + "name":"Displace", "outputs":[ { "name":"Surface out", @@ -12689,108 +10426,33 @@ "tooltip":"" }, { - "name":"Palette", - "tooltip":"" - }, - { - "name":"Shift", - "tooltip":"" - }, - { - "name":"Mask", - "tooltip":"" - }, - { - "name":"Mix", - "tooltip":"" - }, - { - "name":"Active", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_PB_Fx_Strip":{ - "name":"Strip", - "outputs":[ - { - "name":"pBox", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"pBox", - "tooltip":"" - }, - { - "name":"Scale", - "tooltip":"" - }, - { - "name":"Color", - "tooltip":"" - }, - { - "name":"Shift", - "tooltip":"" - }, - { - "name":"Axis", - "display_data":[ - "X", - "Y" - ], - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_Outline":{ - "name":"Outline", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - }, - { - "name":"Outline", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Surface in", - "tooltip":"" - }, - { - "name":"Width", - "tooltip":"" - }, - { - "name":"Color", - "tooltip":"" - }, - { - "name":"Blend", - "tooltip":"Blend outline color with the original color." - }, - { - "name":"Blend alpha", + "name":"Displace map", "tooltip":"" }, { "name":"Position", - "display_data":[ - "Inside", - "Outside" - ], + "tooltip":"Vector to displace pixel by." + }, + { + "name":"Strength", "tooltip":"" }, { - "name":"Anti alising", - "tooltip":"" + "name":"Mid value", + "tooltip":"Brightness value to be use as a basis for 'no displacement'." + }, + { + "name":"Color data", + "display_data":[ + "Ignore", + "Vector", + "Angle" + ], + "tooltip":"Use color data set extra information.\r\n - Ignore: Don't use color data.\r\n - Vector: Use red as X displacement, green as Y displacement.\r\n - Angle: Use red as angle, green as distance." + }, + { + "name":"Iterate", + "tooltip":"If not set, then strength value is multiplied directly to the displacement.\r\nIf set, then strength value control how many times the effect applies on itself." }, { "name":"Oversample mode", @@ -12801,10 +10463,6 @@ ], "tooltip":"How to deal with pixel outside the surface.\n - Empty: Use empty pixel\n - Clamp: Repeat edge pixel\n - Repeat: Repeat texture." }, - { - "name":"Start", - "tooltip":"Shift outline inside, outside the shape." - }, { "name":"Mask", "tooltip":"" @@ -12818,103 +10476,31 @@ "tooltip":"" } ], - "tooltip":"Add border to the image." + "tooltip":"Distort image using another image as a map." }, - "__Node_3D_Sphere":{ - "name":"3D Sphere", + "Node_VFX_Group":{ + "name":"VFX", + "outputs":[ + ], + "inputs":[ + ], + "tooltip":"Create VFX group, which generate particles that can be manipulated using different force nodes." + }, + "Node_CSV_File_Write":{ + "name":"CSV File Out", "outputs":[ - { - "name":"Surface out", - "tooltip":"" - }, - { - "name":"3D scene", - "tooltip":"" - }, - { - "name":"Normal pass", - "tooltip":"" - }, - { - "name":"3D vertex", - "tooltip":"" - } ], "inputs":[ { - "name":"Subdivisions", - "tooltip":"Amount of polygon in X and Y axis." - }, - { - "name":"Dimension", + "name":"Path", "tooltip":"" }, { - "name":"Render position", - "tooltip":"" - }, - { - "name":"Render rotation", - "tooltip":"" - }, - { - "name":"Render scale", - "tooltip":"" - }, - { - "name":"Textures", - "tooltip":"" - }, - { - "name":"Object scale", - "tooltip":"" - }, - { - "name":"Light direction", - "tooltip":"" - }, - { - "name":"Light height", - "tooltip":"" - }, - { - "name":"Light intensity", - "tooltip":"" - }, - { - "name":"Light color", - "tooltip":"" - }, - { - "name":"Ambient color", - "tooltip":"" - }, - { - "name":"Object rotation", - "tooltip":"" - }, - { - "name":"Object position", - "tooltip":"" - }, - { - "name":"Projection", - "display_data":[ - "Orthographic", - "Perspective" - ], - "tooltip":"" - }, - { - "name":"Field of view", - "tooltip":"" - }, - { - "name":"Scale view with dimension", + "name":"Content", "tooltip":"" } ], - "tooltip":"" + "tooltip":"Save array as .csv file." }, "Node_PB_Fx_Shading":{ "name":"Shading", @@ -12940,6 +10526,47 @@ ], "tooltip":"" }, + "Node_Noise_Tri":{ + "name":"Triangular Noise", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Dimension", + "tooltip":"" + }, + { + "name":"Seed", + "tooltip":"" + }, + { + "name":"Position", + "tooltip":"" + }, + { + "name":"Scale", + "tooltip":"" + }, + { + "name":"Texture sample", + "tooltip":"" + }, + { + "name":"Oversample mode", + "display_data":[ + "Empty", + "Clamp", + "Repeat" + ], + "tooltip":"" + } + ], + "tooltip":"" + }, "Node_Blur_Contrast":{ "name":"Contrast Blur", "outputs":[ @@ -12976,50 +10603,6 @@ ], "tooltip":"Blur only pixel of a similiar color." }, - "Node_VFX_Wind":{ - "name":"Wind", - "outputs":[ - { - "name":"Particles", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Particles", - "tooltip":"" - }, - { - "name":"Area", - "tooltip":"" - }, - { - "name":"Falloff", - "tooltip":"" - }, - { - "name":"Falloff distance", - "tooltip":"" - }, - { - "name":"Effect Vector", - "tooltip":"" - }, - { - "name":"Strength", - "tooltip":"" - }, - { - "name":"Rotate particle", - "tooltip":"" - }, - { - "name":"Scale particle", - "tooltip":"" - } - ], - "tooltip":"" - }, "Node_Mesh_Warp":{ "name":"Mesh Warp", "outputs":[ @@ -13080,12 +10663,64 @@ ], "tooltip":"Wrap image by converting it to mesh, and using control points." }, - "Node_Bevel":{ - "name":"Bevel", + "Node_VFX_Variable":{ + "name":"VFX Variable", + "outputs":[ + { + "name":"Positions", + "tooltip":"" + }, + { + "name":"Scales", + "tooltip":"" + }, + { + "name":"Rotations", + "tooltip":"" + }, + { + "name":"Blending", + "tooltip":"" + }, + { + "name":"Alpha", + "tooltip":"" + }, + { + "name":"Life", + "tooltip":"" + }, + { + "name":"Max life", + "tooltip":"" + }, + { + "name":"Surface", + "tooltip":"" + }, + { + "name":"Velocity", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Particles", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_Seperate_Shape":{ + "name":"Separate Shape", "outputs":[ { "name":"Surface out", "tooltip":"" + }, + { + "name":"Boundary data", + "tooltip":"" } ], "inputs":[ @@ -13094,49 +10729,23 @@ "tooltip":"" }, { - "name":"Height", + "name":"Tolerance", "tooltip":"" }, { - "name":"Shift", + "name":"Override color", "tooltip":"" }, { - "name":"Scale", + "name":"Color", "tooltip":"" }, { - "name":"Slope", - "display_data":[ - "Linear", - "Smooth", - "Circular" - ], - "tooltip":"" - }, - { - "name":"Mask", - "tooltip":"" - }, - { - "name":"Mix", - "tooltip":"" - }, - { - "name":"Active", - "tooltip":"" - }, - { - "name":"Oversample mode", - "display_data":[ - "Empty", - "Clamp", - "Repeat" - ], - "tooltip":"How to deal with pixel outside the surface.\n - Empty: Use empty pixel\n - Clamp: Repeat edge pixel\n - Repeat: Repeat texture." + "name":"Ignore blank", + "tooltip":"Skip empty and black shape." } ], - "tooltip":"Apply 2D bevel on the image." + "tooltip":"Separate disconnected pixel each into an image in an image array." }, "Node_Iterator_Input":{ "name":"Input", @@ -13231,62 +10840,6 @@ ], "tooltip":"" }, - "Node_Seperate_Shape":{ - "name":"Separate Shape", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - }, - { - "name":"Boundary data", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Surface in", - "tooltip":"" - }, - { - "name":"Tolerance", - "tooltip":"" - }, - { - "name":"Override color", - "tooltip":"" - }, - { - "name":"Color", - "tooltip":"" - }, - { - "name":"Ignore blank", - "tooltip":"Skip empty and black shape." - } - ], - "tooltip":"Separate disconnected pixel each into an image in an image array." - }, - "Node_Alpha_Grey":{ - "name":"Alpha to Grey", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Surface in", - "tooltip":"" - }, - { - "name":"Active", - "tooltip":"" - } - ], - "tooltip":"Convert alpha value into solid greyscale." - }, "Node_Grid_Tri":{ "name":"Triangular Grid", "outputs":[ @@ -13345,6 +10898,70 @@ ], "tooltip":"Generate triangular grid pattern." }, + "Node_Path_Array":{ + "name":"Path Array", + "outputs":[ + { + "name":"Path array", + "tooltip":"" + } + ], + "inputs":[ + ], + "tooltip":"" + }, + "Node_Iterate_Each":{ + "name":"Loop Array", + "outputs":[ + { + "name":"Array", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Array", + "tooltip":"" + } + ], + "tooltip":"Create group that iterate to each member in an array." + }, + "Node_String_Merge":{ + "name":"Combine Text", + "outputs":[ + { + "name":"Text", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Text A", + "tooltip":"" + }, + { + "name":"Text B", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_To_Number":{ + "name":"To Number", + "outputs":[ + { + "name":"Number", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Text", + "tooltip":"" + } + ], + "tooltip":"" + }, "Node_Interpret_Number":{ "name":"Interpret Number", "outputs":[ @@ -13437,62 +11054,6 @@ ], "tooltip":"Display text to notification." }, - "Node_Normal_Light":{ - "name":"Normal Light", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Surface in", - "tooltip":"" - }, - { - "name":"Normal map", - "tooltip":"" - }, - { - "name":"Normal intensity", - "tooltip":"" - }, - { - "name":"Ambient", - "tooltip":"" - }, - { - "name":"Light position", - "tooltip":"" - }, - { - "name":"Light range", - "tooltip":"" - }, - { - "name":"Light intensity", - "tooltip":"" - }, - { - "name":"Light color", - "tooltip":"" - }, - { - "name":"Light type", - "display_data":[ - "Point", - "Sun" - ], - "tooltip":"" - }, - { - "name":"Active", - "tooltip":"" - } - ], - "tooltip":"Light up the image using normal mapping." - }, "Node_Widget_Test":{ "name":"Widget Test", "outputs":[ @@ -13685,189 +11246,21 @@ ], "tooltip":"Sample color from an image." }, - "Node_Solid":{ - "name":"Solid", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Dimension", - "tooltip":"" - }, - { - "name":"Color", - "tooltip":"" - }, - { - "name":"Empty", - "tooltip":"" - }, - { - "name":"Mask", - "tooltip":"" - }, - { - "name":"Use mask dimension", - "tooltip":"" - } - ], - "tooltip":"Create image of a single color." - }, - "Node_Feedback_Output":{ - "name":"Output", + "__Node_3D_Export":{ + "name":"3D Export", "outputs":[ ], "inputs":[ { - "name":"Value", + "name":"Vertex data", "tooltip":"" }, { - "name":"Order", - "tooltip":"" + "name":"Path", + "tooltip":"Export location without '.obj' extension." }, { - "name":"Feedback loop", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_3D_Mesh_Cube":{ - "name":"3D Cube", - "outputs":[ - { - "name":"Mesh", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Position", - "tooltip":"" - }, - { - "name":"Rotation", - "tooltip":"" - }, - { - "name":"Scale", - "tooltip":"" - }, - { - "name":"Material per side", - "tooltip":"" - }, - { - "name":"Material", - "tooltip":"" - }, - { - "name":"Material Bottom", - "tooltip":"" - }, - { - "name":"Material Left", - "tooltip":"" - }, - { - "name":"Material Right", - "tooltip":"" - }, - { - "name":"Material Back", - "tooltip":"" - }, - { - "name":"Material Front", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_DynaSurf_Out":{ - "name":"Output", - "outputs":[ - { - "name":"PCX", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Surface", - "tooltip":"" - }, - { - "name":"x", - "tooltip":"" - }, - { - "name":"y", - "tooltip":"" - }, - { - "name":"sx", - "tooltip":"" - }, - { - "name":"sy", - "tooltip":"" - }, - { - "name":"angle", - "tooltip":"" - }, - { - "name":"color", - "tooltip":"" - }, - { - "name":"alpha", - "tooltip":"" - } - ], - "tooltip":"" - }, - "Node_Armature_Bind":{ - "name":"Armature Bind", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - }, - { - "name":"Atlas data", - "tooltip":"" - }, - { - "name":"Bind data", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Dimension", - "tooltip":"" - }, - { - "name":"Armature", - "tooltip":"" - }, - { - "name":"Bind data", - "tooltip":"" - }, - { - "name":"Bone transform", - "tooltip":"" - }, - { - "name":"Bone scale", + "name":"Export texture", "tooltip":"" } ], @@ -13929,6 +11322,34 @@ ], "tooltip":"" }, + "Node_Time_Remap":{ + "name":"Time Remap", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Surface in", + "tooltip":"" + }, + { + "name":"Map", + "tooltip":"" + }, + { + "name":"Max life", + "tooltip":"" + }, + { + "name":"Loop", + "tooltip":"" + } + ], + "tooltip":"Remap image using texture as time map. Where brighter pixel means using pixel from an older frame." + }, "Node_Pin":{ "name":"Pin", "outputs":[ @@ -13945,6 +11366,50 @@ ], "tooltip":"Craete pin to organize your connection. Can be create by double clicking on a connection line." }, + "Node_Path_L_System":{ + "name":"L system", + "outputs":[ + { + "name":"Path", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Length", + "tooltip":"" + }, + { + "name":"Angle", + "tooltip":"" + }, + { + "name":"Starting position", + "tooltip":"" + }, + { + "name":"Iteration", + "tooltip":"" + }, + { + "name":"Starting rule", + "tooltip":31.0 + }, + { + "name":"End replacement", + "tooltip":"Replace symbol of the last generated rule, for example a=F to replace all a with F. Use comma to separate different replacements." + }, + { + "name":"Starting angle", + "tooltip":"" + }, + { + "name":"Seed", + "tooltip":"" + } + ], + "tooltip":"" + }, "Node_Fluid_Render":{ "name":"Render Domain", "outputs":[ @@ -14021,38 +11486,66 @@ ], "tooltip":"Blend animation by filling in the pixel 'in-between' two or more frames." }, - "Node_Iterate_Sort":{ - "name":"Sort Array", + "Node_Iterator_Filter_Input":{ + "name":"Input", "outputs":[ { - "name":"Array", + "name":"Value in", "tooltip":"" } ], "inputs":[ - { - "name":"Array", - "tooltip":"" - } ], - "tooltip":"Sort array using node graph." + "tooltip":"" }, - "Node_Pixel_Builder":{ - "name":"Pixel Builder", + "Node_Compare":{ + "name":"Compare", "outputs":[ { - "name":"Surface Out", + "name":"Result", "tooltip":"" } ], "inputs":[ { - "name":"Dimension", + "name":"Type", + "display_data":[ + "Equal", + "Not equal", + "Greater", + "Greater or equal", + "Lesser", + "Lesser or equal" + ], + "tooltip":"" + }, + { + "name":"a", + "tooltip":"" + }, + { + "name":"b", "tooltip":"" } ], "tooltip":"" }, + "Node_Tunnel_Out":{ + "name":"Tunnel Out", + "outputs":[ + { + "name":"Value out", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Name", + "tooltip":"" + } + ], + "tooltip":"Receive value from tunnel in of the same key." + }, "Node_Grid_Hex":{ "name":"Hexagonal Grid", "outputs":[ @@ -14111,6 +11604,58 @@ ], "tooltip":"Generate hexagonal grid pattern." }, + "Node_Iterator_Sort_Input":{ + "name":"Sort Input", + "outputs":[ + { + "name":"Value in", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Value in", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_String":{ + "name":"Text", + "outputs":[ + { + "name":"Text", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Text", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_Rigid_Activate":{ + "name":"Activate Physics", + "outputs":[ + { + "name":"Object", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Object", + "tooltip":"" + }, + { + "name":"Physics activated", + "tooltip":"" + } + ], + "tooltip":"" + }, "Node_PB_Draw_Fill":{ "name":"Fill", "outputs":[ @@ -14225,26 +11770,6 @@ ], "tooltip":"Draw text on an image." }, - "Node_FXAA":{ - "name":"FXAA", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Surface in", - "tooltip":"" - }, - { - "name":"Active", - "tooltip":"" - } - ], - "tooltip":"" - }, "Node_Zigzag":{ "name":"Zigzag", "outputs":[ @@ -14281,137 +11806,21 @@ ], "tooltip":"Generate zigzag pattern." }, - "Node_Line":{ - "name":"Line", + "Node_Iterate_Filter":{ + "name":"Filter Array", "outputs":[ { - "name":"Surface out", + "name":"Array", "tooltip":"" } ], "inputs":[ { - "name":"Dimension", - "tooltip":"" - }, - { - "name":"Background", - "tooltip":"" - }, - { - "name":"Segment", - "tooltip":"" - }, - { - "name":"Width", - "tooltip":"" - }, - { - "name":"Wiggle", - "tooltip":"" - }, - { - "name":"Random seed", - "tooltip":"" - }, - { - "name":"Rotation", - "tooltip":"" - }, - { - "name":"Path", - "tooltip":"Draw line along path." - }, - { - "name":"Range", - "tooltip":"Range of the path to draw." - }, - { - "name":"Shift", - "tooltip":"" - }, - { - "name":"Color over length", - "tooltip":"" - }, - { - "name":"Width over length", - "tooltip":"" - }, - { - "name":"Span width over path", - "tooltip":"Apply the full 'width over length' to the trimmed path." - }, - { - "name":"Round cap", - "tooltip":"" - }, - { - "name":"Round segment", - "tooltip":"" - }, - { - "name":"Span color over path", - "tooltip":"Apply the full 'color over length' to the trimmed path." - }, - { - "name":"Greyscale over width", - "tooltip":"" - }, - { - "name":"1px mode", - "tooltip":"Render pixel perfect 1px line." - }, - { - "name":"Texture", - "tooltip":"" - }, - { - "name":"Fix length", - "tooltip":"Fix length of each segment instead of segment count." - }, - { - "name":"Segment length", - "tooltip":"" - }, - { - "name":"Texture position", - "tooltip":"" - }, - { - "name":"Texture rotation", - "tooltip":"" - }, - { - "name":"Texture scale", + "name":"Array", "tooltip":"" } ], - "tooltip":"Draw line on an image. Connect path data to it to draw line from path." - }, - "Node_De_Stray":{ - "name":"De-Stray", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Surface in", - "tooltip":"" - }, - { - "name":"Tolerance", - "tooltip":"" - }, - { - "name":"Active", - "tooltip":"" - } - ], - "tooltip":"Attempt to remove orphan pixel." + "tooltip":"Filter array using condition." }, "Node_Random_Shape":{ "name":"Random Shape", @@ -14433,54 +11842,6 @@ ], "tooltip":"" }, - "Node_Strand_Break":{ - "name":"Strand Break", - "outputs":[ - { - "name":"Strand", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Strand", - "tooltip":"" - }, - { - "name":"Shape", - "display_data":[ - "Point", - "Band" - ], - "tooltip":"" - }, - { - "name":"Position", - "tooltip":"" - }, - { - "name":"Range", - "tooltip":"" - }, - { - "name":"Direction", - "tooltip":"" - }, - { - "name":"Falloff", - "tooltip":"" - }, - { - "name":"Chance", - "tooltip":"" - }, - { - "name":"Seed", - "tooltip":"" - } - ], - "tooltip":"" - }, "Node_VFX_Vortex":{ "name":"Vortex", "outputs":[ @@ -14533,25 +11894,67 @@ ], "tooltip":"" }, - "Node_PCX_Array_Get":{ - "name":"Array Get", + "Node_Stack":{ + "name":"Stack", "outputs":[ { - "name":"PCX", + "name":"Surface out", + "tooltip":"" + }, + { + "name":"Atlas data", "tooltip":"" } ], "inputs":[ { - "name":"Array", + "name":"Axis", + "display_data":[ + "Horizontal", + "Vertical", + "On top" + ], "tooltip":"" }, { - "name":"Index", + "name":"Align", + "display_data":[ + "Start", + "Middle", + "End" + ], + "tooltip":"" + }, + { + "name":"Spacing", "tooltip":"" } ], - "tooltip":"" + "tooltip":"Place image next to each other linearly, or on top of each other." + }, + "Node_De_Corner":{ + "name":"De-Corner", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Surface in", + "tooltip":"" + }, + { + "name":"Active", + "tooltip":"" + }, + { + "name":"Tolerance", + "tooltip":"" + } + ], + "tooltip":"Attempt to remove single pixel corner from the image." }, "Node_Path_Trim":{ "name":"Trim Path", @@ -14573,64 +11976,6 @@ ], "tooltip":"" }, - "Node_Blur_Zoom":{ - "name":"Zoom Blur", - "outputs":[ - { - "name":"Surface out", - "tooltip":"" - } - ], - "inputs":[ - { - "name":"Surface in", - "tooltip":"" - }, - { - "name":"Strength", - "tooltip":"" - }, - { - "name":"Center", - "tooltip":"" - }, - { - "name":"Oversample mode", - "display_data":[ - "Empty", - "Clamp", - "Repeat" - ], - "tooltip":"How to deal with pixel outside the surface.\n - Empty: Use empty pixel\n - Clamp: Repeat edge pixel\n - Repeat: Repeat texture." - }, - { - "name":"Zoom mode", - "display_data":[ - "Start", - "Middle", - "End" - ], - "tooltip":"" - }, - { - "name":"Blur mask", - "tooltip":"" - }, - { - "name":"Mask", - "tooltip":"" - }, - { - "name":"Mix", - "tooltip":"" - }, - { - "name":"Active", - "tooltip":"" - } - ], - "tooltip":"Blur image by zooming in\/out from a mid point." - }, "Node_Plot_Linear":{ "name":"Bar \/ Graph", "outputs":[ @@ -14747,6 +12092,136 @@ ], "tooltip":"Plot graph or bar chart from array of number." }, + "Node_Blur_Zoom":{ + "name":"Zoom Blur", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Surface in", + "tooltip":"" + }, + { + "name":"Strength", + "tooltip":"" + }, + { + "name":"Center", + "tooltip":"" + }, + { + "name":"Oversample mode", + "display_data":[ + "Empty", + "Clamp", + "Repeat" + ], + "tooltip":"How to deal with pixel outside the surface.\n - Empty: Use empty pixel\n - Clamp: Repeat edge pixel\n - Repeat: Repeat texture." + }, + { + "name":"Zoom mode", + "display_data":[ + "Start", + "Middle", + "End" + ], + "tooltip":"" + }, + { + "name":"Blur mask", + "tooltip":"" + }, + { + "name":"Mask", + "tooltip":"" + }, + { + "name":"Mix", + "tooltip":"" + }, + { + "name":"Active", + "tooltip":"" + } + ], + "tooltip":"Blur image by zooming in\/out from a mid point." + }, + "Node_Frame":{ + "name":"Frame", + "outputs":[ + ], + "inputs":[ + { + "name":"Size", + "tooltip":"" + }, + { + "name":"Color", + "tooltip":"" + }, + { + "name":"Alpha", + "tooltip":"" + } + ], + "tooltip":"Create frame surrounding nodes." + }, + "Node_Strand_Length_Adjust":{ + "name":"Strand Length Adjust", + "outputs":[ + { + "name":"Strand", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Strand", + "tooltip":"" + }, + { + "name":"Shape", + "display_data":[ + "Point", + "Band" + ], + "tooltip":"" + }, + { + "name":"Position", + "tooltip":"" + }, + { + "name":"Range", + "tooltip":"" + }, + { + "name":"Direction", + "tooltip":"" + }, + { + "name":"Falloff", + "tooltip":"" + }, + { + "name":"Type", + "display_data":[ + "Increase", + "Decrease" + ], + "tooltip":"" + }, + { + "name":"Strength", + "tooltip":"" + } + ], + "tooltip":"" + }, "Node_Atlas_Get":{ "name":"Atlas Get", "outputs":[ @@ -14783,30 +12258,2563 @@ ], "tooltip":"" }, - "Node_Array_Sort":{ - "name":"Sort Number", + "Node_Image_Animated":{ + "name":"Animation", "outputs":[ { - "name":"Sorted array", - "tooltip":"" - }, - { - "name":"Sorted index", + "name":"Surface out", "tooltip":"" } ], "inputs":[ { - "name":"Array in", + "name":"Path", + "tooltip":"" + }, + { + "name":"Padding", + "tooltip":"" + }, + { + "name":"Stretch frame", + "tooltip":"Stretch animation speed to match project length." + }, + { + "name":"Frame duration", + "tooltip":"" + }, + { + "name":"Animation end", + "display_data":[ + "Loop", + "Ping pong", + "Hold last frame", + "Hide" + ], + "tooltip":"" + }, + { + "name":"Set animation length to match", + "tooltip":"" + } + ], + "tooltip":"Load multiple images from your computer as animation." + }, + "Node_3D_Mesh_Sphere_Ico":{ + "name":"3D Icosphere", + "outputs":[ + { + "name":"Mesh", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Position", + "tooltip":"" + }, + { + "name":"Rotation", + "tooltip":"" + }, + { + "name":"Scale", + "tooltip":"" + }, + { + "name":"Subdivision", + "tooltip":"" + }, + { + "name":"Material", + "tooltip":"" + }, + { + "name":"Smooth Normal", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_Combine_HSV":{ + "name":"HSV Combine", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Hue", + "tooltip":"" + }, + { + "name":"Saturation", + "tooltip":"" + }, + { + "name":"Value", + "tooltip":"" + } + ], + "tooltip":"Combine 4 image in to one. Each image use to control HSVA channel." + }, + "Node_Strand_Create":{ + "name":"Strand Create", + "outputs":[ + { + "name":"Strand", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Type", + "display_data":[ + "Point", + "Path", + "Mesh" + ], + "tooltip":"" + }, + { + "name":"Density", + "tooltip":"How many strands to generate." + }, + { + "name":"Length", + "tooltip":"" + }, + { + "name":"Segment", + "tooltip":"" + }, + { + "name":"Elasticity", + "tooltip":"Length preservation, the higher the value the easier it is to stretch each segment." + }, + { + "name":"Path", + "tooltip":"" + }, + { + "name":"Position", + "tooltip":"" + }, + { + "name":"Side", + "display_data":[ + "Inner", + "Outer", + "Both" + ], + "tooltip":"" + }, + { + "name":"Spring", + "tooltip":"Angular stiffness, the higher the value the easier it is to bend each segment." + }, + { + "name":"Structure", + "tooltip":"The ability to keep its original shape." + }, + { + "name":"Seed", + "tooltip":"" + }, + { + "name":"Curl frequency", + "tooltip":"" + }, + { + "name":"Curliness", + "tooltip":"" + }, + { + "name":"Mesh", + "tooltip":"" + }, + { + "name":"Distribution", + "display_data":[ + "Uniform", + "Random" + ], + "tooltip":"" + }, + { + "name":"Bake hair", + "tooltip":"Prevent strand reseting to apply manual modification. Unbaking will remove all changes." + }, + { + "name":"View fix hair", + "tooltip":"" + }, + { + "name":"Root strength", + "tooltip":"The force required to break strand from its root. Set to -1 to make strand infinitely strong." + } + ], + "tooltip":"" + }, + "Node_Armature":{ + "name":"Armature Create", + "outputs":[ + { + "name":"Armature", + "tooltip":"" + } + ], + "inputs":[ + ], + "tooltip":"" + }, + "Node_Rigid_Variable":{ + "name":"Rigidbody Variable", + "outputs":[ + { + "name":"Positions", + "tooltip":"" + }, + { + "name":"Scales", + "tooltip":"" + }, + { + "name":"Rotations", + "tooltip":"" + }, + { + "name":"Blends", + "tooltip":"" + }, + { + "name":"Alpha", + "tooltip":"" + }, + { + "name":"Velocity", + "tooltip":"" + }, + { + "name":"Center of mass", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Object", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_Color_replace":{ + "name":"Replace Palette", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Surface in", + "tooltip":"" + }, + { + "name":"Palette from", + "tooltip":"Color to be replaced." + }, + { + "name":"Palette to", + "tooltip":"Palette to be replaced to." + }, + { + "name":"Threshold", + "tooltip":"" + }, + { + "name":"Set others to black", + "tooltip":"Set pixel that doesn't match any color in 'palette from' to black." + }, + { + "name":"Multiply alpha", + "tooltip":"" + }, + { + "name":"Hard replace", + "tooltip":"Completely override pixel with new color instead of blending between it." + }, + { + "name":"Mask", + "tooltip":"" + }, + { + "name":"Mix", + "tooltip":"" + }, + { + "name":"Active", + "tooltip":"" + } + ], + "tooltip":"Replace color that match one palette with another palette." + }, + "Node_Move_Point":{ + "name":"Translate Point", + "outputs":[ + { + "name":"Result", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Point", + "tooltip":"" + }, + { + "name":"Mode", + "display_data":[ + "XY Shift", + "Direction + Distance" + ], + "tooltip":"" + }, + { + "name":"Shift", + "tooltip":"" + }, + { + "name":"Direction", + "tooltip":"" + }, + { + "name":"Distance", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_Shadow_Cast":{ + "name":"Cast Shadow", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + }, + { + "name":"Light mask", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Background", + "tooltip":"" + }, + { + "name":"Solid", + "tooltip":"" + }, + { + "name":"Light Position", + "tooltip":"" + }, + { + "name":"Soft light radius", + "tooltip":"" + }, + { + "name":"Light density", + "tooltip":"" + }, + { + "name":"Light type", + "display_data":[ + "Point", + "Sun" + ], + "tooltip":"" + }, + { + "name":"Ambient color", + "tooltip":"" + }, + { + "name":"Light color", + "tooltip":"" + }, + { + "name":"Light radius", + "tooltip":"" + }, + { + "name":"Render solid", + "tooltip":"" + }, + { + "name":"Use BG color", + "tooltip":"If checked, background color will be used as shadow caster." + }, + { + "name":"BG threshold", + "tooltip":"" + }, + { + "name":"Light intensity", + "tooltip":"" + }, + { + "name":"Banding", + "tooltip":"" + }, + { + "name":"Attenuation", + "display_data":[ + "Quadratic", + "Invert quadratic", + "Linear" + ], + "tooltip":"Control how light fade out over distance." + }, + { + "name":"Ambient occlusion", + "tooltip":"" + }, + { + "name":"Ambient occlusion strength", + "tooltip":"" + }, + { + "name":"Active", + "tooltip":"" + } + ], + "tooltip":"Apply light that create shadow using shadow mask." + }, + "Node_3D_Light_Directional":{ + "name":"Directional Light", + "outputs":[ + { + "name":"Light", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Position", + "tooltip":"" + }, + { + "name":"Rotation", + "tooltip":"" + }, + { + "name":"Scale", + "tooltip":"" + }, + { + "name":"Active", + "tooltip":"" + }, + { + "name":"Color", + "tooltip":"" + }, + { + "name":"Intensity", + "tooltip":"" + }, + { + "name":"Cast Shadow", + "tooltip":"" + }, + { + "name":"Shadow Map Size", + "tooltip":"" + }, + { + "name":"Shadow Map Scale", + "tooltip":"" + }, + { + "name":"Shadow Bias", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_Strand_Update":{ + "name":"Strand Update", + "outputs":[ + { + "name":"Strand", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Strand", + "tooltip":"" + }, + { + "name":"Step", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_Logic":{ + "name":"Logic Opr", + "outputs":[ + { + "name":"Result", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Type", + "display_data":[ + "And", + "Or", + "Not", + "Nand", + "Nor", + "Xor" + ], + "tooltip":"" + }, + { + "name":"a", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_Atlas_Set":{ + "name":"Atlas Set", + "outputs":[ + { + "name":"Atlas", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Atlas", + "tooltip":"" + }, + { + "name":"Surface", + "tooltip":"" + }, + { + "name":"Position", + "tooltip":"" + }, + { + "name":"Rotation", + "tooltip":"" + }, + { + "name":"Scale", + "tooltip":"" + }, + { + "name":"Blend", + "tooltip":"" + }, + { + "name":"Alpha", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_Path_Wave":{ + "name":"Wave Path", + "outputs":[ + { + "name":"Path", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Path", + "tooltip":"" + }, + { + "name":"Frequency", + "tooltip":"" + }, + { + "name":"Size", + "tooltip":"" + }, + { + "name":"Shift", + "tooltip":"" + }, + { + "name":"Smooth", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_Path_Plot":{ + "name":"Path plot", + "outputs":[ + { + "name":"Path", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Output scale", + "tooltip":"" + }, + { + "name":"Coordinate", + "display_data":[ + "Cartesian", + "Polar" + ], + "tooltip":"" + }, + { + "name":"Equation type", + "display_data":[ + "x function", + "y function", + "parametric" + ], + "tooltip":"" + }, + { + "name":"0 function", + "tooltip":"" + }, + { + "name":"1 function", + "tooltip":"" + }, + { + "name":"Origin", + "tooltip":"" + }, + { + "name":"Range", + "tooltip":"" + }, + { + "name":"Input scale", + "tooltip":"" + }, + { + "name":"Input shift", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_Noise_Hex":{ + "name":"Hexagonal Noise", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Dimension", + "tooltip":"" + }, + { + "name":"Seed", + "tooltip":"" + }, + { + "name":"Position", + "tooltip":"" + }, + { + "name":"Scale", + "tooltip":"" + }, + { + "name":"Texture sample", + "tooltip":"" + }, + { + "name":"Oversample mode", + "display_data":[ + "Empty", + "Clamp", + "Repeat" + ], + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_Scale_Algo":{ + "name":"Scale Algorithm", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Surface in", + "tooltip":"" + }, + { + "name":"Algorithm", + "display_data":[ + "Scale2x", + "Scale3x" + ], + "tooltip":"" + }, + { + "name":"Tolerance", + "tooltip":"" + }, + { + "name":"Active", + "tooltip":"" + } + ], + "tooltip":"Scale image using scale2x, scale3x algorithm." + }, + "Node_String_Trim":{ + "name":"Trim Text", + "outputs":[ + { + "name":"Text", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Text", + "tooltip":"" + }, + { + "name":"Head", + "tooltip":"" + }, + { + "name":"Tail", + "tooltip":"" + }, + { + "name":"Trim", + "display_data":[ + "Character", + "Word" + ], + "tooltip":"" + }, + { + "name":"Mode", + "display_data":[ + "Counter", + "Progress" + ], + "tooltip":"Set to progress to use ratio, where 0 means no change and 1 means the entire length of the text." + } + ], + "tooltip":"" + }, + "Node_PB_Fx_Strip":{ + "name":"Strip", + "outputs":[ + { + "name":"pBox", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"pBox", + "tooltip":"" + }, + { + "name":"Scale", + "tooltip":"" + }, + { + "name":"Color", + "tooltip":"" + }, + { + "name":"Shift", + "tooltip":"" + }, + { + "name":"Axis", + "display_data":[ + "X", + "Y" + ], + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_Outline":{ + "name":"Outline", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + }, + { + "name":"Outline", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Surface in", + "tooltip":"" + }, + { + "name":"Width", + "tooltip":"" + }, + { + "name":"Color", + "tooltip":"" + }, + { + "name":"Blend", + "tooltip":"Blend outline color with the original color." + }, + { + "name":"Blend alpha", + "tooltip":"" + }, + { + "name":"Position", + "display_data":[ + "Inside", + "Outside" + ], + "tooltip":"" + }, + { + "name":"Anti alising", + "tooltip":"" + }, + { + "name":"Oversample mode", + "display_data":[ + "Empty", + "Clamp", + "Repeat" + ], + "tooltip":"How to deal with pixel outside the surface.\n - Empty: Use empty pixel\n - Clamp: Repeat edge pixel\n - Repeat: Repeat texture." + }, + { + "name":"Start", + "tooltip":"Shift outline inside, outside the shape." + }, + { + "name":"Mask", + "tooltip":"" + }, + { + "name":"Mix", + "tooltip":"" + }, + { + "name":"Active", + "tooltip":"" + } + ], + "tooltip":"Add border to the image." + }, + "Node_VFX_Accelerate":{ + "name":"Accelerate", + "outputs":[ + { + "name":"Particles", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Particles", + "tooltip":"" + }, + { + "name":"Area", + "tooltip":"" + }, + { + "name":"Falloff", + "tooltip":"" + }, + { + "name":"Falloff distance", + "tooltip":"" + }, + { + "name":"Effect Vector", + "tooltip":"" + }, + { + "name":"Strength", + "tooltip":"" + }, + { + "name":"Rotate particle", + "tooltip":"" + }, + { + "name":"Scale particle", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_Rigid_Object":{ + "name":"Object", + "outputs":[ + { + "name":"Object", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Affect by force", + "tooltip":"" + }, + { + "name":"Weight", + "tooltip":"" + }, + { + "name":"Contact friction", + "tooltip":"" + }, + { + "name":"Air resistance", + "tooltip":"" + }, + { + "name":"Rotation resistance", + "tooltip":"" + }, + { + "name":"Shape", + "display_data":[ + "Box", + "Circle", + "Custom" + ], + "tooltip":"" + }, + { + "name":"Texture", + "tooltip":"" + }, + { + "name":"Start shape", + "tooltip":"" + }, + { + "name":"Spawn", + "tooltip":"Make object spawn when start." + }, + { + "name":"Generate mesh", + "tooltip":"" + }, + { + "name":"Mesh expansion", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_VFX_Wind":{ + "name":"Wind", + "outputs":[ + { + "name":"Particles", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Particles", + "tooltip":"" + }, + { + "name":"Area", + "tooltip":"" + }, + { + "name":"Falloff", + "tooltip":"" + }, + { + "name":"Falloff distance", + "tooltip":"" + }, + { + "name":"Effect Vector", + "tooltip":"" + }, + { + "name":"Strength", + "tooltip":"" + }, + { + "name":"Rotate particle", + "tooltip":"" + }, + { + "name":"Scale particle", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_3D_Mesh_Plane":{ + "name":"3D Plane", + "outputs":[ + { + "name":"Mesh", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Position", + "tooltip":"" + }, + { + "name":"Rotation", + "tooltip":"" + }, + { + "name":"Scale", + "tooltip":"" + }, + { + "name":"Material", + "tooltip":"" + }, + { + "name":"Normal", + "display_data":[ + "X", + "Y", + "Z" + ], + "tooltip":"" + } + ], + "tooltip":"Put 2D image on a plane in 3D space." + }, + "Node_PB_Draw_Semi_Ellipse":{ + "name":"Semi-Ellipse", + "outputs":[ + { + "name":"pBox", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"pBox", + "tooltip":"" + }, + { + "name":"Color", + "tooltip":"" + }, + { + "name":"Apply Mask", + "tooltip":"" + }, + { + "name":"Side", + "display_data":[ + 776.0, + 776.0, + 776.0, + 776.0 + ], + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_Feedback_Input":{ + "name":"Input", + "outputs":[ + { + "name":"Value", + "tooltip":"" + }, + { + "name":"Feedback loop", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Display type", + "display_data":[ + "Default", + "Range", + "Rotation", + "Rotation range", + "Slider", + "Slider range", + "Padding", + "Vector", + "Vector range", + "Area", + "Enum button", + "Menu scroll" + ], + "tooltip":"" + }, + { + "name":"Range", + "tooltip":"" + }, + { + "name":"Input type", + "display_data":[ + "Integer", + "Float", + "Boolean", + "Color", + "Surface", + "File Path", + "Curve", + "Text", + "Object", + "Node", + "3D object", + "Any", + "Path", + "Particle", + "Rigidbody Object", + "Fluid Domain", + "Struct", + "Strands", + "Mesh", + "Trigger" + ], + "tooltip":"" + }, + { + "name":"Enum label", + "tooltip":"" + }, + { + "name":"Vector size", + "display_data":[ + "2", + "3", + "4" + ], "tooltip":"" }, { "name":"Order", + "tooltip":"" + }, + { + "name":"Display preview gizmo", + "tooltip":"" + }, + { + "name":"Step", + "tooltip":"" + }, + { + "name":"Button Label", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_String_Join":{ + "name":"Join Text", + "outputs":[ + { + "name":"Text", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Text array", + "tooltip":"" + }, + { + "name":"Divider", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_Text_File_Write":{ + "name":"Text File Out", + "outputs":[ + ], + "inputs":[ + { + "name":"Path", + "tooltip":"" + }, + { + "name":"Content", + "tooltip":"" + } + ], + "tooltip":"Save text as a .txt file." + }, + "Node_Normal_Light":{ + "name":"Normal Light", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Surface in", + "tooltip":"" + }, + { + "name":"Normal map", + "tooltip":"" + }, + { + "name":"Normal intensity", + "tooltip":"" + }, + { + "name":"Ambient", + "tooltip":"" + }, + { + "name":"Light position", + "tooltip":"" + }, + { + "name":"Light range", + "tooltip":"" + }, + { + "name":"Light intensity", + "tooltip":"" + }, + { + "name":"Light color", + "tooltip":"" + }, + { + "name":"Light type", "display_data":[ - "Ascending", - "Descending" + "Point", + "Sun" ], "tooltip":"" + }, + { + "name":"Active", + "tooltip":"" + } + ], + "tooltip":"Light up the image using normal mapping." + }, + "Node_Array_Get":{ + "name":"Array Get", + "outputs":[ + { + "name":"Value", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Array", + "tooltip":"" + }, + { + "name":"Index", + "tooltip":"" + }, + { + "name":"Overflow", + "display_data":[ + "Clamp", + "Loop", + "Ping Pong" + ], + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_Strand_Force_Apply":{ + "name":"Strand Force Apply", + "outputs":[ + { + "name":"Strand", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Strand", + "tooltip":"" + }, + { + "name":"Shape", + "display_data":[ + "Point", + "Band" + ], + "tooltip":"" + }, + { + "name":"Position", + "tooltip":"" + }, + { + "name":"Range", + "tooltip":"" + }, + { + "name":"Direction", + "tooltip":"" + }, + { + "name":"Falloff", + "tooltip":"" + }, + { + "name":"Strength", + "tooltip":"" + }, + { + "name":"Turbulence", + "tooltip":"" + }, + { + "name":"Seed", + "tooltip":"" + }, + { + "name":"Turbulence frequency", + "tooltip":"" + }, + { + "name":"Turbulence detail", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_Struct":{ + "name":"Struct", + "outputs":[ + { + "name":"Struct", + "tooltip":"" + } + ], + "inputs":[ + ], + "tooltip":"" + }, + "Node_Audio_Window":{ + "name":"Audio Window", + "outputs":[ + { + "name":"Windowed Array", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Audio Array", + "tooltip":"" + }, + { + "name":"Sample", + "tooltip":"" + }, + { + "name":"Size", + "tooltip":"" + } + ], + "tooltip":"Take a slice of an audio array based on the current frame." + }, + "Node_Gradient_Extract":{ + "name":"Gradient Data", + "outputs":[ + { + "name":"Colors", + "tooltip":"" + }, + { + "name":"Positions", + "tooltip":"" + }, + { + "name":"Type", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Gradient", + "tooltip":"" + } + ], + "tooltip":"Get palatte and array of key positions from gradient." + }, + "Node_Armature_Bind":{ + "name":"Armature Bind", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + }, + { + "name":"Atlas data", + "tooltip":"" + }, + { + "name":"Bind data", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Dimension", + "tooltip":"" + }, + { + "name":"Armature", + "tooltip":"" + }, + { + "name":"Bind data", + "tooltip":"" + }, + { + "name":"Bone transform", + "tooltip":"" + }, + { + "name":"Bone scale", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_Glow":{ + "name":"Glow", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Surface in", + "tooltip":"" + }, + { + "name":"Border", + "tooltip":"" + }, + { + "name":"Size", + "tooltip":"" + }, + { + "name":"Strength", + "tooltip":"" + }, + { + "name":"Color", + "tooltip":"" + }, + { + "name":"Mask", + "tooltip":"" + }, + { + "name":"Mix", + "tooltip":"" + }, + { + "name":"Active", + "tooltip":"" + } + ], + "tooltip":"Apply glow to the border of the image." + }, + "Node_Vector3":{ + "name":"Vector3", + "outputs":[ + { + "name":"Vector", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"x", + "tooltip":"" + }, + { + "name":"y", + "tooltip":"" + }, + { + "name":"z", + "tooltip":"" + }, + { + "name":"Integer", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_DynaSurf_Out_Height":{ + "name":"getHeight", + "outputs":[ + { + "name":"PCX", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Height", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_Display_Text":{ + "name":"Display Text", + "outputs":[ + ], + "inputs":[ + { + "name":"Color", + "tooltip":"" + }, + { + "name":"Text", + "tooltip":"" + }, + { + "name":"Style", + "display_data":[ + "Header", + "Sub header", + "Normal" + ], + "tooltip":"" + }, + { + "name":"Alpha", + "tooltip":"" + }, + { + "name":"Line width", + "tooltip":"" + } + ], + "tooltip":"Display text on the graph." + }, + "Node_Iterate_Sort":{ + "name":"Sort Array", + "outputs":[ + { + "name":"Array", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Array", + "tooltip":"" + } + ], + "tooltip":"Sort array using node graph." + }, + "Node_Level":{ + "name":"Level", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Surface in", + "tooltip":"" + }, + { + "name":"White", + "tooltip":"" + }, + { + "name":"Red", + "tooltip":"" + }, + { + "name":"Green", + "tooltip":"" + }, + { + "name":"Blue", + "tooltip":"" + }, + { + "name":"Alpha", + "tooltip":"" + }, + { + "name":"Mask", + "tooltip":"" + }, + { + "name":"Mix", + "tooltip":"" + }, + { + "name":"Active", + "tooltip":"" + } + ], + "tooltip":"Adjust brightness of an image by changing its brightness range." + }, + "Node_Render_Sprite_Sheet":{ + "name":"Render Spritesheet", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + }, + { + "name":"Atlas Data", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Sprites", + "tooltip":"" + }, + { + "name":"Sprite set", + "display_data":[ + "Animation", + "Sprite array" + ], + "tooltip":"" + }, + { + "name":"Frame step", + "tooltip":"Number of frames until next sprite. Can be seen as (Step - 1) frame skip." + }, + { + "name":"Packing type", + "display_data":[ + "Horizontal", + "Vertical", + "Grid" + ], + "tooltip":"" + }, + { + "name":"Grid column", + "tooltip":"" + }, + { + "name":"Alignment", + "display_data":[ + "First", + "Middle", + "Last" + ], + "tooltip":"" + }, + { + "name":"Spacing", + "tooltip":"" + }, + { + "name":"Padding", + "tooltip":"" + }, + { + "name":"Range", + "tooltip":"Starting\/ending frames, set end to 0 to default to last frame." + } + ], + "tooltip":"Create spritesheet from image array or animation." + }, + "Node_PB_Box_Inset":{ + "name":"Inset", + "outputs":[ + { + "name":"pBox Inset", + "tooltip":"" + }, + { + "name":"pBox Frame", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Layer Shift", + "tooltip":"" + }, + { + "name":"pBox", + "tooltip":"" + }, + { + "name":"Inset", + "tooltip":"" + }, + { + "name":"Type", + "display_data":[ + "Padding", + "Ratio" + ], + "tooltip":"" + }, + { + "name":"Width", + "tooltip":"" + }, + { + "name":"Height", + "tooltip":"" + }, + { + "name":"Horizontal alignment", + "tooltip":"" + }, + { + "name":"Vertical alignment", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_Struct_Get":{ + "name":"Struct Get", + "outputs":[ + { + "name":"Struct", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Struct", + "tooltip":"" + }, + { + "name":"Key", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_ASE_File_Read":{ + "name":"ASE File In", + "outputs":[ + { + "name":"Output", + "tooltip":"" + }, + { + "name":"Content", + "tooltip":"" + }, + { + "name":"Path", + "tooltip":"" + }, + { + "name":"Palette", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Path", + "tooltip":"" + }, + { + "name":"Generate layers", + "tooltip":"" + }, + { + "name":"Current tag", + "tooltip":"" + }, + { + "name":"Use cel dimension", + "tooltip":"" + } + ], + "tooltip":"Load Aseprite file with support for layers, tags." + }, + "Node_Strand_Collision":{ + "name":"Strand Collision", + "outputs":[ + { + "name":"Strand", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Strand", + "tooltip":"" + }, + { + "name":"Collision mesh", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_PB_Fx_Stack":{ + "name":"Stack", + "outputs":[ + { + "name":"pBox", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"pBox", + "tooltip":"" + }, + { + "name":"Amount", + "tooltip":"" + }, + { + "name":"Direction", + "display_data":[ + 798.0, + 798.0, + 798.0, + 798.0 + ], + "tooltip":"" + }, + { + "name":"Color", + "tooltip":"" + }, + { + "name":"Highlight", + "tooltip":"" + }, + { + "name":"Highlight Color", + "tooltip":"" + }, + { + "name":"Invert", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_Color":{ + "name":"Color", + "outputs":[ + { + "name":"Color", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Color", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_PB_Box_Split":{ + "name":"Split", + "outputs":[ + { + "name":"pBox Left", + "tooltip":"" + }, + { + "name":"pBox Right", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Layer Shift", + "tooltip":"" + }, + { + "name":"pBox", + "tooltip":"" + }, + { + "name":"Type", + "display_data":[ + "Ratio", + "Fix Left", + "Fix Right" + ], + "tooltip":"" + }, + { + "name":"Ratio", + "tooltip":"" + }, + { + "name":"Fix width", + "tooltip":"" + }, + { + "name":"Axis", + "display_data":[ + "X", + "Y" + ], + "tooltip":"" + }, + { + "name":"Mirror", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_3D_Mesh_Sphere_UV":{ + "name":"3D UV Sphere", + "outputs":[ + { + "name":"Mesh", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Position", + "tooltip":"" + }, + { + "name":"Rotation", + "tooltip":"" + }, + { + "name":"Scale", + "tooltip":"" + }, + { + "name":"Horizontal Slices", + "tooltip":"" + }, + { + "name":"Vertical Slices", + "tooltip":"" + }, + { + "name":"Material", + "tooltip":"" + }, + { + "name":"Smooth Normal", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_3D_Mesh_Cylinder":{ + "name":"3D Cylinder", + "outputs":[ + { + "name":"Mesh", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Position", + "tooltip":"" + }, + { + "name":"Rotation", + "tooltip":"" + }, + { + "name":"Scale", + "tooltip":"" + }, + { + "name":"Side", + "tooltip":"" + }, + { + "name":"Material Top", + "tooltip":"" + }, + { + "name":"Material Bottom", + "tooltip":"" + }, + { + "name":"Material Side", + "tooltip":"" + }, + { + "name":"Smooth Side", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_FXAA":{ + "name":"FXAA", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Surface in", + "tooltip":"" + }, + { + "name":"Active", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_Line":{ + "name":"Line", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Dimension", + "tooltip":"" + }, + { + "name":"Background", + "tooltip":"" + }, + { + "name":"Segment", + "tooltip":"" + }, + { + "name":"Width", + "tooltip":"" + }, + { + "name":"Wiggle", + "tooltip":"" + }, + { + "name":"Random seed", + "tooltip":"" + }, + { + "name":"Rotation", + "tooltip":"" + }, + { + "name":"Path", + "tooltip":"Draw line along path." + }, + { + "name":"Range", + "tooltip":"Range of the path to draw." + }, + { + "name":"Shift", + "tooltip":"" + }, + { + "name":"Color over length", + "tooltip":"" + }, + { + "name":"Width over length", + "tooltip":"" + }, + { + "name":"Span width over path", + "tooltip":"Apply the full 'width over length' to the trimmed path." + }, + { + "name":"Round cap", + "tooltip":"" + }, + { + "name":"Round segment", + "tooltip":"" + }, + { + "name":"Span color over path", + "tooltip":"Apply the full 'color over length' to the trimmed path." + }, + { + "name":"Greyscale over width", + "tooltip":"" + }, + { + "name":"1px mode", + "tooltip":"Render pixel perfect 1px line." + }, + { + "name":"Texture", + "tooltip":"" + }, + { + "name":"Fix length", + "tooltip":"Fix length of each segment instead of segment count." + }, + { + "name":"Segment length", + "tooltip":"" + }, + { + "name":"Texture position", + "tooltip":"" + }, + { + "name":"Texture rotation", + "tooltip":"" + }, + { + "name":"Texture scale", + "tooltip":"" + } + ], + "tooltip":"Draw line on an image. Connect path data to it to draw line from path." + }, + "Node_Shadow":{ + "name":"Shadow", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Surface in", + "tooltip":"" + }, + { + "name":"Color", + "tooltip":"" + }, + { + "name":"Strength", + "tooltip":"" + }, + { + "name":"Shift", + "tooltip":"" + }, + { + "name":"Grow", + "tooltip":"" + }, + { + "name":"Blur", + "tooltip":"" + }, + { + "name":"Mask", + "tooltip":"" + }, + { + "name":"Mix", + "tooltip":"" + }, + { + "name":"Active", + "tooltip":"" + } + ], + "tooltip":"Apply shadow behind the image." + }, + "Node_Iterator_Each_Output":{ + "name":"Output", + "outputs":[ + { + "name":"Preview", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Value out", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_SDF":{ + "name":"SDF", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Surface in", + "tooltip":"" + }, + { + "name":"Active", + "tooltip":"" + }, + { + "name":"Side", + "display_data":[ + "Inside", + "Outside", + "Both" + ], + "tooltip":"" + }, + { + "name":"Max distance", + "tooltip":"" + } + ], + "tooltip":"Create signed distance field using jump flooding algorithm." + }, + "Node_Wiggler":{ + "name":"Wiggler", + "outputs":[ + { + "name":"Output", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Range", + "tooltip":"" + }, + { + "name":"Frequency", + "tooltip":"" + }, + { + "name":"Seed", + "tooltip":"" + }, + { + "name":"Display", + "display_data":[ + "Number", + "Graph" + ], + "tooltip":"" + } + ], + "tooltip":"Create smooth random value." + }, + "Node_Array_Range":{ + "name":"Array Range", + "outputs":[ + { + "name":"Array", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Start", + "tooltip":"" + }, + { + "name":"End", + "tooltip":"" + }, + { + "name":"Step", + "tooltip":"" + } + ], + "tooltip":"Create array of numbers by setting start, end and step length." + }, + "Node_Image_Sheet":{ + "name":"Splice Spritesheet", + "outputs":[ + { + "name":"Surface out", + "tooltip":"" + }, + { + "name":"Atlas Data", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Surface in", + "tooltip":"" + }, + { + "name":"Sprite size", + "tooltip":"" + }, + { + "name":"Row", + "tooltip":"" + }, + { + "name":"Amount", + "tooltip":"" + }, + { + "name":"Offset", + "tooltip":"" + }, + { + "name":"Spacing", + "tooltip":"" + }, + { + "name":"Padding", + "tooltip":"" + }, + { + "name":"Output", + "display_data":[ + "Animation", + "Array" + ], + "tooltip":"" + }, + { + "name":"Animation speed", + "tooltip":"" + }, + { + "name":"Orientation", + "display_data":[ + "Horizontal", + "Vertical" + ], + "tooltip":"" + }, + { + "name":"Auto fill", + "tooltip":"Automatically set amount based on sprite size." + }, + { + "name":"Sync animation", + "tooltip":"" + }, + { + "name":"Filter empty output", + "tooltip":"" + }, + { + "name":"Filtered Pixel", + "display_data":[ + "Transparent", + "Color" + ], + "tooltip":"" + }, + { + "name":"Filtered Color", + "tooltip":"" + } + ], + "tooltip":"Cut up spritesheet into animation or image array." + }, + "Node_Iterator_Index":{ + "name":"Index", + "outputs":[ + { + "name":"Loop index", + "tooltip":"" + } + ], + "inputs":[ + ], + "tooltip":"" + }, + "Node_Rigid_Override":{ + "name":"Rigidbody Override", + "outputs":[ + { + "name":"Object", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Object", + "tooltip":"" + }, + { + "name":"Positions", + "tooltip":"" + }, + { + "name":"Scales", + "tooltip":"" + }, + { + "name":"Rotations", + "tooltip":"" + }, + { + "name":"Blends", + "tooltip":"" + }, + { + "name":"Alpha", + "tooltip":"" + }, + { + "name":"Velocity", + "tooltip":"" + } + ], + "tooltip":"" + }, + "Node_HSV_Channel":{ + "name":"HSV Extract", + "outputs":[ + { + "name":"Hue", + "tooltip":"" + }, + { + "name":"Saturation", + "tooltip":"" + }, + { + "name":"Value", + "tooltip":"" + }, + { + "name":"Alpha", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Surface in", + "tooltip":"" + } + ], + "tooltip":"Extract HSVA channel on an image, each channel becomes its own image." + }, + "Node_Rigid_Object_Spawner":{ + "name":"Object Spawner", + "outputs":[ + { + "name":"Object", + "tooltip":"" + } + ], + "inputs":[ + { + "name":"Object", + "tooltip":"" + }, + { + "name":"Spawn area", + "tooltip":"" + }, + { + "name":"Spawn type", + "display_data":[ + "Stream", + "Burst" + ], + "tooltip":"" + }, + { + "name":"Spawn delay", + "tooltip":"" + }, + { + "name":"Spawn amount", + "tooltip":"" + }, + { + "name":"Spawn frame", + "tooltip":"" + }, + { + "name":"Spawn", + "tooltip":"" + }, + { + "name":"Seed", + "tooltip":"" } ], "tooltip":"" diff --git a/objects/o_main/Alarm_1.gml b/objects/o_main/Alarm_1.gml index fb3986378..7c79b7e35 100644 --- a/objects/o_main/Alarm_1.gml +++ b/objects/o_main/Alarm_1.gml @@ -7,6 +7,6 @@ __migration_check(); - if(!instance_exists(_p_dialog) && !file_exists(file_open_parameter) && PREF_MAP[? "show_splash"]) + if(!file_exists(file_open_parameter) && PREF_MAP[? "show_splash"]) dialogCall(o_dialog_splash); #endregion \ No newline at end of file diff --git a/scripts/__VFX/__VFX.gml b/scripts/__VFX/__VFX.gml index 18bea17e1..108536258 100644 --- a/scripts/__VFX/__VFX.gml +++ b/scripts/__VFX/__VFX.gml @@ -61,6 +61,7 @@ function __part(_node) constructor { ground = false; ground_y = 0; ground_bounce = 0; + ground_friction = 1; static create = function(_surf, _x, _y, _life) { active = true; @@ -94,10 +95,11 @@ function __part(_node) constructor { spVec[1] = point_direction(0, 0, speedx, speedy); } - static setGround = function(_ground, _ground_offset, _ground_bounce) { + static setGround = function(_ground, _ground_offset, _ground_bounce, _ground_frict) { ground = _ground; ground_y = y + _ground_offset; ground_bounce = _ground_bounce; + ground_friction = clamp(1 - _ground_frict, 0, 1); } static setTransform = function(_scx, _scy, _sct, _rot, _rots, _follow) { @@ -133,6 +135,9 @@ function __part(_node) constructor { if(ground && y + speedy > ground_y) { y = ground_y; speedy = -speedy * ground_bounce; + + if(abs(speedy) < 0.1) + speedx *= ground_friction; } else y += speedy; diff --git a/scripts/_node_VFX_spawner/_node_VFX_spawner.gml b/scripts/_node_VFX_spawner/_node_VFX_spawner.gml index 95d97c426..e49776cc0 100644 --- a/scripts/_node_VFX_spawner/_node_VFX_spawner.gml +++ b/scripts/_node_VFX_spawner/_node_VFX_spawner.gml @@ -127,6 +127,10 @@ function Node_VFX_Spawner_Base(_x, _y, _group = noone) : Node(_x, _y, _group) co inputs[| 39] = nodeValue("Bounce amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5 ) .rejectArray() .setDisplay(VALUE_DISPLAY.slider, [ 0, 1, 0.01 ]); + + inputs[| 40] = nodeValue("Bounce friction", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.1, "Apply horizontal friction once particle stop bouncing." ) + .rejectArray() + .setDisplay(VALUE_DISPLAY.slider, [ 0, 1, 0.01 ]); input_len = ds_list_size(inputs); @@ -135,7 +139,7 @@ function Node_VFX_Spawner_Base(_x, _y, _group = noone) : Node(_x, _y, _group) co ["Spawn", true], 27, 16, 1, 2, 3, 4, 30, 31, 24, 25, 5, ["Movement", true], 29, 6, 18, ["Physics", true], 7, 19, 33, 20, 34, 35, 36, - ["Ground", true], 37, 38, 39, + ["Ground", true], 37, 38, 39, 40, ["Rotation", true], 15, 8, 9, ["Scale", true], 10, 17, 11, ["Color", true], 12, 28, 13, 14, @@ -204,6 +208,7 @@ function Node_VFX_Spawner_Base(_x, _y, _group = noone) : Node(_x, _y, _group) co var _ground = current_data[37]; var _ground_offset = current_data[38]; var _ground_bounce = current_data[39]; + var _ground_frict = current_data[40]; if(_rotation[1] < _rotation[0]) _rotation[1] += 360; @@ -302,7 +307,7 @@ function Node_VFX_Spawner_Base(_x, _y, _group = noone) : Node(_x, _y, _group) co var _wiggle = random_range(_wigg[0], _wigg[1]); part.setPhysic(_vx, _vy, _acc, _gravity, _gvDir, _wiggle, _trn, _turnSc); - part.setGround(_ground, _ground_offset, _ground_bounce); + part.setGround(_ground, _ground_offset, _ground_bounce, _ground_frict); part.setTransform(_scx, _scy, _scale_time, _rot, _rot_spd, _follow); part.setDraw(_color, _bld, _alp, _fade); spawn_index = safe_mod(spawn_index + 1, attributes.part_amount); @@ -408,14 +413,26 @@ function Node_VFX_Spawner_Base(_x, _y, _group = noone) : Node(_x, _y, _group) co var _dist = inputs[| 4].getValue(); var _scatt = inputs[| 24].getValue(); var _dirAng = inputs[| 29].getValue(); + var _turn = inputs[| 34].getValue(); + var _colGnd = inputs[| 37].getValue(); inputs[| 6].setVisible(!_dirAng); + + inputs[| 25].setVisible(_scatt == 2); + + inputs[| 30].setVisible(_dist == 2, _dist == 2); + inputs[| 31].setVisible(_dist == 3, _dist == 3); + + inputs[| 35].setVisible(_turn[0] != 0 && _turn[1] != 0); + inputs[| 36].setVisible(_turn[0] != 0 && _turn[1] != 0); + + inputs[| 38].setVisible(_colGnd); + inputs[| 39].setVisible(_colGnd); + inputs[| 40].setVisible(_colGnd); + inputs[| 22].setVisible(false); inputs[| 23].setVisible(false); inputs[| 26].setVisible(false); - inputs[| 25].setVisible(_scatt == 2); - inputs[| 30].setVisible(_dist == 2, _dist == 2); - inputs[| 31].setVisible(_dist == 3, _dist == 3); if(is_array(_inSurf)) { inputs[| 22].setVisible(true); @@ -454,10 +471,14 @@ function Node_VFX_Spawner_Base(_x, _y, _group = noone) : Node(_x, _y, _group) co static onPartStep = function(part) {} static onPartDestroy = function(part) {} + static doSerialize = function(_map) { #region + _map.part_base_length = input_len; + } #endregion + static postDeserialize = function() { #region - if(PROJECT.version < 11480) { - for( var i = 37; i <= 39; i++ ) - array_insert(load_map.inputs, i, noone); - } + var _tlen = struct_try_get(load_map, "part_base_length", 40); + + for( var i = _tlen; i < input_len; i++ ) + array_insert(load_map.inputs, i, noone); } #endregion } \ No newline at end of file diff --git a/scripts/globals/globals.gml b/scripts/globals/globals.gml index e8630e672..d5e8334b6 100644 --- a/scripts/globals/globals.gml +++ b/scripts/globals/globals.gml @@ -106,7 +106,7 @@ globalvar VERSION, SAVE_VERSION, VERSION_STRING, BUILD_NUMBER; VERSION = 11530; - SAVE_VERSION = 11500; + SAVE_VERSION = 11530; VERSION_STRING = "1.15.3.0"; BUILD_NUMBER = 11530; diff --git a/scripts/node_VFX_spawner/node_VFX_spawner.gml b/scripts/node_VFX_spawner/node_VFX_spawner.gml index bfd97940b..12bc2eb79 100644 --- a/scripts/node_VFX_spawner/node_VFX_spawner.gml +++ b/scripts/node_VFX_spawner/node_VFX_spawner.gml @@ -19,7 +19,7 @@ function Node_VFX_Spawner(_x, _y, _group = noone) : Node_VFX_Spawner_Base(_x, _y UPDATE_PART_FORWARD - static onUpdate = function() { + static onUpdate = function() { #region RETURN_ON_REST if(PROJECT.animator.current_frame == 0) @@ -37,13 +37,13 @@ function Node_VFX_Spawner(_x, _y, _group = noone) : Node_VFX_Spawner_Base(_x, _y } outputs[| 0].setValue(_parts); } - } + } #endregion - static onSpawn = function(_time, part) { + static onSpawn = function(_time, part) { #region part.step_int = inputs[| input_len + 1].getValue(_time); - } + } #endregion - static onPartCreate = function(part) { + static onPartCreate = function(part) { #region var vt = outputs[| 1]; if(ds_list_empty(vt.value_to)) return; @@ -56,9 +56,9 @@ function Node_VFX_Spawner(_x, _y, _group = noone) : Node_VFX_Spawner_Base(_x, _y if(_n.value_from != vt) continue; _n.node.spawn(, pv); } - } + } #endregion - static onPartStep = function(part) { + static onPartStep = function(part) { #region var vt = outputs[| 2]; if(ds_list_empty(vt.value_to)) return; @@ -71,9 +71,9 @@ function Node_VFX_Spawner(_x, _y, _group = noone) : Node_VFX_Spawner_Base(_x, _y if(_n.value_from != vt) continue; _n.node.spawn(, pv); } - } + } #endregion - static onPartDestroy = function(part) { + static onPartDestroy = function(part) { #region var vt = outputs[| 3]; if(ds_list_empty(vt.value_to)) return; @@ -86,9 +86,9 @@ function Node_VFX_Spawner(_x, _y, _group = noone) : Node_VFX_Spawner_Base(_x, _y if(_n.value_from != vt) continue; _n.node.spawn(, pv); } - } + } #endregion - static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) { + static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) { #region var spr = inputs[| 0].getValue(); if(spr == 0) { @@ -104,5 +104,7 @@ function Node_VFX_Spawner(_x, _y, _group = noone) : Node_VFX_Spawner_Base(_x, _y var cy = yy + h * _s / 2; var ss = min((w - 8) / surface_get_width_safe(spr), (h - 8) / surface_get_height_safe(spr)) * _s; draw_surface_align(spr, cx, cy, ss, fa_center, fa_center); - } + } #endregion + + } \ No newline at end of file diff --git a/scripts/node_data/node_data.gml b/scripts/node_data/node_data.gml index f191699e0..fd6787ced 100644 --- a/scripts/node_data/node_data.gml +++ b/scripts/node_data/node_data.gml @@ -1497,6 +1497,8 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x for(var i = 0; i < amo; i++) { if(inputs[| i] == noone || _inputs[i] == noone) continue; + + //if(name == "Particle") print($"Apply {i} : {inputs[| i].name}"); inputs[| i].applyDeserialize(_inputs[i], load_scale, preset); } @@ -1506,6 +1508,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x for(var i = 0; i < amo; i++) { if(outputs[| i] == noone) continue; + outputs[| i].applyDeserialize(_outputs[i], load_scale, preset); } } diff --git a/scripts/node_particle/node_particle.gml b/scripts/node_particle/node_particle.gml index e4c78377c..b5ca31664 100644 --- a/scripts/node_particle/node_particle.gml +++ b/scripts/node_particle/node_particle.gml @@ -105,4 +105,6 @@ function Node_Particle(_x, _y, _group = noone) : Node_VFX_Spawner_Base(_x, _y, _ cacheCurrentFrame(_outSurf); } } #endregion + + } \ No newline at end of file diff --git a/scripts/node_value/node_value.gml b/scripts/node_value/node_value.gml index 0ad2eb312..81f492cba 100644 --- a/scripts/node_value/node_value.gml +++ b/scripts/node_value/node_value.gml @@ -1583,9 +1583,10 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru if(fullUpdate) UPDATE |= RENDER_TYPE.full; else UPDATE |= RENDER_TYPE.partial; + + if(!LOADING) PROJECT.modified = true; } - if(!LOADING) PROJECT.modified = true; cache_value[0] = false; } @@ -1703,6 +1704,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru node.onValueFromUpdate(index); node.clearCacheForward(); + PROJECT.modified = true; return false; } #endregion @@ -2249,7 +2251,6 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru return; //printIf(TESTING, " |- Applying deserialize to junction " + name + " of node " + node.name); - name = struct_try_get(_map, "name", name); on_end = struct_try_get(_map, "on_end"); loop_range = struct_try_get(_map, "loop_range", -1); unit.mode = struct_try_get(_map, "unit"); @@ -2264,6 +2265,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru draw_line_shift_y = struct_try_get(_map, "shift_y"); name_custom = struct_try_get(_map, "name_custom", false); + if(name_custom) name = struct_try_get(_map, "name", name); animator.deserialize(struct_try_get(_map, "raw_value"), scale);