Windows 운영 체제 내 Direct3D의 통합은 수년 동안 개인용 컴퓨터 하드웨어의 이질적인 환경을 하나의 3D 지원 캐노피 아래 통합하는 데 중추적인 역할을 해왔습니다. 그럼에도 불구하고 때때로 DXVK와 같이 Linux용으로 특별히 설계된 소프트웨어 애플리케이션을 활용하면 Windows 플랫폼에서 실행하더라도 더 유리한 경험을 제공할 수 있다는 것이 분명해졌습니다.

DXVK는 응용 프로그램과 게임의 호환성과 성능을 향상시키는 소프트웨어 솔루션입니다. 프로그램과 게임의 향상된 기능을 찾고 있다면 DXVK를 사용해 볼 가치가 있습니다.

Windows에서 DirectX의 문제점

Microsoft는 소프트웨어 개발자가 모든 개인용 컴퓨터의 하드웨어 기능을 활용할 수 있도록 하는 통합 플랫폼으로 DirectX를 개발했습니다. 이제 개발자는 각 개별 하드웨어 구성 요소에 대해 별도의 코드베이스를 구성하는 대신 DirectX의 DirectDraw(2D 그래픽), Direct3D(하드웨어 기반 3D) 및 DirectSound(오디오) 라이브러리를 타겟팅하는 데 집중할 수 있습니다. 이후에는 Microsoft의 기술이 개발자의 코드를 각 하드웨어 요소의 모국어로 번역하는 작업을 수행합니다.

Windows 내에서 중요한 구성 요소인 DirectX의 통합은 지속적으로 발전해 왔습니다. 그럼에도 불구하고 Direct3D의 모든 반복에 대해 완벽한 호환성을 보장할 수는 없다는 점에 유의하는 것이 중요합니다.

Microsoft는 Direct3D API(응용 프로그래밍 인터페이스)를 지원하는 그래픽 처리 장치(GPU) 개발자와 함께 이전 버전의 Direct3D에서 도입되었지만 널리 채택되지 않은 특정 기능에 대한 지원을 중단한 것으로 관찰되었습니다. 따라서 일부 구형 비디오 게임은 최신 버전의 Direct3D를 사용하는 최신 GPU에서 실행할 때 호환성 문제가 발생할 수 있습니다.

벌칸이란?

Microsoft의 독점적인 Direct3D에 대한 개방형 대안으로 여겨지던 OpenGL은 실제로는 Silicon Graphics에서 그래픽 워크스테이션에 사용하던 3D 그래픽 라이브러리를 수정한 것이라고 알려져 있습니다.

OpenGL은 Microsoft의 Direct3D와 비교했을 때 기능 면에서 지속적으로 뒤쳐져 있었습니다. 그 결과 새로운 시작이 필요하다는 판단이 내려졌습니다. 이에 따라 향상된 성능과 하드웨어 리소스에 대한 더 강력한 제어 기능을 제공하는 ‘차세대 OpenGL’이라고도 불리는 벌칸이 탄생했습니다.

Windows 플랫폼에서만 사용할 수 있는 OpenGL과 달리 벌칸은 Windows, Linux, 모바일 디바이스 등 여러 운영 체제에서 활용할 수 있는 크로스 플랫폼 API입니다.또한, Apple 제품에서 기본적으로 지원되지는 않지만, MoltenVK라는 대체 구현을 통해 macOS에서 벌칸을 계속 사용할 수 있습니다.

벌칸에 대한 보다 포괄적인 이해는 Windows의 벌칸 런타임 라이브러리에 대한 문서를 참조하세요.

DXVK란 무엇인가요?

DXVK와 같은 래퍼는 Direct3D 애플리케이션을 벌칸과 호환되도록 변환하여 서로 다른 시스템 간의 중개자 역할을 합니다. 이 기능은 서로 다른 언어를 사용하는 화자 간의 의사소통을 원활하게 하는 언어 통역사의 기능과 유사합니다. 마찬가지로 번역 레이어는 한 유형의 하드웨어, 플랫폼 또는 API용으로 설계된 코드를 다른 유형 내에서 작동하도록 변환할 수 있습니다.

이 글도 확인해 보세요:  Google의 주변 공유를 사용하여 Android와 Windows 간에 파일을 공유하는 방법

DXVK 프로젝트는 처음에 Linux 운영 체제에서 작동하도록 설계되었으며, Valve Corporation의 지원을 받아 SteamOS 및 스팀덱(Steam Deck)의 일부로 활용하고 있습니다. 이 문제에 대한 자세한 내용은 Steam 양성자의 복잡성과 스팀덱(Steam Deck)에서 Windows 기반 게임을 작동하는 기능을 다룬 이전 게시물을 참조하시기 바랍니다.

Windows에서 DXVK를 사용해야 하는 이유는 무엇인가요?

게임이 이미 자신의 기기에서 최적의 성능을 발휘하고 있다면 DXVK를 사용해야 할 이유가 없을 수도 있습니다. 그러나 이전 버전의 DirectX로 제작된 특정 비디오 게임은 최신 버전의 DirectX 및 최신 하드웨어에서 실행하려고 할 때 호환성 문제가 발생할 수 있습니다.

오래된 Direct3D 코드를 고급 벌칸 API로 업데이트하는 프로세스는 성능에 미미한 영향을 미치지만, 잠재적으로 기능을 복원하고 문제가 있는 게임의 그래픽 문제를 해결할 수 있습니다.

Direct3D 12와 함께 Vulkan을 사용하면 DirectX 11과 같은 이전 버전의 Direct3D와 비교했을 때 성능이 향상되는 것으로 나타났습니다. 따라서 성능 향상을 위해 기존 Direct3D 게임을 Vulkan을 활용하도록 변환하는 것이 유리할 수 있습니다.

Arc GPU에 대한 인텔의 노력은 이러한 접근 방식의 실현 가능성을 보여줍니다. 인텔은 Arc GPU 드라이버에 모든 레거시 타이틀에 대한 지원을 포함하기 위해 노력하는 대신 DXVK를 개선하는 데 집중하기로 결정했습니다. 인텔의 실험에 대한 예비 테스트 결과 성능이 눈에 띄게 향상되어 이전에는 플레이할 수 없었던 여러 게임이 이제 DXVK를 통해 플레이할 수 있게 되었습니다.

Windows에서 DXVK를 사용하는 방법

Microsoft Windows 운영 체제에서 DXVK를 사용하는 데는 복잡한 조정이나 구성이 필요하지 않습니다. 원하는 비디오 게임의 적절한 디렉토리에 프로그램을 다운로드하여 압축을 풀기만 하면 바로 사용할 수 있습니다.

해당 게임에서 사용하는 Direct3D 버전에 해당하는 적절한 버전의 DXVK를 사용하는 것이 필수적입니다.

최신 버전의 DXVK를 다운로드하고, 게임의 기술 사양을 파악하고, 적절한 디렉터리에 적절한 동적 링크 라이브러리를 설치하는 데 도움을 드릴 수 있나요?

DXVK 다운로드 방법

DXVK 프로젝트는 공개적으로 액세스할 수 있는 무료 애플리케이션으로, GitHub에서 다운로드할 수 있습니다.

⭐ DXVK의 공식 GitHub 페이지 을 방문하여 페이지 오른쪽의 릴리스 아래 최신 버전 링크를 클릭하세요.

이 글도 확인해 보세요:  ALCMTR.EXE는 바이러스인가요?

⭐ 릴리스 페이지에서 아래로 스크롤하여 최신 버전의 자산 섹션을 찾습니다. 최신 DXVK tar.gz 아카이브를 클릭하여 다운로드합니다. 이 글을 쓰는 시점에 버전 2.2였습니다.

다운로드한 파일은 Direct3D 대신 DXVK를 사용하여 플레이하려는 각 게임의 해당 폴더에 내용을 압축을 풀어야 하므로 쉽게 액세스할 수 있는 위치에 저장하세요.

올바른 DXVK 버전 선택 방법

PC 게임 위키에서는 게임별 Direct3D 활용에 관한 정보를 제공하며, 사용 중인 특정 버전을 결정하기 위해 참고할 수 있습니다.

⭐ 브라우저로 PC 게이밍 위키 을 방문하여 오른쪽 상단의 검색창을 사용하여 DXVK를 추가할 게임을 찾으세요.

⭐ 원하는 게임을 찾으면 해당 페이지를 방문하여 아래로 스크롤하여 기타 정보 섹션으로 이동합니다. API 표에 주의를 기울이세요. 기술 사양 및 지원되는 열에서 게임에 사용 중인 Direct3D 버전을 확인할 수 있습니다. 그 아래에 있는 실행 가능, 32비트, 64비트 열은 어떤 아키텍처를 선택해야 하는지 “알려줍니다”.

게임에 DXVK를 추가하는 방법

게임이 적절한 버전의 Direct3D 및 CPU 아키텍처와 호환되는지 확인하려면 게임 디렉터리에 해당 버전의 DXVK를 설치해야 합니다.

⭐ 즐겨 사용하는 아카이브 관리자(이 기사에서는 WinRAR을 사용함)로 DXVK 아카이브를 열고 거기에 표시되는 단일 DXVK 폴더를 입력합니다.

⭐ 내부에는 컴퓨터 아키텍처별로 하나씩 두 개의 하위 폴더가 있습니다. 게임에 맞는 폴더를 입력하세요. 현재 대부분의 Windows 버전과 마찬가지로 OS가 64비트인 경우에도 게임이 32비트인 경우 32비트 폴더를 선택해야 합니다.

⭐ DXGI.DLL과 게임에서 사용 중인 Direct3D 버전에 맞는 올바른 DLL을 선택합니다. 보시다시피 Direct3D의 이전 버전인 9, 10 및 11에 대해 각각 하나씩 세 개의 DLL이 더 있습니다.

⭐ 게임이 설치된 로컬 폴더를 찾아 실행 파일(“게임이 실행되는 파일”)이 있는 하위 폴더를 찾습니다. 이전 단계의 DLL을 이 폴더에 압축을 풉니다.

향상된 게임 테스트 및 벤치마크 방법

현재 게임을 실행할 때 Direct3D 대신 Vulkan을 활용하면 성능이 향상될 것으로 예상됩니다.

아캄 시티는 게임 사양을 뛰어넘는 Ryzen 5900x, 64GB RAM, Nvidia RTX 3070 GPU가 장착된 컴퓨터 시스템에서 실행되었습니다. 매우 높은 프레임 속도를 달성했지만 Vulkan으로 전환했을 때 프레임 속도에 거의 차이가 없었습니다.

화면 간 전환, 레벨 로딩, Alt+탭 동작이 지연을 최소화하면서 빠르게 실행되어 DXVK를 사용할 때 게임 성능이 더욱 매끄럽고 유동적인 경험을 보여주었습니다.

DXVK를 사용해서는 안 되는 경우

DXVK는 많은 이점을 제공하고 오래된 게임을 최신 성능으로 끌어올릴 수 있지만, 활용에 제한이 없는 것은 아닙니다. 성능 향상을 위한 만병통치약으로 간주해서는 안 되며, 적용해도 유의미한 결과를 얻지 못하거나 오히려 해가 될 수 있는 경우도 있습니다.

DXVK가 게임 성능을 향상시키지 못함

게임에 DXVK DLL을 설치한 후에도 아무런 변화가 없는 경우 재량에 따라 제거할 수 있습니다. 제거하려면 게임 디렉터리에 추가된 DLL을 삭제하기만 하면 됩니다.

이 글도 확인해 보세요:  동적 테마 앱으로 최고의 Bing 및 Windows 스포트라이트 배경화면을 얻는 방법

DXVK로 인해 성능이 저하되거나 새로운 글리치가 발생함

때때로 DXVK를 게임에 통합하면 의도하지 않은 결과가 발생할 수 있습니다. 유감스럽게도 최종 사용자가 실행할 수 있는 이 상황에 대한 해결책은 없습니다.

게임에서 DXVK를 구현하면 성능 저하 또는 시각적 이상이 발생했습니다. 이 문제를 해결하려면 게임을 종료하고 게임 디렉터리에서 DXVK DLL 파일을 제거하십시오.

게임을 온라인으로 플레이하고 싶습니다

DXVK는 호환성 브리지 역할을 하는 소프트웨어 구성 요소로, 비디오 게임의 시각적 표현에만 영향을 줍니다. 그러나 특정 기업에서는 모든 사용자에게 공평한 경쟁의 장을 유지하기 위해 제품의 모든 형태의 변경 또는 수정을 반대합니다.

DXVK는 그 자체로는 ‘부정 행위’에 해당하지 않을 수 있지만, ‘게임 수정’의 한 형태로 간주되어 부정 행위로 신고될 가능성이 있습니다.

게임에 이미 벌칸 지원이 내장되어 있음

둠 이터널과 같이 벌칸 API(애플리케이션 프로그래밍 인터페이스)를 사용하는 애플리케이션을 구성할 때 Direct3D API를 대신 사용하도록 구성한 다음 벌칸으로 변환하는 것은 정당화할 수 없습니다.

게임에서 Direct3D 12 사용

Direct3D 12가 기능 및 성능 측면에서 Vulkan과 거의 동등한 수준에 도달했으므로 이 두 가지 고급 그래픽 API 간 변환을 통해 얻을 수 있는 이점은 거의 없습니다.

Windows에서 “번역된” 3D로 기존 게임 향상

Linux에서 Windows 애플리케이션을 실행하기 위해 설계된 오픈 소스 도구인 DXVK는 후자의 플랫폼에서 더 많은 게임에 액세스하기 위한 수단으로 시작되었지만 궁극적으로 호환성을 향상시킬 뿐만 아니라 전반적인 성능을 개선하는 다목적 유틸리티로 발전했습니다. 따라서 이러한 파일이 있으면 이상 현상을 제거하고 효율성을 높이며 원활한 게임 경험을 제공하고 전반적인 감도를 높일 수 있는 모든 애플리케이션에 추가할 수 있도록 쉽게 사용할 수 있는 DXVK의 DLL 컬렉션을 유지하는 것이 좋습니다.

이 방법을 시도하는 것이 도움이 되지는 않겠지만, 테스트하는 데 최소한의 시간이 필요하며 예상치 못한 결과를 자주 접할 수 있습니다.

By 박준영

업계에서 7년간 경력을 쌓은 숙련된 iOS 개발자인 박준영님은 원활하고 매끄러운 사용자 경험을 만드는 데 전념하고 있습니다. 애플(Apple) 생태계에 능숙한 준영님은 획기적인 솔루션을 통해 지속적으로 기술 혁신의 한계를 뛰어넘고 있습니다. 소프트웨어 엔지니어링에 대한 탄탄한 지식과 세심한 접근 방식은 독자에게 실용적이면서도 세련된 콘텐츠를 제공하는 데 기여합니다.