To add a custom graphics settings group to a Scriptable Render Pipeline, implement the IRenderPipelineGraphicsSettings
interface.
Follow these steps:
-
Create a class that implements the
IRenderPipelineGraphicsSettings
interface, then add a[Serializable]
attribute. -
To set which render pipeline the setting applies to, add a
[SupportedOnRenderPipeline]
attribute and pass in aRenderPipelineAsset
type.Note: If you don't add a
[SupportedOnRenderPipeline]
attribute, the setting applies to any Scriptable Render Pipeline. However each Scriptable Render Pipeline stores its own value for the setting. -
Implement the
version
property. Unity doesn't currently use theversion
property, but you must implement it.
Unity adds the new settings group to the Edit > Project Settings > Graphics window.
For example, the following script adds a settings group called My Settings in the Graphics settings window of the Universal Render Pipeline (URP).
using System;
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
[Serializable]
[SupportedOnRenderPipeline(typeof(UniversalRenderPipelineAsset))]
// Create a new settings group by implementing the IRenderPipelineGraphicsSettings interface
public class MySettings : IRenderPipelineGraphicsSettings
{
// Add a private field for the version property
int internalVersion = 1;
// Implement the public version property
public int version => internalVersion;
}
The Edit > Project Settings > Graphics window with the new custom settings group from the example script.
To change where a settings group appears, use the [UnityEngine.Categorization.CategoryInfo]
attribute. For example, the following code gives the settings group the name My Settings and moves the group to the top of the graphics settings window.
[UnityEngine.Categorization.CategoryInfo(Name = "My Settings", Order = 0)]
public class MySettings : IRenderPipelineGraphicsSettings
{
...
}