¿Qué es Ray Marching? ¿Es Sphere Tracing lo mismo?


31

Muchas demostraciones de ShaderToy comparten el algoritmo Ray Marching para representar la escena, pero a menudo están escritas con un estilo muy compacto y no puedo encontrar ningún ejemplo o explicación directa.

Entonces, ¿qué es Ray Marching? Algunos comentarios sugieren que es una variación de Sphere Tracing. ¿Cuáles son las ventajas computacionales de tal enfoque?

Respuestas:


34

TL; DR

Pertenecen a la misma familia de solucionadores, donde el trazado de esferas es un método de marcha de rayos, que es el nombre de la familia.

Raymarching una definición

Raymarching es una técnica un poco como el trazado de rayos tradicional donde la función de superficie no es fácil de resolver (o imposible sin métodos numéricos iterativos). En el trazado de rayos simplemente mira hacia arriba en la intersección del rayo, mientras que en la marcha del rayo avanza (o retrocede) hasta encontrar la intersección, tiene suficientes muestras o lo que sea que esté tratando de resolver. Trate de pensar en ello como un método de newton-raphson para encontrar superficies o sumar para integrar una función variable.

Esto puede ser útil si usted:

  • Necesita renderizar volumetría que no sea uniforme
  • Representación de funciones implícitas, fractales
  • Representar otros tipos de superficies paramétricas donde la intersección no se conoce con anticipación, como el mapeo de paralaje
  • Etc

Raymarching tradicional

Imagen 1 : Marcha de rayos tradicional para encontrar superficie

Artículos Relacionados:

Trazado de la esfera

El trazado de la esfera es un posible algoritmo de marcha Ray. No todos los usos de raymarching se benefician de este método, ya que no se pueden convertir en este tipo de esquema.

El trazado de esfera se utiliza para representar superficies implícitas . Las superficies implícitas se forman en algún nivel de una función continua. En esencia resolviendo la ecuación

F(X,Y,Z) = 0

Debido a cómo se puede resolver esta función en cada punto, uno puede seguir adelante y estimar la esfera más grande posible que pueda ajustarse al paso de marcha actual (o si no es exactamente razonablemente seguro). Entonces sabes que la distancia de la próxima marcha es al menos así de grande. De esta forma, puede tener pasos adaptativos de marcha de rayos que aceleran el proceso.

El trazado de esfera tiene un tamaño de paso adaptativo

Imagen 2 : trazado de esfera * en acción, observe cómo el tamaño del paso es adaptativo

Para más información ver:

* Quizás en 2d debería llamarse trazado circular :)


1
Recomendaría este artículo de Scratchapixel para una explicación detallada: scratchapixel.com/lessons/advanced-rendering/…
user18490

El enlace de @ user18490 a Scratchapixel se ha movido a scratchapixel.com/lessons/advanced-rendering/… . El resto del sitio ( scratchapixel.com/index.php ) también parece útil.
WillC

15

La marcha de rayos es una prueba iterativa de intersección de rayos en la que se camina a lo largo de un rayo y se comprueban las intersecciones, normalmente se utilizan para encontrar intersecciones con geometría sólida , donde las pruebas internas / externas son rápidas.

ingrese la descripción de la imagen aquí
Imágenes de la geometría de renderizado con texturas en relieve

Un tamaño de paso fijo es bastante común si realmente no tiene idea de dónde puede ocurrir una intersección, pero a veces se utilizan métodos de búsqueda de raíz como una búsqueda binaria o secante. A menudo, se utiliza un tamaño de paso fijo para encontrar la primera intersección, seguido de una búsqueda binaria. Primero me encontré con la marcha de rayos en técnicas de mapeo de desplazamiento por píxel. ¡El mapeo en relieve de los detalles de la superficie del campo sin altura es una buena lectura!

ingrese la descripción de la imagen aquí

Se usa comúnmente con saltos de espacio, una técnica de aceleración en la que algunos procesos previos brindan una distancia de seguridad que puede moverse a lo largo del rayo sin intersectar la geometría, o mejor aún, sin intersectarse y luego dejar la geometría para que la pierda. Por ejemplo, mapeo de pasos de cono y mapeo de pasos de cono relajado.

El trazado de la esfera puede referirse a una prueba de intersección implícita de la esfera del rayo, pero también es el nombre de una técnica de salto espacial de John Hart, como menciona @joojaa, y utilizada por William Donnelly ( Mapeo de desplazamiento por píxel con funciones de distancia ), donde un La textura 3D codifica radios de esferas en las que no existe geometría.


Ah, ahí lo tienes, tomar imágenes de otros es más eficiente que dibujarlas tú mismo.
joojaa

@joojaa Sí, más rápido si recuerdas dónde estaban, pero sin esa sensación gratificante de hacerlo tú mismo: P. También tengo este estúpido error de representación de subpíxeles en Chrome, por lo que el texto es todo colorido.
jozxyqk

1
Bueno, esa representación de subpíxeles es algo que no se ha pedido. Todavía.
joojaa