I think that is pretty normal for a two year old. My pediatrician had told me to expect this at our 18 mo visit already, but it wasn't until a few weeks ago that my daughter started to refuse things that she used to like. It's a color/texture thing that will probably go away, if you don't turn it into a power struggle.
I have a few suggestions:
- start serving only or mostly real food, whole food at home, skip the pre-processed, pre-seasoned stuff unless you are in a pinch
- serve different items separately, maybe get a partitioned plate. It pretty common that toddler decide that won't eat things that are mixed together, but they will eat both items individually. My daughter used to dislike pasta, until I came up with the idea to serve the tomato sauce on the side... after a few weeks she was ok with eating it all mixed in
- just keep on offering, studies have shown that children who are offered healthy foods over and over will eventually eat them, no pressure, don't even ask him to try, just put it on his plate to take or leave (most children need to offered food items 35+ times before they will eat them)
In our house we eat what is served, unless it's something really weird or new or too spicy. I work full time and don't have the time or energy to cook two full meals.
Whatever she does not like, stays on her plate and that's fine, we don't make a big deal. A couple of occasions she will only eat the meat or fish, sometimes she will only eat the rice - I figure it all evens out. She's not a big fan of cooked veggies, so we have a side salad and she likes to snack on raw veggies.
As for pediasure - I thought about giving that to her for one hot minute, until I looked at the ingredient list. It is basically sugar whipped up with oil and artificial flavor. They add some vitamins and call it a meal. GROSS!
Unless you son is underweight and needs to bulk up, I would stay away from it - it makes it only more difficult to get him used to real food.