ENH: VR support for Vulkan renderer
VR support for Vulkan renderer. This turned out to be a lot of work, but also led to some improvements in the Vulkan renderer and interactor classes.
- Corrected image layout transitions
- Added additional framebuffer images in (low?) dynamic range to send to the headset
- Headset displays two images now
- Apply HMD transformation to camera
- Refactor interactor classes for Vulkan
- Implement stereo instanced rendering1
- Update shaders to account to stereo rendering
- Load/render controllers
- Calculate the correct the camera position shader variables for VR mode
- Identify performance bottlenecks and fix
- Clean up destructor for Vulkan renderer
- Fixed bug with uploading static mesh data
- The validation layer is ironically complaining about image layout issues, but I can't identify the images that they affect. This may be internal to OpenVR, and perhaps updating OpenVR can fix these.
uses VK_KHR_multiview, which limits support mainly to PC devices. However, this is the most efficient way to render VR currently.