Vk3DVision - A Vulkan 3D Vision Driver (With Single-Frame Stereo and RTX Support)
Posted: Thu Jun 04, 2020 2:43 pm
Update List:
25/04/2021: Now with Raytracing - RTX support
First Raytraced game in Stereo3D (to my knowledge ^_^ this also includes VR)
viewtopic.php?p=178462#p178462
06/11/2021: Version 2.0.0 is out!
- Comes it OpenVR support (up to 35% improvements in VR over HelixVision)
- DirectX 9 Compatibility for Nvidia 3D Vision (working on RTX 3000 series and latest NVidia Drivers!)
- And many more!!!
viewtopic.php?p=174733#p174733
20/09/2020: viewtopic.php?p=173577#p173577
The day has come to release Vk3DVision v.1.0.1
And to celebrate this, this initial release also comes with 3"D" fully fixed games:
- Detroit: Become Human
- Doom (2016)
- Doom: Eternal
(hence the 3"D" )
http://3dsurroundgaming.com/Vk3DVisionGames.html
Lots of updates... Check the latest posts!!!
02/08/2020: Vk3DVision Updated Demo for Detroit: Become Human - Demo: viewtopic.php?p=172581#p172581 (3D Vision only)
21/07/2020: Vk3DVision Demo for Detroit: Become Human - Demo: viewtopic.php?p=172178#p172178 (3D Vision only)
12/07/2020: Detroit: Become Human first level/mission in Stereoscopic 3D using Vk3DVision:
https://www.youtube.com/watch?v=leYdYS7BBv8
11/07/2020 - Major Performance improvements: viewtopic.php?p=171948#p171948
https://www.youtube.com/watch?v=2lxUSFPbNa0
10/07/2020 - Getting Vk3DVision to run on Red Dead Redemption 2, YEY: viewtopic.php?p=171924#p171924
07/07/2020 - "Projekt" Update: viewtopic.php?p=171877#p171877
29/06/2020 - Getting the first Vulkan game to render in Stereoscopic 3D (Detroit: Become Human):
https://www.youtube.com/watch?v=9MQUrCj3hW0
Going from Single-Threaded to Multi-Threaded in Shader Decompilation/Injection/Recompilation! More info here: viewtopic.php?p=171760#p171760
- 22/06/2020 - FIRST PERFECT STEREOSCOPIC 3D rendered image from Detroit: Become Human:
(There is ONE thing that is wrong in this image though Can you spot it )
19-22/06/2020 :
- Managed to fix a graphics corruption/driver crash/PC hard lock related to the Description Sets & Layouts injection & modification.
- Worked on the Ability to Change the Shader Source (while the game is running), Recompile & Swap.
- A bit of work on showing the original version of the shader running.
See: viewtopic.php?p=171640#p171640
- 18/06/2020 - Started working on UI for: viewing & editing exported shaders, active shaders responsible for current frame rendering.
- 17/06/2020 - Started working on more fixes for when the decompiler fails to fully decompile to glsl (like special extensions) which results in the compiler failing to compile. Plan is to add a mechanism that handles this gracefully without killing everything.
- 16/06/2020 - Got Exclusive Mode working in DirectX11 and 3DVision Ready monitor & glasses to work. Tested on 2 games so far. See: viewtopic.php?p=171573#p171573
- 15/06/2020 - Started looking in getting DirectX11 Exclusive Mode working so we can use 3D Vision Automatic to render to a supported 3D Screen.
- 14/06/2020 - Performance Optimisations (40% gain) in Release Build. See: viewtopic.php?p=171526#p171526
- 11/06/2020 - Rendering in Stereo 3D - using Nvidia 3D Vision Discover Mode in Detroit: Become Human: See: viewtopic.php?p=171490#p171490
- 11/06/2020 - Stereo 3D Injection started: Sending Custom Data from CPU to GPU (there are some bugs that I need to track) -> But Mostly Done.
- 10/06/2020 - Vulkan Shader Decompilation/Injection/Recompilation & Swapping at runtime (initial run) -> Done.
- 09/06/2020 - Very promising results on: Vulkan Shader Decompilation/Injection/Recompilation & Swapping.
- 07/06/2020 - Shader Management work: Decompilation of SpirV to GLSL and Shader dumping to disk -> Done.
- 05/06/2020 - Started prototyping: Vulkan Shader Injection & Real time shader changing for Stereorization.
If you want to support this project you can follow me on the Patreon Page for this project: https://www.patreon.com/Vk3DVision. If you don't want to commit to something monthly, but still want to support this project, donations are also appreciated. You can use my Paypal account: tavyhomeppal@hotmail.com
The official page for the project: http://3dsurroundgaming.com/Vk3DVision.html
Original Post:
I've been prototyping a few things over some time (mostly to fool around when I got bored) and I tried a few things in Vulkan ofc:)
Thus, I can present you a first image of a Vulkan game running in 3D Vision (Discover). It also presents fine in HelixVision in VR :
Sure it doesn't look like much... yet, as there is no stereo information added yet to the game. There are still lots of things to do to get there.
Here is the list of what I prototyped and got working:
The easier part:
1. Vulkan to DirectX 11 Interop for sharing resources (including synchronisation) -> Done.
2. 3D Vision Direct over DirectX 11 -> Was mostly Done. (Done as 14/05/2020).
3. Exclusive Fullscreen in DirectX 11 -> Failed. (I tried for a few days to get it working. I managed to make it work at some point but not realiable. I expect the game/app fights with my DXGI Output over exclusivity. More work is required. But hey ^_^ it works in HelixVision in VR )
The hard part - because each part is a project in itself:
4. SPIRV Shader Decompilation, Conversion to GLSL, Recompilation as SPIRV and fed back to Vulkan Renderer -> BIG CHECK AND DONE! (Some bugs and functionality is lacking still).
5. Vulkan Shader Injection & Real time shader changing for Stereorisation -> Done as of 14/05/2020 (Some bugs are probably still around -> Requires a lot more testing).
6. Vulkan Shader Hunting & RT Debugging and other functionality -> Not started.
7. UI interface -> Not started.
8. Other stuff?! -> Didn't even started thinking about it
So far I have forked Reshade by Crosire, simply because I didn't want to WASTE tons of time on implementing all the FLUFF that goes in a Vulkan Layer. PLUS, I really loved that Reshade uses the Vulkan Layering Mechanism instead of the plain Hooking of DLLs.
I am aiming for the same approach as I did with OpenGL3DVision: It will display SEQUENTIAL frames (This means if a game has a FPS hard-lock of 60 FPS you will literally see 30 FPS in 3D. Most games can be hacked to remove this lock and most current games have unlocked FPS - if you have the hardware)
This is pretty much still in the phase of prototyping and experimentation. As such, I cannot promise anything. If people are interested and want to help with the coding or in any other way you think it will help the project, please let me know.
Cheers,
Helifax
25/04/2021: Now with Raytracing - RTX support
First Raytraced game in Stereo3D (to my knowledge ^_^ this also includes VR)
viewtopic.php?p=178462#p178462
06/11/2021: Version 2.0.0 is out!
- Comes it OpenVR support (up to 35% improvements in VR over HelixVision)
- DirectX 9 Compatibility for Nvidia 3D Vision (working on RTX 3000 series and latest NVidia Drivers!)
- And many more!!!
viewtopic.php?p=174733#p174733
20/09/2020: viewtopic.php?p=173577#p173577
The day has come to release Vk3DVision v.1.0.1
And to celebrate this, this initial release also comes with 3"D" fully fixed games:
- Detroit: Become Human
- Doom (2016)
- Doom: Eternal
(hence the 3"D" )
http://3dsurroundgaming.com/Vk3DVisionGames.html
Lots of updates... Check the latest posts!!!
02/08/2020: Vk3DVision Updated Demo for Detroit: Become Human - Demo: viewtopic.php?p=172581#p172581 (3D Vision only)
21/07/2020: Vk3DVision Demo for Detroit: Become Human - Demo: viewtopic.php?p=172178#p172178 (3D Vision only)
12/07/2020: Detroit: Become Human first level/mission in Stereoscopic 3D using Vk3DVision:
https://www.youtube.com/watch?v=leYdYS7BBv8
11/07/2020 - Major Performance improvements: viewtopic.php?p=171948#p171948
https://www.youtube.com/watch?v=2lxUSFPbNa0
10/07/2020 - Getting Vk3DVision to run on Red Dead Redemption 2, YEY: viewtopic.php?p=171924#p171924
07/07/2020 - "Projekt" Update: viewtopic.php?p=171877#p171877
29/06/2020 - Getting the first Vulkan game to render in Stereoscopic 3D (Detroit: Become Human):
https://www.youtube.com/watch?v=9MQUrCj3hW0
Going from Single-Threaded to Multi-Threaded in Shader Decompilation/Injection/Recompilation! More info here: viewtopic.php?p=171760#p171760
- 22/06/2020 - FIRST PERFECT STEREOSCOPIC 3D rendered image from Detroit: Become Human:
(There is ONE thing that is wrong in this image though Can you spot it )
19-22/06/2020 :
- Managed to fix a graphics corruption/driver crash/PC hard lock related to the Description Sets & Layouts injection & modification.
- Worked on the Ability to Change the Shader Source (while the game is running), Recompile & Swap.
- A bit of work on showing the original version of the shader running.
See: viewtopic.php?p=171640#p171640
- 18/06/2020 - Started working on UI for: viewing & editing exported shaders, active shaders responsible for current frame rendering.
- 17/06/2020 - Started working on more fixes for when the decompiler fails to fully decompile to glsl (like special extensions) which results in the compiler failing to compile. Plan is to add a mechanism that handles this gracefully without killing everything.
- 16/06/2020 - Got Exclusive Mode working in DirectX11 and 3DVision Ready monitor & glasses to work. Tested on 2 games so far. See: viewtopic.php?p=171573#p171573
- 15/06/2020 - Started looking in getting DirectX11 Exclusive Mode working so we can use 3D Vision Automatic to render to a supported 3D Screen.
- 14/06/2020 - Performance Optimisations (40% gain) in Release Build. See: viewtopic.php?p=171526#p171526
- 11/06/2020 - Rendering in Stereo 3D - using Nvidia 3D Vision Discover Mode in Detroit: Become Human: See: viewtopic.php?p=171490#p171490
- 11/06/2020 - Stereo 3D Injection started: Sending Custom Data from CPU to GPU (there are some bugs that I need to track) -> But Mostly Done.
- 10/06/2020 - Vulkan Shader Decompilation/Injection/Recompilation & Swapping at runtime (initial run) -> Done.
- 09/06/2020 - Very promising results on: Vulkan Shader Decompilation/Injection/Recompilation & Swapping.
- 07/06/2020 - Shader Management work: Decompilation of SpirV to GLSL and Shader dumping to disk -> Done.
- 05/06/2020 - Started prototyping: Vulkan Shader Injection & Real time shader changing for Stereorization.
If you want to support this project you can follow me on the Patreon Page for this project: https://www.patreon.com/Vk3DVision. If you don't want to commit to something monthly, but still want to support this project, donations are also appreciated. You can use my Paypal account: tavyhomeppal@hotmail.com
The official page for the project: http://3dsurroundgaming.com/Vk3DVision.html
Original Post:
I've been prototyping a few things over some time (mostly to fool around when I got bored) and I tried a few things in Vulkan ofc:)
Thus, I can present you a first image of a Vulkan game running in 3D Vision (Discover). It also presents fine in HelixVision in VR :
Sure it doesn't look like much... yet, as there is no stereo information added yet to the game. There are still lots of things to do to get there.
Here is the list of what I prototyped and got working:
The easier part:
1. Vulkan to DirectX 11 Interop for sharing resources (including synchronisation) -> Done.
2. 3D Vision Direct over DirectX 11 -> Was mostly Done. (Done as 14/05/2020).
3. Exclusive Fullscreen in DirectX 11 -> Failed. (I tried for a few days to get it working. I managed to make it work at some point but not realiable. I expect the game/app fights with my DXGI Output over exclusivity. More work is required. But hey ^_^ it works in HelixVision in VR )
The hard part - because each part is a project in itself:
4. SPIRV Shader Decompilation, Conversion to GLSL, Recompilation as SPIRV and fed back to Vulkan Renderer -> BIG CHECK AND DONE! (Some bugs and functionality is lacking still).
5. Vulkan Shader Injection & Real time shader changing for Stereorisation -> Done as of 14/05/2020 (Some bugs are probably still around -> Requires a lot more testing).
6. Vulkan Shader Hunting & RT Debugging and other functionality -> Not started.
7. UI interface -> Not started.
8. Other stuff?! -> Didn't even started thinking about it
So far I have forked Reshade by Crosire, simply because I didn't want to WASTE tons of time on implementing all the FLUFF that goes in a Vulkan Layer. PLUS, I really loved that Reshade uses the Vulkan Layering Mechanism instead of the plain Hooking of DLLs.
I am aiming for the same approach as I did with OpenGL3DVision: It will display SEQUENTIAL frames (This means if a game has a FPS hard-lock of 60 FPS you will literally see 30 FPS in 3D. Most games can be hacked to remove this lock and most current games have unlocked FPS - if you have the hardware)
This is pretty much still in the phase of prototyping and experimentation. As such, I cannot promise anything. If people are interested and want to help with the coding or in any other way you think it will help the project, please let me know.
Cheers,
Helifax