50 лет назад разработчики мечтали сделать игры похожими на мультик, сегодня же графика в каждой высокобюджетной игре тесно соприкасается с гранью фотореализма, технологическая гонка продолжается.
Давайте разберемся, какими методами виртуальный мир становится так похож на настоящий.
Перед описыванием методов рендера (обработки) картинки в игре, полезным будет понять какими конкретно путями развивалась графика.
Пропустим этап самых первых черно-белых игр, взглянем на более совершенный пример. Что мешало ежу Сонику выглядеть красивее и детализированнее? Очевидно мощность вычислительного оборудования, SEGA Mega Drive в нашем случае. В отличии от Mario Bros. здесь сложнее разглядеть пиксели, но это возможно. Каждый пиксель для процессора - это координата вида (x,y) в цветовой палитре(которая, кстати, имела всего 256 цветов), устройство могло изобразить более красивую и детальную картинку, но в игре с сверхбыстрым ежиком обязана быть должная скорость обработки.
(подробнее о рассвете 2д графики и анимации)
Вернемся к 3D измерениям. Разрешение текстур для объектов - важная часть красивой картинки, но не менее важная часть - освещение.
Освещение падало на объекты, цвет пикселей во время рендера менялся. Тени так же играют важную роль в графике, бездарная настройка освещения способна запороть любую сцену, а вот в обратном случае может получится весьма симпатичная картинка и без текстур высокого разрешения.
Картинка выглядит насыщенной, правда? Заслуга технологии HDR (High Dinamyc Range), которая в десятки раз расширяет диапазон яркости цветов, в совокупности с правильно настроенным освещением способна делать виртуальные миры красивее нашего.
Время обсудить текстуры. Первое время текстура содержала в себе только цвет, иногда детали. Как вам нарисованный на одежде ремешок, или скажем трещина в виде участка, закрашенного более темным цветом?
Очевидно такие детали можно было смоделировать отдельно, но это сильно влияло на производительность тех самых древних и слабых компьютеров, на плечи которых игра возлагала и другие математические расчеты.
В 2004 году начала зарождаться технология PBR (Physically based rendering), активно используемая по сей день технология рендера позволяет значительно увеличить детализацию, не сильно потеряв в производительности.
Использование PBR выгодней изменения геометрии. На этот раз цвета пикселей точечно изменяются не только относительно цвета, но и относительно других карт, соседних к текстуре цвета. Рассмотрим на примере :
Создадим куб и наложим на него PBR материал, состоящий из нескольких текстур. Заметьте : поверхности куба абсолютно плоские.
Наложим основную текстуру, отвечающую за цвет :
Наложим карту нормалей, которая имитирует рельеф и неровности поверхности :
Текстуру металличности, одна из немногих текстур, отвечающих за блеск и отражение света :
Добавим карту преломления света. Особо заметных фишек не добавит, но 4К куб обязан выглядеть навороченным :
И вишенка на этом плиточном торте :
Карта высот. Здесь она способна придать шарм, для примера максимальная степень влияния карты высот :
Итог :
Напомню что поверхность куба абсолютно плоская. Влияние освещения лучше видно в версии куба без текстуры цвета :
Таким образом один материал содержит несколько узконаправленных текстур для одного объекта, позволяя сэкономить производительность, не добавлять лишней геометрии и в целом увеличить детализацию.
В последнее время так же разработчики хвастаются технологией трассировки лучей, которая уже начала применяться в новейших играх, эта объемная тема требует отдельной статьи.