Pipeline
The Pipeline class manages the configuration of a graphics pipeline, offering control over shader stages, primitive types, blending, depth and stencil testing, and rasterization. It allows users to configure and retrieve various pipeline parameters, including vertex attributes, texture and surface bindings, sampling configurations, and memory offsets. The class supports shader creation, loading, and compilation in multiple formats such as native, GLSL, and SPIRV, providing fine-grained control over pipeline states.
#include <platform/TellusimPipeline.h>
Constructors
Pipeline()
Methods
Pipeline platform.
Platform getPlatform() const
const char *getPlatformName() const
Pipeline device index.
uint32_t getIndex() const
Clear pipeline.
void clear()
Check pipeline.
bool isCreated() const
Pipeline name.
void setName(const char *name)
String getName() const
Create pipeline.
bool create()
Pipeline parameters.
void setParameters(const Pipeline &pipeline)
bool saveState(Stream &stream) const
Shader pointers.
void addShader(Shader &shader, bool owner = false)
Shader getVertexShader() const
Shader getControlShader() const
Shader getEvaluateShader() const
Shader getGeometryShader() const
Shader getFragmentShader() const
Shader getTaskShader() const
Shader getMeshShader() const
Load shaders.
bool loadShader(Type type, const char *name, const char *format)
bool loadShaderGLSL(Type type, const char *name, const char *format)
bool loadShader(Type type, const char *name, const String ¯os = String::null, const char **includes = nullptr, uint32_t size = 0)
bool loadShaderGLSL(Type type, const char *name, const String ¯os = String::null, const char **includes = nullptr, uint32_t size = 0)
bool loadShaderSPIRV(Type type, const char *name)
Create shaders.
bool createShader(Type type, const char *src, const char *format)
bool createShaderGLSL(Type type, const char *src, const char *format)
bool createShader(Type type, const char *src, const String ¯os = String::null, const char **includes = nullptr, uint32_t size = 0)
bool createShaderGLSL(Type type, const char *src, const String ¯os = String::null, const char **includes = nullptr, uint32_t size = 0)
bool createShaderSPIRV(Type type, Array<uint32_t> data)
Sampler parameters.
uint32_t addSampler(Mask mask)
uint32_t getNumSamplers() const
Pipeline setSamplerOffset(uint32_t offset)
uint32_t getSamplerOffset() const
Pipeline setSamplerMask(uint32_t index, Mask mask)
Mask getSamplerMask(uint32_t index) const
Pipeline setSamplerMasks(uint32_t index, uint32_t num, Mask mask, bool array = false)
Mask getSamplerMasks(uint32_t index, uint32_t num) const
Pipeline setSamplerArray(uint32_t index, uint32_t num, bool array)
uint32_t getSamplerArray(uint32_t index) const
Texture parameters.
uint32_t addTexture(Mask mask)
uint32_t getNumTextures() const
Pipeline setTextureOffset(uint32_t offset)
uint32_t getTextureOffset() const
Pipeline setTextureMask(uint32_t index, Mask mask)
Mask getTextureMask(uint32_t index) const
Pipeline setTextureMasks(uint32_t index, uint32_t num, Mask mask, bool array = false)
Mask getTextureMasks(uint32_t index, uint32_t num) const
Pipeline setTextureArray(uint32_t index, uint32_t num, bool array)
uint32_t getTextureArray(uint32_t index) const
Surface parameters.
uint32_t addSurface(Mask mask)
uint32_t getNumSurfaces() const
Pipeline setSurfaceOffset(uint32_t offset)
uint32_t getSurfaceOffset() const
Pipeline setSurfaceMask(uint32_t index, Mask mask)
Mask getSurfaceMask(uint32_t index) const
Pipeline setSurfaceMasks(uint32_t index, uint32_t num, Mask mask, bool array = false)
Mask getSurfaceMasks(uint32_t index, uint32_t num) const
Pipeline setSurfaceArray(uint32_t index, uint32_t num, bool array)
uint32_t getSurfaceArray(uint32_t index) const
Uniform parameters.
uint32_t addUniform(Mask mask, BindFlags flags = BindFlagNone)
uint32_t getNumUniforms() const
Pipeline setUniformOffset(uint32_t offset)
uint32_t getUniformOffset() const
Pipeline setUniformMask(uint32_t index, Mask mask, BindFlags flags = BindFlagNone)
Mask getUniformMask(uint32_t index) const
Pipeline setUniformMasks(uint32_t index, uint32_t num, Mask mask, BindFlags flags = BindFlagNone)
Mask getUniformMasks(uint32_t index, uint32_t num) const
Pipeline setUniformFlags(uint32_t index, BindFlags flags)
BindFlags getUniformFlags(uint32_t index) const
Storage parameters.
uint32_t addStorage(Mask mask, BindFlags flags = BindFlagNone)
uint32_t getNumStorages() const
Pipeline setStorageOffset(uint32_t offset)
uint32_t getStorageOffset() const
Pipeline setStorageMask(uint32_t index, Mask mask, BindFlags flags = BindFlagNone)
Mask getStorageMask(uint32_t index) const
Pipeline setStorageMasks(uint32_t index, uint32_t num, Mask mask, BindFlags flags = BindFlagNone)
Mask getStorageMasks(uint32_t index, uint32_t num) const
Pipeline setStorageFlags(uint32_t index, BindFlags flags)
BindFlags getStorageFlags(uint32_t index) const
Tracing parameters.
uint32_t addTracing(Mask mask)
uint32_t getNumTracings() const
Pipeline setTracingOffset(uint32_t offset)
uint32_t getTracingOffset() const
Pipeline setTracingMask(uint32_t index, Mask mask)
Mask getTracingMask(uint32_t index) const
Pipeline setTracingMasks(uint32_t index, uint32_t num, Mask mask)
Mask getTracingMasks(uint32_t index, uint32_t num) const
Texel parameters.
uint32_t addTexel(Mask mask)
uint32_t getNumTexels() const
Pipeline setTexelOffset(uint32_t offset)
uint32_t getTexelOffset() const
Pipeline setTexelMask(uint32_t index, Mask mask)
Mask getTexelMask(uint32_t index) const
Pipeline setTexelMasks(uint32_t index, uint32_t num, Mask mask)
Mask getTexelMasks(uint32_t index, uint32_t num) const
Table parameters.
uint32_t addTable(TableType type, uint32_t size, Mask mask, BindFlags flags = BindFlagNone)
uint32_t getNumTables() const
Pipeline setTableOffset(uint32_t offset)
uint32_t getTableOffset() const
Pipeline setTableType(uint32_t index, TableType type, uint32_t size, Mask mask, BindFlags flags = BindFlagNone)
TableType getTableType(uint32_t index) const
uint32_t getTableSize(uint32_t index) const
Pipeline setTableMask(uint32_t index, Mask mask, BindFlags flags = BindFlagNone)
Mask getTableMask(uint32_t index) const
Pipeline setTableFlags(uint32_t index, BindFlags flags)
BindFlags getTableFlags(uint32_t index) const
Vertex parameters.
uint32_t getNumVertices() const
uint32_t getVertexStride(uint32_t index) const
uint32_t getVertexRate(uint32_t index) const
Vertex attributes.
uint32_t addAttribute(Attribute attribute, Format format, uint32_t vertex, size_t offset, size_t stride, uint32_t rate = 0)
Pipeline setAttribute(uint32_t index, Attribute attribute, Format format, uint32_t vertex, size_t offset, size_t stride, uint32_t rate = 0)
Pipeline setAttributeType(uint32_t index, Attribute attribute)
Pipeline setAttributeFormat(uint32_t index, Format format)
Pipeline setAttributeVertex(uint32_t index, uint32_t vertex)
Pipeline setAttributeOffset(uint32_t index, size_t offset)
Pipeline setAttributeStride(uint32_t index, size_t stride)
Pipeline setAttributeRate(uint32_t index, uint32_t rate)
uint32_t getNumAttributes() const
Attribute getAttributeType(uint32_t index) const
Format getAttributeFormat(uint32_t index) const
uint32_t getAttributeVertex(uint32_t index) const
uint32_t getAttributeOffset(uint32_t index) const
uint32_t getAttributeStride(uint32_t index) const
uint32_t getAttributeRate(uint32_t index) const
Rasterization parameters.
void setPrimitive(Primitive primitive)
Primitive getPrimitive() const
void setFillMode(FillMode mode)
FillMode getFillMode() const
void setCullMode(CullMode mode)
CullMode getCullMode() const
void setFrontMode(FrontMode mode)
FrontMode getFrontMode() const
void setDepthBias(float32_t bias, float32_t slope, float32_t clamp = 0.0f)
float32_t getDepthBias() const
float32_t getDepthSlope() const
float32_t getDepthClamp() const
void setMultisample(uint32_t multisample)
uint32_t getMultisample() const
void setSampleMask(uint32_t sample_mask)
uint32_t getSampleMask() const
void setDepthClip(bool enabled)
bool getDepthClip() const
void setDepthReplace(bool enabled)
bool getDepthReplace() const
void setScissorTest(bool enabled)
bool getScissorTest() const
void setRasterDiscard(bool enabled)
bool getRasterDiscard() const
void setSampleShading(bool enabled)
bool getSampleShading() const
void setAlphaToCoverage(bool enabled)
bool getAlphaToCoverage() const
void setMultisampleRaster(bool enabled)
bool getMultisampleRaster() const
void setConservativeRaster(bool enabled)
bool getConservativeRaster() const
void setNumViewports(uint32_t num_viewports)
uint32_t getNumTargets() const
uint32_t getNumViewports() const
void setNumClipDistances(uint32_t num_distances)
uint32_t getNumClipDistances() const
Blending parameters.
void setBlend(BlendOp op, BlendFunc src, BlendFunc dest)
void setBlendColor(BlendOp op, BlendFunc src, BlendFunc dest)
void setBlendAlpha(BlendOp op, BlendFunc src, BlendFunc dest)
void setBlend(uint32_t index, BlendOp op, BlendFunc src, BlendFunc dest)
void setBlendColor(uint32_t index, BlendOp op, BlendFunc src, BlendFunc dest)
void setBlendAlpha(uint32_t index, BlendOp op, BlendFunc src, BlendFunc dest)
BlendOp getBlendColorOp(uint32_t index) const
BlendOp getBlendAlphaOp(uint32_t index) const
BlendFunc getBlendSrcColorFunc(uint32_t index) const
BlendFunc getBlendSrcAlphaFunc(uint32_t index) const
BlendFunc getBlendDestColorFunc(uint32_t index) const
BlendFunc getBlendDestAlphaFunc(uint32_t index) const
Color parameters.
void setColorMask(ColorMask mask)
void setColorMask(uint32_t index, ColorMask mask)
void setColorFormat(uint32_t index, Format format)
void setColorFormat(Format format, uint32_t num = 1)
ColorMask getColorMask(uint32_t index) const
Format getColorFormat(uint32_t index) const
Depth parameters.
void setDepthMask(DepthMask mask)
void setDepthFunc(DepthFunc func)
void setDepthFormat(Format format)
DepthMask getDepthMask() const
DepthFunc getDepthFunc() const
Format getDepthFormat() const
Stencil parameters.
void setStencilMask(uint32_t mask)
void setStencilBackMask(uint32_t mask)
void setStencilFrontMask(uint32_t mask)
void setStencilFunc(StencilFunc func, StencilOp dpass_op)
void setStencilBackFunc(StencilFunc func, StencilOp dpass_op)
void setStencilFrontFunc(StencilFunc func, StencilOp dpass_op)
void setStencilFunc(StencilFunc func, StencilOp fail_op, StencilOp dfail_op, StencilOp dpass_op)
void setStencilBackFunc(StencilFunc func, StencilOp fail_op, StencilOp dfail_op, StencilOp dpass_op)
void setStencilFrontFunc(StencilFunc func, StencilOp fail_op, StencilOp dfail_op, StencilOp dpass_op)
uint32_t getStencilBackMask() const
StencilFunc getStencilBackFunc() const
StencilOp getStencilBackFailOp() const
StencilOp getStencilBackDepthFailOp() const
StencilOp getStencilBackDepthPassOp() const
uint32_t getStencilFrontMask() const
StencilFunc getStencilFrontFunc() const
StencilOp getStencilFrontFailOp() const
StencilOp getStencilFrontDepthFailOp() const
StencilOp getStencilFrontDepthPassOp() const
Enums
Primitive
Primitive types.
Name | Value | Description |
---|---|---|
PrimitivePoint | 0 | Point primitive. |
PrimitivePointPatch | 1 | Point patch primitive. |
PrimitiveLine | 2 | Line primitive. |
PrimitiveLineAdj | 3 | Line with adjacency primitive. |
PrimitiveLineStrip | 4 | Line strip primitive. |
PrimitiveLinePatch | 5 | Line patch primitive. |
PrimitiveTriangle | 6 | Triangle primitive. |
PrimitiveTriangleAdj | 7 | Triangle with adjacency primitive. |
PrimitiveTriangleStrip | 8 | Triangle strip primitive. |
PrimitiveTrianglePatch | 9 | Triangle patch primitive. |
PrimitiveQuadrilateralPatch | 10 | Quadrilateral patch primitive. |
NumPrimitiveTypes | 11 |
Attribute
Attribute types.
Name | Value | Description |
---|---|---|
AttributePosition | 0 | Position attribute. |
AttributeBasis | 1 | Basis attribute. |
AttributeNormal | 2 | Normal attribute. |
AttributeTangent | 3 | Tangent attribute. |
AttributeBinormal | 4 | Binormal attribute. |
AttributeTexCoord | 5 | Texcoord attribute. |
AttributeWeights | 6 | Joint weights attribute. |
AttributeJoints | 7 | Joint indices attribute. |
AttributeColor | 8 | Vertex color attribute. |
AttributeIndex | 9 | Vertex index attribute. |
NumAttributeTypes | 10 |
FillMode
Filling modes.
Name | Value |
---|---|
FillModeLine | 0 |
FillModeSolid | 1 |
NumFillModes | 2 |
CullMode
Culling modes.
Name | Value |
---|---|
CullModeNone | 0 |
CullModeBack | 1 |
CullModeFront | 2 |
NumCullModes | 3 |
FrontMode
Front modes.
Name | Value |
---|---|
FrontModeCCW | 0 |
FrontModeCW | 1 |
NumFrontModes | 2 |
BlendOp
Blending operations.
Name | Value |
---|---|
BlendOpAdd | 0 |
BlendOpSub | 1 |
BlendOpMin | 2 |
BlendOpMax | 3 |
NumBlendOperations | 4 |
BlendFunc
Blending functions.
Name | Value |
---|---|
BlendFuncNone | 0 |
BlendFuncZero | 1 |
BlendFuncOne | 2 |
BlendFuncSrcColor | 3 |
BlendFuncSrcAlpha | 4 |
BlendFuncSrc1Color | 5 |
BlendFuncSrc1Alpha | 6 |
BlendFuncDestColor | 7 |
BlendFuncDestAlpha | 8 |
BlendFuncFactorColor | 9 |
BlendFuncFactorAlpha | 10 |
BlendFuncInvSrcColor | 11 |
BlendFuncInvSrcAlpha | 12 |
BlendFuncInvSrc1Color | 13 |
BlendFuncInvSrc1Alpha | 14 |
BlendFuncInvDestColor | 15 |
BlendFuncInvDestAlpha | 16 |
BlendFuncInvFactorColor | 17 |
BlendFuncInvFactorAlpha | 18 |
NumBlendFunctions | 19 |
ColorMask
Color masks.
Name | Value |
---|---|
ColorMaskNone | 0 |
ColorMaskR | (1 << 0) |
ColorMaskG | (1 << 1) |
ColorMaskB | (1 << 2) |
ColorMaskA | (1 << 3) |
ColorMaskUnknown | (1 << 4) |
ColorMaskRGB | (ColorMaskR | ColorMaskG | ColorMaskB) |
ColorMaskAll | (ColorMaskRGB | ColorMaskA) |
DepthMask
Depth masks.
Name | Value |
---|---|
DepthMaskNone | 0 |
DepthMaskRead | 1 |
DepthMaskWrite | 2 |
NumDepthMasks | 3 |
DepthFunc
Depth functions.
Name | Value |
---|---|
DepthFuncNone | 0 |
DepthFuncNever | 1 |
DepthFuncAlways | 2 |
DepthFuncEqual | 3 |
DepthFuncLess | 4 |
DepthFuncGreater | 5 |
DepthFuncNotEqual | 6 |
DepthFuncLessEqual | 7 |
DepthFuncGreaterEqual | 8 |
NumDepthFunctions | 9 |
StencilOp
Stencil operations.
Name | Value |
---|---|
StencilOpKeep | 0 |
StencilOpInvert | 1 |
StencilOpReplace | 2 |
StencilOpIncrWrap | 3 |
StencilOpDecrWrap | 4 |
StencilOpIncrSat | 5 |
StencilOpDecrSat | 6 |
NumStencilOperations | 7 |
StencilFunc
Stencil functions.
Name | Value |
---|---|
StencilFuncNone | 0 |
StencilFuncNever | 1 |
StencilFuncAlways | 2 |
StencilFuncEqual | 3 |
StencilFuncLess | 4 |
StencilFuncGreater | 5 |
StencilFuncNotEqual | 6 |
StencilFuncLessEqual | 7 |
StencilFuncGreaterEqual | 8 |
NumStencilFunctions | 9 |