# CopySource

> GraphicsBuffer can be used as a source for CopyBuffer.

## Definition

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

```csharp
CopySource = 4
```

### Remarks

The source buffer for [Graphics.CopyBuffer](/engine/6000.0/script-reference/unityengine/graphics/copybuffer.md) or [CommandBuffer.CopyBuffer](/engine/6000.0/script-reference/unityengine/rendering/commandbuffer/copybuffer.md) must have CopySource target set. This target is most often combined with other target flags.

```csharp
using UnityEngine;

public class ExampleScript : MonoBehaviour
{
    void Start()
    {
        // create a source index buffer and set data for it
        var src = new GraphicsBuffer(
            GraphicsBuffer.Target.Index | GraphicsBuffer.Target.CopySource,
            3, 2);
        src.SetData(new ushort[] {1, 10, 100});
        // create a destination index buffer and copy source into it
        var dst = new GraphicsBuffer(
            GraphicsBuffer.Target.Index | GraphicsBuffer.Target.CopyDestination,
            3, 2);
        Graphics.CopyBuffer(src, dst);

        // check the copied data
        var got = new ushort[3];
        dst.GetData(got);
        Debug.Log($"copied data: {got[0]}, {got[1]}, {got[2]}");

        // release the buffers
        src.Release();
        dst.Release();
    }
}
```

Additional Resources: [Graphics.CopyBuffer](/engine/6000.0/script-reference/unityengine/graphics/copybuffer.md), [CommandBuffer.CopyBuffer](/engine/6000.0/script-reference/unityengine/rendering/commandbuffer/copybuffer.md), [GraphicsBuffer.Target.CopyDestination](/engine/6000.0/script-reference/unityengine/graphicsbuffer/target/copydestination.md).
