Skip to content

Commit

Permalink
Fixed buffer sizes and recompiled shaders
Browse files Browse the repository at this point in the history
Validation is clean now
Fixes SaschaWillems#1017
  • Loading branch information
SaschaWillems committed Aug 4, 2023
1 parent cc89bdb commit fc27e4d
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 7 deletions.
15 changes: 8 additions & 7 deletions examples/raytracingsbtdata/raytracingsbtdata.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
*
* Example by Nate Morrical (https://github.com/natevm)
*
* Copyright (C) 2019-2020 by Sascha Willems - www.saschawillems.de
* Copyright (C) 2019-2023 by Sascha Willems - www.saschawillems.de
*
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
*/
Expand Down Expand Up @@ -538,9 +538,10 @@ class VulkanExample : public VulkanExampleBase

// We allocate space for the handle (which is like lambda function pointers to call in the ray tracing pipeline)
// as well as the data to pass to those functions (which act as the variables being "captured" by those lambda functions)
VK_CHECK_RESULT(vulkanDevice->createBuffer(bufferUsageFlags, memoryUsageFlags, &raygenShaderBindingTable, handleSize + sizeof(float) * 3));
VK_CHECK_RESULT(vulkanDevice->createBuffer(bufferUsageFlags, memoryUsageFlags, &missShaderBindingTable, handleSize + sizeof(float) * 3));
VK_CHECK_RESULT(vulkanDevice->createBuffer(bufferUsageFlags, memoryUsageFlags, &hitShaderBindingTable, handleSize + sizeof(float) * 3));
uint32_t bufferSize = vks::tools::alignedSize(handleSize + 3 * sizeof(float), rayTracingPipelineProperties.shaderGroupBaseAlignment);
VK_CHECK_RESULT(vulkanDevice->createBuffer(bufferUsageFlags, memoryUsageFlags, &raygenShaderBindingTable, bufferSize));
VK_CHECK_RESULT(vulkanDevice->createBuffer(bufferUsageFlags, memoryUsageFlags, &missShaderBindingTable, bufferSize));
VK_CHECK_RESULT(vulkanDevice->createBuffer(bufferUsageFlags, memoryUsageFlags, &hitShaderBindingTable, bufferSize));

// Copy handles
raygenShaderBindingTable.map();
Expand Down Expand Up @@ -768,18 +769,18 @@ class VulkanExample : public VulkanExampleBase
// that we use to store our color data
VkStridedDeviceAddressRegionKHR raygenShaderSbtEntry{};
raygenShaderSbtEntry.deviceAddress = getBufferDeviceAddress(raygenShaderBindingTable.buffer);
raygenShaderSbtEntry.stride = handleSizeAligned;
raygenShaderSbtEntry.size = vks::tools::alignedSize(handleSizeAligned + 3 * sizeof(float), rayTracingPipelineProperties.shaderGroupBaseAlignment);
raygenShaderSbtEntry.stride = raygenShaderSbtEntry.size;

VkStridedDeviceAddressRegionKHR missShaderSbtEntry{};
missShaderSbtEntry.deviceAddress = getBufferDeviceAddress(missShaderBindingTable.buffer);
missShaderSbtEntry.stride = handleSizeAligned;
missShaderSbtEntry.size = vks::tools::alignedSize(handleSizeAligned + 3 * sizeof(float), rayTracingPipelineProperties.shaderGroupBaseAlignment);
missShaderSbtEntry.stride = missShaderSbtEntry.size;

VkStridedDeviceAddressRegionKHR hitShaderSbtEntry{};
hitShaderSbtEntry.deviceAddress = getBufferDeviceAddress(hitShaderBindingTable.buffer);
hitShaderSbtEntry.stride = handleSizeAligned;
hitShaderSbtEntry.size = vks::tools::alignedSize(handleSizeAligned + 3 * sizeof(float), rayTracingPipelineProperties.shaderGroupBaseAlignment);
hitShaderSbtEntry.stride = hitShaderSbtEntry.size;

VkStridedDeviceAddressRegionKHR callableShaderSbtEntry{};

Expand Down
Binary file modified shaders/glsl/raytracingsbtdata/closesthit.rchit.spv
Binary file not shown.
Binary file modified shaders/glsl/raytracingsbtdata/miss.rmiss.spv
Binary file not shown.
Binary file modified shaders/glsl/raytracingsbtdata/raygen.rgen.spv
Binary file not shown.

0 comments on commit fc27e4d

Please sign in to comment.