RendererListParams
структура в UnityEngine.Rendering
Выполнено в:UnityEngine.CoreModule
Описание
Низкоуровневая структура с аргументами, необходимыми для создания RendererList.
Чтобы создать RendererList объект, заполните эту структуру и передайте её в ScriptableRenderContext.CreateRendererList.
Либо, если вы используете систему графа рендеринга, передайте эту структуру в RenderGraph.CreateRendererList. Для получения дополнительной информации о RenderGraph, см. Система графов рендеринга .
По способу использования эта структура похожа на RendererListDesc, только на более низком уровне и теснее связано с внутренним устройством движка. Используйте эту структуру вместо RendererListDesc если вам нужен доступ к расширенным свойствам, таким как FilteringSettings.sortingLayerRange.
Этот пример показывает, как RendererListParams Выполните следующие действия:
- Сохраните примерный код в вашем проекте как
SimpleRenderPipelineAsset.cs. - Используйте пункт меню
RenderPipeline/Create SimpleRenderPipelineAssetдля создания ассета конвейера отображения. - Перейдите в Project Настройки > Графика и назначьте созданный ресурс как **По умолчанию Render Pipeline ресурс**.
using System.Collections.Generic; using UnityEngine; using UnityEngine.Rendering;
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. DrawingSettings drawingSettings = new DrawingSettings(new ShaderTagId("ForwardBase"), new SortingSettings(camera)); FilteringSettings filteringSettings = new FilteringSettings(RenderQueueRange.opaque); var rendererListParams = new RendererListParams(cullingResults, drawingSettings, filteringSettings); var rendererList = context.CreateRendererList(ref rendererListParams); cmd.DrawRendererList(rendererList); context.ExecuteCommandBuffer(cmd); cmd.Release(); context.Submit(); } } }
Дополнительные ресурсы: ,RendererList,, ,ScriptableRenderContext.CreateRendererList,.
Статические свойства
| Свойство | Описание |
|---|---|
| Invalid | Возвращает пустое RendererListParams. |
Свойства
| Свойство | Описание |
|---|---|
| cullingResults | Набор видимых объектов для рисования. Обычно вы получаете его из ScriptableRenderContext.Cull. |
| drawSettings | Структура, описывающая, как отрисовывать объекты. |
| filteringSettings | Структура, описывающая, как отфильтровать набор видимых объектов, чтобы Unity отрисовывала только его часть. |
| isPassTagName | Если установлено true, то tagName указывает Тег Пропуска. В противном случае, tagName указывает Тег SubShader. |
| stateBlocks | Массив структур, описывающих, какие части состояния рендеринга GPU следует переопределить. |
| tagName | Имя тега SubShader или тега Pass. |
| tagValues | Массив структур ShaderTagId, где имя представляет собой значение заданного Тега SubShader или Тега Pass. |
Конструкторы
| Конструктор | Описание |
|---|---|
| RendererListParams | Создать структуру RendererListParams. |