summaryrefslogtreecommitdiff
path: root/Assets
diff options
context:
space:
mode:
Diffstat (limited to 'Assets')
-rw-r--r--Assets/Shaders/crt_shader.gdshader127
-rw-r--r--Assets/Shaders/crt_shader.tres21
-rw-r--r--Assets/Styles/DefaultFlatPanel.tres2
-rw-r--r--Assets/Styles/DefaultInvertedFlatPanel.tres2
-rw-r--r--Assets/Themes/Default.tres4
5 files changed, 74 insertions, 82 deletions
diff --git a/Assets/Shaders/crt_shader.gdshader b/Assets/Shaders/crt_shader.gdshader
index 445472e..5c698a6 100644
--- a/Assets/Shaders/crt_shader.gdshader
+++ b/Assets/Shaders/crt_shader.gdshader
@@ -9,76 +9,75 @@ License: MIT https://github.com/hiulit/Godot-3-2D-CRT-Shader/blob/master/LICENSE
shader_type canvas_item;
-const float PI = 3.14159265359;
-uniform vec2 screen_size = vec2(320.0, 180.0);
-uniform bool show_curvature = true;
-uniform float curvature_x_amount : hint_range(3.0, 15.0, 0.01) = float(6.0);
-uniform float curvature_y_amount : hint_range(3.0, 15.0, 0.01) = float(4.0);
-uniform vec4 corner_color : hint_color = vec4(0.0, 0.0, 0.0, 1.0);
-uniform bool show_vignette = true;
+uniform bool chromatic_abberation_enabled = true;
+uniform float chromatic_abberation_amount : hint_range(0.0, 10.0, 0.01) = 4.0;
+
+uniform bool vignette_enabled = true;
uniform float vignette_opacity : hint_range(0.0, 1.0, 0.01) = 0.2;
-uniform bool show_horizontal_scan_lines = true;
-uniform float horizontal_scan_lines_amount : hint_range(0.0, 180.0, 0.1) = 180.0;
-uniform float horizontal_scan_lines_opacity : hint_range(0.0, 1.0, 0.01) = 1.0;
-uniform bool show_vertical_scan_lines = false;
-uniform float vertical_scan_lines_amount : hint_range(0.0, 320.0, 0.1) = 320.0;
-uniform float vertical_scan_lines_opacity : hint_range(0.0, 1.0, 0.01) = 1.0;
-uniform float boost : hint_range(1.0, 2.0, 0.01) = 1.2;
-uniform float aberration_amount : hint_range(0.0, 10.0, 0.01) = 0.0;
-
-vec2 uv_curve(vec2 uv) {
- if (show_curvature) {
- uv = uv * 2.0 - 1.0;
- vec2 offset = abs(uv.yx) / vec2(curvature_x_amount, curvature_y_amount);
- uv = uv + uv * offset * offset;
- uv = uv * 0.5 + 0.5;
- }
-
- return uv;
+
+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 float boost_intensity : hint_range(1.0, 2.0, 0.01) = 1.2;
+
+const float PI = 3.14159265359;
+
+/**
+ * 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 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;
}
+/**
+ * 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;
+}
void fragment() {
- vec2 uv = uv_curve(UV);
- vec2 screen_uv = uv_curve(SCREEN_UV);
- vec3 color = texture(SCREEN_TEXTURE, screen_uv).rgb;
-
- if (aberration_amount > 0.0) {
- float adjusted_amount = aberration_amount / screen_size.x;
- color.r = texture(SCREEN_TEXTURE, vec2(screen_uv.x + adjusted_amount, screen_uv.y)).r;
- color.g = texture(SCREEN_TEXTURE, screen_uv).g;
- color.b = texture(SCREEN_TEXTURE, vec2(screen_uv.x - adjusted_amount, screen_uv.y)).b;
- }
-
- if (show_vignette) {
- 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);
- color *= vignette;
- }
-
- if (show_horizontal_scan_lines) {
- float s = sin(screen_uv.y * horizontal_scan_lines_amount * PI * 2.0);
- s = (s * 0.5 + 0.5) * 0.9 + 0.1;
- vec4 scan_line = vec4(vec3(pow(s, horizontal_scan_lines_opacity)), 1.0);
- color *= scan_line.rgb;
- }
-
- if (show_vertical_scan_lines) {
- float s = sin(screen_uv.x * vertical_scan_lines_amount * PI * 2.0);
- s = (s * 0.5 + 0.5) * 0.9 + 0.1;
- vec4 scan_line = vec4(vec3(pow(s, vertical_scan_lines_opacity)), 1.0);
- color *= scan_line.rgb;
- }
-
- if (show_horizontal_scan_lines || show_vertical_scan_lines) {
- color *= boost;
- }
-
- // Fill the blank space of the corners, left by the curvature, with black.
- if (uv.x < 0.0 || uv.x > 1.0 || uv.y < 0.0 || uv.y > 1.0) {
- color = corner_color.rgb;
- }
+ vec3 color = texture(SCREEN_TEXTURE, SCREEN_UV).rgb;
+ vec2 screen_size = 1.0 / SCREEN_PIXEL_SIZE;
+
+ color = mix(
+ color,
+ chromatic_abberation(SCREEN_TEXTURE, SCREEN_UV, screen_size),
+ float(chromatic_abberation_enabled)
+ );
+
+ color = mix(
+ color,
+ vignette(color, SCREEN_UV, screen_size),
+ float(vignette_enabled)
+ );
+
+ color = mix(
+ color,
+ scan_lines(color, SCREEN_UV),
+ float(scan_lines_enabled)
+ );
COLOR = vec4(color, 1.0);
} \ No newline at end of file
diff --git a/Assets/Shaders/crt_shader.tres b/Assets/Shaders/crt_shader.tres
index 1612d82..cf5c247 100644
--- a/Assets/Shaders/crt_shader.tres
+++ b/Assets/Shaders/crt_shader.tres
@@ -4,18 +4,11 @@
[resource]
shader = ExtResource( 1 )
-shader_param/screen_size = Vector2( 640, 480 )
-shader_param/show_curvature = false
-shader_param/curvature_x_amount = 6.0
-shader_param/curvature_y_amount = 4.0
-shader_param/corner_color = Color( 0, 0, 0, 1 )
-shader_param/show_vignette = true
+shader_param/chromatic_abberation_enabled = true
+shader_param/chromatic_abberation_amount = 4.0
+shader_param/vignette_enabled = true
shader_param/vignette_opacity = 0.1
-shader_param/show_horizontal_scan_lines = true
-shader_param/horizontal_scan_lines_amount = 90.0
-shader_param/horizontal_scan_lines_opacity = 0.1
-shader_param/show_vertical_scan_lines = false
-shader_param/vertical_scan_lines_amount = 320.0
-shader_param/vertical_scan_lines_opacity = 1.0
-shader_param/boost = 1.25
-shader_param/aberration_amount = 1.5
+shader_param/scan_lines_enabled = true
+shader_param/scan_lines_count = 180.0
+shader_param/scan_lines_opacity = 1.0
+shader_param/boost_intensity = 1.3
diff --git a/Assets/Styles/DefaultFlatPanel.tres b/Assets/Styles/DefaultFlatPanel.tres
index 3186dbe..567307c 100644
--- a/Assets/Styles/DefaultFlatPanel.tres
+++ b/Assets/Styles/DefaultFlatPanel.tres
@@ -1,4 +1,4 @@
[gd_resource type="StyleBoxFlat" format=2]
[resource]
-bg_color = Color( 0, 0, 0, 1 )
+bg_color = Color( 0.1, 0.1, 0.1, 1 )
diff --git a/Assets/Styles/DefaultInvertedFlatPanel.tres b/Assets/Styles/DefaultInvertedFlatPanel.tres
index 16f668c..7c678fe 100644
--- a/Assets/Styles/DefaultInvertedFlatPanel.tres
+++ b/Assets/Styles/DefaultInvertedFlatPanel.tres
@@ -1,4 +1,4 @@
[gd_resource type="StyleBoxFlat" format=2]
[resource]
-bg_color = Color( 0, 0.956863, 0, 1 )
+bg_color = Color( 0.243137, 0.811765, 0.235294, 1 )
diff --git a/Assets/Themes/Default.tres b/Assets/Themes/Default.tres
index 32fc4b7..c56e746 100644
--- a/Assets/Themes/Default.tres
+++ b/Assets/Themes/Default.tres
@@ -19,7 +19,7 @@
InvertedLabel/colors/font_color = Color( 0, 0, 0, 1 )
InvertedPanelContainer/styles/panel = ExtResource( 1 )
InvertedRichTextLabel/colors/default_color = Color( 0, 0, 0, 1 )
-Label/colors/font_color = Color( 1, 1, 1, 1 )
+Label/colors/font_color = Color( 0.243137, 0.811765, 0.235294, 1 )
Label/styles/normal = SubResource( 3 )
LineEdit/colors/cursor_color = Color( 0, 0, 0, 1 )
LineEdit/colors/font_color = Color( 0, 0, 0, 1 )
@@ -28,6 +28,6 @@ LineEdit/styles/focus = SubResource( 7 )
LineEdit/styles/normal = SubResource( 1 )
LineEdit/styles/read_only = SubResource( 2 )
PanelContainer/styles/panel = ExtResource( 2 )
-RichTextLabel/colors/default_color = Color( 0, 0.956863, 0, 1 )
+RichTextLabel/colors/default_color = Color( 0.243137, 0.811765, 0.235294, 1 )
RichTextLabel/styles/focus = SubResource( 5 )
RichTextLabel/styles/normal = SubResource( 6 )