# ScriptableCullingParameters

> Parameters that configure a culling operation in the Scriptable Render Pipeline.

## Definition

* **Type:** Struct
* **Namespace:** [UnityEngine.Rendering](/engine/6000.7/script-reference/unityengine/rendering.md)
* **Assembly:** UnityEngine.CoreModule
* **Implements:** [IEquatable\<ScriptableCullingParameters>](https://learn.microsoft.com/dotnet/api/system.iequatable-1)

```csharp
public struct ScriptableCullingParameters : IEquatable<ScriptableCullingParameters>
```

## Remarks

Obtain a ScriptableCullingParameters struct by calling [Camera.TryGetCullingParameters](/engine/6000.7/script-reference/unityengine/camera/trygetcullingparameters.md).

Note that you can obtain and view a ScriptableCullingParameters struct from a Camera in the Built-in Render Pipeline; however, changing the values has no effect.

The following Scriptable Render Pipeline code demonstrates how to obtain a ScriptableCullingParameters struct from a Camera using [Camera.TryGetCullingParameters](/engine/6000.7/script-reference/unityengine/camera/trygetcullingparameters.md), configure the struct, and then pass the struct to [ScriptableRenderContext.Cull](/engine/6000.7/script-reference/unityengine/rendering/scriptablerendercontext/cull.md) to obtain a [CullingResults](/engine/6000.7/script-reference/unityengine/rendering/cullingresults.md) struct. You can then use the [CullingResults](/engine/6000.7/script-reference/unityengine/rendering/cullingresults.md) struct in a call to [ScriptableRenderContext.DrawRenderers](/engine/6000.7/script-reference/unityengine/rendering/scriptablerendercontext/drawrenderers.md).

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

public class ExampleRenderPipelineInstance : RenderPipeline
{
    public ExampleRenderPipelineInstance()
    {
    }

    protected override void Render(ScriptableRenderContext context, Camera[] cameras)
    {
        // Get the culling parameters from the desired Camera
        if (cameras[0].TryGetCullingParameters(out var cullingParameters))
        {
            // Change culling parameters to configure the culling operation
            cullingParameters.cullingOptions &= ~CullingOptions.OcclusionCull;
            cullingParameters.isOrthographic = false;

            // Schedule the cull operation
            CullingResults cullingResults = context.Cull(ref cullingParameters);

            // Place code that schedules drawing operations using the <see cref="UnityEngine.Rendering.CullingResults"></see> struct here
            // See <see cref="UnityEngine.Rendering.ScriptableRenderContext.DrawRenderers"></see> for details and examples
            // …

            // Execute all of the scheduled operations, in order
            context.Submit();
        }
    }
}
```

Additional Resources: [Camera.TryGetCullingParameters](/engine/6000.7/script-reference/unityengine/camera/trygetcullingparameters.md), [ScriptableRenderContext.Cull](/engine/6000.7/script-reference/unityengine/rendering/scriptablerendercontext/cull.md), [CullingResults](/engine/6000.7/script-reference/unityengine/rendering/cullingresults.md), [ScriptableRenderContext.DrawRenderers](/engine/6000.7/script-reference/unityengine/rendering/scriptablerendercontext/drawrenderers.md).

## Static Fields

| Value                                                                                                                                     | Description                                             |
| ----------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- |
| [layerCount](/engine/6000.7/script-reference/unityengine/rendering/scriptablecullingparameters/layercount.md)                             | The amount of layers available.                         |
| [maximumCullingPlaneCount](/engine/6000.7/script-reference/unityengine/rendering/scriptablecullingparameters/maximumcullingplanecount.md) | Maximum amount of culling planes that can be specified. |

## Properties

| Property                                                                                                                                              | Description                                                                                                                                                                    |
| ----------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [accurateOcclusionThreshold](/engine/6000.7/script-reference/unityengine/rendering/scriptablecullingparameters/accurateocclusionthreshold.md)         | This parameter determines query distance for occlusion culling.                                                                                                                |
| [cameraProperties](/engine/6000.7/script-reference/unityengine/rendering/scriptablecullingparameters/cameraproperties.md)                             | Camera Properties used for culling.                                                                                                                                            |
| [conservativeEnclosingSphere](/engine/6000.7/script-reference/unityengine/rendering/scriptablecullingparameters/conservativeenclosingsphere.md)       | This property enables a conservative method for calculating the size and position of the minimal enclosing sphere around the frustum cascade corner points for shadow culling. |
| [cullingMask](/engine/6000.7/script-reference/unityengine/rendering/scriptablecullingparameters/cullingmask.md)                                       | The mask for the culling operation.                                                                                                                                            |
| [cullingMatrix](/engine/6000.7/script-reference/unityengine/rendering/scriptablecullingparameters/cullingmatrix.md)                                   | The matrix for the culling operation.                                                                                                                                          |
| [cullingOptions](/engine/6000.7/script-reference/unityengine/rendering/scriptablecullingparameters/cullingoptions.md)                                 | Flags to configure a culling operation in the Scriptable Render Pipeline.                                                                                                      |
| [cullingPlaneCount](/engine/6000.7/script-reference/unityengine/rendering/scriptablecullingparameters/cullingplanecount.md)                           | Number of culling planes to use.                                                                                                                                               |
| [isOrthographic](/engine/6000.7/script-reference/unityengine/rendering/scriptablecullingparameters/isorthographic.md)                                 | Is the cull orthographic.                                                                                                                                                      |
| [lodParameters](/engine/6000.7/script-reference/unityengine/rendering/scriptablecullingparameters/lodparameters.md)                                   | LODParameters for culling.                                                                                                                                                     |
| [maximumPortalCullingJobs](/engine/6000.7/script-reference/unityengine/rendering/scriptablecullingparameters/maximumportalcullingjobs.md)             | This parameter controls how many active jobs contribute to occlusion culling.                                                                                                  |
| [maximumVisibleLights](/engine/6000.7/script-reference/unityengine/rendering/scriptablecullingparameters/maximumvisiblelights.md)                     | This parameter controls how many visible lights are allowed.                                                                                                                   |
| [origin](/engine/6000.7/script-reference/unityengine/rendering/scriptablecullingparameters/origin.md)                                                 | Position for the origin of the cull.                                                                                                                                           |
| [reflectionProbeSortingCriteria](/engine/6000.7/script-reference/unityengine/rendering/scriptablecullingparameters/reflectionprobesortingcriteria.md) | Reflection Probe Sort options for the cull.                                                                                                                                    |
| [shadowDistance](/engine/6000.7/script-reference/unityengine/rendering/scriptablecullingparameters/shadowdistance.md)                                 | Shadow distance to use for the cull.                                                                                                                                           |
| [shadowNearPlaneOffset](/engine/6000.7/script-reference/unityengine/rendering/scriptablecullingparameters/shadownearplaneoffset.md)                   | Offset to apply to the near camera plane when performing shadow map rendering.                                                                                                 |
| [splitPlaneCount](/engine/6000.7/script-reference/unityengine/rendering/scriptablecullingparameters/splitplanecount.md)                               | The number of split culling planes to use.                                                                                                                                     |
| [stereoProjectionMatrix](/engine/6000.7/script-reference/unityengine/rendering/scriptablecullingparameters/stereoprojectionmatrix.md)                 | The projection matrix generated for single-pass stereo culling.                                                                                                                |
| [stereoSeparationDistance](/engine/6000.7/script-reference/unityengine/rendering/scriptablecullingparameters/stereoseparationdistance.md)             | Distance between the virtual eyes.                                                                                                                                             |
| [stereoViewMatrix](/engine/6000.7/script-reference/unityengine/rendering/scriptablecullingparameters/stereoviewmatrix.md)                             | The view matrix generated for single-pass stereo culling.                                                                                                                      |

## Static Properties

| Property                                                                                                                            | Description                                                                                                                                                                                         |
| ----------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [cullingJobsLowerLimit](/engine/6000.7/script-reference/unityengine/rendering/scriptablecullingparameters/cullingjobslowerlimit.md) | The lower limit to the value [ScriptableCullingParameters.maximumPortalCullingJobs](/engine/6000.7/script-reference/unityengine/rendering/scriptablecullingparameters/maximumportalcullingjobs.md). |
| [cullingJobsUpperLimit](/engine/6000.7/script-reference/unityengine/rendering/scriptablecullingparameters/cullingjobsupperlimit.md) | The upper limit to the value [ScriptableCullingParameters.maximumPortalCullingJobs](/engine/6000.7/script-reference/unityengine/rendering/scriptablecullingparameters/maximumportalcullingjobs.md). |

## Methods

| Method                                                                                                                                  | Description                                           |
| --------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- |
| [GetCullingPlane](/engine/6000.7/script-reference/unityengine/rendering/scriptablecullingparameters/getcullingplane.md)                 | Fetch the culling plane at the given index.           |
| [GetLayerCullingDistance](/engine/6000.7/script-reference/unityengine/rendering/scriptablecullingparameters/getlayercullingdistance.md) | Get the distance for the culling of a specific layer. |
| [GetSplitCullingPlane](/engine/6000.7/script-reference/unityengine/rendering/scriptablecullingparameters/getsplitcullingplane.md)       | Fetch the split culling plane at the given index.     |
| [SetCullingPlane](/engine/6000.7/script-reference/unityengine/rendering/scriptablecullingparameters/setcullingplane.md)                 | Set the culling plane at a given index.               |
| [SetLayerCullingDistance](/engine/6000.7/script-reference/unityengine/rendering/scriptablecullingparameters/setlayercullingdistance.md) | Set the distance for the culling of a specific layer. |
| [SetSplitCullingPlane](/engine/6000.7/script-reference/unityengine/rendering/scriptablecullingparameters/setsplitcullingplane.md)       | Set the split culling plane at a given index.         |
