Program Listing for File pipelineSettingsPresets.cpp

Return to documentation for file (PrismEngine/src/pipelineSettingsPresets.cpp)

#include "pipelineSettings.h"

void prism::PGC::utils::PipelineSettings::withOpaquePBR()
{

    // settings.shaders = { "pbr-vert.spv", "pbr-frag.spv", "shaders/" };
    shaders = { "vert.spv", "frag.spv", "shaders/" };
    inputAssembly.topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST;

    colorBlend.attachments = {
        VkPipelineColorBlendAttachmentState{
            VK_FALSE,                                  // blendEnable
            VK_BLEND_FACTOR_ONE,                       // srcColorBlendFactor
            VK_BLEND_FACTOR_ZERO,                      // dstColorBlendFactor
            VK_BLEND_OP_ADD,                           // colorBlendOp
            VK_BLEND_FACTOR_ONE,                       // srcAlphaBlendFactor
            VK_BLEND_FACTOR_ZERO,                      // dstAlphaBlendFactor
            VK_BLEND_OP_ADD,                           // alphaBlendOp
            VK_COLOR_COMPONENT_R_BIT | VK_COLOR_COMPONENT_G_BIT |
            VK_COLOR_COMPONENT_B_BIT | VK_COLOR_COMPONENT_A_BIT
        }
    };
    colorBlend.logicOpEnable = VK_FALSE;
}

void prism::PGC::utils::PipelineSettings::withSkybox(bool cullFront)
{
    shaders = { "albedo-vert.spv", "albedo-frag.spv", "shaders/" };

    rasterization.cullMode = cullFront ? VK_CULL_MODE_FRONT_BIT : VK_CULL_MODE_BACK_BIT;

    depthStencil.depthWriteEnable = VK_FALSE;
    depthStencil.depthCompareOp = VK_COMPARE_OP_LESS_OR_EQUAL;

    multisample.rasterizationSamples = VK_SAMPLE_COUNT_1_BIT;

    colorBlend.attachments = {
        VkPipelineColorBlendAttachmentState{
                VK_FALSE,                                  // blendEnable
                VK_BLEND_FACTOR_ONE,                       // srcColorBlendFactor
                VK_BLEND_FACTOR_ZERO,                      // dstColorBlendFactor
                VK_BLEND_OP_ADD,                           // colorBlendOp
                VK_BLEND_FACTOR_ONE,                       // srcAlphaBlendFactor
                VK_BLEND_FACTOR_ZERO,                      // dstAlphaBlendFactor
                VK_BLEND_OP_ADD,                           // alphaBlendOp
                VK_COLOR_COMPONENT_R_BIT | VK_COLOR_COMPONENT_G_BIT |
                VK_COLOR_COMPONENT_B_BIT | VK_COLOR_COMPONENT_A_BIT
        }
    };

    colorBlend.logicOpEnable = VK_FALSE;
}

void prism::PGC::utils::PipelineSettings::withWireframeDebug()
{
    shaders = { "albedo-vert.spv", "albedo-frag.spv", "shaders/" };

    rasterization.polygonMode = VK_POLYGON_MODE_LINE;
    rasterization.lineWidth = 1.5f;
    rasterization.cullMode = VK_CULL_MODE_NONE;

    multisample.sampleShadingEnable = VK_FALSE;
    multisample.rasterizationSamples = VK_SAMPLE_COUNT_1_BIT;

    colorBlend.attachments = {
        VkPipelineColorBlendAttachmentState{
                VK_FALSE,                                  // blendEnable
                VK_BLEND_FACTOR_ONE,                       // srcColorBlendFactor
                VK_BLEND_FACTOR_ZERO,                      // dstColorBlendFactor
                VK_BLEND_OP_ADD,                           // colorBlendOp
                VK_BLEND_FACTOR_ONE,                       // srcAlphaBlendFactor
                VK_BLEND_FACTOR_ZERO,                      // dstAlphaBlendFactor
                VK_BLEND_OP_ADD,                           // alphaBlendOp
                VK_COLOR_COMPONENT_R_BIT | VK_COLOR_COMPONENT_G_BIT |
                VK_COLOR_COMPONENT_B_BIT | VK_COLOR_COMPONENT_A_BIT
        }
    };

    colorBlend.logicOpEnable = VK_FALSE;

    dynamicState.dynamicStates = {
        VK_DYNAMIC_STATE_VIEWPORT,
        VK_DYNAMIC_STATE_SCISSOR,
        VK_DYNAMIC_STATE_LINE_WIDTH
    };
}