Je travaille actuellement sur un clone 2D "Worms" dans XNA, et l'une des caractéristiques est un terrain "déformable" (par exemple quand une fusée frappe le terrain, il y a une explosion et une partie du terrain disparaît).
Pour le moment, j'utilise une texture qui a une valeur de rouge progressivement plus élevée à mesure qu'elle approche du centre. Je fais défiler chaque pixel de cette texture "Déformer", et si le pixel actuel chevauche un pixel de terrain et a une valeur rouge suffisamment élevée, je modifie le tableau de couleurs représentant le terrain en transparent. Si le pixel actuel n'a PAS une valeur rouge suffisamment élevée, je noircis la couleur du terrain (il devient plus noir plus la valeur rouge est proche du seuil). À la fin de cette opération, j'utilise SetData pour mettre à jour ma texture de terrain.
Je me rends compte que ce n'est pas un bon moyen de le faire, non seulement parce que j'ai lu des informations sur les stalles de pipelines et autres, mais aussi parce que cela peut devenir assez lent si de nombreux cratères sont ajoutés en même temps. Je veux refaire ma génération de cratère sur le GPU à la place en utilisant les cibles de rendu "ping-ponging" entre être la cible et la texture à modifier. Ce n'est pas le problème, je sais comment faire ça. le problème est que je ne sais pas comment conserver mon effet de brûlure en utilisant cette méthode.
Voici à quoi ressemble l'effet de gravure en ce moment:
Quelqu'un a-t-il une idée de la façon dont je créerais un effet de brûlure similaire (assombrissant les bords autour du cratère formé)? Je ne connais pas du tout les Shaders, mais si cela l'exige, je serais vraiment reconnaissant si quelqu'un me montrait comment le faire. S'il y a d'autres moyens, ce serait bien aussi.