Skip to content

Stylized post-processing shaders for Godot 4. Modular FX for retro visuals, pixelation, dithering, and palette mapping.

License

Notifications You must be signed in to change notification settings

devkcud/VesperaFX

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

✨ VesperaFX - Modular Post-Processing Shader Suite

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.

Shader Demo

This demo gif is low-res for size reasons. The actual shader looks crisp and clean in-game.

Examples of shading

Unshaded

Shader Demo

2 Palette Black-White

Shader Demo

2 Palette Black-White + Sharpening

Shader Demo

2 Palette True Black-White with Level 4 Dithering

Shader Demo

2 Palette True Black-White with Level 4 Error Diff Dithering with Color Correction (Hue Shift)

Shader Demo

5 Palette with Default Params

Shader Demo

5 Palette Level 2 Dithering with Color Correction + Pixelation

Shader Demo

5 Palette Level 2 Dithering, RGB Matching and Color Correction + Pixelation

Shader Demo

5 Palette Level 2 Error Diff Dithering with Color Correction

Shader Demo

🎨 Features

  • ✅ 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.

📦 Implementation

  1. Clone or copy the shader files into your project. You'll find each effect in the include/ directory.
  2. Create a new .gdshader file in your project.
  3. Include the modules you want (or everything) using:
#include "res://path/to/include/dither.gdshaderinc"
#include "res://path/to/include/palette.gdshaderinc"
  1. Copy relevant logic from void fragment() in main.gdshader or build your own.

🧪 Usage Notes

  • 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.

⚙️ Files

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.

📜 License

This shader is released under the Mozilla Public License 2.0.

Credit is optional, but always appreciated.
Author: André Albanese Junior (@patomcio / @devkcud)

🧯 Support

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.

About

Stylized post-processing shaders for Godot 4. Modular FX for retro visuals, pixelation, dithering, and palette mapping.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages