Блум эффект в играх что это
XNA Draw: улучшаем графику игры
Все мои восемь статьей на хабре — статьи о геймдеве, большая часть из них связана с таким замечательным фреймворком, как XNA. Первым знакомством с XNA была статья о создании музыкальной игрушки, потом сложность статей нарастала, я начал писать об системах частиц, а затем о шейдерах и еще шейдерах.
В целом — на шейдерах я и хотел закончить, однако, стоить немного дополнить их, я расскажу о нескольких алгоритмах для улучшения графики в игре. Примеры улучшений:
Если интересно — под хабракат.
Введение
Затронем мы опять 2D составляющую игр и будем работать только с пиксельными шейдерами.
Эта статья будет немного отличаться от других моих, тут сразу будет идти и теория и практика, подразумевается, что вы уже читали статьи о шейдерах тут и еще тут.
Рассмотрим все эффекты, которые использовались в игре и пару эффектов, которые там отсутствовали, видео довольно старое, а игра уже потерпела качественные изменения с тех пор.
Distortion (искажение)
Самый первый эффект, который бросается в глаза — искажения:
Этот эффект не обрабатывается специальным шейдером, в целом, он такой же, какой и в статье, которую я писал ранее.
Давайте разберем тот эффект взрыва.
Тут используются следующие текстуры:
В самом верхнем левом углу — текстура дыма, дым образует «кольца» вокруг взрыва, яркую область в взрыве, которая быстро гаснет и шлейф от ракеты. Является основной текстурой этого эффекта. Используется как видимая текстура и искажающая текстура.
Далее — точка, рядом с дымом, благодаря ей — есть молнии, которые исходят из центра взрыва. Так же, используется как видимая текстура и искажающая текстура.
Ну и для дополнительной красоты — частицы от взрыва, самая большая текстура на стрипе. Но тут стоит отметить, что игрок её никогда не увидит на прямую. Она является искажающей и довольно быстро исчезает.
HUD Distortion (искажение интерфейса)
Второй эффект, который можно было заметь в ролике — искажение интерфейса.
На этот эффект меня вдохновили такие игры, как, например, Crysis 2 и Deus Ex: Human revolution. Там, при гибели — интерфейсы начинали разнообразно искажаться. Мне это показалось интересным. Так же, я еще усилил искажения интерфейса при простом попадании.
К примеру, гибель игрока:
Этот шейдер очень похож на тот, что был раньше — искажение изображения. Однако, в корню отличается от него. Искажения происходят не от карты искажений, а от математических формул, давайте рассмотрим код шейдер (шейдер максимально упрощен для понимания):
Код довольно прост, а сам по себе результат шейдера смотрится эффектно.
Static texture to dynamic texture
Создание «живых» текстур из менее живых. К примеру, мало кто заметил — мерцания далеких звезд в ролике выше. Хотя, сама текстура — является статической.
Рассмотрим этот шейдер:
Если яркость пикселя (grayscale) больше 20% — создается легкое мерцание, если больше 80% — сильное.
На картинке этого показать нельзя, все видно в ролике.
Ну и рассмотрим еще два эффекта, которых в ролике нет и реализованы они в более новых версиях.
Bloom (эффект свечения)
Эффект свечения знаком всем, так же именуется как Bloom (блюм).
Идея проста, извлекаем из изображения яркие области (введен некоторых порог), затем рисуем нашу сцену и поверх размытую сцену. Яркие области начинают светиться.
Примеры в картинках:
Яркость сцены:
Оригинальная сцена:
Готовая сцена:
Рассмотрим код шейдера, он состоит из двух частей, шейдер который извлекает яркость и шейдер который формирует финальное изображение.
Листинг шейдера, который извлекает яркость:
Листинг шейдера, который дает финальный результат:
Motion Blur (размытие в движении)
Ну и последний эффект, это размытие в движении (motion blur), в совокупности с другими эффектами — придает им «мягкость», резко двигаем мышкой и:
Реализуется он тоже, довольно просто:
Где direction_move — вектор движения.
Заключение
С помощью таких вот вещей — можно придать своей игре большую «изюминку», причем такие вещи делаются довольно просто.
На этом, я думаю, «курс» по 2D играм окончен, через некоторое время — начну писать о создании трехмерных игр.
Руководство. Тестирование производительности.Часть 2
Ambient Occlusion
Под названием «Преграждение окружающего света» в меню скрывается Ambient Occlusion. Игра поддерживает HBAO+, более простой режим SSAO и режим без AO.
Сразу отметим значительную разницу в картинке без AO и при простом SSAO. Второй вариант добавляет тени от мелких объектов и дополнительно усиливает тени в месте стыка предметов, например, между камнями. HBAO+ усиливает комплексное затенение в результате влияния объектов друг на друга. Усиливаются оттенение кустов и темные зоны между камнями. На древнем храме четче просматриваются колонны и детали архитектуры благодаря лучшей градации светлых и темных зон. При обычном SSAO затенение того же храма более равномерное.
Rise of the Tomb Raider
Между обычным AO и HBAO+ разница в производительности 5–6%. Между AO и самым простым режимом разница менее 3%. На слабых видеоадаптерах можно отказаться от HBAO+, но рекомендуется сохранить хотя бы простой режим AO.
PureHair
Технология PureHair позволяет реализовать пышные волосы из раздельных прядей с достоверной физической моделью поведения. Такие волосы рассыпаются по плечам, реагируют на движения.
PureHair Very High
Между простыми волосами и PureHair разница колоссальная. Это сильно влияет на образ Лары и ее восприятие. При этом между двумя уровнями качества PureHair особых различий нет, при максимальном качестве рендерится до 30000 отдельных волосков.
Rise of the Tomb Raider
Между разными уровнями качества PureHair минимальная разница в производительности. Хотя при крупных планах эта разница может быть более высокой. Отключение технологии придает ускорение около 5% в тестовой сцене.
Дополнительные визуальные эффекты
Различные визуальные эффекты, которые не предполагают разные уровни градации, рассмотрим вместе. Вначале изучим их влияние на картинку, а потом проведем единое сравнение производительности, где на одной диаграмме будут отображены изменения в случае отключения каждого из этих эффектов.
Размытие по краям экрана
Этот эффект (Vignette Blur) реализует некоторое размытие по краям в определенных ситуациях. Лучше всего это проявляется, когда Лара передвигается в скрытном режиме. Пример ниже.
Размытие при движении
Привычное размытие Motion Blur, которые смазывает контуры объектов при быстрых движениях, усиливая ощущение скорости и создавая определенный киношный эффект. Яркий пример ниже.
Тесселяция
Тесселяция используется для усложнения геометрии поверхности земли, поверхности грязи и талого снега. Тесселяция улучшает деформацию снега при ходьбе по сугробам, хотя при ее отключении следы в снегу не исчезают.
Ниже пример влияния тесселяции на поверхность земли. Эта технология делает ее более бугристой и выделяет некоторые камни.
Еще один пример влияния тесселяции на поверхность снега.
С тесселяцией поверхность снега сложнее, больше бугров. Общее применение тесселяции практически повсеместное, поэтому ее влияние на производительность должно быть весомым. Результаты тестов будут ниже.
Bloom-эффект
Эффекты Bloom усиливают яркость света, добавляют ощущение объемного освещения и лучей, пробивающихся сквозь щели. В качестве примера два скриншота.
Без Bloom пропадает ощущение мягкого плотного света, пробивающего сквозь щель, нет бликов на камнях в нижней части кадра. Конечно, некоторые не любят такие эффекты. Впрочем, некоторые не видят разницу и в картинке с тенями и без — лишь бы четко было. Но наша статья не про них, а про тех, кто умеет получать эстетическое удовольствие от красивой картинки.
Блики объектива
Добавляет эффекты бликов и цветовые разводы, как при наблюдении через объектив камеры. Этот эффект Lens Flares связан с эффектом Bloom. Давайте взглянем на прошлую сцену.
Bloom, no Lens Flares
Без эффекта исчезают все блики в виртуальном объективе. А если в дополнение к этому отключить еще и Bloom, то получим совсем печальный эффект и изображение, лишенное какого-либо ощущения объемного освещения.
No Bloom, no Lens Flares
По итогам видно, что отключение обоих эффектов крайне негативно для итоговой картинки. Но если нужно чем-то жертвовать, то можно отключить блики объектива, Bloom рекомендуем сохранят в любых условиях.
Отражения пространства экрана
Этот параметр (в оригинале называется Screen Space Reflections) добавляет отражения на соответствующих поверхностях. Хорошо видно по воде и лужам, коих в игре много.
Screen Space Reflections ON
Screen Space Reflections OFF
Еще один пример ниже.
Screen Space Reflections ON
Screen Space Reflections OFF
Изменения явные, сильно влияют на восприятие. При достаточной мощности вашего видеоадаптера эффект лучше оставить включенным.
Эффекты экрана
Эффекты экрана (Screen Effects) добавляют пятна крови, грязи и дополнительные световые пятна в каких-то сюжетных сценах или при ранении. То есть проявляются только в определенные моменты. Влияние ясно, обойдемся без примеров.
Дополнительные эффекты. Тестирование
Перейдем к результатам тестирования. Напомним, что за основу бралась конфигурация очень высокого качества графики без сглаживания. Далее поочередно отключался один из параметров, остальные оставались неизменными.
Rise of the Tomb Raider
Наиболее серьезное влияние оказывает отключение тесселяции, что на GeForce GTX 960 позволяет выиграть более 6% производительности. Неплохой эффект оказывает отключение размытия по краям и размытия в движении, даже немного возрастает минимальный fps. Слабо влияет Bloom, но в тестовой сцене нет яркого солнца, при иных условиях влияние эффекта на производительность может быть серьезнее. При заметном влиянии на картинку отражения минимально сказались на уровне быстродействия. Блики объекта и эффекты экрана ожидаемо дают одинаковый результат с ними и без них, но это, опять же, связано с тем, что в тестовой сцене нет условий для проявления таких эффектов.
В качестве небольшого дополнения давайте сравним производительность при разных настройках. Не зря же предварительно изучалось влияние каждого отдельного параметра. Посмотрим, что предлагает игра при высоких предустановках, протестируем, и подберем режим максимального качества без потерь четкости и детализации, но с отключением некоторых эффектов.
Для режима ручных настроек было снижено качество мягких теней, глубина резкости, динамической листвы, эффекты размытия, блики и вместо HBAO+ выбран простой режим AO.
Rise of the Tomb Raider
Стандартные предустановки высокого качества не предусматривают отключение эффектов, но при этом снижается качество текстур, детализация и даже анизотропная фильтрация.
Rise of the Tomb Raider
Результаты сравнения очень высокого качества, ручных настроек и высоких предустановок ниже.
Rise of the Tomb Raider
Отключение некоторых эффектов в сочетании с понижением мягкости теней и небольшого изменения плотности растительности дает ускорение в 14–15%. Между очень высоким и высоким уровнем качества разница 23–29%.
Качество отражения света
На днях игра обновилась. Патч добавил два новых пункта в меню настроек. Это качество отражения света, которое по умолчанию всегда стоит в обычном режиме, и фильтр Grain.
Rise of the Tomb Raider
Изучим влияние качества отражения света.
Reflection Quality Very High
Reflection Quality High
Reflection Quality Normal
Правильнее было бы данный параметр назвать качеством отражений, ведь именно в их четкости проявляется его влияние. Повышение качества улучшает детализацию отражений. Это хорошо заметно по лужам на земле. При этом блики на мокрой земле никак не меняются.
По итогам тестирования в новой версии наблюдался небольшой рост fps относительно первой версии игры, поэтому мы и вынесли это сравнение в конец нашей статьи. Вместо привычного сочетания 31/36,5 fps вышло 31/37 fps.
Rise of the Tomb Raider
Дополнительное повышение качества отражений на один пункт минимально сказывается на общем быстродействии. Максимальное качество бьет по производительности заметнее, снижая результаты на 3–5% относительно начального режима.
Film Grain
Добавляет фильтр зернистости. Некоторое подобие этого эффекта заметно в постановочных сценах, влияние минимальное. Из того что было нами замечено — слабое влияние на интенсивность свечения солнца в определенных сценах.
Фильтр немного усиливает слепящий эффект солнца, и на фоне темных скал действительно проявляется некоторая зернистость. На общей производительности в нашей тестовой сцене не сказывается вообще.