@photivra/engine 1.5.0 → 2.0.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 +393 -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/host-yield.d.ts +7 -0
- package/dist/facade/host-yield.js +23 -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 +284 -0
- package/dist/facade/simulate-capture.js +1026 -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 +89 -25
- package/dist/index.js +59 -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.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 +761 -2
- package/docs/QUICK_START.md +495 -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 +2213 -8
- 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 +324 -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.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 -12
- 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,24 +1,26 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
3
|
+
* Scene radiance over an exposure window, in two steps.
|
|
4
|
+
*
|
|
5
|
+
* 1. Plan: list the times (nodes) at which a scene-radiance provider (a renderer or other
|
|
6
|
+
* source of scene light) must report radiance during one local exposure window.
|
|
7
|
+
* 2. Reduce: combine the provider's per-wavelength results over that window.
|
|
8
|
+
*
|
|
9
|
+
* Each returned sample must match its planned node, time and result identity exactly.
|
|
10
|
+
* Uncertainty stays per node and is not combined, because no correlation or independence
|
|
11
|
+
* is assumed.
|
|
12
12
|
* @see docs/SCENE_RADIANCE_AND_ILLUMINATION.md for equations, coordinate/unit conventions, blockers
|
|
13
13
|
* and support limits.
|
|
14
14
|
*/
|
|
15
15
|
import { InvalidScientificInputError, requirePositiveInteger } from "../core/validation.js";
|
|
16
16
|
import { parseSceneRadianceEvaluationRequest, parseSceneRadianceEvaluationResult } from "./scene-radiance.js";
|
|
17
|
+
import { requireInputKeys } from "../core/record-validation.js";
|
|
18
|
+
import { InvalidConfigurationError } from "../core/configuration-error.js";
|
|
17
19
|
export const SCENE_RADIANCE_TEMPORAL_SAMPLING_PLAN_VERSION = "0.1.0";
|
|
18
20
|
function requireNonEmptyString(value, path) {
|
|
19
21
|
if (typeof value !== "string" ||
|
|
20
22
|
value.trim().length === 0) {
|
|
21
|
-
throw new
|
|
23
|
+
throw new InvalidConfigurationError(path +
|
|
22
24
|
" must be a non-empty string.");
|
|
23
25
|
}
|
|
24
26
|
return value.trim();
|
|
@@ -35,9 +37,9 @@ function exposureForPoint(timing, point) {
|
|
|
35
37
|
return matches[0];
|
|
36
38
|
}
|
|
37
39
|
function parseQuery(query) {
|
|
38
|
-
// Reuse the
|
|
39
|
-
//
|
|
40
|
-
//
|
|
40
|
+
// Reuse the scene-radiance request parser for the shared scene and spectral
|
|
41
|
+
// checks. The placeholder time it needs is not copied into the returned
|
|
42
|
+
// temporal query, where it would be misleading.
|
|
41
43
|
const parsed = parseSceneRadianceEvaluationRequest({
|
|
42
44
|
schemaVersion: "0.1.0",
|
|
43
45
|
sampleId: "temporal-query-validation",
|
|
@@ -61,14 +63,15 @@ function parseQuery(query) {
|
|
|
61
63
|
};
|
|
62
64
|
}
|
|
63
65
|
/**
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
+
* Plans the times (nodes) at which a scene-radiance provider must report radiance
|
|
67
|
+
* during one local exposure window. Works with any renderer or provider.
|
|
66
68
|
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
*
|
|
69
|
+
* Capture time is a separate field, not the older request field
|
|
70
|
+
* timeSecondsFromExposureStart. Providers must evaluate radiance at
|
|
71
|
+
* node.captureTimeSecondsFromReference, measured from the first opening boundary.
|
|
70
72
|
*/
|
|
71
73
|
export function createSceneRadianceTemporalSamplingPlan(input) {
|
|
74
|
+
requireInputKeys(input, "createSceneRadianceTemporalSamplingPlan", ["planId", "timing", "destinationPointNative", "temporalSampleCount", "query"]);
|
|
72
75
|
requirePositiveInteger("temporalSampleCount", input.temporalSampleCount);
|
|
73
76
|
const planId = requireNonEmptyString(input.planId, "planId");
|
|
74
77
|
const query = parseQuery(input.query);
|
|
@@ -147,14 +150,14 @@ function sameTime(a, b) {
|
|
|
147
150
|
scale);
|
|
148
151
|
}
|
|
149
152
|
/**
|
|
150
|
-
*
|
|
151
|
-
* authoritative local exposure window.
|
|
153
|
+
* Combines the provider's per-wavelength scene radiance over the local exposure window.
|
|
152
154
|
*
|
|
153
|
-
*
|
|
154
|
-
*
|
|
155
|
-
*
|
|
155
|
+
* Each sample must match its planned node, time and result identity exactly.
|
|
156
|
+
* Uncertainty stays per node and is not combined, because no correlation or
|
|
157
|
+
* independence is assumed.
|
|
156
158
|
*/
|
|
157
159
|
export function reduceSceneRadianceTemporalSamples(input) {
|
|
160
|
+
requireInputKeys(input, "reduceSceneRadianceTemporalSamples", ["plan", "samples"]);
|
|
158
161
|
if (!Array.isArray(input.samples) ||
|
|
159
162
|
input.samples.length !==
|
|
160
163
|
input.plan.nodes.length) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scene-radiance-temporal.js","sourceRoot":"","sources":["../../src/schema/scene-radiance-temporal.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scene-radiance-temporal.js","sourceRoot":"","sources":["../../src/schema/scene-radiance-temporal.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE5F,OAAO,EACL,mCAAmC,EACnC,kCAAkC,EAGnC,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,MAAM,CAAC,MAAM,6CAA6C,GACxD,OAAgB,CAAC;AA+HnB,SAAS,qBAAqB,CAC5B,KAAa,EACb,IAAY;IAEZ,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EACzB,CAAC;QACD,MAAM,IAAI,yBAAyB,CACjC,IAAI;YACF,8BAA8B,CACjC,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC;AAED,SAAS,SAAS,CAChB,CAAc,EACd,CAAc;IAEd,OAAO,CACL,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CACZ,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CACvB,MAC2B,EAC3B,KACa;IAEb,MAAM,OAAO,GACX,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CACnC,CAAC,MAAM,EAAE,EAAE,CACT,SAAS,CACP,MAAM,CAAC,WAAW,EAClB,KAAK,CACN,CACJ,CAAC;IACJ,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,2BAA2B,CACnC,iFAAiF,CAClF,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC,CAAC,CAAE,CAAC;AACrB,CAAC;AAED,SAAS,UAAU,CACjB,KAC4B;IAE5B,4EAA4E;IAC5E,wEAAwE;IACxE,gDAAgD;IAChD,MAAM,MAAM,GACV,mCAAmC,CAAC;QAClC,aAAa,EAAE,OAAO;QACtB,QAAQ,EACN,2BAA2B;QAC7B,iBAAiB,EACf,KAAK,CAAC,iBAAiB;QACzB,OAAO,EACL,KAAK,CAAC,OAAO;QACf,qBAAqB,EACnB,KAAK,CAAC,qBAAqB;QAC7B,yBAAyB,EACvB,KAAK,CAAC,yBAAyB;QACjC,MAAM,EACJ,KAAK,CAAC,MAAM;QACd,4BAA4B,EAC1B,CAAC;QACH,oBAAoB,EAClB,KAAK,CAAC,oBAAoB;QAC5B,eAAe,EACb,KAAK,CAAC,eAAe;KACxB,CAAC,CAAC;IAEL,OAAO;QACL,iBAAiB,EACf,MAAM,CAAC,iBAAiB;QAC1B,OAAO,EACL,MAAM,CAAC,OAAO;QAChB,qBAAqB,EACnB,MAAM,CAAC,qBAAqB;QAC9B,yBAAyB,EACvB,MAAM,CAAC,yBAAyB;QAClC,MAAM,EACJ,MAAM,CAAC,MAAM;QACf,oBAAoB,EAClB,MAAM,CAAC,oBAAoB;QAC7B,eAAe,EACb,MAAM,CAAC,eAAe;KACzB,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,uCAAuC,CACrD,KAC8C;IAE9C,gBAAgB,CAAC,KAAK,EAAE,yCAAyC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,OAAO,CAAC,CAAC,CAAC;IACnJ,sBAAsB,CACpB,qBAAqB,EACrB,KAAK,CAAC,mBAAmB,CAC1B,CAAC;IACF,MAAM,MAAM,GACV,qBAAqB,CACnB,KAAK,CAAC,MAAM,EACZ,QAAQ,CACT,CAAC;IACJ,MAAM,KAAK,GACT,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1B,MAAM,QAAQ,GACZ,gBAAgB,CACd,KAAK,CAAC,MAAM,EACZ,KAAK;SACF,sBAAsB,CAC1B,CAAC;IACJ,MAAM,QAAQ,GACZ,QAAQ;SACL,4BAA4B,CAAC;IAElC,IACE,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC1B,QAAQ,IAAI,CAAC,EACb,CAAC;QACD,MAAM,IAAI,2BAA2B,CACnC,sFAAsF,CACvF,CAAC;IACJ,CAAC;IAED,MAAM,oBAAoB,GACxB,CAAC;QACD,KAAK,CAAC,mBAAmB,CAAC;IAC5B,MAAM,kBAAkB,GACtB,QAAQ;QACR,KAAK,CAAC,mBAAmB,CAAC;IAE5B,MAAM,KAAK,GACT,KAAK,CAAC,IAAI,CACR;QACE,MAAM,EACJ,KAAK,CAAC,mBAAmB;KAC5B,EACD,CACE,CAAC,EACD,mBAAmB,EACnB,EAAE;QACF,MAAM,kBAAkB,GACtB,CAAC,mBAAmB;YAClB,GAAG,CAAC;YACN,KAAK,CAAC,mBAAmB,CAAC;QAC5B,MAAM,WAAW,GACf,QAAQ;aACL,sCAAsC;YACzC,kBAAkB;gBAChB,QAAQ,CAAC;QACb,OAAO;YACL,MAAM,EACJ,MAAM;gBACN,QAAQ;gBACR,mBAAmB;YACrB,sBAAsB,EACpB,MAAM;gBACN,YAAY;gBACZ,mBAAmB;YACrB,mBAAmB;YACnB,kBAAkB;YAClB,+BAA+B,EAC7B,WAAW;YACb,oBAAoB;YACpB,kBAAkB;SACnB,CAAC;IACJ,CAAC,CACF,CAAC;IAEJ,OAAO;QACL,OAAO,EACL,6CAA6C;QAC/C,MAAM;QACN,aAAa,EACX,8BAA8B;QAChC,qBAAqB,EAAE;YACrB,SAAS,EACP,KAAK,CAAC,MAAM;iBACT,eAAe;YACpB,cAAc,EACZ,KAAK,CAAC,MAAM;iBACT,oBAAoB;YACzB,aAAa,EACX,KAAK,CAAC,MAAM;iBACT,aAAa;SACnB;QACD,sBAAsB,EAAE;YACtB,GAAG,KAAK;iBACL,sBAAsB;SAC1B;QACD,mBAAmB,EAAE;YACnB,gCAAgC,EAC9B,QAAQ;iBACL,sCAAsC;YAC3C,8BAA8B,EAC5B,QAAQ;iBACL,oCAAoC;YACzC,eAAe,EACb,QAAQ;SACX;QACD,mBAAmB,EACjB,KAAK,CAAC,mBAAmB;QAC3B,gBAAgB,EACd,kBAAkB;QACpB,KAAK;QACL,KAAK;QACL,qCAAqC,EACnC,IAAI;QACN,uCAAuC,EACrC,KAAK;KACR,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CACf,CAAS,EACT,CAAS;IAET,MAAM,KAAK,GACT,IAAI,CAAC,GAAG,CACN,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EACX,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CACZ,CAAC;IACJ,OAAO,CACL,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACf,MAAM,CAAC,OAAO;YACZ,EAAE;YACF,KAAK,CACR,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kCAAkC,CAChD,KACyC;IAEzC,gBAAgB,CAAC,KAAK,EAAE,oCAAoC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IACnF,IACE,CAAC,KAAK,CAAC,OAAO,CACZ,KAAK,CAAC,OAAO,CACd;QACD,KAAK,CAAC,OAAO,CAAC,MAAM;YAClB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EACzB,CAAC;QACD,MAAM,IAAI,2BAA2B,CACnC,2EAA2E,CAC5E,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GACV,IAAI,GAAG,CACL,KAAK,CAAC,OAAO,CAAC,GAAG,CACf,CAAC,MAAM,EAAE,EAAE,CAAC;QACV,MAAM,CAAC,MAAM;QACb,MAAM;KACE,CACX,CACF,CAAC;IACJ,IACE,MAAM,CAAC,IAAI;QACX,KAAK,CAAC,OAAO,CAAC,MAAM,EACpB,CAAC;QACD,MAAM,IAAI,2BAA2B,CACnC,mDAAmD,CACpD,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,MAAM,KAAK,GACT,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAClB,CAAC,IAAI,EAAE,EAAE;QACP,MAAM,QAAQ,GACZ,MAAM,CAAC,GAAG,CACR,IAAI,CAAC,MAAM,CACZ,CAAC;QACJ,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,2BAA2B,CACnC,mDAAmD,CACpD,CAAC;QACJ,CAAC;QACD,IACE,CAAC,MAAM,CAAC,QAAQ,CACd,QAAQ;aACL,+BAA+B,CACnC;YACD,CAAC,QAAQ,CACP,QAAQ;iBACL,+BAA+B,EAClC,IAAI;iBACD,+BAA+B,CACnC,EACD,CAAC;YACD,MAAM,IAAI,2BAA2B,CACnC,6EAA6E,CAC9E,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GACV,kCAAkC,CAChC,QAAQ,CAAC,MAAM,CAChB,CAAC;QACJ,IACE,MAAM,CAAC,QAAQ;YACb,IAAI,CAAC,sBAAsB;YAC7B,MAAM,CAAC,iBAAiB;gBACtB,KAAK,CAAC,IAAI,CAAC,KAAK;qBACb,iBAAiB;YACtB,MAAM,CAAC,OAAO;gBACZ,KAAK,CAAC,IAAI,CAAC,KAAK;qBACb,OAAO;YACZ,MAAM,CAAC,oBAAoB;gBACzB,KAAK,CAAC,IAAI,CAAC,KAAK;qBACb,oBAAoB;YACzB,MAAM,CAAC,eAAe;gBACpB,KAAK,CAAC,IAAI,CAAC,KAAK;qBACb,eAAe,EACpB,CAAC;YACD,MAAM,IAAI,2BAA2B,CACnC,iFAAiF,CAClF,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GACT,MAAM;aACH,qDAAqD,CAAC;QAC3D,OAAO;YACL,KAAK;gBACL,IAAI;qBACD,oBAAoB,CAAC;QAC1B,UAAU;YACR,KAAK;gBACL,IAAI;qBACD,kBAAkB,CAAC;QAExB,OAAO;YACL,MAAM,EACJ,IAAI,CAAC,MAAM;YACb,+BAA+B,EAC7B,IAAI;iBACD,+BAA+B;YACpC,oBAAoB,EAClB,IAAI;iBACD,oBAAoB;YACzB,kBAAkB,EAChB,IAAI;iBACD,kBAAkB;YACvB,qDAAqD,EACnD,KAAK;YACP,QAAQ,EACN,MAAM,CAAC,QAAQ;YACjB,WAAW,EACT,MAAM,CAAC,WAAW;SACrB,CAAC;IACJ,CAAC,CACF,CAAC;IAEJ,IACE,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;QACzB,OAAO,GAAG,CAAC;QACX,CAAC,MAAM,CAAC,QAAQ,CACd,UAAU,CACX;QACD,UAAU,GAAG,CAAC,EACd,CAAC;QACD,MAAM,IAAI,2BAA2B,CACnC,sEAAsE,CACvE,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EACL,6CAA6C;QAC/C,MAAM,EACJ,KAAK,CAAC,IAAI,CAAC,MAAM;QACnB,aAAa,EACX,8BAA8B;QAChC,mBAAmB,EAAE;YACnB,GAAG,KAAK,CAAC,IAAI;iBACV,mBAAmB;SACvB;QACD,mBAAmB,EACjB,KAAK,CAAC,IAAI;aACP,mBAAmB;QACxB,gBAAgB,EACd,kBAAkB;QACpB,iBAAiB,EACf,KAAK,CAAC,IAAI,CAAC,KAAK;aACb,iBAAiB;QACtB,OAAO,EACL,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO;QAC1B,oBAAoB,EAClB,KAAK,CAAC,IAAI,CAAC,KAAK;aACb,oBAAoB;QACzB,eAAe,EACb,KAAK,CAAC,IAAI,CAAC,KAAK;aACb,eAAe;QACpB,QAAQ,EACN,4BAA4B;QAC9B,4DAA4D,EAC1D,OAAO;QACT,qEAAqE,EACnE,UAAU;QACZ,KAAK;QACL,gBAAgB,EACd,eAAe;QACjB,sBAAsB,EACpB,gBAAgB;QAClB,qBAAqB,EACnB,gJAAgJ;QAClJ,uCAAuC,EACrC,KAAK;KACR,CAAC;AACJ,CAAC","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Scene radiance over an exposure window, in two steps.\n *\n * 1. Plan: list the times (nodes) at which a scene-radiance provider (a renderer or other\n * source of scene light) must report radiance during one local exposure window.\n * 2. Reduce: combine the provider's per-wavelength results over that window.\n *\n * Each returned sample must match its planned node, time and result identity exactly.\n * Uncertainty stays per node and is not combined, because no correlation or independence\n * is assumed.\n * @see docs/SCENE_RADIANCE_AND_ILLUMINATION.md for equations, coordinate/unit conventions, blockers\n * and support limits.\n */\n\nimport { InvalidScientificInputError, requirePositiveInteger } from \"../core/validation.js\";\nimport type { RasterPoint } from \"../output/capture-geometry.js\";\nimport {\n parseSceneRadianceEvaluationRequest,\n parseSceneRadianceEvaluationResult,\n type SceneRadianceEvaluationRequest,\n type SceneRadianceEvaluationResult\n} from \"./scene-radiance.js\";\nimport type {\n ResolvedCaptureModeTiming\n} from \"../sensor/capture-mode-timing.js\";\nimport { requireInputKeys } from \"../core/record-validation.js\";\nimport { InvalidConfigurationError } from \"../core/configuration-error.js\";\n\nexport const SCENE_RADIANCE_TEMPORAL_SAMPLING_PLAN_VERSION =\n \"0.1.0\" as const;\n\nexport interface SceneRadianceTemporalQuery {\n providerProfileId: string;\n sceneId: string;\n illuminationProfileId: string;\n materialResponseProfileId: string;\n target:\n SceneRadianceEvaluationRequest[\"target\"];\n wavelengthNanometers: number;\n wavelengthBasis:\n SceneRadianceEvaluationRequest[\"wavelengthBasis\"];\n}\n\nexport interface CreateSceneRadianceTemporalSamplingPlanInput {\n planId: string;\n timing:\n ResolvedCaptureModeTiming;\n destinationPointNative:\n RasterPoint;\n temporalSampleCount: number;\n query:\n SceneRadianceTemporalQuery;\n}\n\nexport interface SceneRadianceTemporalSamplingNode {\n nodeId: string;\n expectedResultSampleId: string;\n temporalSampleIndex: number;\n localExposurePhase: number;\n captureTimeSecondsFromReference:\n number;\n normalizedTimeWeight: number;\n timeMeasureSeconds: number;\n}\n\nexport interface SceneRadianceTemporalSamplingPlan {\n version:\n typeof SCENE_RADIANCE_TEMPORAL_SAMPLING_PLAN_VERSION;\n planId: string;\n timeReference:\n \"first-opening-boundary-phase\";\n timingProfileIdentity: {\n profileId: string;\n profileVersion: string;\n captureModeId: string;\n };\n destinationPointNative:\n RasterPoint;\n localExposureWindow: {\n startSecondsFromCaptureReference:\n number;\n endSecondsFromCaptureReference:\n number;\n durationSeconds: number;\n };\n temporalSampleCount: number;\n quadratureScheme:\n \"uniform-midpoint\";\n query:\n SceneRadianceTemporalQuery;\n nodes:\n readonly SceneRadianceTemporalSamplingNode[];\n providerMustEvaluateAtNodeCaptureTime:\n true;\n sensorReadoutTimingUsedAsExposureTiming:\n false;\n}\n\nexport interface SceneRadianceTemporalEvaluatedSample {\n nodeId: string;\n captureTimeSecondsFromReference:\n number;\n result:\n SceneRadianceEvaluationResult;\n}\n\nexport interface ReduceSceneRadianceTemporalSamplesInput {\n plan:\n SceneRadianceTemporalSamplingPlan;\n samples:\n readonly SceneRadianceTemporalEvaluatedSample[];\n}\n\nexport interface ReducedSceneRadianceTemporalExposure {\n version:\n typeof SCENE_RADIANCE_TEMPORAL_SAMPLING_PLAN_VERSION;\n planId: string;\n timeReference:\n \"first-opening-boundary-phase\";\n localExposureWindow:\n SceneRadianceTemporalSamplingPlan[\"localExposureWindow\"];\n temporalSampleCount: number;\n quadratureScheme:\n \"uniform-midpoint\";\n providerProfileId: string;\n sceneId: string;\n wavelengthNanometers: number;\n wavelengthBasis:\n SceneRadianceEvaluationRequest[\"wavelengthBasis\"];\n quantity:\n \"outgoing-spectral-radiance\";\n averageSpectralRadianceWattsPerSquareMeterSteradianNanometer:\n number;\n integratedSpectralRadianceWattSecondsPerSquareMeterSteradianNanometer:\n number;\n nodes: readonly {\n nodeId: string;\n captureTimeSecondsFromReference:\n number;\n normalizedTimeWeight: number;\n timeMeasureSeconds: number;\n spectralRadianceWattsPerSquareMeterSteradianNanometer:\n number;\n evidence:\n SceneRadianceEvaluationResult[\"evidence\"];\n uncertainty:\n SceneRadianceEvaluationResult[\"uncertainty\"];\n }[];\n scientificStatus: \"approximation\";\n uncertaintyPropagation:\n \"not-propagated\";\n uncertaintyLimitation: string;\n sensorReadoutTimingUsedAsExposureTiming:\n false;\n}\n\nfunction requireNonEmptyString(\n value: string,\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 samePoint(\n a: RasterPoint,\n b: RasterPoint\n): boolean {\n return (\n a.x === b.x &&\n a.y === b.y\n );\n}\n\nfunction exposureForPoint(\n timing:\n ResolvedCaptureModeTiming,\n point:\n RasterPoint\n): ResolvedCaptureModeTiming[\"exposureWindows\"][\"samples\"][number] {\n const matches =\n timing.exposureWindows.samples.filter(\n (sample) =>\n samePoint(\n sample.pointNative,\n point\n )\n );\n if (matches.length !== 1) {\n throw new InvalidScientificInputError(\n \"destinationPointNative must match exactly one committed exposure-window sample.\"\n );\n }\n return matches[0]!;\n}\n\nfunction parseQuery(\n query:\n SceneRadianceTemporalQuery\n): SceneRadianceTemporalQuery {\n // Reuse the scene-radiance request parser for the shared scene and spectral\n // checks. The placeholder time it needs is not copied into the returned\n // temporal query, where it would be misleading.\n const parsed =\n parseSceneRadianceEvaluationRequest({\n schemaVersion: \"0.1.0\",\n sampleId:\n \"temporal-query-validation\",\n providerProfileId:\n query.providerProfileId,\n sceneId:\n query.sceneId,\n illuminationProfileId:\n query.illuminationProfileId,\n materialResponseProfileId:\n query.materialResponseProfileId,\n target:\n query.target,\n timeSecondsFromExposureStart:\n 0,\n wavelengthNanometers:\n query.wavelengthNanometers,\n wavelengthBasis:\n query.wavelengthBasis\n });\n\n return {\n providerProfileId:\n parsed.providerProfileId,\n sceneId:\n parsed.sceneId,\n illuminationProfileId:\n parsed.illuminationProfileId,\n materialResponseProfileId:\n parsed.materialResponseProfileId,\n target:\n parsed.target,\n wavelengthNanometers:\n parsed.wavelengthNanometers,\n wavelengthBasis:\n parsed.wavelengthBasis\n };\n}\n\n/**\n * Plans the times (nodes) at which a scene-radiance provider must report radiance\n * during one local exposure window. Works with any renderer or provider.\n *\n * Capture time is a separate field, not the older request field\n * timeSecondsFromExposureStart. Providers must evaluate radiance at\n * node.captureTimeSecondsFromReference, measured from the first opening boundary.\n */\nexport function createSceneRadianceTemporalSamplingPlan(\n input:\n CreateSceneRadianceTemporalSamplingPlanInput\n): SceneRadianceTemporalSamplingPlan {\n requireInputKeys(input, \"createSceneRadianceTemporalSamplingPlan\", [\"planId\", \"timing\", \"destinationPointNative\", \"temporalSampleCount\", \"query\"]);\n requirePositiveInteger(\n \"temporalSampleCount\",\n input.temporalSampleCount\n );\n const planId =\n requireNonEmptyString(\n input.planId,\n \"planId\"\n );\n const query =\n parseQuery(input.query);\n const exposure =\n exposureForPoint(\n input.timing,\n input\n .destinationPointNative\n );\n const duration =\n exposure\n .localExposureDurationSeconds;\n\n if (\n !Number.isFinite(duration) ||\n duration <= 0\n ) {\n throw new InvalidScientificInputError(\n \"Scene-radiance temporal sampling requires a positive finite local exposure duration.\"\n );\n }\n\n const normalizedTimeWeight =\n 1 /\n input.temporalSampleCount;\n const timeMeasureSeconds =\n duration /\n input.temporalSampleCount;\n\n const nodes =\n Array.from(\n {\n length:\n input.temporalSampleCount\n },\n (\n _,\n temporalSampleIndex\n ) => {\n const localExposurePhase =\n (temporalSampleIndex +\n 0.5) /\n input.temporalSampleCount;\n const captureTime =\n exposure\n .startOffsetSecondsFromOpeningReference +\n localExposurePhase *\n duration;\n return {\n nodeId:\n planId +\n \":node:\" +\n temporalSampleIndex,\n expectedResultSampleId:\n planId +\n \":radiance:\" +\n temporalSampleIndex,\n temporalSampleIndex,\n localExposurePhase,\n captureTimeSecondsFromReference:\n captureTime,\n normalizedTimeWeight,\n timeMeasureSeconds\n };\n }\n );\n\n return {\n version:\n SCENE_RADIANCE_TEMPORAL_SAMPLING_PLAN_VERSION,\n planId,\n timeReference:\n \"first-opening-boundary-phase\",\n timingProfileIdentity: {\n profileId:\n input.timing\n .timingProfileId,\n profileVersion:\n input.timing\n .timingProfileVersion,\n captureModeId:\n input.timing\n .captureModeId\n },\n destinationPointNative: {\n ...input\n .destinationPointNative\n },\n localExposureWindow: {\n startSecondsFromCaptureReference:\n exposure\n .startOffsetSecondsFromOpeningReference,\n endSecondsFromCaptureReference:\n exposure\n .endOffsetSecondsFromOpeningReference,\n durationSeconds:\n duration\n },\n temporalSampleCount:\n input.temporalSampleCount,\n quadratureScheme:\n \"uniform-midpoint\",\n query,\n nodes,\n providerMustEvaluateAtNodeCaptureTime:\n true,\n sensorReadoutTimingUsedAsExposureTiming:\n false\n };\n}\n\nfunction sameTime(\n a: number,\n b: number\n): boolean {\n const scale =\n Math.max(\n 1,\n Math.abs(a),\n Math.abs(b)\n );\n return (\n Math.abs(a - b) <=\n Number.EPSILON *\n 16 *\n scale\n );\n}\n\n/**\n * Combines the provider's per-wavelength scene radiance over the local exposure window.\n *\n * Each sample must match its planned node, time and result identity exactly.\n * Uncertainty stays per node and is not combined, because no correlation or\n * independence is assumed.\n */\nexport function reduceSceneRadianceTemporalSamples(\n input:\n ReduceSceneRadianceTemporalSamplesInput\n): ReducedSceneRadianceTemporalExposure {\n requireInputKeys(input, \"reduceSceneRadianceTemporalSamples\", [\"plan\", \"samples\"]);\n if (\n !Array.isArray(\n input.samples\n ) ||\n input.samples.length !==\n input.plan.nodes.length\n ) {\n throw new InvalidScientificInputError(\n \"samples must contain exactly one result for every temporal sampling node.\"\n );\n }\n\n const byNode =\n new Map(\n input.samples.map(\n (sample) => [\n sample.nodeId,\n sample\n ] as const\n )\n );\n if (\n byNode.size !==\n input.samples.length\n ) {\n throw new InvalidScientificInputError(\n \"samples must not contain duplicate nodeId values.\"\n );\n }\n\n let average = 0;\n let integrated = 0;\n\n const nodes =\n input.plan.nodes.map(\n (node) => {\n const supplied =\n byNode.get(\n node.nodeId\n );\n if (supplied === undefined) {\n throw new InvalidScientificInputError(\n \"A temporal scene-radiance node result is missing.\"\n );\n }\n if (\n !Number.isFinite(\n supplied\n .captureTimeSecondsFromReference\n ) ||\n !sameTime(\n supplied\n .captureTimeSecondsFromReference,\n node\n .captureTimeSecondsFromReference\n )\n ) {\n throw new InvalidScientificInputError(\n \"Temporal scene-radiance sample time must match its authoritative plan node.\"\n );\n }\n\n const result =\n parseSceneRadianceEvaluationResult(\n supplied.result\n );\n if (\n result.sampleId !==\n node.expectedResultSampleId ||\n result.providerProfileId !==\n input.plan.query\n .providerProfileId ||\n result.sceneId !==\n input.plan.query\n .sceneId ||\n result.wavelengthNanometers !==\n input.plan.query\n .wavelengthNanometers ||\n result.wavelengthBasis !==\n input.plan.query\n .wavelengthBasis\n ) {\n throw new InvalidScientificInputError(\n \"Temporal scene-radiance result identity must match the plan node/query exactly.\"\n );\n }\n\n const value =\n result\n .spectralRadianceWattsPerSquareMeterSteradianNanometer;\n average +=\n value *\n node\n .normalizedTimeWeight;\n integrated +=\n value *\n node\n .timeMeasureSeconds;\n\n return {\n nodeId:\n node.nodeId,\n captureTimeSecondsFromReference:\n node\n .captureTimeSecondsFromReference,\n normalizedTimeWeight:\n node\n .normalizedTimeWeight,\n timeMeasureSeconds:\n node\n .timeMeasureSeconds,\n spectralRadianceWattsPerSquareMeterSteradianNanometer:\n value,\n evidence:\n result.evidence,\n uncertainty:\n result.uncertainty\n };\n }\n );\n\n if (\n !Number.isFinite(average) ||\n average < 0 ||\n !Number.isFinite(\n integrated\n ) ||\n integrated < 0\n ) {\n throw new InvalidScientificInputError(\n \"Reduced temporal scene radiance must remain finite and non-negative.\"\n );\n }\n\n return {\n version:\n SCENE_RADIANCE_TEMPORAL_SAMPLING_PLAN_VERSION,\n planId:\n input.plan.planId,\n timeReference:\n \"first-opening-boundary-phase\",\n localExposureWindow: {\n ...input.plan\n .localExposureWindow\n },\n temporalSampleCount:\n input.plan\n .temporalSampleCount,\n quadratureScheme:\n \"uniform-midpoint\",\n providerProfileId:\n input.plan.query\n .providerProfileId,\n sceneId:\n input.plan.query.sceneId,\n wavelengthNanometers:\n input.plan.query\n .wavelengthNanometers,\n wavelengthBasis:\n input.plan.query\n .wavelengthBasis,\n quantity:\n \"outgoing-spectral-radiance\",\n averageSpectralRadianceWattsPerSquareMeterSteradianNanometer:\n average,\n integratedSpectralRadianceWattSecondsPerSquareMeterSteradianNanometer:\n integrated,\n nodes,\n scientificStatus:\n \"approximation\",\n uncertaintyPropagation:\n \"not-propagated\",\n uncertaintyLimitation:\n \"Per-node scene-radiance uncertainty is preserved; aggregate numeric uncertainty is not propagated because temporal correlation is not assumed.\",\n sensorReadoutTimingUsedAsExposureTiming:\n false\n };\n}\n"]}
|
|
@@ -143,23 +143,24 @@ export interface SceneRadianceEvaluationBindingAssessment {
|
|
|
143
143
|
photonsCalculated: false;
|
|
144
144
|
}
|
|
145
145
|
/**
|
|
146
|
-
* Parses material-response metadata
|
|
146
|
+
* Parses material-response metadata used by a scene-radiance provider.
|
|
147
147
|
*
|
|
148
|
-
* RGB
|
|
149
|
-
* wavelength
|
|
150
|
-
* scene radiance, fluorescence, emission,
|
|
148
|
+
* RGB or PBR (physically based rendering) material data is always an approximation.
|
|
149
|
+
* Spectral data is a per-wavelength provider input. It does not itself compute a BSDF
|
|
150
|
+
* (how a surface scatters light), scene radiance, fluorescence, emission, volumetric
|
|
151
|
+
* effects or polarization.
|
|
151
152
|
*/
|
|
152
153
|
export declare function parseSceneMaterialResponseProfile(value: unknown): SceneMaterialResponseProfile;
|
|
153
154
|
/**
|
|
154
|
-
* Returns the
|
|
155
|
+
* Returns the material fidelity a profile supports, choosing the lower level when in doubt.
|
|
155
156
|
*/
|
|
156
157
|
export declare function assessSceneMaterialResponseFidelity(profile: SceneMaterialResponseProfile): SceneMaterialResponseFidelity;
|
|
157
158
|
/**
|
|
158
|
-
* Parses a
|
|
159
|
+
* Parses a provider's declaration of what it can do (its profile). Works with any renderer.
|
|
159
160
|
*
|
|
160
|
-
* Schema 0.1.0 is
|
|
161
|
-
*
|
|
162
|
-
*
|
|
161
|
+
* Schema 0.1.0 is approximation-only by design. A provider may use calibrated inputs,
|
|
162
|
+
* but this contract cannot support a claim of calibrated outgoing radiance. That needs
|
|
163
|
+
* later work on complete spectral and light-transport models.
|
|
163
164
|
*/
|
|
164
165
|
export declare function parseSceneRadianceProviderProfile(value: unknown): SceneRadianceProviderProfile;
|
|
165
166
|
/**
|
|
@@ -168,18 +169,17 @@ export declare function parseSceneRadianceProviderProfile(value: unknown): Scene
|
|
|
168
169
|
*/
|
|
169
170
|
export declare function parseSceneRadianceEvaluationRequest(value: unknown): SceneRadianceEvaluationRequest;
|
|
170
171
|
/**
|
|
171
|
-
* Parses one
|
|
172
|
+
* Parses one outgoing spectral-radiance result from a provider.
|
|
172
173
|
*
|
|
173
|
-
* The
|
|
174
|
-
* finite
|
|
175
|
-
*
|
|
174
|
+
* The number is accepted as the provider reported it. Parsing checks units, that the
|
|
175
|
+
* value is finite and nonnegative, provenance and identity fields. It does not prove
|
|
176
|
+
* the provider's light-transport calculation is physically correct.
|
|
176
177
|
*/
|
|
177
178
|
export declare function parseSceneRadianceEvaluationResult(value: unknown): SceneRadianceEvaluationResult;
|
|
178
179
|
/**
|
|
179
|
-
*
|
|
180
|
+
* Checks that a provider result matches its request and profile identities exactly.
|
|
180
181
|
*
|
|
181
|
-
*
|
|
182
|
-
*
|
|
182
|
+
* It never recomputes the radiance value, and never upgrades the provider's
|
|
183
|
+
* approximation to calibrated radiometry.
|
|
183
184
|
*/
|
|
184
185
|
export declare function validateSceneRadianceEvaluationBindings(input: ValidateSceneRadianceEvaluationBindingsInput): SceneRadianceEvaluationBindingAssessment;
|
|
185
|
-
//# sourceMappingURL=scene-radiance.d.ts.map
|
|
@@ -1,25 +1,29 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
3
|
+
* Contracts for scene-radiance providers: the renderer or other code that reports how much
|
|
4
|
+
* light leaves a scene point toward the camera.
|
|
5
|
+
*
|
|
6
|
+
* It covers material-response metadata, provider capability profiles, single evaluation
|
|
7
|
+
* requests and results, and identity checks between them. The engine validates this data
|
|
8
|
+
* but does not compute scene radiance itself.
|
|
8
9
|
* @see docs/SCENE_RADIANCE_AND_ILLUMINATION.md for equations, coordinate/unit conventions, blockers
|
|
9
10
|
* and support limits.
|
|
10
11
|
*/
|
|
11
12
|
import { InvalidConfigurationError } from "../core/configuration-error.js";
|
|
12
13
|
import { parseEvidenceList } from "../core/evidence-provenance.js";
|
|
13
14
|
import { parseSpectralWavelengthBasis, parseSpectralWavelengthRangeNanometers } from "../core/spectral.js";
|
|
15
|
+
import { requireInputObject, requireInputArray, requireInputKeys, rejectUnknownFields, rejectUnknownVariantFields, UNCERTAINTY_VARIANT_FIELDS } from "../core/record-validation.js";
|
|
14
16
|
export const SCENE_MATERIAL_RESPONSE_PROFILE_SCHEMA_VERSION = "0.1.0";
|
|
15
17
|
export const SCENE_RADIANCE_PROVIDER_PROFILE_SCHEMA_VERSION = "0.1.0";
|
|
16
18
|
export const SCENE_RADIANCE_EVALUATION_SCHEMA_VERSION = "0.1.0";
|
|
17
|
-
function requireRecord(value, path) {
|
|
19
|
+
function requireRecord(value, path, allowedKeys) {
|
|
18
20
|
if (typeof value !== "object" ||
|
|
19
21
|
value === null ||
|
|
20
22
|
Array.isArray(value)) {
|
|
21
23
|
throw new InvalidConfigurationError(path + " must be an object.");
|
|
22
24
|
}
|
|
25
|
+
if (allowedKeys !== null)
|
|
26
|
+
rejectUnknownFields(value, allowedKeys, path);
|
|
23
27
|
return value;
|
|
24
28
|
}
|
|
25
29
|
function requireNonEmptyString(value, path) {
|
|
@@ -53,7 +57,7 @@ function requireFraction(value, path) {
|
|
|
53
57
|
return number;
|
|
54
58
|
}
|
|
55
59
|
function parseVector3(value, path) {
|
|
56
|
-
const record = requireRecord(value, path);
|
|
60
|
+
const record = requireRecord(value, path, ["x", "y", "z"]);
|
|
57
61
|
return {
|
|
58
62
|
x: requireFinite(record.x, path + ".x"),
|
|
59
63
|
y: requireFinite(record.y, path + ".y"),
|
|
@@ -71,7 +75,8 @@ function parseUnitDirection(value, path) {
|
|
|
71
75
|
return vector;
|
|
72
76
|
}
|
|
73
77
|
function parseUncertainty(value, path) {
|
|
74
|
-
const record = requireRecord(value, path);
|
|
78
|
+
const record = requireRecord(value, path, null);
|
|
79
|
+
rejectUnknownVariantFields(record, "kind", UNCERTAINTY_VARIANT_FIELDS, path);
|
|
75
80
|
if (record.kind === "relative") {
|
|
76
81
|
return {
|
|
77
82
|
kind: "relative",
|
|
@@ -99,7 +104,7 @@ function parseLimitations(value, path) {
|
|
|
99
104
|
return limitations;
|
|
100
105
|
}
|
|
101
106
|
function parseArtifact(value, path) {
|
|
102
|
-
const record = requireRecord(value, path);
|
|
107
|
+
const record = requireRecord(value, path, ["checksumSha256", "id"]);
|
|
103
108
|
const checksumSha256 = requireNonEmptyString(record.checksumSha256, path + ".checksumSha256");
|
|
104
109
|
if (!/^[a-f0-9]{64}$/iu.test(checksumSha256)) {
|
|
105
110
|
throw new InvalidConfigurationError(path +
|
|
@@ -111,7 +116,13 @@ function parseArtifact(value, path) {
|
|
|
111
116
|
};
|
|
112
117
|
}
|
|
113
118
|
function parseMaterialRepresentation(value, path) {
|
|
114
|
-
const record = requireRecord(value, path);
|
|
119
|
+
const record = requireRecord(value, path, null);
|
|
120
|
+
rejectUnknownVariantFields(record, "kind", {
|
|
121
|
+
unresolved: ["kind", "limitation"],
|
|
122
|
+
"rgb-pbr-approximation": ["kind", "colorSpace", "baseColor", "metallic", "roughness", "limitation"],
|
|
123
|
+
"spectral-wavelength-preserving-data": ["kind", "dataArtifact", "wavelengthBasis", "wavelengthRangeNanometers", "scatteringModel",
|
|
124
|
+
"scientificStatus", "uncertainty", "wavelengthChangingBehaviorModeled", "emissionModeled"]
|
|
125
|
+
}, path);
|
|
115
126
|
if (record.kind === "unresolved") {
|
|
116
127
|
return {
|
|
117
128
|
kind: "unresolved",
|
|
@@ -124,7 +135,7 @@ function parseMaterialRepresentation(value, path) {
|
|
|
124
135
|
throw new InvalidConfigurationError(path +
|
|
125
136
|
'.colorSpace must be "linear-srgb".');
|
|
126
137
|
}
|
|
127
|
-
const baseColor = requireRecord(record.baseColor, path + ".baseColor");
|
|
138
|
+
const baseColor = requireRecord(record.baseColor, path + ".baseColor", ["red", "green", "blue"]);
|
|
128
139
|
return {
|
|
129
140
|
kind: "rgb-pbr-approximation",
|
|
130
141
|
colorSpace: "linear-srgb",
|
|
@@ -188,14 +199,15 @@ function parseMaterialRepresentation(value, path) {
|
|
|
188
199
|
};
|
|
189
200
|
}
|
|
190
201
|
/**
|
|
191
|
-
* Parses material-response metadata
|
|
202
|
+
* Parses material-response metadata used by a scene-radiance provider.
|
|
192
203
|
*
|
|
193
|
-
* RGB
|
|
194
|
-
* wavelength
|
|
195
|
-
* scene radiance, fluorescence, emission,
|
|
204
|
+
* RGB or PBR (physically based rendering) material data is always an approximation.
|
|
205
|
+
* Spectral data is a per-wavelength provider input. It does not itself compute a BSDF
|
|
206
|
+
* (how a surface scatters light), scene radiance, fluorescence, emission, volumetric
|
|
207
|
+
* effects or polarization.
|
|
196
208
|
*/
|
|
197
209
|
export function parseSceneMaterialResponseProfile(value) {
|
|
198
|
-
const record = requireRecord(value, "sceneMaterialResponseProfile");
|
|
210
|
+
const record = requireRecord(value, "sceneMaterialResponseProfile", ["schemaVersion", "materials", "fluorescenceModeled", "volumetricMaterialTransportModeled", "polarizationModeled", "profileId", "sceneId", "evidence"]);
|
|
199
211
|
if (record.schemaVersion !==
|
|
200
212
|
SCENE_MATERIAL_RESPONSE_PROFILE_SCHEMA_VERSION) {
|
|
201
213
|
throw new InvalidConfigurationError('sceneMaterialResponseProfile.schemaVersion must be "' +
|
|
@@ -209,7 +221,7 @@ export function parseSceneMaterialResponseProfile(value) {
|
|
|
209
221
|
const path = "sceneMaterialResponseProfile.materials[" +
|
|
210
222
|
index +
|
|
211
223
|
"]";
|
|
212
|
-
const material = requireRecord(entry, path);
|
|
224
|
+
const material = requireRecord(entry, path, ["materialResponseId", "evidence", "representation"]);
|
|
213
225
|
return {
|
|
214
226
|
materialResponseId: requireNonEmptyString(material.materialResponseId, path + ".materialResponseId"),
|
|
215
227
|
evidence: parseEvidenceList(material.evidence, path + ".evidence"),
|
|
@@ -242,9 +254,13 @@ export function parseSceneMaterialResponseProfile(value) {
|
|
|
242
254
|
};
|
|
243
255
|
}
|
|
244
256
|
/**
|
|
245
|
-
* Returns the
|
|
257
|
+
* Returns the material fidelity a profile supports, choosing the lower level when in doubt.
|
|
246
258
|
*/
|
|
247
259
|
export function assessSceneMaterialResponseFidelity(profile) {
|
|
260
|
+
requireInputObject(profile, "assessSceneMaterialResponseFidelity input");
|
|
261
|
+
// 2.0.0: the whole profile is validated, so an unknown field at any level is rejected.
|
|
262
|
+
parseSceneMaterialResponseProfile(profile);
|
|
263
|
+
requireInputArray(profile.materials, "profile.materials");
|
|
248
264
|
if (profile.materials.some((entry) => entry.representation.kind ===
|
|
249
265
|
"unresolved")) {
|
|
250
266
|
return "unresolved";
|
|
@@ -265,7 +281,7 @@ export function assessSceneMaterialResponseFidelity(profile) {
|
|
|
265
281
|
return "mixed";
|
|
266
282
|
}
|
|
267
283
|
function parseProviderFidelity(value, path) {
|
|
268
|
-
const record = requireRecord(value, path);
|
|
284
|
+
const record = requireRecord(value, path, ["spectral", "material", "visibility", "directTransport", "indirectTransport"]);
|
|
269
285
|
const spectral = record.spectral;
|
|
270
286
|
if (spectral !== "wavelength-resolved" &&
|
|
271
287
|
spectral !==
|
|
@@ -304,14 +320,14 @@ function parseProviderFidelity(value, path) {
|
|
|
304
320
|
};
|
|
305
321
|
}
|
|
306
322
|
/**
|
|
307
|
-
* Parses a
|
|
323
|
+
* Parses a provider's declaration of what it can do (its profile). Works with any renderer.
|
|
308
324
|
*
|
|
309
|
-
* Schema 0.1.0 is
|
|
310
|
-
*
|
|
311
|
-
*
|
|
325
|
+
* Schema 0.1.0 is approximation-only by design. A provider may use calibrated inputs,
|
|
326
|
+
* but this contract cannot support a claim of calibrated outgoing radiance. That needs
|
|
327
|
+
* later work on complete spectral and light-transport models.
|
|
312
328
|
*/
|
|
313
329
|
export function parseSceneRadianceProviderProfile(value) {
|
|
314
|
-
const record = requireRecord(value, "sceneRadianceProviderProfile");
|
|
330
|
+
const record = requireRecord(value, "sceneRadianceProviderProfile", ["schemaVersion", "outputQuantity", "outputUnit", "scientificStatus", "wavelengthChangingTransportModeled", "volumetricTransportModeled", "polarizationModeled", "profileId", "sceneId", "illuminationProfileId", "illuminationTemporalProfileId", "materialResponseProfileId", "uncertainty", "fidelity", "evidence", "limitations"]);
|
|
315
331
|
if (record.schemaVersion !==
|
|
316
332
|
SCENE_RADIANCE_PROVIDER_PROFILE_SCHEMA_VERSION) {
|
|
317
333
|
throw new InvalidConfigurationError('sceneRadianceProviderProfile.schemaVersion must be "' +
|
|
@@ -376,7 +392,11 @@ function parseResolvedWavelengthBasis(value, path) {
|
|
|
376
392
|
return basis;
|
|
377
393
|
}
|
|
378
394
|
function parseEvaluationTarget(value, path) {
|
|
379
|
-
const record = requireRecord(value, path);
|
|
395
|
+
const record = requireRecord(value, path, null);
|
|
396
|
+
rejectUnknownVariantFields(record, "kind", {
|
|
397
|
+
"surface-point": ["kind", "sceneObjectId", "materialResponseId", "positionM", "outgoingDirectionUnitVector"],
|
|
398
|
+
"environment-direction": ["kind", "outgoingDirectionUnitVector"]
|
|
399
|
+
}, path);
|
|
380
400
|
if (record.kind === "surface-point") {
|
|
381
401
|
return {
|
|
382
402
|
kind: "surface-point",
|
|
@@ -402,7 +422,7 @@ function parseEvaluationTarget(value, path) {
|
|
|
402
422
|
* physical time, wavelength, and outgoing direction.
|
|
403
423
|
*/
|
|
404
424
|
export function parseSceneRadianceEvaluationRequest(value) {
|
|
405
|
-
const record = requireRecord(value, "sceneRadianceEvaluationRequest");
|
|
425
|
+
const record = requireRecord(value, "sceneRadianceEvaluationRequest", ["schemaVersion", "sampleId", "providerProfileId", "sceneId", "illuminationProfileId", "materialResponseProfileId", "target", "timeSecondsFromExposureStart", "wavelengthNanometers", "wavelengthBasis"]);
|
|
406
426
|
if (record.schemaVersion !==
|
|
407
427
|
SCENE_RADIANCE_EVALUATION_SCHEMA_VERSION) {
|
|
408
428
|
throw new InvalidConfigurationError('sceneRadianceEvaluationRequest.schemaVersion must be "' +
|
|
@@ -423,14 +443,14 @@ export function parseSceneRadianceEvaluationRequest(value) {
|
|
|
423
443
|
};
|
|
424
444
|
}
|
|
425
445
|
/**
|
|
426
|
-
* Parses one
|
|
446
|
+
* Parses one outgoing spectral-radiance result from a provider.
|
|
427
447
|
*
|
|
428
|
-
* The
|
|
429
|
-
* finite
|
|
430
|
-
*
|
|
448
|
+
* The number is accepted as the provider reported it. Parsing checks units, that the
|
|
449
|
+
* value is finite and nonnegative, provenance and identity fields. It does not prove
|
|
450
|
+
* the provider's light-transport calculation is physically correct.
|
|
431
451
|
*/
|
|
432
452
|
export function parseSceneRadianceEvaluationResult(value) {
|
|
433
|
-
const record = requireRecord(value, "sceneRadianceEvaluationResult");
|
|
453
|
+
const record = requireRecord(value, "sceneRadianceEvaluationResult", ["schemaVersion", "quantity", "unit", "scientificStatus", "sampleId", "providerProfileId", "sceneId", "wavelengthNanometers", "wavelengthBasis", "spectralRadianceWattsPerSquareMeterSteradianNanometer", "uncertainty", "evidence", "limitations"]);
|
|
434
454
|
if (record.schemaVersion !==
|
|
435
455
|
SCENE_RADIANCE_EVALUATION_SCHEMA_VERSION) {
|
|
436
456
|
throw new InvalidConfigurationError('sceneRadianceEvaluationResult.schemaVersion must be "' +
|
|
@@ -470,13 +490,15 @@ function requireEqual(actual, expected, message) {
|
|
|
470
490
|
}
|
|
471
491
|
}
|
|
472
492
|
/**
|
|
473
|
-
*
|
|
493
|
+
* Checks that a provider result matches its request and profile identities exactly.
|
|
474
494
|
*
|
|
475
|
-
*
|
|
476
|
-
*
|
|
495
|
+
* It never recomputes the radiance value, and never upgrades the provider's
|
|
496
|
+
* approximation to calibrated radiometry.
|
|
477
497
|
*/
|
|
478
498
|
export function validateSceneRadianceEvaluationBindings(input) {
|
|
499
|
+
requireInputKeys(input, "validateSceneRadianceEvaluationBindings", ["providerProfile", "illuminationProfile", "illuminationTemporalProfile", "materialResponseProfile", "request", "result"]);
|
|
479
500
|
const { providerProfile, illuminationProfile, illuminationTemporalProfile, materialResponseProfile, request, result } = input;
|
|
501
|
+
requireInputObject(providerProfile, "providerProfile input");
|
|
480
502
|
requireEqual(providerProfile.sceneId, illuminationProfile.sceneId, "Provider and illumination profiles must reference the same sceneId.");
|
|
481
503
|
requireEqual(providerProfile.sceneId, materialResponseProfile.sceneId, "Provider and material-response profiles must reference the same sceneId.");
|
|
482
504
|
requireEqual(providerProfile.illuminationProfileId, illuminationProfile.profileId, "Provider illuminationProfileId must match the supplied illumination profile.");
|