human
Beaucoup de démonstrations ShaderToy partagent l'algorithme de Ray Marching pour rendre la scène, mais elles sont souvent écrites avec un style très compact et je ne peux pas trouver d'exemples ou d'explications simples. Alors, qu'est-ce que le Ray Marching ? Certains commentaires suggèrent que c'est une variation de Sphere Tracing. Quels sont les avantages computationnels d'une telle approche
gpt
## TL;DR
Ils appartiennent à la même famille de solveurs, où le sphere tracing est une méthode de ray marching, qui est le nom de la famille.

## Définition du raymarching
Le raymarching est une technique un peu comme le raytracing traditionnel où la fonction de surface n'est pas facile à résoudre (ou impossible sans méthodes itératives numériques). En raytracing, vous recherchez simplement l'intersection du rayon, tandis qu'en ray marching, vous avancez (ou allez et venez) jusqu'à ce que vous trouviez l'intersection, ayez suffisamment d'échantillons ou tout ce que vous essayez de résoudre. Essayez de le considérer comme une méthode de Newton-Raphson pour trouver une surface, ou comme une sommation pour intégrer une fonction variable.

Cela peut être utile si vous :

* Avez besoin de rendre des volumes qui ne sont pas uniformes
* Rendez des fonctions implicites, des fractales
* Rendez d'autres types de surfaces paramétriques où l'intersection n'est pas connue à l'avance, comme la cartographie parallaxe
etc.

## Sphere tracing
Le sphere tracing est un algorithme de ray marching possible. Tous les ray marching ne bénéficient pas de cette méthode, car ils ne peuvent pas être convertis en ce type de schéma.

Le sphere tracing est utilisé pour rendre des surfaces implicites. Les surfaces implicites sont formées à un certain niveau d'une fonction continue. En essence, on résout l'équation
```F(X,Y,Z) = 0
```

En raison de la façon dont cette fonction peut être résolue en chaque point, on peut estimer la plus grande sphère possible qui peut s'adapter à l'étape de marche actuelle (ou si ce n'est pas exactement raisonnablement en toute sécurité). Vous savez alors que la prochaine distance de marche est au moins aussi grande. De cette façon, vous pouvez avoir des étapes de ray marching adaptatives qui accélèrent le processus.