Pārlūkot izejas kodu

Ported screen space shaders demo, meaning SCREEN_TEXTURE works finally!

Juan Linietsky 8 gadi atpakaļ
vecāks
revīzija
b9c4670f44
35 mainītis faili ar 1338 papildinājumiem un 525 dzēšanām
  1. BIN
      2d/screen_space_shaders/.import/burano.jpg-bbae3c5a81f8b6300cd944219dbbbc05.stex
  2. BIN
      2d/screen_space_shaders/.import/filmgrain.png-8b1c9d8b22a2ffa8f94b1e004d5eddc9.etc2.stex
  3. BIN
      2d/screen_space_shaders/.import/filmgrain.png-8b1c9d8b22a2ffa8f94b1e004d5eddc9.s3tc.stex
  4. BIN
      2d/screen_space_shaders/.import/filmgrain.png-8b1c9d8b22a2ffa8f94b1e004d5eddc9.stex
  5. BIN
      2d/screen_space_shaders/.import/forest.jpg-f2ce28f12b0871a15d1e9ebfcd24b47f.stex
  6. BIN
      2d/screen_space_shaders/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex
  7. BIN
      2d/screen_space_shaders/.import/mountains.jpg-fd51eb0e2a35878963804e860ef9d187.stex
  8. BIN
      2d/screen_space_shaders/.import/platformer.jpg-ce18350247a11c58497c7e0d8e3be273.stex
  9. BIN
      2d/screen_space_shaders/.import/vignette.png-993dbe0a69e475ef62cba692d80d947d.etc2.stex
  10. BIN
      2d/screen_space_shaders/.import/vignette.png-993dbe0a69e475ef62cba692d80d947d.s3tc.stex
  11. BIN
      2d/screen_space_shaders/.import/vignette.png-993dbe0a69e475ef62cba692d80d947d.stex
  12. BIN
      2d/screen_space_shaders/.import/white.png-9cdc9524282ba2bce69b45edcd6ac827.stex
  13. 0 0
      2d/screen_space_shaders/art/burano.jpg
  14. 23 0
      2d/screen_space_shaders/art/burano.jpg.import
  15. 0 0
      2d/screen_space_shaders/art/filmgrain.png
  16. 24 0
      2d/screen_space_shaders/art/filmgrain.png.import
  17. 0 0
      2d/screen_space_shaders/art/forest.jpg
  18. 23 0
      2d/screen_space_shaders/art/forest.jpg.import
  19. 0 0
      2d/screen_space_shaders/art/mountains.jpg
  20. 23 0
      2d/screen_space_shaders/art/mountains.jpg.import
  21. 0 0
      2d/screen_space_shaders/art/platformer.jpg
  22. 23 0
      2d/screen_space_shaders/art/platformer.jpg.import
  23. 0 0
      2d/screen_space_shaders/art/vignette.png
  24. 24 0
      2d/screen_space_shaders/art/vignette.png.import
  25. 0 0
      2d/screen_space_shaders/art/white.png
  26. 23 0
      2d/screen_space_shaders/art/white.png.import
  27. 0 0
      2d/screen_space_shaders/icon.png
  28. 23 0
      2d/screen_space_shaders/icon.png.import
  29. 13 0
      2d/screen_space_shaders/project.godot
  30. 0 0
      2d/screen_space_shaders/screen_shaders.gd
  31. 570 0
      2d/screen_space_shaders/screen_shaders.tscn
  32. 569 0
      2d/screen_space_shaders/screen_shaders.tscn~
  33. 0 1
      old/2d/screen_space_shaders/art/filmgrain.png.flags
  34. 0 12
      old/2d/screen_space_shaders/engine.cfg
  35. 0 512
      old/2d/screen_space_shaders/screen_shaders.tscn

BIN
2d/screen_space_shaders/.import/burano.jpg-bbae3c5a81f8b6300cd944219dbbbc05.stex


BIN
2d/screen_space_shaders/.import/filmgrain.png-8b1c9d8b22a2ffa8f94b1e004d5eddc9.etc2.stex


BIN
2d/screen_space_shaders/.import/filmgrain.png-8b1c9d8b22a2ffa8f94b1e004d5eddc9.s3tc.stex


BIN
2d/screen_space_shaders/.import/filmgrain.png-8b1c9d8b22a2ffa8f94b1e004d5eddc9.stex


BIN
2d/screen_space_shaders/.import/forest.jpg-f2ce28f12b0871a15d1e9ebfcd24b47f.stex


BIN
2d/screen_space_shaders/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex


BIN
2d/screen_space_shaders/.import/mountains.jpg-fd51eb0e2a35878963804e860ef9d187.stex


BIN
2d/screen_space_shaders/.import/platformer.jpg-ce18350247a11c58497c7e0d8e3be273.stex


BIN
2d/screen_space_shaders/.import/vignette.png-993dbe0a69e475ef62cba692d80d947d.etc2.stex


BIN
2d/screen_space_shaders/.import/vignette.png-993dbe0a69e475ef62cba692d80d947d.s3tc.stex


BIN
2d/screen_space_shaders/.import/vignette.png-993dbe0a69e475ef62cba692d80d947d.stex


BIN
2d/screen_space_shaders/.import/white.png-9cdc9524282ba2bce69b45edcd6ac827.stex


+ 0 - 0
old/2d/screen_space_shaders/art/burano.jpg → 2d/screen_space_shaders/art/burano.jpg


+ 23 - 0
2d/screen_space_shaders/art/burano.jpg.import

@@ -0,0 +1,23 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/burano.jpg-bbae3c5a81f8b6300cd944219dbbbc05.stex"
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=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
+stream=false
+size_limit=0
+detect_3d=true

+ 0 - 0
old/2d/screen_space_shaders/art/filmgrain.png → 2d/screen_space_shaders/art/filmgrain.png


+ 24 - 0
2d/screen_space_shaders/art/filmgrain.png.import

@@ -0,0 +1,24 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path.s3tc="res://.import/filmgrain.png-8b1c9d8b22a2ffa8f94b1e004d5eddc9.s3tc.stex"
+path.etc2="res://.import/filmgrain.png-8b1c9d8b22a2ffa8f94b1e004d5eddc9.etc2.stex"
+
+[params]
+
+compress/mode=2
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/normal_map=0
+flags/repeat=true
+flags/filter=true
+flags/mipmaps=true
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+stream=false
+size_limit=0
+detect_3d=false

+ 0 - 0
old/2d/screen_space_shaders/art/forest.jpg → 2d/screen_space_shaders/art/forest.jpg


+ 23 - 0
2d/screen_space_shaders/art/forest.jpg.import

@@ -0,0 +1,23 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/forest.jpg-f2ce28f12b0871a15d1e9ebfcd24b47f.stex"
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=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
+stream=false
+size_limit=0
+detect_3d=true

+ 0 - 0
old/2d/screen_space_shaders/art/mountains.jpg → 2d/screen_space_shaders/art/mountains.jpg


+ 23 - 0
2d/screen_space_shaders/art/mountains.jpg.import

@@ -0,0 +1,23 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/mountains.jpg-fd51eb0e2a35878963804e860ef9d187.stex"
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=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
+stream=false
+size_limit=0
+detect_3d=true

+ 0 - 0
old/2d/screen_space_shaders/art/platformer.jpg → 2d/screen_space_shaders/art/platformer.jpg


+ 23 - 0
2d/screen_space_shaders/art/platformer.jpg.import

@@ -0,0 +1,23 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/platformer.jpg-ce18350247a11c58497c7e0d8e3be273.stex"
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=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
+stream=false
+size_limit=0
+detect_3d=true

+ 0 - 0
old/2d/screen_space_shaders/art/vignette.png → 2d/screen_space_shaders/art/vignette.png


+ 24 - 0
2d/screen_space_shaders/art/vignette.png.import

@@ -0,0 +1,24 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path.s3tc="res://.import/vignette.png-993dbe0a69e475ef62cba692d80d947d.s3tc.stex"
+path.etc2="res://.import/vignette.png-993dbe0a69e475ef62cba692d80d947d.etc2.stex"
+
+[params]
+
+compress/mode=2
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/normal_map=0
+flags/repeat=true
+flags/filter=true
+flags/mipmaps=true
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+stream=false
+size_limit=0
+detect_3d=false

+ 0 - 0
old/2d/screen_space_shaders/art/white.png → 2d/screen_space_shaders/art/white.png


+ 23 - 0
2d/screen_space_shaders/art/white.png.import

@@ -0,0 +1,23 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/white.png-9cdc9524282ba2bce69b45edcd6ac827.stex"
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=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
+stream=false
+size_limit=0
+detect_3d=true

+ 0 - 0
old/2d/screen_space_shaders/icon.png → 2d/screen_space_shaders/icon.png


+ 23 - 0
2d/screen_space_shaders/icon.png.import

@@ -0,0 +1,23 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=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
+stream=false
+size_limit=0
+detect_3d=true

+ 13 - 0
2d/screen_space_shaders/project.godot

@@ -0,0 +1,13 @@
+[application]
+
+icon = "res://icon.png"
+main_scene = "res://screen_shaders.tscn"
+name = "Screen-Space Shaders"
+
+[display]
+
+stretch/aspect = "keep"
+stretch/mode = "2d"
+window/height = 600
+window/width = 800
+

+ 0 - 0
old/2d/screen_space_shaders/screen_shaders.gd → 2d/screen_space_shaders/screen_shaders.gd


+ 570 - 0
2d/screen_space_shaders/screen_shaders.tscn

@@ -0,0 +1,570 @@
+[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/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/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/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/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/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/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/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/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/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/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/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"]
+
+

+ 569 - 0
2d/screen_space_shaders/screen_shaders.tscn~

@@ -0,0 +1,569 @@
+[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/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/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/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/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/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/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/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/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/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/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/shader = SubResource( 21 )
+shader_param/base = Color( 0.450274, 0.361255, 0.335059, 1 )
+shader_param/grain_strength = null
+shader_param/fps = null
+shader_param/stretch = null
+shader_param/flashing = null
+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"]
+
+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"]
+
+

+ 0 - 1
old/2d/screen_space_shaders/art/filmgrain.png.flags

@@ -1 +0,0 @@
-repeat=true

+ 0 - 12
old/2d/screen_space_shaders/engine.cfg

@@ -1,12 +0,0 @@
-[application]
-
-name="Screen-Space Shaders"
-main_scene="res://screen_shaders.tscn"
-icon="res://icon.png"
-
-[display]
-
-width=800
-height=600
-stretch_mode="2d"
-stretch_aspect="keep"

+ 0 - 512
old/2d/screen_space_shaders/screen_shaders.tscn

@@ -1,512 +0,0 @@
-[gd_scene load_steps=34 format=1]
-
-[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="CanvasItemShader" id=1]
-
-_code = { "fragment":"uniform texture vignette;\n\nCOLOR.rgb = texscreen(SCREEN_UV);\nCOLOR.rgb*= tex(vignette,UV).rgb;\n\n", "fragment_ofs":0, "light":"", "light_ofs":0, "vertex":"", "vertex_ofs":0 }
-
-[sub_resource type="CanvasItemMaterial" id=2]
-
-shader/shader = SubResource( 1 )
-shader/shading_mode = 0
-shader_param/vignette = ExtResource( 6 )
-
-[sub_resource type="CanvasItemShader" id=3]
-
-_code = { "fragment":"uniform texture vignette;\nfloat radius = 0.003;\nvec3 col = vec3(0);\n\ncol+= texscreen(SCREEN_UV+vec2(-radius,-radius));\ncol+= texscreen(SCREEN_UV+vec2(0,-radius));\ncol+= texscreen(SCREEN_UV+vec2(radius,-radius));\n\ncol+= texscreen(SCREEN_UV+vec2(-radius,0));\ncol+= texscreen(SCREEN_UV+vec2(0,0));\ncol+= texscreen(SCREEN_UV+vec2(radius,0));\n\n\ncol+= texscreen(SCREEN_UV+vec2(-radius,radius));\ncol+= texscreen(SCREEN_UV+vec2(0,radius));\ncol+= texscreen(SCREEN_UV+vec2(radius,radius));\n\ncol/=9.0;\nCOLOR.rgb=col;\n\n", "fragment_ofs":0, "light":"", "light_ofs":0, "vertex":"", "vertex_ofs":0 }
-
-[sub_resource type="CanvasItemMaterial" id=4]
-
-shader/shader = SubResource( 3 )
-shader/shading_mode = 0
-shader_param/vignette = ExtResource( 6 )
-
-[sub_resource type="CanvasItemShader" id=5]
-
-_code = { "fragment":"uniform texture vignette;\nuniform float radius=0.005;\nuniform float etching=2.0;\nuniform float edge_darken=0.5;\n\nfloat d = length(UV-vec2(0.5,0.5))*etching;\nmat2 rot = mat2( vec2(cos(d),-sin(d)), vec2(sin(d),cos(d)) );\n\nvec3 col = vec3(0);\n\ncol+= texscreen(SCREEN_UV+rot*vec2(-radius,-radius));\ncol+= texscreen(SCREEN_UV+rot*vec2(0,-radius));\ncol+= texscreen(SCREEN_UV+rot*vec2(radius,-radius));\n\ncol+= texscreen(SCREEN_UV+rot*vec2(-radius,0));\nvec3 scol = texscreen(SCREEN_UV+vec2(0,0));\ncol+= scol;\ncol+= texscreen(SCREEN_UV+rot*vec2(radius,0));\n\n\ncol+= texscreen(SCREEN_UV+rot*vec2(-radius,radius));\ncol+= texscreen(SCREEN_UV+rot*vec2(0,radius));\ncol+= texscreen(SCREEN_UV+vec2(radius,radius));\n\ncol/=9.0;\nfloat v = tex(vignette,UV).r;\nCOLOR.rgb=mix(col,scol,v)*mix(1.0,v,edge_darken);\n\n", "fragment_ofs":0, "light":"", "light_ofs":0, "vertex":"", "vertex_ofs":0 }
-
-[sub_resource type="CanvasItemMaterial" id=6]
-
-shader/shader = SubResource( 5 )
-shader/shading_mode = 0
-shader_param/vignette = ExtResource( 6 )
-shader_param/radius = 0.005
-shader_param/etching = 2.0
-shader_param/edge_darken = 0.5
-
-[sub_resource type="CanvasItemMaterial" id=7]
-
-shader/shader = SubResource( 5 )
-shader/shading_mode = 0
-shader_param/vignette = ExtResource( 6 )
-shader_param/radius = 0.02
-shader_param/etching = 100.0
-shader_param/edge_darken = -0.5
-
-[sub_resource type="CanvasItemShader" id=8]
-
-_code = { "fragment":"uniform float size_x=0.008;\nuniform float size_y=0.008;\n\nvec2 uv = SCREEN_UV;\nuv-=mod(uv,vec2(size_x,size_y));\n\nCOLOR.rgb= texscreen(uv);\n", "fragment_ofs":0, "light":"", "light_ofs":0, "vertex":"", "vertex_ofs":0 }
-
-[sub_resource type="CanvasItemMaterial" id=9]
-
-shader/shader = SubResource( 8 )
-shader/shading_mode = 0
-shader_param/size_x = 0.01
-shader_param/size_y = 0.01
-
-[sub_resource type="CanvasItemShader" id=10]
-
-_code = { "fragment":"uniform float rotation=3.0;\n\nvec2 uv = SCREEN_UV;\nvec2 rel = uv-vec2(0.5,0.5);\nfloat angle = length(rel)*rotation;\nmat2 rot = mat2(vec2(cos(angle),-sin(angle)),vec2(sin(angle),cos(angle)));\nrel = rot * rel;\nuv = clamp(rel + vec2(0.5,0.5),vec2(0,0),vec2(1,1));\nCOLOR.rgb= texscreen(uv);\n", "fragment_ofs":0, "light":"", "light_ofs":0, "vertex":"", "vertex_ofs":0 }
-
-[sub_resource type="CanvasItemMaterial" id=11]
-
-shader/shader = SubResource( 10 )
-shader/shading_mode = 0
-shader_param/rotation = 3.0
-
-[sub_resource type="CanvasItemShader" id=12]
-
-_code = { "fragment":"uniform color base=color(0.75,0.6,0.6,1.0);\nvec3 c = texscreen(SCREEN_UV);\n\n//float v = max(c.r,max(c.g,c.b));\nfloat v = dot(c,vec3(0.33333,0.33333,0.33333));\nv=sqrt(v);\n//v*=v;\nCOLOR.rgb= base.rgb*v;\n", "fragment_ofs":0, "light":"", "light_ofs":0, "vertex":"", "vertex_ofs":0 }
-
-[sub_resource type="CanvasItemMaterial" id=13]
-
-shader/shader = SubResource( 12 )
-shader/shading_mode = 0
-shader_param/base = Color( 0.75, 0.566284, 0.6, 1 )
-
-[sub_resource type="CanvasItemShader" id=14]
-
-_code = { "fragment":"vec3 c = texscreen(SCREEN_UV);\nc=vec3(1.0)-c;\nCOLOR.rgb=c;\n", "fragment_ofs":0, "light":"", "light_ofs":0, "vertex":"", "vertex_ofs":0 }
-
-[sub_resource type="CanvasItemMaterial" id=15]
-
-shader/shader = SubResource( 14 )
-shader/shading_mode = 0
-
-[sub_resource type="CanvasItemShader" id=16]
-
-_code = { "fragment":"vec3 c = texscreen(SCREEN_UV);\nc=mod(c+vec3(0.5),vec3(1.0));\nCOLOR.rgb=c;\n", "fragment_ofs":0, "light":"", "light_ofs":0, "vertex":"", "vertex_ofs":0 }
-
-[sub_resource type="CanvasItemMaterial" id=17]
-
-shader/shader = SubResource( 16 )
-shader/shading_mode = 0
-
-[sub_resource type="CanvasItemShader" id=18]
-
-_code = { "fragment":"vec3 c = texscreen(SCREEN_UV);\nCOLOR.rgb=normalize(c);\n", "fragment_ofs":0, "light":"", "light_ofs":0, "vertex":"", "vertex_ofs":0 }
-
-[sub_resource type="CanvasItemMaterial" id=19]
-
-shader/shader = SubResource( 18 )
-shader/shading_mode = 0
-
-[sub_resource type="CanvasItemShader" id=20]
-
-_code = { "fragment":"uniform float brightness=0.8;\nuniform float contrast=1.5;\nuniform float saturation=1.8;\n\nvec3 c = texscreen(SCREEN_UV);\n\nc.rgb = mix(vec3(0.0),c.rgb,brightness);\nc.rgb = mix(vec3(0.5),c.rgb,contrast);\nc.rgb = mix(vec3(dot(vec3(1.0),c.rgb)*0.33333),c.rgb,saturation);\n\nCOLOR.rgb=c;\n", "fragment_ofs":0, "light":"", "light_ofs":0, "vertex":"", "vertex_ofs":0 }
-
-[sub_resource type="CanvasItemMaterial" id=21]
-
-shader/shader = SubResource( 20 )
-shader/shading_mode = 0
-shader_param/brightness = 0.8
-shader_param/contrast = 1.5
-shader_param/saturation = 1.8
-
-[sub_resource type="CanvasItemShader" id=22]
-
-_code = { "fragment":"uniform float frequency=60;\nuniform float depth = 0.005;\n\nvec2 uv = SCREEN_UV;\nuv.x += sin(uv.y*frequency+TIME)*depth;\nuv.x = clamp(uv.x,0,1);\nvec3 c = texscreen(uv);\n\n\nCOLOR.rgb=c;\n", "fragment_ofs":0, "light":"", "light_ofs":0, "vertex":"", "vertex_ofs":0 }
-
-[sub_resource type="CanvasItemMaterial" id=23]
-
-shader/shader = SubResource( 22 )
-shader/shading_mode = 0
-shader_param/frequency = 60.0
-shader_param/depth = 0.005
-
-[sub_resource type="CanvasItemShader" id=24]
-
-_code = { "fragment":"uniform color base=color(0.75,0.6,0.6,1.0);\nuniform texture grain;\nuniform float grain_strength=0.3;\nuniform texture vignette;\nuniform float fps=12;\nuniform float stretch = 0.5;\nuniform float flashing=0.01;\n\nvec3 c = texscreen(SCREEN_UV);\n\n//float v = max(c.r,max(c.g,c.b));\nfloat v = dot(c,vec3(0.33333,0.33333,0.33333));\nv=sqrt(v);\n//v*=v;\nfloat make_grain(float time) {\n\n\tvec2 ofs = vec2(sin(41*time*sin(time*123)),sin(27*time*sin(time*312)));\n\treturn tex(grain,(UV+mod(ofs,vec2(1,1)))*stretch).r;\n}\n\nfloat f = 1.0/fps;\nfloat g = make_grain(TIME-mod(TIME,f));\ng=max(g,make_grain(TIME-mod(TIME,f)+f)*0.5);\ng=max(g,make_grain(TIME-mod(TIME,f)+f*2.0)*0.25);\n\n\nCOLOR.rgb= base.rgb*v-vec3(g)*grain_strength;\nCOLOR.rgb*=tex(vignette,UV).r;\nfloat ft = TIME * 0.002;\nCOLOR.rgb+=vec3(sin(75*ft*sin(ft*123)))*flashing;\n", "fragment_ofs":0, "light":"", "light_ofs":0, "vertex":"", "vertex_ofs":0 }
-
-[sub_resource type="CanvasItemMaterial" id=25]
-
-shader/shader = SubResource( 24 )
-shader/shading_mode = 0
-shader_param/base = Color( 0.75, 0.566284, 0.6, 1 )
-shader_param/grain = ExtResource( 8 )
-shader_param/grain_strength = 0.3
-shader_param/vignette = ExtResource( 6 )
-shader_param/fps = 12.0
-shader_param/stretch = 0.5
-shader_param/flashing = 0.01
-
-[node name="Control" type="Control"]
-
-anchor/right = 1
-anchor/bottom = 1
-focus/ignore_mouse = false
-focus/stop_mouse = true
-size_flags/horizontal = 2
-size_flags/vertical = 2
-margin/left = 0.0
-margin/top = 0.0
-margin/right = 0.0
-margin/bottom = 0.0
-script/script = ExtResource( 1 )
-
-[node name="pictures" type="Control" parent="."]
-
-anchor/right = 1
-anchor/bottom = 1
-focus/ignore_mouse = false
-focus/stop_mouse = true
-size_flags/horizontal = 2
-size_flags/vertical = 2
-margin/left = 0.0
-margin/top = 0.0
-margin/right = 0.0
-margin/bottom = 0.0
-
-[node name="burano" type="TextureFrame" parent="pictures"]
-
-focus/ignore_mouse = true
-focus/stop_mouse = true
-size_flags/horizontal = 2
-size_flags/vertical = 2
-margin/left = 0.0
-margin/top = 0.0
-margin/right = 40.0
-margin/bottom = 40.0
-texture = ExtResource( 2 )
-
-[node name="roby" type="TextureFrame" parent="pictures"]
-
-visibility/visible = false
-focus/ignore_mouse = true
-focus/stop_mouse = true
-size_flags/horizontal = 2
-size_flags/vertical = 2
-margin/left = 0.0
-margin/top = 0.0
-margin/right = 40.0
-margin/bottom = 40.0
-texture = ExtResource( 3 )
-
-[node name="mountains" type="TextureFrame" parent="pictures"]
-
-visibility/visible = false
-focus/ignore_mouse = true
-focus/stop_mouse = true
-size_flags/horizontal = 2
-size_flags/vertical = 2
-margin/left = 0.0
-margin/top = 0.0
-margin/right = 40.0
-margin/bottom = 40.0
-texture = ExtResource( 4 )
-
-[node name="forest" type="TextureFrame" parent="pictures"]
-
-visibility/visible = false
-focus/ignore_mouse = true
-focus/stop_mouse = true
-size_flags/horizontal = 2
-size_flags/vertical = 2
-margin/left = 0.0
-margin/top = 0.0
-margin/right = 40.0
-margin/bottom = 40.0
-texture = ExtResource( 5 )
-
-[node name="effects" type="Control" parent="."]
-
-anchor/right = 1
-anchor/bottom = 1
-focus/ignore_mouse = false
-focus/stop_mouse = true
-size_flags/horizontal = 2
-size_flags/vertical = 2
-margin/left = 0.0
-margin/top = 0.0
-margin/right = -20.0
-margin/bottom = 0.0
-
-[node name="disabled" type="Control" parent="effects"]
-
-focus/ignore_mouse = false
-focus/stop_mouse = true
-size_flags/horizontal = 2
-size_flags/vertical = 2
-margin/left = 0.0
-margin/top = 0.0
-margin/right = 40.0
-margin/bottom = 40.0
-
-[node name="vignette" type="TextureFrame" parent="effects"]
-
-visibility/visible = false
-material/material = SubResource( 2 )
-anchor/right = 1
-anchor/bottom = 1
-focus/ignore_mouse = true
-focus/stop_mouse = true
-size_flags/horizontal = 2
-size_flags/vertical = 2
-margin/left = 0.0
-margin/top = 0.0
-margin/right = 0.0
-margin/bottom = 0.0
-texture = ExtResource( 7 )
-expand = true
-
-[node name="blur" type="TextureFrame" parent="effects"]
-
-visibility/visible = false
-material/material = SubResource( 4 )
-anchor/right = 1
-anchor/bottom = 1
-focus/ignore_mouse = true
-focus/stop_mouse = true
-size_flags/horizontal = 2
-size_flags/vertical = 2
-margin/left = 0.0
-margin/top = 0.0
-margin/right = 0.0
-margin/bottom = 0.0
-texture = ExtResource( 7 )
-expand = true
-
-[node name="radial_blur" type="TextureFrame" parent="effects"]
-
-visibility/visible = false
-material/material = SubResource( 6 )
-anchor/right = 1
-anchor/bottom = 1
-focus/ignore_mouse = true
-focus/stop_mouse = true
-size_flags/horizontal = 2
-size_flags/vertical = 2
-margin/left = -1.0
-margin/top = 0.0
-margin/right = 1.0
-margin/bottom = 0.0
-texture = ExtResource( 7 )
-expand = true
-
-[node name="radial_etch" type="TextureFrame" parent="effects"]
-
-visibility/visible = false
-material/material = SubResource( 7 )
-anchor/right = 1
-anchor/bottom = 1
-focus/ignore_mouse = true
-focus/stop_mouse = true
-size_flags/horizontal = 2
-size_flags/vertical = 2
-margin/left = -1.0
-margin/top = 0.0
-margin/right = 1.0
-margin/bottom = 0.0
-texture = ExtResource( 7 )
-expand = true
-
-[node name="pixelize" type="TextureFrame" parent="effects"]
-
-visibility/visible = false
-material/material = SubResource( 9 )
-anchor/right = 1
-anchor/bottom = 1
-focus/ignore_mouse = true
-focus/stop_mouse = true
-size_flags/horizontal = 2
-size_flags/vertical = 2
-margin/left = 0.0
-margin/top = 0.0
-margin/right = 0.0
-margin/bottom = 0.0
-texture = ExtResource( 7 )
-expand = true
-
-[node name="whirl" type="TextureFrame" parent="effects"]
-
-visibility/visible = false
-material/material = SubResource( 11 )
-anchor/right = 1
-anchor/bottom = 1
-focus/ignore_mouse = true
-focus/stop_mouse = true
-size_flags/horizontal = 2
-size_flags/vertical = 2
-margin/left = 0.0
-margin/top = 0.0
-margin/right = 0.0
-margin/bottom = 0.0
-texture = ExtResource( 7 )
-expand = true
-
-[node name="sepia" type="TextureFrame" parent="effects"]
-
-visibility/visible = false
-material/material = SubResource( 13 )
-anchor/right = 1
-anchor/bottom = 1
-focus/ignore_mouse = true
-focus/stop_mouse = true
-size_flags/horizontal = 2
-size_flags/vertical = 2
-margin/left = 0.0
-margin/top = 0.0
-margin/right = 0.0
-margin/bottom = 0.0
-texture = ExtResource( 7 )
-expand = true
-
-[node name="negative" type="TextureFrame" parent="effects"]
-
-visibility/visible = false
-material/material = SubResource( 15 )
-anchor/right = 1
-anchor/bottom = 1
-focus/ignore_mouse = true
-focus/stop_mouse = true
-size_flags/horizontal = 2
-size_flags/vertical = 2
-margin/left = 0.0
-margin/top = 0.0
-margin/right = 0.0
-margin/bottom = 0.0
-texture = ExtResource( 7 )
-expand = true
-
-[node name="contrasted" type="TextureFrame" parent="effects"]
-
-visibility/visible = false
-material/material = SubResource( 17 )
-anchor/right = 1
-anchor/bottom = 1
-focus/ignore_mouse = true
-focus/stop_mouse = true
-size_flags/horizontal = 2
-size_flags/vertical = 2
-margin/left = 0.0
-margin/top = 0.0
-margin/right = 0.0
-margin/bottom = 0.0
-texture = ExtResource( 7 )
-expand = true
-
-[node name="normalized" type="TextureFrame" parent="effects"]
-
-visibility/visible = false
-material/material = SubResource( 19 )
-anchor/right = 1
-anchor/bottom = 1
-focus/ignore_mouse = true
-focus/stop_mouse = true
-size_flags/horizontal = 2
-size_flags/vertical = 2
-margin/left = 0.0
-margin/top = 0.0
-margin/right = 0.0
-margin/bottom = 0.0
-texture = ExtResource( 7 )
-expand = true
-
-[node name="BCS" type="TextureFrame" parent="effects"]
-
-visibility/visible = false
-material/material = SubResource( 21 )
-anchor/right = 1
-anchor/bottom = 1
-focus/ignore_mouse = true
-focus/stop_mouse = true
-size_flags/horizontal = 2
-size_flags/vertical = 2
-margin/left = 0.0
-margin/top = 3.0
-margin/right = 0.0
-margin/bottom = -3.0
-texture = ExtResource( 7 )
-expand = true
-
-[node name="mirage" type="TextureFrame" parent="effects"]
-
-visibility/visible = false
-material/material = SubResource( 23 )
-anchor/right = 1
-anchor/bottom = 1
-focus/ignore_mouse = true
-focus/stop_mouse = true
-size_flags/horizontal = 2
-size_flags/vertical = 2
-margin/left = 0.0
-margin/top = 0.0
-margin/right = 0.0
-margin/bottom = 0.0
-texture = ExtResource( 7 )
-expand = true
-
-[node name="old_film" type="TextureFrame" parent="effects"]
-
-visibility/visible = false
-material/material = SubResource( 25 )
-anchor/right = 1
-anchor/bottom = 1
-focus/ignore_mouse = true
-focus/stop_mouse = true
-size_flags/horizontal = 2
-size_flags/vertical = 2
-margin/left = -3.0
-margin/top = 0.0
-margin/right = 3.0
-margin/bottom = 0.0
-texture = ExtResource( 7 )
-expand = true
-
-[node name="picture" type="OptionButton" parent="."]
-
-visibility/opacity = 0.8
-focus/ignore_mouse = false
-focus/stop_mouse = true
-size_flags/horizontal = 2
-size_flags/vertical = 2
-margin/left = 8.0
-margin/top = 7.0
-margin/right = 131.0
-margin/bottom = 28.0
-toggle_mode = false
-flat = false
-align = 0
-selected = -1
-items = [  ]
-
-[node name="effect" type="OptionButton" parent="."]
-
-visibility/opacity = 0.8
-focus/ignore_mouse = false
-focus/stop_mouse = true
-size_flags/horizontal = 2
-size_flags/vertical = 2
-margin/left = 137.0
-margin/top = 7.0
-margin/right = 260.0
-margin/bottom = 28.0
-toggle_mode = false
-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"]
-
-