Unity 6.3
0 онлайн 54 гостей 3 в системе
Вход

Использование потоковой виртуальной текстуры в Shader Graph

Эта функция является экспериментальной и не готова для использования в производстве. Функция и документация могут быть изменены или удалены в будущем.

Вы можете использовать потоковое виртуальное текстурирование (SVT) с шейдерами, созданными в Shader Graph. Перед началом работы необходимо включить виртуальное текстурирование в вашем проекте. Встроенные шейдеры High Definition Render Pipeline (такие как Lit и Unlit) не поддерживают SVT.

Использовать SVT чтобы поток текстуры, вы должны добавить текстуру к Свойство виртуальной текстуры. Свойство виртуальной текстуры определяет стек связанных текстур. Для выборки этих текстур вы подключаете свойство виртуальной текстуры к Пример узла виртуальной текстуры. Узел образца виртуальной текстуры занимает один UV координат в качестве входа, и использует это UV координаты для выборки всех текстур.

По возможности следует объединять текстуры в одно и то же свойство виртуальной текстуры. Это потому, что более эффективно использовать несколько текстур, которые являются частью одного и того же свойства виртуальной текстуры, чем использовать несколько свойств виртуальной текстуры.

Когда вы используете узел Sample Virtual Texture на стадии фрагмента, SVT автоматически передаёт поток в плитках текстуры, основанных на UVs, который он семплировал. Чтобы это работало, узел Sample Virtual Texture выводит плитку ID, из которой он читает, в цель рендеринга. Чтобы отключить это, откройте настройки узла и отключите Автоматическое потоковое вещание. Дополнительные сведения см. в Как работает потоковое виртуальное текстурирование.

Чтобы использовать узел Образца Виртуальной Текстуры на стадии вершины, сначала необходимо отключить Автоматическое Струмообразование на узле Образца Виртуальной Текстуры, а затем выбрать режим Уровень Загрузки. Затем необходимо использовать скрипт, чтобы вручную запросить SVT загрузить плитки. Для этого используйте методы VirtualTexturing.Streaming.RequestRegion следующим образом:

VirtualTexturing.Streaming.RequestRegion(Material, Stack ID, Rect, mipmap, numMips)

Вы можете использовать этот метод для загрузки любых плиток, которые еще не видны, что позволяет вам делать такие вещи, как построить систему предварительного поиска. Вы должны вызывать этот метод каждый кадр, в противном случае система предполагает, что плитки больше не нужны, и потенциально вытесняет их, когда он поток других плиток.

В этом примере показано Свойство Виртуальной Текстуры, подключенное к узлу Образца Виртуальной Текстуры в Shader Graph.
В этом примере показано Свойство Виртуальной Текстуры, подключенное к узлу Образца Виртуальной Текстуры в Shader Graph.

Совместимость Shader Graph

  • Вы должны назначить все текстурные слоты виртуального свойства текстуры в Shader Graph.

  • SVT копирует каждое уникальное сочетание текстур, назначенных свойству Virtual Texture Property, в отдельный участок потоковой виртуальной текстуры. Поэтому если вы используете в этом свойстве много разных сочетаний текстур, размер сборки проекта может вырасти: каждое сочетание хранится отдельно.

  • Существуют некоторые ограничения при использовании узла Образец виртуальной текстуры в Shader Graph.

    • Вы не можете использовать узел Образец Виртуальной Текстуры в графе Декал или на прозрачных шейдерах. Если вы используете узел Образец Виртуальной Текстуры каким-либо из этих способов, то узел использует стандартную выборку текстуры 2D.
    • Автоматическая виртуальная потоковая передача не работает в вершинной стадии шейдера. По умолчанию узел Sample Virtual Texture не подключается к вершинным слотам в Shader Graph. Чтобы считывать стек виртуальных текстур в вершинной стадии, необходимо настроить для этой текстуры ручную потоковую передачу. Для этого задайте Режим посадки до Уровень, и отключить Автоматическое потоковое вещание в настройках узла. Кроме того, вам необходимо написать скрипт C#, который управляет запросами данных для этой текстуры. Дополнительные сведения см. VirtualTexturing.Streaming.RequestRegion.
    • Некоторые настройки конвейера рендеринга или графа могут быть несовместимы с потоковой передачей виртуальных текстур. Если узел Sample Virtual Texture не работает при текущей конфигурации, Shader Graph выводит предупреждение в настройках узла, и узел использует обычную выборку 2D-текстуры.