Complex Leaf Culling

Complex Leaf Culling

Multi-tier leaf culling for Sodium. Block cancellation, pass demotion, and face culling for dense modded forests (WWOO, etc.).

by
10.7K Downloads
fabricoptimization
Configure a Compatible Minecraft Server

Screenshots

Complex Leaf Culling Feature

About this Mod

Complex Leaf Culling

A multi-tier leaf culling mod for Minecraft 1.21.1 (Fabric + Sodium), designed for modpacks with dense foliage from mods like William Wyther's Overhauled Overworld (WWOO) where vanilla culling leaves significant performance on the table.

NOTE:
I've tested this locally on a heavily modded (300+ mods) instance, and have had others with differing computer specs test it as well. It has thusfar worked without issue, but that doesn't mean there may not be some problems. This has been made as compatible as I can personally manage, but for those with bigger brains than I have they can fork it and modify it as needed. I'm a new dad, so I may not be the one to swiftly fix issues or extend its compatibility.

What it does

Complex Leaf Culling applies three independent culling strategies that complement each other:

Standard Leaf Culling (Tier 1 - all renderers)
Marks shared faces between adjacent leaf blocks as invisible during mesh building. Works for all leaf blocks and cooperates directly with Sodium's occlusion system. This is what most culling mods do.

Extended Leaf Culling (Tier A - Sodium only)
Cancels rendering entirely for interior leaf blocks that are fully surrounded by other leaves. Zero geometry is generated for these blocks. Most effective in dense WWOO canopies and other modded forests where standard culling misses blocks it doesn't recognise.

Edge Pass Demotion (Tier B - Sodium only)
Leaf blocks on the edge of a canopy that partially qualify (one neighbour below the cancel threshold) are demoted from expensive translucent rendering to cheaper cutout rendering. Leaf shapes are fully preserved - only the render pass changes. Most noticeable with shader packs like Iris where translucent geometry is disproportionately expensive.

Requirements

  • Minecraft 1.21.1
  • Fabric Loader >= 0.16.0
  • Fabric API
  • Sodium - NOTE: Tested with version 0.6.13. Newer/older versions may not work if hooks have moved/changed internally.

Recommended

  • Iris Shaders - Tier B pass demotion gives the most visible benefit with shaders active
  • ModMenu - provides access to the in-game config screen

Configuration

Open the config screen via ModMenu, or use the /clc command in-game:

/clc status
/clc reload
/clc set enabled true|false
/clc set mode CONSERVATIVE|BALANCED|AGGRESSIVE
/clc set threshold 0-6          (0 = auto from mode)
/clc set standardCulling true|false
/clc set extendedCulling true|false
/clc set passDemotion true|false
/clc set extendedDetect true|false

Culling Modes

Mode Neighbours Required Description
CONSERVATIVE 6/6 Only perfectly buried blocks. Safest visuals.
BALANCED 5/6 Good balance of performance and appearance. Default.
AGGRESSIVE 4/6 Maximum performance. Slight edge thinning possible.

Extended Leaf Detection - when enabled, blocks whose registry path contains leaf, leaves, or foliage are treated as leaves even if not tagged minecraft:leaves. Required for full WWOO compatibility.

Compatibility

Mod Status
Sodium 0.6.x Required
Iris Full compatibility, Tier B most effective here
Distant Horizons No interaction (DH handles its own LOD geometry)
C2ME Compatible
EntityCulling Separate concern, no conflict
MoreCulling Complementary - covers different block types
SodiumLeafCulling Redundant - both target the same pipeline. Use one or the other.
WWOO Primary use case

Performance notes

All culling work happens during chunk mesh building on Sodium's worker threads - not during rendering. There is no per-frame CPU cost. The performance benefit is realised when chunks are built or rebuilt (world load, block changes, F3+A, or saving settings).

Building from source

git clone https://github.com/YOUR_GITHUB_HERE/complex-leaf-culling
cd complex-leaf-culling

# Place sodium-fabric-0.6.x+mc1.21.1.jar in libs/
./gradlew build

The built jar will be in build/libs/.

License

MIT - free to fork, modify, and redistribute with attribution. See LICENSE.

Available Versions

Complex Leaf Culling 1.0.0release
MC 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11fabric
February 23, 2026

How to Install Complex Leaf Culling on Your Client

1

Install the Mod Loader Locally

Install fabric for your local Minecraft version.

2

Download the Matching File

Choose the Complex Leaf Culling file for fabric and Minecraft 1.21.11.

3

Install Mod

Place the .jar file in your local .minecraft/mods folder and restart Minecraft. No server-side installation is required.

Compatibility

Mod Loaders

fabric

Minecraft Versions

1.21.11, 1.21.10, 1.21.9 (+8 more)

Server-side

Unsupported

Recommended RAM

4 GB(min. 3 GB)

Frequently Asked Questions

Does Complex Leaf Culling need to be installed on the Minecraft server?

No. Modrinth marks Complex Leaf Culling as unsupported on the server side. Install it only in your local Minecraft mods folder. Your server can remain unchanged unless the mod page lists an additional dependency.

Which version and loader does Complex Leaf Culling require?

Use a file for fabric and your exact Minecraft version. Supported versions include 1.21.11, 1.21.10, 1.21.9. Files for different loaders are not interchangeable.

Complex Leaf Culling is not working – what should I check?

First check the Minecraft version, loader version and required dependencies. Put the .jar file in your local .minecraft/mods folder and remove older duplicates. Because this mod is client-side, adding server RAM will not fix it.

Minecraft Server for Your Group

Complex Leaf Culling stays on your client. Host a compatible world for your group.

Recommended RAM
4 GBfrom €5.2/mo
Minimum 3 GB | per 8 players
Create Server Now
Client Compatibility Guide
NVMe SSD Storage
DDoS Protection included

Details

License
MIT License
Server-side
Unsupported

Supported Versions

1.21.111.21.101.21.91.21.81.21.71.21.61.21.51.21.41.21.31.21.2+1 more