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;
}

Related shaders

Sobel with Gaussian filter

Earthbound-like battle background shader w/scroll effect and palette cycling

Palette Swap (no recolor / recolor)

The shader code and all code snippets in this post are under CC0 license and can be used freely without the author's permission. Images and videos, and assets depicted in those, do not fall under this license. For more info, see our License terms.
guest
2 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
HeroRobb
HeroRobb
5 months ago

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.

HeroRobb
HeroRobb
5 months ago
Reply to  HeroRobb

Also having the flip parameter for palettes that have have the lighter colors on the left was very convenient.