#pragma once #include #include #include #include #include #include namespace metaforce { class CEnvFxManager; class CEnvFxManagerGrid; class CEnvFxShaders { public: struct Instance { std::array positions; zeus::CColor color; std::array uvs; }; struct Uniform { zeus::CMatrix4f mv; zeus::CMatrix4f proj; zeus::CMatrix4f envMtx; zeus::CColor moduColor; }; private: static boo::ObjToken m_snowPipeline; static boo::ObjToken m_underwaterPipeline; public: static void Initialize(); static void Shutdown(); static void BuildShaderDataBinding(boo::IGraphicsDataFactory::Context& ctx, CEnvFxManager& fxMgr, CEnvFxManagerGrid& grid); }; } // namespace metaforce