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

2.9 KiB
Raw Blame History

BuiltinDepthStylePassBase

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

类型: class

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

描述: BuiltinDepthOnlyPassBuiltinShadowCasterPass 共享的深度风格 pass 基类,负责懒初始化 shader / pipeline / per-object descriptor并按 RenderPass 约定执行一次只写深度的场景重绘。

概览

2026-04-10 同步补充

以下内容以当前 BuiltinDepthStylePassBase.h/.cpp 为准:

  • PipelineStateKey 现在显式包含 sampleCountsampleQuality,因此 depth-style pipeline cache 不再只按 render state、shader、format 和 keyword 签名区分。
  • 自动状态切换现在同时覆盖 color 与 depth进入 pass 前会读取 GetColorStateBefore() / GetDepthStateBefore(),结束后恢复到 GetColorStateAfter() / GetDepthStateAfter()
  • depth-style surface 兼容性现在按 IsDepthStyleCompatibleSurface(...) 判断,要求的是“零或一个颜色附件 + 已知 depth format + 合法 sample 描述”,而不是早期那种更死板的固定表述。

BuiltinDepthStylePassBase 把两类 pass 的公共逻辑集中在一起:

  • BuiltinMaterialPass 解析可兼容的 shader pass。
  • 复用 RenderResourceCache 上传 mesh GPU 副本。
  • 只接受“单个 PerObject 常量缓冲”这一类资源绑定计划。
  • Execute 中统一处理 RenderSurface 检查、viewport/scissor、清屏、绘制循环和颜色附件状态切换。
  • 虽然是“深度风格” pass当前执行框架仍要求 RenderSurface 同时提供 colorAttachments[0]depthAttachment,并沿用颜色 clear / transition 路径。

派生类当前只负责决定:

  • 构造时注入哪种 builtin shader 路径。
  • GetName() 返回什么名字。
  • 是否通过 ShouldRenderVisibleItem 进一步过滤可见物体。

公开与受保护方法

成员 说明
Constructor 受保护构造函数,保存 pass 类型与 builtin shader 路径。
Destructor 析构时调用 Shutdown
BuildCommonInputLayout 返回深度风格 pass 共用的 StaticMeshVertex 输入布局。
Initialize 懒初始化资源。
Shutdown 释放缓存的 shader、pipeline、descriptor 和 mesh GPU 副本。
Execute 执行一次深度风格场景重绘。
ShouldRenderVisibleItem 派生类可覆写的可见物体过滤点。

相关文档