Version: Unity 6.0 (6000.0)
言語 : 日本語
ビルトインレンダーパイプラインで GPU インスタンシングをサポートするシェーダーの例
ビルトインレンダーパイプラインで Unity による GPU インスタンシングシェーダーのストリッピングを防止する

ビルトインレンダーパイプラインでランタイムにインスタンスごとのデータを変更する例

以下の例は、MaterialPropertyBlock オブジェクトを使用して、ランタイムにゲームオブジェクトのグループのインスタンスごとのデータを設定する方法を示しています。上記のシェーダー例の _Color プロパティをランダムな色に設定します。

重要: MaterialPropertyBlock により、SRP バッチャーの互換性が損なわれます。詳細については、GPU インスタンシング: 要件と互換性を参照してください。

using UnityEngine;

public class MaterialPropertyBlockExample : MonoBehaviour
{
public GameObject[] objects;

void Start()
{
MaterialPropertyBlock props = new MaterialPropertyBlock();
MeshRenderer renderer;

foreach (GameObject obj in objects)
{
float r = Random.Range(0.0f, 1.0f);
float g = Random.Range(0.0f, 1.0f);
float b = Random.Range(0.0f, 1.0f);
props.SetColor("_Color", new Color(r, g, b));

renderer = obj.GetComponent<MeshRenderer>();
renderer.SetPropertyBlock(props);
}
}
}
ビルトインレンダーパイプラインで GPU インスタンシングをサポートするシェーダーの例
ビルトインレンダーパイプラインで Unity による GPU インスタンシングシェーダーのストリッピングを防止する