private void setLightValues(lightParameters p) { RenderSettings.sun.color = p.sunColor; RenderSettings.ambientSkyColor = p.skyColor; RenderSettings.ambientEquatorColor = p.horizonColor; RenderSettings.ambientGroundColor = p.groundColor; }
private void setLightValues(lightParameters p) { RenderSettings.sun.color = p.sunColor; RenderSettings.ambientSkyColor = p.skyColor; RenderSettings.ambientEquatorColor = p.horizonColor; RenderSettings.ambientGroundColor = p.groundColor; RenderSettings.skybox = skyboxMat; //float t = p.sunColor.grayscale; //RenderSettings.skybox.SetColor("_Tint", new Color(t, t, t)); }
public static lightParameters copy(lightParameters o) { return(new lightParameters { skyColor = o.skyColor, horizonColor = o.horizonColor, groundColor = o.groundColor, sunColor = o.sunColor }); }
private lightParameters lightLerp(lightParameters p1, lightParameters p2, float f) { lightParameters ret = new lightParameters { groundColor = Color.Lerp(p1.groundColor, p2.groundColor, f), skyColor = Color.Lerp(p1.skyColor, p2.skyColor, f), horizonColor = Color.Lerp(p1.horizonColor, p2.horizonColor, f), sunColor = Color.Lerp(p1.sunColor, p2.sunColor, f) }; return(ret); }
private lightParameters lightLerp(lightParameters p1, lightParameters p2, float f) { lightParameters ret = new lightParameters { groundColor = Color.Lerp(p1.groundColor, p2.groundColor, f), skyColor = Color.Lerp(p1.skyColor, p2.skyColor, f), horizonColor = Color.Lerp(p1.horizonColor, p2.horizonColor, f), sunColor = Color.Lerp(p1.sunColor, p2.sunColor, f) }; skyboxMat.SetTexture("_Tex", p1.skyboxTexture); skyboxMat.SetTexture("_OverlayTex", p2.skyboxTexture); skyboxMat.SetFloat("_Blend", f); return(ret); }
void Update() { if (sun == null) { if (RenderSettings.sun != null) { sun = RenderSettings.sun; } else { sun = new Light(); } } sun.transform.rotation = Quaternion.Euler((currentHour / 24.0f) * 360.0f - 90.0f, 0, 0); if (!freezeTimeOfDay) { float gameHourPerRealSeconds = 24.0f / cycleDurationSeconds; currentHour += Time.deltaTime * gameHourPerRealSeconds; } while (currentHour >= 24.0f) { currentHour -= 24.0f; } float morning = (sunRiseBegin + sunRiseEnd) / 2.0f; float evening = (sunSetBegin + sunSetEnd) / 2.0f; if (currentHour < sunRiseBegin) { if (phase != Phase.Night) { phase = Phase.Night; DayNightEvents.Instance.night(); } lparams = lightLerp(nightSky, nightSky, 0f); //lparams = lightParameters.copy(nightSky); } else if (currentHour < morning) { if (phase != Phase.Sunrise) { phase = Phase.Sunrise; DayNightEvents.Instance.sunRise(); } float f = Mathf.InverseLerp(sunRiseBegin, morning, currentHour); lparams = lightLerp(nightSky, morningSky, f); } else if (currentHour < sunRiseEnd) { if (phase != Phase.Sunrise) { phase = Phase.Sunrise; DayNightEvents.Instance.sunRise(); } float f = Mathf.InverseLerp(morning, sunRiseEnd, currentHour); lparams = lightLerp(morningSky, daySky, f); } else if (currentHour < sunSetBegin) { if (phase != Phase.Day) { phase = Phase.Day; DayNightEvents.Instance.day(); } lparams = lightLerp(daySky, daySky, 0f); //lparams = lightParameters.copy(daySky); } else if (currentHour < evening) { if (phase != Phase.Sunset) { phase = Phase.Sunset; DayNightEvents.Instance.sunSet(); } float f = Mathf.InverseLerp(sunSetBegin, evening, currentHour); lparams = lightLerp(daySky, eveningSky, f); } else if (currentHour < sunSetEnd) { if (phase != Phase.Sunset) { phase = Phase.Sunset; DayNightEvents.Instance.sunSet(); } float f = Mathf.InverseLerp(evening, sunSetEnd, currentHour); lparams = lightLerp(eveningSky, nightSky, f); } else { if (phase != Phase.Night) { phase = Phase.Night; DayNightEvents.Instance.night(); } lparams = lightLerp(nightSky, nightSky, 0f); //lparams = lightParameters.copy(nightSky); } sun.intensity = originalSunIntensity; foreach (var item in atmosphericEffects) { item.filterSkyParams(lparams, sun); } setLightValues(lparams); if (!freezeTimeOfDay) { timeOfDaySlider.value = currentHour; } //Debug.Log($"Phase : {phase}"); }