
Arm은 모바일 디바이스에서 업스케일링을 위한 동급 최고의 오픈 소스 솔루션인 “Arm Accuracy Super Resolution”(Arm ASR)을 소개한다. 본문에서는 이에 대한 Arm의 접근 방식에 대해 설명할 예정이오니 독자분들께서도 동참해 주시기를 바랍니다.
훌륭한 게임은 플레이어를 감성적인 여정으로 안내한다. 게임 개발자 키트에는 이를 실현할 수 있는 다양한 툴이 있다. 감성을 자극하는 음악, 상상력을 자극하는 컨트롤 방식, 그래픽 효과 등이 그 예다. 그래픽에 집중해 보면, 모바일 게임에서 얼마나 정교한 그래픽을 구현할 수 있는지 놀라울 정도다. 게임은 수백만 개의 픽셀이 포함된 화면으로 렌더링 되며 60Hz 이상의 속도로 갱신된다. 이는 정말 놀라운 수준이다.
최신 모바일 게임은 개발자의 비전을 실현하기 위해 복잡한 조명과 셰이더(shader)를 사용하며 한계를 넘어서고 있다. 그러나 이 모든 과정은 비용을 수반하며, GPU에 부담을 주고 더 많은 양의 전력 소모를 야기한다. 심지어 하이엔드 PC에서도 이를 구현하려면 무언가는 포기해야 한다는 것을 인식하게 된다. 이것이 바로 업스케일링 기술이 필요한 이유다.
Arm ASR: Arm Accuracy Super Resolution
업스케일링은 프레임의 일부 단계를 낮은 해상도로 렌더링한 다음 나중에 이 기술을 적용하여 낮은 해상도에서 높은 해상도로 스케일링하는 방식으로 작동한다. 업스케일링은 전체 화면 효과나 사용자 인터페이스를 렌더링할 때 보기 불편한 결함을 초래할 수 있어 프레임 렌더링의 모든 단계에서 사용될 수 없다. 하지만, 파이프라인의 초기 단계에서는 매우 효과적으로 사용될 수 있으며, 프로세스의 일환으로 안티 앨리어싱(anti-aliasing) 효과를 제공할 수 있다.
프레임에서 업스케일링을 통합하는 과정
여러 솔루션 중, Arm은 AMD의 FidelityFX Super Resolution 2(FSR2)에 주목했다. 이 솔루션은 2016년에 시작된 오픈 소스 프로젝트인 GPUOpen의 일부이다. 허용된 MIT 라이선스를 통해 PC와 콘솔 간의 격차를 해결하는 데 도움을 주는 이식 가능한 솔루션을 제공하는 것을 목표로 하고 있다. 이러한 가치는 Arm의 관심을 끌었고, 모바일을 위한 최적의 솔루션이 무엇인지에 대해 고민하게 되었다.
업스케일러의 유형
업스케일러는 두 가지 종류가 있다: 공간적(spatial) 및 시간적(temporal)이다. 공간적 업스케일러가 먼저 등장하여 개발자들에게 제공되었다.
공간적 업스케일러는 프레임 단위로 작동하여 결과를 생성하므로 이해하기 쉽고, 이를 호스팅하는 게임 엔진의 요구 사항도 낮다. 공간적 업스케일러의 예시로는 FSR1와 퀄컴(Qualcomm)의 Game Super Resolution(GSR)이 있다. 이 기술의 단점은 최종 이미지가 흐릿하게 나타날 수 있기 때문에 개발자가 렌더링할 해상도를 너무 과감하게 선택할 수 없다는 것이다. 반면, 계산적인 측에서는 비용이 상대적으로 저렴하다.
시간적 업스케일러는 여러 프레임에서 파생된 정보를 결합하여 최종 결과를 생성하기 때문에 더 복잡하다. 일반적으로 낮은 해상도의 대상에서 더 높은 품질의 이미지를 생성하지만, 이로 인해 뎁스(depth)와 모션 백터 정보와 같은 게임 엔진의 추가 입력 요구사항이 발생한다. 파티클 효과(particle effect)와 같이 뎁스나 모션 정보가 부족한 기능을 처리할 때는 리액티브 마스크(reactive mask)를 사용하는 것이 바람직하다.
시간적 업스케일러로의 전환
Arm은 모바일 개발자들에게 이점을 제공하면서 일반적인 그래픽 성능 문제를 해결하기 위해 시간적 업스케일링으로 직접 전환하기로 결정했다. Arm의 출발점은 훌륭한 결과를 제공하지만 PC와 하이엔드 콘솔에서만 구현할 수 있는 AMD의 FSR2 업스케일러이었다. Arm은 FSR2에서 솔루션을 도출했으며, 이는 개발자가 익숙한 API와 구성 옵션을 활용할 수 있다는 것을 의미한다.
테스트 과정의 일환으로 Arm은 유명한 비스트로 장면을 사용했다. 이 장면에 더 많은 지역적(local), 중첩(overlapping) 조명과 주요 조명의 감쇠를 추가하여 약 280만 개의 삼각형을 렌더링하는 현실적인 컴퓨팅 과제를 만들었다.
Creative Commons CC-BY-4.0 라이선스에 따라 공개된 NVIDIA 제공 비스트로 장면
Arm은 Arm Immortalis-G720 GPU와 2800x1260의 디스플레이 해상도를 갖춘 상업용 모바일 디바이스에서 수집한 결과를 분석했다. 그 결과 GPU 성능이 크게 향상되었음을 확인할 수 있었다.
Arm ASR, FSR2, FSR1 및 GSR을 사용한 네이티브 해상도 및 업스케일링 성능의 프레임 속도 분석
동일하게 중요한 것은, 이 기술을 사용함으로써 고품질의 결과를 안정적이고 낮은 온도에서 렌더링할 수 있었다는 점이다. 네이티브 해상도로 렌더링할 경우, 불가피하게 발생하는 열 조절(thermal throttling)로 인해 게임에서 사용자 경험을 저해하고 몰입도를 떨어뜨릴 수 있다.
Arm ASR의 성능
Arm ASR의 뛰어난 성능은 GPU 부하와 대역폭 요구 사항을 모두 감소시킨 효율적인 셰이더 코드 조합 덕분이다.
FSR2 및 Arm ASR의 GPU 성능 분석
이러한 성능 향상은 전력 절감으로 이어져 사용자가 더 긴 배터리 수명을 누릴 수 있어 일상생활에서 큰 이점을 제공한다. 미디어텍(MediaTek)과의 협업의 일환으로, 이러한 주장을 검증하기 위해 Dimensity 9300 핸드셋을 사용하여 다음과 같은 결과를 얻었다.
네이티브 전체 해상도 1080p, Arm ASR 품질, 540p에서 1080p로의 밸런스 및 성능 업스케일링 품질, 네이티브 절반 해상도 540p
Arm의 게임 콘텐츠 팀은 미래의 모바일 GPU에 도전하기 위한 언리얼 엔진(Unreal Engine) 데모를 제작하기 위해 열심히 노력해 왔다. Arm은 해당 콘텐츠에 Arm ASR을 적용할 기회를 놓칠 수 없었다.
"Mori" 데모, Arm 콘텐츠 팀 제공
보시다시피, 이 장면에는 다양한 세밀한 디테일이 포함되어 있다. 그렇기 때문에 Arm ASR에서는 AMD의 FSR1과 2처럼 강력한 대비 적응형 샤프닝(Robust Contrast-Adaptive Sharpening, RCAS)을 지원한다. 결과가 이를 잘 나타낸다:
"Mori" 장면의 확대된 부분 이미지
오픈 소스에서의 결과 공유
Arm은 해당 작업의 결과를 매우 자랑스럽게 생각하며, 이를 MIT 오픈 소스 라이선스 하에 개발자 커뮤니티와 공유하고자 한다. 이를 통해 모든 개발자들이 Arm ASR의 혜택을 직접 체험하고 자신의 프로젝트에서 실험해볼 수 있을 것이다.