Qu'est-ce que Ray Marching? Est-ce que Sphere Tracing est la même chose?

31

Beaucoup de démos ShaderToy partagent l'algorithme Ray Marching pour rendre la scène, mais elles sont souvent écrites avec un style très compact et je ne trouve aucun exemple ou explication simple.

Alors qu'est-ce que Ray Marching? Certains commentaires suggèrent qu'il s'agit d'une variante de Sphere Tracing. Quels sont les avantages informatiques d'une telle approche?

psicomante
la source

Réponses:

34

TL; DR

Ils appartiennent à la même famille de solveurs, où le traçage de sphères est une méthode de marche des rayons, qui est le nom de famille.

Raymarching une définition

Le raymarching est une technique un peu comme le lancer de rayons traditionnel où la fonction de surface n'est pas facile à résoudre (ou impossible sans méthodes itératives numériques). Dans le lancer de rayons, vous regardez simplement l'intersection des rayons, tandis que dans la marche des rayons, vous marchez en avant (ou en avant et en arrière) jusqu'à ce que vous trouviez l'intersection, ayez suffisamment d'échantillons ou tout ce que vous essayez de résoudre. Essayez de penser à cela comme une méthode newton-raphson pour la recherche de surface, ou la somme pour intégrer une fonction variable.

Cela peut être utile si vous:

  • Besoin de rendre la volumétrie qui n'est pas uniforme
  • Rendu des fonctions implicites, fractales
  • Rendu d'autres types de surfaces paramétriques dont l'intersection n'est pas connue à l'avance, comme la cartographie paralax
  • Etc

Raymarching traditionnel

Image 1 : Rayon traditionnel marchant pour trouver la surface

Articles Similaires:

Traçage des sphères

Le traçage de sphères est un algorithme de marche Ray possible. Tous les raymarches n'utilisent pas cette méthode car ils ne peuvent pas être convertis en ce type de schéma.

Le traçage Sphère est utilisé pour le rendu de surfaces implicites . Les surfaces implicites sont formées à un certain niveau d'une fonction continue. Essentiellement, résoudre l'équation

F(X,Y,Z) = 0

En raison de la façon dont cette fonction peut être résolue à chaque point, on peut aller de l'avant et 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 adaptatives de marche des rayons pour accélérer le processus.

Le traçage des sphères a une taille de pas adaptative

Image 2 : traçage Sphère * dans l'action notez comment la taille du pas est adaptative

Pour plus d'informations, voir:

* Peut-être qu'en 2D, cela devrait être appelé le tracé de cercle :)

joojaa
la source
1
Je recommanderais cet article de Scratchapixel pour une explication approfondie: scratchapixel.com/lessons/advanced-rendering/…
user18490
Le lien de @ user18490 vers Scratchapixel a été déplacé vers scratchapixel.com/lessons/advanced-rendering/… . Le reste du site ( scratchapixel.com/index.php ) semble également utile.
WillC
15

La marche de rayons est un test d'intersection de rayons itératif dans lequel vous parcourez un rayon et testez les intersections, normalement utilisé pour trouver des intersections avec une géométrie solide , où les tests intérieurs / extérieurs sont rapides.

entrez la description de l'image ici
Images de la géométrie de rendu avec des textures en relief

Une taille de pas fixe est assez courante si vous ne savez vraiment pas où une intersection peut se produire, mais parfois des méthodes de recherche de racine telles qu'une recherche binaire ou sécante sont utilisées à la place. Souvent, une taille de pas fixe est utilisée pour trouver la première intersection, suivie d'une recherche binaire. J'ai rencontré pour la première fois la marche de rayons dans des techniques de cartographie par déplacement par pixel. La cartographie en relief des détails de la surface hors champ est une bonne lecture!

entrez la description de l'image ici

Il est couramment utilisé avec le saut d'espace, une technique d'accélération où un certain prétraitement donne une distance de sécurité que vous pouvez déplacer le long du rayon sans intersection de la géométrie, ou mieux encore, sans intersection et ensuite quitter la géométrie de sorte que vous la manquez. Par exemple, le mappage de pas de cône et le mappage de pas de cône détendu.

Le traçage de sphère peut faire référence à un test implicite d'intersection rayon-sphère, mais c'est aussi le nom d'une technique de saut d'espace par John Hart, comme le mentionne @joojaa, et utilisée par William Donnelly ( Mappage de déplacement par pixel avec fonctions de distance ), où un La texture 3D code des sphères dans lesquelles aucune géométrie n'existe.

jozxyqk
la source
Ha, voilà, prendre des images des autres est plus efficace que de les dessiner vous-même.
joojaa
@joojaa Oui, plus vite si vous vous souvenez où ils étaient, mais sans ce sentiment gratifiant de le faire vous-même: P. J'ai également ce stupide bug de rendu sous-pixel en chrome, donc le texte est tout coloré.
jozxyqk
1
Eh bien, ce rendu en sous-pixels n'a pas été demandé. Encore.
joojaa
1
fait .
jozxyqk