# DisableKeyword

> Disables a global shader keyword.

## Definition

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

## DisableKeyword(string)

Disables a global shader keyword.

```csharp
public static void DisableKeyword(string keyword)
```

### Parameters

**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): The [GlobalKeyword](/engine/6000.7/script-reference/unityengine/rendering/globalkeyword.md) to disable.

### Remarks

Shader keywords determine which shader variants Unity uses. For information on working with [local shader keywords](/engine/6000.7/script-reference/unityengine/rendering/localkeyword.md) and [global shader keywords](/engine/6000.7/script-reference/unityengine/rendering/globalkeyword.md) and how they interact, see [Using shader keywords with C# scripts](/engine/6000.7/manual/materials-and-shaders/shaders/writing-custom/shader-writing/sl-multiple-program-variants/shader-keywords-scripts.md).

If you pass a string and a [GlobalKeyword](/engine/6000.7/script-reference/unityengine/rendering/globalkeyword.md) with the given name does not exist, this function has no effect.

The version of this function that takes a string as a parameter is slower than the version that takes a [GlobalKeyword](/engine/6000.7/script-reference/unityengine/rendering/globalkeyword.md). If you call this function more than once, it is best practice to create a [GlobalKeyword](/engine/6000.7/script-reference/unityengine/rendering/globalkeyword.md) struct, cache it, and use that.

The following example creates a `GlobalKeyword` struct with the name `EXAMPLE_FEATURE_ON`, and caches it. It provides functions to enable and disable it.

```csharp
using UnityEngine;
using UnityEngine.Rendering;

public class GlobalKeywordExample : MonoBehaviour
{
    private GlobalKeyword exampleFeatureKeyword;

    private void Start()
    {
        var exampleFeatureKeyword = GlobalKeyword.Create("EXAMPLE_FEATURE_ON");
    }

    public void EnableExampleFeature()
    {
        Shader.EnableKeyword(exampleFeatureKeyword);
    }

    public void DisableExampleFeature()
    {
        Shader.DisableKeyword(exampleFeatureKeyword);
    }
}
```

Additional Resources: Shader variants and keywords, [LocalKeyword](/engine/6000.7/script-reference/unityengine/rendering/localkeyword.md), [GlobalKeyword](/engine/6000.7/script-reference/unityengine/rendering/globalkeyword.md), [Shader.EnableKeyword](/engine/6000.7/script-reference/unityengine/shader/enablekeyword.md), [Shader.SetKeyword](/engine/6000.7/script-reference/unityengine/shader/setkeyword.md), [Shader.IsKeywordEnabled](/engine/6000.7/script-reference/unityengine/shader/iskeywordenabled.md), [Shader.enabledGlobalKeywords](/engine/6000.7/script-reference/unityengine/shader/enabledglobalkeywords.md), [Shader.globalKeywords](/engine/6000.7/script-reference/unityengine/shader/globalkeywords.md).

## DisableKeyword(GlobalKeyword)

Disables a global shader keyword.

```csharp
public static void DisableKeyword(in GlobalKeyword keyword)
```

### Parameters

**** (\[GlobalKeyword]\(/engine/6000.7/script-reference/unityengine/rendering/globalkeyword)): The [GlobalKeyword](/engine/6000.7/script-reference/unityengine/rendering/globalkeyword.md) to disable.

### Remarks

Shader keywords determine which shader variants Unity uses. For information on working with [local shader keywords](/engine/6000.7/script-reference/unityengine/rendering/localkeyword.md) and [global shader keywords](/engine/6000.7/script-reference/unityengine/rendering/globalkeyword.md) and how they interact, see [Using shader keywords with C# scripts](/engine/6000.7/manual/materials-and-shaders/shaders/writing-custom/shader-writing/sl-multiple-program-variants/shader-keywords-scripts.md).

If you pass a string and a [GlobalKeyword](/engine/6000.7/script-reference/unityengine/rendering/globalkeyword.md) with the given name does not exist, this function has no effect.

The version of this function that takes a string as a parameter is slower than the version that takes a [GlobalKeyword](/engine/6000.7/script-reference/unityengine/rendering/globalkeyword.md). If you call this function more than once, it is best practice to create a [GlobalKeyword](/engine/6000.7/script-reference/unityengine/rendering/globalkeyword.md) struct, cache it, and use that.

The following example creates a `GlobalKeyword` struct with the name `EXAMPLE_FEATURE_ON`, and caches it. It provides functions to enable and disable it.

```csharp
using UnityEngine;
using UnityEngine.Rendering;

public class GlobalKeywordExample : MonoBehaviour
{
    private GlobalKeyword exampleFeatureKeyword;

    private void Start()
    {
        var exampleFeatureKeyword = GlobalKeyword.Create("EXAMPLE_FEATURE_ON");
    }

    public void EnableExampleFeature()
    {
        Shader.EnableKeyword(exampleFeatureKeyword);
    }

    public void DisableExampleFeature()
    {
        Shader.DisableKeyword(exampleFeatureKeyword);
    }
}
```

Additional Resources: Shader variants and keywords, [LocalKeyword](/engine/6000.7/script-reference/unityengine/rendering/localkeyword.md), [GlobalKeyword](/engine/6000.7/script-reference/unityengine/rendering/globalkeyword.md), [Shader.EnableKeyword](/engine/6000.7/script-reference/unityengine/shader/enablekeyword.md), [Shader.SetKeyword](/engine/6000.7/script-reference/unityengine/shader/setkeyword.md), [Shader.IsKeywordEnabled](/engine/6000.7/script-reference/unityengine/shader/iskeywordenabled.md), [Shader.enabledGlobalKeywords](/engine/6000.7/script-reference/unityengine/shader/enabledglobalkeywords.md), [Shader.globalKeywords](/engine/6000.7/script-reference/unityengine/shader/globalkeywords.md).
