Skip to content

Commit

Permalink
Added TLAS data types
Browse files Browse the repository at this point in the history
  • Loading branch information
corporateshark committed Sep 8, 2024
1 parent 28c4118 commit eb8210c
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 0 deletions.
21 changes: 21 additions & 0 deletions lvk/LVK.h
Original file line number Diff line number Diff line change
Expand Up @@ -808,13 +808,33 @@ enum AccelStructGeometryFlagBits : uint8_t {
AccelStructGeometryFlagBits_NoDuplicateAnyHit = 1 << 1,
};

enum AccelStructInstanceFlagBits : uint8_t {
AccelStructInstanceFlagBits_TriangleFacingCullDisable = 1 << 0,
AccelStructInstanceFlagBits_TriangleFlipFacing = 1 << 1,
AccelStructInstanceFlagBits_ForceOpaque = 1 << 2,
AccelStructInstanceFlagBits_ForceNoOpaque = 1 << 3,
};

struct AccelStructBuildRange {
uint32_t primitiveCount = 0;
uint32_t primitiveOffset = 0;
uint32_t firstVertex = 0;
uint32_t transformOffset = 0;
};

struct mat3x4 {
float matrix[3][4];
};

struct AccelStructInstance {
mat3x4 transform;
uint32_t instanceCustomIndex : 24 = 0;
uint32_t mask : 8 = 0xff;
uint32_t instanceShaderBindingTableRecordOffset : 24 = 0;
uint32_t flags : 8 = AccelStructInstanceFlagBits_TriangleFacingCullDisable;
uint64_t accelerationStructureReference = 0;
};

struct AccelStructDesc {
AccelStructType type = AccelStructType_Invalid;
AccelStructGeomType geometryType = AccelStructGeomType_Triangles;
Expand All @@ -827,6 +847,7 @@ struct AccelStructDesc {
IndexFormat indexFormat = IndexFormat_UI32;
BufferHandle indexBuffer;
BufferHandle transformBuffer;
BufferHandle instancesBuffer;
AccelStructBuildRange buildRange = {};
uint8_t buildFlags = AccelStructBuildFlagBits_PreferFastTrace;
const char* debugName = "";
Expand Down
1 change: 1 addition & 0 deletions lvk/vulkan/VulkanClasses.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ static_assert(lvk::Swizzle_R == (uint32_t)VK_COMPONENT_SWIZZLE_R);
static_assert(lvk::Swizzle_G == (uint32_t)VK_COMPONENT_SWIZZLE_G);
static_assert(lvk::Swizzle_B == (uint32_t)VK_COMPONENT_SWIZZLE_B);
static_assert(lvk::Swizzle_A == (uint32_t)VK_COMPONENT_SWIZZLE_A);
static_assert(sizeof(lvk::AccelStructInstance) == sizeof(VkAccelerationStructureInstanceKHR));

namespace {

Expand Down

0 comments on commit eb8210c

Please sign in to comment.