Технологии в Играх: "4К-текстуры"
Компьютерам в играх уже много лет доступны разрешения выше Full HD. Для них понадобится мощная видеокарта, зато можно будет полюбоваться повышенной детализацией. Нередко специально для высоких разрешений разработчики выпускают отдельный набор 4К-текстур, который занимает внушительные объемы памяти. Зачем они нужны, и когда в них есть смысл?
Что такое текстуры
Текстура — растровое изображение, которое накладывается на поверхность 3D-моделей из полигонов. Если проще, то это обычная картинка из точек, которая «натягивается» на игровые модели, состоящие из треугольников.
Для каждого уникального объекта в игре: персонажей, оружия, транспорта или окружения, используются свои текстуры. Поэтому в одной игре их разновидностей может насчитываться несколько тысяч.
В игровом процессе объекты могут быть на разном удалении от игрока. Какие-то часто приближаются вплотную, другие — всегда остаются поодаль. Для экономии дискового пространства и памяти видеокарты текстуры создаются с учетом размера объектов, их важности в игровом процессе и возможного расстояния от игрока. Поэтому разные текстуры имеют разное разрешение. Простой пример: если оружие в руках персонажа всегда близко к камере и нуждается в качественных текстурах, то для колес автомобиля, которые игрок вряд ли станет рассматривать, можно сделать текстуры разрешением поменьше.
Разрешение рендера и текстур — не одно и то же
Изображение на экран выводится точками. Из них же состоят и текстуры. Но разрешение текстур и разрешение экрана — не одно и то же. Точки экрана находятся в двухмерном пространстве. Их называют пикселями (Picture Element, то есть элемент изображения). А точки, из которых состоят текстуры, находятся в трехмерном пространстве. Их называют текселами (Texture Element, то есть элемент текстуры).
По идее, для идеально четких объектов на один пиксель экрана должен приходиться один тексел текстуры. Но на деле это невозможно. Во-первых, большинство текстур находится под углом к взгляду игрока. В таком положении текселы принимают вытянутую форму и физически не могут соответствовать одному пикселю.
Во-вторых, при движении текстуры все время приближаются к игроку и отдаляются от него. Для того, чтобы не тратить большие ресурсы на дальние объекты, используются MIP-уровни — уменьшенные копии текстур. Каждый из них вдвое меньше предыдущего как по высоте, так и по ширине. Корректировать их разрешение произвольно для подгонки под размер пикселей невозможно.
Из-за этого текселов на пиксель экрана всегда приходится либо больше, либо меньше. В первом случае графическому процессору приходится рассчитывать влияние нескольких текселов на цвет одного пикселя. Во втором – одного тексела на цвет нескольких пикселей.
В каждом из случаев это приводит к появлению искажений, с которыми успешно справляются технологии фильтрации и сглаживания. Но если при нескольких текселах на пиксель текстура на игровом объекте будет выглядеть практически идеально, то при «растягивании» тексела на несколько пикселей она потеряет свою четкость. И чем больше это соотношение в пользу пикселей, тем сильнее это будет проявляться.
Отличия между обычными и 4К-текстурами
С ростом разрешения экрана количество пикселей на нем увеличивается, и текселы вынуждены растягиваться все больше. Если используются текстуры стандартного разрешения, разработанные с учетом Full HD (1920х1080), то в 4К (3840х2160) они будут выглядеть нечеткими.
Это призваны исправить 4К-текстуры. На самом деле это название не совсем верное, ведь такие текстуры не имеют размера в четыре тысячи точек ни по горизонтали, ни по вертикали. Правильнее использовать термин «текстуры высокого разрешения» (High Definition Textures, HD Textures). Именно под таким наименованием встречается настройка их переключения в большинстве игр.
Любая из «4К-текстур», как и обычные текстуры, при создании подгоняется под размеры и важность игровых объектов. Например, для ящика нет смысла делать огромную текстуру. Даже при игре в 4К ей хватит разрешения в 1024х512 точек. В то же время обычная версия этой же текстуры будет иметь вдвое меньшую высоту и ширину — 512х256 точек.
Даже на подобных относительно небольших текстурах видно заметную разницу в возможной детализации объектов. Однако увеличение размеров вдвое по горизонтали и вертикали приводит к тому, что такие текстуры в «сыром» виде занимают в четыре раза больше памяти на накопителе. Несмотря на использование технологий сжатия, на практике эта разница особо не уменьшается.
Но если объем накопителя можно увеличить, то «впихнуть» такие текстуры в ограниченный объем памяти видеокарты — задача куда более сложная. Поэтому переключение ползунка HD-текстур в играх до сих пор не означает, что абсолютно все текстуры будут заменены на 4K-версии. Обычно заменяются только наиболее важные из них, которые находятся на глазах у игрока большую часть времени и могут оказаться к нему ближе всего. Это позволяет удержать потребление видеопамяти в относительно разумных пределах.
Еще в API DirectX 11, выпущенном в далеком 2009 году, появилась возможность использовать огромные текстуры размером до 16384х16384 точек. Сохранилась она и в современном DirectX 12. Правда, на деле такие текстуры в играх практически не встречаются до сих пор — уж слишком много видеопамяти они требуют.
Влияние на качество
Давайте посмотрим, насколько велика разница между обычными и 4K-текстурами. Для этой цели будем использовать игру Far Cry 6 — для нее разработчики выпустили отдельный пакет таких текстур размером почти в 54 Гб. Но даже с ним разницу между обычными и 4K-текстурами можно увидеть только на ближних планах. Для начала возьмем типичный кадр из игрового процесса.
Чтобы явно увидеть изменения, увеличим его правый нижний угол — там они будут заметны лучше всего. Итак, фрагмент из Full HD (1920х1080). Слева — обычные текстуры, справа — 4К-текстуры:
Теперь сравним фрагмент из 2К (2560х1440):
И, наконец, из 4К (3840х2160):
Первое, что бросается в глаза — это детализация перчатки на руке главного героя. Без 4К-текстур даже в Full HD она выглядит мутно. С ростом разрешения эта разница только растет. Второе, менее заметное изменение — повреждения на асфальте. С 4К-текстурами они заменяются на более детализованные. Это тоже заметно во всех разрешениях. Третье улучшение — слегка более четкая текстура на оружии. Но заметно это только при ближайшем рассмотрении в 4К.
Посмотрим на еще один игровой кадр с близлежащими объектами.
Full HD:
2K:
4K:
Обратите внимание на поверхность доски на переднем плане. Чем выше разрешение экрана, тем сильнее ее низкая детализация бросается в глаза на фоне остальной картинки. С текстурой высокого разрешения доска становится куда четче. Если в Full HD разницу можно заметить не сразу, то в 2К и 4К она видна явно.
Однако самое интересное в том, что текстура земли на данном кадре в обоих случаях остается без изменений и выглядит довольно неплохо. То есть, в игре для нее изначально используется достаточно высокое разрешение. Поэтому разработчики решили не заменять ее на более качественную. Что и не удивительно — как уже упоминалось, пакеты 4К-текстур содержат замену только тех текстур игры, низкое разрешение которых наиболее вероятно может броситься в глаза в игровом процессе.
Влияние на производительность
При увеличении разрешения экрана шейдерные процессоры видеокарты начинают просчитывать большее количество полигонов. Работа по освещению, фильтрации и сглаживанию при этом тоже кратно увеличивается, так как эти операции проводятся над пикселями итоговой картинки. Поэтому c ростом разрешения производительность будет становиться ниже независимо от того, используются 4К-текстуры или нет.
Но текстуры высокого разрешения тоже могут повлиять на производительность. Для них важна скорость текстурного заполнения блоками TMU, пропускная способность видеопамяти и ее объем. Требования к этим характеристикам тоже растут вместе с разрешением рендера. Если видеокарта не упирается ни в одну из них, тогда снижение производительности при задействовании 4К-текстур будет практически неощутимым. А вот если каких-то из этих ресурсов начнет не хватать, оно станет заметным. Особенно это касается объема видеопамяти — при его нехватке падение FPS будет огромным.
Проверим теорию на практике. В качестве тестового стенда будет выступать ПК, оборудованный процессором Intel Core i5-10400F, 16 Гб ОЗУ DDR4-3200 CL16 и видеокартой AMD Radeon RX 6600 XT с 8 Гб памяти GDDR6. Все графические настройки выставлены на «Ультра», трассировка лучей отключена, технологии масштабирования не используются.
В виду ограничения фотоматериалов
ПРОДОЛЖЕНИЕ СЛЕДУЕТ...