La première étape consiste à rendre la scène dans deux cartes de profondeurs : une du point de vue de la caméra ("depth map") et une autre du point de vue de la lumière ("shadow map").
La seconde étape transforme la shadow map afin de permettre un accès efficace aux informations de visibilités. Pour cela on effectue une rectification épipolaire. On assigne, à chaque point de l'espace, des coordonnées (α,β,γ) de telle sorte que les rayons de la caméra puissent être indexés par (α,β) et les rayons de la lumière puissent être indexés par (α,γ).
Ensuite, on voudrait effectuer un maximum de terme dans l'équation de diffusion du milieu ("scattering"). On s'aperçoit qu'un certain nombre de termes de l'intégrale ne dépendent pas de la visibilité (β) mais seulement de la direction de la vue et de la lumière (α et γ). On échantillone les termes qui ne dépendent que de α et γ dans un matrice (de taille 64x64). On utilise la SVD pour décomposer cette matrice en valeurs et vecteurs propres, ce qui nous permettra d'économiser certains calculs lors de la détermination des segments de rayons visibles par la lumière.
Il est intéressant de remarquer que chaque ligne de la shadow map rectifiée correspond à un rayon de vue, c'est-à-dire ce dont on veut déterminer la visibilité en chaque point. Il est donc possible d'utiliser une structure accéleratrice pour accelérer la détermination des segments visibles par la lumière. On construit donc un arbre min-max pour chaque ligne.
Finalement, pour chaque point dont on veut calculer la luminance, il ne nous reste plus qu'à calculer la diffusion entre ce point et la caméra. Connaissant la direction du rayon de vue (α) et la position du point, on peut simplement parcourir l'arbre min-max correspondant. Les vecteurs propres correspondant à la matrice échantillonée plus tôt permettent de remplacer des calcul lourd (exponentiel) par un simple produit vectoriel.
La dernière étape est un cas particulier : si le rayon est proche (ou sur) l'écran, on utilise du "ray marching" classique (brute-force).