Awesome
Converts RenderDoc Vulkan capture to compilable and executable C++ code.<br/> Work in progress.
How to use
- Export RenderDoc capture to XML + ZIP.
- Build RDCtoVkCpp or use prebuild binaries.
- Run console application
RdConverter.exe
with-i path/to/exported/rdc.zip -o folder/name/for/cpp/code
Other command line arguments:
-h, --help - show help
--build - build project
--configure - generate project
--clean - clean output folder before converting
--div-by-cmdbuf [bool] - group api calls by command buffers, default = true
-i, --input [filename] - open RenderDoc capture, must be *.zip or *.zip.xml file
-o, --output [folder] - save c++ code into output directory
Warning: console application and converted sources from capture is not portable! You should rebuild and run converter again on new environment or fix pathes to files.
Features
- Produces readable C++ code.
- Code validation to fix unsignaled fences/semaphores/events and reset they before next frame.
- Frame played in infinite loop.
- Used resource debug name if possible.
- SPIR-V decompiled to GLSL.
- Resizable window.
Tested on
- Doom (2016)
- Wolfenstein 2 - incorrect rendering
- X4 - incorrect rendering
- Dota 2
- Rage 2 - incorrect rendering
- RDR 2 - incorrect rendering
- 3DMark api overhead test
- No Man's Sky
TODO
- Immutable samplers
- Measure frame time
- Portability (remap queue family and memory types)
- Upload multisampled image
- Sparse memory
- 2nd plane formats
- Fix validation errors.
Building
Requires C++17 and CMake 3.10+
Dependencies:<br/> FrameGraph - only stl and vulkan helpers.<br/> VulkanMemoryAllocator - required.<br/> glfw or SDL2 - required.<br/> glslang - compile glsl to spirv.<br/> SPIRV-Cross - converts spirv to glsl.<br/> rapidxml - for RDC parsing.<br/> miniz - for RDC content loading.<br/> RenderDoc - some code to generate parser.<br/>