Skip to content

Appendix A3 - Multiple scattering between parallel planes

A transmitting Lambertian sheet lies above reflecting ground. Sunlight entering the cavity reflects repeatedly between the ground and the underside of the sheet before escaping or being absorbed. This case tests higher-order scattering through multiple diffuse surface reflections.

Each round trip retains a fixed fraction of flux, giving an exact geometric-series solution. We compare total reflectance, absorption by each surface, angular BRF and results at individual interaction limits.

Scene settings

Drag to rotate, or open the 3D view separately.

Multiple reflections between the sheet and ground

The horizontal cell is 2 m by 2 m, with ground at Z = 0 and the sheet at Z = 1 m. Horizontal periodic boundaries, allowing 10000 crossings, represent infinitely extended planes. Solar zenith is 30 degrees, normal irradiance is 1 W m^-2 nm^-1 at each wavelength, and there is no atmosphere or sky. Incident flux is \(4\cos30^\circ\) W nm^-1 per wavelength.

Let r and b denote the upper and lower sheet reflectances, t the transmittance in either direction, and g the ground reflectance. Reflection and transmission follow Lambertian angular distributions.

Wavelength / nm r b t g Round-trip factor q = gb
550 0.2 0.3 0.5 0.6 0.18
850 0.1 0.8 0.15 0.9 0.72
1600 0.8 0.8 0.2 1 0.8

Higher orders contribute relatively little at 550 nm and strongly at 850 nm. At 1600 nm both surfaces are nonabsorbing, so all flux eventually escapes upward.

Analytic solution

The view factor between infinite parallel planes is one: all downward flux from the sheet reaches the ground, and all upward flux from the ground reaches the sheet. For view-factor fundamentals, see NASA's Thermal Radiation Heat Transfer.

The first downward flux fraction is t. After reflection by the ground and sheet underside, it becomes \(tgb=tq\). Total ground incidence is therefore

\[ t(1+q+q^2+\cdots)=\frac{t}{1-gb}. \]

Summing escape and absorption at every interaction gives total reflectance R, ground absorptance \(A_g\), and sheet absorptance \(A_s\):

\[ R=r+\frac{t^2g}{1-gb},\qquad A_g=\frac{t(1-g)}{1-gb},\qquad A_s=1-r-t+\frac{tg(1-b-t)}{1-gb}. \]

These satisfy \(R+A_g+A_s=1\) and include infinitely many reflections. Outgoing radiance is uniform and Lambertian, so BRF equals R in every upward viewing direction.

Wavelength / nm Analytic reflectance Analytic sheet absorptance Analytic ground absorptance
550 0.38292683 0.37317073 0.24390244
850 0.17232143 0.77410714 0.05357143
1600 1.00000000 0 0

Finite-order reference

At the initial sheet interaction, r escapes, \(1-r-t\) is absorbed and t travels downward. Subsequent interactions alternate:

  • Ground incidence w: absorb \(w(1-g)\), reflect wg upward.
  • Sheet underside incidence w: absorb \(w(1-b-t)\), transmit wt upward to escape, and reflect wb downward.

Stop after D interactions and retain the remaining flux U. Accumulating these exact fractions gives the finite-order reference, satisfying \(R_D+A_{g,D}+A_{s,D}+U_D=1\).

Simulation results

Order-resolved reflectance and photon-budget refinement

The left panel compares limits of 1, 2, 3, 5, 9, 17 and 33 interactions. Lines give the finite-order solution, points give backend results, and dotted horizontal lines show the infinite-series limit. Higher orders visibly affect the 850 and 1600 nm results.

Full transport allows 200 interactions, leaving a theoretical residual below \(6\times10^{-11}\). Sampling uses 1, 2, 4, 8 and 16 million photons; final results use 16 million. BRF viewing directions (zenith, azimuth) are (0, 0), (30, 90) and (60, 180) degrees.

Error evaluation

Metric Limit
Maximum absolute error in escape, absorption or finite-order residual fractions 0.005
Maximum angular BRF error 0.005
Maximum change between final photon budgets 0.003
Energy closure error 0.003
Truncated flux fraction in full transport 0.00001

Escape, sheet absorption and ground absorption are recorded separately by the simulation. Russian roulette produces small statistical fluctuations in energy closure at finite photon counts.

Backend Full flux error BRF error Max finite-order error Closure error Final budget change Status
optix 0.00009787 0.00033307 0.00030130 0.00009787 0.00004855 Pass
vulkan 0.00014619 0.00033283 0.00032326 0.00014619 0.00025135 Pass
embree 0.00009787 0.00033295 0.00030123 0.00009787 0.00004818 Pass

All three backends pass all criteria. The maximum absolute BRF error is approximately 0.000333, and the maximum full-transport flux error is approximately 0.000146.

At 1600 nm, initial reflectance is 0.8 and the infinite-series total is 1. The finite-order curve shows the contribution of repeated reflections.

Downloads and reproduction

Save the script under scripts/, with inputs and OBJ under the sibling data/multiple-scattering/. With LESS, matplotlib and all three backends available, run:

python scripts/appendix_multiple_scattering.py --output build/multiple-scattering

The script saves results and two SVG figures for examining scattering-order contributions and sampling convergence.