| 
    Foray Library
    
   rapid prototyping framework for crossplatform development of vulkan hardware ray tracing applications 
   | 
 
Describes a top level accerlation structure. A tlas usually holds multiple Blas. A blas is an object/mesh instance together with its transformation in 3d space. More...
#include <foray_tlas.hpp>
  
Public Member Functions | |
| Tlas ()=default | |
| virtual | ~Tlas () | 
| virtual std::string_view | GetTypeName () const override | 
| Return a hint for the type of resource managed by the instantiation.   | |
| virtual void | CreateOrUpdate (core::Context *context=nullptr) | 
| (Re)creates the TLAS. Required to invoke when changes to the TLAS transitioned it to Dirty state. Will synchronize with the CPU.   | |
| virtual void | UpdateLean (VkCommandBuffer cmdBuffer, uint32_t frameIndex) | 
| Updates transforms only. TLAS rebuild is performed and synchronized on GPU only. TLAS must by non-Dirty!   | |
| virtual bool | Exists () const override | 
| Return true, if the managed resource is allocated.   | |
| virtual void | Destroy () override | 
| Destroy the resource.   | |
| operator VkAccelerationStructureKHR () | |
| void | RemoveBlasInstance (uint64_t id) | 
| Remove a BLAS instance.   | |
| const BlasInstance * | GetBlasInstance (uint64_t id) const | 
| Get A BLAS instance by id.   | |
| uint64_t | AddBlasInstanceAuto (scene::ncomp::MeshInstance *meshInstance) | 
| Add a BLAS instance from meshInstance component.   | |
| uint64_t | AddBlasInstanceAnimated (const Blas &blas, BlasInstance::TransformUpdateFunc getUpdatedGlobalTransformFunc) | 
| Add an animated BLAS instance.   | |
| uint64_t | AddBlasInstanceStatic (const Blas &blas, const glm::mat4 &transform) | 
| Add a static BLAS instance.   | |
| void | ClearBlasInstances () | 
| Clear all instances.   | |
  Public Member Functions inherited from foray::core::ManagedResource | |
| ManagedResource () | |
| Default constructor registers the resource.   | |
| ManagedResource (std::string_view name) | |
| Registers the resource and sets its name.   | |
| virtual | ~ManagedResource () | 
| Unregisters the resource.   | |
| std::string_view | GetName () const | 
| Return a custom name for the object.   | |
| virtual void | SetName (std::string_view name) | 
| Set a custom name for the object.   | |
| std::string | Print () const | 
| Print name and type in one string.   | |
  Public Member Functions inherited from foray::NoMoveDefaults | |
| NoMoveDefaults ()=default | |
| NoMoveDefaults (const NoMoveDefaults &other)=delete | |
| NoMoveDefaults (NoMoveDefaults &&other)=default | |
| NoMoveDefaults & | operator= (const NoMoveDefaults &other)=delete | 
Protected Attributes | |
| core::Context * | mContext = nullptr | 
| bool | mDirty = false | 
| VkAccelerationStructureKHR | mAccelerationStructure = nullptr | 
| core::ManagedBuffer | mTlasMemory | 
| util::DualBuffer | mInstanceBuffer | 
| core::ManagedBuffer | mScratchBuffer | 
| VkDeviceAddress | mTlasAddress = 0 | 
| std::map< uint64_t, BlasInstance > | mAnimatedBlasInstances | 
| std::map< uint64_t, BlasInstance > | mStaticBlasInstances | 
| uint64_t | mNextId = 0 | 
| GeometryMetaBuffer | mMetaBuffer | 
  Protected Attributes inherited from foray::core::ManagedResource | |
| std::string | mName | 
| This objects custom name.   | |
Additional Inherited Members | |
  Static Public Member Functions inherited from foray::core::ManagedResource | |
| static void | sPrintAllocatedResources (bool printAsWarning) | 
| Print a list of all registered existing resources.   | |
| static const std::unordered_set< ManagedResource * > * | GetTotalAllocatedResources () | 
Describes a top level accerlation structure. A tlas usually holds multiple Blas. A blas is an object/mesh instance together with its transformation in 3d space.
      
  | 
  default | 
      
  | 
  inlinevirtual | 
| uint64_t foray::as::Tlas::AddBlasInstanceAnimated | ( | const Blas & | blas, | 
| BlasInstance::TransformUpdateFunc | getUpdatedGlobalTransformFunc | ||
| ) | 
Add an animated BLAS instance.
| uint64_t foray::as::Tlas::AddBlasInstanceAuto | ( | scene::ncomp::MeshInstance * | meshInstance | ) | 
Add a BLAS instance from meshInstance component.
| uint64_t foray::as::Tlas::AddBlasInstanceStatic | ( | const Blas & | blas, | 
| const glm::mat4 & | transform | ||
| ) | 
Add a static BLAS instance.
| void foray::as::Tlas::ClearBlasInstances | ( | ) | 
Clear all instances.
      
  | 
  virtual | 
(Re)creates the TLAS. Required to invoke when changes to the TLAS transitioned it to Dirty state. Will synchronize with the CPU.
      
  | 
  overridevirtual | 
Destroy the resource.
Implements foray::core::ManagedResource.
      
  | 
  inlineoverridevirtual | 
Return true, if the managed resource is allocated.
Example: Vulkan object stored could be nullptr or instantiated
Implements foray::core::ManagedResource.
| const BlasInstance * foray::as::Tlas::GetBlasInstance | ( | uint64_t | id | ) | const | 
Get A BLAS instance by id.
      
  | 
  inlineoverridevirtual | 
Return a hint for the type of resource managed by the instantiation.
Reimplemented from foray::core::ManagedResource.
      
  | 
  inline | 
| void foray::as::Tlas::RemoveBlasInstance | ( | uint64_t | id | ) | 
Remove a BLAS instance.
      
  | 
  virtual | 
Updates transforms only. TLAS rebuild is performed and synchronized on GPU only. TLAS must by non-Dirty!
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected |