-
Notifications
You must be signed in to change notification settings - Fork 33
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.
Results may vary drastically!
Without MoreCulling, I get around ~136 frames
With MoreCulling, I get around ~210 frames
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
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.
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.
- MC-249693 - Chorus plant culling
- MC-238739 - Bamboo culling (without leaves)
- MC-139620 - Fence culling (some exceptions)
- MC-217653 - End Rod culling (some exceptions)
- MC-209633 - Glass pane culling MoreCullingExtra only!
Plus a lot more that haven't been reported or tested
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:
- You can go to the more culling settings in mod menu and disable the specific mod which is having issues
- 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