# XCVolumeRenderer XCEngine 游戏引擎的体积渲染模块,使用 NanoVDB 格式实现云、烟雾等体积数据的实时渲染。 ## 技术栈 - **模块定位**: XCEngine 游戏引擎的体积渲染功能 - **语言**: C++17 - **构建系统**: CMake - **依赖库**: DirectX 12 SDK, stb_image, NanoVDB ## 项目结构 ``` XCVolumeRenderer/ ├── main.cpp # 主程序入口 ├── BattleFireDirect.cpp/h # DirectX 12 核心渲染实现 ├── NanoVDBLoader.cpp/h # NanoVDB 体积数据加载器 ├── StaticMeshComponent.cpp/h # 静态网格组件 ├── Utils.cpp/h # 工具函数 ├── stbi/ # 图像加载库 ├── Res/ │ ├── Shader/ # HLSL 着色器 │ │ ├── volume.hlsl # 体积渲染着色器 │ │ ├── gs.hlsl # 几何着色器 │ │ └── PNanoVDB.hlsl # NanoVDB GPU 解析 │ ├── Model/ # 模型文件 │ ├── Image/ # 纹理图片 │ └── NanoVDB/ # NanoVDB 体积数据 ├── CMakeLists.txt # CMake 构建配置 └── build/ # 构建目录 ``` ## 构建方法 ### 前置要求 - Windows 10/11 - Visual Studio 2019 或更高版本 - CMake 3.15+ ### 构建步骤 ```bash # 创建并进入构建目录 mkdir build && cd build # 配置项目 cmake .. # 编译 cmake --build . --config Release ``` ### 运行 编译完成后,运行 `XCVolumeRenderer.exe` 或使用 `run.bat` ## 功能特性 ### 核心渲染 - DirectX 12 渲染管线 - 几何着色器(GS)支持 - 纹理映射 - 常量缓冲区(CBV/SRV) ### 体积渲染 - NanoVDB 格式支持 - 光线步进(Ray Marching) - HDDA 空间跳跃加速 - 体积阴影(Volumetric Shadow) - 指数步长抖动采样 - Gamma 校正 ### 参数配置 - DensityScale - 密度缩放 - StepSize - 步进大小 - MaxSteps - 最大步数 - LightDir - 光照方向 - LightSamples - 阴影采样数 ## 资源说明 - 着色器文件位于 `Res/Shader/` 目录 - 模型文件为 `.lhsm` 格式 - 纹理支持 PNG、JPG 格式 - 体积数据支持 NanoVDB `.nvdb` 格式