XCVolumeRenderer

基于 DirectX 12 的体积渲染器,使用 NanoVDB 格式实现云、烟雾等体积数据的实时渲染。

技术栈

  • 渲染API: DirectX 12
  • 语言: 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+

构建步骤

# 创建并进入构建目录
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 格式
Description
No description provided
Readme 1.4 GiB
Languages
C++ 46.4%
HTML 38%
C 9.7%
C# 1.3%
GLSL 1%
Other 3.4%