AMD가 GDC 2017에서 TrueAudio Next and Multimedia AMD APIs in Games라는 제목의 강연을 했습니다. 트루오디오 넥스트 자체는 2016년 8월에 AMD가 발표한 새로운 음향 처리 기술인데, 이번엔 그걸 게임에서 활용하는 방법에 대해 말했네요.
우선 트루오디오는 사운드 처리를 위한 DSP(Digital Signal Processor)를 통합한 일부 라데온 그래픽카드에서 쓸 수 있는 컨벌루션 리버브 기능이었습니다. 특정 장소에서 실제로 음향을 측정해 이를 바탕으로 시뮬레이션함으로서 소리에 현실감을 주는 것이죠.
트루오디오 넥스트라면 폴라리스 아키텍처 이후 라데온 GPU에서 레이 트레이싱 소프트웨어 기술인 라데온 레이를 이용해 32스테레오(64채널)로 2초 이상 컨벌루션 리버브를 적용할 수 있는 기능이라고 AMD는 정의합니다.
기존의 게임 사운드는 게임 장면과 상황에 따라 리버브를 걸거나 피치를 바꾸거나 강약을 바꾸는 식이었습니다. 텍스처가 없는 3D 그래픽 같다고 말하네요.
하지만 최근 게임 사운드는 게임 상황에 따라 소리를 동적으로 만들어 냅니다. 플레이어 캐릭터가 있는 환경에 따라 거기라면 이렇게 달리겠다 싶은 소리를 계산해 만들어내는 소리의 모델링을 하게 됐다네요.
이런 기술은 VR 컨텐츠에서 특히 중요합니다. VR 공간 안에 있는 것과 같은 감각을 얻기 위해선 더욱 리얼한 소리가 필요하기 때문. 문제는 이런 사운드 처리에 프로세서 파워가 필요하다는 것, 그래서 트루오디오 넥스트가 나온다는 게 AMD의 주장입니다.
트루오디오 넥스트에선 사운드 전용 큐와 연산 유닛을 GPU에 할당해 실시간으로 처리할 수 있도록 됐다고 합니다. OpenGL 기반이며 OpenCL 프로그램과도 궁합이 좋다고. AMD는 프로그래머가 트루오디오 넥스트를 쉽게 활용할 수 있도록 헤더 파일과 라이브러리를 GPUOpen을 통해 배포 중입니다. AMD GPU에서만 쓸 수 있다는 건 아쉬운 일이나 게임 사운드의 부하를 줄이는 효과는 있다고.
그럼 트루오디오 넥스트를 쓰면 어떤 장점이 있을까요? 트루오디오 넥스트는 최대 32 스테레오964채널)을 2초 이상 컨벌루션 리버브 처라흔데, 여기에 필요한 건 4개의 CU 뿐입니다. CPU에선 1코어로 8개의 스트림을 처리하는 게 고작입니다.
AMD GPU는 여러 작업을 병렬 실행할 수 있는데 트루오디오 넥스트에서 사운드 작업을 우선적으로 처리한다는 점도 흥미롭습니다. 실시간/높음/보통의 3단계로 조절 가능하다네요. 또 처리 지연도 늦고.
트루오디오 넥스트는 프로그래머가 라이브러리나 엔진 플러그인을 통해 쓰게 됩니다. 여기에선 유니티 기반으로 데모를 했으나 언리얼 엔진 4의 플러그인도 개발 중이라고.
게임 구동시 CPU의 부담을 덜기 위해설까요, 아니면 여유를 줄이기 위해서일까요?