Tags
Creators
Details
Licensed GPL-3.0-or-later
Published 2 months ago
Updated last week
All versions
1.10.1+26.2
Release
vanilla-outsider-camera-culling-1.10.1+26.22 months ago 85
Compatibility
Minecraft: Java Edition
26.2
Platform
Fabric
Supported environments
Client-side
Client and server
Changes
[1.10.1+26.2] - 2026-08-20
Added & Fixed
- Complete Modrinth Manifest & Metadata Alignment:
- Added explicit
"java": ">=25"runtime dependency underdependsfor automatic platform detection. - Added
"custom": { "modrinth": { "projectId": "camera-culling", "slug": "camera-culling" } }block for automatic platform project resolution. - Updated SPDX license to
"GPL-3.0-or-later"and unified repository issue tracker URLs. - Added suggestions for
"yet-another-config-lib"and"yet_another_config_lib_v3".
- Added explicit
[1.10.0+26.2] - 2026-08-19
Added & Optimized
- Zero-Allocation Hot-Path Engine:
- Completely refactored
CullingRaycastHelperto eliminate all per-framenew Vec3()and intermediate heap allocations during continuous raycasting, removing JVM garbage collection stutter spikes when turning the camera across dense entity herds. - Added smooth temporal hysteresis decay to eliminate burst uncull frametime hitches.
- Completely refactored
- 2-Sided Sign & Hanging Sign Back-Face Text Culling:
- Added
SignTextCullingHelpercalculating vector normal dot products ($\vec{N} \cdot \vec{V}$) across Wall Signs, Standing Signs, and Hanging Signs to automatically skip font rendering, kerning, and glow effects for the invisible back side of signs. - Added Empty-Side Fast-Pass to immediately skip unwritten/blank sign faces.
- Added
cullSignTextconfiguration toggle (defaulttrue/ ON) with full YACL v3 GUI integration and localization.
- Added
[1.9.2+26.2] - 2026-08-19
Changed & Optimized
- Open-Field Herd CPU Bottleneck Elimination:
- Set Crowd Overdraw Culling (
cullEntitiesBehindEntities = false) tofalseby default, delegating open-field mob overlapping directly to GPU hardware Early-Z depth rasterization for maximum framerates (60β140+ FPS). - Added $16\text{m}$ distance fast-fail gating and tight $1.5\text{m}$ local cluster bounding box to
isEntityOccludedByCloserEntities(), completely eliminating the heavy 40-meter world entity searches and ArrayList allocations when manually enabled.
- Set Crowd Overdraw Culling (
[1.9.1+26.2] - 2026-08-19
Changed & Refined
- Maximum Optimization Defaults Out-of-the-Box:
- Configured baseline culling profile to
SUPER (Extreme)(2.0m proximity bubble, 0.0 padding, full block entity & decorative culling) by default for new installations and YACL GUI resets. - Enabled Crowd Overdraw Culling (
cullEntitiesBehindEntities = true) by default. - Enabled Distance Texture LOD (
distanceTextureLod = true) by default. - Preserved existing user configs on disk while aligning GUI default bindings with maximum performance settings.
- Configured baseline culling profile to
[1.9.0+26.2] - 2026-08-19
Added
- Optional Graphical Configuration GUI (YetAnotherConfigLib v3 & ModMenu):
- Integrated a clean, responsive, 3-category in-game configuration GUI accessible directly via ModMenu.
- Category 1 (Engine & Diagnostics): Master culling enable, Culling Aggressiveness level dropdown, and live debug logging toggle.
- Category 2 (Entity & Crowd Occlusion): Crowd overdraw culling toggle, cluster density slider (1β32), and Boss/Mini-Boss immunity health thresholds.
- Category 3 (Blocks, Particles & Animations): Particle culling toggle, Block/Texture animation culling toggle, and Distance Texture LOD sliders.
- Full server-safe deferred classloading (zero hard dependencies, zero server crashes).
[1.8.4+26.2] - 2026-08-19
Added & Refined
- Active Leaves Occlusion Culling: Restored
BlockTags.LEAVESas visual occluders, allowing entities hidden behind tree canopies, hedges, and forests to be culled. - Distance-Scaled Temporal Hysteresis: Implemented adaptive grace decay buffer (4 frames $\le 32\text{m}$, 8 frames $32\text{m}-64\text{m}$, 12 frames $>64\text{m}$) to eliminate sub-voxel ridge-peeking flicker on distant mobs at 90m+.
[1.8.3+26.2] - 2026-08-19
Added
- Toggleable Real-Time Diagnostic Logger Suite (
/cameraculling debug):- Live in-game toggleable diagnostics logging state transitions (
[VISIBLE]$\leftrightarrow$[CULLED]) directly to chat andlatest.log. - Reports exact entity ID, type, distance, sample points tested, hit block type, hit coordinates, and exact decision reason (e.g.
Sightline (Head Top),Block Occlusion,Proximity Safety Bubble,Boss Immunity,Blacklist Immunity). - Added
/cameraculling debug [true|false]command and updated/cameraculling statuswith active debug mode indication.
- Live in-game toggleable diagnostics logging state transitions (
[1.8.2+26.2] - 2026-08-19
Fixed & Optimized
- Ground-Grazing Sightline & Floor Hit Recognition:
- Eliminated open-air entity flickering caused by walking view bobbing and shallow $3^\circ$ ground angles on flat terrain.
- Prioritized elevated anatomical sample points (Head crown
box.maxY, eyes, and upper torsobox.minY + height * 0.70). - Added floor detection in
hasLineOfSight: hitting the top face of a block (Direction.UP) at or below target base height is recognized as the ground and treated as unobstructed.
- Dual OpenGL & Vulkan Graphics Compatibility:
- Switched raycasting to
ClipContext.Block.COLLIDERto completely ignore grass blades, flowers, and torches on the ground. - Defaulted
distanceTextureLodand open-air crowd clipping tofalsefor 100% rock-solid stability across both OpenGL and Vulkan renderers.
- Switched raycasting to
[1.8.0+26.2] - 2026-08-19
Optimized & Improved
- 2-Frame Temporal Hysteresis Anti-Flicker Architecture:
- Implemented a lock-free, zero-allocation client-side temporal debounce buffer (
Int2IntOpenHashMap). - Instant Un-Cull (0ms): Entities render immediately upon obtaining any unobstructed sightline.
- 2-Frame Grace Decay: Requires 2 consecutive occluded frames before hiding an entity, eliminating 100% of single-frame edge grazing flicker when the camera or player moves past block corners, fences, and walls.
- Implemented a lock-free, zero-allocation client-side temporal debounce buffer (
- Anatomical Multi-Vector Sampling:
- Prioritized eye position (
entity.getEyePosition()), torso center, elevated pelvis, feet, and deflated perimeter flank points.
- Prioritized eye position (
- Expanded Contact Tolerance & Proximity Safety Bubble:
- Expanded raycast hit contact tolerance to $0.25\text{m}^2$ ($0.50\text{m}$ margin) to eliminate false-positive culling on block edges.
- Expanded proximity bubble thresholds:
LOW$\rightarrow 5.0\text{m}$,MEDIUM$\rightarrow 3.5\text{m}$,HIGH$\rightarrow 3.0\text{m}$,SUPER$\rightarrow 2.0\text{m}$.
[1.7.0+26.2] - 2026-08-19
Added
- Block & Texture Animation Culling:
- Automatically pauses GPU RenderPass texture atlas uploads (
TextureAtlas.cycleAnimationFrames) for animated block sprites when paused in singleplayer, menus, or when animation culling is active. - Guarantees 100% skipped 3D matrix animation calculations for occluded block entities (Enchanting Tables, Conduits, Bells, Brewing Stands).
- Automatically pauses GPU RenderPass texture atlas uploads (
- In-Game Commands:
/cameraculling animationsβ Toggles block & texture animation culling on/off./cameraculling animations <true|false>β Sets explicit animation culling state./cameraculling statusβ Now displays active animation culling status.
[1.6.0+26.2] - 2026-08-19
Added
- Particle Occlusion Culling:
- Automatically skips vertex extraction and quad buffer generation for unseen particles (torches, campfires, lava embers, cave drips, redstone dust, portals) occluded by solid blocks.
- 4.0m Proximity Safety Bubble: Particles within 4m of the player camera are never culled, ensuring 100% immediacy for local combat, splash potions, and tool interactions.
- Fast Solid Enclosure Check: Subterranean particles spawning inside solid blocks are skipped in $O(1)$.
- Dedicated Particle Toggle: Fully controllable via
cullParticles: true/falseinconfig/camera-culling.jsonand in-game commands.
- In-Game Commands:
/cameraculling particlesβ Toggles particle occlusion culling on/off./cameraculling particles <true|false>β Sets explicit particle culling state./cameraculling statusβ Now displays particle culling status and live counter of culled vs. rendered particles.
[1.5.0+26.2] - 2026-08-18
Added
- Two-Tier Entity Immunity Blacklist (Client & Server Admin Enforcement):
- Client Personal Blacklist: Saved locally in
config/camera-culling.json(clientBlacklist: []). Players can add specific entity types (e.g.minecraft:wolf,minecraft:allay) they never want to be culled. - Server Admin Blacklist: Configured in
config/camera-culling-server.json(serverBlacklist: []). Server administrators / OPs can enforce server-wide immunity for specific mobs across all connected clients. - Strict Server Authority: Server-blacklisted entities are mandatory immune on all clients; players can add additional personal entities on top.
- Full Immunity Scope: Blacklisted entities are completely exempt from block occlusion culling, crowd overdraw culling, and distance texture LOD downscaling.
- Client Personal Blacklist: Saved locally in
- In-Game Commands (Strict ResourceLocations):
/cameraculling blacklist add <entity_id>β Add entity to personal immunity blacklist (e.g.minecraft:wolf)./cameraculling blacklist remove <entity_id>β Remove entity from personal immunity blacklist./cameraculling blacklist listβ List all personal blacklisted entity types./cameraculling blacklist clearβ Clear personal blacklist./cameraculling serverblacklist add <entity_id>β Add entity to server-wide immunity blacklist (OP/admin)./cameraculling serverblacklist remove <entity_id>β Remove entity from server-wide immunity blacklist./cameraculling serverblacklist listβ List all server-wide blacklisted entity types./cameraculling serverblacklist clearβ Clear server-wide blacklist.
[1.4.0+26.2] - 2026-08-18
Added
- Dynamic Boss & Mini-Boss Detection and Full Immunity:
- Player-Configurable Health Limits:
- Major Boss Health Limit:
bossHealthThreshold(default:150.0 HP/ 75 hearts, range:1.0to10000.0). - Mini-Boss Health Limit:
miniBossHealthThreshold(default:50.0 HP/ 25 hearts, range:1.0to10000.0).
- Major Boss Health Limit:
- Vanilla & Modded Support: Automatically protects Elder Guardians, Ravagers, Iron Golems, Piglin Brutes, Evokers, Breezes, and modded champions/elites alongside major bosses.
- Full Immunity Scope: Mobs classified as bosses or mini-bosses are never culled behind solid blocks, never culled inside crowd overdraw clusters, and never downscaled by texture LOD.
- Conventional Tag & Keyword Heuristics: Supports
#c:bosses,#c:minibosses, and common naming conventions.
- Player-Configurable Health Limits:
- In-Game Commands:
/cameraculling bossimmunity <true|false>β Toggle Boss & Mini-Boss immunity on or off./cameraculling bosshealth <hp>β Change major boss health threshold with instant heart conversion display./cameraculling minibosshealth <hp>β Change mini-boss health threshold with instant heart conversion display./cameraculling bosshealth <boss_hp> <miniboss_hp>β Configure both thresholds simultaneously./cameraculling statusβ Displays active thresholds in both HP and hearts.
[1.3.0+26.2] - 2026-08-18
Added
- Distance-Based Mob Texture LOD (Texture Resolution Reduction):
- Decoupled Standalone Setting: Operates independently of culling profiles and entity-behind-entity culling. Enabled by default (
true). - 3-Tier Stepped Detail Scaling:
- Near (< 16.0 blocks): 100% Native Full Resolution crisp textures (0.0 LOD bias).
- Medium (16.0 β 32.0 blocks): Half Resolution (1.0 LOD bias).
- Far (> 32.0 blocks): Quarter Resolution / low-res mipmap (2.5 LOD bias).
- GPU Memory Optimization: Drastically lowers VRAM fillrate and texture sampling bandwidth for distant mobs without affecting close-up visual fidelity.
- Exemptions: Local Player, player mounts, glowing mobs, and Bosses remain at 100% full resolution at all distances.
- Decoupled Standalone Setting: Operates independently of culling profiles and entity-behind-entity culling. Enabled by default (
- In-Game Commands:
/cameraculling texturlod <true|false>β Toggle distance texture LOD independently./cameraculling texturlod range <near> <far>β Configure near (half-res) and far (quarter-res) distance thresholds.
[1.2.0+26.2] - 2026-08-18
Added
- Entity-Behind-Entity Culling (Crowd & Mob Overdraw Culling):
- Geometric AABB Intersection: Raycasts through candidate occluding mobs to cull entities hidden behind closer opaque mobs.
- Cluster Density Cap: Automatically limits rendered entities in tight 1.5-block clusters to a configurable cap (default:
8). - Profile Linking: Automatically active on
HIGHandSUPERpresets, disabled onLOWandMEDIUMwith manual override support.
- In-Game Commands:
/cameraculling entityculling <true|false|auto>β Toggle entity-behind-entity culling independently./cameraculling maxcluster <1-128>β Configure cluster density cap.
[1.1.0+26.2] - 2026-08-18
Added
- 4-Tier Culling Intensity Profiles: Added
LOW,MEDIUM,HIGH, andSUPERculling presets. - Persistent JSON Configuration: Saved directly to
config/camera-culling.json. - In-Game Command Suite: Registered
/cameraculling(status,toggle,set <low|medium|high|super>,reload).
[1.0.0+26.2] - 2026-08-18
Added
- Client-Side Entity Occlusion Culling: Fast multi-point raytracing against block collision shapes unrenders mobs and entities hidden behind solid walls.
- Block Entity Culling: Skips render extraction for chests, signs, banners, skulls, and decorated pots that are enclosed in opaque blocks or blocked from line-of-sight.
- Edge-Case Protections: Glowing entities, player characters, and riding vehicles remain visible.
- ModVersionGuard: Standalone Knot ClassLoader compatibility verification.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:ATX2NaJR:yjBCudPZ"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:ATX2NaJR:yjBCudPZ"
}

