WarVK is a Warcraft III 1.27a graphics enhancement project built on top of a DXVK-derived D3D9-to-Vulkan path. It focuses on visual fidelity and rendering experimentation for the classic client, including modern shadows, post-processing, runtime diagnostics, and engine-facing rendering research.
Note
WarVK targets visual quality first. High-quality effects usually increase GPU load, and enabling more features does not guarantee higher FPS.
- Replaces the legacy D3D9 backend with a Vulkan-backed rendering path
- Adds in-game graphics controls for shadows, anti-aliasing, bloom, and exposure
- Improves visual presentation without modifying map data or gameplay rules
- Added a logic-to-render bridge so object identity can be tracked more reliably across the game pipeline
- Blocked all path blocker shadow rendering to prevent invalid blocker geometry from leaking into scene shadows
- Integrated StormBreaker directly into the project as part of the runtime foundation
- Upgraded GPU Arena to avoid driver overload caused by freeze-and-snapshot shadow capture on dynamic VB/IB workloads
- Added the first stage of static model caching to reduce GPU Arena pressure
- Competitive players may prefer lower visual clarity noise; bloom and soft shadows are not ideal for PVP
- Third-party platforms may block or remove custom
d3d9.dllfiles, so WarVK is mainly intended for local, LAN, and single-player environments - Map authors should not assume client-side DLL loading is available on all user platforms
- Windows 10 or Windows 11
- A Vulkan-capable GPU and current graphics drivers
- Warcraft III 1.27a
- Back up your Warcraft III directory, especially any existing
d3d9.dll - Copy the release files into the game root directory where
war3.exeis located - Start the game and confirm that
d3d9.logis generated
Typical release contents:
d3d9.dllshaderpacks/if a shader package is included- Any extra runtime files bundled with the release
- Press
Ctrl + F1to toggle the WarVK configuration panel - Common controls include:
Unlock FPSEnable Post-ProcessingEnable ShadowsShadow QualityShadow IntensityAnti-AliasingBloomExposure
- If the game crashes or shows a black screen, check
d3d9.logand verify there is no conflicting third-partyd3d9.dll - If performance is poor, reduce shadow quality, bloom, and anti-aliasing first
- If specific maps show flicker or shadow instability, disable shadows or post-processing to isolate the issue before reporting it
- Remove
d3d9.dllfrom the game root - Optionally remove
d3d9.logandshaderpacks/
Current version: v1.1.0
WarVK is in a stage where the gameplay-facing bridge, GPU Arena, StormBreaker integration, and first-stage static model cache are already in place. Dynamic pose takeover is still under active research and has not fully replaced the fallback shadow path.
src/d3d9/The WarVK-specific D3D9 runtime, game hooks, shadow pipeline, post-processing, and graphics settingssrc/dxvk/Vulkan abstraction and DXVK-derived runtime layersrc/dxso/Shader compiler and translation supportsrc/util/Shared utilities, logging, threading, configuration, and helperssrc/spirv/SPIR-V handling and shader infrastructuresrc/vulkan/Vulkan loader and common helperssrc/wsi/Window system integrationsrc/minhook/Hooking dependency used for game-side interception
- Logic-to-render bridge for object identity propagation
- Native render hook domains for UI, render, lifecycle, JASS, and shadow control
- GPU Arena for shadow capture and transient runtime geometry handling
- Static model cache for reducing runtime geometry duplication
- Runtime diagnostics, performance reporting, and automated regression hooks
- MinGW-w64 GCC 15.2.0 or newer
- Meson 0.58 or newer
- Ninja
- Vulkan SDK
- glslang
# Initial setup
meson setup --cross-file build-win32.txt build32
# Recommended incremental build
.\build32_safe.cmd src/d3d9/d3d9.dll -j8Main output:
build32/src/d3d9/d3d9.dll
build32_safe.cmdexists to avoid the Windows extended-path shell issue that can break MinGW incremental buildsbuild32_safe.cmdalso restores the local Meson shim used to build the upstreamimguisubmodule without maintaining a separate forkCHANGELOG.mdtracks user-facing version changesAGENTS.mdtracks the current engineering status and handoff notes- AutoTest and performance tooling live under
AutoTest/andsrc/d3d9/war3/tools/
WarVK is now distributed under GPLv3 at the project level. The full GPLv3 text is provided in LICENSE and COPYING.
This repository also contains third-party components and upstream-derived code that remain available under their original licenses. Those components are documented in THIRD_PARTY_NOTICES.md, and their original notices should be preserved when redistributing the project.
- Complete dynamic pose-driven shadow reconstruction using cached model resources
- Continue reducing hot-path overhead in shadow and projector interception
- Move more culling and batching work from CPU-side heuristics toward GPU-friendly execution
- Expose a cleaner external shader workflow for community-authored shader packs
- DXVK
- Dear ImGui
- MinHook
- MemHack research references and reverse-engineering inspiration
- Asphodelus and prior JASS engine research
WarVK is an unofficial third-party rendering plugin. Use it at your own risk, and keep backups of your game directory and saves before testing new builds.