static public void RenderLights(Camera camera, CommandBuffer cmdBuffer, int layerToRender, uint blendStylesUsed) { for (int i = 0; i < s_BlendStyles.Length; ++i) { if ((blendStylesUsed & (uint)(1 << i)) == 0) { continue; } string sampleName = s_BlendStyles[i].name; cmdBuffer.BeginSample(sampleName); cmdBuffer.SetRenderTarget(s_LightRenderTargets[i].Identifier()); bool rtDirty = false; Color clearColor; var globalLight = Light2DManager.GetGlobalLight(layerToRender, i, out clearColor); //Global light Color if (!globalLight) { clearColor = Color.black; } else { rtDirty = true; } if (s_LightRenderTargetsDirty[i] || rtDirty) { cmdBuffer.ClearRenderTarget(false, true, clearColor); } //全局光方向 if (globalLight) { cmdBuffer.SetGlobalVector("_GlobalLightDirection", globalLight.LightDirection); } else { cmdBuffer.SetGlobalVector("_GlobalLightDirection", new Vector3(1, 1, 5)); } rtDirty |= RenderLightSet(camera, i, cmdBuffer, layerToRender, s_LightRenderTargets[i].Identifier(), Light2D.GetLightsByBlendStyle(i)); s_LightRenderTargetsDirty[i] = rtDirty; cmdBuffer.EndSample(sampleName); } }