A library of chainable post-processing shaders for the LÖVE 2D game framework.
Moonshine is a Lua library for the LÖVE 2D game framework that provides a modular system for applying post-processing shader effects. It solves the problem of implementing complex visual enhancements like blurs, glows, and distortions by offering a collection of pre-built, chainable effects that can be easily integrated into a game's render pipeline.
LÖVE game developers, especially those creating 2D games who want to add advanced visual effects like bloom, pixelation, or retro CRT styling without deep shader programming knowledge.
Developers choose Moonshine because it dramatically reduces the time and expertise needed to implement professional-grade post-processing effects, offering a clean API for chaining and parameterizing effects while maintaining reasonable performance.
Postprocessing effect repository for LÖVE
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Includes 18 ready-to-use effects like Gaussian blur, CRT distortion, and glow, as listed in the README, covering common visual needs without writing shaders from scratch.
Effects can be easily combined in sequences using a clean API (e.g., chain() method), allowing complex visual pipelines with minimal code, as demonstrated in the general usage section.
Each effect exposes tunable parameters (e.g., strength, radius) that can be set dynamically via properties or a batch settings table, simplifying fine-tuning during development.
Effects can be enabled or disabled on the fly with disable() and enable() methods without removing them from the chain, useful for adaptive visuals or debugging.
The README admits it's not as efficient as custom shaders, introducing multiple render passes and canvas swaps that can impact framerates in resource-intensive games.
Moonshine is tightly coupled with LÖVE and its shader system, making it unsuitable for projects using other game engines or requiring cross-platform portability beyond LÖVE's ecosystem.
Writing new effects requires deep understanding of LÖVE's shader API and Moonshine's internal buffer management, which can be daunting for developers without graphics programming experience.