Volume Rendering (Path Tracing & Real-Time) I have a few doubts and questions regarding volume rendering, I was hoping someone here could help me understand.


I commonly hear the terms 'Ray-Marching' &amp; 'Volume Rendering' being used together when it comes to rendering fog or any other volumetric object.


Is Ray Marching the method used to render these volumes such as Fog, Smoke &amp; Fire (this is regarding path tracing)? Since we can use signed distance fields to easily manipulate the shape of the volume? At the approximated intersection point is a BSDF evaluated (BRDF + BTDF) or is it just a BRDF?




At the approximated intersection point for the volume what BRDF/BSDF do we use (if we do use one, I might have a wrong understanding of the topic)? Are there measured BRDFs &amp; BTDFs that is the common standard?
Ray marching is a ray tracing method where you take multiple steps along a ray to find intersection with geometry or to perform integration of in-scattered light from participating media (fog, clouds, water, etc.) along the ray. Signed distance fields doesn't really help you with participating media rendering since it's a method of finding the ray intersection instead of helping with volume integration.

So when you perform ray marching along the ray for volume integration, for each step you need to calculate incoming light to that point and evaluate the "phase function" to calculate how much of that light scatters towards the eye. This phase function can be simple isotropic function (i.e. constant $\frac{\rho}{4\pi}$) or more complex anisotropic function such as Mie phase function shown below, depending on the modeled participating media.



Additionally you need to take the extinction coefficient of the media into account, which is spatially varying for heterogeneous media, for calculating transmittance and to properly "attenuate" the in-scattered light as it's being blocked by media between eye and the point (Beer-Lambert law). This approach assumes homogeneous media between steps and for proper physically based integration you could take a look at SIGGRAPH 2015 presentation "Physically-based &amp; Unified Volumetric Rendering in Frostbite" by Sebastien Hillaire.

To know how much light reaches a point in space for each of those ray steps, you can use path tracing. This can get quite expensive though since light can take random paths in the media until it reaches the point. This is known as "multiple scattering", which is analogous to indirect illumination. When performing the integration over the sphere for each step along the ray, you can use Woodcock tracking to get unbiased results for heterogeneous media. Also if you use Mie phase function you should use importance sampling as the phase function has very strong forward peak.