static public void RenderLights(Camera camera, CommandBuffer cmdBuffer, int layerToRender) { for (int i = 0; i < s_LightOperations.Length; ++i) { if (i >= k_UseLightOperationKeywords.Length) { break; } string keyword = k_UseLightOperationKeywords[i]; if (s_LightOperations[i].enabled) { cmdBuffer.EnableShaderKeyword(keyword); } else { cmdBuffer.DisableShaderKeyword(keyword); continue; } string sampleName = "2D Lights - " + s_LightOperations[i].name; cmdBuffer.BeginSample(sampleName); cmdBuffer.SetRenderTarget(s_RenderTargets[i].Identifier()); Color clearColor; if (!Light2D.globalClearColors[i].TryGetValue(layerToRender, out clearColor)) { clearColor = s_LightOperations[i].globalColor; } //if (s_RenderTargetsDirty[i]) // cmdBuffer.ClearRenderTarget(false, true, clearColor); cmdBuffer.ClearRenderTarget(false, true, clearColor); bool rtDirty = RenderLightSet( camera, i, cmdBuffer, layerToRender, Light2D.GetLightsByLightOperation(i) ); s_RenderTargetsDirty[i] = rtDirty; cmdBuffer.EndSample(sampleName); } }
static public void RenderLights(Camera camera, CommandBuffer cmdBuffer, int layerToRender) { for (int i = 0; i < s_LightOperations.Length; ++i) { if (!s_LightOperations[i].enabled) { continue; } string sampleName = "2D Lights - " + s_LightOperations[i].name; cmdBuffer.BeginSample(sampleName); cmdBuffer.SetRenderTarget(s_RenderTargets[i].Identifier()); bool rtDirty = false; Color clearColor; if (!Light2D.globalClearColors[i].TryGetValue(layerToRender, out clearColor)) { clearColor = Color.black; } else { rtDirty = true; } if (s_RenderTargetsDirty[i] || rtDirty) { cmdBuffer.ClearRenderTarget(false, true, clearColor); } rtDirty |= RenderLightSet( camera, i, cmdBuffer, layerToRender, Light2D.GetLightsByLightOperation(i) ); s_RenderTargetsDirty[i] = rtDirty; cmdBuffer.EndSample(sampleName); } }
static public void RenderLightVolumes(Camera camera, CommandBuffer cmdBuffer, int layerToRender) { for (int i = 0; i < s_LightOperations.Length; ++i) { if (!s_LightOperations[i].enabled) { continue; } string sampleName = "2D Shape Light Volumes - " + s_LightOperations[i].name; cmdBuffer.BeginSample(sampleName); RenderLightVolumeSet( camera, i, cmdBuffer, layerToRender, s_RenderTargets[i].Identifier(), Light2D.GetLightsByLightOperation(i) ); cmdBuffer.EndSample(sampleName); } }