I investigated it and found that the following primitive data flag test in BasePassPixelShader.usf fails:
(GetPrimitiveData(MaterialParameters).Flags & PRIMITIVE_SCENE_DATA_FLAG_DECAL_RECEIVER);
The corresponding bit contains a nan instead of a 0 (Line 1080 in 5.0.3)
Included a render doc capture in which:
Event 1339 draws a procedural mesh (Green and pinkish mesh)
Event 1358 draws the static mesh (white mesh).
Both these meshes have “Receives Decals” turned off.
The problem does not occur when the material has the decal response set to off.
Included Test Project:
1. Open provided test project
2. Open DecalTest map if not already open
3. Observe the procedural mesh influenced by orange decal even with “Receives Decals“ turned off in the component while normal static mesh is not affected by decal as expected.
1. Open a map
2. Create a blueprint actor with a procedural mesh component, add functionality to copy from mesh and initialize procedural mesh with a basic cube
3. Add a decal actor to the world
4. Create a decal material with a base color other than black and assign to decal actor
5. Add a normal static mesh cube to the scene
6. Move procedural mesh and static mesh within decal bounds
7. Disable “Receives Decals” on both mesh components and observe difference
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-167164 in the post.