Thanks vebski ! I’ve removed “Output.Position.z += 0.0001f * Output.Position.w;” Now it seems to work perfectly for what I need.
Here’s an exemple of great mesh decals in Blizzard Overwatch :
As you can see, they have big offsets probably to avoid Z-fighting but in game you don’t see it if you don’t look really close.