Коротко
- Runtime Virtual Texturing (RVT) создаёт данные текстур на GPU во время выполнения и кэширует информацию о шейдинге больших областей.
- Для базовой настройки нужно подготовить ресурс RVT, добавить в сцену RVT Volume, настроить подходящие материалы и назначить их компонентам.
- В документации среди подходящих кандидатов для RVT перечислены компоненты Landscape, Landscape Splines, Static Mesh и Instanced Static Mesh.
- Тип материала на основе YCoCg может уменьшить некоторые артефакты цветовых переходов, но требует на 25% больше памяти и увеличивает стоимость выборки.
Согласно официальной документации Unreal Engine, Runtime Virtual Texturing (RVT) — это метод, который создаёт данные текстур на GPU по мере необходимости и кэширует информацию о шейдинге больших поверхностей. В проектах архитектурной визуализации его можно использовать, в частности, для поверхностей Landscape, материалов, прилегающих к рельефу, и работы со сплайнами. Приведённые ниже шаги основаны на документации Epic по настройке RVT. В документации по общей настройке не указана конкретная версия Unreal Engine; однако в примечании о совместимости говорится, что старый тип материала «Base Color, Normal» был доступен в UE 4.23, а в UE 4.24 автоматически преобразовывался в другой тип.
В каких сценах полезна RVT?
RVT можно использовать для сложных, многослойных или процедурных материалов, применяемых на больших поверхностях. Среди основных сценариев, перечисленных в официальной документации, — шейдинг Landscape, Landscape Splines, материалы, похожие на декали на мешах, а также смешивание рельефа с объектами. Система может помогать в работе с ландшафтом и подобными поверхностями в сценах экстерьеров, поскольку позволяет хранить данные шейдинга на больших пространствах.
Не следует путать RVT со Streaming Virtual Texturing (SVT). Оба метода связаны с текстурами высокого разрешения и загрузкой данных в память по мере необходимости. Однако данные texel для RVT создаются GPU во время выполнения, а данные SVT подготавливаются и загружаются с диска. Epic описывает SVT как подходящий вариант для данных, подготовка которых занимает много времени, например карт освещения и крупных детализированных текстур, созданных художниками.
Настройка RVT: пять основных шагов
Создайте ресурс RVT. В Content Browser нажмите Add New или щёлкните правой кнопкой мыши; в категории Materials & Textures выберите Runtime Virtual Texture. Этот ресурс связывает объёмы в сцене с материалами, которые записывают данные в RVT или считывают их оттуда. Откройте ресурс и настройте размер, размер тайла и поддерживаемый тип Material Attributes.
Добавьте в сцену Runtime Virtual Texture Volume. Объём размещает созданный ресурс RVT в сцене. Документация описывает добавление объёма через панель Modes или перетаскивание его из панели Place Actors в сцену. Объём должен охватывать актор, данные которого будут записываться в RVT; чаще всего это Landscape или похожая на рельеф поверхность.
Настройте объём по границам источника. Выбрав RVT Volume, найдите в разделе Transform from Bounds панели Details поле Source Actor и укажите соответствующий актор. Затем кнопка Set Bounds поможет настроить положение, масштаб и поворот объёма по актору. Если в RVT будут записывать данные и другие компоненты, ещё раз проверьте, что объём их охватывает.
Подготовьте материал для записи и выборки. Выражение Runtime Virtual Texture Output в материале используется для записи данных в RVT, а Runtime Virtual Texture Sample — для чтения данных из назначенного ресурса. Материалы компонентов, которые записывают данные в RVT, должны использовать поле Virtual Texture или содержать подходящие RVT Material Expressions. Чтобы изменить ресурс в отдельном экземпляре материала, можно использовать Runtime Virtual Texture Sample Parameter; тип материала выбранного ресурса должен совпадать с типом в узле параметра.
Проверьте назначения компонентов. Добавьте нужный ресурс RVT в массив Render to Virtual Textures на панели Details компонента. Компоненты, записывающие данные в RVT или считывающие их оттуда, должны находиться в границах объёма. Кроме того, ресурс RVT должен быть назначен объёму в сцене, а материал — настроен соответствующим образом. Если одно из этих условий не выполнено, ожидаемый поток данных может не сформироваться.
Типы материалов и параметры карт освещения
Выбранный в ресурсе RVT Material Type определяет, какие данные будут храниться. В документации перечислены следующие варианты: это не рекомендуемые настройки для каждого проекта, а типы для разных задач работы с данными.
| Настройка | Тип материала | Хранимые данные / примечание |
|---|---|---|
| Material Type | Base Color | Хранит только базовый цвет; формат сжатия — BC1. |
| Material Type | Base Color, Normal, Roughness, Specular | Хранит базовый цвет, нормали, шероховатость и спекулярные данные; при сжатии используются две текстуры BC3. |
| Material Type | YCoCg Base Color, Normal, Specular | Кодирует базовый цвет в формате YCoCg; также включает нормали, шероховатость и спекулярные данные. |
| Material Type | World Height | Хранит нормализованное значение высоты относительно минимальной и максимальной координат Z внутри RVT Volume. |
| Material Type | Mask4 | Хранит четырёхканальную маску, значения каждого канала которой находятся в диапазоне от 0 до 1. |
Кодирование YCoCg может уменьшить такие проблемы, как цветовой сдвиг и полосы, заметные в плавных переходах базового цвета. По данным документации, за это приходится платить дополнительными 25% памяти и дополнительными затратами производительности при выборке и декодировании данных виртуальной текстуры. Поэтому при выборе типа учитывайте не только визуальное качество, но также влияние на память и производительность.
Поддержку виртуальных текстур для карт освещения можно включить с помощью параметра Enable virtual texture lightmaps по пути Project Settings › Engine › Rendering. Epic отмечает, что эта функция может повысить потоковую производительность и качество запекания карт освещения. Параметр r.IncludeNonVirtualTexturedLightmaps управляет созданием и сохранением карт освещения, не использующих виртуальные текстуры. r.VT.EnableLossyCompressLightmaps включает сжатие карт освещения с потерями; в документации отмечено, что эта настройка снижает качество текстур карт освещения.
Рабочий процесс архитектурной визуализации и частые ошибки
RVT можно рассмотреть для архитектурных сцен с большими ландшафтными поверхностями, материалами Landscape и статичными компонентами, которые должны сливаться с рельефом. Наряду с Landscape и Landscape Splines, подходящими кандидатами считаются компоненты Static Mesh и Instanced Static Mesh. А вот скелетные и анимированные меши для этого не подходят. Поскольку содержимое RVT не обновляется целиком каждый кадр, ожидается, что объекты, записывающие данные в систему, обычно будут иметь тип Static.
Частые ошибки при настройке:
RVT Volume не охватывает компоненты, записывающие данные или выполняющие выборку.
Ожидание результата без настройки материала или назначения компоненту правильного ресурса RVT.
Использование движущихся и анимированных мешей так, будто они регулярно обновляемый кэш шейдинга.
Выбор YCoCg без учёта дополнительной стоимости памяти и выборки.
Игнорирование влияния сжатия карт освещения с потерями на качество.
В материале сцены с помощью Virtual Texture Feature Switch можно настроить альтернативный вариант для платформ, не поддерживающих виртуальные текстуры. На практике сначала отдельно проверьте ресурс RVT, границы объёма, узлы материала и назначения компонентов. Затем сравните визуальный результат и производительность в собственной сцене. В документации не указаны конкретные требования к оборудованию или единое значение настройки для всех проектов, поэтому важно проверять выбор с учётом условий конкретного проекта.
Источники
Источников: 2Тексты источников не перепечатываются; короткие цитаты отмечены, остальное — наш пересказ и комментарий.
Для студий архитектурной визуализации в Турции RVT стоит опробовать в сценах с большими ландшафтными поверхностями и статичной геометрией, интегрированной с рельефом. Результат зависит от правильной совместной настройки ресурса, объёма, материала и назначений компонентов. Поэтому сначала полезно протестировать систему на характерном участке сцены — так можно выявить возможные проблемы до её внедрения во весь проект.
В источниках не указаны требования к конкретной видеокарте или объёму памяти. Студиям следует измерить производительность и качество на собственных сценах и особенно учитывать дополнительную стоимость YCoCg по памяти и выборке. При проверке перед сдачей также нужно оценить пригодность движущихся объектов и влияние сжатия карт освещения на качество.
Частые вопросы
Для чего нужна Runtime Virtual Texturing в Unreal Engine?
RVT создаёт данные текстур на GPU во время выполнения и кэширует информацию о шейдинге больших областей. Её можно использовать для шейдинга Landscape, сплайнов и смешивания рельефа с объектами.
Как настроить RVT Volume?
Добавьте Runtime Virtual Texture Volume в сцену. В разделе Transform from Bounds панели Details выберите Source Actor, затем настройте объём по актору с помощью кнопки Set Bounds.
Какие объекты не подходят для RVT?
В документации скелетные и анимированные меши не относятся к подходящим кандидатам. Поскольку содержимое RVT не обновляется целиком каждый кадр, ожидается, что объекты, записывающие данные в RVT, обычно будут иметь тип Static.



