Ray marching
Le ray marching est une méthode de rendu 3D où les rayons sont parcourus itérativement, chaque rayon étant divisé en segments plus petits. À chaque étape, une fonction est échantillonnée. Par exemple, en ray casting volumique, cette fonction accède aux points de données d'un scan 3D. En traçage de sphères, elle estime la distance à parcourir. Le ray marching est également utilisé en simulation physique comme alternative au ray tracing, où l'on calcule analytiquement les trajectoires des ondes lumineuses ou sonores. En infographie, le ray marching exploite souvent les fonctions de distribution spatiale (SDF) pour déterminer une taille de pas maximale sûre. En simulation physique, bien que moins fréquente, une méthode adaptative similaire peut être mise en œuvre grâce aux algorithmes de Runge-Kutta adaptatifs. La technique remonte au moins aux années 1980 ; l'article de 1989 « Hypertexture » de Ken Perlin contient un exemple précoce d'une méthode de ray marching.
Le ray marching est une méthode de rendu 3D où les rayons sont parcourus itérativement, chaque rayon étant divisé en segments plus petits. À chaque étape, une fonction est échantillonnée. Par exemple, en ray casting volumique, cette fonction accède aux points de données d'un scan 3D. En traçage de sphères, elle estime la distance à parcourir. Le ray marching est également utilisé en simulation physique comme alternative au ray tracing, où l'on calcule analytiquement les trajectoires des ondes lumineuses ou sonores. En infographie, le ray marching exploite souvent les fonctions de distribution spatiale (SDF) pour déterminer une taille de pas maximale sûre. En simulation physique, bien que moins fréquente, une méthode adaptative similaire peut être mise en œuvre grâce aux algorithmes de Runge-Kutta adaptatifs.
La technique remonte au moins aux années 1980 ; l'article de 1989 « Hypertexture » de Ken Perlin contient un exemple précoce d'une méthode de ray marching.
Ray marching assistée par distance
[modifier | modifier le code]Traçage de sphères
[modifier | modifier le code]
En traçage de sphères , ou ray marching assisté par sphère, un point d'intersection entre le rayon et une surface est approximé par une fonction de distance signée (SDF). La SDF est évaluée à chaque itération afin de pouvoir effectuer des pas aussi grands que possible sans manquer aucune partie de la surface. Un seuil est utilisé pour interrompre l'itération suivante lorsqu'un point est atteint suffisamment proche de la surface. Avec la démocratisation des GPU puissants, cette méthode a été popularisée par la scène démo et Inigo Quilez, co-créateur de Shadertoy.
Pour les scènes simples avec des formes 3D basiques, le ray marching n'offre que peu d'avantages par rapport au ray tracing (qui trouve les intersections sans parcourir l'espace). Les points forts du ray marching SDF résident, par exemple, dans la morphologie des formes, l'approximation des ombres douces, la répétition de géométries et les scènes définies algorithmiquement.
Des fonctions de distance signées existent pour de nombreuses formes 3D primitives[1]. Elles peuvent être combinées à l'aide d'opérations mathématiques telles que le modulo et les booléens pour former des surfaces plus complexes. Par exemple, le modulo des coordonnées d'entrée d'une fonction de distance signée (SDF) permet de paver son volume sur tout l'espace, et le maximum de deux SDF donne la surface d'intersection de leurs volumes. Comme les SDF peuvent être définies pour de nombreuses fractales, le rendu par traçage de sphères est souvent utilisé pour le rendu fractal 3D.
assisté par cube
[modifier | modifier le code]Une technique similaire au ray marching assisté par sphères, utilisant des cubes et la distance de Manhattan, peut être employée pour le rendu de volumes voxels.
Marche de rayons volumétrique
[modifier | modifier le code]En ray marching volumétrique, chaque rayon est tracé afin d'échantillonner la couleur et/ou la densité le long du rayon, puis de les combiner pour obtenir la couleur finale d'un pixel. Cette technique est souvent utilisée, par exemple, pour le rendu de nuages ou de scans médicaux 3D.
Ombrage différé
[modifier | modifier le code]Lors du rendu des effets d'espace écran, tels que la réflexion d'espace écran (SSR) et les ombres d'espace écran, les rayons sont tracés à l'aide de G-buffers, où les données de profondeur et de normale de surface sont stockées pour chaque pixel 2D.
Références
[modifier | modifier le code]- ↑ Ken Perlin, « Hypertexture », Computer Graphics, vol. 23, no 3, juillet 1989, p. 253–262 (DOI 10.1145/74334.74359, lire en ligne)
