Lit
Drop-in 2D lighting for Godot 4 - with no light limit. (Docs)
Reviewing on the Asset Store is the best way to support Lit!
Lit is an alongside replacement for Godot's built-in 2D lights. It keeps the parts you like (add a node, set some values, done) and fixes the part you don't: the hard cap of ~15 lights per object. Light a whole scene with as many lights as you want, get real soft shadows, and stack on a pile of post-processing - all without leaving the node workflow.
Requires Godot 4.4+ on the Forward+ renderer. (Mobile/Compatibility aren't supported.)
Support
Lit is made and maintained by Fading Lantern Games. Questions, bugs, or just want to show off what you built? Come hang out in our Discord:
→ https://discord.gg/nfqeRGnM7P
Prefer videos? Subscribe on YouTube:
→ https://www.youtube.com/@FadingLanternGames
Quickstart (Lit Docs)
- Enable the plugin. Project → Project Settings → Plugins → turn on Lit. Reload the project if Godot asks.
- Make it dark. Add a
LitCanvasModulatenode to your scene and set its color to something dark. Your world is now in shadow, waiting to be lit. (Use this instead of Godot'sCanvasModulate, not alongside it.) - Let your art catch light. Either drop in a
LitSprite2D/LitTileMapLayer(ready to go), or select existingSprite2D/TileMapLayer/ other 2D nodes and run Project → Tools → Make Selected Nodes Lit. - Add a light. Drop a
LitPointLight2Dover your art and watch it light up. Tweak color, energy, and range to taste. - Want shadows? On the light, tick Shadow Enabled. Then give the world something to
block the light: add a
LightOccluder2Dto a sprite, or for tiles enable SDF Collision on your TileSet's occlusion layer. Lit receivers don't shadow themselves - their own occluder's shadow falls behind them (flip Self Shadow to opt back in). - Want a look? Add a
LitPostProcessnode, then hit Add Effect in its inspector to stack on bloom, color grade, CRT, or any of the other passes.
That's it - everything updates live in the editor as you build.
What you get
- Uncapped lights & shadows. No 15-light limit. Use as many as your scene needs.
- Three light types. Point, Directional (a sun), and Spot (a cone).
- Light textures (cookies). Drop a texture on a point or spot light to shape it - window panes, canopy dapple, blinds.
- Soft or hard shadows. One slider per light, from razor-sharp to feathery.
- Three shadow algorithms, per light. Cone Traced (the default: physically driven by a Source Radius, so penumbras widen with distance, umbras taper closed, and an antumbra re-brightens), Raymarched (fastest, stylized), and Stochastic (ground-truth area shadows, correct even where occluders share a penumbra).
- Normal maps & specular, free. Reads them straight from your
CanvasTexture- no wiring. - Blinn-Phong or PBR. Pick the lighting model in Project Settings → Lit; PBR adds optional metallic / roughness / AO inputs on the receiver material.
- Darkness & ambient. One
LitCanvasModulatenode sets the mood for the whole scene. - Light masks. Make a light affect only the things you want it to.
- Negative lights. Flip a light to subtract to carve pools of extra darkness.
- Works on any 2D node. Sprites, tilemaps, polygons - if it draws, it can be lit.
- Live in the editor. See your lighting while you build, no need to hit play.
- No shader stutter. Lit precompiles its lighting, shadow, and post shaders on first launch, so the hitches happen before your player starts playing. Boot screen, background worker, or your own loading flow - your call, in Project Settings → Lit.
- 20+ post-processing effects, stacked as nodes. Add a
LitPostProcess, then pick from its Add Effect menu: auto exposure (eye adaptation), threshold, bloom, halation, glitch, color grade, LUT presets, pixelate, posterize, edge outline, halftone, dither, letterbox, lens distortion, VHS, CRT, chromatic aberration, light leaks, film grain, vignette, and a focus/blur-to-sharpen dial. Each pass is a child node: reorder them to reorder the chain, hide one to switch it off. New Custom Effect... scaffolds your own.
The nodes
| Node | What it does |
|---|---|
LitPointLight2D |
A light that shines in all directions from a point. |
LitDirectionalLight2D |
A sun - parallel light across the whole scene. |
LitSpotLight2D |
A cone of light you can aim. |
LitCanvasModulate |
Sets the scene's darkness/ambient color. |
LitSprite2D |
A Sprite2D that's already set up to receive light. |
LitTileMapLayer |
A TileMapLayer that's already set up to receive light. |
LitPostProcess |
Hosts the post-processing chain; its children are the passes. |
LitPostEffect |
One post pass (bloom, grading, CRT, ...); the base class for your own. |
LitSplashScreen |
A drop-in branded splash (glitch-fade logo, skippable). |
Good to know
- A Lit-lit object is lit only by Lit; a normal object is lit only by Godot's built-in
Light2D. The two systems live side by side, so you can convert a project piece by piece. - For tilemaps to cast shadows, the TileSet's occlusion layer needs SDF Collision turned on (it's off by default).
Contributing
Lit is open source and we'd love the help. Found a bug, have an idea, or want to build out a feature? Open an issue or pull request on GitHub:
→ https://github.com/shawndeprey/lit
Want to talk an idea through first? The Discord is the quickest way to reach us.
License
Lit is free and open-source under the MIT License - use it in anything, commercial or
not, no credit required. See the LICENSE file for the details.
Changelog for version v1.1.2
No changelog provided for this version.
Reviews
Well made!
This addon is #lit
The documentation is the clearest ever in my life and the add-on is easy to use.
Really excited about this; especially because of the point light limit increase. Love the shaders too!
One of Godot's problems when it comes to 2D graphics is its weird lighting system (it's so strange that there's no Spot Light 2D like in Unity, there's a limit of 15 light sources, etc.). For me, the biggest headache is self-shadowing. And... this plugin solves that problem with a single checkbox. And of course, the fact that it removes the restrictions on light source limits. Great plugin.
Its crazy that this is not built in to Godot. An essential upgrade in all aspects to any form of 2D game. I was going to switch to Unity for my game before I found this.
Incredible add-on made by some properly smart people. Does a lot of stuff that Godot should really have built in, and is currently laying a foundation for an essential toolset with long term usability. Focusses on features as well as optimisation equally. Also head to the discord where author is responsive.
Great and the author is super responsive and positive on their Discord! (Used this on GMTK gamejam 2026.)
Login to write a review.