Skip to content

26.1.2 Block Entity Culling

Dasik edited this page Aug 20, 2026 · 1 revision

📦 Block Entity Occlusion Culling (Minecraft 26.1.2)

Block entities (chests, ender chests, signs, banners, skulls, decorated pots, bells, and beacons) submit individual draw calls every frame. In large storage rooms or automated sorting facilities, this produces heavy GPU draw call contention.


📋 Block Entity Culling Infobox

Property Value
Target Pipeline BlockEntityRenderDispatcher.tryExtractRenderState(BlockEntity, float, CrumblingOverlay) (3 arguments)
Enclosure Detection Checks all 6 neighboring faces: up, down, north, south, east, west
Conservative Mode Enclosed-only check on LOW profile
Aggressive Mode Full raycast sightline verification on MEDIUM, HIGH, SUPER
Result Returns null RenderState to skip render submit

🔍 Enclosure & Sightline Verification Architecture

               [UP]
                │
   [WEST] ── [CHEST] ── [EAST]
                │
              [DOWN]

1. 6-Sided Solid Enclosure Fast-Pass

BlockState up = level.getBlockState(pos.above());
BlockState down = level.getBlockState(pos.below());
BlockState north = level.getBlockState(pos.north());
BlockState south = level.getBlockState(pos.south());
BlockState east = level.getBlockState(pos.east());
BlockState west = level.getBlockState(pos.west());

if (up.isSolidRender() && down.isSolidRender() && north.isSolidRender()
    && south.isSolidRender() && east.isSolidRender() && west.isSolidRender()) {
    return true; // 100% Occluded — skip rendering
}

2. Line-of-Sight Raycast Check

On MEDIUM, HIGH, and SUPER profiles (cullAllBlockEntities = true), Camera Culling projects a ray from camera position to the block entity center $(X + 0.5, Y + 0.5, Z + 0.5)$ to drop occluded render states.


🔗 Related Pages

Clone this wiki locally