콘텐츠로 이동

DXMT에 관하여

DXMT는 DirectX 11 그래픽 호출을 Apple Metal API로 변환하는 그래픽 변환 레이어입니다. macOS는 DirectX를 직접 지원하지 않으므로, Windows 게임을 실행하려면 그래픽 명령을 macOS가 처리할 수 있는 형태로 바꾸는 과정이 필요합니다. 밥똥이리호요에서는 이터널 리턴과 HoYoverse 게임의 DirectX 11 실행 경로를 다루기 위해 DXMT를 중심으로 구성합니다.

DXMT를 사용하는 이유는 크게 두 가지입니다.

DXVK처럼 DirectX 호출을 Vulkan으로 변환하는 방식도 존재합니다. 하지만 macOS는 Vulkan을 네이티브 그래픽 API로 제공하지 않기 때문에, Vulkan 호출을 다시 Metal로 변환하는 추가 계층이 필요할 수 있습니다. 이 구조는 호출 비용과 성능 면에서 불리할 수 있습니다. 반면 DXMT는 DirectX 11 명령을 Metal로 더 직접적으로 연결하는 것을 목표로 합니다. 이 프로젝트가 DXMT를 중심으로 구성되는 이유도 이 지점에 있습니다.

2. 오픈소스라서 수정할 수 있습니다

섹션 제목: “2. 오픈소스라서 수정할 수 있습니다”

DXMT는 오픈소스이므로 프로젝트 요구에 맞게 코드를 수정할 수 있습니다. 현재 일부 환경에서 나타나는 초록색 섬광이나 이펙트 깨짐 현상은 Apple 그래픽 드라이버에 전달되는 특정 값 때문에 발생할 수 있습니다. 이를 완화하려면 그래픽 드라이버에 값이 전달되기 전에 문제가 될 수 있는 값을 안전한 범위로 조정해야 합니다. 커스텀 DXMT는 DXMT 코드 안에서 문제가 될 가능성이 있는 값을 안전한 값으로 필터링하도록 수정할 수 있습니다.

DXVK도 오픈소스라 수정 자체는 가능하지만, 앞서 설명한 Vulkan 경유 구조 때문에 이 프로젝트의 우선 선택지에서는 제외됩니다. GPTK는 소스가 공개되어 있지 않아 같은 방식으로 수정하기 어렵습니다.

DirectX 11 -> Metal

런처에서 Bottle을 만들 때 DXMT 버전을 함께 선택합니다. 선택한 DXMT는 해당 Bottle 안에서 실행되는 게임의 그래픽 변환 경로에 사용됩니다. 게임마다 필요한 DXMT 버전이나 옵션이 달라질 수 있으므로, 문제가 발생하면 Wine 버전뿐 아니라 DXMT 버전과 실행 옵션도 함께 확인하는 것이 좋습니다. 현재는 한 개의 DXMT만 제공하므로 사용자가 버전을 따로 고민할 필요는 없습니다.

DXMT가 있다고 해서 모든 DirectX 게임이 자동으로 실행되는 것은 아닙니다. 게임이 사용하는 DirectX 기능, 셰이더, 안티치트, 런처 구조에 따라 실행 가능 여부가 달라질 수 있습니다.

밥똥이리호요는 이터널 리턴과 HoYoverse 게임 실행을 우선 목표로 합니다. 다른 게임에서 DXMT가 동작하더라도, 해당 게임까지 공식 지원한다는 의미는 아닙니다.