Un campo de distancia con signo horneado es una rejilla precomputada de muestras de distancia que aproxima una forma cuya función de distancia no puede expresarse como una fórmula compacta. En lugar de evaluar una expresión analítica en cada punto de consulta, se muestrea la distancia real una vez en cada celda de la rejilla, se almacenan las muestras y se reconstruye una distancia aproximada en tiempo de ejecución mediante interpolación. La rejilla se convierte en la representación del campo.
Este es el enfoque estándar cuando la geometría de origen no es una primitiva matemática: glifos de fuentes, terreno destruible, modelos 3D escaneados y mallas poligonales creadas por artistas. Para formas que sí tienen SDF analíticos, consulta el tutorial completo sobre campos de distancia con signo .
Cómo Funciona el Horneado
La idea central es sencilla. Coloca una rejilla regular sobre la geometría de origen. En cada punto de la rejilla, calcula la distancia con signo real a la superficie más cercana. Registra esos valores. Cuando después necesites la distancia en una posición arbitraria, lee las muestras circundantes de la rejilla e interpola entre ellas.
La visualización recorre este proceso paso a paso. Una forma poligonal se encuentra debajo de una rejilla de muestreo. Cada punto de la rejilla almacena la distancia con signo al borde poligonal más cercano, coloreado en rojo en el interior, azul en el exterior y blanco en el límite. Presiona play para ver la evaluación por celda en orden de barrido. Una línea discontinua se extiende desde el punto de rejilla actual hasta su borde más cercano, para que puedas ver exactamente cómo se calcula cada distancia.
La superposición de colores muestra la interpolación bilineal reconstruyendo el campo a partir de esas muestras discretas. Observa el contorno poligonal discontinuo superpuesto sobre la superposición: revela dónde se desvía la interpolación de los bordes reales. A bajas resoluciones, el contorno cero reconstruido redondea las esquinas y difumina los detalles finos. A medida que aumentas la resolución, el campo se ajusta más a los bordes originales y la pérdida de información se reduce.
Resolución y Precisión
La compensación es entre memoria y precisión, y es pronunciada. Duplicar la resolución de la rejilla en 2D multiplica el número de muestras por 4; en 3D lo multiplica por 8. Una rejilla de volumen de 32³ almacena 32.768 muestras. Una rejilla de 256³ almacena más de 16 millones. La mayoría de las aplicaciones se conforman con una resolución que se ajusta a su presupuesto y aceptan el error de aproximación resultante.
Pasa el ratón sobre cualquier punto de la rejilla en la visualización para ver sus coordenadas y la distancia con signo calculada. La diferencia entre el valor muestreado en un punto de la rejilla y el valor interpolado en una posición intermedia cercana es donde reside el error de aproximación.
Las esquinas siempre son el caso más difícil. La distancia con signo real a una esquina cambia abruptamente de dirección de pendiente al cruzar la bisectriz. La interpolación bilineal solo puede producir mezclas suaves de los cuatro valores de muestra circundantes, por lo que inevitablemente redondea la esquina. Una resolución más alta reduce la región de redondeo pero nunca la elimina por completo. Esta es una limitación fundamental del muestreo uniforme en rejilla.
Campos Muestreados y el Pipeline de SDF
Una vez que un campo está horneado, se inserta en el mismo pipeline posterior que un SDF analítico. Las operaciones CSG como unión, intersección y diferencia solo consumen valores escalares en cada punto, por lo que funcionan de manera idéntica en campos muestreados. Las normales de superficie aún pueden estimarse con diferencias finitas entre muestras vecinas de la rejilla. El ray marching aún puede avanzar a través del campo.
La única diferencia práctica es la seguridad del paso. Un SDF analítico garantiza la distancia a la superficie más cercana, lo que hace que el sphere tracing sea seguro con tamaños de paso iguales al valor del campo. La interpolación bilineal de muestras de rejilla no conserva esa garantía de distancia exacta, por lo que los ray marchers necesitan márgenes de seguridad más amplios al recorrer campos muestreados. La distancia interpolada debe tratarse como un límite inferior conservador en lugar de un valor exacto.
Aplicaciones
Valve introdujo los campos de distancia con signo horneados en los gráficos convencionales con su artículo de SIGGRAPH 2007 sobre ampliación de texturas vectoriales probadas con alpha. Los glifos de fuentes se hornean una vez en una textura de distancia, y la interpolación bilineal por hardware reconstruye bordes nítidos y suavizados a cualquier aumento sin almacenar mapas de bits de alta resolución. La misma técnica es ahora estándar en renderizado de texto y UI de alta calidad.
En 3D, Unreal Engine 5 genera campos de distancia con signo a partir de mallas de triángulos estáticos en rejillas de vóxeles dispersos. Estos campos de distancia de malla impulsan sombras de campo de distancia, oclusión ambiental y detección de colisiones en todo el motor. El paso de horneado se ejecuta sin conexión durante la creación de contenido, por lo que el costo en tiempo de ejecución es solo de búsquedas en la rejilla e interpolación.
Los motores de física también utilizan SDF horneados para consultas de colisión entre mallas complejas. La rejilla suele hornearse a una resolución más gruesa que las rejillas de renderizado, intercambiando precisión espacial por velocidad de cómputo, y se vuelve a hornear cada fotograma para objetos deformables.
Más Allá de las Rejillas Uniformes
Dos extensiones comunes abordan las limitaciones del muestreo uniforme.
Los campos de distancia muestreados adaptativamente (ADF) reemplazan la rejilla uniforme con un octree que concentra muestras cerca de las características de la superficie y utiliza celdas más gruesas en regiones planas. Esto reduce el desperdicio de memoria mientras preserva el detalle donde importa. La compensación es la complejidad de recorrido: consultar un ADF requiere navegar por una estructura de árbol en lugar de indexar un arreglo plano, lo que es más difícil de acelerar en hardware GPU de función fija.
Los campos de distancia con signo multicanal (MSDF) almacenan distancias a múltiples bordes cercanos por celda de rejilla, utilizando canales de color adicionales en una textura. Durante la interpolación, cada canal proporciona un candidato de distancia a un borde diferente, y la distancia final es el mínimo entre canales. Esto conserva las esquinas afiladas que un SDF de un solo canal redondearía, a costa de 3× o 4× la memoria de textura. Los MSDF son estándar en renderizado de texto de alta calidad y se utilizan cada vez más para gráficos vectoriales en GPUs.
Ambas técnicas se basan en el mismo principio de horneado: muestrear la distancia real cuando sea posible, almacenar el resultado y reconstruir en tiempo de ejecución. Una vez que la base de la rejilla uniforme está clara, estas extensiones son pasos naturales.