Коротко
- RVT генерирует данные затенения на GPU во время выполнения и кэширует их для больших областей.
- Для настройки нужны RVT Asset, RVT Volume и материалы, которые записывают данные в RVT и считывают их.
- Landscape, Landscape Splines и статические меши — подходящие кандидаты для использования с RVT.
- RVT и SVT предназначены для разных задач: SVT загружает данные с диска, а RVT генерирует их во время выполнения.
Чему вы научитесь в этом руководстве?
Runtime Virtual Texturing (RVT) — это способ работы с текстурами в Unreal Engine, похожий на традиционное текстурирование, но texel-данные при этом генерируются на GPU во время выполнения. Благодаря кэшированию данных затенения на больших областях RVT полезен для поверхностей Landscape, сплайнов, повторяющих рельеф, и многослойных материалов. В руководстве рассматривается весь процесс: подключение RVT Asset к сцене, размещение Volume в нужной области, настройка материалов для записи и чтения данных, а также назначение компонентов сцены для работы с RVT.
RVT подходит не для всех типов текстур. Другой метод виртуального текстурирования в Unreal Engine — Streaming Virtual Texturing (SVT) — предназначен для больших текстур, подготовленных на диске и загружаемых в сцену. Например, для lightmap и детализированных текстур, созданных художниками. RVT ориентирован на сценарии, где текстуры можно генерировать во время выполнения, например на процедурные или многослойные материалы и смешивание слоёв в Landscape.
Требования и подготовка
В документации Epic Games не указаны конкретная актуальная или минимальная версия Unreal Engine, а также требования к типу учётной записи для этой настройки. Однако есть примечание о совместимости между версиями: тип материала «Base Color, Normal», доступный в Unreal Engine 4.23, был удалён в 4.24; ресурсы, использовавшие этот тип, автоматически преобразовались в новый тип материала. Это примечание о переходе со старого типа материала, а не требование к версии. Поскольку на платформах без поддержки виртуальных текстур может потребоваться альтернативный вариант материала, при настройке стоит предусмотреть запасной вариант.
Для сцены потребуются следующие основные элементы:
Runtime Virtual Texture Asset (RVT Asset).
Runtime Virtual Texture Volume, который размещает этот ресурс в сцене.
Материалы, настроенные для записи данных в RVT и/или выборки из неё.
Подходящие компоненты сцены, назначенные RVT Asset и находящиеся в границах Volume.
RVT Asset — это элемент конфигурации, связывающий материалы и компоненты сцены, передающие данные в виртуальную текстуру. Volume размещает ресурс в сцене; при правильной настройке материалов и компонентов элементы сцены могут записывать в текстуру данные.
Настройка: пошаговая инструкция
1. Создайте RVT Asset и выберите его тип
Откройте контекстное меню щелчком правой кнопкой мыши в Content Browser или нажмите Add New. В категории Materials & Textures выберите Runtime Virtual Texture, чтобы создать ресурс. Откройте его и задайте размер виртуальной текстуры, размер tile и поддерживаемые свойства материала.
Выбирайте тип материала в зависимости от данных, которые будут храниться в RVT. Вариант только с Base Color и вариант, который также хранит данные normal, roughness и specular, рассчитаны на разные задачи. Кодирование Base Color на основе YCoCg может помочь уменьшить сдвиг цвета и полосатость, заметные при плавных цветовых переходах. Однако, согласно документации Epic Games, этот вариант расходует на 25 процентов больше памяти; кроме того, выборка и декодирование данных виртуальной текстуры требуют дополнительных ресурсов. Поэтому при выборе нужно учитывать не только визуальный результат, но и затраты ресурсов.
2. Добавьте RVT Volume в сцену
Добавьте Runtime Virtual Texture Volume через панель Modes. Границы Volume должны охватывать акторы, которые будут записывать данные в RVT. Чаще всего это Landscape или похожая на рельеф поверхность. Элементы, считывающие данные из RVT или записывающие их в неё, также должны находиться в границах соответствующего Volume.
Чтобы задать положение и масштаб Volume по границам актора, выберите его и воспользуйтесь разделом Transform from Bounds на панели Details. В поле Source Actor выберите актор в сцене или воспользуйтесь инструментом-пипеткой, затем настройте границы Volume кнопкой Set Bounds. Если позже будут добавлены другие компоненты, записывающие данные в RVT, эта операция поможет включить их в область Volume.
3. Настройте материалы для записи в RVT и чтения из неё
Запись данных в RVT и их чтение настраиваются с помощью выражений материала. Подключите логику существующего материала к выражению Runtime Virtual Texture Output, чтобы сформировать выход RVT. Для чтения данных из RVT добавьте в материал выражение Runtime Virtual Texture Sample, связанное с нужным RVT Asset.
Если нужно менять RVT Asset, используемый для выборки, через Material Instance, можно применить Runtime Virtual Texture Sample Parameter. Тип материала этого параметра должен совпадать с типом назначаемого RVT Asset. Если после изменения типа ресурса в узлах выборки появится несовместимость, команда Fix Material Usage в контекстном меню ресурса поможет найти соответствующие материалы и Material Function и привести типы в соответствие.
4. Назначьте компоненты сцены для работы с RVT
Выберите компонент, который должен записывать данные в RVT, и добавьте нужный RVT Asset в массив Render to Virtual Textures на панели Details. Компоненту можно назначить несколько RVT Asset. Для записи ресурс должен быть назначен RVT Volume в сцене, а материалы компонента — настроены соответствующим образом.
В документации Epic Games среди подходящих объектов перечислены Landscape, Landscape Splines, статические меши и instanced static mesh. Компоненты должны иметь статичную подвижность, поскольку содержимое RVT не обновляется полностью каждый кадр. Меши со скелетом и анимированные меши для этого сценария не подходят.
5. Проверьте результат и область действия
Проверьте, что RVT Volume охватывает целевую поверхность, компонент назначен нужному RVT Asset, а материал содержит необходимые выражения для записи или выборки. Объекты, записывающие данные в RVT, рендерятся посредством ортографической проекции объёма вдоль отрицательного направления Z. Поэтому положение и охват Volume — важные части настройки.
Для создания альтернативного варианта материала на платформах без поддержки виртуальных текстур можно использовать Virtual Texture Feature Switch. Если для RVT требуется особая логика материала, выражение Runtime Virtual Texture Replace позволяет задать отдельный путь только для вывода RVT. Итог зависит от связей в графе материала; документация не предлагает единого рецепта материала для всех проектов.
Типичные ошибки
Volume не охватывает нужную область: RVT Volume должен включать компоненты, записывающие данные. Проверьте область с помощью Transform from Bounds и Set Bounds.
Несовпадение типов материала: если типы RVT Asset и выражения выборки не совпадают, могут возникнуть проблемы при изменении через Material Instance.
Запись в RVT всех объектов сцены без разбора: анимированные меши и меши со скелетом не подходят; также следует помнить, что данные RVT не обновляются полностью каждый кадр.
Использование RVT и SVT для одной и той же задачи: RVT предназначена для данных, генерируемых на GPU во время выполнения, а SVT — для больших текстур, подготовленных на диске и загружаемых в сцену.
Игнорирование затрат памяти и производительности: кодирование YCoCg может уменьшить цветовые артефакты, но увеличивает расход памяти и стоимость выборки.
Влияние на рабочие процессы архитектурной визуализации
В сценах архитектурной визуализации с Landscape RVT можно использовать для создания переходов между материалами рельефа, сплайнов и других объектов сцены. Эта технология подходит для рабочих процессов, в которых дороги, повторяющие рельеф, или другие поверхности должны визуально сочетаться с окружением, особенно в крупных сценах на открытом воздухе. При этом источники не указывают интеграцию с конкретными программами для archviz, процент прироста производительности или требования к оборудованию.
При выборе для офисных и учебных проектов нужно учитывать масштаб сцены, тип материала, поддержку виртуальных текстур на целевой платформе и затраты памяти. Дополнительное потребление ресурсов при использовании YCoCg нельзя рассматривать отдельно от возможной визуальной выгоды. Анимированные объекты также не следует считать подходящими для записи в RVT. После настройки проверьте запасной вариант материала для разных платформ и границы Volume — это поможет выявить возможные проблемы совместимости в рабочем процессе.
Что делать дальше
Для первого теста ограничьтесь одним Landscape и одним RVT Volume; отдельно проверьте подключение записи и выборки в материале. Когда базовая схема заработает, добавьте другие компоненты сцены в RVT и ещё раз проверьте границы Volume. Если проекту нужно загружать большие текстуры, подготовленные на диске, рассмотрите SVT; если нужны данные материала, генерируемые или смешиваемые во время выполнения, — RVT.
Источник и лицензия
Руководство адаптировано на русский язык на основе документации Epic Games Runtime Virtual Texturing и Virtual Texturing для Unreal Engine. Оба источника отмечены как распространяемые по свободной лицензии; поскольку в исходных текстах название лицензии не указано, здесь не предполагается конкретный тип лицензии.
Источники
Источников: 2Тексты источников не перепечатываются; короткие цитаты отмечены, остальное — наш пересказ и комментарий.
RVT заслуживает внимания прежде всего в проектах архитектурной визуализации, где нужно создавать переходы между материалами рельефа, сплайнов и статических объектов сцены. Однако не стоит воспринимать эту технологию как универсальное решение для повышения производительности, которое нужно добавлять в каждый проект: в источниках не приводятся минимальные требования к оборудованию или конкретный прирост скорости.
Для офисов и студентов в Турции самый разумный подход — сначала проверить работу на небольшом фрагменте сцены. При выборе типа RVT нужно учитывать затраты памяти и выборки, поддержку на целевой платформе и то, что анимированные объекты не подходят для этой задачи. Если большие текстуры будут загружаться с диска, стоит также рассмотреть SVT.
Частые вопросы
Для чего нужна Runtime Virtual Texturing в Unreal Engine?
RVT генерирует texel-данные на GPU во время выполнения и кэширует данные затенения на больших областях. Её можно использовать для материалов Landscape, сплайнов и смешивания слоёв в многослойных материалах.
Какие основные элементы нужны для настройки RVT?
Понадобятся RVT Asset, размещающий его в сцене RVT Volume, подходящие выражения материала и компоненты сцены, назначенные RVT.
В чём разница между RVT и Streaming Virtual Texturing?
RVT генерирует данные на GPU во время выполнения. SVT предназначена для больших текстур, подготовленных на диске и загружаемых в сцену, например для виртуальных текстурных lightmap.



