Class CustomPassVolume
Unity Monobehavior that manages the execution of custom passes. It provides
Implements
Inherited Members
Namespace: UnityEngine.Rendering.HighDefinition
Assembly: Unity.RenderPipelines.HighDefinition.Runtime.dll
Syntax
[ExecuteAlways]
public class CustomPassVolume : MonoBehaviour, IVolume
Fields
customPasses
List of custom passes to execute
Declaration
[SerializeReference]
public List<CustomPass> customPasses
Field Value
Type | Description |
---|---|
List<CustomPass> |
fadeRadius
Distance where the volume start to be rendered, the fadeValue field in C# will be updated to the normalized blend factor for your custom C# passes In the fullscreen shader pass and DrawRenderers shaders you can access the _FadeValue
Declaration
[Min(0)]
public float fadeRadius
Field Value
Type | Description |
---|---|
float |
injectionPoint
Where the custom passes are going to be injected in HDRP
Declaration
public CustomPassInjectionPoint injectionPoint
Field Value
Type | Description |
---|---|
CustomPassInjectionPoint |
priority
The volume priority, used to determine the execution order when there is multiple volumes with the same injection point. Custom Pass Volume with a higher value is rendered first.
Declaration
public float priority
Field Value
Type | Description |
---|---|
float |
Properties
colliders
The colliders of the volume if isGlobal is false
Declaration
public List<Collider> colliders { get; }
Property Value
Type | Description |
---|---|
List<Collider> |
fadeValue
Fade value between 0 and 1. it represent how close you camera is from the collider of the custom pass. 0 when the camera is outside the volume + fade radius and 1 when it is inside the collider.
Declaration
public float fadeValue { get; }
Property Value
Type | Description |
---|---|
float | The fade value that should be applied to the custom pass effect |
isGlobal
Whether or not the volume is global. If true, the component will ignore all colliders attached to it
Declaration
public bool isGlobal { get; set; }
Property Value
Type | Description |
---|---|
bool |
targetCamera
Use this field to force the custom pass volume to be executed only for one camera.
Declaration
public Camera targetCamera { get; set; }
Property Value
Type | Description |
---|---|
Camera |
Methods
AddPassOfType(Type)
Add a pass of type passType in the active pass list
Declaration
public CustomPass AddPassOfType(Type passType)
Parameters
Type | Name | Description |
---|---|---|
Type | passType | The type of the CustomPass to create |
Returns
Type | Description |
---|---|
CustomPass | The new custom |
AddPassOfType<T>()
Add a pass of type passType in the active pass list
Declaration
public T AddPassOfType<T>() where T : CustomPass
Returns
Type | Description |
---|---|
T | The new custom |
Type Parameters
Name | Description |
---|---|
T | The type of the CustomPass to create |
GetActivePassVolume(CustomPassInjectionPoint)
Gets the currently active Custom Pass Volume for a given injection point. Note this function returns only the first active volume, not the others that will be executed.
Declaration
[Obsolete("In order to support multiple custom pass volume per injection points, please use GetActivePassVolumes.")]
public static CustomPassVolume GetActivePassVolume(CustomPassInjectionPoint injectionPoint)
Parameters
Type | Name | Description |
---|---|---|
CustomPassInjectionPoint | injectionPoint | The injection point to get the currently active Custom Pass Volume for. |
Returns
Type | Description |
---|---|
CustomPassVolume | Returns the Custom Pass Volume instance associated with the injection point. |
GetActivePassVolumes(CustomPassInjectionPoint, List<CustomPassVolume>)
Gets the currently active Custom Pass Volume for a given injection point.
Declaration
public static void GetActivePassVolumes(CustomPassInjectionPoint injectionPoint, List<CustomPassVolume> volumes)
Parameters
Type | Name | Description |
---|---|---|
CustomPassInjectionPoint | injectionPoint | The injection point to get the currently active Custom Pass Volume for. |
List<CustomPassVolume> | volumes | The list of custom pass volumes to popuplate with the active volumes. |
GetGlobalCustomPasses(CustomPassInjectionPoint)
Gets all the custom passes registered at a specific injection point. This includes both enabled and disabled custom passes.
Declaration
public static List<CustomPassVolume.GlobalCustomPass> GetGlobalCustomPasses(CustomPassInjectionPoint injectionPoint)
Parameters
Type | Name | Description |
---|---|---|
CustomPassInjectionPoint | injectionPoint | The injection point used to filer the resulting custom pass list. |
Returns
Type | Description |
---|---|
List<CustomPassVolume.GlobalCustomPass> | The list of all the global custom passes in the injection point provided in parameter. If no custom pass were registered for the injection point, an empty list is returned. |
RegisterGlobalCustomPass(CustomPassInjectionPoint, CustomPass, float)
Register a custom pass instance at a given injection point. This custom pass will be executed by every camera with custom pass enabled in their frame settings.
Declaration
public static void RegisterGlobalCustomPass(CustomPassInjectionPoint injectionPoint, CustomPass customPassInstance, float priority = 0)
Parameters
Type | Name | Description |
---|---|---|
CustomPassInjectionPoint | injectionPoint | The injection point where the custom pass will be executed. |
CustomPass | customPassInstance | The instance of the custom pass to execute. The same custom pass instance can be registered multiple times. |
float | priority | Define the execution order of the custom pass. Custom passes are executed from high to low priority. |
RegisterUniqueGlobalCustomPass(CustomPassInjectionPoint, CustomPass, float)
Similar to the RegisterGlobalCustomPass with a protection ensuring that only one custom pass type is existing at a certain injection point. The same custom pass type can still be registered to multiple injection point as long as there is only one of this type per injection point.
Declaration
public static bool RegisterUniqueGlobalCustomPass(CustomPassInjectionPoint injectionPoint, CustomPass customPassInstance, float priority = 0)
Parameters
Type | Name | Description |
---|---|---|
CustomPassInjectionPoint | injectionPoint | The injection point where the custom pass will be executed. |
CustomPass | customPassInstance | The instance of the custom pass to execute. The type of the custom pass will also be used to check if there is already a custom pass of this type registered. |
float | priority | Define the execution order of the custom pass. Custom passes are executed from high to low priority. |
Returns
Type | Description |
---|---|
bool |
UnregisterAllGlobalCustomPasses()
Unregister all global custom passes registered by any system. This function unregister both active and inactive custom passes.
Declaration
public static bool UnregisterAllGlobalCustomPasses()
Returns
Type | Description |
---|---|
bool | True if at least one custom pass was removed. False otherwise. |
UnregisterAllGlobalCustomPasses(CustomPassInjectionPoint)
Unregister all global custom passes at a specific injection point. This function unregister both active and inactive custom passes.
Declaration
public static bool UnregisterAllGlobalCustomPasses(CustomPassInjectionPoint injectionPoint)
Parameters
Type | Name | Description |
---|---|---|
CustomPassInjectionPoint | injectionPoint | The injection point where you want all the custom passes to be removed. |
Returns
Type | Description |
---|---|
bool | True if at least one custom pass was removed. False otherwise. |
UnregisterGlobalCustomPass(CustomPass)
Remove a custom from the execution lists.
Declaration
public static bool UnregisterGlobalCustomPass(CustomPass customPassInstance)
Parameters
Type | Name | Description |
---|---|---|
CustomPass | customPassInstance | The custom pass instance to remove. If the custom pass instance exists at multiple injection points, they will all be removed. |
Returns
Type | Description |
---|---|
bool | True if one or more custom passes were removed. False otherwise. |
UnregisterGlobalCustomPass(CustomPassInjectionPoint, CustomPass)
Unregister a custom from the injection point execution list. If the same custom pass instance is registered multiple times, they will all be removed.
Declaration
public static bool UnregisterGlobalCustomPass(CustomPassInjectionPoint injectionPoint, CustomPass customPassInstance)
Parameters
Type | Name | Description |
---|---|---|
CustomPassInjectionPoint | injectionPoint | Selects from which injection point the custom pass instance will be removed |
CustomPass | customPassInstance | The custom pass instance to unregister. |
Returns
Type | Description |
---|---|
bool | True if one or more custom passes were removed. False otherwise. |