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