#pragma once #include #include #include #include #include class Shader; class PostEffect { public: struct Param { enum class Type { FLOAT, VEC2, VEC3, VEC4 }; using Value = std::variant; Type type; Value defValue; Param(); Param(Type type, Value defValue); }; PostEffect(std::unique_ptr shader); void use(); private: std::unique_ptr shader; std::unordered_map params; };