Added UI functionality to the Graphics System #232
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -7,7 +7,6 @@
|
||||||
// vertex inputs
|
// vertex inputs
|
||||||
layout(location = 0) in vec4 positionalOffset;
|
layout(location = 0) in vec4 positionalOffset;
|
||||||
layout(location = 1) in uint glyphIndex;
|
layout(location = 1) in uint glyphIndex;
|
||||||
layout(location = 2) in uvec2 integerData;
|
|
||||||
|
|
||||||
// between shader stages
|
// between shader stages
|
||||||
layout(location = 0) out struct
|
layout(location = 0) out struct
|
||||||
|
@ -37,6 +36,7 @@ layout(set = 2, binding = 0) uniform CameraData
|
||||||
layout(std140, push_constant) uniform TestPushConstant
|
layout(std140, push_constant) uniform TestPushConstant
|
||||||
{
|
{
|
||||||
mat4 worldTransform;
|
mat4 worldTransform;
|
||||||
|
uint eid;
|
||||||
|
|
||||||
} testPushConstant;
|
} testPushConstant;
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ vec2 CreateQuad(in uint vertexID)
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
// write EID data to FS
|
// write EID data to FS
|
||||||
Out2.eid = integerData[0];
|
Out2.eid = testPushConstats.eid;
|
||||||
|
|
||||||
// local variable for font index
|
// local variable for font index
|
||||||
uint fontIndex = glyphIndex;
|
uint fontIndex = glyphIndex;
|
||||||
|
|
|
@ -6,7 +6,7 @@ echo ---------------------------------------------------
|
||||||
echo "SHADE DEPENDENCIES (Default - All in 10 Seconds)"
|
echo "SHADE DEPENDENCIES (Default - All in 10 Seconds)"
|
||||||
echo "A - All"
|
echo "A - All"
|
||||||
echo "B - VMA"
|
echo "B - VMA"
|
||||||
echo "C - msdf"
|
echo "C - FontCompiler"
|
||||||
echo "D - ModelCompiler"
|
echo "D - ModelCompiler"
|
||||||
echo "E - spdlog"
|
echo "E - spdlog"
|
||||||
echo "F - reactphysics3d"
|
echo "F - reactphysics3d"
|
||||||
|
@ -28,7 +28,7 @@ set _e=%ERRORLEVEL%
|
||||||
|
|
||||||
if %_e%==1 goto VMA
|
if %_e%==1 goto VMA
|
||||||
if %_e%==2 goto VMA
|
if %_e%==2 goto VMA
|
||||||
if %_e%==3 goto MSDF
|
if %_e%==3 goto FontCompiler
|
||||||
if %_e%==4 goto ModelCompiler
|
if %_e%==4 goto ModelCompiler
|
||||||
if %_e%==5 goto spdlog
|
if %_e%==5 goto spdlog
|
||||||
if %_e%==6 goto reactphysics3d
|
if %_e%==6 goto reactphysics3d
|
||||||
|
@ -47,12 +47,13 @@ if %_e%==16 goto fmod
|
||||||
echo -----------------------VMA----------------------------
|
echo -----------------------VMA----------------------------
|
||||||
rmdir "Dependencies/VMA" /S /Q
|
rmdir "Dependencies/VMA" /S /Q
|
||||||
git clone https://github.com/SHADE-DP/VulkanMemoryAllocator.git "Dependencies/VMA"
|
git clone https://github.com/SHADE-DP/VulkanMemoryAllocator.git "Dependencies/VMA"
|
||||||
if %_e%==2 (goto :done) else (goto :MSDF)
|
if %_e%==2 (goto :done) else (goto :FontCompiler)
|
||||||
|
|
||||||
:MSDF
|
:FontCompiler
|
||||||
echo -----------------------MSDF----------------------------
|
echo -----------------------FontCompiler----------------------------
|
||||||
rmdir "Dependencies/msdf" /S /Q
|
rmdir "Dependencies/FontCompiler" /S /Q
|
||||||
git clone --recurse-submodules https://github.com/SHADE-DP/msdf-atlas-gen.git "Dependencies/msdf"
|
git clone https://github.com/SHADE-DP/FontCompiler.git "Dependencies/FontCompiler"
|
||||||
|
git clone --recurse-submodules https://github.com/SHADE-DP/msdf-atlas-gen "Dependencies/FontCompiler/Dependencies/msdf"
|
||||||
if %_e%==3 (goto :done) else (goto :ModelCompiler)
|
if %_e%==3 (goto :done) else (goto :ModelCompiler)
|
||||||
|
|
||||||
:ModelCompiler
|
:ModelCompiler
|
||||||
|
|
|
@ -3,8 +3,9 @@ IncludeDir["ModelCompiler"] = "%{wks.location}\\Dependencies\\ModelCompiler"
|
||||||
IncludeDir["imgui"] = "%{wks.location}\\Dependencies\\imgui"
|
IncludeDir["imgui"] = "%{wks.location}\\Dependencies\\imgui"
|
||||||
IncludeDir["imguizmo"] = "%{wks.location}\\Dependencies\\imguizmo"
|
IncludeDir["imguizmo"] = "%{wks.location}\\Dependencies\\imguizmo"
|
||||||
IncludeDir["imnodes"] = "%{wks.location}\\Dependencies\\imnodes"
|
IncludeDir["imnodes"] = "%{wks.location}\\Dependencies\\imnodes"
|
||||||
IncludeDir["msdf_atlas_gen"] = "%{wks.location}\\Dependencies\\msdf"
|
IncludeDir["FontCompiler"] = "%{wks.location}\\Dependencies\\FontCompiler"
|
||||||
IncludeDir["msdfgen"] = "%{wks.location}\\Dependencies\\msdf\\msdfgen"
|
IncludeDir["msdf_atlas_gen"] = "%{wks.location}\\Dependencies\\FontCompiler\\Dependencies\\msdf"
|
||||||
|
IncludeDir["msdfgen"] = "%{wks.location}\\Dependencies\\FontCompiler\\Dependencies\\msdf\\msdfgen"
|
||||||
IncludeDir["spdlog"] = "%{wks.location}\\Dependencies\\spdlog"
|
IncludeDir["spdlog"] = "%{wks.location}\\Dependencies\\spdlog"
|
||||||
IncludeDir["tracy"] = "%{wks.location}\\Dependencies\\tracy"
|
IncludeDir["tracy"] = "%{wks.location}\\Dependencies\\tracy"
|
||||||
IncludeDir["VMA"] = "%{wks.location}\\Dependencies\\VMA"
|
IncludeDir["VMA"] = "%{wks.location}\\Dependencies\\VMA"
|
||||||
|
|
|
@ -146,6 +146,8 @@ namespace Sandbox
|
||||||
|
|
||||||
SHFrameRateController::UpdateFRC();
|
SHFrameRateController::UpdateFRC();
|
||||||
|
|
||||||
|
//std::system("FontCompiler.exe ../../Assets/Fonts/SegoeUI.ttf");
|
||||||
|
|
||||||
// Link up SHDebugDraw
|
// Link up SHDebugDraw
|
||||||
SHDebugDraw::Init(SHSystemManager::GetSystem<SHDebugDrawSystem>());
|
SHDebugDraw::Init(SHSystemManager::GetSystem<SHDebugDrawSystem>());
|
||||||
}
|
}
|
||||||
|
|
|
@ -118,6 +118,7 @@ project "SHADE_Engine"
|
||||||
{
|
{
|
||||||
"xcopy /r /y /q \"%{IncludeDir.ModelCompiler}\\bin\\Debug\\assimp-vc142-mtd.dll\" \"$(OutDir)\"",
|
"xcopy /r /y /q \"%{IncludeDir.ModelCompiler}\\bin\\Debug\\assimp-vc142-mtd.dll\" \"$(OutDir)\"",
|
||||||
"xcopy /r /y /q \"%{IncludeDir.ModelCompiler}\\bin\\Debug\\ModelCompiler.exe\" \"$(OutDir)\"",
|
"xcopy /r /y /q \"%{IncludeDir.ModelCompiler}\\bin\\Debug\\ModelCompiler.exe\" \"$(OutDir)\"",
|
||||||
|
"xcopy /r /y /q \"%{IncludeDir.FontCompiler}\\bin\\Debug\\FontCompiler.exe\" \"$(OutDir)\"",
|
||||||
"xcopy /r /y /q \"%{IncludeDir.fmod}\\lib\\fmodL.dll\" \"$(OutDir)\"",
|
"xcopy /r /y /q \"%{IncludeDir.fmod}\\lib\\fmodL.dll\" \"$(OutDir)\"",
|
||||||
"xcopy /r /y /q \"%{IncludeDir.fmod}\\lib\\fmodstudioL.dll\" \"$(OutDir)\""
|
"xcopy /r /y /q \"%{IncludeDir.fmod}\\lib\\fmodstudioL.dll\" \"$(OutDir)\""
|
||||||
}
|
}
|
||||||
|
@ -127,6 +128,7 @@ project "SHADE_Engine"
|
||||||
{
|
{
|
||||||
"xcopy /r /y /q \"%{IncludeDir.ModelCompiler}\\bin\\Release\\assimp-vc142-mt.dll\" \"$(OutDir)\"",
|
"xcopy /r /y /q \"%{IncludeDir.ModelCompiler}\\bin\\Release\\assimp-vc142-mt.dll\" \"$(OutDir)\"",
|
||||||
"xcopy /r /y /q \"%{IncludeDir.ModelCompiler}\\bin\\Release\\ModelCompiler.exe\" \"$(OutDir)\"",
|
"xcopy /r /y /q \"%{IncludeDir.ModelCompiler}\\bin\\Release\\ModelCompiler.exe\" \"$(OutDir)\"",
|
||||||
|
"xcopy /r /y /q \"%{IncludeDir.FontCompiler}\\bin\\Release\\FontCompiler.exe\" \"$(OutDir)\"",
|
||||||
"xcopy /r /y /q \"%{IncludeDir.fmod}\\lib\\fmod.dll\" \"$(OutDir)\"",
|
"xcopy /r /y /q \"%{IncludeDir.fmod}\\lib\\fmod.dll\" \"$(OutDir)\"",
|
||||||
"xcopy /r /y /q \"%{IncludeDir.fmod}\\lib\\fmodstudio.dll\" \"$(OutDir)\""
|
"xcopy /r /y /q \"%{IncludeDir.fmod}\\lib\\fmodstudio.dll\" \"$(OutDir)\""
|
||||||
}
|
}
|
||||||
|
|
|
@ -203,6 +203,10 @@ namespace SHADE
|
||||||
/***************************************************************************/
|
/***************************************************************************/
|
||||||
static constexpr uint32_t INTEGER_DATA = 5;
|
static constexpr uint32_t INTEGER_DATA = 5;
|
||||||
|
|
||||||
|
static constexpr uint32_t CALCULATED_GLYPH_POSITION = 0;
|
||||||
|
static constexpr uint32_t GLYPH_INDEX = 1;
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/*******************************************************************************/
|
/*******************************************************************************/
|
||||||
|
|
|
@ -154,4 +154,9 @@ namespace SHADE
|
||||||
return matrixDataBuffer;
|
return matrixDataBuffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Handle<SHVkDescriptorSetGroup> SHFont::GetDescriptorSet(void) const noexcept
|
||||||
|
{
|
||||||
|
return descSet;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -61,7 +61,8 @@ namespace SHADE
|
||||||
std::unordered_map<msdfgen::unicode_t, uint32_t> GetUnicodeIndexing (void) const noexcept;
|
std::unordered_map<msdfgen::unicode_t, uint32_t> GetUnicodeIndexing (void) const noexcept;
|
||||||
SHFontAsset const& GetFontAsset (void) const noexcept;
|
SHFontAsset const& GetFontAsset (void) const noexcept;
|
||||||
Handle<SHVkImage> GetImage (void) const noexcept;
|
Handle<SHVkImage> GetImage (void) const noexcept;
|
||||||
Handle<SHVkBuffer> GetMatrixBuffer (void) const noexcept;
|
Handle<SHVkBuffer> GetMatrixBuffer (void) const noexcept;
|
||||||
|
Handle<SHVkDescriptorSetGroup> GetDescriptorSet (void) const noexcept;
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#include "Graphics/MiddleEnd/TextRendering/SHFont.h"
|
#include "Graphics/MiddleEnd/TextRendering/SHFont.h"
|
||||||
#include "Graphics/Buffers/SHVkBuffer.h"
|
#include "Graphics/Buffers/SHVkBuffer.h"
|
||||||
#include "Graphics/MiddleEnd/GlobalData/SHGraphicsGlobalData.h"
|
#include "Graphics/MiddleEnd/GlobalData/SHGraphicsGlobalData.h"
|
||||||
|
#include "Graphics/Pipeline/SHVkPipeline.h"
|
||||||
|
|
||||||
namespace SHADE
|
namespace SHADE
|
||||||
{
|
{
|
||||||
|
@ -102,6 +103,19 @@ namespace SHADE
|
||||||
|
|
||||||
// Create pipeline
|
// Create pipeline
|
||||||
pipeline = logicalDevice->CreateGraphicsPipeline(pipelineLayout, nullptr, compatibleRenderpass, subpass);
|
pipeline = logicalDevice->CreateGraphicsPipeline(pipelineLayout, nullptr, compatibleRenderpass, subpass);
|
||||||
|
|
||||||
|
// vertex input state of the pipeline
|
||||||
|
SHVertexInputState vertexInputState;
|
||||||
|
|
||||||
|
// Configure vertex attributes
|
||||||
|
vertexInputState.AddBinding(false, false, { SHVertexAttribute(SHAttribFormat::FLOAT_4D) }); // location = 0 (character position data)
|
||||||
|
vertexInputState.AddBinding(false, false, { SHVertexAttribute(SHAttribFormat::UINT32_1D) }); // location = 1 (glyph index to index matrices)
|
||||||
|
|
||||||
|
// Set vertex state for new pipeline
|
||||||
|
pipeline->GetPipelineState().SetVertexInputState(vertexInputState);
|
||||||
|
|
||||||
|
// Construct pipeline
|
||||||
|
pipeline->ConstructPipeline();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SHTextRenderingSubSystem::Run(uint32_t frameIndex) noexcept
|
void SHTextRenderingSubSystem::Run(uint32_t frameIndex) noexcept
|
||||||
|
@ -120,19 +134,27 @@ namespace SHADE
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SHTextRenderingSubSystem::Render(void) noexcept
|
void SHTextRenderingSubSystem::Render(Handle<SHVkCommandBuffer> cmdBuffer) noexcept
|
||||||
{
|
{
|
||||||
auto& textRendererComps = SHComponentManager::GetDense<SHTextRendererComponent>();
|
auto& textRendererComps = SHComponentManager::GetDense<SHTextRendererComponent>();
|
||||||
for (auto& comp : textRendererComps)
|
for (auto& comp : textRendererComps)
|
||||||
{
|
{
|
||||||
// draw the component
|
Handle<SHFont> fontHandle = comp.fontHandle;
|
||||||
|
if (fontHandle)
|
||||||
|
{
|
||||||
|
// bind the pipeline
|
||||||
|
cmdBuffer->BindPipeline(pipeline);
|
||||||
|
|
||||||
// bind the pipeline
|
// bind VBO (position and indices)
|
||||||
// bind the pipeline layout
|
cmdBuffer->BindVertexBuffer(SHGraphicsConstants::VertexBufferBindings::CALCULATED_GLYPH_POSITION, comp.charPositionDataBuffer, 0);
|
||||||
// bind VBO (position and indices)
|
cmdBuffer->BindVertexBuffer(SHGraphicsConstants::VertexBufferBindings::GLYPH_INDEX, comp.indexingDataBuffer, 0);
|
||||||
// bind descriptors for font (matrices)
|
|
||||||
|
|
||||||
// call draw call
|
// bind descriptors for font (matrices)
|
||||||
|
cmdBuffer->BindDescriptorSet(fontHandle->GetDescriptorSet(), SH_PIPELINE_TYPE::GRAPHICS, SHGraphicsConstants::DescriptorSetIndex::FONT_DATA, {});
|
||||||
|
|
||||||
|
// call draw call
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "Resource/SHHandle.h"
|
#include "Resource/SHHandle.h"
|
||||||
|
#include "Graphics/Pipeline/SHPipelineState.h"
|
||||||
|
|
||||||
namespace SHADE
|
namespace SHADE
|
||||||
{
|
{
|
||||||
|
@ -37,7 +38,7 @@ namespace SHADE
|
||||||
public:
|
public:
|
||||||
void Init(Handle<SHVkLogicalDevice> device, Handle<SHVkRenderpass> compatibleRenderpass, Handle<SHSubpass> subpass, Handle<SHVkDescriptorPool> descPool, Handle<SHVkShaderModule> textVS, Handle<SHVkShaderModule> textFS) noexcept;
|
void Init(Handle<SHVkLogicalDevice> device, Handle<SHVkRenderpass> compatibleRenderpass, Handle<SHSubpass> subpass, Handle<SHVkDescriptorPool> descPool, Handle<SHVkShaderModule> textVS, Handle<SHVkShaderModule> textFS) noexcept;
|
||||||
void Run(uint32_t frameIndex) noexcept;
|
void Run(uint32_t frameIndex) noexcept;
|
||||||
void Render (void) noexcept;
|
void Render (Handle<SHVkCommandBuffer> cmdBuffer) noexcept;
|
||||||
void Exit(void) noexcept;
|
void Exit(void) noexcept;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -25,10 +25,11 @@ workspace "SHADE"
|
||||||
include "SHADE_CSharp"
|
include "SHADE_CSharp"
|
||||||
|
|
||||||
group "Dependencies"
|
group "Dependencies"
|
||||||
include "Dependencies/msdf"
|
include "Dependencies/FontCompiler/Dependencies/msdf"
|
||||||
include "Dependencies/imgui"
|
include "Dependencies/imgui"
|
||||||
--include "Dependencies/tracy"
|
--include "Dependencies/tracy"
|
||||||
include "Dependencies/yamlcpp"
|
include "Dependencies/yamlcpp"
|
||||||
include "Dependencies/reactphysics3d"
|
include "Dependencies/reactphysics3d"
|
||||||
include "Dependencies/ModelCompiler"
|
include "Dependencies/ModelCompiler"
|
||||||
|
include "Dependencies/FontCompiler"
|
||||||
group ""
|
group ""
|
||||||
|
|
Loading…
Reference in New Issue