DXMT에 관하여
DXMT란?
섹션 제목: “DXMT란?”DXMT는 DirectX 11 그래픽 호출을 Apple Metal API로 변환하는 그래픽 변환 레이어입니다. macOS는 DirectX를 직접 지원하지 않으므로, Windows 게임을 실행하려면 그래픽 명령을 macOS가 처리할 수 있는 형태로 바꾸는 과정이 필요합니다. 밥똥이리호요에서는 이터널 리턴과 HoYoverse 게임의 DirectX 11 실행 경로를 다루기 위해 DXMT를 중심으로 구성합니다.
DXMT를 사용하는 이유
섹션 제목: “DXMT를 사용하는 이유”DXMT를 사용하는 이유는 크게 두 가지입니다.
1. 호출 비용이 적습니다
섹션 제목: “1. 호출 비용이 적습니다”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가 동작하더라도, 해당 게임까지 공식 지원한다는 의미는 아닙니다.