User Manual

Слои

Обзор слоев

Слои позволяют настраивать рендеринговый цикл для вашего приложения. Используя слои, вы можете реализовать некоторые продвинутые функции рендеринга. Например:

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

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

Порядок рендеринга

Существует три фактора, которые определяют порядок, в котором отображаются сетки.

Приоритет камеры

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

У каждой камеры также настроен список слоев, который определяет, какие слои отображает камера. Их порядок описан в следующем разделе.

Слои камеры

Композиция слоя

Далее идет порядок слоев в приложении. Каждое приложение содержит объект pc.LayerComposition, который доступен в вашем приложении как this.app.scene.layers. Композиция слоя определяет порядок всех подслоев. Упорядочение основано на подслое, а не на слое, чтобы вы могли, например, сначала отобразить все непрозрачные подслои, а затем все прозрачные подслои.

Примечание: Помещение компонента модели в слой, который отображается после слоя мира, не заставит модель отображаться поверх всего в слое мира! Стандартный материал, используемый для отображения моделей, имеет свойство depthTest. Когда это значение истинно (по умолчанию), перед отображением каждого пикселя модели GPU проверяет, есть ли что-то еще перед этим пикселем. Даже если этот пиксель был нарисован на более раннем слое, тест глубины гарантирует, что будут нарисованы только видимые пиксели. Если вы хотите игнорировать расстояние от камеры при отображении сетки, отключите depthTest в вашем материале.

Режимы сортировки

У каждого подслоя есть режим сортировки. В каждом кадре сетки в подслое сортируются в соответствии с его режимом сортировки. Это определяет порядок, в котором сетки отображаются при рендеринге подслоя.

Слои по умолчанию

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

Слои по умолчанию

  1. Мир (непрозрачный) - Используется для отображения компонентов, которые не являются прозрачными, и большинства непрозрачных компонентных сеток.
  2. Depth (Opaque) - Используется для захвата цвета или буфера глубины сцены, см. Depth Layer.
  3. Skybox (Opaque) - Используется для отображения небесного куба. Он отображается после World (Opaque) для уменьшения перекрытия.
  4. World (Transparent) - Используется для отображения прозрачных компонентов и других прозрачных компонентных сеток.
  5. Immediate (Opaque) - Используется для отображения сеток в режиме немедленного режима. например, app.renderLine().
  6. Immediate (Transparent) - Используется для отображения сеток в режиме немедленного режима. например, app.renderLine().
  7. UI (Transparent) - Используется для отображения компонентов Element. Все компоненты Element прозрачны, поэтому подслой Opaque не используется.

Использование пользовательских слоев

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

Создание слоя

Слои управляются из панели LAYERS в разделе Settings редактора.

Создание слоя

В разделе Слои введите имя слоя, который вы хотите создать, и нажмите Add Layer. Ваш новый слой появится в списке доступных слоев под кнопкой.

Установка режима сортировки

Редактирование слоя

Вы можете выбрать режим сортировки для каждого подслоя в списке слоев. Разверните свой слой и выберите режим сортировки из выпадающего меню.

Выбор порядка слоев

Добавление слоя

Добавьте подслой в композицию слоев, выбрав ADD SUBLAYER и выбрав, какой подслой вы хотите добавить. После того, как ваш слой будет в списке Render Order, вы можете изменить порядок, перетаскивая каждый подслой вверх и вниз.

Отображение сущностей в слоях

Компоненты, которые отображают сетки, все имеют свойство layers, которое используется для определения того, в какой слой и подслой должна быть добавлена сетка. К таким компонентам относятся: Model, Element, Sprite, Particle System. Компоненты Camera и Light также имеют свойство layers для определения того, какие слои они отображают и освещают соответственно.

Компоненты слоя

Примечание: Модель назначена на Test Layer. Чтобы она была отображена, камера должна включать Test Layer в свой список слоев. Чтобы она была освещена, свет должен включать Test Layer в свой список слоев.

Рекомендуемая настройка

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

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

Когда вы добавляете дополнительную камеру, рекомендуется выполнить следующие шаги:

  1. Установите приоритет новых и существующих камер для контроля порядка их отображения.
  2. Настройте слои новой камеры, чтобы указать, какие слои она отображает. Например, вы можете отображать камеру карты сверху вниз и хотите видеть только слои Terrain и Building, но не Characters.
  3. Если ваша камера отображает текстуру, используйте скрипт для назначения цели рендеринга свойству renderTarget камеры.
This site is translated by the community. If you want to get involved visit this page