How can I make a shader to fill a bottle?

How many different meshes are we talking about?

I guess you can make duplicate shape of liquid for every mesh you’ll have, create a volumetric material and change its visibility based on the desired liquid height, but such a method has more drawbacks than advantages: 1. You’ll spend time creating a volumetric material that doesn’t suck; 2. Volumetric materials are quite expensive and since you don’t need the volume anyway it seems like an overkill; 3. You still need to create additional meshed for each vessel shape.

So if it’s ten or so meshes, I’d personally go with curves. If we’re talking hundreds, it’s different. But it’s up to you.