5vk::Pipeline Graphics::createMesh3DStylePipeline(
const std::vector<uint32_t>&
vert,
const std::vector<uint32_t>&
frag,
6 vk::PipelineLayout
layout,
const vkb::BuiltRenderPass& rp,
8 bool doubleSided,
const MeshShaderRasterState& raster) {
9 vk::ShaderModuleCreateInfo vertexInfo{};
10 vertexInfo.codeSize =
vert.size() *
sizeof(uint32_t);
11 vertexInfo.pCode =
vert.data();
12 auto vertModule = device->createShaderModuleUnique(vertexInfo);
13 vk::ShaderModuleCreateInfo fragmentInfo{};
14 fragmentInfo.codeSize =
frag.size() *
sizeof(uint32_t);
15 fragmentInfo.pCode =
frag.data();
16 auto fragModule = device->createShaderModuleUnique(fragmentInfo);
17 const auto cull =
doubleSided ? vk::CullModeFlagBits::eNone : vk::CullModeFlagBits::eBack;
20 : vk::CompareOp::eLess;
23 std::vector<vk::PipelineColorBlendAttachmentState> attachments(1, makeBlendAttachment(
blend));
25 attachments[0].colorWriteMask = vk::ColorComponentFlags(raster.colorWriteMask);
26 vk::PipelineColorBlendStateCreateInfo cbs{};
27 cbs.attachmentCount = 1;
28 cbs.pAttachments = attachments.data();
30 device.createPipeline()
31 .useClassicPipeline(vertModule.get(), fragModule.get())
34 vkb::VertexInputStateBuilder().addInputBinding<MeshVertex>().addAttributeDescription<MeshVertex>())
35 .setDynamicStatesViewportScissor()
36 .setRasterizer(vk::PolygonMode::eFill,
false,
false, 1.0f, cull, vk::FrontFace::eCounterClockwise)
37 .setMultisampler(
false, samples)
38 .setDepthBias(raster.depthBiasConstant, raster.depthBiasSlope)
39 .setDepthStencil(
true, depthWrite, compare)
40 .setColorBlending(cbs)
44 device.createPipeline()
45 .useClassicPipeline(vertModule.get(), fragModule.get())
48 vkb::VertexInputStateBuilder().addInputBinding<MeshVertex>().addAttributeDescription<MeshVertex>())
49 .setDynamicStatesViewportScissor()
50 .setRasterizer(vk::PolygonMode::eFill,
false,
false, 1.0f, cull, vk::FrontFace::eCounterClockwise)
51 .setMultisampler(
false, samples)
52 .setDepthBias(raster.depthBiasConstant, raster.depthBiasSlope)
53 .setDepthStencil(
true, depthWrite, compare)
54 .setColorAttachmentCount(1)
eve::BlendMode BlendMode
Compatibility alias for the shared 2D blend mode.