docs: update README and project docs to reflect game engine scope

This commit is contained in:
2026-03-18 17:58:01 +08:00
parent 9bad996ecf
commit d0e16962c8
5 changed files with 204 additions and 100 deletions

View File

@@ -1,10 +1,10 @@
# XCVolumeRenderer # XCVolumeRenderer
基于 DirectX 12 的体积渲染,使用 NanoVDB 格式实现云、烟雾等体积数据的实时渲染。 XCEngine 游戏引擎的体积渲染模块,使用 NanoVDB 格式实现云、烟雾等体积数据的实时渲染。
## 技术栈 ## 技术栈
- **渲染API**: DirectX 12 - **模块定位**: XCEngine 游戏引擎的体积渲染功能
- **语言**: C++17 - **语言**: C++17
- **构建系统**: CMake - **构建系统**: CMake
- **依赖库**: DirectX 12 SDK, stb_image, NanoVDB - **依赖库**: DirectX 12 SDK, stb_image, NanoVDB

View File

@@ -1,10 +1,10 @@
# UI Editor # UI Editor
Unity 风格的编辑器 UI使用 ImGui 实现。 Unity 风格的编辑器 UI使用 ImGui 实现,作为 XCEngine 游戏引擎编辑器的一部分
## 简介 ## 简介
XCVolumeRenderer UI 是一个仿 Unity 编辑器的桌面应用程序,提供场景管理、层级视图、属性检查器等功能。 XCGameEngine UI 是一个仿 Unity 编辑器的桌面应用程序,提供场景管理、层级视图、属性检查器等功能。
## 技术栈 ## 技术栈
@@ -70,7 +70,7 @@ cmake --build . --config Release
```bash ```bash
# 运行编译好的可执行文件 # 运行编译好的可执行文件
.\bin\Release\XCVolumeRendererUI2.exe .\bin\Release\XCGameEngineUI.exe
``` ```
## 功能特性 ## 功能特性

290
README.md
View File

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

View File

@@ -1,4 +1,4 @@
# XCEngine 渲染引擎 - 第一阶段计划 # XCEngine 游戏引擎 - 第一阶段计划
> **目标**: 构建核心基础层,为上层渲染系统提供底层依赖 > **目标**: 构建核心基础层,为上层渲染系统提供底层依赖
> **版本**: 1.0 > **版本**: 1.0

View File

@@ -1,6 +1,6 @@
# 第三阶段计划OpenGL 后端实现 # 第三阶段计划OpenGL 后端实现
> **目标**:实现 OpenGL 后端,完成 RHI 跨平台渲染抽象 > **目标**:实现 OpenGL 后端,完成 RHI 跨平台图形抽象
> **阶段**:第三阶段 > **阶段**:第三阶段
> **前置依赖**:第二阶段 RHI 抽象层与 D3D12 后端 > **前置依赖**:第二阶段 RHI 抽象层与 D3D12 后端