# ShaderKeyword

> Represents an identifier for a specific code path in a shader.

## Definition

* **Type:** Struct
* **Namespace:** [UnityEngine.Rendering](/engine/6000.7/script-reference/unityengine/rendering.md)
* **Assembly:** UnityEngine.CoreModule

```csharp
public struct ShaderKeyword
```

## Remarks

Unity now provides the [LocalKeyword](/engine/6000.7/script-reference/unityengine/rendering/localkeyword.md) and [GlobalKeyword](/engine/6000.7/script-reference/unityengine/rendering/globalkeyword.md) APIs which are more performant than ShaderKeyword. It is best practice to use these APIs instead.

Additional Resources: [LocalKeyword](/engine/6000.7/script-reference/unityengine/rendering/localkeyword.md), [GlobalKeyword](/engine/6000.7/script-reference/unityengine/rendering/globalkeyword.md), [ShaderKeywordSet](/engine/6000.7/script-reference/unityengine/rendering/shaderkeywordset.md), [Shader.EnableKeyword](/engine/6000.7/script-reference/unityengine/shader/enablekeyword.md), Shader variants and keywords, [Declaring and using shader keywords in HLSL](/engine/6000.7/manual/materials-and-shaders/shaders/writing-custom/shader-writing/sl-multiple-program-variants.md).

## Constructors

| Constructor                                                                                                                                                                 | Description                                                                                                                                     |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| [ShaderKeyword(System.String)](/engine/6000.7/script-reference/unityengine/rendering/shaderkeyword/ctor.md#shaderkeyword\(string\))                                         | Initializes a new instance of the ShaderKeyword class from a shader global keyword name.                                                        |
| [ShaderKeyword(UnityEngine.ComputeShader,System.String)](/engine/6000.7/script-reference/unityengine/rendering/shaderkeyword/ctor.md#shaderkeyword\(computeshader-string\)) | Initializes a new instance of the ShaderKeyword class from a local shader keyword name, and the compute shader that defines that local keyword. |
| [ShaderKeyword(UnityEngine.Shader,System.String)](/engine/6000.7/script-reference/unityengine/rendering/shaderkeyword/ctor.md#shaderkeyword\(shader-string\))               | Initializes a new instance of the ShaderKeyword class from a local shader keyword name.                                                         |

## Properties

| Property                                                                              | Description                                 |
| ------------------------------------------------------------------------------------- | ------------------------------------------- |
| [index](/engine/6000.7/script-reference/unityengine/rendering/shaderkeyword/index.md) | The index of the shader keyword.            |
| [name](/engine/6000.7/script-reference/unityengine/rendering/shaderkeyword/name.md)   | The name of the shader keyword. (Read Only) |

## Methods

| Method                                                                                    | Description                                      |
| ----------------------------------------------------------------------------------------- | ------------------------------------------------ |
| [IsValid](/engine/6000.7/script-reference/unityengine/rendering/shaderkeyword/isvalid.md) | Checks whether the global shader keyword exists. |

## Static Methods

| Method                                                                                                              | Description                                                   |
| ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- |
| [GetGlobalKeywordType](/engine/6000.7/script-reference/unityengine/rendering/shaderkeyword/getglobalkeywordtype.md) | Returns the type of global keyword: built-in or user defined. |
| [IsKeywordLocal](/engine/6000.7/script-reference/unityengine/rendering/shaderkeyword/iskeywordlocal.md)             | Returns true if the keyword is local.                         |
