diff --git a/engine/modules/engine/asset/include/asset/asset.h b/engine/modules/engine/asset/include/asset/asset.h index b6ea531..8040b8f 100644 --- a/engine/modules/engine/asset/include/asset/asset.h +++ b/engine/modules/engine/asset/include/asset/asset.h @@ -1,6 +1,7 @@ #pragma once #include "resource_system.h" namespace api { + using refl::type_info; class Asset : public Resource { public: using Base = Resource; diff --git a/engine/modules/engine/core/include/archive/json/serde.h b/engine/modules/engine/core/include/archive/json/serde.h index 2a40e84..6a9eafc 100644 --- a/engine/modules/engine/core/include/archive/json/serde.h +++ b/engine/modules/engine/core/include/archive/json/serde.h @@ -31,7 +31,7 @@ namespace gen { *(T*)(ptr) = yyjson_get_str(val); } else { - static_assert(false, "unknown json read type"); + //static_assert(false, "unknown json read type"); } return true; } @@ -52,7 +52,7 @@ namespace gen { return yyjson_mut_str(doc, ((T*)ptr)->data()); } else { - static_assert(false, "unknown json write type"); + //static_assert(false, "unknown json write type"); } } }; diff --git a/engine/modules/engine/render/include/render/asset/material.h b/engine/modules/engine/render/include/render/asset/material.h index da87eb0..2136982 100644 --- a/engine/modules/engine/render/include/render/asset/material.h +++ b/engine/modules/engine/render/include/render/asset/material.h @@ -1,5 +1,4 @@ #pragma once -#include "asset/asset.h" #include "shader.h" namespace api { class Material : public Asset { diff --git a/engine/modules/engine/render/include/render/asset/mesh.h b/engine/modules/engine/render/include/render/asset/mesh.h index 3106a45..e8a100f 100644 --- a/engine/modules/engine/render/include/render/asset/mesh.h +++ b/engine/modules/engine/render/include/render/asset/mesh.h @@ -7,11 +7,13 @@ namespace api { class Mesh : public Asset { protected: RscHandle mMaterial; - parray mVertices; + parray mVertices; vector mIndices; public: Mesh(); - void BeginLoad(); + template + Mesh(vector& vertices, vector& indices); + void BeginLoad() {}; public: Guid GetShaderGuid() { @@ -30,4 +32,9 @@ namespace api { return mIndices; } }; + template + inline Mesh::Mesh(vector& vertices, vector& indices) + : Asset(type_info()), mVertices(vertices), mIndices(indices) + { + } }; \ No newline at end of file diff --git a/engine/modules/engine/render/include/render/asset/shader.h b/engine/modules/engine/render/include/render/asset/shader.h index 87ee72f..387ddef 100644 --- a/engine/modules/engine/render/include/render/asset/shader.h +++ b/engine/modules/engine/render/include/render/asset/shader.h @@ -1,5 +1,5 @@ #pragma once -#include "asset/res/resource_handle.h" +#include "asset/asset.h" namespace api { class ShaderProgram : public Resource {}; class Shader : public Asset { diff --git a/engine/modules/engine/render/include/render/asset/vertex.h b/engine/modules/engine/render/include/render/asset/vertex.h index 33445ef..00d4299 100644 --- a/engine/modules/engine/render/include/render/asset/vertex.h +++ b/engine/modules/engine/render/include/render/asset/vertex.h @@ -5,8 +5,9 @@ // 顶点最多关联4个骨骼 #define MAX_NUM_BONES_PER_VERTEX 4 namespace api { - using refl::type_info; struct Vertex {}; + template + concept Vertexs = requires {std::is_base_of_v; }; struct PosVertex : public Vertex { UPROPERTY_gl({}, glVertexMeta{ 3, GL_FLOAT, GL_FALSE }) UPROPERTY_vk({}, uint32_t{ VK_FORMAT_R32G32B32_SFLOAT }) diff --git a/engine/modules/engine/render/include/render/renderapi.h b/engine/modules/engine/render/include/render/renderapi.h index f76dd1a..b722935 100644 --- a/engine/modules/engine/render/include/render/renderapi.h +++ b/engine/modules/engine/render/include/render/renderapi.h @@ -20,5 +20,10 @@ namespace api { public: virtual void Init() = 0; virtual void Shutdown() = 0; + + virtual void SetStaticMesh(Mesh& mesh) = 0; + virtual void DrawStaticMesh(Mesh& mesh) = 0; + + virtual void LoadShader(Shader& shader) = 0; }; } \ No newline at end of file diff --git a/engine/modules/engine/render/src/asset/framebuffer.cpp b/engine/modules/engine/render/src/asset/framebuffer.cpp index e69de29..65ae676 100644 --- a/engine/modules/engine/render/src/asset/framebuffer.cpp +++ b/engine/modules/engine/render/src/asset/framebuffer.cpp @@ -0,0 +1,4 @@ +#include "render/asset/framebuffer.h" +namespace api { + +} \ No newline at end of file diff --git a/engine/modules/engine/render/src/asset/material.cpp b/engine/modules/engine/render/src/asset/material.cpp index e69de29..e858852 100644 --- a/engine/modules/engine/render/src/asset/material.cpp +++ b/engine/modules/engine/render/src/asset/material.cpp @@ -0,0 +1,9 @@ +#include "render/asset/material.h" +namespace api { + Material::Material() : Asset(type_info()) + { + } + Material::~Material() + { + } +} \ No newline at end of file diff --git a/engine/modules/engine/render/src/asset/shader.cpp b/engine/modules/engine/render/src/asset/shader.cpp index e69de29..1a86516 100644 --- a/engine/modules/engine/render/src/asset/shader.cpp +++ b/engine/modules/engine/render/src/asset/shader.cpp @@ -0,0 +1,12 @@ +#include "render/asset/shader.h" +namespace api { + Shader::Shader() : Asset(type_info()) + { + } + Shader::~Shader() + { + } + void Shader::BeginLoad() + { + } +} \ No newline at end of file diff --git a/engine/modules/engine/zlib/include/refl/std/parray.h b/engine/modules/engine/zlib/include/refl/std/parray.h index 33802f1..40feac5 100644 --- a/engine/modules/engine/zlib/include/refl/std/parray.h +++ b/engine/modules/engine/zlib/include/refl/std/parray.h @@ -1,4 +1,4 @@ -#include "refl/refl.h" +#include "refl/pch.h" namespace refl { template class parray { @@ -20,7 +20,7 @@ namespace refl { } else { for (int i = 0; i < m_count; i++) { - new(ptr + i) Vertex(vec[i]); + new(ptr + i) C(vec[i]); } } } @@ -32,7 +32,7 @@ namespace refl { ~parray() { if (!m_count || !m_cls) return; - auto dest = m_cls->vtable.Destruct; + auto dest = m_cls->vtable.Destruct(); if (dest) { for (int i = 0; i < m_count; i++) { dest((char*)m_ptr + (i * m_cls->size)); diff --git a/engine/modules/render/vulkan/include/vkn/vulkan_api.h b/engine/modules/render/vulkan/include/vkn/vulkan_api.h index 2e1dcf1..fb6fcd5 100644 --- a/engine/modules/render/vulkan/include/vkn/vulkan_api.h +++ b/engine/modules/render/vulkan/include/vkn/vulkan_api.h @@ -5,6 +5,8 @@ namespace vkn { class Backend; class VulkanWindow; + using api::Mesh; + using api::Shader; class VULKAN_API VulkanAPI : public api::RenderAPI { private: VulkanWindow& window; @@ -14,5 +16,10 @@ namespace vkn { void Init() override; void Shutdown() override; + + void SetStaticMesh(Mesh& mesh)override; + void DrawStaticMesh(Mesh& mesh)override; + + void LoadShader(Shader& shader)override; }; } \ No newline at end of file diff --git a/engine/modules/render/vulkan/src/backend.cpp b/engine/modules/render/vulkan/src/backend.cpp index 106a7f6..46d70e7 100644 --- a/engine/modules/render/vulkan/src/backend.cpp +++ b/engine/modules/render/vulkan/src/backend.cpp @@ -5,6 +5,9 @@ #include "vkn/wrapper/instance_create.h" #include "vkn/wrapper/queue.h" namespace vkn { + CommandWorker* Backend::TransferWorker; + CommandWorker* Backend::RenderWorker; + CommandWorker* Backend::PresentWorker; Backend::Backend(string_view appName) : mWorkerMap(GlobalPool()) { InstanceCreator instanceCreator{}; diff --git a/engine/modules/render/vulkan/src/vulkan_api.cpp b/engine/modules/render/vulkan/src/vulkan_api.cpp index e6e95fb..fcc067f 100644 --- a/engine/modules/render/vulkan/src/vulkan_api.cpp +++ b/engine/modules/render/vulkan/src/vulkan_api.cpp @@ -1,5 +1,6 @@ #include "vkn/vulkan_api.h" #include "vkn/vulkan_window.h" +#include "render/asset/mesh.h" namespace vkn { VulkanAPI::VulkanAPI() : window(*VulkanWindow::Ptr()), backend(VulkanEngineName) { @@ -13,4 +14,16 @@ namespace vkn { { } + void VulkanAPI::SetStaticMesh(Mesh& mesh) + { + auto Indices = mesh.GetIndices(); + auto Vertices = mesh.GetVertices(); + + } + void VulkanAPI::DrawStaticMesh(Mesh& mesh) + { + } + void VulkanAPI::LoadShader(Shader& shader) + { + } }