# RegisterRenderPipelineSettings

> Register a RenderPipelineGlobalSettings instance for a given RenderPipeline. A RenderPipeline can have only one registered RenderPipelineGlobalSettings instance.

## Definition

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

## RegisterRenderPipelineSettings(Type, RenderPipelineGlobalSettings)

Register a [RenderPipelineGlobalSettings](/engine/6000.5/script-reference/unityengine/rendering/renderpipelineglobalsettings.md) instance for a given [RenderPipeline](/engine/6000.5/script-reference/unityengine/rendering/renderpipeline.md). A [RenderPipeline](/engine/6000.5/script-reference/unityengine/rendering/renderpipeline.md) can have only one registered [RenderPipelineGlobalSettings](/engine/6000.5/script-reference/unityengine/rendering/renderpipelineglobalsettings.md) instance.

> **Warning:**
>
> **Deprecated.** Please use EditorGraphicsSettings.SetRenderPipelineGlobalSettingsAsset(renderPipelineType, settings). #from(23.2)

```csharp
public static void RegisterRenderPipelineSettings(Type renderPipelineType, RenderPipelineGlobalSettings settings)
```

### Parameters

**** (\[Type]\(https\://learn.microsoft.com/dotnet/api/system.type)): The type of [RenderPipeline](/engine/6000.5/script-reference/unityengine/rendering/renderpipeline.md).**** (\[RenderPipelineGlobalSettings]\(/engine/6000.5/script-reference/unityengine/rendering/renderpipelineglobalsettings)): [RenderPipelineGlobalSettings](/engine/6000.5/script-reference/unityengine/rendering/renderpipelineglobalsettings.md) asset to register for a given [RenderPipeline](/engine/6000.5/script-reference/unityengine/rendering/renderpipeline.md). The method does nothing if the parameter is null.

### Remarks

When registering a [RenderPipelineGlobalSettings](/engine/6000.5/script-reference/unityengine/rendering/renderpipelineglobalsettings.md) asset for a given [RenderPipeline](/engine/6000.5/script-reference/unityengine/rendering/renderpipeline.md), if there is already a registered [RenderPipelineGlobalSettings](/engine/6000.5/script-reference/unityengine/rendering/renderpipelineglobalsettings.md) asset for that [RenderPipeline](/engine/6000.5/script-reference/unityengine/rendering/renderpipeline.md), the new one replaces it. The method does nothing if the settings parameter is null.

### Examples

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

public class ExampleRenderPipelineAsset : RenderPipelineAsset
{
    protected override RenderPipeline CreatePipeline()
    {
        return new ExampleRenderPipeline();
    }
}

public class ExampleRenderPipeline : RenderPipeline
{
    public ExampleRenderPipeline()
    {
        var mySettings = ExampleRPGlobalSettings.Create();
        ExampleRPGlobalSettings.RegisterToGraphicsSettings(mySettings);
    }

    protected override void Render(ScriptableRenderContext renderContext, Camera[] cameras)
    {
        // Do something
    }

    public virtual RenderPipelineGlobalSettings globalSettings
    {
        get { return ExampleRPGlobalSettings.instance; }
    }

    protected virtual void Dispose(bool disposing)
    {
        ExampleRPGlobalSettings.UnregisterToGraphicsSettings();
    }
}

public class ExampleRPGlobalSettings : RenderPipelineGlobalSettings
{
    private static ExampleRPGlobalSettings cachedInstance = null;
    public static ExampleRPGlobalSettings instance
    {
        get
        {
            if (cachedInstance == null)
                cachedInstance = GraphicsSettings.GetSettingsForRenderPipeline<ExampleRenderPipeline>() as ExampleRPGlobalSettings;
            return cachedInstance;
        }
    }

    public static void RegisterToGraphicsSettings(ExampleRPGlobalSettings newSettings)
    {
        GraphicsSettings.RegisterRenderPipelineSettings<ExampleRenderPipeline>(newSettings as RenderPipelineGlobalSettings);
        cachedInstance = null;
    }

    public static void UnregisterToGraphicsSettings()
    {
        GraphicsSettings.UnregisterRenderPipelineSettings<ExampleRenderPipeline>();
        cachedInstance = null;
    }

    static public ExampleRPGlobalSettings Create()
    {
        ExampleRPGlobalSettings assetCreated = ScriptableObject.CreateInstance<ExampleRPGlobalSettings>();
        return assetCreated;
    }
}
```

## RegisterRenderPipelineSettings\<T>(RenderPipelineGlobalSettings)

Register a [RenderPipelineGlobalSettings](/engine/6000.5/script-reference/unityengine/rendering/renderpipelineglobalsettings.md) instance for a given [RenderPipeline](/engine/6000.5/script-reference/unityengine/rendering/renderpipeline.md). A [RenderPipeline](/engine/6000.5/script-reference/unityengine/rendering/renderpipeline.md) can have only one registered [RenderPipelineGlobalSettings](/engine/6000.5/script-reference/unityengine/rendering/renderpipelineglobalsettings.md) instance.

> **Warning:**
>
> **Deprecated.** Please use EditorGraphicsSettings.SetRenderPipelineGlobalSettingsAsset\\\<TRenderPipelineType\\>(settings). #from(23.2)

```csharp
public static void RegisterRenderPipelineSettings<T>(RenderPipelineGlobalSettings settings) where T : RenderPipeline
```

### Parameters

**** (\[RenderPipelineGlobalSettings]\(/engine/6000.5/script-reference/unityengine/rendering/renderpipelineglobalsettings)): [RenderPipelineGlobalSettings](/engine/6000.5/script-reference/unityengine/rendering/renderpipelineglobalsettings.md) asset to register for a given [RenderPipeline](/engine/6000.5/script-reference/unityengine/rendering/renderpipeline.md). The method does nothing if the parameter is null.

### Remarks

When registering a [RenderPipelineGlobalSettings](/engine/6000.5/script-reference/unityengine/rendering/renderpipelineglobalsettings.md) asset for a given [RenderPipeline](/engine/6000.5/script-reference/unityengine/rendering/renderpipeline.md), if there is already a registered [RenderPipelineGlobalSettings](/engine/6000.5/script-reference/unityengine/rendering/renderpipelineglobalsettings.md) asset for that [RenderPipeline](/engine/6000.5/script-reference/unityengine/rendering/renderpipeline.md), the new one replaces it. The method does nothing if the settings parameter is null.

### Examples

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

public class ExampleRenderPipelineAsset : RenderPipelineAsset
{
    protected override RenderPipeline CreatePipeline()
    {
        return new ExampleRenderPipeline();
    }
}

public class ExampleRenderPipeline : RenderPipeline
{
    public ExampleRenderPipeline()
    {
        var mySettings = ExampleRPGlobalSettings.Create();
        ExampleRPGlobalSettings.RegisterToGraphicsSettings(mySettings);
    }

    protected override void Render(ScriptableRenderContext renderContext, Camera[] cameras)
    {
        // Do something
    }

    public virtual RenderPipelineGlobalSettings globalSettings
    {
        get { return ExampleRPGlobalSettings.instance; }
    }

    protected virtual void Dispose(bool disposing)
    {
        ExampleRPGlobalSettings.UnregisterToGraphicsSettings();
    }
}

public class ExampleRPGlobalSettings : RenderPipelineGlobalSettings
{
    private static ExampleRPGlobalSettings cachedInstance = null;
    public static ExampleRPGlobalSettings instance
    {
        get
        {
            if (cachedInstance == null)
                cachedInstance = GraphicsSettings.GetSettingsForRenderPipeline<ExampleRenderPipeline>() as ExampleRPGlobalSettings;
            return cachedInstance;
        }
    }

    public static void RegisterToGraphicsSettings(ExampleRPGlobalSettings newSettings)
    {
        GraphicsSettings.RegisterRenderPipelineSettings<ExampleRenderPipeline>(newSettings as RenderPipelineGlobalSettings);
        cachedInstance = null;
    }

    public static void UnregisterToGraphicsSettings()
    {
        GraphicsSettings.UnregisterRenderPipelineSettings<ExampleRenderPipeline>();
        cachedInstance = null;
    }

    static public ExampleRPGlobalSettings Create()
    {
        ExampleRPGlobalSettings assetCreated = ScriptableObject.CreateInstance<ExampleRPGlobalSettings>();
        return assetCreated;
    }
}
```
