Lumi

Lumi

Mod

A full replacement of the Minecraft lighting engine with an extendable API

Client and server LibraryOptimization

37 downloads
2 followers
Created10 days ago
Updated10 days ago

Follow Save
Host your Minecraft server on BisectHosting - get 25% off your first month with code MODRINTH.

A full replacement of the Minecraft lighting engine with an extendable API, shipping with Phosphor as a reference implementation.

Dependencies

Performance

The main performance improvement comes from the fact that the lighting engine is evaluated "lazily", thus it is able to batch more lighting updates into a single pass.

Here are some simple to understand values, generated via profiling a pre-set test case:

Test Case
  • World Type: Default
  • World Seed: 123
  • Game Mode: Creative
  • Render Distance: 16

Profiler is started right before clicking Create New World, and stopped after 10 seconds of flying in a straight line in creative mode.

Without Lumi, the active server time spent in lighting engine is 34% of the total active server time (not counting when the server thread is sleeping).

With Lumi, this fraction goes down to 13%, or an approximately 2.5x performance increase over vanilla.

Flame Graphs

Horizontal axis is time, vertical axis is the call stack. The blue highlighted parts are calls to the lighting engine update method.

Flame Graph Without Lumi

Flame Graph With Lumi

Incompatibilities

  • ArchaicFix: Config Change Needed
    • As both mods replace the same parts of code, naturally you will need to set enablePhosphor to false in the ArchaicFix config.
  • CoreTweaks: Config Change Needed
    • The fix_heightmap_range feature is already implemented in Lumi's lighting engine. Set it to false in the CoreTweaks config.

Both of these configs will be automatically modified by Lumi automatically when you launch the game, so you shouldn't even need to edit the config files manually.

Authors

Credits


Project members

FalsePattern

Author

basdxz

Co-Author


Technical information

Client side
required
Server side
required
Project ID