Skip to content

Repository files navigation

Entity Culling Banner

Discord GitHub GitHub GitHub


Divider

About

Minecraft skips rendering things that are behind you, so why is it rendering everything that you still can't see because of walls or ceilings in the way?

This mod introduces asynchronous path-tracing to efficiently determine what's actually visible to the player. Using other available CPU cores, it calculates line-of-sight visibility in real time and eliminates unnecessary draw calls/processing for hidden block entities and entities.

This can drastically improve the frame rate, depending on the number of entities and the position in the world.


Divider


Features

Asynchronous Path-Tracing

  • Uses spare CPU threads to calculate visibility
  • Runs alongside the main game thread without blocking (every few ticks, required data will be collected on the main thread)
  • Updates visibility data in real time, keeping pop-ins to a minimum

Entity Tick Optimization

  • Reduces client impact from entities that are not visible
  • Fully configurable and compatible with most mods
  • No impact on server-side simulation, farms, or mob behavior

Fully Configurable

  • All features of the mod can be toggled on/off in the config screen
  • Whitelist entities and block entities that should not be culled or tick-culled
  • When playing with fast graphics or custom leaves, there is an option to treat leaves as solid blocks for Entity Culling. This can help to increase the performance in forested areas

Essential


Divider


Compatibility & Dependencies

Minecraft Loader Status Version Note
1.19.4+ Fabric/Forge/NeoForge ✅ Supported Latest
1.16.5-1.19.2 Fabric/Forge ❌ Not supported Outdated Might get new updates at some point
1.12.2/1.8.9 Forge ❌ Not supported Outdated Might get new updates at some point
1.7.10 Forge ❌ Not supported Outdated No updates planned
b1.7.3 Babric ❌ Not supported Outdated No updates planned


Divider


Screenshots / Media

Stage View
A direct comparison with and without EntityCulling active. Testing was conducted in Scarland (Hermitcraft Season 9) with render distance set to 16 chunks. The mods Sodium, Iris and ImmediatelyFast were used alongside EntityCulling, running on Minecraft 1.21.5 with the Fabric mod loader.


Divider


Known Issues

Client-side entities, commonly used by magic mods for animations, may not behave as expected. Whitelist the relevant entities via the config screen for tick culling and/or entity culling. Consider reporting the ids of any entities that are not behaving correctly on the Github for inclusion in future updates.

You’ll also need to whitelist block entities that render well beyond their normal bounds. Examples include the vanilla beacon, pulleys from Create, and certain Botania blocks.


Divider


FAQ

Does this need to be installed on the server?

No. This is a fully client-side mod and does not need to be installed on the server.

Will this affect mob behavior or farms?

No. This mod only skips the rendering of entities and has no impact on their logic. Mobs will continue to spawn, move, and drop items as expected. Your farms and other gameplay mechanics will remain unaffected. The tick culling feature is fully limited to the client side world, so it will not affect the server-side simulation.

I have "Use Entity Culling" enabled in Sodium - does this still help?

Yes! While Sodium performs basic visibility checks based on loaded chunks, this mod goes further. It analyzes the actual line-of-sight visibility, skipping entities that are within visible chunks but not actually visible to the player. It’s a much more aggressive and accurate approach.

How can I test the performance impact of this mod?

In the controls menu, you can bind a debug key to toggle the mod on and off on the fly. This allows you to compare performance with and without the mod active, without needing to restart the game. This can also be used to check if visibility issues are caused by this mod or another mod.

Consider doing this, when playing on a really old computer, that is already struggling to run Minecraft. When the CPU is already maxed out, there is no spare CPU time to run the visibility calculations. Outside of this case, the mod should never cause a negative performance impact on the game, and at worst have no effect at all, when there is just nothing to cull.

The F3 numbers do not seem right, what is going on?

The F3 debug screen numbers (in later versions hidden by default, can be turned on via F3+F6) are internally collected and may not necessarily reflect the actual render counts. Having active shaders for instance will cause higher numbers due to the shadow rendering. Also keep in mind that the mod tries to error on the side of caution, so entities too close to walls or ceilings may be rendering through them, due to the possibility of clipping.

Why is this mod running on the CPU, not the GPU?

The goal is to reduce the GPU load and have less unnecessary data transfers between the GPU and CPU. Doing the calculations would probably increase the GPU load, and main (render) thread load of the CPU. But feel free to prove me wrong and create a PR with a GPU-based implementation. Honestly, I lack the knowhow and time to implement this myself.


Divider


Credits & license

👤 Thanks to RoboTricker for his Transport-Pipes plugin, which created the foundation for this mod.

👤 Thanks to vicisacat for the Babric Beta 1.7.3 backport.

👤 Thanks to Pelotrio for the Forge 1.7.10 backport.

👤 Thanks to the awesome translators and contributors on GitHub! Link

📄 License: tr7zw Protective License
Feel free to use this mod in your Modrinth and CurseForge-hosted modpacks or YouTube videos without asking for permission. Do not redistribute the JAR files anywhere else!

About

Using async path-tracing to hide Tiles/Entities that are not visible

Topics

Resources

Stars

330 stars

Watchers

3 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages