3dmigoto Dx12 «Hot • 2024»
Instead of hooking Draw calls on the command list (which are ephemeral), 3DMigoto hooks the command queue (ID3D12CommandQueue::ExecuteCommandLists). This is the choke point where finalized command lists are submitted to the GPU.
When the game calls ExecuteCommandLists, 3DMigoto intercepts the array of command lists. It then:
Trade-off: This is expensive. Cloning a command list requires parsing its API calls, which introduces a CPU-side overhead of 0.5–2ms per frame.
3DMigoto DX12 is a triumph of reverse engineering—a tool that bends the explicit, low-level DX12 API into a mold designed for the implicit, forgiving DX11 era. It allows modders to continue their work on modern games like Cyberpunk 2077, Horizon Zero Dawn, and Final Fantasy VII Remake.
However, it is a bridge built on sand. Each new DX12 feature (Mesh Shaders, Work Graphs) threatens to collapse it. For now, it remains the sharpest scalpel available—but one that requires understanding the patient’s anatomy (the command list, the heap, the PSO) to avoid fatal incisions. 3dmigoto dx12
For modders: Embrace the new debug layers (ID3D12Debug). Learn to use PIX on Windows. 3DMigoto DX12 will get you far, but when it fails, you will need to understand why the GPU reset—and that journey now goes all the way down to the root signature and descriptor heap.
Here’s a helpful write-up on 3DMigoto for DirectX 12 (DX12).
The DX12 version of 3DMigoto is a technical marvel. It wraps the d3d12.dll, hooking into the modern graphics pipeline. While the DX11 version relied on a relatively predictable pipeline, the DX12 version has to handle root signatures, descriptor heaps, and asynchronous compute.
Here is what makes the DX12 version so special for the end-user and modder: Instead of hooking Draw calls on the command
Configuration
Edit d3dx.ini to control hotkeys and output paths. Essential settings:
Run the game
Launch the game normally. If 3DMigoto is working, you’ll hear a beep or see a console window (unless suppressed). Use hotkeys like NUM0 (dump current frame’s shaders) or F1 (reload mods).
Using the DX12 version is similar to the classic, but with new caveats. Here is a step-by-step guide for developers and advanced users.
Prerequisites:
Step 1: Download the Correct Build
Do not use the classic 3DMigoto 1.3.x. You need the experimental DX12 branch. Look for releases tagged with dx12 or experimental on the official GitHub repositories (e.g., 3DMigoto-DX12 by current maintainers).
Step 2: Extract to Game Directory
Extract the d3d12.dll and the Mods folder into the same directory as the game's executable (.exe). Warning: Some anti-cheat systems (EAC, BattlEye) flag manual DX12 DLLs. Only use this for offline, single-player games.
Step 3: Configuration Editing
Open d3dx.ini in the Mods folder. You will notice new parameters:
Step 4: The "Frame Analysis" Shift
In DX11, you pressed NumPad 0 to dump. In DX12, due to PSO caching, you may need to trigger dumps across multiple loading screens. Use the F8 key to dump all currently loaded PSOs. Trade-off: This is expensive
DirectX 12 is architecturally different from earlier Direct3D versions: it exposes lower-level, explicit GPU control, uses command lists and heaps, and often runs through graphics APIs and drivers in ways that make interception harder. Because of these differences, adapting 3Dmigoto’s original D3D11 techniques to DX12 requires different approaches. There are three main points to understand:
Because of this, many features that were straightforward in D3D11 require additional engineering or alternate techniques under DX12.