182025be6a0b5c51dde3a181b674cb2ea9fb19a0
XCEngine
基于 DirectX 12 的渲染引擎项目,包含体积渲染器、基础渲染示例和核心模块单元测试。
项目概述
XCEngine 是一个正在开发中的图形渲染引擎,使用 DirectX 12 作为底层渲染 API。项目采用模块化设计,包含核心库和单元测试。
技术栈
- 渲染 API: DirectX 12
- 语言: C++17
- 构建系统: CMake
- 测试框架: Google Test
项目结构
XCEngine/
├── engine/ # 核心引擎库
│ ├── include/XCEngine/
│ │ ├── Containers/ # 容器模块
│ │ │ ├── String.h # 字符串类
│ │ │ ├── Array.h # 动态数组
│ │ │ └── HashMap.h # 哈希表
│ │ ├── Memory/ # 内存管理模块
│ │ │ ├── Allocator.h # 分配器接口
│ │ │ ├── LinearAllocator.h # 线性分配器
│ │ │ ├── PoolAllocator.h # 内存池分配器
│ │ │ ├── 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/ # 核心模块
│ │
│ └── src/ # 实现文件
│ ├── Containers/
│ ├── Memory/
│ ├── Threading/
│ └── Math/
│
├── tests/ # 单元测试
│ ├── containers/ # 容器测试
│ ├── memory/ # 内存管理测试
│ ├── threading/ # 线程模块测试
│ ├── core/ # 核心模块测试
│ └── math/ # 数学库测试
│
├── MVS/ # 多个示例版本(开发中)
│ ├── HelloEarth/ # 基础渲染示例
│ └── VolumeRenderer/ # 体积渲染器
│
├── docs/ # 设计文档
│ ├── XCEngine渲染引擎架构设计.md
│ └── ...
│
└── build/ # 构建目录
快速开始
前置要求
- Windows 10/11
- Visual Studio 2019 或更高版本
- CMake 3.15+
构建项目
# 创建构建目录
mkdir build && cd build
# 配置 CMake
cmake .. -A x64
# 编译
cmake --build . --config Debug
运行测试
cd build/tests
ctest -C Debug --output-on-failure
或直接运行测试可执行文件:
build/tests/containers/Debug/xcengine_containers_tests.exe
build/tests/memory/Debug/xcengine_memory_tests.exe
build/tests/threading/Debug/xcengine_threading_tests.exe
核心模块说明
Containers(容器)
- String: 动态字符串类,支持常用字符串操作
- Array: 模板动态数组,自动内存管理
- HashMap: 模板哈希表,支持自定义键类型
Memory(内存管理)
- 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: 通过
MVS 示例版本
MVS(Multiple Version Samples)是项目的渲染示例部分,展示各种渲染技术:
HelloEarth(开发中)
基础的 DirectX 12 渲染示例,展示如何:
- 初始化 DirectX 12 渲染环境
- 加载和渲染静态网格
- 使用几何着色器
- 纹理映射
- 常量缓冲区更新
VolumeRenderer(开发中)
基于 NanoVDB 的体积渲染器,支持:
- NanoVDB 格式体积数据加载
- 光线步进(Ray Marching)渲染
- HDDA 空间跳跃加速
- 体积阴影
- 多种渲染参数配置
文档
更多详细设计文档请参考 docs/ 目录。
许可证
MIT License
Description
Languages
C++
46.5%
HTML
37.9%
C
9.6%
C#
1.4%
GLSL
1%
Other
3.4%