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