Skip to content

ENH: VR support for Vulkan renderer

Nicholas Milef requested to merge NickMilef/iMSTK:VR_Vulkan into master

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.

Status:

  • 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

Known issues:

  • 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.
  1. uses VK_KHR_multiview, which limits support mainly to PC devices. However, this is the most efficient way to render VR currently.

Edited by Nicholas Milef

Merge request reports