Dans une question précédente , il a été suggéré que les champs de distance signés puissent être précalculés, chargés lors de l'exécution puis utilisés à partir de là.
Pour des raisons que j'expliquerai à la fin de cette question (pour les personnes intéressées), j'ai besoin de créer les champs de distance en temps réel.
Il existe des articles sur différentes méthodes qui sont censées être viables dans des environnements en temps réel, comme les méthodes pour les transformations de distance de chanfrein et les transformations basées sur l'approximation du diagramme de Voronoï (comme suggéré dans cette présentation par le développeur dev Pixeljunk Shooter ), mais J'ai (et on peut donc supposer que beaucoup d'autres personnes) ont vraiment du mal à les utiliser, car ils sont généralement longs, largement gonflés de mathématiques et peu algorithmiques dans leur explication.
Quel algorithme proposeriez-vous pour créer les champs de distance en temps réel (favorablement sur le GPU) compte tenu notamment de la qualité résultante des champs de distance?
Étant donné que je recherche une explication / un didacticiel réel par opposition à un lien vers juste un autre document ou une diapositive, cette question recevra une prime une fois qu'elle sera éligible pour un :-).
Voici pourquoi je dois le faire en temps réel:
Si vous devez précalculer ces SDF pour de grands environnements 2D (pensez à une grande carte de type Terraria), cela signifierait que vous acceptez une surcharge assez importante dans l'espace de stockage (et le temps de génération de carte) en faveur de la mise en œuvre d'un plus algorithme compliqué suffisamment rapide pour la génération SDF en temps réel.
Par exemple, une carte relativement petite avec 1000 * 256 (largeur * hauteur) avec une taille de tuile de 10 * 10 pixels et donc des dimensions totales de 10000 * 2560 pixels vous coûterait déjà environ 2 mégaoctets de taille, si vous choisissez une taille relativement petite Résolution SDF de 128x128, en supposant que vous stockez uniquement les valeurs de distance de 0 à 255.
Évidemment, cela peut rapidement devenir trop et c'est un surcoût que je ne veux pas avoir.
Il y a autre chose:
Les SDF peuvent être utilisés pour de nombreuses choses (comme la détection de collision), et certaines applications utiles ne sont peut-être même pas encore découvertes. Je pense que beaucoup de gens vont chercher ces choses à l'avenir, et si nous obtenons une réponse complète ici, je pense que nous allons aider beaucoup de gens.