Перейти к содержимому
Mineforgian

Cullify

Grass and foliage culling mod for performance

Загрузки
2K
Подписчики
8
Обновлён
16 июля 2026 г.
Лицензия
GPL-3.0-only

Опубликован 21 июня 2026 г.

🍃 What is Cullify?

Cullify is a client-side mod that culls decorative vegetation blocks (such as grass, flowers, ferns, algae, and kelp) based on distance from the player and customizable geometric shapes. By preventing distant or non-visible vegetation blocks from rendering, it reduces rendering load (vertex throughput and draw calls) without altering or removing the actual blocks in the world.

Banner Cullify

✨ Features

  • ⚙️ Vegetation Culling — Reduces rendering load by hiding vegetation blocks that are beyond a configured distance.
  • 📐 8 Geometric Culling Shapes — Customizable boundaries to control culling behavior around the player.
  • 📉 LOD Density Filter — Deterministic, hash-based density filtering that thins out outer vegetation (75%, 50%, or 25%) to save CPU overhead near the boundary.
  • 🌿 Double-Tall Vegetation Support — Synchronizes culling between the bottom and top halves of double-tall blocks (like sunflowers or tall grass) to prevent visual discrepancies.
  • ⚙️ In-Game Config Menu — A configuration screen accessible via the K keybind, chat commands, or the NeoForge mods menu.
  • 📊 Real-Time Statistics HUD — On-screen overlay tracking culled blocks, water replacements, chunk updates, and draw calls.
  • 🧪 Native Sodium Compatibility — Direct hooks into Sodium's internal LevelSlice rendering pipeline and Sodium Options API.

📐 Geometric Culling Shapes

Unlike traditional culling mods, Cullify offers flexible mathematical boundary checks on both the horizontal plane (X/Z) and the vertical axis (Y):

Icon Shape Geometry Mode Description
🟢 Sphere 3D Sphere Culls blocks outside a 3D spherical radius.
🌀 Cylinder Cylinder Culls blocks outside a horizontal circular radius (infinite Y).
📦 Box 3D Box Culls blocks outside a 3D cubical bounding box.
🔺 Triangle Triangle Culls blocks outside an equilateral triangular boundary centered on the player.
Hexagon Hexagon Culls blocks outside a hexagonal boundary.
Star Star Culls blocks outside a 6-point star (union of two intersecting triangles).
⏹️ Square Square Culls blocks outside a flat square grid.
🔵 Circle Circle Culls blocks outside a flat horizontal circular boundary.

🎮 Controls & Commands

Configuring and inspecting Cullify in-game is straightforward:

⌨️ Keybinds

  • K — Opens the custom Cullify GUI Config Screen.

💬 Chat Commands

  • /cullify menu — Opens the configuration GUI menu.
  • /cullify benchmark — Performs a benchmark of the mod and displays the results in chat.
  • /cullify debug — Toggles the real-time statistics HUD overlay.
  • /cullify stats — Prints current performance statistics directly into the chat.
  • /cullify verbose — Toggles verbose logging for debugging.
  • /cullify reload — Forces a complete reload of the client level renderer chunks.

🔌 Compatibility & Requirements

  • Sodium / Embeddium: Fully integrated. Hooks directly into Sodium's internal LevelSlice rendering pipeline to batch-cull blocks in MDI (Multi-Draw Indirect) buffers. The Culling Shape options and configurations are also registered directly inside Sodium's Video Settings menu!
  • Vanilla Renderer: Fallback compatibility included for the standard Minecraft block rendering pipeline.
  • 🔒 100% Client-Side: This mod runs entirely on your client. You can join any server (Vanilla, Spigot, Forge, Paper, etc.) without any issues!

📄 License & Modpack Usage

This mod is available under the GNU General Public License v3 (GPL-3.0).

📦 Modpack Permissions: Feel free to include Cullify in any of your modpacks on CurseForge, Modrinth, or private launchers! Credits are appreciated but not required.

⚡ Vibe Coding

This mod was built 100% using Vibe Coding! Developed entirely through AI-assisted pair programming, dynamic prompt iterations, and automated compilation loops. Let the vibes render!

Developed by Fluxsyum Studios

BM yOstrix

Ченджлог

1.4.5+mc26.1.2-neoforgeРелиз26.1.2 · 16 июля 2026 г.

[1.4.5] - 2026-07-13

🐛 Bug Fixes (Calculation Logic)

  • 📐 Shape Classification Fix (TRIANGLE / STAR): The chunk-section classifier used unsigned (mirrored) distances, so asymmetric shapes were evaluated as if every section sat in the positive quadrant. Sections behind the player could be wrongly marked "fully kept" (vegetation never culled) or wrongly culled. The classifier now receives signed section bounds and matches the per-block shape math exactly on every side of the player.
  • ⬡ Hexagon Over-Culling Fix: The fast radial rejection used the configured limit as the culling radius, but the hexagon's farthest corners extend to ~115% of the limit. Sections near the hexagon's Z-extremes were culled while still inside the visible shape. The rejection now uses the true circumradius.
  • ⭐ Star Concavity Fix: The star shape is concave (union of two triangles), so a section whose four corners are inside the union is not necessarily fully inside. Sections are now only marked "fully kept" when all corners sit inside the same triangle.
  • 🎲 LOD Hash Quality: Completed the fmix64 finalizer (both multiply rounds) in the deterministic LOD density hash, removing visible stripe patterns in thinned vegetation at low density settings.

⚡ Performance Optimizations

  • ♻️ Shared Section Classifier: Unified the duplicated section-classification math from ClientEventHandler and the Sodium LevelSlice mixin into a single, corrected implementation in CullifyMod.
  • 🟰 Equal-Distance Reuse: When grass/flower/other culling distances are equal (the default), the section classifier now computes the result once and reuses it, skipping up to 2/3 of the classification work.
  • 🖱️ Hit-Outline Early-Out: The block-outline mixin now checks the cached enable flags before fetching the block state, removing per-frame config lookups.
  • 💾 Atomic Config Saves (Fabric): The config file is written to a temp file and atomically moved into place, so a crash mid-save can never corrupt cullify.json.
1.4.5+mc26.1.2-fabricРелиз26.1.2 · 16 июля 2026 г.

[1.4.5] - 2026-07-13

🐛 Bug Fixes (Calculation Logic)

  • 📐 Shape Classification Fix (TRIANGLE / STAR): The chunk-section classifier used unsigned (mirrored) distances, so asymmetric shapes were evaluated as if every section sat in the positive quadrant. Sections behind the player could be wrongly marked "fully kept" (vegetation never culled) or wrongly culled. The classifier now receives signed section bounds and matches the per-block shape math exactly on every side of the player.
  • ⬡ Hexagon Over-Culling Fix: The fast radial rejection used the configured limit as the culling radius, but the hexagon's farthest corners extend to ~115% of the limit. Sections near the hexagon's Z-extremes were culled while still inside the visible shape. The rejection now uses the true circumradius.
  • ⭐ Star Concavity Fix: The star shape is concave (union of two triangles), so a section whose four corners are inside the union is not necessarily fully inside. Sections are now only marked "fully kept" when all corners sit inside the same triangle.
  • 🎲 LOD Hash Quality: Completed the fmix64 finalizer (both multiply rounds) in the deterministic LOD density hash, removing visible stripe patterns in thinned vegetation at low density settings.

⚡ Performance Optimizations

  • ♻️ Shared Section Classifier: Unified the duplicated section-classification math from ClientEventHandler and the Sodium LevelSlice mixin into a single, corrected implementation in CullifyMod.
  • 🟰 Equal-Distance Reuse: When grass/flower/other culling distances are equal (the default), the section classifier now computes the result once and reuses it, skipping up to 2/3 of the classification work.
  • 🖱️ Hit-Outline Early-Out: The block-outline mixin now checks the cached enable flags before fetching the block state, removing per-frame config lookups.
  • 💾 Atomic Config Saves (Fabric): The config file is written to a temp file and atomically moved into place, so a crash mid-save can never corrupt cullify.json.
1.4.5+mc1.21.1-neoforgeРелиз1.21.1 · 16 июля 2026 г.

[1.4.5] - 2026-07-13

🐛 Bug Fixes (Calculation Logic)

  • 📐 Shape Classification Fix (TRIANGLE / STAR): The chunk-section classifier used unsigned (mirrored) distances, so asymmetric shapes were evaluated as if every section sat in the positive quadrant. Sections behind the player could be wrongly marked "fully kept" (vegetation never culled) or wrongly culled. The classifier now receives signed section bounds and matches the per-block shape math exactly on every side of the player.
  • ⬡ Hexagon Over-Culling Fix: The fast radial rejection used the configured limit as the culling radius, but the hexagon's farthest corners extend to ~115% of the limit. Sections near the hexagon's Z-extremes were culled while still inside the visible shape. The rejection now uses the true circumradius.
  • ⭐ Star Concavity Fix: The star shape is concave (union of two triangles), so a section whose four corners are inside the union is not necessarily fully inside. Sections are now only marked "fully kept" when all corners sit inside the same triangle.
  • 🎲 LOD Hash Quality: Completed the fmix64 finalizer (both multiply rounds) in the deterministic LOD density hash, removing visible stripe patterns in thinned vegetation at low density settings.

⚡ Performance Optimizations

  • ♻️ Shared Section Classifier: Unified the duplicated section-classification math from ClientEventHandler and the Sodium LevelSlice mixin into a single, corrected implementation in CullifyMod.
  • 🟰 Equal-Distance Reuse: When grass/flower/other culling distances are equal (the default), the section classifier now computes the result once and reuses it, skipping up to 2/3 of the classification work.
  • 🖱️ Hit-Outline Early-Out: The block-outline mixin now checks the cached enable flags before fetching the block state, removing per-frame config lookups.
  • 💾 Atomic Config Saves (Fabric): The config file is written to a temp file and atomically moved into place, so a crash mid-save can never corrupt cullify.json.
1.4.5+mc1.21.1-fabricРелиз1.21.1 · 16 июля 2026 г.

[1.4.5] - 2026-07-13

🐛 Bug Fixes (Calculation Logic)

  • 📐 Shape Classification Fix (TRIANGLE / STAR): The chunk-section classifier used unsigned (mirrored) distances, so asymmetric shapes were evaluated as if every section sat in the positive quadrant. Sections behind the player could be wrongly marked "fully kept" (vegetation never culled) or wrongly culled. The classifier now receives signed section bounds and matches the per-block shape math exactly on every side of the player.
  • ⬡ Hexagon Over-Culling Fix: The fast radial rejection used the configured limit as the culling radius, but the hexagon's farthest corners extend to ~115% of the limit. Sections near the hexagon's Z-extremes were culled while still inside the visible shape. The rejection now uses the true circumradius.
  • ⭐ Star Concavity Fix: The star shape is concave (union of two triangles), so a section whose four corners are inside the union is not necessarily fully inside. Sections are now only marked "fully kept" when all corners sit inside the same triangle.
  • 🎲 LOD Hash Quality: Completed the fmix64 finalizer (both multiply rounds) in the deterministic LOD density hash, removing visible stripe patterns in thinned vegetation at low density settings.

⚡ Performance Optimizations

  • ♻️ Shared Section Classifier: Unified the duplicated section-classification math from ClientEventHandler and the Sodium LevelSlice mixin into a single, corrected implementation in CullifyMod.
  • 🟰 Equal-Distance Reuse: When grass/flower/other culling distances are equal (the default), the section classifier now computes the result once and reuses it, skipping up to 2/3 of the classification work.
  • 🖱️ Hit-Outline Early-Out: The block-outline mixin now checks the cached enable flags before fetching the block state, removing per-frame config lookups.
  • 💾 Atomic Config Saves (Fabric): The config file is written to a temp file and atomically moved into place, so a crash mid-save can never corrupt cullify.json.
1.4.5+mc1.20.1-forgeРелиз1.20.1 · 16 июля 2026 г.

[1.4.5] - 2026-07-13

🐛 Bug Fixes (Calculation Logic)

  • 📐 Shape Classification Fix (TRIANGLE / STAR): The chunk-section classifier used unsigned (mirrored) distances, so asymmetric shapes were evaluated as if every section sat in the positive quadrant. Sections behind the player could be wrongly marked "fully kept" (vegetation never culled) or wrongly culled. The classifier now receives signed section bounds and matches the per-block shape math exactly on every side of the player.
  • ⬡ Hexagon Over-Culling Fix: The fast radial rejection used the configured limit as the culling radius, but the hexagon's farthest corners extend to ~115% of the limit. Sections near the hexagon's Z-extremes were culled while still inside the visible shape. The rejection now uses the true circumradius.
  • ⭐ Star Concavity Fix: The star shape is concave (union of two triangles), so a section whose four corners are inside the union is not necessarily fully inside. Sections are now only marked "fully kept" when all corners sit inside the same triangle.
  • 🎲 LOD Hash Quality: Completed the fmix64 finalizer (both multiply rounds) in the deterministic LOD density hash, removing visible stripe patterns in thinned vegetation at low density settings.

⚡ Performance Optimizations

  • ♻️ Shared Section Classifier: Unified the duplicated section-classification math from ClientEventHandler and the Sodium LevelSlice mixin into a single, corrected implementation in CullifyMod.
  • 🟰 Equal-Distance Reuse: When grass/flower/other culling distances are equal (the default), the section classifier now computes the result once and reuses it, skipping up to 2/3 of the classification work.
  • 🖱️ Hit-Outline Early-Out: The block-outline mixin now checks the cached enable flags before fetching the block state, removing per-frame config lookups.
  • 💾 Atomic Config Saves (Fabric): The config file is written to a temp file and atomically moved into place, so a crash mid-save can never corrupt cullify.json.
1.4.0+mc26.1.2-neoforgeРелиз26.1.2 · 12 июля 2026 г.

[1.4.0] - 2026-07-12

✨ New Features

  • 🎬 Cinematic Benchmark Camera: Added /cullify benchmark start <seconds>. The mod will now lock your movement and rotate the camera 360° automatically, ensuring perfectly accurate performance comparison tests.
  • 📊 Gorgeous Results Screen: After finishing a benchmark, you are greeted with a beautiful glassmorphic screen showing your FPS gains, 1% Lows (stability), and how many plants were culled.

⚡ Performance & Stability (Fewer Stutters!)

  • 🚶 Smooth Walking: Increased the threshold for updating culled chunks. The game no longer aggressively rebuilds chunks with every step, completely removing stutters at higher render distances (like 12+ chunks).
  • 🧠 Rebuilt Culling System: Replaced the old heavy memory grid with a smart bounding-box math system. This saves a huge amount of RAM and makes plant scanning hundreds of times faster.
  • 🧹 Micro-Stutter Fix: Stopped allocating temporary blocks in memory during culling calculations. This prevents Java memory dumps, leading to much smoother frame rates.
  • 🚀 Faster Double-Tall Plants: Caching properties of tall grass and large flowers is now instant, reducing CPU overhead in heavy biomes.
  • 💻 Less CPU Usage: Background world checks now trigger less frequently, leaving more CPU power for actual rendering.
1.4.0+mc26.1.2-fabricРелиз26.1.2 · 12 июля 2026 г.

[1.4.0] - 2026-07-12

✨ New Features

  • 🎬 Cinematic Benchmark Camera: Added /cullify benchmark start <seconds>. The mod will now lock your movement and rotate the camera 360° automatically, ensuring perfectly accurate performance comparison tests.
  • 📊 Gorgeous Results Screen: After finishing a benchmark, you are greeted with a beautiful glassmorphic screen showing your FPS gains, 1% Lows (stability), and how many plants were culled.

⚡ Performance & Stability (Fewer Stutters!)

  • 🚶 Smooth Walking: Increased the threshold for updating culled chunks. The game no longer aggressively rebuilds chunks with every step, completely removing stutters at higher render distances (like 12+ chunks).
  • 🧠 Rebuilt Culling System: Replaced the old heavy memory grid with a smart bounding-box math system. This saves a huge amount of RAM and makes plant scanning hundreds of times faster.
  • 🧹 Micro-Stutter Fix: Stopped allocating temporary blocks in memory during culling calculations. This prevents Java memory dumps, leading to much smoother frame rates.
  • 🚀 Faster Double-Tall Plants: Caching properties of tall grass and large flowers is now instant, reducing CPU overhead in heavy biomes.
  • 💻 Less CPU Usage: Background world checks now trigger less frequently, leaving more CPU power for actual rendering.
1.4.0+mc1.21.1-neoforgeРелиз1.21.1 · 12 июля 2026 г.

[1.4.0] - 2026-07-12

✨ New Features

  • 🎬 Cinematic Benchmark Camera: Added /cullify benchmark start <seconds>. The mod will now lock your movement and rotate the camera 360° automatically, ensuring perfectly accurate performance comparison tests.
  • 📊 Gorgeous Results Screen: After finishing a benchmark, you are greeted with a beautiful glassmorphic screen showing your FPS gains, 1% Lows (stability), and how many plants were culled.

⚡ Performance & Stability (Fewer Stutters!)

  • 🚶 Smooth Walking: Increased the threshold for updating culled chunks. The game no longer aggressively rebuilds chunks with every step, completely removing stutters at higher render distances (like 12+ chunks).
  • 🧠 Rebuilt Culling System: Replaced the old heavy memory grid with a smart bounding-box math system. This saves a huge amount of RAM and makes plant scanning hundreds of times faster.
  • 🧹 Micro-Stutter Fix: Stopped allocating temporary blocks in memory during culling calculations. This prevents Java memory dumps, leading to much smoother frame rates.
  • 🚀 Faster Double-Tall Plants: Caching properties of tall grass and large flowers is now instant, reducing CPU overhead in heavy biomes.
  • 💻 Less CPU Usage: Background world checks now trigger less frequently, leaving more CPU power for actual rendering.

Комментарии

Загружаем…