Download

Deffered Decals vs Vertex Painting

Hello everyone!
I’m working hard on my project , always trying to pay attention to performance and maintaining the lowest possible draw calls.
For this reason, since the game i’m making will have extensive use of decals/marks (on walls, floors etc), i would ask: which is the best choiche for performance beetween Deffered Decals or Vertex Painting?
I did a quick search, and it seems that a high use of Vertex Painting is not recommended, anyone can confirm this?
Any given advice is welcome!

I would like to know that too… I was thinking about having maybe 50+ decals on my scene at the same time. Not sure if it’s a good idea.

My idea was to use decals to put rust/dust/wear on some objects instead of vertex painting. I have more control with decals imo.

Bump :slight_smile:
Want to know too.
In our VR project we use a lot of decals, but thinking about vertex paints for some of effects (cause in profiler decals sometimes take a lot of time( ).
And what difference in Decals vs Vertex paint? seems Decals make mesh render twice? does Vertex paint do same? or can they can be baked?

Can anyone tell me - what is more effective for GPU perfomance?

yeap. sorry for my English.

Well, if you use Instanced Static Meshes that already have Vertex painting, you have vertex paint with the benefit of Instanced Static Meshes. Your meshes will look the same though (can broken up with Material nodes like world Position or Noise)
I prefer Vertex Paint.

Honestly, I would recommend both. Because they both have places where they shine and places where they fall short. I think one of the best examples of this is how much area of the mesh is it covering? If it’s some occasional leaking or graffiti, you’ll likely be better off using a decal, because vertex painting requires a sizeably larger amount of instructions for such a finite area. However, if it’s for covering the entire roof of a building with snow, you’ll likely want to use vertex paint, as decals’ performance hit is directly proportional to the amount of pixels it’s covering, a caveat it shares with particle systems.

Another thing you might want to take a look at is using vertex painting in conjunction with the UE4’s relatively new “Merge Actors” options. One of the coolest things about it is that when merging multiple static meshes, you are given the option to merge all of their textures into a new one, but there’s another option that when enabled will store any vertex paint data on the meshes being merged and bake it into the previously mentioned texture atlas. In my tests, it’s a win on pretty much every front. Less draw cells, fewer texture fetches, and you can still keep the custom vertex paint data without the performance cost.

But like I said before, you should be using both. Never limit yourself to a single method of achieving something just because it appears more appealing in that moment. The best artists always consider all their options for different scenarios (: