JiNanCementPlantForUnity/Assets/3RD/AmplifyShaderEditor/Examples/Official/SimpleGPUInstancing/SimpleGPUInstancingExample.cs

24 lines
825 B
C#

using UnityEngine;
public class SimpleGPUInstancingExample : MonoBehaviour
{
public Transform Prefab;
public Material InstancedMaterial;
void Awake()
{
#if UNITY_5_6_OR_NEWER
InstancedMaterial.enableInstancing = true;
#endif
float range = 4f;
for ( int i = 0; i < 1000; i++ )
{
Transform newInstance = Instantiate( Prefab, new Vector3( Random.Range( -range, range ), range + Random.Range( -range, range ), Random.Range( -range, range ) ), Quaternion.identity ) as Transform;
MaterialPropertyBlock matpropertyBlock = new MaterialPropertyBlock();
Color newColor = new Color( Random.Range( 0.0f, 1.0f ), Random.Range( 0.0f, 1.0f ), Random.Range( 0.0f, 1.0f ) );
matpropertyBlock.SetColor( "_Color", newColor );
newInstance.GetComponent<MeshRenderer>().SetPropertyBlock( matpropertyBlock );
}
}
}