June 19, 2016

Work is still continuing on XLE! Over the last few weeks, I've have been very distracted by other priorities. I'm likely to be somewhat busy and distracted during for a few more weeks until things return to a more normal situation. However, I'm still finding time to work on XLE, and make some improvements and fixes!

Lately, my focus has been on Vulkan support (in the experimental branch). Vulkan is looking more and more stable and reliable, and the HLSL -> SPIR-V path is working really well now! However, there are still some big things I want to improve on:

  • Improved interface for BoundUniforms, that can allow for precreation of descriptor sets during loading phases
  • Improved interface for Metal::ConstantBuffer and temporary vertex/index buffers that would rely on a single large circular device buffer
  • Pre-create graphics pipelines when using SharedStateSet (eg, when rendering RenderCore::Assets::ModelRenderer)
    • (this might also involve a better solution for the render state resolver objects used by materials)
  • Fix triangle hit-test supported used by the tools (which is complicated by the render pass concept and requires stream output support)
  • Tessellation support for terrain rendering
  • Integration of MSAA resolve for Vulkan

With these changes, we should start to see much more efficient results with the Vulkan pipeline. Some SceneEngine features won't work immediately, but otherwise we will be getting very good Vulkan results, while also retaining the DirectX compatibility!

Lately, there have been many cool improvements related to Vulkan, including:

  • Lots of improvements to the HLSLcc cross compiler that coverts HLSL -> GLSL (which becomes SPIR-V)
    • this is now working for almost all shaders, and adds support for many HLSL features that previously weren't well supported by the HLSLcc project
  • Support for using Vulkan within the GUI tools!
  • Properly tracking GPU progress for object destruction, allowing full descynronisation of CPU and GPU
  • Support for event pools, and the GPUProfiler
  • Reduction of dependencies on the RenderCore::Metal project by projects that should be gfx-api agnostic
  • Core lighting support including IBL and shadows

Please keep checking back regularly for the latest updates!

blog comments powered by Disqus