Описание
Структура, содержащая результаты операции отбраковки.
В Scriptable Render Pipeline, когда Unity выполняет операцию отбраковки, она сохраняет результаты в структуре CullingResults
. Эти данные включают информацию о видимых объектах, источниках света и датчиках отражения. Unity использует эти данные для рендеринга объектов и обработки источников света. Структура CullingResults
также предоставляет несколько функций, помогающих отрисовке теней.
Чтобы получить структуру CullingResults
, вызовите ScriptableRenderContext.Cull.
Структура CullingResults
допустима в рамках функции RenderPipeline.Render; его данные выходят за пределы области видимости при возврате функции Render
. Вы можете использовать одну и ту же структуру CullingResults
несколько раз в одном и том же цикле рендеринга, и вы можете совместно использовать структуру CullingResults
между несколькими Cameras, если вы знаете, что они могут видеть одни и те же объекты. Это может сэкономить на бесполезных операциях ЦП и, следовательно, повысить производительность.
В этом примере показано, как получить структуру CullingResults
, а затем передать ее в ScriptableRenderContext.DrawRenderers.
using UnityEngine;
using UnityEngine.Rendering;
public class ExampleRenderPipeline : RenderPipeline
{
public ExampleRenderPipeline()
{
}
protected override void Render(ScriptableRenderContext context, Camera[] cameras)
{
foreach (Camera camera in cameras)
{
// Получаем параметры отбраковки с текущей камеры
camera.TryGetCullingParameters(out var cullingParameters);
// Планируем операцию отбраковки, которая заполняет структуру CullingResults
CullingResults cullingResults = context.Cull(ref cullingParameters);
// Разместите код, который планирует операции рисования, используя структуру CullingResults
// Смотрим ScriptableRenderContext.DrawRenderers для примера
// …
// Выполняем все запланированные операции по порядку
context.Submit();
}
}
}
Свойства
lightAndReflectionProbeIndexCount | Получает количество индексов датчика света и отражения для каждого объекта. |
lightIndexCount | Получает количество световых индексов для каждого объекта. |
reflectionProbeIndexCount | Получает количество индексов зонда отражения для каждого объекта. |
visibleLights | Массив видимых огней. |
visibleOffscreenVertexLights | Освещение вне экрана, которое все еще влияет на видимые вершины. |
visibleReflectionProbes | Массив датчиков видимого отражения. |
Публичные Методы
ComputeDirectionalShadowMatricesAndCullingPrimitives | Вычисляет матрицы вида и проекции, а также данные разделения теней для направленного источника света. |
ComputePointShadowMatricesAndCullingPrimitives | Вычисляет матрицы вида и проекции, а также данные разделения теней для точечного источника света. |
ComputeSpotShadowMatricesAndCullingPrimitives | Вычисляет матрицы вида и проекции, а также данные разделения теней для точечного источника света. |
FillLightAndReflectionProbeIndices | Заполняет буфер световыми индексами для каждого объекта. |
GetLightIndexMap | Если RenderPipeline сортирует или иным образом изменяет список VisibleLight, потребуется переназначение индекса, чтобы правильно использовать списки источников света для каждого объекта. |
GetReflectionProbeIndexMap | Если RenderPipeline сортирует или иным образом изменяет список VisibleReflectionProbe, потребуется переназначение индекса, чтобы правильно использовать списки зондов отражения для каждого объекта. |
GetShadowCasterBounds | Возвращает ограничивающую рамку, которая заключает в себе видимые отбрасыватели теней. Может использоваться, например, для динамической настройки каскадных диапазонов. |
SetLightIndexMap | Если RenderPipeline сортирует или иным образом изменяет список VisibleLight, потребуется переназначение индекса, чтобы правильно использовать списки источников света для каждого объекта. |
SetReflectionProbeIndexMap | Если RenderPipeline сортирует или иным образом изменяет список VisibleReflectionProbe, потребуется переназначение индекса, чтобы правильно использовать списки зондов отражения для каждого объекта. |