리서치 연구
블록 게임 환경에 적용한 CPU 기반 오클루전 컬링
Software occlusion culling in Block Game
Hacker News블록 게임의 숨겨진 지오메트리 처리를 위해, 저자는 CPU 기반 소프트웨어 가려짐 컬링 시스템을 개발했습니다.
세 줄 요약
- 낮은 해상도와 다단계 미포크(mipmap) 구조를 활용하여 가려진 블록을 판별하며, 약한 시스템에서도 동굴 내부에서 95% 이상의 청크 컬링 성공률과 높은 프레임 속도를 달성했습니다.
- 최신 고사양 GPU가 필요하거나 특정 엔진 제약으로 인해 하드웨어 가속이 어려울 때, 안정적인 고프레임을 유지할 수 있는 대안적 렌더링 기법입니다.
- GPU 가속 대신 CPU로 깊이 버퍼를 직접 처리하는 방식이라 구현 난이도가 매우 높으며, 복잡한 최적화 과정을 거쳤습니다.
저자는 블록 게임에서 발생하는 지하 동굴 등 숨겨진 지오메트리(hidden geometry)를 효율적으로 처리하기 위해 소프트웨어 렌더링 방식의 가려짐 컬링 솔루션을 개발했습니다. 특히, 사용 중인 시스템이 그래픽 컴퓨팅 파워가 약하고 FNA와 같은 구형 기술에 제약받아 의 비동기 기능을 활용할 수 없었기 때문에, 깊이 버퍼를 CPU에서 직접 처리하는 방식을 채택했습니다.
컬링 과정에서는 256x128 해상도로 렌더링된 깊이 버퍼(depth buffer)를 사용하며, 청크가 재구축될 때마다 '미포크(mipmap)' 체인을 구축합니다. 이 구조는 전체 청크부터 시작하여 2x2x2, 4x4x4 등 단계적인 크기의 서브청크로 나누어 오클루더를 표시하고, 이를 통해 가려진 블록을 판별하는 방식으로 작동합니다.
초기 구현 방식은 느렸으나, 변환 과정의 최적화를 거치며 성능이 크게 향상되었습니다. 원래 4x4 투영 행렬 곱셈과 역원(1/w) 계산 등을 사용하던 방식을 3x3 뷰 회전 및 가산 이동을 사용하는 방식으로 변경하여 연산을 줄였습니다. 이 최적화 덕분에 처리 시간이 150ms에서 99ms로 단축되었으며, 약한 시스템에서도 높은 프레임 속도를 유지할 수 있게 되었습니다.
용어 풀이
- GPU
- 많은 계산을 한꺼번에 처리하는 칩. AI 학습과 실행에 가장 많이 써요.