|
|
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 |
|
|
|
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 |
|
|
|
10a67d57c4
|
Initial commit
|
2026-03-11 17:38:11 +08:00 |
|