er... updates

This commit is contained in:
Tanasart 2024-01-12 11:03:35 +07:00
parent 64f4707b45
commit 233141e09c
74 changed files with 2199 additions and 55 deletions

View file

@ -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",},

View file

@ -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",},},

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

View file

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

View file

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

View file

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

View file

@ -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();

View file

@ -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]);

View file

@ -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]);

View file

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

View file

@ -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",
},
}

View file

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

View file

@ -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",
},
}

View file

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

View file

@ -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",
},
}

View file

@ -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",
}

View file

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

View file

@ -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",
},
}

View file

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

View file

@ -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",
},
}

View file

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

View file

@ -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();

View file

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

View file

@ -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",
}

View file

@ -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",
}

View file

@ -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",
}

View file

@ -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",
}

View file

@ -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",
}

View file

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

View file

@ -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",
},
}

View file

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

View file

@ -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) {

View file

@ -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.);

View file

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

View file

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

View file

@ -0,0 +1,10 @@
{
"resourceType": "GMShader",
"resourceVersion": "1.0",
"name": "sh_herringbone_tile",
"parent": {
"name": "grid",
"path": "folders/shader/generator/grid.yy",
},
"type": 1,
}

View file

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

View file

@ -0,0 +1,19 @@
//
// Simple passthrough vertex shader
//
attribute vec3 in_Position; // (x,y,z)
//attribute vec3 in_Normal; // (x,y,z) unused in this shader.
attribute vec4 in_Colour; // (r,g,b,a)
attribute vec2 in_TextureCoord; // (u,v)
varying vec2 v_vTexcoord;
varying vec4 v_vColour;
void main()
{
vec4 object_space_pos = vec4( in_Position.x, in_Position.y, in_Position.z, 1.0);
gl_Position = gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] * object_space_pos;
v_vColour = in_Colour;
v_vTexcoord = in_TextureCoord;
}

View file

@ -0,0 +1,10 @@
{
"resourceType": "GMShader",
"resourceVersion": "1.0",
"name": "sh_offset",
"parent": {
"name": "warp",
"path": "folders/shader/warp.yy",
},
"type": 1,
}

View file

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

View file

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

View file

@ -0,0 +1,10 @@
{
"resourceType": "GMShader",
"resourceVersion": "1.0",
"name": "sh_pytagorean_tile",
"parent": {
"name": "grid",
"path": "folders/shader/generator/grid.yy",
},
"type": 1,
}

View file

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

View file

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

View file

@ -0,0 +1,10 @@
{
"resourceType": "GMShader",
"resourceVersion": "1.0",
"name": "sh_random_tile",
"parent": {
"name": "grid",
"path": "folders/shader/generator/grid.yy",
},
"type": 1,
}

View file

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

View file

@ -0,0 +1,19 @@
//
// Simple passthrough vertex shader
//
attribute vec3 in_Position; // (x,y,z)
//attribute vec3 in_Normal; // (x,y,z) unused in this shader.
attribute vec4 in_Colour; // (r,g,b,a)
attribute vec2 in_TextureCoord; // (u,v)
varying vec2 v_vTexcoord;
varying vec4 v_vColour;
void main()
{
vec4 object_space_pos = vec4( in_Position.x, in_Position.y, in_Position.z, 1.0);
gl_Position = gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] * object_space_pos;
v_vColour = in_Colour;
v_vTexcoord = in_TextureCoord;
}

View file

@ -0,0 +1,10 @@
{
"resourceType": "GMShader",
"resourceVersion": "1.0",
"name": "sh_vignette",
"parent": {
"name": "filter",
"path": "folders/shader/filter.yy",
},
"type": 1,
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

View file

@ -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<MessageEventKeyframe>","resourceVersion":"1.0","Keyframes":[],},
"eventStubScript": null,
"eventToFunction": {},
"length": 1.0,
"lockOrigin": false,
"moments": {"resourceType":"KeyframeStore<MomentsEventKeyframe>","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<SpriteFrameKeyframe>","resourceVersion":"1.0","Keyframes":[
{"resourceType":"Keyframe<SpriteFrameKeyframe>","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,
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View file

@ -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<MessageEventKeyframe>","resourceVersion":"1.0","Keyframes":[],},
"eventStubScript": null,
"eventToFunction": {},
"length": 1.0,
"lockOrigin": false,
"moments": {"resourceType":"KeyframeStore<MomentsEventKeyframe>","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<SpriteFrameKeyframe>","resourceVersion":"1.0","Keyframes":[
{"resourceType":"Keyframe<SpriteFrameKeyframe>","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,
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -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<MessageEventKeyframe>","resourceVersion":"1.0","Keyframes":[],},
"eventStubScript": null,
"eventToFunction": {},
"length": 1.0,
"lockOrigin": false,
"moments": {"resourceType":"KeyframeStore<MomentsEventKeyframe>","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<SpriteFrameKeyframe>","resourceVersion":"1.0","Keyframes":[
{"resourceType":"Keyframe<SpriteFrameKeyframe>","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,
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 979 B

View file

@ -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<MessageEventKeyframe>","resourceVersion":"1.0","Keyframes":[],},
"eventStubScript": null,
"eventToFunction": {},
"length": 1.0,
"lockOrigin": false,
"moments": {"resourceType":"KeyframeStore<MomentsEventKeyframe>","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<SpriteFrameKeyframe>","resourceVersion":"1.0","Keyframes":[
{"resourceType":"Keyframe<SpriteFrameKeyframe>","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,
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 999 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 999 B

View file

@ -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<MessageEventKeyframe>","resourceVersion":"1.0","Keyframes":[],},
"eventStubScript": null,
"eventToFunction": {},
"length": 1.0,
"lockOrigin": false,
"moments": {"resourceType":"KeyframeStore<MomentsEventKeyframe>","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<SpriteFrameKeyframe>","resourceVersion":"1.0","Keyframes":[
{"resourceType":"Keyframe<SpriteFrameKeyframe>","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,
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

View file

@ -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<SpriteFrameKeyframe>","resourceVersion":"1.0","Keyframes":[
{"resourceType":"Keyframe<SpriteFrameKeyframe>","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<SpriteFrameKeyframe>","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,

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

View file

@ -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<MessageEventKeyframe>","resourceVersion":"1.0","Keyframes":[],},
"eventStubScript": null,
"eventToFunction": {},
"length": 1.0,
"lockOrigin": false,
"moments": {"resourceType":"KeyframeStore<MomentsEventKeyframe>","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<SpriteFrameKeyframe>","resourceVersion":"1.0","Keyframes":[
{"resourceType":"Keyframe<SpriteFrameKeyframe>","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,
}