# enableGPUInstancing

> Enables GPU Instancing on platforms that support it.

## Definition

* **Type:** Property
* **Namespace:** [UnityEngine](/engine/6000.0/script-reference/unityengine.md)
* **Assembly:** UnityEngine.ParticleSystemModule

```csharp
public bool enableGPUInstancing { get; set; }
```

### Remarks

To use GPU Instancing to render a Particle System, the particle must use a Shader that contains a Procedural Instancing pass (that is, it contains the `#pragma instancing_options procedural` directive).

### Examples

```csharp
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour
{
    private ParticleSystem ps;
    private ParticleSystemRenderer psr;
    private bool enableGPUInstancing = true;

    void Start()
    {
        ps = GetComponent<ParticleSystem>();
        psr = GetComponent<ParticleSystemRenderer>();

        psr.renderMode = ParticleSystemRenderMode.Mesh;
        psr.SetMeshes(new Mesh[] { Resources.GetBuiltinResource<Mesh>("Capsule.fbx"), Resources.GetBuiltinResource<Mesh>("Cube.fbx"), Resources.GetBuiltinResource<Mesh>("Sphere.fbx") });

        psr.sharedMaterial = new Material(Shader.Find("Particles/Standard Surface"));
    }

    void Update()
    {
        psr.enableGPUInstancing = enableGPUInstancing;
    }

    void OnGUI()
    {
        enableGPUInstancing = GUI.Toggle(new Rect(25, 45, 200, 30), enableGPUInstancing, "Enabled");
    }
}
```
