UE4.27 How make certain Decals ignore Player mesh?

How can I make Decals that are for Level effects - ignore the Player mesh - without disabling ALL decals for Player? (Because I want to later use different “blood” decals that do shine on the player.)

I looked and found no answers. Is there a way in UE4.27? Idk what tech/subject “Decals” are considered…

“I have done a lot of searching and cannot find a way for an actor to block one decal but not others. It’s all or nothing.”

Details: Im testing someone’s demo level (that I bought with an asset). They have a Decal actor with moss, that ‘shines’ on the walls. (It appears to be a Decal Volume?)
But it also shines on my Player (do not want, looks weird).


.

The walls are a Spline mesh cave, and whatever tech they use (Blue mesh, not Teal), I cannot VertexPaint the Material/Blue mesh. Thus I must use Decals to add moss/grime.

  • The walls curve, thus the Decal Volume (rectangle) sticks out into the Player’s path.

  • Perhaps I need to make the Volume smaller, and add another piece - rotate away from the Player’s path? But isnt there an easier way.

  • Because [I did that now] but will have close Player paths in my own level (meaning the Volumes need to be big enough to cover walls/floors but still not hit Player).

Thank you.

Also forum bug: I chose Rendering topic, but then I cant type in Tags of Materials or Decals - when Decals are a Rendering tech. This should be fixed.

In one Decal Material you need to set DBuffer Decal Blend Mode:
image

And another to Translucent

Then in every material that should recieve the DBuffer decal, you need to enable Responce Channels:
image
Translucent mode Decals will be projected on everything.

Keep in mind, UE5 changes how Decals are rendered, so this may not work after migration to UE5.

2 Likes

Thanks for the pics to see where to go. But Im stuck.

  1. Let’s call the “DBuffer Decal” Material as Moss (which I only want on the Terrain meshes - but not Player - thus it needs to be set to DBuffer, correct?).

  2. And call the “Translucent” Decal Material as Blood (since it would splatter on the Terrain AND player - thus Im not editing to change anything about that Decal).

  3. So I opened the Moss Decal Material > go to Decal Blend Mode = I set to “DBuffer Translucent Color” - because it has no Normal or Rough pins. Is this correct so far? Or it doesnt matter and should be “Dbuffer Trans Color,Normal,Rough…”?


    .
    .

  1. Then I opened the Material of the walls (that shall receive the Moss Decal). How do I “enable Response Channels”? Like R G B channels?

4b. I only see Decal Response (DBuffer) > and I set it to “Color” (since the Moss Decal was also set to Color);
And “Color” [channel?] is different than the default of: “Color Normal Rough…” channel, correct?

But this Decal still affects my Player’s Materials instead of only the Wall Mat. So im stuck on step #4.

2 Likes

If you don’t want to receive DBuffer Decals by the Player, make sure his DBuffer material set to Response None.
“Generic” decals will still affect player.

Response tells which of the channels to read. Color means only Base Color will be read (IIRC)
There are Only 3 channels that could be read now - Normal Roughness and Color.

Recap:

There are:

  • Generic Decal Group
  • DBuffer Decal Group

Generic Decals Affect Evetything
DBuffer Decal Affect Only Selected Materials

Pick decals that need to be filtered and set them to be DBuffer ones.
Pick Materials that need to receive DBuffer Decals and set them to proper Response channel (Color Normal Roughness).

1 Like
  1. Ok it works, thanks. I opened Player (mesh) > select one of his Material.
  2. Material properties > Set Decal Response (DBuffer) channel to None.
  3. Now this Player Material does not receives the decal (which is set to DBuffer mode) in game.

.
But now I have to edit 100 Player materials. Isn’t there a better way?

All my Player materials have DBuffer on by default. So I tried the opposite, and set the Decal Material to no DBuffer (none), and set my Terrain Mat to no DBuffer. (And Player Mat has Dbuffer on.) Yet the non DBuffer decal shows on everything: Player and Terrain.

Or is there a way for better named “Channels” like checkboxs in the “Decal” Property section (of all Actors): R = terrain Materials group will use this channel of decal data, G = Player Materials use this, B = both use this?
I read old comments and this is what people asked for years ago. Yet I only see 2 modes: none or DBuffer, yet this involves changing a Pulldown list (of all or none), instead of an easy checkbox to select matching channels.

But now I have to edit 100 Player materials. Isn’t there a better way?

I’m not aware of such. Even this method is a “hack”.

Plus this method will only works in UE4. In UE5 you will need to rework the materials again (and it’s not yet settled if the decals will work the way they did before).

Non DBuffer decals will always be rendered on every mesh that is set to accept decals. You only can exclude mesh from receiving the decals completely. But that will remove DBuffer decals from it as well.

Ok. Thanks for the setup and modern write up.

You did say this at the beginning. But I tried in reverse just to see. Now that I know that this is the best atm, then it’s easier to commit to. Ty.