TECH 으로 돌아가기
TECH HACKER NEWS 오늘 6분 읽기 30 READS

매 프레임 BVH를 다시 짓지 않는다: 사면체 케이지로 움직이는 지오메트리 레이 트레이싱하기

매 프레임 BVH를 다시 짓지 않는다: 사면체 케이지로 움직이는 지오메트리 레이 트레이싱하기
SOURCE IMAGE · HACKER NEWS
매 프레임 BVH를 다시 짓지 않는다: 사면체 케이지로 움직이는 지오메트리 레이 트레이싱하기

레이 트레이싱의 숨은 비용, 가속 구조

요즘 게임에서 레이 트레이싱은 거의 기본 그래픽 옵션이 됐는데요, 사실 화면 뒤에서는 GPU가 꽤 고된 준비 작업을 하고 있거든요. 레이 트레이싱이 뭐냐면, 빛이 실제로 나아가는 경로를 광선(레이) 하나하나 쏘아서 어떤 물체에 부딪히는지 추적하는 렌더링 방식이에요. 그런데 광선 하나가 수백만 개의 삼각형 중 어떤 것과 만나는지 일일이 검사하면 답이 없기 때문에, BVH라는 가속 구조를 미리 만들어둬요. 이게 뭐냐면 삼각형들을 크고 작은 상자로 계층적으로 묶어둔 일종의 색인인데, 책에서 목차를 먼저 보고 페이지를 좁혀가듯 광선도 큰 상자부터 확인하면서 후보를 빠르게 줄여가는 거죠.

문제는 '움직이는' 지오메트리

정적인 배경이라면 BVH를 한 번 만들어두고 계속 쓰면 돼요. 문제는 캐릭터거든요. 팔을 휘두르고, 옷이 펄럭이고, 근육이 꿈틀거리는 스킨드 메시(뼈대 애니메이션에 따라 형태가 변하는 모델)는 매 프레임 삼각형 위치가 전부 바뀌어요. 색인이 가리키는 내용물이 통째로 이사를 가버리는 셈이라, BVH를 매 프레임 갱신(리핏)하거나 아예 다시 지어야(리빌드) 하죠. 캐릭터가 한두 명이면 버티겠지만, 군중 신처럼 수백 개의 모델이 동시에 움직이면 이 준비 비용이 정작 그림을 그리는 비용보다 커지는 역전 현상까지 벌어져요. 하드웨어 레이 트레이싱이 빨라져도 이 병목은 그대로 남아 있었고요.

AMD의 발상: 지오메트리 대신 광선을 변형하자

AMD GPUOpen이 소개한 접근은 발상을 뒤집어요. 고해상도 모델을 성긴 사면체(테트라헤드론) 케이지로 감싸고, 애니메이션은 이 케이지에만 적용하는 거예요. 원본 지오메트리의 BVH는 변형 전 기준 자세(레스트 포즈)로 딱 한 번만 만들어두고요. 광선이 변형된 케이지의 어떤 사면체를 통과하면, 그 사면체의 변형을 거꾸로 적용해서 광선을 기준 자세 공간으로 옮겨요. 그러면 '움직인 모델에 광선을 쏘는 문제'가 '가만히 있는 모델에 살짝 휘어진 광선을 쏘는 문제'로 바뀌거든요. 광선은 사면체를 하나씩 건너가며 구간별 직선으로 근사되고, 각 구간에서는 미리 만들어둔 정적 BVH를 그대로 재사용해요.

이 방식의 매력은 두 가지예요. 첫째, 무거운 BVH 리빌드가 사라져요. 매 프레임 갱신할 것은 사면체 케이지뿐인데, 케이지는 원본 삼각형보다 훨씬 성기니까 부담이 작죠. 둘째, 원본 지오메트리가 아무리 조밀해도 애니메이션 비용은 케이지 해상도에만 비례해요. 그래서 제목에 '대량의(massive) 애니메이션 지오메트리'라는 말이 붙은 거고요.

업계 흐름 속에서 보면

애니메이션 지오메트리와 레이 트레이싱의 궁합 문제는 업계 공통 숙제예요. 엔비디아는 지오메트리를 클러스터 단위로 쪼개 가속 구조 갱신 비용을 줄이는 방향을 밀고 있고, 언리얼의 나나이트 같은 초고밀도 지오메트리 시스템도 레이 트레이싱과 결합할 때 비슷한 벽에 부딪히거든요. 사면체 케이지는 새 하드웨어 기능 없이 소프트웨어 트릭으로 문제를 우회한다는 점에서 결이 달라요. 사실 오프라인 렌더링이나 물리 시뮬레이션에서 오래 쓰이던 자유형 변형(FFD) 아이디어를 실시간 레이 트레이싱에 이식한 셈이라, 고전 기법의 영리한 재발견이기도 하고요.

한국 개발자에게

게임 그래픽스나 렌더링 엔진을 다루는 분이라면 원문과 GPUOpen 샘플 코드를 직접 볼 가치가 충분해요. 당장 상용 엔진에 붙일 수준은 아니더라도, '가속 구조를 갱신하지 말고 광선을 변형하라'는 관점 전환 자체가 커스텀 렌더러 설계나 셰이더 최적화에 좋은 자극이 되거든요. 그래픽스 입문자에게도 BVH, 스킨드 메시, 레스트 포즈 같은 핵심 개념을 한 번에 엮어서 이해할 수 있는 훌륭한 교재고요.

정리하면, 움직이는 모델의 BVH를 매번 다시 짓는 대신 사면체 케이지로 광선을 기준 자세 공간에 데려가 정적 BVH를 재활용하는 기법이에요. 여러분 프로젝트에서는 애니메이션 캐릭터의 레이 트레이싱 비용, 어디까지 감당해보셨나요?


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://gpuopen.com/learn/ray-tracing-massive-amounts-animat...
SHARE
처리 중...