CullingResults
структура в UnityEngine.Rendering
Выполнено в:UnityEngine.CoreModule
Описание
Структура с результатами операции отсечения.
В Scriptable Render Pipeline, когда Unity выполняет операцию удаления, он сохраняет результаты в CullingResults структура. В эти данные входят сведения о видимых объектах, источниках света и зондах отражений. Unity использует их для отрисовки объектов и обработки источников света. CullingResults структура предоставляет также несколько функций, помогающих при отрисовке теней.
Чтобы получить CullingResults структуру, вызовите ScriptableRenderContext.Cull.
A CullingResults структура действительна в пределах области видимости RenderPipeline.Render функции; ее данные выходят за рамки, когда Render возвращает функция. Вы можете использовать те же CullingResults структуру несколько раз в пределах одного цикла рендеринга, и вы можете использовать общую CullingResults структуру между несколькими Cameras если вы знаете, что они могут видеть одни и те же объекты. Это может сэкономить на потерянных операциях CPU и, следовательно, повысить производительность.
После того, как Unity выполняет операции рисования с CullingResults, вы не можете вызвать ScriptableRenderContext.Cull Список рендереров должен оставаться последовательным на протяжении всего процесса рендирования, чтобы избежать непредсказуемых результатов или сбоев. Чтобы убедиться, что список рендереров не изменяется случайно, обведите код между ScriptableRenderContext.PushDisableApiRenderers и ScriptableRenderContext.PopDisableApiRenderers.
Этот пример показывает, как получить 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) { // Get the culling parameters from the current camera camera.TryGetCullingParameters(out var cullingParameters);
// Schedule the cull operation that populates the CullingResults struct CullingResults cullingResults = context.Cull(ref cullingParameters);
// Place code that schedules drawing operations using the CullingResults struct here // See ScriptableRenderContext.DrawRenderers for details and examples // …
// Execute all of the scheduled operations, in order 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, для правильного использования списков зондов отражения по объектам потребуется переотображение индекса. |