.. _program_listing_file_Src_GraphicsEngineVulkan_renderer_Raytracing.hpp: Program Listing for File Raytracing.hpp ======================================= |exhale_lsh| :ref:`Return to documentation for file ` (``Src/GraphicsEngineVulkan/renderer/Raytracing.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #pragma once #include #include "renderer/pushConstants/PushConstantRayTracing.hpp" #include "vulkan_base/VulkanBuffer.hpp" #include "vulkan_base/VulkanSwapChain.hpp" namespace Kataglyphis::VulkanRendererInternals { class Raytracing { public: Raytracing(); void init(VulkanDevice *device, const std::vector &descriptorSetLayouts); void shaderHotReload(const std::vector &descriptor_set_layouts); void recordCommands(VkCommandBuffer &commandBuffer, VulkanSwapChain *vulkanSwapChain, const std::vector &descriptorSets); void cleanUp(); ~Raytracing(); private: VulkanDevice *device{ VK_NULL_HANDLE }; VulkanSwapChain *vulkanSwapChain{ VK_NULL_HANDLE }; VkPipeline graphicsPipeline{ VK_NULL_HANDLE }; VkPipelineLayout pipeline_layout{ VK_NULL_HANDLE }; PushConstantRaytracing pc{ glm::vec4(0.f) }; VkPushConstantRange pc_ranges{ VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM, 0, 0 }; std::vector shader_groups; VulkanBuffer shaderBindingTableBuffer; VulkanBuffer raygenShaderBindingTableBuffer; VulkanBuffer missShaderBindingTableBuffer; VulkanBuffer hitShaderBindingTableBuffer; VkStridedDeviceAddressRegionKHR rgen_region{}; VkStridedDeviceAddressRegionKHR miss_region{}; VkStridedDeviceAddressRegionKHR hit_region{}; VkStridedDeviceAddressRegionKHR call_region{}; VkPhysicalDeviceRayTracingPipelinePropertiesKHR raytracing_properties{}; void createPCRange(); void createGraphicsPipeline(const std::vector &descriptorSetLayouts); void createSBT(); }; }// namespace Kataglyphis::VulkanRendererInternals