Articulo de referencia

Ray marchando

El trazado de rayos es una clase de métodos de renderizado para gráficos 3D por computadora donde los rayos se recorren iterativamente, dividiendo cada rayo en segmentos más peq...

El trazado de rayos es una clase de métodos de renderizado para gráficos 3D por computadora donde los rayos se recorren iterativamente, dividiendo cada rayo en segmentos más pequeños y muestreando alguna función en cada paso. Por ejemplo, en el trazado de rayos volumétrico, la función accedería a puntos de datos de un escaneo 3D. En el trazado de esferas, la función estima la distancia para el siguiente paso. El trazado de rayos también se utiliza en simulaciones físicas como alternativa al trazado de rayos, donde se resuelven analíticamente las trayectorias de ondas de luz o sonido. El trazado de rayos para gráficos por computadora a menudo aprovecha las funciones de distribución de forma (SDF) para determinar un tamaño de paso seguro máximo, aunque esto es menos común en simulaciones físicas, donde se puede lograr un método de paso adaptativo similar utilizando métodos adaptativos de Runge-Kutta .

La técnica se remonta al menos a la década de 1980; el artículo de 1989 "Hypertexture" [ 1 ] de Ken Perlin contiene un ejemplo temprano de un método de marcha de rayos.

Marcha de rayos asistida por distancia

trazado de esferas

Visualización del trazado de esferas (trazado de rayos mediante una función de distancia con signo ).

En el trazado de esferas [ 2 ] o el trazado de rayos asistido por esferas, se aproxima un punto de intersección entre el rayo y una superficie definida por una función de distancia con signo (FDS). La FDS se evalúa en cada iteración para poder dar pasos lo más grandes posible sin perder ninguna parte de la superficie. Se utiliza un umbral para cancelar la iteración posterior cuando se ha alcanzado un punto que está lo suficientemente cerca de la superficie. A medida que el hardware de GPU potente se hizo más accesible, este método fue popularizado por la demoscene e Íñigo Quilez, cocreador de Shadertoy .

Para escenas sencillas con formas 3D básicas, el ray marching no ofrece muchas ventajas sobre el trazado de rayos (que encuentra intersecciones sin recorrer el espacio). Las ventajas del ray marching SDF se observan, por ejemplo, al transformar formas, aproximar sombras suaves, repetir geometría y en escenas definidas algorítmicamente.

Signed distance functions exist for many primitive 3D shapes.[3] They can be combined using mathematical operations like modulo and booleans to form more complex surfaces. For instance, taking the modulus of an SDF's input coordinates tiles its volume across all of space, and taking the maximum of two SDFs gives their volumes' surface of intersection. Because SDFs can be defined for many fractals, sphere tracing is often used for 3D fractal rendering.[4]

Cube-assisted

A similar technique to sphere-assisted ray marching, the use of cubes and taxicab distance can be used to render voxel volumes.

Volumetric ray marching

In volumetric ray marching, each ray is traced so that color and/or density can be sampled along the ray and then be combined into a final pixel color. This is often used for example when rendering clouds or 3D medical scans.

Deferred shading

When rendering screen space effects, such as screen space reflection (SSR) and screen space shadows, rays are traced using G-buffers, where depth and surface normal data is stored per each 2D pixel.

References

  1. Perlin, Ken (July 1989), "Hypertexture"(PDF), Computer Graphics, 23 (3): 253–262, doi:10.1145/74334.74359
  2. Hart, John C. (June 1995), "Sphere Tracing: A Geometric Method for the Antialiased Ray Tracing of Implicit Surfaces"(PDF), The Visual Computer
  3. Quilez, Inigo. "3D distance functions". Inigo Quilez. Retrieved 2022-07-08.
  4. Hart, John C.; Sandin, Daniel J.; Kauffman, Louis H. (July 1989), "Ray Tracing Deterministic 3-D Fractals"(PDF), Computer Graphics, 23 (3): 289–296, doi:10.1145/74334.74363