Files
XCEngine/docs/api/XCEngine/Rendering/RenderMaterialUtility/ResolveSchemaMaterialConstantPayload.md

2.4 KiB
Raw Blame History

ResolveSchemaMaterialConstantPayload

命名空间: XCEngine::Rendering

类型: function

头文件: XCEngine/Rendering/Materials/RenderMaterialResolve.h

签名

MaterialConstantPayloadView ResolveSchemaMaterialConstantPayload(const Resources::Material* material);

作用

返回当前 Material 已按 shader schema 生成的逐材质 constant-buffer payload 与布局视图。

当前实现行为

当前实现按下面顺序判定:

  1. 如果 material == nullptr,返回无效 view。
  2. 如果 material->GetShader() == nullptr,返回无效 view。
  3. 读取 material->GetConstantLayout()material->GetConstantBufferData()
  4. 只要布局数组或常量缓冲数组任一为空,都返回无效 view。
  5. 否则先构造:
MaterialConstantLayoutView layoutView = {};
layoutView.fields = constantLayout.Data();
layoutView.count = constantLayout.Size();
layoutView.size = constantBufferData.Size();
  1. 最终返回:
{ constantBufferData.Data(), constantBufferData.Size(), layoutView }

当前语义要点

  • 这条 helper 不做重新打包,也不推断 fallback 字段;它只暴露 Material 当前已经准备好的字节块。
  • 返回值里的 layout 直接借用 Material::GetConstantLayout(),不会复制字段描述。
  • 返回值是借用视图,不拥有 Material 内部数组。
  • 它只处理 Material constant buffer payload不解析纹理、采样器或 render state。

当前调用链

测试覆盖

tests/Rendering/unit/test_render_scene_extractor.cpp 中的 RenderMaterialUtility_Test.ExposesSchemaDrivenMaterialConstantPayload 当前验证了它会返回有效 payload并且字节内容与材质默认 _BaseColor 常量一致。

相关文档