<p>It's almost never a problem of computational costs, it's a matter of how well a function works in a Monte Carlo scenario. Ie. how well it can be importance sampled. That generally leads to how well it can be inversely transformed to get an importance sampled scattering direction.</p>
<p>With HG or some modified HG phase fnc we can nicely match Mie for anything bigger than the wavelength and looking how well it can be importance sampled it makes no sense to use Mie for common cases like those we find generally in rendering. So yep you better off with HG.</p>
<p>Eventually some good read :
<a href="https://opg.optica.org/ao/abstract.cfm?uri=ao-35-18-3270" rel="nofollow noreferrer">https://opg.optica.org/ao/abstract.cfm?uri=ao-35-18-3270</a></p>
<p>EDIT : with Siggraph2023 there's an HG_Drain phase fnc that better matches tabulated Mie phase fnc..
<a href="https://research.nvidia.com/labs/rtr/approximate-mie/" rel="nofollow noreferrer">https://research.nvidia.com/labs/rtr/approximate-mie/</a></p>

CC BY-SA 4.0
2022-08-04T23:00:12.907Z
2023-07-03T12:36:26.063Z
2023-07-03T12:36:26.063Z
Max Tarpini
<p>Is it practical to implement the Lorenz-Mie(LM) phase function in a renderer ?</p>
<p><span class="math-container">$p(\cos\theta)=\frac{|S_1(\theta)|^2+|S_2(\theta)|^2}{4\pi\sum_{n=1}^\infty (2n+1)(|a_n|^2+|b_n|^2)}$</span></p>
<p>I'll spare you the details but: <span class="math-container">$S_1(\theta), S_2(\theta), a_n, b_n$</span> are complex numbers involving Legendre polynomials, and their derivatives. All of that to say the computations are quite involved.</p>
<p>So do the benefit of LM phase function(Physical accuracies mainly) outweighs the cost to compute them, or I better off with the standard Henyey-Greenstein or some modified version of it ?</p>

<pathtracing><volumetric><volumetric-scattering>
(Lorenz-)Mie phase function instead of Henyey-Greenstein?
JSBach49
# (Lorenz-)Mie phase function instead of Henyey-Greenstein?

(Asked by: username_0 on 2022-08-04)

Is it practical to implement the Lorenz-Mie(LM) phase function in a renderer ?

$p(\cos\theta)=\frac{|S\_1(\theta)|^2+|S\_2(\theta)|^2}{4\pi\sum\_{n=1}^\infty (2n+1)(|a\_n|^2+|b\_n|^2)}$

I'll spare you the details but: $S\_1(\theta), S\_2(\theta), a\_n, b\_n$ are complex numbers involving Legendre polynomials, and their derivatives. All of that to say the computations are quite involved.

So do the benefit of LM phase function(Physical accuracies mainly) outweighs the cost to compute them, or I better off with the standard Henyey-Greenstein or some modified version of it ?

**Tags:** pathtracing, volumetric, volumetric-scattering


---

## 1 answers

### Answer by username_1 on 2022-08-04. Score: 3 | Accepted answer

It's almost never a problem of computational costs, it's a matter of how well a function works in a Monte Carlo scenario. Ie. how well it can be importance sampled. That generally leads to how well it can be inversely transformed to get an importance sampled scattering direction.

With HG or some modified HG phase fnc we can nicely match Mie for anything bigger than the wavelength and looking how well it can be importance sampled it makes no sense to use Mie for common cases like those we find generally in rendering. So yep you better off with HG.

Eventually some good read :
<https://opg.optica.org/ao/abstract.cfm?uri=ao-35-18-3270>

EDIT : with Siggraph2023 there's an HG\_Drain phase fnc that better matches tabulated Mie phase fnc..
<https://research.nvidia.com/labs/rtr/approximate-mie/>


---

