lerp static method
Interpolates from a to b by t (0 = a, 1 = b). See the class doc
for which fields blend and which switch.
Implementation
static EnvironmentSettings lerp(
EnvironmentSettings a,
EnvironmentSettings b,
double t,
) {
final pickB = t >= 0.5;
EnvironmentSettings d = pickB ? b : a;
return EnvironmentSettings(
environment: d.environment,
skybox: d.skybox,
skyEnvironment: d.skyEnvironment,
sunLight: d.sunLight,
toneMapping: d.toneMapping,
environmentIntensity: _lerp(
a.environmentIntensity,
b.environmentIntensity,
t,
),
exposure: _lerp(a.exposure, b.exposure, t),
colorGradingEnabled: d.colorGradingEnabled,
brightness: _lerp(a.brightness, b.brightness, t),
contrast: _lerp(a.contrast, b.contrast, t),
saturation: _lerp(a.saturation, b.saturation, t),
temperature: _lerp(a.temperature, b.temperature, t),
tint: _lerp(a.tint, b.tint, t),
lift: _lerpVec3(a.lift, b.lift, t),
gamma: _lerpVec3(a.gamma, b.gamma, t),
gain: _lerpVec3(a.gain, b.gain, t),
bloomEnabled: d.bloomEnabled,
bloomThreshold: _lerp(a.bloomThreshold, b.bloomThreshold, t),
bloomIntensity: _lerp(a.bloomIntensity, b.bloomIntensity, t),
bloomScatter: _lerp(a.bloomScatter, b.bloomScatter, t),
vignetteEnabled: d.vignetteEnabled,
vignetteIntensity: _lerp(a.vignetteIntensity, b.vignetteIntensity, t),
vignetteRadius: _lerp(a.vignetteRadius, b.vignetteRadius, t),
vignetteSmoothness: _lerp(a.vignetteSmoothness, b.vignetteSmoothness, t),
chromaticAberrationEnabled: d.chromaticAberrationEnabled,
chromaticAberrationIntensity: _lerp(
a.chromaticAberrationIntensity,
b.chromaticAberrationIntensity,
t,
),
filmGrainEnabled: d.filmGrainEnabled,
filmGrainIntensity: _lerp(a.filmGrainIntensity, b.filmGrainIntensity, t),
ambientOcclusionEnabled: d.ambientOcclusionEnabled,
ambientOcclusionRadius: _lerp(
a.ambientOcclusionRadius,
b.ambientOcclusionRadius,
t,
),
ambientOcclusionIntensity: _lerp(
a.ambientOcclusionIntensity,
b.ambientOcclusionIntensity,
t,
),
ambientOcclusionBias: _lerp(
a.ambientOcclusionBias,
b.ambientOcclusionBias,
t,
),
);
}