ssdfasd b08f682e5c Migrate InspectorPanel to use IEditorContext and EventBus
- Replace SelectionManager::Get() singleton with m_context->GetSelectionManager()
- Use EventBus for selection change events instead of direct subscription
- Store entity ID (uint64_t) instead of GameObject* pointer
- Resolve entity ID to GameObject* via SceneManager::GetEntity()
- Remove direct includes of SelectionManager.h
2026-03-25 15:54:22 +08:00

XCEngine

基于 DirectX 12 的模块化游戏引擎,支持体积渲染、跨平台渲染后端和核心模块单元测试。

项目概述

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用于编辑器

项目结构

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 抽象层单元测试 (10 files)
│       ├── D3D12/                # D3D12 后端测试
│       │   ├── unit/            # D3D12 单元测试 (14 files)
│       │   └── integration/     # D3D12 集成测试 (minimal, quad, sphere, triangle)
│       └── OpenGL/               # OpenGL 后端测试
│           ├── unit/            # OpenGL 单元测试 (12 files)
│           └── integration/     # OpenGL 集成测试 (minimal, quad, sphere, triangle)
│
├── 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+

构建项目

# 创建构建目录
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

核心模块说明

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/(具体资源类型)

  • 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 支持

测试覆盖

模块 测试用例数
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/ 目录。

许可证

MIT License

Description
No description provided
Readme 1.4 GiB
Languages
C++ 46.4%
HTML 37.9%
C 9.7%
C# 1.4%
GLSL 1%
Other 3.4%