diff --git a/src/vkcv/PipelineManager.cpp b/src/vkcv/PipelineManager.cpp index e536895da6527aec02a806176ce1113ed8f9202f..66854f30f78e1f57440553a749a6ab044520783d 100644 --- a/src/vkcv/PipelineManager.cpp +++ b/src/vkcv/PipelineManager.cpp @@ -258,45 +258,9 @@ namespace vkcv vk::PipelineViewportStateCreateInfo pipelineViewportStateCreateInfo = createPipelineViewportStateCreateInfo(config); - vk::CullModeFlags cullMode; - switch (config.m_culling) { - case CullMode::None: - cullMode = vk::CullModeFlagBits::eNone; - break; - case CullMode::Front: - cullMode = vk::CullModeFlagBits::eFront; - break; - case CullMode::Back: - cullMode = vk::CullModeFlagBits::eBack; - break; - default: - vkcv_log(LogLevel::ERROR, "Unknown CullMode"); - cullMode = vk::CullModeFlagBits::eNone; - } - // rasterization state - vk::PipelineRasterizationStateCreateInfo pipelineRasterizationStateCreateInfo( - {}, - config.m_EnableDepthClamping, - false, - vk::PolygonMode::eFill, - cullMode, - vk::FrontFace::eCounterClockwise, - false, - 0.f, - 0.f, - 0.f, - 1.f - ); - - vk::PipelineRasterizationConservativeStateCreateInfoEXT conservativeRasterization; - if (config.m_UseConservativeRasterization) { - conservativeRasterization = vk::PipelineRasterizationConservativeStateCreateInfoEXT( - {}, - vk::ConservativeRasterizationModeEXT::eOverestimate, - 0.f); - pipelineRasterizationStateCreateInfo.pNext = &conservativeRasterization; - } + vk::PipelineRasterizationStateCreateInfo pipelineRasterizationStateCreateInfo = + createPipelineRasterizationStateCreateInfo(config); // multisample state vk::PipelineMultisampleStateCreateInfo pipelineMultisampleStateCreateInfo( @@ -613,4 +577,49 @@ namespace vkcv &scissor); return pipelineViewportStateCreateInfo; } + + vk::PipelineRasterizationStateCreateInfo + PipelineManager::createPipelineRasterizationStateCreateInfo(const PipelineConfig &config) { + + vk::CullModeFlags cullMode; + switch (config.m_culling) { + case CullMode::None: + cullMode = vk::CullModeFlagBits::eNone; + break; + case CullMode::Front: + cullMode = vk::CullModeFlagBits::eFront; + break; + case CullMode::Back: + cullMode = vk::CullModeFlagBits::eBack; + break; + default: + vkcv_log(LogLevel::ERROR, "Unknown CullMode"); + cullMode = vk::CullModeFlagBits::eNone; + } + + vk::PipelineRasterizationStateCreateInfo pipelineRasterizationStateCreateInfo ( + {}, + config.m_EnableDepthClamping, + false, + vk::PolygonMode::eFill, + cullMode, + vk::FrontFace::eCounterClockwise, + false, + 0.f, + 0.f, + 0.f, + 1.f + ); + + vk::PipelineRasterizationConservativeStateCreateInfoEXT conservativeRasterization; + if (config.m_UseConservativeRasterization) { + conservativeRasterization = vk::PipelineRasterizationConservativeStateCreateInfoEXT( + {}, + vk::ConservativeRasterizationModeEXT::eOverestimate, + 0.f); + pipelineRasterizationStateCreateInfo.pNext = &conservativeRasterization; + } + + return pipelineRasterizationStateCreateInfo; + } } diff --git a/src/vkcv/PipelineManager.hpp b/src/vkcv/PipelineManager.hpp index 0e80b02eb00da6e7bc9c4e7f34c876ccc313ebe9..18dd5b993869b24711826d7ea618760e9ca2fb8a 100644 --- a/src/vkcv/PipelineManager.hpp +++ b/src/vkcv/PipelineManager.hpp @@ -82,10 +82,24 @@ namespace vkcv vk::PipelineInputAssemblyStateCreateInfo createPipelineInputAssemblyStateCreateInfo(const PipelineConfig &config); /** - * Create a Pipeline Viewport State Create Info Struct with default set viewport and scissor settings + * Create a Pipeline Viewport State Create Info Struct with default set viewport and scissor settings. * @param config provides with and height of the output window * @return Pipeline Viewport State Create Info Struct */ vk::PipelineViewportStateCreateInfo createPipelineViewportStateCreateInfo(const PipelineConfig &config); + + /** + * Create a Pipeline Rasterization State Create Info Struct with default values set to: + * Rasterizer Discard: Disabled + * Polygon Mode: Fill + * Front Face: Counter Clockwise + * Depth Bias: Disabled + * Line Width: 1.0 + * Depth Clamping and Culling Mode ist set by the Pipeline Config + * @param config sets Depth Clamping and Culling Mode + * @return Pipeline Rasterization State Create Info Struct + */ + vk::PipelineRasterizationStateCreateInfo createPipelineRasterizationStateCreateInfo(const PipelineConfig &config); + }; }