@photivra/engine 1.4.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 +401 -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 +118 -5
- package/dist/capture/native-raw-development.js +224 -59
- 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 +67 -10
- package/dist/capture/native-raw.js +90 -24
- 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 -4
- package/docs/api/capture-native-raw-dng.md +84 -0
- package/docs/api/capture-native-raw.md +23 -8
- 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/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 -47
- 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_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/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/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
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
# facade/chart-scenes.ts public contracts
|
|
2
|
+
|
|
3
|
+
The package and root API versions are recorded once in [Navigation](../API_REFERENCE.md) · [Developer guide](https://github.com/Photivra/photivra/blob/main/docs/DEVELOPERS.md). Generated signatures retain independent schema/model versions. Only the exports listed here are root-package contracts; module-local helpers are not supported deep imports.
|
|
4
|
+
|
|
5
|
+
## calculatePointGridCenters
|
|
6
|
+
|
|
7
|
+
Centres (frame units) of a point grid: one disk centred in each of columns × rows equal cells, row-major from the top-left.
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
export function calculatePointGridCenters(input: { columns: number; rows: number; aspect: number }): { u: number; v: number }[];
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
This call is synchronous; any supplied provider must follow its explicit synchronous contract.
|
|
14
|
+
|
|
15
|
+
## calculateStepWedgeReflectances
|
|
16
|
+
|
|
17
|
+
Step reflectances of a step wedge. `equal-density` spaces optical density D = -log10(R) evenly, which
|
|
18
|
+
gives geometric reflectance steps, as on a photographic step tablet. `linear` spaces reflectance evenly.
|
|
19
|
+
|
|
20
|
+
```ts
|
|
21
|
+
export function calculateStepWedgeReflectances(input: { steps: number; minimumReflectance: number; maximumReflectance: number;
|
|
22
|
+
spacing: "equal-density" | "linear" }): number[];
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
This call is synchronous; any supplied provider must follow its explicit synchronous contract.
|
|
26
|
+
|
|
27
|
+
## CHART_SCENE_DEFAULTS
|
|
28
|
+
|
|
29
|
+
Engine-chosen chart parameters, each reported when the caller omitted it.
|
|
30
|
+
|
|
31
|
+
```ts
|
|
32
|
+
CHART_SCENE_DEFAULTS = Object.freeze({
|
|
33
|
+
uniform: Object.freeze({ reflectance: 0.18 }),
|
|
34
|
+
"slanted-edge": Object.freeze({ angleDegrees: 5, darkReflectance: 0.15, lightReflectance: 0.6 }),
|
|
35
|
+
"siemens-star": Object.freeze({ cycles: 36, radiusFraction: 0.9, darkReflectance: 0.05, lightReflectance: 0.8, backgroundReflectance: 0.18 }),
|
|
36
|
+
"step-wedge": Object.freeze({ steps: 11, minimumReflectance: 0.03, maximumReflectance: 0.9, spacing: "equal-density" as const }),
|
|
37
|
+
"grey-ramp": Object.freeze({ minimumReflectance: 0.03, maximumReflectance: 0.9 }),
|
|
38
|
+
checkerboard: Object.freeze({ squaresAcross: 8, darkReflectance: 0.05, lightReflectance: 0.8 }),
|
|
39
|
+
"point-grid": Object.freeze({ columns: 5, rows: 3, radius: 0.01, pointReflectance: 0.9, backgroundReflectance: 0.02 }),
|
|
40
|
+
patches: Object.freeze({ gapFraction: 0.1, backgroundReflectance: 0.18 })
|
|
41
|
+
})
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## CHART_SCENE_PRESETS
|
|
45
|
+
|
|
46
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
47
|
+
|
|
48
|
+
```ts
|
|
49
|
+
CHART_SCENE_PRESETS: readonly ChartScenePresetId[] = Object.freeze(["uniform", "slanted-edge", "siemens-star",
|
|
50
|
+
"step-wedge", "grey-ramp", "checkerboard", "point-grid", "patches"] as const)
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## CHART_SPECTRAL_RANGE_NANOMETERS
|
|
54
|
+
|
|
55
|
+
Wavelength range every chart spectrum must cover (the facade's sensor quadrature range).
|
|
56
|
+
|
|
57
|
+
```ts
|
|
58
|
+
CHART_SPECTRAL_RANGE_NANOMETERS = Object.freeze({ minimum: 380, maximum: 780 })
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## ChartReflectance
|
|
62
|
+
|
|
63
|
+
A neutral (spectrally flat) reflectance in [0, 1], or a caller reflectance spectrum (values in [0, 1]).
|
|
64
|
+
|
|
65
|
+
```ts
|
|
66
|
+
export type ChartReflectance = number | ColorimetricSpectrum;
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## ChartScene
|
|
70
|
+
|
|
71
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
72
|
+
|
|
73
|
+
```ts
|
|
74
|
+
export type ChartScene = UniformChartScene | SlantedEdgeChartScene | SiemensStarChartScene | StepWedgeChartScene |
|
|
75
|
+
GreyRampChartScene | CheckerboardChartScene | PointGridChartScene | PatchChartScene;
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## ChartScenePresetId
|
|
79
|
+
|
|
80
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
81
|
+
|
|
82
|
+
```ts
|
|
83
|
+
export type ChartScenePresetId = ChartScene["preset"];
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## CheckerboardChartScene
|
|
87
|
+
|
|
88
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
89
|
+
|
|
90
|
+
```ts
|
|
91
|
+
export interface CheckerboardChartScene {
|
|
92
|
+
preset: "checkerboard";
|
|
93
|
+
/** Squares across the frame width, 2..256. Default 8. */
|
|
94
|
+
squaresAcross?: number;
|
|
95
|
+
darkReflectance?: number;
|
|
96
|
+
lightReflectance?: number;
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## GreyRampChartScene
|
|
101
|
+
|
|
102
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
103
|
+
|
|
104
|
+
```ts
|
|
105
|
+
export interface GreyRampChartScene {
|
|
106
|
+
preset: "grey-ramp";
|
|
107
|
+
/** Continuous ramp, linear in reflectance from left (minimum) to right (maximum). */
|
|
108
|
+
minimumReflectance?: number;
|
|
109
|
+
maximumReflectance?: number;
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## PatchChartScene
|
|
114
|
+
|
|
115
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
116
|
+
|
|
117
|
+
```ts
|
|
118
|
+
export interface PatchChartScene {
|
|
119
|
+
preset: "patches";
|
|
120
|
+
/** Caller reflectance per patch, row-major; the facade bundles no colour-chart data. 1..1024 patches. */
|
|
121
|
+
patches: readonly { patchId: string; reflectance: ChartReflectance }[];
|
|
122
|
+
/** Patches per row. Default ceil(sqrt(patch count)). */
|
|
123
|
+
columns?: number;
|
|
124
|
+
/** Gap between patches as a fraction of the cell size, [0, 0.5). Default 0.1. */
|
|
125
|
+
gapFraction?: number;
|
|
126
|
+
backgroundReflectance?: number;
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## PointGridChartScene
|
|
131
|
+
|
|
132
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
133
|
+
|
|
134
|
+
```ts
|
|
135
|
+
export interface PointGridChartScene {
|
|
136
|
+
preset: "point-grid";
|
|
137
|
+
/** Grid columns and rows of small disks centred in equal cells. Defaults 5 × 3. */
|
|
138
|
+
columns?: number;
|
|
139
|
+
rows?: number;
|
|
140
|
+
/** Disk radius in frame units (fraction of the frame half-width). Default 0.01. */
|
|
141
|
+
radius?: number;
|
|
142
|
+
pointReflectance?: number;
|
|
143
|
+
backgroundReflectance?: number;
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## resolveChartScene
|
|
148
|
+
|
|
149
|
+
Validates a chart description and resolves every default. `aspect` is the frame height/width. Unknown
|
|
150
|
+
fields are rejected so that a mistyped parameter never silently falls back to a default.
|
|
151
|
+
|
|
152
|
+
```ts
|
|
153
|
+
export function resolveChartScene(input: { scene: ChartScene; aspect: number }): ResolvedChartScene;
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
This call is synchronous; any supplied provider must follow its explicit synchronous contract.
|
|
157
|
+
|
|
158
|
+
## ResolvedChartScene
|
|
159
|
+
|
|
160
|
+
A validated chart: every parameter resolved, plus which ones came from {@link CHART_SCENE_DEFAULTS}.
|
|
161
|
+
|
|
162
|
+
```ts
|
|
163
|
+
export interface ResolvedChartScene {
|
|
164
|
+
preset: ChartScenePresetId;
|
|
165
|
+
/** Fully resolved parameters (spectra are reported as `"caller-spectrum"`). */
|
|
166
|
+
parameters: Readonly<Record<string, unknown>>;
|
|
167
|
+
/** Names of parameters filled from defaults. */
|
|
168
|
+
defaultedParameters: readonly string[];
|
|
169
|
+
/** Frame aspect (height / width) the chart was resolved for. */
|
|
170
|
+
aspect: number;
|
|
171
|
+
/**
|
|
172
|
+
* Material index at a frame point (u right, v up). The index points into `materials`, starting at 0.
|
|
173
|
+
* Points outside the framed rectangle still evaluate (the pattern continues as defined), so blur and
|
|
174
|
+
* small framing differences stay well defined.
|
|
175
|
+
*/
|
|
176
|
+
materialAt(u: number, v: number): number;
|
|
177
|
+
/** Reflectance materials: a neutral number or a prepared caller spectrum. */
|
|
178
|
+
materials: readonly ({ kind: "neutral"; reflectance: number } | { kind: "spectrum"; spectrum: PreparedColorimetricSpectrum })[];
|
|
179
|
+
/** Reflectance in [0, 1] at a frame point and wavelength (nm). */
|
|
180
|
+
reflectanceAt(u: number, v: number, wavelengthNanometers: number): number;
|
|
181
|
+
}
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
## SiemensStarChartScene
|
|
185
|
+
|
|
186
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
187
|
+
|
|
188
|
+
```ts
|
|
189
|
+
export interface SiemensStarChartScene {
|
|
190
|
+
preset: "siemens-star";
|
|
191
|
+
/** Light/dark sector pairs around the star, 2..360. Default 36. */
|
|
192
|
+
cycles?: number;
|
|
193
|
+
/** Star radius as a fraction of the frame half-height, (0, 1]. Default 0.9. */
|
|
194
|
+
radiusFraction?: number;
|
|
195
|
+
darkReflectance?: number;
|
|
196
|
+
lightReflectance?: number;
|
|
197
|
+
/** Reflectance outside the star. Default 0.18. */
|
|
198
|
+
backgroundReflectance?: number;
|
|
199
|
+
}
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
## SlantedEdgeChartScene
|
|
203
|
+
|
|
204
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
205
|
+
|
|
206
|
+
```ts
|
|
207
|
+
export interface SlantedEdgeChartScene {
|
|
208
|
+
preset: "slanted-edge";
|
|
209
|
+
/** Clockwise tilt of the edge from vertical, degrees, in (-45, 45). Default 5. */
|
|
210
|
+
angleDegrees?: number;
|
|
211
|
+
/** Left (dark) side reflectance. Default 0.15. */
|
|
212
|
+
darkReflectance?: number;
|
|
213
|
+
/** Right (light) side reflectance. Default 0.6 (4:1 with the default dark side). */
|
|
214
|
+
lightReflectance?: number;
|
|
215
|
+
}
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
## StepWedgeChartScene
|
|
219
|
+
|
|
220
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
221
|
+
|
|
222
|
+
```ts
|
|
223
|
+
export interface StepWedgeChartScene {
|
|
224
|
+
preset: "step-wedge";
|
|
225
|
+
/** Number of equal-width vertical steps from left (minimum) to right (maximum), 2..64. Default 11. */
|
|
226
|
+
steps?: number;
|
|
227
|
+
minimumReflectance?: number;
|
|
228
|
+
maximumReflectance?: number;
|
|
229
|
+
/** `equal-density` (geometric, default) or `linear` reflectance spacing. */
|
|
230
|
+
spacing?: "equal-density" | "linear";
|
|
231
|
+
}
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
## UniformChartScene
|
|
235
|
+
|
|
236
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
237
|
+
|
|
238
|
+
```ts
|
|
239
|
+
export interface UniformChartScene { preset: "uniform"; reflectance?: ChartReflectance }
|
|
240
|
+
```
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# facade/scene-radiance.ts public contracts
|
|
2
|
+
|
|
3
|
+
The package and root API versions are recorded once in [Navigation](../API_REFERENCE.md) · [Developer guide](https://github.com/Photivra/photivra/blob/main/docs/DEVELOPERS.md). Generated signatures retain independent schema/model versions. Only the exports listed here are root-package contracts; module-local helpers are not supported deep imports.
|
|
4
|
+
|
|
5
|
+
## CallerRadianceScene
|
|
6
|
+
|
|
7
|
+
Caller absolute spectral radiance in W·m⁻²·sr⁻¹·nm⁻¹; the facade illuminant is not used.
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
export interface CallerRadianceScene { kind: "radiance-function"; sceneId: string; evaluate(point: Readonly<ScenePlanePoint>): number }
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## CallerReflectanceScene
|
|
14
|
+
|
|
15
|
+
Caller Lambertian reflectance (in [0, 1]) lit by the facade illuminant.
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
export interface CallerReflectanceScene { kind: "reflectance-function"; sceneId: string; evaluate(point: Readonly<ScenePlanePoint>): number }
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## CaptureIlluminant
|
|
22
|
+
|
|
23
|
+
Illuminant choices. CIE D65 is not bundled: its S0/S1/S2 basis tables must come from the caller
|
|
24
|
+
(`daylight`). `planckian` is Planck's law; `cie-a` is CIE illuminant A from its defining formula.
|
|
25
|
+
|
|
26
|
+
```ts
|
|
27
|
+
export type CaptureIlluminant =
|
|
28
|
+
| "cie-a"
|
|
29
|
+
| { kind: "planckian"; temperatureKelvin: number }
|
|
30
|
+
| { kind: "cie-a" }
|
|
31
|
+
| { kind: "daylight"; correlatedColorTemperatureKelvin: number; basis: CieDaylightBasis }
|
|
32
|
+
| { kind: "spectrum"; spectrum: ColorimetricSpectrum; label?: string };
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## createPlanarSceneRadianceProvider
|
|
36
|
+
|
|
37
|
+
Public scene-preset provider. Places an engine chart (or a caller reflectance or radiance function) on
|
|
38
|
+
a plane `distanceM` in front of the camera and `framedWidthM` wide (frame units u = ±1 at its edges),
|
|
39
|
+
lit by `illuminant` at `illuminanceLux`. The returned `evaluateRadiance` and `evaluateApertureRadiance`
|
|
40
|
+
follow the native environment RAW provider contract. They answer requests for scene `sceneId` and
|
|
41
|
+
provider `providerProfileId`.
|
|
42
|
+
|
|
43
|
+
```ts
|
|
44
|
+
export function createPlanarSceneRadianceProvider(input: {
|
|
45
|
+
scene: ChartScene | CallerReflectanceScene | CallerRadianceScene;
|
|
46
|
+
illuminant: CaptureIlluminant;
|
|
47
|
+
illuminanceLux: number;
|
|
48
|
+
distanceM: number;
|
|
49
|
+
framedWidthM: number;
|
|
50
|
+
/** Frame height / width. */
|
|
51
|
+
aspect: number;
|
|
52
|
+
sceneId: string;
|
|
53
|
+
providerProfileId: string;
|
|
54
|
+
}): PlanarSceneRadianceProvider & { chart: ResolvedChartScene | null };
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
This call is synchronous; any supplied provider must follow its explicit synchronous contract.
|
|
58
|
+
|
|
59
|
+
## PHOTOPIC_MAXIMUM_LUMINOUS_EFFICACY_LM_PER_W
|
|
60
|
+
|
|
61
|
+
CIE maximum luminous efficacy for photopic vision, lm/W.
|
|
62
|
+
|
|
63
|
+
```ts
|
|
64
|
+
PHOTOPIC_MAXIMUM_LUMINOUS_EFFICACY_LM_PER_W = 683
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## PlanarSceneRadianceProvider
|
|
68
|
+
|
|
69
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
70
|
+
|
|
71
|
+
```ts
|
|
72
|
+
export interface PlanarSceneRadianceProvider {
|
|
73
|
+
sceneId: string;
|
|
74
|
+
providerProfileId: string;
|
|
75
|
+
evaluateRadiance(request: Readonly<SceneRadianceEvaluationRequest>): SceneRadianceEvaluationResult;
|
|
76
|
+
evaluateApertureRadiance(request: Readonly<SceneRadianceEvaluationRequest>, ray: Readonly<SensorApertureRay>): SceneRadianceEvaluationResult;
|
|
77
|
+
/** Spectral radiance at a plane point (frame units), the same value the callbacks return. */
|
|
78
|
+
radianceAt(u: number, v: number, wavelengthNanometers: number): number;
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## resolveCaptureIlluminant
|
|
83
|
+
|
|
84
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
85
|
+
|
|
86
|
+
```ts
|
|
87
|
+
export function resolveCaptureIlluminant(value: CaptureIlluminant): ResolvedCaptureIlluminant;
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
This call is synchronous; any supplied provider must follow its explicit synchronous contract.
|
|
91
|
+
|
|
92
|
+
## ResolvedCaptureIlluminant
|
|
93
|
+
|
|
94
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
95
|
+
|
|
96
|
+
```ts
|
|
97
|
+
export interface ResolvedCaptureIlluminant {
|
|
98
|
+
/** Short public description, for example "planckian-6500K". */
|
|
99
|
+
id: string;
|
|
100
|
+
description: string;
|
|
101
|
+
/** Relative spectral shape (arbitrary scale) over at least 380-780 nm. */
|
|
102
|
+
shape: PreparedColorimetricSpectrum;
|
|
103
|
+
/** Original spectrum, for colorimetric white-balance calculations. */
|
|
104
|
+
spectrum: ColorimetricSpectrum;
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## ScenePlanePoint
|
|
109
|
+
|
|
110
|
+
A point of the scene plane passed to caller scene functions.
|
|
111
|
+
|
|
112
|
+
```ts
|
|
113
|
+
export interface ScenePlanePoint {
|
|
114
|
+
/** Metres on the plane, from the optical axis: +x right, +y up (as seen from the camera). */
|
|
115
|
+
xM: number;
|
|
116
|
+
yM: number;
|
|
117
|
+
/** The same point in frame units (u = ±1 at the left/right frame edges, v up on the same scale). */
|
|
118
|
+
u: number;
|
|
119
|
+
v: number;
|
|
120
|
+
wavelengthNanometers: number;
|
|
121
|
+
}
|
|
122
|
+
```
|
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
# facade/simulate-capture.ts public contracts
|
|
2
|
+
|
|
3
|
+
The package and root API versions are recorded once in [Navigation](../API_REFERENCE.md) · [Developer guide](https://github.com/Photivra/photivra/blob/main/docs/DEVELOPERS.md). Generated signatures retain independent schema/model versions. Only the exports listed here are root-package contracts; module-local helpers are not supported deep imports.
|
|
4
|
+
|
|
5
|
+
## SIMULATE_CAPTURE_DEFAULT_ILLUMINANCE_LUX
|
|
6
|
+
|
|
7
|
+
Default illuminance, lux: an 18 % Lambertian grey card (L = 0.18·E/π) then gets exactly the CIPA DC-004 standard
|
|
8
|
+
output sensitivity reference exposure H = 10/S at f/8, 1/125 s, ISO 100:
|
|
9
|
+
E = π·10·N²/(0.65·t·S·0.18) = π·80 000/11.7 ≈ 21 480.98 lux.
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
SIMULATE_CAPTURE_DEFAULT_ILLUMINANCE_LUX = Math.PI * sosReferenceLuminance(DEFAULTS.fNumber, DEFAULTS.shutterSeconds, DEFAULTS.iso) /
|
|
13
|
+
GREY_CARD_REFLECTANCE
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## SIMULATE_CAPTURE_FACADE_VERSION
|
|
17
|
+
|
|
18
|
+
Version of how the facade builds requests. It changes whenever the same input would build a different request.
|
|
19
|
+
|
|
20
|
+
```ts
|
|
21
|
+
SIMULATE_CAPTURE_FACADE_VERSION = "1.0.0" as const
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## simulateCapture
|
|
25
|
+
|
|
26
|
+
Simulates one still capture of a planar scene and returns the developed image, the packed RAW, the full
|
|
27
|
+
underlying request/plan, provenance and every assumption made. See docs/QUICK_START.md.
|
|
28
|
+
|
|
29
|
+
```ts
|
|
30
|
+
export async function simulateCapture(options: SimulateCaptureOptions): Promise<SimulateCaptureResult>;
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
This call is asynchronous; byte hashing uses the caller runtime's Web Crypto.
|
|
34
|
+
|
|
35
|
+
## SimulateCaptureAssumption
|
|
36
|
+
|
|
37
|
+
One decision the facade made: a default, a derived value or a fixed modelling choice.
|
|
38
|
+
|
|
39
|
+
```ts
|
|
40
|
+
export interface SimulateCaptureAssumption {
|
|
41
|
+
/** Dotted option path or modelling topic, for example "exposure.shutterSeconds" or "model.lens-psf". */
|
|
42
|
+
id: string;
|
|
43
|
+
kind: "default" | "derived" | "model";
|
|
44
|
+
value: unknown;
|
|
45
|
+
explanation: string;
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## SimulateCaptureBorderHandling
|
|
50
|
+
|
|
51
|
+
`margin` renders extra native sites around the output, as far as the kernel reaches. `mirror` renders
|
|
52
|
+
exactly the output and reads mirrored (reflect-101) copies of the missing border sites. Mirroring is
|
|
53
|
+
checked to keep the CFA (colour filter array) pattern consistent.
|
|
54
|
+
|
|
55
|
+
```ts
|
|
56
|
+
export type SimulateCaptureBorderHandling = "margin" | "mirror";
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## SimulateCaptureColorEncoding
|
|
60
|
+
|
|
61
|
+
PNG colour encoding. `srgb` is the developed sRGB output. The others take the developed linear
|
|
62
|
+
colour (camera → XYZ → linear sRGB/D65, unclipped) and convert it through CIE XYZ into the target
|
|
63
|
+
primaries:
|
|
64
|
+
- `display-p3`: Display P3 primaries (W3C CSS Color 4 `display-p3`; also SMPTE EG 432-1) with the
|
|
65
|
+
sRGB transfer function;
|
|
66
|
+
- `rec2020`: ITU-R BT.2020 primaries and OETF.
|
|
67
|
+
PQ and HLG (BT.2100) are not part of 2.0; see THIRD_PARTY.md.
|
|
68
|
+
|
|
69
|
+
```ts
|
|
70
|
+
export type SimulateCaptureColorEncoding = "srgb" | "display-p3" | "rec2020";
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## SimulateCaptureDemosaic
|
|
74
|
+
|
|
75
|
+
Built-in Bayer demosaic kernels (`createBuiltInBayerDemosaicProfiles`).
|
|
76
|
+
|
|
77
|
+
```ts
|
|
78
|
+
export type SimulateCaptureDemosaic = "bilinear";
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## SimulateCaptureExposureMode
|
|
82
|
+
|
|
83
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
84
|
+
|
|
85
|
+
```ts
|
|
86
|
+
export type SimulateCaptureExposureMode = "manual" | "aperture-priority" | "shutter-priority" | "program";
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## SimulateCaptureLensDistortion
|
|
90
|
+
|
|
91
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
92
|
+
|
|
93
|
+
```ts
|
|
94
|
+
export type SimulateCaptureLensDistortion =
|
|
95
|
+
| { kind: "radial"; profile: RadialDistortionProfile }
|
|
96
|
+
| { kind: "brown-conrady"; profile: BrownConradyDistortionProfile };
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## SimulateCaptureMotion
|
|
100
|
+
|
|
101
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
102
|
+
|
|
103
|
+
```ts
|
|
104
|
+
export interface SimulateCaptureMotion {
|
|
105
|
+
/** Constant camera angular velocity, rad/s, in the engine's pitch/yaw/roll convention. Missing axes are 0. */
|
|
106
|
+
angularVelocityRadPerSec?: { pitch?: number; yaw?: number; roll?: number };
|
|
107
|
+
/** Default "global". `rolling` derives the exposure schedule from the body's rolling readout declaration. */
|
|
108
|
+
shutter?: "global" | "rolling";
|
|
109
|
+
/** Rolling shutter only: time from the first to the last line over the simulated frame, in s. Default: the body's declared readout skew. */
|
|
110
|
+
rollingShutterSkewSeconds?: number;
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## SimulateCaptureOptions
|
|
115
|
+
|
|
116
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
117
|
+
|
|
118
|
+
```ts
|
|
119
|
+
export interface SimulateCaptureOptions {
|
|
120
|
+
/** Generic tier preset id or a full preset record (for example a modified copy of a catalog entry). Default "professional". */
|
|
121
|
+
camera?: GenericEquipmentTier | GenericEquipmentTierPreset;
|
|
122
|
+
lens?: {
|
|
123
|
+
/** Must lie in the lens capability (the generic primes are 50 mm). Default: the lens's shortest focal length. */
|
|
124
|
+
focalLengthMm?: number;
|
|
125
|
+
/** Aperture for manual and aperture-priority modes. Default 8. */
|
|
126
|
+
fNumber?: number;
|
|
127
|
+
/** Focus distance in metres. Default: the subject distance. */
|
|
128
|
+
focusDistanceM?: number;
|
|
129
|
+
/** Opt-in ideal circular-pupil ray sampling (defocus/depth of field). Default off (central ray only). */
|
|
130
|
+
pupilSampling?: { radialSamples: number; angularSamples: number };
|
|
131
|
+
/** Ideal lens projection (`LENS_PROJECTION_MODELS`). Default "rectilinear". Not combinable with pupilSampling. */
|
|
132
|
+
projection?: LensProjectionModel;
|
|
133
|
+
/** Caller-declared radial or Brown–Conrady distortion profile. Default none. Not combinable with pupilSampling. */
|
|
134
|
+
distortion?: SimulateCaptureLensDistortion;
|
|
135
|
+
/** Caller-declared radial relative-illumination (vignetting) profile, applied as environment field throughput. */
|
|
136
|
+
vignetting?: IlluminationVignettingProfile;
|
|
137
|
+
/**
|
|
138
|
+
* Caller sampled lens PSF, passed unchanged to the environment contract. Its focal length, f-number and
|
|
139
|
+
* focus must equal the resolved capture settings exactly. Not combinable with pupilSampling.
|
|
140
|
+
*/
|
|
141
|
+
psf?: Extract<CalculateEnvironmentSensorPhotoSignalInput["psf"], { kind: "sampled-local" }>;
|
|
142
|
+
};
|
|
143
|
+
exposure?: {
|
|
144
|
+
/** Default "manual". */
|
|
145
|
+
mode?: SimulateCaptureExposureMode;
|
|
146
|
+
/** Default 100. */
|
|
147
|
+
iso?: number;
|
|
148
|
+
/** Shutter for manual and shutter-priority modes. Default 1/125 s. */
|
|
149
|
+
shutterSeconds?: number;
|
|
150
|
+
/** Exposure compensation applied to the meter target, in stops. Default 0. */
|
|
151
|
+
compensationStops?: number;
|
|
152
|
+
};
|
|
153
|
+
/** Required: an engine chart (for example `{ preset: "uniform" }`, an 18 % grey card) or a caller reflectance/radiance function. */
|
|
154
|
+
scene: ChartScene | CallerReflectanceScene | CallerRadianceScene;
|
|
155
|
+
/** Distance from the camera to the scene plane in metres. Default 5. */
|
|
156
|
+
subjectDistanceM?: number;
|
|
157
|
+
/** Default: Planckian 6500 K (a blackbody stand-in for daylight; CIE D65 is not bundled). */
|
|
158
|
+
illuminant?: CaptureIlluminant;
|
|
159
|
+
/** Illuminance on the scene plane, lux. Default about 21 481 lux (see `SIMULATE_CAPTURE_DEFAULT_ILLUMINANCE_LUX` and the assumptions). */
|
|
160
|
+
illuminanceLux?: number;
|
|
161
|
+
output?: {
|
|
162
|
+
/** Output pixels; the native sensor raster adds a one-site demosaic border on each side. Defaults 64 × 64. */
|
|
163
|
+
width?: number;
|
|
164
|
+
height?: number;
|
|
165
|
+
/** Default "srgb-8". */
|
|
166
|
+
format?: SimulateCaptureOutputFormat;
|
|
167
|
+
/** Default "identity". */
|
|
168
|
+
toneCurve?: SdrToneCurve;
|
|
169
|
+
/** Required by the luminance tone curves (see `SdrToneCurveParameters`). The facade does not make one up. */
|
|
170
|
+
toneCurveParameters?: SdrToneCurveParameters;
|
|
171
|
+
/** Default "clip". */
|
|
172
|
+
highlightMode?: RawHighlightMode;
|
|
173
|
+
/** Default "scene-illuminant". */
|
|
174
|
+
whiteBalance?: SimulateCaptureWhiteBalance;
|
|
175
|
+
/** JPEG constant quantization step 1-255 (not a manufacturer 'quality'). Default 2. */
|
|
176
|
+
jpegQuantizationStep?: number;
|
|
177
|
+
/** PNG only. Default "srgb". */
|
|
178
|
+
colorEncoding?: SimulateCaptureColorEncoding;
|
|
179
|
+
/** PNG only: 8 or 16 bits per sample. Default 8. */
|
|
180
|
+
bitDepth?: 8 | 16;
|
|
181
|
+
/**
|
|
182
|
+
* PNG SDR encodings only. Default "clip" (per-component clip to the target gamut). "perceptual" maps
|
|
183
|
+
* through `prepareRgbGamutMapping`: constant CIELAB L* and hue, chroma above 90 % of the boundary compressed.
|
|
184
|
+
*/
|
|
185
|
+
gamutMapping?: "clip" | "perceptual";
|
|
186
|
+
/** Default: the 1.0 facade's bilinear RGGB kernels. */
|
|
187
|
+
demosaic?: SimulateCaptureDemosaic;
|
|
188
|
+
/** Default "margin". */
|
|
189
|
+
borderHandling?: SimulateCaptureBorderHandling;
|
|
190
|
+
/** DNG only: optional capture-event time (YYYY-MM-DDTHH:mm:ss.sssZ); without it no date tags are written. */
|
|
191
|
+
dng?: { capturedAtUtc?: string };
|
|
192
|
+
};
|
|
193
|
+
/** Camera motion and shutter type. Default: still camera, global electronic shutter. */
|
|
194
|
+
motion?: SimulateCaptureMotion;
|
|
195
|
+
sensor?: {
|
|
196
|
+
/** Pixel pitch in micrometres. Default 6. */
|
|
197
|
+
pixelPitchMicrometers?: number;
|
|
198
|
+
/** Maximum spectral quadrature subinterval in nm. Default 20. */
|
|
199
|
+
spectralStepNanometers?: number;
|
|
200
|
+
/** Temporal midpoint samples across the exposure. Default 1. */
|
|
201
|
+
temporalSampleCount?: number;
|
|
202
|
+
/** Noise seed (uint32). Default 1. */
|
|
203
|
+
noiseSeed?: number;
|
|
204
|
+
};
|
|
205
|
+
/** Aborting cancels the running task; the promise rejects with a domain error and returns no partial image. */
|
|
206
|
+
signal?: AbortSignal;
|
|
207
|
+
/** Called after each committed RAW, development or JPEG tile. Cannot change output. */
|
|
208
|
+
onProgress?: (progress: SimulateCaptureProgress) => void;
|
|
209
|
+
}
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
## SimulateCaptureOutputFormat
|
|
213
|
+
|
|
214
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
215
|
+
|
|
216
|
+
```ts
|
|
217
|
+
export type SimulateCaptureOutputFormat = "srgb-8" | "srgb-16" | "jpeg" | "png" | "dng";
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
## SimulateCaptureProgress
|
|
221
|
+
|
|
222
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
223
|
+
|
|
224
|
+
```ts
|
|
225
|
+
export interface SimulateCaptureProgress {
|
|
226
|
+
stage: "raw" | "white-balance" | "development" | "jpeg";
|
|
227
|
+
completedTileCount: number;
|
|
228
|
+
totalTileCount: number;
|
|
229
|
+
}
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
## SimulateCaptureResult
|
|
233
|
+
|
|
234
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
235
|
+
|
|
236
|
+
```ts
|
|
237
|
+
export interface SimulateCaptureResult {
|
|
238
|
+
facadeVersion: typeof SIMULATE_CAPTURE_FACADE_VERSION;
|
|
239
|
+
engineApiVersion: string;
|
|
240
|
+
image: {
|
|
241
|
+
width: number;
|
|
242
|
+
height: number;
|
|
243
|
+
format: SimulateCaptureOutputFormat;
|
|
244
|
+
/** Interleaved RGB, row by row from the top-left. sRGB-encoded (W3C CSS Color 4 sRGB; also IEC 61966-2-1) unless `colorEncoding` says otherwise. */
|
|
245
|
+
samples: Uint8Array | Uint16Array;
|
|
246
|
+
/** Baseline JPEG bytes when format is "jpeg". */
|
|
247
|
+
jpeg?: Uint8Array;
|
|
248
|
+
/** PNG file bytes when format is "png". */
|
|
249
|
+
png?: Uint8Array;
|
|
250
|
+
/** Encoding of `samples` and `png` when format is "png". */
|
|
251
|
+
colorEncoding?: SimulateCaptureColorEncoding;
|
|
252
|
+
/** Lossless uncompressed CFA DNG of the packed RAW when format is "dng" (`serializeNativeRawDng`); `samples` are then sRGB 8-bit. */
|
|
253
|
+
dng?: Uint8Array;
|
|
254
|
+
};
|
|
255
|
+
/** Packed native RAW (codes, black levels, saturation flags) as produced by the native environment RAW task. */
|
|
256
|
+
raw: NativeRawOutput;
|
|
257
|
+
plan: NativeRawPlan;
|
|
258
|
+
/** The complete underlying request. */
|
|
259
|
+
request: {
|
|
260
|
+
environmentRaw: NativeEnvironmentRawInput;
|
|
261
|
+
/** Rebuilds the exact physical site input the provider supplied for a native row-major index. */
|
|
262
|
+
siteInput(nativeIndex: number): SimulateEnvironmentSensorRawFrameInput["sites"][number];
|
|
263
|
+
development: Omit<NativeRawDevelopmentInput, "raw">;
|
|
264
|
+
whiteBalanceState: ResolvedWhiteBalanceState | null;
|
|
265
|
+
};
|
|
266
|
+
exposure: {
|
|
267
|
+
mode: SimulateCaptureExposureMode;
|
|
268
|
+
settings: { fNumber: number; shutterSeconds: number; iso: number };
|
|
269
|
+
/** Exposure value at ISO 100 of the settings, log2(N²/t). */
|
|
270
|
+
ev100: number;
|
|
271
|
+
meteredSceneLuminanceCdPerSquareMeter: number;
|
|
272
|
+
/** Full output of the existing exposure-mode resolver. */
|
|
273
|
+
resolution: unknown;
|
|
274
|
+
};
|
|
275
|
+
scene: {
|
|
276
|
+
sceneId: string;
|
|
277
|
+
preset: string;
|
|
278
|
+
parameters: Readonly<Record<string, unknown>>;
|
|
279
|
+
illuminant: { id: string; description: string; illuminanceLux: number };
|
|
280
|
+
distanceM: number;
|
|
281
|
+
/** Physical size of the framed scene plane, metres. */
|
|
282
|
+
framedWidthM: number;
|
|
283
|
+
framedHeightM: number;
|
|
284
|
+
/**
|
|
285
|
+
* SHA-256 of the canonical scene description, recorded as the capture source digest. Caller spectra (a
|
|
286
|
+
* `spectrum` or `daylight` illuminant, chart reflectance spectra) are part of the description: tabulated
|
|
287
|
+
* data exactly, function spectra sampled at 1 nm over 380-780 nm, plus the daylight basis datasetId.
|
|
288
|
+
* The body of a caller scene's evaluate function is not hashed.
|
|
289
|
+
*/
|
|
290
|
+
sourceSha256: string;
|
|
291
|
+
};
|
|
292
|
+
diagnostics: {
|
|
293
|
+
providerEvaluationCount: number;
|
|
294
|
+
highlight: RawHighlightDiagnostics;
|
|
295
|
+
rendering: SdrRenderingResult["diagnostics"];
|
|
296
|
+
/** Present with output.gamutMapping "perceptual": pixels whose chroma or lightness the mapping changed. */
|
|
297
|
+
gamutMapping?: { method: "cielab-hue-preserving-chroma-compression"; kneeFraction: number; adjustedPixelCount: number; lightnessClippedPixelCount: number };
|
|
298
|
+
timingsMs: { raw: number; whiteBalance: number; development: number; jpeg: number; total: number };
|
|
299
|
+
};
|
|
300
|
+
provenance: {
|
|
301
|
+
scientificStatus: "approximation";
|
|
302
|
+
cameraPresetId: string;
|
|
303
|
+
cameraPresetVersion: string;
|
|
304
|
+
evidence: readonly EvidenceProvenance[];
|
|
305
|
+
/** Existing engine contracts the facade composed, in execution order. */
|
|
306
|
+
composedContracts: readonly string[];
|
|
307
|
+
limitations: readonly string[];
|
|
308
|
+
};
|
|
309
|
+
assumptions: readonly SimulateCaptureAssumption[];
|
|
310
|
+
}
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
## SimulateCaptureWhiteBalance
|
|
314
|
+
|
|
315
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
316
|
+
|
|
317
|
+
```ts
|
|
318
|
+
export type SimulateCaptureWhiteBalance =
|
|
319
|
+
| "scene-illuminant"
|
|
320
|
+
| "auto"
|
|
321
|
+
| "none"
|
|
322
|
+
| { kelvin: number; tint?: number }
|
|
323
|
+
| { channelGains: { red: number; green: number; blue: number } };
|
|
324
|
+
```
|