PhantomRender 0.1.0-preview.2
dotnet add package PhantomRender --version 0.1.0-preview.2
NuGet\Install-Package PhantomRender -Version 0.1.0-preview.2
<PackageReference Include="PhantomRender" Version="0.1.0-preview.2" />
<PackageVersion Include="PhantomRender" Version="0.1.0-preview.2" />
<PackageReference Include="PhantomRender" />
paket add PhantomRender --version 0.1.0-preview.2
#r "nuget: PhantomRender, 0.1.0-preview.2"
#:package PhantomRender@0.1.0-preview.2
#addin nuget:?package=PhantomRender&version=0.1.0-preview.2&prerelease
#tool nuget:?package=PhantomRender&version=0.1.0-preview.2&prerelease
<h1 align="center">PhantomRender</h1> <p align="center"> <a href="./LICENSE"> <img src="https://img.shields.io/badge/license-MIT-green.svg?style=flat-square" alt="license"/> </a> <img src="https://img.shields.io/badge/platform-Windows-0078D7.svg?style=flat-square" alt="platform"/> <img src="https://img.shields.io/badge/framework-net48%20%7C%20net9.0-512BD4.svg?style=flat-square" alt="frameworks"/> <img src="https://img.shields.io/badge/arch-x86%20%7C%20x64-555555.svg?style=flat-square" alt="arch"/> </p> <p align="center"> Universal graphics hook + ImGui injected runtime for Windows games and applications. </p> <p align="center"> Includes two host variants: a modern NativeAOT host on .NET 9 and a managed host on .NET Framework 4.8. </p> <p align="center"> <a href="https://github.com/DestroyerDarkNess/PhantomRender/releases/download/0.1.0-preview.1--Vsix-0.1.12/PhantomRender.Templates.Vsix.vsix">Download Visual Studio Templates (.vsix)</a> </p> <p align="center"> <a href="./Games.md">Games Tested Gallery</a> · <a href="./KNOWN_ISSUES.md">Known Issues</a> </p>
Table of Contents
- Project Structure
- Graphics Support
- Build And Publish
- Debug And Test
- Injection Quick Start
- Diagnostics
- Known Issues
- Future Work
- License
Project Structure
| Project | Description |
|---|---|
src/PhantomRender |
Core hooks and low-level graphics/input interop. |
src/PhantomRender.ImGui |
Overlay host and ImGui renderer layer for DX9/DX10/DX11/DX12/OpenGL/Vulkan. |
src/PhantomRender.ImGui.Native |
NativeAOT injected host, dependency loader, logging, and default sample UI. |
src/PhantomRender.ImGui.NetFramework |
Managed .NET Framework 4.8 host with classic Program.Main(...) debug entrypoint and dllmain.EntryPoint() injection entrypoint. |
Graphics Support
| API | Status | Notes |
|---|---|---|
| DirectX 9 | ✅ Supported | Present and EndScene modes are implemented. |
| DirectX 10 | ✅ Supported | DXGI IDXGISwapChain::Present path. |
| DirectX 11 | ✅ Supported | Stable resize path, owner-thread filtering, and Unity compatibility mode. |
| DirectX 12 | ✅ Supported | Queue capture path with Unity compatibility mode; still validate per title. |
| OpenGL | ✅ Supported | wglSwapBuffers hook path with target/context reinit on change. |
| Vulkan | 🚧 In Progress | Backend is still under construction and is not considered working yet. |
Build And Publish
Requirements
- Windows
- .NET 9 SDK
- Visual Studio 2022 or compatible MSVC build tools for NativeAOT publish
NativeAOT host (.NET 9)
Debug build
dotnet build src/PhantomRender.ImGui.Native/PhantomRender.ImGui.Native.csproj -c Debug -p:AutoPublishOnBuild=false
Release publish
dotnet publish src/PhantomRender.ImGui.Native/PhantomRender.ImGui.Native.csproj -c Release -r win-x64 -p:SkipAutoPublish=true
Published output
The default injected payload is produced at:
src/PhantomRender.ImGui.Native/bin/Release/net9.0/win-x64/publish/
That folder contains:
PhantomRender.ImGui.Native.dllcimgui.dllImGuiImpl.dll
Managed host (.NET Framework 4.8)
Video walkthrough:
https://github.com/user-attachments/assets/0d236a89-ae5d-497b-9958-e1ade56f4f0c
This host is the .NET Framework 4.8 equivalent of PhantomRender.ImGui.Native.
Debug as a normal console app
dotnet build src/PhantomRender.ImGui.NetFramework/PhantomRender.ImGui.NetFramework.csproj -c Debug
Program.Main(...)is the classic console/debug entrypoint.dllmain.EntryPoint()is the managed injection entrypoint.- Standard debug output goes to
src/PhantomRender.ImGui.NetFramework/bin/<arch>/Debug/net48/.
Build the injectable DLL
Use one of the batch files in src/:
src/publish-netfx-x64.batforx64targetssrc/publish-netfx-x86.batforx86targets
Each script:
- builds
PhantomRender.ImGui.NetFrameworkinReleaseasLibrary - asks for the path to
Hydra.exe - uses the preset PhantomRender.ImGui.NetFramework.json
- runs Hydra in console mode against
PhantomRender.ImGui.NetFramework.dll
Expected release output:
src/PhantomRender.ImGui.NetFramework/bin/<arch>/Release/net48/
That folder should contain at least:
PhantomRender.ImGui.NetFramework.dllcimgui.dllImGuiImpl.dll
Debug And Test
Debug the ImGui menu directly
To test or debug the ImGui menu itself, run PhantomRender.ImGui.Native as a normal console app in Visual Studio using the standard Debug configuration.
This is the fastest way to:
- verify that the sample menu opens
- test UI changes
- debug overlay logic without injection
If you want the classic managed path instead, run PhantomRender.ImGui.NetFramework as a console app and use its Program.Main(...) entrypoint.
Build the injectable DLL
To test the injectable NativeAOT DLL, use one of the batch files in src/:
src/publish-x64.batforx64gamessrc/publish-x86.batforx86games
Each script publishes the injectable DLL and its native dependencies to the corresponding publish folder.
For the managed .NET Framework 4.8 host, use:
src/publish-netfx-x64.batsrc/publish-netfx-x86.bat
Injection Quick Start
- Inject
PhantomRender.ImGui.Native.dllinto the target game process. - Use
Insertto show or hide the sample UI. - Use
Deleteto request overlay shutdown.
Diagnostics
On startup, the native host redirects console output to:
<publish folder>/PhantomRender.Native.log
Debugging a game crash
If the game crashes after injection, use this workflow:
- Open Visual Studio.
- Launch the game normally.
- In Visual Studio, open
Debug > Attach to Process.... - Find the game process in the list and select it.
- Press
Attach. - Inject
PhantomRender.ImGui.Native.dll. - Wait for the crash.
- Copy the Visual Studio error message.
- Open the
Call Stackwindow and copy the call stack shown by Visual Studio. - Collect
PhantomRender.Native.logfrom the same folder as the injected DLL. - Open an issue and include all three: the error message, the call stack, and the log.
Known Issues
See KNOWN_ISSUES.md.
Future Work
- Expand compatibility coverage across more tested titles.
- Finish the Vulkan backend and make it usable across real titles.
- Add dedicated samples for custom overlay UIs and integrations.
License
PhantomRender is licensed under the MIT License. See LICENSE.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Framework | net48 is compatible. net481 was computed. |
-
.NETFramework 4.8
- MinHook.NET (>= 1.1.2)
-
net9.0
- MinHook.NET (>= 1.1.2)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on PhantomRender:
| Package | Downloads |
|---|---|
|
PhantomRender.ImGui
ImGui overlay host and renderer layer for PhantomRender across DirectX, OpenGL, and Vulkan on Windows. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0-preview.2 | 50 | 4/4/2026 |