Attualmente sto lavorando su un clone 2D "Worms" in XNA, e una delle caratteristiche è il terreno "deformabile" (ad es. Quando un razzo colpisce il terreno, c'è un'esplosione e una parte del terreno scompare).
Come sto attualmente facendo questo è usando una trama che ha un valore di rosso progressivamente più alto mentre si avvicina al centro. Scorro ogni pixel di quella trama "Deforma" e se il pixel corrente si sovrappone a un pixel del terreno e ha un valore rosso abbastanza alto, modifico l'array di colori che rappresenta il terreno in trasparente. Se il pixel corrente NON ha un valore Rosso abbastanza alto, annerisco il colore del terreno (diventa più nero quanto più il valore del Rosso si avvicina alla soglia). Alla fine di questa operazione uso SetData per aggiornare la trama del mio terreno.
Mi rendo conto che questo non è un buon modo per farlo, non solo perché ho letto delle bancarelle della pipeline e simili, ma anche perché può diventare piuttosto lento se vengono aggiunti molti crateri contemporaneamente. Voglio rifare la mia generazione del cratere sulla GPU invece usando il "ping-pong" dei target di rendering tra essere il bersaglio e la trama da modificare. Non è questo il problema, so come farlo. il problema è che non so come mantenere il mio effetto di masterizzazione usando questo metodo.
Ecco come appare l'effetto burn in questo momento:
Qualcuno ha idea di come creerei un effetto di bruciatura simile (oscurando i bordi attorno al cratere formato)? Non ho familiarità con Shader, ma se lo richiede sarei davvero grato se qualcuno mi avesse guidato su come farlo. Se ci fossero altri modi sarebbe fantastico.