diff --git a/PixelComposer.resource_order b/PixelComposer.resource_order index 36f8066c9..c5c8e2694 100644 --- a/PixelComposer.resource_order +++ b/PixelComposer.resource_order @@ -314,7 +314,6 @@ {"name":"node_pb_fx_hash","order":7,"path":"scripts/node_pb_fx_hash/node_pb_fx_hash.yy",}, {"name":"sh_pb_draw_mask","order":8,"path":"shaders/sh_pb_draw_mask/sh_pb_draw_mask.yy",}, {"name":"node_blur_radial","order":7,"path":"scripts/node_blur_radial/node_blur_radial.yy",}, - {"name":"node_2d_light","order":1,"path":"scripts/node_2d_light/node_2d_light.yy",}, {"name":"node_rigid_activation","order":7,"path":"scripts/node_rigid_activation/node_rigid_activation.yy",}, {"name":"s_node_image_gif","order":4,"path":"sprites/s_node_image_gif/s_node_image_gif.yy",}, {"name":"node_VFX_effect_wind","order":7,"path":"scripts/node_VFX_effect_wind/node_VFX_effect_wind.yy",}, @@ -326,7 +325,7 @@ {"name":"sh_color_picker_value","order":1,"path":"shaders/sh_color_picker_value/sh_color_picker_value.yy",}, {"name":"textInput","order":3,"path":"scripts/textInput/textInput.yy",}, {"name":"Obj_FirebaseFirestore_Document_Read","order":5,"path":"objects/Obj_FirebaseFirestore_Document_Read/Obj_FirebaseFirestore_Document_Read.yy",}, - {"name":"node_dither","order":7,"path":"scripts/node_dither/node_dither.yy",}, + {"name":"node_dither","order":6,"path":"scripts/node_dither/node_dither.yy",}, {"name":"sh_perlin_smear","order":5,"path":"shaders/sh_perlin_smear/sh_perlin_smear.yy",}, {"name":"node_array_remove","order":4,"path":"scripts/node_array_remove/node_array_remove.yy",}, {"name":"node_path_blend","order":2,"path":"scripts/node_path_blend/node_path_blend.yy",}, @@ -525,6 +524,7 @@ {"name":"node_pb_fx_brick","order":12,"path":"scripts/node_pb_fx_brick/node_pb_fx_brick.yy",}, {"name":"node_compare","order":16,"path":"scripts/node_compare/node_compare.yy",}, {"name":"node_3d_transform","order":6,"path":"scripts/node_3d_transform/node_3d_transform.yy",}, + {"name":"s_node_offset","order":19,"path":"sprites/s_node_offset/s_node_offset.yy",}, {"name":"node_iterator_each_size","order":3,"path":"scripts/node_iterator_each_size/node_iterator_each_size.yy",}, {"name":"panel_console","order":8,"path":"scripts/panel_console/panel_console.yy",}, {"name":"sh_gradient_display_alpha","order":37,"path":"shaders/sh_gradient_display_alpha/sh_gradient_display_alpha.yy",}, @@ -688,7 +688,7 @@ {"name":"string_formatting","order":5,"path":"scripts/string_formatting/string_formatting.yy",}, {"name":"node_level_selector","order":8,"path":"scripts/node_level_selector/node_level_selector.yy",}, {"name":"s_node_reaction_diffusion","order":37,"path":"sprites/s_node_reaction_diffusion/s_node_reaction_diffusion.yy",}, - {"name":"node_posterize","order":13,"path":"scripts/node_posterize/node_posterize.yy",}, + {"name":"node_posterize","order":12,"path":"scripts/node_posterize/node_posterize.yy",}, {"name":"o_dialog_image_array_edit","order":4,"path":"objects/o_dialog_image_array_edit/o_dialog_image_array_edit.yy",}, {"name":"s_ui_base_white","order":2,"path":"sprites/s_ui_base_white/s_ui_base_white.yy",}, {"name":"node_color_mix","order":14,"path":"scripts/node_color_mix/node_color_mix.yy",}, @@ -739,7 +739,7 @@ {"name":"sh_draw_surface","order":52,"path":"shaders/sh_draw_surface/sh_draw_surface.yy",}, {"name":"sh_warp_4points_pers","order":10,"path":"shaders/sh_warp_4points_pers/sh_warp_4points_pers.yy",}, {"name":"node_mirror","order":3,"path":"scripts/node_mirror/node_mirror.yy",}, - {"name":"node_corner","order":6,"path":"scripts/node_corner/node_corner.yy",}, + {"name":"node_corner","order":5,"path":"scripts/node_corner/node_corner.yy",}, {"name":"node_3d_mesh_cylinder","order":3,"path":"scripts/node_3d_mesh_cylinder/node_3d_mesh_cylinder.yy",}, {"name":"node_path_anchor","order":13,"path":"scripts/node_path_anchor/node_path_anchor.yy",}, {"name":"s_node_path_wave","order":7,"path":"sprites/s_node_path_wave/s_node_path_wave.yy",}, @@ -775,9 +775,10 @@ {"name":"ac_disappear","order":2,"path":"animcurves/ac_disappear/ac_disappear.yy",}, {"name":"s_node_path_array","order":11,"path":"sprites/s_node_path_array/s_node_path_array.yy",}, {"name":"node_display_image","order":4,"path":"scripts/node_display_image/node_display_image.yy",}, + {"name":"s_node_pytagorean_tile","order":38,"path":"sprites/s_node_pytagorean_tile/s_node_pytagorean_tile.yy",}, {"name":"node_rigid_global","order":5,"path":"scripts/node_rigid_global/node_rigid_global.yy",}, {"name":"sh_rsh_erode","order":2,"path":"shaders/sh_rsh_erode/sh_rsh_erode.yy",}, - {"name":"node_chromatic_aberration","order":4,"path":"scripts/node_chromatic_aberration/node_chromatic_aberration.yy",}, + {"name":"node_chromatic_aberration","order":3,"path":"scripts/node_chromatic_aberration/node_chromatic_aberration.yy",}, {"name":"draw_connect_elbow_diag","order":2,"path":"scripts/draw_connect_elbow_diag/draw_connect_elbow_diag.yy",}, {"name":"s_node_mk_flag","order":5,"path":"sprites/s_node_mk_flag/s_node_mk_flag.yy",}, {"name":"node_pin","order":2,"path":"scripts/node_pin/node_pin.yy",}, @@ -981,6 +982,7 @@ {"name":"s_node_blur_simple","order":43,"path":"sprites/s_node_blur_simple/s_node_blur_simple.yy",}, {"name":"theme_definition","order":14,"path":"scripts/theme_definition/theme_definition.yy",}, {"name":"project_data","order":17,"path":"scripts/project_data/project_data.yy",}, + {"name":"sh_vignette","order":57,"path":"shaders/sh_vignette/sh_vignette.yy",}, {"name":"s_patreon_banner","order":3,"path":"sprites/s_patreon_banner/s_patreon_banner.yy",}, {"name":"_draw_defines","order":21,"path":"scripts/_draw_defines/_draw_defines.yy",}, {"name":"sh_color_replace","order":8,"path":"shaders/sh_color_replace/sh_color_replace.yy",}, @@ -999,12 +1001,13 @@ {"name":"FirebaseREST_Firestore_collection_compare","order":5,"path":"scripts/FirebaseREST_Firestore_collection_compare/FirebaseREST_Firestore_collection_compare.yy",}, {"name":"node_pb_draw_blob","order":5,"path":"scripts/node_pb_draw_blob/node_pb_draw_blob.yy",}, {"name":"credit_badge_value","order":1,"path":"sprites/credit_badge_value/credit_badge_value.yy",}, + {"name":"s_node_vignette","order":61,"path":"sprites/s_node_vignette/s_node_vignette.yy",}, {"name":"s_node_text_display","order":4,"path":"sprites/s_node_text_display/s_node_text_display.yy",}, {"name":"sh_d3d_outline","order":16,"path":"shaders/sh_d3d_outline/sh_d3d_outline.yy",}, {"name":"node_strand_render_texture","order":7,"path":"scripts/node_strand_render_texture/node_strand_render_texture.yy",}, {"name":"argumentRenderer","order":2,"path":"scripts/argumentRenderer/argumentRenderer.yy",}, {"name":"node_blur_zoom","order":3,"path":"scripts/node_blur_zoom/node_blur_zoom.yy",}, - {"name":"node_bloom","order":3,"path":"scripts/node_bloom/node_bloom.yy",}, + {"name":"node_bloom","order":2,"path":"scripts/node_bloom/node_bloom.yy",}, {"name":"node_shell","order":15,"path":"scripts/node_shell/node_shell.yy",}, {"name":"sh_bevel","order":2,"path":"shaders/sh_bevel/sh_bevel.yy",}, {"name":"sh_blend_overlay","order":15,"path":"shaders/sh_blend_overlay/sh_blend_overlay.yy",}, @@ -1015,6 +1018,7 @@ {"name":"s_workshop_badge_version","order":3,"path":"sprites/s_workshop_badge_version/s_workshop_badge_version.yy",}, {"name":"s_node_palette_shift","order":58,"path":"sprites/s_node_palette_shift/s_node_palette_shift.yy",}, {"name":"__strandSim","order":2,"path":"scripts/__strandSim/__strandSim.yy",}, + {"name":"s_node_random_tile","order":40,"path":"sprites/s_node_random_tile/s_node_random_tile.yy",}, {"name":"sh_shape","order":3,"path":"shaders/sh_shape/sh_shape.yy",}, {"name":"draw_line_width2","order":2,"path":"scripts/draw_line_width2/draw_line_width2.yy",}, {"name":"matrixGrid","order":6,"path":"scripts/matrixGrid/matrixGrid.yy",}, @@ -1105,6 +1109,7 @@ {"name":"node_global","order":3,"path":"scripts/node_global/node_global.yy",}, {"name":"s_node_mk_saber","order":1,"path":"sprites/s_node_mk_saber/s_node_mk_saber.yy",}, {"name":"spr_gameframe_buttons","order":1,"path":"sprites/spr_gameframe_buttons/spr_gameframe_buttons.yy",}, + {"name":"node_herringbone_tile","order":7,"path":"scripts/node_herringbone_tile/node_herringbone_tile.yy",}, {"name":"s_node_draw_stack","order":4,"path":"sprites/s_node_draw_stack/s_node_draw_stack.yy",}, {"name":"sh_d3d_grid_view","order":12,"path":"shaders/sh_d3d_grid_view/sh_d3d_grid_view.yy",}, {"name":"delaunay","order":1,"path":"scripts/delaunay/delaunay.yy",}, @@ -1153,6 +1158,7 @@ {"name":"node_FLIP_wall","order":9,"path":"scripts/node_FLIP_wall/node_FLIP_wall.yy",}, {"name":"s_node_array_get","order":3,"path":"sprites/s_node_array_get/s_node_array_get.yy",}, {"name":"d3d_bbox","order":8,"path":"scripts/d3d_bbox/d3d_bbox.yy",}, + {"name":"s_node_mk_brownian","order":8,"path":"sprites/s_node_mk_brownian/s_node_mk_brownian.yy",}, {"name":"Obj_FirebaseFirestore_Collection_Query_AscendingDescending","order":1,"path":"objects/Obj_FirebaseFirestore_Collection_Query_AscendingDescending/Obj_FirebaseFirestore_Collection_Query_AscendingDescending.yy",}, {"name":"o_dialog_save","order":12,"path":"objects/o_dialog_save/o_dialog_save.yy",}, {"name":"s_node_BW","order":13,"path":"sprites/s_node_BW/s_node_BW.yy",}, @@ -1173,7 +1179,7 @@ {"name":"sh_noise_gabor","order":10,"path":"shaders/sh_noise_gabor/sh_noise_gabor.yy",}, {"name":"sh_draw_mapping","order":4,"path":"shaders/sh_draw_mapping/sh_draw_mapping.yy",}, {"name":"__bbox","order":5,"path":"scripts/__bbox/__bbox.yy",}, - {"name":"node_shadow","order":14,"path":"scripts/node_shadow/node_shadow.yy",}, + {"name":"node_shadow","order":13,"path":"scripts/node_shadow/node_shadow.yy",}, {"name":"s_node_color_data","order":3,"path":"sprites/s_node_color_data/s_node_color_data.yy",}, {"name":"fd_rectangle_set_repeat","order":12,"path":"scripts/fd_rectangle_set_repeat/fd_rectangle_set_repeat.yy",}, {"name":"sh_fd_calculate_velocity_divergence_glsl","order":10,"path":"shaders/sh_fd_calculate_velocity_divergence_glsl/sh_fd_calculate_velocity_divergence_glsl.yy",}, @@ -1182,7 +1188,7 @@ {"name":"node_wav_file_write","order":17,"path":"scripts/node_wav_file_write/node_wav_file_write.yy",}, {"name":"node_random","order":5,"path":"scripts/node_random/node_random.yy",}, {"name":"Obj_FirebaseFirestore_Collection_Query_LessThan","order":7,"path":"objects/Obj_FirebaseFirestore_Collection_Query_LessThan/Obj_FirebaseFirestore_Collection_Query_LessThan.yy",}, - {"name":"node_atlas","order":2,"path":"scripts/node_atlas/node_atlas.yy",}, + {"name":"node_atlas","order":1,"path":"scripts/node_atlas/node_atlas.yy",}, {"name":"sh_blend_sat","order":18,"path":"shaders/sh_blend_sat/sh_blend_sat.yy",}, {"name":"s_node_feedback","order":3,"path":"sprites/s_node_feedback/s_node_feedback.yy",}, {"name":"getGradientData","order":1,"path":"scripts/getGradientData/getGradientData.yy",}, @@ -1205,6 +1211,7 @@ {"name":"s_node_fluidSim_vortex","order":8,"path":"sprites/s_node_fluidSim_vortex/s_node_fluidSim_vortex.yy",}, {"name":"string_hexadecimal","order":1,"path":"scripts/string_hexadecimal/string_hexadecimal.yy",}, {"name":"s_node_camera","order":3,"path":"sprites/s_node_camera/s_node_camera.yy",}, + {"name":"node_random_tile","order":8,"path":"scripts/node_random_tile/node_random_tile.yy",}, {"name":"Obj_FirebaseFirestore_Document_Set","order":6,"path":"objects/Obj_FirebaseFirestore_Document_Set/Obj_FirebaseFirestore_Document_Set.yy",}, {"name":"_node_strand_affector","order":10,"path":"scripts/_node_strand_affector/_node_strand_affector.yy",}, {"name":"Steamworks","order":2,"path":"extensions/Steamworks/Steamworks.yy",}, @@ -1225,6 +1232,7 @@ {"name":"sh_seperate_shape_ite","order":2,"path":"shaders/sh_seperate_shape_ite/sh_seperate_shape_ite.yy",}, {"name":"node_PCX_fn_surface_width","order":1,"path":"scripts/node_PCX_fn_surface_width/node_PCX_fn_surface_width.yy",}, {"name":"o_main","order":1,"path":"objects/o_main/o_main.yy",}, + {"name":"sh_herringbone_tile","order":5,"path":"shaders/sh_herringbone_tile/sh_herringbone_tile.yy",}, {"name":"area_function","order":2,"path":"scripts/area_function/area_function.yy",}, {"name":"__node_shader_processor","order":23,"path":"scripts/__node_shader_processor/__node_shader_processor.yy",}, {"name":"Obj_FirebaseFirestore_Collection_Query_options_value","order":11,"path":"objects/Obj_FirebaseFirestore_Collection_Query_options_value/Obj_FirebaseFirestore_Collection_Query_options_value.yy",}, @@ -1280,6 +1288,7 @@ {"name":"node_collection_inline","order":16,"path":"scripts/node_collection_inline/node_collection_inline.yy",}, {"name":"s_node_fluidSim_update_paused","order":7,"path":"sprites/s_node_fluidSim_update_paused/s_node_fluidSim_update_paused.yy",}, {"name":"s_node_decorner","order":17,"path":"sprites/s_node_decorner/s_node_decorner.yy",}, + {"name":"sh_random_tile","order":6,"path":"shaders/sh_random_tile/sh_random_tile.yy",}, {"name":"s_node_text_combine","order":3,"path":"sprites/s_node_text_combine/s_node_text_combine.yy",}, {"name":"_line_drawer","order":24,"path":"scripts/_line_drawer/_line_drawer.yy",}, {"name":"sh_noise_fbm","order":1,"path":"shaders/sh_noise_fbm/sh_noise_fbm.yy",}, @@ -1301,7 +1310,7 @@ {"name":"sh_draw_r8","order":9,"path":"shaders/sh_draw_r8/sh_draw_r8.yy",}, {"name":"s_node_pb_fx_outline","order":5,"path":"sprites/s_node_pb_fx_outline/s_node_pb_fx_outline.yy",}, {"name":"fd_rectangle_get_velocity_width","order":26,"path":"scripts/fd_rectangle_get_velocity_width/fd_rectangle_get_velocity_width.yy",}, - {"name":"node_convolution","order":5,"path":"scripts/node_convolution/node_convolution.yy",}, + {"name":"node_convolution","order":4,"path":"scripts/node_convolution/node_convolution.yy",}, {"name":"node_pb_draw_ellipse","order":2,"path":"scripts/node_pb_draw_ellipse/node_pb_draw_ellipse.yy",}, {"name":"sh_outline_only","order":35,"path":"shaders/sh_outline_only/sh_outline_only.yy",}, {"name":"node_mk_saber","order":3,"path":"scripts/node_mk_saber/node_mk_saber.yy",}, @@ -1333,7 +1342,7 @@ {"name":"s_node_array_sort","order":11,"path":"sprites/s_node_array_sort/s_node_array_sort.yy",}, {"name":"s_node_pb_fx_brick","order":28,"path":"sprites/s_node_pb_fx_brick/s_node_pb_fx_brick.yy",}, {"name":"s_node_pb_draw_roundrectangle","order":12,"path":"sprites/s_node_pb_draw_roundrectangle/s_node_pb_draw_roundrectangle.yy",}, - {"name":"node_trail","order":16,"path":"scripts/node_trail/node_trail.yy",}, + {"name":"node_trail","order":15,"path":"scripts/node_trail/node_trail.yy",}, {"name":"FirebaseListenerUserFunctions_Firestore","order":2,"path":"scripts/FirebaseListenerUserFunctions_Firestore/FirebaseListenerUserFunctions_Firestore.yy",}, {"name":"FirebaseSetup","order":2,"path":"extensions/FirebaseSetup/FirebaseSetup.yy",}, {"name":"json_prettify","order":7,"path":"scripts/json_prettify/json_prettify.yy",}, @@ -1349,6 +1358,7 @@ {"name":"logger","order":1,"path":"scripts/logger/logger.yy",}, {"name":"s_node_smokeSim_emitter","order":8,"path":"sprites/s_node_smokeSim_emitter/s_node_smokeSim_emitter.yy",}, {"name":"s_node_blur_directional","order":11,"path":"sprites/s_node_blur_directional/s_node_blur_directional.yy",}, + {"name":"node_offset","order":17,"path":"scripts/node_offset/node_offset.yy",}, {"name":"s_biterator_dim_label","order":10,"path":"sprites/s_biterator_dim_label/s_biterator_dim_label.yy",}, {"name":"s_node_average","order":50,"path":"sprites/s_node_average/s_node_average.yy",}, {"name":"s_node_sprite_sheet","order":1,"path":"sprites/s_node_sprite_sheet/s_node_sprite_sheet.yy",}, @@ -1426,6 +1436,7 @@ {"name":"sh_colours_replace","order":54,"path":"shaders/sh_colours_replace/sh_colours_replace.yy",}, {"name":"sh_channel_R2G","order":11,"path":"shaders/sh_channel_R2G/sh_channel_R2G.yy",}, {"name":"node_wrap_mesh","order":6,"path":"scripts/node_wrap_mesh/node_wrap_mesh.yy",}, + {"name":"sh_offset","order":12,"path":"shaders/sh_offset/sh_offset.yy",}, {"name":"sh_alpha_hash","order":2,"path":"shaders/sh_alpha_hash/sh_alpha_hash.yy",}, {"name":"vct_slider","order":1,"path":"scripts/vct_slider/vct_slider.yy",}, {"name":"panel_node_align","order":3,"path":"scripts/panel_node_align/panel_node_align.yy",}, @@ -1456,7 +1467,7 @@ {"name":"s_node_border","order":12,"path":"sprites/s_node_border/s_node_border.yy",}, {"name":"__vector","order":10,"path":"scripts/__vector/__vector.yy",}, {"name":"s_node_pin","order":2,"path":"sprites/s_node_pin/s_node_pin.yy",}, - {"name":"node_local_analyze","order":17,"path":"scripts/node_local_analyze/node_local_analyze.yy",}, + {"name":"node_local_analyze","order":16,"path":"scripts/node_local_analyze/node_local_analyze.yy",}, {"name":"s_node_blur_contrast","order":10,"path":"sprites/s_node_blur_contrast/s_node_blur_contrast.yy",}, {"name":"fd_y","order":5,"path":"scripts/fd_y/fd_y.yy",}, {"name":"node_string_regex_search","order":8,"path":"scripts/node_string_regex_search/node_string_regex_search.yy",}, @@ -1550,6 +1561,7 @@ {"name":"node_path_map_area","order":1,"path":"scripts/node_path_map_area/node_path_map_area.yy",}, {"name":"node_3d_mesh_icosphere","order":5,"path":"scripts/node_3d_mesh_icosphere/node_3d_mesh_icosphere.yy",}, {"name":"s_node_timeline_preview","order":2,"path":"sprites/s_node_timeline_preview/s_node_timeline_preview.yy",}, + {"name":"node_mk_brownian","order":10,"path":"scripts/node_mk_brownian/node_mk_brownian.yy",}, {"name":"s_node_3d_light_point","order":18,"path":"sprites/s_node_3d_light_point/s_node_3d_light_point.yy",}, {"name":"libdlgmodule","order":13,"path":"extensions/libdlgmodule/libdlgmodule.yy",}, {"name":"node_csv_file_read","order":8,"path":"scripts/node_csv_file_read/node_csv_file_read.yy",}, @@ -1576,6 +1588,7 @@ {"name":"s_node_texture_map","order":38,"path":"sprites/s_node_texture_map/s_node_texture_map.yy",}, {"name":"fd_rectangle_create","order":7,"path":"scripts/fd_rectangle_create/fd_rectangle_create.yy",}, {"name":"s_node_level_selector","order":29,"path":"sprites/s_node_level_selector/s_node_level_selector.yy",}, + {"name":"s_node_herringbone_tile","order":39,"path":"sprites/s_node_herringbone_tile/s_node_herringbone_tile.yy",}, {"name":"random_function","order":3,"path":"scripts/random_function/random_function.yy",}, {"name":"FriebaseREST_Firestore_urlUpdateMask","order":20,"path":"scripts/FriebaseREST_Firestore_urlUpdateMask/FriebaseREST_Firestore_urlUpdateMask.yy",}, {"name":"s_node_input","order":6,"path":"sprites/s_node_input/s_node_input.yy",}, @@ -1599,6 +1612,7 @@ {"name":"panel_menu","order":6,"path":"scripts/panel_menu/panel_menu.yy",}, {"name":"s_node_smokeSim_update_paused","order":5,"path":"sprites/s_node_smokeSim_update_paused/s_node_smokeSim_update_paused.yy",}, {"name":"s_node_ase_file","order":15,"path":"sprites/s_node_ase_file/s_node_ase_file.yy",}, + {"name":"sh_pytagorean_tile","order":4,"path":"shaders/sh_pytagorean_tile/sh_pytagorean_tile.yy",}, {"name":"draw_line_round","order":4,"path":"scripts/draw_line_round/draw_line_round.yy",}, {"name":"vectorBox","order":10,"path":"scripts/vectorBox/vectorBox.yy",}, {"name":"sh_3d_extrude_corner","order":7,"path":"shaders/sh_3d_extrude_corner/sh_3d_extrude_corner.yy",}, @@ -1713,6 +1727,7 @@ {"name":"Obj_Debug_FallText_Firestore","order":3,"path":"objects/Obj_Debug_FallText_Firestore/Obj_Debug_FallText_Firestore.yy",}, {"name":"s_node_pb_box_divide","order":24,"path":"sprites/s_node_pb_box_divide/s_node_pb_box_divide.yy",}, {"name":"bin_function","order":11,"path":"scripts/bin_function/bin_function.yy",}, + {"name":"node_vignette","order":17,"path":"scripts/node_vignette/node_vignette.yy",}, {"name":"s_node_smokeSim_apply_velocity","order":7,"path":"sprites/s_node_smokeSim_apply_velocity/s_node_smokeSim_apply_velocity.yy",}, {"name":"s_node_feedback_output","order":9,"path":"sprites/s_node_feedback_output/s_node_feedback_output.yy",}, {"name":"sh_surface_replace_fast_find","order":2,"path":"shaders/sh_surface_replace_fast_find/sh_surface_replace_fast_find.yy",}, @@ -1783,6 +1798,7 @@ {"name":"node_path_plot","order":12,"path":"scripts/node_path_plot/node_path_plot.yy",}, {"name":"sh_de_corner","order":15,"path":"shaders/sh_de_corner/sh_de_corner.yy",}, {"name":"BBMOD_Vec3","order":5,"path":"scripts/BBMOD_Vec3/BBMOD_Vec3.yy",}, + {"name":"node_pythagorean_tile","order":6,"path":"scripts/node_pythagorean_tile/node_pythagorean_tile.yy",}, {"name":"node_rigid_object_spawner","order":6,"path":"scripts/node_rigid_object_spawner/node_rigid_object_spawner.yy",}, {"name":"node_palette_shift","order":13,"path":"scripts/node_palette_shift/node_palette_shift.yy",}, {"name":"sh_fd_advect_velocity_0_glsl","order":6,"path":"shaders/sh_fd_advect_velocity_0_glsl/sh_fd_advect_velocity_0_glsl.yy",}, @@ -1842,7 +1858,7 @@ {"name":"panel_graph_export_image_dialog","order":5,"path":"scripts/panel_graph_export_image_dialog/panel_graph_export_image_dialog.yy",}, {"name":"s_node_fluidSim_render_output","order":11,"path":"sprites/s_node_fluidSim_render_output/s_node_fluidSim_render_output.yy",}, {"name":"debug","order":10,"path":"scripts/debug/debug.yy",}, - {"name":"node_shadow_cast","order":15,"path":"scripts/node_shadow_cast/node_shadow_cast.yy",}, + {"name":"node_shadow_cast","order":14,"path":"scripts/node_shadow_cast/node_shadow_cast.yy",}, {"name":"node_strand_render","order":5,"path":"scripts/node_strand_render/node_strand_render.yy",}, {"name":"s_node_3d_obj_combine","order":5,"path":"sprites/s_node_3d_obj_combine/s_node_3d_obj_combine.yy",}, {"name":"s_node_wav_file_read","order":16,"path":"sprites/s_node_wav_file_read/s_node_wav_file_read.yy",}, diff --git a/PixelComposer.yyp b/PixelComposer.yyp index 02b0f03a1..aa1fb86cc 100644 --- a/PixelComposer.yyp +++ b/PixelComposer.yyp @@ -748,6 +748,7 @@ {"id":{"name":"node_pb_fx_brick","path":"scripts/node_pb_fx_brick/node_pb_fx_brick.yy",},}, {"id":{"name":"node_compare","path":"scripts/node_compare/node_compare.yy",},}, {"id":{"name":"node_3d_transform","path":"scripts/node_3d_transform/node_3d_transform.yy",},}, + {"id":{"name":"s_node_offset","path":"sprites/s_node_offset/s_node_offset.yy",},}, {"id":{"name":"node_iterator_each_size","path":"scripts/node_iterator_each_size/node_iterator_each_size.yy",},}, {"id":{"name":"sh_trans_node_prev_drop","path":"shaders/sh_trans_node_prev_drop/sh_trans_node_prev_drop.yy",},}, {"id":{"name":"fd_draw_self_to_collision_mask_surface","path":"scripts/fd_draw_self_to_collision_mask_surface/fd_draw_self_to_collision_mask_surface.yy",},}, @@ -1037,6 +1038,7 @@ {"id":{"name":"ac_disappear","path":"animcurves/ac_disappear/ac_disappear.yy",},}, {"id":{"name":"s_node_path_array","path":"sprites/s_node_path_array/s_node_path_array.yy",},}, {"id":{"name":"node_display_image","path":"scripts/node_display_image/node_display_image.yy",},}, + {"id":{"name":"s_node_pytagorean_tile","path":"sprites/s_node_pytagorean_tile/s_node_pytagorean_tile.yy",},}, {"id":{"name":"node_rigid_global","path":"scripts/node_rigid_global/node_rigid_global.yy",},}, {"id":{"name":"sh_rsh_erode","path":"shaders/sh_rsh_erode/sh_rsh_erode.yy",},}, {"id":{"name":"node_chromatic_aberration","path":"scripts/node_chromatic_aberration/node_chromatic_aberration.yy",},}, @@ -1274,6 +1276,7 @@ {"id":{"name":"theme_definition","path":"scripts/theme_definition/theme_definition.yy",},}, {"id":{"name":"project_data","path":"scripts/project_data/project_data.yy",},}, {"id":{"name":"node_VFX_spawner","path":"scripts/node_VFX_spawner/node_VFX_spawner.yy",},}, + {"id":{"name":"sh_vignette","path":"shaders/sh_vignette/sh_vignette.yy",},}, {"id":{"name":"s_node_equation","path":"sprites/s_node_equation/s_node_equation.yy",},}, {"id":{"name":"s_patreon_banner","path":"sprites/s_patreon_banner/s_patreon_banner.yy",},}, {"id":{"name":"_draw_defines","path":"scripts/_draw_defines/_draw_defines.yy",},}, @@ -1295,6 +1298,7 @@ {"id":{"name":"node_pb_draw_blob","path":"scripts/node_pb_draw_blob/node_pb_draw_blob.yy",},}, {"id":{"name":"draw_overlay","path":"scripts/draw_overlay/draw_overlay.yy",},}, {"id":{"name":"credit_badge_value","path":"sprites/credit_badge_value/credit_badge_value.yy",},}, + {"id":{"name":"s_node_vignette","path":"sprites/s_node_vignette/s_node_vignette.yy",},}, {"id":{"name":"__background_get","path":"scripts/__background_get/__background_get.yy",},}, {"id":{"name":"s_node_text_display","path":"sprites/s_node_text_display/s_node_text_display.yy",},}, {"id":{"name":"sh_d3d_outline","path":"shaders/sh_d3d_outline/sh_d3d_outline.yy",},}, @@ -1313,6 +1317,7 @@ {"id":{"name":"s_workshop_badge_version","path":"sprites/s_workshop_badge_version/s_workshop_badge_version.yy",},}, {"id":{"name":"s_node_palette_shift","path":"sprites/s_node_palette_shift/s_node_palette_shift.yy",},}, {"id":{"name":"__strandSim","path":"scripts/__strandSim/__strandSim.yy",},}, + {"id":{"name":"s_node_random_tile","path":"sprites/s_node_random_tile/s_node_random_tile.yy",},}, {"id":{"name":"sh_shape","path":"shaders/sh_shape/sh_shape.yy",},}, {"id":{"name":"draw_line_width2","path":"scripts/draw_line_width2/draw_line_width2.yy",},}, {"id":{"name":"matrixGrid","path":"scripts/matrixGrid/matrixGrid.yy",},}, @@ -1409,6 +1414,7 @@ {"id":{"name":"node_global","path":"scripts/node_global/node_global.yy",},}, {"id":{"name":"s_node_mk_saber","path":"sprites/s_node_mk_saber/s_node_mk_saber.yy",},}, {"id":{"name":"spr_gameframe_buttons","path":"sprites/spr_gameframe_buttons/spr_gameframe_buttons.yy",},}, + {"id":{"name":"node_herringbone_tile","path":"scripts/node_herringbone_tile/node_herringbone_tile.yy",},}, {"id":{"name":"s_node_draw_stack","path":"sprites/s_node_draw_stack/s_node_draw_stack.yy",},}, {"id":{"name":"sh_d3d_grid_view","path":"shaders/sh_d3d_grid_view/sh_d3d_grid_view.yy",},}, {"id":{"name":"delaunay","path":"scripts/delaunay/delaunay.yy",},}, @@ -1461,6 +1467,7 @@ {"id":{"name":"node_FLIP_wall","path":"scripts/node_FLIP_wall/node_FLIP_wall.yy",},}, {"id":{"name":"s_node_array_get","path":"sprites/s_node_array_get/s_node_array_get.yy",},}, {"id":{"name":"d3d_bbox","path":"scripts/d3d_bbox/d3d_bbox.yy",},}, + {"id":{"name":"s_node_mk_brownian","path":"sprites/s_node_mk_brownian/s_node_mk_brownian.yy",},}, {"id":{"name":"Obj_FirebaseFirestore_Collection_Query_AscendingDescending","path":"objects/Obj_FirebaseFirestore_Collection_Query_AscendingDescending/Obj_FirebaseFirestore_Collection_Query_AscendingDescending.yy",},}, {"id":{"name":"dynaSurf","path":"scripts/dynaSurf/dynaSurf.yy",},}, {"id":{"name":"o_dialog_save","path":"objects/o_dialog_save/o_dialog_save.yy",},}, @@ -1521,6 +1528,7 @@ {"id":{"name":"s_node_fluidSim_vortex","path":"sprites/s_node_fluidSim_vortex/s_node_fluidSim_vortex.yy",},}, {"id":{"name":"string_hexadecimal","path":"scripts/string_hexadecimal/string_hexadecimal.yy",},}, {"id":{"name":"s_node_camera","path":"sprites/s_node_camera/s_node_camera.yy",},}, + {"id":{"name":"node_random_tile","path":"scripts/node_random_tile/node_random_tile.yy",},}, {"id":{"name":"sh_find_boundary","path":"shaders/sh_find_boundary/sh_find_boundary.yy",},}, {"id":{"name":"Obj_FirebaseFirestore_Document_Set","path":"objects/Obj_FirebaseFirestore_Document_Set/Obj_FirebaseFirestore_Document_Set.yy",},}, {"id":{"name":"_node_strand_affector","path":"scripts/_node_strand_affector/_node_strand_affector.yy",},}, @@ -1543,6 +1551,7 @@ {"id":{"name":"sh_seperate_shape_ite","path":"shaders/sh_seperate_shape_ite/sh_seperate_shape_ite.yy",},}, {"id":{"name":"node_PCX_fn_surface_width","path":"scripts/node_PCX_fn_surface_width/node_PCX_fn_surface_width.yy",},}, {"id":{"name":"o_main","path":"objects/o_main/o_main.yy",},}, + {"id":{"name":"sh_herringbone_tile","path":"shaders/sh_herringbone_tile/sh_herringbone_tile.yy",},}, {"id":{"name":"area_function","path":"scripts/area_function/area_function.yy",},}, {"id":{"name":"__node_shader_processor","path":"scripts/__node_shader_processor/__node_shader_processor.yy",},}, {"id":{"name":"Obj_FirebaseFirestore_Collection_Query_options_value","path":"objects/Obj_FirebaseFirestore_Collection_Query_options_value/Obj_FirebaseFirestore_Collection_Query_options_value.yy",},}, @@ -1606,6 +1615,7 @@ {"id":{"name":"node_iterate_filter_inline","path":"scripts/node_iterate_filter_inline/node_iterate_filter_inline.yy",},}, {"id":{"name":"s_node_fluidSim_update_paused","path":"sprites/s_node_fluidSim_update_paused/s_node_fluidSim_update_paused.yy",},}, {"id":{"name":"s_node_decorner","path":"sprites/s_node_decorner/s_node_decorner.yy",},}, + {"id":{"name":"sh_random_tile","path":"shaders/sh_random_tile/sh_random_tile.yy",},}, {"id":{"name":"s_node_text_combine","path":"sprites/s_node_text_combine/s_node_text_combine.yy",},}, {"id":{"name":"sh_interpret_number","path":"shaders/sh_interpret_number/sh_interpret_number.yy",},}, {"id":{"name":"_line_drawer","path":"scripts/_line_drawer/_line_drawer.yy",},}, @@ -1687,6 +1697,7 @@ {"id":{"name":"s_node_blur_directional","path":"sprites/s_node_blur_directional/s_node_blur_directional.yy",},}, {"id":{"name":"distance_to_line","path":"scripts/distance_to_line/distance_to_line.yy",},}, {"id":{"name":"globalvar_drawer","path":"scripts/globalvar_drawer/globalvar_drawer.yy",},}, + {"id":{"name":"node_offset","path":"scripts/node_offset/node_offset.yy",},}, {"id":{"name":"s_biterator_dim_label","path":"sprites/s_biterator_dim_label/s_biterator_dim_label.yy",},}, {"id":{"name":"s_node_average","path":"sprites/s_node_average/s_node_average.yy",},}, {"id":{"name":"s_node_sprite_sheet","path":"sprites/s_node_sprite_sheet/s_node_sprite_sheet.yy",},}, @@ -1777,6 +1788,7 @@ {"id":{"name":"node_wrap_mesh","path":"scripts/node_wrap_mesh/node_wrap_mesh.yy",},}, {"id":{"name":"node_surface_to_buffer","path":"scripts/node_surface_to_buffer/node_surface_to_buffer.yy",},}, {"id":{"name":"node_curve","path":"scripts/node_curve/node_curve.yy",},}, + {"id":{"name":"sh_offset","path":"shaders/sh_offset/sh_offset.yy",},}, {"id":{"name":"sh_alpha_hash","path":"shaders/sh_alpha_hash/sh_alpha_hash.yy",},}, {"id":{"name":"vct_slider","path":"scripts/vct_slider/vct_slider.yy",},}, {"id":{"name":"panel_node_align","path":"scripts/panel_node_align/panel_node_align.yy",},}, @@ -1924,6 +1936,7 @@ {"id":{"name":"node_path_map_area","path":"scripts/node_path_map_area/node_path_map_area.yy",},}, {"id":{"name":"node_3d_mesh_icosphere","path":"scripts/node_3d_mesh_icosphere/node_3d_mesh_icosphere.yy",},}, {"id":{"name":"s_node_timeline_preview","path":"sprites/s_node_timeline_preview/s_node_timeline_preview.yy",},}, + {"id":{"name":"node_mk_brownian","path":"scripts/node_mk_brownian/node_mk_brownian.yy",},}, {"id":{"name":"s_node_3d_light_point","path":"sprites/s_node_3d_light_point/s_node_3d_light_point.yy",},}, {"id":{"name":"libdlgmodule","path":"extensions/libdlgmodule/libdlgmodule.yy",},}, {"id":{"name":"node_csv_file_read","path":"scripts/node_csv_file_read/node_csv_file_read.yy",},}, @@ -1953,6 +1966,7 @@ {"id":{"name":"s_node_texture_map","path":"sprites/s_node_texture_map/s_node_texture_map.yy",},}, {"id":{"name":"fd_rectangle_create","path":"scripts/fd_rectangle_create/fd_rectangle_create.yy",},}, {"id":{"name":"s_node_level_selector","path":"sprites/s_node_level_selector/s_node_level_selector.yy",},}, + {"id":{"name":"s_node_herringbone_tile","path":"sprites/s_node_herringbone_tile/s_node_herringbone_tile.yy",},}, {"id":{"name":"real_number_functions","path":"scripts/real_number_functions/real_number_functions.yy",},}, {"id":{"name":"random_function","path":"scripts/random_function/random_function.yy",},}, {"id":{"name":"FriebaseREST_Firestore_urlUpdateMask","path":"scripts/FriebaseREST_Firestore_urlUpdateMask/FriebaseREST_Firestore_urlUpdateMask.yy",},}, @@ -1980,6 +1994,7 @@ {"id":{"name":"panel_menu","path":"scripts/panel_menu/panel_menu.yy",},}, {"id":{"name":"s_node_smokeSim_update_paused","path":"sprites/s_node_smokeSim_update_paused/s_node_smokeSim_update_paused.yy",},}, {"id":{"name":"s_node_ase_file","path":"sprites/s_node_ase_file/s_node_ase_file.yy",},}, + {"id":{"name":"sh_pytagorean_tile","path":"shaders/sh_pytagorean_tile/sh_pytagorean_tile.yy",},}, {"id":{"name":"draw_line_round","path":"scripts/draw_line_round/draw_line_round.yy",},}, {"id":{"name":"vectorBox","path":"scripts/vectorBox/vectorBox.yy",},}, {"id":{"name":"sh_3d_extrude_corner","path":"shaders/sh_3d_extrude_corner/sh_3d_extrude_corner.yy",},}, @@ -2110,6 +2125,7 @@ {"id":{"name":"Obj_Debug_FallText_Firestore","path":"objects/Obj_Debug_FallText_Firestore/Obj_Debug_FallText_Firestore.yy",},}, {"id":{"name":"s_node_pb_box_divide","path":"sprites/s_node_pb_box_divide/s_node_pb_box_divide.yy",},}, {"id":{"name":"bin_function","path":"scripts/bin_function/bin_function.yy",},}, + {"id":{"name":"node_vignette","path":"scripts/node_vignette/node_vignette.yy",},}, {"id":{"name":"s_node_smokeSim_apply_velocity","path":"sprites/s_node_smokeSim_apply_velocity/s_node_smokeSim_apply_velocity.yy",},}, {"id":{"name":"__d3d11","path":"scripts/__d3d11/__d3d11.yy",},}, {"id":{"name":"s_node_feedback_output","path":"sprites/s_node_feedback_output/s_node_feedback_output.yy",},}, @@ -2194,6 +2210,7 @@ {"id":{"name":"node_bw","path":"scripts/node_bw/node_bw.yy",},}, {"id":{"name":"sh_de_corner","path":"shaders/sh_de_corner/sh_de_corner.yy",},}, {"id":{"name":"BBMOD_Vec3","path":"scripts/BBMOD_Vec3/BBMOD_Vec3.yy",},}, + {"id":{"name":"node_pythagorean_tile","path":"scripts/node_pythagorean_tile/node_pythagorean_tile.yy",},}, {"id":{"name":"node_rigid_object_spawner","path":"scripts/node_rigid_object_spawner/node_rigid_object_spawner.yy",},}, {"id":{"name":"node_palette_shift","path":"scripts/node_palette_shift/node_palette_shift.yy",},}, {"id":{"name":"sh_fd_advect_velocity_0_glsl","path":"shaders/sh_fd_advect_velocity_0_glsl/sh_fd_advect_velocity_0_glsl.yy",},}, diff --git a/fonts/_f_sdf/_f_sdf.old.png b/fonts/_f_sdf/_f_sdf.old.png index 4c67875ac..0d2c1cfb3 100644 Binary files a/fonts/_f_sdf/_f_sdf.old.png and b/fonts/_f_sdf/_f_sdf.old.png differ diff --git a/fonts/_f_sdf/_f_sdf.png b/fonts/_f_sdf/_f_sdf.png index 41942ecb0..947bd8e9a 100644 Binary files a/fonts/_f_sdf/_f_sdf.png and b/fonts/_f_sdf/_f_sdf.png differ diff --git a/fonts/_f_sdf_medium/_f_sdf_medium.old.png b/fonts/_f_sdf_medium/_f_sdf_medium.old.png index 624d7d59d..bfd45bbb8 100644 Binary files a/fonts/_f_sdf_medium/_f_sdf_medium.old.png and b/fonts/_f_sdf_medium/_f_sdf_medium.old.png differ diff --git a/fonts/_f_sdf_medium/_f_sdf_medium.png b/fonts/_f_sdf_medium/_f_sdf_medium.png index 9f6b9db9c..72e5d2d3e 100644 Binary files a/fonts/_f_sdf_medium/_f_sdf_medium.png and b/fonts/_f_sdf_medium/_f_sdf_medium.png differ diff --git a/scripts/button/button.gml b/scripts/button/button.gml index 1098319a2..793be62e4 100644 --- a/scripts/button/button.gml +++ b/scripts/button/button.gml @@ -14,6 +14,7 @@ function buttonClass(_onClick, _icon = noone) : widget() constructor { activate_on_press = false; clicked = false; + pressed = false; toggled = false; @@ -71,11 +72,14 @@ function buttonClass(_onClick, _icon = noone) : widget() constructor { if(hover && point_in_rectangle(_m[0], _m[1], _x, _y, _x + _w, _y + _h)) { draw_sprite_stretched_ext(spr, toggled? 2 : 1, _x, _y, _w, _h, b, 1); - if(!activate_on_press && mouse_release(mb_left, active)) - trigger(); - if(activate_on_press && mouse_press(mb_left, active)) + if(!activate_on_press && pressed && mouse_release(mb_left, active)) trigger(); + if(mouse_press(mb_left, active)) { + pressed = true; + if(activate_on_press) trigger(); + } + if(mouse_click(mb_left, active)) { draw_sprite_stretched_ext(spr, 2, _x, _y, _w, _h, b, 1); draw_sprite_stretched_ext(spr, 3, _x, _y, _w, _h, COLORS._main_accent, 1); @@ -103,6 +107,8 @@ function buttonClass(_onClick, _icon = noone) : widget() constructor { resetFocus(); + if(mouse_release(mb_left)) pressed = false; + return _h; } #endregion } diff --git a/scripts/draw_arc/draw_arc.gml b/scripts/draw_arc/draw_arc.gml index edb9916e0..501219e29 100644 --- a/scripts/draw_arc/draw_arc.gml +++ b/scripts/draw_arc/draw_arc.gml @@ -10,8 +10,26 @@ function draw_arc(_x, _y, _r, _as, _at, _th = 1, _pr = 32) { nx = _x + lengthdir_x(_r, a); ny = _y + lengthdir_y(_r, a); - if(i) - draw_line_round(ox, oy, nx, ny, _th); + if(i) draw_line_round(ox, oy, nx, ny, _th); + + ox = nx; + oy = ny; + } +} + +function draw_arc_fast(_x, _y, _r, _as, _at, _th = 1, _pr = 8) { + var ox, oy, nx, ny; + var ast = 360 / _pr; + var sgn = sign(_at - _as); + var ar = abs(_at - _as) / 360 * _pr; + + for( var i = 0; i < ar; i++ ) { + var a = _as + ast * i * sgn; + + nx = _x + lengthdir_x(_r, a); + ny = _y + lengthdir_y(_r, a); + + if(i) draw_line(ox, oy, nx, ny); ox = nx; oy = ny; diff --git a/scripts/draw_connect_linear/draw_connect_linear.gml b/scripts/draw_connect_linear/draw_connect_linear.gml index 6e3150268..ffe2265e5 100644 --- a/scripts/draw_connect_linear/draw_connect_linear.gml +++ b/scripts/draw_connect_linear/draw_connect_linear.gml @@ -1,38 +1,53 @@ function draw_line_feedback(x0, y0, x1, y1, th, c1, c0, _s) { #region - //draw_line_dashed_color(x0, y0, x1, y1, th, c1, c0, 6 * _s); - //return; - var _y0 = y0 - 12 * _s; var _y1 = y1 - 12 * _s; - var x0e = x0 + 12 * _s * sign(x0 - x1); - var x1e = x1 - 12 * _s * sign(x0 - x1); + draw_line_dashed_color(x0, _y0, x1, _y1, th, c1, c0, 6 * _s); - draw_line_dashed_color(x0e, y0, x0e, _y0, th, c0, c0, 6 * _s); - draw_line_dashed_color(x0, y0, x0e, y0, th, c0, c0, 6 * _s); + var cr = 12 / 2 * _s; + var cx = max(x0, x1); + var cy = y0 - cr; + var ox, oy, nx, ny; - draw_line_dashed_color(x0e, _y0, x1e, _y1, th, c1, c0, 6 * _s); + draw_set_color(c0); - draw_line_dashed_color(x1e, y1, x1e, _y1, th, c1, c1, 6 * _s); - draw_line_dashed_color(x1e, y1, x1, y1, th, c1, c1, 6 * _s); + for( var i = 0; i <= 1; i += 0.1 ) { + var a = lerp(-90, 90, i); + + nx = cx + lengthdir_x(cr, a); + ny = cy + lengthdir_y(cr, a); + + if(i > 0) draw_line_width(ox, oy, nx, ny, th); + + ox = nx; + oy = ny; + } + + var cx = min(x0, x1); + var cy = y1 - cr; + + draw_set_color(c1); + + for( var i = 0; i <= 1; i += 0.1 ) { + var a = lerp(90, 270, i); + + nx = cx + lengthdir_x(cr, a); + ny = cy + lengthdir_y(cr, a); + + if(i > 0) draw_line_width(ox, oy, nx, ny, th); + + ox = nx; + oy = ny; + } } #endregion function distance_line_feedback(mx, my, x0, y0, x1, y1, _s) { #region var _y0 = y0 - 12 * _s; var _y1 = y1 - 12 * _s; - var x0e = x0 + 12 * _s * sign(x0 - x1); - var x1e = x1 - 12 * _s * sign(x0 - x1); - var dd = 99999999; - dd = min(dd, distance_to_line(mx, my, x0e, y0, x0e, _y0)); - dd = min(dd, distance_to_line(mx, my, x0, y0, x0e, y0)); - - dd = min(dd, distance_to_line(mx, my, x0e, _y0, x1e, _y1)); - - dd = min(dd, distance_to_line(mx, my, x1e, y1, x1e, _y1)); - dd = min(dd, distance_to_line(mx, my, x1e, y1, x1, y1)); + dd = min(dd, distance_to_line(mx, my, x0, _y0, x1, _y1)); return dd; } #endregion \ No newline at end of file diff --git a/scripts/node_grid/node_grid.gml b/scripts/node_grid/node_grid.gml index 70b6ea963..6e6027469 100644 --- a/scripts/node_grid/node_grid.gml +++ b/scripts/node_grid/node_grid.gml @@ -52,10 +52,18 @@ function Node_Grid(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) cons ////////////////////////////////////////////////////////////////////////////////// + inputs[| 17] = nodeValue("Truchet", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false); + + inputs[| 18] = nodeValue("Truchet seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, seed_random()); + + inputs[| 19] = nodeValue("Truchet threshold", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5) + .setDisplay(VALUE_DISPLAY.slider) + input_display_list = [ ["Output", false], 0, ["Pattern", false], 1, 4, 15, 2, 13, 3, 14, 9, 8, 16, ["Render", false], 10, 11, 5, 6, 7, 12, + ["Truchet", true, 17], 18, 19, ]; outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone); @@ -96,10 +104,13 @@ function Node_Grid(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) cons shader_set_f_map("angle", _data[ 4], _data[15], inputs[| 4]); shader_set_f_map("shift", _data[ 8], _data[16], inputs[| 8]); - shader_set_i("mode", _mode); - shader_set_f("seed", _data[11]); - shader_set_i("shiftAxis", _data[ 9]); - shader_set_i("aa", _data[12]); + shader_set_i("mode", _mode); + shader_set_f("seed", _data[11]); + shader_set_i("shiftAxis", _data[ 9]); + shader_set_i("aa", _data[12]); + shader_set_i("textureTruchet", _data[17]); + shader_set_f("truchetSeed", _data[18]); + shader_set_f("truchetThres", _data[19]); shader_set_color("gapCol", _col_gap); _gra.shader_submit(); diff --git a/scripts/node_grid_hex/node_grid_hex.gml b/scripts/node_grid_hex/node_grid_hex.gml index 9d4782a58..6b169807e 100644 --- a/scripts/node_grid_hex/node_grid_hex.gml +++ b/scripts/node_grid_hex/node_grid_hex.gml @@ -43,10 +43,18 @@ function Node_Grid_Hex(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) ////////////////////////////////////////////////////////////////////////////////////////////////// + inputs[| 14] = nodeValue("Truchet", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false); + + inputs[| 15] = nodeValue("Truchet seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, seed_random()); + + inputs[| 16] = nodeValue("Truchet threshold", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5) + .setDisplay(VALUE_DISPLAY.slider) + input_display_list = [ ["Output", false], 0, ["Pattern", false], 1, 3, 12, 2, 11, 4, 13, ["Render", false], 7, 8, 5, 6, 9, 10, + ["Truchet", true, 14], 15, 16, ]; outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone); @@ -91,6 +99,10 @@ function Node_Grid_Hex(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) shader_set_i("aa", _data[10]); shader_set_color("gapCol",_col_gap); + shader_set_i("textureTruchet", _data[14]); + shader_set_f("truchetSeed", _data[15]); + shader_set_f("truchetThres", _data[16]); + _gra.shader_submit(); if(is_surface(_sam)) draw_surface_stretched_safe(_sam, 0, 0, _dim[0], _dim[1]); diff --git a/scripts/node_grid_tri/node_grid_tri.gml b/scripts/node_grid_tri/node_grid_tri.gml index 4fcb78224..68d5a9813 100644 --- a/scripts/node_grid_tri/node_grid_tri.gml +++ b/scripts/node_grid_tri/node_grid_tri.gml @@ -43,10 +43,18 @@ function Node_Grid_Tri(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) ////////////////////////////////////////////////////////////////////////////////// + inputs[| 14] = nodeValue("Truchet", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false); + + inputs[| 15] = nodeValue("Truchet seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, seed_random()); + + inputs[| 16] = nodeValue("Truchet threshold", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5) + .setDisplay(VALUE_DISPLAY.slider) + input_display_list = [ ["Output", false], 0, ["Pattern", false], 1, 4, 13, 2, 11, 3, 12, ["Render", false], 8, 9, 5, 6, 7, 10, + ["Truchet", true, 14], 15, 16, ]; outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone); @@ -97,6 +105,10 @@ function Node_Grid_Tri(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) shader_set_i("aa", _aa); shader_set_color("gapCol",_col_gap); + shader_set_i("textureTruchet", _data[14]); + shader_set_f("truchetSeed", _data[15]); + shader_set_f("truchetThres", _data[16]); + _gra.shader_submit(); if(is_surface(_sam)) draw_surface_stretched_safe(_sam, 0, 0, _dim[0], _dim[1]); diff --git a/scripts/node_herringbone_tile/node_herringbone_tile.gml b/scripts/node_herringbone_tile/node_herringbone_tile.gml new file mode 100644 index 000000000..52885d0be --- /dev/null +++ b/scripts/node_herringbone_tile/node_herringbone_tile.gml @@ -0,0 +1,117 @@ +function Node_Herringbone_Tile(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { + name = "Herringbone Tile"; + + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF ) + .setDisplay(VALUE_DISPLAY.vector); + + inputs[| 1] = nodeValue("Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) + .setDisplay(VALUE_DISPLAY.vector) + .setUnitRef(function(index) { return getDimension(index); }); + + inputs[| 2] = nodeValue("Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 4, 4 ]) + .setDisplay(VALUE_DISPLAY.vector) + .setMappable(11); + + inputs[| 3] = nodeValue("Angle", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) + .setDisplay(VALUE_DISPLAY.rotation) + .setMappable(12); + + inputs[| 4] = nodeValue("Gap", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.25) + .setDisplay(VALUE_DISPLAY.slider, { range: [0, 0.5, 0.01] }) + .setMappable(13); + + inputs[| 5] = nodeValue("Tile color", self, JUNCTION_CONNECT.input, VALUE_TYPE.gradient, new gradientObject(c_white) ); + + inputs[| 6] = nodeValue("Gap color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_black); + + inputs[| 7] = nodeValue("Render type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) + .setDisplay(VALUE_DISPLAY.enum_scroll, ["Colored tile", "Height map", "Texture grid"]); + + inputs[| 8] = nodeValue("Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, irandom_range(10000, 99999)); + + inputs[| 9] = nodeValue("Texture", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone); + + inputs[| 10] = nodeValue("Anti aliasing", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false); + + ////////////////////////////////////////////////////////////////////////////////////////////////// + + inputs[| 11] = nodeValueMap("Scale map", self); + + inputs[| 12] = nodeValueMap("Angle map", self); + + inputs[| 13] = nodeValueMap("Gap map", self); + + ////////////////////////////////////////////////////////////////////////////////////////////////// + + inputs[| 14] = nodeValue("Truchet", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false); + + inputs[| 15] = nodeValue("Truchet seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, seed_random()); + + inputs[| 16] = nodeValue("Truchet threshold", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5) + .setDisplay(VALUE_DISPLAY.slider) + + inputs[| 17] = nodeValue("Tile length", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 2); + + input_display_list = [ + ["Output", false], 0, + ["Pattern", false], 1, 3, 12, 2, 11, 17, 4, 13, + ["Render", false], 7, 8, 5, 6, 9, 10, + ["Truchet", true, 14], 15, 16, + ]; + + outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone); + + attribute_surface_depth(); + + static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) { + inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny); + } + + static step = function() { #region + inputs[| 2].mappableStep(); + inputs[| 3].mappableStep(); + inputs[| 4].mappableStep(); + } #endregion + + static processData = function(_outSurf, _data, _output_index, _array_index) { + var _dim = _data[0]; + var _pos = _data[1]; + var _sam = _data[9]; + var _mode = _data[7]; + + var _col_gap = _data[6]; + var _gra = _data[5]; + + inputs[| 5].setVisible(_mode == 0); + inputs[| 6].setVisible(_mode != 1); + inputs[| 9].setVisible(_mode == 2 || _mode == 3); + + _outSurf = surface_verify(_outSurf, _dim[0], _dim[1], attrDepth()); + + surface_set_shader(_outSurf, sh_herringbone_tile); + shader_set_f("dimension", _dim[0], _dim[1]); + shader_set_f("position", _pos[0] / _dim[0], _pos[1] / _dim[1]); + + shader_set_f_map("scale", _data[ 2], _data[11], inputs[| 2]); + shader_set_f_map("angle", _data[ 3], _data[12], inputs[| 3]); + shader_set_f_map("thick", _data[ 4], _data[13], inputs[| 4]); + + shader_set_f("seed", _data[ 8]); + shader_set_i("mode", _mode); + shader_set_i("aa", _data[10]); + shader_set_f("tileLength", _data[17]); + shader_set_color("gapCol", _col_gap); + + shader_set_i("textureTruchet", _data[14]); + shader_set_f("truchetSeed", _data[15]); + shader_set_f("truchetThres", _data[16]); + + _gra.shader_submit(); + + if(is_surface(_sam)) draw_surface_stretched_safe(_sam, 0, 0, _dim[0], _dim[1]); + else draw_sprite_ext(s_fx_pixel, 0, 0, 0, _dim[0], _dim[1], 0, c_white, 1); + surface_reset_shader(); + + return _outSurf; + } +} \ No newline at end of file diff --git a/scripts/node_herringbone_tile/node_herringbone_tile.yy b/scripts/node_herringbone_tile/node_herringbone_tile.yy new file mode 100644 index 000000000..95dabf959 --- /dev/null +++ b/scripts/node_herringbone_tile/node_herringbone_tile.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_herringbone_tile", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "pattern", + "path": "folders/nodes/data/generator/pattern.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_mk_brownian/node_mk_brownian.gml b/scripts/node_mk_brownian/node_mk_brownian.gml new file mode 100644 index 000000000..7f1984df4 --- /dev/null +++ b/scripts/node_mk_brownian/node_mk_brownian.gml @@ -0,0 +1,129 @@ +function Node_MK_Brownian(_x, _y, _group = noone) : Node(_x, _y, _group) constructor { + name = "MK Brownian"; + update_on_frame = true; + + inputs[| 0] = nodeValue("Surface", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone); + + inputs[| 1] = nodeValue("Sprite", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone); + + inputs[| 2] = nodeValue("Amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 10); + + inputs[| 3] = nodeValue("Area", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, AREA_DEF) + .setDisplay(VALUE_DISPLAY.area); + + inputs[| 4] = nodeValue("Direction", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 45, 135, 0, 0 ] ) + .setDisplay(VALUE_DISPLAY.rotation_random); + + inputs[| 5] = nodeValue("Speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ]) + .setDisplay(VALUE_DISPLAY.range); + + inputs[| 6] = nodeValue("Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.gradient, new gradientObject(c_white)); + + inputs[| 7] = nodeValue("Alpha", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, CURVE_DEF_11); + + inputs[| 8] = nodeValue("Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, seed_random()); + + inputs[| 9] = nodeValue("Angular speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ -45, 45 ]) + .setDisplay(VALUE_DISPLAY.range); + + inputs[| 10] = nodeValue("Angular acceleration", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ -2, 2 ]) + .setDisplay(VALUE_DISPLAY.range); + + inputs[| 11] = nodeValue("Turn", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false); + + outputs[| 0] = nodeValue("Output", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone); + + input_display_list = [ new Inspector_Sprite(s_MKFX), 0, 8, + ["Particles", false], 1, + ["Spawn", false], 3, 2, + ["Movement", false], 5, 4, 9, + ["Smooth turn", true, 11], 10, + ["Render", false], 6, 7, + ]; + + static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) { + inputs[| 3].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny); + } + + static getPosition = function(ind, t, _area, _sped, _dire, _dirs, _turn, _dira) { #region + random_set_seed(ind); + + var _px = irandom_range(_area[0] - _area[2], _area[0] + _area[2]); + var _py = irandom_range(_area[1] - _area[3], _area[1] + _area[3]); + + var spd = random_range(_sped[0], _sped[1]); + var dir = angle_random_eval(_dire); + var dis = random_range(_dirs[0], _dirs[1]); + var dia = random_range(_dira[0], _dira[1]); + + repeat(t) { + _px += lengthdir_x(spd, dir); + _py += lengthdir_y(spd, dir); + + if(_turn) { + var a = random_range(_dira[0], _dira[1]); + dis += a; + } else { + dis = random_range(_dirs[0], _dirs[1]); + } + + dir += dis; + } + + return [ _px, _py ]; + } #endregion + + static update = function() { #region + var _surf = getInputData(0); + var _sprt = getInputData(1); + var _amou = getInputData(2); + var _area = getInputData(3); + var _dire = getInputData(4); + var _sped = getInputData(5); + var _colr = getInputData(6); + var _alph = getInputData(7); + var _seed = getInputData(8); + var _dirs = getInputData(9); + var _dira = getInputData(10); + var _turn = getInputData(11); + + var _sed = _seed; + + if(!is_surface(_surf)) return; + + var _outSurf = outputs[| 0].getValue(); + _outSurf = surface_verify(_outSurf, surface_get_width_safe(_surf), surface_get_height_safe(_surf)); + outputs[| 0].setValue(_outSurf); + + surface_set_target(_outSurf); + DRAW_CLEAR + BLEND_OVERRIDE + draw_surface_safe(_surf); + BLEND_ALPHA_MULP + + for( var i = 0; i < _amou; i++ ) { + _sed += 100; + + var _lifs = irandom_seed(TOTAL_FRAMES, _sed); + var _lif = (_lifs + CURRENT_FRAME) % TOTAL_FRAMES; + + var _pos = getPosition(_sed, _lif, _area, _sped, _dire, _dirs, _turn, _dira); + var _cc = _colr.eval(_lifs / TOTAL_FRAMES); + var _aa = eval_curve_x(_alph, _lif / TOTAL_FRAMES); + + if(_sprt == noone) { + draw_set_color(_cc); + draw_set_alpha(_aa); + draw_point(_pos[0], _pos[1]); + draw_set_alpha(1); + } else { + var _p = _sprt; + if(is_array(_p)) _p = array_safe_get(_p, irandom(array_length(_p) - 1)); + + draw_surface_ext_safe(_p, _pos[0], _pos[1], 1, 1, 0, _cc, _aa); + } + } + BLEND_NORMAL + surface_reset_target(); + } #endregion +} \ No newline at end of file diff --git a/scripts/node_mk_brownian/node_mk_brownian.yy b/scripts/node_mk_brownian/node_mk_brownian.yy new file mode 100644 index 000000000..9fdf33f9f --- /dev/null +++ b/scripts/node_mk_brownian/node_mk_brownian.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_mk_brownian", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "MK effects", + "path": "folders/nodes/data/MK effects.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_offset/node_offset.gml b/scripts/node_offset/node_offset.gml new file mode 100644 index 000000000..2bd01dc73 --- /dev/null +++ b/scripts/node_offset/node_offset.gml @@ -0,0 +1,34 @@ +function Node_Offset(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { + name = "Offset"; + + inputs[| 0] = nodeValue("Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); + + inputs[| 1] = nodeValue("X Offset", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5) + .setDisplay(VALUE_DISPLAY.slider); + + inputs[| 2] = nodeValue("Y Offset", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5) + .setDisplay(VALUE_DISPLAY.slider); + + inputs[| 3] = nodeValue("Active", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true); + active_index = 3; + + input_display_list = [ 3, + ["Surfaces", true], 0, + ["Offset", false], 1, 2, + ] + + outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone); + + attribute_surface_depth(); + + static processData = function(_outSurf, _data, _output_index, _array_index) { + + surface_set_shader(_outSurf, sh_offset); + shader_set_f("offset", _data[1], _data[2]); + + draw_surface_safe(_data[0]); + surface_reset_shader(); + + return _outSurf; + } +} \ No newline at end of file diff --git a/scripts/node_offset/node_offset.yy b/scripts/node_offset/node_offset.yy new file mode 100644 index 000000000..40c90b6fe --- /dev/null +++ b/scripts/node_offset/node_offset.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_offset", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "transform", + "path": "folders/nodes/data/transform.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_offset/node_outline.yy b/scripts/node_offset/node_outline.yy new file mode 100644 index 000000000..86468bc09 --- /dev/null +++ b/scripts/node_offset/node_outline.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "process", + "path": "folders/nodes/data/process.yy", + }, + "resourceVersion": "1.0", + "name": "node_outline", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pythagorean_tile/node_pythagorean_tile.gml b/scripts/node_pythagorean_tile/node_pythagorean_tile.gml new file mode 100644 index 000000000..c1ea1bd64 --- /dev/null +++ b/scripts/node_pythagorean_tile/node_pythagorean_tile.gml @@ -0,0 +1,118 @@ +function Node_Pytagorean_Tile(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { + name = "Pytagorean Tile"; + + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF ) + .setDisplay(VALUE_DISPLAY.vector); + + inputs[| 1] = nodeValue("Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) + .setDisplay(VALUE_DISPLAY.vector) + .setUnitRef(function(index) { return getDimension(index); }); + + inputs[| 2] = nodeValue("Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ]) + .setDisplay(VALUE_DISPLAY.vector) + .setMappable(11); + + inputs[| 3] = nodeValue("Angle", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) + .setDisplay(VALUE_DISPLAY.rotation) + .setMappable(12); + + inputs[| 4] = nodeValue("Gap", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.25) + .setDisplay(VALUE_DISPLAY.slider, { range: [0, 0.5, 0.01] }) + .setMappable(13); + + inputs[| 5] = nodeValue("Tile color", self, JUNCTION_CONNECT.input, VALUE_TYPE.gradient, new gradientObject(c_white) ); + + inputs[| 6] = nodeValue("Gap color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_black); + + inputs[| 7] = nodeValue("Render type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) + .setDisplay(VALUE_DISPLAY.enum_scroll, ["Colored tile", "Height map", "Texture grid"]); + + inputs[| 8] = nodeValue("Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, irandom_range(10000, 99999)); + + inputs[| 9] = nodeValue("Texture", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone); + + inputs[| 10] = nodeValue("Anti aliasing", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false); + + ////////////////////////////////////////////////////////////////////////////////////////////////// + + inputs[| 11] = nodeValueMap("Scale map", self); + + inputs[| 12] = nodeValueMap("Angle map", self); + + inputs[| 13] = nodeValueMap("Gap map", self); + + ////////////////////////////////////////////////////////////////////////////////////////////////// + + inputs[| 14] = nodeValue("Truchet", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false); + + inputs[| 15] = nodeValue("Truchet seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, seed_random()); + + inputs[| 16] = nodeValue("Truchet threshold", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5) + .setDisplay(VALUE_DISPLAY.slider) + + inputs[| 17] = nodeValue("Phase", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 90) + .setDisplay(VALUE_DISPLAY.rotation); + + input_display_list = [ + ["Output", false], 0, + ["Pattern", false], 1, 3, 12, 2, 11, 17, 4, 13, + ["Render", false], 7, 8, 5, 6, 9, 10, + ["Truchet", true, 14], 15, 16, + ]; + + outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone); + + attribute_surface_depth(); + + static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) { + inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny); + } + + static step = function() { #region + inputs[| 2].mappableStep(); + inputs[| 3].mappableStep(); + inputs[| 4].mappableStep(); + } #endregion + + static processData = function(_outSurf, _data, _output_index, _array_index) { + var _dim = _data[0]; + var _pos = _data[1]; + var _sam = _data[9]; + var _mode = _data[7]; + + var _col_gap = _data[6]; + var _gra = _data[5]; + + inputs[| 5].setVisible(_mode == 0); + inputs[| 6].setVisible(_mode != 1); + inputs[| 9].setVisible(_mode == 2 || _mode == 3); + + _outSurf = surface_verify(_outSurf, _dim[0], _dim[1], attrDepth()); + + surface_set_shader(_outSurf, sh_pytagorean_tile); + shader_set_f("dimension", _dim[0], _dim[1]); + shader_set_f("position", _pos[0] / _dim[0], _pos[1] / _dim[1]); + + shader_set_f_map("scale", _data[ 2], _data[11], inputs[| 2]); + shader_set_f_map("angle", _data[ 3], _data[12], inputs[| 3]); + shader_set_f_map("thick", _data[ 4], _data[13], inputs[| 4]); + + shader_set_f("seed", _data[ 8]); + shader_set_i("mode", _mode); + shader_set_i("aa", _data[10]); + shader_set_f("phase", _data[17]); + shader_set_color("gapCol",_col_gap); + + shader_set_i("textureTruchet", _data[14]); + shader_set_f("truchetSeed", _data[15]); + shader_set_f("truchetThres", _data[16]); + + _gra.shader_submit(); + + if(is_surface(_sam)) draw_surface_stretched_safe(_sam, 0, 0, _dim[0], _dim[1]); + else draw_sprite_ext(s_fx_pixel, 0, 0, 0, _dim[0], _dim[1], 0, c_white, 1); + surface_reset_shader(); + + return _outSurf; + } +} \ No newline at end of file diff --git a/scripts/node_pythagorean_tile/node_pythagorean_tile.yy b/scripts/node_pythagorean_tile/node_pythagorean_tile.yy new file mode 100644 index 000000000..b54792f61 --- /dev/null +++ b/scripts/node_pythagorean_tile/node_pythagorean_tile.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_pythagorean_tile", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "pattern", + "path": "folders/nodes/data/generator/pattern.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_random_tile/node_random_tile.gml b/scripts/node_random_tile/node_random_tile.gml new file mode 100644 index 000000000..f58d81910 --- /dev/null +++ b/scripts/node_random_tile/node_random_tile.gml @@ -0,0 +1,114 @@ +function Node_Random_Tile(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { + name = "Random Tile"; + + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF ) + .setDisplay(VALUE_DISPLAY.vector); + + inputs[| 1] = nodeValue("Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) + .setDisplay(VALUE_DISPLAY.vector) + .setUnitRef(function(index) { return getDimension(index); }); + + inputs[| 2] = nodeValue("Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 2, 2 ]) + .setDisplay(VALUE_DISPLAY.vector) + .setMappable(11); + + inputs[| 3] = nodeValue("Angle", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) + .setDisplay(VALUE_DISPLAY.rotation) + .setMappable(12); + + inputs[| 4] = nodeValue("Gap", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.1) + .setDisplay(VALUE_DISPLAY.slider, { range: [0, 0.5, 0.01] }) + .setMappable(13); + + inputs[| 5] = nodeValue("Tile color", self, JUNCTION_CONNECT.input, VALUE_TYPE.gradient, new gradientObject(c_white) ); + + inputs[| 6] = nodeValue("Gap color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_black); + + inputs[| 7] = nodeValue("Render type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) + .setDisplay(VALUE_DISPLAY.enum_scroll, ["Colored tile", "Height map", "Texture grid"]); + + inputs[| 8] = nodeValue("Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, irandom_range(10000, 99999)); + + inputs[| 9] = nodeValue("Texture", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone); + + inputs[| 10] = nodeValue("Anti aliasing", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false); + + ////////////////////////////////////////////////////////////////////////////////////////////////// + + inputs[| 11] = nodeValueMap("Scale map", self); + + inputs[| 12] = nodeValueMap("Angle map", self); + + inputs[| 13] = nodeValueMap("Gap map", self); + + ////////////////////////////////////////////////////////////////////////////////////////////////// + + inputs[| 14] = nodeValue("Truchet", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false); + + inputs[| 15] = nodeValue("Truchet seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, seed_random()); + + inputs[| 16] = nodeValue("Truchet threshold", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5) + .setDisplay(VALUE_DISPLAY.slider) + + input_display_list = [ + ["Output", false], 0, + ["Pattern", false], 1, 3, 12, 2, 11, 4, 13, + ["Render", false], 7, 8, 5, 6, 9, 10, + ["Truchet", true, 14], 15, 16, + ]; + + outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone); + + attribute_surface_depth(); + + static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) { + inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny); + } + + static step = function() { #region + inputs[| 2].mappableStep(); + inputs[| 3].mappableStep(); + inputs[| 4].mappableStep(); + } #endregion + + static processData = function(_outSurf, _data, _output_index, _array_index) { + var _dim = _data[0]; + var _pos = _data[1]; + var _sam = _data[9]; + var _mode = _data[7]; + + var _col_gap = _data[6]; + var _gra = _data[5]; + + inputs[| 5].setVisible(_mode == 0); + inputs[| 6].setVisible(_mode != 1); + inputs[| 9].setVisible(_mode == 2 || _mode == 3); + + _outSurf = surface_verify(_outSurf, _dim[0], _dim[1], attrDepth()); + + surface_set_shader(_outSurf, sh_random_tile); + shader_set_f("dimension", _dim[0], _dim[1]); + shader_set_f("position", _pos[0] / _dim[0], _pos[1] / _dim[1]); + + shader_set_f_map("scale", _data[ 2], _data[11], inputs[| 2]); + shader_set_f_map("angle", _data[ 3], _data[12], inputs[| 3]); + shader_set_f_map("thick", _data[ 4], _data[13], inputs[| 4]); + + shader_set_f("seed", _data[ 8]); + shader_set_i("mode", _mode); + shader_set_i("aa", _data[10]); + shader_set_color("gapCol", _col_gap); + + shader_set_i("textureTruchet", _data[14]); + shader_set_f("truchetSeed", _data[15]); + shader_set_f("truchetThres", _data[16]); + + _gra.shader_submit(); + + if(is_surface(_sam)) draw_surface_stretched_safe(_sam, 0, 0, _dim[0], _dim[1]); + else draw_sprite_ext(s_fx_pixel, 0, 0, 0, _dim[0], _dim[1], 0, c_white, 1); + surface_reset_shader(); + + return _outSurf; + } +} \ No newline at end of file diff --git a/scripts/node_random_tile/node_random_tile.yy b/scripts/node_random_tile/node_random_tile.yy new file mode 100644 index 000000000..974aec9a4 --- /dev/null +++ b/scripts/node_random_tile/node_random_tile.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_random_tile", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "pattern", + "path": "folders/nodes/data/generator/pattern.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_registry/node_registry.gml b/scripts/node_registry/node_registry.gml index c7261f167..12fa884e1 100644 --- a/scripts/node_registry/node_registry.gml +++ b/scripts/node_registry/node_registry.gml @@ -466,6 +466,7 @@ function __initNodes() { addNodeObject(transform, "Scale", s_node_scale, "Node_Scale", [1, Node_Scale], ["resize"], "Simple node for scaling image."); addNodeObject(transform, "Scale Algorithm", s_node_scale_algo, "Node_Scale_Algo", [0, Node_create_Scale_Algo], ["scale2x", "scale3x"], "Scale image using scale2x, scale3x algorithm."); addNodeObject(transform, "Flip", s_node_flip, "Node_Flip", [1, Node_Flip], ["mirror"], "Flip image horizontally or vertically."); + addNodeObject(transform, "Offset", s_node_offset, "Node_Offset", [1, Node_Offset],, "Shift image with tiling."); ds_list_add(transform, "Warps"); addNodeObject(transform, "Crop", s_node_crop, "Node_Crop", [1, Node_Crop],, "Crop out image to create smaller ones."); @@ -529,6 +530,7 @@ function __initNodes() { addNodeObject(filter, "SDF", s_node_sdf, "Node_SDF", [1, Node_SDF],, "Create signed distance field using jump flooding algorithm.").setVersion(1130); addNodeObject(filter, "Replace Image", s_node_image_replace, "Node_Surface_Replace", [1, Node_Surface_Replace], ["image replace"], "Replace instances of an image with a new one.").setVersion(1140); addNodeObject(filter, "Chromatic Aberration", s_node_chromatic_abarration, "Node_Chromatic_Aberration", [1, Node_Chromatic_Aberration],, "Apply chromatic aberration effect to the image."); + addNodeObject(filter, "Vignette", s_node_vignette, "Node_Vignette", [1, Node_Vignette],, "Apply vignette effect to the border.").setVersion(11630); addNodeObject(filter, "FXAA", s_node_FXAA, "Node_FXAA", [1, Node_FXAA],, "Apply fast approximate anti-aliasing to the image."); ds_list_add(filter, "Colors"); @@ -633,7 +635,7 @@ function __initNodes() { addNodeObject(generator, "Shard Noise", s_node_shard, "Node_Shard_Noise", [1, Node_Shard_Noise]).patreonExtra(); addNodeObject(generator, "Wavelet Noise", s_node_wavelet, "Node_Wavelet_Noise", [1, Node_Wavelet_Noise]).patreonExtra(); addNodeObject(generator, "Caustic", s_node_caustic, "Node_Caustic", [1, Node_Caustic]).patreonExtra(); - + ds_list_add(generator, "Patterns"); addNodeObject(generator, "Stripe", s_node_stripe, "Node_Stripe", [1, Node_Stripe],, "Generate stripe pattern."); addNodeObject(generator, "Zigzag", s_node_zigzag, "Node_Zigzag", [1, Node_Zigzag],, "Generate zigzag pattern."); @@ -641,6 +643,9 @@ function __initNodes() { addNodeObject(generator, "Grid", s_node_grid, "Node_Grid", [1, Node_Grid], ["tile"], "Generate grid pattern."); addNodeObject(generator, "Triangular Grid", s_node_grid_tri, "Node_Grid_Tri", [1, Node_Grid_Tri],, "Generate triangular grid pattern."); addNodeObject(generator, "Hexagonal Grid", s_node_grid_hex, "Node_Grid_Hex", [1, Node_Grid_Hex],, "Generate hexagonal grid pattern."); + addNodeObject(generator, "Pytagorean Tile", s_node_pytagorean_tile, "Node_Pytagorean_Tile", [1, Node_Pytagorean_Tile],, "Generate Pytagorean tile pattern.").patreonExtra(); + addNodeObject(generator, "Herringbone Tile", s_node_herringbone_tile, "Node_Herringbone_Tile", [1, Node_Herringbone_Tile],, "Generate Herringbone tile pattern.").patreonExtra(); + addNodeObject(generator, "Random Tile", s_node_random_tile, "Node_Random_Tile", [1, Node_Random_Tile],, "Generate Random tile pattern.").patreonExtra(); ds_list_add(generator, "Populate"); addNodeObject(generator, "Repeat", s_node_repeat, "Node_Repeat", [1, Node_Repeat],, "Repeat image multiple times linearly, or in grid pattern.").setVersion(1100); @@ -667,6 +672,7 @@ function __initNodes() { addNodeObject(generator, "MK Saber", s_node_mk_saber, "Node_MK_Saber", [1, Node_MK_Saber]).setVersion(11600); addNodeObject(generator, "MK Tile", s_node_mk_tile, "Node_MK_Tile", [1, Node_MK_Tile]).setVersion(11600); addNodeObject(generator, "MK Flag", s_node_mk_flag, "Node_MK_Flag", [1, Node_MK_Flag]).setVersion(11600); + addNodeObject(generator, "MK Brownian", s_node_mk_brownian, "Node_MK_Brownian", [1, Node_MK_Brownian]).setVersion(11630); //addNodeObject(generator, "MK Sparkle", s_node_mk_sparkle, "Node_MK_Sparkle", [1, Node_MK_Sparkle]).patreonExtra(); #endregion diff --git a/scripts/node_scatter/node_scatter.gml b/scripts/node_scatter/node_scatter.gml index 9f8e7f3f5..94d3923a6 100644 --- a/scripts/node_scatter/node_scatter.gml +++ b/scripts/node_scatter/node_scatter.gml @@ -72,6 +72,8 @@ function Node_Scatter(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c .setDisplay(VALUE_DISPLAY.slider); inputs[| 22] = nodeValue("Scatter Distance", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0); + + inputs[| 23] = nodeValue("Sort Y", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false); outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone); @@ -83,7 +85,7 @@ function Node_Scatter(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c ["Scatter", false], 5, 6, 13, 14, 17, 9, 2, ["Path", false], 19, 20, 21, 22, ["Transform", false], 3, 8, 7, 4, - ["Render", false], 18, 11, 12, 16, + ["Render", false], 18, 11, 12, 16, 23, ]; attribute_surface_depth(); @@ -156,6 +158,7 @@ function Node_Scatter(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c var pathRot = _data[20]; var pathShf = _data[21]; var pathDis = _data[22]; + var sortY = _data[23]; var _in_w, _in_h; @@ -199,6 +202,9 @@ function Node_Scatter(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c break; } + var positions = array_create(_amount); + var posIndex = 0; + for(var i = 0; i < _amount; i++) { var sp = noone, _x = 0, _y = 0; var _v = noone; @@ -289,11 +295,27 @@ function Node_Scatter(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c _sct[_sct_len] = _atl; _sct_len++; + if(_dist == NODE_SCATTER_DIST.path) + path_line_index = floor(i / _pre_amount); + } + + if(sortY) array_sort(_sct, function(a1, a2) { return a1.y - a2.y; }); + + for( var i = 0; i < _sct_len; i++ ) { + var _atl = _sct[i]; + + surf = _atl.getSurface(); + _x = _atl.x; + _y = _atl.y; + _scx = _atl.sx; + _scy = _atl.sy; + _r = _atl.rotation; + clr = _atl.blend; + alp = _atl.alpha; + draw_surface_ext_safe(surf, _x, _y, _scx, _scy, _r, clr, alp); - if(_dist == NODE_SCATTER_DIST.path) { - path_line_index = floor(i / _pre_amount); - } else if(_dist == NODE_SCATTER_DIST.tile) { + if(_dist == NODE_SCATTER_DIST.tile) { var _sw = surface_get_width_safe(surf) * _scx; var _sh = surface_get_height_safe(surf) * _scy; @@ -306,6 +328,7 @@ function Node_Scatter(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c if(_x > _dim[0] - _sw || _y > _dim[1] - _sh) draw_surface_ext_safe(surf, _x - _dim[0], _y - _dim[1], _scx, _scy, _r, clr, alp); } } + BLEND_NORMAL; surface_reset_target(); diff --git a/scripts/node_transform/node_transform.gml b/scripts/node_transform/node_transform.gml index aa852da47..6d1ba9aaa 100644 --- a/scripts/node_transform/node_transform.gml +++ b/scripts/node_transform/node_transform.gml @@ -59,11 +59,16 @@ function Node_Transform(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) inputs[| 11] = nodeValue("Active", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true); active_index = 11; + inputs[| 12] = nodeValue("Echo", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false); + + inputs[| 13] = nodeValue("Echo amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 8); + input_display_list = [ 11, 0, - ["Output", true], 9, 1, 7, + ["Output", true], 9, 1, 7, ["Position", false], 2, 10, ["Rotation", false], 3, 5, 8, - ["Scale", false], 6 + ["Scale", false], 6, + ["Echo", true, 12], 13, ]; outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone); @@ -73,6 +78,7 @@ function Node_Transform(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) vel = 0; prev_pos = [ 0, 0 ]; + prev_data = noone; static getDimension = function(arr = 0) { #region var _surf = getSingleValue(0, arr); @@ -186,6 +192,9 @@ function Node_Transform(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) var sca = _data[6]; var mode = _data[7]; + var echo = _data[12]; + var echo_amo = _data[13]; + var cDep = attrDepth(); var ww = surface_get_width_safe(ins); @@ -254,11 +263,12 @@ function Node_Transform(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) var draw_x, draw_y; draw_x = _px + pos[0]; draw_y = _py + pos[1]; - + if(pos_exact) { draw_x = round(draw_x); draw_y = round(draw_y); } + draw_surface_tiled_ext_safe(ins, draw_x, draw_y, sca[0], sca[1], c_white, 1); } @@ -285,7 +295,31 @@ function Node_Transform(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) surface_set_shader(_outSurf); shader_set_interpolation(ins); - draw_surface_ext_safe(ins, draw_x, draw_y, sca[0], sca[1], rot, c_white, 1); + + if(echo && CURRENT_FRAME && prev_data != noone) { + var _pre = prev_data[_array_index]; + + for( var i = 0; i <= echo_amo; i++ ) { + var rat = i / echo_amo; + var _px = lerp(_pre[0][0], pos[0], rat); + var _py = lerp(_pre[0][1], pos[1], rat); + var _rt = lerp(_pre[1], rot, rat); + var _sx = lerp(_pre[2][0], sca[0], rat); + var _sy = lerp(_pre[2][1], sca[1], rat); + + var _ps = point_rotate(_px, _py, _px + anc[0], _py + anc[1], rot); + var _dx = _ps[0]; + var _dy = _ps[1]; + + if(pos_exact) { + _dx = round(_dx); + _dy = round(_dy); + } + + draw_surface_ext_safe(ins, _dx, _dy, _sx, _sy, _rt); + } + } else + draw_surface_ext_safe(ins, draw_x, draw_y, sca[0], sca[1], rot); if(mode == 2) { draw_surface_ext_safe(ins, draw_x - _ww, draw_y - _hh, sca[0], sca[1], rot, c_white, 1); @@ -303,6 +337,12 @@ function Node_Transform(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) #endregion } + prev_data[_array_index] = [ + [ pos[0], pos[1] ], + rot, + [ sca[0], sca[1] ], + ]; + return _outSurf; } #endregion diff --git a/scripts/node_vignette/node_bw.yy b/scripts/node_vignette/node_bw.yy new file mode 100644 index 000000000..6d2681493 --- /dev/null +++ b/scripts/node_vignette/node_bw.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "filter", + "path": "folders/nodes/data/filter.yy", + }, + "resourceVersion": "1.0", + "name": "node_bw", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_vignette/node_color_adjustment.yy b/scripts/node_vignette/node_color_adjustment.yy new file mode 100644 index 000000000..8df16cc8c --- /dev/null +++ b/scripts/node_vignette/node_color_adjustment.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "filter", + "path": "folders/nodes/data/filter.yy", + }, + "resourceVersion": "1.0", + "name": "node_color_adjustment", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_vignette/node_color_replacement.yy b/scripts/node_vignette/node_color_replacement.yy new file mode 100644 index 000000000..024aa6a80 --- /dev/null +++ b/scripts/node_vignette/node_color_replacement.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "process", + "path": "folders/nodes/data/process.yy", + }, + "resourceVersion": "1.0", + "name": "node_color_replacement", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_vignette/node_greyscale.yy b/scripts/node_vignette/node_greyscale.yy new file mode 100644 index 000000000..ee372977e --- /dev/null +++ b/scripts/node_vignette/node_greyscale.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "filter", + "path": "folders/nodes/data/filter.yy", + }, + "resourceVersion": "1.0", + "name": "node_greyscale", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_vignette/node_outline.yy b/scripts/node_vignette/node_outline.yy new file mode 100644 index 000000000..86468bc09 --- /dev/null +++ b/scripts/node_vignette/node_outline.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "process", + "path": "folders/nodes/data/process.yy", + }, + "resourceVersion": "1.0", + "name": "node_outline", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_vignette/node_vignette.gml b/scripts/node_vignette/node_vignette.gml new file mode 100644 index 000000000..c14749730 --- /dev/null +++ b/scripts/node_vignette/node_vignette.gml @@ -0,0 +1,37 @@ +function Node_Vignette(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { + name = "Vignette"; + + inputs[| 0] = nodeValue("Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); + + inputs[| 1] = nodeValue("Active", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true); + active_index = 1; + + inputs[| 2] = nodeValue("Exposure", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 15); + + inputs[| 3] = nodeValue("Strength", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1) + .setDisplay(VALUE_DISPLAY.slider, { range: [ 0, 2, 0.01 ] }); + + inputs[| 4] = nodeValue("Exponent", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.25) + .setDisplay(VALUE_DISPLAY.slider); + + outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone); + + input_display_list = [ 1, + ["Surfaces", false], 0, + ["Vignette", false], 2, 3, 4, + ] + + attribute_surface_depth(); + + static processData = function(_outSurf, _data, _output_index, _array_index) { #region + surface_set_shader(_outSurf, sh_vignette); + shader_set_f("smoothness", _data[2]); + shader_set_f("strength", _data[3]); + shader_set_f("amplitude", _data[4]); + + draw_surface_safe(_data[0], 0, 0); + surface_reset_shader(); + + return _outSurf; + } #endregion +} \ No newline at end of file diff --git a/scripts/node_vignette/node_vignette.yy b/scripts/node_vignette/node_vignette.yy new file mode 100644 index 000000000..6c79a52b3 --- /dev/null +++ b/scripts/node_vignette/node_vignette.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_vignette", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "effects", + "path": "folders/nodes/data/filter/effects.yy", + }, +} \ No newline at end of file diff --git a/shaders/sh_grid/sh_grid.fsh b/shaders/sh_grid/sh_grid.fsh index 947a0bfd6..40304b1d8 100644 --- a/shaders/sh_grid/sh_grid.fsh +++ b/shaders/sh_grid/sh_grid.fsh @@ -36,6 +36,10 @@ uniform vec4 gradient_color[GRADIENT_LIMIT]; uniform float gradient_time[GRADIENT_LIMIT]; uniform int gradient_keys; +uniform int textureTruchet; +uniform float truchetSeed; +uniform float truchetThres; + float random (in vec2 st) { return fract(sin(dot(st.xy + vec2(85.456034, 64.54065), vec2(12.9898, 78.233))) * (43758.5453123 + seed) ); } vec3 rgb2hsv(vec3 c) { #region @@ -170,6 +174,15 @@ void main() { #region colr = gradientEval(random(sqSt)); } else if(mode == 2) { vec2 uv = fract(_pos * sca); + + if(textureTruchet == 1) { + float rx = random(floor(_pos * sca) + truchetSeed / 100.); + float ry = random(floor(_pos * sca) + truchetSeed / 100. + vec2(0.4864, 0.6879)); + + if(rx > truchetThres) uv.x = 1. - uv.x; + if(ry > truchetThres) uv.y = 1. - uv.y; + } + colr = texture2D( gm_BaseTexture, uv ); } else if(mode == 3) { vec2 uv = fract(sqSt); diff --git a/shaders/sh_grid_hex/sh_grid_hex.fsh b/shaders/sh_grid_hex/sh_grid_hex.fsh index 3c196b952..d29578e05 100644 --- a/shaders/sh_grid_hex/sh_grid_hex.fsh +++ b/shaders/sh_grid_hex/sh_grid_hex.fsh @@ -28,6 +28,10 @@ uniform vec4 gradient_color[GRADIENT_LIMIT]; uniform float gradient_time[GRADIENT_LIMIT]; uniform int gradient_keys; +uniform int textureTruchet; +uniform float truchetSeed; +uniform float truchetThres; + #define PI 3.14159265359 float random (in vec2 st) { return fract(sin(dot(st.xy + vec2(85.456034, 64.54065), vec2(12.9898, 78.233))) * (43758.5453123 + seed) ); } @@ -165,8 +169,29 @@ void main() { #region colr = gradientEval(random(uv)); } else if(mode == 2) { - vec2 uv = hc.xy; - uv.x = (uv.x + PI / 2.) / PI; + //vec2 uv = hc.xy; + //uv.x = (uv.x + PI / 2.) / PI; + + vec2 uv = (pos - hc.zw) + vec2(0.5, 0.5); + + if(textureTruchet == 1) { //lmao wtf is this code? + float rx = random(hc.zw + truchetSeed / 100.); + float ry = random(hc.zw + truchetSeed / 100. + vec2(0.4864, 0.6879)); + float rz = random(hc.zw + truchetSeed / 100. + vec2(0.1638, 0.8974)); + float ra = random(hc.zw + truchetSeed / 100. + vec2(0.8432, 0.0568)); + float rb = random(hc.zw + truchetSeed / 100. + vec2(0.3757, 0.7463)); + + float ang = 0.; + if(rx > truchetThres) ang += 60.; + if(ry > truchetThres) ang += 60.; + if(rz > truchetThres) ang += 60.; + if(ra > truchetThres) ang += 60.; + if(rb > truchetThres) ang += 60.; + + ang = radians(ang); + + uv = 0.5 + mat2(cos(ang), -sin(ang), sin(ang), cos(ang)) * (uv - 0.5); + } colr = texture2D( gm_BaseTexture, uv ); } else if(mode == 3) { diff --git a/shaders/sh_grid_tri/sh_grid_tri.fsh b/shaders/sh_grid_tri/sh_grid_tri.fsh index bb26938a2..29c806de8 100644 --- a/shaders/sh_grid_tri/sh_grid_tri.fsh +++ b/shaders/sh_grid_tri/sh_grid_tri.fsh @@ -33,6 +33,10 @@ uniform vec4 gradient_color[GRADIENT_LIMIT]; uniform float gradient_time[GRADIENT_LIMIT]; uniform int gradient_keys; +uniform int textureTruchet; +uniform float truchetSeed; +uniform float truchetThres; + float random (in vec2 st) { return fract(sin(dot(st.xy + vec2(85.456034, 64.54065), vec2(12.9898, 78.233))) * (43758.5453123 + seed) ); } vec3 rgb2hsv(vec3 c) { #region @@ -157,6 +161,18 @@ void main() { #region colr = gradientEval(random(uv)); } else if(mode == 2) { vec2 uv = fract((_pos * vec2(1., c30) - tri.xy) + vec2(0.5, 0.)); + + if(textureTruchet == 1) { + float rx = random(floor(tri.xy) + truchetSeed / 100.); + float ry = random(floor(tri.xy) + truchetSeed / 100. + vec2(0.4864, 0.6879)); + float ang = 0.; + if(rx > truchetThres) ang += 120.; + if(ry > truchetThres) ang += 120.; + ang = radians(ang); + + uv = 0.5 + mat2(cos(ang), -sin(ang), sin(ang), cos(ang)) * (uv - 0.5); + } + colr = texture2D( gm_BaseTexture, uv ); } else if(mode == 3) { vec2 uv = clamp(tri.xy / sca, 0., 1.); diff --git a/shaders/sh_herringbone_tile/sh_herringbone_tile.fsh b/shaders/sh_herringbone_tile/sh_herringbone_tile.fsh new file mode 100644 index 000000000..fe9ff3e9d --- /dev/null +++ b/shaders/sh_herringbone_tile/sh_herringbone_tile.fsh @@ -0,0 +1,189 @@ +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +#define GRADIENT_LIMIT 128 + +uniform vec2 dimension; +uniform vec2 position; +uniform float seed; +uniform int mode; +uniform int aa; + +uniform vec2 scale; +uniform int scaleUseSurf; +uniform sampler2D scaleSurf; + +uniform vec2 angle; +uniform int angleUseSurf; +uniform sampler2D angleSurf; + +uniform vec2 thick; +uniform int thickUseSurf; +uniform sampler2D thickSurf; + +uniform vec4 gapCol; +uniform int gradient_use; +uniform int gradient_blend; +uniform vec4 gradient_color[GRADIENT_LIMIT]; +uniform float gradient_time[GRADIENT_LIMIT]; +uniform int gradient_keys; + +uniform int textureTruchet; +uniform float truchetSeed; +uniform float truchetThres; + +uniform float tileLength; + +#define PI 3.14159265359 +#define TAU 6.28318530718 + +float random (in vec2 st) { return fract(sin(dot(st.xy + vec2(85.456034, 64.54065), vec2(12.9898, 78.233))) * (43758.5453123 + seed) ); } + +vec3 rgb2hsv(vec3 c) { #region + vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); + vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); + + float d = q.x - min(q.w, q.y); + float e = 0.0000000001; + return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); + } #endregion + +vec3 hsv2rgb(vec3 c) { #region + vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +} #endregion + +float hueDist(float a0, float a1, float t) { #region + float da = fract(a1 - a0); + float ds = fract(2. * da) - da; + return a0 + ds * t; +} #endregion + +vec3 hsvMix(vec3 c1, vec3 c2, float t) { #region + vec3 h1 = rgb2hsv(c1); + vec3 h2 = rgb2hsv(c2); + + vec3 h = vec3(0.); + h.x = h.x + hueDist(h1.x, h2.x, t); + h.y = mix(h1.y, h2.y, t); + h.z = mix(h1.z, h2.z, t); + + return hsv2rgb(h); +} #endregion + +vec4 gradientEval(in float prog) { #region + vec4 col = vec4(0.); + + for(int i = 0; i < GRADIENT_LIMIT; i++) { + if(gradient_time[i] == prog) { + col = gradient_color[i]; + break; + } else if(gradient_time[i] > prog) { + if(i == 0) + col = gradient_color[i]; + else { + float t = (prog - gradient_time[i - 1]) / (gradient_time[i] - gradient_time[i - 1]); + if(gradient_blend == 0) + col = mix(gradient_color[i - 1], gradient_color[i], t); + else if(gradient_blend == 1) + col = gradient_color[i - 1]; + else if(gradient_blend == 2) + col = vec4(hsvMix(gradient_color[i - 1].rgb, gradient_color[i].rgb, t), 1.); + } + break; + } + if(i >= gradient_keys - 1) { + col = gradient_color[gradient_keys - 1]; + break; + } + } + + return col; +} #endregion + +float round(float val) { return fract(val) >= 0.5? ceil(val) : floor(val); } + +vec4 HerringboneCoords(vec2 uv) { #region + float scale = 20.; + + float xshifted = (uv.x - floor(uv.y)) * .5; + float mask = fract(xshifted / tileLength) > .5 ? 1. : 0.; + + // apply mask + if (mask > 0.) { // shift down and rotate + uv.x -= tileLength - 1.; + uv = uv.yx; + } + + uv.x /= tileLength; + uv.x -= floor(uv.y) / tileLength; + uv = fract(uv); + + vec2 _uv = uv; + float maxH = 1.; + uv = abs(uv -.5) * 2.; + uv.x = uv.x * tileLength - tileLength + 1.; + + float h = 1. - max(uv.x, uv.y); + h = min(h, maxH); + + return vec4(0., h / maxH, _uv); +} #endregion + +void main() { #region + #region params + vec2 sca = scale; + if(scaleUseSurf == 1) { + vec4 _vMap = texture2D( scaleSurf, v_vTexcoord ); + sca = vec2(mix(scale.x, scale.y, (_vMap.r + _vMap.g + _vMap.b) / 3.)); + } + + float ang = angle.x; + if(angleUseSurf == 1) { + vec4 _vMap = texture2D( angleSurf, v_vTexcoord ); + ang = mix(angle.x, angle.y, (_vMap.r + _vMap.g + _vMap.b) / 3.); + } + ang = radians(ang); + + float thk = thick.x; + if(thickUseSurf == 1) { + vec4 _vMap = texture2D( thickSurf, v_vTexcoord ); + thk = mix(thick.x, thick.y, (_vMap.r + _vMap.g + _vMap.b) / 3.); + } + #endregion + + vec2 pos = (v_vTexcoord - position) * sca, _pos; + float ratio = dimension.x / dimension.y; + _pos.x = pos.x * ratio * cos(ang) - pos.y * sin(ang); + _pos.y = pos.x * ratio * sin(ang) + pos.y * cos(ang); + + vec4 hc = HerringboneCoords(_pos); + vec4 colr; + + if(mode == 1) { + gl_FragColor = vec4(vec3(hc.y), 1.0); + return; + } + + if(mode == 0) { + vec2 uv = abs(hc.zw) / sca; + colr = gradientEval(random(uv)); + } else if(mode == 2) { + vec2 uv = hc.zw; + + if(textureTruchet == 1) { + float rx = random(floor(hc.zw / sca) + truchetSeed / 1000.); + float ry = random(floor(hc.zw / sca) + truchetSeed / 1000. + vec2(0.4864, 0.6879)); + + if(rx > truchetThres) uv.x = 1. - uv.x; + if(ry > truchetThres) uv.y = 1. - uv.y; + } + + colr = texture2D( gm_BaseTexture, uv ); + } + + float _aa = 3. / max(dimension.x, dimension.y); + gl_FragColor = mix(gapCol, colr, aa == 1? smoothstep(thk - _aa, thk, hc.y) : step(thk, hc.y)); +} #endregion \ No newline at end of file diff --git a/shaders/sh_herringbone_tile/sh_herringbone_tile.vsh b/shaders/sh_herringbone_tile/sh_herringbone_tile.vsh new file mode 100644 index 000000000..d4b316559 --- /dev/null +++ b/shaders/sh_herringbone_tile/sh_herringbone_tile.vsh @@ -0,0 +1,18 @@ +// +// Simple passthrough vertex shader +// +attribute vec3 in_Position; // (x,y,z) +//attribute vec3 in_Normal; // (x,y,z) unused in this shader. +attribute vec4 in_Colour; // (r,g,b,a) +attribute vec2 in_TextureCoord; // (u,v) + +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +void main() { + vec4 object_space_pos = vec4( in_Position.x, in_Position.y, in_Position.z, 1.0); + gl_Position = gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] * object_space_pos; + + v_vColour = in_Colour; + v_vTexcoord = in_TextureCoord; +} diff --git a/shaders/sh_herringbone_tile/sh_herringbone_tile.yy b/shaders/sh_herringbone_tile/sh_herringbone_tile.yy new file mode 100644 index 000000000..625e43bd5 --- /dev/null +++ b/shaders/sh_herringbone_tile/sh_herringbone_tile.yy @@ -0,0 +1,10 @@ +{ + "resourceType": "GMShader", + "resourceVersion": "1.0", + "name": "sh_herringbone_tile", + "parent": { + "name": "grid", + "path": "folders/shader/generator/grid.yy", + }, + "type": 1, +} \ No newline at end of file diff --git a/shaders/sh_offset/sh_offset.fsh b/shaders/sh_offset/sh_offset.fsh new file mode 100644 index 000000000..ad9f2a95e --- /dev/null +++ b/shaders/sh_offset/sh_offset.fsh @@ -0,0 +1,8 @@ +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +uniform vec2 offset; + +void main() { + gl_FragColor = texture2D( gm_BaseTexture, fract(v_vTexcoord + offset) ); +} diff --git a/shaders/sh_offset/sh_offset.vsh b/shaders/sh_offset/sh_offset.vsh new file mode 100644 index 000000000..3900c20f4 --- /dev/null +++ b/shaders/sh_offset/sh_offset.vsh @@ -0,0 +1,19 @@ +// +// Simple passthrough vertex shader +// +attribute vec3 in_Position; // (x,y,z) +//attribute vec3 in_Normal; // (x,y,z) unused in this shader. +attribute vec4 in_Colour; // (r,g,b,a) +attribute vec2 in_TextureCoord; // (u,v) + +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +void main() +{ + vec4 object_space_pos = vec4( in_Position.x, in_Position.y, in_Position.z, 1.0); + gl_Position = gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] * object_space_pos; + + v_vColour = in_Colour; + v_vTexcoord = in_TextureCoord; +} diff --git a/shaders/sh_offset/sh_offset.yy b/shaders/sh_offset/sh_offset.yy new file mode 100644 index 000000000..5d494528c --- /dev/null +++ b/shaders/sh_offset/sh_offset.yy @@ -0,0 +1,10 @@ +{ + "resourceType": "GMShader", + "resourceVersion": "1.0", + "name": "sh_offset", + "parent": { + "name": "warp", + "path": "folders/shader/warp.yy", + }, + "type": 1, +} \ No newline at end of file diff --git a/shaders/sh_pytagorean_tile/sh_pytagorean_tile.fsh b/shaders/sh_pytagorean_tile/sh_pytagorean_tile.fsh new file mode 100644 index 000000000..043c97864 --- /dev/null +++ b/shaders/sh_pytagorean_tile/sh_pytagorean_tile.fsh @@ -0,0 +1,227 @@ +// Pytagorean tiling +// gelami Pythagorean Square Tiling 2 + +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +#define GRADIENT_LIMIT 128 + +uniform vec2 dimension; +uniform vec2 position; +uniform float seed; +uniform int mode; +uniform int aa; + +uniform vec2 scale; +uniform int scaleUseSurf; +uniform sampler2D scaleSurf; + +uniform vec2 angle; +uniform int angleUseSurf; +uniform sampler2D angleSurf; + +uniform vec2 thick; +uniform int thickUseSurf; +uniform sampler2D thickSurf; + +uniform vec4 gapCol; +uniform int gradient_use; +uniform int gradient_blend; +uniform vec4 gradient_color[GRADIENT_LIMIT]; +uniform float gradient_time[GRADIENT_LIMIT]; +uniform int gradient_keys; + +uniform int textureTruchet; +uniform float truchetSeed; +uniform float truchetThres; + +uniform float phase; + +#define PI 3.14159265359 +#define TAU 6.28318530718 + +float random (in vec2 st) { return fract(sin(dot(st.xy + vec2(85.456034, 64.54065), vec2(12.9898, 78.233))) * (43758.5453123 + seed) ); } + +vec3 rgb2hsv(vec3 c) { #region + vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); + vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); + + float d = q.x - min(q.w, q.y); + float e = 0.0000000001; + return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); + } #endregion + +vec3 hsv2rgb(vec3 c) { #region + vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +} #endregion + +float hueDist(float a0, float a1, float t) { #region + float da = fract(a1 - a0); + float ds = fract(2. * da) - da; + return a0 + ds * t; +} #endregion + +vec3 hsvMix(vec3 c1, vec3 c2, float t) { #region + vec3 h1 = rgb2hsv(c1); + vec3 h2 = rgb2hsv(c2); + + vec3 h = vec3(0.); + h.x = h.x + hueDist(h1.x, h2.x, t); + h.y = mix(h1.y, h2.y, t); + h.z = mix(h1.z, h2.z, t); + + return hsv2rgb(h); +} #endregion + +vec4 gradientEval(in float prog) { #region + vec4 col = vec4(0.); + + for(int i = 0; i < GRADIENT_LIMIT; i++) { + if(gradient_time[i] == prog) { + col = gradient_color[i]; + break; + } else if(gradient_time[i] > prog) { + if(i == 0) + col = gradient_color[i]; + else { + float t = (prog - gradient_time[i - 1]) / (gradient_time[i] - gradient_time[i - 1]); + if(gradient_blend == 0) + col = mix(gradient_color[i - 1], gradient_color[i], t); + else if(gradient_blend == 1) + col = gradient_color[i - 1]; + else if(gradient_blend == 2) + col = vec4(hsvMix(gradient_color[i - 1].rgb, gradient_color[i].rgb, t), 1.); + } + break; + } + if(i >= gradient_keys - 1) { + col = gradient_color[gradient_keys - 1]; + break; + } + } + + return col; +} #endregion + +float HexDist(vec2 p) { #region + p = abs(p); + + float c = dot(p, normalize(vec2(1, 1.73))); + c = max(c, p.x); + + return c; +} #endregion + +mat2 rot2D(float a) { return mat2(cos(a), -sin(a), sin(a), cos(a)); } + +vec3 sdBox( in vec2 p, in float b ) { #region + vec2 d = abs(p) - b; + return vec3( max(d.x, d.y), step(vec2(0), d) ); +} #endregion + +float round(float val) { return fract(val) >= 0.5? ceil(val) : floor(val); } + +vec4 PytagoreanCoords(vec2 uv) { #region + float a = radians(phase) / 4.; + float q = mod(round(a / (TAU / 4.)), 2.); + + vec2 p = uv * 2.; + + p *= rot2D(a); + + vec2 p1 = fract(p) - 0.5; + vec2 sp = sign(p1); + vec2 p2 = (abs(p1) - 0.5) * sp; + + vec2 id = (p - p1) * 2.; + + p1 *= rot2D(-a); + p2 *= rot2D(-a); + + vec2 sp2 = sign(p1); + vec2 s = abs(vec2(cos(a), sin(a))) * 0.5; + + vec3 d1 = sdBox(p1, s.x); + vec3 d2 = sdBox(p2, s.y); + + float m = q > 0.5 ? step(0., d1.x) : step(d2.x, 0.); + float s1 = mod(ceil(abs((a - PI) / (PI / 4.))), 2.) * 2. - 1.; + float s2 = q * 2. - 1.; + float ss = s1 * s2 * 2.; + + id += sp * m; + + float m2 = clamp(sign(d1.x) + sign(d2.x), 0., 1.); + + id += d1.yz * sp2 * ss * m2; + + float size = m < 0.5 ? s.x : s.y; + vec2 puv = (p - id * 0.5) / size * rot2D(-a) * 0.5; + + vec2 dp = (0.5 - abs(puv)) * size; + float d = min(dp.x, dp.y); + + return vec4(0., d, puv); +} #endregion + +void main() { #region + #region params + vec2 sca = scale; + if(scaleUseSurf == 1) { + vec4 _vMap = texture2D( scaleSurf, v_vTexcoord ); + sca = vec2(mix(scale.x, scale.y, (_vMap.r + _vMap.g + _vMap.b) / 3.)); + } + + float ang = angle.x; + if(angleUseSurf == 1) { + vec4 _vMap = texture2D( angleSurf, v_vTexcoord ); + ang = mix(angle.x, angle.y, (_vMap.r + _vMap.g + _vMap.b) / 3.); + } + ang = radians(ang); + + float thk = thick.x; + if(thickUseSurf == 1) { + vec4 _vMap = texture2D( thickSurf, v_vTexcoord ); + thk = mix(thick.x, thick.y, (_vMap.r + _vMap.g + _vMap.b) / 3.); + } + #endregion + + thk = clamp(thk, 0., 1.); + thk = pow(thk, 3.); + + vec2 pos = (v_vTexcoord - position) * sca, _pos; + float ratio = dimension.x / dimension.y; + _pos.x = pos.x * ratio * cos(ang) - pos.y * sin(ang); + _pos.y = pos.x * ratio * sin(ang) + pos.y * cos(ang); + + vec4 hc = PytagoreanCoords(_pos); + vec4 colr; + + if(mode == 1) { + gl_FragColor = vec4(vec3(hc.y), 1.0); + return; + } + + if(mode == 0) { + vec2 uv = abs(hc.zw) / sca; + colr = gradientEval(random(uv)); + } else if(mode == 2) { + vec2 uv = hc.zw + vec2(0.5, 0.5); + + if(textureTruchet == 1) { + float rx = random(hc.zw + truchetSeed / 100.); + float ry = random(hc.zw + truchetSeed / 100. + vec2(0.4864, 0.6879)); + + if(rx > truchetThres) uv.x = 1. - uv.x; + if(ry > truchetThres) uv.y = 1. - uv.y; + } + + colr = texture2D( gm_BaseTexture, uv ); + } + + float _aa = 3. / max(dimension.x, dimension.y); + gl_FragColor = mix(gapCol, colr, aa == 1? smoothstep(thk - _aa, thk, hc.y) : step(thk, hc.y)); +} #endregion \ No newline at end of file diff --git a/shaders/sh_pytagorean_tile/sh_pytagorean_tile.vsh b/shaders/sh_pytagorean_tile/sh_pytagorean_tile.vsh new file mode 100644 index 000000000..d4b316559 --- /dev/null +++ b/shaders/sh_pytagorean_tile/sh_pytagorean_tile.vsh @@ -0,0 +1,18 @@ +// +// Simple passthrough vertex shader +// +attribute vec3 in_Position; // (x,y,z) +//attribute vec3 in_Normal; // (x,y,z) unused in this shader. +attribute vec4 in_Colour; // (r,g,b,a) +attribute vec2 in_TextureCoord; // (u,v) + +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +void main() { + vec4 object_space_pos = vec4( in_Position.x, in_Position.y, in_Position.z, 1.0); + gl_Position = gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] * object_space_pos; + + v_vColour = in_Colour; + v_vTexcoord = in_TextureCoord; +} diff --git a/shaders/sh_pytagorean_tile/sh_pytagorean_tile.yy b/shaders/sh_pytagorean_tile/sh_pytagorean_tile.yy new file mode 100644 index 000000000..7fb32cdd0 --- /dev/null +++ b/shaders/sh_pytagorean_tile/sh_pytagorean_tile.yy @@ -0,0 +1,10 @@ +{ + "resourceType": "GMShader", + "resourceVersion": "1.0", + "name": "sh_pytagorean_tile", + "parent": { + "name": "grid", + "path": "folders/shader/generator/grid.yy", + }, + "type": 1, +} \ No newline at end of file diff --git a/shaders/sh_random_tile/sh_random_tile.fsh b/shaders/sh_random_tile/sh_random_tile.fsh new file mode 100644 index 000000000..f07828bbb --- /dev/null +++ b/shaders/sh_random_tile/sh_random_tile.fsh @@ -0,0 +1,199 @@ +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +#define GRADIENT_LIMIT 128 + +uniform vec2 dimension; +uniform vec2 position; +uniform float seed; +uniform int mode; +uniform int aa; + +uniform vec2 scale; +uniform int scaleUseSurf; +uniform sampler2D scaleSurf; + +uniform vec2 angle; +uniform int angleUseSurf; +uniform sampler2D angleSurf; + +uniform vec2 thick; +uniform int thickUseSurf; +uniform sampler2D thickSurf; + +uniform vec4 gapCol; +uniform int gradient_use; +uniform int gradient_blend; +uniform vec4 gradient_color[GRADIENT_LIMIT]; +uniform float gradient_time[GRADIENT_LIMIT]; +uniform int gradient_keys; + +uniform int textureTruchet; +uniform float truchetSeed; +uniform float truchetThres; + +#define PI 3.14159265359 +#define TAU 6.28318530718 + +float random (in vec2 st) { return fract(sin(dot(st.xy + vec2(85.456034, 64.54065), vec2(12.9898, 78.233))) * (43758.5453123 + seed) ); } + +vec3 rgb2hsv(vec3 c) { #region + vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); + vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); + + float d = q.x - min(q.w, q.y); + float e = 0.0000000001; + return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); + } #endregion + +vec3 hsv2rgb(vec3 c) { #region + vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +} #endregion + +float hueDist(float a0, float a1, float t) { #region + float da = fract(a1 - a0); + float ds = fract(2. * da) - da; + return a0 + ds * t; +} #endregion + +vec3 hsvMix(vec3 c1, vec3 c2, float t) { #region + vec3 h1 = rgb2hsv(c1); + vec3 h2 = rgb2hsv(c2); + + vec3 h = vec3(0.); + h.x = h.x + hueDist(h1.x, h2.x, t); + h.y = mix(h1.y, h2.y, t); + h.z = mix(h1.z, h2.z, t); + + return hsv2rgb(h); +} #endregion + +vec4 gradientEval(in float prog) { #region + vec4 col = vec4(0.); + + for(int i = 0; i < GRADIENT_LIMIT; i++) { + if(gradient_time[i] == prog) { + col = gradient_color[i]; + break; + } else if(gradient_time[i] > prog) { + if(i == 0) + col = gradient_color[i]; + else { + float t = (prog - gradient_time[i - 1]) / (gradient_time[i] - gradient_time[i - 1]); + if(gradient_blend == 0) + col = mix(gradient_color[i - 1], gradient_color[i], t); + else if(gradient_blend == 1) + col = gradient_color[i - 1]; + else if(gradient_blend == 2) + col = vec4(hsvMix(gradient_color[i - 1].rgb, gradient_color[i].rgb, t), 1.); + } + break; + } + if(i >= gradient_keys - 1) { + col = gradient_color[gradient_keys - 1]; + break; + } + } + + return col; +} #endregion + +float round(float val) { return fract(val) >= 0.5? ceil(val) : floor(val); } + +vec4 RandomCoords(vec2 uv) { #region + vec2 fl = floor(uv); + vec2 fr = fract(uv); + + bool ch = mod(fl.x + fl.y, 2.) > .5; + + float r1 = random(fl); + vec2 ax = ch ? fr.xy : fr.yx; + + float a1 = ax.x - r1; + float si = sign(a1); + vec2 o1 = ch ? vec2(si, 0.) : vec2(0., si); + + float r2 = random(fl + o1); + float a2 = ax.y - r2; + + vec2 st = step(vec2(0.), vec2(a1, a2)); + + vec2 of = ch ? st.xy : st.yx; + vec2 id = fl + of - 1.; + + bool ch2 = mod(id.x + id.y, 2.) > .5; + + float r00 = random(id + vec2(0., 0.)); + float r10 = random(id + vec2(1., 0.)); + float r01 = random(id + vec2(0., 1.)); + float r11 = random(id + vec2(1., 1.)); + + vec2 s0 = ch2 ? vec2(r00, r10) : vec2(r01, r00); + vec2 s1 = ch2 ? vec2(r11, r01) : vec2(r10, r11); + vec2 s = 1. - s0 + s1; + vec2 puv = (uv - id - s0) / s; + + vec2 b = (.5 - abs(puv - .5)) * s; + float d = min(b.x, b.y); + + return vec4(0., d, puv); +} #endregion + +void main() { #region + #region params + vec2 sca = scale; + if(scaleUseSurf == 1) { + vec4 _vMap = texture2D( scaleSurf, v_vTexcoord ); + sca = vec2(mix(scale.x, scale.y, (_vMap.r + _vMap.g + _vMap.b) / 3.)); + } + + float ang = angle.x; + if(angleUseSurf == 1) { + vec4 _vMap = texture2D( angleSurf, v_vTexcoord ); + ang = mix(angle.x, angle.y, (_vMap.r + _vMap.g + _vMap.b) / 3.); + } + ang = radians(ang); + + float thk = thick.x; + if(thickUseSurf == 1) { + vec4 _vMap = texture2D( thickSurf, v_vTexcoord ); + thk = mix(thick.x, thick.y, (_vMap.r + _vMap.g + _vMap.b) / 3.); + } + #endregion + + vec2 pos = (v_vTexcoord - position) * sca, _pos; + float ratio = dimension.x / dimension.y; + _pos.x = pos.x * ratio * cos(ang) - pos.y * sin(ang); + _pos.y = pos.x * ratio * sin(ang) + pos.y * cos(ang); + + vec4 hc = RandomCoords(_pos); + vec4 colr; + + if(mode == 1) { + gl_FragColor = vec4(vec3(hc.y), 1.0); + return; + } + + if(mode == 0) { + vec2 uv = abs(hc.zw) / sca; + colr = gradientEval(random(uv)); + } else if(mode == 2) { + vec2 uv = hc.zw; + + if(textureTruchet == 1) { + float rx = random(floor(hc.zw / sca) + truchetSeed / 1000.); + float ry = random(floor(hc.zw / sca) + truchetSeed / 1000. + vec2(0.4864, 0.6879)); + + if(rx > truchetThres) uv.x = 1. - uv.x; + if(ry > truchetThres) uv.y = 1. - uv.y; + } + + colr = texture2D( gm_BaseTexture, uv ); + } + + float _aa = 3. / max(dimension.x, dimension.y); + gl_FragColor = mix(gapCol, colr, aa == 1? smoothstep(thk - _aa, thk, hc.y) : step(thk, hc.y)); +} #endregion \ No newline at end of file diff --git a/shaders/sh_random_tile/sh_random_tile.vsh b/shaders/sh_random_tile/sh_random_tile.vsh new file mode 100644 index 000000000..d4b316559 --- /dev/null +++ b/shaders/sh_random_tile/sh_random_tile.vsh @@ -0,0 +1,18 @@ +// +// Simple passthrough vertex shader +// +attribute vec3 in_Position; // (x,y,z) +//attribute vec3 in_Normal; // (x,y,z) unused in this shader. +attribute vec4 in_Colour; // (r,g,b,a) +attribute vec2 in_TextureCoord; // (u,v) + +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +void main() { + vec4 object_space_pos = vec4( in_Position.x, in_Position.y, in_Position.z, 1.0); + gl_Position = gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] * object_space_pos; + + v_vColour = in_Colour; + v_vTexcoord = in_TextureCoord; +} diff --git a/shaders/sh_random_tile/sh_random_tile.yy b/shaders/sh_random_tile/sh_random_tile.yy new file mode 100644 index 000000000..26e5cfc47 --- /dev/null +++ b/shaders/sh_random_tile/sh_random_tile.yy @@ -0,0 +1,10 @@ +{ + "resourceType": "GMShader", + "resourceVersion": "1.0", + "name": "sh_random_tile", + "parent": { + "name": "grid", + "path": "folders/shader/generator/grid.yy", + }, + "type": 1, +} \ No newline at end of file diff --git a/shaders/sh_vignette/sh_vignette.fsh b/shaders/sh_vignette/sh_vignette.fsh new file mode 100644 index 000000000..629b13e6b --- /dev/null +++ b/shaders/sh_vignette/sh_vignette.fsh @@ -0,0 +1,18 @@ +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +uniform float smoothness; +uniform float strength; +uniform float amplitude; + +void main() { + vec2 uv = v_vTexcoord; + uv *= 1.0 - uv.yx; + float vig = uv.x * uv.y * smoothness; + + vig = pow(vig, amplitude); + vig = clamp(vig, 0., 1.); + + vec4 samp = texture2D( gm_BaseTexture, v_vTexcoord ); + gl_FragColor = vec4(samp.rgb * (1. - ((1. - vig) * strength)), samp.a); +} diff --git a/shaders/sh_vignette/sh_vignette.vsh b/shaders/sh_vignette/sh_vignette.vsh new file mode 100644 index 000000000..3900c20f4 --- /dev/null +++ b/shaders/sh_vignette/sh_vignette.vsh @@ -0,0 +1,19 @@ +// +// Simple passthrough vertex shader +// +attribute vec3 in_Position; // (x,y,z) +//attribute vec3 in_Normal; // (x,y,z) unused in this shader. +attribute vec4 in_Colour; // (r,g,b,a) +attribute vec2 in_TextureCoord; // (u,v) + +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +void main() +{ + vec4 object_space_pos = vec4( in_Position.x, in_Position.y, in_Position.z, 1.0); + gl_Position = gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] * object_space_pos; + + v_vColour = in_Colour; + v_vTexcoord = in_TextureCoord; +} diff --git a/shaders/sh_vignette/sh_vignette.yy b/shaders/sh_vignette/sh_vignette.yy new file mode 100644 index 000000000..12f8615fd --- /dev/null +++ b/shaders/sh_vignette/sh_vignette.yy @@ -0,0 +1,10 @@ +{ + "resourceType": "GMShader", + "resourceVersion": "1.0", + "name": "sh_vignette", + "parent": { + "name": "filter", + "path": "folders/shader/filter.yy", + }, + "type": 1, +} \ No newline at end of file diff --git a/sprites/s_node_herringbone_tile/5ebe5d75-1c6f-402f-82e8-081a4688dd31.png b/sprites/s_node_herringbone_tile/5ebe5d75-1c6f-402f-82e8-081a4688dd31.png new file mode 100644 index 000000000..2adb91a3d Binary files /dev/null and b/sprites/s_node_herringbone_tile/5ebe5d75-1c6f-402f-82e8-081a4688dd31.png differ diff --git a/sprites/s_node_herringbone_tile/layers/5ebe5d75-1c6f-402f-82e8-081a4688dd31/5d88161e-c238-46fc-a8b5-c99db331ef28.png b/sprites/s_node_herringbone_tile/layers/5ebe5d75-1c6f-402f-82e8-081a4688dd31/5d88161e-c238-46fc-a8b5-c99db331ef28.png new file mode 100644 index 000000000..2adb91a3d Binary files /dev/null and b/sprites/s_node_herringbone_tile/layers/5ebe5d75-1c6f-402f-82e8-081a4688dd31/5d88161e-c238-46fc-a8b5-c99db331ef28.png differ diff --git a/sprites/s_node_herringbone_tile/s_node_herringbone_tile.yy b/sprites/s_node_herringbone_tile/s_node_herringbone_tile.yy new file mode 100644 index 000000000..555b175f9 --- /dev/null +++ b/sprites/s_node_herringbone_tile/s_node_herringbone_tile.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_herringbone_tile", + "bbox_bottom": 63, + "bbox_left": 0, + "bbox_right": 63, + "bbox_top": 0, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"5ebe5d75-1c6f-402f-82e8-081a4688dd31",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"5d88161e-c238-46fc-a8b5-c99db331ef28","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "generator", + "path": "folders/nodes/icons/generator.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_herringbone_tile", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "showBackdrop": true, + "showBackdropImage": false, + "timeUnits": 1, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"5ebe5d75-1c6f-402f-82e8-081a4688dd31","path":"sprites/s_node_herringbone_tile/s_node_herringbone_tile.yy",},},},"Disabled":false,"id":"10f5b974-3b43-4e8a-b587-88e94d88dd1c","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, + ], + "visibleRange": null, + "volume": 1.0, + "xorigin": 32, + "yorigin": 32, + }, + "swatchColours": null, + "swfPrecision": 2.525, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "type": 0, + "VTile": false, + "width": 64, +} \ No newline at end of file diff --git a/sprites/s_node_mk_brownian/47a3aefd-d711-4abe-8e01-d63c1257d297.png b/sprites/s_node_mk_brownian/47a3aefd-d711-4abe-8e01-d63c1257d297.png new file mode 100644 index 000000000..693f3672d Binary files /dev/null and b/sprites/s_node_mk_brownian/47a3aefd-d711-4abe-8e01-d63c1257d297.png differ diff --git a/sprites/s_node_mk_brownian/layers/47a3aefd-d711-4abe-8e01-d63c1257d297/6c2ef40f-6ca5-4d34-bc20-d9a69ad33cdc.png b/sprites/s_node_mk_brownian/layers/47a3aefd-d711-4abe-8e01-d63c1257d297/6c2ef40f-6ca5-4d34-bc20-d9a69ad33cdc.png new file mode 100644 index 000000000..693f3672d Binary files /dev/null and b/sprites/s_node_mk_brownian/layers/47a3aefd-d711-4abe-8e01-d63c1257d297/6c2ef40f-6ca5-4d34-bc20-d9a69ad33cdc.png differ diff --git a/sprites/s_node_mk_brownian/s_node_mk_brownian.yy b/sprites/s_node_mk_brownian/s_node_mk_brownian.yy new file mode 100644 index 000000000..ef08346dd --- /dev/null +++ b/sprites/s_node_mk_brownian/s_node_mk_brownian.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_mk_brownian", + "bbox_bottom": 63, + "bbox_left": 0, + "bbox_right": 63, + "bbox_top": 0, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"47a3aefd-d711-4abe-8e01-d63c1257d297",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"6c2ef40f-6ca5-4d34-bc20-d9a69ad33cdc","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "MK effects", + "path": "folders/nodes/icons/MK effects.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_mk_brownian", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "showBackdrop": true, + "showBackdropImage": false, + "timeUnits": 1, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"47a3aefd-d711-4abe-8e01-d63c1257d297","path":"sprites/s_node_mk_brownian/s_node_mk_brownian.yy",},},},"Disabled":false,"id":"901392a8-1306-40b7-91c2-f8e8b2781aba","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, + ], + "visibleRange": null, + "volume": 1.0, + "xorigin": 32, + "yorigin": 32, + }, + "swatchColours": null, + "swfPrecision": 2.525, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "type": 0, + "VTile": false, + "width": 64, +} \ No newline at end of file diff --git a/sprites/s_node_offset/5a47b47c-a005-4a14-b1c0-6e58fded3a46.png b/sprites/s_node_offset/5a47b47c-a005-4a14-b1c0-6e58fded3a46.png new file mode 100644 index 000000000..57b08eb97 Binary files /dev/null and b/sprites/s_node_offset/5a47b47c-a005-4a14-b1c0-6e58fded3a46.png differ diff --git a/sprites/s_node_offset/layers/5a47b47c-a005-4a14-b1c0-6e58fded3a46/c09a0eea-7d57-4dd2-b0aa-a547acf89ba9.png b/sprites/s_node_offset/layers/5a47b47c-a005-4a14-b1c0-6e58fded3a46/c09a0eea-7d57-4dd2-b0aa-a547acf89ba9.png new file mode 100644 index 000000000..57b08eb97 Binary files /dev/null and b/sprites/s_node_offset/layers/5a47b47c-a005-4a14-b1c0-6e58fded3a46/c09a0eea-7d57-4dd2-b0aa-a547acf89ba9.png differ diff --git a/sprites/s_node_offset/s_node_offset.yy b/sprites/s_node_offset/s_node_offset.yy new file mode 100644 index 000000000..b455732ec --- /dev/null +++ b/sprites/s_node_offset/s_node_offset.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_offset", + "bbox_bottom": 63, + "bbox_left": 0, + "bbox_right": 63, + "bbox_top": 0, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"5a47b47c-a005-4a14-b1c0-6e58fded3a46",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"c09a0eea-7d57-4dd2-b0aa-a547acf89ba9","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "transform", + "path": "folders/nodes/icons/transform.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_offset", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "showBackdrop": true, + "showBackdropImage": false, + "timeUnits": 1, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"5a47b47c-a005-4a14-b1c0-6e58fded3a46","path":"sprites/s_node_offset/s_node_offset.yy",},},},"Disabled":false,"id":"8545624a-4264-4abb-97d4-4d263a52c58c","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, + ], + "visibleRange": null, + "volume": 1.0, + "xorigin": 32, + "yorigin": 32, + }, + "swatchColours": null, + "swfPrecision": 2.525, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "type": 0, + "VTile": false, + "width": 64, +} \ No newline at end of file diff --git a/sprites/s_node_pytagorean_tile/1704d8d4-681b-478d-96be-40b025185128.png b/sprites/s_node_pytagorean_tile/1704d8d4-681b-478d-96be-40b025185128.png new file mode 100644 index 000000000..8ae68ec1b Binary files /dev/null and b/sprites/s_node_pytagorean_tile/1704d8d4-681b-478d-96be-40b025185128.png differ diff --git a/sprites/s_node_pytagorean_tile/layers/1704d8d4-681b-478d-96be-40b025185128/9fb1995d-5720-465f-bb3e-f50cf21c92d3.png b/sprites/s_node_pytagorean_tile/layers/1704d8d4-681b-478d-96be-40b025185128/9fb1995d-5720-465f-bb3e-f50cf21c92d3.png new file mode 100644 index 000000000..8ae68ec1b Binary files /dev/null and b/sprites/s_node_pytagorean_tile/layers/1704d8d4-681b-478d-96be-40b025185128/9fb1995d-5720-465f-bb3e-f50cf21c92d3.png differ diff --git a/sprites/s_node_pytagorean_tile/s_node_pytagorean_tile.yy b/sprites/s_node_pytagorean_tile/s_node_pytagorean_tile.yy new file mode 100644 index 000000000..f0af708b9 --- /dev/null +++ b/sprites/s_node_pytagorean_tile/s_node_pytagorean_tile.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_pytagorean_tile", + "bbox_bottom": 63, + "bbox_left": 0, + "bbox_right": 63, + "bbox_top": 0, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"1704d8d4-681b-478d-96be-40b025185128",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"9fb1995d-5720-465f-bb3e-f50cf21c92d3","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "generator", + "path": "folders/nodes/icons/generator.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_pytagorean_tile", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "showBackdrop": true, + "showBackdropImage": false, + "timeUnits": 1, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"1704d8d4-681b-478d-96be-40b025185128","path":"sprites/s_node_pytagorean_tile/s_node_pytagorean_tile.yy",},},},"Disabled":false,"id":"873cc566-f2c0-454f-89b5-8ce2fead75fc","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, + ], + "visibleRange": null, + "volume": 1.0, + "xorigin": 32, + "yorigin": 32, + }, + "swatchColours": null, + "swfPrecision": 2.525, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "type": 0, + "VTile": false, + "width": 64, +} \ No newline at end of file diff --git a/sprites/s_node_random_tile/4d3e33b5-3592-4d4b-bd4b-2d9d723775c9.png b/sprites/s_node_random_tile/4d3e33b5-3592-4d4b-bd4b-2d9d723775c9.png new file mode 100644 index 000000000..f520c221d Binary files /dev/null and b/sprites/s_node_random_tile/4d3e33b5-3592-4d4b-bd4b-2d9d723775c9.png differ diff --git a/sprites/s_node_random_tile/layers/4d3e33b5-3592-4d4b-bd4b-2d9d723775c9/9d3d1e09-16cf-4f7c-acb7-5db45e5f3e73.png b/sprites/s_node_random_tile/layers/4d3e33b5-3592-4d4b-bd4b-2d9d723775c9/9d3d1e09-16cf-4f7c-acb7-5db45e5f3e73.png new file mode 100644 index 000000000..f520c221d Binary files /dev/null and b/sprites/s_node_random_tile/layers/4d3e33b5-3592-4d4b-bd4b-2d9d723775c9/9d3d1e09-16cf-4f7c-acb7-5db45e5f3e73.png differ diff --git a/sprites/s_node_random_tile/s_node_random_tile.yy b/sprites/s_node_random_tile/s_node_random_tile.yy new file mode 100644 index 000000000..3052636d1 --- /dev/null +++ b/sprites/s_node_random_tile/s_node_random_tile.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_random_tile", + "bbox_bottom": 63, + "bbox_left": 0, + "bbox_right": 63, + "bbox_top": 0, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"4d3e33b5-3592-4d4b-bd4b-2d9d723775c9",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"9d3d1e09-16cf-4f7c-acb7-5db45e5f3e73","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "generator", + "path": "folders/nodes/icons/generator.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_random_tile", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "showBackdrop": true, + "showBackdropImage": false, + "timeUnits": 1, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"4d3e33b5-3592-4d4b-bd4b-2d9d723775c9","path":"sprites/s_node_random_tile/s_node_random_tile.yy",},},},"Disabled":false,"id":"3618a8eb-4825-468d-9103-d7aaaba0f2a1","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, + ], + "visibleRange": null, + "volume": 1.0, + "xorigin": 32, + "yorigin": 32, + }, + "swatchColours": null, + "swfPrecision": 2.525, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "type": 0, + "VTile": false, + "width": 64, +} \ No newline at end of file diff --git a/sprites/s_node_reaction_diffusion/61d6ce83-9d86-4da7-a5e1-a1723146044b.png b/sprites/s_node_reaction_diffusion/61d6ce83-9d86-4da7-a5e1-a1723146044b.png new file mode 100644 index 000000000..fd2314542 Binary files /dev/null and b/sprites/s_node_reaction_diffusion/61d6ce83-9d86-4da7-a5e1-a1723146044b.png differ diff --git a/sprites/s_node_reaction_diffusion/a53ffae8-9fdb-46d4-a419-b105f9c0f7d5.png b/sprites/s_node_reaction_diffusion/a53ffae8-9fdb-46d4-a419-b105f9c0f7d5.png deleted file mode 100644 index b34a93e8a..000000000 Binary files a/sprites/s_node_reaction_diffusion/a53ffae8-9fdb-46d4-a419-b105f9c0f7d5.png and /dev/null differ diff --git a/sprites/s_node_reaction_diffusion/layers/61d6ce83-9d86-4da7-a5e1-a1723146044b/9d41fb92-70b4-4ca8-802c-c8ef93ecc7f3.png b/sprites/s_node_reaction_diffusion/layers/61d6ce83-9d86-4da7-a5e1-a1723146044b/9d41fb92-70b4-4ca8-802c-c8ef93ecc7f3.png new file mode 100644 index 000000000..fd2314542 Binary files /dev/null and b/sprites/s_node_reaction_diffusion/layers/61d6ce83-9d86-4da7-a5e1-a1723146044b/9d41fb92-70b4-4ca8-802c-c8ef93ecc7f3.png differ diff --git a/sprites/s_node_reaction_diffusion/layers/a53ffae8-9fdb-46d4-a419-b105f9c0f7d5/723e0dcf-5a4f-4dda-93ce-ab80108bf0b2.png b/sprites/s_node_reaction_diffusion/layers/a53ffae8-9fdb-46d4-a419-b105f9c0f7d5/723e0dcf-5a4f-4dda-93ce-ab80108bf0b2.png deleted file mode 100644 index b34a93e8a..000000000 Binary files a/sprites/s_node_reaction_diffusion/layers/a53ffae8-9fdb-46d4-a419-b105f9c0f7d5/723e0dcf-5a4f-4dda-93ce-ab80108bf0b2.png and /dev/null differ diff --git a/sprites/s_node_reaction_diffusion/s_node_reaction_diffusion.yy b/sprites/s_node_reaction_diffusion/s_node_reaction_diffusion.yy index 2280ae16d..500f63996 100644 --- a/sprites/s_node_reaction_diffusion/s_node_reaction_diffusion.yy +++ b/sprites/s_node_reaction_diffusion/s_node_reaction_diffusion.yy @@ -13,14 +13,14 @@ "edgeFiltering": false, "For3D": false, "frames": [ - {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"a53ffae8-9fdb-46d4-a419-b105f9c0f7d5",}, + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"61d6ce83-9d86-4da7-a5e1-a1723146044b",}, ], "gridX": 0, "gridY": 0, "height": 64, "HTile": false, "layers": [ - {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"723e0dcf-5a4f-4dda-93ce-ab80108bf0b2","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"9d41fb92-70b4-4ca8-802c-c8ef93ecc7f3","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, ], "nineSlice": null, "origin": 4, @@ -54,7 +54,7 @@ "timeUnits": 1, "tracks": [ {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[ - {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"a53ffae8-9fdb-46d4-a419-b105f9c0f7d5","path":"sprites/s_node_reaction_diffusion/s_node_reaction_diffusion.yy",},},},"Disabled":false,"id":"7f80ccbb-00bd-4d04-89f4-948182a4e075","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"61d6ce83-9d86-4da7-a5e1-a1723146044b","path":"sprites/s_node_reaction_diffusion/s_node_reaction_diffusion.yy",},},},"Disabled":false,"id":"54fd27cd-eed5-4ec5-b172-4f99c0f2c3a1","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, ], "visibleRange": null, diff --git a/sprites/s_node_vignette/a0413613-a4b8-49e6-b7af-3d132cf4ba39.png b/sprites/s_node_vignette/a0413613-a4b8-49e6-b7af-3d132cf4ba39.png new file mode 100644 index 000000000..f2c9b3592 Binary files /dev/null and b/sprites/s_node_vignette/a0413613-a4b8-49e6-b7af-3d132cf4ba39.png differ diff --git a/sprites/s_node_vignette/layers/a0413613-a4b8-49e6-b7af-3d132cf4ba39/e066a636-454c-4969-8cc2-0c553cc8bf2c.png b/sprites/s_node_vignette/layers/a0413613-a4b8-49e6-b7af-3d132cf4ba39/e066a636-454c-4969-8cc2-0c553cc8bf2c.png new file mode 100644 index 000000000..f2c9b3592 Binary files /dev/null and b/sprites/s_node_vignette/layers/a0413613-a4b8-49e6-b7af-3d132cf4ba39/e066a636-454c-4969-8cc2-0c553cc8bf2c.png differ diff --git a/sprites/s_node_vignette/s_node_vignette.yy b/sprites/s_node_vignette/s_node_vignette.yy new file mode 100644 index 000000000..b3e3707f4 --- /dev/null +++ b/sprites/s_node_vignette/s_node_vignette.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_vignette", + "bbox_bottom": 63, + "bbox_left": 0, + "bbox_right": 63, + "bbox_top": 0, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"a0413613-a4b8-49e6-b7af-3d132cf4ba39",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"e066a636-454c-4969-8cc2-0c553cc8bf2c","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "filter", + "path": "folders/nodes/icons/filter.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_vignette", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "showBackdrop": true, + "showBackdropImage": false, + "timeUnits": 1, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"a0413613-a4b8-49e6-b7af-3d132cf4ba39","path":"sprites/s_node_vignette/s_node_vignette.yy",},},},"Disabled":false,"id":"82e693f0-03f2-4ca8-9375-f67d0bf4d793","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, + ], + "visibleRange": null, + "volume": 1.0, + "xorigin": 32, + "yorigin": 32, + }, + "swatchColours": null, + "swfPrecision": 2.525, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "type": 0, + "VTile": false, + "width": 64, +} \ No newline at end of file