Skip to content
Fx Morin edited this page Sep 23, 2024 · 8 revisions

Aggressive BlockState Culling

Blockstate culling is how the game culls faces of blocks that you can't see. Although the game only supports culling non-full block faces against full blocks. Leading to many of the block faces not being culled, slowing down your render time.
There are many places in the game that naturally have many of these non-full block culling issues, a couple of examples would be: Bamboo forest (bamboo), end islands (chorus plants), and many decoration structures (villages, mansions).
Most of the creations by players end up running into these situations, so the mod really helps out everywhere.

MoreCulling is able to cull these faces without a performance loss allowing you to get better frame rates.

Comparing Performance

Results may vary drastically!
Without MoreCulling, I get around ~136 frames
Vanilla
With MoreCulling, I get around ~210 frames
MoreCulling
Don't mind that bar, it was a screenshot.
Do not expect these results all the time. Bamboo renders 2 extra faces for each block without MoreCulling, which is why the results are so drastic here!

W.I.P. - More performance examples are needed here

How do we achieve this?

This is done by running voxel face checks against both blocks and checking if they overlap. If one fully overlaps a face, we can prevent that face from rendering.
We do this exactly how Mojang does normal face culling against solid blocks except by comparing both faces together.

Why does Mojang not also do this?

There is one good reason why Mojang has not done this themselves. Some faces use transparency in their textures.
That may not sound that bad although it is, without this check trapdoors can be used to xray through the world. The game does not have any way of knowing that the trapdoors face isn't solid so it culls its back.
MoreCulling runs a transparency check on all block faces when the game starts (unnoticeable) and when you change a resource pack. That info gets cached as a boolean in BakedModels and some other locations. This gives the game a way to very quickly/efficiently check if the block can use MoreCulling's aggressive culling to remove extra faces without any visual issues.

Current bugs fixed by MoreCulling's aggressive culling

Plus a lot more that haven't been reported or tested

Mod incompatibilities

This mod makes the assumption that all blocks have the proper culling hitbox setup like vanilla. Some mods like Adorn for example don't do this, which may cause models to cull blocks there touching. There are a few ways to fix this, if you are just a player:

  1. You can go to the more culling settings in mod menu and disable the specific mod which is having issues
  2. If you have mod menu or sodium, you can disable all modded blocks from culling by default (not recommended)

If you are a mod developer and your mod is having issues, you can include the MoreCulling API and directly disable culling on your blocks

Clone this wiki locally