Сегодня исполняется 100 лет со дня рождения Андрея Сахарова, отца советского термоядерного оружия, одного из ведущих создателей самой мощной бомбы в истории человечества АН602. Благодаря труду этого ученого и многих других физиков, математиков и инженеров, СССР достиг ядерного паритета в Холодной Войне, и тем самым сделал бессмысленным её переход в горячую стадию.

В предыдущем материале мы рассказали о том, как создавался волюметрический эффект грибовидного облака

Проблема окружающего мира

Атомный взрыв — это нечто совершенно выдающееся, то, что должно потрясти маленький игровой мир до основания и затронуть все элементы окружения. Мир должен разделиться на «до» и «после» — так, как оно происходило в реальной жизни.

Световая вспышка озаряет все пространство в радиусе десятков километров, будучи видимой сквозь облака и туман. По мере прохождения ударной волны облака из-за локального нагрева испаряются, а затем конденсируются заново. Во влажную погоду возможна конденсация облаков и куполов из воздуха, как это происходило во время испытаний Crossroads «Able» или РДС-3 .

ВСЕ ЗАЧАРОВАНИЕ В МАЙНКРАФТ ПОДРОБНО 2021 MINECRAFT КНИГИ ЗАЧАРОВАНИЕ ЭФФЕКТЫ

Конденсационный купол во время испытания РДС-3

Прохождение ударной волны по земной поверхности сопровождается поднятием облаков пыли. Ударная волна взрыва распространяется на дистанции в несколько километров, воздействуя на деревья, здания и другие объекты, разрушая их. Число объектов, одновременно затронутых ударной волной, измеряется тысячами.

Воздействие ударной волны на здание

Реализация этих воздействий хотя бы на визуальном уровне является сложной задачей со множеством аспектов, и по части внешнего вида, и по части производительности. Серьезной проблемой и отличием эффекта от остальных является его огромный размер: любая микродеталь по факту является и макродеталью тоже. Поэтому изменение алгоритма и его настройка для улучшения какого-то одного аспекта (например, воздействие волны в городской застройке) может привести к снижению качества в других ситуациях. А усложнение алгоритма за счет разных веток для разных ситуаций серьезно снижает производительность шейдеров.

Ударная волна

Реализация пыли и дыма, поднятого взрывом, как полноценного волюметрика, будет слишком затратной в производительности — детали такого волюметрика будут иметь характерные размеры в десятки метров, при этом сам эффект будет иметь в поперечнике более десяти километров. Поэтому было принято решение реализовать ударную волну и пылевые облака в виде декали, накладываемой на все остальные объекты сцены. Для типовых изометрических ракурсов подобный подход внешне практически ничем не отличается от полноценного волюметрического прохода.

При виде сверху границы между волюметриком и декалью практически не видно. Зеленой стрелкой показана граница ударной волны, реализованной декалью

Но, когда камера опускается на уровень земли, неоднородность становится хорошо заметной. Вполне возможно, что в будущем будет добавлен еще один проход, как раз для этих случаев.

Красным обведен

Для того, чтобы поднятая с земли пыль лучше соответствовала ландшафту, в качестве диффузного цвета для нее используется самый грубый лод виртуальной текстуры земли, интерполированный в сторону серо-коричневого «пыльного» цвета. В большинстве случаев такой цвет получается адекватным.

Облака и конденсационные купола

Для отображения воздействия атомного взрыва на небо был написан вариант шейдера облаков, в котором функция плотности подвергается возмущению ударной волной. В некотором радиусе от эпицентра облака испаряются. Также, в этом шейдере было реализовано освещение облаков мощной световой вспышкой взрыва. Разумеется, подобная модификация шейдера заметно увеличила время его выполнения (в среднем в полтора раза), особенно для погоды с малым числом облаков (ведь проходящая ударная волна создает новые облака в пустом пространстве).

Ночной взрыв. Освещение облаков, конденсационный купол. Видно испарение облаков в сфере вокруг взрыва

Создание конденсационных куполов вокруг взрыва потребовало написание нового волюметрика, так как эти купола располагаются ниже слоя облаков и обладают более тонкой детализацией. Эта детализация, как и в случае оригинального атомного взрыва, обеспечена трехкратным применением перлиновского шума в полярных координатах.

Читайте также:  Как сделать волны в Майнкрафте

Конденсационное облако

Для того, чтобы окружающий грибовидное облако конденсационный купол корректно отображался, купол был разделен на две части, одна из которых рисуется до волюметрика взрыва, а вторая после.

Граница между частями облака. Сплошным цветом показан занятый конденсационным облаком объем.

Само появление конденсационных куполов и их конфигурация случайны. Но вероятность их появления и длительность сильно зависит от влажности воздуха (являющейся одним из параметров погоды) и концентрации облаков на локации, поэтому во влажную и туманную погоду они будут появляться почти всегда.

Разрушение

Одним из самых трудносимулируемых эффектов атомного взрыва является разрушение объектов, попавших под ударную волну. Для ударной волны атомного взрыва характерны не только колоссальные размеры, но и высокий скоростной напор, швыряющий обломки в сторону от эпицентра.

Перед взрывом. . и после

Для игры со свободной камерой, вроде War Thunder, требуется показать разрушение всех объектов. Нельзя выбрать какой-то один ракурс или одну группу объектов, разрушение требуется всему на всех локациях. Ситуация усложняется тем, что большой процент ассетов вообще не имеет анимаций разрушения или разрушенного состояния. А даже если эти анимации имеются, то они реализованы на клиент-серверной архитектуре и выполняются на CPU, и одновременная анимация тысяч объектов мгновенно выберет весь ресурс производительности.

С другой стороны, атомный взрыв в текущей реализации является актом завершения игровой сессии, поэтому синхронизация данных с CPU или с сервером не нужна, и разрушение может быть реализовано как чисто визуальный эффект. И огромный объем вычислений траекторий и анимаций можно переложить на видеокарту.

Если при создании самого грибовидного облака можно было пользоваться большим числом кадров атомных испытаний, то референсов разрушения намного меньше. Тем не менее, во многих испытаниях проводилось измерение воздействия ударной волны на сооружения, и некоторые кадры этих испытаний находятся в публичном доступе.

На текущий момент нет технической возможности реализовать поражающий эффект светового излучения в виде воспламенения и дымления поверхностей — реализовано только освещение и обугливание. Поэтому на этом этапе разработки было принято решение увеличить поражающую мощь ударной волны для зрелищности эффекта. При фактической мощности взрыва 40 килотонн ударная волна соответствует взрыву в 100 кт.

Необходимость весьма специфической анимации разрушения абсолютно для всех объектов сцены, включая неразрушимые, потребовала специфического решения. Анимация разрушения выполняется с помощью геометрического шейдера, разбивающего ассеты на отдельные полигоны, которые далее летят по индивидуальным траекториям.

Траектория каждого обломка рассчитывается, исходя из силы ударной волны на заданном расстоянии. В зависимости от высоты поражаемого объекта и силы волны рассчитывается «линия среза». Чем выше объект и чем слабее волна, тем выше располагается «линия среза». Для плотной городской застройки это имитирует гашение ударной волны у земли при сохранении поражающей силы на высоте. Но в общем случае это предположение о прочности неверно и требует серьезной доработки.

Заранее запеченная карта высот местности вокруг взрыва используется для остановки падающих обломков, но сама траектория движения – это равноускоренное движение материальной точки, и никакой реальной физики столкновения обломков и земной поверхности нет. Во время движения каждый треугольник вращается в двух координатных плоскостях до момента остановки.

Крупные полигоны генерируют до трех полигонов-обломков, с тем же размером, но далее в пиксельном шейдере в шахматном порядке происходит их отсечение. Это хорошо скрывает полигональную топологию разрушения для относительно небольших треугольников. На крупных треугольниках «шахматы» просматриваются явно.

Что такое ударная волна в Майнкрафт

Цена разрушения

Я почувствовал значительное возмущение в Силе, будто миллионы видеокарт одновременно вскрикнули в ужасе, а потом внезапно умолкли.

Геометрические шейдеры в игровой индустрии практически не используются, так как запись вершинных данных и генерация новой геометрии занимают слишком много времени. Некоторые платформы (например, Mac) вообще не поддерживают геометрические шейдеры, предлагая вместо этого использовать компут.

Читайте также:  Как заменить текстуру моба в Майнкрафт

К сожалению, это недоверие к геометрическим шейдерам полностью оправдано.

На 1060 GTX разрушение города с типового изометрического ракурса занимает 10 мс на кадр. Для наиболее детализированных локаций со множеством высокополигональных зданий разрушение занимает уже порядка 20 мс, что вкупе с рендером остального кадра снижает FPS до 30. Учитывая зрелищность процесса разрушения и тот факт, что он происходит в момент прекращения игрового процесса, такая частота кадров видится нормальной (к тому же, сам шейдерный процесс разрушения исключает фризы, поэтому FPS будет стабильным). Но видеокарта 1060 ввиду этого является предельной, поэтому анимация разрушения с обломками отображается только на пресетах «максимум» и «кино». Для всех остальных пресетов генерируются только остовы зданий и других объектов, что на порядок дешевле, так как остовы не требуют геометрического прохода.

Альтернативой геометрическим шейдерам в этом является использование компут шейдеров для генерации вершинных буферов. Но, учитывая объем генерируемой геометрии, потребуется существенное выделение памяти, а также серьезная переделка конвейера рендера объектов — при этом не факт, что при таком подходе будет достигнуто ускорение по сравнению с геометрическим шейдером.

Итоги

Полученный визуальный эффект может быть воспроизведен с любого ракурса для любой локации, погоды и времени суток, и для этого не требуется никакой настройки со стороны художников. Любая новая локация или новый ассет будут легко переварены алгоритмом, переиграны и уничтожены. И любой игрок с достаточно мощной видеокартой сможет сам записать подобный ролик:

Тем не менее, эффект проигрывает по зрелищности и деталям эффектам, которые целиком сконструированы и отрисованы для одной сцены. Универсальный алгоритм никогда не даст того, что дает индивидуальная настройка и корректировка.

Суммарно эффект использует примерно 1 мб видеопамяти, та как практически все его элементы генерируются в реальном времени. Это особенно важно в условиях дефицита видеопамяти на ряде платформ.

Также, абсолютно все элементы атомного взрыва и разрушения могут быть легко улучшены и отмасштабированы для большего реализма и зрелищности ценой падения производительности, что формирует хороший задел на будущие улучшения. Световой поражающий фактор и огромные пожары ждут своего момента.

Как я перестал бояться и полюбил бомбу

Наверное, это самая крутая и сложная задача по графике, над которой я когда-либо работал.

За время разработки эффекта было проведено примерно 10000 атомных испытаний, в самых разных частях мира, включая несуществующие города и территории. Даже сказочный летающий архипелаг из TailSpin не избежал тяжкой поступи атомной эры.

Ну а настроение в ходе разработки было примерно таким:

Источник: habr.com

Minecraft Dungeons:Ударная волна

Shockwave.png

Последняя атака в комбинации запускает ударную волну, наносящую урон врагам.

Ударная волна (англ. Shockwave) — это чары в Minecraft Dungeons, которые дают игроку возможность высвободить ударную волну во время финального удара в ближнем бою. Количество урона увеличивается с каждым уровнем улучшения.

Уровни улучшения

Уровень Эффект Цена
I Наносит 81 урона 2 очка зачарований
II Наносит 121 урона 3 очка зачарований
III Наносит 162 урона 4 очка зачарований

Источник: minecraft.fandom.com

Что такое ударные волны и как они создаются?

Ударные волны возникают, когда что-то движется быстрее скорости звука, вызывая внезапные изменения свойств жидкости.

Когда вы слышите слово «ударная волна», на ум приходит несколько образов. Эффект взрыва бомбы, пожалуй, самый яркий из них. Давайте разберемся, что означают ударные волны в физике и как именно они создаются.

Что такое ударная волна?

Ударная волна, как и любая волна, представляет собой возмущение, движущееся через среду. Это тонкие волновые фронты, которые вызывают внезапные изменения давления, температуры и плотности среды.

Читайте также:  Команда на становление вампиром Майнкрафт

Ударные волны возникают в сверхзвуковых потоках. Это когда что-то движется со скоростью, превышающей скорость звука в среде. Когда пуля летит со скоростью, превышающей скорость звука в воздухе, мы получаем ударные волны.

Чтобы визуализировать ударные волны, нам нужны специальные методы визуализации, такие как визуализация Шлирена.

Если ударная волна возникает в направлении, перпендикулярном направлению потока, их называют нормальными ударными волнами. Если они возникают под углом, их называют косыми ударными волнами.

Как образуются ударные волны?

Прежде чем перейти к вопросу «как», давайте рассмотрим число Маха. Это отношение скорости объекта, движущегося через среду, к скорости звука в этой среде. Таким образом, скорость 1 Маха означает, что объект движется со скоростью звука, также называемой трансзвуковой скоростью.

Число Маха

Рассмотрим лодку, движущуюся по воде. Лодка движется со скоростью, превышающей скорость волн на воде, поэтому волны вынуждены уходить с дороги. В результате образуется видимый нами след.

Когда объект движется через среду с низкой скоростью, число Маха меньше единицы. В этом случае волны в среде, исходящие от него, будут симметричными или почти симметричными во всех направлениях.

Когда он набирает скорость, волны перед ним сжимаются. Они будут иметь большую частоту, а волны позади него — меньшую. Волны впереди сжимаются тем сильнее, чем быстрее движется объект, пока мы не достигнем скорости звука.

При скорости звука число Маха равно единице, и в этот момент волны сжимаются и накладываются друг на друга в передней части объекта.

Что же происходит, когда движущийся объект превышает скорость звука? Волны не могут приспособиться или догнать объект и остаются, так сказать, позади. Отстающие волны создают форму расширяющегося конуса.

Ударные волны вокруг нас

Что создает ударные волны? Сверхзвуковые самолеты — очевидный ответ, поскольку они часто движутся со скоростью выше единицы Маха. На изображении ниже вы можете видеть, как сверхзвуковой самолет преодолевает звуковой барьер. Конус пара образуется в результате падения температуры и давления, вызванного ударными волнами. Когда ударные волны доходят до нас, мы слышим звуковой удар, который ассоциируется у нас с пролетающими мимо реактивными самолетами.

На рисунке ниже показано, как волны ведут себя в дозвуковых, маховых и сверхзвуковых условиях.

Пули, летящие со сверхзвуковой скоростью, генерируют ударные волны. Именно это вызывает «треск» пули, который можно услышать, когда она пролетает мимо кого-то. В потрясающем видеоролике ниже вы можете увидеть, как такие волны улавливаются с помощью технологии schlieren imaging и затем анализируются.

Звук, слышимый при ударе кнута, является результатом слабых ударных волн, создаваемых быстро движущимся наконечником. Да, именно так. Кончик кнута движется быстрее скорости звука, создавая этот звук!

Раскат грома также является явлением ударной волны. Взрыв петард — это результат ударных волн. Взрывы бомб создают похожие, но более крупные сферические ударные волны, которые могут опрокинуть здания, если взрыв достаточно сильный. Падение метеорита также может вызвать такие волны.

За пределами самолетов и бомб

Ударные волны возникают в сверхзвуковых потоках. Говоря об ударных волнах на примере самолетов, мы иногда ограничиваем наши представления. Здесь мы думаем об объектах, движущихся со сверхзвуковой скоростью, но мы также можем думать о жидкости, текущей со сверхзвуковой скоростью по трубе, которая сталкивается с изменением чего-либо — например, изменением формы или размеров трубы. В таком случае также возникнут ударные волны!

Источник: new-science.ru