원글 주소 http://www.bloter.net/archives/206949
애플 ‘메탈 API’, 모바일게임 성능 10배 ↑

한국시각으로 지난 9월11일 진행된 애플의 새 ‘아이폰’ 발표 행사는 이후 수많은 얘깃거리를 낳았다. ‘아이폰6’와 ‘아이폰6플러스’를 중심으로 ‘애플워치’도 이야기의 중심에 섰다. 하지만 만약 게임 업계 관계자라면, 스마트폰에서 더 나은 품질의 게임을 즐기고픈 게이머라면, 그날 애플이 발표한 내용 중에서도 애플의 ‘메탈(Metal)’ 얘기에 귀를 쫑긋 세우지 않았을까. 메탈은 애플이 모바일기기에서 게임 성능을 극대화하기 위해 개발한 새 API다.

한국시각으로 9월18일 애플의 최신 모바일기기용 운영체제 ‘iOS8’이 배포되기 시작했다. 이와 동시에 에픽게임즈에서는 애플의 메탈 API를 적용한 그래픽 미리보기용 게임 ‘에픽 젠 가든’을 배포하기 시작했다. 지금으로서는 게이머가 메탈 API의 진보된 게임 성능을 체험할 유일한 콘텐츠다. 에픽게임즈의 결과물을 바탕으로 애플의 메탈이 앞으로 모바일게임 수준을 어떻게 끌어올릴지 살펴보자.

apple_metal_1_800

모바일게임 성능의 유리천장, ‘오픈GL ES’

애플의 메탈 API가 하는 일을 살펴보려면, 먼저 게임이 하드웨어에서 어떻게 구현되는지 알아야 한다. 게임이 모바일기기 화면에 구현되는 과정은 다음과 같다. 사용자의 입력을 모바일기기가 받으면, 모바일기기 중앙처리장치(CPU)는 그래픽처리장치(GPU)에 그림을 그리라는 명령을 내린다. 이를 ‘드로우콜'(Draw Call)이라고 부른다. CPU의 명령에 따라 GPU가 화면에 뿌려주는, 이를테면 게임 속 텍스처나 사진, 캐릭터 등 모든 요소가 바로 게임 화면을 이루는 핵심이다.

이 과정에서 문제가 생긴다. 수많은 GPU 제조업체가 있고, 각각의 플랫폼에서 한꺼번에 돌아가는 게임을 만드는 것은 불가능하다. 그렇다고 게임 개발자는 어느 한 플랫폼만을 대상으로 게임을 만들 수는 없다. 그래서 나온 것이 바로 ‘오픈GL ES’다. 오픈GL ES는 소프트웨어의 3D 렌더링 기술을 각기 다른 하드웨어에 통합적으로 구현하기 위한 명령어 세트다. 지금까지 오픈GL ES는 아이폰과 안드로이드 스마트폰에서 모바일게임을 구현하기 위한 통합 레이어 역할을 해 왔다.

오픈GL ES의 가장 큰 문제점은 명령어를 전달하고 게임 그래픽을 화면에 구현하는 데까지 걸리는 오버헤드가 많이 발생했다는 점이다. 오버헤드는 명령어가 전달되는 과정 등을 이르는 말이다. 게임 화면을 그리는 하드웨어 처지에서 보면, 게임 구현과 관계가 적은 일종의 ‘추가비용’이 바로 오버헤드다.

예를 들어 CPU가 GPU 쪽에 그림을 그리라는 명령어를 전달하는 과정에서 CPU의 명령어 해석이 필요하다. 이 해석에 도움을 주는 것이 오픈GL ES의 라이브러리인데, 그림을 그리라는 명령어를 해석해 이를 다시 GPU에 전달하는 것 만으로도 CPU에 가해지는 부담이 적잖다. 게임 개발자가 모바일기기에서 게임의 성능을 높이는 것에 가장 큰 걸림돌로 오픈GL ES의 높은 오버헤드를 꼽는 것도 바로 이 때문이다. 오픈GL ES가 범용적인 3D 그래픽을 구현하기 위한 다양한 하드웨어를 목표로 정립된 탓이다.

△ 언리얼엔진으로 제작된 ‘에픽 젠가든’

GPU에 더 가까이

“애플은 명령어를 전달하는 데 오픈GL ES가 아닌 메탈이라는 중간단계 API를 개발한 것입니다. 이전에는 하드웨어 속에서 게임에 필요한 그림을 그리기 위한 명령을 날릴 때 차지하는 비중이 컸는데요. 메탈을 쓰면 이 과정이 짧아집니다.”

애플의 메탈은 오픈GL ES를 대체한다. 신광섭 에픽게임즈코리아 차장은 “모바일기기가 원하는 것은 사용자의 명령에 따라 GPU가 화면에 그림을 그리도록 하는 것뿐인데, 그 과정을 위해 거쳐야하는 해석이나 분석 과정(오버헤드)이 크니 게임의 품질을 높이기 어려웠다”라며 “메탈은 오버헤드를 줄일 수 있도록 돕는다”라고 부연했다.

에픽게임즈가 18일 앱스토어에 출시한 ‘에픽 젠가든’을 보자. 메탈 API가 적용된 콘텐츠로 뛰어난 그래픽 품질을 자랑한다는 점이 특징이다. 그래픽품질 뿐만 아니라 화면에 표현할 수 있는 물체의 수도 획기적으로 늘어났다.

예를 들어 ‘에픽 젠가든’ 화면에 있는 나무 그래픽을 터치하면, 나무에서 수많은 꽃이 핀다. 꽃잎도 동시다발적으로 떨어진다. 꽃과 꽃잎 하나하나가 모두 명령에 의해 처리되는 그래픽 요소다. ‘에픽 젠가든’에서는 나비도 그래픽으로 보여주는데, 사용자의 터치를 따라 움직이는 수많은 나비도 볼 수 있다.

신광섭 차장은 “오픈GL ES를 쓸 때는 CPU가 요소 하나를 그리도록 명령했을 때 발생하는 오버헤드가 커서 한 화면에 많은 오브젝트를 구현하기 어려웠다”라며 “메탈을 쓰면 더 많은 드로우콜을 더 빨리 처리할 수 있어 화면에 표현할 수 있는 요소를 크게 늘릴 수 있다”라고 설명했다.

메탈은 게임의 그래픽품질뿐만 아니라 아이폰의 배터리 사용 시간에도 영향을 미친다. 아이폰이 게임을 구현할 때 CPU에 가해지는 부하를 메탈 API가 근본적으로 줄여주는 덕분이다. 메탈 API를 적용한 게임은 기존 오픈GL ES를 사용하는 게임과 비교해 최대 10배 이상 높은 성능을 낼 수 있다는 게 애플의 주장이다.

apple_metal_4_800

‘에픽 젠가든’에 구현된 나비. ‘메탈’을 쓰면, 손가락을 따라 실시간으로 반응하는 수많은 요소를 동시에 표현할 수 있다.

게임 성능 극대화 바람, 모바일까지

애플의 메탈 API는 마이크로소프트(MS)의 ‘다이렉트X’ 버전 12와 AMD의 새 게임 개발 API ‘멘틀(Mantle)’을 떠올리도록 한다. 다이렉트X는 윈도우 운영체제를 중심으로 다양한 하드웨어를 지원하기 위한 API고, 멘틀은 AMD의 일부 고성능 그래픽카드에 최적화된 게임 개발 API다. 다이렉트X 12와 멘틀 API의 목표는 같다. CPU의 병목현상을 줄이고, GPU가 낼 수 있는 최대의 성능을 활용해 게임 품질을 끌어올리는 것이다.

다시말하면, 메탈 API는 PC 게임 개발 업계의 최근 기술 트렌드를 애플이 재빨리 따라잡은 결과물인 셈이다. 애플의 수직 통합된 하드웨어 정책이 큰 도움이 됐음은 물론이다.

생각해보자. 애플은 하드웨어와 소프트웨어를 모두 만드는 업체다. 아이폰 한 종류에는 칩셋 하나만 탑재된다. 예를 들어 ‘아이폰5S’에는 ‘A7’ 프로세서가, 새로 나온 ‘아이폰6 플러스’에는 ‘A8’ 칩이 들어가 있다. 디자인과 설계 모두를 애플이 담당하는 단일 칩셋으로 게임 개발자는 여기에 최적화된 게임 개발 방법론으로 게임을 코딩하면 된다. 오픈GL ES라는 범용적인 명령어 세트를 더이상 고집하지 않아도 되는 까닭이 여기 있다.

애플의 메탈 API가 적용된 게임으로는 ‘에픽 젠가든’과 앞으로 출시될 ‘베인글로리’ 등이 있다. 애플은 에픽게임즈뿐만이 아니라 일렉트로닉아츠(EA)와 디즈니, 게임로프트, 유비소프트, 징가, 스퀘어에닉스 등 굵직한 게임 개발업체와 손잡았다. 앞으로 아이폰용 모바일게임은 빠른 속도로 품질과 성능을 높여갈 것으로 기대된다. 메탈 API는 A7칩과 A8칩이 탑재된 아이폰에서만 동작한다는 점은 유념하자.

apple_metal_2_800

‘매탈’을 지원하는 게임 개발업체

메탈 API는 수직통합의 산물…구글은?

구글의 안드로이드 OS는 어떨까. PC와 모바일기기 모든 진영에서 하드웨어와 더 밀착하기 위한 게임 개발 방법론이 대세로 떠오른만큼, 구글도 장기적으로는 메탈 API와 비슷한 새 API를 내놓을 가능성이 높다. 하지만 빠른 시간 안에 적용되기는 어렵다. 애플과 전혀 다른 방식으로 운영되는 하드웨어 생태계를 갖고 있기 때문이다.

안드로이드폰은 삼성전자와 LG전자, 중국의 샤오미, ZTE, 화웨이 등이 모두 달려들어 개발 중이다. 각각의 제품 속에는 각기 다른 프로세서가 들어가 있다. 삼성전자가 개발한 제품이라고 해도 퀄컴의 프로세서로 동작하는 스마트폰도 있고, ‘엑시노스’ 칩으로 구동되는 기종도 있다. 다양한 하드웨어를 통합해 지원하기 위한 기술이 오픈GL ES인데, 구글은 이를 대체할 다른 기술을 개발할 수 있을까. 만약 그렇다면, 그것은 애플의 메탈과 같은 형태가 아니라 또 다른 오픈GL ES일 뿐이다.

업계 관계자는 “각각의 그래픽칩셋은 통신을 위한 인터페이스를 적용해야 하는데, 구글이 오픈GL ES외에 다른 것을 만든다고 하더라도 하드웨어 업체가 그 API를 바로 적용할지는 의문”이라며 “여러 하드웨어를 지원하는 안드로이드의 숙명이기도 하다”라고 풀이했다.


'Graphics > 참고' 카테고리의 다른 글

Khronos Vulkan(벌칸) API  (0) 2015.03.27

+ Recent posts