// -------------------------------------------------------------------- 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); }
// -------------------------------------------------------------------- // 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(); }