Звучит так, будто ты хорош в правильном пути.Но вы делаете много вещей вручную, что также можно сделать, просто рисуя спрайты и применяя правильные формулы.
Например:
Предположим, ваш ландшафт сохраненв гигантскую текстуру в альфа-канале текстуры.1 - местность, 0 - ничто.
Взрыв происходит, и местность должна быть деформирована.Обновите свою текстуру легко, просто нарисовав черную прозрачную сферу (или область взрыва) на вашей текстуре.Местность исчезла, потому что значение альфа равно 0 черной сферы.Ваша текстура сейчас обновлена, все было сделано spriteBatch.И ничего не нужно было проверять.
Не знаю, хотели ли вы тоже решение для этого, но теперь у вас есть одно.
Для эффекта прожига
Теперь, когда у нас есть ландшафт в текстуре, мы можем сделать пост-эффект на чертеже, используя шейдер (как вы сказали).Шейдер получает альфа-канал текстуры и теперь может делать разные вещи, чтобы получить эффект прожига.
- Первый вариант - это обнаружение края.Проверьте несколько пикселей во всех 4 направлениях и посмотрите, находится ли пиксель по краю.Если это так, он должен выполнить прожиг, например, умножив его на расстояние до края (или любую другую понравившуюся вам функцию)
- Другой способ очень похож на первый, но делает это вдва шага.Сначала вы делаете то же самое определение края, но сохраняете края в отдельной текстуре.Теперь, когда вы рисуете свою текстуру, вы можете наложить свои края.Так что это почти то же самое, что просто рисовать землю сразу.
Основное отличие для второго варианта заключается в том, что вы также можете выбрать просто нарисовать вашу обычную землю, и вы не настраиваете пиксель вТекстура земли при рендеринге.
Я знаю, что это длинная история, но это хорошая техника.Посмотрите на шейдеры Toon, они также распознают края, даже если это 3D.
Ключевые слова: шейдинг Toon, HLSL, пост-эффекты, обнаружение краев, обработка изображений.
Рекомендуемое чтение: http://rbwhitaker.wikidot.com/xna-tutorials