// --------------------------------------------------------------------
    public void Render(ScriptableRenderContext context, Camera camera, L2DLDirectLights directLights)
    {
        if (!m_directLightData.Enabled)
        {
            return;
        }

        m_context = context;
        m_camera  = camera;

        // Encapsulate in frame debugger
        L2DLRenderHelpers.BeginSample(m_context, m_directLightRenderingBuffer);
        {
            CoreUtils.SetRenderTarget(m_clearBuffer, L2DLPipelineData.s_cameraDirectLightResultTextureId, L2DLPipelineData.s_cameraDepthTextureId, ClearFlag.Color);
            L2DLRenderHelpers.ExecuteBuffer(m_context, m_clearBuffer);

            // Directional Lights
            L2DLRenderHelpers.BeginSample(m_context, m_directionalLightsBuffer);
            foreach (L2DLDirectionalLight directionalLight in directLights.m_directionalLights)
            {
                GetOcclusionTextures((int)directionalLight.ShadowMapSize); // Probably don't need to do this every time?
                RenderOcclusionMapForLight(directionalLight);
                RunDirectionalLightOcclusionMapTrace(directionalLight);
                RunDirectionalLightRendering(directionalLight);
                ReleaseOcclusionTextures();
            }
            L2DLRenderHelpers.EndSample(m_context, m_directionalLightsBuffer);

            // Point Lights
            L2DLRenderHelpers.BeginSample(m_context, m_pointLightsBuffer);
            foreach (L2DLPointLight pointLight in directLights.m_pointLights)
            {
                GetOcclusionTextures((int)pointLight.ShadowMapSize);
                RenderOcclusionMapForLight(pointLight);
                RunPointLightOcclusionMapTrace(pointLight);
                RunPointLightRendering(pointLight);
                ReleaseOcclusionTextures();
            }
            L2DLRenderHelpers.EndSample(m_context, m_pointLightsBuffer);

            // Spot Lights
            L2DLRenderHelpers.BeginSample(m_context, m_spotLightsBuffer);
            foreach (L2DLSpotLight spotLight in directLights.m_spotLights)
            {
                GetOcclusionTextures((int)spotLight.ShadowMapSize);
                RenderOcclusionMapForLight(spotLight);
                RunSpotLightOcclusionMapTrace(spotLight);
                RunSpotLightRendering(spotLight);
                ReleaseOcclusionTextures();
            }
            L2DLRenderHelpers.EndSample(m_context, m_spotLightsBuffer);

            // Reset
            m_context.SetupCameraProperties(m_camera);
        }
        L2DLRenderHelpers.EndSample(m_context, m_directLightRenderingBuffer);
    }
Exemple #2
0
    // --------------------------------------------------------------------
    // Render Loop
    // --------------------------------------------------------------------

    // --------------------------------------------------------------------
    public void Render(ScriptableRenderContext context, Camera camera, L2DLDirectLights directLights)
    {
        m_context = context;
        m_camera  = camera;

        RenderSetup();

        m_sceneDataRenderer.Render(m_context, m_camera);

        if (TextureToView == L2DLBufferTextures.None)
        {
            m_directLightRenderer.Render(m_context, m_camera, directLights);
            m_indirectLightRenderer.Render(m_context, m_camera);
        }

        RenderStep_PresentFinalImage();

        DrawGizmos();

        m_context.Submit();

        RenderShutdown();
    }