31 декабря 2021 31.12.21 31 3934

История графических 3D технологий в играх за 15 лет. Часть первая

+22

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

Как мог понять проницательный читатель, этой поделкой я, мягко говоря, остался недоволен. Мало того, что половина ролика составляет нативное нахваливание производителя геймерских устройств с неуместными к этому подводками, так само содержание не соответствует заявленному. Вместо разбора мы получили дилетантское мнение о красивых, по мнению автора, проектах. Такое не могло пройти незамеченным мимо меня, и поэтому я представляю свою версию развития графики в real-time рендере.

Начало времён и бурное развитие

«В начале было Слово, и Слово было у Кармака, и было полигон»

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

(примечание: автор сего эпоса знает о таком понятии, как воксели, но намеренно не говорит о них в основном материале ввиду малого распространения такого метода построения объемного изображения в «больших» играх).

Если мы начали говорить о полигонах, то нельзя не упомянуть пусть и не первопроходца, но, скажем так, популяризатора полностью объёмного изображения — Quake, показавшего, как нужно делать и теперь все «большие» проекты исполнены в 3D пространстве.

Так-с, память «отцу» красивых игр отдана, перейдем к нашему таймлайну.

В 2006 году всё больше разработчиков выпускало свой продукт с прицелом на новое седьмое поколение консолей. А целиться было куда. Свежий XBOX 360, в момент выхода, давал фору любому персональному компьютеру. Сами посудите — в основе него находился 3 ядерный 6 поточный PowerPC процессор с частотой работы 3.2 ГГц, видеокарта имела унифицированную шейдерную архитектура, 512 мегабайт сверхбыстрой ОЗУ. Для такого нафаршированного монстра не могло не выйти достойного тайтла, показавшего бы всю мощь его внутренностей. И стала им 4 часть «Свитков» с подзаголовком Oblivion. Что же там крутого?

Во-первых — очень большая дальность прорисовки. Стоя, чуть ли не в середине мира, игрок мог видеть его конец.

Ещё можно заметить невероятное количество детализированной растительности. Это стало возможным, благодаря технологии SpeedTree. Суть заключается в следующем — листья на деревьях, исполнены особым методом и являются спрайтами (плоским изображением). В силу невозможности отображения в трех осях, при перемещении игрока, ветки как бы следуют за ним.

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

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

Вообще, эту технологию создала не Bethesda. Она применялась ещё за несколько лет в Tiger Woods PGA Tour и как отдельный редактор, в котором можно сделать множество лиц за считанные минуты или воссоздать нужное по 3 фото и вывести готовыми для лицевой анимации

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

Благо нашлись неравнодушные люди и сделали спасительные для наших глаз моды, исправившие вышеописанные недочеты, и стали морды существ выглядеть, как задумывал их отец наш — Тодд Говард.

Упоминания стоит физический движок, которым здесь являлся небезызвестный Havok. Он позволял брать, практически, любой предмет и делать с ним всё что угодно.

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

Ну, и самый главный вопрос всех графонолюбов: «что с текстурками?»

А сними все хорошо. Разрешение, на сегодняшний день, оставляет желать лучшего, но использование карт normal, bump делает их не вырвиглазными, а вполне удовлетворительными.

Bump mapping

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

Normal mapping – позволяет отражать свет, симметрично вершине, благодаря чему создаётся более плавный переход между гранями полигонов и малодетализированная сетка выглядит менее угловатой. То есть мы рендерим низкополигональную модель так, чтобы свет отражался от нее, как от высокополигональной   

Цифра снизу – количество треугольников у шариков. Можно видеть, что их число одинаковое, но из-за карты нормалей объект справа смотрится гораздо круглее
Цифра снизу – количество треугольников у шариков. Можно видеть, что их число одинаковое, но из-за карты нормалей объект справа смотрится гораздо круглее
Тоже самое и здесь. Как видите, просто 500 полигонов недостаточно, чтобы голова скульптуры святого Матфея смотрелась правдоподобно. Но стоит нам перенести карту нормалей с модели, где вершин в пару тысяч раз больше и мы получаем ничем, на первый взгляд, неотличимую копию оригинала.
Тоже самое и здесь. Как видите, просто 500 полигонов недостаточно, чтобы голова скульптуры святого Матфея смотрелась правдоподобно. Но стоит нам перенести карту нормалей с модели, где вершин в пару тысяч раз больше и мы получаем ничем, на первый взгляд, неотличимую копию оригинала.

 Parallax mapping

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

Для отражений на воде применялся cube mapping (кубические карты), представляющий собой трехмерную текстуру, наложенную на, как не сложно догадаться, шесть граней куба.

Такой метод, в своей основе, имеет немало недостатков. Например, искажения отражаемой поверхности.

К тому же, отражать динамику таким способом крайне дорого (в плане производительности), ведь нужно передавать много текстур, в идеале, несколько десятков раз за секунду, что дает непозволительную нагрузку на пропускную способность видеопамяти.

Как итог, 2006 задал планку разработчикам в красоте изображения, обойти её было сложно, но наступил 2007.

Следующий год запомнился геймерам, как самый ''графонистый'' за всё 7 поколение. Сначала вышла первая часть, пожалуй, наиболее известной СНГ франшизы S.T.A.L.K.E.R., с подзаголовком Тень Чернобыля, которая томилась в кругах производственного ада больше 6 лет. Но, думаю, результат стоил ожиданий, по крайне мере, в технологическом плане.

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

Два светящихся шара создают тень, но свет от одно перекрывает тень от второго, при этом также создавая тень
Два светящихся шара создают тень, но свет от одно перекрывает тень от второго, при этом также создавая тень

Артефакт освещает и затеняет пачку патронов, которую я положил на землю

Кроме того, Сталкер имел фотореалистичные текстуры, на которые накладывались вышеупомянутые карты bump и normal, из-за чего материалы выглядели очень правдоподобно. На то время.

Но хоть Сталкер и был достаточно красивым началом серии, всё же лидером по картинке, в этом году, ему было стать не суждено, ибо в ноябре студия CRYTEK выпускает свое творение, напоминавшее технодемо, нежели игру — Crysis. Этот тайтл стал королем графики на много лет вперёд. Рассмотрим его внутренности поближе.

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

Ещё в Крузисе было очень много шейдеров, выполнявших разное предназначение.

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

Или так называемые god rays (рассеивание в глубину или «лучи бога»), воспроизводимые при помощи рендера специальной текстуры-маски, которой передается максимальное значение глубины в кадре.

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

В итоге мы видим, всё это, как лучи, просачивающиеся в глубь кадра. Но это работает, пока текстура-маска находится в поле видимости камеры, ибо в ином случае эффект полностью пропадает.

Также, не стоит обходить стороной новый вид объемного текстурирования — parallax occlusion mapping, учитывавший источники освещения, благодаря чему рельеф текстуры мог затеняться.

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

И это не предпросчитанное уничтожение, а в реальном времени и поэтому зоны повреждения каждый раз отличаются, в зависимости от места взрыва.

Любой такой сарай можно разрушить до основания, при этом с его остатками останется возможность взаимодействия

Но, всё-таки, главное нововведение второй итерации движка CryEngine — это амбиентная окклюзия (SSAO). Данный алгоритм создавал непрямое затенение объектов, в следствии чего картинка приобретала бо́льшую объёмность, контрастность.

Этот метод был придуман самими разработчиками и впоследствии стал стандартом на многие годы. Разберем его работу поподробнее.

Для работы затенения в пространстве экрана используется Z-буфер (буфер глубины), в котором содержится информация о удаленности объекта (в нашем случае, относительно глобального источника света). Чем ближе объект, тем более темная градация серого применяется к нему.

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

В определенной точке мы производим сэмплирование (выделяем точки вокруг него и проверяем их значении в буфере глубины). Некоторые сэмплы проходят проверку, некоторые нет. Затененность рассчитывается из соотношения выборок, которые прошли и не прошли тест. В этом примере проверку прошли 4 имеют значения в Z-буфере, а 6 нет, т. е. коэффициент затенения составит 0.4, где 1 — фоновое освещение, а 0 — полная тень.

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

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

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

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

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

Ну, и ещё один недостаток — излишнее затемнение больших плоских поверхностей (стены, потолок).

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

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

На этом, вроде, всё. Как вы могли заметить, 2007 выдался крайне прорывным в графике и затмить другому, из рассматриваемых нам, году, его вряд ли получится (никто не вернет 2007).

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

Из интересного можно выделить аппаратное (работающее на видеокарте) ускорение PhysX, которое, к тому моменту, получило заметное распространение (Mafia 2, Metro 2033, Анабиоз: сон разума, Mirror’s Edge, Tom Clancy Ghost Recon 2). Почему же это произошло?

Думаю, главная причина была в простоте добавления движка в основной pipeline (конвейер рендера) и уменьшении затрат на разработку своей собственной физики, ведь вместо долгого написания кода, разработчикам нужно было просто добавить готовый от Nvidia. Но от этого выигрывали и пользователи, ибо PhysX мог симулировать, практически, что угодно — от дыма до волос (пусть и забирал немало производительности видеокарты).

Хоть сейчас редко в какой игре PhysX обрабатывается GPU, тем не менее он остается самым популярным движком для расчёта физики. Поэтому говорить, что он мертв — крайне неправильно.

Примечательную штуку создала контора выходцев из Оксфорда, а именно систему Dynamic Motion Synthesis, по-своему симулировавшую физику тел.

В стандартной ragdoll модели суставы тела состоят из шарнирных соединений.

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

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

На этой записи серый манекен взаимодействует с пулей по рэгдоллу, тогда как синий с учётом DMC
На этой записи серый манекен взаимодействует с пулей по рэгдоллу, тогда как синий с учётом DMC

Немного позже бывшие студенты назовут себя NaturalMotion, а своё творение — Euphoria, которое будет использоваться в GTA 4. Пожалуй, эта технология была очень заметной фишкой игры и делала калечения NPC и главного героя более правдоподобными.

Также, в это время стало появляться все больше постэффектов, то есть визуальных эффектов, накладываемых после основного рендера. Например, в Assassin Creed была обводка NPC, подсвечивавшая врагов и обозначавшая, кого Альтаир (Дезмонд) будет атаковать.

Некоторые виды Anti-aliasing'а (сглаживание — технология, используемая для устранения эффекта «лесенки», зубчатости, возникающих на краях одновременно выводимых на экран множеств отдельных друг от друга плоских или объёмных изображений) также применяются на готовое изображение.

Типы алиазинга в реал-тайм графике
Типы алиазинга в реал-тайм графике

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

Строится крестообразная сетка с 5 сэмплами, использующая 1 пиксель в центре и 4 соседних. Далее вычисляется контраст этих пикселей путем сравнения самого яркого и не яркого пикселя.

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

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

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

Для этого строится градиент яркости с учётом находящихся рядом пикселей с определенным шагом, пока не обнаружится конец грани.

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

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

К эффектам пост-процессинга также можно отнести motion blur (размытие в движении), имитирующий нечеткость изображения при резком вращении камерой. Если сделать его как надо, то он таки добавляет в картинку реализма.

Depth of field (глубина резкости) — еще один способ сымитировать работу человеческого глаза, а именно надобность в фокусировке, т.е когда мы видим четко не всё изображение, а лишь ту часть, на которой должен быть сосредоточен наш взгляд.

2011. В марте выходит сиквел графического революционера — Crysis 2, который теперь не песочница в открытом мире, а Call of Dutyподобный шутер с линейной кампанией.

Но менее красивой и технологичной игра от этого не стала.

Теперь в ней использовался алгоритм глобального освещения (GI) под названием LPV — Light Propagation Volumes, которое можно перевести, как объёмы распространения света.

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

Если объект, на который падает свет, имеет яркий цвет, то свет от него должен приобретать соответствующий оттенок.

Смысл работы заключается в следующем: трехмерная сцена разбивается на трехмерную сетку, в которой хранится информация о координатах точек, которые освещаются источниками света.

Далее, таким способом, имитируется глобальное освещение, дающее, как было описано выше, непрямой свет с цветовым отскоком, которое плохо сочеталось с SSAO, ибо хоть данный метод и создавал затенение, но не учитывал цвет предметов и смысл от GI немного терялся. Но Crytek не растерялись и усовершенствовали алгоритм, назвав его SSDO (Screen Space Directional Occlusion).

В него было внесено 2 важных улучшения:

1 — выборки брались не из сферической области, а из полусфер, позволив исключить из области затенения ненужную геометрию

2 — учитывался свет при расчете окклюзии, что позволяло имитировать рефлекс

И теперь иллюминация могла использоваться на полную

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

Тоже самое касается и помещений, когда свет проникает через щели в окнах

Хоть этим технологиям пошел второй десяток, все-таки в играх они применяются не так часто, как-то, что совершило прорыв в реалтайм картинке — SSR (Screen Space Reflections) или отражения в пространстве экрана. Данный метод появился именно в этом шутере (не точно, ибо подтверждения я этому не нашел, как и более ранних проектов, реализовавших подобное) и активно применяется до сих пор, даже в играх с трассировкой лучей. И на это есть, как минимум, 3 причины.

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

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

3 — дают правдоподобную картинку (конечно, при правильных углах и относительно тех же cube map’ов, искривляющих отражаемое пространство), ведь просчет ведется по формулам трассировки лучей, но не в мировых координатах, а в пределах камеры.

Как гласит застольная поговорка: «между первой и второй (в нашем случае между второй и третьей) — перерывчик небольшой». Не будем же затягивать.

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

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

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

Отдельного упоминания заслуживает новый алгоритм построения рельефа на текстуре - Silhouette Parallax Occlusion Mapping. Редчайшая вещь, которую я видел только в паре техно-демо, здесь, да и всё, пожалуй.

Алгоритм работы у этого зверя заключается в создании, призм, вдоль векторов треугольников, строящихся так, чтобы добавить ещё большего объема при помощи смещения текстур (как при простом POM), излишки которого убираются raymarching'ом.

Raymarching - этот метод схож с raytracing'ом (речь о котором пойдет дальше, не будем останавливаться на нём сейчас),  так как тут тоже производится трассировка лучей для пикселей. Однако, здесь нет переотражений и вместо набора сложных уравнений, определяющих пересечение лучей с объектами, в данном алгоритме луч движется не непрерывно, а пошагово, пока не пересечет геометрию. Такой метод сэмплирования требует гораздо меньше ресурсов, но, при этом, считает пересечение точки луча с меньшей точностей.

Работа трассировки
Работа трассировки
Принцип действия реймарчинга
Принцип действия реймарчинга

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

Как и свой предшественник, Crysis 3 имел фичу, ставшею стандартом на многие годы. А именно — PBR (Physically Based Rendering) или же PBS (Physically Based Shading) или же физически основанный рендер текстур.

Самое главное, что нужно знать о PBR — он позволяет более правдоподобно отображать предметы в сцене, показать, матовость/глянцевость объекта, определить как будет отражаться свет и в каком количестве.

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

Вооружимся электронным микроскопом и заметим, что он состоит из переплетенных древесных волокон и хотя простому взору это недоступно, всё равно они влияют на отражение света

Очевидно, что рассчитать освещение с таким уровнем качества геометрии невозможно сегодня ни при каких условиях (если говорить о хоть каком-то адекватном времени ожидания), тем более в игре

Данный метод реализуется наложением некоторых текстур, определяющих работу материала со светом. В основном, это albedo (определяет цвет), roughness/gloss (определяет шероховатость/глянцевость поверхности) ambient occlusion (показывает, в каком месте текстуре самозатениться), normal (смотреть спойлер в части про Обливион), metallic (определяет токопроводимость вещества, проводник/диэлектрик), specular (отражает свет в определенном количестве).

До прихода PBR использовали, максимум, 3 карты — normal, specular и diffuse (может объединять albedo с ambient occlusion), не было понятия шероховатости, разделения на металлы и неметаллы, вообще такого понятия, как материал. Всё выглядело либо, как обмазанным маслом, либо картонно

А вот, что показала 3 часть:

Теперь «спекуляра» отражает не 100% света, а столько, сколько нужно конкретному объекту. Сами Crytek приводят в пример кирпич, который раньше бы смотрелся, будто пластиковый, а сейчас он отражает столько света, сколько и должен в реальной жизни.

И последний штрих на этом торте графических инноваций — новый тип сглаживания, дающий четкое изображение без лесенок, за цену четырехкратного MSAA. И имя этому чуду TXAA (Temporal approXimate Anti-Aliasing). Просто посмотрите на него в сравнении с чистым MSAA 8x.

Думаю, теперь понятно, чем хороша темпоральная реконструкция, но всё равно не ясно, как это работает. Сейчас объясню.

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

Благодаря этому края треугольников покрываются точнее, чем одним пикселем.

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

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

Crytek сгладили этот эффект, добавив к TAA вышеупомянутый MSAA, который производит дополнительные выборки по краям геометрии, тем самым давая больше сэмплов и ТАА.  

Резюмируем

И так, что же мы имеем на данный момент?

За неполных 7 лет графика в играх сделала огромный скачок, ведь технологии никогда не стоят на месте. Они двигают картинку всё дальше, не взирая на ограничения платформ, дабы мы, игроки, наслаждались процессом, как можно больше; погружались в миры, перенесенными максимально близко к тому, как их вообразили художники. Тот, кто отрицает это — слеп в своих суждениях настолько, что нельзя и представить.

Засим я откланяюсь и поблагодарю публику за прочтения материала. Если вам понравилось — не забудьте прожать «плюс» и написать комментарий с поддержкой или с вопросом или, даже, критикой.

Ну и, поздравляю всех с Новым годом!

Продолжение следует…

Лучшие комментарии

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

Был тут когда-то человек, Lex Darlog, подобные интересные штуки задвигал)

Хуже всего ТАА в Киберпанке (где разрабы принудительно не дают его выключить и, зачем-то затыкают все способы это сделать сторонними путями)

В КП весь рендер-пайплайн, насквозь, построен на аккумулятивном рендере. Потому что там — сэмплирование во все поля. Они даже блики считают «правильно», чтобы даже на них было затенение от частичного перекрытия. Но эта метода — слишком дорогая для текущего поколения железа (и, наверное, даже двух следующих — вплоть до RTX 50xx). Единственное решение — в каждом кадре считать такую картинку, какую можем (жутко шумную), а потом — вытягивать результат через аккумуляцию и всякие хитрые денойзы. Поэтому — TAA там встроен в самое ядро рендера. Без него — никак...

Ну, то есть… «как». Но тогда картинка будет говном кала ссанины. Примерно такой же результат, как в демо-видосах Нвидии с демонстрацией RTX — до того, как отработала их нейронка. Т.е., безумно шумное изображение.

Я не понимаю, почему ты утверждаешь обратное.

Ты не совсем уловил, что такое изображено на твоём скрине. То, что тут у тебя — это кубмапа (частный случай энв-мапы). Эту штуку я разъяснял в своём старом блоге (по прикреплённой ссылке).

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

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

Я старался делать акцент на самом важном, поясняя всё максимально подробно, при этом не обделяя вниманием остальное. Видимо, у меня это не получилось. Будем исправляться

Вставлю свои, никому не нужные, пять копеек:

ТАА сглаживание еще очень сырое. Оно отлично убирает лесенку на статичной картинке, а вот края движущихся объектов дико размывает. Хуже всего ТАА в Киберпанке (где разрабы принудительно не дают его выключить и, зачем-то затыкают все способы это сделать сторонними путями) и в RDR 2 (в FHD разрешении).

На мой взгляд, лучшее достижение в сфере сглаживания: возможность совмещать через драйвер (у Nvidia точно, про AMD не знаю) шейдерные методы с увеличением резкости картинки. Например, в большинстве игр, новых и старых, я включаю через драйвер MFAA, FXAA и увеличение резкости на 0.3. Лесенки минимальные, или отсутствуют вовсе, при этом картинка идеально четкая. При том, что затраты производительности мизерные: 3-4 кадра, даже на слабой видеокарте.

Да здравствует некропостинг! Спасибо, кайфанул от прочтения!

Normal mapping – позволяет отражать свет, симметрично вершине...

Что? Там нет отражений.
Там меняется нормаль для каждого пикселя, он меняет цвет. За счёт чего выходит «затенение» на низкополигональной модели, в тех местах, где оно было на высокополигональной.

Для отражений на воде применялся cube mapping (кубические карты), представляющий собой трехмерную текстуру...

Не для отражение, а для его имитация. И это не 3D текстура.
Кубическая карта, это просто несколько «скриншотов» окружения, из определённой точки, на 6 сторон.

Для плоскости (вода например), можно и рендером одной стороны обойтись. Менее точно, но зато быстрее.

Ещё в Крузисе было очень много шейдеров, выполнявших разное предназначение.

Немного бессмысленное и путающие предложение.

или же физически основанный рендер текстур.

«Рендер основанный на физике» — лаконичный и точный перевод.

С одной стороны вроде хорошее начинание (то видео не смотрел).

С другой стороны, написано всё очень сумбурно, не достаточно точно поясняет. Иногда слишком поверхностно, иногда сразу уходит в дебри.

Да, очень познавательные посты были)

А ещё, наверное видео, слишком грузят браузер =/

Но тут уже вопросы к сервису и СГ.

Почему они все разом запускаются? Крутил, отключал, прежде чем читать. Но в итоге, всё равно нет разницы.

И стримы, тоже познавательные были) 

О, это не смотрел… Я на эти посты наткнулся уже гораздо позже публикации, а на СГ я активно зависаю с позапрошлого года.

Записи есть, первый был с Кулаковым если я не ошибаюсь, Wheelman кажись.

Будущее сейчас за апскейлерами на базе ИИ. DLSS, при разрешении выше 1080p, показывает картинку лучше натива. Это, практически, магия. Раньше о таком и мечтать не могли 

А ещё должно выйти DLAA — сглаживание с глубоким нейронным обучением, лишенное названных вами недостатков темпорального антиалиазинга. Так что ждём прекрасное далёко, которое, правда, всё никак не наступит)

Ну а почему нет, если это работает как надо. 

Спасибо за комментарий. Согласен насчет некропостинга, ваши материалы по старым железкам тоже читаю далеко не без интереса;)

А причём тут стороны, с которых захват изображения делается?

Если речь идёт про структуру и обработку, самого файла текстуры?

Читай также