Archived
1
Fork 0

Support all culling and winding modes on Vulkan

This commit is contained in:
redstrate 2021-02-07 16:37:38 -05:00
parent a80b6034c5
commit 8f4b9f593c

View file

@ -785,15 +785,30 @@ GFXPipeline* GFXVulkan::create_graphics_pipeline(const GFXGraphicsPipelineCreate
rasterizer.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO; rasterizer.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO;
rasterizer.polygonMode = VK_POLYGON_MODE_FILL; rasterizer.polygonMode = VK_POLYGON_MODE_FILL;
rasterizer.lineWidth = 1.0f; rasterizer.lineWidth = 1.0f;
rasterizer.cullMode = VK_CULL_MODE_NONE;
rasterizer.frontFace = VK_FRONT_FACE_CLOCKWISE; switch (info.rasterization.culling_mode) {
case GFXCullingMode::Backface:
rasterizer.cullMode = VK_CULL_MODE_BACK_BIT;
break;
case GFXCullingMode::Frontface:
rasterizer.cullMode = VK_CULL_MODE_FRONT_BIT;
break;
case GFXCullingMode::None:
rasterizer.cullMode = VK_CULL_MODE_NONE;
}
switch (info.rasterization.winding_mode) {
case GFXWindingMode::Clockwise:
rasterizer.frontFace = VK_FRONT_FACE_CLOCKWISE;
break;
case GFXWindingMode::CounterClockwise:
rasterizer.frontFace = VK_FRONT_FACE_COUNTER_CLOCKWISE;
break;
}
if (info.rasterization.polygon_type == GFXPolygonType::Line) if (info.rasterization.polygon_type == GFXPolygonType::Line)
rasterizer.polygonMode = VK_POLYGON_MODE_LINE; rasterizer.polygonMode = VK_POLYGON_MODE_LINE;
if (info.rasterization.culling_mode == GFXCullingMode::Backface) {
rasterizer.cullMode = VK_CULL_MODE_BACK_BIT;
}
VkPipelineMultisampleStateCreateInfo multisampling = {}; VkPipelineMultisampleStateCreateInfo multisampling = {};
multisampling.sType = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO; multisampling.sType = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO;