In una domanda precedente , è stato suggerito che i campi della distanza firmati possono essere pre-calcolati, caricati in fase di esecuzione e quindi utilizzati da lì.
Per ragioni che spiegherò alla fine di questa domanda (per le persone interessate), devo creare i campi di distanza in tempo reale.
Ci sono alcuni documenti là fuori per diversi metodi che dovrebbero essere praticabili in ambienti in tempo reale, come i metodi per le trasformazioni della distanza di smusso e le trasformazioni basate sull'approssimazione del diagramma Voronoi (come suggerito in questa presentazione dal ragazzo dev Pixeljunk Shooter ), ma Io (e quindi si può presumere che molte altre persone) stiano davvero facendo fatica a metterli in pratica, dato che di solito sono lunghi, in gran parte gonfiati dalla matematica e non molto algoritmici nella loro spiegazione.
Quale algoritmo suggeriresti per creare i campi di distanza in tempo reale (favorevolmente sulla GPU) soprattutto considerando la qualità risultante dei campi di distanza?
Dal momento che sto cercando una spiegazione / tutorial reale invece di un collegamento a un altro documento o diapositiva, questa domanda riceverà una ricompensa una volta che ne ha diritto a uno :-).
Ecco perché devo farlo in tempo reale:
Se devi precomputare questi SDF per grandi ambienti 2D (pensa a una grande mappa simile a Terraria), ciò significherebbe che stai accettando un sovraccarico piuttosto grande nello spazio di archiviazione (e tempo di generazione della mappa) a favore dell'implementazione di un altro algoritmo complicato che è abbastanza veloce per la generazione di SDF in tempo reale.
Ad esempio, una mappa relativamente piccola con 1000 * 256 (larghezza * altezza) con una dimensione della piastrella di 10 * 10 pixel e quindi dimensioni totali di 10000 * 2560 pixel ti costerebbe già circa 2 megabyte di dimensione, se scegli una dimensione relativamente piccola Risoluzione SDF di 128x128, supponendo che si stiano memorizzando solo i valori di distanza da 0 a 255.
Ovviamente, questo può rapidamente diventare troppo ed è un sovraccarico che non voglio avere.
C'è qualcos'altro:
Gli SDF possono essere utilizzati per molte cose (come il rilevamento delle collisioni) e alcune utili applicazioni potrebbero non essere ancora ancora scoperte. Penso che molte persone cercheranno queste cose in futuro, e se avremo una risposta completa qui, penso che aiuteremo molte persone.