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,
    environmentTransform: d.environmentTransform.clone(),
    skybox: d.skybox,
    skyEnvironment: d.skyEnvironment,
    sunLight: d.sunLight,
    toneMapping: d.toneMapping,
    agxWhite: _lerp(a.agxWhite, b.agxWhite, t),
    agxContrast: _lerp(a.agxContrast, b.agxContrast, t),
    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),
    colorGradingLut: d.colorGradingLut,
    colorGradingLutBlend: _lerp(
      a.colorGradingLutBlend,
      b.colorGradingLutBlend,
      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,
    ),
    ambientOcclusionPower: _lerp(
      a.ambientOcclusionPower,
      b.ambientOcclusionPower,
      t,
    ),
    ambientOcclusionDetail: _lerp(
      a.ambientOcclusionDetail,
      b.ambientOcclusionDetail,
      t,
    ),
    ambientOcclusionHorizonAngle: _lerp(
      a.ambientOcclusionHorizonAngle,
      b.ambientOcclusionHorizonAngle,
      t,
    ),
    ambientOcclusionDirectLightAffect: _lerp(
      a.ambientOcclusionDirectLightAffect,
      b.ambientOcclusionDirectLightAffect,
      t,
    ),
    ambientOcclusionMethod: d.ambientOcclusionMethod,
    ambientOcclusionMultiBounce: _lerp(
      a.ambientOcclusionMultiBounce,
      b.ambientOcclusionMultiBounce,
      t,
    ),
    ambientOcclusionSampleCount: d.ambientOcclusionSampleCount,
    ambientOcclusionSliceCount: d.ambientOcclusionSliceCount,
    ambientOcclusionStepsPerSlice: d.ambientOcclusionStepsPerSlice,
    ambientOcclusionVisibilityBitmask: d.ambientOcclusionVisibilityBitmask,
    ambientOcclusionBentNormals: d.ambientOcclusionBentNormals,
    ambientOcclusionIndirectLight: _lerp(
      a.ambientOcclusionIndirectLight,
      b.ambientOcclusionIndirectLight,
      t,
    ),
    ambientOcclusionThickness: _lerp(
      a.ambientOcclusionThickness,
      b.ambientOcclusionThickness,
      t,
    ),
    ambientOcclusionThicknessHeuristic: _lerp(
      a.ambientOcclusionThicknessHeuristic,
      b.ambientOcclusionThicknessHeuristic,
      t,
    ),
    ambientOcclusionHalfResolution: d.ambientOcclusionHalfResolution,
    ambientOcclusionDepthMipChain: d.ambientOcclusionDepthMipChain,
    ambientOcclusionSpecularMode: d.ambientOcclusionSpecularMode,
    screenSpaceReflectionsEnabled: d.screenSpaceReflectionsEnabled,
    screenSpaceReflectionsIntensity: _lerp(
      a.screenSpaceReflectionsIntensity,
      b.screenSpaceReflectionsIntensity,
      t,
    ),
    screenSpaceReflectionsMaxDistance: _lerp(
      a.screenSpaceReflectionsMaxDistance,
      b.screenSpaceReflectionsMaxDistance,
      t,
    ),
    screenSpaceReflectionsThickness: _lerp(
      a.screenSpaceReflectionsThickness,
      b.screenSpaceReflectionsThickness,
      t,
    ),
    screenSpaceReflectionsStride: _lerp(
      a.screenSpaceReflectionsStride,
      b.screenSpaceReflectionsStride,
      t,
    ),
    screenSpaceReflectionsMaxSteps: d.screenSpaceReflectionsMaxSteps,
    screenSpaceReflectionsBlur: _lerp(
      a.screenSpaceReflectionsBlur,
      b.screenSpaceReflectionsBlur,
      t,
    ),
    screenSpaceReflectionsDistanceFadeStart: _lerp(
      a.screenSpaceReflectionsDistanceFadeStart,
      b.screenSpaceReflectionsDistanceFadeStart,
      t,
    ),
    screenSpaceReflectionsResolutionScale: _lerp(
      a.screenSpaceReflectionsResolutionScale,
      b.screenSpaceReflectionsResolutionScale,
      t,
    ),
    fogEnabled: d.fogEnabled,
    fogMode: d.fogMode,
    fogColor: _lerpVec3(a.fogColor, b.fogColor, t),
    fogSkyColorInfluence: _lerp(
      a.fogSkyColorInfluence,
      b.fogSkyColorInfluence,
      t,
    ),
    fogDensity: _lerp(a.fogDensity, b.fogDensity, t),
    fogStart: _lerp(a.fogStart, b.fogStart, t),
    fogEnd: _lerp(a.fogEnd, b.fogEnd, t),
    fogMaxOpacity: _lerp(a.fogMaxOpacity, b.fogMaxOpacity, t),
    fogCutoffDistance: _lerp(a.fogCutoffDistance, b.fogCutoffDistance, t),
    fogHeight: _lerp(a.fogHeight, b.fogHeight, t),
    fogHeightFalloff: _lerp(a.fogHeightFalloff, b.fogHeightFalloff, t),
    fogSunInScatter: _lerp(a.fogSunInScatter, b.fogSunInScatter, t),
    fogSunInScatterExponent: _lerp(
      a.fogSunInScatterExponent,
      b.fogSunInScatterExponent,
      t,
    ),
    godRaysEnabled: d.godRaysEnabled,
    godRaysIntensity: _lerp(a.godRaysIntensity, b.godRaysIntensity, t),
    godRaysDensity: _lerp(a.godRaysDensity, b.godRaysDensity, t),
    godRaysAnisotropy: _lerp(a.godRaysAnisotropy, b.godRaysAnisotropy, t),
    godRaysStepCount: d.godRaysStepCount,
    godRaysMaxDistance: _lerp(a.godRaysMaxDistance, b.godRaysMaxDistance, t),
    godRaysJitter: _lerp(a.godRaysJitter, b.godRaysJitter, t),
    godRaysColor: _lerpVec3(a.godRaysColor, b.godRaysColor, t),
    depthOfFieldEnabled: d.depthOfFieldEnabled,
    depthOfFieldFocusDistance: _lerp(
      a.depthOfFieldFocusDistance,
      b.depthOfFieldFocusDistance,
      t,
    ),
    depthOfFieldFStop: _lerp(a.depthOfFieldFStop, b.depthOfFieldFStop, t),
    depthOfFieldFocalLength: _lerp(
      a.depthOfFieldFocalLength,
      b.depthOfFieldFocalLength,
      t,
    ),
    depthOfFieldSensorHeight: _lerp(
      a.depthOfFieldSensorHeight,
      b.depthOfFieldSensorHeight,
      t,
    ),
    depthOfFieldBlurScale: _lerp(
      a.depthOfFieldBlurScale,
      b.depthOfFieldBlurScale,
      t,
    ),
    depthOfFieldMaxForegroundBlur: _lerp(
      a.depthOfFieldMaxForegroundBlur,
      b.depthOfFieldMaxForegroundBlur,
      t,
    ),
    depthOfFieldMaxBackgroundBlur: _lerp(
      a.depthOfFieldMaxBackgroundBlur,
      b.depthOfFieldMaxBackgroundBlur,
      t,
    ),
    depthOfFieldBladeCount: d.depthOfFieldBladeCount,
    depthOfFieldBladeRotation: _lerp(
      a.depthOfFieldBladeRotation,
      b.depthOfFieldBladeRotation,
      t,
    ),
    depthOfFieldBladeCurvature: _lerp(
      a.depthOfFieldBladeCurvature,
      b.depthOfFieldBladeCurvature,
      t,
    ),
    depthOfFieldQuality: d.depthOfFieldQuality,
    autoExposureEnabled: d.autoExposureEnabled,
    autoExposureStrength: _lerp(
      a.autoExposureStrength,
      b.autoExposureStrength,
      t,
    ),
    autoExposureCompensation: _lerp(
      a.autoExposureCompensation,
      b.autoExposureCompensation,
      t,
    ),
    autoExposureMinEv: _lerp(a.autoExposureMinEv, b.autoExposureMinEv, t),
    autoExposureMaxEv: _lerp(a.autoExposureMaxEv, b.autoExposureMaxEv, t),
    autoExposureSpeedUp: _lerp(
      a.autoExposureSpeedUp,
      b.autoExposureSpeedUp,
      t,
    ),
    autoExposureSpeedDown: _lerp(
      a.autoExposureSpeedDown,
      b.autoExposureSpeedDown,
      t,
    ),
  );
}