docs: 更新README.md反映新的项目结构
This commit is contained in:
187
README.md
187
README.md
@@ -1,74 +1,69 @@
|
|||||||
# XCEngine
|
# XCEngine
|
||||||
|
|
||||||
基于 DirectX 12 的渲染引擎项目,包含体积渲染器、基础渲染示例和 Unity 风格编辑器 UI。
|
基于 DirectX 12 的渲染引擎项目,包含体积渲染器、基础渲染示例和核心模块单元测试。
|
||||||
|
|
||||||
## 项目概述
|
## 项目概述
|
||||||
|
|
||||||
XCEngine 是一个正在开发中的图形渲染引擎,使用 DirectX 12 作为底层渲染 API。项目采用模块化设计,包含多个独立演示项目(MVS - Multiple Version Samples)。
|
XCEngine 是一个正在开发中的图形渲染引擎,使用 DirectX 12 作为底层渲染 API。项目采用模块化设计,包含核心库和单元测试。
|
||||||
|
|
||||||
## 技术栈
|
## 技术栈
|
||||||
|
|
||||||
- **渲染 API**: DirectX 12
|
- **渲染 API**: DirectX 12
|
||||||
- **语言**: C++17
|
- **语言**: C++17
|
||||||
- **构建系统**: CMake
|
- **构建系统**: CMake
|
||||||
- **UI 框架**: ImGui
|
- **测试框架**: Google Test
|
||||||
|
|
||||||
## 项目结构
|
## 项目结构
|
||||||
|
|
||||||
```
|
```
|
||||||
XCEngine/
|
XCEngine/
|
||||||
├── MVS/ # 多个示例版本
|
├── engine/ # 核心引擎库
|
||||||
│ ├── HelloEarth/ # 基础渲染示例
|
│ ├── include/XCEngine/
|
||||||
│ │ ├── main.cpp # 程序入口
|
│ │ ├── Containers/ # 容器模块
|
||||||
│ │ ├── BattleFireDirect.cpp/h # DirectX 12 核心
|
│ │ │ ├── String.h # 字符串类
|
||||||
│ │ ├── StaticMeshComponent.cpp/h # 静态网格组件
|
│ │ │ ├── Array.h # 动态数组
|
||||||
│ │ ├── Utils.cpp/h # 工具函数
|
│ │ │ └── HashMap.h # 哈希表
|
||||||
│ │ ├── stbi/ # 图像加载库
|
│ │ ├── Memory/ # 内存管理模块
|
||||||
│ │ └── Res/ # 资源文件
|
│ │ │ ├── Allocator.h # 分配器接口
|
||||||
│ │ ├── Shader/ # HLSL 着色器
|
│ │ │ ├── LinearAllocator.h # 线性分配器
|
||||||
│ │ ├── Model/ # 模型文件
|
│ │ │ ├── PoolAllocator.h # 内存池分配器
|
||||||
│ │ └── Image/ # 纹理图片
|
│ │ │ ├── ProxyAllocator.h # 代理分配器
|
||||||
|
│ │ │ └── MemoryManager.h # 内存管理器
|
||||||
|
│ │ ├── Threading/ # 线程模块
|
||||||
|
│ │ │ ├── Thread.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
|
||||||
|
│ │ │ └── ...
|
||||||
|
│ │ └── Core/ # 核心模块
|
||||||
│ │
|
│ │
|
||||||
│ ├── VolumeRenderer/ # 体积渲染器
|
│ └── src/ # 实现文件
|
||||||
│ │ ├── main.cpp # 主程序入口
|
│ ├── Containers/
|
||||||
│ │ ├── BattleFireDirect.cpp/h # DirectX 12 核心渲染
|
│ ├── Memory/
|
||||||
│ │ ├── NanoVDBLoader.cpp/h # NanoVDB 体积数据加载
|
│ ├── Threading/
|
||||||
│ │ ├── StaticMeshComponent.cpp/h # 静态网格组件
|
│ └── Math/
|
||||||
│ │ ├── Utils.cpp/h # 工具函数
|
|
||||||
│ │ ├── stbi/ # 图像加载库
|
|
||||||
│ │ ├── CMakeLists.txt # CMake 构建配置
|
|
||||||
│ │ ├── Res/ # 资源文件
|
|
||||||
│ │ │ ├── Shader/ # HLSL 着色器
|
|
||||||
│ │ │ ├── Model/ # 模型文件
|
|
||||||
│ │ │ ├── Image/ # 纹理图片
|
|
||||||
│ │ │ └── NanoVDB/ # NanoVDB 体积数据
|
|
||||||
│ │ └── README.md # 详细文档
|
|
||||||
│ │
|
|
||||||
│ └── ui/ # Unity 风格编辑器 UI
|
|
||||||
│ ├── src/
|
|
||||||
│ │ ├── main.cpp # 程序入口
|
|
||||||
│ │ ├── Application.cpp/h # 应用主类
|
|
||||||
│ │ ├── Theme.cpp/h # 主题系统
|
|
||||||
│ │ ├── Core/ # 核心类
|
|
||||||
│ │ ├── Managers/ # 管理系统
|
|
||||||
│ │ │ ├── LogSystem # 日志系统
|
|
||||||
│ │ │ ├── ProjectManager # 项目管理
|
|
||||||
│ │ │ └── SceneManager # 场景管理
|
|
||||||
│ │ └── panels/ # UI 面板
|
|
||||||
│ │ ├── HierarchyPanel # 层级面板
|
|
||||||
│ │ ├── InspectorPanel # 检查器面板
|
|
||||||
│ │ ├── SceneViewPanel # 场景视图
|
|
||||||
│ │ ├── GameViewPanel # 游戏视图
|
|
||||||
│ │ ├── ProjectPanel # 项目面板
|
|
||||||
│ │ ├── ConsolePanel # 控制台面板
|
|
||||||
│ │ └── MenuBar # 菜单栏
|
|
||||||
│ ├── bin/Release/ # 输出目录
|
|
||||||
│ └── CMakeLists.txt
|
|
||||||
│
|
│
|
||||||
└── docs/ # 设计文档
|
├── tests/ # 单元测试
|
||||||
├── XCVolumeRenderer渲染引擎架构设计.md
|
│ ├── containers/ # 容器测试
|
||||||
├── XCGameEngine架构设计.md
|
│ ├── memory/ # 内存管理测试
|
||||||
└── ...
|
│ ├── threading/ # 线程模块测试
|
||||||
|
│ ├── core/ # 核心模块测试
|
||||||
|
│ └── math/ # 数学库测试
|
||||||
|
│
|
||||||
|
├── docs/ # 设计文档
|
||||||
|
│ ├── XCEngine渲染引擎架构设计.md
|
||||||
|
│ └── ...
|
||||||
|
│
|
||||||
|
└── build/ # 构建目录
|
||||||
```
|
```
|
||||||
|
|
||||||
## 快速开始
|
## 快速开始
|
||||||
@@ -81,45 +76,73 @@ XCEngine/
|
|||||||
|
|
||||||
### 构建项目
|
### 构建项目
|
||||||
|
|
||||||
每个子项目都可以独立构建,以 HelloEarth 为例:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd MVS/HelloEarth
|
# 创建构建目录
|
||||||
mkdir build && cd build
|
mkdir build && cd build
|
||||||
cmake ..
|
|
||||||
cmake --build . --config Release
|
# 配置 CMake
|
||||||
|
cmake .. -A x64
|
||||||
|
|
||||||
|
# 编译
|
||||||
|
cmake --build . --config Debug
|
||||||
```
|
```
|
||||||
|
|
||||||
## 各模块说明
|
### 运行测试
|
||||||
|
|
||||||
### HelloEarth
|
```bash
|
||||||
|
cd build/tests
|
||||||
|
ctest -C Debug --output-on-failure
|
||||||
|
```
|
||||||
|
|
||||||
基础的 DirectX 12 渲染示例,展示如何:
|
或直接运行测试可执行文件:
|
||||||
- 初始化 DirectX 12 渲染环境
|
|
||||||
- 加载和渲染静态网格
|
|
||||||
- 使用几何着色器
|
|
||||||
- 纹理映射
|
|
||||||
- 常量缓冲区更新
|
|
||||||
|
|
||||||
### VolumeRenderer
|
```bash
|
||||||
|
build/tests/containers/Debug/xcengine_containers_tests.exe
|
||||||
|
build/tests/memory/Debug/xcengine_memory_tests.exe
|
||||||
|
build/tests/threading/Debug/xcengine_threading_tests.exe
|
||||||
|
```
|
||||||
|
|
||||||
基于 NanoVDB 的体积渲染器,支持:
|
## 核心模块说明
|
||||||
- NanoVDB 格式体积数据加载
|
|
||||||
- 光线步进(Ray Marching)渲染
|
|
||||||
- HDDA 空间跳跃加速
|
|
||||||
- 体积阴影
|
|
||||||
- 多种渲染参数配置
|
|
||||||
|
|
||||||
### ui
|
### Containers(容器)
|
||||||
|
|
||||||
Unity 风格的编辑器 UI,包含:
|
- **String**: 动态字符串类,支持常用字符串操作
|
||||||
- 层级面板(Hierarchy Panel)
|
- **Array**: 模板动态数组,自动内存管理
|
||||||
- 检查器面板(Inspector Panel)
|
- **HashMap**: 模板哈希表,支持自定义键类型
|
||||||
- 场景视图(Scene View)
|
|
||||||
- 游戏视图(Game View)
|
### Memory(内存管理)
|
||||||
- 项目面板(Project Panel)
|
|
||||||
- 控制台面板(Console Panel)
|
- **IAllocator**: 内存分配器接口
|
||||||
- 日志系统
|
- **LinearAllocator**: 线性分配器,适合帧分配
|
||||||
|
- **PoolAllocator**: 内存池分配器,适合固定大小对象
|
||||||
|
- **ProxyAllocator**: 代理分配器,跟踪内存使用统计
|
||||||
|
- **MemoryManager**: 全局内存管理器
|
||||||
|
|
||||||
|
### Threading(线程)
|
||||||
|
|
||||||
|
- **Thread**: 线程封装类
|
||||||
|
- **Mutex**: 互斥锁
|
||||||
|
- **SpinLock**: 自旋锁,适合短临界区
|
||||||
|
- **ReadWriteLock**: 读写锁
|
||||||
|
- **TaskSystem**: 多线程任务系统
|
||||||
|
- **Task/TaskGroup**: 任务和任务组管理
|
||||||
|
|
||||||
|
### Math(数学库)
|
||||||
|
|
||||||
|
- **Vector**: 向量运算
|
||||||
|
- **Matrix**: 矩阵运算
|
||||||
|
- **Quaternion**: 四元数
|
||||||
|
- **Transform**: 变换
|
||||||
|
- **Color**: 颜色
|
||||||
|
- **Frustum**: 视锥体
|
||||||
|
- **Bounds**: 边界框
|
||||||
|
|
||||||
|
## 测试覆盖
|
||||||
|
|
||||||
|
- Containers: 51+ 测试用例
|
||||||
|
- Memory: 19 测试用例
|
||||||
|
- Threading: 13 测试用例
|
||||||
|
- Math: 通过
|
||||||
|
|
||||||
## 文档
|
## 文档
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user