Files
XCEngine/README.md

616 lines
26 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# XCEngine
基于 DirectX 12 的模块化游戏引擎,支持体积渲染、跨平台渲染后端和核心模块单元测试。
当前工程状态、RHI 近期收敛结果、推荐构建与测试入口,请优先参考 [AGENT.md](AGENT.md)。
## 项目概述
XCEngine 是一个正在开发中的模块化 C++ 游戏引擎,采用 RHIRender Hardware Interface抽象层设计支持 DirectX 12 和 OpenGL 4.6+ 多种渲染 API。项目采用模块化设计包含核心库、示例程序和单元测试。
## 技术栈
- **渲染 API**: DirectX 12, OpenGL 4.6+
- **语言**: C++17
- **构建系统**: CMake 3.15+
- **测试框架**: Google Test
- **UI**: ImGui用于编辑器
## 项目结构
```text
XCEngine/
├── engine/ # 核心引擎库
│ ├── include/XCEngine/
│ │ ├── Audio/ # 音频系统
│ │ │ ├── AudioSystem.h # 音频系统主类
│ │ │ ├── AudioTypes.h # 音频类型定义
│ │ │ ├── AudioConfig.h # 音频配置
│ │ │ ├── AudioMixer.h # 音频混音器
│ │ │ ├── HRTF.h # HRTF 空间音频
│ │ │ ├── FFTFilter.h # FFT 滤波器
│ │ │ ├── Reverbation.h # 混响效果
│ │ │ ├── Equalizer.h # 均衡器
│ │ │ ├── IAudioEffect.h # 音频效果接口
│ │ │ ├── IAudioBackend.h # 音频后端接口
│ │ │ └── WindowsAudioBackend.h # Windows 音频后端
│ │ ├── Components/ # 游戏组件系统
│ │ │ ├── Component.h # 组件基类
│ │ │ ├── GameObject.h # 游戏对象
│ │ │ ├── TransformComponent.h # 变换组件
│ │ │ ├── AudioSourceComponent.h # 音频源组件
│ │ │ └── AudioListenerComponent.h # 音频监听器组件
│ │ ├── Core/ # 核心基础模块
│ │ │ ├── Asset/ # 资源系统核心
│ │ │ │ ├── IResource.h # 资源接口
│ │ │ │ ├── ResourceTypes.h # 资源类型定义
│ │ │ │ ├── ResourceHandle.h # 资源句柄
│ │ │ │ ├── ResourceManager.h # 资源管理器
│ │ │ │ ├── ResourceCache.h # 资源缓存
│ │ │ │ ├── AsyncLoader.h # 异步加载器
│ │ │ │ ├── ResourceDependencyGraph.h # 依赖图
│ │ │ │ └── ImportSettings.h # 导入设置基类
│ │ │ ├── IO/ # IO 系统
│ │ │ │ ├── IResourceLoader.h # 资源加载器接口
│ │ │ │ ├── ResourceFileSystem.h # 资源文件系统
│ │ │ │ ├── ResourcePath.h # 资源路径
│ │ │ │ ├── FileArchive.h # 文件归档
│ │ │ │ └── ResourcePackage.h # 资源包
│ │ │ ├── Containers/ # 容器模块
│ │ │ │ ├── Array.h # 动态数组
│ │ │ │ ├── String.h # 字符串类
│ │ │ │ ├── HashMap.h # 哈希表
│ │ │ │ └── Containers.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 # 数学库统一头文件
│ │ │ ├── Layer.h # 层级
│ │ │ ├── LayerStack.h # 层级栈
│ │ │ ├── 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 # 性能分析
│ │ ├── 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 # 任务系统配置
│ │ │ └── Threading.h # 线程模块统一头文件
│ │ ├── Platform/ # 平台抽象层
│ │ │ ├── PlatformTypes.h # 平台类型
│ │ │ ├── IPlatform.h # 平台接口
│ │ │ ├── IWindow.h # 窗口接口
│ │ │ ├── IFileSystem.h # 文件系统接口
│ │ │ ├── IClock.h # 时钟接口
│ │ │ ├── IDynamicLibrary.h # 动态库接口
│ │ │ ├── IDisplayEnumerator.h # 显示枚举接口
│ │ │ ├── GameTime.h # 游戏时间
│ │ │ ├── Window.h # 窗口类
│ │ │ ├── Windows/ # Windows 平台实现
│ │ │ │ ├── WindowsWindow.h
│ │ │ │ └── WindowsInputModule.h
│ │ │ ├── Linux/ # Linux 平台实现
│ │ │ ├── Android/ # Android 平台实现
│ │ │ └── macOS/ # macOS 平台实现
│ │ ├── Input/ # 输入模块
│ │ │ ├── InputTypes.h # 输入类型
│ │ │ ├── InputEvent.h # 输入事件
│ │ │ ├── InputAxis.h # 输入轴
│ │ │ ├── InputModule.h # 输入模块基类
│ │ │ └── InputManager.h # 输入管理器
│ │ ├── Resources/ # 资源管理模块 (按类型分目录)
│ │ │ ├── Texture/ # 纹理资源
│ │ │ │ ├── Texture.h
│ │ │ │ ├── TextureLoader.h
│ │ │ │ └── TextureImportSettings.h
│ │ │ ├── Mesh/ # 网格资源
│ │ │ │ ├── Mesh.h
│ │ │ │ ├── MeshLoader.h
│ │ │ │ └── MeshImportSettings.h
│ │ │ ├── Shader/ # 着色器资源
│ │ │ │ ├── Shader.h
│ │ │ │ └── ShaderLoader.h
│ │ │ ├── Material/ # 材质资源
│ │ │ │ ├── Material.h
│ │ │ │ └── MaterialLoader.h
│ │ │ ├── AudioClip/ # 音频资源
│ │ │ │ ├── AudioClip.h
│ │ │ │ └── AudioLoader.h
│ │ │ └── Resources.h # 资源模块统一头文件
│ │ ├── Scene/ # 场景管理模块
│ │ │ ├── Scene.h # 场景类
│ │ │ └── SceneManager.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 # 描述符池抽象
│ │ ├── RHIDescriptorSet.h # 描述符集抽象
│ │ ├── RHIRenderPass.h # 渲染通道抽象
│ │ ├── RHIFramebuffer.h # 帧缓冲抽象
│ │ ├── RHIResource.h # 资源基类
│ │ ├── RHIResourceView.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
│ │ │ ├── OpenGLFramebuffer.h
│ │ │ ├── OpenGLRenderPass.h
│ │ │ ├── OpenGLResourceView.h
│ │ │ ├── OpenGLDescriptorPool.h
│ │ │ ├── OpenGLDescriptorSet.h
│ │ │ ├── OpenGLTextureUnitAllocator.h
│ │ │ ├── OpenGLUniformBufferManager.h
│ │ │ └── OpenGLScreenshot.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
│ │ ├── D3D12DescriptorSet.h
│ │ ├── D3D12RootSignature.h
│ │ ├── D3D12PipelineLayout.h
│ │ ├── D3D12RenderTargetView.h
│ │ ├── D3D12DepthStencilView.h
│ │ ├── D3D12ShaderResourceView.h
│ │ ├── D3D12UnorderedAccessView.h
│ │ ├── D3D12ConstantBufferView.h
│ │ ├── D3D12ResourceView.h
│ │ ├── D3D12QueryHeap.h
│ │ ├── D3D12RenderPass.h
│ │ ├── D3D12Framebuffer.h
│ │ ├── D3D12Screenshot.h
│ │ ├── D3D12Types.h
│ │ ├── D3D12Enums.h
│ │ └── D3D12Common.h
│ ├── src/ # 实现文件
│ │ ├── Audio/
│ │ ├── Containers/
│ │ ├── Core/
│ │ │ ├── Asset/ # Core/Asset 实现
│ │ │ └── IO/ # Core/IO 实现
│ │ ├── Debug/
│ │ ├── Math/
│ │ ├── Memory/
│ │ ├── Threading/
│ │ ├── Platform/
│ │ │ └── Windows/
│ │ ├── Input/
│ │ ├── Resources/
│ │ │ ├── Texture/
│ │ │ ├── Mesh/
│ │ │ ├── Shader/
│ │ │ ├── Material/
│ │ │ └── AudioClip/
│ │ ├── Scene/
│ │ └── RHI/
│ │ ├── D3D12/
│ │ ├── OpenGL/
│ │ └── RHIFactory.cpp
│ └── third_party/ # 第三方库
│ ├── kissfft/ # FFT 库
│ ├── stb/ # 图像处理库 (stb_image, stb_image_write)
│ ├── GLAD/ # OpenGL 加载器
│ └── renderdoc/ # RenderDoc 调试库
├── editor/ # 编辑器 UI 应用程序
│ ├── src/ # 编辑器源代码
│ │ ├── Application.cpp/h # 编辑器应用入口
│ │ ├── main.cpp # 主函数
│ │ ├── Core/ # 编辑器核心
│ │ ├── Layers/ # 编辑器层级
│ │ ├── Managers/ # 管理器
│ │ ├── panels/ # 编辑器面板
│ │ └── UI/ # UI 控件
│ ├── bin/ # 资源文件和可执行文件
│ └── build/ # 构建目录
├── tests/ # 单元测试
│ ├── math/ # 数学库测试
│ ├── containers/ # 容器测试
│ ├── memory/ # 内存管理测试
│ ├── threading/ # 线程模块测试
│ ├── debug/ # 调试模块测试
│ ├── core/ # 核心模块测试
│ │ ├── Asset/ # Core/Asset 模块测试
│ │ └── IO/ # Core/IO 模块测试
│ ├── Components/ # 组件测试
│ ├── Scene/ # 场景测试
│ ├── Resources/ # 资源管理测试
│ │ ├── Texture/
│ │ ├── Mesh/
│ │ ├── Material/
│ │ ├── Shader/
│ │ └── AudioClip/
│ ├── Input/ # 输入模块测试
│ └── RHI/ # RHI 抽象层测试
│ ├── unit/ # RHI 抽象层单元测试
│ ├── D3D12/ # D3D12 后端测试
│ │ ├── unit/
│ │ └── integration/
│ ├── OpenGL/ # OpenGL 后端测试
│ │ ├── unit/
│ │ └── integration/
│ └── integration/ # RHI 抽象层集成测试
│ ├── fixtures/
│ ├── minimal/
│ ├── triangle/
│ ├── quad/
│ └── sphere/
├── mvs/ # 示例程序
│ ├── D3D12/ # DirectX 12 渲染示例
│ ├── OpenGL/ # OpenGL 渲染示例
│ ├── Music fluctuations/ # 音频可视化示例
│ ├── VolumeRenderer/ # 体积渲染器NanoVDB
│ ├── RenderDoc/ # RenderDoc 集成示例
│ ├── ui/ # 编辑器 UI 示例
│ └── Res/ # 示例资源文件
├── docs/ # 文档
│ ├── api/ # API 文档
│ │ ├── audio/ # 音频系统 API
│ │ ├── components/ # 组件系统 API
│ │ ├── containers/ # 容器 API
│ │ ├── core/ # 核心 API
│ │ ├── d3d12/ # D3D12 API
│ │ ├── debug/ # 调试 API
│ │ ├── math/ # 数学库 API
│ │ ├── memory/ # 内存管理 API
│ │ ├── resources/ # 资源管理 API
│ │ └── main.md # API 文档总索引
│ ├── plan/ # 开发计划与架构设计
│ └── api-skill.md # API 技能文档
├── 参考/ # 参考资料
│ └── Fermion/ # 参考项目
├── build/ # 构建目录
└── imgui.ini # ImGui 配置文件
```
## 快速开始
### 前置要求
- Windows 10/11
- Visual Studio 2019 或更高版本
- CMake 3.15+
### 构建项目
```bash
# 创建构建目录
mkdir build && cd build
# 配置 CMake
cmake .. -A x64
# 编译
cmake --build . --config Debug
```
### 运行测试
```bash
cd build/tests
ctest -C Debug --output-on-failure
```
或直接运行测试可执行文件:
```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
```
## 核心模块说明
### Audio音频系统
- **AudioSystem**: 音频系统主类,管理所有音频设备
- **AudioMixer**: 音频混音器,多通道混合与效果处理
- **HRTF**: 头部相关传输函数,支持空间音频定位
- **FFTFilter**: 快速傅里叶变换滤波器
- **Reverbation**: 混响效果
- **Equalizer**: 音频均衡器
- **WindowsAudioBackend**: Windows WASAPI 音频后端实现
- **AudioSourceComponent**: 音频源组件(用于游戏对象)
- **AudioListenerComponent**: 音频监听器组件(用于游戏对象)
### Components游戏组件系统
- **Component**: 组件基类,提供生命周期管理
- **GameObject**: 游戏对象,支持层级结构
- **TransformComponent**: 变换组件,管理位置、旋转、缩放
- **AudioSourceComponent**: 音频源组件
- **AudioListenerComponent**: 音频监听器组件
### Containers容器
- **String**: 动态字符串类,支持常用字符串操作
- **Array**: 模板动态数组,自动内存管理
- **HashMap**: 模板哈希表,支持自定义键类型
### Core核心基础
- **Types**: 基础类型别名int8、uint32 等)
- **RefCounted**: 引用计数基类,支持多线程安全释放
- **SmartPtr**: 智能指针实现Ref、UniqueRef
- **Event**: 事件系统,支持订阅/发布模式
- **FileWriter**: 文件写入工具
- **Layer/LayerStack**: 层级与层级栈管理
### Platform平台抽象层
跨平台抽象接口,支持 Windows、Linux、Android、macOS
- **IPlatform**: 平台接口
- **IWindow**: 窗口接口
- **IFileSystem**: 文件系统接口
- **IClock**: 时钟接口
- **IDynamicLibrary**: 动态库加载接口
- **IDisplayEnumerator**: 显示设备枚举接口
- **Window**: 窗口实现类
### Input输入模块
- **InputManager**: 输入管理器
- **InputModule**: 输入模块基类
- **InputEvent**: 输入事件定义
- **InputAxis**: 输入轴配置
### Debug调试与日志
- **Logger**: 分级日志系统Info、Warning、Error
- **ConsoleLogSink**: 控制台日志输出
- **FileLogSink**: 文件日志输出
- **Profiler**: 性能分析工具
- **RenderDocCapture**: RenderDoc 帧捕获集成,支持 D3D12/OpenGL GPU 调试
### Memory内存管理
- **IAllocator**: 内存分配器接口
- **LinearAllocator**: 线性分配器,适合帧分配
- **PoolAllocator**: 内存池分配器,适合固定大小对象
- **ProxyAllocator**: 代理分配器,跟踪内存使用统计
- **MemoryManager**: 全局内存管理器
### Threading线程
- **Thread**: 线程封装类
- **Mutex**: 互斥锁
- **SpinLock**: 自旋锁,适合短临界区
- **ReadWriteLock**: 读写锁
- **TaskSystem**: 多线程任务系统
- **Task/TaskGroup**: 任务和任务组管理
### Math数学库
- **Vector2/3/4**: 向量运算
- **Matrix3/4**: 矩阵运算
- **Quaternion**: 四元数
- **Transform**: 变换(位姿)
- **Color**: 颜色
- **Rect**: 矩形
- **Sphere/Box/Plane**: 基本几何体
- **Ray**: 射线
- **AABB/Bounds**: 包围体
- **Frustum**: 视锥体
### Resources资源管理
XCEngine 资源系统采用分层架构:
#### Core/Asset资源系统核心
- **IResource**: 资源接口基类
- **ResourceTypes**: 资源类型定义GUID、状态等
- **ResourceHandle**: 资源句柄,安全引用资源
- **ResourceManager**: 全局资源管理器,资源加载/卸载
- **ResourceCache**: 资源缓存,支持引用计数
- **AsyncLoader**: 异步资源加载器
- **ResourceDependencyGraph**: 资源依赖图管理
#### Core/IO资源 IO 系统)
- **IResourceLoader**: 资源加载器接口
- **ResourceFileSystem**: 资源文件系统
- **ResourcePath**: 资源路径解析
- **FileArchive**: 文件归档支持
- **ResourcePackage**: 资源包批量管理
#### Resources/<Type>(具体资源类型)
- **Texture**: 纹理资源Texture.h、TextureLoader.h、TextureImportSettings.h
- **Mesh**: 网格资源Mesh.h、MeshLoader.h、MeshImportSettings.h
- **Shader**: 着色器资源Shader.h、ShaderLoader.h
- **Material**: 材质资源Material.h、MaterialLoader.h
- **AudioClip**: 音频资源AudioClip.h、AudioLoader.h
### Scene场景管理
- **Scene**: 场景类,管理场景内的所有游戏对象
- **SceneManager**: 场景管理器,处理场景切换
### RHI渲染硬件接口
XCEngine 采用 RHIRender Hardware Interface抽象层设计支持多渲染后端。
#### 设计原则
- **求同存异**: 提取各 API 共同特性,统一抽象接口
- **分层抽象**: 核心抽象层 → 后端实现层 → 平台适配层
- **特性降级**: 后端不支持的特性优雅降级
- **底层逃逸**: 后端特有方法通过重载暴露
#### 抽象接口
- **RHIDevice**: 渲染设备抽象
- **RHICommandQueue**: 命令队列抽象
- **RHICommandList**: 命令列表抽象
- **RHISwapChain**: 交换链抽象
- **RHIPipelineState**: 渲染管线状态抽象
- **RHIPipelineLayout**: 管线布局抽象
- **RHIBuffer/RHITexture**: 资源抽象
- **RHIShader**: 着色器抽象
- **RHISampler**: 采样器抽象
- **RHIFence**: 同步栅栏抽象
- **RHIDescriptorPool**: 描述符池抽象
- **RHIDescriptorSet**: 描述符集抽象
- **RHIRenderPass**: 渲染通道抽象
- **RHIFramebuffer**: 帧缓冲抽象
- **RHIResourceView**: 资源视图抽象
#### 后端实现
- **OpenGL 后端**: OpenGL 4.6+ 支持
- **D3D12 后端**: DirectX 12 支持
当前更偏向“工程协作”和“当前状态”的入口说明见 [AGENT.md](AGENT.md)。
## 测试覆盖
| 模块 | 测试用例数 |
|------|-----------|
| Math | ~4 |
| Containers | ~3 |
| Memory | ~3 |
| Threading | ~3 |
| Debug | ~3 |
| Core | ~10 |
| Components | ~3 |
| Scene | ~2 |
| Resources | ~12 |
| Input | ~2 |
| RHI/unit | ~10 |
| RHI/D3D12 | ~18 (unit + integration) |
| RHI/OpenGL | ~16 (unit + integration) |
## mvs 示例程序
mvsMultiple Version Samples展示游戏引擎的各类功能。所有示例均基于 RHI 抽象层开发,可无缝切换 DirectX 12 或 OpenGL 后端。
### D3D12 / OpenGL
跨平台渲染示例,展示如何:
- 初始化 RHI 渲染环境(支持 D3D12/OpenGL
- 加载和渲染静态网格
- 纹理映射
- 常量缓冲区更新
### RenderDoc
D3D12 + RenderDoc 集成示例,展示如何使用 RenderDoc API 进行 GPU 帧捕获和调试:
- 动态加载 renderdoc.dll
- 帧捕获 APIBeginCapture/EndCapture/TriggerCapture
- 捕获文件路径和注释设置
> 注意renderdoc.dll 需单独放置于 `engine/third_party/renderdoc/renderdoc.dll`
### VolumeRenderer
XCEngine 的体积渲染模块,基于 NanoVDB 实现云、烟雾等体积数据的实时渲染:
- NanoVDB 格式体积数据加载
- 光线步进Ray Marching渲染
- HDDA 空间跳跃加速
- 体积阴影Volumetric Shadow
- 动态光照参数调节
### Music fluctuations
音频可视化示例,基于 FFT 实时分析音频频谱:
- 音频播放与 FFT 分析
- 频谱可视化渲染
- 音频与视觉效果同步
### Editor UI
Unity 风格的编辑器 UI基于 ImGui 实现:
- 场景层级面板
- 属性检查器
- 游戏视图与场景视图
- 项目资源浏览器
- 控制台日志面板
## 文档
API 文档位于 `docs/api/` 目录,包含各模块的完整 API 参考。
详细设计文档请参考 `docs/plan/` 目录。
当前工程协作入口见 [AGENT.md](AGENT.md)。
## 许可证
MIT License