#pragma once #include "Graphics/CGraphics.hpp" #include "boo/graphicsdev/IGraphicsDataFactory.hpp" namespace urde { class CElementGen; class CElementGenShaders { public: enum class EShaderClass { Tex, IndTex, NoTex }; private: static boo::ObjToken m_texZTestZWrite; static boo::ObjToken m_texNoZTestZWrite; static boo::ObjToken m_texZTestNoZWrite; static boo::ObjToken m_texNoZTestNoZWrite; static boo::ObjToken m_texAdditiveZTest; static boo::ObjToken m_texAdditiveNoZTest; static boo::ObjToken m_texRedToAlphaZTest; static boo::ObjToken m_texRedToAlphaNoZTest; static boo::ObjToken m_texZTestNoZWriteSub; static boo::ObjToken m_texNoZTestNoZWriteSub; static boo::ObjToken m_texRedToAlphaZTestSub; static boo::ObjToken m_texRedToAlphaNoZTestSub; static boo::ObjToken m_indTexZWrite; static boo::ObjToken m_indTexNoZWrite; static boo::ObjToken m_indTexAdditive; static boo::ObjToken m_cindTexZWrite; static boo::ObjToken m_cindTexNoZWrite; static boo::ObjToken m_cindTexAdditive; static boo::ObjToken m_noTexZTestZWrite; static boo::ObjToken m_noTexNoZTestZWrite; static boo::ObjToken m_noTexZTestNoZWrite; static boo::ObjToken m_noTexNoZTestNoZWrite; static boo::ObjToken m_noTexAdditiveZTest; static boo::ObjToken m_noTexAdditiveNoZTest; public: static void Initialize(); static void Shutdown(); static EShaderClass GetShaderClass(CElementGen& gen); static void BuildShaderDataBinding(boo::IGraphicsDataFactory::Context& ctx, CElementGen& gen); }; } // namespace urde