diff --git a/include/Nazara/Graphics/Enums.hpp b/include/Nazara/Graphics/Enums.hpp index ca7288e87..5c9a41952 100644 --- a/include/Nazara/Graphics/Enums.hpp +++ b/include/Nazara/Graphics/Enums.hpp @@ -17,16 +17,17 @@ namespace Nz Volume }; - enum PredefinedShaderBinding + enum class PredefinedShaderBinding { - PredefinedShaderBinding_TexOverlay, - PredefinedShaderBinding_UboInstanceData, - PredefinedShaderBinding_UboLighData, - PredefinedShaderBinding_UboViewerData, + TexOverlay, + UboInstanceData, + UboLighData, + UboViewerData, - PredefinedShaderBinding_Max = PredefinedShaderBinding_UboViewerData + Max = UboViewerData }; + constexpr std::size_t PredefinedShaderBindingCount = static_cast(PredefinedShaderBinding::Max) + 1; } #endif // NAZARA_ENUMS_GRAPHICS_HPP diff --git a/include/Nazara/Graphics/MaterialSettings.hpp b/include/Nazara/Graphics/MaterialSettings.hpp index 47aaef153..e2aec4257 100644 --- a/include/Nazara/Graphics/MaterialSettings.hpp +++ b/include/Nazara/Graphics/MaterialSettings.hpp @@ -23,7 +23,7 @@ namespace Nz { public: using DefaultShaders = std::array, ShaderStageTypeCount>; - using PredefinedBinding = std::array; + using PredefinedBinding = std::array; struct SharedUniformBlock; struct Texture; diff --git a/src/Nazara/Graphics/BasicMaterial.cpp b/src/Nazara/Graphics/BasicMaterial.cpp index 96f13a05b..59798a086 100644 --- a/src/Nazara/Graphics/BasicMaterial.cpp +++ b/src/Nazara/Graphics/BasicMaterial.cpp @@ -135,7 +135,7 @@ namespace Nz ImageType_2D }); - predefinedBinding[PredefinedShaderBinding_TexOverlay] = textures.size(); + predefinedBinding[UnderlyingCast(PredefinedShaderBinding::TexOverlay)] = textures.size(); textures.push_back({ "TextureOverlay", "Overlay", @@ -156,9 +156,9 @@ namespace Nz std::vector sharedUniformBlock; - predefinedBinding[PredefinedShaderBinding_UboInstanceData] = textures.size() + uniformBlocks.size() + sharedUniformBlock.size(); + predefinedBinding[UnderlyingCast(PredefinedShaderBinding::UboInstanceData)] = textures.size() + uniformBlocks.size() + sharedUniformBlock.size(); sharedUniformBlock.push_back(PredefinedInstanceData::GetUniformBlock()); - predefinedBinding[PredefinedShaderBinding_UboViewerData] = textures.size() + uniformBlocks.size() + sharedUniformBlock.size(); + predefinedBinding[UnderlyingCast(PredefinedShaderBinding::UboViewerData)] = textures.size() + uniformBlocks.size() + sharedUniformBlock.size(); sharedUniformBlock.push_back(PredefinedViewerData::GetUniformBlock()); // Shaders diff --git a/src/Nazara/Graphics/PhongLightingMaterial.cpp b/src/Nazara/Graphics/PhongLightingMaterial.cpp index c08e711d9..903c34d97 100644 --- a/src/Nazara/Graphics/PhongLightingMaterial.cpp +++ b/src/Nazara/Graphics/PhongLightingMaterial.cpp @@ -199,11 +199,11 @@ namespace Nz }); std::vector sharedUniformBlock; - predefinedBinding[PredefinedShaderBinding_UboInstanceData] = sharedUniformBlock.size(); + predefinedBinding[UnderlyingCast(PredefinedShaderBinding::UboInstanceData)] = sharedUniformBlock.size(); sharedUniformBlock.push_back(PredefinedInstanceData::GetUniformBlock()); - predefinedBinding[PredefinedShaderBinding_UboLighData] = sharedUniformBlock.size(); + predefinedBinding[UnderlyingCast(PredefinedShaderBinding::UboLighData)] = sharedUniformBlock.size(); sharedUniformBlock.push_back(PredefinedLightData::GetUniformBlock()); - predefinedBinding[PredefinedShaderBinding_UboViewerData] = sharedUniformBlock.size(); + predefinedBinding[UnderlyingCast(PredefinedShaderBinding::UboViewerData)] = sharedUniformBlock.size(); sharedUniformBlock.push_back(PredefinedViewerData::GetUniformBlock()); std::vector textures; @@ -249,7 +249,7 @@ namespace Nz ImageType_2D }); - predefinedBinding[PredefinedShaderBinding_TexOverlay] = textures.size(); + predefinedBinding[UnderlyingCast(PredefinedShaderBinding::TexOverlay)] = textures.size(); textures.push_back({ "TextureOverlay", "Overlay",