#pragma once #include #include #include #define MBGL_DEFINE_UNIFORM_SCALAR(type_, name_) \ struct name_ { \ using Value = type_; \ static constexpr auto name() { \ return #name_; \ } \ } #define MBGL_DEFINE_UNIFORM_VECTOR(type_, n_, name_) \ struct name_ { \ using Value = std::array; \ static constexpr auto name() { \ return #name_; \ } \ } #define MBGL_DEFINE_UNIFORM_MATRIX(type_, n_, name_) \ struct name_ { \ using Value = std::array; \ static constexpr auto name() { \ return #name_; \ } \ } namespace mbgl { namespace gfx { template class UniformValues; template class UniformValues> final : public IndexedTuple, TypeList> { using Base = IndexedTuple, TypeList>; public: template UniformValues(Args&&... args) : Base(std::forward(args)...) { } }; } // namespace gfx } // namespace mbgl