实现 NanoVDB 体积云渲染
完成步骤2:读取 NanoVDB 密度并渲染体积云 修改内容: 1. NanoVDBLoader: 添加 voxel_size 输出用于调试 2. volume.hlsl: 实现完整的 ray marching 体积渲染 - 初始化 NanoVDB 访问器 - 密度采样函数 - 光线步进和累积 3. wireframe.hlsl: 新增边界框线框着色器 4. main.cpp: - 移动相机到云的外部 - 添加独立的常量缓冲区避免冲突 - 同时渲染体积云和边界框 已知问题: - 边界框位置计算需要改进 - bunny.nvdb 渲染效果不佳 - 需要进一步优化密度和步进参数
This commit is contained in:
@@ -33,6 +33,9 @@ bool LoadNanoVDB(const char* filePath, NanoVDBData& outData, ID3D12GraphicsComma
|
||||
outData.worldBBox[i] = bboxData[i];
|
||||
}
|
||||
|
||||
double* voxelSizeData = (double*)((char*)bufferData + 608);
|
||||
printf("[NanoVDB] Voxel size: [%.6f, %.6f, %.6f]\n", voxelSizeData[0], voxelSizeData[1], voxelSizeData[2]);
|
||||
|
||||
outData.cpuData = bufferData;
|
||||
outData.byteSize = byteSize;
|
||||
outData.elementCount = elementCount;
|
||||
|
||||
Reference in New Issue
Block a user