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

WebGLJavaScript API, который отображает 2D- и 3D-графику в веб-браузере. Вариант сборки Unity WebGL позволяет Unity публиковать контент в виде программ JavaScript, использующих технологии HTML5 и API рендеринга WebGL для запуска контента Unity в веб-браузере. Подробнее
See in Словарь
— это API для рендеринга графики в веб-браузерах, основанный на о функциональности графической библиотеки OpenGL ES. WebGL 1.0 примерно соответствует функциональности OpenGL ES 2.0, а WebGL 2.0 примерно соответствует функциональности OpenGL ES 3.0.

Очистить камеру

По умолчанию WebGL очищает буфер рисования после каждого кадра. Это означает, что в Unity WebGL содержимое буфера кадров очищается независимо от настройки Camera.clearFlags. Однако вы можете изменить это поведение во время создания экземпляра. Для этого установите для параметра webglContextAttributes.preserveDrawingBuffer значение true в своем шаблоне WebGL:

script.onload = () => { config['webglContextAttributes'] = {"preserveDrawingBuffer": true}; // Add this line to the index file in a WebGL Template createUnityInstance(canvas, config, (progress) => }

Отложенный рендеринг

Unity WebGL поддерживает путь отложенного рендеринга, только если доступен WebGL2.0. В WebGL1.0 среда выполнения Unity WebGL будет использовать прямой рендерингпуть рендеринга, который отображает каждый объект за один или несколько проходов, в зависимости от источников света, влияющих на объект. Сами источники света также обрабатываются Forward Rendering по-разному, в зависимости от их настроек и интенсивности. Подробнее
См. в Словарь
.

Глобальное освещение

Unity WebGL поддерживает только запеченное GI. Enlighten Realtime Global IlluminationГруппа методов, которые моделируют как прямое, так и непрямое освещение для получения реалистичных результатов освещения.
See in Словарь
в настоящее время не поддерживается в WebGL. Кроме того, только ненаправленные карты освещенияпредварительно визуализированные текстуры, содержащие эффекты источников света на статических объектах сцены. Карты освещения накладываются поверх геометрии сцены для создания эффекта освещения. Подробнее
Поддерживаются See in Словарь
.

Линейный рендеринг

Unity WebGL поддерживает только рендеринг линейного цветового пространства с WebGL 2.0. Рендеринг линейного цветового пространства не имеет резервной поддержки для WebGL 1.0. Чтобы создать проигрыватель WebGL с использованием рендеринга линейного цветового пространства, необходимо удалить API WebGL 1.0 в настройках Проигрывателя, открыть панель Другие настройки, отключить Автоматическую графику. Настройка API.

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

Импорт видеоклипов

На платформе WebGL видеоклипы не импортируются в проект Unity с помощью VideoClipImporter, так как это увеличило бы исходный размер загружаемых данных ресурсов и предотвратило бы потоковую передачу по сети. Для воспроизведения видео используйте параметр URL в компоненте VideoPlayer и поместите ресурс в каталог StreamingAssets/, чтобы использовать встроенную сетевую потоковую передачу вашего браузера.

Ограничения кода шейдера WebGL

спецификация WebGL 1.0 накладывает некоторые ограничения на GLSLS шейдерПрограмма, работающая на графическом процессоре. Подробнее
См. код Словарь
, который является более строгим, чем многие реализации OpenGL ES 2.0. В основном это актуально, когда вы пишете собственные шейдеры.

В частности, в WebGL есть ограничение на то, какие значения можно использовать для индексации массивов или матриц: WebGL допускает динамическое индексирование только с постоянными выражениями, циклическими индексами или их комбинацией. Единственным исключением является единый доступ в вершинных шейдерахпрограмме, которая запускается для каждой вершины 3D-модели во время рендеринга модели. . Подробнее
См. в Словарь
, который можно индексировать с помощью любого выражения.

Кроме того, ограничения применяются к структурам управления. Единственным разрешенным типом циклов являются циклы for подсчета, в которых инициализатор инициализирует переменную константой, обновление добавляет константу к переменной или вычитает константу из переменной, а тест продолжения сравнивает переменная в константу. Циклы for, которые не соответствуют этим критериям, и циклы while не допускаются.

Визуализация шрифта

Unity WebGL поддерживает динамическую визуализацию шрифтов, как и все платформы Unity. Однако у него нет доступа к шрифтам, установленным на компьютере пользователя, поэтому все используемые шрифты должны быть включены в папку проекта (включая любые запасные шрифты для международных символов или полужирные/курсивные версии шрифтов), и настроить как резервные имена шрифтов.

Сглаживание

WebGL поддерживает сглаживание в большинстве (но не во всех) сочетаниях браузеров и графических процессоров. Чтобы использовать его, сглаживание должно быть включено в настройках Quality по умолчанию для платформы WebGL.

Обратите внимание, что в WebGL1.0 есть несколько ограничений:

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

  • Разные уровни множественной выборки (2x, 4x и т. д.) не действуют в WebGL, они либо включены, либо выключены.

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

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

Для WebGL2.0 таких ограничений нет.

Зонды отражения

Проверки отражения поддерживаются в WebGL, но из-за ограничений в спецификации WebGL, касающихся рендеринга в определенные мип-карты, проверки отражения в реальном времени сглажены Компонент рендеринга, который захватывает сферический вид своего окружения во всех направлениях, как камера. Захваченное изображение затем сохраняется как кубическая карта, которую можно использовать для объектов с отражающими материалами. Подробнее
See in Словарь
не поддерживаются (поэтому датчики отражения в реальном времени всегда будут генерировать резкие отражения). , который может показаться очень низким разрешением). Для плавных датчиков отражения в реальном времени потребуется WebGL 2.0.

Поддержка WebGL 2.0

Unity включает поддержку API WebGL 2.0, что позволяет Возможности рендеринга уровня OpenGL ES 3.0 в Интернете.

По умолчанию сборки Unity WebGL поддерживают API WebGL 1.0 и WebGL 2.0. Это можно настроить в настройках WebGL Player на панели Другие настройки, отключив кнопку < b>Свойство API автоматической графики.

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

Вы можете использовать SystemInfo.graphicsDeviceType во время выполнения, чтобы определить, выполняется ли рендеринг экземпляра Unity с помощью OpenGLES3 (WebGL2.0) или OpenGLES2 (WebGL1). .0).


  • Линейный рендеринг для WebGL 2.0 добавлен в 2017.2

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3