Зараз я працюю над 2D клоном "Черв'яки" в XNA, і однією з особливостей є "деформується" місцевість (наприклад, коли ракета потрапляє на місцевість, відбувається вибух і шматок місцевості зникає).
Я зараз це роблю, використовуючи текстуру, яка має прогресивно вище значення червоного кольору, коли вона наближається до центру. Я перебираю кожен піксель тієї текстури "Деформування", і якщо поточний піксель перекриває піксель місцевості та має досить високе червоне значення, я змінюю кольоровий масив, що представляє місцевість, на прозорий. Якщо поточний піксель НЕ має достатньо високого значення Червоного кольору, я чорніє кольором місцевості (він стає чорнішим, чим ближче значення Червоного до порога). В кінці цієї операції я використовую SetData для оновлення текстури рельєфу.
Я усвідомлюю, що це не гарний спосіб зробити це не лише тому, що я читав про стояки трубопроводів і подібні, але й тому, що він може стати досить млявим, якщо одночасно додавати багато кратерів. Я хочу переробити своє Crater Generation на GPU, замість цього використовувати цілі Render "ping-ponging" між ціллю та текстурою для зміни. Це не проблема, я знаю, як це зробити. проблема полягає в тому, що я не знаю, як зберегти ефект опіку за допомогою цього методу.
Ось як виглядає ефект опіку прямо зараз:
Хтось має уявлення, як я створив би подібний ефект опіку (затемнення країв навколо утвореного кратера)? Я абсолютно не знайомий із Шейдерами, але якщо цього вимагає, я був би дуже вдячний, якби хтось провів мене, як це зробити. Якщо є якісь інші способи, це теж було б чудово.