Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for host-builds and "array of pointers" when building/updating real-time ray tracing acceleration structures #24

Open
11 tasks
johannesugb opened this issue Jul 30, 2020 · 0 comments
Labels
enhancement New feature or request Vulkan Vulkan-centric task

Comments

@johannesugb
Copy link
Member

johannesugb commented Jul 30, 2020

Currently, the build/update methods of both, class bottom_level_acceleration_structure_t and class top_level_acceleration_structure_t, support only "pointer to an array"-style input.

Add support for:

  • "array of pointers" input to bottom level acceleration structure builds/updates
  • "array of pointers" input to top level acceleration structure builds/updates
  • Host-builds of bottom level acceleration structures
  • Host-builds of top level acceleration structures

The relevant code that needs to be updated/extended in order to support these different built/update types is contained in the methods:

More information about "array of pointers" input format can be found here: VkAccelerationStructureBuildGeometryInfoKHR => the description of VkBool32 geometryArrayOfPointers;

More information about host builds of acceleration structures can be found here: 36.5. Host Acceleration Structure Operations

Definition of done:

  • All the new types of acceleration structure builds/updates mentioned above have been implemented
  • The interfaces to the methods mentioned above have been updated, and they are easy, convenient, and safe to use.
  • There should be an example application that lets users choose between all the different types of builds/updates of acceleration structures. This functionality shall either be integrated into an entirely new ray tracing example application or it has been added to an existing example application.
  • Out of curiosity, a quick small test has been made, measuring the build time differences of ~10,000 host builds compared to ~10,000 device builds.
  • It has been determined if the assert(sizeof(VkAabbPositionsKHR) == result.mSizeOfOneElement); in buffer_meta.hpp#L833 is really appropriate.
  • It has been determined if the assert(sizeof(VkAccelerationStructureInstanceKHR) == result.mSizeOfOneElement); in buffer_meta.hpp#L912 is really appropriate.
  • All modified or new methods, as well as the example application are well documented and the Contribution Guidelines have been followed.
@johannesugb johannesugb transferred this issue from cg-tuwien/Auto-Vk-Toolkit Oct 8, 2020
@johannesugb johannesugb added enhancement New feature or request Vulkan Vulkan-centric task labels Oct 8, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request Vulkan Vulkan-centric task
Development

No branches or pull requests

1 participant