mirror of
https://github.com/Ttanasart-pt/Pixel-Composer.git
synced 2025-03-03 14:14:49 +01:00
Source code mishap fix 2
This commit is contained in:
parent
bc98b195f8
commit
d11d522899
186 changed files with 636 additions and 375 deletions
|
@ -30,7 +30,6 @@
|
|||
{"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":"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":"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,},
|
||||
|
@ -450,7 +449,6 @@
|
|||
{"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":"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":"sh_color_replace","path":"shaders/sh_color_replace/sh_color_replace.yy",},"order":8,},
|
||||
{"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":"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":"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":"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,},
|
||||
|
@ -894,6 +893,7 @@
|
|||
{"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":"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":"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,},
|
||||
|
@ -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":"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":"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":"widget","folderPath":"folders/dialog/widget.yy","order":14,},
|
||||
{"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":"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":"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":"compat","folderPath":"folders/functions/compat.yy","order":13,},
|
||||
{"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":"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":"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":"regex","folderPath":"folders/functions/regex.yy","order":11,},
|
||||
{"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":"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":"menu","folderPath":"folders/dialog/menu.yy","order":18,},
|
||||
],
|
||||
"AudioGroups": [
|
||||
{"resourceType":"GMAudioGroup","resourceVersion":"1.3","name":"audiogroup_default","targets":-1,},
|
||||
|
|
|
@ -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) {
|
||||
var _realpath = environment_get_variable("LOCALAPPDATA") + "\\Pixels_Composer\\Palettes";
|
||||
var _windir = environment_get_variable("WINDIR") + "\\explorer.exe";
|
||||
execute_shell_simple(_windir, _realpath);
|
||||
execute_shell(_windir, _realpath);
|
||||
}
|
||||
bx -= ui(32);
|
||||
#endregion
|
||||
|
|
|
@ -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) {
|
||||
var _realpath = environment_get_variable("LOCALAPPDATA") + "\\Pixels_Composer\\Gradients";
|
||||
var _windir = environment_get_variable("WINDIR") + "\\explorer.exe";
|
||||
execute_shell_simple(_windir, _realpath);
|
||||
execute_shell(_windir, _realpath);
|
||||
}
|
||||
bx -= ui(32);
|
||||
#endregion
|
||||
|
|
|
@ -2,6 +2,6 @@
|
|||
event_inherited();
|
||||
|
||||
#region data
|
||||
dialog_w = ui(480);
|
||||
dialog_h = ui(140);
|
||||
dialog_w = ui(560);
|
||||
dialog_h = ui(160);
|
||||
#endregion
|
|
@ -21,7 +21,7 @@ draw_set_alpha(1);
|
|||
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));
|
||||
|
||||
var bw = ui(96), bh = TEXTBOX_HEIGHT;
|
||||
var bw = ui(112), bh = TEXTBOX_HEIGHT;
|
||||
var bx1 = dialog_x + dialog_w - ui(16);
|
||||
var by1 = dialog_y + dialog_h - ui(16);
|
||||
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);
|
||||
draw_text(bx0 + bw / 2, by0 + bh / 2, get_text("migrate_files", "Migrate files"));
|
||||
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();
|
||||
}
|
||||
|
||||
bx0 = dialog_x + ui(16);
|
||||
bw = ui(160);
|
||||
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") + "...");
|
||||
if(b == 2) {
|
||||
var path = string(DIRECTORY);
|
||||
if(file_exists(path)) shellOpenExplorer(path);
|
||||
if(directory_exists(DIRECTORY))
|
||||
shellOpenExplorer(DIRECTORY);
|
||||
}
|
||||
#endregion
|
|
@ -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) {
|
||||
var _realpath = environment_get_variable("LOCALAPPDATA") + "\\Pixels_Composer\\Palettes";
|
||||
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);
|
||||
bx -= ui(32);
|
||||
|
|
|
@ -1,12 +1,16 @@
|
|||
/// @description init
|
||||
#region size
|
||||
draw_set_font(f_p0);
|
||||
draw_set_font(f_p2);
|
||||
|
||||
var ww = string_width(warning_text);
|
||||
var hh = string_height(warning_text);
|
||||
var ww = string_width_ext(warning_text, -1, 1000);
|
||||
var hh = string_height_ext(warning_text, -1, ww);
|
||||
|
||||
dialog_w = ww + 48;
|
||||
dialog_h = hh + 48;
|
||||
dialog_w = ww + padding * 2 + ui(32);
|
||||
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
|
||||
|
||||
event_inherited();
|
||||
|
|
|
@ -2,7 +2,10 @@
|
|||
event_inherited();
|
||||
|
||||
#region data
|
||||
destroy_on_click_out = true;
|
||||
anchor = ANCHOR.left | ANCHOR.top;
|
||||
|
||||
padding = ui(8);
|
||||
destroy_on_click_out = true;
|
||||
warning_text = "";
|
||||
life = 300;
|
||||
#endregion
|
|
@ -2,13 +2,20 @@
|
|||
if !ready exit;
|
||||
|
||||
#region base UI
|
||||
draw_sprite_stretched(THEME.dialog_bg, 0, dialog_x, dialog_y, dialog_w, dialog_h);
|
||||
if(sFOCUS)
|
||||
draw_sprite_stretched_ext(THEME.dialog_active, 0, dialog_x, dialog_y, dialog_w, dialog_h, COLORS._main_accent, 1);
|
||||
var aa = 0.75;
|
||||
if(point_in_rectangle(mouse_mx, mouse_my, dialog_x, dialog_y, dialog_x + dialog_w, dialog_y + dialog_h)) {
|
||||
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
|
||||
|
||||
#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
|
|
@ -5,6 +5,8 @@
|
|||
LOAD_SAMPLE();
|
||||
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);
|
||||
#endregion
|
|
@ -19,14 +19,12 @@
|
|||
#region panels
|
||||
if(PANEL_MAIN == 0) setPanel();
|
||||
|
||||
PANEL_MAIN.draw();
|
||||
|
||||
//var surf = surface_get_target();
|
||||
//try
|
||||
// PANEL_MAIN.draw();
|
||||
//catch(e) {
|
||||
// while(surface_get_target() != surf)
|
||||
// surface_reset_target();
|
||||
// noti_warning("UI error: " + exception_print(e));
|
||||
//}
|
||||
var surf = surface_get_target();
|
||||
try
|
||||
PANEL_MAIN.draw();
|
||||
catch(e) {
|
||||
while(surface_get_target() != surf)
|
||||
surface_reset_target();
|
||||
noti_warning("UI error: " + exception_print(e));
|
||||
}
|
||||
#endregion
|
|
@ -36,11 +36,11 @@
|
|||
|
||||
environment_set_variable("IMGUI_DIALOG_WIDTH", string(800));
|
||||
|
||||
var cmd = "assoc .pxc=\"" + string(program_directory) + "PixelComposer.exe\"";
|
||||
execute_shell("", cmd);
|
||||
var cmd = ".pxc=\"" + string(program_directory) + "PixelComposer.exe\"";
|
||||
execute_shell("assoc", cmd);
|
||||
|
||||
var cmd = "assoc .pxcc=\"" + string(program_directory) + "PixelComposer.exe\"";
|
||||
execute_shell("", cmd);
|
||||
var cmd = ".pxcc=\"" + string(program_directory) + "PixelComposer.exe\"";
|
||||
execute_shell("assoc", cmd);
|
||||
#endregion
|
||||
|
||||
#region parameter
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
#macro AREA_DEF [ 16, 16, 4, 4, AREA_SHAPE.rectangle ]
|
||||
|
||||
enum AREA_DISTRIBUTION {
|
||||
area,
|
||||
border
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
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));
|
||||
for( var i = 0; i < ds_list_size(list); i++ )
|
||||
arr[i] = list[| i];
|
||||
|
@ -6,13 +9,26 @@ function array_create_from_list(list) {
|
|||
}
|
||||
|
||||
function array_safe_set(arr, index, value) {
|
||||
if(!is_array(arr)) return def;
|
||||
if(index < 0) return;
|
||||
if(index >= array_length(arr)) return;
|
||||
|
||||
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 >= array_length(arr)) return def;
|
||||
return arr[index];
|
||||
|
@ -46,6 +62,19 @@ function array_push_unique(arr, val) {
|
|||
function array_append(arr, arr0) {
|
||||
for( var i = 0; i < array_length(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() {
|
||||
|
|
|
@ -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) {
|
||||
static uni_bor = shader_get_uniform(sh_blur_gaussian, "sampleMode");
|
||||
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_ovc = shader_get_uniform(sh_blur_gaussian, "overColor");
|
||||
|
||||
var hori = surface_create_valid(surface_get_width(surface), surface_get_height(surface));
|
||||
var vert = 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));
|
||||
__blur_vert = surface_verify(__blur_vert, surface_get_width(surface), surface_get_height(surface));
|
||||
|
||||
#region kernel generation
|
||||
size = max(1, round(size));
|
||||
|
@ -26,37 +31,35 @@ function surface_apply_gaussian(surface, size, bg = false, bg_c = c_white, sampl
|
|||
}
|
||||
#endregion
|
||||
|
||||
BLEND_OVERRIDE
|
||||
surface_set_target(hori);
|
||||
BLEND_OVERRIDE;
|
||||
surface_set_target(__blur_hori);
|
||||
draw_clear_alpha(bg_c, bg);
|
||||
|
||||
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(uni_wei, gau_array);
|
||||
shader_set_uniform_f_array_safe(uni_dim, [ surface_get_width(surface), surface_get_height(surface) ]);
|
||||
shader_set_uniform_f_array_safe(uni_wei, gau_array);
|
||||
|
||||
shader_set_uniform_i(uni_bor, sampleMode);
|
||||
shader_set_uniform_i(uni_sze, size);
|
||||
shader_set_uniform_i(uni_hor, 1);
|
||||
|
||||
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);
|
||||
shader_reset();
|
||||
surface_reset_target();
|
||||
|
||||
surface_set_target(vert);
|
||||
surface_set_target(__blur_vert);
|
||||
draw_clear_alpha(bg_c, bg);
|
||||
|
||||
shader_set(sh_blur_gaussian);
|
||||
shader_set_uniform_i(uni_hor, 0);
|
||||
|
||||
draw_surface_safe(hori, 0, 0);
|
||||
draw_surface_safe(__blur_hori, 0, 0);
|
||||
shader_reset();
|
||||
surface_reset_target();
|
||||
BLEND_NORMAL
|
||||
BLEND_NORMAL;
|
||||
|
||||
surface_free(hori);
|
||||
|
||||
return vert;
|
||||
return __blur_vert;
|
||||
}
|
|
@ -27,3 +27,28 @@ function colorMultiply(c1, c2) {
|
|||
|
||||
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;
|
||||
}
|
|
@ -1,15 +1,43 @@
|
|||
#macro CURVE_DEF_01 [0, 1/3, 1/3, 2/3, 2/3, 1]
|
||||
#macro CURVE_DEF_10 [1, 1/3, 2/3, 2/3, 1/3, 0]
|
||||
#macro CURVE_DEF_11 [1, 1/3, 1, 2/3, 1, 1]
|
||||
//curve format [-cx0, -cy0, x0, y0, +cx0, +cy0, -cx1, -cy1, x1, y1, +cx1, +cy1]
|
||||
//segment format [y0, +cx0, +cy0, -cx1, -cy1, y1];
|
||||
#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) {
|
||||
static SAMPLE = 32;
|
||||
function draw_curve(x0, y0, _w, _h, _bz) {
|
||||
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;
|
||||
|
||||
for(var i = 0; i <= SAMPLE; i++) {
|
||||
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 _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 [
|
||||
power(1 - t, 3) * 0
|
||||
+ 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 ed = 1;
|
||||
|
||||
var _xt = _x;
|
||||
var _binRep = 5;
|
||||
var _binRep = 8;
|
||||
|
||||
if(_x == 0) return _bz[0];
|
||||
if(_x == 1) return _bz[5];
|
||||
if(_x <= 0) return _bz[0];
|
||||
if(_x >= 1) return _bz[5];
|
||||
if(_bz[0] == _bz[2] && _bz[0] == _bz[4] && _bz[0] == _bz[5]) return _bz[0];
|
||||
|
||||
repeat(_binRep) {
|
||||
|
@ -55,7 +119,7 @@ function eval_curve_bezier_cubic_x(_bz, _x, _prec = 0.00001) {
|
|||
+ power(_xt, 3) * 1;
|
||||
|
||||
if(abs(_ftx - _x) < _prec)
|
||||
return eval_curve_bezier_cubic_t(_bz, _xt);
|
||||
return eval_curve_segment_t(_bz, _xt);
|
||||
|
||||
if(_xt < _x)
|
||||
st = _xt;
|
||||
|
@ -83,41 +147,14 @@ function eval_curve_bezier_cubic_x(_bz, _x, _prec = 0.00001) {
|
|||
break;
|
||||
}
|
||||
|
||||
return eval_curve_bezier_cubic_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];
|
||||
_xt = clamp(_xt, 0, 1);
|
||||
return eval_curve_segment_t(_bz, _xt);
|
||||
}
|
||||
|
||||
function bezier_range(bz) {
|
||||
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) {
|
||||
return power(rat, 3);
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ function FileObject(_name, _path) constructor {
|
|||
spr = -1;
|
||||
content = -1;
|
||||
surface = noone;
|
||||
meta = noone;
|
||||
|
||||
static getSurface = function() {
|
||||
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);
|
||||
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 {
|
||||
|
@ -64,7 +90,7 @@ function DirectoryObject(name, path) constructor {
|
|||
var f = new FileObject(string_replace(file, filename_ext(file), ""), path + "\\" + file);
|
||||
ds_list_add(content, f);
|
||||
|
||||
if(filename_ext(file) == ".png") {
|
||||
if(string_lower(filename_ext(file)) == ".png") {
|
||||
var icon_path = path + "\\" + file;
|
||||
var amo = 1;
|
||||
var p = string_pos("strip", icon_path);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
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;
|
||||
|
||||
var mig = oldDir + "migration";
|
||||
|
|
|
@ -93,7 +93,6 @@ function Node_Image_Sequence(_x, _y, _group = -1) : Node(_x, _y, _group) constru
|
|||
}
|
||||
|
||||
function updatePaths(paths) {
|
||||
print(paths);
|
||||
for(var i = 0; i < array_length(spr); i++) {
|
||||
if(spr[i] && sprite_exists(spr[i]))
|
||||
sprite_delete(spr[i]);
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
|
||||
function Node_Iterator_Output(_x, _y, _group = -1) : Node_Group_Output(_x, _y, _group) constructor {
|
||||
name = "Output";
|
||||
color = COLORS.node_blend_loop;
|
||||
|
|
|
@ -1,73 +1,68 @@
|
|||
function Node_Grid_Hex(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor {
|
||||
name = "Hexagonal Grid";
|
||||
function Node_Noise_Hex(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor {
|
||||
name = "Hexagonal Noise";
|
||||
|
||||
shader = sh_grid_hex;
|
||||
shader = sh_noise_grid_hex;
|
||||
uniform_dim = shader_get_uniform(shader, "dimension");
|
||||
uniform_sed = shader_get_uniform(shader, "seed");
|
||||
uniform_pos = shader_get_uniform(shader, "position");
|
||||
uniform_sca = shader_get_uniform(shader, "scale");
|
||||
uniform_rot = shader_get_uniform(shader, "angle");
|
||||
uniform_thk = shader_get_uniform(shader, "thick");
|
||||
uniform_ang = shader_get_uniform(shader, "angle");
|
||||
|
||||
uniform_clr0 = shader_get_uniform(shader, "color0");
|
||||
uniform_clr1 = shader_get_uniform(shader, "color1");
|
||||
uniform_sam = shader_get_uniform(shader, "useSampler");
|
||||
uniform_samTyp = shader_get_uniform(shader, "sampleMode");
|
||||
|
||||
inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 )
|
||||
.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[| 1] = nodeValue("Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, irandom(99999));
|
||||
|
||||
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);
|
||||
|
||||
inputs[| 3] = nodeValue("Angle", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
|
||||
.setDisplay(VALUE_DISPLAY.rotation);
|
||||
inputs[| 3] = nodeValue("Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 8, 8 ] )
|
||||
.setDisplay(VALUE_DISPLAY.vector);
|
||||
|
||||
inputs[| 4] = nodeValue("Gap", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.1)
|
||||
.setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01]);
|
||||
inputs[| 4] = nodeValue("Texture sample", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0);
|
||||
|
||||
inputs[| 5] = nodeValue("Color 1", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white);
|
||||
|
||||
inputs[| 6] = nodeValue("Color 2", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_black);
|
||||
inputs[| 5] = nodeValue("Oversample mode", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 2)
|
||||
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Empty", "Clamp", "Repeat" ]);
|
||||
|
||||
input_display_list = [
|
||||
["Output", false], 0,
|
||||
["Pattern", false], 1, 2, 3, 4,
|
||||
["Render", false], 5, 6,
|
||||
["Output", false], 0,
|
||||
["Noise", false], 1, 2, 3,
|
||||
["Texture", false], 4, 5
|
||||
];
|
||||
|
||||
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
|
||||
|
||||
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) {
|
||||
var _dim = _data[0];
|
||||
var _pos = _data[1];
|
||||
var _sca = _data[2];
|
||||
var _rot = _data[3];
|
||||
var _thk = _data[4];
|
||||
|
||||
var _clr0 = _data[5];
|
||||
var _clr1 = _data[6];
|
||||
var _sed = _data[1];
|
||||
var _pos = _data[2];
|
||||
var _sca = _data[3];
|
||||
var _sam = _data[4];
|
||||
var _samTyp = _data[5];
|
||||
|
||||
_outSurf = surface_verify(_outSurf, _dim[0], _dim[1]);
|
||||
|
||||
surface_set_target(_outSurf);
|
||||
draw_clear_alpha(0, 0);
|
||||
shader_set(shader);
|
||||
shader_set_uniform_f(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_sca, _sca[0], _sca[1]);
|
||||
shader_set_uniform_f(uniform_rot, degtorad(_rot));
|
||||
shader_set_uniform_f(uniform_thk, _thk);
|
||||
shader_set_uniform_f_array_safe(uniform_dim, [_dim[0], _dim[1]]);
|
||||
shader_set_uniform_f(uniform_sed, _sed);
|
||||
shader_set_uniform_f_array_safe(uniform_pos, _pos);
|
||||
shader_set_uniform_f_array_safe(uniform_sca, _sca);
|
||||
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));
|
||||
shader_set_uniform_f_array_safe(uniform_clr1, colToVec4(_clr1));
|
||||
|
||||
draw_sprite_ext(s_fx_pixel, 0, 0, 0, _dim[0], _dim[1], 0, c_white, 1);
|
||||
if(is_surface(_sam))
|
||||
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);
|
||||
shader_reset();
|
||||
surface_reset_target();
|
||||
|
||||
|
|
|
@ -1,73 +1,68 @@
|
|||
function Node_Grid_Tri(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor {
|
||||
name = "Triangle Grid";
|
||||
function Node_Noise_Tri(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor {
|
||||
name = "Triangle Noise";
|
||||
|
||||
shader = sh_grid_tri;
|
||||
shader = sh_noise_grid_tri;
|
||||
uniform_dim = shader_get_uniform(shader, "dimension");
|
||||
uniform_sed = shader_get_uniform(shader, "seed");
|
||||
uniform_pos = shader_get_uniform(shader, "position");
|
||||
uniform_sca = shader_get_uniform(shader, "scale");
|
||||
uniform_rot = shader_get_uniform(shader, "angle");
|
||||
uniform_thk = shader_get_uniform(shader, "thick");
|
||||
uniform_ang = shader_get_uniform(shader, "angle");
|
||||
|
||||
uniform_clr0 = shader_get_uniform(shader, "color0");
|
||||
uniform_clr1 = shader_get_uniform(shader, "color1");
|
||||
uniform_sam = shader_get_uniform(shader, "useSampler");
|
||||
uniform_samTyp = shader_get_uniform(shader, "sampleMode");
|
||||
|
||||
inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 )
|
||||
.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[| 1] = nodeValue("Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, irandom(99999));
|
||||
|
||||
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);
|
||||
|
||||
inputs[| 3] = nodeValue("Angle", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
|
||||
.setDisplay(VALUE_DISPLAY.rotation);
|
||||
inputs[| 3] = nodeValue("Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 4, 4 ] )
|
||||
.setDisplay(VALUE_DISPLAY.vector);
|
||||
|
||||
inputs[| 4] = nodeValue("Gap", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.1)
|
||||
.setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01]);
|
||||
inputs[| 4] = nodeValue("Texture sample", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0);
|
||||
|
||||
inputs[| 5] = nodeValue("Color 1", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white);
|
||||
|
||||
inputs[| 6] = nodeValue("Color 2", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_black);
|
||||
inputs[| 5] = nodeValue("Oversample mode", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 2)
|
||||
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Empty", "Clamp", "Repeat" ]);
|
||||
|
||||
input_display_list = [
|
||||
["Output", false], 0,
|
||||
["Pattern", false], 1, 2, 3, 4,
|
||||
["Render", false], 5, 6,
|
||||
["Output", false], 0,
|
||||
["Noise", false], 1, 2, 3,
|
||||
["Texture", false], 4, 5,
|
||||
];
|
||||
|
||||
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
|
||||
|
||||
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) {
|
||||
var _dim = _data[0];
|
||||
var _pos = _data[1];
|
||||
var _sca = _data[2];
|
||||
var _rot = _data[3];
|
||||
var _thk = _data[4];
|
||||
|
||||
var _clr0 = _data[5];
|
||||
var _clr1 = _data[6];
|
||||
var _sed = _data[1];
|
||||
var _pos = _data[2];
|
||||
var _sca = _data[3];
|
||||
var _sam = _data[4];
|
||||
var _samTyp = _data[5];
|
||||
|
||||
_outSurf = surface_verify(_outSurf, _dim[0], _dim[1]);
|
||||
|
||||
surface_set_target(_outSurf);
|
||||
draw_clear_alpha(0, 0);
|
||||
shader_set(shader);
|
||||
shader_set_uniform_f(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_sca, _sca[0], _sca[1]);
|
||||
shader_set_uniform_f(uniform_rot, degtorad(_rot));
|
||||
shader_set_uniform_f(uniform_thk, _thk);
|
||||
shader_set_uniform_f_array_safe(uniform_dim, [_dim[0], _dim[1]]);
|
||||
shader_set_uniform_f(uniform_sed, _sed);
|
||||
shader_set_uniform_f_array_safe(uniform_pos, _pos);
|
||||
shader_set_uniform_f_array_safe(uniform_sca, _sca);
|
||||
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));
|
||||
shader_set_uniform_f_array_safe(uniform_clr1, colToVec4(_clr1));
|
||||
|
||||
draw_sprite_ext(s_fx_pixel, 0, 0, 0, _dim[0], _dim[1], 0, c_white, 1);
|
||||
if(is_surface(_sam))
|
||||
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);
|
||||
shader_reset();
|
||||
surface_reset_target();
|
||||
|
||||
|
|
|
@ -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[| 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) );
|
||||
|
||||
|
@ -122,11 +122,7 @@ function Node_Repeat(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
|
|||
}
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
function doRepeat(_outSurf, _inSurf) {
|
||||
var _dim = inputs[| 1].getValue();
|
||||
var _amo = inputs[| 2].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_alp = inputs[| 28].getValue();
|
||||
|
||||
var _surf, runx, runy, posx, posy, scax, scay, rot;
|
||||
|
||||
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);
|
||||
draw_clear_alpha(0, 0);
|
||||
runx = 0;
|
||||
|
@ -232,7 +217,7 @@ function Node_Repeat(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
|
|||
|
||||
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));
|
||||
|
||||
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;
|
||||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -8,9 +8,9 @@
|
|||
|
||||
#region classes
|
||||
enum NOTI_TYPE {
|
||||
log = 1 << 0,
|
||||
warning = 1 << 1,
|
||||
error = 1 << 2,
|
||||
log = 1 << 0,
|
||||
warning = 1 << 1,
|
||||
error = 1 << 2,
|
||||
}
|
||||
|
||||
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"]);
|
||||
ds_list_add(STATUSES, 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) {
|
||||
PANEL_MENU.noti_flash = 1;
|
||||
|
@ -73,11 +76,16 @@
|
|||
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);
|
||||
ds_list_add(STATUSES, 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;
|
||||
}
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ enum RENDER_TYPE {
|
|||
full = 2
|
||||
}
|
||||
|
||||
global.RENDER_LOG = false;
|
||||
global.RENDER_LOG = true;
|
||||
|
||||
function __nodeLeafList(_list, _queue) {
|
||||
for( var i = 0; i < ds_list_size(_list); i++ ) {
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_2d_light",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "filter",
|
||||
"path": "folders/shader/filter.yy",
|
||||
"name": "blend",
|
||||
"path": "folders/shader/blend.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_alpha_cutoff",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "filter",
|
||||
"path": "folders/shader/filter.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_alpha_grey",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "filter",
|
||||
"path": "folders/shader/filter.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_alpha_hash",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "filter",
|
||||
"path": "folders/shader/filter.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_ani_noise",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "generator",
|
||||
"path": "folders/shader/generator.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_atlas",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "filter",
|
||||
"path": "folders/shader/filter.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_average",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "blur",
|
||||
"path": "folders/shader/blur.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_bevel",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "3d",
|
||||
"path": "folders/shader/3d.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -6,6 +6,7 @@ varying vec4 v_vColour;
|
|||
|
||||
uniform sampler2D fore;
|
||||
uniform float opacity;
|
||||
uniform int preserveAlpha;
|
||||
|
||||
void main() {
|
||||
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 aa = _col0.a + bright * opacity;
|
||||
res.a = aa;
|
||||
if(preserveAlpha == 1) res.a = _col0.a;
|
||||
|
||||
gl_FragColor = res;
|
||||
}
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_blend_alpha_addition",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "blend",
|
||||
"path": "folders/shader/blend.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_blend_multiply_alpha",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "blend",
|
||||
"path": "folders/shader/blend.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -5,6 +5,7 @@ varying vec2 v_vTexcoord;
|
|||
varying vec4 v_vColour;
|
||||
|
||||
uniform vec2 dimension;
|
||||
uniform int preserveAlpha;
|
||||
uniform sampler2D fore;
|
||||
uniform vec2 position;
|
||||
uniform vec2 scale;
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_blend_screen_alpha",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "blend",
|
||||
"path": "folders/shader/blend.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_blend_subtract_alpha",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "blend",
|
||||
"path": "folders/shader/blend.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_bloom_pass",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "filter",
|
||||
"path": "folders/shader/filter.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_blur_alpha",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "blur",
|
||||
"path": "folders/shader/blur.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_blur_bokeh",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "blur",
|
||||
"path": "folders/shader/blur.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_blur_box_contrast",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "blur",
|
||||
"path": "folders/shader/blur.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_blur_directional",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "blur",
|
||||
"path": "folders/shader/blur.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_blur_final",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "blur",
|
||||
"path": "folders/shader/blur.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_blur_gaussian",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "blur",
|
||||
"path": "folders/shader/blur.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_blur_radial",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "blur",
|
||||
"path": "folders/shader/blur.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_blur_simple",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "blur",
|
||||
"path": "folders/shader/blur.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_blur_zoom",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "blur",
|
||||
"path": "folders/shader/blur.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_bw",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "filter",
|
||||
"path": "folders/shader/filter.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_camera",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "shader",
|
||||
"path": "folders/shader.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_cell_noise",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "generator",
|
||||
"path": "folders/shader/generator.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_cell_noise_crystal",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "generator",
|
||||
"path": "folders/shader/generator.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_cell_noise_edge",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "generator",
|
||||
"path": "folders/shader/generator.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_cell_noise_random",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "generator",
|
||||
"path": "folders/shader/generator.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_cell_noise_round",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "generator",
|
||||
"path": "folders/shader/generator.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_channel_A",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "channels",
|
||||
"path": "folders/shader/channels.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_channel_B",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "channels",
|
||||
"path": "folders/shader/channels.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_channel_B_grey",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "channels",
|
||||
"path": "folders/shader/channels.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_channel_G",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "channels",
|
||||
"path": "folders/shader/channels.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_channel_G_grey",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "channels",
|
||||
"path": "folders/shader/channels.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_channel_H",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "channels",
|
||||
"path": "folders/shader/channels.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_channel_R",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "channels",
|
||||
"path": "folders/shader/channels.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_channel_R_grey",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "channels",
|
||||
"path": "folders/shader/channels.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_channel_S",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "channels",
|
||||
"path": "folders/shader/channels.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_channel_V",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "channels",
|
||||
"path": "folders/shader/channels.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_checkerboard",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "generator",
|
||||
"path": "folders/shader/generator.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_chromatic_aberration",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "filter",
|
||||
"path": "folders/shader/filter.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_clean_shape",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "filter",
|
||||
"path": "folders/shader/filter.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_color_adjust",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "filter",
|
||||
"path": "folders/shader/filter.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_color_picker_hue",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "filter",
|
||||
"path": "folders/shader/filter.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_color_picker_value",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "filter",
|
||||
"path": "folders/shader/filter.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -7,6 +7,7 @@ varying vec4 v_vColour;
|
|||
uniform vec4 colorFrom[32];
|
||||
uniform int colorFrom_amo;
|
||||
uniform float treshold;
|
||||
uniform int invert;
|
||||
|
||||
vec3 rgb2xyz( vec3 c ) {
|
||||
vec3 tmp;
|
||||
|
@ -40,7 +41,7 @@ void main() {
|
|||
|
||||
vec3 lab = rgb2lab(col.rgb);
|
||||
|
||||
float min_df = treshold;
|
||||
float min_df = 999.;
|
||||
for(int i = 0; i < colorFrom_amo; i++) {
|
||||
vec3 labFrom = rgb2lab(colorFrom[i].rgb);
|
||||
|
||||
|
@ -48,8 +49,8 @@ void main() {
|
|||
min_df = min(min_df, df);
|
||||
}
|
||||
|
||||
if(min_df < treshold)
|
||||
gl_FragColor = vec4(1., 1., 1., 0.);
|
||||
if((invert == 0 && min_df <= treshold) || (invert == 1 && min_df > treshold))
|
||||
gl_FragColor = vec4(0.);
|
||||
else
|
||||
gl_FragColor = baseColor;
|
||||
}
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_color_remove",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "filter",
|
||||
"path": "folders/shader/filter.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_color_replace",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "filter",
|
||||
"path": "folders/shader/filter.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -9,10 +9,14 @@ uniform vec4 gradient_color[16];
|
|||
uniform float gradient_time[16];
|
||||
uniform int keys;
|
||||
uniform float gradient_shift;
|
||||
uniform int multiply_alpha;
|
||||
|
||||
void main() {
|
||||
vec4 _col = v_vColour * texture2D( gm_BaseTexture, v_vTexcoord );
|
||||
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 == floor(prog))
|
||||
prog = 1.;
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_colorize",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "filter",
|
||||
"path": "folders/shader/filter.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_combine_hsv",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "filter",
|
||||
"path": "folders/shader/filter.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_combine_rgb",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "filter",
|
||||
"path": "folders/shader/filter.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_content_sampler",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "shader",
|
||||
"path": "folders/shader.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_convolution",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "filter",
|
||||
"path": "folders/shader/filter.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_corner",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "filter",
|
||||
"path": "folders/shader/filter.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_corner_erode",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "filter",
|
||||
"path": "folders/shader/filter.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_curve",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "filter",
|
||||
"path": "folders/shader/filter.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_de_corner",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "filter",
|
||||
"path": "folders/shader/filter.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_de_stray",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "filter",
|
||||
"path": "folders/shader/filter.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_dilate",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "warp",
|
||||
"path": "folders/shader/warp.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_displace",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "warp",
|
||||
"path": "folders/shader/warp.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_dither",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "filter",
|
||||
"path": "folders/shader/filter.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_draw_normal",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "blend",
|
||||
"path": "folders/shader/blend.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_draw_surface_part_tiled",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "draw",
|
||||
"path": "folders/shader/draw.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_draw_vertex_aa",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "draw",
|
||||
"path": "folders/shader/draw.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_edge_detect",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "filter",
|
||||
"path": "folders/shader/filter.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -41,7 +41,7 @@ void main() {
|
|||
}
|
||||
|
||||
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;
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_erode",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "filter",
|
||||
"path": "folders/shader/filter.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_fd_add_velocity_glsl",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "Shaders",
|
||||
"path": "folders/functions/fluid sim/Shaders.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_fd_advect_material_a_16_glsl",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "Shaders",
|
||||
"path": "folders/functions/fluid sim/Shaders.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_fd_advect_material_a_8_glsl",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "Shaders",
|
||||
"path": "folders/functions/fluid sim/Shaders.yy",
|
||||
},
|
||||
"type": 1,
|
||||
}
|
|
@ -2,9 +2,9 @@
|
|||
"resourceType": "GMShader",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "sh_fd_advect_material_rgba_16_glsl",
|
||||
"type": 1,
|
||||
"parent": {
|
||||
"name": "Shaders",
|
||||
"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
Loading…
Add table
Reference in a new issue