// Copyright FlecsProj. All Rights Reserved. #pragma once #include "CoreMinimal.h" class UMaterial; struct FShaderLabModel; /** * Editor-only builder that turns a parsed FShaderLabModel into a UMaterial expression graph: * property parameter nodes + a Custom HLSL node for the Surface body wired into a Substrate * Slab BSDF (-> FrontMaterial), plus an optional Vertex Custom node for WPO/displacement/UVs. * * The build is fully deterministic for a given model (node creation order, input/output order, * generated HLSL) so the cook-time and editor-time graphs — and therefore the baked uniform * expression set — match. */ class USHADERLABEDITOR_API FShaderLabGraphBuilder { public: /** * Clear `Material`'s expression graph and rebuild it from `Model`, applying settings * (domain/blend/two-sided) and updating cached expression data. Does NOT trigger shader * compilation — callers decide when to compile. Returns false with diagnostics on failure. */ static bool BuildInto(UMaterial& Material, const FShaderLabModel& Model, TArray& OutErrors); };