PixelBullet  0.0.1
A C++ game engine
Loading...
Searching...
No Matches
material_types.h
1#pragma once
2
3#include <glm/glm.hpp>
4
5#include <string_view>
6
7namespace pixelbullet
8{
9enum class MaterialAlphaMode
10{
11 Opaque,
12 Mask,
13 Blend,
14};
15
16enum class MaterialTextureWrapMode
17{
18 Repeat,
19 ClampToEdge,
20 MirroredRepeat,
21};
22
23enum class MaterialTextureMagFilter
24{
25 Linear,
26 Nearest,
27};
28
29enum class MaterialTextureUvSet
30{
31 Uv0,
32 Uv1,
33};
34
35enum class MaterialTextureMinFilter
36{
37 LinearMipmapLinear,
38 Linear,
39 Nearest,
40 NearestMipmapNearest,
41 LinearMipmapNearest,
42 NearestMipmapLinear,
43};
44
45enum class MaterialShadingModel
46{
47 Lit,
48 Unlit,
49};
50
51[[nodiscard]] constexpr std::string_view ToString(const MaterialAlphaMode value) noexcept
52{
53 switch (value)
54 {
55 case MaterialAlphaMode::Blend:
56 return "Blend";
57 case MaterialAlphaMode::Mask:
58 return "Mask";
59 case MaterialAlphaMode::Opaque:
60 default:
61 return "Opaque";
62 }
63}
64
65[[nodiscard]] constexpr std::string_view ToString(const MaterialTextureWrapMode value) noexcept
66{
67 switch (value)
68 {
69 case MaterialTextureWrapMode::ClampToEdge:
70 return "ClampToEdge";
71 case MaterialTextureWrapMode::MirroredRepeat:
72 return "MirroredRepeat";
73 case MaterialTextureWrapMode::Repeat:
74 default:
75 return "Repeat";
76 }
77}
78
79[[nodiscard]] constexpr std::string_view ToString(const MaterialTextureMagFilter value) noexcept
80{
81 switch (value)
82 {
83 case MaterialTextureMagFilter::Nearest:
84 return "Nearest";
85 case MaterialTextureMagFilter::Linear:
86 default:
87 return "Linear";
88 }
89}
90
91[[nodiscard]] constexpr std::string_view ToString(const MaterialTextureUvSet value) noexcept
92{
93 switch (value)
94 {
95 case MaterialTextureUvSet::Uv1:
96 return "Uv1";
97 case MaterialTextureUvSet::Uv0:
98 default:
99 return "Uv0";
100 }
101}
102
103[[nodiscard]] constexpr std::string_view ToString(const MaterialTextureMinFilter value) noexcept
104{
105 switch (value)
106 {
107 case MaterialTextureMinFilter::Linear:
108 return "Linear";
109 case MaterialTextureMinFilter::Nearest:
110 return "Nearest";
111 case MaterialTextureMinFilter::NearestMipmapNearest:
112 return "NearestMipmapNearest";
113 case MaterialTextureMinFilter::LinearMipmapNearest:
114 return "LinearMipmapNearest";
115 case MaterialTextureMinFilter::NearestMipmapLinear:
116 return "NearestMipmapLinear";
117 case MaterialTextureMinFilter::LinearMipmapLinear:
118 default:
119 return "LinearMipmapLinear";
120 }
121}
122
123[[nodiscard]] constexpr std::string_view ToString(const MaterialShadingModel value) noexcept
124{
125 switch (value)
126 {
127 case MaterialShadingModel::Unlit:
128 return "Unlit";
129 case MaterialShadingModel::Lit:
130 default:
131 return "Lit";
132 }
133}
134
136{
137 MaterialTextureWrapMode wrap_u = MaterialTextureWrapMode::Repeat;
138 MaterialTextureWrapMode wrap_v = MaterialTextureWrapMode::Repeat;
139 MaterialTextureMagFilter mag_filter = MaterialTextureMagFilter::Linear;
140 MaterialTextureMinFilter min_filter = MaterialTextureMinFilter::LinearMipmapLinear;
141
142 friend bool operator==(const MaterialTextureSamplerSettings&, const MaterialTextureSamplerSettings&) = default;
143};
144
146{
147 glm::vec2 offset = glm::vec2(0.0f);
148 glm::vec2 scale = glm::vec2(1.0f);
149 float rotation_degrees = 0.0f;
150
151 friend bool operator==(const MaterialTextureTransform&, const MaterialTextureTransform&) = default;
152};
153} // namespace pixelbullet
Definition material_types.h:136
Definition material_types.h:146