Source code mishap fix 2

This commit is contained in:
Tanasart 2023-02-14 13:37:13 +07:00
parent bc98b195f8
commit d11d522899
186 changed files with 636 additions and 375 deletions

View file

@ -30,7 +30,6 @@
{"id":{"name":"s_node_blend","path":"sprites/s_node_blend/s_node_blend.yy",},"order":5,}, {"id":{"name":"s_node_blend","path":"sprites/s_node_blend/s_node_blend.yy",},"order":5,},
{"id":{"name":"s_node_rigidSim_object_spawner","path":"sprites/s_node_rigidSim_object_spawner/s_node_rigidSim_object_spawner.yy",},"order":5,}, {"id":{"name":"s_node_rigidSim_object_spawner","path":"sprites/s_node_rigidSim_object_spawner/s_node_rigidSim_object_spawner.yy",},"order":5,},
{"id":{"name":"draw_text_function","path":"scripts/draw_text_function/draw_text_function.yy",},"order":11,}, {"id":{"name":"draw_text_function","path":"scripts/draw_text_function/draw_text_function.yy",},"order":11,},
{"id":{"name":"libdlgmodule","path":"extensions/libdlgmodule/libdlgmodule.yy",},"order":0,},
{"id":{"name":"o_dialog_file_name_collection","path":"objects/o_dialog_file_name_collection/o_dialog_file_name_collection.yy",},"order":5,}, {"id":{"name":"o_dialog_file_name_collection","path":"objects/o_dialog_file_name_collection/o_dialog_file_name_collection.yy",},"order":5,},
{"id":{"name":"node_3d_prim_cone","path":"scripts/node_3d_prim_cone/node_3d_prim_cone.yy",},"order":14,}, {"id":{"name":"node_3d_prim_cone","path":"scripts/node_3d_prim_cone/node_3d_prim_cone.yy",},"order":14,},
{"id":{"name":"node_line","path":"scripts/node_line/node_line.yy",},"order":7,}, {"id":{"name":"node_line","path":"scripts/node_line/node_line.yy",},"order":7,},
@ -450,7 +449,6 @@
{"id":{"name":"draw_enable_alphablend","path":"scripts/draw_enable_alphablend/draw_enable_alphablend.yy",},"order":0,}, {"id":{"name":"draw_enable_alphablend","path":"scripts/draw_enable_alphablend/draw_enable_alphablend.yy",},"order":0,},
{"id":{"name":"s_node_blur_simple","path":"sprites/s_node_blur_simple/s_node_blur_simple.yy",},"order":41,}, {"id":{"name":"s_node_blur_simple","path":"sprites/s_node_blur_simple/s_node_blur_simple.yy",},"order":41,},
{"id":{"name":"node_VFX_spawner","path":"scripts/node_VFX_spawner/node_VFX_spawner.yy",},"order":1,}, {"id":{"name":"node_VFX_spawner","path":"scripts/node_VFX_spawner/node_VFX_spawner.yy",},"order":1,},
{"id":{"name":"libfilesystem","path":"extensions/libfilesystem/libfilesystem.yy",},"order":1,},
{"id":{"name":"s_node_equation","path":"sprites/s_node_equation/s_node_equation.yy",},"order":0,}, {"id":{"name":"s_node_equation","path":"sprites/s_node_equation/s_node_equation.yy",},"order":0,},
{"id":{"name":"sh_color_replace","path":"shaders/sh_color_replace/sh_color_replace.yy",},"order":8,}, {"id":{"name":"sh_color_replace","path":"shaders/sh_color_replace/sh_color_replace.yy",},"order":8,},
{"id":{"name":"Apollo","path":"extensions/Apollo/Apollo.yy",},"order":5,}, {"id":{"name":"Apollo","path":"extensions/Apollo/Apollo.yy",},"order":5,},
@ -799,6 +797,7 @@
{"id":{"name":"__view_get","path":"scripts/__view_get/__view_get.yy",},"order":1,}, {"id":{"name":"__view_get","path":"scripts/__view_get/__view_get.yy",},"order":1,},
{"id":{"name":"s_node_texture_map","path":"sprites/s_node_texture_map/s_node_texture_map.yy",},"order":36,}, {"id":{"name":"s_node_texture_map","path":"sprites/s_node_texture_map/s_node_texture_map.yy",},"order":36,},
{"id":{"name":"fd_rectangle_create","path":"scripts/fd_rectangle_create/fd_rectangle_create.yy",},"order":7,}, {"id":{"name":"fd_rectangle_create","path":"scripts/fd_rectangle_create/fd_rectangle_create.yy",},"order":7,},
{"id":{"name":"libfilesystem","path":"extensions/libfilesystem/libfilesystem.yy",},"order":8,},
{"id":{"name":"s_node_level_selector","path":"sprites/s_node_level_selector/s_node_level_selector.yy",},"order":27,}, {"id":{"name":"s_node_level_selector","path":"sprites/s_node_level_selector/s_node_level_selector.yy",},"order":27,},
{"id":{"name":"random_function","path":"scripts/random_function/random_function.yy",},"order":3,}, {"id":{"name":"random_function","path":"scripts/random_function/random_function.yy",},"order":3,},
{"id":{"name":"s_node_input","path":"sprites/s_node_input/s_node_input.yy",},"order":6,}, {"id":{"name":"s_node_input","path":"sprites/s_node_input/s_node_input.yy",},"order":6,},
@ -894,6 +893,7 @@
{"id":{"name":"regex","path":"scripts/regex/regex.yy",},"order":0,}, {"id":{"name":"regex","path":"scripts/regex/regex.yy",},"order":0,},
{"id":{"name":"node_invert","path":"scripts/node_invert/node_invert.yy",},"order":6,}, {"id":{"name":"node_invert","path":"scripts/node_invert/node_invert.yy",},"order":6,},
{"id":{"name":"o_dialog_history","path":"objects/o_dialog_history/o_dialog_history.yy",},"order":3,}, {"id":{"name":"o_dialog_history","path":"objects/o_dialog_history/o_dialog_history.yy",},"order":3,},
{"id":{"name":"libdlgmodule","path":"extensions/libdlgmodule/libdlgmodule.yy",},"order":7,},
{"id":{"name":"draw_background_stretched","path":"scripts/draw_background_stretched/draw_background_stretched.yy",},"order":5,}, {"id":{"name":"draw_background_stretched","path":"scripts/draw_background_stretched/draw_background_stretched.yy",},"order":5,},
{"id":{"name":"s_node_path","path":"sprites/s_node_path/s_node_path.yy",},"order":0,}, {"id":{"name":"s_node_path","path":"sprites/s_node_path/s_node_path.yy",},"order":0,},
{"id":{"name":"node_tunnel_out","path":"scripts/node_tunnel_out/node_tunnel_out.yy",},"order":10,}, {"id":{"name":"node_tunnel_out","path":"scripts/node_tunnel_out/node_tunnel_out.yy",},"order":10,},
@ -1020,6 +1020,7 @@
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"color selector","folderPath":"folders/dialog/color selector.yy","order":7,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"color selector","folderPath":"folders/dialog/color selector.yy","order":7,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"graph","folderPath":"folders/dialog/graph.yy","order":10,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"graph","folderPath":"folders/dialog/graph.yy","order":10,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"inspector","folderPath":"folders/dialog/inspector.yy","order":13,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"inspector","folderPath":"folders/dialog/inspector.yy","order":13,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"menu","folderPath":"folders/dialog/menu.yy","order":18,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"preview","folderPath":"folders/dialog/preview.yy","order":12,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"preview","folderPath":"folders/dialog/preview.yy","order":12,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"widget","folderPath":"folders/dialog/widget.yy","order":14,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"widget","folderPath":"folders/dialog/widget.yy","order":14,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"Extensions","folderPath":"folders/Extensions.yy","order":11,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"Extensions","folderPath":"folders/Extensions.yy","order":11,},
@ -1027,7 +1028,6 @@
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"functions","folderPath":"folders/functions.yy","order":7,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"functions","folderPath":"folders/functions.yy","order":7,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"3d","folderPath":"folders/functions/3d.yy","order":0,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"3d","folderPath":"folders/functions/3d.yy","order":0,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"animation","folderPath":"folders/functions/animation.yy","order":19,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"animation","folderPath":"folders/functions/animation.yy","order":19,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"migration","folderPath":"folders/functions/migration.yy","order":0,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"bones","folderPath":"folders/functions/bones.yy","order":18,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"bones","folderPath":"folders/functions/bones.yy","order":18,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"compat","folderPath":"folders/functions/compat.yy","order":13,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"compat","folderPath":"folders/functions/compat.yy","order":13,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"control","folderPath":"folders/functions/control.yy","order":22,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"control","folderPath":"folders/functions/control.yy","order":22,},
@ -1054,6 +1054,7 @@
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"importers","folderPath":"folders/functions/importers.yy","order":6,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"importers","folderPath":"folders/functions/importers.yy","order":6,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"inputs","folderPath":"folders/functions/inputs.yy","order":7,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"inputs","folderPath":"folders/functions/inputs.yy","order":7,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"lua","folderPath":"folders/functions/lua.yy","order":24,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"lua","folderPath":"folders/functions/lua.yy","order":24,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"migration","folderPath":"folders/functions/migration.yy","order":0,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"physics","folderPath":"folders/functions/physics.yy","order":21,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"physics","folderPath":"folders/functions/physics.yy","order":21,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"regex","folderPath":"folders/functions/regex.yy","order":11,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"regex","folderPath":"folders/functions/regex.yy","order":11,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"shader","folderPath":"folders/functions/shader.yy","order":16,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"shader","folderPath":"folders/functions/shader.yy","order":16,},
@ -1139,7 +1140,6 @@
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"Steamworks","folderPath":"folders/Steamworks.yy","order":0,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"Steamworks","folderPath":"folders/Steamworks.yy","order":0,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"UGC","folderPath":"folders/Steamworks/UGC.yy","order":0,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"UGC","folderPath":"folders/Steamworks/UGC.yy","order":0,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"widgets","folderPath":"folders/widgets.yy","order":6,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"widgets","folderPath":"folders/widgets.yy","order":6,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"menu","folderPath":"folders/dialog/menu.yy","order":18,},
], ],
"AudioGroups": [ "AudioGroups": [
{"resourceType":"GMAudioGroup","resourceVersion":"1.3","name":"audiogroup_default","targets":-1,}, {"resourceType":"GMAudioGroup","resourceVersion":"1.3","name":"audiogroup_default","targets":-1,},

View file

@ -43,7 +43,7 @@ if !ready exit;
if(buttonInstant(THEME.button_hide, bx, by, ui(28), ui(28), mouse_ui, sFOCUS, sHOVER, "Open palette folder", THEME.folder) == 2) { if(buttonInstant(THEME.button_hide, bx, by, ui(28), ui(28), mouse_ui, sFOCUS, sHOVER, "Open palette folder", THEME.folder) == 2) {
var _realpath = environment_get_variable("LOCALAPPDATA") + "\\Pixels_Composer\\Palettes"; var _realpath = environment_get_variable("LOCALAPPDATA") + "\\Pixels_Composer\\Palettes";
var _windir = environment_get_variable("WINDIR") + "\\explorer.exe"; var _windir = environment_get_variable("WINDIR") + "\\explorer.exe";
execute_shell_simple(_windir, _realpath); execute_shell(_windir, _realpath);
} }
bx -= ui(32); bx -= ui(32);
#endregion #endregion

View file

@ -73,7 +73,7 @@ if !ready exit;
if(buttonInstant(THEME.button_hide, bx, by, ui(28), ui(28), mouse_ui, sFOCUS, sHOVER, "Open gradient folder", THEME.folder) == 2) { if(buttonInstant(THEME.button_hide, bx, by, ui(28), ui(28), mouse_ui, sFOCUS, sHOVER, "Open gradient folder", THEME.folder) == 2) {
var _realpath = environment_get_variable("LOCALAPPDATA") + "\\Pixels_Composer\\Gradients"; var _realpath = environment_get_variable("LOCALAPPDATA") + "\\Pixels_Composer\\Gradients";
var _windir = environment_get_variable("WINDIR") + "\\explorer.exe"; var _windir = environment_get_variable("WINDIR") + "\\explorer.exe";
execute_shell_simple(_windir, _realpath); execute_shell(_windir, _realpath);
} }
bx -= ui(32); bx -= ui(32);
#endregion #endregion

View file

@ -2,6 +2,6 @@
event_inherited(); event_inherited();
#region data #region data
dialog_w = ui(480); dialog_w = ui(560);
dialog_h = ui(140); dialog_h = ui(160);
#endregion #endregion

View file

@ -21,7 +21,7 @@ draw_set_alpha(1);
draw_text_ext(dialog_x + ui(24), py, get_text("dialog_migration_content", draw_text_ext(dialog_x + ui(24), py, get_text("dialog_migration_content",
"You can press migrate files or manually move all custom collections, assets, palettes, gradients, fonts and presets."), -1, dialog_w - ui(48)); "You can press migrate files or manually move all custom collections, assets, palettes, gradients, fonts and presets."), -1, dialog_w - ui(48));
var bw = ui(96), bh = TEXTBOX_HEIGHT; var bw = ui(112), bh = TEXTBOX_HEIGHT;
var bx1 = dialog_x + dialog_w - ui(16); var bx1 = dialog_x + dialog_w - ui(16);
var by1 = dialog_y + dialog_h - ui(16); var by1 = dialog_y + dialog_h - ui(16);
var bx0 = bx1 - bw; var bx0 = bx1 - bw;
@ -37,15 +37,26 @@ draw_set_alpha(1);
var b = buttonInstant(THEME.button, bx0, by0, bw, bh, mouse_ui, sFOCUS, sHOVER); var b = buttonInstant(THEME.button, bx0, by0, bw, bh, mouse_ui, sFOCUS, sHOVER);
draw_text(bx0 + bw / 2, by0 + bh / 2, get_text("migrate_files", "Migrate files")); draw_text(bx0 + bw / 2, by0 + bh / 2, get_text("migrate_files", "Migrate files"));
if(b == 2) { if(b == 2) {
var oldDir = environment_get_variable("userprofile") + "\\AppData\\Local\\Pixels_Composer\\";
var folders = [ "Assets", "Collections", "Fonts", "Gradients", "Palettes", "Presets", "Themes"];
for( var i = 0; i < array_length(folders); i++ ) {
var o = oldDir + folders[i] + "\\";
var n = DIRECTORY + folders[i] + "\\";
if(directory_exists(o)) {
var shell = "/E /I " + o + " " + n;
execute_shell("Xcopy", shell);
}
}
instance_destroy(); instance_destroy();
} }
bx0 = dialog_x + ui(16); bx0 = dialog_x + ui(16);
bw = ui(160);
var b = buttonInstant(THEME.button, bx0, by0, bw, bh, mouse_ui, sFOCUS, sHOVER); var b = buttonInstant(THEME.button, bx0, by0, bw, bh, mouse_ui, sFOCUS, sHOVER);
draw_text(bx0 + bw / 2, by0 + bh / 2, get_text("migrate_open_directory", "Open directory") + "..."); draw_text(bx0 + bw / 2, by0 + bh / 2, get_text("migrate_open_directory", "Open directory") + "...");
if(b == 2) { if(b == 2) {
var path = string(DIRECTORY); if(directory_exists(DIRECTORY))
if(file_exists(path)) shellOpenExplorer(path); shellOpenExplorer(DIRECTORY);
} }
#endregion #endregion

View file

@ -65,7 +65,7 @@ if palette == 0 exit;
if(buttonInstant(THEME.button_hide, bx, by, ui(28), ui(28), mouse_ui, sFOCUS, sHOVER, "Open palette folder", THEME.folder) == 2) { if(buttonInstant(THEME.button_hide, bx, by, ui(28), ui(28), mouse_ui, sFOCUS, sHOVER, "Open palette folder", THEME.folder) == 2) {
var _realpath = environment_get_variable("LOCALAPPDATA") + "\\Pixels_Composer\\Palettes"; var _realpath = environment_get_variable("LOCALAPPDATA") + "\\Pixels_Composer\\Palettes";
var _windir = environment_get_variable("WINDIR") + "\\explorer.exe"; var _windir = environment_get_variable("WINDIR") + "\\explorer.exe";
execute_shell_simple(_windir, _realpath); execute_shell(_windir, _realpath);
} }
draw_sprite_ui_uniform(THEME.folder, 0, bx + ui(14), by + ui(14), 1, COLORS._main_icon); draw_sprite_ui_uniform(THEME.folder, 0, bx + ui(14), by + ui(14), 1, COLORS._main_icon);
bx -= ui(32); bx -= ui(32);

View file

@ -1,12 +1,16 @@
/// @description init /// @description init
#region size #region size
draw_set_font(f_p0); draw_set_font(f_p2);
var ww = string_width(warning_text); var ww = string_width_ext(warning_text, -1, 1000);
var hh = string_height(warning_text); var hh = string_height_ext(warning_text, -1, ww);
dialog_w = ww + 48; dialog_w = ww + padding * 2 + ui(32);
dialog_h = hh + 48; dialog_h = hh + padding * 2;
drag_height = dialog_h;
dialog_x = clamp(x, 0, WIN_W - dialog_w);
dialog_y = clamp(y, 0, WIN_H - dialog_h);
#endregion #endregion
event_inherited(); event_inherited();

View file

@ -2,7 +2,10 @@
event_inherited(); event_inherited();
#region data #region data
destroy_on_click_out = true; anchor = ANCHOR.left | ANCHOR.top;
padding = ui(8);
destroy_on_click_out = true;
warning_text = ""; warning_text = "";
life = 300;
#endregion #endregion

View file

@ -2,13 +2,20 @@
if !ready exit; if !ready exit;
#region base UI #region base UI
draw_sprite_stretched(THEME.dialog_bg, 0, dialog_x, dialog_y, dialog_w, dialog_h); var aa = 0.75;
if(sFOCUS) if(point_in_rectangle(mouse_mx, mouse_my, dialog_x, dialog_y, dialog_x + dialog_w, dialog_y + dialog_h)) {
draw_sprite_stretched_ext(THEME.dialog_active, 0, dialog_x, dialog_y, dialog_w, dialog_h, COLORS._main_accent, 1); aa = 1;
} else if(--life < 0)
instance_destroy();
draw_sprite_stretched_ext(THEME.textbox, 3, dialog_x, dialog_y, dialog_w, dialog_h, COLORS._main_accent, aa);
draw_sprite_stretched_ext(THEME.textbox, 0, dialog_x, dialog_y, dialog_w, dialog_h, COLORS._main_accent, 1);
draw_sprite_stretched_ext(THEME.textbox_header, 0, dialog_x, dialog_y, ui(32), dialog_h, COLORS._main_accent, 1);
#endregion #endregion
#region text #region text
draw_set_text(f_p0, fa_center, fa_top, COLORS._main_text); draw_sprite_ui(THEME.noti_icon_warning, 1, dialog_x + ui(16), dialog_y + dialog_h / 2);
draw_text(dialog_x + dialog_w / 2, dialog_y + ui(24), warning_text); draw_set_text(f_p2, fa_left, fa_top, COLORS._main_text);
draw_text_ext(dialog_x + ui(32) + padding, dialog_y + padding, warning_text, -1, dialog_w - padding * 2);
#endregion #endregion

View file

@ -5,6 +5,8 @@
LOAD_SAMPLE(); LOAD_SAMPLE();
INIT_FOLDERS(); INIT_FOLDERS();
if(!file_exists(file_open_parameter) && PREF_MAP[? "show_splash"]) __migration_check();
if(!instance_exists(_p_dialog) && !file_exists(file_open_parameter) && PREF_MAP[? "show_splash"])
dialogCall(o_dialog_splash); dialogCall(o_dialog_splash);
#endregion #endregion

View file

@ -19,14 +19,12 @@
#region panels #region panels
if(PANEL_MAIN == 0) setPanel(); if(PANEL_MAIN == 0) setPanel();
PANEL_MAIN.draw(); var surf = surface_get_target();
try
//var surf = surface_get_target(); PANEL_MAIN.draw();
//try catch(e) {
// PANEL_MAIN.draw(); while(surface_get_target() != surf)
//catch(e) { surface_reset_target();
// while(surface_get_target() != surf) noti_warning("UI error: " + exception_print(e));
// surface_reset_target(); }
// noti_warning("UI error: " + exception_print(e));
//}
#endregion #endregion

View file

@ -36,11 +36,11 @@
environment_set_variable("IMGUI_DIALOG_WIDTH", string(800)); environment_set_variable("IMGUI_DIALOG_WIDTH", string(800));
var cmd = "assoc .pxc=\"" + string(program_directory) + "PixelComposer.exe\""; var cmd = ".pxc=\"" + string(program_directory) + "PixelComposer.exe\"";
execute_shell("", cmd); execute_shell("assoc", cmd);
var cmd = "assoc .pxcc=\"" + string(program_directory) + "PixelComposer.exe\""; var cmd = ".pxcc=\"" + string(program_directory) + "PixelComposer.exe\"";
execute_shell("", cmd); execute_shell("assoc", cmd);
#endregion #endregion
#region parameter #region parameter

View file

@ -1,3 +1,5 @@
#macro AREA_DEF [ 16, 16, 4, 4, AREA_SHAPE.rectangle ]
enum AREA_DISTRIBUTION { enum AREA_DISTRIBUTION {
area, area,
border border

View file

@ -1,4 +1,7 @@
function array_create_from_list(list) { function array_create_from_list(list) {
if(list == undefined) return [];
if(!ds_exists(list, ds_type_list)) return [];
var arr = array_create(ds_list_size(list)); var arr = array_create(ds_list_size(list));
for( var i = 0; i < ds_list_size(list); i++ ) for( var i = 0; i < ds_list_size(list); i++ )
arr[i] = list[| i]; arr[i] = list[| i];
@ -6,13 +9,26 @@ function array_create_from_list(list) {
} }
function array_safe_set(arr, index, value) { function array_safe_set(arr, index, value) {
if(!is_array(arr)) return def;
if(index < 0) return; if(index < 0) return;
if(index >= array_length(arr)) return; if(index >= array_length(arr)) return;
array_set(arr, index, value); array_set(arr, index, value);
} }
function array_safe_get(arr, index, def = 0) { enum ARRAY_OVERFLOW {
_default,
loop
}
function array_safe_get(arr, index, def = 0, overflow = ARRAY_OVERFLOW._default) {
if(!is_array(arr)) return def;
if(overflow == ARRAY_OVERFLOW.loop) {
if(index < 0)
index = array_length(arr) - safe_mod(abs(index), array_length(arr));
index = safe_mod(index, array_length(arr));
}
if(index < 0) return def; if(index < 0) return def;
if(index >= array_length(arr)) return def; if(index >= array_length(arr)) return def;
return arr[index]; return arr[index];
@ -46,6 +62,19 @@ function array_push_unique(arr, val) {
function array_append(arr, arr0) { function array_append(arr, arr0) {
for( var i = 0; i < array_length(arr0); i++ ) for( var i = 0; i < array_length(arr0); i++ )
array_push(arr, arr0[i]); array_push(arr, arr0[i]);
return arr;
}
function array_shuffle(arr) {
var r = array_length(arr) - 1;
for(var i = 0; i < r; i += 1) {
var j = irandom_range(i,r);
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
return arr;
} }
function array_merge() { function array_merge() {

View file

@ -1,3 +1,8 @@
function surface_blur_init() {
__blur_hori = surface_create(1, 1);
__blur_vert = surface_create(1, 1);
}
function surface_apply_gaussian(surface, size, bg = false, bg_c = c_white, sampleMode = 0, overColor = noone) { function surface_apply_gaussian(surface, size, bg = false, bg_c = c_white, sampleMode = 0, overColor = noone) {
static uni_bor = shader_get_uniform(sh_blur_gaussian, "sampleMode"); static uni_bor = shader_get_uniform(sh_blur_gaussian, "sampleMode");
static uni_dim = shader_get_uniform(sh_blur_gaussian, "dimension"); static uni_dim = shader_get_uniform(sh_blur_gaussian, "dimension");
@ -7,8 +12,8 @@ function surface_apply_gaussian(surface, size, bg = false, bg_c = c_white, sampl
static uni_ovr = shader_get_uniform(sh_blur_gaussian, "overrideColor"); static uni_ovr = shader_get_uniform(sh_blur_gaussian, "overrideColor");
static uni_ovc = shader_get_uniform(sh_blur_gaussian, "overColor"); static uni_ovc = shader_get_uniform(sh_blur_gaussian, "overColor");
var hori = surface_create_valid(surface_get_width(surface), surface_get_height(surface)); __blur_hori = surface_verify(__blur_hori, surface_get_width(surface), surface_get_height(surface));
var vert = surface_create_valid(surface_get_width(surface), surface_get_height(surface)); __blur_vert = surface_verify(__blur_vert, surface_get_width(surface), surface_get_height(surface));
#region kernel generation #region kernel generation
size = max(1, round(size)); size = max(1, round(size));
@ -26,37 +31,35 @@ function surface_apply_gaussian(surface, size, bg = false, bg_c = c_white, sampl
} }
#endregion #endregion
BLEND_OVERRIDE BLEND_OVERRIDE;
surface_set_target(hori); surface_set_target(__blur_hori);
draw_clear_alpha(bg_c, bg); draw_clear_alpha(bg_c, bg);
shader_set(sh_blur_gaussian); shader_set(sh_blur_gaussian);
shader_set_uniform_f_array(uni_dim, [ surface_get_width(surface), surface_get_height(surface) ]); shader_set_uniform_f_array_safe(uni_dim, [ surface_get_width(surface), surface_get_height(surface) ]);
shader_set_uniform_f_array(uni_wei, gau_array); shader_set_uniform_f_array_safe(uni_wei, gau_array);
shader_set_uniform_i(uni_bor, sampleMode); shader_set_uniform_i(uni_bor, sampleMode);
shader_set_uniform_i(uni_sze, size); shader_set_uniform_i(uni_sze, size);
shader_set_uniform_i(uni_hor, 1); shader_set_uniform_i(uni_hor, 1);
shader_set_uniform_i(uni_ovr, overColor != noone); shader_set_uniform_i(uni_ovr, overColor != noone);
shader_set_uniform_f_array(uni_ovc, colToVec4(overColor)); shader_set_uniform_f_array_safe(uni_ovc, colToVec4(overColor));
draw_surface_safe(surface, 0, 0); draw_surface_safe(surface, 0, 0);
shader_reset(); shader_reset();
surface_reset_target(); surface_reset_target();
surface_set_target(vert); surface_set_target(__blur_vert);
draw_clear_alpha(bg_c, bg); draw_clear_alpha(bg_c, bg);
shader_set(sh_blur_gaussian); shader_set(sh_blur_gaussian);
shader_set_uniform_i(uni_hor, 0); shader_set_uniform_i(uni_hor, 0);
draw_surface_safe(hori, 0, 0); draw_surface_safe(__blur_hori, 0, 0);
shader_reset(); shader_reset();
surface_reset_target(); surface_reset_target();
BLEND_NORMAL BLEND_NORMAL;
surface_free(hori); return __blur_vert;
return vert;
} }

View file

@ -27,3 +27,28 @@ function colorMultiply(c1, c2) {
return make_color_rgb((r1 * r2) * 255, (g1 * g2) * 255, (b1 * b2) * 255); return make_color_rgb((r1 * r2) * 255, (g1 * g2) * 255, (b1 * b2) * 255);
} }
function color_diff(c1, c2) {
var _c1_r = c1 & 255;
var _c1_g = (c1 >> 8) & 255;
var _c1_b = (c1 >> 16) & 255;
var _c1_a = (c1 >> 24) & 255;
_c1_r = _c1_r / 255;
_c1_g = _c1_g / 255;
_c1_b = _c1_b / 255;
_c1_a = _c1_a / 255;
var _c2_r = c2 & 255;
var _c2_g = (c2 >> 8) & 255;
var _c2_b = (c2 >> 16) & 255;
var _c2_a = (c2 >> 24) & 255;
_c2_r = _c2_r / 255;
_c2_g = _c2_g / 255;
_c2_b = _c2_b / 255;
_c2_a = _c2_a / 255;
var dist = sqrt(sqr(_c1_r - _c2_r) + sqr(_c1_g - _c2_g) + sqr(_c1_b - _c2_b) + sqr(_c1_a - _c2_a));
return dist;
}

View file

@ -1,15 +1,43 @@
#macro CURVE_DEF_01 [0, 1/3, 1/3, 2/3, 2/3, 1] //curve format [-cx0, -cy0, x0, y0, +cx0, +cy0, -cx1, -cy1, x1, y1, +cx1, +cy1]
#macro CURVE_DEF_10 [1, 1/3, 2/3, 2/3, 1/3, 0] //segment format [y0, +cx0, +cy0, -cx1, -cy1, y1];
#macro CURVE_DEF_11 [1, 1/3, 1, 2/3, 1, 1] #macro CURVE_DEF_01 [0, 0, 0, 0, 1/3, 1/3, /**/ -1/3, -1/3, 1, 1, 0, 0]
#macro CURVE_DEF_10 [0, 0, 0, 1, 1/3, -1/3, /**/ -1/3, 1/3, 1, 0, 0, 0]
#macro CURVE_DEF_11 [0, 0, 0, 1, 1/3, 0, /**/ -1/3, 0, 1, 1, 0, 0]
function draw_line_bezier_cubic(x0, y0, _w, _h, _bz) { function draw_curve(x0, y0, _w, _h, _bz) {
static SAMPLE = 32; var segments = array_length(_bz) / 6 - 1;
for( var i = 0; i < segments; i++ ) {
var ind = i * 6;
var _x0 = _bz[ind + 2];
var _y0 = _bz[ind + 3];
//var bx0 = _x0 + _bz[ind + 0];
//var by0 = _y0 + _bz[ind + 1];
var ax0 = _x0 + _bz[ind + 4];
var ay0 = _y0 + _bz[ind + 5];
var _x1 = _bz[ind + 6 + 2];
var _y1 = _bz[ind + 6 + 3];
var bx1 = _x1 + _bz[ind + 6 + 0];
var by1 = _y1 + _bz[ind + 6 + 1];
//var ax1 = _x1 + _bz[ind + 6 + 4];
//var ay1 = _y1 + _bz[ind + 6 + 5];
var dx0 = x0 + _w * _x0;
var dx1 = x0 + _w * _x1;
var dw = dx1 - dx0;
var smp = ceil((_x1 - _x0) * 32);
draw_curve_segment(dx0, y0, dw, _h, [_y0, ax0, ay0, bx1, by1, _y1], smp);
}
}
function draw_curve_segment(x0, y0, _w, _h, _bz, SAMPLE = 32) {
var _ox, _oy; var _ox, _oy;
for(var i = 0; i <= SAMPLE; i++) { for(var i = 0; i <= SAMPLE; i++) {
var t = i / SAMPLE; var t = i / SAMPLE;
var _r = eval_bezier_cubic(t, _bz); var _r = eval_curve_segment_t_position(t, _bz);
var _rx = _r[0], _ry = _r[1]; var _rx = _r[0], _ry = _r[1];
var _nx = _rx * _w + x0; var _nx = _rx * _w + x0;
@ -23,7 +51,7 @@ function draw_line_bezier_cubic(x0, y0, _w, _h, _bz) {
} }
} }
function eval_bezier_cubic(t, _bz) { function eval_curve_segment_t_position(t, _bz) {
return [ return [
power(1 - t, 3) * 0 power(1 - t, 3) * 0
+ 3 * power(1 - t, 2) * t * _bz[1] + 3 * power(1 - t, 2) * t * _bz[1]
@ -37,15 +65,51 @@ function eval_bezier_cubic(t, _bz) {
]; ];
} }
function eval_curve_bezier_cubic_x(_bz, _x, _prec = 0.00001) { function eval_curve_segment_t(_bz, t) {
return power(1 - t, 3) * _bz[0]
+ 3 * power(1 - t, 2) * t * _bz[2]
+ 3 * (1 - t) * power(t, 2) * _bz[4]
+ power(t, 3) * _bz[5];
}
function eval_curve_x(_bz, _x, _prec = 0.00001) {
var segments = array_length(_bz) / 6 - 1;
_x = clamp(_x, 0, 1);
for( var i = 0; i < segments; i++ ) {
var ind = i * 6;
var _x0 = _bz[ind + 2];
var _y0 = _bz[ind + 3];
//var bx0 = _x0 + _bz[ind + 0];
//var by0 = _y0 + _bz[ind + 1];
var ax0 = _x0 + _bz[ind + 4];
var ay0 = _y0 + _bz[ind + 5];
var _x1 = _bz[ind + 6 + 2];
var _y1 = _bz[ind + 6 + 3];
var bx1 = _x1 + _bz[ind + 6 + 0];
var by1 = _y1 + _bz[ind + 6 + 1];
//var ax1 = _x1 + _bz[ind + 6 + 4];
//var ay1 = _y1 + _bz[ind + 6 + 5];
if(_x < _x0) continue;
if(_x > _x1) continue;
return eval_curve_segment_x([_y0, ax0, ay0, bx1, by1, _y1], (_x - _x0) / (_x1 - _x0));
}
return array_safe_get(_bz, array_length(_bz) - 3);
}
function eval_curve_segment_x(_bz, _x, _prec = 0.00001) {
var st = 0; var st = 0;
var ed = 1; var ed = 1;
var _xt = _x; var _xt = _x;
var _binRep = 5; var _binRep = 8;
if(_x == 0) return _bz[0]; if(_x <= 0) return _bz[0];
if(_x == 1) return _bz[5]; if(_x >= 1) return _bz[5];
if(_bz[0] == _bz[2] && _bz[0] == _bz[4] && _bz[0] == _bz[5]) return _bz[0]; if(_bz[0] == _bz[2] && _bz[0] == _bz[4] && _bz[0] == _bz[5]) return _bz[0];
repeat(_binRep) { repeat(_binRep) {
@ -55,7 +119,7 @@ function eval_curve_bezier_cubic_x(_bz, _x, _prec = 0.00001) {
+ power(_xt, 3) * 1; + power(_xt, 3) * 1;
if(abs(_ftx - _x) < _prec) if(abs(_ftx - _x) < _prec)
return eval_curve_bezier_cubic_t(_bz, _xt); return eval_curve_segment_t(_bz, _xt);
if(_xt < _x) if(_xt < _x)
st = _xt; st = _xt;
@ -83,41 +147,14 @@ function eval_curve_bezier_cubic_x(_bz, _x, _prec = 0.00001) {
break; break;
} }
return eval_curve_bezier_cubic_t(_bz, _xt); _xt = clamp(_xt, 0, 1);
} return eval_curve_segment_t(_bz, _xt);
function eval_curve_bezier_cubic_t(_bz, t) {
return power(1 - t, 3) * _bz[0]
+ 3 * power(1 - t, 2) * t * _bz[2]
+ 3 * (1 - t) * power(t, 2) * _bz[4]
+ power(t, 3) * _bz[5];
} }
function bezier_range(bz) { function bezier_range(bz) {
return [ min(bz[0], bz[2], bz[4], bz[5]), max(bz[0], bz[2], bz[4], bz[5]) ]; return [ min(bz[0], bz[2], bz[4], bz[5]), max(bz[0], bz[2], bz[4], bz[5]) ];
} }
function bezier_interpol_x(a, b, t, iteration = 10) {
var fx, _x = 0.5, _x1, slope;
repeat(iteration) {
fx = (3 * a - 3 * b + 1) * _x * _x * _x
+ (3 * b - 6 * a) * _x * _x
+ 3 * a * _x
- t;
slope = 3 * (3 * a - 3 * b + 1) * _x * _x
+ 2 * (3 * b - 6 * a) * _x
+ 3 * a;
_x -= fx / slope;
}
return 3 * (1 - _x) * _x * _x + _x * _x * _x;
}
function ease_bezier(t, a, b) {
return 3 * power(1 - t, 2) * t * a + 3 * (1 - t) * power(t, 2) * b + power(t, 3);
}
function ease_cubic_in(rat) { function ease_cubic_in(rat) {
return power(rat, 3); return power(rat, 3);
} }

View file

@ -5,6 +5,7 @@ function FileObject(_name, _path) constructor {
spr = -1; spr = -1;
content = -1; content = -1;
surface = noone; surface = noone;
meta = noone;
static getSurface = function() { static getSurface = function() {
if(is_surface(surface)) return surface; if(is_surface(surface)) return surface;
@ -25,6 +26,31 @@ function FileObject(_name, _path) constructor {
sprite_set_offset(spr, sprite_get_width(spr) / 2, sprite_get_height(spr) / 2); sprite_set_offset(spr, sprite_get_width(spr) / 2, sprite_get_height(spr) / 2);
return spr; return spr;
} }
static getMetadata = function() {
if(!file_exists(path)) return noone;
if(filename_ext(path) != ".pxcc") return noone;
if(meta != noone) return meta;
if(meta == undefined) return noone;
var f = file_text_open_read(path);
var _f = file_text_read_all(f);
file_text_close(f);
var m = json_decode(_f);
if(ds_map_exists(m, "metadata")) {
meta = new MetaDataManager();
meta.deserialize(m[? "metadata"]);
} else
meta = undefined;
meta.version = m[? "version"];
meta.name = name;
ds_map_destroy(m);
return meta;
}
} }
function DirectoryObject(name, path) constructor { function DirectoryObject(name, path) constructor {
@ -64,7 +90,7 @@ function DirectoryObject(name, path) constructor {
var f = new FileObject(string_replace(file, filename_ext(file), ""), path + "\\" + file); var f = new FileObject(string_replace(file, filename_ext(file), ""), path + "\\" + file);
ds_list_add(content, f); ds_list_add(content, f);
if(filename_ext(file) == ".png") { if(string_lower(filename_ext(file)) == ".png") {
var icon_path = path + "\\" + file; var icon_path = path + "\\" + file;
var amo = 1; var amo = 1;
var p = string_pos("strip", icon_path); var p = string_pos("strip", icon_path);

View file

@ -1,5 +1,5 @@
function __migration_check() { function __migration_check() {
var oldDir = environment_get_variable("userprofile") + "\\AppData\\Local\\Pixels Composer\\"; var oldDir = environment_get_variable("userprofile") + "\\AppData\\Local\\Pixels_Composer\\";
if(!directory_exists(oldDir)) return; if(!directory_exists(oldDir)) return;
var mig = oldDir + "migration"; var mig = oldDir + "migration";

View file

@ -93,7 +93,6 @@ function Node_Image_Sequence(_x, _y, _group = -1) : Node(_x, _y, _group) constru
} }
function updatePaths(paths) { function updatePaths(paths) {
print(paths);
for(var i = 0; i < array_length(spr); i++) { for(var i = 0; i < array_length(spr); i++) {
if(spr[i] && sprite_exists(spr[i])) if(spr[i] && sprite_exists(spr[i]))
sprite_delete(spr[i]); sprite_delete(spr[i]);

View file

@ -1,3 +1,4 @@
function Node_Iterator_Output(_x, _y, _group = -1) : Node_Group_Output(_x, _y, _group) constructor { function Node_Iterator_Output(_x, _y, _group = -1) : Node_Group_Output(_x, _y, _group) constructor {
name = "Output"; name = "Output";
color = COLORS.node_blend_loop; color = COLORS.node_blend_loop;

View file

@ -1,73 +1,68 @@
function Node_Grid_Hex(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { function Node_Noise_Hex(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor {
name = "Hexagonal Grid"; name = "Hexagonal Noise";
shader = sh_grid_hex; shader = sh_noise_grid_hex;
uniform_dim = shader_get_uniform(shader, "dimension"); uniform_dim = shader_get_uniform(shader, "dimension");
uniform_sed = shader_get_uniform(shader, "seed");
uniform_pos = shader_get_uniform(shader, "position"); uniform_pos = shader_get_uniform(shader, "position");
uniform_sca = shader_get_uniform(shader, "scale"); uniform_sca = shader_get_uniform(shader, "scale");
uniform_rot = shader_get_uniform(shader, "angle"); uniform_ang = shader_get_uniform(shader, "angle");
uniform_thk = shader_get_uniform(shader, "thick");
uniform_clr0 = shader_get_uniform(shader, "color0"); uniform_sam = shader_get_uniform(shader, "useSampler");
uniform_clr1 = shader_get_uniform(shader, "color1"); uniform_samTyp = shader_get_uniform(shader, "sampleMode");
inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 )
.setDisplay(VALUE_DISPLAY.vector); .setDisplay(VALUE_DISPLAY.vector);
inputs[| 1] = nodeValue("Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) inputs[| 1] = nodeValue("Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, irandom(99999));
.setDisplay(VALUE_DISPLAY.vector)
.setUnitRef(function(index) { return getDimension(index); });
inputs[| 2] = nodeValue("Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 4, 4 ]) inputs[| 2] = nodeValue("Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0] )
.setDisplay(VALUE_DISPLAY.vector); .setDisplay(VALUE_DISPLAY.vector);
inputs[| 3] = nodeValue("Angle", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 3] = nodeValue("Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 8, 8 ] )
.setDisplay(VALUE_DISPLAY.rotation); .setDisplay(VALUE_DISPLAY.vector);
inputs[| 4] = nodeValue("Gap", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.1) inputs[| 4] = nodeValue("Texture sample", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0);
.setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01]);
inputs[| 5] = nodeValue("Color 1", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white); inputs[| 5] = nodeValue("Oversample mode", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 2)
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Empty", "Clamp", "Repeat" ]);
inputs[| 6] = nodeValue("Color 2", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_black);
input_display_list = [ input_display_list = [
["Output", false], 0, ["Output", false], 0,
["Pattern", false], 1, 2, 3, 4, ["Noise", false], 1, 2, 3,
["Render", false], 5, 6, ["Texture", false], 4, 5
]; ];
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone); outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny); inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
} }
static process_data = function(_outSurf, _data, _output_index, _array_index) { static process_data = function(_outSurf, _data, _output_index, _array_index) {
var _dim = _data[0]; var _dim = _data[0];
var _pos = _data[1]; var _sed = _data[1];
var _sca = _data[2]; var _pos = _data[2];
var _rot = _data[3]; var _sca = _data[3];
var _thk = _data[4]; var _sam = _data[4];
var _samTyp = _data[5];
var _clr0 = _data[5];
var _clr1 = _data[6];
_outSurf = surface_verify(_outSurf, _dim[0], _dim[1]); _outSurf = surface_verify(_outSurf, _dim[0], _dim[1]);
surface_set_target(_outSurf); surface_set_target(_outSurf);
draw_clear_alpha(0, 0); draw_clear_alpha(0, 0);
shader_set(shader); shader_set(shader);
shader_set_uniform_f(uniform_dim, _dim[0], _dim[1]); shader_set_uniform_f_array_safe(uniform_dim, [_dim[0], _dim[1]]);
shader_set_uniform_f(uniform_pos, _pos[0] / _dim[0], _pos[1] / _dim[1]); shader_set_uniform_f(uniform_sed, _sed);
shader_set_uniform_f(uniform_sca, _sca[0], _sca[1]); shader_set_uniform_f_array_safe(uniform_pos, _pos);
shader_set_uniform_f(uniform_rot, degtorad(_rot)); shader_set_uniform_f_array_safe(uniform_sca, _sca);
shader_set_uniform_f(uniform_thk, _thk); shader_set_uniform_i(uniform_sam, is_surface(_sam));
shader_set_uniform_i(uniform_samTyp, _samTyp);
shader_set_uniform_f_array_safe(uniform_clr0, colToVec4(_clr0)); if(is_surface(_sam))
shader_set_uniform_f_array_safe(uniform_clr1, colToVec4(_clr1)); draw_surface_stretched(_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); draw_sprite_ext(s_fx_pixel, 0, 0, 0, _dim[0], _dim[1], 0, c_white, 1);
shader_reset(); shader_reset();
surface_reset_target(); surface_reset_target();

View file

@ -1,73 +1,68 @@
function Node_Grid_Tri(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { function Node_Noise_Tri(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor {
name = "Triangle Grid"; name = "Triangle Noise";
shader = sh_grid_tri; shader = sh_noise_grid_tri;
uniform_dim = shader_get_uniform(shader, "dimension"); uniform_dim = shader_get_uniform(shader, "dimension");
uniform_sed = shader_get_uniform(shader, "seed");
uniform_pos = shader_get_uniform(shader, "position"); uniform_pos = shader_get_uniform(shader, "position");
uniform_sca = shader_get_uniform(shader, "scale"); uniform_sca = shader_get_uniform(shader, "scale");
uniform_rot = shader_get_uniform(shader, "angle"); uniform_ang = shader_get_uniform(shader, "angle");
uniform_thk = shader_get_uniform(shader, "thick");
uniform_clr0 = shader_get_uniform(shader, "color0"); uniform_sam = shader_get_uniform(shader, "useSampler");
uniform_clr1 = shader_get_uniform(shader, "color1"); uniform_samTyp = shader_get_uniform(shader, "sampleMode");
inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 )
.setDisplay(VALUE_DISPLAY.vector); .setDisplay(VALUE_DISPLAY.vector);
inputs[| 1] = nodeValue("Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) inputs[| 1] = nodeValue("Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, irandom(99999));
.setDisplay(VALUE_DISPLAY.vector)
.setUnitRef(function(index) { return getDimension(index); });
inputs[| 2] = nodeValue("Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 4, 4 ]) inputs[| 2] = nodeValue("Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0] )
.setDisplay(VALUE_DISPLAY.vector); .setDisplay(VALUE_DISPLAY.vector);
inputs[| 3] = nodeValue("Angle", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 3] = nodeValue("Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 4, 4 ] )
.setDisplay(VALUE_DISPLAY.rotation); .setDisplay(VALUE_DISPLAY.vector);
inputs[| 4] = nodeValue("Gap", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.1) inputs[| 4] = nodeValue("Texture sample", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0);
.setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01]);
inputs[| 5] = nodeValue("Color 1", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white); inputs[| 5] = nodeValue("Oversample mode", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 2)
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Empty", "Clamp", "Repeat" ]);
inputs[| 6] = nodeValue("Color 2", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_black);
input_display_list = [ input_display_list = [
["Output", false], 0, ["Output", false], 0,
["Pattern", false], 1, 2, 3, 4, ["Noise", false], 1, 2, 3,
["Render", false], 5, 6, ["Texture", false], 4, 5,
]; ];
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone); outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny); inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
} }
static process_data = function(_outSurf, _data, _output_index, _array_index) { static process_data = function(_outSurf, _data, _output_index, _array_index) {
var _dim = _data[0]; var _dim = _data[0];
var _pos = _data[1]; var _sed = _data[1];
var _sca = _data[2]; var _pos = _data[2];
var _rot = _data[3]; var _sca = _data[3];
var _thk = _data[4]; var _sam = _data[4];
var _samTyp = _data[5];
var _clr0 = _data[5];
var _clr1 = _data[6];
_outSurf = surface_verify(_outSurf, _dim[0], _dim[1]); _outSurf = surface_verify(_outSurf, _dim[0], _dim[1]);
surface_set_target(_outSurf); surface_set_target(_outSurf);
draw_clear_alpha(0, 0); draw_clear_alpha(0, 0);
shader_set(shader); shader_set(shader);
shader_set_uniform_f(uniform_dim, _dim[0], _dim[1]); shader_set_uniform_f_array_safe(uniform_dim, [_dim[0], _dim[1]]);
shader_set_uniform_f(uniform_pos, _pos[0] / _dim[0], _pos[1] / _dim[1]); shader_set_uniform_f(uniform_sed, _sed);
shader_set_uniform_f(uniform_sca, _sca[0], _sca[1]); shader_set_uniform_f_array_safe(uniform_pos, _pos);
shader_set_uniform_f(uniform_rot, degtorad(_rot)); shader_set_uniform_f_array_safe(uniform_sca, _sca);
shader_set_uniform_f(uniform_thk, _thk); shader_set_uniform_i(uniform_sam, is_surface(_sam));
shader_set_uniform_i(uniform_samTyp, _samTyp);
shader_set_uniform_f_array_safe(uniform_clr0, colToVec4(_clr0)); if(is_surface(_sam))
shader_set_uniform_f_array_safe(uniform_clr1, colToVec4(_clr1)); draw_surface_stretched(_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); draw_sprite_ext(s_fx_pixel, 0, 0, 0, _dim[0], _dim[1], 0, c_white, 1);
shader_reset(); shader_reset();
surface_reset_target(); surface_reset_target();

View file

@ -45,7 +45,7 @@ function Node_Repeat(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
inputs[| 15] = nodeValue("Alpha over copy", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, CURVE_DEF_11 ); inputs[| 15] = nodeValue("Alpha over copy", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, CURVE_DEF_11 );
inputs[| 16] = nodeValue("Array select", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0, "Whether to select image from an array in order, or at random." ) inputs[| 16] = nodeValue("Array select", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0, "Whether to select image from an array in order, or at random." )
.setDisplay(VALUE_DISPLAY.enum_button, [ "Order", "Random" ]); .setDisplay(VALUE_DISPLAY.enum_button, [ "Order", "Random", "Spread" ]);
inputs[| 17] = nodeValue("Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, irandom(99999) ); inputs[| 17] = nodeValue("Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, irandom(99999) );
@ -122,11 +122,7 @@ function Node_Repeat(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
} }
} }
function update(frame = ANIMATOR.current_frame) { function doRepeat(_outSurf, _inSurf) {
var _inSurf = inputs[| 0].getValue();
if(is_array(_inSurf) && array_length(_inSurf) == 0) return;
if(!is_array(_inSurf) && !is_surface(_inSurf)) return;
var _dim = inputs[| 1].getValue(); var _dim = inputs[| 1].getValue();
var _amo = inputs[| 2].getValue(); var _amo = inputs[| 2].getValue();
var _pat = inputs[| 3].getValue(); var _pat = inputs[| 3].getValue();
@ -166,21 +162,10 @@ function Node_Repeat(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
var _an_bld = inputs[| 27].getValue(); var _an_bld = inputs[| 27].getValue();
var _an_alp = inputs[| 28].getValue(); var _an_alp = inputs[| 28].getValue();
var _surf, runx, runy, posx, posy, scax, scay, rot;
random_set_seed(_sed); random_set_seed(_sed);
inputs[| 4].setVisible( _pat == 0 || _pat == 1);
inputs[| 7].setVisible( _pat == 2);
inputs[| 8].setVisible( _pat == 2);
inputs[| 18].setVisible( _pat == 1);
inputs[| 19].setVisible( _pat == 1);
inputs[| 26].setVisible( _pat == 0);
var runx, runy, posx, posy, scax, scay, rot;
var _outSurf = outputs[| 0].getValue();
_outSurf = surface_verify(_outSurf, _dim[0], _dim[1]);
outputs[| 0].setValue(_outSurf);
surface_set_target(_outSurf); surface_set_target(_outSurf);
draw_clear_alpha(0, 0); draw_clear_alpha(0, 0);
runx = 0; runx = 0;
@ -232,7 +217,7 @@ function Node_Repeat(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
var _surf = _inSurf; var _surf = _inSurf;
if(is_array(_surf)) if(is_array(_inSurf))
_surf = array_safe_get(_inSurf, _arr? irandom(array_length(_inSurf) - 1) : i % array_length(_inSurf)); _surf = array_safe_get(_inSurf, _arr? irandom(array_length(_inSurf) - 1) : i % array_length(_inSurf));
var _sw = surface_get_width(_surf); var _sw = surface_get_width(_surf);
@ -264,7 +249,46 @@ function Node_Repeat(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
if(_rsta == 2) runy += _sh / 2; if(_rsta == 2) runy += _sh / 2;
} }
surface_reset_target(); surface_reset_target();
}
return _outSurf; function update(frame = ANIMATOR.current_frame) {
var _inSurf = inputs[| 0].getValue();
if(is_array(_inSurf) && array_length(_inSurf) == 0) return;
if(!is_array(_inSurf) && !is_surface(_inSurf)) return;
var _dim = inputs[| 1].getValue();
var _pat = inputs[| 3].getValue();
var _arr = inputs[| 16].getValue();
inputs[| 4].setVisible( _pat == 0 || _pat == 1);
inputs[| 7].setVisible( _pat == 2);
inputs[| 8].setVisible( _pat == 2);
inputs[| 18].setVisible( _pat == 1);
inputs[| 19].setVisible( _pat == 1);
inputs[| 26].setVisible( _pat == 0);
var runx, runy, posx, posy, scax, scay, rot;
var _outSurf = outputs[| 0].getValue();
if(is_array(_inSurf) && _arr == 2) {
if(!is_array(_outSurf)) surface_free(_outSurf);
else {
for( var i = 0; i < array_length(_outSurf); i++ )
surface_free(_outSurf[i]);
}
for( var i = 0; i < array_length(_inSurf); i++ ) {
var _out = surface_create(_dim[0], _dim[1]);
_outSurf[i] = _out;
doRepeat(_out, _inSurf[i]);
}
outputs[| 0].setValue(_outSurf);
} else {
_outSurf = surface_verify(_outSurf, _dim[0], _dim[1]);
outputs[| 0].setValue(_outSurf);
doRepeat(_outSurf, _inSurf);
}
} }
} }

View file

@ -8,9 +8,9 @@
#region classes #region classes
enum NOTI_TYPE { enum NOTI_TYPE {
log = 1 << 0, log = 1 << 0,
warning = 1 << 1, warning = 1 << 1,
error = 1 << 2, error = 1 << 2,
} }
function notification(type, str, icon = noone, color = c_ui_blue_dkgrey, life = -1) constructor { function notification(type, str, icon = noone, color = c_ui_blue_dkgrey, life = -1) constructor {
@ -59,6 +59,9 @@
var noti = new notification(NOTI_TYPE.warning, str, icon, c_ui_orange, PREF_MAP[? "notification_time"]); var noti = new notification(NOTI_TYPE.warning, str, icon, c_ui_orange, PREF_MAP[? "notification_time"]);
ds_list_add(STATUSES, noti); ds_list_add(STATUSES, noti);
ds_list_add(WARNING, noti); ds_list_add(WARNING, noti);
show_debug_message(str);
dialogCall(o_dialog_warning, mouse_mx + ui(16), mouse_my + ui(16)).warning_text = str;
if(PANEL_MENU) { if(PANEL_MENU) {
PANEL_MENU.noti_flash = 1; PANEL_MENU.noti_flash = 1;
@ -73,11 +76,16 @@
return noti; return noti;
} }
function noti_error(str, icon = noone) { function noti_error(str, icon = noone, ref = noone) {
var noti = new notification(NOTI_TYPE.error, str, icon, c_ui_red); var noti = new notification(NOTI_TYPE.error, str, icon, c_ui_red);
ds_list_add(STATUSES, noti); ds_list_add(STATUSES, noti);
ds_list_add(ERRORS, noti); ds_list_add(ERRORS, noti);
if(ref) {
var onClick = function() { PANEL_GRAPH.focusNode(self.ref); };
noti.ref = ref;
noti.onClick = method(noti, onClick);
}
return noti; return noti;
} }

View file

@ -4,7 +4,7 @@ enum RENDER_TYPE {
full = 2 full = 2
} }
global.RENDER_LOG = false; global.RENDER_LOG = true;
function __nodeLeafList(_list, _queue) { function __nodeLeafList(_list, _queue) {
for( var i = 0; i < ds_list_size(_list); i++ ) { for( var i = 0; i < ds_list_size(_list); i++ ) {

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_2d_light", "name": "sh_2d_light",
"type": 1,
"parent": { "parent": {
"name": "filter", "name": "blend",
"path": "folders/shader/filter.yy", "path": "folders/shader/blend.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_alpha_cutoff", "name": "sh_alpha_cutoff",
"type": 1,
"parent": { "parent": {
"name": "filter", "name": "filter",
"path": "folders/shader/filter.yy", "path": "folders/shader/filter.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_alpha_grey", "name": "sh_alpha_grey",
"type": 1,
"parent": { "parent": {
"name": "filter", "name": "filter",
"path": "folders/shader/filter.yy", "path": "folders/shader/filter.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_alpha_hash", "name": "sh_alpha_hash",
"type": 1,
"parent": { "parent": {
"name": "filter", "name": "filter",
"path": "folders/shader/filter.yy", "path": "folders/shader/filter.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_ani_noise", "name": "sh_ani_noise",
"type": 1,
"parent": { "parent": {
"name": "generator", "name": "generator",
"path": "folders/shader/generator.yy", "path": "folders/shader/generator.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_atlas", "name": "sh_atlas",
"type": 1,
"parent": { "parent": {
"name": "filter", "name": "filter",
"path": "folders/shader/filter.yy", "path": "folders/shader/filter.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_average", "name": "sh_average",
"type": 1,
"parent": { "parent": {
"name": "blur", "name": "blur",
"path": "folders/shader/blur.yy", "path": "folders/shader/blur.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_bevel", "name": "sh_bevel",
"type": 1,
"parent": { "parent": {
"name": "3d", "name": "3d",
"path": "folders/shader/3d.yy", "path": "folders/shader/3d.yy",
}, },
"type": 1,
} }

View file

@ -6,6 +6,7 @@ varying vec4 v_vColour;
uniform sampler2D fore; uniform sampler2D fore;
uniform float opacity; uniform float opacity;
uniform int preserveAlpha;
void main() { void main() {
vec4 _col0 = texture2D( gm_BaseTexture, v_vTexcoord ); vec4 _col0 = texture2D( gm_BaseTexture, v_vTexcoord );
@ -15,6 +16,7 @@ void main() {
float bright = dot(_col1.rgb, vec3(0.2126, 0.7152, 0.0722)); float bright = dot(_col1.rgb, vec3(0.2126, 0.7152, 0.0722));
float aa = _col0.a + bright * opacity; float aa = _col0.a + bright * opacity;
res.a = aa; res.a = aa;
if(preserveAlpha == 1) res.a = _col0.a;
gl_FragColor = res; gl_FragColor = res;
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_blend_alpha_addition", "name": "sh_blend_alpha_addition",
"type": 1,
"parent": { "parent": {
"name": "blend", "name": "blend",
"path": "folders/shader/blend.yy", "path": "folders/shader/blend.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_blend_multiply_alpha", "name": "sh_blend_multiply_alpha",
"type": 1,
"parent": { "parent": {
"name": "blend", "name": "blend",
"path": "folders/shader/blend.yy", "path": "folders/shader/blend.yy",
}, },
"type": 1,
} }

View file

@ -5,6 +5,7 @@ varying vec2 v_vTexcoord;
varying vec4 v_vColour; varying vec4 v_vColour;
uniform vec2 dimension; uniform vec2 dimension;
uniform int preserveAlpha;
uniform sampler2D fore; uniform sampler2D fore;
uniform vec2 position; uniform vec2 position;
uniform vec2 scale; uniform vec2 scale;

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_blend_screen_alpha", "name": "sh_blend_screen_alpha",
"type": 1,
"parent": { "parent": {
"name": "blend", "name": "blend",
"path": "folders/shader/blend.yy", "path": "folders/shader/blend.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_blend_subtract_alpha", "name": "sh_blend_subtract_alpha",
"type": 1,
"parent": { "parent": {
"name": "blend", "name": "blend",
"path": "folders/shader/blend.yy", "path": "folders/shader/blend.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_bloom_pass", "name": "sh_bloom_pass",
"type": 1,
"parent": { "parent": {
"name": "filter", "name": "filter",
"path": "folders/shader/filter.yy", "path": "folders/shader/filter.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_blur_alpha", "name": "sh_blur_alpha",
"type": 1,
"parent": { "parent": {
"name": "blur", "name": "blur",
"path": "folders/shader/blur.yy", "path": "folders/shader/blur.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_blur_bokeh", "name": "sh_blur_bokeh",
"type": 1,
"parent": { "parent": {
"name": "blur", "name": "blur",
"path": "folders/shader/blur.yy", "path": "folders/shader/blur.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_blur_box_contrast", "name": "sh_blur_box_contrast",
"type": 1,
"parent": { "parent": {
"name": "blur", "name": "blur",
"path": "folders/shader/blur.yy", "path": "folders/shader/blur.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_blur_directional", "name": "sh_blur_directional",
"type": 1,
"parent": { "parent": {
"name": "blur", "name": "blur",
"path": "folders/shader/blur.yy", "path": "folders/shader/blur.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_blur_final", "name": "sh_blur_final",
"type": 1,
"parent": { "parent": {
"name": "blur", "name": "blur",
"path": "folders/shader/blur.yy", "path": "folders/shader/blur.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_blur_gaussian", "name": "sh_blur_gaussian",
"type": 1,
"parent": { "parent": {
"name": "blur", "name": "blur",
"path": "folders/shader/blur.yy", "path": "folders/shader/blur.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_blur_radial", "name": "sh_blur_radial",
"type": 1,
"parent": { "parent": {
"name": "blur", "name": "blur",
"path": "folders/shader/blur.yy", "path": "folders/shader/blur.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_blur_simple", "name": "sh_blur_simple",
"type": 1,
"parent": { "parent": {
"name": "blur", "name": "blur",
"path": "folders/shader/blur.yy", "path": "folders/shader/blur.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_blur_zoom", "name": "sh_blur_zoom",
"type": 1,
"parent": { "parent": {
"name": "blur", "name": "blur",
"path": "folders/shader/blur.yy", "path": "folders/shader/blur.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_bw", "name": "sh_bw",
"type": 1,
"parent": { "parent": {
"name": "filter", "name": "filter",
"path": "folders/shader/filter.yy", "path": "folders/shader/filter.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_camera", "name": "sh_camera",
"type": 1,
"parent": { "parent": {
"name": "shader", "name": "shader",
"path": "folders/shader.yy", "path": "folders/shader.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_cell_noise", "name": "sh_cell_noise",
"type": 1,
"parent": { "parent": {
"name": "generator", "name": "generator",
"path": "folders/shader/generator.yy", "path": "folders/shader/generator.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_cell_noise_crystal", "name": "sh_cell_noise_crystal",
"type": 1,
"parent": { "parent": {
"name": "generator", "name": "generator",
"path": "folders/shader/generator.yy", "path": "folders/shader/generator.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_cell_noise_edge", "name": "sh_cell_noise_edge",
"type": 1,
"parent": { "parent": {
"name": "generator", "name": "generator",
"path": "folders/shader/generator.yy", "path": "folders/shader/generator.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_cell_noise_random", "name": "sh_cell_noise_random",
"type": 1,
"parent": { "parent": {
"name": "generator", "name": "generator",
"path": "folders/shader/generator.yy", "path": "folders/shader/generator.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_cell_noise_round", "name": "sh_cell_noise_round",
"type": 1,
"parent": { "parent": {
"name": "generator", "name": "generator",
"path": "folders/shader/generator.yy", "path": "folders/shader/generator.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_channel_A", "name": "sh_channel_A",
"type": 1,
"parent": { "parent": {
"name": "channels", "name": "channels",
"path": "folders/shader/channels.yy", "path": "folders/shader/channels.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_channel_B", "name": "sh_channel_B",
"type": 1,
"parent": { "parent": {
"name": "channels", "name": "channels",
"path": "folders/shader/channels.yy", "path": "folders/shader/channels.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_channel_B_grey", "name": "sh_channel_B_grey",
"type": 1,
"parent": { "parent": {
"name": "channels", "name": "channels",
"path": "folders/shader/channels.yy", "path": "folders/shader/channels.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_channel_G", "name": "sh_channel_G",
"type": 1,
"parent": { "parent": {
"name": "channels", "name": "channels",
"path": "folders/shader/channels.yy", "path": "folders/shader/channels.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_channel_G_grey", "name": "sh_channel_G_grey",
"type": 1,
"parent": { "parent": {
"name": "channels", "name": "channels",
"path": "folders/shader/channels.yy", "path": "folders/shader/channels.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_channel_H", "name": "sh_channel_H",
"type": 1,
"parent": { "parent": {
"name": "channels", "name": "channels",
"path": "folders/shader/channels.yy", "path": "folders/shader/channels.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_channel_R", "name": "sh_channel_R",
"type": 1,
"parent": { "parent": {
"name": "channels", "name": "channels",
"path": "folders/shader/channels.yy", "path": "folders/shader/channels.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_channel_R_grey", "name": "sh_channel_R_grey",
"type": 1,
"parent": { "parent": {
"name": "channels", "name": "channels",
"path": "folders/shader/channels.yy", "path": "folders/shader/channels.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_channel_S", "name": "sh_channel_S",
"type": 1,
"parent": { "parent": {
"name": "channels", "name": "channels",
"path": "folders/shader/channels.yy", "path": "folders/shader/channels.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_channel_V", "name": "sh_channel_V",
"type": 1,
"parent": { "parent": {
"name": "channels", "name": "channels",
"path": "folders/shader/channels.yy", "path": "folders/shader/channels.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_checkerboard", "name": "sh_checkerboard",
"type": 1,
"parent": { "parent": {
"name": "generator", "name": "generator",
"path": "folders/shader/generator.yy", "path": "folders/shader/generator.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_chromatic_aberration", "name": "sh_chromatic_aberration",
"type": 1,
"parent": { "parent": {
"name": "filter", "name": "filter",
"path": "folders/shader/filter.yy", "path": "folders/shader/filter.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_clean_shape", "name": "sh_clean_shape",
"type": 1,
"parent": { "parent": {
"name": "filter", "name": "filter",
"path": "folders/shader/filter.yy", "path": "folders/shader/filter.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_color_adjust", "name": "sh_color_adjust",
"type": 1,
"parent": { "parent": {
"name": "filter", "name": "filter",
"path": "folders/shader/filter.yy", "path": "folders/shader/filter.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_color_picker_hue", "name": "sh_color_picker_hue",
"type": 1,
"parent": { "parent": {
"name": "filter", "name": "filter",
"path": "folders/shader/filter.yy", "path": "folders/shader/filter.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_color_picker_value", "name": "sh_color_picker_value",
"type": 1,
"parent": { "parent": {
"name": "filter", "name": "filter",
"path": "folders/shader/filter.yy", "path": "folders/shader/filter.yy",
}, },
"type": 1,
} }

View file

@ -7,6 +7,7 @@ varying vec4 v_vColour;
uniform vec4 colorFrom[32]; uniform vec4 colorFrom[32];
uniform int colorFrom_amo; uniform int colorFrom_amo;
uniform float treshold; uniform float treshold;
uniform int invert;
vec3 rgb2xyz( vec3 c ) { vec3 rgb2xyz( vec3 c ) {
vec3 tmp; vec3 tmp;
@ -40,7 +41,7 @@ void main() {
vec3 lab = rgb2lab(col.rgb); vec3 lab = rgb2lab(col.rgb);
float min_df = treshold; float min_df = 999.;
for(int i = 0; i < colorFrom_amo; i++) { for(int i = 0; i < colorFrom_amo; i++) {
vec3 labFrom = rgb2lab(colorFrom[i].rgb); vec3 labFrom = rgb2lab(colorFrom[i].rgb);
@ -48,8 +49,8 @@ void main() {
min_df = min(min_df, df); min_df = min(min_df, df);
} }
if(min_df < treshold) if((invert == 0 && min_df <= treshold) || (invert == 1 && min_df > treshold))
gl_FragColor = vec4(1., 1., 1., 0.); gl_FragColor = vec4(0.);
else else
gl_FragColor = baseColor; gl_FragColor = baseColor;
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_color_remove", "name": "sh_color_remove",
"type": 1,
"parent": { "parent": {
"name": "filter", "name": "filter",
"path": "folders/shader/filter.yy", "path": "folders/shader/filter.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_color_replace", "name": "sh_color_replace",
"type": 1,
"parent": { "parent": {
"name": "filter", "name": "filter",
"path": "folders/shader/filter.yy", "path": "folders/shader/filter.yy",
}, },
"type": 1,
} }

View file

@ -9,10 +9,14 @@ uniform vec4 gradient_color[16];
uniform float gradient_time[16]; uniform float gradient_time[16];
uniform int keys; uniform int keys;
uniform float gradient_shift; uniform float gradient_shift;
uniform int multiply_alpha;
void main() { void main() {
vec4 _col = v_vColour * texture2D( gm_BaseTexture, v_vTexcoord ); vec4 _col = v_vColour * texture2D( gm_BaseTexture, v_vTexcoord );
float prog = abs(dot(_col.rgb, vec3(0.2126, 0.7152, 0.0722)) + gradient_shift); float prog = abs(dot(_col.rgb, vec3(0.2126, 0.7152, 0.0722)) + gradient_shift);
if(multiply_alpha == 1)
prog *= _col.a;
if(prog > 1.) { if(prog > 1.) {
if(prog == floor(prog)) if(prog == floor(prog))
prog = 1.; prog = 1.;

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_colorize", "name": "sh_colorize",
"type": 1,
"parent": { "parent": {
"name": "filter", "name": "filter",
"path": "folders/shader/filter.yy", "path": "folders/shader/filter.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_combine_hsv", "name": "sh_combine_hsv",
"type": 1,
"parent": { "parent": {
"name": "filter", "name": "filter",
"path": "folders/shader/filter.yy", "path": "folders/shader/filter.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_combine_rgb", "name": "sh_combine_rgb",
"type": 1,
"parent": { "parent": {
"name": "filter", "name": "filter",
"path": "folders/shader/filter.yy", "path": "folders/shader/filter.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_content_sampler", "name": "sh_content_sampler",
"type": 1,
"parent": { "parent": {
"name": "shader", "name": "shader",
"path": "folders/shader.yy", "path": "folders/shader.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_convolution", "name": "sh_convolution",
"type": 1,
"parent": { "parent": {
"name": "filter", "name": "filter",
"path": "folders/shader/filter.yy", "path": "folders/shader/filter.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_corner", "name": "sh_corner",
"type": 1,
"parent": { "parent": {
"name": "filter", "name": "filter",
"path": "folders/shader/filter.yy", "path": "folders/shader/filter.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_corner_erode", "name": "sh_corner_erode",
"type": 1,
"parent": { "parent": {
"name": "filter", "name": "filter",
"path": "folders/shader/filter.yy", "path": "folders/shader/filter.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_curve", "name": "sh_curve",
"type": 1,
"parent": { "parent": {
"name": "filter", "name": "filter",
"path": "folders/shader/filter.yy", "path": "folders/shader/filter.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_de_corner", "name": "sh_de_corner",
"type": 1,
"parent": { "parent": {
"name": "filter", "name": "filter",
"path": "folders/shader/filter.yy", "path": "folders/shader/filter.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_de_stray", "name": "sh_de_stray",
"type": 1,
"parent": { "parent": {
"name": "filter", "name": "filter",
"path": "folders/shader/filter.yy", "path": "folders/shader/filter.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_dilate", "name": "sh_dilate",
"type": 1,
"parent": { "parent": {
"name": "warp", "name": "warp",
"path": "folders/shader/warp.yy", "path": "folders/shader/warp.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_displace", "name": "sh_displace",
"type": 1,
"parent": { "parent": {
"name": "warp", "name": "warp",
"path": "folders/shader/warp.yy", "path": "folders/shader/warp.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_dither", "name": "sh_dither",
"type": 1,
"parent": { "parent": {
"name": "filter", "name": "filter",
"path": "folders/shader/filter.yy", "path": "folders/shader/filter.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_draw_normal", "name": "sh_draw_normal",
"type": 1,
"parent": { "parent": {
"name": "blend", "name": "blend",
"path": "folders/shader/blend.yy", "path": "folders/shader/blend.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_draw_surface_part_tiled", "name": "sh_draw_surface_part_tiled",
"type": 1,
"parent": { "parent": {
"name": "draw", "name": "draw",
"path": "folders/shader/draw.yy", "path": "folders/shader/draw.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_draw_vertex_aa", "name": "sh_draw_vertex_aa",
"type": 1,
"parent": { "parent": {
"name": "draw", "name": "draw",
"path": "folders/shader/draw.yy", "path": "folders/shader/draw.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_edge_detect", "name": "sh_edge_detect",
"type": 1,
"parent": { "parent": {
"name": "filter", "name": "filter",
"path": "folders/shader/filter.yy", "path": "folders/shader/filter.yy",
}, },
"type": 1,
} }

View file

@ -41,7 +41,7 @@ void main() {
} }
vec4 sam = texture2D( gm_BaseTexture, pxs ); vec4 sam = texture2D( gm_BaseTexture, pxs );
if((alpha == 0 && length(sam.rgb) == 0.) || (alpha == 1 && sam.a == 0.)) { if((alpha == 0 && length(sam.rgb) * sam.a == 0.) || (alpha == 1 && sam.a == 0.)) {
gl_FragColor = fill; gl_FragColor = fill;
break; break;
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_erode", "name": "sh_erode",
"type": 1,
"parent": { "parent": {
"name": "filter", "name": "filter",
"path": "folders/shader/filter.yy", "path": "folders/shader/filter.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_fd_add_velocity_glsl", "name": "sh_fd_add_velocity_glsl",
"type": 1,
"parent": { "parent": {
"name": "Shaders", "name": "Shaders",
"path": "folders/functions/fluid sim/Shaders.yy", "path": "folders/functions/fluid sim/Shaders.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_fd_advect_material_a_16_glsl", "name": "sh_fd_advect_material_a_16_glsl",
"type": 1,
"parent": { "parent": {
"name": "Shaders", "name": "Shaders",
"path": "folders/functions/fluid sim/Shaders.yy", "path": "folders/functions/fluid sim/Shaders.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_fd_advect_material_a_8_glsl", "name": "sh_fd_advect_material_a_8_glsl",
"type": 1,
"parent": { "parent": {
"name": "Shaders", "name": "Shaders",
"path": "folders/functions/fluid sim/Shaders.yy", "path": "folders/functions/fluid sim/Shaders.yy",
}, },
"type": 1,
} }

View file

@ -2,9 +2,9 @@
"resourceType": "GMShader", "resourceType": "GMShader",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "sh_fd_advect_material_rgba_16_glsl", "name": "sh_fd_advect_material_rgba_16_glsl",
"type": 1,
"parent": { "parent": {
"name": "Shaders", "name": "Shaders",
"path": "folders/functions/fluid sim/Shaders.yy", "path": "folders/functions/fluid sim/Shaders.yy",
}, },
"type": 1,
} }

Some files were not shown because too many files have changed in this diff Show more