#ifndef __URDE_CDECALSHADERS_HPP__ #define __URDE_CDECALSHADERS_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 { struct CQuadDecal; class CDecalShaders { friend struct OGLDecalDataBindingFactory; friend struct VulkanDecalDataBindingFactory; friend struct D3DDecalDataBindingFactory; friend struct MetalDecalDataBindingFactory; private: static boo::ObjToken m_texZTestNoZWrite; static boo::ObjToken m_texAdditiveZTest; static boo::ObjToken m_texRedToAlphaZTest; static boo::ObjToken m_noTexZTestNoZWrite; static boo::ObjToken m_noTexAdditiveZTest; static boo::ObjToken m_vtxFormatTex; /* No OpenGL */ static boo::ObjToken m_vtxFormatNoTex; /* No OpenGL */ CQuadDecal& m_decal; boo::ObjToken m_regPipeline; boo::ObjToken m_redToAlphaPipeline; CDecalShaders(CQuadDecal& decal, const boo::ObjToken& regPipeline, const boo::ObjToken& redToAlphaPipeline) : m_decal(decal), m_regPipeline(regPipeline), m_redToAlphaPipeline(redToAlphaPipeline) {} public: static void BuildShaderDataBinding(boo::IGraphicsDataFactory::Context& ctx, CQuadDecal& decal); using _CLS = CDecalShaders; #include "TShaderDecl.hpp" }; } #endif // __URDE_CDECALSHADERS_HPP__