Alternatively you can assign a different material to bubbles with different index of refraction and use a nested priority to define what is being cut-out from what.
for instance here, I have a glass, a liquid, an ice and a bubbles all done as a separate geometry and all have different materials with different properties (not just different index of refraction but also surface properties) and to define what is what when is looked through the transparent object - I used nested priority feature (pretty cool feature btw)
The way it works is that the lower the value of nested priority the more power over other objects this current object has.
For example in my case I've assigned nested priority of:
"0" to the glass and to the ice cubes (since those never intersect, as I've positioned them manually)
then liquid (well, whiskey) inside the glass had to be gutted out by, pretty much, everything (glass, ice, bubbles) so I gave it a nested priority of "3"
then bubbles got nested priority of "1".
So basically glass and ice, whenever intersected with bubbles or liquid - will win (read - you will see properties of glass / ice)
then bubble will loose to glass and ice but will win over liquid.
It might sounds complex but once you logically think - it's pretty simple and straightforward.
Hope it helps, feel free to reach out if you got more questions
P.S. - yep - I've used Maxwell scatter for those bubbles .. ..and used density map to define where exactly I want those bubbles to be
You do not have the required permissions to view the files attached to this post.