mirror of
https://github.com/jcreek/CosmicClash.git
synced 2026-09-10 16:04:04 +00:00
28 lines
1019 B
Plaintext
28 lines
1019 B
Plaintext
shader_type canvas_item;
|
|
render_mode unshaded;
|
|
|
|
uniform sampler2D screen_texture : hint_screen_texture, filter_linear;
|
|
uniform float chromatic_aberration : hint_range(0.0, 0.02) = 0.0;
|
|
uniform float vignette_strength : hint_range(0.0, 1.0) = 0.22;
|
|
|
|
|
|
void fragment() {
|
|
vec2 radial = UV - vec2(0.5);
|
|
vec2 chroma = radial * chromatic_aberration;
|
|
vec4 center = texture(screen_texture, UV);
|
|
vec3 color = center.rgb;
|
|
// The branch is driven by one uniform for the whole draw, so non-turbo
|
|
// frames avoid two redundant screen taps without causing warp divergence.
|
|
if (chromatic_aberration > 0.0001) {
|
|
color.r = texture(screen_texture, UV + chroma).r;
|
|
color.b = texture(screen_texture, UV - chroma).b;
|
|
}
|
|
|
|
// Aspect-correct vignette, always subtle and tightened slightly on turbo.
|
|
vec2 aspect_radial = radial;
|
|
aspect_radial.x *= SCREEN_PIXEL_SIZE.y / SCREEN_PIXEL_SIZE.x;
|
|
float vignette = smoothstep(0.38, 0.78, length(aspect_radial));
|
|
color *= 1.0 - vignette * vignette_strength;
|
|
COLOR = vec4(color, 1.0);
|
|
}
|