实现 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 数据
This commit is contained in:
2026-03-11 20:32:54 +08:00
parent bc58abc98f
commit af3b61a45a
6 changed files with 184 additions and 3 deletions

View File

@@ -28,6 +28,11 @@ bool LoadNanoVDB(const char* filePath, NanoVDBData& outData, ID3D12GraphicsComma
memcpy(bufferData, gridHandle.buffer().data(), byteSize);
double* bboxData = (double*)((char*)bufferData + 560);
for (int i = 0; i < 6; i++) {
outData.worldBBox[i] = bboxData[i];
}
outData.cpuData = bufferData;
outData.byteSize = byteSize;
outData.elementCount = elementCount;