diff --git a/assets/auto_scale.tscn b/assets/auto_scale.tscn new file mode 100644 index 0000000..da12446 --- /dev/null +++ b/assets/auto_scale.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3 uid="uid://br7cnj1spc4rk"] + +[ext_resource type="Script" path="res://scripts/auto_scale.gd" id="1_vp1nj"] + +[node name="AutoScale" type="Node"] +script = ExtResource("1_vp1nj") diff --git a/assets/bgm.ogg b/assets/bgm.ogg index d5c78cb..37b395d 100644 Binary files a/assets/bgm.ogg and b/assets/bgm.ogg differ diff --git a/assets/bgm.ogg.import b/assets/bgm.ogg.import index 5b7e07d..50d9cfe 100644 --- a/assets/bgm.ogg.import +++ b/assets/bgm.ogg.import @@ -2,7 +2,7 @@ importer="oggvorbisstr" type="AudioStreamOggVorbis" -uid="uid://35rb6724glhc" +uid="uid://djj201gjpdpv3" path="res://.godot/imported/bgm.ogg-e1728340e2c8938587d9482b715a001a.oggvorbisstr" [deps] diff --git a/assets/shaders/cromatic-abberation.gdshader b/assets/shaders/cromatic-abberation.gdshader new file mode 100644 index 0000000..eb28432 --- /dev/null +++ b/assets/shaders/cromatic-abberation.gdshader @@ -0,0 +1,44 @@ +//shader by CasualGarageCoder, updated to Godot 4 +shader_type canvas_item; + +uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap; + +uniform float chaos : hint_range(0., 32.) = 1.; +uniform float radius : hint_range(0., 1.) = 0.5; +uniform float attenuation : hint_range(1., 5.) = 2.; + +varying vec2 amount_r; +varying vec2 amount_g; +varying vec2 amount_b; + +float rand(vec2 co){ + return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453) - .5; +} + +void vertex() { + vec2 shifted_uv = (UV * 2.) - 1.; + amount_r = normalize( + vec2(rand(TIME * 1.3 * shifted_uv), + rand(TIME * 1.64 * shifted_uv))); + amount_g = normalize( + vec2(rand(TIME * 1.5 * shifted_uv), + rand(TIME * 1.7 * shifted_uv))); + amount_b = normalize( + vec2(rand(TIME * 1.17 * shifted_uv), + rand(TIME * 1.23 * shifted_uv))); +} + +void fragment() { + vec2 chaos_v = vec2(chaos, -chaos) * SCREEN_PIXEL_SIZE; + + float dist = length((UV - vec2(0.5)) * 2.); + float att = clamp(dist / radius, 0., 1.); + + chaos_v *= 1. - pow(att, attenuation); + + COLOR = vec4( + texture(TEXTURE, SCREEN_UV + chaos_v * amount_r).r, + texture(TEXTURE, SCREEN_UV + chaos_v * amount_g).g, + texture(TEXTURE, SCREEN_UV + chaos_v * amount_b).b, + 1.); +} \ No newline at end of file diff --git a/assets/shaders/pixelate.gdshader b/assets/shaders/pixelate.gdshader new file mode 100644 index 0000000..650771f --- /dev/null +++ b/assets/shaders/pixelate.gdshader @@ -0,0 +1,12 @@ +shader_type canvas_item; + +uniform int x_pixel_size : hint_range(1, 100); +uniform int y_pixel_size : hint_range(1, 100); + +void fragment() { + vec2 correction = TEXTURE_PIXEL_SIZE * vec2(float(x_pixel_size), float(y_pixel_size)) / vec2(2.0); + vec2 texture_uv = floor(UV / TEXTURE_PIXEL_SIZE); + vec2 offset = vec2(float(int(texture_uv.x) % x_pixel_size), float(int(texture_uv.y) % y_pixel_size)); + vec2 target = (texture_uv - offset) * TEXTURE_PIXEL_SIZE; + COLOR = texture(TEXTURE, target + correction ); +} \ No newline at end of file diff --git a/entities/kaleido_scope.tscn b/entities/kaleido_scope.tscn index 6a4b6ad..40e8f94 100644 --- a/entities/kaleido_scope.tscn +++ b/entities/kaleido_scope.tscn @@ -1,15 +1,15 @@ -[gd_scene load_steps=13 format=3 uid="uid://b761uk7sjprrp"] +[gd_scene load_steps=22 format=3 uid="uid://b761uk7sjprrp"] [ext_resource type="Shader" path="res://assets/shaders/kaleidoscope.gdshader" id="1_nwvg1"] [ext_resource type="PackedScene" uid="uid://qehbjfkqs5pl" path="res://entities/ParticlesCool.tscn" id="1_yc1r8"] +[ext_resource type="PackedScene" uid="uid://br7cnj1spc4rk" path="res://assets/auto_scale.tscn" id="2_7v8f2"] +[ext_resource type="Shader" path="res://assets/shaders/pixelate.gdshader" id="4_lvys8"] +[ext_resource type="Shader" path="res://assets/shaders/cromatic-abberation.gdshader" id="5_w16wy"] [sub_resource type="GDScript" id="GDScript_mtsk5"] script/source = "extends Control - - - func _on_timer_timeout() -> void: $AnimationPlayer.play(\"kaleidoskope_1\"); " @@ -67,64 +67,12 @@ shader_parameter/enabled = null [sub_resource type="ViewportTexture" id="ViewportTexture_b44mw"] viewport_path = NodePath("TextViewPort") -[sub_resource type="Animation" id="Animation_olvxy"] -resource_name = "kaleidoskope_1" -length = 20.0 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Kaleido:material:shader_parameter/segments") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0.0333334, 1.06667, 2.1, 3.06667, 4.06667, 5.06667, 6.03333, 7.1, 8.13333, 9.1), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), -"update": 1, -"values": [4.0, 6.0, 8.0, 10.0, 12.0, 8.0, 4.0, 6.0, 8.0, 6.0] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("Kaleido:material:shader_parameter/sourceAngle") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0, 1.03333), -"transitions": PackedFloat32Array(1, 1), -"update": 0, -"values": [0.0, 0.0] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("Kaleido:material:shader_parameter/sourceOffset") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0.0333333, 9.1, 11.5333, 15.0667), -"transitions": PackedFloat32Array(1, 1, 1, 1), -"update": 0, -"values": [Vector2(0.5, 0.5), Vector2(0.5, 0.5), Vector2(0.5, 0), Vector2(1, -1)] -} -tracks/3/type = "value" -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/path = NodePath("TextMask:material:shader_parameter/enabled") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/keys = { -"times": PackedFloat32Array(0, 11.8), -"transitions": PackedFloat32Array(1, 1), -"update": 1, -"values": [false, true] -} - [sub_resource type="Animation" id="Animation_1yxhh"] length = 0.001 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true -tracks/0/path = NodePath("Kaleido:material:shader_parameter/segments") +tracks/0/path = NodePath("KaleidoViewport/Kaleido:material:shader_parameter/segments") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { @@ -136,7 +84,7 @@ tracks/0/keys = { tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true -tracks/1/path = NodePath("Kaleido:material:shader_parameter/sourceAngle") +tracks/1/path = NodePath("KaleidoViewport/Kaleido:material:shader_parameter/sourceAngle") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { @@ -148,7 +96,7 @@ tracks/1/keys = { tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true -tracks/2/path = NodePath("Kaleido:material:shader_parameter/sourceOffset") +tracks/2/path = NodePath("KaleidoViewport/Kaleido:material:shader_parameter/sourceOffset") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { @@ -170,6 +118,58 @@ tracks/3/keys = { "values": [null] } +[sub_resource type="Animation" id="Animation_olvxy"] +resource_name = "kaleidoskope_1" +length = 20.0 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("KaleidoViewport/Kaleido:material:shader_parameter/segments") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0.0333334, 1.06667, 2.1, 3.06667, 4.06667, 5.06667, 6.03333, 7.1, 8.13333, 9.1), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [4.0, 6.0, 8.0, 10.0, 12.0, 8.0, 4.0, 6.0, 8.0, 6.0] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("KaleidoViewport/Kaleido:material:shader_parameter/sourceAngle") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 1.03333), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 0.0] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("KaleidoViewport/Kaleido:material:shader_parameter/sourceOffset") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0.0333333, 9.1, 11.5333, 15.0667), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 0, +"values": [Vector2(0.5, 0.5), Vector2(0.5, 0.5), Vector2(0.5, 0), Vector2(1, -1)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("TextMask:material:shader_parameter/enabled") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 11.8), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [false, true] +} + [sub_resource type="AnimationLibrary" id="AnimationLibrary_4qo5x"] _data = { "RESET": SubResource("Animation_1yxhh"), @@ -180,6 +180,29 @@ _data = { font_size = 104 shadow_size = 0 +[sub_resource type="ShaderMaterial" id="ShaderMaterial_riy6b"] +shader = ExtResource("4_lvys8") +shader_parameter/x_pixel_size = 1 +shader_parameter/y_pixel_size = 15 + +[sub_resource type="ViewportTexture" id="ViewportTexture_ff16u"] +viewport_path = NodePath("KaleidoViewport") + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_wyd4s"] +shader = ExtResource("5_w16wy") +shader_parameter/chaos = 32.0 +shader_parameter/radius = 1.0 +shader_parameter/attenuation = 1.5 + +[sub_resource type="ViewportTexture" id="ViewportTexture_3bfaj"] +viewport_path = NodePath("RandomPasses/Pass1") + +[sub_resource type="ViewportTexture" id="ViewportTexture_rmol4"] +viewport_path = NodePath("RandomPasses/Pass2") + +[sub_resource type="ViewportTexture" id="ViewportTexture_wumee"] +viewport_path = NodePath("RandomPasses/Pass3") + [node name="KaleidoScope" type="Control"] layout_mode = 3 anchors_preset = 15 @@ -189,15 +212,21 @@ grow_horizontal = 2 grow_vertical = 2 script = SubResource("GDScript_mtsk5") -[node name="Kaleido" type="TextureRect" parent="."] +[node name="KaleidoViewport" type="SubViewport" parent="."] +size = Vector2i(1152, 648) + +[node name="Kaleido" type="TextureRect" parent="KaleidoViewport"] material = SubResource("ShaderMaterial_a6cuy") -layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 texture = SubResource("ViewportTexture_1y4ry") +expand_mode = 2 +stretch_mode = 6 + +[node name="AutoScale" parent="KaleidoViewport" instance=ExtResource("2_7v8f2")] [node name="TextMask" type="TextureRect" parent="."] material = SubResource("ShaderMaterial_ahqjw") @@ -217,6 +246,8 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 2.31619) [node name="Node3D" parent="SubViewport" instance=ExtResource("1_yc1r8")] +[node name="AutoScale" parent="SubViewport" instance=ExtResource("2_7v8f2")] + [node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] transform = Transform3D(1, 0, 0, 0, 0.910979, 0.412453, 0, -0.412453, 0.910979, 0, 0, 0) @@ -234,6 +265,7 @@ transparent_bg = true size = Vector2i(1152, 648) [node name="Label" type="Label" parent="TextViewPort"] +visible = false anchors_preset = 8 anchor_left = 0.5 anchor_top = 0.5 @@ -248,4 +280,59 @@ grow_vertical = 2 text = "THIS IS SOME TEXT" label_settings = SubResource("LabelSettings_n61ct") +[node name="AutoScale" parent="TextViewPort" instance=ExtResource("2_7v8f2")] + +[node name="RandomPasses" type="Control" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="Pass1" type="SubViewport" parent="RandomPasses"] +size = Vector2i(1152, 648) + +[node name="TextureRect" type="TextureRect" parent="RandomPasses/Pass1"] +material = SubResource("ShaderMaterial_riy6b") +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = SubResource("ViewportTexture_ff16u") + +[node name="AutoScale" parent="RandomPasses/Pass1" instance=ExtResource("2_7v8f2")] + +[node name="Pass2" type="SubViewport" parent="RandomPasses"] +size = Vector2i(1152, 648) + +[node name="TextureRect" type="TextureRect" parent="RandomPasses/Pass2"] +material = SubResource("ShaderMaterial_wyd4s") +offset_right = 40.0 +offset_bottom = 40.0 +texture = SubResource("ViewportTexture_3bfaj") + +[node name="AutoScale" parent="RandomPasses/Pass2" instance=ExtResource("2_7v8f2")] + +[node name="Pass3" type="SubViewport" parent="RandomPasses"] +size = Vector2i(1152, 648) + +[node name="TextureRect" type="TextureRect" parent="RandomPasses/Pass3"] +material = SubResource("ShaderMaterial_wyd4s") +offset_right = 40.0 +offset_bottom = 40.0 +texture = SubResource("ViewportTexture_rmol4") + +[node name="AutoScale" parent="RandomPasses/Pass3" instance=ExtResource("2_7v8f2")] + +[node name="Output" type="TextureRect" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = SubResource("ViewportTexture_wumee") + [connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"] diff --git a/entities/test.tscn b/entities/test.tscn index 1266108..507defb 100644 --- a/entities/test.tscn +++ b/entities/test.tscn @@ -23,6 +23,21 @@ font_size = 48 [sub_resource type="LabelSettings" id="LabelSettings_78g6a"] font_size = 48 +[sub_resource type="Animation" id="Animation_dirfa"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Label:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} + [sub_resource type="Animation" id="Animation_t3ulj"] resource_name = "blink" length = 2.0 @@ -40,21 +55,6 @@ tracks/0/keys = { "values": [false, true] } -[sub_resource type="Animation" id="Animation_dirfa"] -length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Label:visible") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} - [sub_resource type="AnimationLibrary" id="AnimationLibrary_jgx00"] _data = { "RESET": SubResource("Animation_dirfa"), @@ -87,6 +87,7 @@ texture = ExtResource("1_3phrh") speed = 5.0 duration = 0.05 infinite = false +layout_mode = 0 offset_right = 40.0 offset_bottom = 23.0 text = "LOADING DEMO..." diff --git a/project.godot b/project.godot index 588714d..f1639dd 100644 --- a/project.godot +++ b/project.godot @@ -19,3 +19,8 @@ config/icon="res://icon.svg" gdscript/warnings/unassigned_variable=2 gdscript/warnings/untyped_declaration=2 + +[display] + +window/size/viewport_width=1920 +window/size/viewport_height=1080 diff --git a/scripts/auto_scale.gd b/scripts/auto_scale.gd new file mode 100644 index 0000000..6c0b277 --- /dev/null +++ b/scripts/auto_scale.gd @@ -0,0 +1,15 @@ +# THIS SCRIPT WILL BE ADDED AS PART OF MiniDemoTools soon +extends Node + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + (get_parent() as SubViewport).size = get_tree().get_root().get_viewport().size; + get_tree().get_root().size_changed.connect(resize) + + + +func resize() -> void: + print("changed") + print(get_tree().get_root().get_viewport().size) + (get_parent() as SubViewport).size = get_tree().get_root().get_viewport().size;