Теги: FBX
Tags: память
Tags: производительность
Hero-image:resize-hero.png
Topic-image:resize-topic.png
Social-image:resize-social.png
К игровым текстурам предъявляются особые требования для их правильной отрисовки в игре. При создании текстур в Unreal Editor для Fortnite (UEFN) из импортированных изображений убедитесь, что файл исходного изображения имеет высоту и ширину в виде степеней двойки (#чтотакоестепеньдвойки). Это повысит стабильность и совместимость вашего острова при запуске на разных платформах.
Форматы файлов со сжатием для графических процессоров (ГП) должны поддерживать масштабирование по степеням двойки на всех консолях, ПК и мобильных устройствах. Текстуры, не поддерживающие масштабирование по степеням двойки, будут работать нестабильно на низкопроизводительных платформах и могут привести к сбоям в игре. Принцип степеней двойки также используется при подгрузке текстур, чтобы снизить разрешение текстур на платформах с меньшим объёмом памяти.
Подгрузка текстур помогает решать следующие задачи:
-
Изменение разрешения текстуры.
-
Определение скорости загрузки игры.
-
Повышение качества графики игры.
-
Экономия памяти графического процессора.
Что такое степень двойки
Компьютеры и консоли обрабатывают данные не сразу, а ограниченными пакетами. Это похоже на принцип отрисовки фонов с помощью World Partition.
Когда пакеты игровых данных подчиняются правилу степеней двойки, эти пакеты устанавливают ряд жёстко заданных физических ограничений на носитель информации. Если эти ограничения не соблюдаются, игровой движок будет тратить ресурсы, пытаясь правильно отрисовать ресурсы.
Правило степеней двойки — это способ оптимизации игровых данных и отрисовки изображений для эффективного создания визуальной составляющей игры.
Например, допустимы изображения с размерами 256 x 256, 512 x 512 и 1024 x 2048. Текстуры, которые не основаны на степенях двойки, не будут оптимизированы и приведут к нестабильности и низкой производительности острова.
Текстуры с размерами в виде степеней двойки позволяют UEFN использовать три ключевые функции:
-
сжатие текстур: уменьшает занимаемый объём памяти примерно в восемь раз при минимальном снижении качества картинки;
-
MIP-текстурирование: автоматическое создание вариантов с более низким разрешением;
-
подгрузка текстур: показывает вариант с более низким разрешением, прежде чем в память будут подгружены данные с более высоким разрешением.
В совокупности эти функции позволяют отрисовывать даже высококачественный ресурс с 4K-текстурами на любой платформе. Это обеспечивается тем, что текстуры будут иметь высококачественные варианты в сниженном разрешении.
Например, текстура размера 4000 x 4000 без альфа-слоя потребует 64 мегабайта памяти. Она может быть загружена сразу и всё равно будет отображаться в разрешении 4000 x 4000, даже если это вызывает искажение контуров на небольшом рекламном щите вдали от игрока. Текстуры слишком большого размера могут привести к сбоям на устройствах с недостаточным объёмом памяти.
С другой стороны, вариант текстуры с разрешением 4096 x 4096, в которой используется сжатие по умолчанию, будет занимать всего 8 мегабайт, подгружаться постепенно и вызывать меньше искажений контуров на расстоянии. Текстуры слишком большого размера также увеличивают размер пакета, но не приводят к сбоям игрового процесса.
Требования к размеру текстур в UEFN
Для того, чтобы все острова хорошо работали на всех целевых платформах, в UEFN существуют определенные требования к ресурсам текстур.
Если ваш проект содержит текстуры, не соответствующие этим требованиям, они не пройдут проверку, и вы не сможете загрузить свой проект.
-
Если ваша текстура назначена в группу текстур интерфейса, её размеры должны быть меньше максимального размера 2048×2048. Однако размеры текстуры не обязательно должны быть равны числу в степени двойки. (Текстуры интерфейса обычно работают без подгрузки, поэтому они всегда будут выглядеть максимально чёткими).
-
Если ваша текстура не назначена в группу текстур интерфейса, её размеры должны быть меньше максимального размера 4096×4096. Кроме того, если количество пикселей на ней превышает максимальное значение (1024×1024 или 1 048 576), она должна быть подгружаемой. Это означает, что:
-
каждый из размеров должен соответствовать степени двойки (например, 256×256, 512×512, 1024×1024 и т. д.)
Изображение не обязательно должно быть квадратным, пока размеры его сторон соответствуют степени двойки. Например, 256×512, 512×1024, 256×1024 и т. д.
-
-
Свойство Не подгружать должно быть отключено.
-
Должно быть включено автоматическое создание MIP-текстур.
-
Общий объём памяти, расходуемой на все неподгружаемые текстуры в вашем проекте не должен превышать максимальный установленный объем. Объём расходуемой памяти для вашего проекта определяется путем суммирования объёма памяти на все текстуры текстур, у которых включено свойство Не подгружать. Что сюда входит:
-
все текстуры, размеры которых не равны степени двойки (и которые не были заполнены или растянуты до размеров, соответствующих степени двойки, с помощью функции изменения размера до заданного разрешения). Свойство Не подгружать для таких текстур включается автоматически;
-
все прочие текстуры, для которых свойство Не подгружать было включено вручную.
-
У каждой текстуры есть параметр Группа текстур, который указывает на ее предполагаемое назначение. Вы можете задать эту группу и другие свойства текстуры, упомянутые выше, дважды щёлкнув по текстуре в Каталоге ресурсов, чтобы открыть Редактор текстур.
Изменение размера текстур
В UEFN старые импортированные текстуры с неровными или чрезмерными размерами можно масштабировать для приведения к степеням двоек. Найдите и исправьте неудачные текстуры, выполнив следующие действия:
-
Откройте Панель ресурсов или Каталог ресурсов и выберите корневую папку контента своего проекта, расположенную в FortniteGame на панели дерева файлов слева.
-
В разделе Все найдите папку YourProjectName Content.
-
Введите
NeverStream==true&&TextureGroup!=UI
в строке поиска в верхней части Панели ресурсов. При этом выполнится запрос поиска всех затрагиваемых ресурсов.
Все ресурсы, отображаемые в этом отфильтрованном представлении, являются затрагиваемыми. Хотя на исправление потребуется некоторое время, производительность вашего уровня возрастёт.
Есть два способа обновить затрагиваемые текстуры, не входящие в группу интерфейса.
Вариант A основан на возможностях массового редактирования UEFN для группировки текстур и их редактирования за один шаг. Это самый быстрый способ автоматически скорректировать текстуры, дополнив их до правильного соотношения сторон; однако такая подгонка может привести к излишнему расходу памяти.
Вариант B занимает немного больше времени, но позволяет оптимально использовать выделенный объём памяти, когда нужно исправить несколько затрагиваемых текстур. Этот вариант позволяет редактировать и повторно выгружать текстуры, чтобы избежать ненужного дополнения.
Вариант A
-
Нажмите на значок гамбургер-меню в Каталоге ресурсов рядом со строкой поиска и выберите Текстуры. В Каталоге ресурсов будут отображены только текстуры.
-
Нажмите на значок Настройки и включите Столбцы. Теперь все текстуры будут отображены в столбцах Каталога ресурсов.
-
Найдите в столбце Размеры все ресурсы, размеры которых не соответствуют степеням двойки.
-
Выберите все текстуры, которые не соответствуют правилу степеней двойки.
-
Нажмите правой кнопкой мыши в Каталоге ресурсов и выберите Действия с ресурсами > Редактировать выбор в матрице свойств. Откроется инструмент массового редактирования, в котором все выбранные текстуры будут отображены на вкладке Редактор компонентов.
-
Выберите все имена файлов текстур в секции Начало.
Нажмите на изображение, чтобы увеличить его.
-
Разверните раздел Текстура на вкладке Закреплённые столбцы.
-
Выберите Заполнить до степеней двойки из выпадающего меню Режим степеней двойки. В нижней части окна редактора появится индикатор выполнения.
Теперь размеры всех текстур преобразованы в степени двойки и текстуры будут работать на всех платформах.
Вариант B
-
Дважды нажмите на текстуру, чтобы открыть редактор текстур.
-
В строке поиска в верхней части панели Сведения введите имя исходного файла. В результате вы увидите путь на ПК к файлу, который будет использоваться в качестве исходного файла текстуры.
Нажмите на изображение, чтобы увеличить его.
-
Измените размеры текстуры до ближайшей степени двойки в редакторе изображений, таком как GIMP или Paint.NET 5. Вы можете использовать даже редактор Paint, если текстура не имеет альфа-слоя.
-
Размер в виде степени двойки — это 256, 512, 1024 и т. д.
-
Например, текстура 500 x 500 может быть приведена к размеру 512 x 512, а текстура 600 x 256 — к 512 x 256.
-
Изменение соотношения сторон не должно отрицательно сказываться на вашем острове.
-
-
Нажмите правой кнопкой мыши на текстуре в Каталоге ресурсов и выберите Повторный импорт.
Если исходное изображение текстуры отсутствует в ваших файлах:
-
Нажмите правой кнопкой мыши на текстуре в Каталоге ресурсов, а затем выберите Действия с ресурсами > Экспорт, чтобы получить новую копию.
-
Измените размеры текстуры до ближайших степеней двойки. Затем в Каталоге ресурсов нажмите правой кнопкой мыши на текстуру и выберите Импортировать как новый файл. Когда файл будет импортирован, дважды нажмите на текстуру, чтобы открыть редактор текстур.
-
В строке поиска на панели Сведения введите Никогда не подгружать и выберите значение False. Если значение False недоступно для выбора, убедитесь, что в спецификации Импортировано вверху указано, что размеры вашего изображения соответствуют степеням двойки.
-
На панели Сведения найдите параметр Настройки создания MIP-текстур. Затем в выпадающем меню выберите Из группы текстур.
-
На панели Сведения найдите параметр Настройки сжатия, а затем выберите из выпадающего меню По умолчанию (DXT1/5).
После выполнения этих действий убедитесь, что вы успешно удалили ограниченную текстуру, для чего снова введите NeverStream==true&&TextureGroup!=UI
в строке поиска Каталога ресурсов. Обновлённые вами ресурсы больше не должны отображаться здесь.
Изменение отдельной текстуры
Если у вас только одна текстура, не соответствующая правилу степеней двойки, действуйте следующим образом.
-
Дважды нажмите на текстуру, чтобы открыть редактор текстур.
Нажмите на изображение, чтобы увеличить его.
-
В строке поиска на панели Сведения введите Режим степеней двойки. Затем в выпадающем меню Изменение размера выберите Растянуть до квадрата.
-
Найдите настройку Никогда не подгружать и установите для неё значение False.
-
Найдите параметр Настройки создания MIP-текстур. Затем в выпадающем меню выберите Из группы текстур.
-
Найдите параметр Настройки сжатия, а затем выберите из выпадающего меню По умолчанию (DXT1/5).
После выполнения этих действий убедитесь, что вы успешно удалили ограниченную текстуру, для чего введите NeverStream==true&&TextureGroup!=UI
в строке поиска Каталога ресурсов. Обновлённые вами ресурсы больше не должны отображаться в списке.
Поиск недопустимых текстур
Ресурсы текстур, не соответствующие описанным выше требованиям, помечаются в Каталоге ресурсов значком ошибки. При наведении курсора на ресурс в верхней части подсказки отображаются подробные сведения о проблеме:
Нажмите на изображение, чтобы увеличить его.
Приведение недопустимых текстур в соответствие требованиям
Лучший способ исправить недопустимые текстуры, импортированные из внешних файлов, — отредактировать их в приложении, которое вы использовали для их создания, а затем повторно импортировать ресурс. Вы также можете отредактировать текстуры перед повторным импортом в UEFN в любом другом приложение для редактирования изображений.
Убедитесь, что размеры каждого изображения не превышают максимальные размеры, указанные выше. Если вы используете изображение не для интерфейса, сделайте его высоту и ширину соответствующими степени двойки. Изображение не обязательно должно быть квадратным, пока размеры его сторон соответствуют степени двойки.
В качестве альтернативы UEFN предлагает встроенный способ автоматического приведения размеров текстур в соответствие требованиям UEFN. Для этого:
-
Выберите одну или несколько несоответствующих текстур в Каталоге ресурсов.
-
Нажмите правой кнопкой мыши на миниатюру текстуры и выберите в контекстном меню Подогнать текстуру.
Редактор попытается откорректировать свойства выбранных текстур, чтобы избежать проблем с валидацией, и записывает результаты в Журнал выходных данных.
Эта операция даст следующие результаты:
-
Если текстура входит в группу текстур интерфейса и её размеры превышают максимально допустимые, корректируется параметр текстуры Сжатие > Расширенные настройки > Максимальный размер текстуры, чтобы ограничить максимальное разрешение текстуры, которое может быть загружено в среде выполнения.
-
Если текстура не входит в группу текстур интерфейса и её размеры превышают максимально допустимые, корректируется параметр текстуры Предпочтительный уровень детализации, чтобы самая большая MIP-текстура пропускалась. Это эффективно ограничивает максимальное разрешение текстуры, которое может быть загружено в среде выполнения.
-
Если текстура не входит в группу текстур интерфейса, а её размер не соответствуют степени двойки, настройка текстуры Заполнение и растяжение устанавливается как Растянуть до степени двойки.
-
Если текстура не входит в группу текстур интерфейса, параметр Не подгружать для неё отключается.