게임을 하시는 분이라면 DirectX라는 단어는 모든 분들이 아실거라 생각합니다. 이 단어가 컴퓨팅에서 정확히 어떤 것을 의미하는 것인지 관심이 없을지라도, 다이렉트 X란 단어는 어떤 게임을 하든지 필수적으로 따라붙고 접하게 되는 요소이기 때문입니다. 우린 모두 게임을 할때 게임의 사양이나 그래픽 옵션, 프레임레이트(Framerate)를 중요시하게 되고, 또한 게임이 출시될때 이 게임이 다이렉트 X의 최신 버전을 지원하는지 확인하기도 하고, 해당 게임을 실행하기 전에 다이렉트X 11로 실행할지, 12로 실행할지 선택할 수 있게 해주는 게임들도 있으니 반드시 다이렉트 X란 것에 관해서 궁금해지고 이것에 대해 알고 싶기 마련이죠.
우선 다이렉트X 11과 12차이에 대해서 설명하기 전에, 이 우선 다이렉트X라는 것이 간단히 어떤 것인지 짚고 넘어가야 할 필요가 있습니다.
* 다이렉트 X란 정확히 무엇인가? |
다이렉트 X에 대해서 간단히 설명하자면 컴퓨팅 멀티미디어, 특히 게임 프로그래밍과 비디오와 관련된 작업을 마이크로소프트 플랫폼에서 처리하기 위한 API(애플리케이션 프로그래밍 인터페이스)가 모아진 집합체라고 볼 수 있습니다.
따라서 간단히 설명하자면, 마이크로소프트 운영체제인 윈도우에서의 게임, 영상 등 각종 복잡한 연산을 필요로 하는 멀티미디어 프로그래밍 작업을 위해 만들어진 통합적인 API들이 모아서 만들어진 집합체라고 볼 수 있죠.
원래 이러한 API의 이름은 모두 Direct3D, DirectDraw, DirectMusic, DirectPlay, DirectSound 등과 같은 "Direct"로 시작되었고 이것은 개별적인 프로그램들이었으나 DirectX라는 이름은 이러한 모든 API(특정 API 이름을 나타내는 X)를 줄인 말로 만들어졌으며 곧 이 모든 API들을 통합하여 다이렉트 X라고 부르게 되었다는 것입니다.
마이크로소프트가 나중에 게임 콘솔 개발에 착수했을 때, 다이렉트 끝에 붙는 영문자인 X는 그들을 대표하는 콘솔 게임기인 XBOX가 Direct X 기술을 기반으로 한다는 것을 나타내기 위해 XBOX라는 이름을 사용하게 되었습니다.
따라서 복잡하지 않고 쉽게 결론을 내보자면, 다이렉트X는 게이밍에서 그래픽이나 오디어, 동영상 등 모든 프로세싱을 처리하는 통합 프로그램이라고 할 수 있으며 윈도우 기반의 모든 게임들은 다이렉트 X를 거친다고 생각하면 이해가 빠를 것입니다.
* 다이렉트 X 11과 12의 차이는 정확히 무엇인가? |
따라서 다이렉트X 11과 12의 차이는 이 통합 API 다이렉트 X 버전의 차이이며 당연히 최신 버전인 다이렉트 12가 '이론적' 으로는 모든 면에서 기술, 기능적으로 우월합니다.
하지만 어떤 프로그램이든 최신 버전이라고 무조건 좋은 것은 아니다라는건 우린 모두 알고 있습니다.
때로는 과거 버전이 나을 때도 있고 다이렉트 또한 그 사실에서 벗어나는 것은 아닙니다. 일단 두 버전의 차이에 대해서 설명하고, 왜 다이렉트 12가 무조건 좋은 것이 아닌건지 설명해보도록 하겠습니다.
전통적으로 DirectX 9와 11 기반 게임에서는 대부분의 게임들이 다양한 메카닉에 2-4개의 코어만 사용하였습니다.
Direct X 9나 11에서는 물리 엔진, 인공지능, 드로우 콜 등. 일부 게임들은 심지어 CPU 중 한개 코어, 즉 싱글 코어만 사용하도록 제한되기도 했습니다. 하지만 기본적으로 DirectX 12에서는 상황이 바뀌었습니다.
게임 연산의 부하가 모든 CPU 코어에 고르게 분산되어 있어 멀티 코어 CPU가 작업을 수행할때 더욱 더 최적화할 수 있게 만들어 줍니다. 따라서 멀티 코어 CPU를 잘 활용하여 게임에서의 부하를 줄이고 성능을 향상시킵니다.
* 다이렉트X 12는 11에 비해서 더 낮은 프로그래밍 제한으로 하드웨어 성능을 개발자들이 더 활용할 수 있게 한다. |
또한 DirectX 12의 장점은 더 낮은 로우 레벨-접근 권한을 제공하여, 게임 개발자들이 컴퓨팅 하드웨어의 성능을 더 이끌어내도록 돕습니다. 다이렉트x 12가 나오기 전에는, 이러한 것들은 더 추상적인 개념이었고 개발자가 하드웨어 성능을 이끌어내는데 제한적이었습니다. 대부분 그래픽카드, 윈도우 드라이버 같은 API에 의해 대부분 처리되었습니다.
하지만 다이렉트x 12는 마이크로소프트가 CPU든 그래픽카드든 컴퓨터 하드웨어를 개발자가 성능을 더 이끌어낼 수 있게끔 소프트웨어 기능을 더 향상시키고 더 깊은 부분을 건드릴 수 있게 함으로써 이러한 제한을 낮췄다는 말이죠.
DirectX 12의 또 강력한 장점은 오버헤드 감소로 인한 향상된 퍼포먼스를 제공한다는 점입니다.
오버헤드란 어떤 처리를 하기 위해 들어가는 간접적인 처리 시간, 잡아먹는 리소스, 메모리 등을 말하는데, 이러한 오버헤드들이 기본적으로 다이렉트X 11에 비해서 더 퍼포먼스가 향상되었기 때문에 기존의 게임 그래픽에서의 안개, 연기 효과, 폭발 효과 등 리소스를 많이 잡아먹었던 그래픽 효과들을 커다란 프레임 감소 없이 표현이 가능하게 되었습니다.
* 그래서 다이렉트X 12는 11보다 우월하다고 결론을 지을 수 있는가? |
그래서 다이렉트X 12가 게임에서 다이렉트X 11보다 더 성능이 높다고 결론지을 수 있을까요?
이론적으로는 그렇지만 현실은 '전혀 아니다.' 입니다.
게임에 따라 다이렉트X 12가 프레임이 더 높은 경우도 있고 최적화가 더 좋을 수도 있고 이론적으론 그래야하지만 현실은 전혀 다릅니다. 오히려 다이렉트X 11로 돌리는 것이 프레임이 더 잘나오고 안정적인 게임들이 많으며, 오히려 다이렉트X 12의 성능이 떨어지는 경우가 많습니다.
왜 이런 현상이 벌어지는 것일까요?
우선 다이렉트X 12의 탄생 배경을 봐야할 필요가 있습니다. 다이렉트X 12는 AMD가 2010년대 초에 개발한 맨틀(Mantle)에서 선보인 아이디어를 기반으로 한 로우 레벨 API입니다. 따라서 다이렉트X 12는 AMD가 맨틀로 처음 선보였던 기술, 아이디어에 기반한 API라고 볼 수 있는데, 따라서 엔비디아 즉, 지포스 그래픽카드는 타사의 기술을 기반으로 한 이러한 로우 레벨 API에 호환성이나 안정성이 떨어질 수 밖에 없습니다.
AMD 그래픽카드가 엔비디아 그래픽카드보다 다이렉트X 12에서 더 높은 성능을 보여주는 이유도 이것 때문입니다.
따라서 다이렉트X 12가 11에 비해서 이론적인 퍼포먼스는 더 좋을지 몰라도 개발을 할때 어려운 난이도의 프로세스 과정을 사용하여 구현을 해도 실질적인 성능 향상은 이론보다 실전은 그 성능 향상이 그렇게 크지 않고, 오히려 그 과정에서 다른 하드웨어와의 안정성이 떨어지고 더 복잡한 연산 과정을 필요로 하기에 게임을 개발할때 개발자들에게 오히려 더 귀찮을 수도 있고 그것이 오히려 악효과를 불러일으킨다는 말이죠.
그리고 다이렉트X 11이 이전 버전인 만큼 오히려 안정성이나 개발 환경이 더 간편하여 오히려 윈도우7을 기반으로한 다이렉트X 11을 개발자들이 선호하는 경우도 많습니다.
* 결론 |
다이렉트X 12는 어찌됬건 마이크로소프트의 핵심 기술이고 이론적으로는 잠재력이 있기에 앞으로의 전망은 좋을지도 모르지만, 엔비디아는 자사의 RTX 기술과 DLSS를 활용한 최적화 기술을 이미 선보이고 있어서 다이렉트X 12가 무안단물은 아니며, 마이크로소프트가 다이렉트X 12의 활용법과 기술을 더욱 업데이트하고 모든 개발자들이 효과적으로 활용할 수 있게 범용성을 늘려야 그 효과를 제대로 볼 수 있을 것으로 보입니다.
마이크로소프트는 자사의 콘솔인 XBOX 시리즈에 계속 AMD GPU를 탑재하고 있고 AMD와 계속 기술 협업을 진행중입니다.
당연히 다이렉트X 12에 관련해서 계속 연구중인 만큼 기술은 발전할 것이기에 당연히 전망은 밝지만, 지금 당장의 시점에서 판단하면 다이렉트X 12는 이론적으론 좋지만 실질적으로는 생각보다 성능이 떨어진다고 볼 수 있습니다.
* 참고 문헌 (1) - https://www.hardwaretimes.com/what-is-the-difference-between-directx-11-and-directx-12/
(2) - https://en.wikipedia.org/wiki/DirectX