着色器对象可能包含数百或数千个着色器变体根据特定着色器关键字及其状态的组合而生成的着色器程序版本。一个着色器对象可以包含多个着色器变体。 更多信息
参见 术语表。如果编辑器在加载着色器在 GPU 上运行的程序。 更多信息
参见 术语表对象时编译所有变体,则导入过程将非常缓慢。相反,编辑器会按需编译着色器变体,在第一次遇到它们时。
编译这些着色器变体会导致编辑器暂停几毫秒甚至几秒钟,具体取决于图形 API 和着色器对象Shader 类的实例,着色器对象是着色器程序和 GPU 指令的容器,以及告知 Unity 如何使用它们的说明。将它们与材质一起使用以确定场景的外观。 更多信息
参见 术语表的复杂性。为了避免这些停顿,您可以使用异步着色器编译在后台编译着色器变体,并在同时使用占位符着色器对象。
异步着色器编译的工作原理如下
以下例外情况适用
DrawProcedural
或 CommandBuffer.DrawProcedural
绘制几何体,编辑器不会使用占位符着色器。相反,编辑器只是跳过渲染此几何体,直到它编译了着色器变体。