Unify text shader handling

This commit is contained in:
Georg Hagen
2025-01-04 02:46:24 +01:00
parent bc78af70e8
commit 94025c79c6
7 changed files with 60 additions and 51 deletions

View File

@@ -38,11 +38,11 @@ namespace OpenVulkano::Scene
shader.cullMode = CullMode::NONE;
return shader;
}
}
Shader TextDrawable::DEFAULT_SHADER_BITMAP = MakeDefaultShader(FontAtlasType::BITMAP);
Shader TextDrawable::DEFAULT_SHADER_SDF = MakeDefaultShader(FontAtlasType::SDF);
Shader TextDrawable::DEFAULT_SHADER_MSDF = MakeDefaultShader(FontAtlasType::MSDF);
Shader DEFAULT_SHADER_BITMAP = MakeDefaultShader(FontAtlasType::BITMAP);
Shader DEFAULT_SHADER_SDF = MakeDefaultShader(FontAtlasType::SDF);
Shader DEFAULT_SHADER_MSDF = MakeDefaultShader(FontAtlasType::MSDF);
}
TextDrawable::TextDrawable(const TextConfig& config) : m_cfg(config)
{
@@ -215,7 +215,17 @@ namespace OpenVulkano::Scene
++i;
}
m_bbox.Init(bmin, bmax);
SimpleDrawable::Init(nullptr, &m_geometry, &m_material, &m_uniBuffer);
Shader* shader = nullptr;
switch (m_atlasData->meta.atlasType)
{
case FontAtlasType::SDF: shader = &DEFAULT_SHADER_SDF; break;
case FontAtlasType::MSDF: shader = &DEFAULT_SHADER_MSDF; break;
default: Logger::RENDER->warn("No default shader for atlas type: {}", m_atlasData->meta.atlasType.GetName());
case FontAtlasType::BITMAP: shader = &DEFAULT_SHADER_BITMAP; break;
}
SimpleDrawable::Init(shader, &m_geometry, &m_material, &m_uniBuffer);
}
void TextDrawable::SetAtlasData(const std::shared_ptr<AtlasData>& atlasData)