public static SunlightParameters DeepCopy(SunlightParameters c) { SunlightParameters temp = new SunlightParameters(); temp.orientationParameters = SunlightOrientationParameters.DeepCopy(c.orientationParameters); temp.lightParameters = LightParameters.DeepCopy(c.lightParameters); temp.colorGradient = c.colorGradient; temp.intensityCurve = c.intensityCurve; return(temp); }
public static SunlightOrientationParameters DeepCopy(SunlightOrientationParameters c) { SunlightOrientationParameters temp = new SunlightOrientationParameters(); temp.yAxis = c.yAxis; temp.lattitude = c.lattitude; temp.timeOfDay = c.timeOfDay; temp.roll = c.roll; return(temp); }
public static SunlightOrientationParameters operator +(SunlightOrientationParameters x, SunlightOrientationParameters y) { var addition = new SunlightOrientationParameters { yAxis = x.yAxis + y.yAxis, timeOfDay = x.timeOfDay + y.timeOfDay, lattitude = x.lattitude + y.lattitude, roll = x.roll + y.roll }; return(addition); }
public static SunlightOrientationParameters LerpSunlightOrientationParameters(SunlightOrientationParameters from, SunlightOrientationParameters to, float weight) { var lerpSunlightOrientationParameters = new SunlightOrientationParameters(); //Orientation lerpSunlightOrientationParameters.lattitude = Mathf.Lerp(from.lattitude, to.lattitude, weight); lerpSunlightOrientationParameters.yAxis = Mathf.Lerp(from.yAxis, to.yAxis, weight); lerpSunlightOrientationParameters.timeOfDay = Mathf.Lerp(from.timeOfDay, to.timeOfDay, weight); lerpSunlightOrientationParameters.roll = Mathf.Lerp(from.roll, to.roll, weight); return(lerpSunlightOrientationParameters); }
private void GatherOverrides() { modifiedOrientationParameters = SunlightOrientationParameters.DeepCopy(sunlightParameters.orientationParameters); if (stack == null) { return; } var sunProps = stack.GetComponent <SunlightProperties>(); if (sunlightParameters.lightParameters == null || modifiedOrientationParameters == null) { return; } if (sunProps.lattitude.overrideState) { modifiedOrientationParameters.lattitude = sunProps.lattitude.value; } if (sunProps.YAxis.overrideState) { modifiedOrientationParameters.yAxis = sunProps.YAxis.value; } if (Application.isPlaying) { //modifiedOrientationParameters.timeOfDay = Manager.Get<TimeOfDayManager>().timeOfDay; modifiedOrientationParameters.timeOfDay = Globals.GetFloat("TimeOfDay", Globals.Scope.Global); } //If overridden in volumes intensity is constant, otherwise driven by curve * intensity modifiedLightParameters = LightParameters.DeepCopy(sunlightParameters.lightParameters); if (sunProps.intensity.overrideState) { modifiedLightParameters.intensity = sunProps.intensity.value; } else if (sunlightParameters.intensityCurve != null) { modifiedLightParameters.intensity = sunlightParameters.intensityCurve.Evaluate(sunlightParameters.orientationParameters.timeOfDay) * sunlightParameters.lightParameters.intensity; } else if (sunlightParameters.intensityCurve == null) { modifiedLightParameters.intensity = sunlightParameters.lightParameters.intensity; } //If overridden intensity is constant, otherwise driven by gradient if (sunProps.color.overrideState) { modifiedLightParameters.colorFilter = sunProps.color.value; } else if (sunlightParameters.colorGradient != null) { modifiedLightParameters.colorFilter = sunlightParameters.colorGradient.Evaluate(sunlightParameters.orientationParameters.timeOfDay / 24); } if (sunProps.indirectMultiplier.overrideState) { modifiedLightParameters.indirectIntensity = sunProps.indirectMultiplier.value; } if (sunProps.cookieTexture.overrideState) { modifiedLightParameters.lightCookie = sunProps.cookieTexture.value; } if (sunProps.cookieSize.overrideState) { modifiedLightParameters.cookieSize = sunProps.cookieSize.value; } if (sunProps.shadowResolution.overrideState) { modifiedLightParameters.shadowResolution = sunProps.shadowResolution.value; } if (sunProps.shadowTint.overrideState) { modifiedLightParameters.shadowTint = sunProps.shadowTint.value; } if (sunProps.penumbraTint.overrideState) { modifiedLightParameters.penumbraTint = sunProps.penumbraTint.value; } }
void ApplyDefaults() { modifiedLightParameters = sunlightParameters.lightParameters; modifiedOrientationParameters = sunlightParameters.orientationParameters; }
// Called each frame the mixer is active, after inputs are processed public override void ProcessFrame(Playable handle, FrameData info, object playerData) { if (playerData == null) { return; } Volume volume = playerData as Volume; VolumeProfile volumeProfile = Application.isPlaying ? volume.profile : volume.sharedProfile; SunlightProperties sunprops = ScriptableObject.CreateInstance <SunlightProperties>(); SunlightOrientationParameters neutralOrientationParameters = new SunlightOrientationParameters(true); SunlightOrientationParameters mixedOrientationParameters = new SunlightOrientationParameters(true); float overriddenIntensity = 0; Color overriddenColor = Color.black; bool overrideShadowTint = false; Color overriddenShadowTint = Color.black; bool overridePenumbraTint = false; Color overriddenPenumbraTint = Color.black; bool overrideYAxis = false; bool overrideLattitude = false; //bool overrideTimeOfDay = false; bool overrideIntensity = false; bool overrideColor = false; if (volumeProfile.TryGet <SunlightProperties>(out sunprops)) { var count = handle.GetInputCount(); for (var i = 0; i < count; i++) { var inputHandle = handle.GetInput(i); var weight = handle.GetInputWeight(i); if (inputHandle.IsValid() && inputHandle.GetPlayState() == PlayState.Playing && weight > 0) { var data = ((ScriptPlayable <SunlightClipPlayable>)inputHandle).GetBehaviour(); if (data != null) { var weightedSunlightParameters = SunlightLightingUtilities.LerpSunlightOrientationParameters(neutralOrientationParameters, data.orientationParameters, weight); overriddenIntensity += data.intensity * weight; overriddenColor += data.color * weight; overrideShadowTint = overrideShadowTint || data.overrideShadowTint; overriddenShadowTint += data.shadowTint * weight; overridePenumbraTint = overridePenumbraTint || data.overridePenumbraTint; overriddenPenumbraTint += data.penumbraTint * weight; mixedOrientationParameters += weightedSunlightParameters; if (data.overrideYAxis) { overrideYAxis = true; } if (data.overrideLattitude) { overrideLattitude = true; } // if (data.overrideTimeOfDay) // overrideTimeOfDay = true; if (data.overrideIntensity) { overrideIntensity = true; } if (data.overrideColor) { overrideColor = true; } } } } sunprops.YAxis.overrideState = overrideYAxis; if (overrideYAxis) { sunprops.YAxis.value = mixedOrientationParameters.yAxis; } sunprops.lattitude.overrideState = overrideLattitude; if (overrideLattitude) { sunprops.lattitude.value = mixedOrientationParameters.lattitude; } //sunprops.timeOfDay.overrideState = overrideTimeOfDay; //if (overrideTimeOfDay) //{ // sunprops.timeOfDay.value = mixedOrientationParameters.timeOfDay; //} sunprops.intensity.overrideState = overrideIntensity; if (overrideIntensity) { sunprops.intensity.value = overriddenIntensity; } sunprops.color.overrideState = overrideColor; if (overrideColor) { sunprops.color.value = overriddenColor; } sunprops.shadowTint.overrideState = overrideShadowTint; if (overrideShadowTint) { sunprops.shadowTint.value = overriddenShadowTint; } sunprops.penumbraTint.overrideState = overridePenumbraTint; if (overridePenumbraTint) { sunprops.penumbraTint.value = overriddenPenumbraTint; } //sunprops.cookieTexture.value = mixedSunlightParameters.lightParameters.lightCookie; //sunprops.cookieSize.value = mixedSunlightParameters.lightParameters.cookieSize; } }
public SunlightParameters(bool neutral) { orientationParameters = new SunlightOrientationParameters(true); lightParameters = new LightParameters(LightType.Directional, LightmapPresetBakeType.Mixed, true); }
private void GatherOverrides() { modifiedOrientationParameters = SunlightOrientationParameters.DeepCopy(sunlightParameters.orientationParameters); if (stack == null) { return; } var sunProps = stack.GetComponent <SunlightProperties>(); if (sunlightParameters.lightParameters == null || modifiedOrientationParameters == null) { return; } if (sunProps.lattitude.overrideState) { modifiedOrientationParameters.lattitude = sunProps.lattitude.value; } if (sunProps.YAxis.overrideState) { modifiedOrientationParameters.yAxis = sunProps.YAxis.value; } if (sunProps.timeOfDay.overrideState) { modifiedOrientationParameters.timeOfDay = sunProps.timeOfDay.value; } //If overridden intensity is constant, otherwise drive by curve if (sunProps.intensity.overrideState) { sunlightParameters.lightParameters.intensity = sunProps.intensity; } else if (sunlightParameters.intensityCurve != null) { sunlightParameters.lightParameters.intensity = sunlightParameters.intensityCurve.Evaluate(sunlightParameters.orientationParameters.timeOfDay); } if (sunlightParameters.intensityCurve == null) { Debug.LogWarning("Sun intensity curve is null"); } //If overridden intensity is constant, otherwise driven by gradient if (sunProps.color.overrideState) { sunlightParameters.lightParameters.colorFilter = sunProps.color; } else if (sunlightParameters.colorGradient != null) { sunlightParameters.lightParameters.colorFilter = sunlightParameters.colorGradient.Evaluate(sunlightParameters.orientationParameters.timeOfDay / 24); } if (sunProps.indirectMultiplier.overrideState) { sunlightParameters.lightParameters.indirectIntensity = sunProps.indirectMultiplier; } if (sunProps.cookieTexture.overrideState) { sunlightParameters.lightParameters.lightCookie = sunProps.cookieTexture; } if (sunProps.cookieSize.overrideState) { sunlightParameters.lightParameters.cookieSize = sunProps.cookieSize; } if (sunProps.shadowResolution.overrideState) { sunlightParameters.lightParameters.shadowResolution = sunProps.shadowResolution; } }