# RenderPipelineGlobalSettings

> A ScriptableObject to associate with a RenderPipeline and store project-wide settings for that Pipeline.

## Definition

* **Type:** Class
* **Namespace:** [UnityEngine.Rendering](/engine/6000.0/script-reference/unityengine/rendering.md)
* **Assembly:** UnityEngine.CoreModule
* **Inherits from:** [ScriptableObject](/engine/6000.0/script-reference/unityengine/scriptableobject.md)
* **Implements:** [ISerializationCallbackReceiver](/engine/6000.0/script-reference/unityengine/iserializationcallbackreceiver.md)

```csharp
public abstract class RenderPipelineGlobalSettings : ScriptableObject, ISerializationCallbackReceiver
```

## Remarks

A single RenderPipelineGlobalSettings instance can be registered to the GraphicsSettings via [GraphicsSettings.RegisterRenderPipelineSettings](/engine/6000.0/script-reference/unityengine/rendering/graphicssettings/registerrenderpipelinesettings.md). We recommend to use this ScriptableObject to save RenderPipeline settings you would find in the GraphicsSettings.

## Examples

```csharp
using System;
using System.Collections.Generic;

using UnityEngine;
using UnityEngine.Rendering;

#if UNITY_EDITOR
using UnityEditor.Rendering;
#endif

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

public class ExampleRenderPipeline : RenderPipeline
{
    public virtual RenderPipelineGlobalSettings globalSettings => ExampleRPGlobalSettings.instance;

    protected override void Render(ScriptableRenderContext renderContext, Camera[] cameras)
    {
#if UNITY_EDITOR
	// On Editor we must make sure the Global Settings Asset is registered into the GraphicsSettings
	// Graphics Settings will make sure the asset is available on player builds
        	if (globalSettings == null)
	{
 	       var mySettings = ExampleRPGlobalSettings.Create();
 	       ExampleRPGlobalSettings.RegisterToGraphicsSettings(mySettings);
	}
#endif

        // Do something
    }
}

[SupportedOnRenderPipeline(typeof(ExampleRenderPipelineAsset))]
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;
        }
    }

    /*   Use this pattern if you want to enable your global settings to use IRenderPipelineGraphicsSettings

	[SerializeReference] private List<IRenderPipelineGraphicsSettings> m_SettingsList = new();
 	protected override List<IRenderPipelineGraphicsSettings> settingsList => m_Settings;

    */

#if UNITY_EDITOR
    public static void RegisterToGraphicsSettings(ExampleRPGlobalSettings newSettings)
    {
        EditorGraphicsSettings.SetRenderPipelineGlobalSettingsAsset<ExampleRenderPipeline>(newSettings as RenderPipelineGlobalSettings);
        cachedInstance = null;
    }

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

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

## Properties

| Property                                                                                                           | Description                                                                                                                                                                                                |
| ------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [settingsList](/engine/6000.0/script-reference/unityengine/rendering/renderpipelineglobalsettings/settingslist.md) | Exposes a List\\\<IRenderPipelineGraphicsSettings\\> that this [RenderPipelineGlobalSettings](/engine/6000.0/script-reference/unityengine/rendering/renderpipelineglobalsettings.md) instance is managing. |

## Methods

| Method                                                                                                                                                                     | Description                                                                                                                                                                                                                                                                                                                           |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Add](/engine/6000.0/script-reference/unityengine/rendering/renderpipelineglobalsettings/add.md)                                                                           | Adds a [IRenderPipelineGraphicsSettings](/engine/6000.0/script-reference/unityengine/rendering/irenderpipelinegraphicssettings.md) interface to this instance of the [RenderPipelineGlobalSettings](/engine/6000.0/script-reference/unityengine/rendering/renderpipelineglobalsettings.md) asset.                                     |
| [Contains](/engine/6000.0/script-reference/unityengine/rendering/renderpipelineglobalsettings/contains.md)                                                                 | If the given ISRPGraphicsSetting type is present in this [RenderPipelineGlobalSettings](/engine/6000.0/script-reference/unityengine/rendering/renderpipelineglobalsettings.md) instance.                                                                                                                                              |
| [GetSettingsImplementingInterface](/engine/6000.0/script-reference/unityengine/rendering/renderpipelineglobalsettings/getsettingsimplementinginterface.md)                 | Get all settings for the currently active pipeline that implement `TSettingsInterfaceType`.                                                                                                                                                                                                                                           |
| [Initialize](/engine/6000.0/script-reference/unityengine/rendering/renderpipelineglobalsettings/initialize.md)                                                             | Editor-only function that initializes the [RenderPipelineGlobalSettings](/engine/6000.0/script-reference/unityengine/rendering/renderpipelineglobalsettings.md).                                                                                                                                                                      |
| [Remove](/engine/6000.0/script-reference/unityengine/rendering/renderpipelineglobalsettings/remove.md)                                                                     | Removes a [IRenderPipelineGraphicsSettings](/engine/6000.0/script-reference/unityengine/rendering/irenderpipelinegraphicssettings.md) interface from this instance of the [RenderPipelineGlobalSettings](/engine/6000.0/script-reference/unityengine/rendering/renderpipelineglobalsettings.md) asset.                                |
| [TryGet](/engine/6000.0/script-reference/unityengine/rendering/renderpipelineglobalsettings/tryget.md)                                                                     | Looks for a [IRenderPipelineGraphicsSettings](/engine/6000.0/script-reference/unityengine/rendering/irenderpipelinegraphicssettings.md) interface in this instance of the [RenderPipelineGlobalSettings](/engine/6000.0/script-reference/unityengine/rendering/renderpipelineglobalsettings.md) asset and returns true if it's found. |
| [TryGetFirstSettingsImplementingInterface](/engine/6000.0/script-reference/unityengine/rendering/renderpipelineglobalsettings/trygetfirstsettingsimplementinginterface.md) | Try to get the first settings that implements `TSettingsInterfaceType`.                                                                                                                                                                                                                                                               |

## Inheritance

**Inherited Members:**

* [ScriptableObject.CreateInstance(string)](/engine/6000.0/script-reference/unityengine/scriptableobject/createinstance.md#createinstance\(string\))
* [ScriptableObject.CreateInstance(Type)](/engine/6000.0/script-reference/unityengine/scriptableobject/createinstance.md#createinstance\(type\))
* [ScriptableObject.CreateInstance\<T>()](/engine/6000.0/script-reference/unityengine/scriptableobject/createinstance.md)
* [Object.GetInstanceID()](/engine/6000.0/script-reference/unityengine/object/getinstanceid.md)
* [Object.GetHashCode()](/engine/6000.0/script-reference/unityengine/object/gethashcode.md)
* [Object.InstantiateAsync\<T>(T)](/engine/6000.0/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, Transform)](/engine/6000.0/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, Vector3, Quaternion)](/engine/6000.0/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, Transform, Vector3, Quaternion)](/engine/6000.0/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, int)](/engine/6000.0/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, int, Transform)](/engine/6000.0/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, int, Vector3, Quaternion)](/engine/6000.0/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, int, ReadOnlySpan\<Vector3>, ReadOnlySpan\<Quaternion>)](/engine/6000.0/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, int, Transform, Vector3, Quaternion)](/engine/6000.0/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, int, Transform, Vector3, Quaternion, CancellationToken)](/engine/6000.0/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, int, Transform, ReadOnlySpan\<Vector3>, ReadOnlySpan\<Quaternion>)](/engine/6000.0/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, int, Transform, ReadOnlySpan\<Vector3>, ReadOnlySpan\<Quaternion>, CancellationToken)](/engine/6000.0/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, InstantiateParameters, CancellationToken)](/engine/6000.0/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, int, InstantiateParameters, CancellationToken)](/engine/6000.0/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, Vector3, Quaternion, InstantiateParameters, CancellationToken)](/engine/6000.0/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, int, Vector3, Quaternion, InstantiateParameters, CancellationToken)](/engine/6000.0/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, int, ReadOnlySpan\<Vector3>, ReadOnlySpan\<Quaternion>, InstantiateParameters, CancellationToken)](/engine/6000.0/script-reference/unityengine/object/instantiateasync.md)
* [Object.Instantiate(Object, Vector3, Quaternion)](/engine/6000.0/script-reference/unityengine/object/instantiate.md#instantiate\(object-vector3-quaternion\))
* [Object.Instantiate(Object, Vector3, Quaternion, Transform)](/engine/6000.0/script-reference/unityengine/object/instantiate.md#instantiate\(object-vector3-quaternion-transform\))
* [Object.Instantiate(Object)](/engine/6000.0/script-reference/unityengine/object/instantiate.md#instantiate\(object\))
* [Object.Instantiate(Object, Scene)](/engine/6000.0/script-reference/unityengine/object/instantiate.md#instantiate\(object-scene\))
* [Object.Instantiate\<T>(T, InstantiateParameters)](/engine/6000.0/script-reference/unityengine/object/instantiate.md)
* [Object.Instantiate\<T>(T, Vector3, Quaternion, InstantiateParameters)](/engine/6000.0/script-reference/unityengine/object/instantiate.md)
* [Object.Instantiate(Object, Transform)](/engine/6000.0/script-reference/unityengine/object/instantiate.md#instantiate\(object-transform\))
* [Object.Instantiate(Object, Transform, bool)](/engine/6000.0/script-reference/unityengine/object/instantiate.md#instantiate\(object-transform-bool\))
* [Object.Instantiate\<T>(T)](/engine/6000.0/script-reference/unityengine/object/instantiate.md)
* [Object.Instantiate\<T>(T, Vector3, Quaternion)](/engine/6000.0/script-reference/unityengine/object/instantiate.md)
* [Object.Instantiate\<T>(T, Vector3, Quaternion, Transform)](/engine/6000.0/script-reference/unityengine/object/instantiate.md)
* [Object.Instantiate\<T>(T, Transform)](/engine/6000.0/script-reference/unityengine/object/instantiate.md)
* [Object.Instantiate\<T>(T, Transform, bool)](/engine/6000.0/script-reference/unityengine/object/instantiate.md)
* [Object.Destroy(Object, float)](/engine/6000.0/script-reference/unityengine/object/destroy.md)
* [Object.DestroyImmediate(Object, bool)](/engine/6000.0/script-reference/unityengine/object/destroyimmediate.md)
* [Object.FindObjectsByType(Type, FindObjectsSortMode)](/engine/6000.0/script-reference/unityengine/object/findobjectsbytype.md#findobjectsbytype\(type-findobjectssortmode\))
* [Object.FindObjectsByType(Type, FindObjectsInactive, FindObjectsSortMode)](/engine/6000.0/script-reference/unityengine/object/findobjectsbytype.md#findobjectsbytype\(type-findobjectsinactive-findobjectssortmode\))
* [Object.DontDestroyOnLoad(Object)](/engine/6000.0/script-reference/unityengine/object/dontdestroyonload.md)
* [Object.FindObjectsByType\<T>(FindObjectsSortMode)](/engine/6000.0/script-reference/unityengine/object/findobjectsbytype.md#findobjectsbytypet\(findobjectssortmode\))
* [Object.FindObjectsByType\<T>(FindObjectsInactive, FindObjectsSortMode)](/engine/6000.0/script-reference/unityengine/object/findobjectsbytype.md#findobjectsbytypet\(findobjectsinactive-findobjectssortmode\))
* [Object.FindFirstObjectByType\<T>()](/engine/6000.0/script-reference/unityengine/object/findfirstobjectbytype.md#findfirstobjectbytypet\(\))
* [Object.FindAnyObjectByType\<T>()](/engine/6000.0/script-reference/unityengine/object/findanyobjectbytype.md#findanyobjectbytypet\(\))
* [Object.FindFirstObjectByType\<T>(FindObjectsInactive)](/engine/6000.0/script-reference/unityengine/object/findfirstobjectbytype.md#findfirstobjectbytypet\(findobjectsinactive\))
* [Object.FindAnyObjectByType\<T>(FindObjectsInactive)](/engine/6000.0/script-reference/unityengine/object/findanyobjectbytype.md#findanyobjectbytypet\(findobjectsinactive\))
* [Object.FindFirstObjectByType(Type)](/engine/6000.0/script-reference/unityengine/object/findfirstobjectbytype.md#findfirstobjectbytype\(type\))
* [Object.FindAnyObjectByType(Type)](/engine/6000.0/script-reference/unityengine/object/findanyobjectbytype.md#findanyobjectbytype\(type\))
* [Object.FindFirstObjectByType(Type, FindObjectsInactive)](/engine/6000.0/script-reference/unityengine/object/findfirstobjectbytype.md#findfirstobjectbytype\(type-findobjectsinactive\))
* [Object.FindAnyObjectByType(Type, FindObjectsInactive)](/engine/6000.0/script-reference/unityengine/object/findanyobjectbytype.md#findanyobjectbytype\(type-findobjectsinactive\))
* [Object.ToString()](/engine/6000.0/script-reference/unityengine/object/tostring.md)
* [Object.name](/engine/6000.0/script-reference/unityengine/object/name.md)
* [Object.hideFlags](/engine/6000.0/script-reference/unityengine/object/hideflags.md)

### Operators

| Operator                                                                           | Description                                                             |
| ---------------------------------------------------------------------------------- | ----------------------------------------------------------------------- |
| [operator ==](/engine/6000.0/script-reference/unityengine/object/op-equality.md)   | Compares two object references to see if they refer to the same object. |
| [bool](/engine/6000.0/script-reference/unityengine/object/op-implicit.md)          | Determines whether the object exists.                                   |
| [operator !=](/engine/6000.0/script-reference/unityengine/object/op-inequality.md) | Compares if two objects refer to a different object.                    |
