#if HDRP_PRESENT using System; using JetBrains.Annotations; using UnityEngine.Rendering.HighDefinition; using UnityEngine.Rendering; namespace UnityEngine.Perception.GroundTruth { /// /// A CustomPass for creating object instance segmentation images. GameObjects containing Labeling components /// are assigned unique IDs, which are rendered into the target texture. /// public class InstanceSegmentationPass : CustomPass { InstanceSegmentationCrossPipelinePass m_InstanceSegmentationCrossPipelinePass; public RenderTexture targetTexture; public Camera targetCamera; [UsedImplicitly] public InstanceSegmentationPass() {} //protected override void Execute(ScriptableRenderContext renderContext, CommandBuffer cmd, HDCamera hdCamera, CullingResults cullingResult) protected override void Execute(CustomPassContext customPassContext) { CoreUtils.SetRenderTarget(customPassContext.cmd, targetTexture, ClearFlag.All); m_InstanceSegmentationCrossPipelinePass.Execute(customPassContext.renderContext, customPassContext.cmd, customPassContext.hdCamera.camera, customPassContext.cullingResults); } public void EnsureInit() { if (m_InstanceSegmentationCrossPipelinePass == null) { m_InstanceSegmentationCrossPipelinePass = new InstanceSegmentationCrossPipelinePass(targetCamera); m_InstanceSegmentationCrossPipelinePass.Setup(); } } protected override void Setup(ScriptableRenderContext renderContext, CommandBuffer cmd) { base.Setup(renderContext, cmd); Debug.Assert(m_InstanceSegmentationCrossPipelinePass != null, "InstanceSegmentationPass.EnsureInit() should be called before the first camera render to get proper object labels in the first frame"); EnsureInit(); } } } #endif