godot-demo-projects/2d/screen_space_shaders/screen_shaders.tscn

571 lines
12 KiB
Plaintext

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