피드로 돌아가기
Dev.toInfrastructure
원문 읽기
Internal Face Culling을 통한 렌더링 삼각형 수 95% 이상 절감
How I've optimized chunk generation in my Minecraft clone
AI 요약
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 로직 구현