diff --git a/App/CMakeLists.txt b/App/CMakeLists.txt index 40524ec..b608eb6 100644 --- a/App/CMakeLists.txt +++ b/App/CMakeLists.txt @@ -1,7 +1,9 @@ # App 层源文件:main + editor/(docking 编辑器)+ scripts/(C++ 原生脚本) file(GLOB EDITOR_SOURCES CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/editor/*.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/editor/*.h) + ${CMAKE_CURRENT_SOURCE_DIR}/editor/*.h + ${CMAKE_CURRENT_SOURCE_DIR}/editor/panels/*.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/editor/panels/*.h) file(GLOB SCRIPT_SOURCES CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/scripts/*.cpp) diff --git a/App/editor/Editor.cpp b/App/editor/Editor.cpp index a9a060a..5004251 100644 --- a/App/editor/Editor.cpp +++ b/App/editor/Editor.cpp @@ -12,13 +12,13 @@ // #include "Editor.h" -#include "AssetBrowserPanel.h" -#include "HierarchyPanel.h" -#include "InspectorPanel.h" -#include "MaterialEditorPanel.h" -#include "ControllerEditorPanel.h" -#include "ViewportPanel.h" -#include "StatsPanel.h" +#include "panels/AssetBrowserPanel.h" +#include "panels/HierarchyPanel.h" +#include "panels/InspectorPanel.h" +#include "panels/MaterialEditorPanel.h" +#include "panels/ControllerEditorPanel.h" +#include "panels/ViewportPanel.h" +#include "panels/StatsPanel.h" #include #include diff --git a/App/editor/Editor.h b/App/editor/Editor.h index 93ec0bf..76e1682 100644 --- a/App/editor/Editor.h +++ b/App/editor/Editor.h @@ -15,7 +15,7 @@ #define HELLOVULKAN_EDITOR_H #include "EditorContext.h" -#include "ViewportPanel.h" // ViewportInputState(成员按值持有) +#include "panels/ViewportPanel.h" // ViewportInputState(成员按值持有) #include // u32(SelectEntity 位模式转换) diff --git a/App/editor/AssetBrowserPanel.cpp b/App/editor/panels/AssetBrowserPanel.cpp similarity index 100% rename from App/editor/AssetBrowserPanel.cpp rename to App/editor/panels/AssetBrowserPanel.cpp diff --git a/App/editor/AssetBrowserPanel.h b/App/editor/panels/AssetBrowserPanel.h similarity index 100% rename from App/editor/AssetBrowserPanel.h rename to App/editor/panels/AssetBrowserPanel.h diff --git a/App/editor/ControllerEditorPanel.cpp b/App/editor/panels/ControllerEditorPanel.cpp similarity index 100% rename from App/editor/ControllerEditorPanel.cpp rename to App/editor/panels/ControllerEditorPanel.cpp diff --git a/App/editor/ControllerEditorPanel.h b/App/editor/panels/ControllerEditorPanel.h similarity index 100% rename from App/editor/ControllerEditorPanel.h rename to App/editor/panels/ControllerEditorPanel.h diff --git a/App/editor/HierarchyPanel.cpp b/App/editor/panels/HierarchyPanel.cpp similarity index 100% rename from App/editor/HierarchyPanel.cpp rename to App/editor/panels/HierarchyPanel.cpp diff --git a/App/editor/HierarchyPanel.h b/App/editor/panels/HierarchyPanel.h similarity index 100% rename from App/editor/HierarchyPanel.h rename to App/editor/panels/HierarchyPanel.h diff --git a/App/editor/InspectorPanel.cpp b/App/editor/panels/InspectorPanel.cpp similarity index 100% rename from App/editor/InspectorPanel.cpp rename to App/editor/panels/InspectorPanel.cpp diff --git a/App/editor/InspectorPanel.h b/App/editor/panels/InspectorPanel.h similarity index 100% rename from App/editor/InspectorPanel.h rename to App/editor/panels/InspectorPanel.h diff --git a/App/editor/MaterialEditorPanel.cpp b/App/editor/panels/MaterialEditorPanel.cpp similarity index 100% rename from App/editor/MaterialEditorPanel.cpp rename to App/editor/panels/MaterialEditorPanel.cpp diff --git a/App/editor/MaterialEditorPanel.h b/App/editor/panels/MaterialEditorPanel.h similarity index 100% rename from App/editor/MaterialEditorPanel.h rename to App/editor/panels/MaterialEditorPanel.h diff --git a/App/editor/StatsPanel.cpp b/App/editor/panels/StatsPanel.cpp similarity index 100% rename from App/editor/StatsPanel.cpp rename to App/editor/panels/StatsPanel.cpp diff --git a/App/editor/StatsPanel.h b/App/editor/panels/StatsPanel.h similarity index 100% rename from App/editor/StatsPanel.h rename to App/editor/panels/StatsPanel.h diff --git a/App/editor/ViewportPanel.cpp b/App/editor/panels/ViewportPanel.cpp similarity index 100% rename from App/editor/ViewportPanel.cpp rename to App/editor/panels/ViewportPanel.cpp diff --git a/App/editor/ViewportPanel.h b/App/editor/panels/ViewportPanel.h similarity index 100% rename from App/editor/ViewportPanel.h rename to App/editor/panels/ViewportPanel.h diff --git a/Engine/src/Renderer/IblGenerator.cpp b/Engine/src/Renderer/IblGenerator.cpp index af8e434..75dcded 100644 --- a/Engine/src/Renderer/IblGenerator.cpp +++ b/Engine/src/Renderer/IblGenerator.cpp @@ -74,7 +74,7 @@ namespace Engine m_LutLayout = descriptors.CreatePipelineLayout( {m_LutSetLayout}, 0, vk::ShaderStageFlagBits::eCompute); - const std::string dir = "shaders/"; + const std::string dir = "shaders/env/"; m_ToCubeShader = shaders.CreateFromFile( dir + "ibl_equirect_to_cube.comp.spv", vk::ShaderStageFlagBits::eCompute, diff --git a/Engine/src/Renderer/Passes/EditorGizmoPass.cpp b/Engine/src/Renderer/Passes/EditorGizmoPass.cpp index 941713f..0747734 100644 --- a/Engine/src/Renderer/Passes/EditorGizmoPass.cpp +++ b/Engine/src/Renderer/Passes/EditorGizmoPass.cpp @@ -118,7 +118,7 @@ namespace Engine::Passes m_Layout = descriptors.CreatePipelineLayout( std::vector{}, sizeof(glm::mat4)); - const std::string shaderDir = "shaders/"; + const std::string shaderDir = "shaders/debug/"; auto wireVert = shaders.CreateFromFile( shaderDir + "debug_line.vert.spv", vk::ShaderStageFlagBits::eVertex, diff --git a/Engine/src/Renderer/Passes/FullscreenGpu.cpp b/Engine/src/Renderer/Passes/FullscreenGpu.cpp index 302f65f..d6964a0 100644 --- a/Engine/src/Renderer/Passes/FullscreenGpu.cpp +++ b/Engine/src/Renderer/Passes/FullscreenGpu.cpp @@ -42,7 +42,7 @@ namespace Engine::Passes .setAddressModeV(vk::SamplerAddressMode::eClampToEdge) .setAddressModeW(vk::SamplerAddressMode::eClampToEdge)); - const std::string shaderDir = "shaders/"; + const std::string shaderDir = "shaders/post/"; // tonemap/bloom/TAA 全属后处理 auto vertShader = shaders.CreateFromFile( shaderDir + "tonemap.vert.spv", vk::ShaderStageFlagBits::eVertex, diff --git a/Engine/src/Renderer/Passes/HitProxyPass.cpp b/Engine/src/Renderer/Passes/HitProxyPass.cpp index ca9d354..8c9af96 100644 --- a/Engine/src/Renderer/Passes/HitProxyPass.cpp +++ b/Engine/src/Renderer/Passes/HitProxyPass.cpp @@ -91,7 +91,7 @@ namespace Engine::Passes m_Layout = descriptors.CreatePipelineLayout( std::vector{gpu.uboSetLayout}, 0); - const std::string shaderDir = "shaders/"; + const std::string shaderDir = "shaders/debug/"; auto vert = shaders.CreateFromFile( shaderDir + "hitproxy.vert.spv", vk::ShaderStageFlagBits::eVertex, diff --git a/Engine/src/Renderer/Passes/OutlinePass.cpp b/Engine/src/Renderer/Passes/OutlinePass.cpp index 8398d75..4a1036a 100644 --- a/Engine/src/Renderer/Passes/OutlinePass.cpp +++ b/Engine/src/Renderer/Passes/OutlinePass.cpp @@ -24,7 +24,7 @@ namespace Engine::Passes : m_Gpu(gpu), m_Frame(frame), m_Mask(mask), m_Present(present), m_Color(color), m_WidthPx(widthPx) { m_Frag = shaders.CreateFromFile( - "shaders/outline.frag.spv", + "shaders/debug/outline.frag.spv", vk::ShaderStageFlagBits::eFragment, std::vector{gpu.setLayout}, sizeof(FullscreenPush)); diff --git a/Engine/src/Renderer/Passes/PhysicsDebugPass.cpp b/Engine/src/Renderer/Passes/PhysicsDebugPass.cpp index 1b93b0c..09fa6b2 100644 --- a/Engine/src/Renderer/Passes/PhysicsDebugPass.cpp +++ b/Engine/src/Renderer/Passes/PhysicsDebugPass.cpp @@ -72,7 +72,7 @@ namespace Engine::Passes m_Layout = descriptors.CreatePipelineLayout( std::vector{}, sizeof(glm::mat4)); - const std::string shaderDir = "shaders/"; + const std::string shaderDir = "shaders/debug/"; auto vert = shaders.CreateFromFile( shaderDir + "debug_line.vert.spv", vk::ShaderStageFlagBits::eVertex, diff --git a/Engine/src/Renderer/Passes/SceneGpu.cpp b/Engine/src/Renderer/Passes/SceneGpu.cpp index a308241..1c8ce63 100644 --- a/Engine/src/Renderer/Passes/SceneGpu.cpp +++ b/Engine/src/Renderer/Passes/SceneGpu.cpp @@ -86,7 +86,8 @@ namespace Engine::Passes std::vector{uboSetLayout}, sizeof(glm::mat4)); - const std::string shaderDir = "shaders/"; + const std::string shaderDir = "shaders/pbr/"; + const std::string envShaderDir = "shaders/env/"; // forward vert/frag 均无 push(range 定义一致:都没有,VUID-08878) auto vert = shaders.CreateFromFile( shaderDir + "simple_shader.vert.spv", @@ -104,12 +105,12 @@ namespace Engine::Passes // shadow shader:depth-only,push = lightVP auto shadowVertShader = shaders.CreateFromFile( - shaderDir + "shadow.vert.spv", + envShaderDir + "shadow.vert.spv", vk::ShaderStageFlagBits::eVertex, std::vector{uboSetLayout}, sizeof(glm::mat4)); auto shadowFragShader = shaders.CreateFromFile( - shaderDir + "shadow.frag.spv", + envShaderDir + "shadow.frag.spv", vk::ShaderStageFlagBits::eFragment, std::vector{uboSetLayout}, sizeof(glm::mat4)); diff --git a/Engine/src/Renderer/Passes/SelectionMaskPass.cpp b/Engine/src/Renderer/Passes/SelectionMaskPass.cpp index 1110e20..c2b2f47 100644 --- a/Engine/src/Renderer/Passes/SelectionMaskPass.cpp +++ b/Engine/src/Renderer/Passes/SelectionMaskPass.cpp @@ -21,7 +21,7 @@ namespace Engine::Passes // 要求同程序各 shader 的 set layouts 逐项相同,VUID-08879), // 本 shader 只用 Set0,多声明是合法超集 m_Frag = shaders.CreateFromFile( - "shaders/sel_mask.frag.spv", + "shaders/debug/sel_mask.frag.spv", vk::ShaderStageFlagBits::eFragment, std::vector{ gpu.uboSetLayout, gpu.textureSetLayout, gpu.shadowSetLayout}, diff --git a/Engine/src/Renderer/Passes/SkyboxPass.cpp b/Engine/src/Renderer/Passes/SkyboxPass.cpp index 1883dba..6d3e8b6 100644 --- a/Engine/src/Renderer/Passes/SkyboxPass.cpp +++ b/Engine/src/Renderer/Passes/SkyboxPass.cpp @@ -36,7 +36,7 @@ namespace Engine::Passes std::vector{m_SetLayout}, sizeof(glm::mat4)); - const std::string shaderDir = "shaders/"; + const std::string shaderDir = "shaders/env/"; auto vert = shaders.CreateFromFile( shaderDir + "skybox.vert.spv", vk::ShaderStageFlagBits::eVertex, diff --git a/Engine/src/Renderer/VulkanAssetUploader.h b/Engine/src/Renderer/VulkanAssetUploader.h deleted file mode 100644 index 9cfddef..0000000 --- a/Engine/src/Renderer/VulkanAssetUploader.h +++ /dev/null @@ -1,63 +0,0 @@ -// -// Created by atdunbg on 2026/9/23. -// -// VulkanAssetUploader:IAssetUploader 的渲染层实现。 -// -// 属于渲染层对资产层提供的服务:持有 GPU 上下文,负责把解析后的 -// 资产数据创建为 Vulkan 资源。资产层(AssetManager)只看到接口, -// 不知道 Device/Allocator 的存在——依赖方向:Assets → IAssetUploader -// ← VulkanAssetUploader(渲染层),永远不出现 Assets → Vulkan 具体。 -// - -#ifndef HELLOVULKAN_VULKANASSETUPLOADER_H -#define HELLOVULKAN_VULKANASSETUPLOADER_H - -#include - -namespace Engine { - - class Device; - class MemoryAllocator; - class DescriptorManager; - class IblGenerator; - - class VulkanAssetUploader final : public Assets::IAssetUploader { - public: - VulkanAssetUploader(Device& device, MemoryAllocator& allocator, - DescriptorManager& descriptors, - vk::DescriptorSetLayout textureLayout, - IblGenerator& ibl) - : m_Device(device), m_Allocator(allocator), - m_Descriptors(descriptors), m_TextureLayout(textureLayout), - m_Ibl(ibl) {} - - Scope LoadModel(const std::string& path) override; - Scope LoadModel(const std::string& path, - ParsedModel&& parsed) override; - Scope CreatePlane(f32 halfSize, u8 r, u8 g, u8 b) override; - Scope CreateTransparentPlane(f32 halfSize, - u8 r, u8 g, u8 b, u8 a) override; - Scope LoadEnvironment(const std::string& path) override; - Scope LoadEnvironment(const std::string& path, - DecodedEquirect&& decoded) override; - Scope CreateMaterial( - MaterialAssetData&& data) override; - void WaitDeviceIdle() override; - - private: - // 惰性创建的共享默认纹理集(空槽/加载失败兜底;全体材质资产 - // 共用一份,非拥有引用进各 MaterialAsset) - void InitSharedDefaultTextures(); - - Device& m_Device; - MemoryAllocator& m_Allocator; - DescriptorManager& m_Descriptors; - vk::DescriptorSetLayout m_TextureLayout; - IblGenerator& m_Ibl; // 环境 IBL 预积分的 compute 生成端 - - std::array, Material::kSlotCount> m_DefaultTextures; - }; - -} // namespace Engine - -#endif //HELLOVULKAN_VULKANASSETUPLOADER_H diff --git a/shaders/debug_line.frag b/shaders/debug/debug_line.frag similarity index 100% rename from shaders/debug_line.frag rename to shaders/debug/debug_line.frag diff --git a/shaders/debug_line.vert b/shaders/debug/debug_line.vert similarity index 100% rename from shaders/debug_line.vert rename to shaders/debug/debug_line.vert diff --git a/shaders/gizmo_billboard.frag b/shaders/debug/gizmo_billboard.frag similarity index 100% rename from shaders/gizmo_billboard.frag rename to shaders/debug/gizmo_billboard.frag diff --git a/shaders/gizmo_billboard.vert b/shaders/debug/gizmo_billboard.vert similarity index 100% rename from shaders/gizmo_billboard.vert rename to shaders/debug/gizmo_billboard.vert diff --git a/shaders/gizmo_pick.frag b/shaders/debug/gizmo_pick.frag similarity index 100% rename from shaders/gizmo_pick.frag rename to shaders/debug/gizmo_pick.frag diff --git a/shaders/gizmo_pick.vert b/shaders/debug/gizmo_pick.vert similarity index 100% rename from shaders/gizmo_pick.vert rename to shaders/debug/gizmo_pick.vert diff --git a/shaders/hitproxy.frag b/shaders/debug/hitproxy.frag similarity index 100% rename from shaders/hitproxy.frag rename to shaders/debug/hitproxy.frag diff --git a/shaders/hitproxy.vert b/shaders/debug/hitproxy.vert similarity index 100% rename from shaders/hitproxy.vert rename to shaders/debug/hitproxy.vert diff --git a/shaders/outline.frag b/shaders/debug/outline.frag similarity index 100% rename from shaders/outline.frag rename to shaders/debug/outline.frag diff --git a/shaders/sel_mask.frag b/shaders/debug/sel_mask.frag similarity index 100% rename from shaders/sel_mask.frag rename to shaders/debug/sel_mask.frag diff --git a/shaders/ibl_brdf_lut.comp b/shaders/env/ibl_brdf_lut.comp similarity index 100% rename from shaders/ibl_brdf_lut.comp rename to shaders/env/ibl_brdf_lut.comp diff --git a/shaders/ibl_common.glsl b/shaders/env/ibl_common.glsl similarity index 100% rename from shaders/ibl_common.glsl rename to shaders/env/ibl_common.glsl diff --git a/shaders/ibl_equirect_to_cube.comp b/shaders/env/ibl_equirect_to_cube.comp similarity index 100% rename from shaders/ibl_equirect_to_cube.comp rename to shaders/env/ibl_equirect_to_cube.comp diff --git a/shaders/ibl_irradiance.comp b/shaders/env/ibl_irradiance.comp similarity index 100% rename from shaders/ibl_irradiance.comp rename to shaders/env/ibl_irradiance.comp diff --git a/shaders/ibl_prefilter.comp b/shaders/env/ibl_prefilter.comp similarity index 100% rename from shaders/ibl_prefilter.comp rename to shaders/env/ibl_prefilter.comp diff --git a/shaders/shadow.frag b/shaders/env/shadow.frag similarity index 100% rename from shaders/shadow.frag rename to shaders/env/shadow.frag diff --git a/shaders/shadow.vert b/shaders/env/shadow.vert similarity index 100% rename from shaders/shadow.vert rename to shaders/env/shadow.vert diff --git a/shaders/skybox.frag b/shaders/env/skybox.frag similarity index 100% rename from shaders/skybox.frag rename to shaders/env/skybox.frag diff --git a/shaders/skybox.vert b/shaders/env/skybox.vert similarity index 100% rename from shaders/skybox.vert rename to shaders/env/skybox.vert diff --git a/shaders/simple_shader.frag b/shaders/pbr/simple_shader.frag similarity index 100% rename from shaders/simple_shader.frag rename to shaders/pbr/simple_shader.frag diff --git a/shaders/simple_shader.vert b/shaders/pbr/simple_shader.vert similarity index 100% rename from shaders/simple_shader.vert rename to shaders/pbr/simple_shader.vert diff --git a/shaders/simple_shader_translucent.frag b/shaders/pbr/simple_shader_translucent.frag similarity index 100% rename from shaders/simple_shader_translucent.frag rename to shaders/pbr/simple_shader_translucent.frag diff --git a/shaders/bloom_blur.frag b/shaders/post/bloom_blur.frag similarity index 100% rename from shaders/bloom_blur.frag rename to shaders/post/bloom_blur.frag diff --git a/shaders/bloom_extract.frag b/shaders/post/bloom_extract.frag similarity index 100% rename from shaders/bloom_extract.frag rename to shaders/post/bloom_extract.frag diff --git a/shaders/taa.frag b/shaders/post/taa.frag similarity index 100% rename from shaders/taa.frag rename to shaders/post/taa.frag diff --git a/shaders/temporal_diff.frag b/shaders/post/temporal_diff.frag similarity index 100% rename from shaders/temporal_diff.frag rename to shaders/post/temporal_diff.frag diff --git a/shaders/tonemap.frag b/shaders/post/tonemap.frag similarity index 100% rename from shaders/tonemap.frag rename to shaders/post/tonemap.frag diff --git a/shaders/tonemap.vert b/shaders/post/tonemap.vert similarity index 100% rename from shaders/tonemap.vert rename to shaders/post/tonemap.vert