Графические настройки в компьютерных играх — подробный разбор. Ssao в играх что это.

Устанавливает, насколько резкими должны быть текстуры на расстоянии. Снижение этого параметра делает текстуры более четкими, но ценой небольшого снижения FPS. Если увеличить значение, текстуры станут размытыми, но FPS может немного увеличиться. Не работает в режиме DX10.

Что такое ssao в настройках игры

SSAO (Screen Space Ambient Occlusion) — программная техника (технология) в трехмерной компьютерной графике, которая аппроксимирует глобальное освещение и является модифицированной и улучшенной версией метода Ambient Occlusion. Алгоритм SSAO работает в режиме реального времени и моделирует непрямое диффузное освещение и связанное с ним затухание в виртуальном трехмерном пространстве.

SSAO был разработан компанией Crytek Research and Development в Германии во время разработки графического движка CryEngine 2.1 Crysis, первая игра на CryEngine 2, разработанная Crytek и выпущенная осенью 2007 года, была первой игрой, в которой использовался SSAO. Алгоритм и его модификации впоследствии использовались во многих игровых движках, включая Leadwerks Engine, Dagor Engine, Unreal Engine, Unity, X-Ray, Glacier 2 и других.

Содержание

Алгоритм SSAO работает на графическом процессоре видеокарты и действует как пиксельный шейдер, который анализирует буфер глубины (Z-буфер) сцены, хранящийся в текстуре.

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

Алгоритм SSAO нацелен на снижение вычислительной сложности алгоритма окклюзии окружающей среды, чтобы он подходил для GPU реального времени. Однако качество изображения, полученного с помощью SSAO, хуже, чем при оригинальном ambient occlusion, поскольку SSAO использует приближенные методы рендеринга.

Для создания Screen Space Ambient Occlusion в сцене необходимы две текстуры:

  • Карта нормалей: нормальное положение объектов в сцене в каждой точке (пикселе), отображаемой на экране.
  • Карта местоположения: координаты объекта в каждой точке (пикселе), отображаемой на экране.

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

Для достижения высококачественных результатов с гораздо меньшим количеством считываний текстуры по сравнению с контекстным скрытием, SSAO использует приложение выборки вместе со случайно вращающимся ядром. Ориентация ядра повторяется через каждые N пикселей экрана, так что в конечном изображении присутствуют только высокочастотные искажения. В конечном итоге, это высокочастотное искажение удаляется несколькими NxN проходами постпроцессора, который размывает изображение. Глубина неоднородностей учитывается с помощью таких методов, как сравнение соседних нормалей и глубин. Это позволяет уменьшить количество выборок глубины на пиксель примерно до 16 или менее, при этом сохраняя высокое качество результатов и позволяя использовать SSAO в приложениях реального времени, таких как компьютерные игры.

Преимущества и недостатки править | править код

По сравнению с другими алгоритмами, скрывающими контекст, SSAO имеет следующие преимущества:

  • Независимость от сложности сцены.
  • Предварительная обработка не требуется.
  • Отсутствие времени загрузки.
  • Системная память (RAM) не используется.
  • Оперативная память не требуется.
  • Алгоритм работает для каждого пикселя на экране так же, как и алгоритм окклюзии окружающего пространства.
  • SSAO работает полностью на GPU без использования CPU.
  • Он может быть легко интегрирован в любой современный конвейер обработки графики.

Хотя у SSAO есть преимущества, у него есть и недостатки:

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

На PC Gamer появился интересный обзор графических настроек для компьютерных игр, в котором подробно описаны все распространенные инструменты, фильтры и механизмы обработки изображений. Мы перевели его на русский язык, чтобы вы могли настроить свои игры, устранить задержки и насладиться красивой графикой.

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

Nvidia и AMD имеют программное обеспечение для автоматической настройки графики в соответствии со спецификациями вашего компьютера. Программное обеспечение хорошо справляется со своей задачей, но зачастую ручные настройки гораздо полезнее. В конце концов, мы же компьютерные гики, у нас должен быть свободный выбор!

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

Мы начнем с основ, а затем перейдем к детальной настройке в нескольких разделах, посвященных анизотропной фильтрации, сглаживанию и постобработке. В создании этого руководства принимали участие такие эксперты, как Алекс Остин, дизайнер и разработчик Cryptic Sea, Николас Вайнинг, технический директор и ведущий разработчик Gaslamp Games, а также представители компании Nvidia. Мы хотели бы отметить, что написали эту статью простым языком и избегали технических деталей, чтобы помочь вам понять, как работают различные технологии.

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

Графические настройки в компьютерных играх — подробный разбор

Как повысить FPS в играх без разрушения изображения, а также принципы основных настроек графики — все это вы сможете узнать в нашем подробном анализе.

На PC Gamer появился интересный обзор графических настроек для компьютерных игр, в котором подробно описаны все распространенные инструменты, фильтры и механизмы обработки изображений. Мы перевели его на русский язык, чтобы вы могли настроить свои игры, устранить задержки и насладиться красивой графикой.

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

Nvidia и AMD имеют программное обеспечение для автоматической настройки графики в соответствии со спецификациями вашего компьютера. Программное обеспечение хорошо справляется со своей задачей, но зачастую ручные настройки гораздо полезнее. В конце концов, мы же компьютерные гики, у нас должен быть свободный выбор!

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

Мы начнем с основ, а затем перейдем к детальной настройке в нескольких разделах, посвященных анизотропной фильтрации, сглаживанию и постобработке. В создании этого руководства принимали участие такие эксперты, как Алекс Остин, дизайнер и разработчик Cryptic Sea, Николас Вайнинг, технический директор и ведущий разработчик Gaslamp Games, а также представители компании Nvidia. Мы хотели бы отметить, что написали эту статью простым языком и избегали технических деталей, чтобы помочь вам понять, как работают различные технологии.

Содержание

Разрешение

Пиксель — это основная единица цифрового изображения. Это цветная точка, а разрешение — количество столбцов и строк точек на экране. Наиболее распространенными разрешениями на сегодняшний день являются 1280×720 (720p), 1920×1080 (1080p), 2560×1440 (1440p) и 3840 x 2160 (4K или «Ultra-HD»). Однако это относится к дисплеям формата 16:9. Если у вас соотношение сторон 16:10, то разрешения немного отличаются: 1920×1200, 2560×1600 и т.д. Сверхразмерные экраны также имеют различные разрешения: 2560×1080, 3440×1440 и т.д.

Кадры в секунду (frames per second, FPS)

Если представить, что игра — это анимированное видео, то FPS — это количество кадров, отображаемых в секунду. Это не то же самое, что частота обновления экрана, которая измеряется в герцах. Но сравнивать эти два показателя легко, потому что как экран с частотой 60 Гц обновляется 60 раз в секунду, так и игра с частотой 60 кадров в секунду обеспечивает такое же количество кадров за то же время.

Чем больше вы нагружаете свою видеокарту для обработки красивой, детализированной игровой сцены, тем ниже будет ваш FPS. Если частота кадров низкая, она будет повторяться, и вы получите вялые и замороженные эффекты. Мир спортивных геймеров охотится за максимально возможным FPS, особенно в шутерах. А пользователи ПК часто довольствуются 60 fps. Однако мониторы с частотой 120-144 Гц становятся все более доступными, поэтому спрос на FPS также растет. Нет смысла играть на частоте 120 герц, если ваша система обеспечивает только 60-70 кадров в секунду.

Поскольку большинство игр не имеют встроенного бенчмарка, для измерения количества кадров в секунду используется программное обеспечение сторонних производителей, например, ShadowPlay или FRAPS. Однако некоторые новые игры с DX12 и Vulkan могут работать с этими программами некорректно, чего нельзя сказать о старых играх с DX11.

Апскейлинг и даунсэмплинг

В некоторых играх есть параметр «Render Resolution» или «Разрешение рендеринга» — этот параметр позволяет сохранить разрешение экрана постоянным, одновременно регулируя разрешение, в котором игра воспроизводится. Если разрешение производительности игры ниже разрешения экрана, она будет масштабирована до разрешения экрана (апскейлинг). В этом случае изображение будет выглядеть ужасно, поскольку оно будет растянуто во много раз. С другой стороны, если рендерить игру при более высоком разрешении экрана (такая возможность есть, например, в Shadow of Mordor), она будет выглядеть гораздо лучше, но производительность будет заметно ниже (даунсемплинг).

Производительность

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

Мы использовали Large Pixel Collider (суперкомпьютер с сайта PC Gamer) и включили две из четырех доступных видеокарт GTX Titan, чтобы показать, насколько сильно разрешение влияет на производительность.

Сглаживание (Anti-aliasing, антиалиасинг)

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

Для этого существует множество инструментов, но проще объяснить на примере передискретизации (SSAA). Эта техника рендеринга изображений с разрешением выше, чем разрешение экрана, а затем сжимает их до размера изображения. На предыдущей странице вы могли видеть эффект сглаживания при субдискретизации Shadow of Mordor из 5120×2880 в 1440p.

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

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

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

Enhanced Multisampling (CSAA): наиболее эффективная версия MSAA от Nvidia для своих видеокарт.

Расширенный мультисэмплинг (CFAA): также модернизация MSAA, только от AMD для своих карт.

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

Морфологический метод (MLAA): этот метод присущ видеокартам AMD и также пропускает этап рендеринга. MLAA обрабатывает изображение, ища алиасинг и сглаживая его. Николас Вайнинг объясняет: «Морфологическое сглаживание работает с морфологией (узорами) аномалий на краях моделей; оно вычисляет оптимальный способ удаления неровностей для каждого типа аномалий, разбивая края и неровности на небольшие наборы морфологических операторов. А затем он использует определенные режимы смешивания для каждого набора. MLAA можно активировать на панели управления Catalyst.

Subpixel Enhanced Morphologic Anti-Aliasing (SMAA): еще один тип постобработки, объединяющий детали MLAA, MSAA и SSAA. Его можно комбинировать с SweetFX, и многие современные игры поддерживают его из коробки.

Некоторые игры могут иметь специальные настройки, которые не встречаются в других проектах. Эти параметры часто описываются отдельно и обычно не известны общественности. Например, некоторые технологии могут быть выделены из Hunt: Showdown:

MSAA (MultiSample Anti-Aliasing)

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

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

Сглаживание в играх: MSAA

Эффект четырехкратного МСАА

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

FXAA (Fast approXimate Anti-Aliasing)

Идея этого алгоритма заключается в усреднении цветов соседних реальных (не виртуальных) пикселей.

Сглаживание в играх: FXAA

Результаты сглаживания FXAA

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

MLAA (MorphoLogical Anti-Aliasing)

Этот тип контрастности сравним с FXAA от Intel. Алгоритм запускается после окончательного рендеринга изображения, поэтому он может работать на центральном процессоре, а не на видеокарте. Это может значительно снизить нагрузку на видеокарту.

mlaa

Принцип разделения изображения на структуры. Источник

MLAA определяет точки с сильными цветовыми переходами в 3 различных паттернах: Z, U и L. Затем область классифицируется по цвету в соответствии с предопределенными алгоритмами, специфичными для каждого из паттернов.

Это нормализация на основе FXAA и MLAA. Это улучшенная версия MLAA, но она работает на видеокарте, а не на процессоре, что означает, что она занимает его ресурсы.

Что такое Фильтрация текстур. Как работает анизотропная и трилинейная фильтрации

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

Пример трилинейной и анизотропной фильтраций

Пример трилинейной и анизотропной фильтрации Пример трилинейной и анизотропной фильтрации

В опциях игры вы можете изменить коэффициент фильтрации (2x, 4x, 8x и 16x). Выбранное значение определяет, сколько текселей (пикселей текстуры 3D-объекта) используется при обработке изображения. Чем выше значение, тем лучше качество изображения. Этот параметр также влияет на производительность системы, но современные видеокарты без особых проблем справляются с алгоритмами анизотропного фильтра.

Зачем нужна и как включить Вертикальную синхронизацию

Почти во всех играх есть параметр вертикальной синхронизации — V-Sync. Эта технология согласует частоту обновления игры с частотой обновления монитора или телевизора. Это предотвращает «разрыв» изображения и снижает нагрузку на видеокарту. Вертикальная синхронизация определяет количество кадров, необходимое для производительности игры. Например, на мониторе с частотой обновления 60 Гц видеокарта может загрузить только 60 кадров.

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

Рекомендуется активировать эту функцию в однопользовательских играх, где важно плавное изображение без разрывов. В многопользовательских играх, где требуется немедленная реакция на события на экране, лучше отключить вертикальную синхронизацию. Мониторы с высокой частотой обновления и программные модули G-Sync и FreeSync от NVIDIA и AMD помогают предотвратить разрывы. Более подробную информацию об этих технологиях можно найти в соответствующей статье.

Как настраиваются облака, тени, туманы и отражения в играх

Детальная настройка теней

Детальная настройка тени Детальная настройка тени

Точная настройка каждого параметра позволяет оптимизировать производительность. Обычно все опции включаются в один параметр:

  1. Освещение — влияет на отражение объектов, качество отражения и свечение объектов.
  2. Тени придают объем и реалистичность объектам на экране.
  3. Detailed Objects, Particles and Textures (Детализация объектов, частиц и текстур) позволяет выбрать разрешение окружающих объектов, природы и животного мира.

Графические настройки в играх — что такое Полноэкранный режим, Сглаживание, Вертикальная синхронизация, Затенение и другие параметры

Однако существуют некоторые исключения. На примере Cyberpunk 2077 мы видим, как разработчики расширили функциональность стандартных настроек и дали игрокам возможность самим выбирать различные варианты. Пользователи могут меняться:

  1. Контактные тени — отвечает за качественную обработку теней и добавление деталей, которые невозможны при настройках по умолчанию.
  2. Улучшенная геометрия освещения лица — улучшена точность движений лица.
  3. Качество сетки локальных теней — определяет уровень детализации объектов, используемых для создания теней и соответствия тени источнику света.
  4. Качество локальных теней — определяет уровень детализации теней от искусственных источников света.
  5. Диапазон каскадных теней — указывает, на каком расстоянии от солнца видны тени.
  6. Каскадное разрешение теней — контролирует уровень детализации теней от солнца.
  7. Разрешение дальних теней — задает уровень детализации теней удаленных объектов.
  8. Разрешение объемного тумана — определяет качество тумана, облаков пыли и других частиц в воздухе вокруг игрока и обеспечивает реалистичные лучи света и цветовые переходы в сценах.
  9. Max Dynamic Decals — Определяет количество динамических табличек, которые могут светиться одновременно.
  10. Качество отражения со стороны экрана — определяет уровень детализации, качество и гладкость отражения.
  11. Качество поверхностного рассеивания — определяет детализацию освещения кожи.
  12. Ambient Occlusion — обеспечивает естественные тени в областях, где тени появляются неправильно, а свет блокируется окружающей геометрией.
  13. Точность цвета — определяет общее качество изображения и плавность цветовых переходов.
  14. Качество объемного облака.
  15. Качество зеркала.
  16. Уровень детализации изображений (Level of Detail).

Это связано с относительно низкой частотой дискретизации, поэтому имеет смысл ее увеличить. Теперь давайте посмотрим на ту же сцену в формате 4K (3840 x 2160 пикселей).

Fast approximate anti-aliasing (FXAA)

В 2009 году компания Nvidia представила другой метод улучшения неровных краев фигур в 3D-сцене. SSAA использует чистый перебор, в то время как MSAA использует аппаратные возможности и хитрости в коде. FXAA разработан для выполнения исключительно шейдерами. С момента своего появления он был несколько раз усовершенствован и сейчас широко используется в играх.

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

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

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

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

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

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

Во-вторых, сглаживаются все края, а не только края фигур. Например, текстуры с прозрачностью (часто используемые для дыма, мусора и листвы) сглаживаются, чего не может сделать MSAA.

Без AA (слева) и FXAA (справа) — обратите внимание, что деревья и рули крыльев выглядят гораздо более гладкими.

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

Точность этой техники не так хороша, как SSAA или MSAA, поскольку она не может захватывать субпиксельные детали — по сути, это просто сложный фильтр, который может создавать довольно аморфные текстуры. Однако, благодаря своей низкой стоимости и достаточно эффективным результатам, FXAA все еще используется 12 лет спустя, хотя и в измененном виде.

Temporal anti-aliasing (TAA)

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

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

Общая схема для временного сглаживания.

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

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

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

Наиболее популярным алгоритмом является TAA.

Временная АА может привести к чрезмерному размытию и вызвать проблему, называемую ghosting, когда края движущихся объектов выглядят сглаженными, а не разглаженными.

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

Помимо использования значений скорости, большинство реализаций алгоритма TAA выполняют еще одну процедуру проверки образцов истории; это позволяет избежать значений из предыдущих кадров, которые не относятся к текущему кадру (например, они могут быть скрыты за смещенным объектом). Эта техника обычно использует выровненную границу по осям (Aligned Axis Bounding Box, AABB), где измерение цвета буфера истории откладывается вдоль осей; любые пиксели с цветом вне этих границ усекаются.

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

И это ещё не всё!

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

Например, когда Nvidia выпустила серию видеокарт GeForce 9, компания также анонсировала модифицированную версию MSAA под названием Multi-Frame Sampled Anti-aliasing (MFAA). По сути, GPU меняет шаблон выборки с каждым последующим кадром, что означает, что за кадр создается и смешивается меньшее количество образцов.

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

Позже этот производитель GPU вложил значительные ресурсы в разработку алгоритма сглаживания на основе ИИ под названием Deep Learning Super Sampling (DLSS), который впервые появился в 2018 году вместе с выпуском чипов Turing.

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

Хотя основным преимуществом DLSS является повышение производительности (например, рендеринг выполняется при разрешении 1080p, но нейронная сеть масштабирует разрешение до 1440p), система по сути реализует AA, поскольку ее целевыми данными является изображение.

В настоящее время AMD работает над собственной версией такой системы, и когда она появится на рынке, мы можем увидеть, как алгоритмы Deep Learning AA постепенно вытесняют традиционные алгоритмы, но пока этого не происходит. Такие системы не легче реализовать, чем, например, TAA, а визуальные результаты не всегда идеальны.

Поиск лучших методов сглаживания продолжается, но мы прошли долгий путь со времен Riva TNT и Half-Life, когда нам приходилось мириться с рисованными полигонами, потому что у нас не было возможности их исправить.

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

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

Что такое режим ssao в компьютерных играх

Компьютер

SSAO (Screen Space Ambient Occlusion) — программная техника (технология) в трехмерной компьютерной графике, которая аппроксимирует глобальное освещение и является модифицированной и улучшенной версией метода Ambient Occlusion. Алгоритм SSAO работает в режиме реального времени и моделирует непрямое диффузное освещение и связанное с ним затухание в виртуальном трехмерном пространстве.

SSAO был разработан компанией Crytek Research and Development в Германии во время разработки графического движка CryEngine 2.1 Crysis, первая игра на CryEngine 2, разработанная Crytek и выпущенная осенью 2007 года, была первой игрой, в которой использовался SSAO. Алгоритм и его модификации впоследствии использовались во многих игровых движках, включая Leadwerks Engine, Dagor Engine, Unreal Engine, Unity, X-Ray, Glacier 2 и других.

Содержание

Алгоритм SSAO работает на графическом процессоре видеокарты и действует как пиксельный шейдер, который анализирует буфер глубины (Z-буфер) сцены, хранящийся в текстуре.

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

Алгоритм SSAO нацелен на снижение вычислительной сложности алгоритма окклюзии окружающей среды, чтобы он подходил для GPU реального времени. Однако качество изображения, полученного с помощью SSAO, хуже, чем при оригинальном ambient occlusion, поскольку SSAO использует приближенные методы рендеринга.

Для создания Screen Space Ambient Occlusion в сцене необходимы две текстуры:

  • Карта нормалей: нормальное положение объектов в сцене в каждой точке (пикселе), отображаемой на экране.
  • Карта местоположения: координаты объекта в каждой точке (пикселе), отображаемой на экране.

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

Для достижения высококачественных результатов с гораздо меньшим количеством считываний текстуры по сравнению с контекстным скрытием, SSAO использует приложение выборки вместе со случайно вращающимся ядром. Ориентация ядра повторяется через каждые N пикселей экрана, так что в конечном изображении присутствуют только высокочастотные искажения. В конечном итоге, это высокочастотное искажение удаляется несколькими NxN проходами постпроцессора, который размывает изображение. Глубина неоднородностей учитывается с помощью таких методов, как сравнение соседних нормалей и глубин. Это позволяет уменьшить количество выборок глубины на пиксель примерно до 16 или менее, при этом сохраняя высокое качество результатов и позволяя использовать SSAO в приложениях реального времени, таких как компьютерные игры.

Преимущества и недостатки

По сравнению с другими алгоритмами, скрывающими контекст, SSAO имеет следующие преимущества:

  • Независимость от сложности сцены.
  • Предварительная обработка не требуется.
  • Отсутствие времени загрузки.
  • Системная память (RAM) не используется.
  • Оперативная память не требуется.
  • Алгоритм работает для каждого пикселя на экране так же, как и алгоритм окклюзии окружающего пространства.
  • SSAO работает полностью на GPU без использования CPU.
  • Он может быть легко интегрирован в любой современный конвейер обработки графики.

Хотя у SSAO есть преимущества, у него есть и недостатки:

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

С появлением 3D-игр их разработчики столкнулись с серьезной проблемой: мы уже говорили о сглаживании, мы также говорили о фильтрации текстур. Теперь поговорим о другом эффекте, который может значительно улучшить реалистичность изображений — Ambient Occlusion (AO) или затенение.

В оптике различают три простые градации освещенности — тень (источник света не виден), полутень (источник света виден частично) и освещенное пятно (источник света виден полностью). Кажется — все просто, можно в мгновение ока рассчитать границы тени и полутени с помощью обычных лучей. Однако складывающаяся картина создает впечатление, что мы где-то что-то забыли: Таких черных теней не бывает (по крайней мере, на Земле), поэтому сразу становится ясно, что мы кое-что забыли — рассеяние света: дело в том, что фотоны отражаются в реальном времени от разных поверхностей и могут оказаться там, куда не доходят напрямую: Поэтому тень темнее света, но не черная-пречерная. На Земле таким «рассеивателем» фотонов является сама атмосфера.

Но здесь вопрос в том, как его рассчитать. К сожалению, не существует алгоритма, который бы на 100% правильно воспроизводил рассеяние света в реальном времени. Однако существует ряд алгоритмов, которые хорошо приближают реальность и достаточно сложны, чтобы их можно было легко использовать в видеоиграх.

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

Однако здесь есть другая проблема: рендеринг геометрии происходит постепенно, поэтому фактор окклюзии может сильно измениться даже в процессе рендеринга. Конечно, можно рассчитать AO уже при загрузке сцены, но тогда затенение не будет влиять на динамические объекты (фигуры, автомобили и т.д.) — а это не очень хорошо. И здесь возникает идея использования экранного пространства для рендеринга теней, что приводит к созданию простого алгоритма AO — SSAO.

Оцените статью
club-cs.ru