# RendererListDesc

> A high-level struct holding the arguments needed to create a RendererList.

## Definition

* **Type:** Struct
* **Namespace:** [UnityEngine.Rendering.RendererUtils](/engine/6000.7/script-reference/unityengine/rendering/rendererutils.md)
* **Assembly:** UnityEngine.CoreModule

```csharp
public struct RendererListDesc
```

## Remarks

To create a [RendererList](/engine/6000.7/script-reference/unityengine/rendering/rendererlist.md) object, fill this struct and pass it to [ScriptableRenderContext.CreateRendererList](/engine/6000.7/script-reference/unityengine/rendering/scriptablerendercontext/createrendererlist.md).

Alternatively, if you use the render graph system, pass this struct to [RenderGraph.CreateRendererList](https://docs.unity3d.com/Packages/com.unity.render-pipelines.core@latest/index.html?subfolder=/api/UnityEngine.Rendering.RenderGraphModule.RenderGraph.html#UnityEngine_Rendering_RenderGraphModule_RenderGraph_CreateRendererList_UnityEngine_Rendering_RendererUtils_RendererListDesc__). For more information about RenderGraph, refer to  [The render graph system](https://docs.unity3d.com/Packages/com.unity.render-pipelines.core@latest/index.html?subfolder=/manual/render-graph-system.html) .

In terms of usage, this struct is similar to [RendererListParams](/engine/6000.7/script-reference/unityengine/rendering/rendererlistparams.md), only higher level. If you need access to advanced properties such as [FilteringSettings.sortingLayerRange](/engine/6000.7/script-reference/unityengine/rendering/filteringsettings/sortinglayerrange.md), use [RendererListParams](/engine/6000.7/script-reference/unityengine/rendering/rendererlistparams.md) instead.

This struct can be converted to [RendererListParams](/engine/6000.7/script-reference/unityengine/rendering/rendererlistparams.md) using [RendererListDesc.ConvertToParameters](/engine/6000.7/script-reference/unityengine/rendering/rendererutils/rendererlistdesc/converttoparameters.md).

The example illustrates how `RendererListDesc` can be used. Follow these steps:

1. Save the example code in your project as `SimpleRenderPipelineAsset.cs`.
2. Use the `RenderPipeline/Create SimpleRenderPipelineAsset` menu item to create the render pipeline asset.
3. Go to Project Settings > Graphics, and assign the created asset as the **Default Render Pipeline Asset**.

```csharp
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.RendererUtils;

public class SimpleRenderPipelineAsset : RenderPipelineAsset<SimpleRenderPipeline>
{
#if UNITY_EDITOR
    [UnityEditor.MenuItem("RenderPipeline/Create SimpleRenderPipelineAsset")]
    static void CreateSimpleRenderLoop()
    {
        var instance = CreateInstance<SimpleRenderPipelineAsset>();
        UnityEditor.AssetDatabase.CreateAsset(instance, "Assets/SimpleRenderPipeline.asset");
    }
#endif

    protected override RenderPipeline CreatePipeline() => new SimpleRenderPipeline();
}

public class SimpleRenderPipeline : RenderPipeline
{
    protected override void Render(ScriptableRenderContext context, List<Camera> cameras)
    {
        foreach (var camera in cameras)
        {
            if (!camera.TryGetCullingParameters(out var cullingParams))
                continue;

            CullingResults cullingResults = context.Cull(ref cullingParams);
            context.SetupCameraProperties(camera);

            var cmd = new CommandBuffer();
            cmd.ClearRenderTarget(true, true, Color.red);

            // Draws visible MeshRenderers that use the built-in Default-Material/Default-Diffuse material.
            var rendererListDesc = new RendererListDesc(new ShaderTagId("ForwardBase"), cullingResults, camera)
            {
                renderQueueRange = RenderQueueRange.opaque
            };
            var rendererList = context.CreateRendererList(rendererListDesc);            
            cmd.DrawRendererList(rendererList);

            context.ExecuteCommandBuffer(cmd);
            cmd.Release();
            context.Submit();
        }
    }
}
```

Additional Resources: [RendererList](/engine/6000.7/script-reference/unityengine/rendering/rendererlist.md), [ScriptableRenderContext.CreateRendererList](/engine/6000.7/script-reference/unityengine/rendering/scriptablerendercontext/createrendererlist.md).

## Fields

| Value                                                                                                                                            | Description                                                                                                                                                                                    |
| ------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [excludeObjectMotionVectors](/engine/6000.7/script-reference/unityengine/rendering/rendererutils/rendererlistdesc/excludeobjectmotionvectors.md) | Indicates whether to exclude dynamic GameObjects from the RendererList.                                                                                                                        |
| [layerMask](/engine/6000.7/script-reference/unityengine/rendering/rendererutils/rendererlistdesc/layermask.md)                                   | The layer mask to use for filtering this RendererList.                                                                                                                                         |
| [overrideMaterial](/engine/6000.7/script-reference/unityengine/rendering/rendererutils/rendererlistdesc/overridematerial.md)                     | The material to render the RendererList's GameObjects with. This overrides the material for each GameObject.                                                                                   |
| [overrideMaterialPassIndex](/engine/6000.7/script-reference/unityengine/rendering/rendererutils/rendererlistdesc/overridematerialpassindex.md)   | Pass index for the override material.                                                                                                                                                          |
| [overrideShader](/engine/6000.7/script-reference/unityengine/rendering/rendererutils/rendererlistdesc/overrideshader.md)                         | The shader to render the RendererList's GameObjects with. This overrides the shader for each GameObject. Override shaders do not override existing material properties.                        |
| [overrideShaderPassIndex](/engine/6000.7/script-reference/unityengine/rendering/rendererutils/rendererlistdesc/overrideshaderpassindex.md)       | Selects which pass of the override shader to use.                                                                                                                                              |
| [rendererConfiguration](/engine/6000.7/script-reference/unityengine/rendering/rendererutils/rendererlistdesc/rendererconfiguration.md)           | The renderer configuration for the RendererList. For more information, see [PerObjectData](/engine/6000.7/script-reference/unityengine/rendering/perobjectdata.md).                            |
| [renderingLayerMask](/engine/6000.7/script-reference/unityengine/rendering/rendererutils/rendererlistdesc/renderinglayermask.md)                 | The rendering layer mask to use for filtering this RendererList.                                                                                                                               |
| [renderQueueRange](/engine/6000.7/script-reference/unityengine/rendering/rendererutils/rendererlistdesc/renderqueuerange.md)                     | The material render queue range to use for the RendererList. For more information, see [RenderQueueRange](/engine/6000.7/script-reference/unityengine/rendering/renderqueuerange.md).          |
| [sortingCriteria](/engine/6000.7/script-reference/unityengine/rendering/rendererutils/rendererlistdesc/sortingcriteria.md)                       | The method Unity uses to sort the GameObjects in the RendererList. For more information, see [SortingCriteria](/engine/6000.7/script-reference/unityengine/rendering/sortingcriteria.md).      |
| [stateBlock](/engine/6000.7/script-reference/unityengine/rendering/rendererutils/rendererlistdesc/stateblock.md)                                 | An optional set of values to override the RendererLists render state. For more information, see [RenderStateBlock](/engine/6000.7/script-reference/unityengine/rendering/renderstateblock.md). |

## Constructors

| Constructor                                                                                                                                                                                                                                                           | Description                                              |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- |
| [RendererListDesc(UnityEngine.Rendering.ShaderTagId,UnityEngine.Rendering.CullingResults,UnityEngine.Camera)](/engine/6000.7/script-reference/unityengine/rendering/rendererutils/rendererlistdesc/ctor.md#rendererlistdesc\(shadertagid-cullingresults-camera\))     | Initializes and returns an instance of RendererListDesc. |
| [RendererListDesc(UnityEngine.Rendering.ShaderTagId\[\],UnityEngine.Rendering.CullingResults,UnityEngine.Camera)](/engine/6000.7/script-reference/unityengine/rendering/rendererutils/rendererlistdesc/ctor.md#rendererlistdesc\(shadertagid-cullingresults-camera\)) | Initializes and returns an instance of RendererListDesc. |

## Properties

| Property                                                                                                                 | Description                                                  |
| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------ |
| [batchLayerMask](/engine/6000.7/script-reference/unityengine/rendering/rendererutils/rendererlistdesc/batchlayermask.md) | The batch layer mask to use for filtering this RendererList. |

## Methods

| Method                                                                                                     | Description                                   |
| ---------------------------------------------------------------------------------------------------------- | --------------------------------------------- |
| [IsValid](/engine/6000.7/script-reference/unityengine/rendering/rendererutils/rendererlistdesc/isvalid.md) | Checks whether the RendererListDesc is valid. |

## Static Methods

| Method                                                                                                                             | Description                                                                                                                                                                |
| ---------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [ConvertToParameters](/engine/6000.7/script-reference/unityengine/rendering/rendererutils/rendererlistdesc/converttoparameters.md) | Convert a given RendererListDesc to a [RendererListParams](/engine/6000.7/script-reference/unityengine/rendering/rendererlistparams.md) struct with equivalent parameters. |
