版本: Unity 6 (6000.0)
语言英语
  • C#

CullingResults

UnityEngine.Rendering 中的结构体

/

实现于:UnityEngine.CoreModule

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实会阅读用户提出的每个建议更改,并在适用时进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

描述

包含剔除操作结果的结构体。

在可脚本化渲染管线中,当 Unity 执行剔除操作时,它会将结果存储在 CullingResults 结构体中。此数据包括有关可见对象、灯光和反射探测器的信息。Unity 使用此数据来渲染对象和处理灯光。CullingResults 结构体还提供了一些辅助阴影渲染的函数。

要获取 CullingResults 结构体,请调用 ScriptableRenderContext.Cull

一个 CullingResults 结构体在 RenderPipeline.Render 函数的作用域内有效;当 Render 函数返回时,其数据将超出作用域。您可以在同一个渲染循环中多次使用同一个 CullingResults 结构体,并且如果知道多个 摄像机 可以看到相同的对象,则可以在它们之间共享一个 CullingResults 结构体。这可以节省浪费的 CPU 操作,从而提高性能。

此示例演示如何获取 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 列表进行排序或以其他方式修改,则需要进行索引重新映射才能正确使用每个对象的反射探测器列表。