Skip to content

📦 블록 엔티티 차폐 컬링 (Minecraft 26.1.2) ​

블록 엔티티(상자, 엔더 상자, 표지판, 현수막, 해골, 장식된 도자기, 종 및 신호기)는 매 프레임 개별 드로우 콜을 제출합니다. 대규모 창고나 자동 분류 시설에서는 심각한 GPU 드로우 콜 부하가 발생합니다.


📋 블록 엔티티 컬링 기본 정보 ​

속성값
대상 파이프라인BlockEntityRenderDispatcher.tryExtractRenderState(BlockEntity, float, CrumblingOverlay) (3개의 인자)
밀폐 감지6개 인접 면 모두 검사: up, down, north, south, east, west
보수 모드LOW 프로필에서 밀폐된 경우만 검사
공격적 모드MEDIUM, HIGH, SUPER에서 완전한 레이캐스트 시선 검증
결과렌더 제출을 생략하기 위해 null RenderState 반환

🔍 밀폐 및 시선 검증 아키텍처 ​

text
               [위 (UP)]
                  │
   [서 (WEST)] ─ [상자] ─ [동 (EAST)]
                  │
              [아래 (DOWN)]

1. 6방향 솔리드 완전 밀폐 패스트 패스 ​

레이캐스트 연산을 수행하기 전에 Camera Culling은 인접 블록 상태를 먼저 조회합니다:

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% 차폐됨 — 렌더링 생략
}

벽 뒤에 묻혀 있거나 단단한 지하실 기초 속에 밀폐된 상자는 CPU 연산을 거의 소모하지 않고($< 0.0001\mu\text{s}$) 렌더링에서 제외됩니다.

2. 가시선 레이캐스트 검사 ​

MEDIUM, HIGH, SUPER 프로필(cullAllBlockEntities = true)에서 Camera Culling은 카메라 위치에서 블록 엔티티 중심 $(X + 0.5, Y + 0.5, Z + 0.5)$으로 광선을 투사하여 가려진 렌더 상태를 폐기합니다.


🔗 관련 페이지 ​

Official documentation & web portal for Dasik Igaijinn mods.