User Manual

Объединение (Batching)

Объединение (Batching) - это процесс объединения нескольких экземпляров сетки в один экземпляр сетки, чтобы все они могли быть отрендерены за один вызов GPU. PlayCanvas предоставляет удобную функцию на компонентах Model, Sprite и Element, которая позволяет назначать эти компоненты на группы объединения (batch groups), которые дают движку подсказки о том, как объединять сетки для сокращения общего количества вызовов отрисовки.

Движок применяет различные правила для определения возможности объединения экземпляров сетки. Основное правило заключается в том, что все экземпляры сетки должны использовать один и тот же материал.

Распространенные случаи использования объединения:

Использование объединения в пакеты в настоящее время несовместимо с световыми картами во время выполнения из-за того, что каждый объект со световой картой требует своей собственной уникальной текстуры световой карты.

Создание групп пакетов

Создание групп пакетов

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

Свойства группы пакетов

Добавление компонента в группу пакетов

Выбор групп пакетов

Компонент Model имеет свойство Batch Group для назначения модели в группу пакетов.

Правила объединения экземпляров сетки

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

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

Запуск переупаковки

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

Вот пример простого скрипта. Скрипт обновляет textureAsset на элементе и помечает группу пакетов как грязную.

Issue Tracker

Если вы нашли ошибку или у вас есть предложение, пожалуйста, создайте новый тикет в Issue Tracker.

Учебные материалы

Содержание

Создание и использование Shader Graph

  1. Создайте новый Material Asset в папке Assets.
  2. Выберите созданный Material Asset и откройте Material Inspector.
  3. В Material Inspector выберите Shader и нажмите кнопку Create Shader Graph.
  4. Созданный Shader Graph будет автоматически применен к выбранному Material Asset.
  5. Для редактирования Shader Graph дважды кликните по нему в папке Assets.

Редактор Shader Graph

Редактор Shader Graph состоит из следующих частей:

Узлы

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

Инспекторы

Инспекторы позволяют настраивать параметры узлов, текстур и графов. Вы можете открыть инспектор, выбрав соответствующий элемент в редакторе Shader Graph.

Создание узлов

Чтобы создать узел, щелкните правой кнопкой мыши в области Graph Editor и выберите нужный узел из контекстного меню.

Соединение узлов

Чтобы соединить узлы, перетащите порт одного узла на порт другого узла. Порты совместимых типов будут подсвечены зеленым цветом.

Работа с узлами

Вы можете перемещать, копировать, вставлять и удалять узлы, используя стандартные команды и сочетания клавиш.

Сохранение и загрузка графов

Чтобы сохранить граф, нажмите Ctrl+S или выберите File > Save в меню. Чтобы загрузить граф, дважды кликните по нему в папке Assets.

// изменить textureAsset на элементе
element.textureAsset = this.hoverAsset;

// если у этого элемента установлена группа Batch Group, отметьте ее как грязную, чтобы перестроить группу в следующем кадре
if (element.batchGroupId)
    this.app.batcher.markGroupDirty(element.batchGroupId);

Пример - Объединение статической среды

Западная сцена

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

Западная анимация

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

Западная анимация с объединением

На этой анимации мы создали 4 группы пакетов для зданий, кактусов, дороги и земли. Обратите внимание, что дорога и земля не объединяются в единые вызовы рисования, потому что сетки больше, чем максимальный размер AABB, определенный для группы пакетов.

Терминология

This site is translated by the community. If you want to get involved visit this page