mirror of
https://github.com/AxioDL/metaforce.git
synced 2025-12-09 11:07:44 +00:00
Huge shader refactor
This commit is contained in:
@@ -1,15 +1,14 @@
|
||||
#include "CTextSupportShader.hpp"
|
||||
#include "GuiSys/CRasterFont.hpp"
|
||||
#include "hecl/Pipeline.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
||||
boo::ObjToken<boo::IVertexFormat> CTextSupportShader::s_TextVtxFmt;
|
||||
boo::ObjToken<boo::IShaderPipeline> CTextSupportShader::s_TextAlphaPipeline;
|
||||
boo::ObjToken<boo::IShaderPipeline> CTextSupportShader::s_TextAddPipeline;
|
||||
boo::ObjToken<boo::IShaderPipeline> CTextSupportShader::s_TextAddOverdrawPipeline;
|
||||
|
||||
boo::ObjToken<boo::IVertexFormat> CTextSupportShader::s_ImageVtxFmt;
|
||||
boo::ObjToken<boo::IShaderPipeline> CTextSupportShader::s_ImageAlphaPipeline;
|
||||
boo::ObjToken<boo::IShaderPipeline> CTextSupportShader::s_ImageAddPipeline;
|
||||
boo::ObjToken<boo::IShaderPipeline> CTextSupportShader::s_ImageAddOverdrawPipeline;
|
||||
@@ -18,6 +17,30 @@ hecl::VertexBufferPool<CTextSupportShader::CharacterInstance> CTextSupportShader
|
||||
hecl::VertexBufferPool<CTextSupportShader::ImageInstance> CTextSupportShader::s_ImgInsts;
|
||||
hecl::UniformBufferPool<CTextSupportShader::Uniform> CTextSupportShader::s_Uniforms;
|
||||
|
||||
void CTextSupportShader::Initialize()
|
||||
{
|
||||
s_TextAlphaPipeline = hecl::conv->convert(Shader_CTextSupportShaderAlpha{});
|
||||
s_TextAddPipeline = hecl::conv->convert(Shader_CTextSupportShaderAdd{});
|
||||
s_TextAddOverdrawPipeline = hecl::conv->convert(Shader_CTextSupportShaderAddOverdraw{});
|
||||
s_ImageAlphaPipeline = hecl::conv->convert(Shader_CTextSupportShaderImageAlpha{});
|
||||
s_ImageAddPipeline = hecl::conv->convert(Shader_CTextSupportShaderImageAdd{});
|
||||
s_ImageAddOverdrawPipeline = hecl::conv->convert(Shader_CTextSupportShaderImageAddOverdraw{});
|
||||
}
|
||||
|
||||
void CTextSupportShader::Shutdown()
|
||||
{
|
||||
s_TextAlphaPipeline.reset();
|
||||
s_TextAddPipeline.reset();
|
||||
s_TextAddOverdrawPipeline.reset();
|
||||
s_ImageAlphaPipeline.reset();
|
||||
s_ImageAddPipeline.reset();
|
||||
s_ImageAddOverdrawPipeline.reset();
|
||||
|
||||
s_CharInsts.doDestroy();
|
||||
s_ImgInsts.doDestroy();
|
||||
s_Uniforms.doDestroy();
|
||||
}
|
||||
|
||||
void CTextSupportShader::CharacterInstance::SetMetrics(const CGlyph& glyph,
|
||||
const zeus::CVector2i& offset)
|
||||
{
|
||||
@@ -61,22 +84,4 @@ void CTextSupportShader::ImageInstance::SetMetrics(const CFontImageDef& imgDef,
|
||||
m_uv[3].assign(0.5f + cropPad.x, 0.5f - cropPad.y);
|
||||
}
|
||||
|
||||
void CTextSupportShader::Shutdown()
|
||||
{
|
||||
s_TextVtxFmt.reset();
|
||||
s_TextAlphaPipeline.reset();
|
||||
s_TextAddPipeline.reset();
|
||||
s_TextAddOverdrawPipeline.reset();
|
||||
s_ImageVtxFmt.reset();
|
||||
s_ImageAlphaPipeline.reset();
|
||||
s_ImageAddPipeline.reset();
|
||||
s_ImageAddOverdrawPipeline.reset();
|
||||
|
||||
s_CharInsts.doDestroy();
|
||||
s_ImgInsts.doDestroy();
|
||||
s_Uniforms.doDestroy();
|
||||
}
|
||||
|
||||
URDE_SPECIALIZE_MULTI_BLEND_SHADER(CTextSupportShader)
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user