Caustics: what they are and how to render them in Blender (Cycles, shadow caustics, EEVEE)
Short answer
Caustics are patches of concentrated light formed when a curved surface refracts or reflects light onto another surface: the bright network on the floor of a pool, or the bright ring in the shadow of a glass on a table. In Blender, only Cycles renders them. Path tracing finds them slowly, so Blender 3.2 added shadow caustics (MNEE): tick Cast Shadow Caustics on the glass or water, Receive Shadow Caustics on the surface below, and Shadow Caustics on the light.
Shadow caustics need three switches, all off by default. Object Properties > Shading > Caustics: Cast Shadow Caustics on the glass or water, Receive Shadow Caustics on the surface below. Then Shadow Caustics in the Settings panel of the light, or in World Properties > Settings for an HDRI. Cycles only. Source: Blender Manual, Object Settings (Cycles).
Menu names below are those of Blender 5.2, checked against its manual, its release notes and the Cycles source code.
What are caustics?
A caustic is light concentrated by a curved surface. When a surface that refracts light (water, glass) or reflects it (polished metal, a mirror) is curved, it bends many rays toward the same area. Where they converge, the light piles up into a bright line, ring or spot.
- The floor of a swimming pool: every wave acts as a small lens and focuses sunlight into the moving network of bright lines on the bottom.
- A glass on a table: inside the shadow of a glass of water, a brighter ring or spot appears where the glass and the water focus the light.
- A cup lit from the side: the curved inner wall reflects light into a bright curve. This one is a reflective caustic.
Blender's settings use the same two families: refractive caustics (glass, water) and reflective caustics (mirror, metal).
Why caustics are hard for a path tracer
Cycles works backwards compared with reality: it traces rays from the camera into the scene, not from the lights. At each point it hits, it sends rays straight toward the known lights to collect direct lighting, and in random directions chosen by the material to collect light bounced from elsewhere.
Caustics defeat both. Take a point on the floor of a pool. Its ray toward the sun hits the water, and Cycles treats any surface that bends light as opaque to these shadow rays; only transparency, such as the Transparent BSDF, lets them through. Sunlight can then reach that point only through a random bounce that happens to cross the water at the exact angle leading to the sun. With a small light and a sharp surface, very few rays find that path. The few that do carry a lot of light, so neighboring pixels jump from dark to very bright: the fireflies of a caustic render.
The manual says it plainly: caustics are a well-known source of fireflies, and many renderers disable them by default. Methods that also trace from the lights, such as photon mapping, suit them better, but Cycles avoids storing a photon map so it can handle larger, more detailed scenes. The guide to path tracing vs ray tracing explains the method itself.
Three ways to get caustics in Cycles
| Method | Where | What it renders | Cost |
|---|---|---|---|
| Plain path tracing | Light Paths > Caustics, on by default | Every caustic, reflective and refractive | Many samples, fireflies |
| Shadow caustics (MNEE) | Object, light and world settings, off by default | Refractive caustics inside shadows | More work per sample, far fewer samples |
| Path guiding | Sampling > Path Guiding | Helps simple caustics, such as a water surface | CPU only |
Shadow caustics (MNEE), step by step
Blender 3.2 added shadow caustics to Cycles, based on Manifold Next Event Estimation (MNEE). Instead of waiting for a random ray to find the way through the glass, Cycles starts from the point that receives the caustic and solves for the path that crosses the refractive surface and reaches the light while obeying the law of refraction. The release notes state the intent: enable it on the few objects where caustics have a big visual impact, without slowing down the rest of the scene.
- Set Render Engine to Cycles. EEVEE has none of these options.
- Select the refractive object, the caster: the water surface or the glass. Its material must refract, with a Principled BSDF at Transmission Weight 1.0, a Glass BSDF or a Refraction BSDF. Apply Object > Shade Smooth: MNEE only works on casters with smooth normals (see the smooth shading guide).
- In Object Properties > Shading > Caustics (the Shading panel is collapsed by default), tick Cast Shadow Caustics.
- Select the surface that receives the light, such as the pool floor or the table, and tick Receive Shadow Caustics in the same panel.
- Select the light. In its Object Data tab, the light bulb icon, open the Settings panel, collapsed by default, and tick Shadow Caustics. For an HDRI or a sky, the same checkbox is in World Properties > Settings > Surface.
- Render. Cycles only switches MNEE on when the scene holds at least one caster, one receiver and one light with Shadow Caustics, so one missing checkbox disables the whole feature.
To build the glass itself, see the guide to materials in Blender.
What shadow caustics cannot do
- They only cover refractive caustics that fall inside a shadow. Reflective caustics, such as the curve inside a cup, and caustics outside the shadow are left to plain path tracing.
- The result is an approximation: the manual warns about wrong brightness in many situations and about rough or curved surfaces being represented incorrectly.
- Bump and normal maps are ignored, so waves on water must be real geometry.
- Volumes are ignored, and a material with several refractive BSDFs only gets caustics from one of them.
- A path can cross at most 6 caster surfaces between receiver and light; beyond that, the caustic is dropped.
- Casters must be mesh geometry: a hair curve or point cloud marked as a caster gives no shadow caustic. Filter Glossy has no effect.
- While shadow caustics are active, the Ambient Occlusion and Bevel nodes give invalid results on casters and receivers.
Which devices render shadow caustics
The CPU, NVIDIA cards (CUDA and OptiX) and Intel cards (oneAPI) render them. Two cases need care in Blender 5.2:
- Apple, with Metal: not supported when the feature came out in 3.2, enabled in 3.4, and today available from macOS 13. On older systems, the Caustics panel and the Shadow Caustics checkbox of lights are hidden.
- AMD, with HIP: since Blender 5.2, shadow caustics need hardware ray tracing, the HIP RT option in Preferences > System > Cycles Render Devices. It is on by default, but Cycles only uses it on RDNA2 cards (Radeon RX 6000) and newer, so RX 5000 cards no longer get shadow caustics. Without HIP RT, the checkboxes stay visible but Cycles renders without MNEE. On Windows, the manual still lists the RX 6000 series as unsupported for shadow caustics; RX 7000 cards and newer have no such restriction.
Path-traced caustics: the Light Paths settings
Without MNEE, Cycles still renders caustics by brute force, as long as the matching checkboxes are on. The settings are in Render Properties > Light Paths.
| Setting | Default | Effect on caustics |
|---|---|---|
| Caustics > Reflective | On | Caustics from mirrors and metal. Off removes them, and their noise. |
| Caustics > Refractive | On | Caustics through glass and water. Off removes them; glass shadows may then look too dark. |
| Filter Glossy | 1.0 | Blurs sharp glossy paths after a blurry bounce so they are easier to find. Lower it, down to 0, for sharper caustics and more noise. |
| Clamping > Direct Light | 0 (off) | Caps samples from rays that have not bounced yet. |
| Clamping > Indirect Light | 10 | Caps samples from rays that have bounced. A path-traced caustic arrives after a bounce, so a low value removes its fireflies but also dims it. |
| Max Bounces > Transmission | 12 | Each refraction through a glass or water surface uses one. Shadow caustics count against it too. |
Two other levers help. A larger light is easier for random rays to hit, so the caustic clears up with fewer samples, and its edges get softer, as they would in reality; the Blender lighting guide covers light size. On the CPU, Render Properties > Sampling > Path Guiding learns where light comes from as the render progresses. The Blender 3.4 release notes say it helps simple caustics such as a water surface but is not a caustic solver.
What caustics cost in samples and render time
Without MNEE, caustic pixels are usually the last to converge: adaptive sampling keeps sampling a pixel until its noise falls below the threshold, and the rare, bright samples of a caustic keep it above that line, sometimes up to Max Samples. The noise threshold guide explains the mechanism.
MNEE moves the cost. When a receiver samples a caustic light, Cycles runs a small solver, up to 64 iterations in its code, to find the path through the caster, so each of those samples costs more. In exchange the caustic converges in far fewer samples, and objects that are neither casters nor receivers render as before.
When the shot does not need visible caustics, turn them off and fix the glass shadows instead. The manual's node group for this: a Mix Shader with a Glass BSDF in its first Shader input and a Transparent BSDF of the same color in the second, and in Factor the Is Shadow Ray and Is Reflection Ray outputs of a Light Path node, joined by a Math node set to Maximum. Shadow rays pass through the glass, so the shadow comes out properly colored, without the caustic. The guide on how to render faster in Cycles covers the other settings that cut render time.
Water caustics in Blender
Water caustics are the bright, shifting network on the floor of a pool and the bright spot in the shadow of a glass of water. Each wave on the surface acts as a small lens. In Cycles you can render them for real with shadow caustics, or fake them with a pattern projected by the light, which is faster but ignores the actual waves. The glass of water has its own section below; this one covers the pool.
Real water caustics: starting settings for a swimming pool
- Water: a subdivided plane with real waves, from the Ocean modifier or a Displace modifier driven by a texture. Shade it smooth. Material: Principled BSDF, Transmission Weight 1.0, Roughness 0, IOR 1.33, the refractive index of water.
- Tick Cast Shadow Caustics on the water, and Receive Shadow Caustics on the floor and walls of the pool.
- Light the scene with a Sun and tick Shadow Caustics in its Settings panel. A small Angle gives sharp lines, a larger one softens them.
- To make the caustics move, animate the waves: the Ocean modifier has a Time value to keyframe.
The pattern comes entirely from the geometry of the water. Since MNEE ignores bump and normal maps and needs smooth normals, the waves must exist as subdivided, displaced geometry shaded smooth: a flat plane with a normal map gives no wave pattern. The floor counts as being in shadow, which is what shadow caustics require, because Cycles treats the refractive water as opaque to shadow rays.
Fast alternative: a caustic texture on the light
In Cycles, a light can be defined with shader nodes, and the manual lists texture nodes that vary its color or intensity among the uses. A light can therefore project a caustic pattern by itself, like a gobo, without the extra plane EEVEE needs.
- Add a Spot light above the pool and aim it at the floor. Widen its Angle, in the Beam Shape panel, until the cone covers the pool.
- With the light selected, open the Shader Editor. By default a light uses an Emission shader connected to the Light Output.
- Add a Texture Coordinate node and connect its Normal output to the Vector input of a Voronoi Texture. The manual allows the Normal output on Point and Spot lights, where it follows the rotation of the light.
- Set the Voronoi Texture to Distance to Edge and send it into a Color Ramp with white on the left stop and black on a stop just to its right: the thin lines along the cell edges, where the distance is close to 0, come out bright. Connect the Color Ramp to the Color of the Emission, and raise the Voronoi Scale until the cells are the size you want.
- To make it move, set the Voronoi Texture to 4D and keyframe W. The light's Power still applies on top of the nodes.
- Select the water and untick Shadow in Object Properties > Visibility > Ray Visibility. Otherwise the water blocks the light like any refractive surface and the floor stays dark.
The manual is explicit that shader-based lights are only supported in Cycles, so this method does not carry over to EEVEE; the EEVEE section at the end of this guide covers the gobo plane instead.
What each method costs
Shadow caustics run a small solver each time the floor samples the caustic light, so every one of those samples costs more, but the pattern clears in far fewer samples than with plain path tracing. The projected texture adds little: the floor receives direct light through a water surface that no longer blocks it, so there is no path through the water for Cycles to find. In exchange, the lines do not follow the shape of the waves, and the water no longer casts a shadow from any light. For an animation, render one frame with each method at final quality and compare the times before you commit to hundreds of frames.
Starting settings for a glass on a table
- Model the glass with real wall thickness, for example with a Solidify modifier, and shade it smooth.
- Material: Principled BSDF, Transmission Weight 1.0, Roughness 0, IOR 1.5. A liquid inside is a separate object with an IOR of 1.33, marked as a caster too.
- Tick Cast Shadow Caustics on the glass, and Receive Shadow Caustics on the table.
- Light it with a Spot or a small Area light, low and to the side, so that the shadow of the glass, and the caustic inside it, falls on the table in view of the camera. Tick Shadow Caustics on that light.
- Mind the limit of 6 caster surfaces. On each side of a full glass, the path crosses the outer and inner faces of the wall and the surface of the liquid: three per side, six in total, which is already the maximum.
Caustics in EEVEE: what to do instead
EEVEE does not render caustics. The manual describes it as a rasterizer rather than a path tracer, and none of its panels has a caustics option. Two workarounds give the look.
- A gobo. Place a plane between the light and the surface, out of the camera's view. Give it a Mix Shader of a Transparent BSDF and an opaque shader, with a caustic pattern in Factor: an image, or a Voronoi Texture set to Distance to Edge and sharpened with a Color Ramp. Tick Transparent Shadows in Material Properties > Settings > Surface so light passes through the transparent parts. The light itself cannot carry the texture: the manual lists light node trees as unsupported in EEVEE.
- A pattern on the receiver. Build the same pattern in the floor material and add it as emission at a low strength. Set the Voronoi Texture to 4D and animate W to make it move. It is cheap to render and works in both engines, but it ignores the real shape of the water and the position of the light.
Frequently asked questions
What are caustics in 3D rendering?
Caustics are patterns of concentrated light formed when a curved surface refracts or reflects light onto another surface, such as the moving lines on the floor of a pool or the bright ring in the shadow of a glass. They are hard to render because the light reaches that surface through a narrow path that random rays rarely find.
Does EEVEE support caustics?
No. EEVEE is a rasterizer and has no caustics setting. You can fake them with a gobo, a plane that casts a caustic pattern through Transparent Shadows, or with an animated pattern in the material of the receiving surface. For real caustics, render with Cycles.
How do I turn on caustics in Blender?
In Cycles, path-traced caustics are on by default under Render Properties > Light Paths > Caustics. For clean refractive caustics, use shadow caustics: tick Cast Shadow Caustics on the glass or water and Receive Shadow Caustics on the surface below, in Object Properties > Shading > Caustics, then Shadow Caustics in the Settings panel of the light.
Why are my caustics not showing in Blender?
Check the three switches first: caster, receiver and light all need their Shadow Caustics option. Then check the caster: it must be shaded smooth, and its waves or details must be real geometry, since bump and normal maps are ignored. Shadow caustics only cover refractive caustics inside shadows, and in Blender 5.2 AMD cards need HIP RT enabled.
How do I get rid of fireflies from caustics in Blender?
If the shot does not need caustics, untick Reflective and Refractive in Light Paths > Caustics. Otherwise keep Filter Glossy at 1.0 or above, lower Clamping > Indirect Light, or switch the effect to shadow caustics, which converge in far fewer samples than path-traced caustics.
How do you make water caustics in Blender?
In Cycles, model real waves on a subdivided plane shaded smooth, give it a refractive material with an IOR of 1.33, then tick Cast Shadow Caustics on the water, Receive Shadow Caustics on the pool floor and Shadow Caustics on the light. For a faster fake, project an animated Voronoi pattern from a Spot light through its shader nodes and untick Shadow in the Ray Visibility of the water.
Rendering the animation on TURNA
When a scene is already well optimised and the frame count is what takes the time, the remaining lever is rendering several frames at once. TURNA does this for Blender: an add-on (Blender 4.0 to 5.2, Cycles and Eevee) sends the scene in one click, and the frames are split across 1, 2, 4 or 8 GPUs in parallel, RTX 5090 first and RTX 4090 when none is free. The add-on shows the estimated cost before anything starts. Prices start at €4.90 per hour, billed on the time actually used, with a 2-minute minimum (30 seconds until November 9), and new accounts get €25 of free credit. A single still image is still rendered by one machine, so the gain is on animations. Tiers and worked examples are on the Blender render farm page.
Before you launch an animation with caustics, render one frame with the final caustic settings. The render time calculator then estimates the whole sequence from that time and the number of frames.




