1
0
Fork 0
Univerxel/src/client/render/vk/Pipeline.hpp

39 lines
1001 B
C++

#pragma once
#include "forward.hpp"
namespace render::vk {
struct Subpass {
VkShaderModule vsShader;
VkShaderModule fsShader;
VkPipelineLayout layout;
VkPipeline pipeline;
};
class Pipeline final {
public:
Pipeline(VkDevice, const PhysicalDeviceInfo&, const renderOptions&);
~Pipeline();
// Universe renderpass
constexpr VkRenderPass getRenderPass() const { return renderPass; }
// Voxels (world & entity) passes descriptor set
constexpr VkDescriptorSetLayout getVoxelDescriptorSet() const { return voxelDescriptorSet; }
constexpr const Subpass& getWorldPass() const { return worldPass; }
constexpr VkDescriptorSetLayout getSkyDescriptorSet() const { return skyDescriptorSet; }
constexpr const Subpass& getSkyPass() const { return skyPass; }
private:
VkDevice device;
VkRenderPass renderPass;
VkDescriptorSetLayout voxelDescriptorSet;
VkDescriptorSetLayout skyDescriptorSet;
Subpass worldPass;
Subpass skyPass;
};
}