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

OpenGL Core — это серверная часть, способная поддерживать новейшие функции OpenGL в Windows, MacOS X и Linux. Масштабируется от OpenGL 3.2 до OpenGL 4.5 в зависимости от поддержки драйвера OpenGL.

Включение ядра OpenGL

Чтобы установить OpenGL Core в качестве графического API по умолчанию в редакторе или автономном проигрывателе, перейдите к настройкам Player (меню: Edit > Project Settings, затем выберите категория Player) и перейдите в раздел Другие настройки. Отключите свойство Auto Graphics API для Windows и выберите OpenGLCore из списка. Дополнительные сведения см. в разделе Поддержка графических API.

Требования OpenGL

OpenGL Core имеет следующие минимальные требования:

  • Mac OS X 10.8 (OpenGL 3.2), MacOSX 10.9 (OpenGL 3.2–4.1)
  • Windows с NVIDIA с 2006 г. (GeForce 8), AMD с 2006 г. (Radeon HD 2000), Intel с 2012 г. (HD 4000 / IvyBridge) (от OpenGL 3.2 до OpenGL 4.5)
  • Linux (от OpenGL 3.2 до OpenGL 4.5)

Ограничения драйвера macOS OpenGL

Бэкэнд macOS OpenGL для Editor и Standalone поддерживает функции OpenGL 3.x и 4.x, такие как тесселяция и геометрия шейдерыПрограмма, работающая на графическом процессоре. Подробнее
См. в Словарь
.

Однако, поскольку Apple ограничивает версию OpenGL для рабочего стола OS X не более чем до версии 4.1, он не поддерживает все функции DirectX 11 (например, представления неупорядоченного доступа или вычислительные шейдеры). Это означает, что все шейдеры, настроенные для целевого уровня шейдеров 5.0 (с #pragma target 50), не смогут загрузиться в OS X.

Поэтому вводится новый целевой уровень шейдера: #pragma target gl4.1. Для этого целевого уровня требуется как минимум OpenGL 4.1 или DirectX 11.0 Shader Level 5 на настольных компьютерах или OpenGL ES 3.1 + Android Extension Pack на мобильных устройствах.

Основные функции OpenGL

В новой серверной части OpenGL представлено множество новых функций (ранее в основном только DX11/GLES3):

  • Вычислительные шейдеры (а также ComputeBuffers и текстуры рендеринга с произвольной записью)
  • Шейдеры тесселяции и геометрии
  • Косвенное рисование (Graphics.DrawProcedural и Graphics.DrawProceduralIndirect)
  • Расширенные режимы наложения

Изменения шейдера

При использовании существующих целей #pragma они сопоставляются со следующими уровнями GL:

  • #pragma target 4.0 // OpenGL ES 3.1, настольная версия OpenGL 3.x, DX Shader Model 4.0
  • #pragma target gl4.1 // Desktop OpenGL 4.1, SM 4.0 + тесселяция для соответствия возможностям MacOSX 10.9
  • #pragma target 5.0 // OpenGL ES 3.1 + Android Extension Pack, OpenGL для настольных ПК >= 4.2, DX Shader Model 5.0

Для включения и исключения шейдерных платформ из использования определенных шейдеров можно использовать следующие цели #pragma only_renderers / exclude_renderers:

  • #pragma only_renderers glcore: компилировать только для настольного GL. Как и цель ES 3, она также масштабируется, чтобы содержать все настольные версии GL, где базовые шейдеры будут поддерживать GL 2.x, а шейдеры, требующие функций SM5.0, требуют OpenGL 4.2+.

Аргументы командной строки основного профиля OpenGL

Запустить редактор или проигрыватель с OpenGL можно с помощью аргументов командной строки:

  • -force-opengl: использовать устаревшую серверную часть OpenGL
  • .
  • -force-glcore: для использования новой серверной части OpenGL. С этим аргументом Unity обнаружит все функции, поддерживаемые платформой, для работы с наилучшей возможной версией OpenGL и всеми доступными расширениями OpenGL.
  • -force-glcoreXY: XY может быть 32, 33, 40, 41, 42, 43, 44 или 45; каждое число представляет конкретную версию OpenGL. Если платформа не поддерживает определенную версию OpenGL, Unity переключится на поддерживаемую версию.
  • -force-clamped: просьба, чтобы Unity не использовала расширения OpenGL, которые гарантируют, что несколько платформ будут выполнять один и тот же путь кода. Это способ проверить, связана ли проблема с конкретной платформой (например, с ошибкой драйвера).

Собственный OpenGL ES для аргументов командной строки рабочего стола

Графический API OpenGL ES доступен на компьютерах Windows с графическими процессорами Intel или NVIDIA с драйверами, поддерживающими OpenGL ES.

  • -force-gles: для использования новой серверной части OpenGL в режиме OpenGL ES. С этим аргументом Unity обнаружит все функции, поддерживаемые платформой, для работы с наилучшей возможной версией OpenGL ES и всеми доступными расширениями OpenGL ES.
  • -force-glesXY: XY может быть 20, 30, 31, 31aep или 3,2; каждое число представляет конкретную версию OpenGL ES. Если платформа не поддерживает определенную версию OpenGL ES, Unity переключится на поддерживаемую версию. Если платформа не поддерживает OpenGL ES, Unity откажется от другого графического API.
  • -force-clamped: просьба, чтобы Unity не использовала расширения OpenGL, которые гарантируют, что несколько платформ будут выполнять один и тот же путь кода. Это способ проверить, связана ли проблема с конкретной платформой (например, с ошибкой драйвера).
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3