Commit Graph

1063 Commits

Author SHA1 Message Date
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
65cb78e252 Add NanoVDB to gitignore 2026-03-11 17:56:27 +08:00
f89fb93d17 Add NanoVDBLoader with test support 2026-03-11 17:56:05 +08:00
f3c6fdc303 Add README.md documentation 2026-03-11 17:39:33 +08:00
10a67d57c4 Initial commit 2026-03-11 17:38:11 +08:00