Graphics performance and profiling
OpenGL Core
OpenGL Core 是可支持 Windows、MacOS X 和 Linux 平台最新 OpenGL 功能的后端。这包括从 OpenGL 3.2 到 OpenGL 4.5,具体取决于 OpenGL 驱动程序支持情况。
启用 OpenGL Core
To set OpenGL Core as your default Graphics API in the Editor or Standalone Player, go to the Player settings (menu: Edit > Project Settings , then select the Player category), and navigate to Other Settings . Disable the Auto Graphics API for Windows property, and choose OpenGLCore from the list. For more details, see Graphics API support.
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 驱动程序限制
用于 Editor 和独立平台的 macOS OpenGL 后端支持 OpenGL 3.x 和 4.x 功能,如曲面细分和几何着色器。
但是,由于 Apple 将 OS X 桌面上的 OpenGL 版本限制为最高 4.1,因此并不支持所有 DirectX 11 功能(例如无序访问视图或计算着色器)。这意味着,以着色器级别 5.0 为目标(包含 #pragma 目标 50)的所有着色器将无法在 OS X 上加载。
因此引入了新的着色器目标级别:#pragma 目标 gl4.1。此目标级别至少需要 OpenGL 4.1 或 DirectX 11.0 着色器级别 5(桌面端)或 OpenGL ES 3.1 + Android 扩展包(移动端)。
OpenGL Core 功能
新的 OpenGL 后端引入了许多新功能(以前主要是 DX11/GLES3):
- 计算着色器(以及 ComputeBuffer 和“随机写入”渲染纹理)
- 曲面细分和几何着色器
- 间接绘制(Graphics.DrawProcedural 和 Graphics.DrawProceduralIndirect)
- 高级混合模式
着色器更改
使用现有 #pragma 目标时,它们会映射到以下 GL 级别:
- #pragma 目标 4.0 // OpenGL ES 3.1、桌面版 OpenGL 3.x、DX Shader Model 4.0
- #pragma 目标 gl4.1 // 桌面版 OpenGL 4.1、SM 4.0 + 曲面细分(匹配 MacOSX 10.9 功能)
- #pragma 目标 5.0 // OpenGL ES 3.1 + Android 扩展包、桌面版 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 Core 配置文件命令行参数
可使用命令行参数通过 OpenGL 启动 Editor 或播放器:
-
-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 桌面版命令行参数
OpenGL ES 图形 API 适用于配备了 Intel 或 NVIDIA GPU 且驱动程序支持 OpenGL ES 的 Windows 机器。
-
-force-gles:在 OpenGL ES 模式下使用新版 OpenGL 后端。通过使用此参数,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 扩展,这样可确保多个平台将执行相同的代码路径。这是一种测试某个问题是否特定于平台(例如驱动程序错误)的方法。
Graphics performance and profiling