Version differences

Back to Lambent

The API (LambentClient, LightSource, LightFrame, the light records) works the same way on every version. What differs is how Lambent hooks into each version’s renderer, and a few helpers that only some versions have.

At a glance

  1.20.1 1.21.1 26.1.2 26.2 26.3
Loader Forge NeoForge NeoForge NeoForge NeoForge
Java 17 21 25 25 25
Names SRG, with a refmap Mojang Mojang (the game ships unobfuscated) Mojang Mojang
Graphics OpenGL OpenGL OpenGL OpenGL only (no lights on Vulkan) OpenGL only (no lights on Vulkan)
Depth 0 near, 1 far 0 near, 1 far 0 near, 1 far Reversed: 1 near, 0 far Reversed
LambentClient.program, texture Yes Yes No No No

Every version checks for Iris (or Oculus on 1.20.1) by reflection, so a shader pack works wherever one of them is installed.

1.20.1 and 1.21.1

Lambent draws with its own GL programs, vertex arrays and buffers, and puts back the GL state Minecraft tracks when it is done. Mods that draw after the lights with their own programs can use the LambentClient.program and LambentClient.texture helpers (see Rendering).

The 1.20.1 jar carries a mixin refmap, since Forge 1.20.1 runs on SRG names.

Under Fabulous graphics, the extra item and translucent targets stay unbound while entities draw into the shadow maps, because binding them would move the drawing off the shadow atlas.

26.x: what changed for every 26 version

Minecraft 26 draws through its own GPU API (GpuDevice, render passes, pipelines). Lambent still draws its lights with GL calls of its own, but:

26.2

26.3