| Parameter | Description |
|---|---|
| stage | The stage to convert into flags. |
ShaderStageFlags The value from ShaderStageFlags enum that corresponds to the given stage.
Converts a ShaderStage value into a ShaderStageFlags value.
Use this method to convert the given shader stage to use with an API that can work with multiple shader stages simultaneously.
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);
}
}