aboutsummaryrefslogtreecommitdiff
path: root/source/GraphicsTags.hpp
diff options
context:
space:
mode:
authorrtk0c <[email protected]>2022-04-10 23:00:36 -0700
committerrtk0c <[email protected]>2022-04-10 23:00:36 -0700
commit17d5b091c9b2901ac96f5eee0da6af07228ae690 (patch)
treec210229c4bee1d3f56a64eacf1f976dfd8f971a7 /source/GraphicsTags.hpp
parenta849c199d970e153580c312a24cfdfa099bc7b69 (diff)
Changeset: 5 Add shader and corresponding editor components
Diffstat (limited to 'source/GraphicsTags.hpp')
-rw-r--r--source/GraphicsTags.hpp85
1 files changed, 85 insertions, 0 deletions
diff --git a/source/GraphicsTags.hpp b/source/GraphicsTags.hpp
new file mode 100644
index 0000000..465c57d
--- /dev/null
+++ b/source/GraphicsTags.hpp
@@ -0,0 +1,85 @@
+#pragma once
+
+#include <glad/glad.h>
+#include <string>
+#include <string_view>
+
+namespace Tags {
+/// Vertex element semantics, used to identify the meaning of vertex buffer contents
+enum VertexElementSemantic {
+ /// Position, typically VET_Float3
+ VES_Position,
+ /// Blending weights
+ VES_BlendWeights,
+ /// Blending indices
+ VES_BlendIndices,
+ /// Normal, typically VET_Float3
+ VES_Normal,
+ /// Colour, typically VET_Ubyte4
+ VES_Color1,
+ /// Secondary colour. Generally free for custom data. Means specular with OpenGL FFP.
+ VES_Color2,
+ /// Texture coordinates, typically VET_Float2
+ VES_Texture_coordinates,
+ /// Binormal (Y axis if normal is Z)
+ VES_Binormal,
+ /// Tangent (X axis if normal is Z)
+ VES_Tangent,
+ /// Default semantic
+ VES_Generic,
+ VES_COUNT,
+};
+
+std::string_view NameOf(VertexElementSemantic semantic);
+VertexElementSemantic FindVertexElementSemantic(std::string_view name);
+
+enum VertexElementType {
+ VET_Float1,
+ VET_Float2,
+ VET_Float3,
+ VET_Float4,
+
+ VET_Short2,
+ VET_Short4,
+ VET_Ubyte4,
+
+ // the following are not universally supported on all hardware:
+ VET_Double1,
+ VET_Double2,
+ VET_Double3,
+ VET_Double4,
+ VET_Ushort2,
+ VET_Ushort4,
+ VET_Int1,
+ VET_Int2,
+ VET_Int3,
+ VET_Int4,
+ VET_Uint1,
+ VET_Uint2,
+ VET_Uint3,
+ VET_Uint4,
+ VET_Byte4, /// signed bytes
+
+ VET_NORM_BEGIN,
+ VET_Byte4Norm = VET_NORM_BEGIN, /// signed bytes (normalized to -1..1)
+ VET_Ubyte4Norm, /// unsigned bytes (normalized to 0..1)
+ VET_Short2Norm, /// signed shorts (normalized to -1..1)
+ VET_Short4Norm,
+ VET_Ushort2Norm, /// unsigned shorts (normalized to 0..1)
+ VET_Ushort4Norm,
+ VET_NORM_END = VET_Ushort4Norm,
+};
+
+int SizeOf(VertexElementType type);
+bool IsNormalized(VertexElementType type);
+
+enum IndexType {
+ IT_16Bit,
+ IT_32Bit,
+};
+
+int SizeOf(IndexType type);
+
+std::string_view NameOfGLType(GLenum);
+GLenum FindGLType(std::string_view name);
+} // namespace Tags