[gd_scene load_steps=31 format=2] [ext_resource path="res://screen_shaders.gd" type="Script" id=1] [ext_resource path="res://art/burano.jpg" type="Texture" id=2] [ext_resource path="res://art/platformer.jpg" type="Texture" id=3] [ext_resource path="res://art/mountains.jpg" type="Texture" id=4] [ext_resource path="res://art/forest.jpg" type="Texture" id=5] [ext_resource path="res://art/vignette.png" type="Texture" id=6] [ext_resource path="res://art/white.png" type="Texture" id=7] [ext_resource path="res://art/filmgrain.png" type="Texture" id=8] [sub_resource type="Shader" id=1] code = "shader_type canvas_item; uniform sampler2D vignette; void fragment() { vec3 vignette_color = texture(vignette,UV).rgb; //screen texture stores gaussian blurred copies on mipmaps COLOR.rgb = textureLod(SCREEN_TEXTURE,SCREEN_UV,(1.0-vignette_color.r)*4.0).rgb; COLOR.rgb*= texture(vignette,UV).rgb; }" [sub_resource type="ShaderMaterial" id=2] shader = SubResource( 1 ) shader_param/vignette = ExtResource( 6 ) _sections_unfolded = [ "shader", "shader_param" ] [sub_resource type="Shader" id=3] code = "shader_type canvas_item; uniform float amount : hint_range(0,5); void fragment() { COLOR.rgb = textureLod(SCREEN_TEXTURE,SCREEN_UV,amount).rgb; }" [sub_resource type="ShaderMaterial" id=4] shader = SubResource( 3 ) shader_param/amount = 4.0 _sections_unfolded = [ "shader", "shader_param" ] [sub_resource type="Shader" id=5] code = "shader_type canvas_item; uniform float size_x=0.008; uniform float size_y=0.008; void fragment() { vec2 uv = SCREEN_UV; uv-=mod(uv,vec2(size_x,size_y)); COLOR.rgb= textureLod(SCREEN_TEXTURE,uv,0.0).rgb; } " [sub_resource type="ShaderMaterial" id=6] shader = SubResource( 5 ) shader_param/size_x = null shader_param/size_y = null _sections_unfolded = [ "shader" ] [sub_resource type="Shader" id=7] code = "shader_type canvas_item; uniform float rotation=3.0; void fragment() { vec2 uv = SCREEN_UV; vec2 rel = uv-vec2(0.5,0.5); float angle = length(rel)*rotation; mat2 rot = mat2(vec2(cos(angle),-sin(angle)),vec2(sin(angle),cos(angle))); rel = rot * rel; uv = clamp(rel + vec2(0.5,0.5),vec2(0,0),vec2(1,1)); COLOR.rgb= textureLod(SCREEN_TEXTURE,uv,0.0).rgb; } " [sub_resource type="ShaderMaterial" id=8] shader = SubResource( 7 ) shader_param/rotation = null _sections_unfolded = [ "shader" ] [sub_resource type="Shader" id=9] code = "shader_type canvas_item; uniform vec4 base : hint_color; void fragment() { vec3 c = textureLod(SCREEN_TEXTURE,SCREEN_UV,0.0).rgb; //float v = max(c.r,max(c.g,c.b)); float v = dot(c,vec3(0.33333,0.33333,0.33333)); v=sqrt(v); //v*=v; COLOR.rgb= base.rgb*v; }" [sub_resource type="ShaderMaterial" id=10] shader = SubResource( 9 ) shader_param/base = Color( 0.54451, 0.408353, 0.403137, 1 ) _sections_unfolded = [ "shader", "shader_param" ] [sub_resource type="Shader" id=11] code = "shader_type canvas_item; void fragment() { vec3 c = textureLod(SCREEN_TEXTURE,SCREEN_UV,0.0).rgb; c=vec3(1.0)-c; COLOR.rgb=c; } " [sub_resource type="ShaderMaterial" id=12] shader = SubResource( 11 ) _sections_unfolded = [ "shader" ] [sub_resource type="Shader" id=13] code = "shader_type canvas_item; void fragment() { vec3 c = textureLod(SCREEN_TEXTURE,SCREEN_UV,0.0).rgb; c=mod(c+vec3(0.5),vec3(1.0)); COLOR.rgb=c; } " [sub_resource type="ShaderMaterial" id=14] shader = SubResource( 13 ) _sections_unfolded = [ "shader" ] [sub_resource type="Shader" id=15] code = "shader_type canvas_item; void fragment() { vec3 c = textureLod(SCREEN_TEXTURE,SCREEN_UV,0.0).rgb; COLOR.rgb=normalize(c); } " [sub_resource type="ShaderMaterial" id=16] shader = SubResource( 15 ) _sections_unfolded = [ "shader" ] [sub_resource type="Shader" id=17] code = "shader_type canvas_item; uniform float brightness=0.8; uniform float contrast=1.5; uniform float saturation=1.8; void fragment() { vec3 c = textureLod(SCREEN_TEXTURE,SCREEN_UV,0.0).rgb; c.rgb = mix(vec3(0.0),c.rgb,brightness); c.rgb = mix(vec3(0.5),c.rgb,contrast); c.rgb = mix(vec3(dot(vec3(1.0),c.rgb)*0.33333),c.rgb,saturation); COLOR.rgb=c; } " [sub_resource type="ShaderMaterial" id=18] shader = SubResource( 17 ) shader_param/brightness = null shader_param/contrast = null shader_param/saturation = null _sections_unfolded = [ "shader" ] [sub_resource type="Shader" id=19] code = "shader_type canvas_item; uniform float frequency=60; uniform float depth = 0.005; void fragment() { vec2 uv = SCREEN_UV; uv.x += sin(uv.y*frequency+TIME)*depth; uv.x = clamp(uv.x,0,1); vec3 c = textureLod(SCREEN_TEXTURE,uv,0.0).rgb; COLOR.rgb=c; } " [sub_resource type="ShaderMaterial" id=20] shader = SubResource( 19 ) shader_param/frequency = null shader_param/depth = null _sections_unfolded = [ "shader" ] [sub_resource type="Shader" id=21] code = "shader_type canvas_item; uniform vec4 base : hint_color; uniform sampler2D grain; uniform float grain_strength=0.3; uniform sampler2D vignette; uniform float fps=12; uniform float stretch = 0.5; uniform float flashing=0.01; float make_grain(float time,vec2 uv) { vec2 ofs = vec2(sin(41.0*time*sin(time*123.0)),sin(27.0*time*sin(time*312.0))); return texture(grain,(uv+mod(ofs,vec2(1,1)))*stretch).r; } void fragment() { vec3 c = textureLod(SCREEN_TEXTURE,SCREEN_UV,0.0).rgb; //float v = max(c.r,max(c.g,c.b)); float v = dot(c,vec3(0.33333,0.33333,0.33333)); v=sqrt(v); //v*=v; float f = 1.0/fps; float g = make_grain(TIME-mod(TIME,f),UV); g=max(g,make_grain(TIME-mod(TIME,f)+f,UV)*0.5); g=max(g,make_grain(TIME-mod(TIME,f)+f*2.0,UV)*0.25); COLOR.rgb= base.rgb*v-vec3(g)*grain_strength; COLOR.rgb*=texture(vignette,UV).r; float ft = TIME * 0.002; COLOR.rgb+=vec3(sin(75.0*ft*sin(ft*123.0)))*flashing; } " [sub_resource type="ShaderMaterial" id=22] shader = SubResource( 21 ) shader_param/base = Color( 0.450274, 0.361255, 0.335059, 1 ) shader_param/grain_strength = 0.3 shader_param/fps = 12 shader_param/stretch = 0.5 shader_param/flashing = 0.01 shader_param/grain = ExtResource( 8 ) shader_param/vignette = ExtResource( 6 ) _sections_unfolded = [ "shader", "shader_param" ] [node name="Control" type="Control"] anchor_right = 1 anchor_bottom = 1 rect_clip_content = false mouse_filter = 0 size_flags_horizontal = 2 size_flags_vertical = 2 script = ExtResource( 1 ) _sections_unfolded = [ "Pause" ] [node name="pictures" type="Control" parent="."] anchor_right = 1 anchor_bottom = 1 rect_clip_content = false mouse_filter = 0 size_flags_horizontal = 2 size_flags_vertical = 2 [node name="burano" type="TextureRect" parent="pictures"] margin_right = 40.0 margin_bottom = 40.0 rect_clip_content = false mouse_filter = 1 size_flags_horizontal = 2 size_flags_vertical = 2 texture = ExtResource( 2 ) stretch_mode = 0 [node name="roby" type="TextureRect" parent="pictures"] visible = false margin_right = 40.0 margin_bottom = 40.0 rect_clip_content = false mouse_filter = 1 size_flags_horizontal = 2 size_flags_vertical = 2 texture = ExtResource( 3 ) stretch_mode = 0 [node name="mountains" type="TextureRect" parent="pictures"] visible = false margin_right = 40.0 margin_bottom = 40.0 rect_clip_content = false mouse_filter = 1 size_flags_horizontal = 2 size_flags_vertical = 2 texture = ExtResource( 4 ) stretch_mode = 0 [node name="forest" type="TextureRect" parent="pictures"] visible = false margin_right = 40.0 margin_bottom = 40.0 rect_clip_content = false mouse_filter = 1 size_flags_horizontal = 2 size_flags_vertical = 2 texture = ExtResource( 5 ) stretch_mode = 0 [node name="effects" type="Control" parent="."] anchor_right = 1 anchor_bottom = 1 margin_right = -20.0 rect_clip_content = false mouse_filter = 0 size_flags_horizontal = 2 size_flags_vertical = 2 [node name="disabled" type="Control" parent="effects"] visible = false margin_right = 40.0 margin_bottom = 40.0 rect_clip_content = false mouse_filter = 0 size_flags_horizontal = 2 size_flags_vertical = 2 [node name="vignette" type="TextureRect" parent="effects"] visible = false material = SubResource( 2 ) anchor_right = 1 anchor_bottom = 1 rect_clip_content = false mouse_filter = 1 size_flags_horizontal = 2 size_flags_vertical = 2 texture = ExtResource( 7 ) expand = true stretch_mode = 0 _sections_unfolded = [ "Material" ] [node name="blur" type="TextureRect" parent="effects"] visible = false material = SubResource( 4 ) anchor_right = 1 anchor_bottom = 1 rect_clip_content = false mouse_filter = 1 size_flags_horizontal = 2 size_flags_vertical = 2 texture = ExtResource( 7 ) expand = true stretch_mode = 0 _sections_unfolded = [ "Material" ] [node name="pixelize" type="TextureRect" parent="effects"] visible = false material = SubResource( 6 ) anchor_right = 1 anchor_bottom = 1 rect_clip_content = false mouse_filter = 1 size_flags_horizontal = 2 size_flags_vertical = 2 texture = ExtResource( 7 ) expand = true stretch_mode = 0 _sections_unfolded = [ "Material" ] [node name="whirl" type="TextureRect" parent="effects"] visible = false material = SubResource( 8 ) anchor_right = 1 anchor_bottom = 1 rect_clip_content = false mouse_filter = 1 size_flags_horizontal = 2 size_flags_vertical = 2 texture = ExtResource( 7 ) expand = true stretch_mode = 0 _sections_unfolded = [ "Material" ] [node name="sepia" type="TextureRect" parent="effects"] visible = false material = SubResource( 10 ) anchor_right = 1 anchor_bottom = 1 margin_right = 14.0 margin_bottom = -2.0 rect_clip_content = false mouse_filter = 1 size_flags_horizontal = 2 size_flags_vertical = 2 texture = ExtResource( 7 ) expand = true stretch_mode = 0 _sections_unfolded = [ "Material", "Visibility" ] [node name="negative" type="TextureRect" parent="effects"] visible = false material = SubResource( 12 ) anchor_right = 1 anchor_bottom = 1 rect_clip_content = false mouse_filter = 1 size_flags_horizontal = 2 size_flags_vertical = 2 texture = ExtResource( 7 ) expand = true stretch_mode = 0 _sections_unfolded = [ "Material" ] [node name="contrasted" type="TextureRect" parent="effects"] visible = false material = SubResource( 14 ) anchor_right = 1 anchor_bottom = 1 rect_clip_content = false mouse_filter = 1 size_flags_horizontal = 2 size_flags_vertical = 2 texture = ExtResource( 7 ) expand = true stretch_mode = 0 _sections_unfolded = [ "Material" ] [node name="normalized" type="TextureRect" parent="effects"] visible = false material = SubResource( 16 ) anchor_right = 1 anchor_bottom = 1 rect_clip_content = false mouse_filter = 1 size_flags_horizontal = 2 size_flags_vertical = 2 texture = ExtResource( 7 ) expand = true stretch_mode = 0 _sections_unfolded = [ "Material" ] [node name="BCS" type="TextureRect" parent="effects"] visible = false material = SubResource( 18 ) anchor_right = 1 anchor_bottom = 1 margin_top = 3.0 margin_bottom = -3.0 rect_clip_content = false mouse_filter = 1 size_flags_horizontal = 2 size_flags_vertical = 2 texture = ExtResource( 7 ) expand = true stretch_mode = 0 _sections_unfolded = [ "Material" ] [node name="mirage" type="TextureRect" parent="effects"] visible = false material = SubResource( 20 ) anchor_right = 1 anchor_bottom = 1 rect_clip_content = false mouse_filter = 1 size_flags_horizontal = 2 size_flags_vertical = 2 texture = ExtResource( 7 ) expand = true stretch_mode = 0 _sections_unfolded = [ "Material" ] [node name="old_film" type="TextureRect" parent="effects"] visible = false material = SubResource( 22 ) anchor_right = 1 anchor_bottom = 1 margin_left = -3.0 margin_right = 3.0 rect_clip_content = false mouse_filter = 1 size_flags_horizontal = 2 size_flags_vertical = 2 texture = ExtResource( 7 ) expand = true stretch_mode = 0 _sections_unfolded = [ "Material" ] [node name="picture" type="OptionButton" parent="."] margin_left = 8.0 margin_top = 7.0 margin_right = 131.0 margin_bottom = 28.0 rect_clip_content = false mouse_filter = 0 size_flags_horizontal = 2 size_flags_vertical = 2 toggle_mode = false enabled_focus_mode = 2 shortcut = null group = null flat = false align = 0 selected = -1 items = [ ] [node name="effect" type="OptionButton" parent="."] margin_left = 137.0 margin_top = 7.0 margin_right = 260.0 margin_bottom = 28.0 rect_clip_content = false mouse_filter = 0 size_flags_horizontal = 2 size_flags_vertical = 2 toggle_mode = false enabled_focus_mode = 2 shortcut = null group = null flat = false align = 0 selected = -1 items = [ ] [connection signal="item_selected" from="picture" to="." method="_on_picture_item_selected"] [connection signal="item_selected" from="effect" to="." method="_on_effect_item_selected"]