2026-03-13 15:07:03 +08:00
|
|
|
|
# XCEngine
|
2026-03-11 17:39:33 +08:00
|
|
|
|
|
2026-03-13 15:07:03 +08:00
|
|
|
|
基于 DirectX 12 的渲染引擎项目,包含体积渲染器、基础渲染示例和 Unity 风格编辑器 UI。
|
|
|
|
|
|
|
|
|
|
|
|
## 项目概述
|
|
|
|
|
|
|
|
|
|
|
|
XCEngine 是一个正在开发中的图形渲染引擎,使用 DirectX 12 作为底层渲染 API。项目采用模块化设计,包含多个独立演示项目(MVS - Multiple Version Samples)。
|
2026-03-11 17:39:33 +08:00
|
|
|
|
|
|
|
|
|
|
## 技术栈
|
|
|
|
|
|
|
2026-03-13 15:07:03 +08:00
|
|
|
|
- **渲染 API**: DirectX 12
|
2026-03-11 17:39:33 +08:00
|
|
|
|
- **语言**: C++17
|
|
|
|
|
|
- **构建系统**: CMake
|
2026-03-13 15:07:03 +08:00
|
|
|
|
- **UI 框架**: ImGui
|
2026-03-11 17:39:33 +08:00
|
|
|
|
|
|
|
|
|
|
## 项目结构
|
|
|
|
|
|
|
|
|
|
|
|
```
|
2026-03-13 15:07:03 +08:00
|
|
|
|
XCEngine/
|
|
|
|
|
|
├── MVS/ # 多个示例版本
|
|
|
|
|
|
│ ├── HelloEarth/ # 基础渲染示例
|
|
|
|
|
|
│ │ ├── main.cpp # 程序入口
|
|
|
|
|
|
│ │ ├── BattleFireDirect.cpp/h # DirectX 12 核心
|
|
|
|
|
|
│ │ ├── StaticMeshComponent.cpp/h # 静态网格组件
|
|
|
|
|
|
│ │ ├── Utils.cpp/h # 工具函数
|
|
|
|
|
|
│ │ ├── stbi/ # 图像加载库
|
|
|
|
|
|
│ │ └── Res/ # 资源文件
|
|
|
|
|
|
│ │ ├── Shader/ # HLSL 着色器
|
|
|
|
|
|
│ │ ├── Model/ # 模型文件
|
|
|
|
|
|
│ │ └── Image/ # 纹理图片
|
|
|
|
|
|
│ │
|
|
|
|
|
|
│ ├── VolumeRenderer/ # 体积渲染器
|
|
|
|
|
|
│ │ ├── main.cpp # 主程序入口
|
|
|
|
|
|
│ │ ├── BattleFireDirect.cpp/h # DirectX 12 核心渲染
|
|
|
|
|
|
│ │ ├── NanoVDBLoader.cpp/h # NanoVDB 体积数据加载
|
|
|
|
|
|
│ │ ├── StaticMeshComponent.cpp/h # 静态网格组件
|
|
|
|
|
|
│ │ ├── 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/ # 设计文档
|
|
|
|
|
|
├── XCVolumeRenderer渲染引擎架构设计.md
|
|
|
|
|
|
├── XCGameEngine架构设计.md
|
|
|
|
|
|
└── ...
|
2026-03-11 17:39:33 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-03-13 15:07:03 +08:00
|
|
|
|
## 快速开始
|
2026-03-11 17:39:33 +08:00
|
|
|
|
|
|
|
|
|
|
### 前置要求
|
|
|
|
|
|
|
|
|
|
|
|
- Windows 10/11
|
|
|
|
|
|
- Visual Studio 2019 或更高版本
|
|
|
|
|
|
- CMake 3.15+
|
|
|
|
|
|
|
2026-03-13 15:07:03 +08:00
|
|
|
|
### 构建项目
|
|
|
|
|
|
|
|
|
|
|
|
每个子项目都可以独立构建,以 HelloEarth 为例:
|
2026-03-11 17:39:33 +08:00
|
|
|
|
|
|
|
|
|
|
```bash
|
2026-03-13 15:07:03 +08:00
|
|
|
|
cd MVS/HelloEarth
|
2026-03-11 17:39:33 +08:00
|
|
|
|
mkdir build && cd build
|
|
|
|
|
|
cmake ..
|
|
|
|
|
|
cmake --build . --config Release
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-03-13 15:07:03 +08:00
|
|
|
|
## 各模块说明
|
2026-03-11 17:39:33 +08:00
|
|
|
|
|
2026-03-13 15:07:03 +08:00
|
|
|
|
### HelloEarth
|
2026-03-11 17:39:33 +08:00
|
|
|
|
|
2026-03-13 15:07:03 +08:00
|
|
|
|
基础的 DirectX 12 渲染示例,展示如何:
|
|
|
|
|
|
- 初始化 DirectX 12 渲染环境
|
|
|
|
|
|
- 加载和渲染静态网格
|
|
|
|
|
|
- 使用几何着色器
|
2026-03-11 17:39:33 +08:00
|
|
|
|
- 纹理映射
|
2026-03-13 15:07:03 +08:00
|
|
|
|
- 常量缓冲区更新
|
|
|
|
|
|
|
|
|
|
|
|
### VolumeRenderer
|
2026-03-12 01:58:17 +08:00
|
|
|
|
|
2026-03-13 15:07:03 +08:00
|
|
|
|
基于 NanoVDB 的体积渲染器,支持:
|
|
|
|
|
|
- NanoVDB 格式体积数据加载
|
|
|
|
|
|
- 光线步进(Ray Marching)渲染
|
2026-03-12 01:58:17 +08:00
|
|
|
|
- HDDA 空间跳跃加速
|
2026-03-13 15:07:03 +08:00
|
|
|
|
- 体积阴影
|
|
|
|
|
|
- 多种渲染参数配置
|
|
|
|
|
|
|
|
|
|
|
|
### ui
|
|
|
|
|
|
|
|
|
|
|
|
Unity 风格的编辑器 UI,包含:
|
|
|
|
|
|
- 层级面板(Hierarchy Panel)
|
|
|
|
|
|
- 检查器面板(Inspector Panel)
|
|
|
|
|
|
- 场景视图(Scene View)
|
|
|
|
|
|
- 游戏视图(Game View)
|
|
|
|
|
|
- 项目面板(Project Panel)
|
|
|
|
|
|
- 控制台面板(Console Panel)
|
|
|
|
|
|
- 日志系统
|
|
|
|
|
|
|
|
|
|
|
|
## 文档
|
|
|
|
|
|
|
|
|
|
|
|
更多详细设计文档请参考 `docs/` 目录。
|
|
|
|
|
|
|
|
|
|
|
|
## 许可证
|
|
|
|
|
|
|
|
|
|
|
|
MIT License
|