Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Shader Pallet Swap Godot 4 (ColorRect)
- shader_type canvas_item;
- uniform vec4 color_white_like : source_color = vec4(0.820, 0.846, 0.705, 1.0); // tom mais claro (quase branco)
- uniform vec4 color_light : source_color = vec4(0.538, 0.559, 0.458, 1.0); // claro
- uniform vec4 color_mid : source_color = vec4(0.383, 0.403, 0.314, 1.0); // médio
- uniform vec4 color_dark : source_color = vec4(0.258, 0.272, 0.214, 1.0); // escuro
- uniform vec4 color_near_black: source_color = vec4(0.124, 0.125, 0.121, 1.0); // quase preto
- uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap;
- float min5(float a, float b, float c, float d, float e){
- return min(a, min(b, min(c, min(d, e))));
- }
- void fragment(){
- vec4 currentColor = texture(SCREEN_TEXTURE, SCREEN_UV);
- // Referência em tons de cinza (usamos 5 níveis de luminância como base)
- float d_white = distance(currentColor, vec4(vec3(1.0), 1.0)); // mais claro (branco)
- float d_light = distance(currentColor, vec4(vec3(0.75), 1.0)); // claro
- float d_mid = distance(currentColor, vec4(vec3(0.50), 1.0)); // médio
- float d_dark = distance(currentColor, vec4(vec3(0.25), 1.0)); // escuro
- float d_black = distance(currentColor, vec4(vec3(0.0), 1.0)); // preto
- float m = min5(d_white, d_light, d_mid, d_dark, d_black);
- if (m == d_white) COLOR = color_white_like;
- else if (m == d_light) COLOR = color_light;
- else if (m == d_mid) COLOR = color_mid;
- else if (m == d_dark) COLOR = color_dark;
- else COLOR = color_near_black;
- }
Advertisement
Add Comment
Please, Sign In to add comment