Scene Setup

The overall 3D scene is composed of a very simple setup with a sphere geometry representing a static soap bubble and a smoothed out grid with slight soft point displacement acting as a ground which will be textured as snow later on.


Snow Shader's displacement values are driven by a mixture of noise functions to give the geometry surface a rough/bumpy look. The base shader is composed of a simple subsurface scatter material which is then overlayed with a "Car Paint" material node to simulate tiny reflective specs on the snowy surface.

The soap bubble is a simple thin-walled geometry shader with a thin film layer multiplied by Fresnel function. This Fresnel masking gives the geometry outline its colorful appearance, but for the camera view rays that are closely aligned with the geometry normals, the "soapy" thin film texture will be transparent.

Finally the ice frost shader is a basic refractive material with its IOR set to around 1.3.

Simulation / Animation

Frost patterns were generated using my custom frost generation tool. If you'd like to learn more about it you can visit Frosty FX page.

The overall wobbly bubble motion is driven by positional and time based noise functions. In addition the generated frost geometry creates a [0-1] float attribute on the nearby sphere geometry. This attribute is a scalar that in the end gets multiplied by the noise function that drives the overall bubble movement. As a result the geometry that is close to generated frost will not move and will appear "frozen" as well as will prevent the sphere-frost intersection since the frost simulation is running on the static sphere geometry.