Skip to content

Commit 27f58a9

Browse files
Inject TLAS declarations into fragment shaders if kTLAS[] is used
1 parent b2c9ba1 commit 27f58a9

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

lvk/vulkan/VulkanClasses.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5219,6 +5219,7 @@ lvk::ShaderModuleState lvk::VulkanContext::createShaderModuleFromGLSL(ShaderStag
52195219
)";
52205220
}
52215221
if (vkStage == VK_SHADER_STAGE_FRAGMENT_BIT) {
5222+
const bool bInjectTLAS = strstr(source, "kTLAS[") != nullptr;
52225223
// Note how nonuniformEXT() should be used:
52235224
// https://github.com/KhronosGroup/Vulkan-Samples/blob/main/shaders/descriptor_indexing/nonuniform-quads.frag#L33-L39
52245225
sourcePatched += R"(
@@ -5228,7 +5229,16 @@ lvk::ShaderModuleState lvk::VulkanContext::createShaderModuleFromGLSL(ShaderStag
52285229
#extension GL_EXT_nonuniform_qualifier : require
52295230
#extension GL_EXT_samplerless_texture_functions : require
52305231
#extension GL_EXT_shader_explicit_arithmetic_types_float16 : require
5232+
)";
5233+
if (bInjectTLAS) {
5234+
sourcePatched += R"(
5235+
#extension GL_EXT_buffer_reference : require
5236+
#extension GL_EXT_ray_query : require
52315237
5238+
layout(set = 0, binding = 4) uniform accelerationStructureEXT kTLAS[];
5239+
)";
5240+
}
5241+
sourcePatched += R"(
52325242
layout (set = 0, binding = 0) uniform texture2D kTextures2D[];
52335243
layout (set = 1, binding = 0) uniform texture3D kTextures3D[];
52345244
layout (set = 2, binding = 0) uniform textureCube kTexturesCube[];

0 commit comments

Comments
 (0)