다시 돌아온 수십억 개의 삼각형

Billions of triangles redux

zeux.io ▲ 52 댓글 4 ibobev

요약

엔비디아의 16억 개 삼각형 장면을 meshoptimizer로 다시 처리해 용량과 메모리를 크게 줄였습니다.

메시 처리 라이브러리 meshoptimizer를 만든 아르세니 카풀킨의 글입니다. 엔비디아가 9월 vk_lod_clusters 예제를 갱신하며 경로 추적(빛의 경로를 따라가는 사실적 렌더링)까지 되는 조라(Zorah) 장면을 공개하자, 작년 글에 이어 이 장면의 처리 과정을 다시 손봤습니다.

왜 중요한가

  • 16억 개 삼각형 장면을 VRAM 12GB인 RTX 5070에서 메모리 7GB 남짓으로 스트리밍할 수 있음을 보였습니다.
  • 압축, 단순화, 메시렛 코덱 같은 개선은 클러스터 LOD가 아닌 다른 렌더링 방식에서도 따로 쓸 수 있습니다.

핵심 내용

  • 클러스터 LOD(삼각형 묶음 단위로 거리에 따라 세밀도를 바꾸는 방식) 처리 전체가 16코어 CPU에서 약 3분 45초 걸렸습니다.
  • 속성 오차를 삼각형 면적으로 제한하는 Unreal Engine 방식을 들여와 기하 메모리 요구량을 996MB에서 678MB로 줄였습니다.
  • 잎이 삼각형 하나까지 줄어든 뒤 통째로 사라지는 문제는 남은 삼각형에 면적을 나눠 주는 방식으로 풀었습니다.
  • 새 메시렛 코덱(삼각형 묶음의 연결 정보 압축)으로 인덱스를 9.8GB에서 약 2.6GB, 삼각형당 6.5비트로 줄였습니다.
  • 그래도 삼각형은 여러 면에서 최적이 아니며, 에픽이 잎 표현에 복셀 방식을 연구하는 것도 이해된다고 했습니다.

HN 반응

  • 댓글은 기사보다 삼각형 배치 자체에 쏠려, 나무를 삼각형으로 심었던 경험담에 최소 간격 조건에서는 삼각 격자가 가장 촘촘하다는 보충이 붙었습니다.

댓글

4개 표시 · 전체 4개
  1. swader999 HN

    저는 90년대에 식목 일꾼이었는데, 그것도 최고 수준이었습니다. 부모님이 겨울 스키 비용을 대주지 않으셨거든요. 나무 한 그루당 얼마씩 받는 성과급 방식이었습니다. 저는 줄을 따라 기본 격자 방식으로 심는 대신 삼각형으로 심었습니다. 당시에는 간격과 미소 입지(microsite) 선정 기준이 엄격해서 이게 상당한 이점이 되었고, 익히는 데 세 시즌쯤 걸렸으며 결국 누구에게 가르치거나 설명하기도 매우 어려웠습니다. 그래픽 쪽 배경지식은 전혀 없는데, 여기서도 '땅'을 효율적으로 덮으려고 삼각형을 쓴다는 걸 알게 되니 흥미로웠습니다.

  2. jiehong HN

    격자에 비해 삼각형 식재가 정말 그렇게 대단했나요? 크기가 제각각인 삼각형을 다룬 게 아니라면요(그건 관리하기 골치 아프겠지만요).

  3. swader999 HN

    딱히 그렇진 않았습니다. 다만 일직선으로만 심을 때보다 머리를 더 쓰게 됐으니, 그만큼 더 재미있게 일했다고 할 수 있겠죠. 계약 조건에 최소 간격과 밀도 규정이 엄격해서, 감점(대금 삭감)을 피하려면 항상 그 규정을 맞춰야 했습니다.

  4. oasisaimlessly HN

    최소 거리 제약이 있을 때는 삼각형/육각형 격자가 가장 촘촘하게 채우는 배치입니다.

Hacker News에서 보기 ↗