版本: Unity 6 (6000.0)
语言English
  • C#
实验性:此 API 处于实验阶段,将来可能会更改或删除。

ShaderWarmup.WarmupShader

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交内容,但我们确实阅读了用户提出的每个建议更改,并在适用时进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public static void WarmupShader(Shader shader, Experimental.Rendering.ShaderWarmupSetup setup);

描述

使用给定的渲染配置预热给定Shader的所有着色器变体。

有关着色器加载和预热的详细信息,包括不同预热技术的列表,请参阅着色器加载

如果您的应用程序在以下某个图形 API 上运行,Unity 需要更多信息才能正确构建着色器变体的 GPU 表示(“管道状态对象”或 PSO)

  • DirectX 12
  • Metal
  • Vulkan

如果 Unity 拥有此信息,则预热变体更有可能与 GPU 在渲染场景时所需的变体相匹配。

要向 Unity 提供更多信息,您可以执行以下操作

  • 使用setup参数指定与着色器一起使用的顶点数据布局。
  • 在调用WarmupShader之前,设置渲染状态使其尽可能接近您与着色器一起使用的状态。例如,设置渲染目标的格式,或使用渲染状态命令设置混合模式等状态。

如果您的应用程序在支持该功能的平台上运行,Unity 还会使用多个后台线程异步预热着色器变体。Unity 会尽可能多地使用线程。在构建的应用程序中,您可以使用-max-async-pso-job-count 命令行参数设置 Unity 使用的线程数。

其他资源:ShaderWarmup.WarmupShaderFromCollectionShader.WarmupAllShadersShaderVariantCollection.WarmUp