Epic should empower deferred decals - they are the future, they just need some more data

I saw in the FAQ page that epic is “investigating deprecating the deferred decals”, presumably in favor of mesh decals, because

Mesh Decals afford you decals that do not follow a simple projection and instead can be used with geometry that wraps around edges, being used with spline meshes, ultimately enhancing the look of your characters

However with the current workflow (as suggested in the wiki page) mesh decals incur a huge production cost, in that they require mesh assets to be imported with wrapping geometries.
This:

  1. Requires way more production work
  2. Restricts placement of mesh decals to certain points in the geometry
  3. Extensively less flexible than projected deferred decals

Instead, all Epic needs to do to with deferred decals is:

  1. Let deferred decals read a PreSkinnedPosition SceneTexture
  2. Let deferred decals read a primitive ID uint written during the depth buffer pass for masking purpose

And then deferred decals will have all the data they need to correctly project on any surface, including animated skeletal meshes, since we can acquire UVs with extremely basic linear algebra if we have PreSkinnedPosition data.

Deferred decals are the future - because they are modular in nature, they are geometry-independent, you can place them anywhere, they’re performant, and reusable across different scenarios. They also answer a way larger list of use cases for more dynamic gameplay that occurs at runtime, such as drawing bullet holes, or explosion scorch marks, or blood puddles (how will all of that work with mesh decals?)

Deferred decals are currently bottlenecked by two fatal flaws: 1. there is no scalable solution for masking them so they only a specific object (solutions such as stencil masking via custom depth buffer are not scalable due to the non-parallel writes to the custom depth buffer), and 2. there is no way to easily project them on complex geometries. Both are solved by the two tiny engine tweaks that I suggested.

Epic, if you’re reading this, please get your rendering programmers on top of this - it’s two small tasks that will make all the difference.