# ShaderStageToFlags(ShaderStage)

> Converts a ShaderStage value into a ShaderStageFlags value.

## Definition

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

```csharp
public static ShaderStageFlags ShaderStageToFlags(ShaderStage stage)
```

### Parameters

**** (\[ShaderStage]\(/engine/6000.5/script-reference/unityengine/shaders/shaderstage)): The stage to convert into flags.

### Returns

| Type                                                                                        | Description                                                                                                                                          |
| ------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| [ShaderStageFlags](/engine/6000.5/script-reference/unityengine/shaders/shaderstageflags.md) | The value from [ShaderStageFlags](/engine/6000.5/script-reference/unityengine/shaders/shaderstageflags.md) enum that corresponds to the given stage. |

### Remarks

Use this method to convert the given shader stage to use with an API that can work with multiple shader stages simultaneously.

### Examples

```csharp
using UnityEngine;
using UnityEngine.Shaders;

/*
    Attach this script to a GameObject and enter Play mode. "Shader stages: Basic, Tessellation" will be printed in the console.
*/

public class ShaderTypes : MonoBehaviour
{
    void Start()
    {
        ShaderStageFlags stages = (ShaderStageFlags.Graphics & (~ShaderStageFlags.Geometry));
        // Iterate over all possible shader stages and check if the only stages enabled are Vertex, Fragment, Hull, and Domain
        // Log a message if a stage is enabled or disabled incorrectly.
        for (ShaderStage stage = ShaderStage.FirstStage; stage < ShaderStage.Count; ++stage)
        {
            bool shouldBeEnabled = stage < ShaderStage.GraphicsStageCount && stage != ShaderStage.Geometry;
            if (Utility.IsShaderStageEnabled(stages, stage) != shouldBeEnabled)
                Debug.Log("Unexpected stage " + stage + (shouldBeEnabled ? " not enabled" : " enabled"));
        }
        Debug.Log("Shader stages: " + stages);
    }
}
```
