Includes: Dithering, palette mapping, pixelation, sharpening, and color
correction.
Modular. Yankable. Yours to break.
VesperaFX is a modular, stylized post-processing shader for Godot 4.4.1,
featuring dithering, palette-based color mapping, pixelation, sharpening, and
flexible color adjustments.
Designed for retro visuals, game feel tweaking, and full control over your
post-FX pipeline.
This demo gif is low-res for size reasons. The actual shader looks crisp and clean in-game.
- ✅ Dithering (multiple modes)
- 🔄 Runtime-selectable dithering mode (via uniform toggle)
- ✅ Palette-based color mapping via luminance, brute-force RGB, or LUT
- ✅ Pixelation with custom grid size
- ✅ Sharpening (multiple kernels)
- ✅ Color adjustments: hue, saturation, contrast, gamma
- 🧱 Modular '.gshaderinc' files. Use only what you need.
- Clone or copy the shader files into your project. You'll find each effect in
the
include/
directory. - Create a new
.gdshader
file in your project. - Include the modules you want (or everything) using:
#include "res://path/to/include/dither.gdshaderinc"
#include "res://path/to/include/palette.gdshaderinc"
- Copy relevant logic from
void fragment()
inmain.gdshader
or build your own.
- RGB palette matching uses brute-force comparison per pixel. This is slow. Consider using precomputed LUT for better performance.
- Pixelation + Sharpening may cause artifacts. There's a flag
(
#define ALLOW_PIXELATION_SHARPEN_COMBO
) to allow it, but it's not recommended unless you really want it. - Effect order defaults to: Dither -> Palette Map. You can flip it by:
#define REVERSE_DITHER_PALETTE_MAPPING
. - You may also include
utils.gdshaderinc
for constants and shared helpers.
File | Purpose |
---|---|
dither.gdshaderinc |
Multiple dithering modes |
palette.gdshaderinc |
Palette mapping (RGB & luminance) |
pixelation.gdshaderinc |
Pixel grid reduction |
sharpening.gdshaderinc |
Sharpen filters (multiple kernels) |
rendering.gdshaderinc |
Hue/saturation/contrast/gamma |
utils.gdshaderinc |
Shared utility functions |
You can yank one or all. Everything is compartmentalized.
This shader is released under the Mozilla Public License 2.0.
Credit is optional, but always appreciated.
Author: André Albanese Junior (@patomcio / @devkcud)
This isn't a framework, it is a toolbox. If you want help with porting it to Unity or making a feature for it, let me know.