Remove unnecessary buffer
This commit is contained in:
@@ -20,21 +20,10 @@ namespace OpenVulkano::Scene
|
||||
Shader MakeLabelBgShader(const bool billboard)
|
||||
{
|
||||
Shader backgroundShader;
|
||||
if (!billboard)
|
||||
{
|
||||
backgroundShader.AddShaderProgram(ShaderProgramType::VERTEX, "Shader/label");
|
||||
}
|
||||
else
|
||||
{
|
||||
backgroundShader.AddShaderProgram(ShaderProgramType::VERTEX, "Shader/labelBillboard");
|
||||
// binding for billboard's buffer
|
||||
DescriptorSetLayoutBinding binding = UniformBuffer::DESCRIPTOR_SET_LAYOUT_BINDING;
|
||||
binding.stageFlags = ShaderProgramType::Type::VERTEX;
|
||||
backgroundShader.AddDescriptorSetLayoutBinding(binding, 4);
|
||||
}
|
||||
backgroundShader.AddShaderProgram(ShaderProgramType::VERTEX, billboard ? "Shader/labelBillboard" : "Shader/label");
|
||||
backgroundShader.AddShaderProgram(ShaderProgramType::FRAGMENT, "Shader/label");
|
||||
backgroundShader.AddDescriptorSetLayoutBinding(Texture::DESCRIPTOR_SET_LAYOUT_BINDING, 2);
|
||||
backgroundShader.AddDescriptorSetLayoutBinding(UniformBuffer::DESCRIPTOR_SET_LAYOUT_BINDING, 5);
|
||||
backgroundShader.AddDescriptorSetLayoutBinding(UniformBuffer::DESCRIPTOR_SET_LAYOUT_BINDING, 4);
|
||||
backgroundShader.topology = Topology::TRIANGLE_STRIP;
|
||||
backgroundShader.cullMode = CullMode::NONE;
|
||||
return backgroundShader;
|
||||
@@ -44,6 +33,7 @@ namespace OpenVulkano::Scene
|
||||
{
|
||||
Shader shader = TextDrawable::MakeDefaultShader(type);
|
||||
shader.depthCompareOp = CompareOp::LESS_OR_EQUAL;
|
||||
shader.EnableDepthBias();
|
||||
if (billboard)
|
||||
{
|
||||
for (auto& program : shader.shaderPrograms)
|
||||
@@ -55,10 +45,9 @@ namespace OpenVulkano::Scene
|
||||
}
|
||||
}
|
||||
DescriptorSetLayoutBinding billboardUniformBinding = UniformBuffer::DESCRIPTOR_SET_LAYOUT_BINDING;
|
||||
billboardUniformBinding.stageFlags = ShaderProgramType::Type::VERTEX;
|
||||
shader.AddDescriptorSetLayoutBinding(billboardUniformBinding, 4);
|
||||
shader.depthBiasConstant = 0.01f;
|
||||
}
|
||||
shader.EnableDepthBias();
|
||||
return shader;
|
||||
}
|
||||
|
||||
@@ -123,11 +112,6 @@ namespace OpenVulkano::Scene
|
||||
if (m_settings.hasArrow) m_labelData.bboxCenter.y -= m_settings.arrowLength;
|
||||
}
|
||||
|
||||
void LabelDrawable::SetBillboardSettings(const BillboardControlBlock& settings)
|
||||
{
|
||||
m_billboardSettings = settings;
|
||||
}
|
||||
|
||||
std::optional<RayHit> LabelDrawable::Intersect(const Ray& ray) const
|
||||
{
|
||||
return ray.IntersectAABB(m_bbox);
|
||||
@@ -135,16 +119,9 @@ namespace OpenVulkano::Scene
|
||||
|
||||
void LabelDrawable::SetupBuffers()
|
||||
{
|
||||
m_billboardBuffer.size = sizeof(BillboardControlBlock);
|
||||
m_billboardBuffer.data = &m_billboardSettings;
|
||||
m_billboardBuffer.setId = 4;
|
||||
DescriptorSetLayoutBinding binding = UniformBuffer::DESCRIPTOR_SET_LAYOUT_BINDING;
|
||||
binding.stageFlags = ShaderProgramType::Type::VERTEX;
|
||||
m_billboardBuffer.binding = binding;
|
||||
|
||||
m_labelBuffer.size = sizeof(LabelUniformData);
|
||||
m_labelBuffer.data = &m_labelData;
|
||||
m_labelBuffer.setId = 5;
|
||||
m_labelBuffer.setId = 4;
|
||||
m_labelBuffer.binding = UniformBuffer::DESCRIPTOR_SET_LAYOUT_BINDING;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
|
||||
#include "Scene/Drawable.hpp"
|
||||
#include "Scene/UniformBuffer.hpp"
|
||||
#include "Scene/BillboardControlBlock.hpp"
|
||||
#include "Math/AABB.hpp"
|
||||
#include "Scene/TextDrawable.hpp"
|
||||
#include <list>
|
||||
@@ -38,6 +37,7 @@ namespace OpenVulkano::Scene
|
||||
float arrowWidth = 0.f;
|
||||
int32_t hasRoundedCorners = false;
|
||||
int32_t hasArrow = false;
|
||||
int32_t isBillboardFixedSize = false;
|
||||
};
|
||||
|
||||
class LabelDrawable final : public Drawable
|
||||
@@ -47,13 +47,10 @@ namespace OpenVulkano::Scene
|
||||
const LabelDrawableSettings& settings = LabelDrawableSettings(), bool isBillboard = false);
|
||||
void AddText(const std::string& text, const TextConfig& config = TextConfig());
|
||||
void SetLabelSettings(const LabelDrawableSettings& settings);
|
||||
void SetBillboardSettings(const BillboardControlBlock& settings);
|
||||
void SetPosition(const Math::Vector3f& pos) { m_position = pos; }
|
||||
[[nodiscard]] std::list<TextDrawable>& GetTexts() { return m_texts; }
|
||||
[[nodiscard]] LabelDrawableSettings& GetSettings() { return m_settings; }
|
||||
[[nodiscard]] UniformBuffer* GetBillboardBuffer() { return &m_billboardBuffer; }
|
||||
[[nodiscard]] UniformBuffer* GetLabelBuffer() { return &m_labelBuffer; }
|
||||
[[nodiscard]] BillboardControlBlock& GetBillboardSettings() { return m_billboardSettings; }
|
||||
[[nodiscard]] Math::Vector3f& GetPosition() { return m_position; }
|
||||
[[nodiscard]] bool IsBillboard() const { return m_isBillboard; }
|
||||
[[nodiscard]] const Math::AABB& GetBoundingBox() const { return m_bbox; }
|
||||
@@ -62,13 +59,11 @@ namespace OpenVulkano::Scene
|
||||
private:
|
||||
void SetupBuffers();
|
||||
|
||||
UniformBuffer m_billboardBuffer;
|
||||
UniformBuffer m_labelBuffer;
|
||||
std::list<TextDrawable> m_texts; // Using list instead of vector for stable iterators
|
||||
LabelDrawableSettings m_settings;
|
||||
LabelUniformData m_labelData;
|
||||
std::shared_ptr<AtlasData> m_atlasData;
|
||||
BillboardControlBlock m_billboardSettings;
|
||||
Math::Vector3f m_position = { 0, 0, 0 };
|
||||
Math::AABB m_bbox;
|
||||
bool m_isBillboard;
|
||||
|
||||
Reference in New Issue
Block a user