New music and multipass canvas

This commit is contained in:
Otto 2024-10-08 15:50:32 +03:00
parent 2e91da4295
commit 45c91bce39
9 changed files with 247 additions and 77 deletions

6
assets/auto_scale.tscn Normal file
View file

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

Binary file not shown.

View file

@ -2,7 +2,7 @@
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://35rb6724glhc"
uid="uid://djj201gjpdpv3"
path="res://.godot/imported/bgm.ogg-e1728340e2c8938587d9482b715a001a.oggvorbisstr"
[deps]

View file

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

View file

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

View file

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

View file

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

View file

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

15
scripts/auto_scale.gd Normal file
View file

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