Steps to Reproduce
  1. Make sure you have Nanite Dynamic Tessellation enabled (add for example in DefaultEngine.ini under [/Script/Engine.RendererSettings] )
    r.Nanite.AllowTessellation=1
    r.Nanite.Tessellation=1
  2. Create a Material asset
    1. Enable 'Use Material Attributes' on the material
    2. Drop down a Material Attribute Layers node and connect to the material output
  3. Create a Material Layer asset
    1. Add Displacement to the SetMaterialAttributes node
    2. Create a Constant node and set some value (0.5) and connect to Displacement pin
  4. Create a Material Instance asset
    1. In the Layer Parameters tab, assign the created Material Layer to the Background Layer Asset slot
  5. Drop a mesh in to the scene (make sure to enable Nanite on the Static Mesh)
  6. Assign created Material to mesh

Issue seems to comes from the base material not knowing about the displacement pin being connected in the layers, and the fact that when we query a material resources for 'is pin connected' we always look at the base material cached expressions and not the material instance. 

 

Workaround is to attach default material layers on the Material Attributes Layers or to pipe through the displacement pin from the Material Attributes Layers.

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-201675 in the post.

0
Login to Vote

Backlogged
ComponentUE - Graphics Features - Nanite
Affects Versions5.3
CreatedDec 1, 2023
UpdatedDec 7, 2023