Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        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);
            }
        }