En una pregunta anterior , se sugirió que los campos de distancia firmados pueden calcularse previamente, cargarse en tiempo de ejecución y luego usarse desde allí.
Por razones que explicaré al final de esta pregunta (para las personas interesadas), necesito crear los campos de distancia en tiempo real.
Hay algunos documentos disponibles para diferentes métodos que se supone que son viables en entornos en tiempo real, como los métodos para transformaciones de distancia de Chamfer y transformaciones basadas en aproximación de diagrama de Voronoi (como se sugiere en esta presentación por el desarrollador de Pixeljunk Shooter ), pero A mí (y, por lo tanto, se puede suponer que muchas otras personas) me cuesta mucho ponerlos en práctica, ya que generalmente son largos, en gran parte hinchados con las matemáticas y no son muy algorítmicos en su explicación.
¿Qué algoritmo sugeriría para crear los campos de distancia en tiempo real (favorablemente en la GPU) especialmente teniendo en cuenta la calidad resultante de los campos de distancia?
Como estoy buscando una explicación / tutorial real en lugar de un enlace a otro documento o diapositiva, esta pregunta recibirá una recompensa una vez que sea elegible para uno :-).
He aquí por qué necesito hacerlo en tiempo real:
Si tiene que calcular previamente estas SDF para entornos 2D grandes (piense en un mapa grande similar a Terraria), esto significaría que está aceptando una sobrecarga bastante grande en el espacio de almacenamiento (y el tiempo de generación del mapa) a favor de implementar un algoritmo complicado que es lo suficientemente rápido para la generación de SDF en tiempo real.
Por ejemplo, un mapa relativamente pequeño con 1000 * 256 (ancho * alto) con un tamaño de mosaico de 10 * 10 píxeles y, por lo tanto, dimensiones totales de 10000 * 2560 píxeles ya le costaría alrededor de 2 megabytes de tamaño, si elige un tamaño relativamente pequeño Resolución SDF de 128x128, suponiendo que está almacenando solo los valores de distancia de 0 a 255.
Obviamente, esto puede convertirse rápidamente en demasiado y es una sobrecarga que no quiero tener.
Hay algo mas:
Las SDF se pueden usar para muchas cosas (como la detección de colisiones), y algunas aplicaciones útiles aún no se han descubierto. Creo que mucha gente buscará estas cosas en el futuro, y si obtenemos una respuesta integral aquí, creo que ayudaremos a mucha gente.