2
$\begingroup$

I am currently trying to implement Jensen's paper on subsurface scattering, but I am getting confused when I am trying to implement it in my pathtracer. I have questions about the data types of certain variables.

  1. On page 3, $z_r$ is defined as $1 / \sigma_t'$, where $\sigma_t' = \sigma_s' + \sigma_a$. Based on Figure 5, $\sigma_s'$ and $\sigma_a$ are RGB values, which are Spectrum types in my pathtracer. However, $z_r$ is expected to be a distance above the surface, which I presume must be a float, not a Spectrum. How do I handle this discrepancy? Does each RGB wavelength have its own $z_r$?
  2. There is a similar issue in the single scattering term in section 4. $s_o'$ is a distance along the refracted outgoing ray, which is presumably a float. However, the formula for this term uses $\sigma_t$, which is a Spectrum.
  3. What about $\sigma_{tr}$? This value is $\sqrt{3\sigma_a\sigma_t'}$. Is this also a Spectrum or a float?
$\endgroup$

1 Answer 1

2
$\begingroup$

The heading row of Figure 5(b) says that the units of $\sigma_s'$ and $\sigma_a$ are inverse millimetres, that is, inverse distance. Hence, $1/\sigma_t'$ has units of distance.

If you send a beam of photons through a medium with scattering coefficient $\sigma$ and measure it at distance $l$, then the probability that a photon has made it that far without being scattered is $e^{-\sigma l}$. Since $l$ has units of distance, $\sigma$ must have units of inverse distance.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.