83fd517974
feat: 实现日志与调试系统(Debug模块)
...
- LogLevel: 日志级别枚举 (Verbose, Debug, Info, Warning, Error, Fatal)
- LogCategory: 日志分类 (General, Rendering, Physics, Memory, Threading等)
- ILogSink: 日志输出接口
- ConsoleLogSink: 控制台输出, 支持Windows颜色
- FileLogSink: 文件日志输出
- FileWriter: 文件写入器
- Logger: 日志管理器, 支持多sink, 分类控制
- Profiler: 性能分析器
- 单元测试覆盖
2026-03-13 20:53:57 +08:00
dc9b0751cb
docs: 在README中添加MVS示例版本介绍
2026-03-13 20:40:12 +08:00
fa3e48b0fc
docs: 更新README.md反映新的项目结构
2026-03-13 20:38:32 +08:00
34c75e7129
feat: 实现Containers、Memory、Threading核心模块及单元测试
...
- Containers: String, Array, HashMap 容器实现及测试
- Memory: Allocator, LinearAllocator, PoolAllocator, ProxyAllocator, MemoryManager 实现及测试
- Threading: Mutex, SpinLock, ReadWriteLock, Thread, Task, TaskSystem 实现及测试
- 修复Windows平台兼容性: _aligned_malloc, std::hash特化
- 修复构建错误和测试用例问题
2026-03-13 20:37:08 +08:00
508ee0bdc8
Fix math unit tests: Plane, Frustum, Quaternion, Bounds
...
- Plane.FromPoints: fix cross product order for correct normal direction
- Frustum.Intersects: fix inverted logic for bounds intersection
- LookRotation: add edge case handling when forward is parallel to up
- Bounds: fix test expectations (GT -> GE, adjust values)
- Quaternion: fix test expectations for vector rotation
- ToEulerAngles: simplify test to verify identity quaternion
2026-03-13 19:23:12 +08:00
7c54a62f9e
feat: 添加Math库和Google Test测试框架
...
- 新增Math库: Vector2/3/4, Matrix3/4, Quaternion, Transform, Color等
- 新增测试框架: Google Test (gtest)
- 新增140个单元测试,覆盖Vector, Matrix, Quaternion, Geometry
- VolumeRenderer支持vcpkg的NanoVDB
- 添加TESTING.md测试文档
2026-03-13 18:43:14 +08:00
5efa171050
refactor: 重构项目结构为 MVS 多示例版本,添加 README 文档
2026-03-13 15:07:03 +08:00
faf99dfc68
docs: 添加架构设计文档
2026-03-13 01:35:46 +08:00
7d3b05573d
Add clickable path navigation in Project panel
2026-03-12 20:33:04 +08:00
de9d9dfa1c
Add drag preview icon in Project panel
2026-03-12 20:17:43 +08:00
4887bdd7fe
feat: 添加Project面板拖拽功能
2026-03-12 20:11:56 +08:00
909f430c7a
feat: 添加Project面板拖拽移动功能
2026-03-12 19:48:51 +08:00
1fc84b9538
refactor: 修复Panel窗口关闭行为并优化ProjectManager路径处理
2026-03-12 19:26:38 +08:00
51251f08a4
fix: 修复层级面板右键无法弹出创建菜单的问题
2026-03-12 19:17:59 +08:00
0c02aa2ae6
refactor: 将SceneView拆分为Scene和Game两个独立窗口
...
- 新增GameViewPanel作为独立窗口
- 移除SceneViewPanel中的TabBar
- Scene和Game现在像Console/Project一样并排显示
2026-03-12 19:03:32 +08:00
6e12efb67e
fix: 修复多个UI框架问题
...
- 修复 InspectorPanel InputText 使用 data()/capacity() 的错误
- 修复未使用变量警告
- 修复 ProjectManager 路径重复拼接 bug (Assets/Assets)
- 返回按钮在 Assets 目录时禁用但保持显示
- 删除 ProjectPanel 创建按钮,调整 Refresh 位置
- 修复 ProjectPanel 搜索过滤时的 ID 冲突
- 修复 InspectorPanel CollapsingHeader ID 冲突
2026-03-12 18:58:06 +08:00
da7f19e9e8
隐藏ImGui dockspace标题栏按钮
2026-03-12 18:38:31 +08:00
65908526da
修复HierarchyPanel:空白区域右键菜单和拖拽到根目录功能
...
- 将右键菜单移到Child窗口内部,修复空白区域右键不弹出菜单的问题
- 添加InvisibleButton作为拖放目标,支持将实体拖到根级别
2026-03-12 18:12:50 +08:00
4bcd1055dd
完善HierarchyPanel功能:右键菜单、拖拽排序、搜索过滤、重命名、快捷键
...
右键菜单:
- Create: Empty Object, Camera, Light, Cube, Sphere, Plane
- Rename (F2), Delete (Del)
- Copy (Ctrl+C), Paste (Ctrl+V), Duplicate (Ctrl+D)
拖拽排序:
- 支持拖拽实体到另一个实体下成为子节点
- 自动防止循环父子关系
搜索过滤:
- 顶部搜索框实时过滤实体
双击重命名:
- 双击实体名称进入编辑模式
键盘快捷键:
- Delete: 删除选中实体
- F2: 重命名
- Ctrl+C/V/D: 复制/粘贴/复制
2026-03-12 17:54:59 +08:00
c1473d2d39
重构架构:引入EventSystem、EntityID、SelectionManager
...
- 新增 Event 系统,支持面板间解耦通信
- 用 EntityID 替代裸指针,解决悬空指针问题
- 拆分 SelectionManager 管理选择状态
- SceneManager 使用 EntityID 和 unordered_map 存储
- HierarchyPanel/InspectorPanel 使用事件系统
2026-03-12 17:43:13 +08:00
f8fed72cb7
改进ProjectPanel右键菜单交互逻辑
2026-03-12 17:34:39 +08:00
64dd8339dd
完善Project面板功能:搜索框、创建文件夹、右键菜单、中文路径支持
2026-03-12 17:07:37 +08:00
a2f3db8718
重构UI架构:分离数据模型和显示逻辑
...
- 新增 Core 模块:GameObject、LogEntry、AssetItem 数据模型
- 新增 Managers 模块:SceneManager、LogSystem、ProjectManager
- Panel 层只负责显示,不再持有数据
- 解耦 HierarchyPanel 和 InspectorPanel 之间的直接依赖
2026-03-12 16:13:34 +08:00
7d3e3b464d
优化UI主题配色为灰色调,改进底部面板Tab布局
2026-03-12 16:05:14 +08:00
44880f03c0
添加D3D12 ImGui编辑器UI框架
2026-03-12 15:39:40 +08:00
e98093da94
更新counter.py适配项目结构
2026-03-12 02:41:26 +08:00
c992e3da24
添加开题报告和任务书文档
2026-03-12 02:36:17 +08:00
a6b73245e4
添加深入方向规划文档
2026-03-12 02:34:11 +08:00
d71099559c
调整相机位置和移除阴影随机抖动
2026-03-12 02:11:26 +08:00
91b15e9d6c
更新README文档
2026-03-12 01:58:17 +08:00
cfdf2c749f
移除Unity参考代码
2026-03-12 01:57:20 +08:00
6ad7b022fa
统一体积渲染算法与Unity版本一致
2026-03-12 01:56:30 +08:00
cf466e9b25
移除线框包围盒渲染代码
2026-03-12 01:42:27 +08:00
c7a8b50149
添加体积阴影和光照:统一与Unity版本一致
2026-03-12 01:38:23 +08:00
00f17ddd62
优化体积渲染:添加 phase_function 和修正累积公式
...
新增功能:
- 添加 phase_function()(返回 1.0)
- 使用 Unity 的累积公式:Sint = (S - S * exp(-sigmaE * step)) / sigmaE
- 添加 sigmaE 避免除零
与 Unity 版本的主要差异:
- 缺少 volumetric_shadow 体积阴影
- 缺少 ambient_light 环境光
- 缺少 acc_density 累积限制
- 缺少 Gamma 校正
2026-03-12 00:42:28 +08:00
81469f157e
完善体积云渲染:添加旋转和参数优化
...
新增功能:
- 添加云的旋转动画(绕 Y 轴)
- 修复 HDDA 在旋转坐标系中的坐标转换问题
参数优化:
- tmax: 1000 → 5000(修复远处云消失的问题)
- MaxSteps: 500 → 2000
- StepSize: 0.5 → 2.0
- DensityScale: 0.05 → 0.1
- 相机位置调整到 z=-1200
已知问题:
- 缺少光照计算(phase_function 和 volumetric_shadow)
- 渲染结果比 Unity 版本更亮
2026-03-11 23:05:43 +08:00
3cf818e27b
修复回溯逻辑:回溯后重新采样
...
修复内容:回溯后添加 continue,重新采样回溯位置,
而不是直接执行累积代码
2026-03-11 22:37:51 +08:00
f3fd9f813e
调整渲染参数
...
- tmin 从 0.1 改为 0.01(相机近平面)
- MaxSteps 从 128 增加到 500
- DensityScale 从 0.01 调整到 0.05
- 相机位置调整到 z=-800
2026-03-11 22:34:55 +08:00
412334cf74
修复体积云被切割问题:移除边界框限制
...
问题:之前的 intersectBox 限制了射线采样范围,
导致靠近相机的一侧云被切掉
修复:移除边界框检测,直接使用相机裁剪平面 [0.1, 1000]
让 HDDA 树遍历器自己处理空区域
效果:体积云渲染完整,不再有切割感
2026-03-11 22:17:49 +08:00
79ee8d0492
优化体积渲染:使用 HDDA 树遍历器
...
改进内容:
1. 添加 get_hdda_hit 函数,使用 pnanovdb_hdda_tree_marcher
2. 添加 get_dim_coord 函数,检测空区域维度
3. 优化 ray marching:
- 先用 HDDA 找到第一个有数据的点
- 遍历中检测 dim,跳过空区域
- 回溯机制避免跳过有效数据
效果:体积云渲染更完整,不再是只有框表面有数据
2026-03-11 22:11:04 +08:00
fa50179d00
实现 NanoVDB 体积云渲染
...
完成步骤2:读取 NanoVDB 密度并渲染体积云
修改内容:
1. NanoVDBLoader: 添加 voxel_size 输出用于调试
2. volume.hlsl: 实现完整的 ray marching 体积渲染
- 初始化 NanoVDB 访问器
- 密度采样函数
- 光线步进和累积
3. wireframe.hlsl: 新增边界框线框着色器
4. main.cpp:
- 移动相机到云的外部
- 添加独立的常量缓冲区避免冲突
- 同时渲染体积云和边界框
已知问题:
- 边界框位置计算需要改进
- bunny.nvdb 渲染效果不佳
- 需要进一步优化密度和步进参数
2026-03-11 21:51:50 +08:00
859b851842
实现全屏四边形 Ray Marching 体积渲染基础
...
步骤 1 完成:
1. 创建全屏四边形顶点数据
2. 实现 Ray Marching 着色器:
- 从相机发射光线
- 光线与边界框相交检测
- 固定密度采样
- Alpha 混合输出
3. 添加 CreateQuadPSO 函数
4. 更新渲染管线
验证结果:
- 整个背景变成淡蓝色
- Ray marching 基础逻辑工作正常
2026-03-11 20:52:56 +08:00
1e8c3710a5
调整边界框位置到相机前方 z=80
2026-03-11 20:38:51 +08:00
af3b61a45a
实现 NanoVDB 边界框可视化
...
修改内容:
1. NanoVDBLoader 添加边界框信息读取 (worldBBox[6])
2. BattleFireDirect 添加 Volume 渲染相关函数:
- InitVolumeRootSignature(): 体积渲染的 root signature
- CreateVolumePSO(): 线框模式 PSO
3. main.cpp:
- 打印 NanoVDB 边界框信息
- 创建立方体网格表示边界框
- 渲染绿色线框立方体
4. 修复 CreateShaderFromFile 支持 #include
5. 修复 volume.hlsl 使用 32 位地址模式
验证结果:
- 成功显示 NanoVDB 边界框线框
- 着色器能正确读取 NanoVDB 数据
2026-03-11 20:32:54 +08:00
bc58abc98f
添加 NanoVDB 体积渲染着色器
...
1. 复制 PNanoVDB.hlsl 到 Res/Shader/
- GPU 端读取 NanoVDB 数据的核心库
2. 创建 volume.hlsl 体积渲染着色器
- 包含 VS 和 PS 入口
- 读取 NanoVDB 边界框数据
- 已通过 fxc 编译验证
2026-03-11 20:14:49 +08:00
15a9a31faf
重构:将 NanoVDB 加载改为固定初始化步骤
...
修改内容:
1. 移除 RunNanoVDBTest 测试函数
2. NanoVDB 加载现在作为程序初始化的标准步骤
3. 简化代码流程,直接调用 LoadNanoVDB
4. 保留调试输出便于排查问题
2026-03-11 20:06:03 +08:00
d1a9530b0f
修复 NanoVDB 加载后渲染黑屏问题
...
问题原因:
1. RunNanoVDBTest 在 LoadNanoVDB 之后重复调用了 EndCommandList(),
而 LoadNanoVDB 内部已经完整处理了命令列表生命周期
2. 命令列表状态混乱导致后续渲染失效
修复内容:
1. 移除 RunNanoVDBTest 中重复的 EndCommandList/WaitForCompletion 调用
2. 在 main.cpp 添加控制台输出重定向,方便调试
3. 添加 run.bat 启动脚本
2026-03-11 20:01:05 +08:00
926e9a6b75
Fix NanoVDB upload buffer early release causing white screen
2026-03-11 19:14:21 +08:00
8a800f99a2
Fix NanoVDBLoader: reset command list before use
2026-03-11 18:13:36 +08:00
436ead8b34
Update NanoVDBLoader to use single bunny.nvdb file
2026-03-11 18:04:07 +08:00