aboutsummaryrefslogtreecommitdiff
path: root/source/30-game/Shader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/30-game/Shader.cpp')
-rw-r--r--source/30-game/Shader.cpp32
1 files changed, 19 insertions, 13 deletions
diff --git a/source/30-game/Shader.cpp b/source/30-game/Shader.cpp
index 48881f0..4a58635 100644
--- a/source/30-game/Shader.cpp
+++ b/source/30-game/Shader.cpp
@@ -1,9 +1,11 @@
#include "Shader.hpp"
#include "AppConfig.hpp"
-#include "RapidJsonHelper.hpp"
-#include "ScopeGuard.hpp"
-#include "Utils.hpp"
+
+#include <Metadata.hpp>
+#include <RapidJsonHelper.hpp>
+#include <ScopeGuard.hpp>
+#include <Utils.hpp>
#include <imgui.h>
#include <misc/cpp/imgui_stdlib.h>
@@ -16,20 +18,20 @@
using namespace std::literals;
void ShaderMathVariable::ShowInfo() const {
- ImGui::BulletText("Location: %d\nName: %s\nSemantic: %s\nType: %s %dx%d",
+ ImGui::BulletText("Location: %d\nName: %s\nSemantic: %.*s\nType: %.*s %dx%d",
location,
name.c_str(),
- Tags::NameOf(semantic).data(),
- Tags::NameOfGLType(scalarType).data(),
+ PRINTF_STRING_VIEW(Metadata::EnumToString(semantic)),
+ PRINTF_STRING_VIEW(Tags::GLTypeToString(scalarType)),
width,
height);
}
void ShaderSamplerVariable::ShowInfo() const {
- ImGui::BulletText("Location: %d\nName: %s\nSemantic: %s\nType: Sampler",
+ ImGui::BulletText("Location: %d\nName: %s\nSemantic: %.*s\nType: Sampler",
location,
name.c_str(),
- Tags::NameOf(semantic).data());
+ PRINTF_STRING_VIEW(Metadata::EnumToString(semantic)));
}
bool ShaderThingId::IsValid() const {
@@ -527,18 +529,22 @@ bool Shader::IsValid() const {
namespace ProjectBrussel_UNITY_ID {
void WriteShaderVariable(rapidjson::Value& value, rapidjson::Document& root, const ShaderVariable& var) {
value.AddMember("Name", var.name, root.GetAllocator());
- value.AddMember("Semantic", rapidjson::StringRef(Tags::NameOf(var.semantic)), root.GetAllocator());
+ value.AddMember("Semantic", rapidjson::StringRef(Metadata::EnumToString(var.semantic)), root.GetAllocator());
value.AddMember("OpenGLLocation", var.location, root.GetAllocator());
}
bool ReadShaderVariable(const rapidjson::Value& value, ShaderVariable& var) {
+ using namespace Tags;
+
BRUSSEL_JSON_GET(value, "Name", std::string, var.name, return false);
{ // Semantic
auto rvSemantic = rapidjson::GetProperty(value, rapidjson::kStringType, "Semantic"sv);
if (!rvSemantic) {
- var.semantic = Tags::VES_Generic;
+ var.semantic = VES_Generic;
} else {
- var.semantic = Tags::FindVertexElementSemantic(rapidjson::AsStringView(*rvSemantic));
+ auto str = rapidjson::AsStringView(*rvSemantic);
+ auto lookup = Metadata::EnumFromString<VertexElementSemantic>(str);
+ var.semantic = lookup.value_or(VES_Generic);
}
}
BRUSSEL_JSON_GET_DEFAULT(value, "OpenGLLocation", int, var.location, 0);
@@ -547,7 +553,7 @@ bool ReadShaderVariable(const rapidjson::Value& value, ShaderVariable& var) {
void WriteShaderMathVariable(rapidjson::Value& value, rapidjson::Document& root, const ShaderMathVariable& var) {
WriteShaderVariable(value, root, var);
- value.AddMember("ScalarType", rapidjson::StringRef(Tags::NameOfGLType(var.scalarType)), root.GetAllocator());
+ value.AddMember("ScalarType", rapidjson::StringRef(Tags::GLTypeToString(var.scalarType)), root.GetAllocator());
value.AddMember("Width", var.width, root.GetAllocator());
value.AddMember("Height", var.height, root.GetAllocator());
value.AddMember("ArrayLength", var.arrayLength, root.GetAllocator());
@@ -558,7 +564,7 @@ bool ReadShaderMathVariable(const rapidjson::Value& value, ShaderMathVariable& v
{
auto rvScalar = rapidjson::GetProperty(value, rapidjson::kStringType, "ScalarType"sv);
if (!rvScalar) return false;
- var.scalarType = Tags::FindGLType(rapidjson::AsStringView(*rvScalar));
+ var.scalarType = Tags::GLTypeFromString(rapidjson::AsStringView(*rvScalar));
}
BRUSSEL_JSON_GET(value, "Width", int, var.width, return false);
BRUSSEL_JSON_GET(value, "Height", int, var.height, return false);