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