# ComputeShader

> Compute Shader asset.

## Definition

* **Type:** Class
* **Namespace:** [UnityEngine](/engine/6000.7/script-reference/unityengine.md)
* **Assembly:** UnityEngine.CoreModule
* **Inherits from:** [Object](/engine/6000.7/script-reference/unityengine/object.md)

```csharp
public sealed class ComputeShader : Object
```

## Remarks

Compute shaders are programs that run on the GPU outside of the normal rendering pipeline. They correspond to compute shader assets in the project (.compute files).

Compute shader support can be queried runtime using [SystemInfo.supportsComputeShaders](/engine/6000.7/script-reference/unityengine/systeminfo/supportscomputeshaders.md). See [Compute Shaders](/engine/6000.7/manual/materials-and-shaders/shaders/writing-custom/class-compute-shader.md) overview for more info about platforms supporting compute shaders.

Additional Resources: [ComputeBuffer](/engine/6000.7/script-reference/unityengine/computebuffer.md) class, [Compute Shaders](/engine/6000.7/manual/materials-and-shaders/shaders/writing-custom/class-compute-shader.md) overview.

## Properties

| Property                                                                                        | Description                                                                                                |
| ----------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
| [enabledKeywords](/engine/6000.7/script-reference/unityengine/computeshader/enabledkeywords.md) | An array containing the local shader keywords that are currently enabled for this compute shader.          |
| [keywordSpace](/engine/6000.7/script-reference/unityengine/computeshader/keywordspace.md)       | The local keyword space of this compute shader.                                                            |
| [shaderKeywords](/engine/6000.7/script-reference/unityengine/computeshader/shaderkeywords.md)   | An array containing names of the local shader keywords that are currently enabled for this compute shader. |

## Methods

| Method                                                                                                                                | Description                                                                                                                                                                                                               |
| ------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [DisableKeyword](/engine/6000.7/script-reference/unityengine/computeshader/disablekeyword.md)                                         | Disables a local shader keyword for this compute shader.                                                                                                                                                                  |
| [Dispatch](/engine/6000.7/script-reference/unityengine/computeshader/dispatch.md)                                                     | Execute a compute shader.                                                                                                                                                                                                 |
| [DispatchIndirect](/engine/6000.7/script-reference/unityengine/computeshader/dispatchindirect.md)                                     | Execute a compute shader.                                                                                                                                                                                                 |
| [EnableKeyword](/engine/6000.7/script-reference/unityengine/computeshader/enablekeyword.md)                                           | Enables a local shader keyword for this compute shader.                                                                                                                                                                   |
| [FindKernel](/engine/6000.7/script-reference/unityengine/computeshader/findkernel.md)                                                 | Find [ComputeShader](/engine/6000.7/script-reference/unityengine/computeshader.md) kernel index.                                                                                                                          |
| [GetKernelThreadGroupSizes](/engine/6000.7/script-reference/unityengine/computeshader/getkernelthreadgroupsizes.md)                   | Get kernel thread group sizes.                                                                                                                                                                                            |
| [HasKernel](/engine/6000.7/script-reference/unityengine/computeshader/haskernel.md)                                                   | Checks whether a shader contains a given kernel.                                                                                                                                                                          |
| [IsKeywordEnabled](/engine/6000.7/script-reference/unityengine/computeshader/iskeywordenabled.md)                                     | Checks whether a local shader keyword is enabled for this compute shader.                                                                                                                                                 |
| [IsSupported](/engine/6000.7/script-reference/unityengine/computeshader/issupported.md)                                               | Allows you to check whether the current end user device supports the features required to run the specified compute shader kernel.                                                                                        |
| [SetBool](/engine/6000.7/script-reference/unityengine/computeshader/setbool.md)                                                       | Set a bool parameter.                                                                                                                                                                                                     |
| [SetBuffer](/engine/6000.7/script-reference/unityengine/computeshader/setbuffer.md)                                                   | Sets an input or output compute buffer.                                                                                                                                                                                   |
| [SetConstantBuffer](/engine/6000.7/script-reference/unityengine/computeshader/setconstantbuffer.md)                                   | Sets a [ComputeBuffer](/engine/6000.7/script-reference/unityengine/computebuffer.md) or [GraphicsBuffer](/engine/6000.7/script-reference/unityengine/graphicsbuffer.md) as a named constant buffer for the ComputeShader. |
| [SetFloat](/engine/6000.7/script-reference/unityengine/computeshader/setfloat.md)                                                     | Set a float parameter.                                                                                                                                                                                                    |
| [SetFloats](/engine/6000.7/script-reference/unityengine/computeshader/setfloats.md)                                                   | Set multiple consecutive float parameters at once.                                                                                                                                                                        |
| [SetInt](/engine/6000.7/script-reference/unityengine/computeshader/setint.md)                                                         | Set an integer parameter.                                                                                                                                                                                                 |
| [SetInts](/engine/6000.7/script-reference/unityengine/computeshader/setints.md)                                                       | Set multiple consecutive integer parameters at once.                                                                                                                                                                      |
| [SetKeyword](/engine/6000.7/script-reference/unityengine/computeshader/setkeyword.md)                                                 | Sets the state of a local shader keyword for this compute shader.                                                                                                                                                         |
| [SetMatrix](/engine/6000.7/script-reference/unityengine/computeshader/setmatrix.md)                                                   | Set a Matrix parameter.                                                                                                                                                                                                   |
| [SetMatrixArray](/engine/6000.7/script-reference/unityengine/computeshader/setmatrixarray.md)                                         | Set a Matrix array parameter.                                                                                                                                                                                             |
| [SetRayTracingAccelerationStructure](/engine/6000.7/script-reference/unityengine/computeshader/setraytracingaccelerationstructure.md) | Sets a [RayTracingAccelerationStructure](/engine/6000.7/script-reference/unityengine/rendering/raytracingaccelerationstructure.md) to be used for Inline Ray Tracing (Ray Queries).                                       |
| [SetTexture](/engine/6000.7/script-reference/unityengine/computeshader/settexture.md)                                                 | Set a texture parameter.                                                                                                                                                                                                  |
| [SetTextureFromGlobal](/engine/6000.7/script-reference/unityengine/computeshader/settexturefromglobal.md)                             | Set a texture parameter from a global texture property.                                                                                                                                                                   |
| [SetVector](/engine/6000.7/script-reference/unityengine/computeshader/setvector.md)                                                   | Set a vector parameter.                                                                                                                                                                                                   |
| [SetVectorArray](/engine/6000.7/script-reference/unityengine/computeshader/setvectorarray.md)                                         | Set a vector array parameter.                                                                                                                                                                                             |

## Inheritance

**Inherited Members:**

* [Object.GetEntityId()](/engine/6000.7/script-reference/unityengine/object/getentityid.md)
* [Object.GetHashCode()](/engine/6000.7/script-reference/unityengine/object/gethashcode.md)
* [Object.InstantiateAsync\<T>(T)](/engine/6000.7/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, Transform)](/engine/6000.7/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, Vector3, Quaternion)](/engine/6000.7/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, Transform, Vector3, Quaternion)](/engine/6000.7/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, int)](/engine/6000.7/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, int, Transform)](/engine/6000.7/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, int, Vector3, Quaternion)](/engine/6000.7/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, int, ReadOnlySpan\<Vector3>, ReadOnlySpan\<Quaternion>)](/engine/6000.7/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, int, Transform, Vector3, Quaternion)](/engine/6000.7/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, int, Transform, Vector3, Quaternion, CancellationToken)](/engine/6000.7/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, int, Transform, ReadOnlySpan\<Vector3>, ReadOnlySpan\<Quaternion>)](/engine/6000.7/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, int, Transform, ReadOnlySpan\<Vector3>, ReadOnlySpan\<Quaternion>, CancellationToken)](/engine/6000.7/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, InstantiateParameters, CancellationToken)](/engine/6000.7/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, int, InstantiateParameters, CancellationToken)](/engine/6000.7/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, Vector3, Quaternion, InstantiateParameters, CancellationToken)](/engine/6000.7/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, int, Vector3, Quaternion, InstantiateParameters, CancellationToken)](/engine/6000.7/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, int, ReadOnlySpan\<Vector3>, ReadOnlySpan\<Quaternion>, InstantiateParameters, CancellationToken)](/engine/6000.7/script-reference/unityengine/object/instantiateasync.md)
* [Object.Instantiate(Object, Vector3, Quaternion)](/engine/6000.7/script-reference/unityengine/object/instantiate.md#instantiate\(object-vector3-quaternion\))
* [Object.Instantiate(Object, Vector3, Quaternion, Transform)](/engine/6000.7/script-reference/unityengine/object/instantiate.md#instantiate\(object-vector3-quaternion-transform\))
* [Object.Instantiate(Object)](/engine/6000.7/script-reference/unityengine/object/instantiate.md#instantiate\(object\))
* [Object.Instantiate(Object, Scene)](/engine/6000.7/script-reference/unityengine/object/instantiate.md#instantiate\(object-scene\))
* [Object.Instantiate\<T>(T, InstantiateParameters)](/engine/6000.7/script-reference/unityengine/object/instantiate.md)
* [Object.Instantiate\<T>(T, Vector3, Quaternion, InstantiateParameters)](/engine/6000.7/script-reference/unityengine/object/instantiate.md)
* [Object.Instantiate(Object, Transform)](/engine/6000.7/script-reference/unityengine/object/instantiate.md#instantiate\(object-transform\))
* [Object.Instantiate(Object, Transform, bool)](/engine/6000.7/script-reference/unityengine/object/instantiate.md#instantiate\(object-transform-bool\))
* [Object.Instantiate\<T>(T)](/engine/6000.7/script-reference/unityengine/object/instantiate.md)
* [Object.Instantiate\<T>(T, Vector3, Quaternion)](/engine/6000.7/script-reference/unityengine/object/instantiate.md)
* [Object.Instantiate\<T>(T, Vector3, Quaternion, Transform)](/engine/6000.7/script-reference/unityengine/object/instantiate.md)
* [Object.Instantiate\<T>(T, Transform)](/engine/6000.7/script-reference/unityengine/object/instantiate.md)
* [Object.Instantiate\<T>(T, Transform, bool)](/engine/6000.7/script-reference/unityengine/object/instantiate.md)
* [Object.Destroy(Object, float)](/engine/6000.7/script-reference/unityengine/object/destroy.md)
* [Object.DestroyImmediate(Object, bool)](/engine/6000.7/script-reference/unityengine/object/destroyimmediate.md)
* [Object.FindObjectsByType(Type)](/engine/6000.7/script-reference/unityengine/object/findobjectsbytype.md#findobjectsbytype\(type\))
* [Object.FindObjectsByType(Type, FindObjectsInactive)](/engine/6000.7/script-reference/unityengine/object/findobjectsbytype.md#findobjectsbytype\(type-findobjectsinactive\))
* [Object.DontDestroyOnLoad(Object)](/engine/6000.7/script-reference/unityengine/object/dontdestroyonload.md)
* [Object.FindAnyObjectByType\<T>()](/engine/6000.7/script-reference/unityengine/object/findanyobjectbytype.md#findanyobjectbytypet\(\))
* [Object.FindAnyObjectByType\<T>(FindObjectsInactive)](/engine/6000.7/script-reference/unityengine/object/findanyobjectbytype.md#findanyobjectbytypet\(findobjectsinactive\))
* [Object.FindObjectsByType\<T>()](/engine/6000.7/script-reference/unityengine/object/findobjectsbytype.md#findobjectsbytypet\(\))
* [Object.FindObjectsByType\<T>(FindObjectsInactive)](/engine/6000.7/script-reference/unityengine/object/findobjectsbytype.md#findobjectsbytypet\(findobjectsinactive\))
* [Object.FindAnyObjectByType(Type)](/engine/6000.7/script-reference/unityengine/object/findanyobjectbytype.md#findanyobjectbytype\(type\))
* [Object.FindAnyObjectByType(Type, FindObjectsInactive)](/engine/6000.7/script-reference/unityengine/object/findanyobjectbytype.md#findanyobjectbytype\(type-findobjectsinactive\))
* [Object.ToString()](/engine/6000.7/script-reference/unityengine/object/tostring.md)
* [Object.name](/engine/6000.7/script-reference/unityengine/object/name.md)
* [Object.hideFlags](/engine/6000.7/script-reference/unityengine/object/hideflags.md)

### Operators

| Operator                                                                           | Description                                                             |
| ---------------------------------------------------------------------------------- | ----------------------------------------------------------------------- |
| [operator ==](/engine/6000.7/script-reference/unityengine/object/op-equality.md)   | Compares two object references to see if they refer to the same object. |
| [bool](/engine/6000.7/script-reference/unityengine/object/op-implicit.md)          | Determines whether the object exists.                                   |
| [operator !=](/engine/6000.7/script-reference/unityengine/object/op-inequality.md) | Compares if two objects refer to a different object.                    |
