Skip to content

LCull

Cursed, performant Frustum logic for heavy culling scenes

FabricNeoForgeForgeQuilt
Loaders
FabricNeoForgeForgeQuilt
Downloads on Modrinth
1.2K
Followers on Modrinth
4
versions
36
Updated
September 29, 2026Sep 29
Published
in 2026
Benchmark #1 1.21.11 Fabric — Before: Without mods - After: With LCull · swipe

At a glance

Runs on Fabric, NeoForge, Forge and Quilt
For Minecraft 1.21.4, 1.21.6–26.3 …
Client only — no need to install it on the server
Latest version — mc26.3-1.1.0-neoforge from September 29, 2026
License LGPL-3.0-only — free
Where it's needed
In gamerequiredOn servernot needed

Install in the game only; not needed on the server

Game versions1.21–1.21.1, 1.21.4, 1.21.6–26.3 …
The project code was created with help of Artificial Intelligence.
Available on Modrinth Available on CurseForge GitHub Issues

An open source mod with cursed, performant Frustum logic for heavy culling scenes. More FPS, but has some side effects.

Advantages

  • Culling entities that off-screen:

    • Helps in different heavy scenes which increases FPS. (like in CounterMine 2)
  • Accelerates work by x2 with Entity Culling, Sodium/Embeddium mods, cuz they're professionals here yea.

Weaknesses

  • Useless for other scenes:

    • Low amounts of entities
    • Entities behind the walls.
    • Modded mobs (probably)
  • Increases CPU load.

Benchmarks

Default 1.21.11 Fabric version

Before: Without mods

After: With LCull

lcull1

1.21.11 Fabric with mods: Sodium, Entity Culling, Fabric API

Before: Without LCull

After: With LCull

lcull2

Why I made this mod?

Minecraft keeps every loaded entity in the render loop even when it is behind your back or far outside the screen, so the GPU and CPU pay full price for things you will never see. In entity-heavy scenes, like RPG-modded servers, minigame hubs or CounterMine maps WITH UP TO 10K ENTITIES (or just a much amount of Display entities), that overhead turns into a real frame-rate tax. Sodium and Entity Culling already do excellent work on the block and entity side, but I wanted a small, focused frustum path tuned specifically for thousands of entities on screen at once, and a clean place to experiment with the rendering pipeline. LCull grows out of the ideas in Lomka (my earlier work that proved tick and refresh culling help a lot) and narrows the scope to one job: stop drawing entities that are not in the view frustum.

How the LCull's Frustum checks works?

Every frame the game already builds a Frustum for the active camera. LCull asks that frustum whether an entity's axis-aligned bounding box lives inside the visible volume - the same six-plane test the renderer uses for chunks, evaluated in a branchless form that resolves the per-corner sign choices once per frame instead of per entity. When the whole box is outside, the entity is skipped during rendering and never reaches the draw call.

Two things keep the result from flickering. The safety margin around the box grows with the entity's speed - 1 block for a stationary entity, up to 2.5 for a fast mover - so nothing pops mid-stride; and a projectile cannot exempt itself by moving fast, because the margin is capped. LCull also leaves vanilla's own escapes intact: anything the renderer marks as never-cullable (fishing hooks, the ender dragon, lightning bolts, name-tag displays) is handed straight back to vanilla, and a leashed mob stays visible while the thing holding its rope is. Both deliberately leave a little on the table rather than dropping something the player can see.

What the Minecraft and LCull problem?

Minecraft does apply its own frustum to chunks and block entities, but the per-entity render loop still iterates and submits everything that is loaded, which is exactly why off-screen mobs cost as much as on-screen ones. LCull removes that off-screen cost, but it cannot remove entities hidden behind walls, because that needs occlusion culling and a visibility graph, a much harder problem than a frustum test. The mod also does nothing useful when there are only a few entities, or in singleplayer where the simulation, not rendering, is the bottleneck. Because culling is decided on the render thread, entities can pop out the instant they leave the view; that is the intended trade for the FPS win, and it trades a little extra CPU work for the frustum evaluation. There is also a narrow compatibility edge: a mod that assumes every entity is "rendered" each frame could behave oddly, which is why LCull stays an opt-in, tunable tweak rather than a silent override.

Links

FAQ

How to install LCull?

Install Fabric for your Minecraft version, download LCull for the same version and loader, put the file into the mods folder and launch the game with the loader profile.

Which Minecraft versions does LCull support?

LCull has builds for Minecraft 1.20.1, 1.21–1.21.1, 1.21.4, 1.21.6–26.3 ….

Is LCull needed on the server?

Client only — no need to install it on the server

License and source
GNU Lesser General Public License v3.0 onlyfree to use and share; changes to the mod itself must be published under the same license
Original — Modrinth↗Files unchanged, verified with SHA-512Is this your mod? For rights holders

The site uses cookies: the necessary ones for sign-in and the theme, plus the Yandex Metrica and LiveInternet visit counters — they show us how the site is used. We have no advertising cookies. More