Two layers of blobs are generated using a signed distance field. The blob closer to the camera refracts light based on how thick its surface is at the point where the ray enters its surface.
This runs almost entirely on the GPU / via fragment shader. Created with Island, real-time.