Files
XCEngine/docs/api/XCEngine/Rendering/Passes/BuiltinVolumetricPass/BuiltinVolumetricPass.md

2.5 KiB
Raw Blame History

BuiltinVolumetricPass

命名空间: XCEngine::Rendering::Passes

类型: class

头文件: XCEngine/Rendering/Passes/BuiltinVolumetricPass.h

描述: 内建体积绘制 pass使用 cube 代理网格、材质 shader pass 和体积资源描述符把可见体积绘制到当前颜色目标。

概览

BuiltinVolumetricPass 是当前体积渲染链路的核心执行器。 它继承自 RenderPass,但和普通 mesh pass 相比有几处明显特点:

  • 几何始终来自 builtin cube mesh而不是体积资源自带网格
  • 着色器必须声明 PerObjectVolumeField 资源绑定
  • descriptor set 与 pipeline state 会按 shader pass、材质和 volume SRV 动态缓存

当前执行流程

  1. Initialize / EnsureInitialized(...) 加载 builtin cube mesh
  2. Execute 校验 RenderSurface 是否具备单颜色附件和深度附件
  3. 逐个遍历 sceneData.visibleVolumes
  4. 为每个体积解析兼容的 volumetric shader pass
  5. 构建或复用 pipeline layout、pipeline state 和动态 descriptor set
  6. 把体积 bounds、材质常量、主方向光常量与 volume SRV 绑定后提交 draw

关键内部状态

状态 说明
m_builtinCubeMesh 所有体积绘制共用的 cube proxy mesh
m_resourceCache 复用 mesh 与 volume GPU 资源
m_passResourceLayouts 按 shader/pass 缓存资源布局
m_pipelineStates 按 render state、shader、格式与 keyword 签名缓存 pipeline
m_dynamicDescriptorSets 按对象、材质、volume field 缓存动态描述符集

当前实现边界

  • 只处理 VisibleVolumeItem
  • 只接受 VolumeStorageKind::NanoVDB
  • 当前要求 surface 为“单颜色附件 + 深度附件”模型
  • 若 shader pass 未声明 PerObjectVolumeField 绑定,会直接失败而不是做 legacy fallback

公开方法

方法 说明
BuildInputLayout 返回体积 pass 使用的顶点布局
GetName 返回 pass 名称
Initialize 预热 builtin cube mesh 等资源
Execute 绘制所有可见体积
Shutdown 销毁缓存的 RHI 资源

相关文档