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

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

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

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

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

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

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

Компьютер PDP-1 стоил около $120 тыс. и занимал больше квадратного метра свободного пространства. Поэтому он не был доступен простым смертным, но зато эту ЭВМ использовали в различных исследовательских институтах. Spacewar! копировали на другие PDP-1, где её дорабатывали, добавляя вид от первого лица, мины и прочие нововведения. Разработчикам удалось продать 65 копий игры, а на более поздних версиях PDP она входила в список предустановленных программ для демонстрации возможностей этого компьютера.

Сотрудники МТИ играют в Spacewar
Сотрудники МТИ играют в Spacewar

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

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

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

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

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

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

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

Всё, чем комплектовалась Magnavox Odyssey
Всё, чем комплектовалась Magnavox Odyssey

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

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

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

Векторная графика в Atari Red Baron
Векторная графика в Atari Red Baron

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

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

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

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

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

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

Pac-Man на Atari 2600
1/2
Pac-Man на Atari 2600
Pac-Man на аркадном автомате
2/2
Pac-Man на аркадном автомате

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

Choplifter — игра 1982 года для Apple II
Choplifter — игра 1982 года для Apple II

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

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

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

Prince of Persia в разных цветовых режимах — VGA/EGA/CGA/MDA
Prince of Persia в разных цветовых режимах — VGA/EGA/CGA/MDA

Первый 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, просто они не снискали популярности. Виной тому крайне низкая производительность железа того времени. Дело в том, что любая трёхмерная модель состоит из полигонов — условно говоря, плоскостей, построенных на трёх точках. Это значит, что любую поверхность можно разбить на огромное количество плоских треугольников, и чем их больше, тем качественнее картинка. Соответственно, для расчёта положения этих треугольников в реальном времени требуются большие мощности. И любые попытки собрать трёхмерное виртуальное пространство в игре на доступном обычным людям железе в то время на выходе давали не более пяти кадров в секунду.

Картинка в 2D-играх состоит из фона и спрайтов. Спрайты — это движущиеся по экрану объекты. В зависимости от конкретной платформы, заточенной под 2D-графику, они могут иметь множество ограничений, например по размеру, количеству цветов и так далее. Анимация объектов получается путём чередования разных спрайтов через определённое количество кадров. Фон же задан заранее, и объекты на нём двигаются только вместе с камерой. Для примера возьмём известную всем Super Mario Bros.: грибы, враги и сам Марио — это спрайты, а кирпичи, трубы, облака, кусты и монетки — фон.

Пример применения спрайтов в относительно новой игре — Days Gone. Камеру мы вращаем, а брызги крови всегда повёрнуты к нам одной стороной
1/3
Пример применения спрайтов в относительно новой игре — Days Gone. Камеру мы вращаем, а брызги крови всегда повёрнуты к нам одной стороной
Пример применения спрайтов в относительно новой игре — Days Gone. Камеру мы вращаем, а брызги крови всегда повёрнуты к нам одной стороной
2/3
Пример применения спрайтов в относительно новой игре — Days Gone. Камеру мы вращаем, а брызги крови всегда повёрнуты к нам одной стороной
Пример применения спрайтов в относительно новой игре — Days Gone. Камеру мы вращаем, а брызги крови всегда повёрнуты к нам одной стороной
3/3
Пример применения спрайтов в относительно новой игре — Days Gone. Камеру мы вращаем, а брызги крови всегда повёрнуты к нам одной стороной

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

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

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

Doom — пример отличного симбиоза псевдотрёхмерности и масштабирования спрайтов
Doom — пример отличного симбиоза псевдотрёхмерности и масштабирования спрайтов

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

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

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

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

Скриншот из первой Quake, показывающий разницу между отсутствием 3D-ускорителя и его наличием
Скриншот из первой Quake, показывающий разницу между отсутствием 3D-ускорителя и его наличием

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

Разница в результате при различных методах фильтрации текстур | Изображение: Tom\'s Hardware
Разница в результате при различных методах фильтрации текстур | Изображение: Tom\'s Hardware

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

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

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

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

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

Сравнение выключенного и включённого сглаживания в American Truck Simulator
Сравнение выключенного и включённого сглаживания в American Truck Simulator

Чтобы рационализировать ресурсы ПК, был разработан новый метод — 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. 

AO включено
1/2
AO включено
AO отключено
2/2
AO отключено

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

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

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

Максимальное качество теней в GTA V без PCSS
1/2
Максимальное качество теней в GTA V без PCSS
Максимальное качество теней в GTA V с PCSS
2/2
Максимальное качество теней в GTA V с PCSS

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

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

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

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

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

Комментарии