Starting implementation of UI framework

This commit is contained in:
Dynamitos
2021-01-19 15:30:00 +01:00
parent 65caae9e21
commit fb3c66cc4c
57 changed files with 381 additions and 186 deletions
+13 -3
View File
@@ -2,7 +2,7 @@
#include "Asset/AssetRegistry.h"
#include "Graphics/VertexShaderInput.h"
#include "BRDF.h"
#include "Graphics/WindowManager.h"
#include "Window/WindowManager.h"
#include <nlohmann/json.hpp>
#include <sstream>
#include <iostream>
@@ -60,8 +60,8 @@ void Material::compile()
codeStream << "struct " << materialName << ": IMaterial {" << std::endl;
uint32 uniformBufferOffset = 0;
uint32 bindingCounter = 1; // Uniform buffers are always binding 0
layout->addDescriptorBinding(0, Gfx::SE_DESCRIPTOR_TYPE_UNIFORM_BUFFER);
uint32 bindingCounter = 0; // Uniform buffers are always binding 0
uniformBinding = -1;
for(auto param : j["params"].items())
{
std::string type = param.value()["type"].get<std::string>();
@@ -70,6 +70,11 @@ void Material::compile()
{
PFloatParameter p = new FloatParameter(param.key(), uniformBufferOffset, 0);
codeStream << "layout(offset = " << uniformBufferOffset << ")";
if(uniformBinding == -1)
{
layout->addDescriptorBinding(bindingCounter, Gfx::SE_DESCRIPTOR_TYPE_UNIFORM_BUFFER);
uniformBinding = bindingCounter++;
}
uniformBufferOffset += 4;
if(default != param.value().end())
{
@@ -81,6 +86,11 @@ void Material::compile()
{
PVectorParameter p = new VectorParameter(param.key(), uniformBufferOffset, 0);
codeStream << "layout(offset = " << uniformBufferOffset << ")";
if(uniformBinding == -1)
{
layout->addDescriptorBinding(bindingCounter, Gfx::SE_DESCRIPTOR_TYPE_UNIFORM_BUFFER);
uniformBinding = bindingCounter++;
}
uniformBufferOffset += 12;
if(default != param.value().end())
{
+2 -2
View File
@@ -1,5 +1,5 @@
#include "MaterialAsset.h"
#include "Graphics/WindowManager.h"
#include "Window/WindowManager.h"
using namespace Seele;
@@ -41,7 +41,7 @@ void MaterialAsset::updateDescriptorData()
if(uniformUpdate.size != 0)
{
uniformBuffer->updateContents(uniformUpdate);
descriptorSet->updateBuffer(0, uniformBuffer);
descriptorSet->updateBuffer(uniformBinding, uniformBuffer);
}
descriptorSet->writeChanges();
}
+1
View File
@@ -32,6 +32,7 @@ protected:
Gfx::PUniformBuffer uniformBuffer;
uint32 uniformDataSize;
uint8* uniformData;
int32 uniformBinding;
};
DEFINE_REF(MaterialAsset);
} // namespace Seele
+1 -1
View File
@@ -1,6 +1,6 @@
#include "MaterialInstance.h"
#include "Material.h"
#include "Graphics/WindowManager.h"
#include "Window/WindowManager.h"
using namespace Seele;