Palette Filter For 3D and 2D
To add Just create a canvas layer with a sprite then attach the shader into it. The gradient should be a horizontal gradient texture, you can download one from the internet or use the gradient texture from godot. P.S.: You can get the palletes from Lospec.com
Have fun! 🙂
Shader code
shader_type canvas_item;
uniform bool flip ;
uniform sampler2D gradient : hint_black; // It can be whatever palette you want
void fragment(){
vec4 col = texture(SCREEN_TEXTURE,SCREEN_UV);
float lum = dot(col.rgb,vec3(0.2126,0.7152,0.0722)); // luminance
col = texture(gradient,vec2(abs(float(flip) - lum),0));
COLOR = col;
}
This is pretty nice. The only thing I’d mention to anyone is that you need to put a texture (even the godot icon is fine) on the sprite and make it the size of your viewport to work. I figured it out pretty easily, but just in case someone else can’t.
Also having the flip parameter for palettes that have have the lighter colors on the left was very convenient.
hey! just letting you know, this shader is really neat and i’ve used it in a game of mine, if that’s ok! (it can be found here if you want to have a look)
Is it possible for this to be used on a ViewportContainer as a post-processing effect?
Had to change SCREEN_TEXTURE to TEXTURE, and SCREEN_UV to UV:
(Now mind you I have no idea what I’m doing, it just worked for me)
Also the flip feature is amazing
The only difference is your shader will change your sprite directly