Добавил сглаживание в свою инди-гонку. Разбираемся как работают эти алгоритмы
Разработка beaterCore ведется уже 15 месяцев, и все это время в игре отсуствовало сглаживание, по причине использования своего собственного игрового движка. Так как игра близка к выходу, начинаю заниматься мелочами, и сглаживание как раз попалось под руку.



Сравнение разных видов сглаживания на сцене. 1: Без сглаживания. 2: 8X MSAA. 3: SSAA (2X)
Читатель, редко играющий в игры, может не знать отличие между MSAA и SSAA, и зачем оно вообще нужно.
Обьясняю: Сглаживание необходимо из-за ограничений разрешения экрана. Когда графика отрисовывается на экране - на каждом пикселе экрана производится набор математических операций, которые определяют, прежде всего, нужно ли его рисовать, или нет.
Так как у таких вычислений только 2 исхода - рисовать или не рисовать - линии на границах модели выглядят "Грубо"
Цель сглаживания - убрать грубые края, так, чтобы линии выглядяли плавнее
Благодаря визуально плавным линиям, создается ощущение, что картинка была отрисована в большем разрешении, чем на самом деле.
Так же один из эффектов использования сглаживания - снижение визуального "шума" при движении камеры. Когда игрок меняет положение, с которого он смотрит на сцену, видеокарта выбирает совершенно другие пиксели для отрисовки. Так при движении создается шум, вызванный резкой сменой цветов на экране. Алгоритмы сглаживания помогают уменьшить эту проблему.
Читатель может задать вопрос, чем сглаживание отличается от простого размытия изображения? Ответ простой - алгоритмы сглаживания добавляют недостающую на картинке информацию, пока размытие теряет уже существующую.
SSAA
Самый качественный алгоритм сглаживания - SSAA. Или же супер-семплинг.
Принцип его работы крайне простой - изображение рисуется в разрешении большем, чем разрешение экрана, а затем сжимается назад.
Пример - разрешение вашего экрана 1920x1080. SSAA сначала отрисует сцену в разрешении 3840x2160, а затем используя линейную или кубическую фильтрацию уменьшит назад в к исходному разрешению экрана.
Так края не просто сглаживаются - на изображении появляется дополнительная информация, которую рендер не смог бы захватить в исходном разрешении
На примере выше можно заметить, что при применении SSAA у буквы i появилась точка сверху, которую не смогла захватить отрисовка в исходном разрешении экрана
Но не смотря на высокое качество результатов работы алгоритма, у него есть большая проблема - он требует очень много вычислительных ресурсов для исполнения. По этому его применение ограничено играми с очень простой графикой, или при наличии крайне производительного компьютера и желании максимального качества изображения.
MSAA
Из-за слабой производительности SSAA возникла необходимость в более быстрых алгоритмах сглаживания. MSAA - один из таких алгоритмов.
Его принцип работы не сильно отличается от SSAA, но MSAA работает только на краях полигонов. Внутри отрисованного полигона MSAA ничего не делает.
Такой подход значительно снижает количество дополнительных пикселей, которые нужно отрисовать видеокарте.
Другие алгоритмы
В современном мире существует множество других алгоритмов сглаживания. Их общая цель - иметь качество, схожее с SSAA, при этом работая быстрее.
Примеры таких алгоритмов:
FXAA - Работает за счет "размытия" резких границ на изображении. Один из самых быстрых алгоритмов сглаживания, основным недостатком которого является низкая четкость изображения
TAA - Похож на MSAA, но дополнительно использует информацию из предыдущих отрисованных кадров. Позволяет снизить визуальный шум, о котором я говорил ранее, при этом используя меньше дополнительных пикселей
DLAA - Алгоритмы на основе нейронных сетей. Плюсом такого подходя является высокое качество итогового изображения, при относительно низком использовании ресурсов видеокарты. Главный минус: такие алгоритмы требуют дополнительные специализированные ядра на видеокарте, повышая ее стоимость.






Лига Геймеров
57.3K постов92K подписчика
Правила сообщества
Ничто не истинно, все дозволено, кроме политоты, за нее пермач, идите на ютуб
Помни!
- Новостные/информационные публикации постим в pikabu GAMES
- Развлекательный контент в Лигу Геймеров
Нельзя:
Попрошайничать;
Рекламировать;
Оскорблять участников сообщества;
Нельзя оценивать Toki Tori ниже чем на 10 баллов из 10;
Выкладывать ваши кулвидосы с только что зареганных акков - пермач
За неэтичное использование сообщества - тоже бан. Если ты выкладываешь пост в наше сообщество и получаешь стартовые плюсы от наших подписчиков, не думай, что вытаскивать потом пост в своё личное сообщество будет умным поступком.