シェーダーオブジェクトには数百から数千のシェーダーバリアントが含まれている場合があります。シェーダーオブジェクトをロードするときに、エディターですべてのバリアントをコンパイルするとインポートプロセスが非常に遅くなります。そのためエディターでは、最初にシェーダーバリアントを検出したときに、必要に応じてコンパイルします。
これらのシェーダーバリアントをコンパイルすると、グラフィックス API やシェーダーオブジェクトの複雑さに応じて、エディターがミリ秒から数秒にわたってストール (待機) することがあります。このようなストールを避けるために、非同期シェーダーコンパイルを使用してシェーダーバリアントをバックグラウンドでコンパイルし、その間プレースホルダーシェーダーオブジェクトを使用することができます。
非同期のシェーダーコンパイルは以下のように行われます。
以下の例外があります。
DrawProcedural または CommandBuffer.DrawProcedural を使用してジオメトリを描画する場合、エディターはプレースホルダーシェーダーを使用しません。代わりに、エディターはシェーダーバリアントのコンパイルが終了するまで、このジオメトリの描画をスキップします。