В 80-ые интернет и цифровые миры были чем-то загадочным и мистическим, а техно-энтузиасты уже задумывались о трехмерности видеоигровых миров.
Я большой фанат видеоигр, работаю в 3D уже 15 лет, но ни разу не встречал последовательно написанной истории развития 3D-графики в гейм-индустрии и решил написать ее сам. Копнув в историю, я нашел много забавных вещей: например, что первую 3D-игру создали, пользуясь служебным положением, ученые NASA на лучших компьютерах своего времени; как пришли и ушли аркадные автоматы, как эллипсоидный движок Ecstatica позволял делать идеально круглые ягодицы персонажей 94 году и многое другое.
За 40 лет индустрия прошла все этапы взросления — начиная в юности с голого 3D-каркаса (когда рисуются только ребра модели, а грани остаются прозрачными), сегодня в своей зрелости она дала нам микрополигоны, рейтрейсинг и графику уровня кино.
Если вам интересно, как развивались технологии, а с ними и 3D-графика мира фантазий наяву, добро пожаловать под кат. Осторожно, если вы экономите трафик — чтобы наглядно показать развитие графики, я срендерил гифку для каждой новой технологии и они довольно тяжелые.
Пролог. Лаборатории NASA
Забавный факт, что первыми создателями и геймерами в 3D-видеоигры были программисты и ученые NASA.
Maze War — шутер, где игроки перемещаются по лабиринту, другие участники игры представлены на экране в виде глазных яблок
Первой трехмерной игрой был Maze War (1973) — многопользовательский шутер, где игроки в виде глазных яблок перемещаются по лабиринту и убивают друг-друга. Ее создали на лучших компьютерах того времени — Imlac PDS-1 — ценой в 8 тысяч долларов (4 недорогих автомобиля) в свободное время два программиста, работавших в Исследовательском центре Эймса NASA. Движения игроков были дискретными а камера могла поворачиваться ровно на 90 градусов по горизонтальной оси.
Imlac PDS-1. 16 bit. 8 — 16 Kb RAM с магнитным сердечником
А в 1975 году появилась Spasim — трехмерный многопользовательский космический симулятор на 32 игрока.
Spasim — в нее также играли с помощью оборудования ценой в несколько миллионов долларов
Игра также запускалась с помощью устройств недоступным обычному человеку — на компьютерной системе PLATO. Изначально PLATO была разработана для удаленного обучения, но со временем переросла в сетевое сообщество с почтой, чатами, форумами, поисковиками и т.д.
Система состояла из сотни терминалов расположенных в учебных заведениях и была построена вокруг суперкомпьютера CDC Cyber 73, ценой в несколько миллионов долларов. При этом игра работала со скоростью 1 кадр в секунду (1 fps). Создать игру удалось благодаря использованию системы передового программного языка TUTOR.
Компьютерный зал CDC Cyber 170, 1986. 25 Mhz и 8 Mb RAM
Затем 3D игры перестали быть «эксклюзивом секретных лабораторий NASA» и началась эпоха коммерческих и доступных широкой аудитории трехмерных видеоигр.
Предтечи
1980 — Wirframe-каркасы / векторные контуры
Пока понятие «домашний компьютер» лишь зарождалось, а видеоускорители не существовали, передовые игровые технологии разрабатывались для аркадных автоматов. Выход трехмерной игры стал возможным благодаря процессору MOS Technology M6502 (1.512 Mhz), и использованию сопроцессора Math Box. Их производительность позволила рендерить простейший вид трехмерной графики — wireframe.
Wireframe. Отображение только ребер, грани же остаются прозрачными
В 1980 году на аркадном автомате выходит игра Battlezone от Atari. От первого лица игрок управляет танком и перемещаясь по трехмерному полю боя стреляет в другие танки.
Благодаря новизне игрового процесса и трехмерной графике игра долго была популярна и позже в 1983 году была портирована на Atari 2600, а позже и на другие домашние игровые консоли, а также получила ремейк в 1998 году. Игра выглядела как цифровой интернет мир будущего в фантастике XX века (сейчас такой визуальный стиль называют ретро-вейв).
Так было положено начало зарождению видео игровой трехмерной графики.
1983 — Закрашенные полигоны
Следующим шагом естественного развития стало отойти от абстрактной полигональной сетки, и сделать полигоны похожими на поверхность.
Закрашенные полигоны. Полигоны залиты цветом и применяется плоская модель теней
Первой такой игрой стала игра в жанре shoot’em up I, Robot от Atari. Цель игры — пройти 126 уровней, перекрасив красные квадраты в синий цвет, уничтожив щит и глаз Старшего брата. После выпуска игры I, Robot получила негативные отзывы критиков и не окупила затрат на разработку. Было произведено примерно 750—1500 автоматов, некоторые из которых сохранились до сих пор. В настоящее время игровые автоматы для этой игры являются редким предметом коллекционирования, а игра получила запоздалое признание за инновационную трехмерную графику.
В аркадном автомате для I, Robot, использовался 8-разрядный процессор Motorola 6809, мощностью 1,5 Mhz.
1985 — Масштабируемые спрайты
Масштабируемые спрайты. 2D спрайт увеличивается или уменьшался в зависимости от удаления объекта от камеры
Масштабируемые спрайты использовались на аркадном автомате в игре Space Harrier (1985) от SEGA — динамичноом 3D шутере Shoot ’em up от третьего лица в сюрреалистичном мире, наполненном яркими цветами.
Хорошо видно насколько недоставало детализации трехмерным играм тех лет, потому часть разработчиков пользовались «поддельным 3D», используя масштабируемые спрайты.
Чтобы создать ощущение 3D-глубины масштаб спрайта увеличивался или уменьшался в зависимости от удаления объекта от камеры. Хотя это было и не в полной мере 3D, это была уже 16-битная картинка требующая хорошей производительности. В сердце автомата было установлено два 32-битных процессора Motorola 680×0 мощностью в 10 Mhz, а за звук отвечал Yamaha YM2203 (4 Mhz).
Как и предыдущие игры со временем Space Harrier была портирована на домашние игровые системы Sega 32X, Sega Saturn, Sharp X68000, а позже и поставлялась в составе Shenmue для Dreamcast и Xbox.
Space Harrier (1985) сияет своей детализацией на фоне 3D игр того времени
1994 — Великий год в становлении видеоигровой 3D графики
1994 был годом, когда домашние игровые системы стали достаточно мощными, чтобы двигать прогресс игрового 3D. Видеоигровая графика начинает свое шествие навстречу фотореализму.
Так как полигоны — по своей сути это плоскости с прямыми гранями, то чтобы создать сферу из полигонов, требовалось разложить по сферической поверхности огромное количество плоскостей.
Появляется метод затенения по Гуро, который сглаживает цветовые переходы между гранями полигонов. Цвет каждого полигона интерполируется между вершинами, благодаря чему объект выглядит гладким даже при малом количестве граней.
Затенение по Гуро. Сглаживание цветовых переходов между гранями полигонов
Это позволило объектам без жестких граней реалистично реагировать на свет. Star Wars: Tie Fighter (1994) была первой игрой где использовался данный метод. Она вышла на домашнем компьютере под управлением MS-DOS 4.0 и требовала процессор intel i386 и частотой 12-40 Mhz и 2 Mb RAM.
Star Wars: Tie Fighter (1994)
В этом же году выходит первое поколение консолей, способных рендерить 3D: Nintendo 64 и Playstation.
Nintendo 64 — центральный процессор NEC VR4300 (93, 75 Mhz), вспомогательный процессор для обработки графики и звука «Reality Co-Processor» (RCP) частотой в 62,5 Mhz, разделенный внутри на два основных компонента — «Reality Drawing Processor» (RDP) и «Reality Signal Processor» (RSP). Друг с другом компоненты обмениваются данными через 128-разрядную шину с пропускной способностью в 1,0 ГБ/с. RSP — это 8-разрядный целочисленный векторный процессор на основе MIPS R4000. Он программируется микрокодом, что позволяет значительно изменять функциональность процессора, если потребуется, для различных видов работ, точности и загрузки. RSP выполняет геометрические преобразования, обрезку, вычисления связанные с освещением, обработку треугольников, и обладает производительностью примерно в 100 000 полигонов в секунду.
Playstation — центральный процессор — MIPS R3000A-совместимый (R3051) 32-разрядный RISC-микропроцессор, работающий на частоте 33,8688 Mhz, ОЗУ 2 Мб + видео ОЗУ — 1 Мб + аудио ОЗУ — 512 Кб. Что позволяло получить реальную производительность: 360 000 полигонов в секунду/ 180 000 текстурированных и освещенных полигонов в секунду.
В громких промо-материалах того времени маркетологи обещали графику уровня «Истории игрушек» в реальном времени. На деле же из за ограничений мощности консолей пятого поколения 3D имело постоянный эффект подергивания. Консоли не хватало ресурсов чтобы свободно перемещать полигоны в пространстве, и существовала виртуальная 3D сетка-таблица, к ячейкам которой привязывались полигоны. При движении объекта или камеры вершины перескакивали и примагничивались к ближайшей от предпологаемой геометрией ячейке виртуальной таблицы.
Существовала виртуальная 3D сетка-таблица, к ячейкам которой привязывались полигоны. Поэтому создавалось ощущение подергивания поверхностей.
Тем не менее консоли пятого поколения подняли планку графики в домашних видеоиграх и запустил тренд на использование 3D — вышли Need For Speed, Tekken, Super Mario 64.
Все еще 1994. Ecstatica — эллипсоидный движок
В то время, как все практиковали ставшей сегодня традиционным метод полигонального 3D, Эндрю Спенсер пишет движок в котором все состоит из эллипсоидов. Так появляется survival horror игра Ecstatica.
Эллипсоидный подход позволил избавиться от и угловатости низкого полигонажа. Но породило обратную проблему — жесткие грани теперь создавались огромным количеством плотно расположенных друг к другу эллипсоидов. Но тем не менее такая «округлая картинка» удивляла своей детализацией и воспринималась как самостоятельный визуальный стиль.
Эллипсоидный движок. Экзотический подход к созданию 3D из сфер, а не полигонов.
Ecstatica работала на MS-DOS и требовала процессора intel pentium (60 Mhz).
Зрелость. Эпоха шейдеров и видеоускорителей
Производительность устройств росла и развитие технологий рендера продолжилось в нескольких направлениях:
- Увеличение количества полигонов и разрешения текстур: в 1998 году в Tomb Raider III использовались текстуры 64×64 px, а в 2016 в Uncharted 4 4096×4096 px.
Если в 2001 году у Мастера Чифа в Halo модель имели 2000 полигонов, то в 2017 в Mass Effect Andromeda около 60000 полигонов. Но не только количество полигонов и разрешение текстур влияет на финальную картинку.
Разница в разрешении текстур в 1998 и 2016 годах. Справа видно что для одного шейдера стали использоваться несколько разных карт.
- Из кино пришли пост-эффекты (эффекты которые накладываются на изображение уже поверх отрендеренного кадра): такие как наложение бликов-флееров, виньетки, инверсии, tone mapping, color grading и прочих эффектов. Также из кино приходит «рендер по слоям/каналам» с сохранением кадров с информацией о глубине, движении, тенях в буфере. Отличная статья о том как это устроено в GTA V: https://habr.com/ru/company/ua-hosting/blog/271931/
- Совершенствовались «шейдеры» — мини программы, определяющие характеристики поверхностей. Сначала вся информация о материале была в одной текстуре-картинке: тени, блики и микродетали сохранялись в одно изображение. Поэтому на перемещения источников света или же движение камеры поверхность не реагировала.
Затем шейдеры усложнялись и появились отдельные карты для разных характеристик поверхностей: карта нормалей (создает рельеф реагирующий на освещение как если бы это были объемные детали), карта бликов (создает на поверхности места с разной интенсивностью блеска), карта свечения (создает на текстуре места свечения), и отражений (создает отражение динамически изменяющееся в зависимости от расположения камеры), и т.д.
Шейдер 2000 г. (простая текстура цвета), и шейдер 2006 г. (детали на камне реагирующие на угол падения света, поддельные отражения на сферах, мягкие тени)
Далее несколько лет совершенствований уже существующих технологий: Появляются альтернативы Normal Map в виде Parallax map, которые делают объемные элементы текстур еще более реалистичными, совершенствуется screen space reflection, появляется AO, Physically Based Rendering, и т.д. А затем случается следующий эволюционный шаг — рейтрейсинг.
Рейтрейсинг. Метод рендера при котором просчитывается настоящее поведение света и отражений.
Трассировка лучей (Ray tracing; рейтрейсинг) в компьютерных играх — это решение для создания реалистичного освещения, отражений и теней, обеспечивающее более высокий уровень реализма по сравнению с традиционными способами рендеринга. Nvidia Turing, и ATI 6000 стали первыми GPU, позволяющими проводить трассировку лучей в реальном времени. В этом им помогают нейросети и искусственный интеллект, т.к. чистой производительности, к сожалению, все еще не хватает чтобы рендер происходил в достаточном разрешении.
Вскоре выходит демо Unreal Engine 5 запущенное на Playstation 5 и демонстрирует что в реальном времени можно просчитывать не только свет, тени, но и proxy-геометрию, это такой уровень детализации который используется в кино (полигоны настолько маленькие и их настолько много что они выглядят как шум). Раньше же как правило сначала создавалась высокополигональная модель, затем часть деталей сохранялась только в текстурах а количество полигонов максимально сокращалось на благо оптимизации.
Чуть больше чем за 40 лет от голой полигональной сетки видеоигровая индустрия пришла к настоящему видеореализму.
Демо Unreal Engine 5.
Особенно впечатляет когда включается полигональная сетка. Сравните её с сеткой в Battlezone 1980
Эпилог
Что нового ожидать в видеоигровой графике? Индустрия созрела и, к сожалению, технологии потеряли в своей загадочности. Игровая графика в течение последних 20 лет гналась за кинографикой. Постепенно в рендер в реальном времени приходили технологии из кино. Рендер кадра занимал часы — теперь занимает 1/60 секунды. Видеоигровые технологии догнали кинотехнологии и в чем-то можно сказать перегнали. Хорошо известен пример сериала Мандалорец, где использовался видеоигровой движок Unreal 4. Круг замкнулся.
Технологии стали доступны дома — теперь каждый может делать видеоигры и спецэффекты Голливудского уровня. И не это ли фантастика.
Облачные серверы от Маклауд быстрые и безопасные.
Зарегистрируйтесь по ссылке выше или кликнув на баннер и получите 10% скидку на первый месяц аренды сервера любой конфигурации!