Последние новости
Виртуальные текстуры в Unreal Engine: как использовать RVT и SVTРуководство: размещение объектов в точках с помощью Blender Geometry NodesНастройка архитектурной сцены в Blender с помощью 3D Cursor и Color BalanceЦентральная библиотека Эссена превратила старый магазин в общественное пространство на шести этажахАрхитектурный линейный рендер в Blender Freestyle: пошаговое руководствоНачало работы с MAXScript в 3ds Max: пошаговое руководство по автоматизацииNVIDIA App 11.0.9: добавлена DLSS 4.5 Ray ReconstructionРуководство по настройке Geometry и Volume AOV в Houdini KarmaКак настроить ферму рендеринга Blender Flamenco: Manager и WorkerAnthropic подала заявку S-1 на IPO: выручка — 11,6 млрд долларов
СоветыUnreal Engine

Виртуальные текстуры в Unreal Engine: как использовать RVT и SVT

Unreal Engine предлагает Runtime Virtual Texturing (RVT) и Streaming Virtual Texturing (SVT), чтобы управлять использованием памяти при работе с большими текстурами. В руководстве рассматриваются выбор метода, преобразование материалов и проверка производительности.

Архитектурная визуализация с многослойными текстурами ландшафта и современным павильономИИ-изображение
Иллюстрация создана с помощью ИИ.Изображение: 3dsınıfı / FCA AI

Коротко

  1. RVT создаёт текстуры на GPU во время работы и подходит для процедурных материалов и материалов со слоями.
  2. SVT загружает в память GPU только видимые на экране части текстур с диска — в виде тайлов.
  3. В материалах с текстурами SVT узлы Texture Sample должны использовать подходящий тип Virtual sampler.
  4. Затраты на виртуальное текстурирование можно оценить с помощью команд `stat virtualtexturing` и `stat virtualtexturememory`.

В официальной документации Epic Games по Unreal Engine виртуальное текстурирование описывается как способ работать с большими текстурами, снижая и стабилизируя расход памяти во время работы. Система включает два метода: Runtime Virtual Texturing (RVT) и Streaming Virtual Texturing (SVT). В этом руководстве рассказывается, где применять каждый из них в архитектурной визуализации и сценах реального времени, как подключать текстуры SVT к материалам и как проверять производительность. В исходной документации не указана конкретная версия Unreal Engine, к которой относятся эти сведения.

1. RVT или SVT: выбор подхода под задачу

В RVT данные текстур создаются на GPU во время работы. В документации Epic этот метод рекомендован для процедурных текстур, материалов со слоями и сложных материалов ландшафта. Среди других подходящих задач — рабочие процессы с Landscape Spline, использование decal для мешей и общее смешивание ландшафта с объектами. Это описание не означает, что decal напрямую смешиваются с ландшафтом или объектами.

SVT использует текстуры, подготовленные на диске. Система делит mip-уровни текстуры на тайлы фиксированного размера; GPU определяет, какие фрагменты нужны для видимых на экране пикселей, а затем загружает эти тайлы в кэш памяти GPU. Так при работе с текстурами высокого разрешения используются необходимые области, а не вся текстура целиком, включая невидимые части. SVT подходит для данных, подготовка которых занимает много времени, например lightmap и крупных текстур, созданных художниками.

МетодПоток данныхСценарии использования, указанные в документации
RVTДанные текстуры создаются на GPU во время работы.Процедурные материалы и материалы со слоями, сложные материалы ландшафта
SVTДанные текстуры загружаются с диска; необходимые тайлы помещаются в память.Lightmap и крупные детализированные текстуры

2. Преобразование текстур SVT и материалов

Чтобы использовать SVT, на Texture Asset должен быть включён параметр Virtual Texture Streaming. Кроме того, узлы Texture Sample в материалах, которые обращаются к этой текстуре, должны использовать подходящий тип Virtual sampler. Команда преобразования в Content Browser может включить в список не только выбранные текстуры, но и ссылающиеся на них материалы.

  1. Выберите в Content Browser Texture Asset, который нужно преобразовать в SVT.

  2. Щёлкните по нему правой кнопкой мыши и выберите Convert to Virtual Texture.

  3. В окне преобразования проверьте список текстур и ссылающихся на них материалов.

  4. Нажмите Ok, чтобы начать преобразование.

  5. Затем убедитесь, что узлы Texture Sample в соответствующих материалах используют правильный тип Virtual sampler.

Текстуры можно преобразовать и вручную. Откройте Texture Asset и включите Virtual Texture Streaming в разделе Texture на панели Details. После этого существующие материалы, использующие эту текстуру, могут стать недействительными. В таких материалах нужно переключить узел Texture Sample на подходящий тип Virtual sampler. В примере из документации для виртуальной цветовой текстуры используется Virtual Color; тип sampler Color не подходит.

Когда виртуальная текстура добавляется в граф материала, Unreal Engine автоматически назначает подходящий тип Virtual sampler. Однако при создании Texture Sample Parameter для использования в Material Instance важен тип sampler в базовом материале: дочерние экземпляры используют тип, заданный в базовом материале. В слот параметра базового материала, у которого не выбран тип Virtual, нельзя назначить виртуальную текстуру.

3. UDIM и виртуальные текстуры lightmap

Unreal Engine может импортировать изображения с именами в формате UDIM как один Virtual Texture Asset. У файлов должны совпадать базовое имя и четырёхзначный номер координаты. В документации указан следующий формат:

Промпт
BaseName.####.[Support Image Format]

Например, файл MyTexture.1001.png также запускает поиск изображений с тем же базовым именем, но другими номерами координат. Разрешение изображений UDIM может различаться. В примере из источника два изображения размером 2048x2048 и два размером 128x128 расположены в сетке 2x2 и сэмплируются как одна виртуальная текстура. Согласно документации, то, что в этой сетке небольшие изображения занимают большую область, не увеличивает расход памяти на диске или во время работы.

Чтобы включить виртуальные текстуры lightmap, откройте в Project Settings раздел Engine › Rendering и активируйте Enable virtual texture lightmaps. Epic отмечает, что эта функция может повысить качество генерации lightmap и производительность потоковой загрузки. В документации также описаны консольные переменные r.IncludeNonVirtualTexturedLightmaps и r.VT.EnableLossyCompressLightmaps. Вторая включает сжатие с потерями для виртуальных текстур lightmap; отмечается, что это может снизить качество текстур lightmap.

4. Проверка производительности и распространённые ошибки

Сэмплирование виртуальных текстур обходится дороже, чем сэмплирование обычных текстур. Каждый экземпляр Virtual Texture в графе материала создаёт lookup. Стек можно объединить для экземпляров с одинаковыми UV и Sampler Source; до 8 экземпляров с общими параметрами могут составить один стек. Если UV различаются, стеки могут остаться отдельными, что приведёт к дополнительным обращениям к текстурам.

Чтобы проверить затраты в сцене, откройте консоль и выполните команду:

Промпт
stat virtualtexturing

Команда показывает стоимость виртуального текстурирования в сцене в миллисекундах и счётчики, связанные с таблицами страниц. Чтобы посмотреть счётчики памяти, выполните:

Промпт
stat virtualtexturememory

Чтобы включить сетку отображения mip-уровней в материалах с SVT, выполните:

Промпт
r.VT.Borders 1

После проверки отключите сетку:

Промпт
r.VT.Borders 0

Распространённые ошибки

  • Не исправить тип sampler: ручное преобразование может сделать материалы недействительными. Проверьте, что для узлов Texture Sample выбран подходящий тип Virtual.

  • Считать виртуальные текстуры бесплатными: экономия памяти не отменяет затрат на сэмплирование. Измеряйте производительность сцены с помощью команд статистики.

  • Не учитывать различия в использовании UV: стеки экземпляров с разными UV могут не объединиться, увеличивая стоимость материала.

  • Не учитывать артефакты изображения: на шумных или очень детализированных текстурах ограничение разрешения mip-уровней может вызвать aliasing или эффект муара. Реактивная загрузка SVT также может приводить к тому, что при движении камеры некоторые тайлы загружаются с задержкой и становятся видны внезапно.

В архитектурных проектах, интерьерах и archviz RVT может подойти командам, работающим с процедурными ландшафтами, поверхностями со слоями и переходами между объектами и ландшафтом. SVT может помочь управлять использованием памяти в сценах с крупными текстурами, наборами UDIM или lightmap. Перед внедрением в рабочий процесс проверьте совместимость материалов, нагрузку на GPU и загрузку тайлов при движении камеры. Поскольку в документации не указана версия, результаты также нужно проверить в используемой версии Unreal Engine.

Источники

Источников: 2
D
dev.epicgames.comdev.epicgames.com/documentation/en-us/unreal-engine/virtual-texturing-in-unreal-engine
Пересказ
D
dev.epicgames.comdev.epicgames.com/documentation/en-us/unreal-engine/streaming-virtual-texturing-in-unreal-engine
Пересказ

Тексты источников не перепечатываются; короткие цитаты отмечены, остальное — наш пересказ и комментарий.

Мнение 3dsınıfı
3dОценка редактора

Для архитектурных и визуализационных бюро в Турции виртуальное текстурирование может помочь управлять памятью в сценах с крупными наборами текстур и обширными ландшафтами. Однако это не означает, что в каждом проекте автоматически ускорится рендер: необходимо учитывать дополнительные затраты на сэмплирование виртуальных текстур и влияние разных UV.

Самый надёжный подход — сначала протестировать метод на репрезентативной сцене, а не сразу применять его во всём проекте. После преобразования следует проверить совместимость материалов, счётчики памяти GPU, качество изображения с мелкими деталями и загрузку тайлов при движении камеры. Командам также стоит включить в контрольный список проверку поведения в используемой версии Unreal Engine.

Частые вопросы

Чем отличаются RVT и SVT в Unreal Engine?

RVT создаёт данные текстур на GPU во время работы. SVT загружает только видимые части текстур с диска, разбивая их на тайлы.

Как использовать текстуры SVT в материалах?

Для текстуры должен быть включён параметр Virtual Texture Streaming, а узлы Texture Sample в материале должны использовать подходящий тип Virtual sampler. В меню преобразования перечисляются и текстуры, и ссылающиеся на них материалы.

Как измерить производительность виртуальных текстур в Unreal Engine?

`stat virtualtexturing` показывает затраты сцены и счётчики, связанные с таблицами страниц. `stat virtualtexturememory` отображает счётчики памяти виртуальных текстур в сцене.

Комментарии и форум — на турецком языке.Присоединиться к обсуждению
+

Похожие новости