Skip to content
Snippets Groups Projects
Commit 8a2fa49a authored by Mark Oliver Mints's avatar Mark Oliver Mints
Browse files

[#71] Refactor: implement a create function for Pipeline Rasterization State Create Info Struct

parent 13a9d91f
No related branches found
No related tags found
1 merge request!83Resolve "Refactor Pipeline Config and Manager"
Pipeline #26692 passed
...@@ -258,45 +258,9 @@ namespace vkcv ...@@ -258,45 +258,9 @@ namespace vkcv
vk::PipelineViewportStateCreateInfo pipelineViewportStateCreateInfo = vk::PipelineViewportStateCreateInfo pipelineViewportStateCreateInfo =
createPipelineViewportStateCreateInfo(config); 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 // rasterization state
vk::PipelineRasterizationStateCreateInfo pipelineRasterizationStateCreateInfo( vk::PipelineRasterizationStateCreateInfo pipelineRasterizationStateCreateInfo =
{}, createPipelineRasterizationStateCreateInfo(config);
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;
}
// multisample state // multisample state
vk::PipelineMultisampleStateCreateInfo pipelineMultisampleStateCreateInfo( vk::PipelineMultisampleStateCreateInfo pipelineMultisampleStateCreateInfo(
...@@ -613,4 +577,49 @@ namespace vkcv ...@@ -613,4 +577,49 @@ namespace vkcv
&scissor); &scissor);
return pipelineViewportStateCreateInfo; 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;
}
} }
...@@ -82,10 +82,24 @@ namespace vkcv ...@@ -82,10 +82,24 @@ namespace vkcv
vk::PipelineInputAssemblyStateCreateInfo createPipelineInputAssemblyStateCreateInfo(const PipelineConfig &config); 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 * @param config provides with and height of the output window
* @return Pipeline Viewport State Create Info Struct * @return Pipeline Viewport State Create Info Struct
*/ */
vk::PipelineViewportStateCreateInfo createPipelineViewportStateCreateInfo(const PipelineConfig &config); 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);
}; };
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment