피드로 돌아가기
How I've optimized chunk generation in my Minecraft clone
Dev.toDev.to
Infrastructure

Internal Face Culling을 통한 렌더링 삼각형 수 95% 이상 절감

How I've optimized chunk generation in my Minecraft clone

Romain2026년 5월 5일7intermediate

Context

블록 단위의 개별 Draw Call 발생으로 인한 PCIe 버스 포화 및 GPU 대기 시간 증가 문제 발생. 모든 블록의 6개 면을 전부 렌더링함에 따라 불필요한 Invisible Triangle이 대량 생성되는 구조적 한계 직면.

Technical Solution

  • Memory Footprint 최소화를 위해 블록 정의(BlockDef)와 타입(BlockType)을 분리한 Registry 패턴 도입
  • 블록당 데이터 크기를 256 bytes에서 1 byte(uint8_t)로 축소하여 RAM 사용량 최적화
  • 다수의 폴리곤을 하나의 메시로 묶어 GPU 전송 횟수를 최소화하는 Batching 기법 적용
  • 인접 블록의 투명도(Transparency)를 확인하여 불투명 블록 사이의 면을 제거하는 Internal Face Culling 로직 설계
  • Face 단위의 독립적 메시 생성 구조를 통해 조건부 Vertex 데이터 생성 제어

1. 반복되는 대량의 객체 생성 시 Flyweight 패턴을 통한 데이터 중복 제거 검토

2. Draw Call 횟수를 줄이기 위한 Batching 처리 적용 여부 확인

3. 렌더링 파이프라인 전 단계에서 가시성이 없는 데이터(Invisible Data)를 필터링하는 Culling 로직 구현

원문 읽기