FMaterialCachedExpressionData::UpdateForExpressions iterates on all expressions, even for those that are not enabled in a material instance or not even connected to output. This will enable features (such as WPO) that wouldn't be used since the connection may be on a disconnected path, and this can be create performance issues and make it difficult to debug.
This comment in IsGBufferLayoutSupportedForMaterial hints at the confusion: "FMaterialShaderParameters::bHasVertexPositionOffsetConnected means that the material could have WPO".
In other code, the word connected means something else, for example in U*Material::IsPropertyConnected,* it is considered as "is property used and different from the usual default", such as FMaterialResource::IsNonmetal (the connected constant may be a 1 on Metallic pin)
The issue is relevant for decals too: attributes writing is enabled if properties are connected (see ComputeDecalBlendDesc).
Example Material:
[Image Removed]
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-393669 in the post.
| 0 |
| Component | UE - Rendering - Architecture - Materials |
|---|---|
| Target Fix | 6.0 |
| Created | Aug 25, 2026 |
|---|---|
| Updated | Sep 18, 2026 |