6#include "TextureFormat.hpp"
7#include <RGL/ShaderLibrary.hpp>
8#include <RGL/Types.hpp>
9#include <RGL/Common.hpp>
15 enum class StencilOperation :
uint8_t {
26 enum StageVisibility :
uint8_t {
31 enum class PolygonOverride :
uint8_t {
35 enum class InputRate :
uint8_t {
39 enum class ColorWriteMask :
uint8_t {
44 RGB = Red | Green | Blue,
48 enum class BindingType :
uint8_t {
49 Sampler, SampledImage = 2, StorageImage, UniformTexelBuffer, StorageTexelBuffer, UniformBuffer, StorageBuffer, UniformBufferDynamic, StorageBufferDynamic, InputAttachment
52 enum class BindingVisibility {
54 Fragment = 0x00000010,
56 VertexFragment = Vertex | Fragment
63 bool isBindless =
false;
65 BindingVisibility stageFlags;
66 bool writable =
false;
68 std::vector<LayoutBindingDesc> bindings;
72 uint8_t n_register = 0;
73 StageVisibility visibility;
75 ConstantConfig(
decltype(size_bytes) sb,
decltype(n_register) nr, StageVisibility visibility) : size_bytes(sb), n_register(nr), visibility(visibility){}
84 std::vector<ConstantConfig> constants;
94 std::vector<BufferConfig> boundBuffers;
97 RGLTexturePtr texture;
98 RGLSamplerPtr sampler;
100 std::vector<TextureAndSampler> boundTextures;
106 enum class PrimitiveTopology : uint8_t {
107 PointList, LineList, LineStrip, TriangleList, TriangleStrip,TriangleFan,
108 LineListAdjacency, LineStripAdjacency, TriangleListAdjacency, TriangleStripAdjacency,
112 enum class BlendFactor : uint8_t {
116 OneMinusSourceColor = 3,
118 OneMinusDestColor = 5,
120 OneMinusSourceAlpha = 7,
122 OneMinusDestAlpha = 9,
124 OneMinusConstantColor = 11,
126 OneMinusConstantAlpha,
129 OneMinusSource1Color,
134 enum class BlendOperation :
uint8_t {
135 Add, Subtract, ReverseSubtract, Min, Max
139 enum class Type : uint8_t {
140 Vertex, Fragment, Compute
142 RGLShaderLibraryPtr shaderModule;
145 enum class VertexAttributeFormat {
148 R32G32_SignedFloat = 103,
149 R32G32B32_SignedFloat = 106,
150 R32G32B32A32_SignedFloat = 109,
153 enum class WindingOrder : uint8_t {
154 Clockwise, Counterclockwise
157 enum class CullMode :
uint8_t {
166 std::vector<ShaderStageDesc> stages;
171 uint32_t binding, stride;
172 InputRate inputRate = InputRate::Vertex;
174 std::vector< VertexBindingDesc> vertexBindings;
177 uint32_t location, binding, offset;
178 VertexAttributeFormat format;
180 std::vector<VertexAttributeDesc> attributeDescs;
185 PrimitiveTopology topology;
186 bool primitiveRestartEnabled =
false;
191 width = 640, height = 480,
192 minDepth = 0, maxDepth = 1;
196 std::pair<int, int> offset = { 0, 0 };
197 std::pair<uint32_t, uint32_t> extent = { 640, 480 };
201 bool depthClampEnable : 1 =
false;
202 bool rasterizerDiscardEnable : 1 =
false;
204 PolygonOverride polygonOverride = PolygonOverride::Fill;
206 CullMode cullMode = CullMode::Back;
208 WindingOrder windingOrder : 1 = WindingOrder::Counterclockwise;
211 float clamp = 0, constantFactor = 0, slopeFactor = 0;
218 constexpr static MSASampleCount sampleCount = MSASampleCount::C1;
219 constexpr static bool sampleShadingEnabled =
false;
220 constexpr static bool alphaToCoverageEnabled =
false;
221 constexpr static bool alphaToOneEnabled =
false;
227 enum class LogicalOperation : uint8_t {
228 Clear, AND, AND_Reverse, Copy, ANDInverted, Noop, XOR, OR, NOR, Equivalent, Invert, ORReverse, CopyInverted, ORInverted, NAND, Set
229 } logicalOperation = LogicalOperation::Copy;
230 bool logicalOpEnabled : 1 =
false;
232 TextureFormat format;
233 BlendFactor sourceColorBlendFactor = BlendFactor::One,
234 destinationColorBlendFactor = BlendFactor::Zero,
235 sourceAlphaBlendFactor = BlendFactor::One,
236 destinationAlphaBlendFactor = BlendFactor::Zero;
238 BlendOperation colorBlendOperation = BlendOperation::Add, alphaBlendOperation = BlendOperation::Add;
240 ColorWriteMask colorWriteMask = ColorWriteMask::RGBA;
242 bool blendEnabled : 1 =
false;
244 std::vector<ColorAttachmentConfig> attachments;
248 float blendconstants[4] = { 0,0,0,0 };
252 TextureFormat depthFormat = TextureFormat::Undefined;
253 TextureFormat stencilFormat = TextureFormat::Undefined;
254 bool depthTestEnabled =
false;
255 bool depthWriteEnabled =
false;
256 DepthCompareFunction depthFunction = DepthCompareFunction::Never;
258 bool stencilTestEnabled =
false;
259 StencilOperation stencilFrontOperation = StencilOperation::Keep;
260 StencilOperation stencilBackOperation = StencilOperation::Keep;
261 } depthStencilConfig;
264 RGLPipelineLayoutPtr pipelineLayout;
266 std::string debugName;
271 RGLPipelineLayoutPtr pipelineLayout;
uint8 uint8_t
Definition fwd.hpp:103
Definition Pipeline.hpp:269
Definition Pipeline.hpp:278
Definition Pipeline.hpp:103
Definition Pipeline.hpp:274
Definition Pipeline.hpp:89
Definition Pipeline.hpp:96
Definition Pipeline.hpp:88
Definition Pipeline.hpp:70
Definition Pipeline.hpp:60
Definition Pipeline.hpp:59
Definition Pipeline.hpp:231
Definition Pipeline.hpp:226
Definition Pipeline.hpp:251
Definition Pipeline.hpp:217
Definition Pipeline.hpp:210
Definition Pipeline.hpp:200
Definition Pipeline.hpp:195
Definition Pipeline.hpp:176
Definition Pipeline.hpp:170
Definition Pipeline.hpp:169
Definition Pipeline.hpp:189
Definition Pipeline.hpp:164
Definition Pipeline.hpp:138