diff options
author | rtk0c <[email protected]> | 2022-04-10 23:00:36 -0700 |
---|---|---|
committer | rtk0c <[email protected]> | 2022-04-10 23:00:36 -0700 |
commit | 17d5b091c9b2901ac96f5eee0da6af07228ae690 (patch) | |
tree | c210229c4bee1d3f56a64eacf1f976dfd8f971a7 /source/GraphicsTags.hpp | |
parent | a849c199d970e153580c312a24cfdfa099bc7b69 (diff) |
Changeset: 5 Add shader and corresponding editor components
Diffstat (limited to 'source/GraphicsTags.hpp')
-rw-r--r-- | source/GraphicsTags.hpp | 85 |
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 |