2025-12-15

TIL Shaders en Godot

Hoy aprendí a usar shaders en Godot.

Estoy trabajando en un juego donde el personaje puede cambiar de "plano" y cada plano tiene un color distinto. No me apetecía nada repintar cada sprite para cada color, así que pensé que podría dibujar el personaje siempre a color, y hacer el color mapping programáticalmente con un mapeo de colores hexadecimales definido en código.

TLDR, lo que hace es crear un png que contiene un pixel con cada color presente en el original, y otro por cada "target color" (blanco, negro, etc) con el color de reemplazo en el mismo pixel de la imagen. Así, lo único que tiene que hacer el shader es leer del mismo pixel en los dos png para saber qué color mappear a cuál.

demo gif