@photivra/engine 1.5.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +414 -6
- package/CITATION.cff +1 -1
- package/NODE_SUPPORT.md +64 -12
- package/README.md +301 -182
- package/SECURITY.md +37 -28
- package/THIRD_PARTY.md +148 -4
- package/dist/camera/equivalent-focal-length.d.ts +13 -14
- package/dist/camera/equivalent-focal-length.js +15 -13
- package/dist/camera/equivalent-focal-length.js.map +1 -1
- package/dist/camera/field-of-view.d.ts +30 -19
- package/dist/camera/field-of-view.js +67 -18
- package/dist/camera/field-of-view.js.map +1 -1
- package/dist/camera/lens-projection.d.ts +170 -0
- package/dist/camera/lens-projection.js +444 -0
- package/dist/camera/lens-projection.js.map +1 -0
- package/dist/camera/projected-object-size.d.ts +10 -11
- package/dist/camera/projected-object-size.js +12 -10
- package/dist/camera/projected-object-size.js.map +1 -1
- package/dist/capture/capture-export-metadata.d.ts +9 -10
- package/dist/capture/capture-export-metadata.js +8 -5
- package/dist/capture/capture-export-metadata.js.map +1 -1
- package/dist/capture/dng-import.d.ts +91 -0
- package/dist/capture/dng-import.js +343 -0
- package/dist/capture/dng-import.js.map +1 -0
- package/dist/capture/environment-raw-producer.d.ts +37 -17
- package/dist/capture/environment-raw-producer.js +43 -19
- package/dist/capture/environment-raw-producer.js.map +1 -1
- package/dist/capture/export-jpeg.d.ts +35 -4
- package/dist/capture/export-jpeg.js +133 -47
- package/dist/capture/export-jpeg.js.map +1 -1
- package/dist/capture/export-tiff.d.ts +48 -24
- package/dist/capture/export-tiff.js +91 -31
- package/dist/capture/export-tiff.js.map +1 -1
- package/dist/capture/focus-control.d.ts +42 -65
- package/dist/capture/focus-control.js +56 -75
- package/dist/capture/focus-control.js.map +1 -1
- package/dist/capture/host-yield-cadence.d.ts +25 -0
- package/dist/capture/host-yield-cadence.js +25 -0
- package/dist/capture/host-yield-cadence.js.map +1 -0
- package/dist/capture/linear-encoding.d.ts +14 -12
- package/dist/capture/linear-encoding.js +14 -13
- package/dist/capture/linear-encoding.js.map +1 -1
- package/dist/capture/lossless-jpeg.d.ts +27 -0
- package/dist/capture/lossless-jpeg.js +237 -0
- package/dist/capture/lossless-jpeg.js.map +1 -0
- package/dist/capture/native-environment-lean.d.ts +227 -0
- package/dist/capture/native-environment-lean.js +974 -0
- package/dist/capture/native-environment-lean.js.map +1 -0
- package/dist/capture/native-environment-optical-stage.d.ts +97 -0
- package/dist/capture/native-environment-optical-stage.js +340 -0
- package/dist/capture/native-environment-optical-stage.js.map +1 -0
- package/dist/capture/native-environment-raw.d.ts +140 -6
- package/dist/capture/native-environment-raw.js +435 -34
- package/dist/capture/native-environment-raw.js.map +1 -1
- package/dist/capture/native-raw-development.d.ts +116 -9
- package/dist/capture/native-raw-development.js +221 -62
- package/dist/capture/native-raw-development.js.map +1 -1
- package/dist/capture/native-raw-dng.d.ts +60 -0
- package/dist/capture/native-raw-dng.js +167 -0
- package/dist/capture/native-raw-dng.js.map +1 -0
- package/dist/capture/native-raw.d.ts +65 -12
- package/dist/capture/native-raw.js +81 -19
- package/dist/capture/native-raw.js.map +1 -1
- package/dist/capture/packed-sensor-raw.d.ts +160 -0
- package/dist/capture/packed-sensor-raw.js +221 -0
- package/dist/capture/packed-sensor-raw.js.map +1 -0
- package/dist/capture/photographic-export.d.ts +58 -35
- package/dist/capture/photographic-export.js +177 -70
- package/dist/capture/photographic-export.js.map +1 -1
- package/dist/capture/raw-development-kernel.d.ts +52 -0
- package/dist/capture/raw-development-kernel.js +88 -0
- package/dist/capture/raw-development-kernel.js.map +1 -0
- package/dist/capture/raw-frame-limits.d.ts +7 -7
- package/dist/capture/raw-frame-limits.js +7 -6
- package/dist/capture/raw-frame-limits.js.map +1 -1
- package/dist/capture/raw-frame-reconstruction.d.ts +8 -9
- package/dist/capture/raw-frame-reconstruction.js +9 -8
- package/dist/capture/raw-frame-reconstruction.js.map +1 -1
- package/dist/capture/raw-white-level.d.ts +55 -0
- package/dist/capture/raw-white-level.js +165 -0
- package/dist/capture/raw-white-level.js.map +1 -0
- package/dist/capture/release-sequence.d.ts +5 -7
- package/dist/capture/release-sequence.js +15 -13
- package/dist/capture/release-sequence.js.map +1 -1
- package/dist/capture/sensor-raw-frame.d.ts +5 -6
- package/dist/capture/sensor-raw-frame.js +26 -9
- package/dist/capture/sensor-raw-frame.js.map +1 -1
- package/dist/capture/sensor-raw-producer.d.ts +21 -13
- package/dist/capture/sensor-raw-producer.js +86 -25
- package/dist/capture/sensor-raw-producer.js.map +1 -1
- package/dist/capture/simulated-capture.d.ts +15 -16
- package/dist/capture/simulated-capture.js +22 -12
- package/dist/capture/simulated-capture.js.map +1 -1
- package/dist/color/camera-color-matrix.d.ts +69 -0
- package/dist/color/camera-color-matrix.js +132 -0
- package/dist/color/camera-color-matrix.js.map +1 -0
- package/dist/color/capture-color.d.ts +17 -10
- package/dist/color/capture-color.js +50 -17
- package/dist/color/capture-color.js.map +1 -1
- package/dist/color/chromatic-adaptation.d.ts +63 -0
- package/dist/color/chromatic-adaptation.js +91 -0
- package/dist/color/chromatic-adaptation.js.map +1 -0
- package/dist/color/color-difference.d.ts +104 -0
- package/dist/color/color-difference.js +205 -0
- package/dist/color/color-difference.js.map +1 -0
- package/dist/color/color-matching-functions.d.ts +168 -0
- package/dist/color/color-matching-functions.js +309 -0
- package/dist/color/color-matching-functions.js.map +1 -0
- package/dist/color/colorimetry-math.d.ts +52 -0
- package/dist/color/colorimetry-math.js +144 -0
- package/dist/color/colorimetry-math.js.map +1 -0
- package/dist/color/gamut-mapping.d.ts +54 -0
- package/dist/color/gamut-mapping.js +107 -0
- package/dist/color/gamut-mapping.js.map +1 -0
- package/dist/color/illuminants.d.ts +182 -0
- package/dist/color/illuminants.js +434 -0
- package/dist/color/illuminants.js.map +1 -0
- package/dist/color/rgb-color-spaces.d.ts +79 -0
- package/dist/color/rgb-color-spaces.js +115 -0
- package/dist/color/rgb-color-spaces.js.map +1 -0
- package/dist/color/sensor-color-development.d.ts +33 -11
- package/dist/color/sensor-color-development.js +104 -30
- package/dist/color/sensor-color-development.js.map +1 -1
- package/dist/color/srgb-icc.d.ts +9 -2
- package/dist/color/srgb-icc.js +16 -5
- package/dist/color/srgb-icc.js.map +1 -1
- package/dist/color/srgb-transfer.d.ts +1 -2
- package/dist/color/srgb-transfer.js +1 -1
- package/dist/color/srgb-transfer.js.map +1 -1
- package/dist/color/white-balance.d.ts +68 -19
- package/dist/color/white-balance.js +168 -35
- package/dist/color/white-balance.js.map +1 -1
- package/dist/composition/image-formation-plan.d.ts +152 -128
- package/dist/composition/image-formation-plan.js +292 -138
- package/dist/composition/image-formation-plan.js.map +1 -1
- package/dist/composition/plan-consumer.d.ts +6 -7
- package/dist/composition/plan-consumer.js +14 -11
- package/dist/composition/plan-consumer.js.map +1 -1
- package/dist/core/calculation-result.d.ts +21 -14
- package/dist/core/calculation-result.js +209 -11
- package/dist/core/calculation-result.js.map +1 -1
- package/dist/core/canonical-json.d.ts +13 -8
- package/dist/core/canonical-json.js +34 -15
- package/dist/core/canonical-json.js.map +1 -1
- package/dist/core/configuration-error.d.ts +5 -4
- package/dist/core/configuration-error.js +5 -3
- package/dist/core/configuration-error.js.map +1 -1
- package/dist/core/evidence-provenance.d.ts +12 -12
- package/dist/core/evidence-provenance.js +10 -9
- package/dist/core/evidence-provenance.js.map +1 -1
- package/dist/core/image-formation.d.ts +11 -10
- package/dist/core/image-formation.js +11 -9
- package/dist/core/image-formation.js.map +1 -1
- package/dist/core/owned-data.d.ts +9 -17
- package/dist/core/owned-data.js +9 -16
- package/dist/core/owned-data.js.map +1 -1
- package/dist/core/portable-math.d.ts +15 -0
- package/dist/core/portable-math.js +56 -0
- package/dist/core/portable-math.js.map +1 -0
- package/dist/core/record-validation.d.ts +48 -9
- package/dist/core/record-validation.js +93 -19
- package/dist/core/record-validation.js.map +1 -1
- package/dist/core/scientific-assurance.d.ts +16 -14
- package/dist/core/scientific-assurance.js +22 -18
- package/dist/core/scientific-assurance.js.map +1 -1
- package/dist/core/spectral-composition.d.ts +13 -14
- package/dist/core/spectral-composition.js +30 -27
- package/dist/core/spectral-composition.js.map +1 -1
- package/dist/core/spectral.d.ts +5 -6
- package/dist/core/spectral.js +9 -7
- package/dist/core/spectral.js.map +1 -1
- package/dist/core/validation.d.ts +3 -6
- package/dist/core/validation.js +3 -5
- package/dist/core/validation.js.map +1 -1
- package/dist/core/version.d.ts +6 -6
- package/dist/core/version.js +6 -5
- package/dist/core/version.js.map +1 -1
- package/dist/equipment/exposure-capabilities.d.ts +10 -10
- package/dist/equipment/exposure-capabilities.js +40 -30
- package/dist/equipment/exposure-capabilities.js.map +1 -1
- package/dist/equipment/generic-tier-assets.d.ts +13 -6
- package/dist/equipment/generic-tier-assets.js +34 -15
- package/dist/equipment/generic-tier-assets.js.map +1 -1
- package/dist/equipment/generic-tier-presets.d.ts +5 -6
- package/dist/equipment/generic-tier-presets.js +15 -13
- package/dist/equipment/generic-tier-presets.js.map +1 -1
- package/dist/equipment/iso-capabilities.d.ts +21 -22
- package/dist/equipment/iso-capabilities.js +49 -44
- package/dist/equipment/iso-capabilities.js.map +1 -1
- package/dist/equipment/metering-capabilities.d.ts +5 -6
- package/dist/equipment/metering-capabilities.js +22 -19
- package/dist/equipment/metering-capabilities.js.map +1 -1
- package/dist/equipment/release-capabilities.d.ts +3 -4
- package/dist/equipment/release-capabilities.js +18 -14
- package/dist/equipment/release-capabilities.js.map +1 -1
- package/dist/exposure/exposure-duration-control.d.ts +19 -17
- package/dist/exposure/exposure-duration-control.js +27 -23
- package/dist/exposure/exposure-duration-control.js.map +1 -1
- package/dist/exposure/exposure-mode-resolver.d.ts +42 -39
- package/dist/exposure/exposure-mode-resolver.js +127 -82
- package/dist/exposure/exposure-mode-resolver.js.map +1 -1
- package/dist/exposure/exposure.d.ts +17 -16
- package/dist/exposure/exposure.js +22 -15
- package/dist/exposure/exposure.js.map +1 -1
- package/dist/exposure/flash-ttl.d.ts +135 -0
- package/dist/exposure/flash-ttl.js +193 -0
- package/dist/exposure/flash-ttl.js.map +1 -0
- package/dist/exposure/flash.d.ts +144 -36
- package/dist/exposure/flash.js +259 -59
- package/dist/exposure/flash.js.map +1 -1
- package/dist/exposure/metering-scene-radiance.d.ts +10 -10
- package/dist/exposure/metering-scene-radiance.js +42 -23
- package/dist/exposure/metering-scene-radiance.js.map +1 -1
- package/dist/exposure/metering-target.d.ts +8 -8
- package/dist/exposure/metering-target.js +30 -20
- package/dist/exposure/metering-target.js.map +1 -1
- package/dist/exposure/metering-temporal.d.ts +16 -15
- package/dist/exposure/metering-temporal.js +41 -19
- package/dist/exposure/metering-temporal.js.map +1 -1
- package/dist/exposure/metering.d.ts +64 -17
- package/dist/exposure/metering.js +159 -30
- package/dist/exposure/metering.js.map +1 -1
- package/dist/exposure/program-line.d.ts +5 -5
- package/dist/exposure/program-line.js +20 -13
- package/dist/exposure/program-line.js.map +1 -1
- package/dist/facade/camera-preset.d.ts +8 -0
- package/dist/facade/camera-preset.js +102 -0
- package/dist/facade/camera-preset.js.map +1 -0
- package/dist/facade/chart-radiance-batch.d.ts +57 -0
- package/dist/facade/chart-radiance-batch.js +121 -0
- package/dist/facade/chart-radiance-batch.js.map +1 -0
- package/dist/facade/chart-scenes.d.ts +177 -0
- package/dist/facade/chart-scenes.js +232 -0
- package/dist/facade/chart-scenes.js.map +1 -0
- package/dist/facade/diffraction-provider.d.ts +30 -0
- package/dist/facade/diffraction-provider.js +127 -0
- package/dist/facade/diffraction-provider.js.map +1 -0
- package/dist/facade/host-yield.d.ts +7 -0
- package/dist/facade/host-yield.js +19 -0
- package/dist/facade/host-yield.js.map +1 -0
- package/dist/facade/scene-radiance.d.ts +117 -0
- package/dist/facade/scene-radiance.js +205 -0
- package/dist/facade/scene-radiance.js.map +1 -0
- package/dist/facade/simulate-capture.d.ts +363 -0
- package/dist/facade/simulate-capture.js +1281 -0
- package/dist/facade/simulate-capture.js.map +1 -0
- package/dist/gpu/chart-radiance-gpu.d.ts +17 -0
- package/dist/gpu/chart-radiance-gpu.js +176 -0
- package/dist/gpu/chart-radiance-gpu.js.map +1 -0
- package/dist/gpu/image-kernel-accelerator.d.ts +132 -0
- package/dist/gpu/image-kernel-accelerator.js +720 -0
- package/dist/gpu/image-kernel-accelerator.js.map +1 -0
- package/dist/gpu/image-kernel-execution.d.ts +92 -0
- package/dist/gpu/image-kernel-execution.js +84 -0
- package/dist/gpu/image-kernel-execution.js.map +1 -0
- package/dist/gpu/sensor-stage-gpu.d.ts +44 -0
- package/dist/gpu/sensor-stage-gpu.js +317 -0
- package/dist/gpu/sensor-stage-gpu.js.map +1 -0
- package/dist/gpu/temporal-sum-gpu.d.ts +23 -0
- package/dist/gpu/temporal-sum-gpu.js +150 -0
- package/dist/gpu/temporal-sum-gpu.js.map +1 -0
- package/dist/gpu/webgpu-runtime.d.ts +63 -0
- package/dist/gpu/webgpu-runtime.js +215 -0
- package/dist/gpu/webgpu-runtime.js.map +1 -0
- package/dist/gpu/wgsl-chart-kernel.d.ts +30 -0
- package/dist/gpu/wgsl-chart-kernel.js +165 -0
- package/dist/gpu/wgsl-chart-kernel.js.map +1 -0
- package/dist/gpu/wgsl-kernels.d.ts +53 -0
- package/dist/gpu/wgsl-kernels.js +365 -0
- package/dist/gpu/wgsl-kernels.js.map +1 -0
- package/dist/gpu/wgsl-sensor-kernel.d.ts +64 -0
- package/dist/gpu/wgsl-sensor-kernel.js +409 -0
- package/dist/gpu/wgsl-sensor-kernel.js.map +1 -0
- package/dist/index.d.ts +91 -25
- package/dist/index.js +60 -15
- package/dist/index.js.map +1 -1
- package/dist/motion/camera-rotation.d.ts +92 -40
- package/dist/motion/camera-rotation.js +84 -47
- package/dist/motion/camera-rotation.js.map +1 -1
- package/dist/motion/capture-rotation-inverse-mapping.d.ts +37 -34
- package/dist/motion/capture-rotation-inverse-mapping.js +32 -24
- package/dist/motion/capture-rotation-inverse-mapping.js.map +1 -1
- package/dist/motion/capture-rotation-temporal-quadrature.d.ts +39 -35
- package/dist/motion/capture-rotation-temporal-quadrature.js +37 -28
- package/dist/motion/capture-rotation-temporal-quadrature.js.map +1 -1
- package/dist/motion/capture-rotation-trajectory.d.ts +32 -28
- package/dist/motion/capture-rotation-trajectory.js +36 -26
- package/dist/motion/capture-rotation-trajectory.js.map +1 -1
- package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts +23 -21
- package/dist/motion/capture-translation-parallax-temporal-quadrature.js +33 -14
- package/dist/motion/capture-translation-parallax-temporal-quadrature.js.map +1 -1
- package/dist/motion/extended-object-projection.d.ts +19 -16
- package/dist/motion/extended-object-projection.js +38 -18
- package/dist/motion/extended-object-projection.js.map +1 -1
- package/dist/motion/projected-motion.d.ts +18 -17
- package/dist/motion/projected-motion.js +25 -17
- package/dist/motion/projected-motion.js.map +1 -1
- package/dist/motion/temporal-exposure-sum.d.ts +55 -0
- package/dist/motion/temporal-exposure-sum.js +141 -0
- package/dist/motion/temporal-exposure-sum.js.map +1 -0
- package/dist/motion/video-sequence.d.ts +111 -0
- package/dist/motion/video-sequence.js +179 -0
- package/dist/motion/video-sequence.js.map +1 -0
- package/dist/optics/aperture.d.ts +14 -15
- package/dist/optics/aperture.js +13 -11
- package/dist/optics/aperture.js.map +1 -1
- package/dist/optics/atmospheric-haze.d.ts +83 -0
- package/dist/optics/atmospheric-haze.js +113 -0
- package/dist/optics/atmospheric-haze.js.map +1 -0
- package/dist/optics/brown-conrady-distortion.d.ts +116 -0
- package/dist/optics/brown-conrady-distortion.js +291 -0
- package/dist/optics/brown-conrady-distortion.js.map +1 -0
- package/dist/optics/circle-of-confusion.d.ts +10 -10
- package/dist/optics/circle-of-confusion.js +15 -11
- package/dist/optics/circle-of-confusion.js.map +1 -1
- package/dist/optics/complex-pupil-psf.d.ts +64 -33
- package/dist/optics/complex-pupil-psf.js +190 -98
- package/dist/optics/complex-pupil-psf.js.map +1 -1
- package/dist/optics/depth-of-field.d.ts +25 -15
- package/dist/optics/depth-of-field.js +67 -27
- package/dist/optics/depth-of-field.js.map +1 -1
- package/dist/optics/diffraction-psf-profile.d.ts +118 -0
- package/dist/optics/diffraction-psf-profile.js +252 -0
- package/dist/optics/diffraction-psf-profile.js.map +1 -0
- package/dist/optics/diffraction.d.ts +14 -13
- package/dist/optics/diffraction.js +14 -10
- package/dist/optics/diffraction.js.map +1 -1
- package/dist/optics/focus-breathing.d.ts +88 -27
- package/dist/optics/focus-breathing.js +114 -23
- package/dist/optics/focus-breathing.js.map +1 -1
- package/dist/optics/focus-state.d.ts +18 -18
- package/dist/optics/focus-state.js +21 -15
- package/dist/optics/focus-state.js.map +1 -1
- package/dist/optics/front-of-lens-filter.d.ts +45 -14
- package/dist/optics/front-of-lens-filter.js +259 -88
- package/dist/optics/front-of-lens-filter.js.map +1 -1
- package/dist/optics/illumination-vignetting.d.ts +16 -17
- package/dist/optics/illumination-vignetting.js +40 -17
- package/dist/optics/illumination-vignetting.js.map +1 -1
- package/dist/optics/irradiance-convolution.d.ts +59 -0
- package/dist/optics/irradiance-convolution.js +138 -0
- package/dist/optics/irradiance-convolution.js.map +1 -0
- package/dist/optics/lateral-chromatic-aberration.d.ts +33 -30
- package/dist/optics/lateral-chromatic-aberration.js +33 -23
- package/dist/optics/lateral-chromatic-aberration.js.map +1 -1
- package/dist/optics/lens-psf-kernels.d.ts +89 -0
- package/dist/optics/lens-psf-kernels.js +175 -0
- package/dist/optics/lens-psf-kernels.js.map +1 -0
- package/dist/optics/lens-psf-profile.d.ts +78 -46
- package/dist/optics/lens-psf-profile.js +335 -124
- package/dist/optics/lens-psf-profile.js.map +1 -1
- package/dist/optics/longitudinal-chromatic-aberration.d.ts +102 -0
- package/dist/optics/longitudinal-chromatic-aberration.js +210 -0
- package/dist/optics/longitudinal-chromatic-aberration.js.map +1 -0
- package/dist/optics/polygon-diffraction.d.ts +80 -23
- package/dist/optics/polygon-diffraction.js +130 -25
- package/dist/optics/polygon-diffraction.js.map +1 -1
- package/dist/optics/profile-contract.d.ts +5 -6
- package/dist/optics/profile-contract.js +14 -11
- package/dist/optics/profile-contract.js.map +1 -1
- package/dist/optics/psf-foundation.d.ts +23 -23
- package/dist/optics/psf-foundation.js +24 -21
- package/dist/optics/psf-foundation.js.map +1 -1
- package/dist/optics/pupil-vignetting.d.ts +118 -0
- package/dist/optics/pupil-vignetting.js +264 -0
- package/dist/optics/pupil-vignetting.js.map +1 -0
- package/dist/optics/radial-distortion.d.ts +34 -33
- package/dist/optics/radial-distortion.js +37 -30
- package/dist/optics/radial-distortion.js.map +1 -1
- package/dist/optics/scene-to-sensor-irradiance.d.ts +47 -33
- package/dist/optics/scene-to-sensor-irradiance.js +73 -45
- package/dist/optics/scene-to-sensor-irradiance.js.map +1 -1
- package/dist/optics/scene-to-sensor-quadrature.d.ts +23 -18
- package/dist/optics/scene-to-sensor-quadrature.js +16 -11
- package/dist/optics/scene-to-sensor-quadrature.js.map +1 -1
- package/dist/optics/sensor-aperture-rays.d.ts +20 -4
- package/dist/optics/sensor-aperture-rays.js +32 -14
- package/dist/optics/sensor-aperture-rays.js.map +1 -1
- package/dist/optics/sensor-environment-query.d.ts +81 -16
- package/dist/optics/sensor-environment-query.js +145 -12
- package/dist/optics/sensor-environment-query.js.map +1 -1
- package/dist/optics/sensor-psf-quadrature.d.ts +12 -10
- package/dist/optics/sensor-psf-quadrature.js +18 -11
- package/dist/optics/sensor-psf-quadrature.js.map +1 -1
- package/dist/optics/sensor-psf-support.d.ts +8 -6
- package/dist/optics/sensor-psf-support.js +8 -5
- package/dist/optics/sensor-psf-support.js.map +1 -1
- package/dist/optics/stray-light.d.ts +22 -19
- package/dist/optics/stray-light.js +18 -12
- package/dist/optics/stray-light.js.map +1 -1
- package/dist/optics/thin-lens.d.ts +10 -9
- package/dist/optics/thin-lens.js +12 -8
- package/dist/optics/thin-lens.js.map +1 -1
- package/dist/optics/zernike-wavefront.d.ts +154 -0
- package/dist/optics/zernike-wavefront.js +352 -0
- package/dist/optics/zernike-wavefront.js.map +1 -0
- package/dist/output/capture-corrected-sdr.d.ts +16 -8
- package/dist/output/capture-corrected-sdr.js +16 -8
- package/dist/output/capture-corrected-sdr.js.map +1 -1
- package/dist/output/capture-geometry.d.ts +34 -36
- package/dist/output/capture-geometry.js +52 -32
- package/dist/output/capture-geometry.js.map +1 -1
- package/dist/output/capture-sdr.d.ts +7 -6
- package/dist/output/capture-sdr.js +11 -8
- package/dist/output/capture-sdr.js.map +1 -1
- package/dist/output/crop.d.ts +22 -6
- package/dist/output/crop.js +40 -6
- package/dist/output/crop.js.map +1 -1
- package/dist/output/geometric-transforms.d.ts +60 -23
- package/dist/output/geometric-transforms.js +111 -24
- package/dist/output/geometric-transforms.js.map +1 -1
- package/dist/output/lens-corrections.d.ts +27 -19
- package/dist/output/lens-corrections.js +29 -13
- package/dist/output/lens-corrections.js.map +1 -1
- package/dist/output/native-capture-sdr.d.ts +71 -16
- package/dist/output/native-capture-sdr.js +190 -33
- package/dist/output/native-capture-sdr.js.map +1 -1
- package/dist/output/png-encoder.d.ts +65 -0
- package/dist/output/png-encoder.js +461 -0
- package/dist/output/png-encoder.js.map +1 -0
- package/dist/output/print-contrast-reference.d.ts +10 -9
- package/dist/output/print-contrast-reference.js +10 -8
- package/dist/output/print-contrast-reference.js.map +1 -1
- package/dist/output/print-detail.d.ts +18 -17
- package/dist/output/print-detail.js +12 -10
- package/dist/output/print-detail.js.map +1 -1
- package/dist/output/print-jpeg.d.ts +26 -5
- package/dist/output/print-jpeg.js +117 -50
- package/dist/output/print-jpeg.js.map +1 -1
- package/dist/output/print-plan.d.ts +19 -19
- package/dist/output/print-plan.js +11 -10
- package/dist/output/print-plan.js.map +1 -1
- package/dist/output/print-region-statistics.d.ts +14 -15
- package/dist/output/print-region-statistics.js +11 -11
- package/dist/output/print-region-statistics.js.map +1 -1
- package/dist/output/sdr-rendering.d.ts +48 -10
- package/dist/output/sdr-rendering.js +114 -25
- package/dist/output/sdr-rendering.js.map +1 -1
- package/dist/output/subject-framing-crop.d.ts +6 -10
- package/dist/output/subject-framing-crop.js +23 -13
- package/dist/output/subject-framing-crop.js.map +1 -1
- package/dist/processing/demosaic.d.ts +90 -0
- package/dist/processing/demosaic.js +275 -0
- package/dist/processing/demosaic.js.map +1 -0
- package/dist/processing/denoise.d.ts +68 -0
- package/dist/processing/denoise.js +214 -0
- package/dist/processing/denoise.js.map +1 -0
- package/dist/processing/focus-stacking.d.ts +17 -0
- package/dist/processing/focus-stacking.js +80 -0
- package/dist/processing/focus-stacking.js.map +1 -0
- package/dist/processing/hdr.d.ts +54 -0
- package/dist/processing/hdr.js +172 -0
- package/dist/processing/hdr.js.map +1 -0
- package/dist/processing/image-ops.d.ts +66 -0
- package/dist/processing/image-ops.js +192 -0
- package/dist/processing/image-ops.js.map +1 -0
- package/dist/processing/panorama.d.ts +51 -0
- package/dist/processing/panorama.js +305 -0
- package/dist/processing/panorama.js.map +1 -0
- package/dist/processing/processing-task.d.ts +85 -0
- package/dist/processing/processing-task.js +164 -0
- package/dist/processing/processing-task.js.map +1 -0
- package/dist/processing/tone-mapping.d.ts +69 -0
- package/dist/processing/tone-mapping.js +310 -0
- package/dist/processing/tone-mapping.js.map +1 -0
- package/dist/schema/camera.d.ts +5 -4
- package/dist/schema/illumination-spectral.d.ts +13 -19
- package/dist/schema/illumination-spectral.js +23 -19
- package/dist/schema/illumination-spectral.js.map +1 -1
- package/dist/schema/illumination-temporal.d.ts +12 -15
- package/dist/schema/illumination-temporal.js +43 -28
- package/dist/schema/illumination-temporal.js.map +1 -1
- package/dist/schema/illumination.d.ts +5 -4
- package/dist/schema/illumination.js +55 -20
- package/dist/schema/illumination.js.map +1 -1
- package/dist/schema/scene-radiance-temporal.d.ts +9 -11
- package/dist/schema/scene-radiance-temporal.js +26 -23
- package/dist/schema/scene-radiance-temporal.js.map +1 -1
- package/dist/schema/scene-radiance.d.ts +17 -17
- package/dist/schema/scene-radiance.js +56 -34
- package/dist/schema/scene-radiance.js.map +1 -1
- package/dist/schema/scene.d.ts +14 -13
- package/dist/schema/validation.d.ts +0 -1
- package/dist/schema/validation.js +17 -15
- package/dist/schema/validation.js.map +1 -1
- package/dist/sensor/accumulated-charge.d.ts +45 -64
- package/dist/sensor/accumulated-charge.js +41 -47
- package/dist/sensor/accumulated-charge.js.map +1 -1
- package/dist/sensor/architecture.d.ts +22 -25
- package/dist/sensor/architecture.js +17 -16
- package/dist/sensor/architecture.js.map +1 -1
- package/dist/sensor/camera-saturation-capacity.d.ts +21 -28
- package/dist/sensor/camera-saturation-capacity.js +36 -34
- package/dist/sensor/camera-saturation-capacity.js.map +1 -1
- package/dist/sensor/capture-color-sampling-binding.d.ts +46 -51
- package/dist/sensor/capture-color-sampling-binding.js +39 -41
- package/dist/sensor/capture-color-sampling-binding.js.map +1 -1
- package/dist/sensor/capture-mode-timing.d.ts +8 -9
- package/dist/sensor/capture-mode-timing.js +24 -21
- package/dist/sensor/capture-mode-timing.js.map +1 -1
- package/dist/sensor/capture-mode.d.ts +28 -30
- package/dist/sensor/capture-mode.js +33 -31
- package/dist/sensor/capture-mode.js.map +1 -1
- package/dist/sensor/color-sampling.d.ts +30 -33
- package/dist/sensor/color-sampling.js +32 -37
- package/dist/sensor/color-sampling.js.map +1 -1
- package/dist/sensor/constant-rate-temporal-integration.d.ts +19 -23
- package/dist/sensor/constant-rate-temporal-integration.js +28 -26
- package/dist/sensor/constant-rate-temporal-integration.js.map +1 -1
- package/dist/sensor/dark-current.d.ts +53 -49
- package/dist/sensor/dark-current.js +87 -46
- package/dist/sensor/dark-current.js.map +1 -1
- package/dist/sensor/environment-photo-signal.d.ts +71 -30
- package/dist/sensor/environment-photo-signal.js +127 -46
- package/dist/sensor/environment-photo-signal.js.map +1 -1
- package/dist/sensor/eqe-electron-rate.d.ts +14 -13
- package/dist/sensor/eqe-electron-rate.js +34 -14
- package/dist/sensor/eqe-electron-rate.js.map +1 -1
- package/dist/sensor/eqe-local-exposure.d.ts +24 -24
- package/dist/sensor/eqe-local-exposure.js +15 -11
- package/dist/sensor/eqe-local-exposure.js.map +1 -1
- package/dist/sensor/eqe-temporal-exposure.d.ts +11 -11
- package/dist/sensor/eqe-temporal-exposure.js +15 -10
- package/dist/sensor/eqe-temporal-exposure.js.map +1 -1
- package/dist/sensor/exposure-window.d.ts +48 -34
- package/dist/sensor/exposure-window.js +77 -36
- package/dist/sensor/exposure-window.js.map +1 -1
- package/dist/sensor/fixed-pattern-noise.d.ts +108 -0
- package/dist/sensor/fixed-pattern-noise.js +166 -0
- package/dist/sensor/fixed-pattern-noise.js.map +1 -0
- package/dist/sensor/iso-gain.d.ts +44 -0
- package/dist/sensor/iso-gain.js +119 -0
- package/dist/sensor/iso-gain.js.map +1 -0
- package/dist/sensor/iso-signal-chain.d.ts +25 -48
- package/dist/sensor/iso-signal-chain.js +52 -66
- package/dist/sensor/iso-signal-chain.js.map +1 -1
- package/dist/sensor/local-exposure-binding.d.ts +21 -21
- package/dist/sensor/local-exposure-binding.js +22 -18
- package/dist/sensor/local-exposure-binding.js.map +1 -1
- package/dist/sensor/optical-stack.d.ts +36 -40
- package/dist/sensor/optical-stack.js +34 -37
- package/dist/sensor/optical-stack.js.map +1 -1
- package/dist/sensor/photon-energy.d.ts +22 -28
- package/dist/sensor/photon-energy.js +42 -34
- package/dist/sensor/photon-energy.js.map +1 -1
- package/dist/sensor/physical-charge-capacity.d.ts +20 -30
- package/dist/sensor/physical-charge-capacity.js +35 -36
- package/dist/sensor/physical-charge-capacity.js.map +1 -1
- package/dist/sensor/pixel-pitch.d.ts +2 -3
- package/dist/sensor/pixel-pitch.js +4 -2
- package/dist/sensor/pixel-pitch.js.map +1 -1
- package/dist/sensor/radiometry-readiness.d.ts +13 -15
- package/dist/sensor/radiometry-readiness.js +20 -17
- package/dist/sensor/radiometry-readiness.js.map +1 -1
- package/dist/sensor/raw-readout.d.ts +173 -83
- package/dist/sensor/raw-readout.js +425 -160
- package/dist/sensor/raw-readout.js.map +1 -1
- package/dist/sensor/raw-reconstruction.d.ts +112 -44
- package/dist/sensor/raw-reconstruction.js +200 -47
- package/dist/sensor/raw-reconstruction.js.map +1 -1
- package/dist/sensor/readout-exposure-linkage.d.ts +103 -34
- package/dist/sensor/readout-exposure-linkage.js +125 -27
- package/dist/sensor/readout-exposure-linkage.js.map +1 -1
- package/dist/sensor/readout-timing.d.ts +43 -44
- package/dist/sensor/readout-timing.js +38 -30
- package/dist/sensor/readout-timing.js.map +1 -1
- package/dist/sensor/response-application-compatibility.d.ts +21 -28
- package/dist/sensor/response-application-compatibility.js +35 -34
- package/dist/sensor/response-application-compatibility.js.map +1 -1
- package/dist/sensor/response-operating-range.d.ts +26 -35
- package/dist/sensor/response-operating-range.js +40 -39
- package/dist/sensor/response-operating-range.js.map +1 -1
- package/dist/sensor/responsivity-photocurrent.d.ts +21 -29
- package/dist/sensor/responsivity-photocurrent.js +57 -40
- package/dist/sensor/responsivity-photocurrent.js.map +1 -1
- package/dist/sensor/sampling-aperture.d.ts +21 -25
- package/dist/sensor/sampling-aperture.js +29 -28
- package/dist/sensor/sampling-aperture.js.map +1 -1
- package/dist/sensor/scene-eqe-temporal-exposure.d.ts +14 -12
- package/dist/sensor/scene-eqe-temporal-exposure.js +13 -8
- package/dist/sensor/scene-eqe-temporal-exposure.js.map +1 -1
- package/dist/sensor/sensor-geometry.d.ts +28 -32
- package/dist/sensor/sensor-geometry.js +35 -20
- package/dist/sensor/sensor-geometry.js.map +1 -1
- package/dist/sensor/signal-noise.d.ts +14 -16
- package/dist/sensor/signal-noise.js +15 -13
- package/dist/sensor/signal-noise.js.map +1 -1
- package/dist/sensor/spatial-sample-reduction.d.ts +45 -60
- package/dist/sensor/spatial-sample-reduction.js +39 -48
- package/dist/sensor/spatial-sample-reduction.js.map +1 -1
- package/dist/sensor/spatial-sampling-quadrature.d.ts +46 -54
- package/dist/sensor/spatial-sampling-quadrature.js +31 -36
- package/dist/sensor/spatial-sampling-quadrature.js.map +1 -1
- package/dist/sensor/spatio-spectral-reduction.d.ts +32 -42
- package/dist/sensor/spatio-spectral-reduction.js +24 -29
- package/dist/sensor/spatio-spectral-reduction.js.map +1 -1
- package/dist/sensor/spectral-coverage.d.ts +6 -9
- package/dist/sensor/spectral-coverage.js +9 -6
- package/dist/sensor/spectral-coverage.js.map +1 -1
- package/dist/sensor/spectral-quadrature.d.ts +46 -60
- package/dist/sensor/spectral-quadrature.js +38 -48
- package/dist/sensor/spectral-quadrature.js.map +1 -1
- package/dist/sensor/spectral-response.d.ts +53 -41
- package/dist/sensor/spectral-response.js +80 -47
- package/dist/sensor/spectral-response.js.map +1 -1
- package/dist/sensor/stochastic-seed.d.ts +50 -0
- package/dist/sensor/stochastic-seed.js +123 -0
- package/dist/sensor/stochastic-seed.js.map +1 -0
- package/dist/sensor/temporal-eqe-sum.d.ts +2 -4
- package/dist/sensor/temporal-eqe-sum.js +5 -6
- package/dist/sensor/temporal-eqe-sum.js.map +1 -1
- package/dist/sensor/temporal-photo-signal.d.ts +5 -6
- package/dist/sensor/temporal-photo-signal.js +11 -10
- package/dist/sensor/temporal-photo-signal.js.map +1 -1
- package/dist/sensor/temporal-sample-binding.d.ts +1 -2
- package/dist/sensor/temporal-sample-binding.js +3 -3
- package/dist/sensor/temporal-sample-binding.js.map +1 -1
- package/dist/simulation/poc-simulation.d.ts +16 -16
- package/dist/simulation/poc-simulation.js +20 -15
- package/dist/simulation/poc-simulation.js.map +1 -1
- package/dist/stabilization/camera-shake.d.ts +42 -18
- package/dist/stabilization/camera-shake.js +43 -20
- package/dist/stabilization/camera-shake.js.map +1 -1
- package/dist/stabilization/system.d.ts +44 -41
- package/dist/stabilization/system.js +196 -108
- package/dist/stabilization/system.js.map +1 -1
- package/docs/AGENT_GUIDE.md +183 -0
- package/docs/API_REFERENCE.md +777 -2
- package/docs/QUICK_START.md +663 -0
- package/docs/USAGE.md +1719 -714
- package/docs/api/camera-equivalent-focal-length.md +6 -7
- package/docs/api/camera-field-of-view.md +16 -8
- package/docs/api/camera-lens-projection.md +246 -0
- package/docs/api/camera-projected-object-size.md +6 -5
- package/docs/api/capture-capture-export-metadata.md +10 -10
- package/docs/api/capture-dng-import.md +134 -0
- package/docs/api/capture-environment-raw-producer.md +17 -11
- package/docs/api/capture-export-jpeg.md +16 -0
- package/docs/api/capture-focus-control.md +25 -47
- package/docs/api/capture-linear-encoding.md +21 -12
- package/docs/api/capture-lossless-jpeg.md +49 -0
- package/docs/api/capture-native-environment-optical-stage.md +75 -0
- package/docs/api/capture-native-environment-raw.md +161 -4
- package/docs/api/capture-native-raw-development.md +69 -8
- package/docs/api/capture-native-raw-dng.md +84 -0
- package/docs/api/capture-native-raw.md +21 -10
- package/docs/api/capture-packed-sensor-raw.md +156 -0
- package/docs/api/capture-photographic-export.md +69 -31
- package/docs/api/capture-raw-frame-reconstruction.md +8 -8
- package/docs/api/capture-raw-white-level.md +37 -0
- package/docs/api/capture-release-sequence.md +6 -7
- package/docs/api/capture-sensor-raw-frame.md +6 -6
- package/docs/api/capture-sensor-raw-producer.md +17 -11
- package/docs/api/capture-simulated-capture.md +15 -15
- package/docs/api/color-camera-color-matrix.md +103 -0
- package/docs/api/color-capture-color.md +22 -11
- package/docs/api/color-chromatic-adaptation.md +82 -0
- package/docs/api/color-color-difference.md +134 -0
- package/docs/api/color-color-matching-functions.md +259 -0
- package/docs/api/color-colorimetry-math.md +54 -0
- package/docs/api/color-gamut-mapping.md +72 -0
- package/docs/api/color-illuminants.md +280 -0
- package/docs/api/color-rgb-color-spaces.md +151 -0
- package/docs/api/color-sensor-color-development.md +27 -0
- package/docs/api/color-srgb-icc.md +2 -4
- package/docs/api/color-white-balance.md +95 -19
- package/docs/api/composition-image-formation-plan.md +124 -95
- package/docs/api/composition-plan-consumer.md +7 -7
- package/docs/api/core-calculation-result.md +18 -14
- package/docs/api/core-configuration-error.md +1 -1
- package/docs/api/core-image-formation.md +7 -7
- package/docs/api/core-scientific-assurance.md +12 -10
- package/docs/api/core-spectral-composition.md +14 -14
- package/docs/api/core-spectral.md +6 -6
- package/docs/api/core-validation.md +3 -3
- package/docs/api/core-version.md +7 -6
- package/docs/api/equipment-exposure-capabilities.md +11 -10
- package/docs/api/equipment-generic-tier-assets.md +7 -2
- package/docs/api/equipment-generic-tier-presets.md +6 -6
- package/docs/api/equipment-iso-capabilities.md +18 -18
- package/docs/api/equipment-metering-capabilities.md +6 -6
- package/docs/api/equipment-release-capabilities.md +4 -4
- package/docs/api/exports.json +2253 -3
- package/docs/api/exposure-exposure-duration-control.md +9 -9
- package/docs/api/exposure-exposure-mode-resolver.md +35 -31
- package/docs/api/exposure-exposure.md +10 -10
- package/docs/api/exposure-flash-ttl.md +182 -0
- package/docs/api/exposure-flash.md +183 -28
- package/docs/api/exposure-metering-scene-radiance.md +11 -10
- package/docs/api/exposure-metering-target.md +9 -8
- package/docs/api/exposure-metering-temporal.md +8 -8
- package/docs/api/exposure-metering.md +69 -9
- package/docs/api/exposure-program-line.md +6 -5
- package/docs/api/facade-chart-radiance-batch.md +96 -0
- package/docs/api/facade-chart-scenes.md +240 -0
- package/docs/api/facade-scene-radiance.md +122 -0
- package/docs/api/facade-simulate-capture.md +397 -0
- package/docs/api/gpu-image-kernel-accelerator.md +157 -0
- package/docs/api/gpu-image-kernel-execution.md +152 -0
- package/docs/api/motion-camera-rotation.md +43 -26
- package/docs/api/motion-capture-rotation-inverse-mapping.md +24 -23
- package/docs/api/motion-capture-rotation-temporal-quadrature.md +22 -22
- package/docs/api/motion-capture-rotation-trajectory.md +15 -15
- package/docs/api/motion-capture-translation-parallax-temporal-quadrature.md +15 -14
- package/docs/api/motion-extended-object-projection.md +10 -8
- package/docs/api/motion-projected-motion.md +8 -8
- package/docs/api/motion-temporal-exposure-sum.md +98 -0
- package/docs/api/motion-video-sequence.md +159 -0
- package/docs/api/optics-aperture.md +8 -8
- package/docs/api/optics-atmospheric-haze.md +104 -0
- package/docs/api/optics-brown-conrady-distortion.md +123 -0
- package/docs/api/optics-circle-of-confusion.md +5 -4
- package/docs/api/optics-complex-pupil-psf.md +57 -16
- package/docs/api/optics-depth-of-field.md +12 -6
- package/docs/api/optics-diffraction-psf-profile.md +96 -0
- package/docs/api/optics-diffraction.md +8 -7
- package/docs/api/optics-focus-breathing.md +104 -16
- package/docs/api/optics-focus-state.md +9 -10
- package/docs/api/optics-front-of-lens-filter.md +72 -14
- package/docs/api/optics-illumination-vignetting.md +10 -10
- package/docs/api/optics-irradiance-convolution.md +95 -0
- package/docs/api/optics-lateral-chromatic-aberration.md +22 -21
- package/docs/api/optics-lens-psf-kernels.md +72 -0
- package/docs/api/optics-lens-psf-profile.md +48 -26
- package/docs/api/optics-longitudinal-chromatic-aberration.md +128 -0
- package/docs/api/optics-polygon-diffraction.md +78 -13
- package/docs/api/optics-profile-contract.md +4 -4
- package/docs/api/optics-psf-foundation.md +12 -12
- package/docs/api/optics-pupil-vignetting.md +132 -0
- package/docs/api/optics-radial-distortion.md +12 -12
- package/docs/api/optics-scene-to-sensor-irradiance.md +25 -14
- package/docs/api/optics-scene-to-sensor-quadrature.md +15 -12
- package/docs/api/optics-sensor-aperture-rays.md +3 -2
- package/docs/api/optics-sensor-environment-query.md +52 -9
- package/docs/api/optics-sensor-psf-quadrature.md +13 -10
- package/docs/api/optics-stray-light.md +12 -11
- package/docs/api/optics-thin-lens.md +4 -3
- package/docs/api/optics-zernike-wavefront.md +229 -0
- package/docs/api/output-capture-corrected-sdr.md +10 -7
- package/docs/api/output-capture-geometry.md +35 -36
- package/docs/api/output-capture-sdr.md +4 -4
- package/docs/api/output-crop.md +7 -4
- package/docs/api/output-geometric-transforms.md +65 -19
- package/docs/api/output-lens-corrections.md +17 -15
- package/docs/api/output-native-capture-sdr.md +26 -13
- package/docs/api/output-png-encoder.md +105 -0
- package/docs/api/output-print-contrast-reference.md +8 -8
- package/docs/api/output-print-detail.md +14 -14
- package/docs/api/output-print-jpeg.md +22 -5
- package/docs/api/output-print-plan.md +18 -18
- package/docs/api/output-print-region-statistics.md +14 -14
- package/docs/api/output-sdr-rendering.md +52 -10
- package/docs/api/output-subject-framing-crop.md +5 -6
- package/docs/api/processing-demosaic.md +120 -0
- package/docs/api/processing-denoise.md +148 -0
- package/docs/api/processing-focus-stacking.md +41 -0
- package/docs/api/processing-hdr.md +113 -0
- package/docs/api/processing-panorama.md +82 -0
- package/docs/api/processing-processing-task.md +107 -0
- package/docs/api/processing-tone-mapping.md +142 -0
- package/docs/api/schema-camera.md +6 -4
- package/docs/api/schema-illumination-spectral.md +10 -11
- package/docs/api/schema-illumination-temporal.md +13 -15
- package/docs/api/schema-illumination.md +4 -4
- package/docs/api/schema-scene-radiance-temporal.md +10 -11
- package/docs/api/schema-scene-radiance.md +18 -17
- package/docs/api/schema-scene.md +9 -9
- package/docs/api/schema-validation.md +1 -1
- package/docs/api/sensor-accumulated-charge.md +12 -20
- package/docs/api/sensor-architecture.md +15 -16
- package/docs/api/sensor-camera-saturation-capacity.md +9 -11
- package/docs/api/sensor-capture-color-sampling-binding.md +47 -51
- package/docs/api/sensor-capture-mode-timing.md +9 -9
- package/docs/api/sensor-capture-mode.md +29 -30
- package/docs/api/sensor-color-sampling.md +31 -33
- package/docs/api/sensor-constant-rate-temporal-integration.md +10 -11
- package/docs/api/sensor-dark-current.md +30 -14
- package/docs/api/sensor-environment-photo-signal.md +13 -6
- package/docs/api/sensor-eqe-electron-rate.md +9 -8
- package/docs/api/sensor-eqe-local-exposure.md +18 -17
- package/docs/api/sensor-eqe-temporal-exposure.md +12 -11
- package/docs/api/sensor-exposure-window.md +24 -24
- package/docs/api/sensor-fixed-pattern-noise.md +104 -0
- package/docs/api/sensor-iso-gain.md +63 -0
- package/docs/api/sensor-iso-signal-chain.md +13 -22
- package/docs/api/sensor-local-exposure-binding.md +12 -13
- package/docs/api/sensor-optical-stack.md +37 -40
- package/docs/api/sensor-photon-energy.md +10 -11
- package/docs/api/sensor-physical-charge-capacity.md +8 -13
- package/docs/api/sensor-pixel-pitch.md +1 -1
- package/docs/api/sensor-radiometry-readiness.md +9 -9
- package/docs/api/sensor-raw-readout.md +118 -52
- package/docs/api/sensor-raw-reconstruction.md +97 -20
- package/docs/api/sensor-readout-exposure-linkage.md +120 -24
- package/docs/api/sensor-readout-timing.md +33 -35
- package/docs/api/sensor-response-application-compatibility.md +9 -11
- package/docs/api/sensor-response-operating-range.md +14 -18
- package/docs/api/sensor-responsivity-photocurrent.md +9 -12
- package/docs/api/sensor-sampling-aperture.md +22 -25
- package/docs/api/sensor-scene-eqe-temporal-exposure.md +9 -8
- package/docs/api/sensor-sensor-geometry.md +23 -24
- package/docs/api/sensor-signal-noise.md +10 -10
- package/docs/api/sensor-spatial-sample-reduction.md +27 -30
- package/docs/api/sensor-spatial-sampling-quadrature.md +37 -39
- package/docs/api/sensor-spatio-spectral-reduction.md +27 -29
- package/docs/api/sensor-spectral-coverage.md +5 -5
- package/docs/api/sensor-spectral-quadrature.md +33 -35
- package/docs/api/sensor-spectral-response.md +28 -16
- package/docs/api/sensor-temporal-photo-signal.md +6 -6
- package/docs/api/simulation-poc-simulation.md +17 -16
- package/docs/api/stabilization-camera-shake.md +29 -10
- package/docs/api/stabilization-system.md +25 -21
- package/docs/examples/production-request.json +3821 -2157
- package/docs/examples/simulate-capture.mjs +14 -0
- package/llms.txt +35 -0
- package/package.json +32 -11
- package/AGENTS.md +0 -674
- package/CONTRIBUTING.md +0 -76
- package/DCO +0 -33
- package/dist/camera/equivalent-focal-length.d.ts.map +0 -1
- package/dist/camera/field-of-view.d.ts.map +0 -1
- package/dist/camera/projected-object-size.d.ts.map +0 -1
- package/dist/capture/capture-export-metadata.d.ts.map +0 -1
- package/dist/capture/environment-raw-producer.d.ts.map +0 -1
- package/dist/capture/export-jpeg.d.ts.map +0 -1
- package/dist/capture/export-tiff.d.ts.map +0 -1
- package/dist/capture/focus-control.d.ts.map +0 -1
- package/dist/capture/linear-encoding.d.ts.map +0 -1
- package/dist/capture/native-environment-raw.d.ts.map +0 -1
- package/dist/capture/native-raw-development.d.ts.map +0 -1
- package/dist/capture/native-raw.d.ts.map +0 -1
- package/dist/capture/photographic-export.d.ts.map +0 -1
- package/dist/capture/raw-frame-limits.d.ts.map +0 -1
- package/dist/capture/raw-frame-reconstruction.d.ts.map +0 -1
- package/dist/capture/release-sequence.d.ts.map +0 -1
- package/dist/capture/sensor-raw-frame.d.ts.map +0 -1
- package/dist/capture/sensor-raw-producer.d.ts.map +0 -1
- package/dist/capture/simulated-capture.d.ts.map +0 -1
- package/dist/color/capture-color.d.ts.map +0 -1
- package/dist/color/sensor-color-development.d.ts.map +0 -1
- package/dist/color/srgb-icc.d.ts.map +0 -1
- package/dist/color/srgb-transfer.d.ts.map +0 -1
- package/dist/color/white-balance.d.ts.map +0 -1
- package/dist/composition/image-formation-plan.d.ts.map +0 -1
- package/dist/composition/plan-consumer.d.ts.map +0 -1
- package/dist/core/calculation-result.d.ts.map +0 -1
- package/dist/core/canonical-json.d.ts.map +0 -1
- package/dist/core/configuration-error.d.ts.map +0 -1
- package/dist/core/evidence-provenance.d.ts.map +0 -1
- package/dist/core/image-formation.d.ts.map +0 -1
- package/dist/core/owned-data.d.ts.map +0 -1
- package/dist/core/record-validation.d.ts.map +0 -1
- package/dist/core/scientific-assurance.d.ts.map +0 -1
- package/dist/core/spectral-composition.d.ts.map +0 -1
- package/dist/core/spectral.d.ts.map +0 -1
- package/dist/core/validation.d.ts.map +0 -1
- package/dist/core/version.d.ts.map +0 -1
- package/dist/equipment/exposure-capabilities.d.ts.map +0 -1
- package/dist/equipment/generic-tier-assets.d.ts.map +0 -1
- package/dist/equipment/generic-tier-presets.d.ts.map +0 -1
- package/dist/equipment/iso-capabilities.d.ts.map +0 -1
- package/dist/equipment/metering-capabilities.d.ts.map +0 -1
- package/dist/equipment/release-capabilities.d.ts.map +0 -1
- package/dist/exposure/exposure-duration-control.d.ts.map +0 -1
- package/dist/exposure/exposure-mode-resolver.d.ts.map +0 -1
- package/dist/exposure/exposure.d.ts.map +0 -1
- package/dist/exposure/flash.d.ts.map +0 -1
- package/dist/exposure/metering-scene-radiance.d.ts.map +0 -1
- package/dist/exposure/metering-target.d.ts.map +0 -1
- package/dist/exposure/metering-temporal.d.ts.map +0 -1
- package/dist/exposure/metering.d.ts.map +0 -1
- package/dist/exposure/program-line.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/motion/camera-rotation.d.ts.map +0 -1
- package/dist/motion/capture-rotation-inverse-mapping.d.ts.map +0 -1
- package/dist/motion/capture-rotation-temporal-quadrature.d.ts.map +0 -1
- package/dist/motion/capture-rotation-trajectory.d.ts.map +0 -1
- package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts.map +0 -1
- package/dist/motion/extended-object-projection.d.ts.map +0 -1
- package/dist/motion/projected-motion.d.ts.map +0 -1
- package/dist/optics/aperture.d.ts.map +0 -1
- package/dist/optics/circle-of-confusion.d.ts.map +0 -1
- package/dist/optics/complex-pupil-psf.d.ts.map +0 -1
- package/dist/optics/depth-of-field.d.ts.map +0 -1
- package/dist/optics/diffraction.d.ts.map +0 -1
- package/dist/optics/focus-breathing.d.ts.map +0 -1
- package/dist/optics/focus-state.d.ts.map +0 -1
- package/dist/optics/front-of-lens-filter.d.ts.map +0 -1
- package/dist/optics/illumination-vignetting.d.ts.map +0 -1
- package/dist/optics/lateral-chromatic-aberration.d.ts.map +0 -1
- package/dist/optics/lens-psf-profile.d.ts.map +0 -1
- package/dist/optics/polygon-diffraction.d.ts.map +0 -1
- package/dist/optics/profile-contract.d.ts.map +0 -1
- package/dist/optics/psf-foundation.d.ts.map +0 -1
- package/dist/optics/radial-distortion.d.ts.map +0 -1
- package/dist/optics/scene-to-sensor-irradiance.d.ts.map +0 -1
- package/dist/optics/scene-to-sensor-quadrature.d.ts.map +0 -1
- package/dist/optics/sensor-aperture-rays.d.ts.map +0 -1
- package/dist/optics/sensor-environment-query.d.ts.map +0 -1
- package/dist/optics/sensor-psf-quadrature.d.ts.map +0 -1
- package/dist/optics/sensor-psf-support.d.ts.map +0 -1
- package/dist/optics/stray-light.d.ts.map +0 -1
- package/dist/optics/thin-lens.d.ts.map +0 -1
- package/dist/output/capture-corrected-sdr.d.ts.map +0 -1
- package/dist/output/capture-geometry.d.ts.map +0 -1
- package/dist/output/capture-sdr.d.ts.map +0 -1
- package/dist/output/crop.d.ts.map +0 -1
- package/dist/output/geometric-transforms.d.ts.map +0 -1
- package/dist/output/lens-corrections.d.ts.map +0 -1
- package/dist/output/native-capture-sdr.d.ts.map +0 -1
- package/dist/output/print-contrast-reference.d.ts.map +0 -1
- package/dist/output/print-detail.d.ts.map +0 -1
- package/dist/output/print-jpeg.d.ts.map +0 -1
- package/dist/output/print-plan.d.ts.map +0 -1
- package/dist/output/print-region-statistics.d.ts.map +0 -1
- package/dist/output/sdr-rendering.d.ts.map +0 -1
- package/dist/output/subject-framing-crop.d.ts.map +0 -1
- package/dist/schema/camera.d.ts.map +0 -1
- package/dist/schema/camera.js +0 -3
- package/dist/schema/camera.js.map +0 -1
- package/dist/schema/illumination-spectral.d.ts.map +0 -1
- package/dist/schema/illumination-temporal.d.ts.map +0 -1
- package/dist/schema/illumination.d.ts.map +0 -1
- package/dist/schema/scene-radiance-temporal.d.ts.map +0 -1
- package/dist/schema/scene-radiance.d.ts.map +0 -1
- package/dist/schema/scene.d.ts.map +0 -1
- package/dist/schema/scene.js +0 -3
- package/dist/schema/scene.js.map +0 -1
- package/dist/schema/validation.d.ts.map +0 -1
- package/dist/sensor/accumulated-charge.d.ts.map +0 -1
- package/dist/sensor/architecture.d.ts.map +0 -1
- package/dist/sensor/camera-saturation-capacity.d.ts.map +0 -1
- package/dist/sensor/capture-color-sampling-binding.d.ts.map +0 -1
- package/dist/sensor/capture-mode-timing.d.ts.map +0 -1
- package/dist/sensor/capture-mode.d.ts.map +0 -1
- package/dist/sensor/color-sampling.d.ts.map +0 -1
- package/dist/sensor/constant-rate-temporal-integration.d.ts.map +0 -1
- package/dist/sensor/dark-current.d.ts.map +0 -1
- package/dist/sensor/environment-photo-signal.d.ts.map +0 -1
- package/dist/sensor/eqe-electron-rate.d.ts.map +0 -1
- package/dist/sensor/eqe-local-exposure.d.ts.map +0 -1
- package/dist/sensor/eqe-temporal-exposure.d.ts.map +0 -1
- package/dist/sensor/exposure-window.d.ts.map +0 -1
- package/dist/sensor/iso-signal-chain.d.ts.map +0 -1
- package/dist/sensor/local-exposure-binding.d.ts.map +0 -1
- package/dist/sensor/optical-stack.d.ts.map +0 -1
- package/dist/sensor/photon-energy.d.ts.map +0 -1
- package/dist/sensor/physical-charge-capacity.d.ts.map +0 -1
- package/dist/sensor/pixel-pitch.d.ts.map +0 -1
- package/dist/sensor/radiometry-readiness.d.ts.map +0 -1
- package/dist/sensor/raw-readout.d.ts.map +0 -1
- package/dist/sensor/raw-reconstruction.d.ts.map +0 -1
- package/dist/sensor/readout-exposure-linkage.d.ts.map +0 -1
- package/dist/sensor/readout-timing.d.ts.map +0 -1
- package/dist/sensor/response-application-compatibility.d.ts.map +0 -1
- package/dist/sensor/response-operating-range.d.ts.map +0 -1
- package/dist/sensor/responsivity-photocurrent.d.ts.map +0 -1
- package/dist/sensor/sampling-aperture.d.ts.map +0 -1
- package/dist/sensor/scene-eqe-temporal-exposure.d.ts.map +0 -1
- package/dist/sensor/sensor-geometry.d.ts.map +0 -1
- package/dist/sensor/signal-noise.d.ts.map +0 -1
- package/dist/sensor/spatial-sample-reduction.d.ts.map +0 -1
- package/dist/sensor/spatial-sampling-quadrature.d.ts.map +0 -1
- package/dist/sensor/spatio-spectral-reduction.d.ts.map +0 -1
- package/dist/sensor/spectral-coverage.d.ts.map +0 -1
- package/dist/sensor/spectral-quadrature.d.ts.map +0 -1
- package/dist/sensor/spectral-response.d.ts.map +0 -1
- package/dist/sensor/temporal-eqe-sum.d.ts.map +0 -1
- package/dist/sensor/temporal-photo-signal.d.ts.map +0 -1
- package/dist/sensor/temporal-sample-binding.d.ts.map +0 -1
- package/dist/simulation/poc-simulation.d.ts.map +0 -1
- package/dist/stabilization/camera-shake.d.ts.map +0 -1
- package/dist/stabilization/system.d.ts.map +0 -1
- package/docs/API_STYLE.md +0 -235
- package/docs/ARCHITECTURE.md +0 -356
- package/docs/AUTOMATION_COORDINATION.md +0 -190
- package/docs/CAPTURE_COLOR.md +0 -25
- package/docs/CAPTURE_CORRECTED_SDR.md +0 -25
- package/docs/CAPTURE_EXPORT_METADATA.md +0 -27
- package/docs/CAPTURE_SDR.md +0 -22
- package/docs/DENSE_PUPIL_QUALIFICATION.md +0 -121
- package/docs/DEVELOPERS.md +0 -68
- package/docs/DIGITAL_OPTICS_FOUNDATION.md +0 -69
- package/docs/ENVIRONMENT_RAW_CAPTURE.md +0 -208
- package/docs/EXPORT_ACCEPTANCE.md +0 -133
- package/docs/GENERIC_TIER_PRESETS.md +0 -269
- package/docs/GEOMETRIC_PREPARATION_REUSE.md +0 -141
- package/docs/IMAGE_FORMATION.md +0 -247
- package/docs/LINEAR_CAPTURE_ENCODING.md +0 -25
- package/docs/MOTION_AND_SIGNAL.md +0 -250
- package/docs/NATIVE_CAPTURE_SDR.md +0 -70
- package/docs/NATIVE_CAPTURE_SDR_REVIEW.md +0 -37
- package/docs/NATIVE_CAPTURE_SDR_VALIDATION.md +0 -34
- package/docs/NATIVE_RAW_AND_PRINT.md +0 -54
- package/docs/NUMERICAL_CORRECTNESS.md +0 -191
- package/docs/PERFORMANCE_BASELINE.md +0 -56
- package/docs/PHOTOGRAPHIC_EXPORT.md +0 -206
- package/docs/PHYSICS_FOUNDATION.md +0 -426
- package/docs/POC_API.md +0 -278
- package/docs/POC_PROJECTION_PLATFORM_REFERENCE.md +0 -12
- package/docs/POC_PROJECTION_REUSE.md +0 -124
- package/docs/PRINT_195_196_REVIEW.md +0 -93
- package/docs/PRINT_196_ENGINE_ACCEPTANCE.md +0 -45
- package/docs/PRINT_CONTRAST_REFERENCE.md +0 -43
- package/docs/PRINT_DETAIL_ASSESSMENT.md +0 -81
- package/docs/PRINT_DETAIL_JPEG_EVIDENCE.md +0 -36
- package/docs/PRINT_DETAIL_SDR_EVIDENCE.md +0 -29
- package/docs/PRINT_DETAIL_VALIDATION.md +0 -36
- package/docs/PRINT_PLANNING.md +0 -75
- package/docs/PRINT_REGION_STATISTICS.md +0 -38
- package/docs/PROCESSED_OUTPUT.md +0 -157
- package/docs/PRODUCTION_COMPOSITION.md +0 -373
- package/docs/PRODUCTION_ENVIRONMENT_CAPTURE.md +0 -131
- package/docs/PROVENANCE.md +0 -115
- package/docs/PSF_FOUNDATION.md +0 -165
- package/docs/RAW_FRAME_ENVELOPE.md +0 -56
- package/docs/RAW_FRAME_RECONSTRUCTION.md +0 -30
- package/docs/RELEASE_1_0.md +0 -66
- package/docs/RELEASE_1_0_1.md +0 -61
- package/docs/RELEASE_1_1_0.md +0 -25
- package/docs/RELEASE_1_2_0.md +0 -51
- package/docs/RELEASE_1_3_0.md +0 -15
- package/docs/RELEASE_1_4_0.md +0 -23
- package/docs/RELEASE_1_5_0.md +0 -105
- package/docs/RELEASE_AUDIT.md +0 -39
- package/docs/SCENE_RADIANCE_AND_ILLUMINATION.md +0 -298
- package/docs/SCENE_SENSOR_QUADRATURE.md +0 -98
- package/docs/SCENE_SENSOR_TEMPORAL_EXPOSURE.md +0 -86
- package/docs/SCIENTIFIC_ASSURANCE.md +0 -280
- package/docs/SCIENTIFIC_CONFORMANCE.md +0 -83
- package/docs/SDR_RENDERING.md +0 -33
- package/docs/SENSOR_APERTURE_RAYS.md +0 -23
- package/docs/SENSOR_ENVIRONMENT_QUERY.md +0 -86
- package/docs/SENSOR_EQE_LOCAL_EXPOSURE.md +0 -104
- package/docs/SENSOR_EQE_TEMPORAL_EXPOSURE.md +0 -74
- package/docs/SENSOR_PSF_QUADRATURE.md +0 -90
- package/docs/SENSOR_RAW_FRAME.md +0 -20
- package/docs/SENSOR_RAW_PRODUCER.md +0 -77
- package/docs/SEPARABLE_EMISSION_DRAFT.md +0 -103
- package/docs/SIGNAL_CONFORMANCE.md +0 -23
- package/docs/SIMULATED_CAPTURE.md +0 -65
- package/docs/STABILIZATION.md +0 -234
- package/docs/TEMPORAL_PHOTO_RAW.md +0 -83
- package/docs/TIER_ACCEPTANCE.md +0 -129
- package/docs/TIER_PRESET_ACCEPTANCE.md +0 -59
- package/docs/V1_COMPOSITION_MAP.md +0 -123
- package/docs/V1_HELPER_REUSE_REVIEW.md +0 -60
- package/docs/V1_PERFORMANCE_DISPOSITION.md +0 -88
- package/docs/benchmarks/2026-10-01-main-baseline.json +0 -694
- package/docs/benchmarks/2026-10-02-geometric-preparation-reuse.json +0 -2190
- package/docs/benchmarks/2026-10-02-poc-projection-reuse.json +0 -2423
- package/docs/benchmarks/2026-10-02-v1-environment-gc-profile.json +0 -210
- package/docs/benchmarks/2026-10-02-v1-environment-ordinary.json +0 -187
- package/docs/benchmarks/2026-10-02-v1-geometry-gc-profile.json +0 -756
- package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-1.json +0 -711
- package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-2.json +0 -711
- package/docs/benchmarks/2026-10-02-v1-poc-gc-profile.json +0 -885
- package/docs/benchmarks/2026-10-02-v1-poc-ordinary-1.json +0 -868
- package/docs/benchmarks/2026-10-02-v1-poc-ordinary-2.json +0 -868
- package/docs/licenses/castleCSF-MIT.txt +0 -21
- package/docs/validation/dense-pupil-2026-10-06/pilot.jsonl +0 -6
- package/docs/validation/documentation-fragments.json +0 -212
- package/docs/validation/native-capture-sdr-darwin-arm64-node26-review.jsonl +0 -4
- package/docs/validation/native-capture-sdr-darwin-arm64.jsonl +0 -3
- package/docs/validation/native-raw-print-2026-10-04/fractional-asymmetric-crop.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/gray-ramp.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/linear-area-checker.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/manifest.json +0 -218
- package/docs/validation/native-raw-print-2026-10-04/megapixel-native.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/native-color.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel-validation.json +0 -9
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json +0 -29
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.codes.u16le.gz +0 -0
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.rgb.gz +0 -0
- package/docs/validation/native-raw-print-2026-10-04/srgb.icc +0 -0
- package/docs/validation/native-raw-print-2026-10-04/validation.json +0 -41
- package/docs/validation/print-196-candidate-capabilities.json +0 -28
- package/docs/validation/print-196-candidate-evidence.json +0 -356
- package/docs/validation/print-196-engine-acceptance.json +0 -81
- package/docs/validation/print-detail-capabilities.json +0 -103
- package/docs/validation/print-detail-jpeg-evidence.json +0 -116
- package/docs/validation/print-detail-sdr-evidence.json +0 -81
- package/docs/validation/release-audit-inventory.json +0 -1306
- package/docs/validation/tier-acceptance-report-v1.json +0 -2538
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flash.js","sourceRoot":"","sources":["../../src/exposure/flash.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"flash.js","sourceRoot":"","sources":["../../src/exposure/flash.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Manual flash and flash sync.\n *\n * The parsers validate untrusted input and return the normalized typed contract. Unknown enum values,\n * missing required fields and incompatible scientific data are rejected.\n *\n * Manual flash is a relative light pulse added on top of the scene light, timed on the capture's\n * opening-reference clock.\n * - Ordinary front- or rear-curtain sync needs a real interval when the whole frame is open at once.\n * - High-speed sync (HSS; schema 0.2.0 sync profiles) is separate: a near-continuous burst that\n * covers the travelling shutter slit (resolveHighSpeedFlashSync).\n * - TTL pre-flash power and guide-number relations are in flash-ttl.ts.\n * Source brightness, optical transport and sensor integration have their own contracts.\n * @see docs/USAGE.md for the equations, units, coordinate conventions, known blockers and support\n * limits.\n */\n\nimport { InvalidConfigurationError } from \"../core/configuration-error.js\";\nimport {\n parseEvidenceList,\n type EvidenceProvenance\n} from \"../core/evidence-provenance.js\";\nimport { InvalidScientificInputError } from \"../core/validation.js\";\nimport type {\n ResolvedReleaseFrame\n} from \"../capture/release-sequence.js\";\nimport {\n parseSceneIlluminationProfile,\n type SceneIlluminationProfile,\n type SceneIlluminationSource\n} from \"../schema/illumination.js\";\nimport {\n parseSceneIlluminationTemporalProfile,\n type SceneIlluminationTemporalProfile,\n type SceneIlluminationTemporalWaveformSample\n} from \"../schema/illumination-temporal.js\";\nimport type {\n ResolvedCaptureModeTiming\n} from \"../sensor/capture-mode-timing.js\";\nimport { requireInputObject, requireInputKeys, rejectUnknownFields } from \"../core/record-validation.js\";\n\ntype UnknownRecord = Record<string, unknown>;\n\nexport const MANUAL_FLASH_PROFILE_SCHEMA_VERSION =\n \"0.1.0\" as const;\nexport const FLASH_SYNC_CAPABILITY_SCHEMA_VERSION =\n \"0.1.0\" as const;\n/** Sync-capability schema that may declare high-speed sync (a fast pulse train that acts as continuous light). */\nexport const FLASH_SYNC_CAPABILITY_HSS_SCHEMA_VERSION =\n \"0.2.0\" as const;\n/** Model identity of the pulsed quasi-continuous high-speed-sync burst. */\nexport const HIGH_SPEED_SYNC_MODEL = Object.freeze({\n id: \"flash-hss-quasi-continuous-burst\",\n version: \"1.0.0\"\n} as const);\n\nexport type ManualFlashSyncMode =\n | \"front-curtain\"\n | \"rear-curtain\";\n\nexport type RequestedFlashSyncMode =\n | ManualFlashSyncMode\n | \"high-speed-sync\";\n\nexport interface ManualFlashPulseProfile {\n waveformId: string;\n scientificStatus: \"approximation\";\n supportDurationSeconds: number;\n interpolation: \"piecewise-linear\";\n samples:\n readonly SceneIlluminationTemporalWaveformSample[];\n normalization:\n \"relative-peak-one\";\n evidence:\n readonly EvidenceProvenance[];\n limitations: readonly string[];\n}\n\nexport interface ManualFlashProfile {\n schemaVersion:\n typeof MANUAL_FLASH_PROFILE_SCHEMA_VERSION;\n profileId: string;\n profileVersion: string;\n sourceTemplate:\n Omit<\n SceneIlluminationSource,\n \"enabled\" |\n \"temporalBehavior\"\n >;\n pulse:\n ManualFlashPulseProfile;\n outputControl: {\n kind:\n \"relative-linear-source-scale\";\n scale: number;\n flashExposureCompensationStops:\n 0;\n };\n ttlModeled: false;\n highSpeedSyncModeled: false;\n recycleBehaviorModeled: false;\n redEyePreflashModeled: false;\n modelingLightModeled: false;\n afAssistModeled: false;\n evidence: readonly EvidenceProvenance[];\n limitations: readonly string[];\n}\n\nexport interface FlashSyncCapabilityProfile {\n schemaVersion:\n | typeof FLASH_SYNC_CAPABILITY_SCHEMA_VERSION\n | typeof FLASH_SYNC_CAPABILITY_HSS_SCHEMA_VERSION;\n profileId: string;\n profileVersion: string;\n captureModeId: string;\n timingProfileId: string;\n supportedOrdinarySyncModes:\n readonly ManualFlashSyncMode[];\n /** Schema 0.1.0 is always false; schema 0.2.0 may declare HSS with {@link highSpeedSync}. */\n highSpeedSyncSupported: boolean;\n /** Present exactly when highSpeedSyncSupported is true (schema 0.2.0). */\n highSpeedSync?: {\n /**\n * η: energy of one full-power high-speed-sync burst, as a fraction of one full-power ordinary\n * pulse, in (0, 1]. The caller declares it from evidence (capacitor and thermal limits). It is\n * never inferred.\n */\n burstEnergyFractionOfFullPulse: number;\n evidence: readonly EvidenceProvenance[];\n };\n ordinarySyncRequiresWholeActiveFrameSimultaneouslyExposed:\n true;\n evidence: readonly EvidenceProvenance[];\n limitations: readonly string[];\n}\n\nexport interface ResolveManualFlashSyncInput {\n flashEnabled: boolean;\n flashProfile:\n ManualFlashProfile;\n syncCapabilities:\n FlashSyncCapabilityProfile;\n timing:\n ResolvedCaptureModeTiming;\n syncMode:\n RequestedFlashSyncMode;\n releaseFrame?:\n ResolvedReleaseFrame;\n}\n\nexport interface ResolvedManualFlashSync {\n flashEnabled: boolean;\n flashProfileId: string;\n flashProfileVersion: string;\n sourceId: string;\n captureModeId: string;\n timingProfileId: string;\n syncCapabilityProfileId:\n string;\n syncMode:\n RequestedFlashSyncMode;\n syncStatus:\n | \"disabled\"\n | \"ordinary-sync-resolved\";\n timeReference:\n \"first-opening-boundary-phase\";\n wholeActiveFrameOpenInterval:\n {\n startSecondsFromCaptureReference:\n number;\n endSecondsFromCaptureReference:\n number;\n durationSeconds: number;\n };\n pulseSupportDurationSeconds:\n number;\n pulseStartSecondsFromCaptureReference:\n number | null;\n pulseEndSecondsFromCaptureReference:\n number | null;\n waveformTimeZeroSecondsFromCaptureReference:\n number | null;\n releaseFrameBinding:\n | {\n sequenceId: string;\n releaseFrameId: string;\n frameIndex: number;\n sceneTimeSecondsFromSequenceStartAtPulseStart:\n number;\n sceneTimeSecondsFromSequenceStartAtPulseEnd:\n number;\n }\n | null;\n hssModeled: false;\n ttlModeled: false;\n sensorReadoutTimingUsedAsExposureTiming:\n false;\n whiteBalanceModified: false;\n focusModified: false;\n exposureSettingsModified: false;\n driveModeModified: false;\n supportStateModified: false;\n evidence: readonly EvidenceProvenance[];\n limitations: readonly string[];\n}\n\n/** Fields of a resolved sync (ordinary or HSS) needed to register a flash overlay. */\nexport type FlashOverlaySyncRegistration = Pick<\n ResolvedManualFlashSync,\n | \"flashEnabled\"\n | \"flashProfileId\"\n | \"flashProfileVersion\"\n | \"sourceId\"\n | \"waveformTimeZeroSecondsFromCaptureReference\"\n | \"evidence\"\n>;\n\nexport interface CreateManualFlashIlluminationOverlayInput {\n baseIlluminationProfile:\n SceneIlluminationProfile;\n baseTemporalProfile?:\n SceneIlluminationTemporalProfile;\n flashProfile:\n ManualFlashProfile;\n resolvedSync:\n FlashOverlaySyncRegistration;\n illuminationProfileId: string;\n temporalProfileId: string;\n}\n\nexport interface ManualFlashIlluminationOverlay {\n flashApplied: boolean;\n illuminationProfile:\n SceneIlluminationProfile;\n temporalProfile:\n SceneIlluminationTemporalProfile | null;\n sourceId: string;\n waveformId: string;\n timeReference:\n \"first-opening-boundary-phase\";\n sourceMagnitudeAppliedBySceneTransport:\n true;\n materialTransportOwnedBySceneRadiance:\n true;\n visibilityOwnedBySceneRadiance:\n true;\n indirectTransportOwnedBySceneRadiance:\n true;\n postRenderBrightnessMultiplierUsed:\n false;\n whiteBalanceModified: false;\n ambientMeteringModified: false;\n ttlMeteringIncluded: false;\n ambientTemporalBehaviorPreserved:\n true;\n}\n\nconst ORDINARY_SYNC_MODES =\n new Set<ManualFlashSyncMode>([\n \"front-curtain\",\n \"rear-curtain\"\n ]);\n\nfunction requireRecord(\n value: unknown,\n path: string,\n allowedKeys: readonly string[] | null\n): UnknownRecord {\n if (\n typeof value !== \"object\" ||\n value === null ||\n Array.isArray(value)\n ) {\n throw new InvalidConfigurationError(\n path + \" must be an object.\"\n );\n }\n if (allowedKeys !== null) rejectUnknownFields(value, allowedKeys, path);\n return value as UnknownRecord;\n}\n\nfunction requireNonEmptyString(\n value: unknown,\n path: string\n): string {\n if (\n typeof value !== \"string\" ||\n value.trim().length === 0\n ) {\n throw new InvalidConfigurationError(\n path +\n \" must be a non-empty string.\"\n );\n }\n return value.trim();\n}\n\nfunction requireFinite(\n value: unknown,\n path: string\n): number {\n if (\n typeof value !== \"number\" ||\n !Number.isFinite(value)\n ) {\n throw new InvalidConfigurationError(\n path + \" must be finite.\"\n );\n }\n return value;\n}\n\nfunction requirePositiveFinite(\n value: unknown,\n path: string\n): number {\n const parsed =\n requireFinite(value, path);\n if (parsed <= 0) {\n throw new InvalidConfigurationError(\n path +\n \" must be greater than zero.\"\n );\n }\n return parsed;\n}\n\nfunction parseLimitations(\n value: unknown,\n path: string\n): readonly string[] {\n if (!Array.isArray(value)) {\n throw new InvalidConfigurationError(\n path + \" must be an array.\"\n );\n }\n const parsed =\n value.map((entry, index) =>\n requireNonEmptyString(\n entry,\n path +\n \"[\" +\n index +\n \"]\"\n )\n );\n if (\n new Set(parsed).size !==\n parsed.length\n ) {\n throw new InvalidConfigurationError(\n path +\n \" must not contain duplicates.\"\n );\n }\n return parsed;\n}\n\nfunction parsePulseSamples(\n value: unknown,\n supportDurationSeconds:\n number,\n path: string\n): readonly SceneIlluminationTemporalWaveformSample[] {\n if (\n !Array.isArray(value) ||\n value.length < 2\n ) {\n throw new InvalidConfigurationError(\n path +\n \" must contain at least two waveform samples.\"\n );\n }\n const samples =\n value.map((entry, index) => {\n const samplePath =\n path +\n \"[\" +\n index +\n \"]\";\n const record =\n requireRecord(\n entry,\n samplePath, [\"timeSecondsFromWaveformReference\", \"relativeMagnitudeMultiplier\"]\n );\n const time =\n requireFinite(\n record\n .timeSecondsFromWaveformReference,\n samplePath +\n \".timeSecondsFromWaveformReference\"\n );\n const magnitude =\n requireFinite(\n record\n .relativeMagnitudeMultiplier,\n samplePath +\n \".relativeMagnitudeMultiplier\"\n );\n if (\n time < 0 ||\n time >\n supportDurationSeconds\n ) {\n throw new InvalidConfigurationError(\n samplePath +\n \".timeSecondsFromWaveformReference must lie within the declared pulse support.\"\n );\n }\n if (magnitude < 0) {\n throw new InvalidConfigurationError(\n samplePath +\n \".relativeMagnitudeMultiplier must be nonnegative.\"\n );\n }\n return {\n timeSecondsFromWaveformReference:\n time,\n relativeMagnitudeMultiplier:\n magnitude\n };\n });\n\n for (\n let index = 1;\n index < samples.length;\n index += 1\n ) {\n if (\n !(\n samples[index]!\n .timeSecondsFromWaveformReference >\n samples[index - 1]!\n .timeSecondsFromWaveformReference\n )\n ) {\n throw new InvalidConfigurationError(\n path +\n \" times must be strictly increasing.\"\n );\n }\n }\n if (\n samples[0]!\n .timeSecondsFromWaveformReference !==\n 0 ||\n samples[\n samples.length - 1\n ]!\n .timeSecondsFromWaveformReference !==\n supportDurationSeconds\n ) {\n throw new InvalidConfigurationError(\n path +\n \" must start at waveform time 0 and end exactly at supportDurationSeconds.\"\n );\n }\n const peak =\n Math.max(\n ...samples.map(\n (sample) =>\n sample\n .relativeMagnitudeMultiplier\n )\n );\n if (\n Math.abs(peak - 1) >\n 1e-12\n ) {\n throw new InvalidConfigurationError(\n path +\n \" peak relative magnitude must equal one for relative-peak-one normalization.\"\n );\n }\n\n return samples;\n}\n\nfunction validateSourceTemplate(\n sourceTemplate:\n ManualFlashProfile[\"sourceTemplate\"]\n): ManualFlashProfile[\"sourceTemplate\"] {\n requireInputObject(sourceTemplate, \"manualFlashProfile.sourceTemplate\");\n const probe =\n parseSceneIlluminationProfile({\n schemaVersion: \"0.1.0\",\n profileId:\n \"manual-flash-source-validation\",\n sceneId:\n \"manual-flash-source-validation\",\n evidence:\n sourceTemplate.evidence,\n sources: [{\n ...sourceTemplate,\n enabled: true,\n temporalBehavior: {\n kind:\n \"time-invariant\"\n }\n }],\n sceneRadianceCalculated:\n false,\n materialResponseApplied:\n false,\n visibilityEvaluated:\n false,\n indirectTransportEvaluated:\n false,\n fluorescenceModeled:\n false,\n volumetricTransportModeled:\n false,\n polarizationModeled:\n false\n });\n const source =\n probe.sources[0];\n if (source === undefined) {\n throw new InvalidConfigurationError(\n \"manualFlashProfile.sourceTemplate must produce one valid illumination source.\"\n );\n }\n return {\n sourceId:\n source.sourceId,\n family:\n source.family,\n geometry:\n source.geometry,\n magnitude:\n source.magnitude,\n spectrum:\n source.spectrum,\n evidence:\n source.evidence,\n ...(source.limitations ===\n undefined\n ? {}\n : {\n limitations:\n source.limitations\n })\n };\n}\n\n/**\n * Validates an untrusted declaration and returns the normalized typed contract. Unknown enum values,\n * missing required fields and incompatible scientific data are rejected here.\n *\n * Manual flash is a relative light pulse added on top of the scene light, timed on the capture's\n * opening-reference clock. Ordinary front- or rear-curtain sync needs a real interval when the whole\n * frame is open at once. High-speed sync (HSS), TTL and flash metering are not handled here. Source\n * brightness, optical transport and sensor integration have their own contracts.\n * @param value - unknown. Untrusted input; TypeScript types alone are not validation.\n * @returns ManualFlashProfile. The result states its shape and scientific status; a successful call does not imply calibration.\n *\n * @see docs/API_REFERENCE.md for the root export and exact type graph.\n */\nexport function parseManualFlashProfile(\n value: unknown\n): ManualFlashProfile {\n const record =\n requireRecord(\n value,\n \"manualFlashProfile\", [\"schemaVersion\", \"pulse\", \"outputControl\", \"profileId\", \"profileVersion\", \"sourceTemplate\", \"evidence\", \"limitations\", \"ttlModeled\", \"highSpeedSyncModeled\", \"recycleBehaviorModeled\", \"redEyePreflashModeled\", \"modelingLightModeled\", \"afAssistModeled\"]\n );\n if (\n record.schemaVersion !==\n MANUAL_FLASH_PROFILE_SCHEMA_VERSION\n ) {\n throw new InvalidConfigurationError(\n 'manualFlashProfile.schemaVersion must be \"' +\n MANUAL_FLASH_PROFILE_SCHEMA_VERSION +\n '\".'\n );\n }\n for (\n const [key, expected] of [\n [\"ttlModeled\", false],\n [\"highSpeedSyncModeled\", false],\n [\"recycleBehaviorModeled\", false],\n [\"redEyePreflashModeled\", false],\n [\"modelingLightModeled\", false],\n [\"afAssistModeled\", false]\n ] as const\n ) {\n if (record[key] !== expected) {\n throw new InvalidConfigurationError(\n \"manualFlashProfile.\" +\n key +\n \" must be false in schema 0.1.0.\"\n );\n }\n }\n\n const pulse =\n requireRecord(\n record.pulse,\n \"manualFlashProfile.pulse\", [\"supportDurationSeconds\", \"scientificStatus\", \"interpolation\", \"normalization\", \"waveformId\", \"samples\", \"evidence\", \"limitations\"]\n );\n const supportDurationSeconds =\n requirePositiveFinite(\n pulse.supportDurationSeconds,\n \"manualFlashProfile.pulse.supportDurationSeconds\"\n );\n if (\n pulse.scientificStatus !==\n \"approximation\" ||\n pulse.interpolation !==\n \"piecewise-linear\" ||\n pulse.normalization !==\n \"relative-peak-one\"\n ) {\n throw new InvalidConfigurationError(\n \"manualFlashProfile.pulse scientificStatus/interpolation/normalization is invalid.\"\n );\n }\n\n const output =\n requireRecord(\n record.outputControl,\n \"manualFlashProfile.outputControl\", [\"kind\", \"flashExposureCompensationStops\", \"scale\"]\n );\n if (\n output.kind !==\n \"relative-linear-source-scale\" ||\n output\n .flashExposureCompensationStops !==\n 0\n ) {\n throw new InvalidConfigurationError(\n \"manualFlashProfile.outputControl must use relative-linear-source-scale with zero flash exposure compensation in the manual-only schema.\"\n );\n }\n\n return {\n schemaVersion:\n MANUAL_FLASH_PROFILE_SCHEMA_VERSION,\n profileId:\n requireNonEmptyString(\n record.profileId,\n \"manualFlashProfile.profileId\"\n ),\n profileVersion:\n requireNonEmptyString(\n record.profileVersion,\n \"manualFlashProfile.profileVersion\"\n ),\n sourceTemplate:\n validateSourceTemplate(\n record.sourceTemplate as\n ManualFlashProfile[\"sourceTemplate\"]\n ),\n pulse: {\n waveformId:\n requireNonEmptyString(\n pulse.waveformId,\n \"manualFlashProfile.pulse.waveformId\"\n ),\n scientificStatus:\n \"approximation\",\n supportDurationSeconds,\n interpolation:\n \"piecewise-linear\",\n samples:\n parsePulseSamples(\n pulse.samples,\n supportDurationSeconds,\n \"manualFlashProfile.pulse.samples\"\n ),\n normalization:\n \"relative-peak-one\",\n evidence:\n parseEvidenceList(\n pulse.evidence,\n \"manualFlashProfile.pulse.evidence\"\n ),\n limitations:\n parseLimitations(\n pulse.limitations,\n \"manualFlashProfile.pulse.limitations\"\n )\n },\n outputControl: {\n kind:\n \"relative-linear-source-scale\",\n scale:\n requirePositiveFinite(\n output.scale,\n \"manualFlashProfile.outputControl.scale\"\n ),\n flashExposureCompensationStops:\n 0\n },\n ttlModeled: false,\n highSpeedSyncModeled: false,\n recycleBehaviorModeled:\n false,\n redEyePreflashModeled:\n false,\n modelingLightModeled:\n false,\n afAssistModeled: false,\n evidence:\n parseEvidenceList(\n record.evidence,\n \"manualFlashProfile.evidence\"\n ),\n limitations:\n parseLimitations(\n record.limitations,\n \"manualFlashProfile.limitations\"\n )\n };\n}\n\n/**\n * Validates an untrusted declaration and returns the normalized typed contract. Unknown enum values,\n * missing required fields and incompatible scientific data are rejected here.\n *\n * Manual flash is a relative light pulse added on top of the scene light, timed on the capture's\n * opening-reference clock. Ordinary front- or rear-curtain sync needs a real interval when the whole\n * frame is open at once. High-speed sync (HSS), TTL and flash metering are not handled here. Source\n * brightness, optical transport and sensor integration have their own contracts.\n * @param value - unknown. Untrusted input; TypeScript types alone are not validation.\n * @returns FlashSyncCapabilityProfile. The result states its shape and scientific status; a successful call does not imply calibration.\n *\n * @see docs/API_REFERENCE.md for the root export and exact type graph.\n */\nexport function parseFlashSyncCapabilityProfile(\n value: unknown\n): FlashSyncCapabilityProfile {\n const record =\n requireRecord(\n value,\n \"flashSyncCapabilityProfile\", [\"schemaVersion\", \"highSpeedSyncSupported\", \"ordinarySyncRequiresWholeActiveFrameSimultaneouslyExposed\", \"highSpeedSync\", \"supportedOrdinarySyncModes\", \"profileId\", \"profileVersion\", \"captureModeId\", \"timingProfileId\", \"evidence\", \"limitations\"]\n );\n if (\n record.schemaVersion !==\n FLASH_SYNC_CAPABILITY_SCHEMA_VERSION &&\n record.schemaVersion !==\n FLASH_SYNC_CAPABILITY_HSS_SCHEMA_VERSION\n ) {\n throw new InvalidConfigurationError(\n 'flashSyncCapabilityProfile.schemaVersion must be \"' +\n FLASH_SYNC_CAPABILITY_SCHEMA_VERSION +\n '\" or \"' +\n FLASH_SYNC_CAPABILITY_HSS_SCHEMA_VERSION +\n '\".'\n );\n }\n const hssSchema =\n record.schemaVersion ===\n FLASH_SYNC_CAPABILITY_HSS_SCHEMA_VERSION;\n if (\n (hssSchema\n ? typeof record.highSpeedSyncSupported !==\n \"boolean\"\n : record.highSpeedSyncSupported !==\n false) ||\n record\n .ordinarySyncRequiresWholeActiveFrameSimultaneouslyExposed !==\n true\n ) {\n throw new InvalidConfigurationError(\n \"flashSyncCapabilityProfile schema 0.1.0 supports ordinary whole-frame sync only and must not claim HSS.\"\n );\n }\n let highSpeedSync:\n FlashSyncCapabilityProfile[\"highSpeedSync\"];\n if (record.highSpeedSyncSupported === true) {\n const hss = requireRecord(\n record.highSpeedSync,\n \"flashSyncCapabilityProfile.highSpeedSync\", [\"burstEnergyFractionOfFullPulse\", \"evidence\"]\n );\n const fraction = requirePositiveFinite(\n hss.burstEnergyFractionOfFullPulse,\n \"flashSyncCapabilityProfile.highSpeedSync.burstEnergyFractionOfFullPulse\"\n );\n if (fraction > 1) {\n throw new InvalidConfigurationError(\n \"flashSyncCapabilityProfile.highSpeedSync.burstEnergyFractionOfFullPulse must be at most 1.\"\n );\n }\n highSpeedSync = {\n burstEnergyFractionOfFullPulse:\n fraction,\n evidence: parseEvidenceList(\n hss.evidence,\n \"flashSyncCapabilityProfile.highSpeedSync.evidence\"\n )\n };\n } else if (\n record.highSpeedSync !==\n undefined\n ) {\n throw new InvalidConfigurationError(\n \"flashSyncCapabilityProfile.highSpeedSync must be omitted when HSS is unsupported.\"\n );\n }\n if (\n !Array.isArray(\n record.supportedOrdinarySyncModes\n ) ||\n record\n .supportedOrdinarySyncModes\n .length === 0\n ) {\n throw new InvalidConfigurationError(\n \"flashSyncCapabilityProfile.supportedOrdinarySyncModes must be a non-empty array.\"\n );\n }\n const modes =\n record\n .supportedOrdinarySyncModes\n .map((entry, index) => {\n if (\n typeof entry !==\n \"string\" ||\n !ORDINARY_SYNC_MODES.has(\n entry as ManualFlashSyncMode\n )\n ) {\n throw new InvalidConfigurationError(\n \"flashSyncCapabilityProfile.supportedOrdinarySyncModes[\" +\n index +\n \"] is invalid.\"\n );\n }\n return entry as\n ManualFlashSyncMode;\n });\n if (\n new Set(modes).size !==\n modes.length\n ) {\n throw new InvalidConfigurationError(\n \"flashSyncCapabilityProfile.supportedOrdinarySyncModes must not contain duplicates.\"\n );\n }\n\n return {\n schemaVersion: hssSchema\n ? FLASH_SYNC_CAPABILITY_HSS_SCHEMA_VERSION\n : FLASH_SYNC_CAPABILITY_SCHEMA_VERSION,\n profileId:\n requireNonEmptyString(\n record.profileId,\n \"flashSyncCapabilityProfile.profileId\"\n ),\n profileVersion:\n requireNonEmptyString(\n record.profileVersion,\n \"flashSyncCapabilityProfile.profileVersion\"\n ),\n captureModeId:\n requireNonEmptyString(\n record.captureModeId,\n \"flashSyncCapabilityProfile.captureModeId\"\n ),\n timingProfileId:\n requireNonEmptyString(\n record.timingProfileId,\n \"flashSyncCapabilityProfile.timingProfileId\"\n ),\n supportedOrdinarySyncModes:\n modes,\n highSpeedSyncSupported:\n highSpeedSync !== undefined,\n ...(highSpeedSync === undefined\n ? {}\n : { highSpeedSync }),\n ordinarySyncRequiresWholeActiveFrameSimultaneouslyExposed:\n true,\n evidence:\n parseEvidenceList(\n record.evidence,\n \"flashSyncCapabilityProfile.evidence\"\n ),\n limitations:\n parseLimitations(\n record.limitations,\n \"flashSyncCapabilityProfile.limitations\"\n )\n };\n}\n\n/**\n * Shape guard for the resolved capture-mode timing record read by the flash sync functions: every\n * nested object read below must be an object, so a malformed record fails with\n * InvalidConfigurationError instead of a raw TypeError. Values are checked where they are used.\n */\nfunction requireTimingRecordShape(timing: unknown, path: string): void {\n requireInputObject(timing, path);\n const record = timing as Record<string, unknown>;\n if (!Array.isArray(record.evidence)) throw new InvalidConfigurationError(path + \".evidence must be an array.\");\n requireInputObject(record.exposureWindows, path + \".exposureWindows\");\n const windows = record.exposureWindows as Record<string, unknown>;\n requireInputObject(windows.nominalExposureDurationSeconds, path + \".exposureWindows.nominalExposureDurationSeconds\");\n requireInputObject(windows.localExposureDurationRangeSeconds, path + \".exposureWindows.localExposureDurationRangeSeconds\");\n for (const boundary of [\"opening\", \"closing\"] as const) {\n requireInputObject(windows[boundary], path + \".exposureWindows.\" + boundary);\n const schedule = (windows[boundary] as Record<string, unknown>).schedule;\n requireInputObject(schedule, path + \".exposureWindows.\" + boundary + \".schedule\");\n if ((schedule as Record<string, unknown>).kind !== \"simultaneous\") {\n requireInputObject((schedule as Record<string, unknown>).traversalDurationSeconds, path + \".exposureWindows.\" + boundary + \".schedule.traversalDurationSeconds\");\n }\n }\n}\n\nfunction wholeFrameOpenInterval(\n timing:\n ResolvedCaptureModeTiming\n): {\n startSecondsFromCaptureReference:\n number;\n endSecondsFromCaptureReference:\n number;\n durationSeconds: number;\n} {\n const opening =\n timing.exposureWindows.opening\n .schedule;\n const latestOpening =\n opening.kind ===\n \"simultaneous\"\n ? 0\n : opening\n .traversalDurationSeconds\n .value;\n const earliestClosing =\n timing.exposureWindows\n .nominalExposureDurationSeconds\n .value;\n const duration =\n earliestClosing -\n latestOpening;\n return {\n startSecondsFromCaptureReference:\n latestOpening,\n endSecondsFromCaptureReference:\n earliestClosing,\n durationSeconds:\n Math.max(0, duration)\n };\n}\n\nfunction validateReleaseBinding(\n release:\n ResolvedReleaseFrame,\n timing:\n ResolvedCaptureModeTiming\n): void {\n requireInputObject(release, \"releaseFrame\");\n requireInputObject(release.exposure, \"releaseFrame.exposure\");\n const nominal =\n timing.exposureWindows\n .nominalExposureDurationSeconds\n .value;\n const scale =\n Math.max(\n 1,\n Math.abs(nominal),\n Math.abs(\n release.exposure\n .shutterSeconds\n )\n );\n if (\n Math.abs(\n release.exposure\n .shutterSeconds -\n nominal\n ) >\n Number.EPSILON *\n 16 *\n scale\n ) {\n throw new InvalidScientificInputError(\n \"releaseFrame shutter duration must match the exposure duration of the capture-mode exposure-window timing.\"\n );\n }\n}\n\n/**\n * Places a declared ordinary flash pulse inside the actual interval when the whole frame is open, for\n * front- or rear-curtain sync. Otherwise returns a structured incompatibility.\n *\n * Manual flash is a relative light pulse added on top of the scene light, timed on the capture's\n * opening-reference clock. Ordinary front- or rear-curtain sync needs a real interval when the whole\n * frame is open at once. High-speed sync (HSS), TTL and flash metering are not handled here. Source\n * brightness, optical transport and sensor integration have their own contracts.\n * @param input - ResolveManualFlashSyncInput. See that type for coordinates, units and profile binding.\n * @returns ResolvedManualFlashSync. The result states its shape and scientific status; a successful call does not imply calibration.\n *\n * @see docs/API_REFERENCE.md for the root export and exact type graph.\n */\nexport function resolveManualFlashSync(\n input:\n ResolveManualFlashSyncInput\n): ResolvedManualFlashSync {\n requireInputKeys(input, \"resolveManualFlashSync\", [\"flashEnabled\", \"flashProfile\", \"syncCapabilities\", \"timing\", \"syncMode\", \"releaseFrame\"]);\n requireTimingRecordShape(input.timing, \"resolveManualFlashSync timing\");\n const flash =\n parseManualFlashProfile(\n input.flashProfile\n );\n const capabilities =\n parseFlashSyncCapabilityProfile(\n input.syncCapabilities\n );\n\n if (\n capabilities.captureModeId !==\n input.timing.captureModeId ||\n capabilities.timingProfileId !==\n input.timing.timingProfileId\n ) {\n throw new InvalidScientificInputError(\n \"Flash sync capability profile must exactly match the resolved capture-mode and timing-profile identities.\"\n );\n }\n if (\n input.releaseFrame !==\n undefined\n ) {\n validateReleaseBinding(\n input.releaseFrame,\n input.timing\n );\n }\n\n const openInterval =\n wholeFrameOpenInterval(\n input.timing\n );\n const base = {\n flashProfileId:\n flash.profileId,\n flashProfileVersion:\n flash.profileVersion,\n sourceId:\n flash.sourceTemplate.sourceId,\n captureModeId:\n input.timing.captureModeId,\n timingProfileId:\n input.timing.timingProfileId,\n syncCapabilityProfileId:\n capabilities.profileId,\n syncMode:\n input.syncMode,\n timeReference:\n \"first-opening-boundary-phase\" as const,\n wholeActiveFrameOpenInterval:\n openInterval,\n pulseSupportDurationSeconds:\n flash.pulse\n .supportDurationSeconds,\n hssModeled: false as const,\n ttlModeled: false as const,\n sensorReadoutTimingUsedAsExposureTiming:\n false as const,\n whiteBalanceModified:\n false as const,\n focusModified: false as const,\n exposureSettingsModified:\n false as const,\n driveModeModified:\n false as const,\n supportStateModified:\n false as const,\n evidence: [\n ...flash.evidence,\n ...capabilities.evidence,\n ...input.timing.evidence\n ],\n limitations: [\n ...flash.limitations,\n ...capabilities.limitations,\n \"Ordinary flash synchronization is registered to exposure-boundary timing, never sensor data-readout timing.\",\n \"Schema 0.1.0 does not model HSS, TTL/preflash metering, recycle/thermal limits, red-eye preflash, modeling lights, AF-assist or branded flash protocols.\"\n ]\n };\n\n if (!input.flashEnabled) {\n return {\n flashEnabled: false,\n ...base,\n syncStatus:\n \"disabled\",\n pulseStartSecondsFromCaptureReference:\n null,\n pulseEndSecondsFromCaptureReference:\n null,\n waveformTimeZeroSecondsFromCaptureReference:\n null,\n releaseFrameBinding:\n null\n };\n }\n\n if (\n input.syncMode ===\n \"high-speed-sync\"\n ) {\n throw new InvalidScientificInputError(\n \"High-speed sync is not an ordinary sync mode; ordinary single-pulse flash cannot be used as an HSS substitute. Use resolveHighSpeedFlashSync with an HSS-capable sync profile.\"\n );\n }\n if (\n !capabilities\n .supportedOrdinarySyncModes\n .includes(\n input.syncMode\n )\n ) {\n throw new InvalidScientificInputError(\n \"Requested ordinary flash sync mode is not supported by the capability profile.\"\n );\n }\n if (\n openInterval.durationSeconds <=\n 0\n ) {\n throw new InvalidScientificInputError(\n \"Ordinary one-pulse flash cannot uniformly expose the active frame because the exposure-window timing has no whole-frame-open interval.\"\n );\n }\n if (\n flash.pulse\n .supportDurationSeconds >\n openInterval.durationSeconds\n ) {\n throw new InvalidScientificInputError(\n \"Ordinary flash pulse support does not fit inside the whole-active-frame-open interval.\"\n );\n }\n\n const pulseStart =\n input.syncMode ===\n \"front-curtain\"\n ? openInterval\n .startSecondsFromCaptureReference\n : openInterval\n .endSecondsFromCaptureReference -\n flash.pulse\n .supportDurationSeconds;\n const pulseEnd =\n pulseStart +\n flash.pulse\n .supportDurationSeconds;\n\n const releaseBinding =\n input.releaseFrame ===\n undefined\n ? null\n : {\n sequenceId:\n input.releaseFrame\n .sequenceId,\n releaseFrameId:\n input.releaseFrame\n .releaseFrameId,\n frameIndex:\n input.releaseFrame\n .frameIndex,\n sceneTimeSecondsFromSequenceStartAtPulseStart:\n input.releaseFrame\n .sceneTimeSecondsFromSequenceStart +\n pulseStart,\n sceneTimeSecondsFromSequenceStartAtPulseEnd:\n input.releaseFrame\n .sceneTimeSecondsFromSequenceStart +\n pulseEnd\n };\n\n return {\n flashEnabled: true,\n ...base,\n syncStatus:\n \"ordinary-sync-resolved\",\n pulseStartSecondsFromCaptureReference:\n pulseStart,\n pulseEndSecondsFromCaptureReference:\n pulseEnd,\n waveformTimeZeroSecondsFromCaptureReference:\n pulseStart,\n releaseFrameBinding:\n releaseBinding\n };\n}\n\nfunction scaledFlashSource(\n flash:\n ManualFlashProfile\n): SceneIlluminationSource {\n const template =\n flash.sourceTemplate;\n const magnitude =\n template.magnitude;\n if (\n magnitude.kind !==\n \"relative-linear-scale\"\n ) {\n throw new InvalidScientificInputError(\n \"Manual flash schema 0.1.0 relative output control requires a relative-linear-scale illumination source magnitude; calibrated physical flash energy belongs to a later profile.\"\n );\n }\n\n return {\n ...template,\n magnitude: {\n ...magnitude,\n scale:\n magnitude.scale *\n flash.outputControl.scale\n },\n enabled: true,\n temporalBehavior: {\n kind:\n \"time-invariant\"\n }\n };\n}\n\n/**\n * Builds a temporal illumination overlay from the resolved manual pulse. The identity of the base\n * ambient light source is kept.\n *\n * Manual flash is a relative light pulse added on top of the scene light, timed on the capture's\n * opening-reference clock. Ordinary front- or rear-curtain sync needs a real interval when the whole\n * frame is open at once. High-speed sync (HSS), TTL and flash metering are not handled here. Source\n * brightness, optical transport and sensor integration have their own contracts.\n * @param input - CreateManualFlashIlluminationOverlayInput. See that type for coordinates, units and profile binding.\n * @returns ManualFlashIlluminationOverlay. The result states its shape and scientific status; a successful call does not imply calibration.\n *\n * @see docs/API_REFERENCE.md for the root export and exact type graph.\n */\nexport function createManualFlashIlluminationOverlay(\n input:\n CreateManualFlashIlluminationOverlayInput\n): ManualFlashIlluminationOverlay {\n requireInputKeys(input, \"createManualFlashIlluminationOverlay\", [\"baseIlluminationProfile\", \"baseTemporalProfile\", \"flashProfile\", \"resolvedSync\", \"illuminationProfileId\", \"temporalProfileId\"]);\n const base =\n parseSceneIlluminationProfile(\n input\n .baseIlluminationProfile\n );\n const baseTemporal =\n input.baseTemporalProfile ===\n undefined\n ? null\n : parseSceneIlluminationTemporalProfile(\n input.baseTemporalProfile\n );\n if (\n baseTemporal !== null &&\n (\n baseTemporal.sceneId !==\n base.sceneId ||\n baseTemporal\n .illuminationProfileId !==\n base.profileId\n )\n ) {\n throw new InvalidScientificInputError(\n \"baseTemporalProfile must exactly match the base illumination profile scene/profile identities.\"\n );\n }\n\n const flash =\n parseManualFlashProfile(\n input.flashProfile\n );\n const sync =\n input.resolvedSync;\n requireInputObject(sync, \"createManualFlashIlluminationOverlay resolvedSync\");\n if (!Array.isArray(sync.evidence)) throw new InvalidConfigurationError(\"createManualFlashIlluminationOverlay resolvedSync.evidence must be an array.\");\n\n if (\n sync.flashProfileId !==\n flash.profileId ||\n sync.flashProfileVersion !==\n flash.profileVersion ||\n sync.sourceId !==\n flash.sourceTemplate.sourceId\n ) {\n throw new InvalidScientificInputError(\n \"Resolved flash sync identity must match the manual flash profile.\"\n );\n }\n if (\n base.sources.some(\n (source) =>\n source.sourceId ===\n flash.sourceTemplate\n .sourceId\n )\n ) {\n throw new InvalidScientificInputError(\n \"Flash sourceId must be unique within the base illumination profile.\"\n );\n }\n\n if (!sync.flashEnabled) {\n return {\n flashApplied: false,\n illuminationProfile:\n base,\n temporalProfile:\n baseTemporal,\n sourceId:\n flash.sourceTemplate\n .sourceId,\n waveformId:\n flash.pulse.waveformId,\n timeReference:\n \"first-opening-boundary-phase\",\n sourceMagnitudeAppliedBySceneTransport:\n true,\n materialTransportOwnedBySceneRadiance:\n true,\n visibilityOwnedBySceneRadiance:\n true,\n indirectTransportOwnedBySceneRadiance:\n true,\n postRenderBrightnessMultiplierUsed:\n false,\n whiteBalanceModified:\n false,\n ambientMeteringModified:\n false,\n ambientTemporalBehaviorPreserved:\n true,\n ttlMeteringIncluded:\n false\n };\n }\n if (\n sync\n .waveformTimeZeroSecondsFromCaptureReference ===\n null\n ) {\n throw new InvalidScientificInputError(\n \"Enabled flash sync must provide an authoritative waveform time-zero registration.\"\n );\n }\n\n const flashSource =\n scaledFlashSource(\n flash\n );\n const illumination =\n parseSceneIlluminationProfile({\n ...base,\n profileId:\n requireNonEmptyString(\n input.illuminationProfileId,\n \"illuminationProfileId\"\n ),\n sources: [\n ...base.sources,\n flashSource\n ]\n });\n\n const temporal =\n parseSceneIlluminationTemporalProfile({\n schemaVersion: \"0.1.0\",\n profileId:\n requireNonEmptyString(\n input.temporalProfileId,\n \"temporalProfileId\"\n ),\n sceneId:\n illumination.sceneId,\n illuminationProfileId:\n illumination.profileId,\n evidence: [\n ...(baseTemporal?.evidence ?? []),\n ...flash.evidence,\n ...sync.evidence\n ],\n waveforms: [\n ...(baseTemporal?.waveforms ?? []),\n {\n waveformId:\n flash.pulse.waveformId,\n kind:\n \"aperiodic-relative-multiplier\",\n timeUnit: \"s\",\n scientificStatus:\n \"approximation\",\n uncertainty: {\n kind:\n \"not-quantified\",\n limitation:\n \"Manual flash pulse timing/shape is an explicit approximation.\"\n },\n evidence:\n flash.pulse.evidence,\n interpolation:\n \"piecewise-linear\",\n samples:\n flash.pulse.samples,\n outsideSupportBehavior:\n \"zero\"\n }\n ],\n sourceBindings: [\n ...(baseTemporal?.sourceBindings ?? []),\n {\n bindingId:\n flash.profileId +\n \":sync\",\n sourceId:\n flashSource.sourceId,\n waveformId:\n flash.pulse.waveformId,\n captureTimeReference:\n \"first-opening-boundary-phase\",\n waveformTimeZeroSecondsFromCaptureReference:\n sync\n .waveformTimeZeroSecondsFromCaptureReference,\n scientificStatus:\n \"approximation\",\n timingUncertainty: {\n kind:\n \"not-quantified\",\n limitation:\n \"Schema 0.1.0 uses ideal deterministic flash trigger registration within the declared exposure-window schedule.\"\n },\n evidence:\n sync.evidence\n }\n ],\n baseIlluminationProfileRemainsAuthoritative:\n true,\n sensorReadoutTimingUsedAsExposureTiming:\n false,\n automaticExposurePolicyIncluded:\n false\n });\n\n return {\n flashApplied: true,\n illuminationProfile:\n illumination,\n temporalProfile:\n temporal,\n sourceId:\n flashSource.sourceId,\n waveformId:\n flash.pulse.waveformId,\n timeReference:\n \"first-opening-boundary-phase\",\n sourceMagnitudeAppliedBySceneTransport:\n true,\n materialTransportOwnedBySceneRadiance:\n true,\n visibilityOwnedBySceneRadiance:\n true,\n indirectTransportOwnedBySceneRadiance:\n true,\n postRenderBrightnessMultiplierUsed:\n false,\n whiteBalanceModified:\n false,\n ambientMeteringModified:\n false,\n ambientTemporalBehaviorPreserved:\n true,\n ttlMeteringIncluded:\n false\n };\n}\n\nexport interface ResolveHighSpeedFlashSyncInput {\n flashEnabled: boolean;\n /** Ordinary full-power pulse definition; its integral defines the full-power pulse energy. */\n flashProfile: ManualFlashProfile;\n /** Schema 0.2.0 profile with highSpeedSyncSupported true. */\n syncCapabilities: FlashSyncCapabilityProfile;\n timing: ResolvedCaptureModeTiming;\n /** Commanded output as a fraction of full power, (0, 1]. */\n powerFraction: number;\n releaseFrame?: ResolvedReleaseFrame;\n}\n\nexport interface ResolvedHighSpeedFlashSync extends FlashOverlaySyncRegistration {\n modelId: typeof HIGH_SPEED_SYNC_MODEL.id;\n modelVersion: typeof HIGH_SPEED_SYNC_MODEL.version;\n syncMode: \"high-speed-sync\";\n syncStatus: \"disabled\" | \"high-speed-sync-resolved\";\n captureModeId: string;\n timingProfileId: string;\n syncCapabilityProfileId: string;\n timeReference: \"first-opening-boundary-phase\";\n powerFraction: number;\n /** η from the sync capability profile. */\n burstEnergyFractionOfFullPulse: number;\n /** ∫ pulse(t) dt of the declared ordinary pulse, whose relative peak is 1 (relative multiplier · s). */\n singlePulseIntegratedRelativeSeconds: number;\n /** D: burst support covering the first line opening to the last line closing. */\n burstStartSecondsFromCaptureReference: number;\n burstEndSecondsFromCaptureReference: number;\n burstDurationSeconds: number;\n /** Local (slit) exposure durations t_e over the active frame. */\n localExposureDurationRangeSeconds: { minimum: number; maximum: number };\n /** Flash energy each line receives relative to one ordinary pulse at the same power: η·t_e/D. */\n energyFractionOfSinglePulseRange: { minimum: number; maximum: number };\n /** Effective guide-number factor relative to the same-power ordinary pulse: √(η·t_e/D). */\n guideNumberFactorRange: { minimum: number; maximum: number };\n uniformAcrossActiveFrame: boolean;\n /** The rectangular high-speed-sync burst, written as a manual pulse profile for the illumination overlay. */\n burstFlashProfile: ManualFlashProfile | null;\n releaseFrameBinding:\n | {\n sequenceId: string;\n releaseFrameId: string;\n frameIndex: number;\n sceneTimeSecondsFromSequenceStartAtBurstStart: number;\n sceneTimeSecondsFromSequenceStartAtBurstEnd: number;\n }\n | null;\n hssModeled: true;\n ttlModeled: false;\n sensorReadoutTimingUsedAsExposureTiming: false;\n limitations: readonly string[];\n}\n\nfunction integratePulse(samples: readonly SceneIlluminationTemporalWaveformSample[]): number {\n let area = 0;\n for (let index = 1; index < samples.length; index += 1) {\n const a = samples[index - 1]!, b = samples[index]!;\n area += (b.timeSecondsFromWaveformReference - a.timeSecondsFromWaveformReference) *\n (a.relativeMagnitudeMultiplier + b.relativeMagnitudeMultiplier) / 2;\n }\n return area;\n}\n\n/**\n * Resolves high-speed (focal-plane) sync (HSS): a fast pulse train that acts as continuous light and\n * covers the whole travelling-slit exposure.\n *\n * At shutter speeds faster than the ordinary sync limit, the shutter's opening and closing edges\n * cross the frame as a slit, and the whole frame is never open at once. A single short pulse would\n * light only a band.\n *\n * HSS instead fires a rapid pulse train. It behaves like constant output P over the burst D, from\n * the first line opening to the last line closing. Each line collects P·t_e over its slit time t_e.\n * - The burst energy is E_burst = η·p·E_pulse. η comes from the sync profile, p is the power\n * fraction and E_pulse is the energy of an ordinary full-power pulse.\n * - So P = E_burst/D, and each line receives η·p·E_pulse·t_e/D.\n * - Exposure ∝ GN² (inverse-square law, GN = d·N). So, relative to an ordinary pulse at the same\n * power, the effective guide number is GN_HSS/GN = √(η·t_e/D).\n * Shortening t_e by one stop therefore costs half a stop of guide number.\n *\n * Approximations: the pulse train is treated as continuous (pulse period ≪ t_e). Recycle and thermal\n * limits are folded into η. Front/rear-curtain placement does not apply, because the burst covers\n * the whole exposure.\n * @see docs/SCENE_SENSOR_TEMPORAL_EXPOSURE.md#high-speed-sync\n */\nexport function resolveHighSpeedFlashSync(input: ResolveHighSpeedFlashSyncInput): ResolvedHighSpeedFlashSync {\n requireInputKeys(input, \"resolveHighSpeedFlashSync\", [\"flashEnabled\", \"flashProfile\", \"syncCapabilities\", \"timing\", \"powerFraction\", \"releaseFrame\"]);\n requireTimingRecordShape(input.timing, \"resolveHighSpeedFlashSync timing\");\n const flash = parseManualFlashProfile(input.flashProfile);\n const capabilities = parseFlashSyncCapabilityProfile(input.syncCapabilities);\n if (capabilities.captureModeId !== input.timing.captureModeId || capabilities.timingProfileId !== input.timing.timingProfileId) {\n throw new InvalidScientificInputError(\n \"Flash sync capability profile must exactly match the resolved capture-mode and timing-profile identities.\"\n );\n }\n if (!capabilities.highSpeedSyncSupported || capabilities.highSpeedSync === undefined) {\n throw new InvalidScientificInputError(\"The flash sync capability profile does not declare high-speed sync.\");\n }\n const power = input.powerFraction;\n if (typeof power !== \"number\" || !Number.isFinite(power) || power <= 0 || power > 1) {\n throw new InvalidScientificInputError(\"HSS powerFraction must lie in (0, 1].\");\n }\n if (input.releaseFrame !== undefined) validateReleaseBinding(input.releaseFrame, input.timing);\n\n const windows = input.timing.exposureWindows;\n const closing = windows.closing.schedule;\n const burstEnd = windows.nominalExposureDurationSeconds.value +\n (closing.kind === \"simultaneous\" ? 0 : closing.traversalDurationSeconds.value);\n const eta = capabilities.highSpeedSync.burstEnergyFractionOfFullPulse;\n const local = windows.localExposureDurationRangeSeconds;\n const fraction = { minimum: eta * local.minimum / burstEnd, maximum: eta * local.maximum / burstEnd };\n const pulseEnergy = integratePulse(flash.pulse.samples);\n const burstFlashProfile: ManualFlashProfile = {\n ...flash,\n pulse: {\n ...flash.pulse,\n waveformId: flash.pulse.waveformId + \"-hss-burst\",\n supportDurationSeconds: burstEnd,\n samples: [\n { timeSecondsFromWaveformReference: 0, relativeMagnitudeMultiplier: 1 },\n { timeSecondsFromWaveformReference: burstEnd, relativeMagnitudeMultiplier: 1 }\n ],\n limitations: [...flash.pulse.limitations,\n \"Quasi-continuous HSS burst: the pulse train is approximated by constant output over the burst support.\"]\n },\n outputControl: { ...flash.outputControl, scale: flash.outputControl.scale * power * eta * pulseEnergy / burstEnd }\n };\n const enabled = input.flashEnabled;\n return {\n modelId: HIGH_SPEED_SYNC_MODEL.id,\n modelVersion: HIGH_SPEED_SYNC_MODEL.version,\n flashEnabled: enabled,\n flashProfileId: flash.profileId,\n flashProfileVersion: flash.profileVersion,\n sourceId: flash.sourceTemplate.sourceId,\n syncMode: \"high-speed-sync\",\n syncStatus: enabled ? \"high-speed-sync-resolved\" : \"disabled\",\n captureModeId: input.timing.captureModeId,\n timingProfileId: input.timing.timingProfileId,\n syncCapabilityProfileId: capabilities.profileId,\n timeReference: \"first-opening-boundary-phase\",\n powerFraction: power,\n burstEnergyFractionOfFullPulse: eta,\n singlePulseIntegratedRelativeSeconds: pulseEnergy,\n burstStartSecondsFromCaptureReference: 0,\n burstEndSecondsFromCaptureReference: burstEnd,\n burstDurationSeconds: burstEnd,\n localExposureDurationRangeSeconds: { minimum: local.minimum, maximum: local.maximum },\n energyFractionOfSinglePulseRange: fraction,\n guideNumberFactorRange: { minimum: Math.sqrt(fraction.minimum), maximum: Math.sqrt(fraction.maximum) },\n uniformAcrossActiveFrame: local.minimum === local.maximum,\n burstFlashProfile: enabled ? burstFlashProfile : null,\n waveformTimeZeroSecondsFromCaptureReference: enabled ? 0 : null,\n releaseFrameBinding: !enabled || input.releaseFrame === undefined ? null : {\n sequenceId: input.releaseFrame.sequenceId,\n releaseFrameId: input.releaseFrame.releaseFrameId,\n frameIndex: input.releaseFrame.frameIndex,\n sceneTimeSecondsFromSequenceStartAtBurstStart: input.releaseFrame.sceneTimeSecondsFromSequenceStart,\n sceneTimeSecondsFromSequenceStartAtBurstEnd: input.releaseFrame.sceneTimeSecondsFromSequenceStart + burstEnd\n },\n hssModeled: true,\n ttlModeled: false,\n sensorReadoutTimingUsedAsExposureTiming: false,\n evidence: [...flash.evidence, ...capabilities.evidence, ...capabilities.highSpeedSync.evidence, ...input.timing.evidence],\n limitations: [\n ...flash.limitations,\n ...capabilities.limitations,\n \"HSS burst is registered to exposure-boundary timing (first line opening to last line closing), never sensor data-readout timing.\",\n \"Pulse-train ripple, recycle/thermal limits beyond the declared burst energy fraction and branded flash protocols are not modeled.\"\n ]\n };\n}\n\n/**\n * Registers a resolved high-speed-sync burst as a temporal illumination overlay: a rectangular\n * waveform over [0, D]. Each line then collects the burst over its own local exposure window.\n */\nexport function createHighSpeedSyncIlluminationOverlay(\n input: Omit<CreateManualFlashIlluminationOverlayInput, \"resolvedSync\"> & { resolvedSync: ResolvedHighSpeedFlashSync }\n): ManualFlashIlluminationOverlay {\n requireInputKeys(input, \"createHighSpeedSyncIlluminationOverlay\", [\"baseIlluminationProfile\", \"baseTemporalProfile\", \"flashProfile\", \"illuminationProfileId\", \"temporalProfileId\", \"resolvedSync\"]);\n requireInputObject(input.resolvedSync, \"createHighSpeedSyncIlluminationOverlay resolvedSync\");\n return createManualFlashIlluminationOverlay({ ...input,\n flashProfile: input.resolvedSync.burstFlashProfile ?? input.flashProfile });\n}\n"]}
|
|
@@ -53,20 +53,20 @@ export interface CreateSceneRadianceDerivedExposureMeteringSampleSetInput {
|
|
|
53
53
|
samples: readonly ExposureMeteringZoneSample[];
|
|
54
54
|
}
|
|
55
55
|
/**
|
|
56
|
-
* Parses the declared approximation
|
|
57
|
-
*
|
|
56
|
+
* Parses the declared approximation that turns renderer or provider scene data
|
|
57
|
+
* into the single relative linear values the meter uses.
|
|
58
58
|
*
|
|
59
|
-
*
|
|
60
|
-
* spectral-to-photometric conversion
|
|
59
|
+
* The profile does not support any claim of calibrated luminance or of a
|
|
60
|
+
* spectral-to-photometric conversion.
|
|
61
61
|
*/
|
|
62
62
|
export declare function parseSceneRadianceMeteringDerivationProfile(value: unknown): SceneRadianceMeteringDerivationProfile;
|
|
63
63
|
/**
|
|
64
|
-
*
|
|
65
|
-
* provider context.
|
|
64
|
+
* Builds a set of relative pre-exposure meter samples tied to one validated
|
|
65
|
+
* scene-radiance provider context.
|
|
66
66
|
*
|
|
67
|
-
* The caller
|
|
68
|
-
*
|
|
69
|
-
* radiance into luminance
|
|
67
|
+
* The caller or renderer still supplies the relative sample values. This
|
|
68
|
+
* bridge only checks identity and timing. It does not convert spectral
|
|
69
|
+
* radiance into luminance, and it does not define a calibrated meter spectral
|
|
70
|
+
* response.
|
|
70
71
|
*/
|
|
71
72
|
export declare function createSceneRadianceDerivedExposureMeteringSampleSet(input: CreateSceneRadianceDerivedExposureMeteringSampleSetInput): SceneRadianceDerivedExposureMeteringSampleSet;
|
|
72
|
-
//# sourceMappingURL=metering-scene-radiance.d.ts.map
|
|
@@ -1,26 +1,32 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
3
|
+
* Links scene radiance to metering.
|
|
4
|
+
*
|
|
5
|
+
* The profile parser reads the declared approximation that turns renderer or provider scene data into
|
|
6
|
+
* the single relative linear values the meter uses. The profile does not support any claim of
|
|
7
|
+
* calibrated luminance or of a spectral-to-photometric conversion.
|
|
8
|
+
*
|
|
9
|
+
* The sample-set function builds a set of relative pre-exposure meter samples tied to one validated
|
|
10
|
+
* scene-radiance provider context. The caller or renderer still supplies the relative sample values.
|
|
11
|
+
* This bridge only checks identity and timing. It does not convert spectral radiance into luminance,
|
|
12
|
+
* and it does not define a calibrated meter spectral response.
|
|
13
|
+
* @see docs/USAGE.md for the equations, units, coordinate conventions, known blockers and support
|
|
14
|
+
* limits.
|
|
12
15
|
*/
|
|
13
16
|
import { InvalidConfigurationError } from "../core/configuration-error.js";
|
|
14
17
|
import { parseEvidenceList } from "../core/evidence-provenance.js";
|
|
15
18
|
import { InvalidScientificInputError } from "../core/validation.js";
|
|
16
19
|
import { assessSceneMaterialResponseFidelity } from "../schema/scene-radiance.js";
|
|
20
|
+
import { requireInputKeys, requireInputObject, rejectUnknownFields } from "../core/record-validation.js";
|
|
17
21
|
export const SCENE_RADIANCE_METERING_DERIVATION_SCHEMA_VERSION = "0.1.0";
|
|
18
|
-
function requireRecord(value, path) {
|
|
22
|
+
function requireRecord(value, path, allowedKeys) {
|
|
19
23
|
if (typeof value !== "object" ||
|
|
20
24
|
value === null ||
|
|
21
25
|
Array.isArray(value)) {
|
|
22
26
|
throw new InvalidConfigurationError(path + " must be an object.");
|
|
23
27
|
}
|
|
28
|
+
if (allowedKeys !== null)
|
|
29
|
+
rejectUnknownFields(value, allowedKeys, path);
|
|
24
30
|
return value;
|
|
25
31
|
}
|
|
26
32
|
function requireNonEmptyString(value, path) {
|
|
@@ -38,14 +44,14 @@ function requireFinite(value, path) {
|
|
|
38
44
|
return value;
|
|
39
45
|
}
|
|
40
46
|
/**
|
|
41
|
-
* Parses the declared approximation
|
|
42
|
-
*
|
|
47
|
+
* Parses the declared approximation that turns renderer or provider scene data
|
|
48
|
+
* into the single relative linear values the meter uses.
|
|
43
49
|
*
|
|
44
|
-
*
|
|
45
|
-
* spectral-to-photometric conversion
|
|
50
|
+
* The profile does not support any claim of calibrated luminance or of a
|
|
51
|
+
* spectral-to-photometric conversion.
|
|
46
52
|
*/
|
|
47
53
|
export function parseSceneRadianceMeteringDerivationProfile(value) {
|
|
48
|
-
const record = requireRecord(value, "sceneRadianceMeteringDerivationProfile");
|
|
54
|
+
const record = requireRecord(value, "sceneRadianceMeteringDerivationProfile", ["schemaVersion", "scientificStatus", "method", "spectralWeighting", "derivationId", "evidence", "limitation"]);
|
|
49
55
|
if (record.schemaVersion !==
|
|
50
56
|
SCENE_RADIANCE_METERING_DERIVATION_SCHEMA_VERSION) {
|
|
51
57
|
throw new InvalidConfigurationError('sceneRadianceMeteringDerivationProfile.schemaVersion must be "' +
|
|
@@ -76,6 +82,12 @@ export function parseSceneRadianceMeteringDerivationProfile(value) {
|
|
|
76
82
|
}
|
|
77
83
|
function validateProviderContext(input) {
|
|
78
84
|
const { providerProfile, illuminationProfile, illuminationTemporalProfile, materialResponseProfile } = input;
|
|
85
|
+
requireInputObject(providerProfile, "providerProfile");
|
|
86
|
+
requireInputObject(providerProfile.fidelity, "providerProfile.fidelity");
|
|
87
|
+
requireInputObject(illuminationProfile, "illuminationProfile");
|
|
88
|
+
requireInputObject(materialResponseProfile, "materialResponseProfile");
|
|
89
|
+
if (illuminationTemporalProfile !== undefined)
|
|
90
|
+
requireInputObject(illuminationTemporalProfile, "illuminationTemporalProfile");
|
|
79
91
|
if (providerProfile.sceneId !==
|
|
80
92
|
illuminationProfile.sceneId) {
|
|
81
93
|
throw new InvalidScientificInputError("Provider and illumination profiles must reference the same sceneId.");
|
|
@@ -130,6 +142,11 @@ function validateProviderContext(input) {
|
|
|
130
142
|
.illuminationProfileId) {
|
|
131
143
|
throw new InvalidScientificInputError("Temporal illumination profile must bind the provider's illuminationProfileId.");
|
|
132
144
|
}
|
|
145
|
+
if (!Array.isArray(illuminationProfile.sources) || !Array.isArray(illuminationTemporalProfile.sourceBindings)) {
|
|
146
|
+
throw new InvalidConfigurationError("illuminationProfile.sources and illuminationTemporalProfile.sourceBindings must be arrays.");
|
|
147
|
+
}
|
|
148
|
+
illuminationProfile.sources.forEach((entry, index) => requireInputObject(entry, "illuminationProfile.sources[" + index + "]"));
|
|
149
|
+
illuminationTemporalProfile.sourceBindings.forEach((entry, index) => requireInputObject(entry, "illuminationTemporalProfile.sourceBindings[" + index + "]"));
|
|
133
150
|
const knownSourceIds = new Set(illuminationProfile.sources.map((entry) => entry.sourceId));
|
|
134
151
|
for (const binding of illuminationTemporalProfile
|
|
135
152
|
.sourceBindings) {
|
|
@@ -146,31 +163,33 @@ function validateProviderContext(input) {
|
|
|
146
163
|
return materialResponseFidelity;
|
|
147
164
|
}
|
|
148
165
|
/**
|
|
149
|
-
*
|
|
150
|
-
* provider context.
|
|
166
|
+
* Builds a set of relative pre-exposure meter samples tied to one validated
|
|
167
|
+
* scene-radiance provider context.
|
|
151
168
|
*
|
|
152
|
-
* The caller
|
|
153
|
-
*
|
|
154
|
-
* radiance into luminance
|
|
169
|
+
* The caller or renderer still supplies the relative sample values. This
|
|
170
|
+
* bridge only checks identity and timing. It does not convert spectral
|
|
171
|
+
* radiance into luminance, and it does not define a calibrated meter spectral
|
|
172
|
+
* response.
|
|
155
173
|
*/
|
|
156
174
|
export function createSceneRadianceDerivedExposureMeteringSampleSet(input) {
|
|
175
|
+
requireInputKeys(input, "createSceneRadianceDerivedExposureMeteringSampleSet", ["measurementId", "sceneStateId", "providerProfile", "illuminationProfile", "materialResponseProfile", "illuminationTemporalProfile", "captureTimeSecondsFromReference", "captureGeometry", "derivationProfile", "samples"]);
|
|
157
176
|
const derivationProfile = parseSceneRadianceMeteringDerivationProfile(input.derivationProfile);
|
|
158
177
|
const materialResponseFidelity = validateProviderContext(input);
|
|
159
178
|
if (typeof input.measurementId !==
|
|
160
179
|
"string" ||
|
|
161
180
|
input.measurementId.trim().length ===
|
|
162
181
|
0) {
|
|
163
|
-
throw new
|
|
182
|
+
throw new InvalidConfigurationError("measurementId must be a non-empty string.");
|
|
164
183
|
}
|
|
165
184
|
if (typeof input.sceneStateId !==
|
|
166
185
|
"string" ||
|
|
167
186
|
input.sceneStateId.trim().length ===
|
|
168
187
|
0) {
|
|
169
|
-
throw new
|
|
188
|
+
throw new InvalidConfigurationError("sceneStateId must be a non-empty string.");
|
|
170
189
|
}
|
|
171
190
|
if (!Array.isArray(input.samples) ||
|
|
172
191
|
input.samples.length === 0) {
|
|
173
|
-
throw new
|
|
192
|
+
throw new InvalidConfigurationError("samples must be a non-empty array.");
|
|
174
193
|
}
|
|
175
194
|
const temporal = input.providerProfile
|
|
176
195
|
.illuminationTemporalProfileId ===
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metering-scene-radiance.js","sourceRoot":"","sources":["../../src/exposure/metering-scene-radiance.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"metering-scene-radiance.js","sourceRoot":"","sources":["../../src/exposure/metering-scene-radiance.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Links scene radiance to metering.\n *\n * The profile parser reads the declared approximation that turns renderer or provider scene data into\n * the single relative linear values the meter uses. The profile does not support any claim of\n * calibrated luminance or of a spectral-to-photometric conversion.\n *\n * The sample-set function builds a set of relative pre-exposure meter samples tied to one validated\n * scene-radiance provider context. The caller or renderer still supplies the relative sample values.\n * This bridge only checks identity and timing. It does not convert spectral radiance into luminance,\n * and it does not define a calibrated meter spectral response.\n * @see docs/USAGE.md for the equations, units, coordinate conventions, known blockers and support\n * limits.\n */\n\nimport { InvalidConfigurationError } from \"../core/configuration-error.js\";\nimport {\n parseEvidenceList,\n type EvidenceProvenance\n} from \"../core/evidence-provenance.js\";\nimport { InvalidScientificInputError } from \"../core/validation.js\";\nimport type {\n ResolvedCaptureGeometry\n} from \"../output/capture-geometry.js\";\nimport {\n assessSceneMaterialResponseFidelity,\n type SceneMaterialResponseProfile,\n type SceneRadianceProviderProfile\n} from \"../schema/scene-radiance.js\";\nimport type {\n SceneIlluminationProfile\n} from \"../schema/illumination.js\";\nimport type {\n SceneIlluminationTemporalProfile\n} from \"../schema/illumination-temporal.js\";\nimport type {\n ExposureMeteringSampleSet,\n ExposureMeteringZoneSample\n} from \"./metering.js\";\nimport { requireInputKeys, requireInputObject, rejectUnknownFields } from \"../core/record-validation.js\";\n\ntype UnknownRecord = Record<string, unknown>;\n\nexport const SCENE_RADIANCE_METERING_DERIVATION_SCHEMA_VERSION =\n \"0.1.0\" as const;\n\nexport interface SceneRadianceMeteringDerivationProfile {\n schemaVersion:\n typeof SCENE_RADIANCE_METERING_DERIVATION_SCHEMA_VERSION;\n derivationId: string;\n scientificStatus: \"approximation\";\n method:\n \"renderer-provided-pre-exposure-relative-reduction\";\n spectralWeighting:\n \"not-calibrated\";\n evidence: readonly EvidenceProvenance[];\n limitation: string;\n}\n\nexport type SceneRadianceMeteringTemporalContext =\n | {\n kind: \"time-invariant\";\n }\n | {\n kind:\n \"registered-time-varying\";\n illuminationTemporalProfileId:\n string;\n timeReference:\n \"first-opening-boundary-phase\";\n captureTimeSecondsFromReference:\n number;\n };\n\nexport interface SceneRadianceMeteringSourceContext {\n kind:\n \"scene-radiance-provider-derived-relative\";\n sceneId: string;\n sceneStateId: string;\n providerProfileId: string;\n illuminationProfileId: string;\n materialResponseProfileId: string;\n derivationProfileId: string;\n providerScientificStatus:\n SceneRadianceProviderProfile[\"scientificStatus\"];\n materialResponseFidelity:\n ReturnType<\n typeof assessSceneMaterialResponseFidelity\n >;\n temporal:\n SceneRadianceMeteringTemporalContext;\n spectralReductionCalibrated: false;\n calibratedLuminanceClaimAuthorized:\n false;\n calibratedSceneRadianceClaimAuthorized:\n false;\n}\n\nexport interface SceneRadianceDerivedExposureMeteringSampleSet\n extends ExposureMeteringSampleSet {\n sourceContext:\n SceneRadianceMeteringSourceContext;\n}\n\nexport interface CreateSceneRadianceDerivedExposureMeteringSampleSetInput {\n measurementId: string;\n sceneStateId: string;\n providerProfile:\n SceneRadianceProviderProfile;\n illuminationProfile:\n SceneIlluminationProfile;\n materialResponseProfile:\n SceneMaterialResponseProfile;\n illuminationTemporalProfile?:\n SceneIlluminationTemporalProfile;\n captureTimeSecondsFromReference?: number;\n captureGeometry:\n ResolvedCaptureGeometry;\n derivationProfile:\n SceneRadianceMeteringDerivationProfile;\n samples:\n readonly ExposureMeteringZoneSample[];\n}\n\nfunction requireRecord(\n value: unknown,\n path: string,\n allowedKeys: readonly string[] | null\n): UnknownRecord {\n if (\n typeof value !== \"object\" ||\n value === null ||\n Array.isArray(value)\n ) {\n throw new InvalidConfigurationError(\n path + \" must be an object.\"\n );\n }\n if (allowedKeys !== null) rejectUnknownFields(value, allowedKeys, path);\n return value as UnknownRecord;\n}\n\nfunction requireNonEmptyString(\n value: unknown,\n path: string\n): string {\n if (\n typeof value !== \"string\" ||\n value.trim().length === 0\n ) {\n throw new InvalidConfigurationError(\n path + \" must be a non-empty string.\"\n );\n }\n return value.trim();\n}\n\nfunction requireFinite(\n value: unknown,\n path: string\n): number {\n if (\n typeof value !== \"number\" ||\n !Number.isFinite(value)\n ) {\n throw new InvalidScientificInputError(\n path + \" must be finite.\"\n );\n }\n return value;\n}\n\n/**\n * Parses the declared approximation that turns renderer or provider scene data\n * into the single relative linear values the meter uses.\n *\n * The profile does not support any claim of calibrated luminance or of a\n * spectral-to-photometric conversion.\n */\nexport function parseSceneRadianceMeteringDerivationProfile(\n value: unknown\n): SceneRadianceMeteringDerivationProfile {\n const record = requireRecord(\n value,\n \"sceneRadianceMeteringDerivationProfile\", [\"schemaVersion\", \"scientificStatus\", \"method\", \"spectralWeighting\", \"derivationId\", \"evidence\", \"limitation\"]\n );\n\n if (\n record.schemaVersion !==\n SCENE_RADIANCE_METERING_DERIVATION_SCHEMA_VERSION\n ) {\n throw new InvalidConfigurationError(\n 'sceneRadianceMeteringDerivationProfile.schemaVersion must be \"' +\n SCENE_RADIANCE_METERING_DERIVATION_SCHEMA_VERSION +\n '\".'\n );\n }\n if (\n record.scientificStatus !==\n \"approximation\"\n ) {\n throw new InvalidConfigurationError(\n 'sceneRadianceMeteringDerivationProfile.scientificStatus must be \"approximation\" in schema 0.1.0.'\n );\n }\n if (\n record.method !==\n \"renderer-provided-pre-exposure-relative-reduction\"\n ) {\n throw new InvalidConfigurationError(\n 'sceneRadianceMeteringDerivationProfile.method must be \"renderer-provided-pre-exposure-relative-reduction\".'\n );\n }\n if (\n record.spectralWeighting !==\n \"not-calibrated\"\n ) {\n throw new InvalidConfigurationError(\n 'sceneRadianceMeteringDerivationProfile.spectralWeighting must be \"not-calibrated\" in schema 0.1.0.'\n );\n }\n\n return {\n schemaVersion:\n SCENE_RADIANCE_METERING_DERIVATION_SCHEMA_VERSION,\n derivationId:\n requireNonEmptyString(\n record.derivationId,\n \"sceneRadianceMeteringDerivationProfile.derivationId\"\n ),\n scientificStatus: \"approximation\",\n method:\n \"renderer-provided-pre-exposure-relative-reduction\",\n spectralWeighting:\n \"not-calibrated\",\n evidence: parseEvidenceList(\n record.evidence,\n \"sceneRadianceMeteringDerivationProfile.evidence\"\n ),\n limitation:\n requireNonEmptyString(\n record.limitation,\n \"sceneRadianceMeteringDerivationProfile.limitation\"\n )\n };\n}\n\nfunction validateProviderContext(\n input:\n CreateSceneRadianceDerivedExposureMeteringSampleSetInput\n): ReturnType<\n typeof assessSceneMaterialResponseFidelity\n> {\n const {\n providerProfile,\n illuminationProfile,\n illuminationTemporalProfile,\n materialResponseProfile\n } = input;\n requireInputObject(providerProfile, \"providerProfile\");\n requireInputObject(providerProfile.fidelity, \"providerProfile.fidelity\");\n requireInputObject(illuminationProfile, \"illuminationProfile\");\n requireInputObject(materialResponseProfile, \"materialResponseProfile\");\n if (illuminationTemporalProfile !== undefined) requireInputObject(illuminationTemporalProfile, \"illuminationTemporalProfile\");\n\n if (\n providerProfile.sceneId !==\n illuminationProfile.sceneId\n ) {\n throw new InvalidScientificInputError(\n \"Provider and illumination profiles must reference the same sceneId.\"\n );\n }\n if (\n providerProfile.sceneId !==\n materialResponseProfile.sceneId\n ) {\n throw new InvalidScientificInputError(\n \"Provider and material-response profiles must reference the same sceneId.\"\n );\n }\n if (\n providerProfile.illuminationProfileId !==\n illuminationProfile.profileId\n ) {\n throw new InvalidScientificInputError(\n \"Provider illuminationProfileId must match the supplied illumination profile.\"\n );\n }\n if (\n providerProfile.materialResponseProfileId !==\n materialResponseProfile.profileId\n ) {\n throw new InvalidScientificInputError(\n \"Provider materialResponseProfileId must match the supplied material-response profile.\"\n );\n }\n\n const materialResponseFidelity =\n assessSceneMaterialResponseFidelity(\n materialResponseProfile\n );\n if (\n providerProfile.fidelity.material !==\n materialResponseFidelity\n ) {\n throw new InvalidScientificInputError(\n \"Provider material fidelity must match the supplied material-response profile.\"\n );\n }\n\n if (\n providerProfile\n .illuminationTemporalProfileId ===\n undefined\n ) {\n if (\n illuminationTemporalProfile !==\n undefined\n ) {\n throw new InvalidScientificInputError(\n \"A temporal illumination profile was supplied but the provider profile does not bind one.\"\n );\n }\n if (\n input\n .captureTimeSecondsFromReference !==\n undefined\n ) {\n throw new InvalidScientificInputError(\n \"captureTimeSecondsFromReference must be omitted for a time-invariant provider context.\"\n );\n }\n return materialResponseFidelity;\n }\n\n if (\n illuminationTemporalProfile ===\n undefined\n ) {\n throw new InvalidScientificInputError(\n \"Provider illuminationTemporalProfileId requires the matching temporal illumination profile.\"\n );\n }\n if (\n providerProfile\n .illuminationTemporalProfileId !==\n illuminationTemporalProfile.profileId\n ) {\n throw new InvalidScientificInputError(\n \"Provider illuminationTemporalProfileId must match the supplied temporal illumination profile.\"\n );\n }\n if (\n providerProfile.sceneId !==\n illuminationTemporalProfile.sceneId\n ) {\n throw new InvalidScientificInputError(\n \"Provider and temporal illumination profiles must reference the same sceneId.\"\n );\n }\n if (\n providerProfile\n .illuminationProfileId !==\n illuminationTemporalProfile\n .illuminationProfileId\n ) {\n throw new InvalidScientificInputError(\n \"Temporal illumination profile must bind the provider's illuminationProfileId.\"\n );\n }\n\n if (!Array.isArray(illuminationProfile.sources) || !Array.isArray(illuminationTemporalProfile.sourceBindings)) {\n throw new InvalidConfigurationError(\"illuminationProfile.sources and illuminationTemporalProfile.sourceBindings must be arrays.\");\n }\n illuminationProfile.sources.forEach((entry, index) => requireInputObject(entry, \"illuminationProfile.sources[\" + index + \"]\"));\n illuminationTemporalProfile.sourceBindings.forEach((entry, index) => requireInputObject(entry, \"illuminationTemporalProfile.sourceBindings[\" + index + \"]\"));\n const knownSourceIds =\n new Set(\n illuminationProfile.sources.map(\n (entry) => entry.sourceId\n )\n );\n for (\n const binding of\n illuminationTemporalProfile\n .sourceBindings\n ) {\n if (\n !knownSourceIds.has(\n binding.sourceId\n )\n ) {\n throw new InvalidScientificInputError(\n \"Temporal illumination source binding references a sourceId that is not declared by the illumination profile.\"\n );\n }\n }\n if (\n input\n .captureTimeSecondsFromReference ===\n undefined\n ) {\n throw new InvalidScientificInputError(\n \"Time-varying scene-radiance metering requires an explicit captureTimeSecondsFromReference.\"\n );\n }\n requireFinite(\n input.captureTimeSecondsFromReference,\n \"captureTimeSecondsFromReference\"\n );\n\n return materialResponseFidelity;\n}\n\n/**\n * Builds a set of relative pre-exposure meter samples tied to one validated\n * scene-radiance provider context.\n *\n * The caller or renderer still supplies the relative sample values. This\n * bridge only checks identity and timing. It does not convert spectral\n * radiance into luminance, and it does not define a calibrated meter spectral\n * response.\n */\nexport function createSceneRadianceDerivedExposureMeteringSampleSet(\n input:\n CreateSceneRadianceDerivedExposureMeteringSampleSetInput\n): SceneRadianceDerivedExposureMeteringSampleSet {\n requireInputKeys(input, \"createSceneRadianceDerivedExposureMeteringSampleSet\", [\"measurementId\", \"sceneStateId\", \"providerProfile\", \"illuminationProfile\", \"materialResponseProfile\", \"illuminationTemporalProfile\", \"captureTimeSecondsFromReference\", \"captureGeometry\", \"derivationProfile\", \"samples\"]);\n const derivationProfile =\n parseSceneRadianceMeteringDerivationProfile(\n input.derivationProfile\n );\n const materialResponseFidelity =\n validateProviderContext(input);\n\n if (\n typeof input.measurementId !==\n \"string\" ||\n input.measurementId.trim().length ===\n 0\n ) {\n throw new InvalidConfigurationError(\n \"measurementId must be a non-empty string.\"\n );\n }\n if (\n typeof input.sceneStateId !==\n \"string\" ||\n input.sceneStateId.trim().length ===\n 0\n ) {\n throw new InvalidConfigurationError(\n \"sceneStateId must be a non-empty string.\"\n );\n }\n if (\n !Array.isArray(input.samples) ||\n input.samples.length === 0\n ) {\n throw new InvalidConfigurationError(\n \"samples must be a non-empty array.\"\n );\n }\n\n const temporal:\n SceneRadianceMeteringTemporalContext =\n input.providerProfile\n .illuminationTemporalProfileId ===\n undefined\n ? {\n kind: \"time-invariant\"\n }\n : {\n kind:\n \"registered-time-varying\",\n illuminationTemporalProfileId:\n input.providerProfile\n .illuminationTemporalProfileId,\n timeReference:\n \"first-opening-boundary-phase\",\n captureTimeSecondsFromReference:\n input\n .captureTimeSecondsFromReference!\n };\n\n return {\n measurementId:\n input.measurementId.trim(),\n sceneStateId:\n input.sceneStateId.trim(),\n inputDomain:\n \"relative-pre-exposure-linear-signal\",\n captureRegion:\n \"oriented-active-capture\",\n captureGeometry:\n input.captureGeometry,\n processingState: {\n exposureSettingsApplied: false,\n whiteBalanceApplied: false,\n toneMappingApplied: false,\n displayGammaApplied: false,\n sharpeningApplied: false\n },\n samples: input.samples,\n sourceContext: {\n kind:\n \"scene-radiance-provider-derived-relative\",\n sceneId:\n input.providerProfile.sceneId,\n sceneStateId:\n input.sceneStateId.trim(),\n providerProfileId:\n input.providerProfile.profileId,\n illuminationProfileId:\n input.illuminationProfile.profileId,\n materialResponseProfileId:\n input.materialResponseProfile\n .profileId,\n derivationProfileId:\n derivationProfile.derivationId,\n providerScientificStatus:\n input.providerProfile\n .scientificStatus,\n materialResponseFidelity,\n temporal,\n spectralReductionCalibrated:\n false,\n calibratedLuminanceClaimAuthorized:\n false,\n calibratedSceneRadianceClaimAuthorized:\n false\n }\n };\n}\n"]}
|
|
@@ -48,20 +48,20 @@ export interface SetExposureCompensationOnMeterTargetInput {
|
|
|
48
48
|
exposureCompensationStops: number;
|
|
49
49
|
}
|
|
50
50
|
/**
|
|
51
|
-
* Freezes one metering result into
|
|
52
|
-
*
|
|
51
|
+
* Freezes one metering result into a stable relative exposure target, for
|
|
52
|
+
* camera-control logic to use.
|
|
53
53
|
*
|
|
54
|
-
* The target copies the meter snapshot by value.
|
|
55
|
-
* not
|
|
54
|
+
* The target copies the meter snapshot by value. Later changes to the scene or
|
|
55
|
+
* light do not change it. This is what the engine provides for AE lock
|
|
56
|
+
* (auto-exposure lock).
|
|
56
57
|
*/
|
|
57
58
|
export declare function createExposureMeterTargetFromMeteringResult(input: CreateExposureMeterTargetInput): ExposureMeterTarget;
|
|
58
59
|
/**
|
|
59
60
|
* Sets an absolute exposure-compensation value on a frozen meter target.
|
|
60
61
|
*
|
|
61
|
-
* Compensation is always
|
|
62
|
-
* repeated UI updates cannot
|
|
63
|
-
* drift. Positive compensation
|
|
62
|
+
* Compensation is always worked out again from the base target without
|
|
63
|
+
* compensation, so repeated UI updates cannot build up floating-point or
|
|
64
|
+
* control drift. Positive compensation asks for more exposure.
|
|
64
65
|
*/
|
|
65
66
|
export declare function setExposureCompensationOnMeterTarget(input: SetExposureCompensationOnMeterTargetInput): ExposureMeterTarget;
|
|
66
67
|
export {};
|
|
67
|
-
//# sourceMappingURL=metering-target.d.ts.map
|
|
@@ -1,20 +1,24 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
3
|
+
* Meter targets: a frozen metering result that camera-control logic uses as its exposure target.
|
|
4
|
+
*
|
|
5
|
+
* The target copies the meter snapshot by value. Later changes to the scene or light do not change
|
|
6
|
+
* it. This is what the engine provides for AE lock (auto-exposure lock).
|
|
7
|
+
*
|
|
8
|
+
* Exposure compensation is set as an absolute value. It is always worked out again from the base
|
|
9
|
+
* target without compensation, so repeated UI updates cannot build up floating-point or control
|
|
10
|
+
* drift. Positive compensation asks for more exposure.
|
|
11
|
+
* @see docs/USAGE.md for the equations, units, coordinate conventions, known blockers and support
|
|
12
|
+
* limits.
|
|
11
13
|
*/
|
|
12
14
|
import { InvalidScientificInputError } from "../core/validation.js";
|
|
15
|
+
import { requireInputObject, requireInputKeys } from "../core/record-validation.js";
|
|
16
|
+
import { InvalidConfigurationError } from "../core/configuration-error.js";
|
|
13
17
|
export const EXPOSURE_METER_TARGET_SCHEMA_VERSION = "0.1.0";
|
|
14
18
|
function requireNonEmptyString(value, path) {
|
|
15
19
|
if (typeof value !== "string" ||
|
|
16
20
|
value.trim().length === 0) {
|
|
17
|
-
throw new
|
|
21
|
+
throw new InvalidConfigurationError(path + " must be a non-empty string.");
|
|
18
22
|
}
|
|
19
23
|
return value.trim();
|
|
20
24
|
}
|
|
@@ -62,13 +66,14 @@ function meterSnapshotIdentity(result) {
|
|
|
62
66
|
};
|
|
63
67
|
}
|
|
64
68
|
function validateCommonMeterResult(result) {
|
|
69
|
+
requireInputObject(result, "result input");
|
|
65
70
|
if (result.scientificStatus !==
|
|
66
71
|
"approximation") {
|
|
67
|
-
throw new
|
|
72
|
+
throw new InvalidConfigurationError('meterResult.scientificStatus must be "approximation" for schema 0.1.0.');
|
|
68
73
|
}
|
|
69
74
|
if (result.inputDomain !==
|
|
70
75
|
"relative-pre-exposure-linear-signal") {
|
|
71
|
-
throw new
|
|
76
|
+
throw new InvalidConfigurationError('meterResult.inputDomain must be "relative-pre-exposure-linear-signal".');
|
|
72
77
|
}
|
|
73
78
|
if (result.exposureCompensationApplied !==
|
|
74
79
|
false) {
|
|
@@ -105,13 +110,15 @@ function createBaseTargetFields(targetId, meterResult) {
|
|
|
105
110
|
};
|
|
106
111
|
}
|
|
107
112
|
/**
|
|
108
|
-
* Freezes one metering result into
|
|
109
|
-
*
|
|
113
|
+
* Freezes one metering result into a stable relative exposure target, for
|
|
114
|
+
* camera-control logic to use.
|
|
110
115
|
*
|
|
111
|
-
* The target copies the meter snapshot by value.
|
|
112
|
-
* not
|
|
116
|
+
* The target copies the meter snapshot by value. Later changes to the scene or
|
|
117
|
+
* light do not change it. This is what the engine provides for AE lock
|
|
118
|
+
* (auto-exposure lock).
|
|
113
119
|
*/
|
|
114
120
|
export function createExposureMeterTargetFromMeteringResult(input) {
|
|
121
|
+
requireInputKeys(input, "createExposureMeterTargetFromMeteringResult", ["targetId", "meterResult"]);
|
|
115
122
|
const base = createBaseTargetFields(input.targetId, input.meterResult);
|
|
116
123
|
if (input.meterResult.status ===
|
|
117
124
|
"no-signal") {
|
|
@@ -150,13 +157,15 @@ export function createExposureMeterTargetFromMeteringResult(input) {
|
|
|
150
157
|
};
|
|
151
158
|
}
|
|
152
159
|
function validateBaseTarget(target) {
|
|
160
|
+
requireInputObject(target, "target input");
|
|
153
161
|
if (target.schemaVersion !==
|
|
154
162
|
EXPOSURE_METER_TARGET_SCHEMA_VERSION) {
|
|
155
|
-
throw new
|
|
163
|
+
throw new InvalidConfigurationError('baseTarget.schemaVersion must be "' +
|
|
156
164
|
EXPOSURE_METER_TARGET_SCHEMA_VERSION +
|
|
157
165
|
'".');
|
|
158
166
|
}
|
|
159
167
|
requireNonEmptyString(target.targetId, "baseTarget.targetId");
|
|
168
|
+
requireInputObject(target.sourceMeterSnapshot, "baseTarget.sourceMeterSnapshot");
|
|
160
169
|
requireNonEmptyString(target
|
|
161
170
|
.sourceMeterSnapshot
|
|
162
171
|
.measurementId, "baseTarget.sourceMeterSnapshot.measurementId");
|
|
@@ -174,7 +183,7 @@ function validateBaseTarget(target) {
|
|
|
174
183
|
.sourceMeterSnapshot
|
|
175
184
|
.sourceKind !==
|
|
176
185
|
"temporal-metering-result") {
|
|
177
|
-
throw new
|
|
186
|
+
throw new InvalidConfigurationError("baseTarget.sourceMeterSnapshot.sourceKind is invalid.");
|
|
178
187
|
}
|
|
179
188
|
if (target.scientificStatus !==
|
|
180
189
|
"approximation" ||
|
|
@@ -207,11 +216,12 @@ function validateBaseTarget(target) {
|
|
|
207
216
|
/**
|
|
208
217
|
* Sets an absolute exposure-compensation value on a frozen meter target.
|
|
209
218
|
*
|
|
210
|
-
* Compensation is always
|
|
211
|
-
* repeated UI updates cannot
|
|
212
|
-
* drift. Positive compensation
|
|
219
|
+
* Compensation is always worked out again from the base target without
|
|
220
|
+
* compensation, so repeated UI updates cannot build up floating-point or
|
|
221
|
+
* control drift. Positive compensation asks for more exposure.
|
|
213
222
|
*/
|
|
214
223
|
export function setExposureCompensationOnMeterTarget(input) {
|
|
224
|
+
requireInputKeys(input, "setExposureCompensationOnMeterTarget", ["targetId", "baseTarget", "exposureCompensationStops"]);
|
|
215
225
|
validateBaseTarget(input.baseTarget);
|
|
216
226
|
const targetId = requireNonEmptyString(input.targetId, "targetId");
|
|
217
227
|
if (targetId ===
|