<p>You might find <a href="http://graphics.cs.williams.edu/papers/TransparencyI3D16/" rel="noreferrer">this paper</a> useful—its authors describe a way to make reasonably plausible caustic effects just by modulating their shadows with the surface normal and refractive index. It won’t get you the more complex/interesting hot-spot shapes that you’d get with photon mapping, but it could work well depending on your scene.</p>

<p><img src="https://i.sstatic.net/91pVo.jpg" alt="sample fake caustics"></p>

<blockquote>
  <p>To extend stochastic shadow maps to mimic caustics, we decrease shadowing where light strikes a transmissive surface at normal incidence. We increase shadowing where the refractor is at a glancing angle and thus has a low Fresnel transmission factor.
  Specifically, during shadow map rendering, we increase ρ(λ) where the magnitude of the dot product of the surface normal nˆ and the vector to the light ωˆi is close to 1, and decrease ρ(λ) where the dot product is close to zero. We also increase this effect with the relative refractive index η.</p>
</blockquote>

CC BY-SA 3.0
2017-01-12T20:30:57.713Z
2017-01-12T20:30:57.713Z
Noah Witherspoon
<p>I have a <a href="https://www.shadertoy.com/view/4tyXDR" rel="noreferrer" title="Shadertoy">Shadertoy</a> which renders the image below using ray tracing.</p>

<p>I'd like to add caustics, but am aware that in general they are a hard solution, especially without bidirectional ray tracing or photon mapping.</p>

<p>Does anyone know if there is a way to analytically calculate caustics, or at least some of the caustics (or plausible caustic effects) in a situation like this?</p>

<p>There is refraction going on here, not just transparency, in case that makes a difference.</p>

<p><a href="https://i.sstatic.net/YtQBB.png" rel="noreferrer"><img src="https://i.sstatic.net/YtQBB.png" alt="enter image description here"></a></p>

CC BY-SA 3.0
2017-01-12T22:04:24.320Z
Just thinking out loud, it may be possible to use some equations for [spherical lenses](http://www.physicsinsights.org/simple_optics_spherical_lenses-1.html) and treat it like calculating defocus blur. The caustic brightness would go like $1/r^2$ of the circle of confusion, or something like that.
Nathan Reed
CC BY-SA 3.0
2017-01-12T22:40:35.067Z
That sounds really promising.  I like how that seems like it could be exact for spheres, whereas the answer about using surface normal and refractive index would be decent approximations for general shapes.
Alan Wolfe
<raytracing>
Is there a way to do sphere caustics analytically?
Alan Wolfe
# Is there a way to do sphere caustics analytically?

(Asked by: username_0 on 2017-01-12)

I have a [Shadertoy](https://www.shadertoy.com/view/4tyXDR "Shadertoy") which renders the image below using ray tracing.

I'd like to add caustics, but am aware that in general they are a hard solution, especially without bidirectional ray tracing or photon mapping.

Does anyone know if there is a way to analytically calculate caustics, or at least some of the caustics (or plausible caustic effects) in a situation like this?

There is refraction going on here, not just transparency, in case that makes a difference.

[![enter image description here](https://i.sstatic.net/YtQBB.png)](https://i.sstatic.net/YtQBB.png)

**Tags:** raytracing

> **Comments:**
> **username_1**: Just thinking out loud, it may be possible to use some equations for [spherical lenses](http://www.physicsinsights.org/simple_optics_spherical_lenses-1.html) and treat it like calculating defocus blur. The caustic brightness would go like $1/r^2$ of the circle of confusion, or something like that.  
> **username_0**: That sounds really promising.  I like how that seems like it could be exact for spheres, whereas the answer about using surface normal and refractive index would be decent approximations for general shapes.  

---

## 1 answers

### Answer by username_2 on 2017-01-12. Score: 7 | Accepted answer

You might find [this paper](http://graphics.cs.williams.edu/papers/TransparencyI3D16/) useful—its authors describe a way to make reasonably plausible caustic effects just by modulating their shadows with the surface normal and refractive index. It won’t get you the more complex/interesting hot-spot shapes that you’d get with photon mapping, but it could work well depending on your scene.

![sample fake caustics](https://i.sstatic.net/91pVo.jpg)

> To extend stochastic shadow maps to mimic caustics, we decrease shadowing where light strikes a transmissive surface at normal incidence. We increase shadowing where the refractor is at a glancing angle and thus has a low Fresnel transmission factor.
> Specifically, during shadow map rendering, we increase ρ(λ) where the magnitude of the dot product of the surface normal nˆ and the vector to the light ωˆi is close to 1, and decrease ρ(λ) where the dot product is close to zero. We also increase this effect with the relative refractive index η.


---

