renderQueueRange | 用于设置 renderQueueRange 值的 RenderQueueRange 结构。Unity 会渲染其 Material.renderQueue 值在给定范围内的对象。RenderQueueRange.all 。 |
layerMask | 用于设置 layerMask 值的位掩码。Unity 会渲染其 GameObject.layer 值在此位掩码中启用的对象。默认值为 -1 。 |
renderingLayerMask | 用于设置 renderingLayerMask 值的位掩码。Unity 会渲染其 Renderer.renderingLayerMask 值在此位掩码中启用的对象。默认值为 uint.MaxValue 。 |
excludeMotionVectorObjects | 用于设置 excludeMotionVectorObjects 值的整数。当此值为 1 时,Unity 会排除已启用动态传递,或自上一帧以来已更改位置的对象。默认值为 0 。 |
创建 FilteringSettings
结构以用于 Rendering.ScriptableRenderContext.DrawRenderers。
注意:如果不带任何参数调用 new FilteringSettings()
,Unity 会创建一个空的 FilteringSettings
结构。空结构不包含任何数据,所有内部值均默认为 0;例如,它的 layerMask
值为 0,以此类推。除非您覆盖其属性,否则此空结构会告知 Unity 排除所有对象。
如果你使用一个或多个参数调用这个构造函数,Unity 会为所有未指定的值设置默认值。每个属性的默认值都不执行任何过滤。要创建一个具有所有默认值的 FilteringSettings
结构,请使用 FilteringSettings.defaultValue。
此示例演示了使用一些非默认值创建 FilteringSettings
结构的语法。
using UnityEngine; using UnityEngine.Rendering;
public class FilteringSettingsExample { public FilteringSettings CreateFilteringSettings() { // Instantiate a RenderQueueRange struct that represents the RenderQueue values you want to render // In this example, render materials whose RenderQueue value is in the opaque range var desiredRenderQueueRange = RenderQueueRange.opaque;
// Create a bit mask that represents the layers you want to render // In this example, only render objects on layer 0 (the "Default" layer) int layerIndex = 0; int layerMask = 1 << layerIndex;
// Instantiate a FilteringSettings struct with the desired values // Unity sets any unspecified values to the same as FilteringSettings.default FilteringSettings filteringSettings = new FilteringSettings(desiredRenderQueueRange, layerMask);
return filteringSettings; } }
其他资源:ScriptableRenderContext.DrawRenderers、在自定义渲染管道中创建简单的渲染循环。