BRG を使用してレンダリングを行う最初のステップは、BatchRendererGroup のインスタンスを作成し、OnPerformCulling の実装で初期化することです。
OnPerformCulling コールバックは BRG のメインエントリーポイントで、Unity は可視オブジェクトをカリングするたびにこれを呼び出します。このコールバックが受け取るパラメーターについては、OnPerformCulling を参照してください。通常、OnPerformCulling コールバックが実行する必要があるタスクは、以下の 2 つです。
単純な実装では OnPerformCulling コールバックで直接これらのタスクを実行できますが、高性能な実装ではこの作業のほとんどを Burst ジョブで実行するのが効率的です。OnPerformCulling コールバックは、ジョブが BatchCullingOutputパラメーターに出力を書き込んだ後に完了する JobHandle を返します。ジョブを使用しない実装の場合は、空の JobHandle を返すことができます。
以下のコードサンプルは、BatchRendererGroup オブジェクトを作成して、コンパイル可能な最小限の OnPerformCulling コールバックでそれを初期化する方法の一例を示したものです。
using System;
using Unity.Collections;
using Unity.Collections.LowLevel.Unsafe;
using Unity.Jobs;
using UnityEngine;
using UnityEngine.Rendering;
public class SimpleBRGExample : MonoBehaviour
{
private BatchRendererGroup m_BRG;
private void Start()
{
m_BRG = new BatchRendererGroup(this.OnPerformCulling, IntPtr.Zero);
}
private void OnDisable()
{
m_BRG.Dispose();
}
public unsafe JobHandle OnPerformCulling(
BatchRendererGroup rendererGroup,
BatchCullingContext cullingContext,
BatchCullingOutput cullingOutput,
IntPtr userContext)
{
// この例はジョブを使用していないので、空の JobHandle を返します。
// パフォーマンス負荷の高いアプリケーションの場合は、Burst ジョブを使用して
// カリングと描画コマンドの出力を実装することが推奨されます。その場合、この関数は
// Burst ジョブの終了時に完了するハンドルをここに返します。
return new JobHandle();
}
}
OnPerformCulling を使用して描画コマンドを作成する前に、描画したいメッシュと使用したいマテリアルをすべて BatchRendererGroup オブジェクトに提供する必要があります。詳細は次のトピック メッシュとマテリアルの登録 を参照してください。