Dynamic point & spotlight lighting for Minecraft 1.20.1 · 1.20.4 · 1.21.1
A BBS addon that brings real-time shadows, volumetric light shafts, and per-light specular to Iris shaderpacks — no shaderpack edits required.
IRLights is a client-side Fabric mod that extends BBS with a full dynamic lighting system. You place point lights and spotlights in your scene from the BBS editor, and IRLights does the rest:
- bakes per-light shadow maps every frame
- uploads all light data to the GPU via a single SSBO
- injects the matching GLSL into your shaderpack via a one-click patcher
The result is physically-plausible diffuse + specular lighting, hard/soft shadows, and volumetric fog shafts — all driven by BBS animation keyframes.
| Feature | Details |
|---|---|
| Point lights | Omnidirectional, cube-map shadows, radius + falloff |
| Spotlights | Cone angle, penumbra, atlas shadows |
| Volumetrics | Per-light ray-marched shafts with shadow occlusion |
| Specular | GGX BRDF, per-light roughness + intensity |
| Shadow quality | Four presets — Low / Medium / High / Ultra |
| SSBO pipeline | std430 binding 7, up to 2048 lights per frame |
| Patcher | Injects GLSL into any supported shaderpack in one click |
| BBS UI | Light forms in the BBS editor, live preview |
IRLights ships ready-to-use .irlights patch files for all packs below.
Apply them once with the in-game patcher — no manual GLSL edits needed.
| Shaderpack | Author | Patch file |
|---|---|---|
| Photon | SixthSurge | patches/photon.irlights |
| Complementary Reimagined | EminGT | patches/complementaryreimagined.irlights |
| BSL Shaders | CaptTatsu | patches/bsl.irlights |
| Solas | Septonious | patches/solas.irlights |
| Bliss | X0nk | patches/bliss.irlights |
| Rethinking Voxels | gri573 | patches/rethinkingvoxels.irlights |
| IterationRP † | Tahnass | patches/iterationrp.irlights |
† IterationRP is a paid shaderpack — buy it from the author. Our .irlights patch is free and public, but it only applies on top of a copy you already own.
IRLights has three layers that work together:
┌─────────────────────────────────────────────────────┐
│ BBS Editor → PointLightForm / SpotlightForm │ you place lights here
└────────────────────────┬────────────────────────────┘
│
┌────────────────────────▼────────────────────────────┐
│ Java Addon → LightCollector → ShadowBaker │ bakes maps, fills SSBO
│ → LightBuffer (SSBO binding 7) │
│ → Iris sampler injection │
└────────────────────────┬────────────────────────────┘
│
┌────────────────────────▼────────────────────────────┐
│ Patcher → .irlights patches │ injects GLSL once
│ → PatchEngine (anchor-based edits) │
│ → validate / apply / revert UI │
└────────────────────────┬────────────────────────────┘
│
┌────────────────────────▼────────────────────────────┐
│ GLSL Inject → irlite_lights.glsl │ runs on GPU every frame
│ → diffuse · specular · shadows · VL │
└─────────────────────────────────────────────────────┘
Requirements: Minecraft 1.20.1 / 1.20.4 · Fabric Loader ≥ 0.19 · Iris ≥ 1.7 · BBS (latest)
Jars are per-version — grab the one matching your instance:
irlite-1.1+mc1.20.1.jarorirlite-1.1+mc1.20.4.jar.
- Drop
irlite-*.jarinto yourmods/folder alongside BBS and Iris. - Launch the game once to generate config.
- Open the IRLights category in BBS settings and pick your shaderpack.
- Click Apply Patch — the patcher injects the GLSL automatically.
- Enable the patched shaderpack in Iris and reload shaders.
- Enter a BBS scene and open the Lights panel in the editor.
- Add a Point Light or Spotlight and adjust radius, color, intensity, and shadow quality.
- Keyframe any light property for animated sequences.
- Reload shaders (
F3 + R) to see the result in real time.
The addon consumes the shared irl-core engine as a per-version Maven dependency, so publish the matching core to mavenLocal first:
# 1) publish the matching core (from the irl-core repo)
../irl-core/gradlew publishToMavenLocal
# 2) build the addon for a specific Minecraft version
./gradlew build --refresh-dependencies -Pmc=1.20.4 # or -Pmc=1.20.1
# output: build/libs/irlite-1.1+mc1.20.4.jar
# dev-test against a specific version:
./gradlew runClient -Pmc=1.20.4Each Minecraft version produces its own jar (the +mc<version> suffix); the old universal
1.0-obt jar is gone. irl-core is remapped to the target mappings and JiJ-bundled via Loom's
include, so the shipped jar is self-contained.
Minecraft 1.21.1 lives on the
port/1.21.1branch (the final addon line — BBS does not exist past 1.21.1).
Cutting a release is one command:
pwsh -File tools/release.ps1 -Version 1.1.2It bumps mod_version, builds the 1.20.1 product jar, then creates the v1.1.2
tag and a GitHub Release with the jar attached and notes generated from the commit
log — all in one step. Add -DryRun to preview, -Draft to review before publishing.
The jar is built locally on purpose: the addon links against the third-party BBS
jar, which is not in git and cannot be republished, so it cannot be produced on a
clean CI runner. The release.yml workflow is only a
safety net — if a v* tag is ever pushed by hand, it creates a draft Release with
notes (no jar) so the tag is not lost.
Released under the MIT License — © 2026 qualet.
The shared lighting & patcher engine lives in irl-core
(also MIT). Third-party shaderpacks referenced in patches/ remain under the licenses of
their respective authors.