当 Unity 首次在构建的应用程序中使用着色器在 GPU 上运行的程序。 更多信息
参见 术语表 变体时,场景场景包含游戏环境和菜单。可以将每个唯一的场景文件视为一个唯一的关卡。在每个场景中,您放置环境、障碍物和装饰,从本质上讲,将游戏分段设计和构建。 更多信息
参见 术语表 可能会出现卡顿。这是因为 Unity 和图形驱动程序需要编译着色器变体,并使用已编译的着色器代码及其相关的 GPU 状态创建管道状态对象 (PSO)。
为了减少卡顿,请在首次需要之前编译着色器并创建 PSO,以便图形驱动程序将其缓存到磁盘。这称为预热、预加载或预处理。通常在加载屏幕期间进行预热,例如应用程序启动时或加载场景时。
注意:某些 API 处于实验阶段,尚未准备好投入生产使用。这些 API 和文档将来可能会发生更改或被移除。
要在 DirectX 12、Metal 或 Vulkan 上预热着色器,请使用实验性 GraphicsStateCollection
API。此 API 收集项目在运行时使用的特定 GPU 状态,现代图形 API 需要创建和缓存准确的 PSO。
请按照以下步骤操作
GraphicsStateCollection.BeginTrace
和 GraphicsStateCollection.EndTrace
方法记录应用程序使用的着色器变体和 GPU 状态。.graphicsState
文件,请使用 GraphicsStateCollection.SendToEditor
API。.graphicsstate
文件,然后使用 WarmUp
或 WarmUpProgressively
API 预热着色器变体。这两个 API 都返回 JobHandle
对象,您可以使用它们异步预热着色器变体。您应该为使用的每个图形 API 创建一个不同的 .graphicsstate
文件。
有关更多信息,请参阅 GraphicsStateCollection
。
请使用以下方法进行预热
要预热着色器变体集合,请执行以下任一操作
ShaderVariantCollection.WarmUp
在构建的应用程序启动时预热着色器变体。要检查 Unity 和图形驱动程序何时编译着色器并创建 PSO,请在 Profiler一个帮助您优化游戏的窗口。它显示在游戏的各个区域花费的时间。例如,它可以报告渲染、动画或游戏逻辑中花费的时间百分比。 更多信息
参见 术语表 中搜索以下探查器标记放置在代码中以描述 CPU 或 GPU 事件,然后在 Unity 探查器窗口中显示。默认情况下添加到 Unity 代码中,或者您可以使用 ProfilerMarker API 添加您自己的自定义标记。 更多信息
参见 术语表
Shader.CreateGPUProgram
用于 Unity 创建着色器变体的特定于 GPU 的版本。CreateGraphicsGraphicsPipelineImpl
用于 Unity 创建 PSO。