/// <summary> /// Prepares the renderer for executing on this frame and checks if any of them actually requires rendering /// </summary> /// <param name="renderingData">Current rendering data</param> /// <returns>True if any renderer will be executed for the given camera. False Otherwise.</returns> public bool PrepareRenderers(ref RenderingData renderingData) { // See if current camera is a scene view camera to skip renderers with "visibleInSceneView" = false. bool isSceneView = renderingData.cameraData.cameraType == CameraType.SceneView; // Here, we will collect the inputs needed by all the custom post processing effects ScriptableRenderPassInput passInput = ScriptableRenderPassInput.None; // Collect the active renderers m_ActivePostProcessRenderers.Clear(); for (int index = 0; index < m_PostProcessRenderers.Count; index++) { var ppRenderer = m_PostProcessRenderers[index]; // Skips current renderer if "visibleInSceneView" = false and the current camera is a scene view camera. if (isSceneView && !ppRenderer.visibleInSceneView) { continue; } // Setup the camera for the renderer and if it will render anything, add to active renderers and get its required inputs if (ppRenderer.Setup(ref renderingData, injectionPoint)) { m_ActivePostProcessRenderers.Add(index); passInput |= ppRenderer.input; } } // Configure the pass to tell the renderer what inputs we need ConfigureInput(passInput); // return if no renderers are active return(m_ActivePostProcessRenderers.Count != 0); }
public void Setup(ScriptableRenderer renderer, Material material, ScriptableRenderPassInput inputRequirement, RenderPassEvent renderPassEvent, int renderPassEventAdjustment) { m_Material = material; m_Renderer = renderer; ConfigureInput(inputRequirement); }
internal void ConfigureInput(ScriptableRenderPassInput passInput) { m_Input = passInput; }