Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Использование Streaming Virtual Texturing в Shader Graph

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

Чтобы использовать SVT для потоковой передачи текстуры, необходимо добавить текстуру в Свойство виртуальной текстуры. Свойство виртуальной текстуры определяет набор связанных текстур. Чтобы попробовать эти текстуры, вы подключаете свойство виртуальной текстуры к Узел Sample Virtual Texture. Узел Sample Virtual Texture принимает одну UV-координату в качестве входных данных и использует эту UV-координату для выборки всех текстур.

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

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

Чтобы использовать узел Образец виртуальной текстуры на этапе вершин, сначала необходимо отключить Автоматическую потоковую передачу на узле Образец виртуальной текстуры, а затем выбрать LodТехника Level Of Detail (LOD) — это оптимизация, которая уменьшает количество треугольников, которые Unity должна отображать для GameObject, когда его расстояние от камеры увеличивается. Подробнее
Просмотреть в режиме Словарь
Уровень
. Затем вы должны использовать сценарий, чтобы вручную запросить загрузку тайлов SVT. Для этого используйте метод VirtualTexturing.Streaming.RequestRegion следующим образом:

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

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

В этом примере показано свойство Virtual Texture, связанное с узлом Sample Virtual Texture в Shader Graph.
В этом примере показано свойство Virtual Texture, связанное с узлом Sample Virtual Texture в Shader Graph.

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

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

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

  • Существуют некоторые ограничения при использовании узла Sample Virtual Texture в Shader Graph.

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