diff --git a/MVS/VolumeRenderer/README.md b/MVS/VolumeRenderer/README.md index 2153790a..23f5524c 100644 --- a/MVS/VolumeRenderer/README.md +++ b/MVS/VolumeRenderer/README.md @@ -1,10 +1,10 @@ # XCVolumeRenderer -基于 DirectX 12 的体积渲染器,使用 NanoVDB 格式实现云、烟雾等体积数据的实时渲染。 +XCEngine 游戏引擎的体积渲染模块,使用 NanoVDB 格式实现云、烟雾等体积数据的实时渲染。 ## 技术栈 -- **渲染API**: DirectX 12 +- **模块定位**: XCEngine 游戏引擎的体积渲染功能 - **语言**: C++17 - **构建系统**: CMake - **依赖库**: DirectX 12 SDK, stb_image, NanoVDB diff --git a/MVS/ui/README.md b/MVS/ui/README.md index 0beca2dc..55e935f7 100644 --- a/MVS/ui/README.md +++ b/MVS/ui/README.md @@ -1,10 +1,10 @@ # UI Editor -Unity 风格的编辑器 UI,使用 ImGui 实现。 +Unity 风格的编辑器 UI,使用 ImGui 实现,作为 XCEngine 游戏引擎编辑器的一部分。 ## 简介 -XCVolumeRenderer UI 是一个仿 Unity 编辑器的桌面应用程序,提供场景管理、层级视图、属性检查器等功能。 +XCGameEngine UI 是一个仿 Unity 编辑器的桌面应用程序,提供场景管理、层级视图、属性检查器等功能。 ## 技术栈 @@ -70,7 +70,7 @@ cmake --build . --config Release ```bash # 运行编译好的可执行文件 -.\bin\Release\XCVolumeRendererUI2.exe +.\bin\Release\XCGameEngineUI.exe ``` ## 功能特性 diff --git a/README.md b/README.md index 7f8a2c97..4e3226d6 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ # XCEngine -基于 DirectX 12 的渲染引擎项目,包含体积渲染器、基础渲染示例和核心模块单元测试。 +基于 DirectX 12 的游戏引擎项目,支持体积渲染、跨平台渲染后端和核心模块单元测试。 ## 项目概述 -XCEngine 是一个正在开发中的图形渲染引擎,采用 RHI(Render Hardware Interface)抽象层设计,支持 DirectX 12 和 OpenGL 多种渲染 API。项目采用模块化设计,包含核心库和单元测试。 +XCEngine 是一个正在开发中的游戏引擎,采用 RHI(Render Hardware Interface)抽象层设计,支持 DirectX 12 和 OpenGL 多种渲染 API。项目采用模块化设计,包含核心库和单元测试。 ## 技术栈 @@ -20,89 +20,152 @@ XCEngine/ ├── engine/ # 核心引擎库 │ ├── include/XCEngine/ │ │ ├── Containers/ # 容器模块 -│ │ │ ├── String.h # 字符串类 │ │ │ ├── Array.h # 动态数组 -│ │ │ └── HashMap.h # 哈希表 +│ │ │ ├── String.h # 字符串类 +│ │ │ ├── HashMap.h # 哈希表 +│ │ │ └── Containers.h # 模块统一头文件 +│ │ ├── Core/ # 核心基础模块 +│ │ │ ├── Types.h # 基础类型别名 +│ │ │ ├── RefCounted.h # 引用计数基类 +│ │ │ ├── SmartPtr.h # 智能指针 +│ │ │ ├── Event.h # 事件系统 +│ │ │ └── FileWriter.h # 文件写入 +│ │ ├── Debug/ # 调试与日志模块 +│ │ │ ├── Logger.h # 日志系统 +│ │ │ ├── LogLevel.h # 日志级别 +│ │ │ ├── LogCategory.h # 日志分类 +│ │ │ ├── LogEntry.h # 日志条目 +│ │ │ ├── ConsoleLogSink.h # 控制台输出 +│ │ │ ├── FileLogSink.h # 文件输出 +│ │ │ ├── ILogSink.h # 日志槽接口 +│ │ │ ├── Debug.h # 调试宏 +│ │ │ └── Profiler.h # 性能分析 +│ │ ├── Math/ # 数学库 +│ │ │ ├── Vector2.h # 二维向量 +│ │ │ ├── Vector3.h # 三维向量 +│ │ │ ├── Vector4.h # 四维向量 +│ │ │ ├── Matrix3.h # 3x3 矩阵 +│ │ │ ├── Matrix4.h # 4x4 矩阵 +│ │ │ ├── Quaternion.h # 四元数 +│ │ │ ├── Transform.h # 变换 +│ │ │ ├── Color.h # 颜色 +│ │ │ ├── Rect.h # 矩形 +│ │ │ ├── Sphere.h # 球体 +│ │ │ ├── Box.h # 盒子 +│ │ │ ├── Plane.h # 平面 +│ │ │ ├── Ray.h # 射线 +│ │ │ ├── AABB.h # 轴对齐包围盒 +│ │ │ ├── Bounds.h # 包围体 +│ │ │ ├── Frustum.h # 视锥体 +│ │ │ └── Math.h # 数学库统一头文件 │ │ ├── Memory/ # 内存管理模块 │ │ │ ├── Allocator.h # 分配器接口 │ │ │ ├── LinearAllocator.h # 线性分配器 │ │ │ ├── PoolAllocator.h # 内存池分配器 -│ │ │ ├── ProxyAllocator.h # 代理分配器 -│ │ │ └── MemoryManager.h # 内存管理器 +│ │ │ ├── ProxyAllocator.h # 代理分配器 +│ │ │ └── MemoryManager.h # 全局内存管理器 │ │ ├── Threading/ # 线程模块 │ │ │ ├── Thread.h # 线程类 -│ │ │ ├── Mutex.h # 互斥锁 -│ │ │ ├── SpinLock.h # 自旋锁 -│ │ │ ├── ReadWriteLock.h # 读写锁 +│ │ │ ├── Mutex.h # 互斥锁 +│ │ │ ├── SpinLock.h # 自旋锁 +│ │ │ ├── ReadWriteLock.h # 读写锁 │ │ │ ├── Task.h # 任务基类 -│ │ │ ├── LambdaTask.h # Lambda任务 -│ │ │ ├── TaskGroup.h # 任务组 -│ │ │ ├── TaskSystem.h # 任务系统 -│ │ │ └── TaskSystemConfig.h # 任务系统配置 -│ │ ├── Math/ # 数学库 -│ │ │ ├── Vector.h -│ │ │ ├── Matrix.h -│ │ │ ├── Quaternion.h -│ │ │ └── ... -│ │ ├── RHI/ # 渲染硬件接口抽象层 -│ │ │ ├── RHIDevice.h -│ │ │ ├── RHICommandQueue.h -│ │ │ ├── RHICommandList.h -│ │ │ ├── RHISwapChain.h -│ │ │ ├── RHIPipelineState.h -│ │ │ ├── RHIBuffer.h -│ │ │ ├── RHITexture.h -│ │ │ ├── RHIShader.h -│ │ │ ├── RHISampler.h -│ │ │ ├── RHIFence.h -│ │ │ ├── RHITypes.h -│ │ │ ├── RHICapabilities.h -│ │ │ ├── RHIEnums.h -│ │ │ ├── OpenGL/ # OpenGL 后端实现 -│ │ │ │ ├── OpenGLDevice.h -│ │ │ │ ├── OpenGLCommandQueue.h -│ │ │ │ ├── OpenGLCommandList.h -│ │ │ │ ├── OpenGLSwapChain.h -│ │ │ │ ├── OpenGLPipelineState.h -│ │ │ │ ├── OpenGLBuffer.h -│ │ │ │ ├── OpenGLTexture.h -│ │ │ │ ├── OpenGLShader.h -│ │ │ │ ├── OpenGLSampler.h -│ │ │ │ ├── OpenGLFence.h -│ │ │ │ ├── OpenGLVertexArray.h -│ │ │ │ ├── OpenGLRenderTargetView.h -│ │ │ │ └── OpenGLDepthStencilView.h -│ │ │ └── D3D12/ # DirectX 12 后端实现 -│ │ │ ├── D3D12Device.h -│ │ │ ├── D3D12CommandQueue.h -│ │ │ ├── D3D12CommandList.h -│ │ │ ├── D3D12CommandAllocator.h -│ │ │ ├── D3D12SwapChain.h -│ │ │ ├── D3D12PipelineState.h -│ │ │ ├── D3D12Buffer.h -│ │ │ ├── D3D12Texture.h -│ │ │ ├── D3D12Shader.h -│ │ │ ├── D3D12Sampler.h -│ │ │ ├── D3D12Fence.h -│ │ │ ├── D3D12DescriptorHeap.h -│ │ │ ├── D3D12RootSignature.h -│ │ │ ├── D3D12RenderTargetView.h -│ │ │ ├── D3D12DepthStencilView.h -│ │ │ ├── D3D12ShaderResourceView.h -│ │ │ ├── D3D12UnorderedAccessView.h -│ │ │ ├── D3D12ConstantBufferView.h -│ │ │ ├── D3D12QueryHeap.h -│ │ │ ├── D3D12Screenshot.h -│ │ │ ├── D3D12Types.h -│ │ │ ├── D3D12Enum.h -│ │ │ └── D3D12Common.h -│ │ └── Core/ # 核心模块 -│ │ +│ │ │ ├── LambdaTask.h # Lambda 任务 +│ │ │ ├── TaskGroup.h # 任务组 +│ │ │ ├── TaskSystem.h # 任务系统 +│ │ │ ├── TaskSystemConfig.h # 任务系统配置 +│ │ │ └── Threading.h # 线程模块统一头文件 +│ │ ├── Resources/ # 资源管理模块 +│ │ │ ├── ResourceTypes.h # 资源类型定义 +│ │ │ ├── IResource.h # 资源接口 +│ │ │ ├── ResourceHandle.h # 资源句柄 +│ │ │ ├── ResourceManager.h # 资源管理器 +│ │ │ ├── ResourceCache.h # 资源缓存 +│ │ │ ├── ResourcePackage.h # 资源包 +│ │ │ ├── ResourceFileSystem.h # 资源文件系统 +│ │ │ ├── ResourcePath.h # 资源路径 +│ │ │ ├── FileArchive.h # 文件归档 +│ │ │ ├── DependencyGraph.h # 依赖图 +│ │ │ ├── ImportSettings.h # 导入设置基类 +│ │ │ ├── IResourceLoader.h # 资源加载器接口 +│ │ │ ├── AsyncLoader.h # 异步加载器 +│ │ │ ├── Texture.h # 纹理资源 +│ │ │ ├── TextureLoader.h # 纹理加载器 +│ │ │ ├── TextureImportSettings.h # 纹理导入设置 +│ │ │ ├── Mesh.h # 网格资源 +│ │ │ ├── MeshLoader.h # 网格加载器 +│ │ │ ├── MeshImportSettings.h # 网格导入设置 +│ │ │ ├── Shader.h # 着色器资源 +│ │ │ ├── ShaderLoader.h # 着色器加载器 +│ │ │ ├── Material.h # 材质资源 +│ │ │ ├── MaterialLoader.h # 材质加载器 +│ │ │ ├── AudioClip.h # 音频资源 +│ │ │ ├── AudioLoader.h # 音频加载器 +│ │ │ └── Resources.h # 资源模块统一头文件 +│ │ └── RHI/ # 渲染硬件接口抽象层 +│ │ ├── RHITypes.h # RHI 类型定义 +│ │ ├── RHIEnums.h # RHI 枚举 +│ │ ├── RHICapabilities.h # 硬件能力查询 +│ │ ├── RHIFactory.h # 设备工厂 +│ │ ├── RHIDevice.h # 渲染设备抽象 +│ │ ├── RHICommandQueue.h # 命令队列抽象 +│ │ ├── RHICommandList.h # 命令列表抽象 +│ │ ├── RHIBuffer.h # 缓冲区抽象 +│ │ ├── RHITexture.h # 纹理抽象 +│ │ ├── RHIShader.h # 着色器抽象 +│ │ ├── RHISampler.h # 采样器抽象 +│ │ ├── RHIFence.h # 同步栅栏抽象 +│ │ ├── RHISwapChain.h # 交换链抽象 +│ │ ├── RHIPipelineState.h # 管线状态抽象 +│ │ ├── RHIPipelineLayout.h # 管线布局抽象 +│ │ ├── RHIDescriptorPool.h # 描述符池抽象 +│ │ ├── RHIDescriptor.h # 描述符抽象 +│ │ ├── OpenGL/ # OpenGL 后端实现 +│ │ │ ├── OpenGLDevice.h +│ │ │ ├── OpenGLCommandQueue.h +│ │ │ ├── OpenGLCommandList.h +│ │ │ ├── OpenGLSwapChain.h +│ │ │ ├── OpenGLPipelineState.h +│ │ │ ├── OpenGLBuffer.h +│ │ │ ├── OpenGLTexture.h +│ │ │ ├── OpenGLShader.h +│ │ │ ├── OpenGLSampler.h +│ │ │ ├── OpenGLFence.h +│ │ │ ├── OpenGLVertexArray.h +│ │ │ ├── OpenGLRenderTargetView.h +│ │ │ └── OpenGLDepthStencilView.h +│ │ └── D3D12/ # DirectX 12 后端实现 +│ │ ├── D3D12Device.h +│ │ ├── D3D12CommandQueue.h +│ │ ├── D3D12CommandAllocator.h +│ │ ├── D3D12CommandList.h +│ │ ├── D3D12SwapChain.h +│ │ ├── D3D12PipelineState.h +│ │ ├── D3D12Buffer.h +│ │ ├── D3D12Texture.h +│ │ ├── D3D12Shader.h +│ │ ├── D3D12Sampler.h +│ │ ├── D3D12Fence.h +│ │ ├── D3D12DescriptorHeap.h +│ │ ├── D3D12RootSignature.h +│ │ ├── D3D12RenderTargetView.h +│ │ ├── D3D12DepthStencilView.h +│ │ ├── D3D12ShaderResourceView.h +│ │ ├── D3D12UnorderedAccessView.h +│ │ ├── D3D12ConstantBufferView.h +│ │ ├── D3D12QueryHeap.h +│ │ ├── D3D12Screenshot.h +│ │ ├── D3D12Types.h +│ │ ├── D3D12Enum.h +│ │ └── D3D12Common.h │ └── src/ # 实现文件 │ ├── Containers/ +│ ├── Core/ +│ ├── Debug/ +│ ├── Math/ │ ├── Memory/ │ ├── Threading/ -│ ├── Math/ +│ ├── Resources/ │ └── RHI/ │ ├── tests/ # 单元测试 @@ -113,15 +176,16 @@ XCEngine/ │ ├── math/ # 数学库测试 │ └── RHI/ # RHI 抽象层测试 │ ├── OpenGL/ # OpenGL 后端测试 -│ └── D3D12/ # D3D12 后端测试 +│ └── D3D12/ # D3D12 后端测试 │ -├── MVS/ # 多个示例版本(开发中) +├── mvs/ # 示例程序 │ ├── HelloEarth/ # 基础渲染示例 -│ └── VolumeRenderer/ # 体积渲染器 +│ ├── VolumeRenderer/ # 体积渲染器(NanoVDB) +│ └── ui/ # 编辑器 UI │ ├── docs/ # 设计文档 -│ ├── XCEngine渲染引擎架构设计.md -│ └── ... +│ ├── api/ # API 文档 +│ └── plan/ # 开发计划与架构设计 │ └── build/ # 构建目录 ``` @@ -170,6 +234,21 @@ build/tests/threading/Debug/xcengine_threading_tests.exe - **Array**: 模板动态数组,自动内存管理 - **HashMap**: 模板哈希表,支持自定义键类型 +### Core(核心基础) + +- **Types**: 基础类型别名(int8、uint32 等) +- **RefCounted**: 引用计数基类,支持多线程安全释放 +- **SmartPtr**: 智能指针实现(Ref、UniqueRef) +- **Event**: 事件系统,支持订阅/发布模式 +- **FileWriter**: 文件写入工具 + +### Debug(调试与日志) + +- **Logger**: 分级日志系统(Info、Warning、Error) +- **ConsoleLogSink**: 控制台日志输出 +- **FileLogSink**: 文件日志输出 +- **Profiler**: 性能分析工具 + ### Memory(内存管理) - **IAllocator**: 内存分配器接口 @@ -189,13 +268,27 @@ build/tests/threading/Debug/xcengine_threading_tests.exe ### Math(数学库) -- **Vector**: 向量运算 -- **Matrix**: 矩阵运算 +- **Vector2/3/4**: 向量运算 +- **Matrix3/4**: 矩阵运算 - **Quaternion**: 四元数 -- **Transform**: 变换 +- **Transform**: 变换(位姿) - **Color**: 颜色 +- **Rect**: 矩形 +- **Sphere/Box/Plane**: 基本几何体 +- **Ray**: 射线 +- **AABB/Bounds**: 包围体 - **Frustum**: 视锥体 -- **Bounds**: 边界框 + +### Resources(资源管理) + +- **ResourceManager**: 全局资源管理器,资源加载/卸载 +- **ResourceCache**: 资源缓存,支持引用计数 +- **ResourceHandle**: 资源句柄,安全引用资源 +- **ResourcePackage**: 资源包批量管理 +- **AsyncLoader**: 异步资源加载器 +- **ImportSettings**: 资源导入设置(纹理/网格/材质) +- **IResourceLoader**: 资源加载器接口 +- **Texture/Mesh/Shader/Material/AudioClip**: 各类资源类型 ### RHI(渲染硬件接口) @@ -232,16 +325,18 @@ XCEngine 采用 RHI(Render Hardware Interface)抽象层设计,支持多渲 ## 测试覆盖 -- Containers: 51+ 测试用例 -- Memory: 19 测试用例 -- Threading: 13 测试用例 -- Math: 通过 -- RHI (OpenGL): 41 测试用例通过 -- RHI (D3D12): 编译通过 +| 模块 | 测试用例数 | +|------|-----------| +| Containers | 51+ | +| Memory | 19 | +| Threading | 13 | +| Math | 通过 | +| RHI (OpenGL) | 41 | +| RHI (D3D12) | 编译通过 | -## MVS 示例版本 +## mvs 示例程序 -MVS(Multiple Version Samples)是项目的渲染示例部分,展示各种渲染技术。所有示例均基于 RHI 抽象层开发,可无缝切换 DirectX 12 或 OpenGL 后端。 +mvs(Multiple Version Samples)展示游戏引擎的各类功能。所有示例均基于 RHI 抽象层开发,可无缝切换 DirectX 12 或 OpenGL 后端。 ### HelloEarth(开发中) @@ -254,12 +349,21 @@ MVS(Multiple Version Samples)是项目的渲染示例部分,展示各种 ### VolumeRenderer(开发中) -基于 NanoVDB 的体积渲染器,支持: +XCEngine 的体积渲染模块,基于 NanoVDB 实现云、烟雾等体积数据的实时渲染: - NanoVDB 格式体积数据加载 - 光线步进(Ray Marching)渲染 - HDDA 空间跳跃加速 -- 体积阴影 -- 多种渲染参数配置 +- 体积阴影(Volumetric Shadow) +- 动态光照参数调节 + +### UI Editor(开发中) + +Unity 风格的编辑器 UI,基于 ImGui 实现: +- 场景层级面板 +- 属性检查器 +- 游戏视图与场景视图 +- 项目资源浏览器 +- 控制台日志面板 ## 文档 diff --git a/docs/plan/第一阶段计划.md b/docs/plan/第一阶段计划.md index 0ec0fafb..05bcb371 100644 --- a/docs/plan/第一阶段计划.md +++ b/docs/plan/第一阶段计划.md @@ -1,4 +1,4 @@ -# XCEngine 渲染引擎 - 第一阶段计划 +# XCEngine 游戏引擎 - 第一阶段计划 > **目标**: 构建核心基础层,为上层渲染系统提供底层依赖 > **版本**: 1.0 diff --git a/docs/plan/第三阶段计划.md b/docs/plan/第三阶段计划.md index ac98c124..0cf8cd7f 100644 --- a/docs/plan/第三阶段计划.md +++ b/docs/plan/第三阶段计划.md @@ -1,6 +1,6 @@ # 第三阶段计划:OpenGL 后端实现 -> **目标**:实现 OpenGL 后端,完成 RHI 跨平台渲染抽象 +> **目标**:实现 OpenGL 后端,完成 RHI 跨平台图形抽象 > **阶段**:第三阶段 > **前置依赖**:第二阶段 RHI 抽象层与 D3D12 后端