diff --git a/content/banner.png b/content/banner.png new file mode 100644 index 0000000..8b63469 Binary files /dev/null and b/content/banner.png differ diff --git a/content/banner.png.import b/content/banner.png.import new file mode 100644 index 0000000..a581545 --- /dev/null +++ b/content/banner.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cl3c8beeyvsuv" +path="res://.godot/imported/banner.png-07aed7dc6f5515a14db0651ba6e535f0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://content/banner.png" +dest_files=["res://.godot/imported/banner.png-07aed7dc6f5515a14db0651ba6e535f0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/content/imagine.gdshader b/content/imagine.gdshader index d545d08..adac31e 100644 --- a/content/imagine.gdshader +++ b/content/imagine.gdshader @@ -1,22 +1,52 @@ shader_type canvas_item; -uniform sampler2D ripples: repeat_enable; +uniform sampler2D texture1: filter_linear, source_color; +uniform sampler2D texture2: filter_linear, source_color; +uniform sampler3D ripples: repeat_enable, filter_linear; +uniform float transition = 0; +uniform float time = 0; uniform float warp; -uniform float time_scale = 0.1f; +uniform float ridge_sharpness; +uniform float ridge_shine = 0; +uniform float vignette_start; +uniform float vignette_fade; +uniform float vignette_distort = 0; +uniform float vignette_gradient = 1; -vec3 hmap_normal(sampler2D hmap, vec2 uv) { - float eps = 0.01f; +vec3 hmap_normal(sampler3D hmap, vec3 uv) { + float eps = 0.03; float z = texture(hmap, uv).z; return normalize(vec3( - (texture(hmap, uv + vec2(eps, 0)).z - z) / eps, - (texture(hmap, uv + vec2(0, eps)).z - z) / eps, + (texture(hmap, uv + vec3(eps, 0, 0)).z - z) / eps, + (texture(hmap, uv + vec3(0, eps, 0)).z - z) / eps, -1 )); } void fragment() { + float tr = transition; + //vec3 normal = texture(ripples, UV + vec2(TIME * time_scale, 0)).xyz; - vec3 normal = hmap_normal(ripples, UV + vec2(TIME * time_scale, 0)); - vec4 col = texture(TEXTURE, UV + normal.xy * warp).rgba; + vec3 time_uv = vec3(UV.x, UV.y, time); + vec3 center = hmap_normal(ripples, time_uv); + vec3 right = hmap_normal(ripples, time_uv + vec3(ridge_sharpness, 0, 0)); + vec3 up = hmap_normal(ripples, time_uv + vec3(0, ridge_sharpness, 0)); + vec3 left = hmap_normal(ripples, time_uv + vec3(-ridge_sharpness, 0, 0)); + vec3 down = hmap_normal(ripples, time_uv + vec3(0, -ridge_sharpness, 0)); + + vec3 normal = (center + left + right + up + down) / 5.0f; + vec3 edge_normal = (center + left - right + up - down) / 5.0f; + + float ridge_shine_factor = pow(length(edge_normal.xy), 3) * 0.7f; + vec2 warp_uv = UV + normal.xy * (warp + 0.05f * tr); + float vig = pow(max(length(warp_uv - vec2(0.5f)) - vignette_start, 0) / (1.0f - vignette_start), vignette_gradient); + + vec2 vig_uv = warp_uv - (vignette_distort + 1.0f * tr) * vig * normalize(warp_uv - vec2(0.5f)); + vec4 col1 = texture(texture1, vig_uv).rgba; + vec4 col2 = texture(texture2, vig_uv).rgba; + vec4 col = mix(col1, (col1 + col2) / 2.0f, tr); + + col.rgb += vec3((ridge_shine + 5.0f * tr) * ridge_shine_factor); + col.rgb = mix(col.rgb, vec3(1.0f), (vignette_fade + 2.0f * tr) * (vig + 0.02f * tr)); COLOR.rgb = col.rgb; } diff --git a/content/imagine_params.gd b/content/imagine_params.gd new file mode 100644 index 0000000..7638d19 --- /dev/null +++ b/content/imagine_params.gd @@ -0,0 +1,12 @@ +class_name ImagineParams extends Resource + +@export var time_scale: float +@export var frequency: float +@export var warp: float +@export var ridge_sharpness: float +@export var ridge_shine: float +@export var vignette_start: float +@export var vignette_fade: float +@export var vignette_distort: float +@export var vignette_gradient: float +@export var transition_dur: float diff --git a/content/imagine_params.gd.uid b/content/imagine_params.gd.uid new file mode 100644 index 0000000..530732e --- /dev/null +++ b/content/imagine_params.gd.uid @@ -0,0 +1 @@ +uid://c5hr1d3ko8et3 diff --git a/content/mat_imagine.tres b/content/mat_imagine.tres index b496e0e..d613bba 100644 --- a/content/mat_imagine.tres +++ b/content/mat_imagine.tres @@ -1,27 +1,36 @@ -[gd_resource type="ShaderMaterial" load_steps=4 format=3 uid="uid://wr6g6bhw2fyj"] +[gd_resource type="ShaderMaterial" load_steps=5 format=3 uid="uid://wr6g6bhw2fyj"] [ext_resource type="Shader" uid="uid://cutdjeuxu188p" path="res://content/imagine.gdshader" id="1_74fhu"] +[ext_resource type="Texture2D" uid="uid://cl3c8beeyvsuv" path="res://content/banner.png" id="2_g1ag2"] -[sub_resource type="FastNoiseLite" id="FastNoiseLite_74fhu"] -noise_type = 0 -frequency = 0.0018 -cellular_distance_function = 1 +[sub_resource type="FastNoiseLite" id="FastNoiseLite_g1ag2"] +noise_type = 3 +seed = 7 +frequency = 0.04 +fractal_type = 2 +fractal_octaves = 1 domain_warp_type = 2 -domain_warp_amplitude = 3.36 -domain_warp_fractal_type = 2 +domain_warp_amplitude = 7.11 -[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_74fhu"] -width = 1280 -height = 720 -noise = SubResource("FastNoiseLite_74fhu") +[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_kf2mi"] +width = 128 +depth = 256 +noise = SubResource("FastNoiseLite_g1ag2") seamless = true -invert = true -in_3d_space = true normalize = false -bump_strength = 32.0 +seamless_blend_skirt = 0.294 [resource] shader = ExtResource("1_74fhu") -shader_parameter/ripples = SubResource("NoiseTexture2D_74fhu") -shader_parameter/warp = 0.005 -shader_parameter/time_scale = 0.035 +shader_parameter/texture1 = ExtResource("2_g1ag2") +shader_parameter/texture2 = ExtResource("2_g1ag2") +shader_parameter/ripples = SubResource("NoiseTexture3D_kf2mi") +shader_parameter/transition = 0.0 +shader_parameter/time = 0.0 +shader_parameter/warp = 0.02 +shader_parameter/ridge_sharpness = 0.01 +shader_parameter/ridge_shine = 1.0 +shader_parameter/vignette_start = 0.225 +shader_parameter/vignette_fade = 1.0 +shader_parameter/vignette_distort = 0.7 +shader_parameter/vignette_gradient = 2.0 diff --git a/content/value_slider.gd b/content/value_slider.gd new file mode 100644 index 0000000..f3bd788 --- /dev/null +++ b/content/value_slider.gd @@ -0,0 +1,17 @@ +@tool +extends HSlider + +@onready var default_value = value + +func _ready() -> void: + update_label(value) + value_changed.connect(update_label) + +func update_label(x): + var p = (x - min_value) / (max_value - min_value) + $Label.text = "%.0f %%" % [ p * 100 ] + $Label.modulate = Color.BLUE.lerp(Color.RED, p) + +func reset(): + value = default_value + value_changed.emit(value) diff --git a/content/value_slider.gd.uid b/content/value_slider.gd.uid new file mode 100644 index 0000000..7077d0e --- /dev/null +++ b/content/value_slider.gd.uid @@ -0,0 +1 @@ +uid://b30buugsxbwhs diff --git a/content/value_slider.tscn b/content/value_slider.tscn new file mode 100644 index 0000000..ec92565 --- /dev/null +++ b/content/value_slider.tscn @@ -0,0 +1,29 @@ +[gd_scene load_steps=2 format=3 uid="uid://b3hvp2t36d4eo"] + +[ext_resource type="Script" uid="uid://b30buugsxbwhs" path="res://content/value_slider.gd" id="1_vyn1w"] + +[node name="ValueSlider" type="HSlider"] +offset_right = 104.0 +offset_bottom = 25.0 +tick_count = 3 +ticks_position = 3 +script = ExtResource("1_vyn1w") + +[node name="Label" type="Label" parent="."] +modulate = Color(0, 0, 1, 1) +layout_mode = 1 +anchors_preset = 3 +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -21.0 +offset_top = -17.0 +grow_horizontal = 0 +grow_vertical = 0 +theme_override_colors/font_outline_color = Color(0, 0, 0, 1) +theme_override_constants/outline_size = 5 +theme_override_font_sizes/font_size = 12 +text = "0 %" +horizontal_alignment = 2 +vertical_alignment = 2 diff --git a/export_presets.cfg b/export_presets.cfg new file mode 100644 index 0000000..e4b16ab --- /dev/null +++ b/export_presets.cfg @@ -0,0 +1,322 @@ +[preset.0] + +name="Windows Desktop" +platform="Windows Desktop" +runnable=true +advanced_options=false +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="../../../Programs/Imagine/Windows/Imagine Composer.exe" +patches=PackedStringArray() +encryption_include_filters="" +encryption_exclude_filters="" +seed=0 +encrypt_pck=false +encrypt_directory=false +script_export_mode=2 + +[preset.0.options] + +custom_template/debug="" +custom_template/release="" +debug/export_console_wrapper=1 +binary_format/embed_pck=false +texture_format/s3tc_bptc=true +texture_format/etc2_astc=false +shader_baker/enabled=false +binary_format/architecture="x86_64" +codesign/enable=false +codesign/timestamp=true +codesign/timestamp_server_url="" +codesign/digest_algorithm=1 +codesign/description="" +codesign/custom_options=PackedStringArray() +application/modify_resources=true +application/icon="" +application/console_wrapper_icon="" +application/icon_interpolation=4 +application/file_version="" +application/product_version="" +application/company_name="" +application/product_name="" +application/file_description="" +application/copyright="" +application/trademarks="" +application/export_angle=0 +application/export_d3d12=0 +application/d3d12_agility_sdk_multiarch=true +ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}' +$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}' +$trigger = New-ScheduledTaskTrigger -Once -At 00:00 +$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries +$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings +Register-ScheduledTask godot_remote_debug -InputObject $task -Force:$true +Start-ScheduledTask -TaskName godot_remote_debug +while (Get-ScheduledTask -TaskName godot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 } +Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue" +ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue +Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue +Remove-Item -Recurse -Force '{temp_dir}'" + +[preset.1] + +name="macOS" +platform="macOS" +runnable=true +advanced_options=false +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="../../../Programs/Imagine/MacOS/Imagine Composer.zip" +patches=PackedStringArray() +encryption_include_filters="" +encryption_exclude_filters="" +seed=0 +encrypt_pck=false +encrypt_directory=false +script_export_mode=2 + +[preset.1.options] + +export/distribution_type=1 +binary_format/architecture="universal" +custom_template/debug="" +custom_template/release="" +debug/export_console_wrapper=1 +application/icon="" +application/icon_interpolation=4 +application/bundle_identifier="com.liorainteractief.imaginecomposer" +application/signature="" +application/app_category="Games" +application/short_version="" +application/version="" +application/copyright="" +application/copyright_localized={} +application/min_macos_version_x86_64="10.12" +application/min_macos_version_arm64="11.00" +application/export_angle=0 +display/high_res=true +shader_baker/enabled=false +application/additional_plist_content="" +xcode/platform_build="14C18" +xcode/sdk_version="13.1" +xcode/sdk_build="22C55" +xcode/sdk_name="macosx13.1" +xcode/xcode_version="1420" +xcode/xcode_build="14C18" +codesign/codesign=1 +codesign/installer_identity="" +codesign/apple_team_id="" +codesign/identity="" +codesign/entitlements/custom_file="" +codesign/entitlements/allow_jit_code_execution=false +codesign/entitlements/allow_unsigned_executable_memory=false +codesign/entitlements/allow_dyld_environment_variables=false +codesign/entitlements/disable_library_validation=false +codesign/entitlements/audio_input=false +codesign/entitlements/camera=false +codesign/entitlements/location=false +codesign/entitlements/address_book=false +codesign/entitlements/calendars=false +codesign/entitlements/photos_library=false +codesign/entitlements/apple_events=false +codesign/entitlements/debugging=false +codesign/entitlements/app_sandbox/enabled=false +codesign/entitlements/app_sandbox/network_server=false +codesign/entitlements/app_sandbox/network_client=false +codesign/entitlements/app_sandbox/device_usb=false +codesign/entitlements/app_sandbox/device_bluetooth=false +codesign/entitlements/app_sandbox/files_downloads=0 +codesign/entitlements/app_sandbox/files_pictures=0 +codesign/entitlements/app_sandbox/files_music=0 +codesign/entitlements/app_sandbox/files_movies=0 +codesign/entitlements/app_sandbox/files_user_selected=0 +codesign/entitlements/app_sandbox/helper_executables=[] +codesign/entitlements/additional="" +codesign/custom_options=PackedStringArray() +notarization/notarization=0 +privacy/microphone_usage_description="" +privacy/microphone_usage_description_localized={} +privacy/camera_usage_description="" +privacy/camera_usage_description_localized={} +privacy/location_usage_description="" +privacy/location_usage_description_localized={} +privacy/address_book_usage_description="" +privacy/address_book_usage_description_localized={} +privacy/calendar_usage_description="" +privacy/calendar_usage_description_localized={} +privacy/photos_library_usage_description="" +privacy/photos_library_usage_description_localized={} +privacy/desktop_folder_usage_description="" +privacy/desktop_folder_usage_description_localized={} +privacy/documents_folder_usage_description="" +privacy/documents_folder_usage_description_localized={} +privacy/downloads_folder_usage_description="" +privacy/downloads_folder_usage_description_localized={} +privacy/network_volumes_usage_description="" +privacy/network_volumes_usage_description_localized={} +privacy/removable_volumes_usage_description="" +privacy/removable_volumes_usage_description_localized={} +privacy/tracking_enabled=false +privacy/tracking_domains=PackedStringArray() +privacy/collected_data/name/collected=false +privacy/collected_data/name/linked_to_user=false +privacy/collected_data/name/used_for_tracking=false +privacy/collected_data/name/collection_purposes=0 +privacy/collected_data/email_address/collected=false +privacy/collected_data/email_address/linked_to_user=false +privacy/collected_data/email_address/used_for_tracking=false +privacy/collected_data/email_address/collection_purposes=0 +privacy/collected_data/phone_number/collected=false +privacy/collected_data/phone_number/linked_to_user=false +privacy/collected_data/phone_number/used_for_tracking=false +privacy/collected_data/phone_number/collection_purposes=0 +privacy/collected_data/physical_address/collected=false +privacy/collected_data/physical_address/linked_to_user=false +privacy/collected_data/physical_address/used_for_tracking=false +privacy/collected_data/physical_address/collection_purposes=0 +privacy/collected_data/other_contact_info/collected=false +privacy/collected_data/other_contact_info/linked_to_user=false +privacy/collected_data/other_contact_info/used_for_tracking=false +privacy/collected_data/other_contact_info/collection_purposes=0 +privacy/collected_data/health/collected=false +privacy/collected_data/health/linked_to_user=false +privacy/collected_data/health/used_for_tracking=false +privacy/collected_data/health/collection_purposes=0 +privacy/collected_data/fitness/collected=false +privacy/collected_data/fitness/linked_to_user=false +privacy/collected_data/fitness/used_for_tracking=false +privacy/collected_data/fitness/collection_purposes=0 +privacy/collected_data/payment_info/collected=false +privacy/collected_data/payment_info/linked_to_user=false +privacy/collected_data/payment_info/used_for_tracking=false +privacy/collected_data/payment_info/collection_purposes=0 +privacy/collected_data/credit_info/collected=false +privacy/collected_data/credit_info/linked_to_user=false +privacy/collected_data/credit_info/used_for_tracking=false +privacy/collected_data/credit_info/collection_purposes=0 +privacy/collected_data/other_financial_info/collected=false +privacy/collected_data/other_financial_info/linked_to_user=false +privacy/collected_data/other_financial_info/used_for_tracking=false +privacy/collected_data/other_financial_info/collection_purposes=0 +privacy/collected_data/precise_location/collected=false +privacy/collected_data/precise_location/linked_to_user=false +privacy/collected_data/precise_location/used_for_tracking=false +privacy/collected_data/precise_location/collection_purposes=0 +privacy/collected_data/coarse_location/collected=false +privacy/collected_data/coarse_location/linked_to_user=false +privacy/collected_data/coarse_location/used_for_tracking=false +privacy/collected_data/coarse_location/collection_purposes=0 +privacy/collected_data/sensitive_info/collected=false +privacy/collected_data/sensitive_info/linked_to_user=false +privacy/collected_data/sensitive_info/used_for_tracking=false +privacy/collected_data/sensitive_info/collection_purposes=0 +privacy/collected_data/contacts/collected=false +privacy/collected_data/contacts/linked_to_user=false +privacy/collected_data/contacts/used_for_tracking=false +privacy/collected_data/contacts/collection_purposes=0 +privacy/collected_data/emails_or_text_messages/collected=false +privacy/collected_data/emails_or_text_messages/linked_to_user=false +privacy/collected_data/emails_or_text_messages/used_for_tracking=false +privacy/collected_data/emails_or_text_messages/collection_purposes=0 +privacy/collected_data/photos_or_videos/collected=false +privacy/collected_data/photos_or_videos/linked_to_user=false +privacy/collected_data/photos_or_videos/used_for_tracking=false +privacy/collected_data/photos_or_videos/collection_purposes=0 +privacy/collected_data/audio_data/collected=false +privacy/collected_data/audio_data/linked_to_user=false +privacy/collected_data/audio_data/used_for_tracking=false +privacy/collected_data/audio_data/collection_purposes=0 +privacy/collected_data/gameplay_content/collected=false +privacy/collected_data/gameplay_content/linked_to_user=false +privacy/collected_data/gameplay_content/used_for_tracking=false +privacy/collected_data/gameplay_content/collection_purposes=0 +privacy/collected_data/customer_support/collected=false +privacy/collected_data/customer_support/linked_to_user=false +privacy/collected_data/customer_support/used_for_tracking=false +privacy/collected_data/customer_support/collection_purposes=0 +privacy/collected_data/other_user_content/collected=false +privacy/collected_data/other_user_content/linked_to_user=false +privacy/collected_data/other_user_content/used_for_tracking=false +privacy/collected_data/other_user_content/collection_purposes=0 +privacy/collected_data/browsing_history/collected=false +privacy/collected_data/browsing_history/linked_to_user=false +privacy/collected_data/browsing_history/used_for_tracking=false +privacy/collected_data/browsing_history/collection_purposes=0 +privacy/collected_data/search_hhistory/collected=false +privacy/collected_data/search_hhistory/linked_to_user=false +privacy/collected_data/search_hhistory/used_for_tracking=false +privacy/collected_data/search_hhistory/collection_purposes=0 +privacy/collected_data/user_id/collected=false +privacy/collected_data/user_id/linked_to_user=false +privacy/collected_data/user_id/used_for_tracking=false +privacy/collected_data/user_id/collection_purposes=0 +privacy/collected_data/device_id/collected=false +privacy/collected_data/device_id/linked_to_user=false +privacy/collected_data/device_id/used_for_tracking=false +privacy/collected_data/device_id/collection_purposes=0 +privacy/collected_data/purchase_history/collected=false +privacy/collected_data/purchase_history/linked_to_user=false +privacy/collected_data/purchase_history/used_for_tracking=false +privacy/collected_data/purchase_history/collection_purposes=0 +privacy/collected_data/product_interaction/collected=false +privacy/collected_data/product_interaction/linked_to_user=false +privacy/collected_data/product_interaction/used_for_tracking=false +privacy/collected_data/product_interaction/collection_purposes=0 +privacy/collected_data/advertising_data/collected=false +privacy/collected_data/advertising_data/linked_to_user=false +privacy/collected_data/advertising_data/used_for_tracking=false +privacy/collected_data/advertising_data/collection_purposes=0 +privacy/collected_data/other_usage_data/collected=false +privacy/collected_data/other_usage_data/linked_to_user=false +privacy/collected_data/other_usage_data/used_for_tracking=false +privacy/collected_data/other_usage_data/collection_purposes=0 +privacy/collected_data/crash_data/collected=false +privacy/collected_data/crash_data/linked_to_user=false +privacy/collected_data/crash_data/used_for_tracking=false +privacy/collected_data/crash_data/collection_purposes=0 +privacy/collected_data/performance_data/collected=false +privacy/collected_data/performance_data/linked_to_user=false +privacy/collected_data/performance_data/used_for_tracking=false +privacy/collected_data/performance_data/collection_purposes=0 +privacy/collected_data/other_diagnostic_data/collected=false +privacy/collected_data/other_diagnostic_data/linked_to_user=false +privacy/collected_data/other_diagnostic_data/used_for_tracking=false +privacy/collected_data/other_diagnostic_data/collection_purposes=0 +privacy/collected_data/environment_scanning/collected=false +privacy/collected_data/environment_scanning/linked_to_user=false +privacy/collected_data/environment_scanning/used_for_tracking=false +privacy/collected_data/environment_scanning/collection_purposes=0 +privacy/collected_data/hands/collected=false +privacy/collected_data/hands/linked_to_user=false +privacy/collected_data/hands/used_for_tracking=false +privacy/collected_data/hands/collection_purposes=0 +privacy/collected_data/head/collected=false +privacy/collected_data/head/linked_to_user=false +privacy/collected_data/head/used_for_tracking=false +privacy/collected_data/head/collection_purposes=0 +privacy/collected_data/other_data_types/collected=false +privacy/collected_data/other_data_types/linked_to_user=false +privacy/collected_data/other_data_types/used_for_tracking=false +privacy/collected_data/other_data_types/collection_purposes=0 +ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="#!/usr/bin/env bash +unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\" +open \"{temp_dir}/{exe_name}.app\" --args {cmd_args}" +ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash +kill $(pgrep -x -f \"{temp_dir}/{exe_name}.app/Contents/MacOS/{exe_name} {cmd_args}\") +rm -rf \"{temp_dir}\"" diff --git a/project.godot b/project.godot index b9a6701..7069f4c 100644 --- a/project.godot +++ b/project.godot @@ -15,14 +15,34 @@ run/main_scene="uid://b8c8qe2xi5m24" config/features=PackedStringArray("4.5", "GL Compatibility") config/icon="res://icon.svg" +[debug] + +gdscript/warnings/unused_variable=0 +gdscript/warnings/unused_parameter=0 + [display] window/size/viewport_width=1280 window/size/viewport_height=720 +window/subwindows/embed_subwindows=false window/stretch/mode="canvas_items" window/stretch/aspect="expand" +[input] + +toggle_fullscreen={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":70,"key_label":0,"unicode":102,"location":0,"echo":false,"script":null) +] +} +shift={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194325,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} + [rendering] renderer/rendering_method="gl_compatibility" renderer/rendering_method.mobile="gl_compatibility" +textures/vram_compression/import_etc2_astc=true diff --git a/run/main.gd b/run/main.gd index 4e63973..d2af806 100644 --- a/run/main.gd +++ b/run/main.gd @@ -1,19 +1,181 @@ extends Control +signal params_loaded +signal params_reset + +@export var shader: ShaderMaterial +var loaded_images := {} +var loaded_image_paths := {} +var image_modification_times := {} + +var trans_tween = null +var params := ImagineParams.new() +var time = 0.0 +var time_scale_factor = 1.0 +var fx_path = "" + # Called when the node enters the scene tree for the first time. func _ready() -> void: - %LoadImageButton.pressed.connect(show_image_load_dialog) - %LoadImageDialog.file_selected.connect(load_image) + params.time_scale = 0.01 + params.transition_dur = 2 -func show_image_load_dialog(): - %LoadImageDialog.visible = true + %LoadImageButton.pressed.connect(func(): + %LoadImageDialog.visible = true + ) + %LoadImageDialog.files_selected.connect(func(paths): + for p in paths: + load_image(p) + ) + %SaveFXButton.pressed.connect(func(): + if fx_path == "": + %SaveFXDialog.visible = true + else: + save_effects() + ) + %SaveFXAsButton.pressed.connect(func(): + %SaveFXDialog.visible = true + ) + %SaveFXDialog.file_selected.connect(func(path): + fx_path = path + save_effects() + ) + %LoadFXDialog.file_selected.connect(func(path): + fx_path = path + params = ResourceLoader.load(path) + params_loaded.emit() + %FXFileLabel.text = fx_path + ) -func load_image(path: String) -> bool: + %LoadFXButton.pressed.connect(func(): + %LoadFXDialog.visible = true + ) + %NewFXButton.pressed.connect(func(): + params = ImagineParams.new() + fx_path = "" + %FXFileLabel.text = "unsaved FX" + params_reset.emit() + ) + + %ImageList.item_clicked.connect(func(index, at, btn): + if btn == MouseButton.MOUSE_BUTTON_LEFT: + transition_to_image(%ImageList.get_item_text(index)) + elif btn == MouseButton.MOUSE_BUTTON_RIGHT && Input.is_action_pressed("shift"): + var file = %ImageList.get_item_text(index) + loaded_images.erase(file) + loaded_image_paths.erase(file) + image_modification_times.erase(file) + %ImageList.remove_item(index) + ) + + for child in %Params.get_children(): + link_param(child) + +func save_effects(): + ResourceSaver.save(params, fx_path) + %FXFileLabel.text = fx_path + %SaveConfirmPopup.dialog_text = "FX saved to %s" % fx_path + %SaveConfirmPopup.show() + +func _process(delta): + if Input.is_action_just_pressed("toggle_fullscreen"): + %ControlSide.visible = !%ControlSide.visible + time += delta * params.time_scale * time_scale_factor + shader.set_shader_parameter("time", time) + + for path in loaded_image_paths.values(): + var prev_mod = image_modification_times[path.get_file()] + var last_mod = FileAccess.get_modified_time(path) + if last_mod > prev_mod: + load_image(path) + +func load_image(path: String): + var file = path.get_file() var image = Image.load_from_file(path) if image == null: - return false - + return + var tex = ImageTexture.create_from_image(image) - %PreviewImage.texture = tex - %LoadImageButton.text = path.get_file() - return true + if file in loaded_images: + for i in range(%ImageList.item_count): + var txt = %ImageList.get_item_text(i) + if txt == file: + %ImageList.set_item_icon(i, tex) + print("Reloaded %s" % txt) + + var prev_tex = loaded_images[file] + if shader.get_shader_parameter("texture1") == prev_tex: + shader.set_shader_parameter("texture1", tex) + if shader.get_shader_parameter("texture2") == prev_tex: + shader.set_shader_parameter("texture2", tex) + else: + %ImageList.add_item(file, tex) + + loaded_images[file] = tex + loaded_image_paths[file] = path + image_modification_times[file] = FileAccess.get_modified_time(path) + +func transition_to_image(file: String): + if trans_tween != null: + if trans_tween.is_running(): + return + trans_tween.kill() + + var texture1 = shader.get_shader_parameter("texture1") + var texture2 = loaded_images[file] + shader.set_shader_parameter("texture2", texture2) + + var tw = create_tween() + trans_tween = tw + var set_trans = func(x): + shader.set_shader_parameter("transition", x) + + tw.tween_callback(func(): + time_scale_factor = 5) + tw.tween_method(set_trans, 0.0, 1.0, params.transition_dur/2).set_trans(Tween.TRANS_SINE) + tw.tween_callback(func(): + shader.set_shader_parameter("texture1", texture2) + shader.set_shader_parameter("texture2", texture1) + ) + tw.tween_method(set_trans, 1.0, 0.0, params.transition_dur/2).set_trans(Tween.TRANS_SINE) + tw.tween_callback(func(): + time_scale_factor = 1) + +func link_param(node: Node): + if node is Label: + return + + var param = node.name.to_snake_case() + var slider = node.get_node("Slider") + var button = node.get_node("ResetButton") + var val = shader.get_shader_parameter(param) + + if param == "time_scale": + slider.value = params.time_scale + elif param == "frequency": + var noise = shader.get_shader_parameter("ripples").noise + slider.value = noise.frequency + slider.value_changed.connect(func(x): + noise.frequency = x + ) + elif param == "transition_dur": + slider.value = params.transition_dur + elif val != null: + slider.value = val + slider.value_changed.connect(func(x): + shader.set_shader_parameter(param, x) + ) + + slider.default_value = slider.value + params[param] = slider.value + slider.value_changed.connect(func(x): + params[param] = x + ) + params_loaded.connect(func(): + slider.value = params[param] + ) + button.pressed.connect(func(): + slider.reset() + ) + params_reset.connect(func(): + slider.reset() + ) diff --git a/run/main.tscn b/run/main.tscn index 2a1c8a1..adca14a 100644 --- a/run/main.tscn +++ b/run/main.tscn @@ -1,11 +1,8 @@ -[gd_scene load_steps=5 format=3 uid="uid://b8c8qe2xi5m24"] +[gd_scene load_steps=4 format=3 uid="uid://b8c8qe2xi5m24"] -[ext_resource type="Texture2D" uid="uid://dldw5nkqr0djl" path="res://icon.svg" id="1_4u770"] [ext_resource type="Script" uid="uid://g3xgdtvbtg2f" path="res://run/main.gd" id="1_t8dga"] [ext_resource type="Material" uid="uid://wr6g6bhw2fyj" path="res://content/mat_imagine.tres" id="2_vt7r5"] - -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_t8dga"] -bg_color = Color(0.1003897, 0.10924364, 0.113670714, 1) +[ext_resource type="PackedScene" uid="uid://b3hvp2t36d4eo" path="res://content/value_slider.tscn" id="3_vt7r5"] [node name="Main" type="Control"] layout_mode = 3 @@ -15,6 +12,8 @@ anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 script = ExtResource("1_t8dga") +shader = ExtResource("2_vt7r5") +metadata/_edit_vertical_guides_ = [-140.0] [node name="ColorRect" type="ColorRect" parent="."] layout_mode = 1 @@ -28,9 +27,9 @@ color = Color(0, 0, 0, 1) [node name="LoadImageDialog" type="FileDialog" parent="."] unique_name_in_owner = true oversampling_override = 1.0 -title = "Open a File" +title = "Open File(s)" dialog_hide_on_ok = true -file_mode = 0 +file_mode = 1 access = 2 filters = PackedStringArray("*.png") use_native_dialog = true @@ -40,7 +39,46 @@ file_sort_options_enabled = false folder_creation_enabled = false favorites_enabled = false -[node name="MainSplit" type="HBoxContainer" parent="."] +[node name="SaveFXDialog" type="FileDialog" parent="."] +unique_name_in_owner = true +oversampling_override = 1.0 +dialog_hide_on_ok = true +access = 2 +filters = PackedStringArray("*.tres") +use_native_dialog = true +hidden_files_toggle_enabled = false +file_filter_toggle_enabled = false +file_sort_options_enabled = false +folder_creation_enabled = false +favorites_enabled = false + +[node name="LoadFXDialog" type="FileDialog" parent="."] +unique_name_in_owner = true +oversampling_override = 1.0 +title = "Open a File" +dialog_hide_on_ok = true +file_mode = 0 +access = 2 +filters = PackedStringArray("*.tres") +use_native_dialog = true +hidden_files_toggle_enabled = false +file_filter_toggle_enabled = false +file_sort_options_enabled = false +folder_creation_enabled = false +favorites_enabled = false + +[node name="SaveConfirmPopup" type="AcceptDialog" parent="."] +unique_name_in_owner = true +oversampling_override = 1.0 +title = "Effects saved" +initial_position = 1 +size = Vector2i(283, 100) +unresizable = true +popup_window = true +popup_wm_hint = true +ok_button_text = "OK" + +[node name="MainSplit" type="HSplitContainer" parent="."] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -57,28 +95,23 @@ theme_override_constants/margin_top = 8 theme_override_constants/margin_right = 8 theme_override_constants/margin_bottom = 8 +[node name="Label" type="Label" parent="MainSplit/PreviewSide"] +layout_mode = 2 +size_flags_vertical = 0 +theme_override_colors/font_color = Color(0.14406255, 0.14406255, 0.14406249, 1) +text = "All images in 2560x1440 format. Press [F] for fullscreen preview" +horizontal_alignment = 1 + [node name="PreviewWindow" type="AspectRatioContainer" parent="MainSplit/PreviewSide"] layout_mode = 2 ratio = 1.7778 -[node name="Panel" type="Panel" parent="MainSplit/PreviewSide/PreviewWindow"] -layout_mode = 2 -theme_override_styles/panel = SubResource("StyleBoxFlat_t8dga") - -[node name="PreviewImage" type="TextureRect" parent="MainSplit/PreviewSide/PreviewWindow/Panel"] -unique_name_in_owner = true +[node name="PreviewImage" type="ColorRect" parent="MainSplit/PreviewSide/PreviewWindow"] material = ExtResource("2_vt7r5") -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -texture = ExtResource("1_4u770") -expand_mode = 1 -stretch_mode = 5 +layout_mode = 2 [node name="ControlSide" type="PanelContainer" parent="MainSplit"] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 @@ -105,12 +138,26 @@ title = "File" [node name="VBoxContainer" type="VBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FileContainer"] layout_mode = 2 -[node name="LoadImageButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FileContainer/VBoxContainer"] +[node name="ImageList" type="ItemList" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FileContainer/VBoxContainer"] unique_name_in_owner = true layout_mode = 2 +size_flags_horizontal = 3 +auto_height = true +max_columns = 2 +same_column_width = true +icon_mode = 0 +fixed_icon_size = Vector2i(128, 72) + +[node name="HBoxContainer2" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FileContainer/VBoxContainer"] +layout_mode = 2 + +[node name="LoadImageButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FileContainer/VBoxContainer/HBoxContainer2"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 text = "Load Image" -[node name="LoadFXButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FileContainer/VBoxContainer"] +[node name="LoadFXButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FileContainer/VBoxContainer/HBoxContainer2"] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 @@ -131,6 +178,309 @@ layout_mode = 2 size_flags_horizontal = 3 text = "Save FX As" +[node name="NewFXButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FileContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +text = "New FX" + +[node name="FXFileLabel" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FileContainer/VBoxContainer"] +unique_name_in_owner = true +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0.4828605, 0.36364812, 1, 1) +theme_override_font_sizes/font_size = 12 +text = "unsaved FX" +horizontal_alignment = 1 +autowrap_mode = 1 + [node name="FX Container" type="FoldableContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer"] layout_mode = 2 title = "Effects" + +[node name="VBoxContainer" type="VBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container"] +layout_mode = 2 + +[node name="Params" type="VBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params"] +layout_mode = 2 +text = "Noise" +horizontal_alignment = 1 + +[node name="TimeScale" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params/TimeScale"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Time Scale" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params/TimeScale"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params/TimeScale" instance=ExtResource("3_vt7r5")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +max_value = 0.1 +step = 0.0 + +[node name="Frequency" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params/Frequency"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Frequency" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params/Frequency"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params/Frequency" instance=ExtResource("3_vt7r5")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +min_value = 0.01 +max_value = 0.1 +step = 0.0 +value = 0.01 + +[node name="Label3" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params"] +layout_mode = 2 +text = "Warp" +horizontal_alignment = 1 + +[node name="Warp" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params/Warp"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Warp" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params/Warp"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params/Warp" instance=ExtResource("3_vt7r5")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +min_value = -0.2 +max_value = 0.2 +step = 0.0 +value = -0.2 + +[node name="RidgeSharpness" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params/RidgeSharpness"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Ridge Sharpness" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params/RidgeSharpness"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params/RidgeSharpness" instance=ExtResource("3_vt7r5")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +max_value = 0.1 +step = 0.0 + +[node name="RidgeShine" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params/RidgeShine"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Ridge Shine" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params/RidgeShine"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params/RidgeShine" instance=ExtResource("3_vt7r5")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +min_value = -20.0 +max_value = 20.0 +step = 0.0 + +[node name="Label2" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params"] +layout_mode = 2 +text = "Vignette" +horizontal_alignment = 1 + +[node name="VignetteStart" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params/VignetteStart"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Vignette Start" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params/VignetteStart"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params/VignetteStart" instance=ExtResource("3_vt7r5")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +min_value = -1.0 +max_value = 1.0 +step = 0.0 + +[node name="VignetteFade" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params/VignetteFade"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Vignette Fade" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params/VignetteFade"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params/VignetteFade" instance=ExtResource("3_vt7r5")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +max_value = 20.0 +step = 0.0 + +[node name="VignetteDistort" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params/VignetteDistort"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Vignette Distort" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params/VignetteDistort"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params/VignetteDistort" instance=ExtResource("3_vt7r5")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +max_value = 3.0 +step = 0.0 +value = 0.1 + +[node name="VignetteGradient" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params/VignetteGradient"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Vignette Gradient" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params/VignetteGradient"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params/VignetteGradient" instance=ExtResource("3_vt7r5")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +max_value = 5.0 +step = 0.0 +value = 0.1 + +[node name="Label4" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params"] +layout_mode = 2 +text = "Transition" +horizontal_alignment = 1 + +[node name="TransitionDur" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params/TransitionDur"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Transition Dur" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params/TransitionDur"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/Params/TransitionDur" instance=ExtResource("3_vt7r5")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +min_value = 0.1 +max_value = 10.0 +step = 0.0 +value = 0.1 diff --git a/run/main.tscn14758800800.tmp b/run/main.tscn14758800800.tmp new file mode 100644 index 0000000..c2fbf98 --- /dev/null +++ b/run/main.tscn14758800800.tmp @@ -0,0 +1,410 @@ +[gd_scene load_steps=5 format=3 uid="uid://b8c8qe2xi5m24"] + +[ext_resource type="Script" uid="uid://g3xgdtvbtg2f" path="res://run/main.gd" id="1_t8dga"] +[ext_resource type="Material" uid="uid://wr6g6bhw2fyj" path="res://content/mat_imagine.tres" id="2_vt7r5"] +[ext_resource type="PackedScene" uid="uid://b3hvp2t36d4eo" path="res://content/value_slider.tscn" id="3_vt7r5"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_t8dga"] +bg_color = Color(0.1003897, 0.10924364, 0.113670714, 1) + +[node name="Main" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_t8dga") +shader = ExtResource("2_vt7r5") +metadata/_edit_vertical_guides_ = [-140.0] + +[node name="ColorRect" type="ColorRect" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +color = Color(0, 0, 0, 1) + +[node name="LoadImageDialog" type="FileDialog" parent="."] +unique_name_in_owner = true +oversampling_override = 1.0 +title = "Open a File" +dialog_hide_on_ok = true +file_mode = 0 +access = 2 +filters = PackedStringArray("*.png") +use_native_dialog = true +hidden_files_toggle_enabled = false +file_filter_toggle_enabled = false +file_sort_options_enabled = false +folder_creation_enabled = false +favorites_enabled = false + +[node name="MainSplit" type="HSplitContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="PreviewSide" type="MarginContainer" parent="MainSplit"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 3.0 +theme_override_constants/margin_left = 8 +theme_override_constants/margin_top = 8 +theme_override_constants/margin_right = 8 +theme_override_constants/margin_bottom = 8 + +[node name="Label" type="Label" parent="MainSplit/PreviewSide"] +layout_mode = 2 +size_flags_vertical = 0 +theme_override_colors/font_color = Color(0.14406255, 0.14406255, 0.14406249, 1) +text = "All images in 2560x1440 format" +horizontal_alignment = 1 + +[node name="PreviewWindow" type="AspectRatioContainer" parent="MainSplit/PreviewSide"] +layout_mode = 2 +ratio = 1.7778 + +[node name="Panel" type="Panel" parent="MainSplit/PreviewSide/PreviewWindow"] +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_t8dga") + +[node name="PreviewImage" type="ColorRect" parent="MainSplit/PreviewSide/PreviewWindow/Panel"] +unique_name_in_owner = true +material = ExtResource("2_vt7r5") +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="ControlSide" type="PanelContainer" parent="MainSplit"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="MarginContainer" type="MarginContainer" parent="MainSplit/ControlSide"] +layout_mode = 2 +theme_override_constants/margin_left = 4 +theme_override_constants/margin_top = 4 +theme_override_constants/margin_right = 4 +theme_override_constants/margin_bottom = 4 + +[node name="VBoxContainer" type="VBoxContainer" parent="MainSplit/ControlSide/MarginContainer"] +layout_mode = 2 + +[node name="TitleLabel" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer"] +custom_minimum_size = Vector2(0, 50) +layout_mode = 2 +text = "Imagine Composer" +horizontal_alignment = 1 + +[node name="FileContainer" type="FoldableContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer"] +layout_mode = 2 +title = "File" + +[node name="VBoxContainer" type="VBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FileContainer"] +layout_mode = 2 + +[node name="ImageList" type="ItemList" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FileContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +auto_height = true +max_columns = 2 +same_column_width = true +icon_mode = 0 +fixed_icon_size = Vector2i(128, 72) + +[node name="HBoxContainer2" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FileContainer/VBoxContainer"] +layout_mode = 2 + +[node name="LoadImageButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FileContainer/VBoxContainer/HBoxContainer2"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +text = "Load Image" + +[node name="LoadFXButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FileContainer/VBoxContainer/HBoxContainer2"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +text = "Load FX" + +[node name="HBoxContainer" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FileContainer/VBoxContainer"] +layout_mode = 2 + +[node name="SaveFXButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FileContainer/VBoxContainer/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +text = "Save FX" + +[node name="SaveFXAsButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FileContainer/VBoxContainer/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +text = "Save FX As" + +[node name="FX Container" type="FoldableContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer"] +layout_mode = 2 +title = "Effects" + +[node name="VBoxContainer" type="VBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container"] +layout_mode = 2 + +[node name="ShaderParams" type="VBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 +text = "Noise" +horizontal_alignment = 1 + +[node name="TimeScale" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/TimeScale"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Time Scale" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/TimeScale"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/TimeScale" instance=ExtResource("3_vt7r5")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +max_value = 1.0 +step = 0.0 + +[node name="Frequency" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/Frequency"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Frequency" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/Frequency"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/Frequency" instance=ExtResource("3_vt7r5")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +min_value = 0.01 +max_value = 0.1 +step = 0.0 +value = 0.01 + +[node name="Label3" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 +text = "Warp" +horizontal_alignment = 1 + +[node name="Warp" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/Warp"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Warp" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/Warp"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/Warp" instance=ExtResource("3_vt7r5")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +min_value = -0.2 +max_value = 0.2 +step = 0.0 + +[node name="RidgeSharpness" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/RidgeSharpness"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Ridge Sharpness" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/RidgeSharpness"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/RidgeSharpness" instance=ExtResource("3_vt7r5")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +max_value = 0.1 +step = 0.0 + +[node name="RidgeShine" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/RidgeShine"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Ridge Shine" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/RidgeShine"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/RidgeShine" instance=ExtResource("3_vt7r5")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +min_value = -20.0 +max_value = 20.0 +step = 0.0 + +[node name="Label2" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 +text = "Vignette" +horizontal_alignment = 1 + +[node name="VignetteStart" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteStart"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Vignette Start" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteStart"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteStart" instance=ExtResource("3_vt7r5")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +min_value = -1.0 +max_value = 1.0 +step = 0.0 + +[node name="VignetteFade" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteFade"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Vignette Fade" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteFade"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteFade" instance=ExtResource("3_vt7r5")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +max_value = 20.0 +step = 0.0 + +[node name="VignetteDistort" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteDistort"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Vignette Distort" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteDistort"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteDistort" instance=ExtResource("3_vt7r5")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +max_value = 3.0 +step = 0.0 +value = 0.1 + +[node name="VignetteGradient" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteGradient"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Vignette Gradient" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteGradient"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteGradient" instance=ExtResource("3_vt7r5")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +max_value = 5.0 +step = 0.0 +value = 0.1 diff --git a/run/main.tscn14766473245.tmp b/run/main.tscn14766473245.tmp new file mode 100644 index 0000000..c2fbf98 --- /dev/null +++ b/run/main.tscn14766473245.tmp @@ -0,0 +1,410 @@ +[gd_scene load_steps=5 format=3 uid="uid://b8c8qe2xi5m24"] + +[ext_resource type="Script" uid="uid://g3xgdtvbtg2f" path="res://run/main.gd" id="1_t8dga"] +[ext_resource type="Material" uid="uid://wr6g6bhw2fyj" path="res://content/mat_imagine.tres" id="2_vt7r5"] +[ext_resource type="PackedScene" uid="uid://b3hvp2t36d4eo" path="res://content/value_slider.tscn" id="3_vt7r5"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_t8dga"] +bg_color = Color(0.1003897, 0.10924364, 0.113670714, 1) + +[node name="Main" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_t8dga") +shader = ExtResource("2_vt7r5") +metadata/_edit_vertical_guides_ = [-140.0] + +[node name="ColorRect" type="ColorRect" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +color = Color(0, 0, 0, 1) + +[node name="LoadImageDialog" type="FileDialog" parent="."] +unique_name_in_owner = true +oversampling_override = 1.0 +title = "Open a File" +dialog_hide_on_ok = true +file_mode = 0 +access = 2 +filters = PackedStringArray("*.png") +use_native_dialog = true +hidden_files_toggle_enabled = false +file_filter_toggle_enabled = false +file_sort_options_enabled = false +folder_creation_enabled = false +favorites_enabled = false + +[node name="MainSplit" type="HSplitContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="PreviewSide" type="MarginContainer" parent="MainSplit"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 3.0 +theme_override_constants/margin_left = 8 +theme_override_constants/margin_top = 8 +theme_override_constants/margin_right = 8 +theme_override_constants/margin_bottom = 8 + +[node name="Label" type="Label" parent="MainSplit/PreviewSide"] +layout_mode = 2 +size_flags_vertical = 0 +theme_override_colors/font_color = Color(0.14406255, 0.14406255, 0.14406249, 1) +text = "All images in 2560x1440 format" +horizontal_alignment = 1 + +[node name="PreviewWindow" type="AspectRatioContainer" parent="MainSplit/PreviewSide"] +layout_mode = 2 +ratio = 1.7778 + +[node name="Panel" type="Panel" parent="MainSplit/PreviewSide/PreviewWindow"] +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_t8dga") + +[node name="PreviewImage" type="ColorRect" parent="MainSplit/PreviewSide/PreviewWindow/Panel"] +unique_name_in_owner = true +material = ExtResource("2_vt7r5") +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="ControlSide" type="PanelContainer" parent="MainSplit"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="MarginContainer" type="MarginContainer" parent="MainSplit/ControlSide"] +layout_mode = 2 +theme_override_constants/margin_left = 4 +theme_override_constants/margin_top = 4 +theme_override_constants/margin_right = 4 +theme_override_constants/margin_bottom = 4 + +[node name="VBoxContainer" type="VBoxContainer" parent="MainSplit/ControlSide/MarginContainer"] +layout_mode = 2 + +[node name="TitleLabel" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer"] +custom_minimum_size = Vector2(0, 50) +layout_mode = 2 +text = "Imagine Composer" +horizontal_alignment = 1 + +[node name="FileContainer" type="FoldableContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer"] +layout_mode = 2 +title = "File" + +[node name="VBoxContainer" type="VBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FileContainer"] +layout_mode = 2 + +[node name="ImageList" type="ItemList" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FileContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +auto_height = true +max_columns = 2 +same_column_width = true +icon_mode = 0 +fixed_icon_size = Vector2i(128, 72) + +[node name="HBoxContainer2" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FileContainer/VBoxContainer"] +layout_mode = 2 + +[node name="LoadImageButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FileContainer/VBoxContainer/HBoxContainer2"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +text = "Load Image" + +[node name="LoadFXButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FileContainer/VBoxContainer/HBoxContainer2"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +text = "Load FX" + +[node name="HBoxContainer" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FileContainer/VBoxContainer"] +layout_mode = 2 + +[node name="SaveFXButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FileContainer/VBoxContainer/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +text = "Save FX" + +[node name="SaveFXAsButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FileContainer/VBoxContainer/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +text = "Save FX As" + +[node name="FX Container" type="FoldableContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer"] +layout_mode = 2 +title = "Effects" + +[node name="VBoxContainer" type="VBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container"] +layout_mode = 2 + +[node name="ShaderParams" type="VBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 +text = "Noise" +horizontal_alignment = 1 + +[node name="TimeScale" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/TimeScale"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Time Scale" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/TimeScale"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/TimeScale" instance=ExtResource("3_vt7r5")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +max_value = 1.0 +step = 0.0 + +[node name="Frequency" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/Frequency"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Frequency" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/Frequency"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/Frequency" instance=ExtResource("3_vt7r5")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +min_value = 0.01 +max_value = 0.1 +step = 0.0 +value = 0.01 + +[node name="Label3" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 +text = "Warp" +horizontal_alignment = 1 + +[node name="Warp" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/Warp"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Warp" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/Warp"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/Warp" instance=ExtResource("3_vt7r5")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +min_value = -0.2 +max_value = 0.2 +step = 0.0 + +[node name="RidgeSharpness" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/RidgeSharpness"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Ridge Sharpness" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/RidgeSharpness"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/RidgeSharpness" instance=ExtResource("3_vt7r5")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +max_value = 0.1 +step = 0.0 + +[node name="RidgeShine" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/RidgeShine"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Ridge Shine" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/RidgeShine"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/RidgeShine" instance=ExtResource("3_vt7r5")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +min_value = -20.0 +max_value = 20.0 +step = 0.0 + +[node name="Label2" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 +text = "Vignette" +horizontal_alignment = 1 + +[node name="VignetteStart" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteStart"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Vignette Start" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteStart"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteStart" instance=ExtResource("3_vt7r5")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +min_value = -1.0 +max_value = 1.0 +step = 0.0 + +[node name="VignetteFade" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteFade"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Vignette Fade" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteFade"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteFade" instance=ExtResource("3_vt7r5")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +max_value = 20.0 +step = 0.0 + +[node name="VignetteDistort" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteDistort"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Vignette Distort" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteDistort"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteDistort" instance=ExtResource("3_vt7r5")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +max_value = 3.0 +step = 0.0 +value = 0.1 + +[node name="VignetteGradient" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteGradient"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Vignette Gradient" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteGradient"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteGradient" instance=ExtResource("3_vt7r5")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +max_value = 5.0 +step = 0.0 +value = 0.1 diff --git a/run/main2.tscn b/run/main2.tscn new file mode 100644 index 0000000..052b040 --- /dev/null +++ b/run/main2.tscn @@ -0,0 +1,410 @@ +[gd_scene load_steps=5 format=3 uid="uid://ctqqkax0jep3k"] + +[ext_resource type="Script" uid="uid://g3xgdtvbtg2f" path="res://run/main.gd" id="1_sk88t"] +[ext_resource type="Material" uid="uid://wr6g6bhw2fyj" path="res://content/mat_imagine.tres" id="2_2m83t"] +[ext_resource type="PackedScene" uid="uid://b3hvp2t36d4eo" path="res://content/value_slider.tscn" id="3_rbl2f"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_t8dga"] +bg_color = Color(0.1003897, 0.10924364, 0.113670714, 1) + +[node name="Main" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_sk88t") +shader = ExtResource("2_2m83t") +metadata/_edit_vertical_guides_ = [-140.0] + +[node name="ColorRect" type="ColorRect" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +color = Color(0, 0, 0, 1) + +[node name="LoadImageDialog" type="FileDialog" parent="."] +unique_name_in_owner = true +oversampling_override = 1.0 +title = "Open a File" +dialog_hide_on_ok = true +file_mode = 0 +access = 2 +filters = PackedStringArray("*.png") +use_native_dialog = true +hidden_files_toggle_enabled = false +file_filter_toggle_enabled = false +file_sort_options_enabled = false +folder_creation_enabled = false +favorites_enabled = false + +[node name="MainSplit" type="HSplitContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="PreviewSide" type="MarginContainer" parent="MainSplit"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 3.0 +theme_override_constants/margin_left = 8 +theme_override_constants/margin_top = 8 +theme_override_constants/margin_right = 8 +theme_override_constants/margin_bottom = 8 + +[node name="Label" type="Label" parent="MainSplit/PreviewSide"] +layout_mode = 2 +size_flags_vertical = 0 +theme_override_colors/font_color = Color(0.14406255, 0.14406255, 0.14406249, 1) +text = "All images in 2560x1440 format" +horizontal_alignment = 1 + +[node name="PreviewWindow" type="AspectRatioContainer" parent="MainSplit/PreviewSide"] +layout_mode = 2 +ratio = 1.7778 + +[node name="Panel" type="Panel" parent="MainSplit/PreviewSide/PreviewWindow"] +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_t8dga") + +[node name="PreviewImage" type="ColorRect" parent="MainSplit/PreviewSide/PreviewWindow/Panel"] +unique_name_in_owner = true +material = ExtResource("2_2m83t") +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="ControlSide" type="PanelContainer" parent="MainSplit"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="MarginContainer" type="MarginContainer" parent="MainSplit/ControlSide"] +layout_mode = 2 +theme_override_constants/margin_left = 4 +theme_override_constants/margin_top = 4 +theme_override_constants/margin_right = 4 +theme_override_constants/margin_bottom = 4 + +[node name="VBoxContainer" type="VBoxContainer" parent="MainSplit/ControlSide/MarginContainer"] +layout_mode = 2 + +[node name="TitleLabel" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer"] +custom_minimum_size = Vector2(0, 50) +layout_mode = 2 +text = "Imagine Composer" +horizontal_alignment = 1 + +[node name="FileContainer" type="FoldableContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer"] +layout_mode = 2 +title = "File" + +[node name="VBoxContainer" type="VBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FileContainer"] +layout_mode = 2 + +[node name="ImageList" type="ItemList" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FileContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +auto_height = true +max_columns = 2 +same_column_width = true +icon_mode = 0 +fixed_icon_size = Vector2i(128, 72) + +[node name="HBoxContainer2" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FileContainer/VBoxContainer"] +layout_mode = 2 + +[node name="LoadImageButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FileContainer/VBoxContainer/HBoxContainer2"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +text = "Load Image" + +[node name="LoadFXButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FileContainer/VBoxContainer/HBoxContainer2"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +text = "Load FX" + +[node name="HBoxContainer" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FileContainer/VBoxContainer"] +layout_mode = 2 + +[node name="SaveFXButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FileContainer/VBoxContainer/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +text = "Save FX" + +[node name="SaveFXAsButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FileContainer/VBoxContainer/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +text = "Save FX As" + +[node name="FX Container" type="FoldableContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer"] +layout_mode = 2 +title = "Effects" + +[node name="VBoxContainer" type="VBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container"] +layout_mode = 2 + +[node name="ShaderParams" type="VBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 +text = "Noise" +horizontal_alignment = 1 + +[node name="TimeScale" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/TimeScale"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Time Scale" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/TimeScale"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/TimeScale" instance=ExtResource("3_rbl2f")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +max_value = 1.0 +step = 0.0 + +[node name="Frequency" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/Frequency"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Frequency" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/Frequency"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/Frequency" instance=ExtResource("3_rbl2f")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +min_value = 0.01 +max_value = 0.1 +step = 0.0 +value = 0.01 + +[node name="Label3" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 +text = "Warp" +horizontal_alignment = 1 + +[node name="Warp" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/Warp"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Warp" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/Warp"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/Warp" instance=ExtResource("3_rbl2f")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +min_value = -0.2 +max_value = 0.2 +step = 0.0 + +[node name="RidgeSharpness" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/RidgeSharpness"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Ridge Sharpness" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/RidgeSharpness"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/RidgeSharpness" instance=ExtResource("3_rbl2f")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +max_value = 0.1 +step = 0.0 + +[node name="RidgeShine" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/RidgeShine"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Ridge Shine" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/RidgeShine"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/RidgeShine" instance=ExtResource("3_rbl2f")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +min_value = -20.0 +max_value = 20.0 +step = 0.0 + +[node name="Label2" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 +text = "Vignette" +horizontal_alignment = 1 + +[node name="VignetteStart" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteStart"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Vignette Start" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteStart"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteStart" instance=ExtResource("3_rbl2f")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +min_value = -1.0 +max_value = 1.0 +step = 0.0 + +[node name="VignetteFade" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteFade"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Vignette Fade" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteFade"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteFade" instance=ExtResource("3_rbl2f")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +max_value = 20.0 +step = 0.0 + +[node name="VignetteDistort" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteDistort"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Vignette Distort" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteDistort"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteDistort" instance=ExtResource("3_rbl2f")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +max_value = 3.0 +step = 0.0 +value = 0.1 + +[node name="VignetteGradient" type="HBoxContainer" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteGradient"] +custom_minimum_size = Vector2(110, 20) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 12 +text = "Vignette Gradient" + +[node name="ResetButton" type="Button" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteGradient"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 8 +text = "reset" + +[node name="Slider" parent="MainSplit/ControlSide/MarginContainer/VBoxContainer/FX Container/VBoxContainer/ShaderParams/VignetteGradient" instance=ExtResource("3_rbl2f")] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 2.0 +max_value = 5.0 +step = 0.0 +value = 0.1