From c7fc39b5ad14b5c7801c2135ea8cf98208e21cc0 Mon Sep 17 00:00:00 2001 From: Tanasart Date: Wed, 31 Jan 2024 17:34:12 +0700 Subject: [PATCH] - [3D Cylinder] Add option to disable end caps. - Fold noise --- PixelComposer.resource_order | 4 + PixelComposer.yyp | 4 + fonts/_f_sdf/_f_sdf.old.png | Bin 82361 -> 82361 bytes fonts/_f_sdf/_f_sdf.png | Bin 82361 -> 82361 bytes fonts/_f_sdf_medium/_f_sdf_medium.old.png | Bin 59906 -> 59906 bytes fonts/_f_sdf_medium/_f_sdf_medium.png | Bin 59906 -> 59906 bytes .../d3d_cylinder_nocaps.gml | 47 +++++++++++ .../d3d_cylinder_nocaps.yy | 11 +++ .../node_3d_mesh_cylinder.gml | 18 ++++- scripts/node_fold_noise/node_fold_noise.gml | 34 ++++++++ scripts/node_fold_noise/node_fold_noise.yy | 11 +++ scripts/node_fold_noise/node_gradient.yy | 12 +++ scripts/node_mk_rain/node_mk_rain.gml | 27 +++++-- scripts/node_registry/node_registry.gml | 1 + shaders/sh_noise_fold/sh_noise_fold.fsh | 29 +++++++ shaders/sh_noise_fold/sh_noise_fold.vsh | 19 +++++ shaders/sh_noise_fold/sh_noise_fold.yy | 10 +++ .../931ae6d1-f05f-4ec7-8169-0588c91fc363.png | Bin 0 -> 4294 bytes .../e6c7a40c-293d-493f-b20b-ad3e9d61af51.png | Bin 0 -> 4294 bytes .../s_node_fold_noise/s_node_fold_noise.yy | 74 ++++++++++++++++++ 20 files changed, 291 insertions(+), 10 deletions(-) create mode 100644 scripts/d3d_cylinder_nocaps/d3d_cylinder_nocaps.gml create mode 100644 scripts/d3d_cylinder_nocaps/d3d_cylinder_nocaps.yy create mode 100644 scripts/node_fold_noise/node_fold_noise.gml create mode 100644 scripts/node_fold_noise/node_fold_noise.yy create mode 100644 scripts/node_fold_noise/node_gradient.yy create mode 100644 shaders/sh_noise_fold/sh_noise_fold.fsh create mode 100644 shaders/sh_noise_fold/sh_noise_fold.vsh create mode 100644 shaders/sh_noise_fold/sh_noise_fold.yy create mode 100644 sprites/s_node_fold_noise/931ae6d1-f05f-4ec7-8169-0588c91fc363.png create mode 100644 sprites/s_node_fold_noise/layers/931ae6d1-f05f-4ec7-8169-0588c91fc363/e6c7a40c-293d-493f-b20b-ad3e9d61af51.png create mode 100644 sprites/s_node_fold_noise/s_node_fold_noise.yy diff --git a/PixelComposer.resource_order b/PixelComposer.resource_order index a6fbaead6..a5f90c702 100644 --- a/PixelComposer.resource_order +++ b/PixelComposer.resource_order @@ -978,6 +978,7 @@ {"name":"s_node_iterator_amount","order":26,"path":"sprites/s_node_iterator_amount/s_node_iterator_amount.yy",}, {"name":"sh_color_adjust","order":4,"path":"shaders/sh_color_adjust/sh_color_adjust.yy",}, {"name":"sh_fd_visualize_thick_smoke_glsl","order":17,"path":"shaders/sh_fd_visualize_thick_smoke_glsl/sh_fd_visualize_thick_smoke_glsl.yy",}, + {"name":"d3d_cylinder_nocaps","order":9,"path":"scripts/d3d_cylinder_nocaps/d3d_cylinder_nocaps.yy",}, {"name":"s_node_regex_match","order":12,"path":"sprites/s_node_regex_match/s_node_regex_match.yy",}, {"name":"surface_get_palette","order":2,"path":"scripts/surface_get_palette/surface_get_palette.yy",}, {"name":"sh_pixel_sort","order":21,"path":"shaders/sh_pixel_sort/sh_pixel_sort.yy",}, @@ -1436,6 +1437,7 @@ {"name":"s_node_uv_remap","order":23,"path":"sprites/s_node_uv_remap/s_node_uv_remap.yy",}, {"name":"sh_fd_visualize_colorize_glsl","order":13,"path":"shaders/sh_fd_visualize_colorize_glsl/sh_fd_visualize_colorize_glsl.yy",}, {"name":"node_3d_light_point","order":2,"path":"scripts/node_3d_light_point/node_3d_light_point.yy",}, + {"name":"s_node_fold_noise","order":43,"path":"sprites/s_node_fold_noise/s_node_fold_noise.yy",}, {"name":"dynaSurf_circle_outline","order":1,"path":"scripts/dynaSurf_circle_outline/dynaSurf_circle_outline.yy",}, {"name":"s_node_pb_draw_fill","order":14,"path":"sprites/s_node_pb_draw_fill/s_node_pb_draw_fill.yy",}, {"name":"s_node_rate_remap","order":4,"path":"sprites/s_node_rate_remap/s_node_rate_remap.yy",}, @@ -1919,6 +1921,7 @@ {"name":"draw_surface_functions","order":4,"path":"scripts/draw_surface_functions/draw_surface_functions.yy",}, {"name":"node_rigid_variable","order":8,"path":"scripts/node_rigid_variable/node_rigid_variable.yy",}, {"name":"project_function","order":2,"path":"scripts/project_function/project_function.yy",}, + {"name":"node_fold_noise","order":14,"path":"scripts/node_fold_noise/node_fold_noise.yy",}, {"name":"s_node_zoom","order":48,"path":"sprites/s_node_zoom/s_node_zoom.yy",}, {"name":"node_noise_fbm","order":3,"path":"scripts/node_noise_fbm/node_noise_fbm.yy",}, {"name":"sh_channel_V","order":6,"path":"shaders/sh_channel_V/sh_channel_V.yy",}, @@ -1972,6 +1975,7 @@ {"name":"font_sprite_loader","order":10,"path":"scripts/font_sprite_loader/font_sprite_loader.yy",}, {"name":"s_node_noise_aniso","order":9,"path":"sprites/s_node_noise_aniso/s_node_noise_aniso.yy",}, {"name":"s_node_armature_path","order":17,"path":"sprites/s_node_armature_path/s_node_armature_path.yy",}, + {"name":"sh_noise_fold","order":14,"path":"shaders/sh_noise_fold/sh_noise_fold.yy",}, {"name":"s_node_gradient_palette","order":16,"path":"sprites/s_node_gradient_palette/s_node_gradient_palette.yy",}, {"name":"FirebaseREST_asyncCall_Firestore","order":3,"path":"scripts/FirebaseREST_asyncCall_Firestore/FirebaseREST_asyncCall_Firestore.yy",}, {"name":"FirebaseREST_firestore_value","order":16,"path":"scripts/FirebaseREST_firestore_value/FirebaseREST_firestore_value.yy",}, diff --git a/PixelComposer.yyp b/PixelComposer.yyp index 7b664d2ec..b6d113f3c 100644 --- a/PixelComposer.yyp +++ b/PixelComposer.yyp @@ -1269,6 +1269,7 @@ {"id":{"name":"s_node_iterator_amount","path":"sprites/s_node_iterator_amount/s_node_iterator_amount.yy",},}, {"id":{"name":"sh_color_adjust","path":"shaders/sh_color_adjust/sh_color_adjust.yy",},}, {"id":{"name":"sh_fd_visualize_thick_smoke_glsl","path":"shaders/sh_fd_visualize_thick_smoke_glsl/sh_fd_visualize_thick_smoke_glsl.yy",},}, + {"id":{"name":"d3d_cylinder_nocaps","path":"scripts/d3d_cylinder_nocaps/d3d_cylinder_nocaps.yy",},}, {"id":{"name":"s_node_regex_match","path":"sprites/s_node_regex_match/s_node_regex_match.yy",},}, {"id":{"name":"surface_get_palette","path":"scripts/surface_get_palette/surface_get_palette.yy",},}, {"id":{"name":"sh_pixel_sort","path":"shaders/sh_pixel_sort/sh_pixel_sort.yy",},}, @@ -1784,6 +1785,7 @@ {"id":{"name":"s_node_uv_remap","path":"sprites/s_node_uv_remap/s_node_uv_remap.yy",},}, {"id":{"name":"sh_fd_visualize_colorize_glsl","path":"shaders/sh_fd_visualize_colorize_glsl/sh_fd_visualize_colorize_glsl.yy",},}, {"id":{"name":"node_3d_light_point","path":"scripts/node_3d_light_point/node_3d_light_point.yy",},}, + {"id":{"name":"s_node_fold_noise","path":"sprites/s_node_fold_noise/s_node_fold_noise.yy",},}, {"id":{"name":"dynaSurf_circle_outline","path":"scripts/dynaSurf_circle_outline/dynaSurf_circle_outline.yy",},}, {"id":{"name":"s_node_pb_draw_fill","path":"sprites/s_node_pb_draw_fill/s_node_pb_draw_fill.yy",},}, {"id":{"name":"s_node_rate_remap","path":"sprites/s_node_rate_remap/s_node_rate_remap.yy",},}, @@ -2347,6 +2349,7 @@ {"id":{"name":"sh_mask","path":"shaders/sh_mask/sh_mask.yy",},}, {"id":{"name":"node_rigid_variable","path":"scripts/node_rigid_variable/node_rigid_variable.yy",},}, {"id":{"name":"project_function","path":"scripts/project_function/project_function.yy",},}, + {"id":{"name":"node_fold_noise","path":"scripts/node_fold_noise/node_fold_noise.yy",},}, {"id":{"name":"s_node_zoom","path":"sprites/s_node_zoom/s_node_zoom.yy",},}, {"id":{"name":"migration_function","path":"scripts/migration_function/migration_function.yy",},}, {"id":{"name":"node_noise_fbm","path":"scripts/node_noise_fbm/node_noise_fbm.yy",},}, @@ -2411,6 +2414,7 @@ {"id":{"name":"sh_ui_rotator","path":"shaders/sh_ui_rotator/sh_ui_rotator.yy",},}, {"id":{"name":"steam_ugc_functions","path":"scripts/steam_ugc_functions/steam_ugc_functions.yy",},}, {"id":{"name":"s_node_armature_path","path":"sprites/s_node_armature_path/s_node_armature_path.yy",},}, + {"id":{"name":"sh_noise_fold","path":"shaders/sh_noise_fold/sh_noise_fold.yy",},}, {"id":{"name":"s_node_gradient_palette","path":"sprites/s_node_gradient_palette/s_node_gradient_palette.yy",},}, {"id":{"name":"FirebaseREST_asyncCall_Firestore","path":"scripts/FirebaseREST_asyncCall_Firestore/FirebaseREST_asyncCall_Firestore.yy",},}, {"id":{"name":"FirebaseREST_firestore_value","path":"scripts/FirebaseREST_firestore_value/FirebaseREST_firestore_value.yy",},}, diff --git a/fonts/_f_sdf/_f_sdf.old.png b/fonts/_f_sdf/_f_sdf.old.png index 779d3e88b64e9430b430a902c8bc1b20a6efe552..fba7c844747f059e154daa60ba489be2a583d720 100644 GIT binary patch delta 87 zcmdnl%(}CgwP6dRxuc-Dm5G6sp@p`Aft7*5vsI$J(>)v+6;Oqze_y+CdZi)v+6;Oqb`8=zdUg^lFEQ_Lg TV&w6q3_#%N>gTe~DWM4fL-iPt diff --git a/fonts/_f_sdf/_f_sdf.png b/fonts/_f_sdf/_f_sdf.png index fba7c844747f059e154daa60ba489be2a583d720..19c9843bfed0db5bcc0a662fc8e6d5e1a017d30e 100644 GIT binary patch delta 96 zcmdnl%(}CgwP6dRiKB>Nh=G}vp}CcTskVWEm4U(PMcp;iJscTjF=TH2H$E`E(veX? W0bNh;Dl#m4U&tRieDpJscTjF=VEHU%PR7r6Z$) W0=k|9k9zVLfWXt$&t;ucLK6Tdwi`qM diff --git a/fonts/_f_sdf_medium/_f_sdf_medium.old.png b/fonts/_f_sdf_medium/_f_sdf_medium.old.png index fd12457a6279675de93fd5032acaa58b844fe974..5be21924cdadae3807ae508dd99d4ecd1ae40938 100644 GIT binary patch delta 83 zcmZp=!rXL)c|*fXL31k;11m!dZ36=<1A}L)M0qDqe5rscI{o|Fjgt?(RF*|id*D$| Q9s>|~y85}Sb4q9e0Ip0MoB#j- delta 83 zcmZp=!rXL)c|*fXK@%%OQ!5h#Z36=<1B2~?amOZ4e5rscdd%lp)#O7jm1R-XPK-Rh QlmQ4lUHx3vIVCg!0H8t}1ONa4 diff --git a/fonts/_f_sdf_medium/_f_sdf_medium.png b/fonts/_f_sdf_medium/_f_sdf_medium.png index 5be21924cdadae3807ae508dd99d4ecd1ae40938..ee6bc6db26c32c0d6456f397908c5e6e3709853b 100644 GIT binary patch delta 119 zcmZp=!rXL)c|+|>5yKDzGb=-LD+5z)0|P4qgVl?=YbH;8DI0<=aqGYF0R{#JjS|<0 vl9a@fRI8HA+|=Td#M}Y~BLgE7T?0d1V{|>euY}}*dKf%i{an^LB{Ts586hMW delta 119 zcmZp=!rXL)c|+|>5rYr|b1M@AD?S6G7^>bP0l+XkK^>8GK diff --git a/scripts/d3d_cylinder_nocaps/d3d_cylinder_nocaps.gml b/scripts/d3d_cylinder_nocaps/d3d_cylinder_nocaps.gml new file mode 100644 index 000000000..c7a745cc3 --- /dev/null +++ b/scripts/d3d_cylinder_nocaps/d3d_cylinder_nocaps.gml @@ -0,0 +1,47 @@ +function __3dCylinder_noCaps(radius = 0.5, height = 1, sides = 8, smooth = false) : __3dObject() constructor { + VF = global.VF_POS_NORM_TEX_COL; + render_type = pr_trianglelist; + object_counts = 1; + + self.radius = radius; + self.height = height; + self.sides = sides; + self.smooth = smooth; + + static initModel = function() { + var vs = array_create(3 * sides * 2); + var _h = height / 2; + + for( var i = 0; i < sides; i++ ) { + var a0 = (i + 0) / sides * 360; + var a1 = (i + 1) / sides * 360; + + var x0 = lengthdir_x(radius, a0); + var y0 = lengthdir_y(radius, a0); + var x1 = lengthdir_x(radius, a1); + var y1 = lengthdir_y(radius, a1); + + var nx0 = smooth? lengthdir_x(1, a0) : lengthdir_x(1, (a0 + a1) / 2); + var ny0 = smooth? lengthdir_y(1, a0) : lengthdir_y(1, (a0 + a1) / 2); + var nx1 = smooth? lengthdir_x(1, a1) : lengthdir_x(1, (a0 + a1) / 2); + var ny1 = smooth? lengthdir_y(1, a1) : lengthdir_y(1, (a0 + a1) / 2); + + var ux0 = (i + 0) / sides; + var ux1 = (i + 1) / sides; + + vs[i * 3 * 2 + 0] = new __vertex(x0, y0, _h).setNormal(nx0, ny0, 0).setUV(ux0, 0); + vs[i * 3 * 2 + 1] = new __vertex(x0, y0, -_h).setNormal(nx0, ny0, 0).setUV(ux0, 1); + vs[i * 3 * 2 + 2] = new __vertex(x1, y1, _h).setNormal(nx1, ny1, 0).setUV(ux1, 0); + + vs[i * 3 * 2 + 3] = new __vertex(x0, y0, -_h).setNormal(nx0, ny0, 0).setUV(ux0, 1); + vs[i * 3 * 2 + 4] = new __vertex(x1, y1, -_h).setNormal(nx1, ny1, 0).setUV(ux1, 1); + vs[i * 3 * 2 + 5] = new __vertex(x1, y1, _h).setNormal(nx1, ny1, 0).setUV(ux1, 0); + } + + vertex = [ vs ]; + + VB = build(); + } initModel(); + + static onParameterUpdate = initModel; +} \ No newline at end of file diff --git a/scripts/d3d_cylinder_nocaps/d3d_cylinder_nocaps.yy b/scripts/d3d_cylinder_nocaps/d3d_cylinder_nocaps.yy new file mode 100644 index 000000000..aa5e76550 --- /dev/null +++ b/scripts/d3d_cylinder_nocaps/d3d_cylinder_nocaps.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "d3d_cylinder_nocaps", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "mesh", + "path": "folders/functions/3d/mesh.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_3d_mesh_cylinder/node_3d_mesh_cylinder.gml b/scripts/node_3d_mesh_cylinder/node_3d_mesh_cylinder.gml index a39ee5c97..88ef19463 100644 --- a/scripts/node_3d_mesh_cylinder/node_3d_mesh_cylinder.gml +++ b/scripts/node_3d_mesh_cylinder/node_3d_mesh_cylinder.gml @@ -16,22 +16,34 @@ function Node_3D_Mesh_Cylinder(_x, _y, _group = noone) : Node_3D_Mesh(_x, _y, _g inputs[| in_mesh + 4] = nodeValue("Smooth Side", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false ); + inputs[| in_mesh + 5] = nodeValue("End caps", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true ); + input_display_list = [ - __d3d_input_list_mesh, in_mesh + 0, in_mesh + 4, + __d3d_input_list_mesh, in_mesh + 0, in_mesh + 4, in_mesh + 5, __d3d_input_list_transform, ["Material", false], in_mesh + 1, in_mesh + 2, in_mesh + 3, ] + static step = function() { #region + var _caps = getInputData(in_mesh + 5); + + inputs[| in_mesh + 1].setVisible(_caps, _caps); + inputs[| in_mesh + 2].setVisible(_caps, _caps); + } #endregion + static processData = function(_output, _data, _output_index, _array_index = 0) { #region - var _side = _data[in_mesh + 0]; + var _side = _data[in_mesh + 0]; var _mat_top = _data[in_mesh + 1]; var _mat_bot = _data[in_mesh + 2]; var _mat_sid = _data[in_mesh + 3]; var _smt = _data[in_mesh + 4]; + var _caps = _data[in_mesh + 5]; + + object_class = _caps? __3dCylinder : __3dCylinder_noCaps; var object = getObject(_array_index); object.checkParameter({ sides: _side, smooth: _smt }); - object.materials = [ _mat_top, _mat_bot, _mat_sid ]; + object.materials = _caps? [ _mat_top, _mat_bot, _mat_sid ] : [ _mat_sid ]; setTransform(object, _data); diff --git a/scripts/node_fold_noise/node_fold_noise.gml b/scripts/node_fold_noise/node_fold_noise.gml new file mode 100644 index 000000000..2d342a0da --- /dev/null +++ b/scripts/node_fold_noise/node_fold_noise.gml @@ -0,0 +1,34 @@ +function Node_Fold_Noise(_x, _y, _group = noone) : Node_Shader_Generator(_x, _y, _group) constructor { + name = "Fold Noise"; + shader = sh_noise_fold; + + inputs[| 1] = nodeValue("Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) + .setDisplay(VALUE_DISPLAY.vector) + .setUnitRef(function(index) { return getDimension(index); }); + addShaderProp(SHADER_UNIFORM.float, "position"); + + inputs[| 2] = nodeValue("Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 2, 2 ]) + .setDisplay(VALUE_DISPLAY.vector); + addShaderProp(SHADER_UNIFORM.float, "scale"); + + inputs[| 3] = nodeValue("Iteration", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 2) + .setDisplay(VALUE_DISPLAY.slider, { range: [ 0, 6, 1] }); + addShaderProp(SHADER_UNIFORM.integer, "iteration"); + + inputs[| 4] = nodeValue("Stretch", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 2); + addShaderProp(SHADER_UNIFORM.float, "stretch"); + + inputs[| 5] = nodeValue("Amplitude", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1.3) + .setDisplay(VALUE_DISPLAY.slider, { range: [ 0, 2, 0.01] }); + addShaderProp(SHADER_UNIFORM.float, "amplitude"); + + inputs[| 6] = nodeValue("Mode", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) + .setDisplay(VALUE_DISPLAY.enum_button, [ "Greyscale", "Map" ]); + addShaderProp(SHADER_UNIFORM.integer, "mode"); + + input_display_list = [ + ["Output", true], 0, + ["Noise", false], 1, 2, 3, 4, 5, + ["Render", false], 6, + ]; +} \ No newline at end of file diff --git a/scripts/node_fold_noise/node_fold_noise.yy b/scripts/node_fold_noise/node_fold_noise.yy new file mode 100644 index 000000000..097e87682 --- /dev/null +++ b/scripts/node_fold_noise/node_fold_noise.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_fold_noise", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "noise", + "path": "folders/nodes/data/generator/noise.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_fold_noise/node_gradient.yy b/scripts/node_fold_noise/node_gradient.yy new file mode 100644 index 000000000..fa813bb58 --- /dev/null +++ b/scripts/node_fold_noise/node_gradient.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_gradient", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_mk_rain/node_mk_rain.gml b/scripts/node_mk_rain/node_mk_rain.gml index 9b60137a8..655442fe6 100644 --- a/scripts/node_mk_rain/node_mk_rain.gml +++ b/scripts/node_mk_rain/node_mk_rain.gml @@ -9,7 +9,7 @@ function Node_MK_Rain(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c inputs[| 2] = nodeValue("Density", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 5); - inputs[| 3] = nodeValue("Raindrop width", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 2 ]) + inputs[| 3] = nodeValue("Raindrop width", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ]) .setDisplay(VALUE_DISPLAY.range); inputs[| 4] = nodeValue("Raindrop length", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 5, 10 ]) @@ -47,11 +47,13 @@ function Node_MK_Rain(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c inputs[| 16] = nodeValue("Alpha over lifetime", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, CURVE_DEF_11); + inputs[| 17] = nodeValue("Fade alpha", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false); + input_display_list = [ new Inspector_Sprite(s_MKFX), 0, 8, ["Shape", false], 9, 3, 4, 10, 11, ["Lifespan", false, 14], 15, 13, 16, ["Effect", false], 2, 1, 7, - ["Render", false], 5, 6, + ["Render", false], 5, 6, 17, ]; outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone); @@ -63,6 +65,7 @@ function Node_MK_Rain(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c inputs[| 4].setVisible(_shap == 0); inputs[| 10].setVisible(_shap == 1); inputs[| 11].setVisible(_shap == 2); + inputs[| 17].setVisible(_shap == 0); } #endregion static processData = function(_outSurf, _data, _output_index, _array_index) { #region @@ -85,6 +88,8 @@ function Node_MK_Rain(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c var _life = _data[15]; var _alif = _data[16]; + var _afad = _data[17]; + if(!is_surface(_surf)) return _outSurf; if(_shap == 2 && !is_surface(_text)) return _outSurf; @@ -113,9 +118,11 @@ function Node_MK_Rain(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c DRAW_CLEAR draw_surface(_surf, 0, 0); + var _lcc = _cc; + + if(_afad) BLEND_ADD + else BLEND_ALPHA_MULP - if(_1c) draw_set_color(_cc); - BLEND_ALPHA_MULP repeat(_dens) { random_set_seed(_seed); _seed += 100; @@ -155,7 +162,7 @@ function Node_MK_Rain(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c var _prg = _y_shf + _vel * prg; _prg = frac(_prg) - 0.5; // -0.5 - 0.5 - if(!_1c) draw_set_color(_colr.eval(random(1))); + if(!_1c) _lcc = _colr.eval(random(1)); var _aa = random_range(_alph[0], _alph[1]); var _clife = clamp((_prg + 0.5) / random_range(_life[0], _life[1]), 0, 1); @@ -167,6 +174,7 @@ function Node_MK_Rain(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c _aaL = eval_curve_x(_alif, _clife); } + draw_set_color(_lcc); draw_set_alpha(_aa * _aaL); var _drpX = _rmx - _prg * _radHx * 2; @@ -183,8 +191,13 @@ function Node_MK_Rain(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c var _y0 = _drpY - _tr_span_h; var _y1 = _y0 + _tr_span_h * 2 * _scaL; - if(_drpW == 1) draw_line( _x0, _y0, _x1, _y1 ); - else draw_line_width( _x0, _y0, _x1, _y1, _drpW ); + if(_afad) { + if(_drpW == 1) draw_line_color( _x0, _y0, _x1, _y1, _lcc, c_black ); + else draw_line_width_color( _x0, _y0, _x1, _y1, _drpW, _lcc, c_black ); + } else { + if(_drpW == 1) draw_line( _x0, _y0, _x1, _y1 ); + else draw_line_width( _x0, _y0, _x1, _y1, _drpW ); + } break; case 1 : draw_circle(_drpX, _drpY, _drpW * _scaL, false); diff --git a/scripts/node_registry/node_registry.gml b/scripts/node_registry/node_registry.gml index 1cb9a1431..5322f41b0 100644 --- a/scripts/node_registry/node_registry.gml +++ b/scripts/node_registry/node_registry.gml @@ -639,6 +639,7 @@ function __initNodes() { addNodeObject(generator, "Shard Noise", s_node_shard, "Node_Shard_Noise", [1, Node_Shard_Noise]).patreonExtra(); addNodeObject(generator, "Wavelet Noise", s_node_wavelet, "Node_Wavelet_Noise", [1, Node_Wavelet_Noise]).patreonExtra(); addNodeObject(generator, "Caustic", s_node_caustic, "Node_Caustic", [1, Node_Caustic]).patreonExtra(); + addNodeObject(generator, "Fold Noise", s_node_fold_noise, "Node_Fold_Noise", [1, Node_Fold_Noise]); ds_list_add(generator, "Patterns"); addNodeObject(generator, "Stripe", s_node_stripe, "Node_Stripe", [1, Node_Stripe],, "Generate stripe pattern."); diff --git a/shaders/sh_noise_fold/sh_noise_fold.fsh b/shaders/sh_noise_fold/sh_noise_fold.fsh new file mode 100644 index 000000000..7eafc094e --- /dev/null +++ b/shaders/sh_noise_fold/sh_noise_fold.fsh @@ -0,0 +1,29 @@ +// Based on FabriceNeyret2 - plop 2 shader + +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +uniform vec2 position; +uniform vec2 scale; + +uniform int iteration; +uniform float stretch; +uniform float amplitude; + +uniform int mode; + +void main() { + vec2 pos = v_vTexcoord * scale + position; + vec4 col = vec4(0., 0., 0., 1.); + + for (int i = 0; i < iteration; i++) { + pos += cos( pos.yx * 3. + vec2(0.0, stretch)) / 3.; + pos += sin( pos.yx + vec2(stretch, 0.0)) / 2.; + pos *= amplitude; + } + + if(mode == 0) col += length(mod(pos, 2.) - 1.); + else col.xy += abs(mod(pos, 2.) - 1.); + + gl_FragColor = col; +} diff --git a/shaders/sh_noise_fold/sh_noise_fold.vsh b/shaders/sh_noise_fold/sh_noise_fold.vsh new file mode 100644 index 000000000..3900c20f4 --- /dev/null +++ b/shaders/sh_noise_fold/sh_noise_fold.vsh @@ -0,0 +1,19 @@ +// +// Simple passthrough vertex shader +// +attribute vec3 in_Position; // (x,y,z) +//attribute vec3 in_Normal; // (x,y,z) unused in this shader. +attribute vec4 in_Colour; // (r,g,b,a) +attribute vec2 in_TextureCoord; // (u,v) + +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +void main() +{ + vec4 object_space_pos = vec4( in_Position.x, in_Position.y, in_Position.z, 1.0); + gl_Position = gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] * object_space_pos; + + v_vColour = in_Colour; + v_vTexcoord = in_TextureCoord; +} diff --git a/shaders/sh_noise_fold/sh_noise_fold.yy b/shaders/sh_noise_fold/sh_noise_fold.yy new file mode 100644 index 000000000..a3ae25b83 --- /dev/null +++ b/shaders/sh_noise_fold/sh_noise_fold.yy @@ -0,0 +1,10 @@ +{ + "resourceType": "GMShader", + "resourceVersion": "1.0", + "name": "sh_noise_fold", + "parent": { + "name": "noise", + "path": "folders/shader/generator/noise.yy", + }, + "type": 1, +} \ No newline at end of file diff --git a/sprites/s_node_fold_noise/931ae6d1-f05f-4ec7-8169-0588c91fc363.png b/sprites/s_node_fold_noise/931ae6d1-f05f-4ec7-8169-0588c91fc363.png new file mode 100644 index 0000000000000000000000000000000000000000..7fcb07d965d376f03f8c63f3e566d03b6392fbda GIT binary patch literal 4294 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 K)~?jTNBj?b9SH{j literal 0 HcmV?d00001 diff --git a/sprites/s_node_fold_noise/layers/931ae6d1-f05f-4ec7-8169-0588c91fc363/e6c7a40c-293d-493f-b20b-ad3e9d61af51.png b/sprites/s_node_fold_noise/layers/931ae6d1-f05f-4ec7-8169-0588c91fc363/e6c7a40c-293d-493f-b20b-ad3e9d61af51.png new file mode 100644 index 0000000000000000000000000000000000000000..7fcb07d965d376f03f8c63f3e566d03b6392fbda GIT binary patch literal 4294 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 K)~?jTNBj?b9SH{j literal 0 HcmV?d00001 diff --git a/sprites/s_node_fold_noise/s_node_fold_noise.yy b/sprites/s_node_fold_noise/s_node_fold_noise.yy new file mode 100644 index 000000000..f4dba7caf --- /dev/null +++ b/sprites/s_node_fold_noise/s_node_fold_noise.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_fold_noise", + "bbox_bottom": 63, + "bbox_left": 0, + "bbox_right": 63, + "bbox_top": 0, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"931ae6d1-f05f-4ec7-8169-0588c91fc363",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"e6c7a40c-293d-493f-b20b-ad3e9d61af51","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "generator", + "path": "folders/nodes/icons/generator.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_fold_noise", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "showBackdrop": true, + "showBackdropImage": false, + "timeUnits": 1, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"931ae6d1-f05f-4ec7-8169-0588c91fc363","path":"sprites/s_node_fold_noise/s_node_fold_noise.yy",},},},"Disabled":false,"id":"778bbe68-ba17-49a5-8831-4d3ac2ea6460","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, + ], + "visibleRange": null, + "volume": 1.0, + "xorigin": 32, + "yorigin": 32, + }, + "swatchColours": null, + "swfPrecision": 2.525, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "type": 0, + "VTile": false, + "width": 64, +} \ No newline at end of file