The scene above contains balloons that are flying past a window and filling the room with color. This tutorial will show you how to create this caustic balloon effect using a Gobo light filter connected to a spot_light pointing through the window. We will also cover the shading steps used for the balloons. Thanks to Slava Sych for this tutorial.

The scene file can be downloaded here.


Create a camera and point it towards the window as per the image above. Create a skydome_light and connect a physical_sky to its color attribute.

Skydome Light

The settings for the Skydome light used in this example are as follows:

  • exposure: 2.
  • samples: 3.
  • shadow_color (HSV): 4.213, 0.785, 0.053.
  • camera_visibility: 0.
  • transmission_visibility: 0.

Physical Sky

The settings for the physical_sky used in this example are as follows:

  • turbidity: 8.916.
  • elevation: 90.
  • azimuth: 247.229.
  • intensity: 2.
  • sky_tint_color (HSV): 353.299, 0.588, 1.000.
  • sun_tint: 44.261, 0.177, 1.000.


Skydome lighting. The window glass is hidden and shadows are disabled for the balloons.

Spot Light

  • Create a spot_light and place it behind the balloons. Rotate it so that it is pointing through the window.


The settings for the spot_light used in this example are as follows:

  • cone_angle: 144.213.
  • exposure: 19.
  • samples: 3.
  • radius: 44 (for softer shadows).
  • shadow_color (HSV): 13.230, 0.785, 0.019.
  • specular_visibility (Contribution): 0.1.
  • SSS_visibility (Contribution): 0.1.

Spot light positioned behind the balloon shapes

Gobo Filter

Connect a gobo filter to the spot_light.

  • Set the filter_mode to Mix.
  • Increase the density to 0.65.
  • Connect a noise shader to the slide_map of the gobo.

Noise Shader

The settings for the Noise shader used in this example are as follows:

  • octaves: 4.
  • distortion: 1.687.
  • lacunarity: 2.831.
  • scale XYZ: 33 (this value may need to change depending on the size of your scene).
  • coord_space: UV.
  • mode: vector (for RGB color noise).


To further adjust the effect you could try inserting a color_correct shader before the noise shader. In this case, the saturation was adjusted to 1.6.

Final results for the spot_light


Final setup for Gobo filter


Assign a standard_surface to the balloon objects and rename it to BalloonMat.

Balloon Material

The settings for the Balloon material used in this example are as follows:

  • specular_roughness: 0.36.
  • subsurface_weight: 0.5.
  • subsurface_scale: 10.
  • subsurface_type: randomwalk2.


Create a layerRGBA shader and connect it to the base_color, subsurface_color and subsurface_radius of the BalloonMat.


  • Create and connect a utility shader to input1 of the layerRGBA.
  • Create and connect a colorJitter shader to input2 of the layerRGBA. The color_jitter will be used to further adjust the variation and color of the balloons.
  • In layer2 of the layerRGBA, change the operation to multiply and the mix to 0.645.


The settings for the color_jitter shader used in this example are as follows:

  • Change the type to Object.
  • gain_max: 4.
  • saturation_min: 0.38.
  • saturation_max: 1.076.
  • seed: 2313.


The settings for the Utility shader used in this example are as follows:

  • Shade Mode: Flat.
  • Color Mode: Object. This will use give us random colors for each of the balloons.


Final shading network for Balloons

  • No labels
Privacy settings / Do not sell my personal information / Privacy/Cookies