Ssao в играх что это hdao

Как работает затенение в компьютерных играх

Ssao в играх что это hdao. Смотреть фото Ssao в играх что это hdao. Смотреть картинку Ssao в играх что это hdao. Картинка про Ssao в играх что это hdao. Фото Ssao в играх что это hdao

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

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

Но тут возникает вопрос — а как это рассчитать-то? Увы — алгоритма, дающего 100% точное рассеяние света в real-time, нет, однако есть множество хорошо приближенных к реальности алгоритмов, отлаженных настолько, что они спокойно используются в видеоиграх.

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

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

SSAO

Этот алгоритм появился еще в Crysis 10 лет назад. Его суть проста: после построения геометрии у нас остается Z-буфер, или буфер глубины, который включает в себя абсолютно всю информацию о геометрии сцены — а значит никаких проблем сделать AO нет.

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

Ssao в играх что это hdao. Смотреть фото Ssao в играх что это hdao. Смотреть картинку Ssao в играх что это hdao. Картинка про Ssao в играх что это hdao. Фото Ssao в играх что это hdao

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

HBAO и HBAO+

Nvidia не была бы Nvidia, если бы не стала развивать затенение дальше, представив в 2008 году HBAO — Horizon Based Ambient Occlusion. От SSAO это затенение отличалось тем, что оно основано на физической модели, где аппроксимируется интеграл освещенности фрагмента сцены со значениями выборки буфера глубины. Итоговое качество оказывается выше SSAO при большом числе выборок, но мы опять же упираемся в производительность. Поэтому HBAO рендерится обычно в более низком разрешении, что приводит к мерцанию картинки.

Проблема мерцания была исправлена в HBAO+ простым методом, который сейчас активно использует Sony в 4К играх на PlayStation 4 Pro: для рассчета HBAO+ используется шахматный рендеринг, то есть для обработки затенения используется часть предыдущего кадра и половина нового: это требует меньше затрат GPU, но при этом позволяет рендерить затенение в исходном разрешении, что и убирает мерцание.

Ssao в играх что это hdao. Смотреть фото Ssao в играх что это hdao. Смотреть картинку Ssao в играх что это hdao. Картинка про Ssao в играх что это hdao. Фото Ssao в играх что это hdao

HDAO

AMD в стороне не остались, и стали использовать собственное затенение (которое, к слову, также работает и на Nvidia) — HDAO (High Definition AO). Увы — AMD не делится алгоритмом, однако известно, что в его основе лежит Gather4 — технология, которая собирает 4 текселя в один регистр. То есть, как и с HBAO, по сути происходит рендеринг в пониженном разрешении. В итоге, в среднем картинка с HBAO и HDAO сравнима по качеству, но опять же — все достаточно сильно зависит от игры: к примеру, в Far Cry 3 с HDAO трава выглядит красивее:

Ssao в играх что это hdao. Смотреть фото Ssao в играх что это hdao. Смотреть картинку Ssao в играх что это hdao. Картинка про Ssao в играх что это hdao. Фото Ssao в играх что это hdao

Ssao в играх что это hdao. Смотреть фото Ssao в играх что это hdao. Смотреть картинку Ssao в играх что это hdao. Картинка про Ssao в играх что это hdao. Фото Ssao в играх что это hdao
На этом все. Советы для игроков простые: если компьютер хорошо тянет игру без AO, то можно попробовать включить SSAO или HBAO — обычно это снижает fps не более чем на 10%. Если же и с ними производительность отличная — можно попробовать HBAO+ и HDAO. Ну и для самых топовых видеокарт современности можно порекомендовать набирающее обороты VXAO — оно крайне требовательно к ресурсам (в том числе и к видеопамяти), поэтому даже в FHD оно будет доступно лишь пользователям старших Nvidia GTX 900ой и 1000ой линейки, а также владельцам старших AMD RX, Fury и Vega.

Источник

Ssao в играх что это hdao. Смотреть фото Ssao в играх что это hdao. Смотреть картинку Ssao в играх что это hdao. Картинка про Ssao в играх что это hdao. Фото Ssao в играх что это hdao

Oclusión Ambiental ¿Qué es? Различные типы экспликаций SSAO, SSDO, HBAO, HDAO, VXAO

Меня смутил вариант, когда в Far Cry 3 у меня был выбор между SSAO, HBAO и HDAO.

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

Во-первых, какое качество НАИЛУЧШЕЕ? Во-вторых, в чем реальная разница между этими вариантами?

H * AO предлагает лучшее качество, но с повышенным ударом по производительности.

SSAO менее точен, но улучшает качество изображения с гораздо меньшим падением производительности.

Если вы собираетесь использовать H * AO, насколько я понимаю, вам следует выбрать HDAO, если у вас есть карта ATI, или HBAO, если у вас карта NVIDIA.

Вот несколько скриншотов BF3, которые могут помочь: http://www.reddit.com/r/gaming/comments/kwjtw/my_battlefield_3_screenshot_comparison_ssao_vs/

Я рекомендую использовать ссылку, которую они предоставляют здесь: http://www.flickr.com/photos/bmorlok/6197863052/in/set-72157627662461565/lightbox/ и с помощью клавиш курсора быстро переключаться между тремя снимками экрана.

Вы должны быстро определить, где происходит затенение между none, SSAO и HBAO.

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

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

Вы заметите, что SSAO затемняет в тех же областях, но это НАМНОГО менее выражено.

Ssao в играх что это hdao. Смотреть фото Ssao в играх что это hdao. Смотреть картинку Ssao в играх что это hdao. Картинка про Ssao в играх что это hdao. Фото Ssao в играх что это hdao

любая незакрытая поверхность (опционально на определенном расстоянии) горит

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

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

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

Ssao в играх что это hdao. Смотреть фото Ssao в играх что это hdao. Смотреть картинку Ssao в играх что это hdao. Картинка про Ssao в играх что это hdao. Фото Ssao в играх что это hdao

В этой статье есть еще несколько наглядных примеров.

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

Вы можете очень отчетливо заметить этот потолок лицом внизтакже столб темнее наверху.

Ssao в играх что это hdao. Смотреть фото Ssao в играх что это hdao. Смотреть картинку Ssao в играх что это hdao. Картинка про Ssao в играх что это hdao. Фото Ssao в играх что это hdao

В статье NVIDIA есть более подробные сведения об этом.

Заключение

Ответ k1DBLITZ подразумевает, что:

Это может быть верно для Battlefield 3, но не для Far Cry 3.

Мой ответ основан на том, что я испытал в игре, а также на этой статье из HardOCP.

В чем разница между SSAO, HBAO и HDAO в Far Cry 3?

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

SSAO создает тени вокруг краев объектов, иногда неправильно (например, вокруг краев объектов, которые не расположены близко друг к другу).

HBAO приводит к менее неправильному затенению, чем SSAO, но иногда оно слишком выражено (в некоторых областях оно даже темнее, чем SSAO), особенно вокруг травы, листьев и цветов.

Что касается влияния на частоту кадров, то оно практически идентично SSAO на картах AMD и даже немного быстрее, чем SSAO на картах Nvidia.

HDAO более тонкий, чем SSAO и HBAO. Это, наверное, самый точный, потому что неправильного затемнения гораздо меньше.

Выбор HDAO вместо SSAO или HBAO приводит к небольшому падению частоты кадров на картах AMD и значительному падению частоты кадров на картах Nvidia.

Какой из них выглядит лучше всего?

Ответ на этот вопрос субъективен. HDAO, вероятно, является наиболее реалистичным вариантом в Far Cry 3. Однако некоторые люди могут предпочесть SSAO, поскольку это приводит к более контрастному изображению, которое может быть более привлекательным для глаз.

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

HDAO этого не делает.

Источник

Как развивалась графика в играх — от линий на экране осциллографа до трассировки лучей

Ssao в играх что это hdao. Смотреть фото Ssao в играх что это hdao. Смотреть картинку Ssao в играх что это hdao. Картинка про Ssao в играх что это hdao. Фото Ssao в играх что это hdao

Кирилл «gr1nder» Русаков

Как же быстро летит время! Казалось бы, ещё совсем недавно мы играли в двухмерные платформеры на «Денди» или же просиживали часами за пиксельными играми вроде Doom. А сегодня мы уже воротим нос от единственной на огромном уровне «мыльной» текстуры в ААА-играх. Но чтобы графика приобрела современный вид, понадобилось несколько десятилетий развития компьютерной техники и мысли геймдизайнеров. Каким был этот путь, вы можете узнать из нашего материала.

Когда графика не имела значения

Несмотря на то что первые шаги индустрия делала в середине XX века, историки не пришли к однозначному мнению, какую компьютерную игру можно считать первой. Некоторые присвоили этот титул программе из докторской диссертации британца Александра Дугласа, написанной в 1952 году. Его разработка под названием OXO была аналогом игры «крестики-нолики» для университетского компьютера EDSAC в 1952 году. С помощью неё ученый описывал метод исследования взаимодействия человека и компьютера — соревнование между игроком и искусственным интеллектом. Массового распространения OXO не получила, так как программа была заточена только под компьютер EDSAC, существовавший в единственном экземпляре в Кембриджском университете.

Спустя семь лет глава приборостроительного отдела Брукхейвенской лаборатории в США Уильям Хигинботам придумал устройство, которое должно было развлекать посетителей в день открытых дверей. С помощью аналогового компьютера и осциллографа он разработал игру Tennis for Two, которая являлась компьютерной симуляцией настольного тенниса. Единственный нюанс — не были видны ракетки, пользователи могли наблюдать только стол, сетку и шарик. Реализовать эту идею ему помогли наработки в расчёте полёта ядерных боеголовок — Tennis for Two отличалась отменной физикой. Устройство для игры просуществовало два года, после чего было разобрано.

Ssao в играх что это hdao. Смотреть фото Ssao в играх что это hdao. Смотреть картинку Ssao в играх что это hdao. Картинка про Ssao в играх что это hdao. Фото Ssao в играх что это hdao

Ещё через три года появилась первая условно-коммерческая игра с оригинальной идеей — Spacewar! от научных сотрудников Массачусетского технологического института. Она была разработана для компьютера PDP-1 и представляла собой дуэльную «стрелялку» между двумя космическими кораблями. Они отображались на экране в виде стрелок и вели поединок на орбите звезды, расположенной в центре. Дисплей изначально был предназначен для использования в радарах и мог отображать до 20 тыс. точек в секунду на экране разрешением 1024х1024. Этого было достаточно для вывода на экран двух кораблей, их снарядов, главной звезды и множества других точек, представляющих собой фоновые созвездия. В первых версиях фон генерировался случайно, но в процессе доработок создатели прикрутили алгоритм, который брал данные реальных созвездий.

Ssao в играх что это hdao. Смотреть фото Ssao в играх что это hdao. Смотреть картинку Ssao в играх что это hdao. Картинка про Ssao в играх что это hdao. Фото Ssao в играх что это hdao

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

Фильтры, векторы и пиксели

После успеха Spacewar! человечество увидело потенциал в игровой индустрии. Однако первенство в рейтинге игровых устройств захватили отнюдь не компьютеры — в начале 1970-х их стоимость и габариты не позволяли создать массовый спрос. Но коммерсанты придумали альтернативу — аркадные автоматы. Они также стоили солидных денег, но были значительно компактнее и дешевле компьютеров. Их железо было заточено только под одну игру, поэтому для домашних развлечений устройства были не лучшим выбором. Однако владельцы баров и других общественных заведений, поставив такой автомат, могли развлечь посетителей и даже в теории заработать на этом.

Первые аркадные автоматы — Galaxy Game и Computer Space — вышли в 1971 году. Они были созданы на основе Spacewar! и практически полностью повторяли геймплей программы научных работников МТИ (хотя во второй игре появился одиночный режим — в оригинальной Spacewar! ИИ не было из-за ограниченной вычислительной мощности PDP-1). Однако коммерческого успеха новые игры не снискали.

Спустя год появилась и первая игровая консоль для домашнего использования — Magnavox Odyssey. Она была разработана ещё в 1966 году инженером Ральфом Баером, который до этого работал в оборонной промышленности, но только через шесть лет ему удалось найти инвестора для массового производства консоли. Её технические возможности были крайне ограничены: Magnavox Odyssey могла выводить только три движущихся объекта, два из которых управлялись манипуляторами, а один — алгоритмом.

Ssao в играх что это hdao. Смотреть фото Ssao в играх что это hdao. Смотреть картинку Ssao в играх что это hdao. Картинка про Ssao в играх что это hdao. Фото Ssao в играх что это hdao

Но даже с таким малым набором функций разработчики умудрились выпустить для консоли 28 игр. Всё дело в том, что изображение дополнялось полупрозрачными цветными фильтрами, которые приклеивались к экрану. На них были изображены поля для хоккея, футбола, гандбола, волейбола, баскетбола и даже гоночные трассы. Они-то и придавали происходящему на дисплее «смысл», превращая хаотичные перемещения объектов в спортивные игры.

Magnavox Odyssey разошлась тиражом более 350 тыс. устройств, однако с коммерческой точки зрения не стала успешной. Спустя несколько лет Magnavox прекратила производство Odyssey и была куплена голландской корпорацией Philips.

Ssao в играх что это hdao. Смотреть фото Ssao в играх что это hdao. Смотреть картинку Ssao в играх что это hdao. Картинка про Ssao в играх что это hdao. Фото Ssao в играх что это hdao

Однако именно эта консоль вдохновила начинающего игрового разработчика Аллана Алькорна из Atari (кстати, компанию открыл производитель Computer Space) на создание аркадного автомата Pong, ставшего настоящим хитом. Эта игра впервые принесла создателям аркадных автоматов прибыль. Вскоре примеру Atari последовали и другие компании — Konami, Namco, Sega и так далее.

Все первые успешные аркадные автоматы использовали растровый принцип построения графики. Изображение при таком подходе состоит из множества точек (пикселей), которые собираются в мозаику. Если не говорить про цветной вывод (в первых автоматах изображение было чёрно-белым), то если пиксель включён — на экране появляется белая точка. Активируя нужные пиксели, система создает цельную картинку. Минус этого подхода в том, что при низких разрешениях (а на заре игровой индустрии других не было) линии под непрямыми углами превращались в «ступеньки».

Альтернативой растровому принципу был векторный. При нём изображение формируется из простейших геометрических фигур (примитивов) — окружностей, прямых, дуг и так далее, — расположение которых описано в файле. Из-за этого векторные картинки легко масштабировались, а потому с их помощью можно было легко имитировать трёхмерность, создавая модельки из каркаса векторов и постепенно увеличивая или уменьшая их в реальном времени. Например, этот принцип был реализован в аркадном автомате Atari Red Baron 1980 года.

Ssao в играх что это hdao. Смотреть фото Ssao в играх что это hdao. Смотреть картинку Ssao в играх что это hdao. Картинка про Ssao в играх что это hdao. Фото Ssao в играх что это hdao

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

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

Добавь в свою жизнь красок

Цветное телевидение появилось ещё до начала Второй мировой войны, однако игры научились работать с цветом значительно позже. Выше мы уже рассказали про то, как на Magnavox Odyssey получалось цветное игровое поле — этому способствовали полупрозрачные фильтры, которые крепились к экрану. Похожие методы использовались и в первых аркадных автоматах. Например, Boot Hill имел подложку, имитирующую ландшафт, а динамическими были только ковбои, которыми управляли игроки, кактусы и проезжающие кареты, служившие препятствиями, а также счёт в углу.

Первой же игрой, выводившей сразу цветное изображение, стала Indy 4 от Atari, релиз которой состоялся в 1976 году. Этот гоночный автомат могли использовать до четырёх человек, и чтобы машины можно было отличить друг от друга, их раскрасили в четыре разных цвета. При этом игровое поле всё ещё оставалось чёрно-белым, но первый шаг был сделан — в последующих играх цветовая палитра только увеличивалась. На долгое время аркадные автоматы стали абсолютными лидерами в том, что касается разнообразия красок.

Что касается консолей, то и там цветное изображение появилось как раз в середине 1970-х. Например, консоль Atari 2600, вышедшая в конце 1977 года, поддерживала палитру из 128 цветов при использовании стандарта NTSC, однако в одной строке на экране могло присутствовать только до четырёх цветов одновременно. При этом два из них приходились на игровое поле и ещё два — на спрайты. Ещё сильнее ухудшало ситуацию наличие всего 128 байт оперативной памяти. Чтобы понять, насколько консоли того времени отставали от аркадных автоматов, достаточно сравнить версии Pac-Man для Atari 2600 и аркадного автомата.

Ssao в играх что это hdao. Смотреть фото Ssao в играх что это hdao. Смотреть картинку Ssao в играх что это hdao. Картинка про Ssao в играх что это hdao. Фото Ssao в играх что это hdao

Ssao в играх что это hdao. Смотреть фото Ssao в играх что это hdao. Смотреть картинку Ssao в играх что это hdao. Картинка про Ssao в играх что это hdao. Фото Ssao в играх что это hdao

Середина 70-х также стала периодом появления первых доступных обычным людям персональных компьютеров. Но первые игры на них также не отличались разнообразием цветовой гаммы. Самым продвинутым в графическом плане ПК того времени был восьмиразрядный Apple II, который поступил в продажу в 1976 году. При переключении видеоконтроллера в цветной режим разрешение снижалось с 280×192 до 140×192, при этом поддерживались только шесть цветов. В итоге при попытках раскрасить картинку игрок получал пиксельное нечто.

Ssao в играх что это hdao. Смотреть фото Ssao в играх что это hdao. Смотреть картинку Ssao в играх что это hdao. Картинка про Ssao в играх что это hdao. Фото Ssao в играх что это hdao

Но на тот момент пользователи ПК были рады и такому — полезная в хозяйстве машина могла их ещё и развлекать. Кроме того, ПК значительно превосходили консоли по объёму оперативной памяти, что позволяло запускать более сложные игры. Эти устройства развивались постепенно (в отличие от консолей, которые двигались скачкообразно), поэтому далее мы сосредоточимся именно на них.

Итак, с середины 70-х и до начала 80-х, помимо Apple, производством домашних ПК занимались ещё несколько компаний — Tendy, Commodore, Atari, ZX и другие. Каждый из них имел собственную архитектуру, которую тщательно скрывал от конкурентов. Но вскоре на этот рынок пришла IBM — компания, которая до этого занималась исключительно суперкомпьютерами и большими серверами.

К началу 1980-х IBM была гигантом в сфере информационных технологий. Выйдя на рынок ПК, она использовала абсолютно другую стратегию — полностью открыла архитектуру, выпустив вместе с первым компьютером мануал, где указывались все нюансы вплоть до разводки печатных плат. Это позволило IBM захватить рынок — многие сторонние компании занялись созданием периферийных устройств для её компьютеров, а производители ПК с закрытой архитектурой остались не у дел.

Ssao в играх что это hdao. Смотреть фото Ssao в играх что это hdao. Смотреть картинку Ssao в играх что это hdao. Картинка про Ssao в играх что это hdao. Фото Ssao в играх что это hdao

Первый IBM PC мог быть оснащён двумя видеоадаптерами — монохромным MDA и цветным CGA. Второй поддерживал 16 цветов, но мог выводить изображение в разрешении 320х120, только используя одну из трёх четырёхцветных палитр. Именно поэтому большинство игр той эпохи использовали только белый, чёрный, пурпурный и сине-зелёный цвета. Через три года IBM выпустила новый видеоадаптер EGA. Палитра увеличилась до 64 цветов, из которых на экран можно было вывести 16 при разрешении 640х350. Кроме того, EGA имел в четыре раза больше видеопамяти, чем CGA, — 64 против 16 КБ. В 1987 году IBM презентовала новый стандарт VGA с поддержкой до 256 цветов.

Открытость IBM-совместимой архитектуры привела к тому, что на рынке появилось множество производителей периферии для таких ПК. Когда в 1988 году IBM захотела представить новый стандарт XGA с увеличенным до 800х600 разрешением, уже сформировался новый консорциум разработчиков видеоадаптеров — VESA. Он представил более универсальную и продвинутую схему SVGA. Она была полностью совместима с VGA, но помимо разрешения от 800х600, видеоадаптеры, созданные по этому стандарту, были способны выводить до 16,7 млн цветов. Именно такую палитру поддерживает большинство современных мониторов — только дорогие профессиональные решения могут отображать свыше миллиарда оттенков.

Переход от 2D к 3D

Первой по-настоящему «честной» трёхмерной игрой считается Quake. Однако на самом деле в начале 1980-х уже были отдельные тайтлы в 3D, просто они не снискали популярности. Виной тому крайне низкая производительность железа того времени. Дело в том, что любая трёхмерная модель состоит из полигонов — условно говоря, плоскостей, построенных на трёх точках. Это значит, что любую поверхность можно разбить на огромное количество плоских треугольников, и чем их больше, тем качественнее картинка. Соответственно, для расчёта положения этих треугольников в реальном времени требуются большие мощности. И любые попытки собрать трёхмерное виртуальное пространство в игре на доступном обычным людям железе в то время на выходе давали не более пяти кадров в секунду.

Ssao в играх что это hdao. Смотреть фото Ssao в играх что это hdao. Смотреть картинку Ssao в играх что это hdao. Картинка про Ssao в играх что это hdao. Фото Ssao в играх что это hdao

Ssao в играх что это hdao. Смотреть фото Ssao в играх что это hdao. Смотреть картинку Ssao в играх что это hdao. Картинка про Ssao в играх что это hdao. Фото Ssao в играх что это hdao

Ssao в играх что это hdao. Смотреть фото Ssao в играх что это hdao. Смотреть картинку Ssao в играх что это hdao. Картинка про Ssao в играх что это hdao. Фото Ssao в играх что это hdao

Но всё же разработчики придумали несколько хитростей, чтобы 2D-изображение казалось трёхмерным. В основном эти методы можно условно поделить на два:

Псевдотрёхмерность + масштабирование спрайтов. Часто эти методы использовались отдельно, но есть множество культовых игр, где они применяются в связке, поэтому мы объединили их в одну группу. Например, так было в классических версиях Doom: весь уровень был двухмерным, то есть в нём невозможно было расположить одну комнату под другой, при этом ступеньки, по сути, были проекцией на плоскость, а наступая на них, персонаж не сам шел вверх, а как бы двигал экран. Все поверхности были расположены под прямыми углами — полы и потолки были строго горизонтальными, а стены и столбы — вертикальными.

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

Ssao в играх что это hdao. Смотреть фото Ssao в играх что это hdao. Смотреть картинку Ssao в играх что это hdao. Картинка про Ssao в играх что это hdao. Фото Ssao в играх что это hdao

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

Ssao в играх что это hdao. Смотреть фото Ssao в играх что это hdao. Смотреть картинку Ssao в играх что это hdao. Картинка про Ssao в играх что это hdao. Фото Ssao в играх что это hdao

Однако ни одно ухищрение не позволяло преодолеть ограничения не только в графическом плане, но и с точки зрения геймплея. Переход к 3D был неизбежен, оставалось только дождаться достаточно производительного железа. Новые консоли начала 90-х вроде PlayStation уже имели аппаратный чип для ускорения 3D-графики. Именно они дали толчок к тому, что производители периферии для ПК массово озадачились этой проблемой. При этом устройства для аппаратного ускорения 3D-графики для компьютеров производились уже с середины 80-х, но стоили они более десятка тысяч долларов. На массовом рынке спроса на такие устройства не было, поэтому и игры для компьютеров в 3D практически не появлялись.

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

С ускорителем пользователи не только получали вожделенные 30 FPS (тогда это была сверхвысокая частота кадров), но и намного более качественную картинку. Новые устройства позволяли убирать пикселизацию текстур, выводя графику на новый уровень, а также отображать новые эффекты и цвета. И даже со средней картой на ПК стало возможно получить картинку, сравнимую по качеству с изображением на PlayStation или Sega Saturn, только в большем разрешении — 800х600 на ПК против 320х200 на консолях.

Ssao в играх что это hdao. Смотреть фото Ssao в играх что это hdao. Смотреть картинку Ssao в играх что это hdao. Картинка про Ssao в играх что это hdao. Фото Ssao в играх что это hdao

Однако каждый производитель, среди которых были NVIDIA, ATI, PowerVR, 3dfx и другие, пытался продвинуть свой стандарт API. При этом многие из них не слишком хорошо «дружили» с самыми популярными Direct3D и OpenGL. Каждый пытался договориться с как можно большим количеством разработчиков для продвижения своих технологий, чтобы именно они стали новым стандартом. В итоге в лидеры вырвалась 3dfx со своими ускорителями Voodoo разных поколений. Они не работали без 2D-карты, стоили дороже, чем конкуренты, но в то же время API этой компании под названием Glide был самым удобным решением достижения максимального FPS.

Победу 3dfx праздновала недолго: пока она медленно и долго разрабатывала новые модели видеокарт с Glide, NVIDIA и ATI намного быстрее выпускали более производительные решения. Кроме того, всё больше разработчиков, которые создавали игры под Windows, стали использовать Direct3D или OpenGL — эти API тоже совершенствовались. Медлительность 3dfx, а также другие стратегические ошибки привели к тому, что к началу XXI века она потеряла главенствующее положение на рынке и вскоре была выкуплена NVIDIA.

На пути к фотореализму

Несмотря на то что 3D-ускорители давали большую прибавку к производительности всей системы в играх, многие процессы в то время до сих пор выполнялись на CPU. Из-за этого процессоры зачастую становились «бутылочным горлышком», которое не позволяло развивать графику дальше быстрыми темпами. В 1999 году NVIDIA сделала первый серьёзный шаг к тому, чтобы решить эту проблему. Её видеоадаптер GeForce 256 принято считать первой в истории видеокартой с полноценным GPU. Она не только выводила изображение на экран, но и просчитывала освещение и трансформацию объектов в реальном времени, снимая эту задачу с CPU.

В дальнейшем именно в этом направлении и стали двигаться графические адаптеры. Дело в том, что добиться фотореалистичной графики можно было уже тогда, но только не в играх. При желании на компьютере в любой момент можно создать модели любой детализации, только на их просчёт уйдёт очень много времени, а в играх необходимо просчитывать всё это «на лету». И только с ростом производительности и развитием архитектур GPU у разработчиков будут появляться инструменты для достижения фотореализма. Более универсальный центральный процессор даже сегодня берёт на себя самые сложные задачи, но чем совершеннее становятся графические процессоры, тем больше функций они способны выполнять. Мы же выделим основные технологии и направления, которые дают наибольший эффект на пути к фотореалистичной графике.

Шейдеры — специальные программы для видеокарт, которые описывают детальные свойства объекта. То есть любая грязь, степень шероховатости, которая влияет на отражение, преломление света и другие параметры, конфигурируется в том числе с помощью шейдеров. Они стали массово внедряться с начала 2000-х, когда вышел DirectX 8.0 и видеокарты с его поддержкой. Без шейдеров невозможно реализовать сколько-нибудь реалистичное поведение и отображение водной поверхности, анимации травы, листвы, туман, освещение, затенение и другие постэффекты.

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

Самый простой способ — поточечная выборка, или Point Sampling. Для искомого пикселя выбирается цвет какого-то одного тексела. Это наименее ресурсоёмкий способ, однако он даёт худшую картинку: на выходе получается ярко выраженная пикселизация и «блочность», особенно при увеличении. Чтобы уменьшить этот эффект, решено было использовать билинейную фильтрацию — окрашивать пиксель в средневзвешенный цвет четырёх ближайших текселов. Стало лучше, но такой метод приводит к тому, что чёткое изображение текстуры превращается в градиент, и картинка на экране становится размытой.

Ssao в играх что это hdao. Смотреть фото Ssao в играх что это hdao. Смотреть картинку Ssao в играх что это hdao. Картинка про Ssao в играх что это hdao. Фото Ssao в играх что это hdao

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

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

Окончательно эту проблему победила анизотропная фильтрация. Она использует намного более сложные алгоритмы, которые находят средневзвешенный цвет текселов не только MIP-текстур по направлению обзора, но и поперёк. Ещё одно отличие от предыдущих методов — использование до 128 текселов для поиска средневзвешенного цвета. Размытие при таком подходе получается минимальным, но сам метод требует большей производительности. Однако в наше время даже самые слабые видеокарты способны справляться с анизотропной фильтрацией, минимизируя ее влияние на частоту кадров.

Сглаживание, или Anti-Aliasing, — устранение «ступенчатости» (алиасинга) на границах текстур. Пиксели, которые формируют изображения, во всех мониторах квадратные. То есть этот эффект будет наблюдаться на всех кривых и прямых границах, угол которых отличен от 90 или 180 градусов. С увеличением разрешения алиасинг становится всё менее заметным. Однако даже на 4К-дисплеях он присутствует, не говоря уже о самых распространённых в наше время Full HD.

Самый простой по своему принципу алгоритм сглаживания — Supersample Anti-Aliasing (SSAA). Прежде чем получить искомый кадр, видеокарта рендерит изображение в большем разрешении, чем необходимо, затем уменьшает его, усредняя значения цветов пограничных пикселей. Нетрудно догадаться, что если мы хотим сгладить изображение до практически нулевого алиасинга, то нам необходима запредельная производительность — для рендера картинки в очень высоком разрешении.

Ssao в играх что это hdao. Смотреть фото Ssao в играх что это hdao. Смотреть картинку Ssao в играх что это hdao. Картинка про Ssao в играх что это hdao. Фото Ssao в играх что это hdao

Чтобы рационализировать ресурсы ПК, был разработан новый метод — Multisample Anti-Aliasing (MSAA), который рендерит уже не полный кадр в повышенном разрешении, а только те самые пограничные участки, где нужно устранить алиасинг. Есть ещё несколько алгоритмов вроде CSAA и CFAA, которые являются модификациями MSAA, но значительно более быстрыми.

Абсолютно иной принцип имеет алгоритм сглаживания TXAA, который изначально разрабатывался под видеокарты NVIDIA на архитектуре Maxwell, представленные в 2014 году. Позже аналоги TXAA стали поддерживать и графические процессоры других производителей, только там он назывался немного иначе — TAA. Суть алгоритма заключается в сопоставлении пограничных кадров и усреднении участков, нуждающихся в сглаживании. Если сравнивать с другими технологиями, то TXAA отлично показывает себя при медленном движении объектов, но плохо справляется с динамичными сценами.

Самой совершенной на текущий момент технологией сглаживания является DLSS (Deep Learning Super Sampling). Она поддерживается только на видеокартах NVIDIA, оснащённых тензорными ядрами (архитектуры Turing и Ampere). DLSS использует нейросеть, которую обучают, показывая ей «идеальные кадры» в разрешении до 16х. Впоследствии нейросеть сможет превращать кадры с низким разрешением в кадры с высоким разрешением, тем самым снижая алиасинг. Она также анализирует векторы движения, чтобы предсказывать, как ей выдать наилучшее изображение в следующем кадре. Технология постоянно совершенствуется, а нейросеть — обучается. И если поначалу эффективность DLSS вызывала вопросы, то со временем она стала показывать себя всё лучше.

Как мы уже говорили ранее, с повышением разрешения необходимость в сглаживании становится всё меньше и меньше. Текущее поколение консолей поддерживает разрешение только до 4К при достаточной частоте кадров, новейшие видеокарты для ПК также пока не рассчитаны на более высокие разрешения. На больших мониторах, особенно если сидеть близко к ним, алиасинг всё ещё заметен. Но пройдёт пара десятков лет, и стандартное разрешение увеличится до 16К, а то и больше, и мы навсегда забудем про все эти странные аббревиатуры и будем наслаждаться идеальной картинкой без TAA, SSAA или DLSS.

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

Свет — одна из самых сложных составляющих игровой графики. Существует множество способов реализации освещения. Самый простой для понимания — световые карты. Для какой-либо локации создаётся, грубо говоря, отдельный фильтр, который показывает, где должны быть освещённые участки, а где — тени. Этот способ работает только со статичными объектами. Их тени можно заготовить заранее и загружать по мере надобности вместе с картой освещения. Рассчитать максимально мягкие тени помогает метод Ambient Occlusion.

Ssao в играх что это hdao. Смотреть фото Ssao в играх что это hdao. Смотреть картинку Ssao в играх что это hdao. Картинка про Ssao в играх что это hdao. Фото Ssao в играх что это hdao

Ssao в играх что это hdao. Смотреть фото Ssao в играх что это hdao. Смотреть картинку Ssao в играх что это hdao. Картинка про Ssao в играх что это hdao. Фото Ssao в играх что это hdao

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

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

HBAO+, PCSS и HDAO — дальнейшее развитие SSAO от NVIDIA и AMD соответственно. Первый и последний метод при генерации теней используют сцену в более высоком разрешении, поэтому затенение получается намного точнее, а PCSS размывает очертания тени по мере удаления от объекта.

Ssao в играх что это hdao. Смотреть фото Ssao в играх что это hdao. Смотреть картинку Ssao в играх что это hdao. Картинка про Ssao в играх что это hdao. Фото Ssao в играх что это hdao

Ssao в играх что это hdao. Смотреть фото Ssao в играх что это hdao. Смотреть картинку Ssao в играх что это hdao. Картинка про Ssao в играх что это hdao. Фото Ssao в играх что это hdao

Самые большие возможности в плане создания освещения и затенения даст использование метода трассировки лучей ( Ray Tracing ). Массово внедрять её в свои продукты разработчики получили стали недавно — в 2018 году после релиза видеокарт NVIDIA на архитектуре Turing. Позже её поддержка появилась на видеокартах AMD RDNA 2.

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

Проще всего это объяснить на примере зеркала: если раньше изображение в нём было, по сути, отзеркаленной комнатой за невидимой текстурой, то при использовании Ray Tracing это будет честное отражение. Если же сравнивать качество затенения, то SSAO нам давал только имитацию глобального затенения около углов, то трассировка лучей позволит рассчитать всё физически корректным образом, в том числе с учётом цвета, интенсивности и так далее.

Ssao в играх что это hdao. Смотреть фото Ssao в играх что это hdao. Смотреть картинку Ssao в играх что это hdao. Картинка про Ssao в играх что это hdao. Фото Ssao в играх что это hdao

Пока что разработчики только учатся правильно работать с трассировкой лучей, а видеокарты, которые её поддерживают, есть далеко не у всех. При этом даже самые топовые модели не во всех играх могут обеспечить 60 FPS на разрешении 4K с активированной Ray Tracing и максимальными настройками графики. Но только самые жёсткие скептики не согласятся с тем, что появление достаточной производительности для решения подобных задач — дело времени.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *