This commit is contained in:
Tanasart 2024-05-15 17:42:54 +07:00
parent bb5613b820
commit 4492a026be
94 changed files with 690 additions and 236 deletions

View file

@ -48,18 +48,18 @@
{"name":"fixes","order":5,"path":"folders/nodes/data/filter/fixes.yy",},
{"name":"warps","order":6,"path":"folders/nodes/data/filter/warps.yy",},
{"name":"generator","order":17,"path":"folders/nodes/data/generator.yy",},
{"name":"blinker","order":9,"path":"folders/nodes/data/generator/blinker.yy",},
{"name":"cell","order":10,"path":"folders/nodes/data/generator/cell.yy",},
{"name":"blinker","order":19,"path":"folders/shader/generator/blinker.yy",},
{"name":"cell","order":20,"path":"folders/shader/generator/cell.yy",},
{"name":"drawer","order":11,"path":"folders/nodes/data/generator/drawer.yy",},
{"name":"grid","order":12,"path":"folders/nodes/data/generator/grid.yy",},
{"name":"interpret","order":13,"path":"folders/nodes/data/generator/interpret.yy",},
{"name":"grid","order":18,"path":"folders/shader/generator/grid.yy",},
{"name":"interpret","order":17,"path":"folders/shader/generator/interpret.yy",},
{"name":"noise","order":14,"path":"folders/nodes/data/generator/noise.yy",},
{"name":"pattern","order":15,"path":"folders/nodes/data/generator/pattern.yy",},
{"name":"random_shape","order":16,"path":"folders/nodes/data/generator/random_shape.yy",},
{"name":"reaction_diffusion","order":17,"path":"folders/nodes/data/generator/reaction_diffusion.yy",},
{"name":"region","order":18,"path":"folders/nodes/data/generator/region.yy",},
{"name":"random_shape","order":21,"path":"folders/shader/generator/random_shape.yy",},
{"name":"reaction_diffusion","order":22,"path":"folders/shader/generator/reaction_diffusion.yy",},
{"name":"region","order":23,"path":"folders/shader/generator/region.yy",},
{"name":"regions","order":19,"path":"folders/nodes/data/generator/regions.yy",},
{"name":"vector_mapper","order":20,"path":"folders/nodes/data/generator/vector_mapper.yy",},
{"name":"vector_mapper","order":24,"path":"folders/shader/generator/vector_mapper.yy",},
{"name":"group","order":18,"path":"folders/nodes/data/group.yy",},
{"name":"io","order":19,"path":"folders/nodes/data/io.yy",},
{"name":"network","order":22,"path":"folders/nodes/data/io/network.yy",},
@ -143,6 +143,7 @@
{"name":"shape_seperator","order":47,"path":"folders/shader/filter/shape_seperator.yy",},
{"name":"surface_replace","order":48,"path":"folders/shader/filter/surface_replace.yy",},
{"name":"warp","order":49,"path":"folders/shader/filter/warp.yy",},
{"name":"noise","order":16,"path":"folders/shader/generator/noise.yy",},
{"name":"find_boundary","order":7,"path":"folders/shader/misc/find_boundary.yy",},
{"name":"Flag","order":3,"path":"folders/shader/MK effects/Flag.yy",},
{"name":"Tile","order":4,"path":"folders/shader/MK effects/Tile.yy",},
@ -752,6 +753,7 @@
{"name":"node_greyscale","order":5,"path":"scripts/node_greyscale/node_greyscale.yy",},
{"name":"node_grid_hex","order":2,"path":"scripts/node_grid_hex/node_grid_hex.yy",},
{"name":"node_grid_noise","order":4,"path":"scripts/node_grid_noise/node_grid_noise.yy",},
{"name":"node_grid_pentagonal","order":10,"path":"scripts/node_grid_pentagonal/node_grid_pentagonal.yy",},
{"name":"node_grid_tri","order":3,"path":"scripts/node_grid_tri/node_grid_tri.yy",},
{"name":"node_grid","order":1,"path":"scripts/node_grid/node_grid.yy",},
{"name":"node_group_input","order":1,"path":"scripts/node_group_input/node_group_input.yy",},
@ -1476,6 +1478,7 @@
{"name":"sh_widget_rotator_range","order":5,"path":"shaders/sh_widget_rotator_range/sh_widget_rotator_range.yy",},
{"name":"sh_widget_rotator","order":4,"path":"shaders/sh_widget_rotator/sh_widget_rotator.yy",},
{"name":"sh_zigzag","order":2,"path":"shaders/sh_zigzag/sh_zigzag.yy",},
{"name":"sh_grid_pentagonal","order":7,"path":"shaders/sh_grid_pentagonal/sh_grid_pentagonal.yy",},
{"name":"credit_badge_popular","order":2,"path":"sprites/credit_badge_popular/credit_badge_popular.yy",},
{"name":"credit_badge_value","order":1,"path":"sprites/credit_badge_value/credit_badge_value.yy",},
{"name":"s_biterator_b_grey_long","order":7,"path":"sprites/s_biterator_b_grey_long/s_biterator_b_grey_long.yy",},

View file

@ -146,18 +146,18 @@
{"$GMFolder":"","%Name":"fixes","folderPath":"folders/nodes/data/filter/fixes.yy","name":"fixes","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"warps","folderPath":"folders/nodes/data/filter/warps.yy","name":"warps","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"generator","folderPath":"folders/nodes/data/generator.yy","name":"generator","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"blinker","folderPath":"folders/nodes/data/generator/blinker.yy","name":"blinker","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"cell","folderPath":"folders/nodes/data/generator/cell.yy","name":"cell","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"blinker","folderPath":"folders/shader/generator/blinker.yy","name":"blinker","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"cell","folderPath":"folders/shader/generator/cell.yy","name":"cell","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"drawer","folderPath":"folders/nodes/data/generator/drawer.yy","name":"drawer","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"grid","folderPath":"folders/nodes/data/generator/grid.yy","name":"grid","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"interpret","folderPath":"folders/nodes/data/generator/interpret.yy","name":"interpret","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"grid","folderPath":"folders/shader/generator/grid.yy","name":"grid","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"interpret","folderPath":"folders/shader/generator/interpret.yy","name":"interpret","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"noise","folderPath":"folders/nodes/data/generator/noise.yy","name":"noise","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"pattern","folderPath":"folders/nodes/data/generator/pattern.yy","name":"pattern","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"random_shape","folderPath":"folders/nodes/data/generator/random_shape.yy","name":"random_shape","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"reaction_diffusion","folderPath":"folders/nodes/data/generator/reaction_diffusion.yy","name":"reaction_diffusion","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"region","folderPath":"folders/nodes/data/generator/region.yy","name":"region","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"random_shape","folderPath":"folders/shader/generator/random_shape.yy","name":"random_shape","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"reaction_diffusion","folderPath":"folders/shader/generator/reaction_diffusion.yy","name":"reaction_diffusion","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"region","folderPath":"folders/shader/generator/region.yy","name":"region","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"regions","folderPath":"folders/nodes/data/generator/regions.yy","name":"regions","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"vector_mapper","folderPath":"folders/nodes/data/generator/vector_mapper.yy","name":"vector_mapper","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"vector_mapper","folderPath":"folders/shader/generator/vector_mapper.yy","name":"vector_mapper","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"group","folderPath":"folders/nodes/data/group.yy","name":"group","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"io","folderPath":"folders/nodes/data/io.yy","name":"io","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"network","folderPath":"folders/nodes/data/io/network.yy","name":"network","resourceType":"GMFolder","resourceVersion":"2.0",},
@ -274,6 +274,7 @@
{"$GMFolder":"","%Name":"warp","folderPath":"folders/shader/filter/warp.yy","name":"warp","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"flood_fill","folderPath":"folders/shader/flood_fill.yy","name":"flood_fill","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"generator","folderPath":"folders/shader/generator.yy","name":"generator","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"noise","folderPath":"folders/shader/generator/noise.yy","name":"noise","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"mask","folderPath":"folders/shader/mask.yy","name":"mask","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"misc","folderPath":"folders/shader/misc.yy","name":"misc","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"find_boundary","folderPath":"folders/shader/misc/find_boundary.yy","name":"find_boundary","resourceType":"GMFolder","resourceVersion":"2.0",},
@ -1172,6 +1173,7 @@
{"id":{"name":"node_greyscale","path":"scripts/node_greyscale/node_greyscale.yy",},},
{"id":{"name":"node_grid_hex","path":"scripts/node_grid_hex/node_grid_hex.yy",},},
{"id":{"name":"node_grid_noise","path":"scripts/node_grid_noise/node_grid_noise.yy",},},
{"id":{"name":"node_grid_pentagonal","path":"scripts/node_grid_pentagonal/node_grid_pentagonal.yy",},},
{"id":{"name":"node_grid_tri","path":"scripts/node_grid_tri/node_grid_tri.yy",},},
{"id":{"name":"node_grid","path":"scripts/node_grid/node_grid.yy",},},
{"id":{"name":"node_group_input","path":"scripts/node_group_input/node_group_input.yy",},},
@ -2013,6 +2015,7 @@
{"id":{"name":"sh_widget_rotator_range","path":"shaders/sh_widget_rotator_range/sh_widget_rotator_range.yy",},},
{"id":{"name":"sh_widget_rotator","path":"shaders/sh_widget_rotator/sh_widget_rotator.yy",},},
{"id":{"name":"sh_zigzag","path":"shaders/sh_zigzag/sh_zigzag.yy",},},
{"id":{"name":"sh_grid_pentagonal","path":"shaders/sh_grid_pentagonal/sh_grid_pentagonal.yy",},},
{"id":{"name":"credit_badge_popular","path":"sprites/credit_badge_popular/credit_badge_popular.yy",},},
{"id":{"name":"credit_badge_value","path":"sprites/credit_badge_value/credit_badge_value.yy",},},
{"id":{"name":"node_credit","path":"sprites/node_credit/node_credit.yy",},},

View file

@ -4,7 +4,7 @@ winManStep()
//print("===== Step start =====");
if(PROJECT.active && !PROJECT.safeMode) { #region
if(PROJECT.active && !PROJECT.safeMode) { #region node step
PROJECT.animator.step();
PROJECT.globalNode.step();
LIVE_UPDATE = false;
@ -19,6 +19,8 @@ if(PROJECT.active && !PROJECT.safeMode) { #region
} catch(e) {
noti_warning("Step error: " + exception_print(e));
}
IS_SAVING = false;
} #endregion
#region hotkey

View file

@ -29,7 +29,6 @@ function canvas_brush() constructor {
var _brushRotR = node.getInputData(17);
var attr = node.tool_attribute;
var _col = attr.color;
var _siz = attr.size;
brush_size = _siz;

View file

@ -38,11 +38,11 @@
playback = ANIMATOR_END.loop;
static setFrame = function(frame) { #region
static setFrame = function(frame, _round = true) { #region
var _c = current_frame;
frame = clamp(frame, 0, frames_total);
real_frame = frame;
current_frame = round(frame);
current_frame = _round? round(frame) : frame;
frame_progress = _c != current_frame;

View file

@ -148,7 +148,7 @@ function drawPaletteGrid(_pal, _x, _y, _w, _gs = 24, c_color = -1) { #region
draw_rectangle(_x0, _y0 + 1, _x0 + _gs, _y0 + _gs, false);
if(c_color == _pal[i]) {
if(color_diff(c_color, _pal[i]) <= 0) {
cx = _x0;
cy = _y0;
}

View file

@ -7,12 +7,12 @@ function canvas_ff_fillable(colorBase, colorFill, _x, _y, _thres) { #region
} #endregion
function canvas_flood_fill_scanline(_surf, _x, _y, _thres, _corner = false) { #region
var colorFill = tool_attribute.color;
var colorFill = CURRENT_COLOR;
var colorBase = surface_getpixel_ext(_surf, _x, _y);
if(colorFill == colorBase) return; //Clicking on the same color as the fill color
var _c = tool_attribute.color;
var _c = CURRENT_COLOR;
draw_set_color(_c);
_ff_w = surface_get_width(_surf);

View file

@ -30,7 +30,7 @@ function canvas_tool_extrude() : canvas_tool_shader() constructor {
shader_set_f("dimension", _dim);
shader_set_f("shift", _dx, _dy);
shader_set_f("itr", round(sqrt(_dx * _dx + _dy * _dy)));
shader_set_color("color", node.tool_attribute.color);
shader_set_color("color", node.CURRENT_COLOR);
draw_surface(preview_surface[0], 0, 0);
surface_reset_shader();

View file

@ -30,7 +30,7 @@ function canvas_tool_inset() : canvas_tool_shader() constructor {
shader_set_f("dimension", _dim);
shader_set_f("shift", _dx, _dy);
shader_set_f("itr", round(sqrt(_dx * _dx + _dy * _dy)));
shader_set_color("color", node.tool_attribute.color);
shader_set_color("color", node.CURRENT_COLOR);
draw_surface(preview_surface[0], 0, 0);
surface_reset_shader();

View file

@ -20,7 +20,7 @@ function canvas_tool_outline() : canvas_tool_shader() constructor {
shader_set_f("borderSize", _thck, _thck);
shader_set_f("borderStart", 0, 0);
shader_set_i("side", _side);
shader_set_color("borderColor", node.tool_attribute.color);
shader_set_color("borderColor", node.CURRENT_COLOR);
draw_surface(preview_surface[0], 0, 0);
surface_reset_shader();

View file

@ -154,25 +154,15 @@
#endregion
function color_diff(c1, c2, fast = false, alpha = false) { #region
var _c1_r = color_get_red(c1);
var _c1_g = color_get_green(c1);
var _c1_b = color_get_blue(c1);
var _c1_a = alpha? color_get_alpha(c1) : 255;
var _c1_r = _color_get_red(c1);
var _c1_g = _color_get_green(c1);
var _c1_b = _color_get_blue(c1);
var _c1_a = _color_get_alpha(c1);
_c1_a = _c1_a / 255;
_c1_r = _c1_r / 255 * _c1_a;
_c1_g = _c1_g / 255 * _c1_a;
_c1_b = _c1_b / 255 * _c1_a;
var _c2_r = color_get_red(c2);
var _c2_g = color_get_green(c2);
var _c2_b = color_get_blue(c2);
var _c2_a = alpha? color_get_alpha(c2) : 255;
_c2_a = _c2_a / 255;
_c2_r = _c2_r / 255 * _c2_a;
_c2_g = _c2_g / 255 * _c2_a;
_c2_b = _c2_b / 255 * _c2_a;
var _c2_r = _color_get_red(c2);
var _c2_g = _color_get_green(c2);
var _c2_b = _color_get_blue(c2);
var _c2_a = _color_get_alpha(c2);
if(fast) return (abs(_c1_r - _c2_r) + abs(_c1_g - _c2_g) + abs(_c1_b - _c2_b)) / 3;
return sqrt(sqr(_c1_r - _c2_r) + sqr(_c1_g - _c2_g) + sqr(_c1_b - _c2_b));

View file

@ -1,13 +1,9 @@
#region colors
globalvar CDEF, COLORS, THEME_VALUE;
globalvar COLORS_GLOBAL_GET, COLORS_GLOBAL_SET;
CDEF = new ThemeColorDef();
COLORS = new ThemeColor();
THEME_VALUE = new ThemeValue();
COLORS_GLOBAL_GET = noone;
COLORS_GLOBAL_SET = noone;
#endregion
function loadColor(theme = "default") { #region

View file

@ -50,6 +50,9 @@
global.KEYS = {
download_links: "",
};
globalvar CURRENT_COLOR;
CURRENT_COLOR = c_white;
#endregion
#region inputs
@ -189,11 +192,6 @@
function global_project_close() { CALL("project_close"); PANEL_GRAPH.close(); }
function global_theme_reload() { CALL("theme_reload"); loadGraphic(PREFERENCES.theme); resetPanel(); }
function reset_global_getset() {
COLORS_GLOBAL_GET = noone;
COLORS_GLOBAL_SET = noone;
}
#endregion
#region debug

View file

@ -210,8 +210,6 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
#endregion
#region ++++ tools ++++
tool_attribute.color = cola(c_white);
tool_attribute.channel = [ true, true, true, true ];
tool_channel_edit = new checkBoxGroup(THEME.tools_canvas_channel, function(ind, val) { tool_attribute.channel[ind] = val; });
@ -369,9 +367,7 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
selection_tool_after = noone;
#endregion
function setToolColor(color) { tool_attribute.color = color; }
function getToolColor() { return tool_attribute.color; }
function setToolColor(color) { CURRENT_COLOR = color; }
static drawTools = function(_mx, _my, xx, yy, tool_size, hover, focus) { #region
var _sx0 = xx - tool_size / 2;
@ -390,11 +386,11 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
yy += ui(8);
hh += ui(8);
drawColor(tool_attribute.color, _cx, yy, _cw, _cw);
drawColor(CURRENT_COLOR, _cx, yy, _cw, _cw);
draw_sprite_stretched_ext(THEME.palette_selecting, 0, _cx - _pd, yy - _pd, _cw + _pd * 2, _cw + _pd * 2, c_white, 1);
if(point_in_rectangle(_mx, _my, _cx, yy, _cx + _cw, yy + _ch) && mouse_press(mb_left, focus))
colorSelectorCall(tool_attribute.color, setToolColor);
colorSelectorCall(CURRENT_COLOR, setToolColor);
yy += _cw + ui(8);
hh += _cw + ui(8);
@ -410,12 +406,12 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
draw_sprite_stretched_ext(THEME.palette_mask, ii, _cx, yy, _cw, _ch, _c, 1);
if(_c == tool_attribute.color)
if(color_diff(_c, CURRENT_COLOR) <= 0)
_sel = [ _cx, yy ];
if(hover && point_in_rectangle(_mx, _my, _cx, yy, _cx + _cw, yy + _ch)) {
if(mouse_click(mb_left, focus))
tool_attribute.color = _c;
CURRENT_COLOR = _c;
}
yy += _ch;
@ -614,7 +610,7 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
shader_set_i("drawLayer", tool_attribute.drawLayer);
shader_set_i("eraser", isUsingTool("Eraser"));
shader_set_f("channels", tool_attribute.channel);
shader_set_f("alpha", _applyAlpha? _color_get_alpha(tool_attribute.color) : 1);
shader_set_f("alpha", _applyAlpha? _color_get_alpha(CURRENT_COLOR) : 1);
shader_set_f("mirror", tool_attribute.mirror);
shader_set_color("pickColor", tool_attribute.pickColor, _color_get_alpha(tool_attribute.pickColor));
@ -641,16 +637,13 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
static drawOverlay = function(hover, active, _x, _y, _s, _mx, _my, _snx, _sny) { #region
if(instance_exists(o_dialog_color_picker)) return;
COLORS_GLOBAL_GET = getToolColor;
COLORS_GLOBAL_SET = setToolColor;
brush.node = self;
brush.step(hover, active, _x, _y, _s, _mx, _my, _snx, _sny);
if(!tool_selection.is_selected && active && key_mod_press(ALT)) { #region color selector
var dialog = instance_create(0, 0, o_dialog_color_picker);
dialog.onApply = setToolColor;
dialog.def_c = tool_attribute.color;
dialog.def_c = CURRENT_COLOR;
} #endregion
var _canvas_surface = getCanvasSurface();
@ -736,9 +729,9 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
#endregion
var _alp = _color_get_alpha(tool_attribute.color);
var _alp = _color_get_alpha(CURRENT_COLOR);
draw_set_color(isUsingTool("Eraser")? c_white : tool_attribute.color);
draw_set_color(isUsingTool("Eraser")? c_white : CURRENT_COLOR);
draw_set_alpha(1);
if(_tool) { #region tool step
@ -802,7 +795,7 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
}
}
draw_set_color(tool_attribute.color);
draw_set_color(CURRENT_COLOR);
if(brush.brush_sizing)
canvas_draw_point_brush(brush, brush.brush_sizing_dx, brush.brush_sizing_dy);

View file

@ -117,7 +117,7 @@ function Node_Export(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
inputs[| 15] = nodeValue("Custom Range", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false)
.rejectArray();
inputs[| 16] = nodeValue("Auto Export", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false)
inputs[| 16] = nodeValue("Export on Save", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false)
outputs[| 0] = nodeValue("Loop exit", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, 0);
@ -738,6 +738,7 @@ function Node_Export(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
var surf = getInputData( 0);
var pngf = getInputData(13);
var expo = getInputData(16);
if(is_array(surf)) {
inputs[| 3].display_data.data = format_array;
@ -753,6 +754,9 @@ function Node_Export(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
var extn = getInputData(9);
var user = getInputData(15);
if(expo && anim == NODE_EXPORT_FORMAT.single && IS_SAVING)
doInspectorAction();
inputs[| 11].setVisible(anim == 1);
inputs[| 16].setVisible(anim == 0);
@ -830,10 +834,9 @@ function Node_Export(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
static update = function(frame = CURRENT_FRAME) { #region
var anim = getInputData(3);
var expo = getInputData(16);
if(anim == NODE_EXPORT_FORMAT.single) {
if(isInLoop() || expo) export(false);
if(isInLoop()) export(false);
return;
}

View file

@ -0,0 +1,108 @@
function Node_Grid_Pentagonal(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "Pentagonal Grid";
inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 1] = nodeValue("Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector)
.setUnitRef(function(index) { return getDimension(index); });
inputs[| 2] = nodeValue("Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 4, 4 ])
.setDisplay(VALUE_DISPLAY.vector)
.setMappable(11);
inputs[| 3] = nodeValue("Gap", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.1)
.setDisplay(VALUE_DISPLAY.slider, { range: [0, 0.5, 0.001] })
.setMappable(12);
inputs[| 4] = nodeValue("Angle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0)
.setDisplay(VALUE_DISPLAY.rotation)
.setMappable(13);
inputs[| 5] = nodeValue("Tile color", self, JUNCTION_CONNECT.input, VALUE_TYPE.gradient, new gradientObject(c_white) )
.setMappable(14);
inputs[| 6] = nodeValue("Gap color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_black);
inputs[| 7] = nodeValue("Texture", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone);
inputs[| 8] = nodeValue("Render type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_scroll, ["Colored tile", "Height map", "Texture grid"]);
inputs[| 9] = nodeValue("Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, irandom_range(10000, 99999));
inputs[| 10] = nodeValue("Anti aliasing", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
/////////////////////////////////////////////////////////////////////
inputs[| 11] = nodeValueMap("Scale map", self);
inputs[| 12] = nodeValueMap("Gap map", self);
inputs[| 13] = nodeValueMap("Angle map", self);
inputs[| 14] = nodeValueMap("Gradient map", self);
inputs[| 15] = nodeValueGradientRange("Gradient map range", self, inputs[| 5]);
/////////////////////////////////////////////////////////////////////
input_display_list = [
["Output", false], 0,
["Pattern", false], 1, 4, 13, 2, 11, 3, 12,
["Render", false], 8, 9, 5, 14, 6, 7, 10,
];
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
attribute_surface_depth();
static drawOverlay = function(hover, active, _x, _y, _s, _mx, _my, _snx, _sny) {
var a = inputs[| 1].drawOverlay(hover, active, _x, _y, _s, _mx, _my, _snx, _sny); active &= !a;
var a = inputs[| 15].drawOverlay(hover, active, _x, _y, _s, _mx, _my, _snx, _sny, getSingleValue(0)); active &= !a;
}
static step = function() { #region
inputs[| 2].mappableStep();
inputs[| 3].mappableStep();
inputs[| 4].mappableStep();
inputs[| 5].mappableStep();
} #endregion
static processData = function(_outSurf, _data, _output_index, _array_index) {
var _dim = _data[0];
var _pos = _data[1];
var _sam = _data[7];
var _mode = _data[8];
var _col_gap = _data[6];
inputs[| 5].setVisible(_mode == 0);
inputs[| 6].setVisible(_mode != 1);
inputs[| 7].setVisible(_mode == 2 || _mode == 3);
_outSurf = surface_verify(_outSurf, _dim[0], _dim[1], attrDepth());
surface_set_shader(_outSurf, sh_grid_pentagonal);
shader_set_f("position", _pos[0] / _dim[0], _pos[1] / _dim[1]);
shader_set_f("dimension", _dim[0], _dim[1]);
shader_set_f_map("scale", _data[ 2], _data[11], inputs[| 2]);
shader_set_f_map("width", _data[ 3], _data[12], inputs[| 3]);
shader_set_f_map("angle", _data[ 4], _data[13], inputs[| 4]);
shader_set_i("mode", _mode);
shader_set_f("seed", _data[ 9]);
shader_set_i("aa", _data[10]);
shader_set_color("gapCol", _col_gap);
shader_set_gradient(_data[5], _data[14], _data[15], inputs[| 5]);
if(is_surface(_sam)) draw_surface_stretched_safe(_sam, 0, 0, _dim[0], _dim[1]);
else draw_sprite_ext(s_fx_pixel, 0, 0, 0, _dim[0], _dim[1], 0, c_white, 1);
surface_reset_shader();
return _outSurf;
}
}

View file

@ -0,0 +1,13 @@
{
"$GMScript":"",
"%Name":"node_grid_pentagonal",
"isCompatibility":false,
"isDnD":false,
"name":"node_grid_pentagonal",
"parent":{
"name":"pattern",
"path":"folders/nodes/data/generator/pattern.yy",
},
"resourceType":"GMScript",
"resourceVersion":"2.0",
}

View file

@ -718,6 +718,7 @@ function __initNodes() {
addNodeObject(generator, "Grid", s_node_grid, "Node_Grid", [1, Node_Grid], ["tile"], "Generate grid pattern.");
addNodeObject(generator, "Triangular Grid", s_node_grid_tri, "Node_Grid_Tri", [1, Node_Grid_Tri],, "Generate triangular grid pattern.");
addNodeObject(generator, "Hexagonal Grid", s_node_grid_hex, "Node_Grid_Hex", [1, Node_Grid_Hex],, "Generate hexagonal grid pattern.");
addNodeObject(generator, "Pentagonal Grid", s_node_grid_pentagonal, "Node_Grid_Pentagonal", [1, Node_Grid_Pentagonal],, "Generate Pentagonal grid pattern.").patreonExtra();
addNodeObject(generator, "Pytagorean Tile", s_node_pytagorean_tile, "Node_Pytagorean_Tile", [1, Node_Pytagorean_Tile],, "Generate Pytagorean tile pattern.").patreonExtra();
addNodeObject(generator, "Herringbone Tile", s_node_herringbone_tile, "Node_Herringbone_Tile", [1, Node_Herringbone_Tile],, "Generate Herringbone tile pattern.").patreonExtra();
addNodeObject(generator, "Random Tile", s_node_random_tile, "Node_Random_Tile", [1, Node_Random_Tile],, "Generate Random tile pattern.").patreonExtra();

View file

@ -684,7 +684,7 @@ function Panel_Animation() : PanelContent() constructor {
if(timeline_scubbing) {
var rfrm = (mx - bar_x - timeline_shift) / timeline_scale - 1;
PROJECT.animator.setFrame(clamp(rfrm, 0, TOTAL_FRAMES - 1));
PROJECT.animator.setFrame(clamp(rfrm, 0, TOTAL_FRAMES - 1), !key_mod_press(ALT));
timeline_show_time = CURRENT_FRAME;
if(timeline_show_time != _scrub_frame) {

View file

@ -16,24 +16,27 @@ function Panel_Color() : PanelContent() constructor {
sat = 1;
val = 1;
alp = 1;
color = cola(c_black, 1);
drag_con = false;
drag_sel = false;
colors = [];
hex_tb = new textBox(TEXTBOX_INPUT.text, function(val) { setColor(colorFromHex(val)); })
alpha_slider = slider(0, 1, 0.01, function(val) { alp = val; setHSV(); })
show_alpha = true;
show_palette = false;
show_hex = true;
static setColor = function(color) {
self.color = color;
hue = color_get_hue(color) / 255;
sat = color_get_saturation(color) / 255;
val = color_get_value(color) / 255;
alp = color_get_alpha(color) / 255;
if(COLORS_GLOBAL_SET != noone)
COLORS_GLOBAL_SET(color);
CURRENT_COLOR = color;
}
static refreshHSV = function() {
hue = _color_get_hue(CURRENT_COLOR);
sat = _color_get_saturation(CURRENT_COLOR);
val = _color_get_value(CURRENT_COLOR);
alp = _color_get_alpha(CURRENT_COLOR);
}
static setHSV = function(h = hue, s = sat, v = val, a = alp) {
@ -42,12 +45,9 @@ function Panel_Color() : PanelContent() constructor {
val = v;
alp = a;
color = make_color_hsva(h * 255, s * 255, v * 255, a * 255);
CURRENT_COLOR = make_color_hsva(h * 255, s * 255, v * 255, a * 255);
if(COLORS_GLOBAL_SET != noone)
COLORS_GLOBAL_SET(color);
}
setHSV();
} setHSV();
function drawContent(panel) {
draw_clear_alpha(COLORS.panel_bg_clear, 0);
@ -59,17 +59,83 @@ function Panel_Color() : PanelContent() constructor {
draw_sprite_stretched(THEME.ui_panel_bg, 1, px - ui(8), py - ui(8), pw + ui(16), ph + ui(16));
if(COLORS_GLOBAL_GET != noone) {
var c = COLORS_GLOBAL_GET();
if(c != color) setColor(c);
var _y1 = h - ui(padding);
if(show_palette) {
var amo = min(array_length(colors) + 1, floor((w - ui(padding * 2)) / ui(24 + 4)));
var cy = _y1 - ui(24);
for( var i = 0; i < amo; i++ ) {
var cx = ui(padding) + ui(24 + 4) * i;
if(i == 0) {
draw_sprite_stretched_ext(s_ui_base_white, 0, cx + ui(4), cy + ui(4), ui(16), ui(16), CURRENT_COLOR, _color_get_alpha(CURRENT_COLOR));
draw_sprite_stretched_ext(THEME.ui_panel_active, 0, cx, cy, ui(24), ui(24), c_white, 0.5);
if(pHOVER && point_in_rectangle(mx, my, cx, cy, cx + ui(24), cy + ui(24))) {
draw_sprite_stretched_ext(THEME.ui_panel_active, 0, cx, cy, ui(24), ui(24), c_white, 1);
if(mouse_press(mb_left, pFOCUS)) {
array_insert(colors, 0, CURRENT_COLOR);
DRAGGING = {
type: "Color",
data: CURRENT_COLOR
}
MESSAGE = DRAGGING;
}
}
continue;
}
var c = colors[i - 1];
draw_sprite_stretched_ext(s_ui_base_white, 0, cx, cy, ui(24), ui(24), c, 1);
if(mouse_press(mb_left, pFOCUS) && point_in_rectangle(mx, my, cx, cy, cx + ui(24), cy + ui(24))) {
DRAGGING = {
type: "Color",
data: c
}
MESSAGE = DRAGGING;
}
}
_y1 = cy - ui(8);
}
var alp_h = ui(20);
if(show_hex) {
var alp_w = w - ui(padding * 2);
var alp_h = ui(20);
var alp_x = ui(padding);
var alp_y = _y1 - alp_h;
hex_tb.setFocusHover(pFOCUS, pHOVER);
hex_tb.setFont(f_p2);
hex_tb.align = fa_center;
hex_tb.draw(alp_x, alp_y, alp_w, alp_h, color_get_hex(CURRENT_COLOR, show_alpha), [ mx, my ]);
_y1 = alp_y - ui(8);
}
if(show_alpha) {
var alp_w = w - ui(padding * 2);
var alp_h = ui(20);
var alp_x = ui(padding);
var alp_y = _y1 - alp_h;
alpha_slider.setFocusHover(pFOCUS, pHOVER);
alpha_slider.setFont(f_p1);
alpha_slider.draw(alp_x, alp_y, alp_w, alp_h, alp, [ mx, my ]);
_y1 = alp_y - ui(8);
}
var cont_x = ui(padding);
var cont_y = ui(padding);
var cont_w = w - ui(padding + padding) - ui(16 + 8);
var cont_h = h - ui(padding + padding) - ui(24 + 8 + 8) - alp_h;
var cont_h = _y1 - cont_y;
shader_set(sh_color_select_content);
shader_set_i("mode", mode);
@ -88,14 +154,6 @@ function Panel_Color() : PanelContent() constructor {
draw_sprite_stretched(s_fx_pixel, 0, sel_x, sel_y, sel_w, sel_h);
shader_reset();
var alp_x = ui(padding);
var alp_y = cont_y + cont_h + ui(8);
var alp_w = w - ui(padding * 2);
alpha_slider.setFocusHover(pFOCUS, pHOVER);
alpha_slider.setFont(f_p1);
alpha_slider.draw(alp_x, alp_y, alp_w, alp_h, alp, [ mx, my ]);
if(drag_con) {
if(mode == 0) {
sat = clamp((mx - cont_x) / cont_w, 0, 1);
@ -136,56 +194,14 @@ function Panel_Color() : PanelContent() constructor {
var cx = cont_x + sat * cont_w - ui(6);
var cy = cont_y + (1 - val) * cont_h - ui(6);
draw_sprite_stretched_ext(s_ui_base_white, 0, sel_x - ui(3), hy - ui(6), ui(16 + 6), ui(10), make_color_hsv(hue * 255, 255, 255), 1);
draw_sprite_stretched_ext(s_ui_base_white, 0, cx, cy, ui(12), ui(12), color, 1);
draw_sprite_stretched_ext(s_ui_base_white, 0, cx, cy, ui(12), ui(12), CURRENT_COLOR, 1);
} else if(mode == 1) {
var vy = sel_y + (1 - val) * sel_h;
var cx = cont_x + hue * cont_w - ui(6);
var cy = cont_y + (1 - sat) * cont_h - ui(6);
draw_sprite_stretched_ext(s_ui_base_white, 0, sel_x - ui(3), vy - ui(6), ui(16 + 6), ui(10), make_color_hsv(hue * 255, 255, val * 255), 1);
draw_sprite_stretched_ext(s_ui_base_white, 0, cx, cy, ui(12), ui(12), color, 1);
}
var amo = min(array_length(colors) + 1, floor((w - ui(padding * 2)) / ui(24 + 4)));
for( var i = 0; i < amo; i++ ) {
var cx = ui(padding) + ui(24 + 4) * i;
var cy = h - ui(8 + 24);
if(i == 0) {
draw_sprite_stretched_ext(s_ui_base_white, 0, cx + ui(4), cy + ui(4), ui(16), ui(16), color, color_get_alpha(color) / 255);
draw_sprite_stretched_ext(THEME.ui_panel_active, 0, cx, cy, ui(24), ui(24), c_white, 0.5);
if(pHOVER && point_in_rectangle(mx, my, cx, cy, cx + ui(24), cy + ui(24))) {
draw_sprite_stretched_ext(THEME.ui_panel_active, 0, cx, cy, ui(24), ui(24), c_white, 1);
if(mouse_press(mb_left, pFOCUS)) {
array_insert(colors, 0, color);
if(COLORS_GLOBAL_SET != noone) {
COLORS_GLOBAL_SET(color);
} else {
DRAGGING = {
type: "Color",
data: color
}
MESSAGE = DRAGGING;
}
}
}
continue;
}
var c = colors[i - 1];
draw_sprite_stretched_ext(s_ui_base_white, 0, cx, cy, ui(24), ui(24), c, 1);
if(mouse_press(mb_left, pFOCUS) && point_in_rectangle(mx, my, cx, cy, cx + ui(24), cy + ui(24))) {
DRAGGING = {
type: "Color",
data: c
}
MESSAGE = DRAGGING;
}
draw_sprite_stretched_ext(s_ui_base_white, 0, cx, cy, ui(12), ui(12), CURRENT_COLOR, 1);
}
if(DRAGGING && DRAGGING.type == "Color" && pHOVER) {
@ -193,5 +209,15 @@ function Panel_Color() : PanelContent() constructor {
if(mouse_release(mb_left))
setColor(DRAGGING.data);
}
if(mouse_press(mb_right, pFOCUS)) {
menuCall("color_window_menu",,, [
menuItem(__txt("Toggle Alpha"), function() { show_alpha = !show_alpha; }, noone, noone, function() /*=>*/ {return show_alpha} ),
menuItem(__txt("Toggle Palette"), function() { show_palette = !show_palette; }, noone, noone, function() /*=>*/ {return show_palette} ),
menuItem(__txt("Toggle Hex"), function() { show_hex = !show_hex; }, noone, noone, function() /*=>*/ {return show_hex} ),
]);
}
refreshHSV();
}
}

View file

@ -25,7 +25,7 @@ function Panel_Palette() : PanelContent() constructor {
}
var _height;
var yy = _y;
var cur = COLORS_GLOBAL_GET != noone? COLORS_GLOBAL_GET() : noone;
var cur = CURRENT_COLOR;
for(var i = 0; i < array_length(PALETTES); i++) {
var preset = PALETTES[i];
@ -56,16 +56,13 @@ function Panel_Palette() : PanelContent() constructor {
var _index = m_gy * col + m_gx;
if(_index < pre_amo && _index >= 0) {
if(COLORS_GLOBAL_SET != noone) {
COLORS_GLOBAL_SET(array_safe_get_fast(preset.palette, _index));
CURRENT_COLOR = array_safe_get_fast(preset.palette, _index);
} else {
DRAGGING = {
type: "Color",
data: array_safe_get_fast(preset.palette, _index)
}
MESSAGE = DRAGGING;
DRAGGING = {
type: "Color",
data: array_safe_get_fast(preset.palette, _index)
}
MESSAGE = DRAGGING;
}
} else if(point_in_rectangle(_m[0], _m[1], ui(10), yy, ww - ui(10), yy + ui(24))) {
DRAGGING = {

View file

@ -473,7 +473,7 @@ function Panel_Preview() : PanelContent() constructor {
else if(canvas_s > 1) inc = 0.25;
if(mouse_wheel_down() && !key_mod_press_any()) canvas_s = max(round(canvas_s / inc) * inc - inc, 0.10);
if(mouse_wheel_up() && !key_mod_press_any()) canvas_s = min(round(canvas_s / inc) * inc + inc, 64);
if(mouse_wheel_up() && !key_mod_press_any()) canvas_s = min(round(canvas_s / inc) * inc + inc, 1024);
if(_canvas_s != canvas_s) {
var dx = (canvas_s - _canvas_s) * ((mx - canvas_x) / _canvas_s);
@ -1238,8 +1238,6 @@ function Panel_Preview() : PanelContent() constructor {
overlayHover &= !key_mod_press(CTRL);
var params = { w, h, toolbar_height };
reset_global_getset();
if(_node.is_3D) {
if(key_mod_press(CTRL) || d3_tool_snap) {
_snx = d3_tool_snap_position;
@ -1748,14 +1746,14 @@ function Panel_Preview() : PanelContent() constructor {
if(mouse_on_preview && mouse_press(mb_right, pFOCUS) && !key_mod_press(SHIFT)) {
menuCall("preview_context_menu",,, [
menuItem(__txtx("panel_graph_preview_window", "Send to preview window"), function() { create_preview_window(getNodePreview()); }, noone, ["Preview", "Preview window"]),
menuItem(__txtx("panel_graph_preview_window", "Send to preview window"), function() { create_preview_window(getNodePreview()); }, noone, ["Preview", "Preview window"]),
-1,
menuItem(__txtx("panel_preview_save", "Save current preview as") + "...", function() { saveCurrentFrame(); }),
menuItem(__txtx("panel_preview_save_all", "Save all current previews as") + "...", function() { saveAllCurrentFrames(); }),
menuItem(__txtx("panel_preview_save", "Save current preview as") + "...", function() { saveCurrentFrame(); }, noone, ["Preview", "Save current frame"]),
menuItem(__txtx("panel_preview_save_all", "Save all current previews as") + "...", function() { saveAllCurrentFrames(); }, noone, ["Preview", "Save all current frame"]),
-1,
menuItem(__txtx("panel_preview_copy_image", "Copy image"), function() { copyCurrentFrame(); }, THEME.copy),
menuItem(__txtx("panel_preview_copy_color", "Copy color") + " [" + string(sample_color) + "]", function() { clipboard_set_text(sample_color); }),
menuItem(__txtx("panel_preview_copy_hex", "Copy hex") + " [" + string(color_get_hex(sample_color)) + "]", function() { clipboard_set_text(color_get_hex(sample_color)); }),
menuItem($"{__txtx("panel_preview_copy_image", "Copy image")}", function() { copyCurrentFrame(); }, THEME.copy),
menuItem($"{__txtx("panel_preview_copy_color", "Copy color")} [{sample_color}]", function() { clipboard_set_text(sample_color); }),
menuItem($"{__txtx("panel_preview_copy_hex", "Copy hex")} [{color_get_hex(sample_color)}]", function() { clipboard_set_text(color_get_hex(sample_color)); }),
],, getNodePreview());
}

View file

@ -1,5 +1,6 @@
globalvar SAVING;
SAVING = false;
globalvar SAVING, IS_SAVING;
SAVING = false;
IS_SAVING = false;
function NEW() { #region
CALL("new");
@ -114,7 +115,8 @@ function SAVE_AT(project = PROJECT, path = "", log = "save at ") { #region
if(DEMO) return false;
SAVING = true;
IS_SAVING = true;
SAVING = true;
//if(TESTING && string_char_at(filename_name(path), 1) != "[")
// path = $"{filename_dir(path)}/[{VERSION_STRING}] {filename_name(path)}";

View file

@ -32,14 +32,14 @@ function number_to_hex(val) {
return ss;
}
function color_get_hex(color) {
function color_get_hex(color, alpha = true) {
var arr = is_array(color) && array_length(color) == 4;
var r = arr? round(color[0] * 256) : color_get_red(color);
var g = arr? round(color[1] * 256) : color_get_green(color);
var b = arr? round(color[2] * 256) : color_get_blue(color);
var a = arr? round(color[3] * 256) : color_get_alpha(color);
return number_to_hex(r) + number_to_hex(g) + number_to_hex(b) + (is_int64(color)? number_to_hex(a) : "");
return number_to_hex(r) + number_to_hex(g) + number_to_hex(b) + (alpha && is_int64(color)? number_to_hex(a) : "");
}
function color_from_rgb(str) {

View file

@ -4,7 +4,7 @@
"name":"sh_ani_noise",
"parent":{
"name":"noise",
"path":"folders/nodes/data/generator/noise.yy",
"path":"folders/shader/generator/noise.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_blink_expand",
"parent":{
"name":"blinker",
"path":"folders/nodes/data/generator/blinker.yy",
"path":"folders/shader/generator/blinker.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_blink_extract",
"parent":{
"name":"blinker",
"path":"folders/nodes/data/generator/blinker.yy",
"path":"folders/shader/generator/blinker.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_blink_replace",
"parent":{
"name":"blinker",
"path":"folders/nodes/data/generator/blinker.yy",
"path":"folders/shader/generator/blinker.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_cell_noise",
"parent":{
"name":"cell",
"path":"folders/nodes/data/generator/cell.yy",
"path":"folders/shader/generator/cell.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_cell_noise_crystal",
"parent":{
"name":"cell",
"path":"folders/nodes/data/generator/cell.yy",
"path":"folders/shader/generator/cell.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_cell_noise_edge",
"parent":{
"name":"cell",
"path":"folders/nodes/data/generator/cell.yy",
"path":"folders/shader/generator/cell.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_cell_noise_random",
"parent":{
"name":"cell",
"path":"folders/nodes/data/generator/cell.yy",
"path":"folders/shader/generator/cell.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_cell_noise_round",
"parent":{
"name":"cell",
"path":"folders/nodes/data/generator/cell.yy",
"path":"folders/shader/generator/cell.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -233,6 +233,7 @@ void main() { #region
if(mode == 0) {
colr = gradientEval(random(sqSt));
} else if(mode == 2) {
vec2 uv = fract(_pos * sca);
@ -248,6 +249,7 @@ void main() { #region
}
colr = texture2D( gm_BaseTexture, uv );
} else if(mode == 3) {
vec2 uv = fract(sqSt);
colr = texture2D( gm_BaseTexture, uv );

View file

@ -4,7 +4,7 @@
"name":"sh_grid",
"parent":{
"name":"grid",
"path":"folders/nodes/data/generator/grid.yy",
"path":"folders/shader/generator/grid.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_grid_hex",
"parent":{
"name":"grid",
"path":"folders/nodes/data/generator/grid.yy",
"path":"folders/shader/generator/grid.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_grid_noise",
"parent":{
"name":"grid",
"path":"folders/nodes/data/generator/grid.yy",
"path":"folders/shader/generator/grid.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -0,0 +1,292 @@
//
// Simple passthrough fragment shader
//
varying vec2 v_vTexcoord;
varying vec4 v_vColour;
//sqrt of 3
#define r3 1.73205080757
uniform vec2 position;
uniform vec2 dimension;
uniform float seed;
uniform int mode;
uniform int aa;
uniform vec2 scale;
uniform int scaleUseSurf;
uniform sampler2D scaleSurf;
uniform vec2 angle;
uniform int angleUseSurf;
uniform sampler2D angleSurf;
uniform vec2 width;
uniform int widthUseSurf;
uniform sampler2D widthSurf;
uniform vec4 gapCol;
uniform int gradient_use;
float random (in vec2 st) { return fract(sin(dot(st.xy + vec2(85.456034, 64.54065), vec2(12.9898, 78.233))) * (43758.5453123 + seed) ); }
#region //////////////////////////////////// GRADIENT ////////////////////////////////////
#define GRADIENT_LIMIT 128
uniform int gradient_blend;
uniform vec4 gradient_color[GRADIENT_LIMIT];
uniform float gradient_time[GRADIENT_LIMIT];
uniform int gradient_keys;
uniform int gradient_use_map;
uniform vec4 gradient_map_range;
uniform sampler2D gradient_map;
vec3 linearToGamma(vec3 c) { return pow(c, vec3( 2.2)); }
vec3 gammaToLinear(vec3 c) { return pow(c, vec3(1. / 2.2)); }
vec3 rgbMix(vec3 c1, vec3 c2, float t) { #region
vec3 k1 = linearToGamma(c1);
vec3 k2 = linearToGamma(c2);
return gammaToLinear(mix(k1, k2, t));
} #endregion
vec3 rgb2oklab(vec3 c) { #region
const mat3 kCONEtoLMS = mat3(
0.4121656120, 0.2118591070, 0.0883097947,
0.5362752080, 0.6807189584, 0.2818474174,
0.0514575653, 0.1074065790, 0.6302613616);
c = pow(c, vec3(2.2));
c = pow( kCONEtoLMS * c, vec3(1.0 / 3.0) );
return c;
} #endregion
vec3 oklab2rgb(vec3 c) { #region
const mat3 kLMStoCONE = mat3(
4.0767245293, -1.2681437731, -0.0041119885,
-3.3072168827, 2.6093323231, -0.7034763098,
0.2307590544, -0.3411344290, 1.7068625689);
c = kLMStoCONE * (c * c * c);
c = pow(c, vec3(1. / 2.2));
return c;
} #endregion
vec3 oklabMax(vec3 c1, vec3 c2, float t) { #region
vec3 k1 = rgb2oklab(c1);
vec3 k2 = rgb2oklab(c2);
return oklab2rgb(mix(k1, k2, t));
} #endregion
vec3 rgb2hsv(vec3 c) { #region
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
float d = q.x - min(q.w, q.y);
float e = 0.0000000001;
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
} #endregion
vec3 hsv2rgb(vec3 c) { #region
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
} #endregion
float hueDist(float a0, float a1, float t) { #region
float da = fract(a1 - a0);
float ds = fract(2. * da) - da;
return a0 + ds * t;
} #endregion
vec3 hsvMix(vec3 c1, vec3 c2, float t) { #region
vec3 h1 = rgb2hsv(c1);
vec3 h2 = rgb2hsv(c2);
vec3 h = vec3(0.);
h.x = h.x + hueDist(h1.x, h2.x, t);
h.y = mix(h1.y, h2.y, t);
h.z = mix(h1.z, h2.z, t);
return hsv2rgb(h);
} #endregion
vec4 gradientEval(in float prog) { #region
if(gradient_use_map == 1) {
vec2 samplePos = mix(gradient_map_range.xy, gradient_map_range.zw, prog);
return texture2D( gradient_map, samplePos );
}
vec4 col = vec4(0.);
for(int i = 0; i < GRADIENT_LIMIT; i++) {
if(gradient_time[i] == prog) {
col = gradient_color[i];
break;
} else if(gradient_time[i] > prog) {
if(i == 0)
col = gradient_color[i];
else {
float t = (prog - gradient_time[i - 1]) / (gradient_time[i] - gradient_time[i - 1]);
vec3 c0 = gradient_color[i - 1].rgb;
vec3 c1 = gradient_color[i].rgb;
float a = mix(gradient_color[i - 1].a, gradient_color[i].a, t);
if(gradient_blend == 0)
col = vec4(mix(c0, c1, t), a);
else if(gradient_blend == 1)
col = gradient_color[i - 1];
else if(gradient_blend == 2)
col = vec4(hsvMix(c0, c1, t), a);
else if(gradient_blend == 3)
col = vec4(oklabMax(c0, c1, t), a);
else if(gradient_blend == 4)
col = vec4(rgbMix(c0, c1, t), a);
}
break;
}
if(i >= gradient_keys - 1) {
col = gradient_color[gradient_keys - 1];
break;
}
}
return col;
} #endregion
#endregion //////////////////////////////////// GRADIENT ////////////////////////////////////
float sdLine(vec2 a, vec2 b, float r, vec2 p){
vec2 ab = b - a;
float t = dot(p - a, ab) / dot(ab, ab);
vec2 p2 = a + clamp(t, 0.0, 1.0) * ab;
return length(p - p2) - r;
}
//draws the lines between the pentagons
float pentagrid(vec2 uv) {
vec2 cuv = floor(uv / r3);
uv = fract(uv / r3) * r3;
float d = 9999999.;
//checkerboard pattern where alternate cells are transposed
if (mod(cuv.x, 2.0) == mod(cuv.y, 2.0)){
d = min(d, sdLine(vec2(r3 / 2.0 - 0.5, 0.), vec2(r3 / 2.0 + 0.5, r3), 0.01, uv));
d = min(d, sdLine(vec2(0., r3 / 2.0 + 0.5), vec2(r3, r3 / 2.0 - 0.5), 0.01, uv));
d = min(d, sdLine(vec2(0., 0.), vec2(r3 / 2.0 - 0.5, 0.), 0.01, uv));
d = min(d, sdLine(vec2(r3, r3), vec2(r3 / 2.0 + 0.5, r3), 0.01, uv));
d = min(d, sdLine(vec2(0., r3), vec2(0., r3 / 2.0 + 0.5), 0.01, uv));
d = min(d, sdLine(vec2(r3, 0.), vec2(r3, r3 / 2.0 - 0.5), 0.01, uv));
} else {
d = min(d, sdLine(vec2(0., r3 / 2.0 - 0.5),vec2(r3, r3 / 2.0 + 0.5), 0.01, uv));
d = min(d, sdLine(vec2(r3 / 2.0 + 0.5, 0.),vec2(r3 / 2.0 - 0.5, r3), 0.01, uv));
d = min(d, sdLine(vec2(0., 0.),vec2(0., r3 / 2.0 - 0.5), 0.01, uv));
d = min(d, sdLine(vec2(r3, r3),vec2(r3, r3 / 2.0 + 0.5), 0.01, uv));
d = min(d, sdLine(vec2(r3, 0.),vec2(r3 / 2.0 + 0.5, 0.), 0.01, uv));
d = min(d, sdLine(vec2(0., r3),vec2(r3 / 2.0 - 0.5, r3), 0.01, uv));
}
return d;
}
//returns the incenter of the pentagon a point is in
vec2 pentacoords(vec2 uv){
vec2 cuv = floor(uv / r3);
uv = fract(uv / r3) * r3;
//checkerboard pattern where alternate cells are transposed
if (mod(cuv.x, 2.0) == mod(cuv.y, 2.0)){
vec2 ruv = mat2(-r3, -1., 1., -r3) * (uv - r3 / 2.0) * 0.25; //change of basis to "windmill" basis
cuv *= r3;
if (ruv.x < 0.0 && ruv.y < 0.0){
return cuv + vec2(r3, (3.0 * r3 - 3.0) / 2.0); //right
} else if (ruv.x > 0.0 && ruv.y < 0.0){
return cuv + vec2((3.0 - r3) / 2.0, r3); //up
} else if (ruv.x < 0.0 && ruv.y > 0.0){
return cuv + vec2((3.0 * r3 - 3.0) / 2.0, 0.); //down
} else {
return cuv + vec2(0., (3.0 - r3) / 2.0); //left
}
} else {
cuv *= r3;
vec2 ruv = mat2(r3, 1., 1., -r3) * (uv - r3 / 2.0) * 0.25; //change of basis to "anti-windmill" basis
if (ruv.x < 0.0 && ruv.y < 0.0) {
return cuv + vec2(r3, (3.0 * r3 - 3.0) / 2.0) - vec2(r3, 0.); //up
} else if (ruv.x > 0.0 && ruv.y < 0.0) {
return cuv + vec2((3.0 * r3 - 3.0) / 2.0, 0.) + vec2(0., r3); //left
} else if (ruv.x < 0.0 && ruv.y > 0.0) {
return cuv + vec2((3.0 - r3) / 2.0, r3) - vec2(0. , r3); //right
} else {
return cuv + vec2(0., (3.0 - r3) / 2.0) + vec2(r3, 0); //down
}
}
}
void main() {
#region params
vec2 sca = scale;
if(scaleUseSurf == 1) {
vec4 _vMap = texture2D( scaleSurf, v_vTexcoord );
sca = vec2(mix(scale.x, scale.y, (_vMap.r + _vMap.g + _vMap.b) / 3.));
}
float ang = angle.x;
if(angleUseSurf == 1) {
vec4 _vMap = texture2D( angleSurf, v_vTexcoord );
ang = mix(angle.x, angle.y, (_vMap.r + _vMap.g + _vMap.b) / 3.);
}
ang = radians(ang);
float wid = width.x;
if(widthUseSurf == 1) {
vec4 _vMap = texture2D( widthSurf, v_vTexcoord );
wid = mix(width.x, width.y, (_vMap.r + _vMap.g + _vMap.b) / 3.);
}
wid -= 0.05;
#endregion
vec2 pos = (v_vTexcoord - position) * sca;
float ratio = dimension.x / dimension.y;
vec2 _pos;
_pos.x = pos.x * ratio * cos(ang) - pos.y * sin(ang);
_pos.y = pos.x * ratio * sin(ang) + pos.y * cos(ang);
vec2 coord = pentacoords(_pos);
float dist = pentagrid(_pos);
vec4 colr;
if(mode == 0) {
colr = gradientEval(random(coord));
} else if(mode == 1) {
colr = vec4(vec3(dist), 1.);
} else if(mode == 2) {
vec2 uv = fract(coord / sca);
colr = texture2D( gm_BaseTexture, uv );
}
float _aa = 4. / max(dimension.x, dimension.y);
gl_FragColor = mix(gapCol, colr, aa == 1? smoothstep(wid - _aa, wid, dist) : step(wid, dist));
}

View file

@ -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;
}

View file

@ -0,0 +1,12 @@
{
"$GMShader":"",
"%Name":"sh_grid_pentagonal",
"name":"sh_grid_pentagonal",
"parent":{
"name":"grid",
"path":"folders/shader/generator/grid.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",
"type":1,
}

View file

@ -4,7 +4,7 @@
"name":"sh_grid_tri",
"parent":{
"name":"grid",
"path":"folders/nodes/data/generator/grid.yy",
"path":"folders/shader/generator/grid.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_herringbone_tile",
"parent":{
"name":"grid",
"path":"folders/nodes/data/generator/grid.yy",
"path":"folders/shader/generator/grid.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_interpret_number",
"parent":{
"name":"interpret",
"path":"folders/nodes/data/generator/interpret.yy",
"path":"folders/shader/generator/interpret.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_noise",
"parent":{
"name":"noise",
"path":"folders/nodes/data/generator/noise.yy",
"path":"folders/shader/generator/noise.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_noise_bubble",
"parent":{
"name":"noise",
"path":"folders/nodes/data/generator/noise.yy",
"path":"folders/shader/generator/noise.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_noise_fbm",
"parent":{
"name":"noise",
"path":"folders/nodes/data/generator/noise.yy",
"path":"folders/shader/generator/noise.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_noise_flow",
"parent":{
"name":"noise",
"path":"folders/nodes/data/generator/noise.yy",
"path":"folders/shader/generator/noise.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_noise_fold",
"parent":{
"name":"noise",
"path":"folders/nodes/data/generator/noise.yy",
"path":"folders/shader/generator/noise.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_noise_gabor",
"parent":{
"name":"noise",
"path":"folders/nodes/data/generator/noise.yy",
"path":"folders/shader/generator/noise.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_noise_grid_hex",
"parent":{
"name":"noise",
"path":"folders/nodes/data/generator/noise.yy",
"path":"folders/shader/generator/noise.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_noise_grid_tri",
"parent":{
"name":"noise",
"path":"folders/nodes/data/generator/noise.yy",
"path":"folders/shader/generator/noise.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_noise_shard",
"parent":{
"name":"noise",
"path":"folders/nodes/data/generator/noise.yy",
"path":"folders/shader/generator/noise.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_noise_strand",
"parent":{
"name":"noise",
"path":"folders/nodes/data/generator/noise.yy",
"path":"folders/shader/generator/noise.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_noise_wavelet",
"parent":{
"name":"noise",
"path":"folders/nodes/data/generator/noise.yy",
"path":"folders/shader/generator/noise.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_perlin",
"parent":{
"name":"noise",
"path":"folders/nodes/data/generator/noise.yy",
"path":"folders/shader/generator/noise.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_perlin_extra",
"parent":{
"name":"noise",
"path":"folders/nodes/data/generator/noise.yy",
"path":"folders/shader/generator/noise.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_perlin_smear",
"parent":{
"name":"noise",
"path":"folders/nodes/data/generator/noise.yy",
"path":"folders/shader/generator/noise.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_perlin_tiled",
"parent":{
"name":"noise",
"path":"folders/nodes/data/generator/noise.yy",
"path":"folders/shader/generator/noise.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_pytagorean_tile",
"parent":{
"name":"grid",
"path":"folders/nodes/data/generator/grid.yy",
"path":"folders/shader/generator/grid.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_random_tile",
"parent":{
"name":"grid",
"path":"folders/nodes/data/generator/grid.yy",
"path":"folders/shader/generator/grid.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_rd_add",
"parent":{
"name":"reaction_diffusion",
"path":"folders/nodes/data/generator/reaction_diffusion.yy",
"path":"folders/shader/generator/reaction_diffusion.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_rd_convert",
"parent":{
"name":"reaction_diffusion",
"path":"folders/nodes/data/generator/reaction_diffusion.yy",
"path":"folders/shader/generator/reaction_diffusion.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_rd_propagate",
"parent":{
"name":"reaction_diffusion",
"path":"folders/nodes/data/generator/reaction_diffusion.yy",
"path":"folders/shader/generator/reaction_diffusion.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_rd_render",
"parent":{
"name":"reaction_diffusion",
"path":"folders/nodes/data/generator/reaction_diffusion.yy",
"path":"folders/shader/generator/reaction_diffusion.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_region_fill_border",
"parent":{
"name":"region",
"path":"folders/nodes/data/generator/region.yy",
"path":"folders/shader/generator/region.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_region_fill_color",
"parent":{
"name":"region",
"path":"folders/nodes/data/generator/region.yy",
"path":"folders/shader/generator/region.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_region_fill_coordinate",
"parent":{
"name":"region",
"path":"folders/nodes/data/generator/region.yy",
"path":"folders/shader/generator/region.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_region_fill_coordinate_init",
"parent":{
"name":"region",
"path":"folders/nodes/data/generator/region.yy",
"path":"folders/shader/generator/region.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_region_fill_init",
"parent":{
"name":"region",
"path":"folders/nodes/data/generator/region.yy",
"path":"folders/shader/generator/region.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_region_fill_inner",
"parent":{
"name":"region",
"path":"folders/nodes/data/generator/region.yy",
"path":"folders/shader/generator/region.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_region_fill_inner_remove",
"parent":{
"name":"region",
"path":"folders/nodes/data/generator/region.yy",
"path":"folders/shader/generator/region.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_region_fill_map",
"parent":{
"name":"region",
"path":"folders/nodes/data/generator/region.yy",
"path":"folders/shader/generator/region.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_region_fill_rg_map",
"parent":{
"name":"region",
"path":"folders/nodes/data/generator/region.yy",
"path":"folders/shader/generator/region.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_rsh_corner",
"parent":{
"name":"random_shape",
"path":"folders/nodes/data/generator/random_shape.yy",
"path":"folders/shader/generator/random_shape.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_rsh_erode",
"parent":{
"name":"random_shape",
"path":"folders/nodes/data/generator/random_shape.yy",
"path":"folders/shader/generator/random_shape.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_rsh_rotate",
"parent":{
"name":"random_shape",
"path":"folders/nodes/data/generator/random_shape.yy",
"path":"folders/shader/generator/random_shape.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_simplex",
"parent":{
"name":"noise",
"path":"folders/nodes/data/generator/noise.yy",
"path":"folders/shader/generator/noise.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_vector_diverge",
"parent":{
"name":"vector_mapper",
"path":"folders/nodes/data/generator/vector_mapper.yy",
"path":"folders/shader/generator/vector_mapper.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

View file

@ -4,7 +4,7 @@
"name":"sh_voronoi_extra",
"parent":{
"name":"noise",
"path":"folders/nodes/data/generator/noise.yy",
"path":"folders/shader/generator/noise.yy",
},
"resourceType":"GMShader",
"resourceVersion":"2.0",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 516 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 724 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 724 B

View file

@ -12,14 +12,14 @@
"edgeFiltering":false,
"For3D":false,
"frames":[
{"$GMSpriteFrame":"","%Name":"49f5c7e4-1156-4061-aa23-b557d98d6e67","name":"49f5c7e4-1156-4061-aa23-b557d98d6e67","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"62dce31a-20de-4f4f-bab8-11c6138d55b2","name":"62dce31a-20de-4f4f-bab8-11c6138d55b2","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
],
"gridX":0,
"gridY":0,
"height":64,
"HTile":false,
"layers":[
{"$GMImageLayer":"","%Name":"fd8dfa77-f51c-4a07-939b-6037fd88d1bd","blendMode":0,"displayName":"default","isLocked":false,"name":"fd8dfa77-f51c-4a07-939b-6037fd88d1bd","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
{"$GMImageLayer":"","%Name":"a28bb1b2-ff38-4808-a846-99c95452b3db","blendMode":0,"displayName":"default","isLocked":false,"name":"a28bb1b2-ff38-4808-a846-99c95452b3db","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
],
"name":"s_node_grid",
"nineSlice":null,
@ -69,14 +69,11 @@
"tracks":[
{"$GMSpriteFramesTrack":"","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"$KeyframeStore<SpriteFrameKeyframe>":"","Keyframes":[
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"49f5c7e4-1156-4061-aa23-b557d98d6e67","path":"sprites/s_node_grid/s_node_grid.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"8714f537-ba6e-494d-b3d2-3426182edcf1","IsCreationKey":false,"Key":0.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"62dce31a-20de-4f4f-bab8-11c6138d55b2","path":"sprites/s_node_grid/s_node_grid.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"b1d63183-8ee1-4ba2-9520-42796dbc14e2","IsCreationKey":false,"Key":0.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
],"resourceType":"KeyframeStore<SpriteFrameKeyframe>","resourceVersion":"2.0",},"modifiers":[],"name":"frames","resourceType":"GMSpriteFramesTrack","resourceVersion":"2.0","spriteId":null,"trackColour":0,"tracks":[],"traits":0,},
],
"visibleRange":{
"x":0.0,
"y":0.0,
},
"visibleRange":null,
"volume":1.0,
"xorigin":32,
"yorigin":32,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View file

@ -12,14 +12,14 @@
"edgeFiltering":false,
"For3D":false,
"frames":[
{"$GMSpriteFrame":"","%Name":"300b1c8d-d912-46d0-998f-359d85723ca8","name":"300b1c8d-d912-46d0-998f-359d85723ca8","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"a23d6afa-5a14-43c0-a0bd-a26ced41a18b","name":"a23d6afa-5a14-43c0-a0bd-a26ced41a18b","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
],
"gridX":0,
"gridY":0,
"height":64,
"HTile":false,
"layers":[
{"$GMImageLayer":"","%Name":"c05c1de6-236e-42e9-9a4d-6d6186df411d","blendMode":0,"displayName":"default","isLocked":false,"name":"c05c1de6-236e-42e9-9a4d-6d6186df411d","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
{"$GMImageLayer":"","%Name":"209f7290-19e5-4555-8ca8-271212cd1efb","blendMode":0,"displayName":"default","isLocked":false,"name":"209f7290-19e5-4555-8ca8-271212cd1efb","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
],
"name":"s_node_grid_hex",
"nineSlice":null,
@ -69,8 +69,8 @@
"tracks":[
{"$GMSpriteFramesTrack":"","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"$KeyframeStore<SpriteFrameKeyframe>":"","Keyframes":[
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"300b1c8d-d912-46d0-998f-359d85723ca8","path":"sprites/s_node_grid_hex/s_node_grid_hex.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"16abb3e9-7767-4bd8-9ae0-89d2f9928909","IsCreationKey":false,"Key":0.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"a23d6afa-5a14-43c0-a0bd-a26ced41a18b","path":"sprites/s_node_grid_hex/s_node_grid_hex.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"8fd55302-50ac-4215-a12d-4da3ee95b5e5","IsCreationKey":false,"Key":0.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
],"resourceType":"KeyframeStore<SpriteFrameKeyframe>","resourceVersion":"2.0",},"modifiers":[],"name":"frames","resourceType":"GMSpriteFramesTrack","resourceVersion":"2.0","spriteId":null,"trackColour":0,"tracks":[],"traits":0,},
],
"visibleRange":null,

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

View file

@ -12,14 +12,14 @@
"edgeFiltering":false,
"For3D":false,
"frames":[
{"$GMSpriteFrame":"","%Name":"d667ddb0-a6c7-4893-b4fc-993bc01299cb","name":"d667ddb0-a6c7-4893-b4fc-993bc01299cb","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"a55fe637-e5a1-47f4-9aa6-68fb5fd21078","name":"a55fe637-e5a1-47f4-9aa6-68fb5fd21078","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
],
"gridX":0,
"gridY":0,
"height":64,
"HTile":false,
"layers":[
{"$GMImageLayer":"","%Name":"85eff2e7-5aad-40d1-91b9-18aedd27f8a4","blendMode":0,"displayName":"default","isLocked":false,"name":"85eff2e7-5aad-40d1-91b9-18aedd27f8a4","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
{"$GMImageLayer":"","%Name":"7b898271-070e-45a8-8b09-479dfcd36c2f","blendMode":0,"displayName":"default","isLocked":false,"name":"7b898271-070e-45a8-8b09-479dfcd36c2f","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
],
"name":"s_node_grid_tri",
"nineSlice":null,
@ -69,8 +69,8 @@
"tracks":[
{"$GMSpriteFramesTrack":"","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"$KeyframeStore<SpriteFrameKeyframe>":"","Keyframes":[
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"d667ddb0-a6c7-4893-b4fc-993bc01299cb","path":"sprites/s_node_grid_tri/s_node_grid_tri.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"ed528229-b665-4fc6-84b7-f52b7eaebbfa","IsCreationKey":false,"Key":0.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"a55fe637-e5a1-47f4-9aa6-68fb5fd21078","path":"sprites/s_node_grid_tri/s_node_grid_tri.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"c5f91b15-3ef9-4b5d-8ea8-dd44ca25fd8c","IsCreationKey":false,"Key":0.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
],"resourceType":"KeyframeStore<SpriteFrameKeyframe>","resourceVersion":"2.0",},"modifiers":[],"name":"frames","resourceType":"GMSpriteFramesTrack","resourceVersion":"2.0","spriteId":null,"trackColour":0,"tracks":[],"traits":0,},
],
"visibleRange":null,