# ReflectedParameter.Direction

> The read- and writability flags for a function parameter.

## Definition

* **Type:** Enum
* **Namespace:** [UnityEditor.ShaderApiReflection](/engine/6000.5/script-reference/unityeditor/shaderapireflection.md)
* **Assembly:** UnityEditor.CoreModule

```csharp
public enum ReflectedParameter.Direction
```

## Remarks

Indicates whether a [ReflectedParameter](/engine/6000.5/script-reference/unityeditor/shaderapireflection/reflectedparameter.md) may be read from, written to, or both from within a function.

Additional Resources: [ReflectedParameter.DirectionFlags](/engine/6000.5/script-reference/unityeditor/shaderapireflection/reflectedparameter/directionflags.md).

## Examples

```csharp
using UnityEditor;
using UnityEditor.ShaderApiReflection;
using UnityEngine;

// This example adds a menu item which prints information from reflected functions in any shader include
// assets selected in the project view.
public class ReflectedFunctionPrinter
{
    [MenuItem("Examples/ReflectedFunctionPrinter")]
    static void PrintReflectedFunctions()
    {
        // Visit each selected object
        foreach (Object selectedObject in Selection.objects)
        {
            // Check if the object is a ShaderInclude
            if (selectedObject is ShaderInclude includeObject)
            {
                Debug.Log("Found shader include at " + AssetDatabase.GetAssetPath(includeObject));

                // Visit each exposed function in the include
                foreach (ReflectedFunction func in includeObject.Reflection.ReflectedFunctions)
                    PrintFunction(func);
            }
        }
    }

    static void PrintFunction(ReflectedFunction func)
    {
        // Print the function's signature
        Debug.Log($"Found function with signature: {func.GetSignature()}");

        // Print the function's summary, if it exists
        if (func.Hints.TryGetValue("summary", out string funcSummary))
            Debug.Log($"{func.Name}'s doc comment: {funcSummary}");

        // Print the function's body text
        Debug.Log($"{func.Name}'s body:\n{func.GetNormalizedBodyText()}");

        // Visit each parameter
        foreach (ReflectedParameter param in func.Parameters)
        {
            // Print the parameter
            Debug.Log($"{func.Name} has parameter: {param.ToString()}");

            // Print the parameter's summary
            if (param.Hints.TryGetValue("summary", out string paramSummary))
                Debug.Log($"{param.Name}'s doc comment: {paramSummary}");
        }
    }
}
```

## Fields

| Value                                                                                                          | Description                                                   |
| -------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- |
| [In](/engine/6000.5/script-reference/unityeditor/shaderapireflection/reflectedparameter/direction/in.md)       | Indicates the parameter is an input to a function.            |
| [InOut](/engine/6000.5/script-reference/unityeditor/shaderapireflection/reflectedparameter/direction/inout.md) | Indicates the parameter is an input and output to a function. |
| [Out](/engine/6000.5/script-reference/unityeditor/shaderapireflection/reflectedparameter/direction/out.md)     | Indicates the parameter is an output from a function.         |
