Divide Framework 0.1
A free and open-source 3D Framework under heavy development
Loading...
Searching...
No Matches
RenderAPIEnums.h
Go to the documentation of this file.
1/*
2 Copyright (c) 2018 DIVIDE-Studio
3 Copyright (c) 2009 Ionut Cava
4
5 This file is part of DIVIDE Framework.
6
7 Permission is hereby granted, free of charge, to any person obtaining a copy
8 of this software
9 and associated documentation files (the "Software"), to deal in the Software
10 without restriction,
11 including without limitation the rights to use, copy, modify, merge, publish,
12 distribute, sublicense,
13 and/or sell copies of the Software, and to permit persons to whom the
14 Software is furnished to do so,
15 subject to the following conditions:
16
17 The above copyright notice and this permission notice shall be included in
18 all copies or substantial portions of the Software.
19
20 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21 IMPLIED,
22 INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
23 PARTICULAR PURPOSE AND NONINFRINGEMENT.
24 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
25 DAMAGES OR OTHER LIABILITY,
26 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
27 IN CONNECTION WITH THE SOFTWARE
28 OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29
30 */
31
32#pragma once
33#ifndef DVD_GFX_ENUMS_H
34#define DVD_GFX_ENUMS_H
35
36namespace Divide {
37
39constexpr RenderTargetID INVALID_RENDER_TARGET_ID = std::numeric_limits<RenderTargetID>::max();
40constexpr RenderTargetID SCREEN_TARGET_ID = std::numeric_limits<RenderTargetID>::max() - 1u;
42
43// 4 should be more than enough even for batching multiple render targets together
45{
46 SLOT_0 = 0,
47 SLOT_1,
48 SLOT_2,
49 SLOT_3,
50 COUNT
51};
52
53enum class RenderAPI : U8 {
54 None,
55 OpenGL,
56 Vulkan,
57 COUNT
58};
59
60namespace Names {
61 static const char* renderAPI[] = {
62 "None", "OpenGL", "Vulkan", "ERROR"
63 };
64};
65
66static_assert(std::size(Names::renderAPI) == to_base(RenderAPI::COUNT) + 1);
67
68enum class DescriptorSetUsage : U8 {
69 PER_DRAW = 0,
73 COUNT
74};
75
76namespace Names {
77 static constexpr const char* descriptorSetUsage[] = {
78 "PER_DRAW", "PER_BATCH", "PER_PASS", "PER_FRAME", "NONE"
79 };
80};
81
82static_assert(std::size(Names::descriptorSetUsage) == to_base(DescriptorSetUsage::COUNT) + 1);
83
84static_assert(to_base(DescriptorSetUsage::PER_DRAW) == 0u, "PER_DRAW must be set to 0 to provide compatibility with the OpenGL renderer!");
85
86enum class ReflectorType : U8
87{
88 PLANAR = 0,
89 CUBE,
90 COUNT
91};
92
93namespace Names {
94 static constexpr const char* reflectorType[] = {
95 "PLANAR", "CUBE", "NONE"
96 };
97};
98
99static_assert(std::size(Names::reflectorType) == to_base(ReflectorType::COUNT) + 1);
100
101enum class RefractorType : U8
102{
103 PLANAR = 0,
104 COUNT
105};
106
107namespace Names {
108 static constexpr const char* refractorType[] = {
109 "PLANAR", "NONE"
110 };
111};
112
113static_assert(std::size(Names::refractorType) == to_base(RefractorType::COUNT) + 1);
114
115
116enum class ImageUsage : U8
117{
118 UNDEFINED = 0,
119 SHADER_READ, // Image read or sampled read
121 SHADER_READ_WRITE, //General usage
122 CPU_READ,
126 COUNT
127};
128
129namespace Names {
130 static constexpr const char* imageUsage[] = {
131 "UNDEFINED", "SHADER_READ", "SHADER_WRITE", "SHADER_READ_WRITE", "CPU_READ", "RT_COLOUR_ATTACHMENT", "RT_DEPTH_ATTACHMENT", "RT_DEPTH_STENCIL_ATTACHMENT", "UNKNOWN"
132 };
133};
134
135static_assert(std::size(Names::imageUsage) == to_base(ImageUsage::COUNT) + 1);
136
138enum class LightType : U8
139{
140 DIRECTIONAL = 0,
141 POINT = 1,
142 SPOT = 2,
143 COUNT
144};
145namespace Names {
146 static constexpr const char* lightType[] = {
147 "DIRECTIONAL", "POINT", "SPOT", "UNKNOWN"
148 };
149};
150
151static_assert(std::size(Names::lightType) == to_base(LightType::COUNT) + 1);
152
154{
155 FRUSTUM_OUT = 0,
158 COUNT
159};
160
161namespace Names {
162 static constexpr const char* frustumCollision[] = {
163 "FRUSTUM_OUT", "FRUSTUM_IN", "FRUSTUM_INTERSECT", "NONE"
164 };
165};
166
167static_assert(std::size(Names::frustumCollision) == to_base(FrustumCollision::COUNT) + 1);
168
169enum class FrustumPlane : U8
170{
171 PLANE_LEFT = 0,
173 PLANE_TOP,
176 PLANE_FAR,
177 COUNT
178};
179
180namespace Names {
181 static constexpr const char* frustumPlane[] = {
182 "PLANE_LEFT", "PLANE_RIGHT", "PLANE_TOP", "PLANE_BOTTOM", "PLANE_NEAR", "PLANE_FAR", "NONE"
183 };
184};
185
186static_assert(std::size(Names::frustumPlane) == to_base(FrustumPlane::COUNT) + 1);
187
188enum class FrustumPoints : U8
189{
190 NEAR_LEFT_TOP = 0,
198 COUNT
199};
200
201namespace Names {
202 static constexpr const char* frustumPoints[] = {
203 "NEAR_LEFT_TOP", "NEAR_RIGHT_TOP", "NEAR_RIGHT_BOTTOM", "NEAR_LEFT_BOTTOM",
204 "FAR_LEFT_TOP", "FAR_RIGHT_TOP", "FAR_RIGHT_BOTTOM", "FAR_LEFT_BOTTOM",
205 "NONE"
206 };
207};
208
209static_assert(std::size(Names::frustumPoints) == to_base(FrustumPoints::COUNT) + 1);
210
212enum class AttribLocation : U8 {
213 POSITION = 0,
214 TEXCOORD = 1,
215 NORMAL = 2,
216 TANGENT = 3,
217 COLOR = 4,
218 BONE_WEIGHT = 5,
219 BONE_INDICE = 6,
220 WIDTH = 7,
221 GENERIC = 8,
222 COUNT
223};
224
225namespace Names {
226 static constexpr const char* attribLocation[] = {
227 "POSITION", "TEXCOORD", "NORMAL", "TANGENT",
228 "COLOR", "BONE_WEIGHT", "BONE_INDICE", "WIDTH",
229 "GENERIC", "NONE"
230 };
231};
232
233static_assert(std::size(Names::attribLocation) == to_base(AttribLocation::COUNT) + 1);
234
235enum class RenderStage : U8 {
236 DISPLAY = 0,
240 SHADOW,
241 COUNT
242};
243
244namespace Names {
245 static constexpr const char* renderStage[] = {
246 "DISPLAY", "REFLECTION", "REFRACTION", "NODE_PREVIEW", "SHADOW", "NONE"
247 };
248};
249
250static_assert(std::size(Names::renderStage) == to_base(RenderStage::COUNT) + 1);
251
252enum class RenderPassType : U8 {
253 PRE_PASS = 0,
254 MAIN_PASS = 1,
255 OIT_PASS = 2,
257 COUNT
258};
259
260namespace Names {
261 static constexpr const char* renderPassType[] = {
262 "PRE_PASS", "MAIN_PASS", "OIT_PASS", "TRANSPARENCY_PASS", "NONE"
263 };
264};
265
266static_assert(std::size(Names::renderPassType) == to_base(RenderPassType::COUNT) + 1);
267
268enum class PBType : U8 {
272 COUNT
273};
274
275namespace Names {
276 static constexpr const char* pbType[] = {
277 "PB_TEXTURE_1D", "PB_TEXTURE_2D", "PB_TEXTURE_3D", "NONE"
278 };
279};
280
281static_assert(std::size(Names::pbType) == to_base(PBType::COUNT) + 1);
282
283enum class PrimitiveTopology : U8 {
284 POINTS = 0,
285 LINES,
286 //LINE_LOOP, No Vulkan support
288 TRIANGLES,
291 //QUADS, //Deprecated and No Vulkan support
292 //QUAD_STRIP, //No Vulkan support
293 //POLYGON,//No Vulkan support
298 PATCH,
299 COMPUTE,
300 COUNT
301};
302
303namespace Names {
304 static constexpr const char* primitiveType[] = {
305 "POINTS", "LINES", "LINE_STRIP", "TRIANGLES", "TRIANGLE_STRIP",
306 "TRIANGLE_FAN", "LINES_ADJANCENCY", "LINE_STRIP_ADJACENCY",
307 "TRIANGLES_ADJACENCY", "TRIANGLE_STRIP_ADJACENCY", "PATCH", "COMPUTE", "NONE"
308 };
309};
310
311static_assert(std::size(Names::primitiveType) == to_base(PrimitiveTopology::COUNT) + 1);
312
314enum class BlendProperty : U8 {
315 ZERO = 0,
316 ONE,
317 SRC_COLOR,
321 SRC_ALPHA,
332 COUNT
333};
334namespace Names {
335 static constexpr const char* blendProperty[] = {
336 "ZERO", "ONE", "SRC_COLOR", "INV_SRC_COLOR", "SRC_ALPHA", "INV_SRC_ALPHA", "DEST_ALPHA", "INV_DEST_ALPHA",
337 "DEST_COLOR", "INV_DEST_COLOR", "SRC_ALPHA_SAT", "NONE"
338 };
339};
340
341static_assert(std::size(Names::blendProperty) == to_base(BlendProperty::COUNT) + 1);
342
344enum class BlendOperation : U8 {
347 ADD = 0,
348 SUBTRACT,
353 MIN,
357 MAX,
359 COUNT
360};
361
362namespace Names {
363 static constexpr const char* blendOperation[] = {
364 "ADD", "SUBTRACT", "REV_SUBTRACT", "MIN", "MAX", "NONE"
365 };
366};
367
368static_assert(std::size(Names::blendOperation) == to_base(BlendOperation::COUNT) + 1);
369
372enum class ComparisonFunction : U8 {
374 NEVER = 0,
376 LESS,
378 EQUAL,
381 LEQUAL,
383 GREATER,
385 NEQUAL,
388 GEQUAL,
390 ALWAYS,
392 COUNT
393};
394
395namespace Names {
396 static constexpr const char* compFunctionNames[] = {
397 "NEVER", "LESS", "EQUAL", "LEQUAL", "GREATER", "NEQUAL", "GEQUAL", "ALWAYS", "ERROR"
398 };
399};
400
401static_assert(std::size(Names::compFunctionNames) == to_base(ComparisonFunction::COUNT) + 1);
402
404enum class CullMode : U8 {
405 NONE = 0,
407 BACK,
409 FRONT,
411 ALL,
413 COUNT
414};
415
416namespace Names {
417 static constexpr const char* cullModes[] = {
418 "None", "BACK", "FRONT", "ALL", "ERROR!"
419 };
420};
421
422static_assert(std::size(Names::cullModes) == to_base(CullMode::COUNT) + 1);
423
425enum class ShaderType : U8 {
426 FRAGMENT = 0,
427 VERTEX = 1,
428 GEOMETRY = 2,
431 COMPUTE = 5,
432 COUNT
433};
434
435namespace Names {
436 static constexpr const char* shaderTypes[] = {
437 "Fragment", "Vertex", "Geometry", "TessellationC", "TessellationE", "Compute", "ERROR!"
438 };
439};
440
441static_assert(std::size(Names::shaderTypes) == to_base(ShaderType::COUNT) + 1);
442
444 NONE = 0,
445 VERTEX = toBit(1),
446 GEOMETRY = toBit(2),
447 TESS_CONTROL = toBit(3),
448 TESS_EVAL = toBit(4),
449 FRAGMENT = toBit(5),
450 COMPUTE = toBit(6),
451 /*MESH = toBit(7),
452 TASK = toBit(8),*/
453 COUNT = 7,
454 ALL_GEOMETRY = /*MESH | TASK |*/ VERTEX | GEOMETRY | TESS_CONTROL | TESS_EVAL,
458 ALL = ALL_DRAW | COMPUTE,
459};
460
462enum class StencilOperation : U8 {
464 KEEP = 0,
466 ZERO,
468 REPLACE,
471 INCR,
473 DECR,
475 INV,
479 INCR_WRAP,
483 DECR_WRAP,
485 COUNT
486};
487
488namespace Names {
489 static constexpr const char* stencilOpNames[] = {
490 "KEEP", "ZERO", "REPLACE", "INCREMENT", "DECREMENT", "INVERT", "INCREMENT_WRAP", "DECREMENT_WRAP", "ERROR"
491 };
492};
493
494static_assert(std::size(Names::stencilOpNames) == to_base(StencilOperation::COUNT) + 1);
495
497enum class FillMode : U8 {
500 POINT = 0,
502 WIREFRAME,
504 SOLID,
506 COUNT
507};
508
509namespace Names {
510 static constexpr const char* fillMode[] = {
511 "Point", "Wireframe", "Solid", "ERROR!"
512 };
513};
514
515static_assert(std::size(Names::fillMode) == to_base(FillMode::COUNT) + 1);
516
517enum class TextureType : U8 {
518 TEXTURE_1D = 0,
525 COUNT
526};
527
528namespace Names {
529 static constexpr const char* textureType[] = {
530 "TEXTURE_1D",
531 "TEXTURE_2D",
532 "TEXTURE_3D",
533 "TEXTURE_CUBE_MAP",
534 "TEXTURE_1D_ARRAY",
535 "TEXTURE_2D_ARRAY",
536 "TEXTURE_CUBE_ARRAY",
537 "NONE"
538 };
539};
540
541static_assert(std::size(Names::textureType) == to_base(TextureType::COUNT) + 1);
542
552 COUNT
553};
554
555namespace Names {
556 static constexpr const char* textureBorderColour[] = {
557 "TRANSPARENT_BLACK_INT", "TRANSPARENT_BLACK_F32", "OPAQUE_BLACK_INT", "OPAQUE_BLACK_F32", "OPAQUE_WHITE_INT", "OPAQUE_WHITE_F32", "CUSTOM_INT", "CUSTOM_F32", "NONE"
558 };
559};
560
561static_assert(std::size(Names::textureBorderColour) == to_base(TextureBorderColour::COUNT) + 1);
562
563enum class TextureFilter : U8 {
564 LINEAR = 0,
565 NEAREST,
566 COUNT
567};
568
569namespace Names {
570 static constexpr const char* textureFilter[] = {
571 "LINEAR", "NEAREST", "NONE"
572 };
573};
574
575static_assert(std::size(Names::textureFilter) == to_base(TextureFilter::COUNT) + 1);
576
577enum class TextureMipSampling : U8 {
578 LINEAR = 0,
579 NEAREST,
580 NONE,
581 COUNT
582};
583
584
585namespace Names {
586 static constexpr const char* textureMipSampling[] = {
587 "LINEAR", "NEAREST", "NONE", "ERROR"
588 };
589};
590
591static_assert(std::size(Names::textureMipSampling) == to_base(TextureMipSampling::COUNT) + 1);
592
593enum class TextureWrap : U8 {
594 CLAMP_TO_EDGE = 0,
596 REPEAT,
599 COUNT
600};
601
602namespace Names {
603 static constexpr const char* textureWrap[] = {
604 "CLAMP_TO_EDGE", "CLAMP_TO_BORDER", "REPEAT", "MIRROR_REPEAT", "MIRROR_CLAMP_TO_EDGE", "NONE"
605 };
606};
607
608static_assert(std::size(Names::textureWrap) == to_base(TextureWrap::COUNT) + 1);
609
610enum class GFXImageFormat : U8 {
611 RED = 0,
612 RG,
613 BGR,
614 RGB,
615 BGRA,
616 RGBA,
617 BC1,
618 BC1a,
619 BC2,
620 BC3,
621 BC3n,
622 BC4s,
623 BC4u,
624 BC5s,
625 BC5u,
626 BC6s,
627 BC6u,
628 BC7,
629 //BC3_RGBM,
630 //ETC1,
631 //ETC2_R,
632 //ETC2_RG,
633 //ETC2_RGB,
634 //ETC2_RGBA,
635 //ETC2_RGB_A1,
636 //ETC2_RGBM,
637 COUNT,
638 DXT1_RGB = BC1,
639 DXT1_RGBA = BC1a,
640 DXT3_RGBA = BC2,
641 DXT5_RGBA = BC3,
642};
643namespace Names {
644 static constexpr const char* GFXImageFormat[] = {
645 "RED", "RG", "BGR", "RGB", "BGRA", "RGBA", "BC1/DXT1_RGB", "BC1a/DXT1_RGBA", "BC2/DXT3_RGBA",
646 "BC3/DXT5_RGBA", "BC3n", "BC4s", "BC4u", "BC5s", "BC5u", "BC6s", "BC6u", "BC7", "NONE",
647 };
648};
649
650static_assert(std::size(Names::GFXImageFormat) == to_base(GFXImageFormat::COUNT) + 1);
651
652enum class GFXDataFormat : U8 {
653 UNSIGNED_BYTE = 0,
659 FLOAT_16,
660 FLOAT_32,
661 COUNT
662};
663
664namespace Names {
665 static constexpr const char* GFXDataFormat[] = {
666 "UNSIGNED_BYTE", "UNSIGNED_SHORT", "UNSIGNED_INT", "SIGNED_BYTE", "SIGNED_SHORT", "SIGNED_INT",
667 "FLOAT_16", "FLOAT_32", "ERROR"
668 };
669};
670
671static_assert(std::size(Names::GFXDataFormat) == to_base(GFXDataFormat::COUNT) + 1);
672
673enum class GFXImagePacking : U8
674{
677 UNNORMALIZED, //Don't blame me, found in Vulkan spec 16.1.1 -Ionut
678 RGB_565,
679 RGBA_4444,
680 DEPTH,
682 COUNT
683};
684
685namespace Names
686{
687 static constexpr const char* GFXImagePacking[] = {
688 "NORMALIZED", "NORMALIZED_SRGB", "UNNORMALIZED", "RGB_565", "RGBA_4444", "DEPTH", "DEPTH_STENCIL", "ERROR"
689 };
690};
691
692static_assert(std::size( Names::GFXImagePacking ) == to_base( GFXImagePacking::COUNT ) + 1);
693
694enum class GPUVendor : U8 {
695 NVIDIA = 0,
696 AMD,
697 INTEL,
698 MICROSOFT,
700 ARM,
701 QUALCOMM,
702 VIVANTE,
704 WEBGL, //Khronos
705 MESA,
706 OTHER,
707 COUNT
708};
709
710namespace Names {
711 static constexpr const char* GPUVendor[] = {
712 "NVIDIA", "AMD", "INTEL", "MICROSOFT", "IMAGINATION_TECH", "ARM",
713 "QUALCOMM", "VIVANTE", "ALPHAMOSAIC", "WEBGL", "MESA", "OTHER", "ERROR"
714 };
715};
716
717static_assert(std::size(Names::GPUVendor) == to_base(GPUVendor::COUNT) + 1);
718
719enum class GPURenderer : U8 {
720 UNKNOWN = 0,
721 ADRENO,
722 GEFORCE,
723 INTEL,
724 MALI,
725 POWERVR,
726 RADEON,
727 VIDEOCORE,
728 VIVANTE,
729 WEBGL,
730 GDI, //Driver not working properly?
731 SOFTWARE,
732 COUNT
733};
734
735namespace Names {
736 static constexpr const char* GPURenderer[] = {
737 "UNKNOWN", "ADRENO", "GEFORCE", "INTEL", "MALI", "POWERVR",
738 "RADEON", "VIDEOCORE", "VIVANTE", "WEBGL", "GDI", "SOFTWARE", "ERROR"
739 };
740};
741
742static_assert(std::size(Names::GPURenderer) == to_base(GPURenderer::COUNT) + 1);
743
744enum class BufferUsageType : U8 {
745 VERTEX_BUFFER = 0,
751 COUNT
752};
753
754namespace Names {
755 static constexpr const char* bufferUsageType[] = {
756 "VERTEX_BUFFER", "INDEX_BUFFER", "STAGING_BUFFER", "CONSTANT_BUFFER", "UNBOUND_BUFFER", "COMMAND_BUFFER", "NONE"
757 };
758};
759
760static_assert(std::size(Names::bufferUsageType) == to_base(BufferUsageType::COUNT) + 1);
761
762enum class BufferSyncUsage : U8
763{
772 COUNT
773};
774
775namespace Names
776{
777 static constexpr const char* bufferSyncUsage[] = {
778 "CPU_WRITE_TO_GPU_READ", "GPU_WRITE_TO_CPU_READ", "GPU_WRITE_TO_GPU_READ", "GPU_WRITE_TO_GPU_WRITE", "GPU_READ_TO_GPU_WRITE", "CPU_WRITE_TO_CPU_READ", "CPU_READ_TO_CPU_WRITE", "CPU_WRITE_TO_CPU_WRITE", "NONE"
779 };
780};
781
782static_assert(std::size( Names::bufferSyncUsage ) == to_base( BufferSyncUsage::COUNT ) + 1);
783
784enum class BufferUpdateUsage : U8 {
785 CPU_TO_GPU = 0, //DRAW
786 GPU_TO_CPU = 1, //READ
787 GPU_TO_GPU = 2, //COPY
788 COUNT
789};
790
791namespace Names {
792 static constexpr const char* bufferUpdateUsage[] = {
793 "CPU_TO_GPU", "GPU_TO_CPU", "GPU_TO_GPU", "NONE"
794 };
795};
796
797static_assert(std::size(Names::bufferUpdateUsage) == to_base(BufferUpdateUsage::COUNT) + 1);
798
800 ONCE = 0, //STATIC
801 OCASSIONAL = 1, //DYNAMIC
802 OFTEN = 2, //STREAM
803 COUNT
804};
805
806namespace Names {
807 static constexpr const char* bufferUpdateFrequency[] = {
808 "ONCE", "OCASSIONAL", "OFTEN", "NONE"
809 };
810};
811
813
814
815enum class QueryType : U8 {
820 GPU_TIME = toBit(5),
821 SAMPLE_COUNT = toBit(6),
823 COUNT = 7
824};
825
826namespace Names {
827 static constexpr const char* queryType[] = {
828 "VERTICES_SUBMITTED", "PRIMITIVES_GENERATED", "TESSELLATION_PATCHES", "TESSELLATION_EVAL_INVOCATIONS", "GPU_TIME", "SAMPLE_COUNT", "ANY_SAMPLE_RENDERED", "NONE"
829 };
830};
831
832static_assert(std::size(Names::queryType) == to_base(QueryType::COUNT) + 1);
833
835{
836 BYTE = 0,
837 WORD,
838 DWORD,
839 QWORD,
840 COUNT
841};
842
843//ToDo: Make this more generic. Also used by the Editor -Ionut
845{
846 BOOL = 0,
847 INT,
848 UINT,
849 FLOAT,
850 DOUBLE,
851 //BVEC2, use vec2<I32>(1/0, 1/0)
852 //BVEC3, use vec3<I32>(1/0, 1/0, 1/0)
853 //BVEC4, use vec4<I32>(1/0, 1/0, 1/0, 1/0)
854 IVEC2,
855 IVEC3,
856 IVEC4,
857 UVEC2,
858 UVEC3,
859 UVEC4,
860 VEC2,
861 VEC3,
862 VEC4,
863 DVEC2,
864 DVEC3,
865 DVEC4,
866 IMAT2,
867 IMAT3,
868 IMAT4,
869 UMAT2,
870 UMAT3,
871 UMAT4,
872 MAT2,
873 MAT3,
874 MAT4,
875 DMAT2,
876 DMAT3,
877 DMAT4,
878 FCOLOUR3,
879 FCOLOUR4,
880 //MAT_N_x_M,
881 COUNT
882};
883
884using QueryResults = std::array<std::pair<QueryType, I64>, to_base(QueryType::COUNT)>;
885
887using AttributeOffsets = std::array<size_t, to_base(AttribLocation::COUNT)>;
888
889}; // namespace Divide
890
891#endif //DVD_GFX_ENUMS_H
static constexpr const char * blendProperty[]
static constexpr const char * textureWrap[]
static constexpr const char * cullModes[]
static constexpr const char * bufferUpdateFrequency[]
static const char * renderAPI[]
static constexpr const char * reflectorType[]
static constexpr const char * GFXImagePacking[]
static constexpr const char * queryType[]
static constexpr const char * attribLocation[]
static constexpr const char * fillMode[]
static constexpr const char * GPUVendor[]
static constexpr const char * GPURenderer[]
static constexpr const char * frustumPlane[]
static constexpr const char * textureMipSampling[]
static constexpr const char * textureFilter[]
static constexpr const char * bufferUpdateUsage[]
static constexpr const char * imageUsage[]
static constexpr const char * lightType[]
static constexpr const char * textureBorderColour[]
static constexpr const char * pbType[]
static constexpr const char * GFXDataFormat[]
static constexpr const char * frustumCollision[]
static constexpr const char * GFXImageFormat[]
static constexpr const char * primitiveType[]
static constexpr const char * blendOperation[]
static constexpr const char * compFunctionNames[]
static constexpr const char * bufferUsageType[]
static constexpr const char * renderStage[]
static constexpr const char * refractorType[]
static constexpr const char * stencilOpNames[]
static constexpr const char * bufferSyncUsage[]
static constexpr const char * shaderTypes[]
static constexpr const char * frustumPoints[]
static constexpr const char * renderPassType[]
static constexpr const char * descriptorSetUsage[]
static constexpr const char * textureType[]
Handle console commands that start with a forward slash.
Definition: AIProcessor.cpp:7
BufferUpdateFrequency
std::array< bool, to_base(AttribLocation::COUNT)> AttributeFlags
constexpr RenderTargetID SCREEN_TARGET_ID
uint8_t U8
StencilOperation
Valid front and back stencil test actions.
@ INV
Bitwise inverts the current stencil buffer value.
@ COUNT
Place all properties above this.
@ KEEP
Keeps the current value.
@ DECR
Decrements the current stencil buffer value. Clamps to 0.
BlendProperty
Specifies how the red, green, blue, and alpha source blending factors are computed.
@ COUNT
Place all properties above this.
BlendOperation
Specifies how source and destination colours are combined.
@ COUNT
Place all properties above this.
@ NEQUAL
Passes if the incoming YYY value is not equal to the stored YYY value.
@ LESS
Passes if the incoming YYY value is less than the stored YYY value.
@ COUNT
Place all properties above this.
@ EQUAL
Passes if the incoming YYY value is equal to the stored YYY value.
@ GREATER
Passes if the incoming YYY value is greater than the stored YYY value.
constexpr U8 INVALID_TEXTURE_BINDING
uint16_t U16
constexpr RenderTargetID INVALID_RENDER_TARGET_ID
@ Vulkan
not supported yet
@ None
No rendering. Used for testing or server code.
LightType
The different types of lights supported.
FillMode
Defines all available fill modes for primitives.
@ WIREFRAME
Boundary edges of the polygon are drawn as line segments.
@ COUNT
Place all properties above this.
@ SOLID
The interior of the polygon is filled.
RTColourAttachmentSlot
constexpr U8 U8_MAX
ShaderStageVisibility
AttribLocation
State the various attribute locations to use in shaders with VAO/VB's.
ShaderType
Available shader stages.
std::array< size_t, to_base(AttribLocation::COUNT)> AttributeOffsets
CullMode
Specifies whether front- or back-facing facets are candidates for culling.
@ BACK
Cull Back facing polygons (aka CW)
@ COUNT
Place all properties above this.
@ FRONT
Cull Front facing polygons (aka CCW)
U32 RenderTargetID
DescriptorSetUsage
uint32_t U32
constexpr T toBit(const T X)
Converts an arbitrary positive integer value to a bitwise value used for masks.
constexpr auto to_base(const Type value) -> Type
std::array< std::pair< QueryType, I64 >, to_base(QueryType::COUNT)> QueryResults