diff options
author | Henrique Alves <henriquelalves@gmail.com> | 2022-07-26 13:01:56 -0300 |
---|---|---|
committer | Henrique Alves <henriquelalves@gmail.com> | 2022-07-26 13:01:56 -0300 |
commit | 0edaddac2193bb84de5b9bd915ac9264de6fe8e8 (patch) | |
tree | 7cb700c3ddb1027072ad6f0b9dc20f400f79892b /CRTShader.shader | |
parent | d9a49f12fc1dce1c2ea04c157bc5ef4bff5e3b2e (diff) | |
download | plugin-godot-simple-crt-shader-0edaddac2193bb84de5b9bd915ac9264de6fe8e8.tar.gz plugin-godot-simple-crt-shader-0edaddac2193bb84de5b9bd915ac9264de6fe8e8.tar.bz2 plugin-godot-simple-crt-shader-0edaddac2193bb84de5b9bd915ac9264de6fe8e8.zip |
created addon folder
Diffstat (limited to 'CRTShader.shader')
-rw-r--r-- | CRTShader.shader | 65 |
1 files changed, 0 insertions, 65 deletions
diff --git a/CRTShader.shader b/CRTShader.shader deleted file mode 100644 index d7e8afd..0000000 --- a/CRTShader.shader +++ /dev/null @@ -1,65 +0,0 @@ -shader_type canvas_item; - -uniform float screen_width = 1024; -uniform float screen_height = 600; - -// Curvature -uniform float BarrelPower =1.1; -// Color bleeding -uniform float color_bleeding = 1.2; -uniform float bleeding_range_x = 3; -uniform float bleeding_range_y = 3; -// Scanline -uniform float lines_distance = 4.0; -uniform float scan_size = 2.0; -uniform float scanline_alpha = 0.9; -uniform float lines_velocity = 30.0; - -vec2 distort(vec2 p) -{ - float angle = p.y / p.x; - float theta = atan(p.y,p.x); - float radius = pow(length(p), BarrelPower); - - p.x = radius * cos(theta); - p.y = radius * sin(theta); - - return 0.5 * (p + vec2(1.0,1.0)); -} - -void get_color_bleeding(inout vec4 current_color,inout vec4 color_left){ - current_color = current_color*vec4(color_bleeding,0.5,1.0-color_bleeding,1); - color_left = color_left*vec4(1.0-color_bleeding,0.5,color_bleeding,1); -} - -void get_color_scanline(vec2 uv,inout vec4 c,float time){ - float line_row = floor((uv.y * screen_height/scan_size) + mod(time*lines_velocity, lines_distance)); - float n = 1.0 - ceil((mod(line_row,lines_distance)/lines_distance)); - c = c - n*c*(1.0 - scanline_alpha); - c.a = 1.0; -} - -void fragment() -{ - vec2 xy = SCREEN_UV * 2.0; - xy.x -= 1.0; - xy.y -= 1.0; - - float d = length(xy); - if(d < 1.5){ - xy = distort(xy); - } - else{ - xy = SCREEN_UV; - } - - float pixel_size_x = 1.0/screen_width*bleeding_range_x; - float pixel_size_y = 1.0/screen_height*bleeding_range_y; - vec4 color_left = texture(SCREEN_TEXTURE,xy - vec2(pixel_size_x, pixel_size_y)); - vec4 current_color = texture(SCREEN_TEXTURE,xy); - get_color_bleeding(current_color,color_left); - vec4 c = current_color+color_left; - get_color_scanline(xy,c,TIME); - COLOR = c; - -} |