Repository navigation
Description
Vulkan drop-in installable ICD (plugin) that automatically intercepts and patches SPIR-V shaders with multiview (single-pass stereo) on-the-fly for high performance, efficient and eye-synced (not AFR/AER) geometric stereoscopic 3D rendering, with built-in generic shader fixes. Made from scratch with human-supervised free AI code.
Status
Works in many native Vulkan apps/games, and some Direct3D 5-12 and OpenGL games via wrappers, though expect some issues.
Recent Updates:
Update separation/convergence via hotkeys + QOL tweaks [2026/11/10]
Same as 3D Vision (Ctrl + F3-F6), with rate modifiers (Shift for 10x, Alt for 1/10)
vulkanscene.mp4
🖼️More screenshots/updates
Fix swapchain AcquireNextImage crash/black screen [2026/11/08]
Quake (vkQuake)
Need for Speed III: Hot Pursuit (Direct3D 5) [D7VK]
Fix compatibility with latest DXVK [2026/11/05]
This improves compatibility with Direct3D 8-11:

Fix compatibility with latest VKD3D-Proton [2026/11/03]
This improves compatibility with Direct3D 12:

Initial support for Direct3D 12 via Proton [2026/10/31]
SPIR-V shader validation fixes IV [2026/10/25]
Prince of Persia: The Two Thrones (OpenJade)
Improve UI shader classification 2.1 [2026/10/20]
Flatout
SPIR-V shader validation fixes II-III [2026/10/08-09]
Improve geometry/UI shader classification [2026/09/14]
Stunt Rally
Generic depth fix for sky and UI shaders [2026/09/12]
SuperTuxKart
Zink support (OpenGL to Vulkan wrapper) [2026/09/06]

Omni directional shadows using a dynamic cube map

RTX Remix (raytracing disabled)

DXVK
For progress updates/discussion, join 3D Vision Fluxer server > VKS3D forum or chat mirror at Discord server > VKS3D forum
Installation
- Download VKS3D.zip (stable, or try nightly/archive)
- Extract to either:
A. Executable folder, for game-specific (portable) installation (recommended).
B. Permanent common folder (e.g.C:\Programs\VKS3D) for system-wide installation to force all apps/games using Vulkan to load it. - Run
VKS3D_Install.bat
C. If you run the script again and close it before system-wide step, portable installations (if present) will load instead of system-wide installation. - Edit settings in
VKS3D.iniif needed (check out config database).- If using system-wide installation, you can add another
VKS3D.ininext to the game executable to override global INI settings like separation/convergence.
- If using system-wide installation, you can add another
- Run any game using Vulkan natively, or extract one of the following Direct3D/OpenGL wrappers' DLLs into the game's executable/DLL folder (EXPERIMENTAL):
| Wrapper \ Supports: | D3D2 | D3D3 | D3D5 | D3D6 | D3D7 | D3D8 | D3D9 | D3D10 | D3D11 | D3D12 | OpenGL | Glide |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| D7VK | ❔ | ❔ | ✅ | ✅ | ✅ | |||||||
| DXVK-Sarek | ❔ | ❔ | ❔ | ❔ | ❌ | ✅ | ✅ | ✅ | ✅ | |||
| DXVK | ✅ | ✅ | ✅ | ✅ | ||||||||
| DXVK-Remix* | ✅ | ✅ | ||||||||||
| VKD3D-Proton + DXGI | ✅ | |||||||||||
| MESA Zink* | ✅ | |||||||||||
| GXVK | ❌ |
Notes
- ❔ Supported by the wrapper but not yet tested with VKS3D
- ❌ Supported by the wrapper but all tested games are mono/broken with VKS3D
- ✅ Confirmed working with VKS3D
- You can find a game's Direct3D version(s) in the API section of its PCGamingWiki article, e.g. Flatout uses D3D9
- DXVK-Remix requires
rtx.enableRaytracing = Falseinrtx.confnext to exe/dll - Zink may use shader objects which aren't yet supported so you might get 1 eye black unless you downgrade driver (596.21 confirmed working).
- To disable/remove system-wide or local installation, run
VKS3D_Uninstall.bat.
Troubleshooting
Crash
- Run again. Startup (especially when using DXVK/VKD3D) might need to generate pipeline/shader caches before they can run properly.
- Delete Vulkan shader/pipeline cache.
- Might require looking up shader cache location. Emulators usually have a dedicated option and for DXVK, delete
*.dxvk-cachefile(s) next to the executable and in%LOCALAPPDATA%\dxvk.
- Might require looking up shader cache location. Emulators usually have a dedicated option and for DXVK, delete
Black Screen
- Set low/0 separation to confirm geometry isn't getting shifted offscreen
- Try lowering/disabling all graphics options (especially anti-aliasing/post-processing) to see if one of them is causing it while having VKS3D disabled
1 eye black
- Try lowering/disabling all graphics options to see if one of them is causing it
Monoscopic
✅Each eye sees a shifted view/unique extra FOV
- Increase separation and lower convergence
⚠️ Everything is at screen depth
- Set
mono_ui=falsein VKS3D.ini - Set
sky_flatten=falsein VKS3D.ini - Set
sky_extend=falsein VKS3D.ini
❌Left and right edges are stretched out/black
- Shader not being stereoized properly or at all. Likely requires code change.
3D Vision not activating
- It's preferable to run the game in windowed or borderless but with the same resolution as the screen. Also if 3DV deactivates when clicking the window, restart the game and press Alt+F4 to kill the NV3DLib layer (needed for stability) and Alt+Tab into the game window if not already in it.
Debug and collect logs/shader dumps to report bugs
Drag and drop executable (preferred) or shortcut into VKS3D_Debug.cmd to:
- Create a log file
- Verify integrity/check for corruption (requires Vulkan SDK for
spirv-dism.exe) of dumped shaders, both original (-*s.spv) and patched (+*s.spv), and decompile if there's any errors. - Disable stereo for specific shaders (to make them mono, useful to flatten UI to screen depth) if you edit
VKS3D_Debug.cmdand add hash (or comma-separated hashes) afterSet VKS3D_SKIP_SHADER_PATCHES=. See the dumped shader filenames including+(patched) for hashes (don't include suffixes like+vs.spvor+fs.spv.asm)
You can also:
- Drop shader dump (
.spv) file to decompile any specific shader into plaintext human-readable ASM. - Drop
VKS3D_r####@XXXXXXX.zipfiles to extract DLLs intoVKS3D_DIR(VKS3D installation folder by default) andVKS3D_BUILDS(version numbered folders, editVKS3D_Debug.cmdto change). Useful for quickly switching between builds. Requires having 7-zip installed. - Drop folder to extract its DLLs into
VKS3D_DIR. Useful for switching between different DLL builds stored in separate folders.
Known issues
Fixed
- Performance is really poor and/because GPU/CPU usage is really low. Fixed since r239
- Deferred rendering is still 2D/flat. Partially fixed since r242 and r298
- Resizing the window may crash. Fixed since r500
- Resizing the window may render a black screen. Fixed since r538
- UI is broken/rendered at wrong depth. Fixed since r552
- DXVK renders black frames. Fixed in r748
- 3D Vision mode blocks game focus/audio/cursor. Fixed in r550
- Dynamic rendering renders mono/black. Fixed in r931
- DXVK renders 2D. Fixed in r2016
- flip_eyes=1 breaks off-axis projection
- Enabling MSI Afterburner/RTSS stats overlay may cause 1 eye black/freeze/crash
- Separation/convergence hotkeys don't reflect on stereo even though they change internally. Fixed in r3149
Fix pending
- Fails some Vulkan Conformance Tests
- 3D Vision mode crashes with D7VK/DXVK/VKD3D
- Intel integrated graphics fall back to single view passthrough
Compatibility
Database
Spreadsheet
Status as of main-r2630, driver 576.80 with RTX 2080 Ti
- ✅Bloom
- ✅Buffer device address -
VK_KHR_buffer_device_addres - ✅Cloth simulation
- ✅Cull and LOD
- ✅Compute
- ✅N-body simulation
⚠️ GPU particle system- Monoscopic
⚠️ Ray tracing- Only renders 1 eye
- ✅Image processing
- ✅Conditional rendering -
VK_EXT_conditional_rendering - ✅Conservative rasterization -
VK_EXT_conservative_rasterization - ✅Debug shader printf -
VK_KHR_shader_non_semantic_info ⚠️ Debug utils -VK_EXT_debug_utils- Glow is 2D/offset
- ✅Deferred shading basics
- ✅Deferred multi sampling
- Fixed in dev-r936
- ✅Deferred shading shadow mapping
- ✅Descriptor buffers -
VK_EXT_descriptor_buffer - ✅Descriptor heap -
VK_EXT_descriptor_heap- Requires recent drivers
- ✅Descriptor heap (untyped pointers) -
VK_EXT_descriptor_heapandVK_KHR_shader_untyped_pointers- Fails SPIR-V validation in older Vulkan SDK
- ✅Descriptor indexing -
VK_EXT_descriptor_indexing - ✅Descriptor sets
- ✅Displacement mapping
- ✅Distance field fonts
- ✅Dynamic rendering -
VK_KHR_dynamic_rendering - ✅Dynamic rendering local read -
VK_KHR_dynamic_rendering_local_read - ✅Dynamic rendering with multi sampling -
VK_KHR_dynamic_rendering- Fixed in dev-r936
- ✅Dynamic uniform buffers
- ✅Fragment shader barycentrics -
VK_KHR_fragment_shader_barycentric - ✅Vulkan Gears
- ✅Normal debugging
- Fixed in r2032
- ✅glTF model loading and rendering
- ✅glTF scene rendering
- ✅glTF vertex skinning
- ✅Graphics pipeline library -
VK_EXT_graphics_pipeline_library- Fixed in r2630
- ✅High dynamic range
- ✅Host image copy -
VK_EXT_host_image_copy - ✅ImGui overlay
- ✅Indirect drawing
- ✅Inline uniform blocks -
VK_EXT_inline_uniform_block - ✅Input attachments
- ✅Instancing
- Sky depth fixed in r2630
- ✅Mesh shaders -
VK_EXT_mesh_shader- Fixed in r2092
- ✅Multi sampling
- Fixed in dev-r936
- ✅Alpha to coverage with multi sampling
- ✅Multi threaded command buffer generation
- Sky depth fixed in r2630
- ✅Multiview rendering -
VK_KHR_multiview - ✅Negative viewport height -
VK_KHR_Maintenance1orVulkan 1.1 - ✅Occlusion queries
⚠️ Offscreen rendering- Reflection is flat
⚠️ Order Independent Transparency- Monoscopic
⚠️ Parallax mapping- No POM stereo displacement
- ✅CPU particle system
- ✅PBR basics
- ✅PBR image based lighting
- ✅Textured PBR with IBL
- ✅Pipelines
- ❌Pipeline statistics
- Freezes
- ✅Push constants
- ✅Push descriptors -
VK_KHR_push_descriptor - ✅
⚠️ Fullscreen radial blur- End point gets shifted with distance
- ✅Ray query -
SPV_KHR_ray_query - ✅Basic ray tracing
- ✅Callable ray tracing shaders
- ✅Ray traced glTF
- ✅Ray tracing intersection shaders
- ✅Position fetch
- ✅Ray traced reflections
- ✅Ray traced shadows
- ✅Ray traced texture mapping
- Only renders left eye
⚠️ Render- Only dumps one eye
- ❌Capturing screenshots
- Taking screenshot may crash
⚠️ Shader objects -VK_EXT_shader_object- Only renders left eye, presumably because shader objects explicitly forbid multiview.
- ✅Shadow mapping
- Offset shadows fixed in dev-r946
- ✅Cascaded shadow mapping
- Fixed in dev-r262 and again in dev-r946
- ✅Omnidirectional shadow mapping
- Shadows fixed in r2275
- ✅Specialization constants
- ✅Spherical environment mapping
⚠️ Screen space ambient occlusion- AO offset with distance to convergence
- ✅Stencil buffer
- ✅Sub passes
- ✅Dynamic terrain tessellation
- Sky depth fixed in r2630
- ✅Model tessellation
- ✅Text rendering
- ✅Texture mapping
- ✅3D textures
- ✅Texture arrays
- ✅Cube map textures
- ✅Cube map arrays
- ✅Run-time mip-map generation
- ✅Timeline semaphores -
VK_KHR_timeline_semaphore - ✅Sparse texture residency
- ✅Basic triangle using Vulkan 1.0
- ✅Basic triangle using Vulkan 1.3
- ✅Variable rate shading -
VK_KHR_fragment_shading_rate- Fixed in dev-r953
- ✅Vertex attributes
- ✅Viewport arrays
- Mono, but probably better that way to avoid multiview recursion
- ✅Vulkan demo scene
- AntiAlias
⚠️ Works, but UI offset - BasicHLSL ✅
- CompiledEffect ❌ Error
- ConfigSystem
⚠️ 2D - CustomUI 2D
- DepthOfField
⚠️ Offset frame with black gap - EffectParam ✅
- EmptyProject ✅
- HDRCubeMap
⚠️ Reflection doubled - HDRFormats
⚠️ Offset frame with black gap and overexposed - HDRLighting
⚠️ Offset frame with black gap - HDRPipeline
⚠️ Black frame pipelines and glitchy graphics - HLSLwithoutEffects ✅
- Instancing ✅
- IrradianceVolume
- LocalDeformablePRT
⚠️ Background offset with gray gap - MeshFromOBJ ✅
- MultiAnimation
- OptimizedMesh ✅
- ParallaxOcclusionMapping
⚠️ No stereo displacement - Pick ✅
- PixelMotionBlur
⚠️ Offset frame with black gap - PostProcess
⚠️ Offset frame with black gap - PRTCmdLine
- PRTDemo
⚠️ Offset background with black gap - ShadowMap
⚠️ Separation offsets shadow projection - ShadowVolume
⚠️ Shadow becomes 3D when looking at it from certain high angles - SimpleSample ✅
- SkinnedMesh ✅
- StateManager
⚠️ Geometry only rendered for left eye - Text3D ✅
- UVAtlas
- Placeholder
Roadmap
Off-axis projection (depth past screen instead of just popout)Implemented since r316Game-specific launch instead of system-wide installationAdded instructions to Installation- Duplicate and shift cursor into each view
- Support more APIs via wrappers:
- Support 3D hardware:
- ✅Side-By-Side
⚠️ Top-And-Bottom- Currently broken.
- ✅
⚠️ 3D Vision- Added since r316, improved in r550. Some games may still crash.
- Spatial Labs
- VR (Katanga/VRScreenCap)
- Support emulators
- ✅
⚠️ Some work, with varying degrees of success
- ✅
- UI
- Stereo settings
- 🚧Separation/IPD
- 🚧Convergence
- Auto-convergence
- Shader toggling
- Shader fix presets
- 🚧Geometry
- 🚧UI (flatten to screen depth)
- 🚧Sky (flatten to max depth)
- Overlay (flatten to screen depth + stretch to fill)
- Crosshair (stick to background geometry depth)
- Weapon (rescale if needed)
- Stereo settings
- Shader fixes:
- Manual fix loading
- Generic
- ✅Shadows
- ✅Deferred rendering
- ✅Multi-Sampling
- ✅Screen depth UI
- ✅Max depth sky
- Lights
- Reflection
- Refraction
- Ambient Occlusion
- Depth of Field
- Support RTX Remix raytracing
- 6DOF VR
Credits
@ThreeDeeJay (3DJ) Project/repository management, code supervision/minor fixes, testing and "quality" assurance
@oneup03 - NV3D-Lib (3D Vision output mode)
@pdbourke - Off-axis stereo projection formula
Claude - Base ICD and major fixes that require extensive Vulkan knowledge
ChatGPT - Continuous minor fixes












