netmasked/shaders/space.gdshader

30 lines
No EOL
1.2 KiB
Text

shader_type canvas_item;
// The color you want to replace (e.g., your #325512 background)
uniform vec4 key_color : source_color = vec4(0.196, 0.333, 0.071, 1.0);
// How close the color needs to be to match (0.01 to 0.1 is usually best)
uniform float sensitivity : hint_range(0.0, 1.0) = 0.05;
// Read the screen behind this shader
uniform sampler2D screen_texture : hint_screen_texture, repeat_disable, filter_nearest;
void fragment() {
// 1. Get the original color of the screen at this position
vec4 screen_color = texture(screen_texture, SCREEN_UV);
// 2. Calculate the difference between the screen pixel and our target color
// We use the distance formula in 3D space:
// d = sqrt((r1-r2)^2 + (g1-g2)^2 + (b1-b2)^2)
float diff = distance(screen_color.rgb, key_color.rgb);
if (diff <= sensitivity) {
// --- START YOUR EFFECT HERE ---
// Example: Making it pulse red
vec3 effect = screen_color.rgb + vec3(sin(TIME) * 0.5, 0.0, 0.0);
COLOR = vec4(effect, screen_color.a);
// --- END YOUR EFFECT HERE ---
} else {
// If it's NOT the target color, draw the screen exactly as it is
COLOR = screen_color;
}
}