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