Esempio n. 1
0
    protected override void Render(ScriptableRenderContext context, Camera[] cameras)
    {
        BeginFrameRendering(context, cameras);

        foreach (Camera camera in cameras)
        {
            BeginCameraRendering(context, camera);

            //Culling
            ScriptableCullingParameters cullingParams;
            if (!camera.TryGetCullingParameters(out cullingParams))
            {
                continue;
            }
            CullingResults cull = context.Cull(ref cullingParams);

            //Camera setup some builtin variables e.g. camera projection matrices etc
            context.SetupCameraProperties(camera);

            //Execute graph
            CommandBuffer         cmdRG    = CommandBufferPool.Get("ExecuteRenderGraph");
            RenderGraphParameters rgParams = new RenderGraphParameters()
            {
                commandBuffer           = cmdRG,
                scriptableRenderContext = context,
                currentFrameIndex       = Time.frameCount
            };
            graph.Begin(rgParams);
            SRP0802_BasePassData basePassData = Render_SRP0802_BasePass(camera, graph, cull); //BasePass
            Render_SRP0802_AddPass(graph, basePassData.m_Albedo, basePassData.m_Emission);    //AddPass
            graph.Execute();
            context.ExecuteCommandBuffer(cmdRG);
            CommandBufferPool.Release(cmdRG);

            //Submit camera rendering
            context.Submit();
            EndCameraRendering(context, camera);
        }

        graph.EndFrame();
        EndFrameRendering(context, cameras);
    }