Foray Library
rapid prototyping framework for crossplatform development of vulkan hardware ray tracing applications
Loading...
Searching...
No Matches
foray_blas.hpp
Go to the documentation of this file.
1#pragma once
2#include "../bench/foray_bench_declares.hpp"
3#include "../core/foray_context.hpp"
4#include "../core/foray_managedbuffer.hpp"
5#include "../core/foray_managedresource.hpp"
6#include "../scene/foray_scene_declares.hpp"
7
8namespace foray::as {
9
14 class Blas : public core::VulkanResource<VkObjectType::VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR>
15 {
16 public:
17 virtual ~Blas() { Destroy(); }
18
19 inline static const char* BENCH_RESET = "Reset";
20 inline static const char* BENCH_CREATESTRUCTS = "Create Build Structs";
21 inline static const char* BENCH_GETSIZES = "Get Build Sizes";
22 inline static const char* BENCH_CREATE = "Create";
23 inline static const char* BENCH_BUILD = "Build";
24
25 inline virtual std::string_view GetTypeName() const override { return "Bottom-Level AS"; }
26
34 virtual void CreateOrUpdate(core::Context* context, const scene::Mesh* mesh, const scene::gcomp::GeometryStore* store, bench::HostBenchmark* benchmark = nullptr);
35
36 inline virtual bool Exists() const override { return !mAccelerationStructure; }
37 virtual void Destroy() override;
38
39 FORAY_GETTER_V(AccelerationStructure)
40 FORAY_GETTER_V(BlasAddress)
41 FORAY_GETTER_CR(BlasMemory)
42 FORAY_GETTER_V(Mesh)
43
44 protected:
46 const scene::Mesh* mMesh = nullptr;
48 VkAccelerationStructureKHR mAccelerationStructure{};
49 VkDeviceAddress mBlasAddress{};
50 };
51} // namespace foray::as
A Blas (Bottom Level Acceleration Structure) is the raytracing equivalent concept of a mesh.
Definition foray_blas.hpp:15
static const char * BENCH_RESET
Definition foray_blas.hpp:19
static const char * BENCH_BUILD
Definition foray_blas.hpp:23
static const char * BENCH_CREATESTRUCTS
Definition foray_blas.hpp:20
static const char * BENCH_CREATE
Definition foray_blas.hpp:22
const scene::Mesh * mMesh
Definition foray_blas.hpp:46
virtual std::string_view GetTypeName() const override
Returns <OBJECT_TYPE> stringified.
Definition foray_blas.hpp:25
virtual void Destroy() override
Destroy the resource.
virtual ~Blas()
Definition foray_blas.hpp:17
VkDeviceAddress mBlasAddress
Definition foray_blas.hpp:49
core::Context * mContext
Definition foray_blas.hpp:45
virtual bool Exists() const override
Return true, if the managed resource is allocated.
Definition foray_blas.hpp:36
static const char * BENCH_GETSIZES
Definition foray_blas.hpp:21
VkAccelerationStructureKHR mAccelerationStructure
Definition foray_blas.hpp:48
virtual void CreateOrUpdate(core::Context *context, const scene::Mesh *mesh, const scene::gcomp::GeometryStore *store, bench::HostBenchmark *benchmark=nullptr)
Recreates the acceleration structure.
core::ManagedBuffer mBlasMemory
Definition foray_blas.hpp:47
A host (CPU time) benchmark based on std::chrono::high_resolution_clock. Timestamps are recorded in m...
Definition foray_hostbenchmark.hpp:8
Wraps allocation and lifetime functionality of a VkBuffer.
Definition foray_managedbuffer.hpp:12
ManagedResource variant which automates GetTypeName() overloading by returning a stringified version ...
Definition foray_managedresource.hpp:59
Type describing a single mesh object, described by multiple Primitive objects.
Definition foray_mesh.hpp:49
Stores all geometry in a single set of index and vertex buffers.
Definition foray_geometrymanager.hpp:12
#define FORAY_GETTER_V(member)
Return value.
Definition foray_basics.hpp:39
#define FORAY_GETTER_CR(member)
Return constant reference.
Definition foray_basics.hpp:60
Definition foray_as_declares.hpp:3
Non owning context object.
Definition foray_context.hpp:16