Сейчас я работаю на «Worms» клон 2D в XNA, и одна из особенностей является «деформируемый» местности (например, когда ракета попадает в местности, происходит взрыв, и кусок из местности исчезает).
В настоящее время я делаю это, используя текстуру, у которой постепенно увеличивается значение красного по мере приближения к центру. Я перебираю каждый пиксель этой текстуры «Деформировать», и если текущий пиксель перекрывает пиксель ландшафта и имеет достаточно высокое значение красного цвета, я изменяю массив цветов, представляющий рельеф, на прозрачный. Если текущий пиксель НЕ имеет достаточно высокого значения красного, я делаю цвет рельефа черным (он тем темнее, чем ближе значение красного к порогу). В конце этой операции я использую SetData для обновления текстуры местности.
Я понимаю, что это не очень хороший способ сделать это, не только потому, что я читал о стойлах трубопроводов и тому подобном, но также и потому, что это может стать довольно запоздалым, если одновременно будет добавлено много кратеров. Я хочу переделать свое поколение кратеров на графическом процессоре, вместо этого используя цели рендеринга «пинг-понг» между целью и текстурой для изменения. Это не проблема, я знаю, как сделать это. проблема в том, что я не знаю, как сохранить свой эффект ожога, используя этот метод.
Вот как выглядит эффект прожига прямо сейчас:
Кто-нибудь есть идеи, как я бы создать подобный эффект ожога (потемнение края вокруг образовавшегося кратера)? Я совершенно не знаком с шейдерами, но если это требует я был бы очень благодарен, если кто-то шел со мной через о том, как это сделать. Если есть какие-то другие способы, это тоже было бы здорово.