#include "Runtime/Graphics/Shaders/CDecalShaders.hpp" #include #include "Runtime/Particle/CDecal.hpp" //#include namespace metaforce { void CDecalShaders::Initialize() { // m_texZTestNoZWrite = hecl::conv->convert(Shader_CDecalShaderTexZTest{}); // m_texAdditiveZTest = hecl::conv->convert(Shader_CDecalShaderTexAdditiveZTest{}); // m_texRedToAlphaZTest = hecl::conv->convert(Shader_CDecalShaderTexRedToAlphaZTest{}); // m_noTexZTestNoZWrite = hecl::conv->convert(Shader_CDecalShaderNoTexZTest{}); // m_noTexAdditiveZTest = hecl::conv->convert(Shader_CDecalShaderNoTexAdditiveZTest{}); } void CDecalShaders::Shutdown() { // m_texZTestNoZWrite.reset(); // m_texAdditiveZTest.reset(); // m_texRedToAlphaZTest.reset(); // m_noTexZTestNoZWrite.reset(); // m_noTexAdditiveZTest.reset(); } void CDecalShaders::BuildShaderDataBinding(CQuadDecal& decal) { // boo::ObjToken regPipeline; // boo::ObjToken redToAlphaPipeline; // if (decal.m_desc->x14_TEX) { // if (decal.m_desc->x18_ADD) // regPipeline = m_texAdditiveZTest; // else // regPipeline = m_texZTestNoZWrite; // redToAlphaPipeline = m_texRedToAlphaZTest; // } else { // if (decal.m_desc->x18_ADD) // regPipeline = m_noTexAdditiveZTest; // else // regPipeline = m_noTexZTestNoZWrite; // } // // const SQuadDescr* const desc = decal.m_desc; // const CUVElement* const texr = desc->x14_TEX.get(); // size_t texCount = 0; // std::array, 1> textures; // // if (texr != nullptr) { // textures[0] = texr->GetValueTexture(0).GetObj()->GetBooTexture(); // texCount = 1; // } // // if (!decal.m_instBuf) { // return; // } // // std::array, 1> uniforms{decal.m_uniformBuf.get()}; // // if (regPipeline) { // decal.m_normalDataBind = // ctx.newShaderDataBinding(regPipeline, nullptr, decal.m_instBuf.get(), nullptr, uniforms.size(), uniforms.data(), // nullptr, texCount, textures.data(), nullptr, nullptr); // } // if (redToAlphaPipeline) { // decal.m_redToAlphaDataBind = // ctx.newShaderDataBinding(redToAlphaPipeline, nullptr, decal.m_instBuf.get(), nullptr, uniforms.size(), // uniforms.data(), nullptr, texCount, textures.data(), nullptr, nullptr); // } } } // namespace metaforce