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.


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.

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.



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