diff --git a/godot/assets/shaders/TransitionColor.gd b/godot/assets/shaders/TransitionColor.gd new file mode 100644 index 0000000000000000000000000000000000000000..e43cbc5db8ed46a29ac1e6a7e544ce878d472831 --- /dev/null +++ b/godot/assets/shaders/TransitionColor.gd @@ -0,0 +1,23 @@ +tool +extends ColorRect + +onready var anim_player = $AnimationPlayer + +export(float, 0.0, 1.0) var transition : float = 0.0 setget set_transition +export(float, 0.0, 1.0) var smoothness : float = 0.0 setget set_smoothness + +func set_transition(value): + transition = value + material.set('shader_param/cutoff', 1.0 - value) + +func set_smoothness(value): + smoothness = value + material.set('shader_param/smooth_size', value) + +func fade_to_color(): + anim_player.play("to_color") + yield(anim_player, "animation_finished") + +func fade_from_color(): + anim_player.play("to_transparent") + yield(anim_player, "animation_finished") diff --git a/godot/assets/shaders/TransitionColor.tscn b/godot/assets/shaders/TransitionColor.tscn new file mode 100644 index 0000000000000000000000000000000000000000..e3459a1cc5ede09e669f5123cef962bcf1a120e1 --- /dev/null +++ b/godot/assets/shaders/TransitionColor.tscn @@ -0,0 +1,117 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://assets/shaders/transition.material" type="Material" id=1] +[ext_resource path="res://assets/shaders/TransitionColor.gd" type="Script" id=2] + +[sub_resource type="Animation" id=1] + +resource_name = "_SETUP" +length = 0.01 +loop = false +step = 0.1 +tracks/0/type = "value" +tracks/0/path = NodePath(".:transition") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0.01 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} + +[sub_resource type="Animation" id=2] + +resource_name = "to_color" +length = 0.7 +loop = false +step = 0.1 +tracks/0/type = "value" +tracks/0/path = NodePath(".:transition") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.7 ), +"transitions": PoolRealArray( 0.307901, 0.27058 ), +"update": 0, +"values": [ 0.0, 1.0 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:smoothness") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.7 ), +"transitions": PoolRealArray( 0.27058, 1 ), +"update": 0, +"values": [ 0.941, 0.161 ] +} + +[sub_resource type="Animation" id=3] + +length = 0.7 +loop = false +step = 0.1 +tracks/0/type = "value" +tracks/0/path = NodePath(".:transition") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.7 ), +"transitions": PoolRealArray( 1, 0.307901 ), +"update": 0, +"values": [ 1.0, 0.0 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:smoothness") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.7 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.161, 0.941 ] +} + +[node name="TransitionColor" type="ColorRect"] +material = ExtResource( 1 ) +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = -1.0 +margin_right = -1.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 0 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +color = Color( 1, 1, 1, 1 ) +script = ExtResource( 2 ) +_sections_unfolded = [ "Material", "material" ] +transition = 0.0 +smoothness = 0.941 + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +root_node = NodePath("..") +autoplay = "" +playback_process_mode = 1 +playback_default_blend_time = 0.0 +playback_speed = 1.0 +anims/_SETUP = SubResource( 1 ) +anims/to_color = SubResource( 2 ) +anims/to_transparent = SubResource( 3 ) +blend_times = [ ] +_sections_unfolded = [ "Playback Options" ] + diff --git a/godot/assets/shaders/masks/curtain.png b/godot/assets/shaders/masks/curtain.png new file mode 100644 index 0000000000000000000000000000000000000000..befa82af07ebad8d39fa0b27281bbc989f560e0d Binary files /dev/null and b/godot/assets/shaders/masks/curtain.png differ diff --git a/godot/assets/shaders/masks/curtain.png.import b/godot/assets/shaders/masks/curtain.png.import new file mode 100644 index 0000000000000000000000000000000000000000..232491c8297b4db9c6c8a47b498abe9353923387 --- /dev/null +++ b/godot/assets/shaders/masks/curtain.png.import @@ -0,0 +1,31 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/curtain.png-73ae39a13d65a59b23b5e70fa5e286b2.stex" + +[deps] + +source_file="res://assets/shaders/masks/curtain.png" +dest_files=[ "res://.import/curtain.png-73ae39a13d65a59b23b5e70fa5e286b2.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/godot/assets/shaders/transition.material b/godot/assets/shaders/transition.material new file mode 100644 index 0000000000000000000000000000000000000000..6a8994be1a12e5593184bdabf7ec4320a1e4508b Binary files /dev/null and b/godot/assets/shaders/transition.material differ diff --git a/godot/assets/shaders/transition.shader b/godot/assets/shaders/transition.shader new file mode 100644 index 0000000000000000000000000000000000000000..8a2aa30d85248937928d6b9946b1b29d8c508d40 --- /dev/null +++ b/godot/assets/shaders/transition.shader @@ -0,0 +1,15 @@ +shader_type canvas_item; +render_mode unshaded; + +uniform float cutoff : hint_range(0.0, 1.0); +uniform float smooth_size : hint_range(0.0, 1.0); +uniform sampler2D mask : hint_albedo; + +uniform vec4 color : hint_color; + +void fragment() +{ + float value = texture(mask, UV).r; + float alpha = smoothstep(cutoff, cutoff + smooth_size, value * (1.0 - smooth_size) + smooth_size); + COLOR = vec4(color.rgb, alpha); +}