private void UpdateNullFogZones() { int nullFogZoneCount = 0; FogNullZones.Sort(NullFogZoneSorter); for (int i = 0; i < FogNullZones.Count && nullFogZoneCount < MaximumNullFogZones; i++) { if (GeometryUtility.TestPlanesAABB(WeatherMakerScript.Instance.CurrentCameraFrustumPlanes, FogNullZones[i])) { nullFogZoneArrayMin[nullFogZoneCount] = FogNullZones[i].min; nullFogZoneArrayMax[nullFogZoneCount] = FogNullZones[i].max; nullFogZoneCount++; } } Shader.SetGlobalInt("_FogNullZoneCount", nullFogZoneCount); Shader.SetGlobalVectorArray("_FogNullZonesMin", nullFogZoneArrayMin); Shader.SetGlobalVectorArray("_FogNullZonesMax", nullFogZoneArrayMax); if (nullFogZoneCount == 0) { Shader.DisableKeyword("WEATHER_MAKER_FOG_ENABLE_NULL_FOG_ZONES"); } else { Shader.EnableKeyword("WEATHER_MAKER_FOG_ENABLE_NULL_FOG_ZONES"); } }
private void Update() { FogNullZones.Clear(); }