Multimasking opacity in Dbuffer decals not properly implemented

With multimasking opacity in dbuffer decals, I’m talking about this: Metalness in DBuffer decals - Feedback for Unreal Engine team - Unreal Engine Forums

Thing is, this change appears to have been officially implemented. 4.21 official release notes talk about metalness, specular, and emissive channels being added to dbuffer decal materials, which works.

However, when taking a look at the shader files (/Engine/Shaders/Private/DecalCommon.ush and MeshDecals.usf), it also appears that multimasking has been implemented (there is a float3 multiopacity parameter, and multiple comments refer to the .x affecting color, .y affecting normal, and .z affecting metal/spec/rough), however, it doesn’t work as that multiopacity parameter is casted from just a float, from the material opacity. If you input a 3vector into the opacity material output in editor, you can see that it is only affected by the red channel.

In other words, there seems to be support for multimasking but it doesn’t work as the Opacity material output only seems to support one channel, and not the three required.

Is this a bug, or it simply hasn’t been implemented yet?


We’ve recently made a switch to a new bug reporting method using a more structured form. Please visit the link below for more details and report the issue using the new Bug Submission Form. Feel free to continue to use this thread for community discussion around the issue.