You can find the paper for this topic here:
addition we add an attribute for Refractive Index and match this with the material settings for IORWe cache the IOR set in the material to determine the bending of rays, you can override this with an attribute or let the material set it itself.
Below are a few examples of different solutions.
In the above examples, the overlapping liquid and glass is most similar to the correct method which uses overlapping but adds the Intersection Priority to the glass and liquid shapes. Notice the change in color for the liquid and how much better it captures the light and refractions. The glass has an Intersection Priority of 1 while the liquid is 2. If we were to add ice cubes those would be 3.
In addition you should add the Refractive Index attribute and match this value with the material settings. The glass is 1.5 and the liquid is 1.33. Failing to set these may cause the render to be incorrect. Adding both parameters will also increase the accuracy of caustic light patterns when using the PxrVCM/PxrUPBP integrators with Trace Light Paths enabled in at least one light.
In some cases you may experience a small dark line where the geometry overlaps. To solve this you can create a Trace Bias attribute on the glass shape. By default this value is 0.0001 but can be increased in very small increments until the artifact is gone. Note that the attribute for Trace Auto Bias must be added to the object and turned off for manual trace bias settings to work unless the global setting for Trace Auto Bias is already off.