1 // Copyright © 2008-2021 Pioneer Developers. See AUTHORS.txt for details
2 // Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
3 
4 #ifndef GRAPHICS_TYPES_H
5 #define GRAPHICS_TYPES_H
6 
7 #include "SDL_stdinc.h"
8 
9 namespace Graphics {
10 
11 	typedef Uint32 AttributeSet;
12 
13 	//Vertex attribute semantic
14 	enum VertexAttrib {
15 		ATTRIB_NONE = 0,
16 		ATTRIB_POSITION = (1u << 0),
17 		ATTRIB_NORMAL = (1u << 1),
18 		ATTRIB_DIFFUSE = (1u << 2),
19 		ATTRIB_UV0 = (1u << 3),
20 		//ATTRIB_UV1       = (1u << 4),
21 		ATTRIB_TANGENT = (1u << 5),
22 		//ATTRIB_BITANGENT = (1u << 6)
23 		//etc.
24 	};
25 
26 	enum VertexAttribFormat {
27 		ATTRIB_FORMAT_NONE = 0,
28 		ATTRIB_FORMAT_FLOAT2,
29 		ATTRIB_FORMAT_FLOAT3,
30 		ATTRIB_FORMAT_FLOAT4,
31 		ATTRIB_FORMAT_UBYTE4
32 	};
33 
34 	enum BufferUsage {
35 		BUFFER_USAGE_STATIC,
36 		BUFFER_USAGE_DYNAMIC
37 	};
38 
39 	enum BufferMapMode {
40 		BUFFER_MAP_NONE,
41 		BUFFER_MAP_WRITE,
42 		BUFFER_MAP_READ
43 	};
44 
45 	// clang-format off
46 	enum PrimitiveType {
47 		POINTS = 0,		//GL_POINTS,
48 		LINE_SINGLE,	//GL_LINES,				//draw one line per two vertices
49 		LINE_LOOP,		//GL_LINE_LOOP,			//connect vertices,  connect start & end
50 		LINE_STRIP,		//GL_LINE_STRIP,		//connect vertices
51 		TRIANGLES,		//GL_TRIANGLES,
52 		TRIANGLE_STRIP,	//GL_TRIANGLE_STRIP,
53 		TRIANGLE_FAN,	//GL_TRIANGLE_FAN
54 	};
55 	// clang-format on
56 
57 	enum BlendMode : uint32_t {
58 		BLEND_SOLID,
59 		BLEND_ADDITIVE,
60 		BLEND_ALPHA,
61 		BLEND_ALPHA_ONE, //"additive alpha"
62 		BLEND_ALPHA_PREMULT,
63 		BLEND_SET_ALPHA, // copy alpha channel
64 		BLEND_DEST_ALPHA // XXX maybe crappy name
65 	};
66 
67 	enum FaceCullMode : uint32_t {
68 		CULL_BACK,
69 		CULL_FRONT,
70 		CULL_NONE
71 	};
72 
73 } // namespace Graphics
74 
75 #endif // GRAPHICS_TYPES_H
76