Some time ago I made a feature to add Decals to my levels, but that’s only good for static decoration.
So I used the same technique to attach decals to the scene during game play.
Here is in action with my pet project where I test stuff (not a real game):
Something you can notice is decals don’t just attach on walls (bullet holes and blood splats) but also to animated meshes.
I had to make a hack to make it work, first I copy the necessary vertex buffers (BoneIndex, BoneWeight, BindPosePosition and BindPoseNormal) to the new mesh which I attach it to the node where the animation is and finally I disable Hardware skinning for that particular SkinningControl so it will also update the decal mesh from then on.
The assumption is that just a few animated models will have decals at a time (e.g. injured NPCs) so the performance lost is not that bad (there’s probably a better way but I’m happy with this so far).