📦 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
text
[UP]
│
[WEST] ── [CHEST] ── [EAST]
│
[DOWN]1. 6-Sided Solid Enclosure Fast-Pass
java
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.
