Program Listing for File pipelineBuilder.h

↰ Return to documentation for file (PrismEngine/src/pipelineBuilder.h)

#pragma once


class PipelineBuilder {
public:
    PipelineBuilder();
    PipelineBuilder(PipelineComponent pipeline);
    PipelineBuilder(PipelinePreset pipeline);
    PipelineShaderStagesBuilder& beginShaderStages();
    PipelineInputAssemblyBuilder& beginInputAssembly();
    PipelineTessellationBuilder& beginTessellation();
    PipelineViewportBuilder& beginViewport();
    PipelineRasterizationBuilder& beginRasterization();
    PipelineMultisampleBuilder& beginMultisample();
    PipelineDepthStencilBuilder& beginDepthStencil();
    PipelineColorBlendBuilder& beginColorBlend();

    PipelineComponent complete();
};

class PipelineShaderStagesBuilder {
    PipelineShaderStagesBuilder& count(uint32_t count);
    PipelineShaderStagesBuilder& shader(uint32_t index, StageType type, AssetSpec assetSpec);
    PipelineShaderStagesBuilder& entryPoint(uint32_t index, const char* entryPoint);

    PipelineShaderStagesBuilder& specializationConstantCount(uint32_t index, uint32_t size);
    PipelineShaderStagesBuilder& specializationConstantInfo(uint32_t index, uint32_t constantIndex, uint32_t constantID, uint32_t offset, uint32_t size);
    PipelineShaderStagesBuilder& specializationConstantData(uint32_t index, uint32_t constantIndex, const void* data, size_t size);

    PipelineBuilder& end();
};

class PipelineInputAssemblyBuilder {
    PipelineInputAssemblyBuilder& topology(PrimitiveTopology topology);
    PipelineInputAssemblyBuilder& primitiveRestart(bool enable);

    PipelineBuilder& end();
};

class PipelineTessellationBuilder {
    PipelineTessellationBuilder& patchControlPoints(uint32_t count);

    PipelineBuilder& end();
};

class PipelineViewportBuilder {
    PipelineViewportBuilder& count(uint32_t count);
    PipelineViewportBuilder& viewport(uint32_t viewportIndex, float x, float y, float width, float height, float minDepth, float maxDepth);
    PipelineViewportBuilder& scissor(uint32_t viewportIndex, uint32_t x, uint32_t y, uint32_t width, uint32_t height);

    PipelineBuilder& end();
};

class PipelineRasterizationBuilder {
    PipelineRasterizationBuilder& depthClamp(bool enable);
    PipelineRasterizationBuilder& rasterizerDiscard(bool enable);
    PipelineRasterizationBuilder& polygonMode(PolygonMode mode);
    PipelineRasterizationBuilder& cullMode(CullMode mode);
    PipelineRasterizationBuilder& frontFace(FrontFace frontFace);
    PipelineRasterizationBuilder& depthBias(bool enable);
    PipelineRasterizationBuilder& depthBiasConstantFactor(float factor);
    PipelineRasterizationBuilder& depthBiasClamp(float clamp);
    PipelineRasterizationBuilder& depthBiasSlopeFactor(float factor);
    PipelineRasterizationBuilder& lineWidth(float width);

    PipelineBuilder& end();
};


class PipelineMultisampleBuilder {
    PipelineMultisampleBuilder& sampleShading(bool enable);
    PipelineMultisampleBuilder& rasterizationSamples(SampleCount count);
    PipelineMultisampleBuilder& minSampleShading(float value);
    PipelineMultisampleBuilder& alphaToCoverage(bool enable);
    PipelineMultisampleBuilder& alphaToOne(bool enable);

    PipelineBuilder& end();
};

class PipelineDepthStencilBuilder {
    PipelineDepthStencilBuilder& depthTest(bool enable);
    PipelineDepthStencilBuilder& depthWrite(bool enable);
    PipelineDepthStencilBuilder& depthCompareOp(CompareOp CompareOp);
    PipelineDepthStencilBuilder& depthBoundsTest(bool enable);
    PipelineDepthStencilBuilder& minDepthBounds(float value);
    PipelineDepthStencilBuilder& maxDepthBounds(float value);
    PipelineDepthStencilBuilder& stencilTest(bool enable);
    PipelineDepthStencilBuilder& stencilFront(StencilOp failOp, StencilOp passOp, StencilOp depthFailOp, CompareOp compareOp);
    PipelineDepthStencilBuilder& stencilFrontMasks(uint32_t  compareMask, uint32_t writeMask, uint32_t reference);
    PipelineDepthStencilBuilder& stencilBack(StencilOp failOp, StencilOp passOp, StencilOp depthFailOp, CompareOp compareOp);
    PipelineDepthStencilBuilder& stencilBackMasks(uint32_t  compareMask, uint32_t writeMask, uint32_t reference);

    PipelineBuilder& end();
};

class PipelineColorBlendBuilder {
    PipelineColorBlendBuilder& logicOpEnable(bool enable);
    PipelineColorBlendBuilder& logicOp(LogicOp logicOp);
    PipelineColorBlendBuilder& blending(bool enable);
    PipelineColorBlendBuilder& blendingScrColorFactor(BlendFactor srcColorFactor);
    PipelineColorBlendBuilder& blendingDstColorFactor(BlendFactor dstColorFactor);
    PipelineColorBlendBuilder& blendingColorOp(BlendOp colorOp);
    PipelineColorBlendBuilder& blendingSrcAlphaFactor(BlendFactor srcAlphaFactor);
    PipelineColorBlendBuilder& blendingDstAlphaFactor(BlendFactor dstAlphaFactor);
    PipelineColorBlendBuilder& blendingAlphaOp(BlendOp alphaOp);
    PipelineColorBlendBuilder& blendingColorWriteMask(ColorComponent colorWriteMask);

    PipelineBuilder& end();
};