包含此页的版本:
不含此页的版本:
异步着色器在 GPU 上运行的程序。更多信息
请参阅术语表默认情况下,编译处于启用状态。
若要启用或禁用异步着色器编译,请执行以下作:
注意:以这种方式启用和禁用异步着色器编译仅影响场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,你放置你的环境、障碍物和装饰品,基本上是将你的游戏设计和构建成碎片。更多信息
请参阅术语表和游戏视图。如果你想在编辑器的其他部分使用它,请参阅自定义编辑器工具和异步着色器编译。
可以在 C# 中为特定呈现命令启用或禁用异步着色器编译脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间修改组件属性以及以您喜欢的任何方式响应用户输入。更多信息
请参阅术语表.
以下说明演示如何在即时作用域和 CommandBuffer 作用域中启用或禁用该功能。
在即时作用域中,您可以使用ShaderUtil.allowAsyncCompilation.
为此,请执行以下作:
ShaderUtil.allowAsyncCompilation在变量中。ShaderUtil.allowAsyncCompilation自false.ShaderUtil.allowAsyncCompilation恢复到以前的状态。下面是一个伪代码示例:
// Store the current state
bool oldState = ShaderUtil.allowAsyncCompilation;
// Disable async compilation
ShaderUtil.allowAsyncCompilation = false;
// Enter your rendering code that should never use the placeholder shader, for example UI elements or characters.
Graphics.RenderMesh(...);
// Restore the old state
ShaderUtil.allowAsyncCompilation = oldState;
在CommandBufferscope,您可以使用ShaderUtil.SetAsyncCompilation和ShaderUtil.RestoreAsyncCompilation.
ShaderUtil.SetAsyncCompilation,并将其设置为false.CommandBuffer 中的后续命令不允许异步编译。Shader.Util.RestoreAsyncCompilation以还原异步着色器编译的状态。这是一个例子:
// Create the CommandBuffer
CommandBuffer cmd = new CommandBuffer();
// Disable async compilation for subsequent commands
ShaderUtil.SetAsyncCompilation(cmd, false);
/// Enter your rendering commands that should never use the placeholder shader, for example UI elements or characters.
cmd.DrawMesh(...);
// Restore the old state
ShaderUtil.RestoreAsyncCompilation(cmd);
您可以为特定着色器对象Shader 类的实例,Shader 对象是着色器程序和 GPU 指令的容器,以及告诉 Unity 如何使用它们的信息。将它们与材质一起使用,以确定场景的外观。更多信息
请参阅术语表通过强制编辑器始终同步编译它们。对于生成数据的着色器对象来说,这是一个不错的选择,这些对象在渲染开始时始终存在,并且编译速度相对较快。如果您正在执行高级渲染,您很可能需要它。
要强制对 Shader 对象进行同步编译,请将#pragma editor_sync_compilation 指令添加到着色器源代码中。
注意:不应强制同步编译在渲染过程中遇到新着色器变体的复杂着色器对象;这可能会在编辑器中停止渲染。
默认情况下,异步着色器编译在游戏中工作,并且场景视图您正在创建的世界的交互式视图。您可以使用场景视图来选择和定位场景、角色、摄像机、灯光和所有其他类型的游戏对象。更多信息
请参阅术语表.如果要在自定义编辑器工具中使用它,可以通过 C# 为自定义工具启用它。
为此,可以为特定渲染调用启用异步着色器编译。