// Copyright (C) 2016 Jérôme Leclercq // This file is part of the "Nazara Engine - Renderer module" // For conditions of distribution and use, see copyright notice in Config.hpp #pragma once #ifndef NAZARA_VULKANRENDERER_VULKANRENDERPIPELINE_HPP #define NAZARA_VULKANRENDERER_VULKANRENDERPIPELINE_HPP #include #include #include #include #include namespace Nz { class NAZARA_VULKANRENDERER_API VulkanRenderPipeline : public RenderPipeline { public: struct CreateInfo; VulkanRenderPipeline(Vk::DeviceHandle device, RenderPipelineInfo pipelineInfo); ~VulkanRenderPipeline() = default; static std::vector BuildColorBlendAttachmentState(const RenderPipelineInfo& pipelineInfo); static VkPipelineDepthStencilStateCreateInfo BuildDepthStencilInfo(const RenderPipelineInfo& pipelineInfo); static VkPipelineInputAssemblyStateCreateInfo BuildInputAssemblyInfo(const RenderPipelineInfo& pipelineInfo); static VkPipelineRasterizationStateCreateInfo BuildRasterizationInfo(const RenderPipelineInfo& pipelineInfo); static VkStencilOpState BuildStencilOp(const RenderPipelineInfo& pipelineInfo, bool front); static std::vector BuildShaderStageInfo(const RenderPipelineInfo& pipelineInfo); static CreateInfo BuildCreateInfo(const RenderPipelineInfo& pipelineInfo); struct CreateInfo { std::vector colorBlendAttachmentState; std::vector shaderStages; VkGraphicsPipelineCreateInfo createInfo; }; private: Vk::DeviceHandle m_device; RenderPipelineInfo m_pipelineInfo; }; } #include #endif // NAZARA_VULKANRENDERER_VULKANRENDERPIPELINE_HPP