text: #pragma once
  #include "OdysseyVulkanCore/OdysseyVulkanCore/Handle/Handles.h"
  #include "OdysseyVulkanCore/OdysseyVulkanCore/Engine/RenderDatatypes.h"
  #include "OdysseyVulkanCore/OdysseyVulkanCore/Initialize/Swapchain/Framebuffer.h"
  #include "OdysseyVulkanCore/OdysseyVulkanCore/Initialize/RenderClasses/DepthBuffer.h"
  #include "OdysseyVulkanCore/OdysseyVulkanCore/Descriptor/DescriptorSetAllocator.h"
  #include "OdysseyVulkanCore/OdysseyVulkanCore/Descriptor/DescriptorSetLayoutCache.h"
  #include "OdysseyVulkanCore/OdysseyVulkanCore/Utility/Enums.h"
  #include <vulkan/vulkan.h>
  #include <memory>
  #include <vector>
  #include <unordered_map>
  
  namespace OdysseyVulkanCore::Initialize {
  
  struct Render {
    std::unique_ptr<DepthBuffer> depth_buffer{};
  
    std::unique_ptr<Handles::RenderpassHandle> renderpass{};
    std::unique_ptr<Framebuffer> framebuffer{};
    std::unordered_map<std::string, std::unique_ptr<Handles::SamplerHandle>> samplers;
  
    std::unique_ptr<Descriptor::DescriptorSetAllocator> descriptor_allocator{};
    std::unique_ptr<Descriptor::DescriptorSetLayoutCache> descriptor_layout_cache{};
  
    std::unordered_map<std::string, std::unique_ptr<Handles::GraphicsPipelineHandle>> pipelines;
    std::unordered_map<Enums::PipelineLayoutType, std::unique_ptr<Handles::PipelineLayoutHandle>> pipeline_layouts;
  
    VkRenderPass vk_renderpass{};
    std::vector<VkFramebuffer> vk_framebuffers{};
    std::unordered_map<std::string, VkSampler> vk_samplers;
    std::unordered_map<std::string, Engine::PipelineConfig> pipeline_config{};
  };
  
  }  // namespace OdysseyVulkanCore::Initialize
  