I've been through this and when I got back from hols the other week I decided I'd had enough.
So...
When I called DSs to the table, I did it once. DS2 didn't show up, but I didn't say anything else (I also silenced the other 2 saying 'why isn't DS2 here?').
I ate my meal without reference to the DSs, but chatted normally to DH.
When we'd all stopped eating, I cleared away (including the uneaten plate that DS2 had not even seen) and threw all uneaten food away.
I put a pudding in front of DS3 who had eaten a decent amount, but not DS1 who had left the table (House rule-don't get down until the meal is over) and not DS2 who had never come to the table. I ignored DS1 and 2 clamouring for pudding.
I repeated this for 4 more meal-times.
All 3 Dss now eat the food I provide, and meal times have been pleasurable and stress-free for nearly 2 weeks. Previous to this, I've been known to eat in the living room because I couldn't stant to sit and watch them maul the food I've spent so long making.
At first, DS2 (who's been the worst offender for quite a while) behaved as though his ship had come in, but I could see him mulling it over by about lunchtime on day 2, and by Day 3 he ate lunch without complaint. He now eats everything I make, apart from pasta, which he really doesn't like. Tonight, I was happy to put his meatballs on a slice of bread when we all had spaghetti. He wolfed it down and finished first!
Don't know if it would work for you, but it felt very empowering to just throw those dinners away without a word being spoken!
By the way, any child who refuses meals has no access to anything but water till the next mealtime in our house! 