Esempio n. 1
0
        private static bool CompareLightsInLayer(int layerIndex1, int layerIndex2, SortingLayer[] sortingLayers, ILight2DCullResult lightCullResult)
        {
            var layerId1 = sortingLayers[layerIndex1].id;
            var layerId2 = sortingLayers[layerIndex2].id;

            foreach (var light in lightCullResult.visibleLights)
            {
                if (light.IsLitLayer(layerId1) != light.IsLitLayer(layerId2))
                {
                    return(false);
                }
            }
            return(true);
        }
Esempio n. 2
0
 private static int FindUpperBoundInBatch(int startLayerIndex, SortingLayer[] sortingLayers, ILight2DCullResult lightCullResult)
 {
     // start checking at the next layer
     for (var i = startLayerIndex + 1; i < sortingLayers.Length; i++)
     {
         if (!CompareLightsInLayer(startLayerIndex, i, sortingLayers, lightCullResult))
         {
             return(i - 1);
         }
     }
     return(sortingLayers.Length - 1);
 }
Esempio n. 3
0
        private static bool CanBatchLightsInLayer(int layerIndex1, int layerIndex2, SortingLayer[] sortingLayers, ILight2DCullResult lightCullResult)
        {
            var layerId1 = sortingLayers[layerIndex1].id;
            var layerId2 = sortingLayers[layerIndex2].id;

            foreach (var light in lightCullResult.visibleLights)
            {
                // If the lit layers are different, or if they are lit but this is a shadow casting light then don't batch.
                if ((light.IsLitLayer(layerId1) != light.IsLitLayer(layerId2)) || (light.IsLitLayer(layerId1) && light.shadowsEnabled))
                {
                    return(false);
                }
            }
            return(true);
        }