Version: Unity 6.0 (6000.0)
言語 : 日本語
GPU インスタンシングの概要
GPU インスタンシングのトラブルシューティング

Enable GPU Instancing

Unity は、同じメッシュとマテリアルを共有するゲームオブジェクトに対して、GPU インスタンシングを行います。メッシュとマテリアルをインスタンス化するには以下を行います。

  • マテリアルの シェーダー は GPU インスタンシングをサポートする必要があります。Unity の スタンダードシェーダー は、すべての サーフェスシェーダー と同様に GPU インスタンシングをサポートします。他のシェーダーに GPU インスタンシングのサポートを追加するには、GPU インスタンシングをサポートするシェーダーの作成 を参照してください。
  • メッシュは、動作別に分類された以下のソースのいずれかである必要があります。
    • MeshRenderer コンポーネントまたは Graphics.RenderMesh の呼び出し。
      動作: Unity はこれらのメッシュをリストに追加し、インスタンス化できるメッシュを確認します。
      Unity は、SRP バッチャーと互換性があるゲームオブジェクトにアタッチされた SkinnedMeshRenderers コンポーネントまたは MeshRenderer コンポーネントに対し、GPU インスタンシングをサポートしません。詳細については、SRP バッチャーの互換性 を参照してください。
    • Graphics.RenderMeshInstanced または Graphics.RenderMeshIndirect の呼び出し。これらのメソッドは、同じシェーダーを使用して同じメッシュを複数回レンダリングします。これらのメソッドを呼び出すたびに、個別のドローコールが送信されます。Unity はこれらのドローコールをマージしません。

マテリアルに GPU インスタンシングを使用するには、Inspector で Enable GPU Instancing オプションを選択します。

Graphics.RenderMeshInstanced のライトプローブのレンダリングを有効にするには、プローブデータを含む MaterialPropertyBlock を指定します。詳細とコードの例については、LightProbes.CalculateInterpolatedLightAndOcclusionProbes を参照してください。

また、プロジェクトでビルトインレンダーパイプラインを使用する場合は、LPPV コンポーネントのリファレンスと LightProbeUsage.UseProxyVolumeGraphics.RenderMeshInstanced に渡すこともできます。この場合、すべてのインスタンスがライトプローブデータの L0 バンドと L1 バンド のボリュームをサンプリングします。L2 データとオクルージョンデータを補完する場合は、MaterialPropertyBlock を使用します。詳細については、ライトプローブ: 技術的な情報 を参照してください。

追加リソース

GPU インスタンシングの概要
GPU インスタンシングのトラブルシューティング