#ifndef __URDE_CPARTICLESWOOSHSHADERS_HPP__ #define __URDE_CPARTICLESWOOSHSHADERS_HPP__ #include "TShader.hpp" #include "Graphics/CGraphics.hpp" #include "boo/graphicsdev/GL.hpp" #include "boo/graphicsdev/D3D.hpp" #include "boo/graphicsdev/Metal.hpp" #include "boo/graphicsdev/Vulkan.hpp" namespace urde { class CParticleSwoosh; class CParticleSwooshShaders { friend struct OGLParticleSwooshDataBindingFactory; friend struct VulkanParticleSwooshDataBindingFactory; friend struct D3DParticleSwooshDataBindingFactory; friend struct MetalParticleSwooshDataBindingFactory; public: enum class EShaderClass { Tex, NoTex }; struct Vert { zeus::CVector3f m_pos; zeus::CVector2f m_uv; zeus::CColor m_color; }; private: static boo::ObjToken m_texZWrite; static boo::ObjToken m_texNoZWrite; static boo::ObjToken m_texAdditiveZWrite; static boo::ObjToken m_texAdditiveNoZWrite; static boo::ObjToken m_noTexZWrite; static boo::ObjToken m_noTexNoZWrite; static boo::ObjToken m_noTexAdditiveZWrite; static boo::ObjToken m_noTexAdditiveNoZWrite; static boo::ObjToken m_vtxFormat; /* No OpenGL */ CParticleSwoosh& m_gen; boo::ObjToken m_pipeline; CParticleSwooshShaders(CParticleSwoosh& gen, const boo::ObjToken& pipeline) : m_gen(gen), m_pipeline(pipeline) {} public: static EShaderClass GetShaderClass(CParticleSwoosh& gen); static void BuildShaderDataBinding(boo::IGraphicsDataFactory::Context& ctx, CParticleSwoosh& gen); using _CLS = CParticleSwooshShaders; #include "TShaderDecl.hpp" }; } #endif // __URDE_CPARTICLESWOOSHSHADERS_HPP__