From f7f4897aff13095ab21bfdf33fe474c789de937d Mon Sep 17 00:00:00 2001 From: ohyzha Date: Thu, 22 Aug 2024 13:29:03 +0300 Subject: [PATCH] small fixes --- examples/ExampleApps/BillboardExampleApp.cpp | 13 ++++--------- examples/ExampleApps/TextExampleApp.cpp | 8 +++++--- openVulkanoCpp/Scene/BillboardControlBlock.hpp | 18 ++++++++++++++++++ openVulkanoCpp/Scene/Shader/Shader.hpp | 4 +++- openVulkanoCpp/Shader/billboard.vert | 2 +- .../Shader/billboardFromSinglePoint.geom | 2 +- openVulkanoCpp/Shader/msdfText.frag | 2 +- openVulkanoCpp/Shader/text.frag | 2 +- openVulkanoCpp/Shader/text.vert | 2 +- 9 files changed, 35 insertions(+), 18 deletions(-) create mode 100644 openVulkanoCpp/Scene/BillboardControlBlock.hpp diff --git a/examples/ExampleApps/BillboardExampleApp.cpp b/examples/ExampleApps/BillboardExampleApp.cpp index 3c98ba6..2b69d6a 100644 --- a/examples/ExampleApps/BillboardExampleApp.cpp +++ b/examples/ExampleApps/BillboardExampleApp.cpp @@ -14,6 +14,7 @@ #include "Scene/SimpleDrawable.hpp" #include "Scene/UI/PerformanceInfo.hpp" #include "Scene/UniformBuffer.hpp" +#include "Scene/BillboardControlBlock.hpp" #include "Input/InputManager.hpp" #include "Host/GraphicsAppManager.hpp" #include "Host/GLFW/WindowGLFW.hpp" @@ -31,12 +32,6 @@ namespace OpenVulkano { public: - struct BillboardControlBlock - { - Math::Vector2f quadSize; - bool isFixedSize; - }; - void Init() override { auto engineConfig = OpenVulkano::EngineConfiguration::GetEngineConfiguration(); @@ -55,14 +50,14 @@ namespace OpenVulkano m_quadBillboardShader.AddShaderProgram(OpenVulkano::ShaderProgramType::FRAGMENT, "Shader/basic"); m_quadBillboardShader.AddVertexInputDescription(OpenVulkano::Vertex::GetVertexInputDescription()); m_quadBillboardShader.AddDescriptorSetLayoutBinding(Texture::DESCRIPTOR_SET_LAYOUT_BINDING); - m_quadBillboardShader.AddDescriptorSetLayoutBinding(UniformBuffer::DESCRIPTOR_SET_LAYOUT_BINDING); + m_quadBillboardShader.AddDescriptorSetLayoutBinding(UniformBuffer::DESCRIPTOR_SET_LAYOUT_BINDING, 4); m_quadBillboardShader.topology = Topology::POINT_LIST; m_shader.AddShaderProgram(OpenVulkano::ShaderProgramType::VERTEX, "Shader/billboard"); m_shader.AddShaderProgram(OpenVulkano::ShaderProgramType::FRAGMENT, "Shader/basic"); m_shader.AddVertexInputDescription(OpenVulkano::Vertex::GetVertexInputDescription()); m_shader.AddDescriptorSetLayoutBinding(Texture::DESCRIPTOR_SET_LAYOUT_BINDING); - m_shader.AddDescriptorSetLayoutBinding(UniformBuffer::DESCRIPTOR_SET_LAYOUT_BINDING); + m_shader.AddDescriptorSetLayoutBinding(UniformBuffer::DESCRIPTOR_SET_LAYOUT_BINDING, 4); m_shader.cullMode = CullMode::NONE; constexpr int quadsCnt = 7; @@ -72,7 +67,7 @@ namespace OpenVulkano m_bbContolBlock.quadSize = { 100.f, 100.f }; m_bbContolBlock.isFixedSize = false; m_uniBuffer.Init(sizeof(BillboardControlBlock), &m_bbContolBlock); - m_uniBuffer.setId = 3; + m_uniBuffer.setId = 4; m_drawablesPool.resize(cntDrawables); m_nodesPool.resize(cntDrawables); m_geo.resize(cntDrawables); diff --git a/examples/ExampleApps/TextExampleApp.cpp b/examples/ExampleApps/TextExampleApp.cpp index 4a06706..386211c 100644 --- a/examples/ExampleApps/TextExampleApp.cpp +++ b/examples/ExampleApps/TextExampleApp.cpp @@ -38,6 +38,8 @@ namespace OpenVulkano using namespace Math; namespace fs = std::filesystem; + //#define CREATE_NEW_ATLAS 1 + class TextExampleAppImpl final : public TextExampleApp { public: @@ -68,12 +70,12 @@ namespace OpenVulkano m_nodesPool.resize(N * 2); m_drawablesPool.resize(N * 2); -#ifdef MSDFGEN_AVAILABLE +#if defined(MSDFGEN_AVAILABLE) && defined(CREATE_NEW_ATLAS) msdf_atlas::Charset charset = SdfFontAtlasGenerator::LoadAllGlyphs(fontPath); m_atlasGenerator.GenerateAtlas(fontPath, charset); m_msdfAtlasGenerator.GenerateAtlas(fontPath, charset); #else - auto sdfMetadataInfo = resourceLoader.GetResource("sdf_atlas_packed"); + auto sdfMetadataInfo = resourceLoader.GetResource("sdf_atlas_packed.png"); auto msdfMetadataInfo = resourceLoader.GetResource("msdf_atlas_packed.png"); #endif @@ -81,7 +83,7 @@ namespace OpenVulkano { int textIdx = i % texts.size(); TextDrawable* t = nullptr; -#ifdef MSDFGEN_AVAILABLE +#if defined(MSDFGEN_AVAILABLE) && defined(CREATE_NEW_ATLAS) if (i < texts.size()) { t = new TextDrawable(&m_atlasGenerator, texts[textIdx].second); diff --git a/openVulkanoCpp/Scene/BillboardControlBlock.hpp b/openVulkanoCpp/Scene/BillboardControlBlock.hpp new file mode 100644 index 0000000..7e37e72 --- /dev/null +++ b/openVulkanoCpp/Scene/BillboardControlBlock.hpp @@ -0,0 +1,18 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include "Math/Math.hpp" + +namespace OpenVulkano::Scene +{ + struct BillboardControlBlock + { + Math::Vector2f quadSize = { 100.f, 100.f }; + int32_t isFixedSize = false; + }; +} diff --git a/openVulkanoCpp/Scene/Shader/Shader.hpp b/openVulkanoCpp/Scene/Shader/Shader.hpp index ed1da7d..efdfaa5 100644 --- a/openVulkanoCpp/Scene/Shader/Shader.hpp +++ b/openVulkanoCpp/Scene/Shader/Shader.hpp @@ -60,8 +60,10 @@ namespace OpenVulkano::Scene ShaderProgram(ShaderProgramType type, const std::string& name) : type(type), name(name) {} ShaderProgram(const ShaderProgram& program) = default; + ShaderProgram& operator=(const ShaderProgram& program) = default; - ShaderProgram(ShaderProgram&& program) noexcept : type(program.type), name(std::move(program.name)) {} + ShaderProgram(ShaderProgram&& program) noexcept = default; + ShaderProgram& operator=(ShaderProgram&& program) noexcept = default; [[nodiscard]] std::string GetShaderNameOpenGL() const { diff --git a/openVulkanoCpp/Shader/billboard.vert b/openVulkanoCpp/Shader/billboard.vert index 261d543..1442ae1 100644 --- a/openVulkanoCpp/Shader/billboard.vert +++ b/openVulkanoCpp/Shader/billboard.vert @@ -21,7 +21,7 @@ layout(set = 1, binding = 0) uniform CameraData vec4 camPos; } cam; -layout(set = 3, binding = 0) uniform BillboardData +layout(set = 4, binding = 0) uniform BillboardData { vec2 size; bool isFixedSize; diff --git a/openVulkanoCpp/Shader/billboardFromSinglePoint.geom b/openVulkanoCpp/Shader/billboardFromSinglePoint.geom index 13e60f0..c41d35e 100644 --- a/openVulkanoCpp/Shader/billboardFromSinglePoint.geom +++ b/openVulkanoCpp/Shader/billboardFromSinglePoint.geom @@ -24,7 +24,7 @@ layout(set = 1, binding = 0) uniform CameraData float pixelScaleFactor; } cam; -layout(set = 3, binding = 0) uniform BillboardData +layout(set = 4, binding = 0) uniform BillboardData { vec2 size; bool isFixedSize; diff --git a/openVulkanoCpp/Shader/msdfText.frag b/openVulkanoCpp/Shader/msdfText.frag index a6c3c78..2878e2e 100644 --- a/openVulkanoCpp/Shader/msdfText.frag +++ b/openVulkanoCpp/Shader/msdfText.frag @@ -1,6 +1,6 @@ #version 450 -layout(location = 0) in vec2 texCoord; +layout(location = 1) in vec2 texCoord; layout(location = 0) out vec4 outColor; diff --git a/openVulkanoCpp/Shader/text.frag b/openVulkanoCpp/Shader/text.frag index b874c24..5333c6f 100644 --- a/openVulkanoCpp/Shader/text.frag +++ b/openVulkanoCpp/Shader/text.frag @@ -1,6 +1,6 @@ #version 450 -layout(location = 0) in vec2 texCoord; +layout(location = 1) in vec2 texCoord; layout(location = 0) out vec4 outColor; diff --git a/openVulkanoCpp/Shader/text.vert b/openVulkanoCpp/Shader/text.vert index 8f60a00..1e9ef24 100644 --- a/openVulkanoCpp/Shader/text.vert +++ b/openVulkanoCpp/Shader/text.vert @@ -5,7 +5,7 @@ layout(location = 2) in vec3 tangent; layout(location = 3) in vec3 biTangent; layout(location = 4) in vec3 textureCoordinates; layout(location = 5) in vec4 color; -layout(location = 0) out vec2 fragTextureCoordinates; +layout(location = 1) out vec2 fragTextureCoordinates; layout(set = 0, binding = 0) uniform NodeData {