summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Assets/Shaders/Bloom.gdshader8
-rw-r--r--Assets/Shaders/Scanlines.gdshader16
-rw-r--r--Assets/Shaders/crt_shader.gdshader78
-rw-r--r--Assets/Shaders/crt_shader.tres17
-rw-r--r--Scenes/MonitorEffect.tscn31
5 files changed, 37 insertions, 113 deletions
diff --git a/Assets/Shaders/Bloom.gdshader b/Assets/Shaders/Bloom.gdshader
new file mode 100644
index 0000000..cf28bfb
--- /dev/null
+++ b/Assets/Shaders/Bloom.gdshader
@@ -0,0 +1,8 @@
+shader_type canvas_item;
+
+void fragment() {
+ vec4 color = texture(SCREEN_TEXTURE, SCREEN_UV);
+ vec2 uv = SCREEN_UV - 0.5;
+
+ COLOR = color;
+} \ No newline at end of file
diff --git a/Assets/Shaders/Scanlines.gdshader b/Assets/Shaders/Scanlines.gdshader
new file mode 100644
index 0000000..4ed746c
--- /dev/null
+++ b/Assets/Shaders/Scanlines.gdshader
@@ -0,0 +1,16 @@
+shader_type canvas_item;
+
+uniform float count: hint_range(240, 480, 2) = 320;
+uniform float opacity: hint_range(0.0, 1.0, 0.01) = 0.3;
+
+void fragment() {
+ vec3 color = texture(SCREEN_TEXTURE, SCREEN_UV).rgb;
+ vec2 uv = SCREEN_UV;
+
+ vec2 line = vec2(sin(uv.y * count), cos(uv.y * count));
+ vec3 scanlines = vec3(line.y, line.x, line.y);
+
+ color += color * scanlines * opacity;
+
+ COLOR = vec4(color, 1.0);
+} \ No newline at end of file
diff --git a/Assets/Shaders/crt_shader.gdshader b/Assets/Shaders/crt_shader.gdshader
deleted file mode 100644
index e91bcfd..0000000
--- a/Assets/Shaders/crt_shader.gdshader
+++ /dev/null
@@ -1,78 +0,0 @@
-shader_type canvas_item;
-
-uniform bool bloom_enabled = true;
-uniform float bloom_amount: hint_range(0.0, 0.5, 0.01) = 0.5;
-uniform float bloom_radius: hint_range(0.0, 10.0, 0.1) = 2.0;
-
-uniform bool chromatic_abberation_enabled = true;
-uniform float chromatic_abberation_amount : hint_range(0.0, 10.0, 0.01) = 4.0;
-
-uniform bool scan_lines_enabled = true;
-uniform float scan_lines_count : hint_range(0, 180, 1) = 180;
-uniform float scan_lines_opacity : hint_range(0.0, 1.0, 0.01) = 1.0;
-
-uniform bool vignette_enabled = true;
-uniform float vignette_opacity : hint_range(0.0, 1.0, 0.01) = 0.2;
-
-uniform float boost_intensity : hint_range(1.0, 2.0, 0.01) = 1.2;
-
-/**
- * Apply bloom.
- */
-vec3 bloom(sampler2D tex, vec2 uv, vec2 pixel_size)
-{
- vec3 glow0 = max(textureLod(tex, uv + vec2(-pixel_size.x, 0), bloom_radius).rgb - bloom_amount, vec3(0.0));
- vec3 glow1 = max(textureLod(tex, uv + vec2(pixel_size.x, 0), bloom_radius).rgb - bloom_amount, vec3(0.0));
- vec3 glow2 = max(textureLod(tex, uv + vec2(0, -pixel_size.y), bloom_radius).rgb - bloom_amount, vec3(0.0));
- vec3 glow3 = max(textureLod(tex, uv + vec2(0, pixel_size.y), bloom_radius).rgb - bloom_amount, vec3(0.0));
-
- return 0.25 * (glow0 + glow1 + glow2 + glow3);
-}
-
-/**
- * Apply chromatic abberation the the given texture.
- */
-vec3 chromatic_abberation(sampler2D tex, vec2 uv, vec2 screen_size) {
- float adjusted_amount = chromatic_abberation_amount / screen_size.x;
-
- vec3 color;
-
- color.r = texture(tex, vec2(clamp(uv.x + adjusted_amount, 0.0, 1.0), uv.y)).r;
- color.g = texture(tex, uv).g;
- color.b = texture(tex, vec2(clamp(uv.x - adjusted_amount, 0.0, 1.0), uv.y)).b;
-
- return color;
-}
-
-/**
- * Apply scan lines
- */
-vec3 scan_lines(vec3 color, vec2 uv) {
- float strength = clamp(sin(uv.y * scan_lines_count * PI * 2.0), 0.65, 0.85);
- vec3 scan_line = vec3(pow(strength, scan_lines_opacity));
- return color * scan_line * boost_intensity;
-}
-
-/**
- * Apply a vignette.
- */
-vec3 vignette(vec3 color, vec2 uv, vec2 screen_size) {
- float vignette = uv.x * uv.y * (1.0 - uv.x) * (1.0 - uv.y);
- vignette = clamp(pow((screen_size.x / 4.0) * vignette, vignette_opacity), 0.0, 1.0);
- return color * vignette;
-}
-
-void fragment() {
- vec3 color = texture(SCREEN_TEXTURE, SCREEN_UV).rgb;
- vec2 screen_size = 1.0 / SCREEN_PIXEL_SIZE;
-
- vec3 bloom_color = bloom(SCREEN_TEXTURE, SCREEN_UV, SCREEN_PIXEL_SIZE);
- vec3 scan_lines_color = scan_lines(color, SCREEN_UV);
-
- color = mix(color, chromatic_abberation(SCREEN_TEXTURE, SCREEN_UV, screen_size), float(chromatic_abberation_enabled));
- color = mix(color, bloom_color, 0.5 * float(bloom_enabled));
- color = color + scan_lines(color, SCREEN_UV) * float(scan_lines_enabled);
- color = color * vignette(color, SCREEN_UV, screen_size);
-
- COLOR = vec4(color, 1.0);
-}
diff --git a/Assets/Shaders/crt_shader.tres b/Assets/Shaders/crt_shader.tres
deleted file mode 100644
index 4a7bb37..0000000
--- a/Assets/Shaders/crt_shader.tres
+++ /dev/null
@@ -1,17 +0,0 @@
-[gd_resource type="ShaderMaterial" load_steps=2 format=2]
-
-[ext_resource path="res://Assets/Shaders/crt_shader.gdshader" type="Shader" id=1]
-
-[resource]
-shader = ExtResource( 1 )
-shader_param/bloom_enabled = true
-shader_param/bloom_amount = 0.5
-shader_param/bloom_radius = 2.0
-shader_param/chromatic_abberation_enabled = true
-shader_param/chromatic_abberation_amount = 4.0
-shader_param/scan_lines_enabled = true
-shader_param/scan_lines_count = 180.0
-shader_param/scan_lines_opacity = 1.0
-shader_param/vignette_enabled = true
-shader_param/vignette_opacity = 0.1
-shader_param/boost_intensity = 1.3
diff --git a/Scenes/MonitorEffect.tscn b/Scenes/MonitorEffect.tscn
index 3cd345e..8cd5968 100644
--- a/Scenes/MonitorEffect.tscn
+++ b/Scenes/MonitorEffect.tscn
@@ -1,28 +1,23 @@
[gd_scene load_steps=3 format=3 uid="uid://bgddsbe8r06bh"]
-[ext_resource type="Shader" path="res://Assets/Shaders/crt_shader.gdshader" id="1"]
+[ext_resource type="Shader" path="res://Assets/Shaders/Scanlines.gdshader" id="1_jndns"]
-[sub_resource type="ShaderMaterial" id="1"]
-shader = ExtResource("1")
-shader_parameter/bloom_amount = 0.3
-shader_parameter/bloom_enabled = true
-shader_parameter/bloom_radius = 2.0
-shader_parameter/boost_intensity = 1.3
-shader_parameter/chromatic_abberation_amount = 2.0
-shader_parameter/chromatic_abberation_enabled = true
-shader_parameter/scan_lines_count = 180.0
-shader_parameter/scan_lines_enabled = true
-shader_parameter/scan_lines_opacity = 0.85
-shader_parameter/vignette_enabled = true
-shader_parameter/vignette_opacity = 0.33
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_sx85s"]
+shader = ExtResource("1_jndns")
+shader_parameter/count = 480.0
+shader_parameter/opacity = 0.05
[node name="MonitorEffect" type="CanvasLayer"]
layer = 2
-[node name="ShaderRectangle" type="ColorRect" parent="."]
-material = SubResource("1")
-clip_contents = true
+[node name="Bloom" type="CanvasLayer" parent="."]
+
+[node name="Scanlines" type="CanvasLayer" parent="."]
+
+[node name="Effect" type="ColorRect" parent="Scanlines"]
+material = SubResource("ShaderMaterial_sx85s")
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
-mouse_filter = 2
+grow_horizontal = 2
+grow_vertical = 2