Deduplicate shader creation function for text drawable
This commit is contained in:
@@ -20,65 +20,27 @@
|
||||
|
||||
namespace OpenVulkano::Scene
|
||||
{
|
||||
Shader& TextDrawable::GetSdfDefaultShader()
|
||||
namespace
|
||||
{
|
||||
static bool once = true;
|
||||
static Shader sdfDefaultShader;
|
||||
if (once)
|
||||
Shader MakeDefaultShader(const std::string& vertexShader, const std::string& fragmentShader)
|
||||
{
|
||||
sdfDefaultShader.AddShaderProgram(ShaderProgramType::VERTEX, "Shader/sdfText");
|
||||
sdfDefaultShader.AddShaderProgram(ShaderProgramType::FRAGMENT, "Shader/sdfText");
|
||||
sdfDefaultShader.AddVertexInputDescription(Vertex::GetVertexInputDescription());
|
||||
sdfDefaultShader.AddDescriptorSetLayoutBinding(Texture::DESCRIPTOR_SET_LAYOUT_BINDING);
|
||||
Shader shader;
|
||||
shader.AddShaderProgram(ShaderProgramType::VERTEX, "Shader/" + vertexShader);
|
||||
shader.AddShaderProgram(ShaderProgramType::FRAGMENT, "Shader/" + fragmentShader);
|
||||
shader.AddVertexInputDescription(Vertex::GetVertexInputDescription());
|
||||
shader.AddDescriptorSetLayoutBinding(Texture::DESCRIPTOR_SET_LAYOUT_BINDING);
|
||||
DescriptorSetLayoutBinding desc = UniformBuffer::DESCRIPTOR_SET_LAYOUT_BINDING;
|
||||
desc.stageFlags = ShaderProgramType::FRAGMENT;
|
||||
sdfDefaultShader.AddDescriptorSetLayoutBinding(desc);
|
||||
sdfDefaultShader.alphaBlend = true;
|
||||
sdfDefaultShader.cullMode = CullMode::NONE;
|
||||
once = false;
|
||||
shader.AddDescriptorSetLayoutBinding(desc);
|
||||
shader.alphaBlend = true;
|
||||
shader.cullMode = CullMode::NONE;
|
||||
return shader;
|
||||
}
|
||||
return sdfDefaultShader;
|
||||
}
|
||||
|
||||
Shader& TextDrawable::GetMsdfDefaultShader()
|
||||
{
|
||||
static bool once = true;
|
||||
static Shader msdfDefaultShader;
|
||||
if (once)
|
||||
{
|
||||
msdfDefaultShader.AddShaderProgram(ShaderProgramType::VERTEX, "Shader/sdfText");
|
||||
msdfDefaultShader.AddShaderProgram(ShaderProgramType::FRAGMENT, "Shader/msdfText");
|
||||
msdfDefaultShader.AddVertexInputDescription(Vertex::GetVertexInputDescription());
|
||||
msdfDefaultShader.AddDescriptorSetLayoutBinding(Texture::DESCRIPTOR_SET_LAYOUT_BINDING);
|
||||
DescriptorSetLayoutBinding desc = UniformBuffer::DESCRIPTOR_SET_LAYOUT_BINDING;
|
||||
desc.stageFlags = ShaderProgramType::FRAGMENT;
|
||||
msdfDefaultShader.AddDescriptorSetLayoutBinding(desc);
|
||||
msdfDefaultShader.alphaBlend = true;
|
||||
msdfDefaultShader.cullMode = CullMode::NONE;
|
||||
once = false;
|
||||
}
|
||||
return msdfDefaultShader;
|
||||
}
|
||||
|
||||
Shader& TextDrawable::GetBitmapDefaultShader()
|
||||
{
|
||||
static bool once = true;
|
||||
static Shader bitmapDefaultShader;
|
||||
if (once)
|
||||
{
|
||||
bitmapDefaultShader.AddShaderProgram(ShaderProgramType::VERTEX, "Shader/text");
|
||||
bitmapDefaultShader.AddShaderProgram(ShaderProgramType::FRAGMENT, "Shader/text");
|
||||
bitmapDefaultShader.AddVertexInputDescription(Vertex::GetVertexInputDescription());
|
||||
bitmapDefaultShader.AddDescriptorSetLayoutBinding(Texture::DESCRIPTOR_SET_LAYOUT_BINDING);
|
||||
DescriptorSetLayoutBinding desc = UniformBuffer::DESCRIPTOR_SET_LAYOUT_BINDING;
|
||||
desc.stageFlags = ShaderProgramType::FRAGMENT;
|
||||
bitmapDefaultShader.AddDescriptorSetLayoutBinding(desc);
|
||||
bitmapDefaultShader.alphaBlend = true;
|
||||
bitmapDefaultShader.cullMode = CullMode::NONE;
|
||||
once = false;
|
||||
}
|
||||
return bitmapDefaultShader;
|
||||
}
|
||||
Shader TextDrawable::DEFAULT_SHADER_BITMAP = MakeDefaultShader("text", "text");
|
||||
Shader TextDrawable::DEFAULT_SHADER_SDF = MakeDefaultShader("sdfText", "sdfText");
|
||||
Shader TextDrawable::DEFAULT_SHADER_MSDF = MakeDefaultShader("sdfText", "msdfText");
|
||||
|
||||
TextDrawable::TextDrawable(const TextConfig& config)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user