@photivra/engine 1.5.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +414 -6
- package/CITATION.cff +1 -1
- package/NODE_SUPPORT.md +64 -12
- package/README.md +301 -182
- package/SECURITY.md +37 -28
- package/THIRD_PARTY.md +148 -4
- package/dist/camera/equivalent-focal-length.d.ts +13 -14
- package/dist/camera/equivalent-focal-length.js +15 -13
- package/dist/camera/equivalent-focal-length.js.map +1 -1
- package/dist/camera/field-of-view.d.ts +30 -19
- package/dist/camera/field-of-view.js +67 -18
- package/dist/camera/field-of-view.js.map +1 -1
- package/dist/camera/lens-projection.d.ts +170 -0
- package/dist/camera/lens-projection.js +444 -0
- package/dist/camera/lens-projection.js.map +1 -0
- package/dist/camera/projected-object-size.d.ts +10 -11
- package/dist/camera/projected-object-size.js +12 -10
- package/dist/camera/projected-object-size.js.map +1 -1
- package/dist/capture/capture-export-metadata.d.ts +9 -10
- package/dist/capture/capture-export-metadata.js +8 -5
- package/dist/capture/capture-export-metadata.js.map +1 -1
- package/dist/capture/dng-import.d.ts +91 -0
- package/dist/capture/dng-import.js +343 -0
- package/dist/capture/dng-import.js.map +1 -0
- package/dist/capture/environment-raw-producer.d.ts +37 -17
- package/dist/capture/environment-raw-producer.js +43 -19
- package/dist/capture/environment-raw-producer.js.map +1 -1
- package/dist/capture/export-jpeg.d.ts +35 -4
- package/dist/capture/export-jpeg.js +133 -47
- package/dist/capture/export-jpeg.js.map +1 -1
- package/dist/capture/export-tiff.d.ts +48 -24
- package/dist/capture/export-tiff.js +91 -31
- package/dist/capture/export-tiff.js.map +1 -1
- package/dist/capture/focus-control.d.ts +42 -65
- package/dist/capture/focus-control.js +56 -75
- package/dist/capture/focus-control.js.map +1 -1
- package/dist/capture/host-yield-cadence.d.ts +25 -0
- package/dist/capture/host-yield-cadence.js +25 -0
- package/dist/capture/host-yield-cadence.js.map +1 -0
- package/dist/capture/linear-encoding.d.ts +14 -12
- package/dist/capture/linear-encoding.js +14 -13
- package/dist/capture/linear-encoding.js.map +1 -1
- package/dist/capture/lossless-jpeg.d.ts +27 -0
- package/dist/capture/lossless-jpeg.js +237 -0
- package/dist/capture/lossless-jpeg.js.map +1 -0
- package/dist/capture/native-environment-lean.d.ts +227 -0
- package/dist/capture/native-environment-lean.js +974 -0
- package/dist/capture/native-environment-lean.js.map +1 -0
- package/dist/capture/native-environment-optical-stage.d.ts +97 -0
- package/dist/capture/native-environment-optical-stage.js +340 -0
- package/dist/capture/native-environment-optical-stage.js.map +1 -0
- package/dist/capture/native-environment-raw.d.ts +140 -6
- package/dist/capture/native-environment-raw.js +435 -34
- package/dist/capture/native-environment-raw.js.map +1 -1
- package/dist/capture/native-raw-development.d.ts +116 -9
- package/dist/capture/native-raw-development.js +221 -62
- package/dist/capture/native-raw-development.js.map +1 -1
- package/dist/capture/native-raw-dng.d.ts +60 -0
- package/dist/capture/native-raw-dng.js +167 -0
- package/dist/capture/native-raw-dng.js.map +1 -0
- package/dist/capture/native-raw.d.ts +65 -12
- package/dist/capture/native-raw.js +81 -19
- package/dist/capture/native-raw.js.map +1 -1
- package/dist/capture/packed-sensor-raw.d.ts +160 -0
- package/dist/capture/packed-sensor-raw.js +221 -0
- package/dist/capture/packed-sensor-raw.js.map +1 -0
- package/dist/capture/photographic-export.d.ts +58 -35
- package/dist/capture/photographic-export.js +177 -70
- package/dist/capture/photographic-export.js.map +1 -1
- package/dist/capture/raw-development-kernel.d.ts +52 -0
- package/dist/capture/raw-development-kernel.js +88 -0
- package/dist/capture/raw-development-kernel.js.map +1 -0
- package/dist/capture/raw-frame-limits.d.ts +7 -7
- package/dist/capture/raw-frame-limits.js +7 -6
- package/dist/capture/raw-frame-limits.js.map +1 -1
- package/dist/capture/raw-frame-reconstruction.d.ts +8 -9
- package/dist/capture/raw-frame-reconstruction.js +9 -8
- package/dist/capture/raw-frame-reconstruction.js.map +1 -1
- package/dist/capture/raw-white-level.d.ts +55 -0
- package/dist/capture/raw-white-level.js +165 -0
- package/dist/capture/raw-white-level.js.map +1 -0
- package/dist/capture/release-sequence.d.ts +5 -7
- package/dist/capture/release-sequence.js +15 -13
- package/dist/capture/release-sequence.js.map +1 -1
- package/dist/capture/sensor-raw-frame.d.ts +5 -6
- package/dist/capture/sensor-raw-frame.js +26 -9
- package/dist/capture/sensor-raw-frame.js.map +1 -1
- package/dist/capture/sensor-raw-producer.d.ts +21 -13
- package/dist/capture/sensor-raw-producer.js +86 -25
- package/dist/capture/sensor-raw-producer.js.map +1 -1
- package/dist/capture/simulated-capture.d.ts +15 -16
- package/dist/capture/simulated-capture.js +22 -12
- package/dist/capture/simulated-capture.js.map +1 -1
- package/dist/color/camera-color-matrix.d.ts +69 -0
- package/dist/color/camera-color-matrix.js +132 -0
- package/dist/color/camera-color-matrix.js.map +1 -0
- package/dist/color/capture-color.d.ts +17 -10
- package/dist/color/capture-color.js +50 -17
- package/dist/color/capture-color.js.map +1 -1
- package/dist/color/chromatic-adaptation.d.ts +63 -0
- package/dist/color/chromatic-adaptation.js +91 -0
- package/dist/color/chromatic-adaptation.js.map +1 -0
- package/dist/color/color-difference.d.ts +104 -0
- package/dist/color/color-difference.js +205 -0
- package/dist/color/color-difference.js.map +1 -0
- package/dist/color/color-matching-functions.d.ts +168 -0
- package/dist/color/color-matching-functions.js +309 -0
- package/dist/color/color-matching-functions.js.map +1 -0
- package/dist/color/colorimetry-math.d.ts +52 -0
- package/dist/color/colorimetry-math.js +144 -0
- package/dist/color/colorimetry-math.js.map +1 -0
- package/dist/color/gamut-mapping.d.ts +54 -0
- package/dist/color/gamut-mapping.js +107 -0
- package/dist/color/gamut-mapping.js.map +1 -0
- package/dist/color/illuminants.d.ts +182 -0
- package/dist/color/illuminants.js +434 -0
- package/dist/color/illuminants.js.map +1 -0
- package/dist/color/rgb-color-spaces.d.ts +79 -0
- package/dist/color/rgb-color-spaces.js +115 -0
- package/dist/color/rgb-color-spaces.js.map +1 -0
- package/dist/color/sensor-color-development.d.ts +33 -11
- package/dist/color/sensor-color-development.js +104 -30
- package/dist/color/sensor-color-development.js.map +1 -1
- package/dist/color/srgb-icc.d.ts +9 -2
- package/dist/color/srgb-icc.js +16 -5
- package/dist/color/srgb-icc.js.map +1 -1
- package/dist/color/srgb-transfer.d.ts +1 -2
- package/dist/color/srgb-transfer.js +1 -1
- package/dist/color/srgb-transfer.js.map +1 -1
- package/dist/color/white-balance.d.ts +68 -19
- package/dist/color/white-balance.js +168 -35
- package/dist/color/white-balance.js.map +1 -1
- package/dist/composition/image-formation-plan.d.ts +152 -128
- package/dist/composition/image-formation-plan.js +292 -138
- package/dist/composition/image-formation-plan.js.map +1 -1
- package/dist/composition/plan-consumer.d.ts +6 -7
- package/dist/composition/plan-consumer.js +14 -11
- package/dist/composition/plan-consumer.js.map +1 -1
- package/dist/core/calculation-result.d.ts +21 -14
- package/dist/core/calculation-result.js +209 -11
- package/dist/core/calculation-result.js.map +1 -1
- package/dist/core/canonical-json.d.ts +13 -8
- package/dist/core/canonical-json.js +34 -15
- package/dist/core/canonical-json.js.map +1 -1
- package/dist/core/configuration-error.d.ts +5 -4
- package/dist/core/configuration-error.js +5 -3
- package/dist/core/configuration-error.js.map +1 -1
- package/dist/core/evidence-provenance.d.ts +12 -12
- package/dist/core/evidence-provenance.js +10 -9
- package/dist/core/evidence-provenance.js.map +1 -1
- package/dist/core/image-formation.d.ts +11 -10
- package/dist/core/image-formation.js +11 -9
- package/dist/core/image-formation.js.map +1 -1
- package/dist/core/owned-data.d.ts +9 -17
- package/dist/core/owned-data.js +9 -16
- package/dist/core/owned-data.js.map +1 -1
- package/dist/core/portable-math.d.ts +15 -0
- package/dist/core/portable-math.js +56 -0
- package/dist/core/portable-math.js.map +1 -0
- package/dist/core/record-validation.d.ts +48 -9
- package/dist/core/record-validation.js +93 -19
- package/dist/core/record-validation.js.map +1 -1
- package/dist/core/scientific-assurance.d.ts +16 -14
- package/dist/core/scientific-assurance.js +22 -18
- package/dist/core/scientific-assurance.js.map +1 -1
- package/dist/core/spectral-composition.d.ts +13 -14
- package/dist/core/spectral-composition.js +30 -27
- package/dist/core/spectral-composition.js.map +1 -1
- package/dist/core/spectral.d.ts +5 -6
- package/dist/core/spectral.js +9 -7
- package/dist/core/spectral.js.map +1 -1
- package/dist/core/validation.d.ts +3 -6
- package/dist/core/validation.js +3 -5
- package/dist/core/validation.js.map +1 -1
- package/dist/core/version.d.ts +6 -6
- package/dist/core/version.js +6 -5
- package/dist/core/version.js.map +1 -1
- package/dist/equipment/exposure-capabilities.d.ts +10 -10
- package/dist/equipment/exposure-capabilities.js +40 -30
- package/dist/equipment/exposure-capabilities.js.map +1 -1
- package/dist/equipment/generic-tier-assets.d.ts +13 -6
- package/dist/equipment/generic-tier-assets.js +34 -15
- package/dist/equipment/generic-tier-assets.js.map +1 -1
- package/dist/equipment/generic-tier-presets.d.ts +5 -6
- package/dist/equipment/generic-tier-presets.js +15 -13
- package/dist/equipment/generic-tier-presets.js.map +1 -1
- package/dist/equipment/iso-capabilities.d.ts +21 -22
- package/dist/equipment/iso-capabilities.js +49 -44
- package/dist/equipment/iso-capabilities.js.map +1 -1
- package/dist/equipment/metering-capabilities.d.ts +5 -6
- package/dist/equipment/metering-capabilities.js +22 -19
- package/dist/equipment/metering-capabilities.js.map +1 -1
- package/dist/equipment/release-capabilities.d.ts +3 -4
- package/dist/equipment/release-capabilities.js +18 -14
- package/dist/equipment/release-capabilities.js.map +1 -1
- package/dist/exposure/exposure-duration-control.d.ts +19 -17
- package/dist/exposure/exposure-duration-control.js +27 -23
- package/dist/exposure/exposure-duration-control.js.map +1 -1
- package/dist/exposure/exposure-mode-resolver.d.ts +42 -39
- package/dist/exposure/exposure-mode-resolver.js +127 -82
- package/dist/exposure/exposure-mode-resolver.js.map +1 -1
- package/dist/exposure/exposure.d.ts +17 -16
- package/dist/exposure/exposure.js +22 -15
- package/dist/exposure/exposure.js.map +1 -1
- package/dist/exposure/flash-ttl.d.ts +135 -0
- package/dist/exposure/flash-ttl.js +193 -0
- package/dist/exposure/flash-ttl.js.map +1 -0
- package/dist/exposure/flash.d.ts +144 -36
- package/dist/exposure/flash.js +259 -59
- package/dist/exposure/flash.js.map +1 -1
- package/dist/exposure/metering-scene-radiance.d.ts +10 -10
- package/dist/exposure/metering-scene-radiance.js +42 -23
- package/dist/exposure/metering-scene-radiance.js.map +1 -1
- package/dist/exposure/metering-target.d.ts +8 -8
- package/dist/exposure/metering-target.js +30 -20
- package/dist/exposure/metering-target.js.map +1 -1
- package/dist/exposure/metering-temporal.d.ts +16 -15
- package/dist/exposure/metering-temporal.js +41 -19
- package/dist/exposure/metering-temporal.js.map +1 -1
- package/dist/exposure/metering.d.ts +64 -17
- package/dist/exposure/metering.js +159 -30
- package/dist/exposure/metering.js.map +1 -1
- package/dist/exposure/program-line.d.ts +5 -5
- package/dist/exposure/program-line.js +20 -13
- package/dist/exposure/program-line.js.map +1 -1
- package/dist/facade/camera-preset.d.ts +8 -0
- package/dist/facade/camera-preset.js +102 -0
- package/dist/facade/camera-preset.js.map +1 -0
- package/dist/facade/chart-radiance-batch.d.ts +57 -0
- package/dist/facade/chart-radiance-batch.js +121 -0
- package/dist/facade/chart-radiance-batch.js.map +1 -0
- package/dist/facade/chart-scenes.d.ts +177 -0
- package/dist/facade/chart-scenes.js +232 -0
- package/dist/facade/chart-scenes.js.map +1 -0
- package/dist/facade/diffraction-provider.d.ts +30 -0
- package/dist/facade/diffraction-provider.js +127 -0
- package/dist/facade/diffraction-provider.js.map +1 -0
- package/dist/facade/host-yield.d.ts +7 -0
- package/dist/facade/host-yield.js +19 -0
- package/dist/facade/host-yield.js.map +1 -0
- package/dist/facade/scene-radiance.d.ts +117 -0
- package/dist/facade/scene-radiance.js +205 -0
- package/dist/facade/scene-radiance.js.map +1 -0
- package/dist/facade/simulate-capture.d.ts +363 -0
- package/dist/facade/simulate-capture.js +1281 -0
- package/dist/facade/simulate-capture.js.map +1 -0
- package/dist/gpu/chart-radiance-gpu.d.ts +17 -0
- package/dist/gpu/chart-radiance-gpu.js +176 -0
- package/dist/gpu/chart-radiance-gpu.js.map +1 -0
- package/dist/gpu/image-kernel-accelerator.d.ts +132 -0
- package/dist/gpu/image-kernel-accelerator.js +720 -0
- package/dist/gpu/image-kernel-accelerator.js.map +1 -0
- package/dist/gpu/image-kernel-execution.d.ts +92 -0
- package/dist/gpu/image-kernel-execution.js +84 -0
- package/dist/gpu/image-kernel-execution.js.map +1 -0
- package/dist/gpu/sensor-stage-gpu.d.ts +44 -0
- package/dist/gpu/sensor-stage-gpu.js +317 -0
- package/dist/gpu/sensor-stage-gpu.js.map +1 -0
- package/dist/gpu/temporal-sum-gpu.d.ts +23 -0
- package/dist/gpu/temporal-sum-gpu.js +150 -0
- package/dist/gpu/temporal-sum-gpu.js.map +1 -0
- package/dist/gpu/webgpu-runtime.d.ts +63 -0
- package/dist/gpu/webgpu-runtime.js +215 -0
- package/dist/gpu/webgpu-runtime.js.map +1 -0
- package/dist/gpu/wgsl-chart-kernel.d.ts +30 -0
- package/dist/gpu/wgsl-chart-kernel.js +165 -0
- package/dist/gpu/wgsl-chart-kernel.js.map +1 -0
- package/dist/gpu/wgsl-kernels.d.ts +53 -0
- package/dist/gpu/wgsl-kernels.js +365 -0
- package/dist/gpu/wgsl-kernels.js.map +1 -0
- package/dist/gpu/wgsl-sensor-kernel.d.ts +64 -0
- package/dist/gpu/wgsl-sensor-kernel.js +409 -0
- package/dist/gpu/wgsl-sensor-kernel.js.map +1 -0
- package/dist/index.d.ts +91 -25
- package/dist/index.js +60 -15
- package/dist/index.js.map +1 -1
- package/dist/motion/camera-rotation.d.ts +92 -40
- package/dist/motion/camera-rotation.js +84 -47
- package/dist/motion/camera-rotation.js.map +1 -1
- package/dist/motion/capture-rotation-inverse-mapping.d.ts +37 -34
- package/dist/motion/capture-rotation-inverse-mapping.js +32 -24
- package/dist/motion/capture-rotation-inverse-mapping.js.map +1 -1
- package/dist/motion/capture-rotation-temporal-quadrature.d.ts +39 -35
- package/dist/motion/capture-rotation-temporal-quadrature.js +37 -28
- package/dist/motion/capture-rotation-temporal-quadrature.js.map +1 -1
- package/dist/motion/capture-rotation-trajectory.d.ts +32 -28
- package/dist/motion/capture-rotation-trajectory.js +36 -26
- package/dist/motion/capture-rotation-trajectory.js.map +1 -1
- package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts +23 -21
- package/dist/motion/capture-translation-parallax-temporal-quadrature.js +33 -14
- package/dist/motion/capture-translation-parallax-temporal-quadrature.js.map +1 -1
- package/dist/motion/extended-object-projection.d.ts +19 -16
- package/dist/motion/extended-object-projection.js +38 -18
- package/dist/motion/extended-object-projection.js.map +1 -1
- package/dist/motion/projected-motion.d.ts +18 -17
- package/dist/motion/projected-motion.js +25 -17
- package/dist/motion/projected-motion.js.map +1 -1
- package/dist/motion/temporal-exposure-sum.d.ts +55 -0
- package/dist/motion/temporal-exposure-sum.js +141 -0
- package/dist/motion/temporal-exposure-sum.js.map +1 -0
- package/dist/motion/video-sequence.d.ts +111 -0
- package/dist/motion/video-sequence.js +179 -0
- package/dist/motion/video-sequence.js.map +1 -0
- package/dist/optics/aperture.d.ts +14 -15
- package/dist/optics/aperture.js +13 -11
- package/dist/optics/aperture.js.map +1 -1
- package/dist/optics/atmospheric-haze.d.ts +83 -0
- package/dist/optics/atmospheric-haze.js +113 -0
- package/dist/optics/atmospheric-haze.js.map +1 -0
- package/dist/optics/brown-conrady-distortion.d.ts +116 -0
- package/dist/optics/brown-conrady-distortion.js +291 -0
- package/dist/optics/brown-conrady-distortion.js.map +1 -0
- package/dist/optics/circle-of-confusion.d.ts +10 -10
- package/dist/optics/circle-of-confusion.js +15 -11
- package/dist/optics/circle-of-confusion.js.map +1 -1
- package/dist/optics/complex-pupil-psf.d.ts +64 -33
- package/dist/optics/complex-pupil-psf.js +190 -98
- package/dist/optics/complex-pupil-psf.js.map +1 -1
- package/dist/optics/depth-of-field.d.ts +25 -15
- package/dist/optics/depth-of-field.js +67 -27
- package/dist/optics/depth-of-field.js.map +1 -1
- package/dist/optics/diffraction-psf-profile.d.ts +118 -0
- package/dist/optics/diffraction-psf-profile.js +252 -0
- package/dist/optics/diffraction-psf-profile.js.map +1 -0
- package/dist/optics/diffraction.d.ts +14 -13
- package/dist/optics/diffraction.js +14 -10
- package/dist/optics/diffraction.js.map +1 -1
- package/dist/optics/focus-breathing.d.ts +88 -27
- package/dist/optics/focus-breathing.js +114 -23
- package/dist/optics/focus-breathing.js.map +1 -1
- package/dist/optics/focus-state.d.ts +18 -18
- package/dist/optics/focus-state.js +21 -15
- package/dist/optics/focus-state.js.map +1 -1
- package/dist/optics/front-of-lens-filter.d.ts +45 -14
- package/dist/optics/front-of-lens-filter.js +259 -88
- package/dist/optics/front-of-lens-filter.js.map +1 -1
- package/dist/optics/illumination-vignetting.d.ts +16 -17
- package/dist/optics/illumination-vignetting.js +40 -17
- package/dist/optics/illumination-vignetting.js.map +1 -1
- package/dist/optics/irradiance-convolution.d.ts +59 -0
- package/dist/optics/irradiance-convolution.js +138 -0
- package/dist/optics/irradiance-convolution.js.map +1 -0
- package/dist/optics/lateral-chromatic-aberration.d.ts +33 -30
- package/dist/optics/lateral-chromatic-aberration.js +33 -23
- package/dist/optics/lateral-chromatic-aberration.js.map +1 -1
- package/dist/optics/lens-psf-kernels.d.ts +89 -0
- package/dist/optics/lens-psf-kernels.js +175 -0
- package/dist/optics/lens-psf-kernels.js.map +1 -0
- package/dist/optics/lens-psf-profile.d.ts +78 -46
- package/dist/optics/lens-psf-profile.js +335 -124
- package/dist/optics/lens-psf-profile.js.map +1 -1
- package/dist/optics/longitudinal-chromatic-aberration.d.ts +102 -0
- package/dist/optics/longitudinal-chromatic-aberration.js +210 -0
- package/dist/optics/longitudinal-chromatic-aberration.js.map +1 -0
- package/dist/optics/polygon-diffraction.d.ts +80 -23
- package/dist/optics/polygon-diffraction.js +130 -25
- package/dist/optics/polygon-diffraction.js.map +1 -1
- package/dist/optics/profile-contract.d.ts +5 -6
- package/dist/optics/profile-contract.js +14 -11
- package/dist/optics/profile-contract.js.map +1 -1
- package/dist/optics/psf-foundation.d.ts +23 -23
- package/dist/optics/psf-foundation.js +24 -21
- package/dist/optics/psf-foundation.js.map +1 -1
- package/dist/optics/pupil-vignetting.d.ts +118 -0
- package/dist/optics/pupil-vignetting.js +264 -0
- package/dist/optics/pupil-vignetting.js.map +1 -0
- package/dist/optics/radial-distortion.d.ts +34 -33
- package/dist/optics/radial-distortion.js +37 -30
- package/dist/optics/radial-distortion.js.map +1 -1
- package/dist/optics/scene-to-sensor-irradiance.d.ts +47 -33
- package/dist/optics/scene-to-sensor-irradiance.js +73 -45
- package/dist/optics/scene-to-sensor-irradiance.js.map +1 -1
- package/dist/optics/scene-to-sensor-quadrature.d.ts +23 -18
- package/dist/optics/scene-to-sensor-quadrature.js +16 -11
- package/dist/optics/scene-to-sensor-quadrature.js.map +1 -1
- package/dist/optics/sensor-aperture-rays.d.ts +20 -4
- package/dist/optics/sensor-aperture-rays.js +32 -14
- package/dist/optics/sensor-aperture-rays.js.map +1 -1
- package/dist/optics/sensor-environment-query.d.ts +81 -16
- package/dist/optics/sensor-environment-query.js +145 -12
- package/dist/optics/sensor-environment-query.js.map +1 -1
- package/dist/optics/sensor-psf-quadrature.d.ts +12 -10
- package/dist/optics/sensor-psf-quadrature.js +18 -11
- package/dist/optics/sensor-psf-quadrature.js.map +1 -1
- package/dist/optics/sensor-psf-support.d.ts +8 -6
- package/dist/optics/sensor-psf-support.js +8 -5
- package/dist/optics/sensor-psf-support.js.map +1 -1
- package/dist/optics/stray-light.d.ts +22 -19
- package/dist/optics/stray-light.js +18 -12
- package/dist/optics/stray-light.js.map +1 -1
- package/dist/optics/thin-lens.d.ts +10 -9
- package/dist/optics/thin-lens.js +12 -8
- package/dist/optics/thin-lens.js.map +1 -1
- package/dist/optics/zernike-wavefront.d.ts +154 -0
- package/dist/optics/zernike-wavefront.js +352 -0
- package/dist/optics/zernike-wavefront.js.map +1 -0
- package/dist/output/capture-corrected-sdr.d.ts +16 -8
- package/dist/output/capture-corrected-sdr.js +16 -8
- package/dist/output/capture-corrected-sdr.js.map +1 -1
- package/dist/output/capture-geometry.d.ts +34 -36
- package/dist/output/capture-geometry.js +52 -32
- package/dist/output/capture-geometry.js.map +1 -1
- package/dist/output/capture-sdr.d.ts +7 -6
- package/dist/output/capture-sdr.js +11 -8
- package/dist/output/capture-sdr.js.map +1 -1
- package/dist/output/crop.d.ts +22 -6
- package/dist/output/crop.js +40 -6
- package/dist/output/crop.js.map +1 -1
- package/dist/output/geometric-transforms.d.ts +60 -23
- package/dist/output/geometric-transforms.js +111 -24
- package/dist/output/geometric-transforms.js.map +1 -1
- package/dist/output/lens-corrections.d.ts +27 -19
- package/dist/output/lens-corrections.js +29 -13
- package/dist/output/lens-corrections.js.map +1 -1
- package/dist/output/native-capture-sdr.d.ts +71 -16
- package/dist/output/native-capture-sdr.js +190 -33
- package/dist/output/native-capture-sdr.js.map +1 -1
- package/dist/output/png-encoder.d.ts +65 -0
- package/dist/output/png-encoder.js +461 -0
- package/dist/output/png-encoder.js.map +1 -0
- package/dist/output/print-contrast-reference.d.ts +10 -9
- package/dist/output/print-contrast-reference.js +10 -8
- package/dist/output/print-contrast-reference.js.map +1 -1
- package/dist/output/print-detail.d.ts +18 -17
- package/dist/output/print-detail.js +12 -10
- package/dist/output/print-detail.js.map +1 -1
- package/dist/output/print-jpeg.d.ts +26 -5
- package/dist/output/print-jpeg.js +117 -50
- package/dist/output/print-jpeg.js.map +1 -1
- package/dist/output/print-plan.d.ts +19 -19
- package/dist/output/print-plan.js +11 -10
- package/dist/output/print-plan.js.map +1 -1
- package/dist/output/print-region-statistics.d.ts +14 -15
- package/dist/output/print-region-statistics.js +11 -11
- package/dist/output/print-region-statistics.js.map +1 -1
- package/dist/output/sdr-rendering.d.ts +48 -10
- package/dist/output/sdr-rendering.js +114 -25
- package/dist/output/sdr-rendering.js.map +1 -1
- package/dist/output/subject-framing-crop.d.ts +6 -10
- package/dist/output/subject-framing-crop.js +23 -13
- package/dist/output/subject-framing-crop.js.map +1 -1
- package/dist/processing/demosaic.d.ts +90 -0
- package/dist/processing/demosaic.js +275 -0
- package/dist/processing/demosaic.js.map +1 -0
- package/dist/processing/denoise.d.ts +68 -0
- package/dist/processing/denoise.js +214 -0
- package/dist/processing/denoise.js.map +1 -0
- package/dist/processing/focus-stacking.d.ts +17 -0
- package/dist/processing/focus-stacking.js +80 -0
- package/dist/processing/focus-stacking.js.map +1 -0
- package/dist/processing/hdr.d.ts +54 -0
- package/dist/processing/hdr.js +172 -0
- package/dist/processing/hdr.js.map +1 -0
- package/dist/processing/image-ops.d.ts +66 -0
- package/dist/processing/image-ops.js +192 -0
- package/dist/processing/image-ops.js.map +1 -0
- package/dist/processing/panorama.d.ts +51 -0
- package/dist/processing/panorama.js +305 -0
- package/dist/processing/panorama.js.map +1 -0
- package/dist/processing/processing-task.d.ts +85 -0
- package/dist/processing/processing-task.js +164 -0
- package/dist/processing/processing-task.js.map +1 -0
- package/dist/processing/tone-mapping.d.ts +69 -0
- package/dist/processing/tone-mapping.js +310 -0
- package/dist/processing/tone-mapping.js.map +1 -0
- package/dist/schema/camera.d.ts +5 -4
- package/dist/schema/illumination-spectral.d.ts +13 -19
- package/dist/schema/illumination-spectral.js +23 -19
- package/dist/schema/illumination-spectral.js.map +1 -1
- package/dist/schema/illumination-temporal.d.ts +12 -15
- package/dist/schema/illumination-temporal.js +43 -28
- package/dist/schema/illumination-temporal.js.map +1 -1
- package/dist/schema/illumination.d.ts +5 -4
- package/dist/schema/illumination.js +55 -20
- package/dist/schema/illumination.js.map +1 -1
- package/dist/schema/scene-radiance-temporal.d.ts +9 -11
- package/dist/schema/scene-radiance-temporal.js +26 -23
- package/dist/schema/scene-radiance-temporal.js.map +1 -1
- package/dist/schema/scene-radiance.d.ts +17 -17
- package/dist/schema/scene-radiance.js +56 -34
- package/dist/schema/scene-radiance.js.map +1 -1
- package/dist/schema/scene.d.ts +14 -13
- package/dist/schema/validation.d.ts +0 -1
- package/dist/schema/validation.js +17 -15
- package/dist/schema/validation.js.map +1 -1
- package/dist/sensor/accumulated-charge.d.ts +45 -64
- package/dist/sensor/accumulated-charge.js +41 -47
- package/dist/sensor/accumulated-charge.js.map +1 -1
- package/dist/sensor/architecture.d.ts +22 -25
- package/dist/sensor/architecture.js +17 -16
- package/dist/sensor/architecture.js.map +1 -1
- package/dist/sensor/camera-saturation-capacity.d.ts +21 -28
- package/dist/sensor/camera-saturation-capacity.js +36 -34
- package/dist/sensor/camera-saturation-capacity.js.map +1 -1
- package/dist/sensor/capture-color-sampling-binding.d.ts +46 -51
- package/dist/sensor/capture-color-sampling-binding.js +39 -41
- package/dist/sensor/capture-color-sampling-binding.js.map +1 -1
- package/dist/sensor/capture-mode-timing.d.ts +8 -9
- package/dist/sensor/capture-mode-timing.js +24 -21
- package/dist/sensor/capture-mode-timing.js.map +1 -1
- package/dist/sensor/capture-mode.d.ts +28 -30
- package/dist/sensor/capture-mode.js +33 -31
- package/dist/sensor/capture-mode.js.map +1 -1
- package/dist/sensor/color-sampling.d.ts +30 -33
- package/dist/sensor/color-sampling.js +32 -37
- package/dist/sensor/color-sampling.js.map +1 -1
- package/dist/sensor/constant-rate-temporal-integration.d.ts +19 -23
- package/dist/sensor/constant-rate-temporal-integration.js +28 -26
- package/dist/sensor/constant-rate-temporal-integration.js.map +1 -1
- package/dist/sensor/dark-current.d.ts +53 -49
- package/dist/sensor/dark-current.js +87 -46
- package/dist/sensor/dark-current.js.map +1 -1
- package/dist/sensor/environment-photo-signal.d.ts +71 -30
- package/dist/sensor/environment-photo-signal.js +127 -46
- package/dist/sensor/environment-photo-signal.js.map +1 -1
- package/dist/sensor/eqe-electron-rate.d.ts +14 -13
- package/dist/sensor/eqe-electron-rate.js +34 -14
- package/dist/sensor/eqe-electron-rate.js.map +1 -1
- package/dist/sensor/eqe-local-exposure.d.ts +24 -24
- package/dist/sensor/eqe-local-exposure.js +15 -11
- package/dist/sensor/eqe-local-exposure.js.map +1 -1
- package/dist/sensor/eqe-temporal-exposure.d.ts +11 -11
- package/dist/sensor/eqe-temporal-exposure.js +15 -10
- package/dist/sensor/eqe-temporal-exposure.js.map +1 -1
- package/dist/sensor/exposure-window.d.ts +48 -34
- package/dist/sensor/exposure-window.js +77 -36
- package/dist/sensor/exposure-window.js.map +1 -1
- package/dist/sensor/fixed-pattern-noise.d.ts +108 -0
- package/dist/sensor/fixed-pattern-noise.js +166 -0
- package/dist/sensor/fixed-pattern-noise.js.map +1 -0
- package/dist/sensor/iso-gain.d.ts +44 -0
- package/dist/sensor/iso-gain.js +119 -0
- package/dist/sensor/iso-gain.js.map +1 -0
- package/dist/sensor/iso-signal-chain.d.ts +25 -48
- package/dist/sensor/iso-signal-chain.js +52 -66
- package/dist/sensor/iso-signal-chain.js.map +1 -1
- package/dist/sensor/local-exposure-binding.d.ts +21 -21
- package/dist/sensor/local-exposure-binding.js +22 -18
- package/dist/sensor/local-exposure-binding.js.map +1 -1
- package/dist/sensor/optical-stack.d.ts +36 -40
- package/dist/sensor/optical-stack.js +34 -37
- package/dist/sensor/optical-stack.js.map +1 -1
- package/dist/sensor/photon-energy.d.ts +22 -28
- package/dist/sensor/photon-energy.js +42 -34
- package/dist/sensor/photon-energy.js.map +1 -1
- package/dist/sensor/physical-charge-capacity.d.ts +20 -30
- package/dist/sensor/physical-charge-capacity.js +35 -36
- package/dist/sensor/physical-charge-capacity.js.map +1 -1
- package/dist/sensor/pixel-pitch.d.ts +2 -3
- package/dist/sensor/pixel-pitch.js +4 -2
- package/dist/sensor/pixel-pitch.js.map +1 -1
- package/dist/sensor/radiometry-readiness.d.ts +13 -15
- package/dist/sensor/radiometry-readiness.js +20 -17
- package/dist/sensor/radiometry-readiness.js.map +1 -1
- package/dist/sensor/raw-readout.d.ts +173 -83
- package/dist/sensor/raw-readout.js +425 -160
- package/dist/sensor/raw-readout.js.map +1 -1
- package/dist/sensor/raw-reconstruction.d.ts +112 -44
- package/dist/sensor/raw-reconstruction.js +200 -47
- package/dist/sensor/raw-reconstruction.js.map +1 -1
- package/dist/sensor/readout-exposure-linkage.d.ts +103 -34
- package/dist/sensor/readout-exposure-linkage.js +125 -27
- package/dist/sensor/readout-exposure-linkage.js.map +1 -1
- package/dist/sensor/readout-timing.d.ts +43 -44
- package/dist/sensor/readout-timing.js +38 -30
- package/dist/sensor/readout-timing.js.map +1 -1
- package/dist/sensor/response-application-compatibility.d.ts +21 -28
- package/dist/sensor/response-application-compatibility.js +35 -34
- package/dist/sensor/response-application-compatibility.js.map +1 -1
- package/dist/sensor/response-operating-range.d.ts +26 -35
- package/dist/sensor/response-operating-range.js +40 -39
- package/dist/sensor/response-operating-range.js.map +1 -1
- package/dist/sensor/responsivity-photocurrent.d.ts +21 -29
- package/dist/sensor/responsivity-photocurrent.js +57 -40
- package/dist/sensor/responsivity-photocurrent.js.map +1 -1
- package/dist/sensor/sampling-aperture.d.ts +21 -25
- package/dist/sensor/sampling-aperture.js +29 -28
- package/dist/sensor/sampling-aperture.js.map +1 -1
- package/dist/sensor/scene-eqe-temporal-exposure.d.ts +14 -12
- package/dist/sensor/scene-eqe-temporal-exposure.js +13 -8
- package/dist/sensor/scene-eqe-temporal-exposure.js.map +1 -1
- package/dist/sensor/sensor-geometry.d.ts +28 -32
- package/dist/sensor/sensor-geometry.js +35 -20
- package/dist/sensor/sensor-geometry.js.map +1 -1
- package/dist/sensor/signal-noise.d.ts +14 -16
- package/dist/sensor/signal-noise.js +15 -13
- package/dist/sensor/signal-noise.js.map +1 -1
- package/dist/sensor/spatial-sample-reduction.d.ts +45 -60
- package/dist/sensor/spatial-sample-reduction.js +39 -48
- package/dist/sensor/spatial-sample-reduction.js.map +1 -1
- package/dist/sensor/spatial-sampling-quadrature.d.ts +46 -54
- package/dist/sensor/spatial-sampling-quadrature.js +31 -36
- package/dist/sensor/spatial-sampling-quadrature.js.map +1 -1
- package/dist/sensor/spatio-spectral-reduction.d.ts +32 -42
- package/dist/sensor/spatio-spectral-reduction.js +24 -29
- package/dist/sensor/spatio-spectral-reduction.js.map +1 -1
- package/dist/sensor/spectral-coverage.d.ts +6 -9
- package/dist/sensor/spectral-coverage.js +9 -6
- package/dist/sensor/spectral-coverage.js.map +1 -1
- package/dist/sensor/spectral-quadrature.d.ts +46 -60
- package/dist/sensor/spectral-quadrature.js +38 -48
- package/dist/sensor/spectral-quadrature.js.map +1 -1
- package/dist/sensor/spectral-response.d.ts +53 -41
- package/dist/sensor/spectral-response.js +80 -47
- package/dist/sensor/spectral-response.js.map +1 -1
- package/dist/sensor/stochastic-seed.d.ts +50 -0
- package/dist/sensor/stochastic-seed.js +123 -0
- package/dist/sensor/stochastic-seed.js.map +1 -0
- package/dist/sensor/temporal-eqe-sum.d.ts +2 -4
- package/dist/sensor/temporal-eqe-sum.js +5 -6
- package/dist/sensor/temporal-eqe-sum.js.map +1 -1
- package/dist/sensor/temporal-photo-signal.d.ts +5 -6
- package/dist/sensor/temporal-photo-signal.js +11 -10
- package/dist/sensor/temporal-photo-signal.js.map +1 -1
- package/dist/sensor/temporal-sample-binding.d.ts +1 -2
- package/dist/sensor/temporal-sample-binding.js +3 -3
- package/dist/sensor/temporal-sample-binding.js.map +1 -1
- package/dist/simulation/poc-simulation.d.ts +16 -16
- package/dist/simulation/poc-simulation.js +20 -15
- package/dist/simulation/poc-simulation.js.map +1 -1
- package/dist/stabilization/camera-shake.d.ts +42 -18
- package/dist/stabilization/camera-shake.js +43 -20
- package/dist/stabilization/camera-shake.js.map +1 -1
- package/dist/stabilization/system.d.ts +44 -41
- package/dist/stabilization/system.js +196 -108
- package/dist/stabilization/system.js.map +1 -1
- package/docs/AGENT_GUIDE.md +183 -0
- package/docs/API_REFERENCE.md +777 -2
- package/docs/QUICK_START.md +663 -0
- package/docs/USAGE.md +1719 -714
- package/docs/api/camera-equivalent-focal-length.md +6 -7
- package/docs/api/camera-field-of-view.md +16 -8
- package/docs/api/camera-lens-projection.md +246 -0
- package/docs/api/camera-projected-object-size.md +6 -5
- package/docs/api/capture-capture-export-metadata.md +10 -10
- package/docs/api/capture-dng-import.md +134 -0
- package/docs/api/capture-environment-raw-producer.md +17 -11
- package/docs/api/capture-export-jpeg.md +16 -0
- package/docs/api/capture-focus-control.md +25 -47
- package/docs/api/capture-linear-encoding.md +21 -12
- package/docs/api/capture-lossless-jpeg.md +49 -0
- package/docs/api/capture-native-environment-optical-stage.md +75 -0
- package/docs/api/capture-native-environment-raw.md +161 -4
- package/docs/api/capture-native-raw-development.md +69 -8
- package/docs/api/capture-native-raw-dng.md +84 -0
- package/docs/api/capture-native-raw.md +21 -10
- package/docs/api/capture-packed-sensor-raw.md +156 -0
- package/docs/api/capture-photographic-export.md +69 -31
- package/docs/api/capture-raw-frame-reconstruction.md +8 -8
- package/docs/api/capture-raw-white-level.md +37 -0
- package/docs/api/capture-release-sequence.md +6 -7
- package/docs/api/capture-sensor-raw-frame.md +6 -6
- package/docs/api/capture-sensor-raw-producer.md +17 -11
- package/docs/api/capture-simulated-capture.md +15 -15
- package/docs/api/color-camera-color-matrix.md +103 -0
- package/docs/api/color-capture-color.md +22 -11
- package/docs/api/color-chromatic-adaptation.md +82 -0
- package/docs/api/color-color-difference.md +134 -0
- package/docs/api/color-color-matching-functions.md +259 -0
- package/docs/api/color-colorimetry-math.md +54 -0
- package/docs/api/color-gamut-mapping.md +72 -0
- package/docs/api/color-illuminants.md +280 -0
- package/docs/api/color-rgb-color-spaces.md +151 -0
- package/docs/api/color-sensor-color-development.md +27 -0
- package/docs/api/color-srgb-icc.md +2 -4
- package/docs/api/color-white-balance.md +95 -19
- package/docs/api/composition-image-formation-plan.md +124 -95
- package/docs/api/composition-plan-consumer.md +7 -7
- package/docs/api/core-calculation-result.md +18 -14
- package/docs/api/core-configuration-error.md +1 -1
- package/docs/api/core-image-formation.md +7 -7
- package/docs/api/core-scientific-assurance.md +12 -10
- package/docs/api/core-spectral-composition.md +14 -14
- package/docs/api/core-spectral.md +6 -6
- package/docs/api/core-validation.md +3 -3
- package/docs/api/core-version.md +7 -6
- package/docs/api/equipment-exposure-capabilities.md +11 -10
- package/docs/api/equipment-generic-tier-assets.md +7 -2
- package/docs/api/equipment-generic-tier-presets.md +6 -6
- package/docs/api/equipment-iso-capabilities.md +18 -18
- package/docs/api/equipment-metering-capabilities.md +6 -6
- package/docs/api/equipment-release-capabilities.md +4 -4
- package/docs/api/exports.json +2253 -3
- package/docs/api/exposure-exposure-duration-control.md +9 -9
- package/docs/api/exposure-exposure-mode-resolver.md +35 -31
- package/docs/api/exposure-exposure.md +10 -10
- package/docs/api/exposure-flash-ttl.md +182 -0
- package/docs/api/exposure-flash.md +183 -28
- package/docs/api/exposure-metering-scene-radiance.md +11 -10
- package/docs/api/exposure-metering-target.md +9 -8
- package/docs/api/exposure-metering-temporal.md +8 -8
- package/docs/api/exposure-metering.md +69 -9
- package/docs/api/exposure-program-line.md +6 -5
- package/docs/api/facade-chart-radiance-batch.md +96 -0
- package/docs/api/facade-chart-scenes.md +240 -0
- package/docs/api/facade-scene-radiance.md +122 -0
- package/docs/api/facade-simulate-capture.md +397 -0
- package/docs/api/gpu-image-kernel-accelerator.md +157 -0
- package/docs/api/gpu-image-kernel-execution.md +152 -0
- package/docs/api/motion-camera-rotation.md +43 -26
- package/docs/api/motion-capture-rotation-inverse-mapping.md +24 -23
- package/docs/api/motion-capture-rotation-temporal-quadrature.md +22 -22
- package/docs/api/motion-capture-rotation-trajectory.md +15 -15
- package/docs/api/motion-capture-translation-parallax-temporal-quadrature.md +15 -14
- package/docs/api/motion-extended-object-projection.md +10 -8
- package/docs/api/motion-projected-motion.md +8 -8
- package/docs/api/motion-temporal-exposure-sum.md +98 -0
- package/docs/api/motion-video-sequence.md +159 -0
- package/docs/api/optics-aperture.md +8 -8
- package/docs/api/optics-atmospheric-haze.md +104 -0
- package/docs/api/optics-brown-conrady-distortion.md +123 -0
- package/docs/api/optics-circle-of-confusion.md +5 -4
- package/docs/api/optics-complex-pupil-psf.md +57 -16
- package/docs/api/optics-depth-of-field.md +12 -6
- package/docs/api/optics-diffraction-psf-profile.md +96 -0
- package/docs/api/optics-diffraction.md +8 -7
- package/docs/api/optics-focus-breathing.md +104 -16
- package/docs/api/optics-focus-state.md +9 -10
- package/docs/api/optics-front-of-lens-filter.md +72 -14
- package/docs/api/optics-illumination-vignetting.md +10 -10
- package/docs/api/optics-irradiance-convolution.md +95 -0
- package/docs/api/optics-lateral-chromatic-aberration.md +22 -21
- package/docs/api/optics-lens-psf-kernels.md +72 -0
- package/docs/api/optics-lens-psf-profile.md +48 -26
- package/docs/api/optics-longitudinal-chromatic-aberration.md +128 -0
- package/docs/api/optics-polygon-diffraction.md +78 -13
- package/docs/api/optics-profile-contract.md +4 -4
- package/docs/api/optics-psf-foundation.md +12 -12
- package/docs/api/optics-pupil-vignetting.md +132 -0
- package/docs/api/optics-radial-distortion.md +12 -12
- package/docs/api/optics-scene-to-sensor-irradiance.md +25 -14
- package/docs/api/optics-scene-to-sensor-quadrature.md +15 -12
- package/docs/api/optics-sensor-aperture-rays.md +3 -2
- package/docs/api/optics-sensor-environment-query.md +52 -9
- package/docs/api/optics-sensor-psf-quadrature.md +13 -10
- package/docs/api/optics-stray-light.md +12 -11
- package/docs/api/optics-thin-lens.md +4 -3
- package/docs/api/optics-zernike-wavefront.md +229 -0
- package/docs/api/output-capture-corrected-sdr.md +10 -7
- package/docs/api/output-capture-geometry.md +35 -36
- package/docs/api/output-capture-sdr.md +4 -4
- package/docs/api/output-crop.md +7 -4
- package/docs/api/output-geometric-transforms.md +65 -19
- package/docs/api/output-lens-corrections.md +17 -15
- package/docs/api/output-native-capture-sdr.md +26 -13
- package/docs/api/output-png-encoder.md +105 -0
- package/docs/api/output-print-contrast-reference.md +8 -8
- package/docs/api/output-print-detail.md +14 -14
- package/docs/api/output-print-jpeg.md +22 -5
- package/docs/api/output-print-plan.md +18 -18
- package/docs/api/output-print-region-statistics.md +14 -14
- package/docs/api/output-sdr-rendering.md +52 -10
- package/docs/api/output-subject-framing-crop.md +5 -6
- package/docs/api/processing-demosaic.md +120 -0
- package/docs/api/processing-denoise.md +148 -0
- package/docs/api/processing-focus-stacking.md +41 -0
- package/docs/api/processing-hdr.md +113 -0
- package/docs/api/processing-panorama.md +82 -0
- package/docs/api/processing-processing-task.md +107 -0
- package/docs/api/processing-tone-mapping.md +142 -0
- package/docs/api/schema-camera.md +6 -4
- package/docs/api/schema-illumination-spectral.md +10 -11
- package/docs/api/schema-illumination-temporal.md +13 -15
- package/docs/api/schema-illumination.md +4 -4
- package/docs/api/schema-scene-radiance-temporal.md +10 -11
- package/docs/api/schema-scene-radiance.md +18 -17
- package/docs/api/schema-scene.md +9 -9
- package/docs/api/schema-validation.md +1 -1
- package/docs/api/sensor-accumulated-charge.md +12 -20
- package/docs/api/sensor-architecture.md +15 -16
- package/docs/api/sensor-camera-saturation-capacity.md +9 -11
- package/docs/api/sensor-capture-color-sampling-binding.md +47 -51
- package/docs/api/sensor-capture-mode-timing.md +9 -9
- package/docs/api/sensor-capture-mode.md +29 -30
- package/docs/api/sensor-color-sampling.md +31 -33
- package/docs/api/sensor-constant-rate-temporal-integration.md +10 -11
- package/docs/api/sensor-dark-current.md +30 -14
- package/docs/api/sensor-environment-photo-signal.md +13 -6
- package/docs/api/sensor-eqe-electron-rate.md +9 -8
- package/docs/api/sensor-eqe-local-exposure.md +18 -17
- package/docs/api/sensor-eqe-temporal-exposure.md +12 -11
- package/docs/api/sensor-exposure-window.md +24 -24
- package/docs/api/sensor-fixed-pattern-noise.md +104 -0
- package/docs/api/sensor-iso-gain.md +63 -0
- package/docs/api/sensor-iso-signal-chain.md +13 -22
- package/docs/api/sensor-local-exposure-binding.md +12 -13
- package/docs/api/sensor-optical-stack.md +37 -40
- package/docs/api/sensor-photon-energy.md +10 -11
- package/docs/api/sensor-physical-charge-capacity.md +8 -13
- package/docs/api/sensor-pixel-pitch.md +1 -1
- package/docs/api/sensor-radiometry-readiness.md +9 -9
- package/docs/api/sensor-raw-readout.md +118 -52
- package/docs/api/sensor-raw-reconstruction.md +97 -20
- package/docs/api/sensor-readout-exposure-linkage.md +120 -24
- package/docs/api/sensor-readout-timing.md +33 -35
- package/docs/api/sensor-response-application-compatibility.md +9 -11
- package/docs/api/sensor-response-operating-range.md +14 -18
- package/docs/api/sensor-responsivity-photocurrent.md +9 -12
- package/docs/api/sensor-sampling-aperture.md +22 -25
- package/docs/api/sensor-scene-eqe-temporal-exposure.md +9 -8
- package/docs/api/sensor-sensor-geometry.md +23 -24
- package/docs/api/sensor-signal-noise.md +10 -10
- package/docs/api/sensor-spatial-sample-reduction.md +27 -30
- package/docs/api/sensor-spatial-sampling-quadrature.md +37 -39
- package/docs/api/sensor-spatio-spectral-reduction.md +27 -29
- package/docs/api/sensor-spectral-coverage.md +5 -5
- package/docs/api/sensor-spectral-quadrature.md +33 -35
- package/docs/api/sensor-spectral-response.md +28 -16
- package/docs/api/sensor-temporal-photo-signal.md +6 -6
- package/docs/api/simulation-poc-simulation.md +17 -16
- package/docs/api/stabilization-camera-shake.md +29 -10
- package/docs/api/stabilization-system.md +25 -21
- package/docs/examples/production-request.json +3821 -2157
- package/docs/examples/simulate-capture.mjs +14 -0
- package/llms.txt +35 -0
- package/package.json +32 -11
- package/AGENTS.md +0 -674
- package/CONTRIBUTING.md +0 -76
- package/DCO +0 -33
- package/dist/camera/equivalent-focal-length.d.ts.map +0 -1
- package/dist/camera/field-of-view.d.ts.map +0 -1
- package/dist/camera/projected-object-size.d.ts.map +0 -1
- package/dist/capture/capture-export-metadata.d.ts.map +0 -1
- package/dist/capture/environment-raw-producer.d.ts.map +0 -1
- package/dist/capture/export-jpeg.d.ts.map +0 -1
- package/dist/capture/export-tiff.d.ts.map +0 -1
- package/dist/capture/focus-control.d.ts.map +0 -1
- package/dist/capture/linear-encoding.d.ts.map +0 -1
- package/dist/capture/native-environment-raw.d.ts.map +0 -1
- package/dist/capture/native-raw-development.d.ts.map +0 -1
- package/dist/capture/native-raw.d.ts.map +0 -1
- package/dist/capture/photographic-export.d.ts.map +0 -1
- package/dist/capture/raw-frame-limits.d.ts.map +0 -1
- package/dist/capture/raw-frame-reconstruction.d.ts.map +0 -1
- package/dist/capture/release-sequence.d.ts.map +0 -1
- package/dist/capture/sensor-raw-frame.d.ts.map +0 -1
- package/dist/capture/sensor-raw-producer.d.ts.map +0 -1
- package/dist/capture/simulated-capture.d.ts.map +0 -1
- package/dist/color/capture-color.d.ts.map +0 -1
- package/dist/color/sensor-color-development.d.ts.map +0 -1
- package/dist/color/srgb-icc.d.ts.map +0 -1
- package/dist/color/srgb-transfer.d.ts.map +0 -1
- package/dist/color/white-balance.d.ts.map +0 -1
- package/dist/composition/image-formation-plan.d.ts.map +0 -1
- package/dist/composition/plan-consumer.d.ts.map +0 -1
- package/dist/core/calculation-result.d.ts.map +0 -1
- package/dist/core/canonical-json.d.ts.map +0 -1
- package/dist/core/configuration-error.d.ts.map +0 -1
- package/dist/core/evidence-provenance.d.ts.map +0 -1
- package/dist/core/image-formation.d.ts.map +0 -1
- package/dist/core/owned-data.d.ts.map +0 -1
- package/dist/core/record-validation.d.ts.map +0 -1
- package/dist/core/scientific-assurance.d.ts.map +0 -1
- package/dist/core/spectral-composition.d.ts.map +0 -1
- package/dist/core/spectral.d.ts.map +0 -1
- package/dist/core/validation.d.ts.map +0 -1
- package/dist/core/version.d.ts.map +0 -1
- package/dist/equipment/exposure-capabilities.d.ts.map +0 -1
- package/dist/equipment/generic-tier-assets.d.ts.map +0 -1
- package/dist/equipment/generic-tier-presets.d.ts.map +0 -1
- package/dist/equipment/iso-capabilities.d.ts.map +0 -1
- package/dist/equipment/metering-capabilities.d.ts.map +0 -1
- package/dist/equipment/release-capabilities.d.ts.map +0 -1
- package/dist/exposure/exposure-duration-control.d.ts.map +0 -1
- package/dist/exposure/exposure-mode-resolver.d.ts.map +0 -1
- package/dist/exposure/exposure.d.ts.map +0 -1
- package/dist/exposure/flash.d.ts.map +0 -1
- package/dist/exposure/metering-scene-radiance.d.ts.map +0 -1
- package/dist/exposure/metering-target.d.ts.map +0 -1
- package/dist/exposure/metering-temporal.d.ts.map +0 -1
- package/dist/exposure/metering.d.ts.map +0 -1
- package/dist/exposure/program-line.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/motion/camera-rotation.d.ts.map +0 -1
- package/dist/motion/capture-rotation-inverse-mapping.d.ts.map +0 -1
- package/dist/motion/capture-rotation-temporal-quadrature.d.ts.map +0 -1
- package/dist/motion/capture-rotation-trajectory.d.ts.map +0 -1
- package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts.map +0 -1
- package/dist/motion/extended-object-projection.d.ts.map +0 -1
- package/dist/motion/projected-motion.d.ts.map +0 -1
- package/dist/optics/aperture.d.ts.map +0 -1
- package/dist/optics/circle-of-confusion.d.ts.map +0 -1
- package/dist/optics/complex-pupil-psf.d.ts.map +0 -1
- package/dist/optics/depth-of-field.d.ts.map +0 -1
- package/dist/optics/diffraction.d.ts.map +0 -1
- package/dist/optics/focus-breathing.d.ts.map +0 -1
- package/dist/optics/focus-state.d.ts.map +0 -1
- package/dist/optics/front-of-lens-filter.d.ts.map +0 -1
- package/dist/optics/illumination-vignetting.d.ts.map +0 -1
- package/dist/optics/lateral-chromatic-aberration.d.ts.map +0 -1
- package/dist/optics/lens-psf-profile.d.ts.map +0 -1
- package/dist/optics/polygon-diffraction.d.ts.map +0 -1
- package/dist/optics/profile-contract.d.ts.map +0 -1
- package/dist/optics/psf-foundation.d.ts.map +0 -1
- package/dist/optics/radial-distortion.d.ts.map +0 -1
- package/dist/optics/scene-to-sensor-irradiance.d.ts.map +0 -1
- package/dist/optics/scene-to-sensor-quadrature.d.ts.map +0 -1
- package/dist/optics/sensor-aperture-rays.d.ts.map +0 -1
- package/dist/optics/sensor-environment-query.d.ts.map +0 -1
- package/dist/optics/sensor-psf-quadrature.d.ts.map +0 -1
- package/dist/optics/sensor-psf-support.d.ts.map +0 -1
- package/dist/optics/stray-light.d.ts.map +0 -1
- package/dist/optics/thin-lens.d.ts.map +0 -1
- package/dist/output/capture-corrected-sdr.d.ts.map +0 -1
- package/dist/output/capture-geometry.d.ts.map +0 -1
- package/dist/output/capture-sdr.d.ts.map +0 -1
- package/dist/output/crop.d.ts.map +0 -1
- package/dist/output/geometric-transforms.d.ts.map +0 -1
- package/dist/output/lens-corrections.d.ts.map +0 -1
- package/dist/output/native-capture-sdr.d.ts.map +0 -1
- package/dist/output/print-contrast-reference.d.ts.map +0 -1
- package/dist/output/print-detail.d.ts.map +0 -1
- package/dist/output/print-jpeg.d.ts.map +0 -1
- package/dist/output/print-plan.d.ts.map +0 -1
- package/dist/output/print-region-statistics.d.ts.map +0 -1
- package/dist/output/sdr-rendering.d.ts.map +0 -1
- package/dist/output/subject-framing-crop.d.ts.map +0 -1
- package/dist/schema/camera.d.ts.map +0 -1
- package/dist/schema/camera.js +0 -3
- package/dist/schema/camera.js.map +0 -1
- package/dist/schema/illumination-spectral.d.ts.map +0 -1
- package/dist/schema/illumination-temporal.d.ts.map +0 -1
- package/dist/schema/illumination.d.ts.map +0 -1
- package/dist/schema/scene-radiance-temporal.d.ts.map +0 -1
- package/dist/schema/scene-radiance.d.ts.map +0 -1
- package/dist/schema/scene.d.ts.map +0 -1
- package/dist/schema/scene.js +0 -3
- package/dist/schema/scene.js.map +0 -1
- package/dist/schema/validation.d.ts.map +0 -1
- package/dist/sensor/accumulated-charge.d.ts.map +0 -1
- package/dist/sensor/architecture.d.ts.map +0 -1
- package/dist/sensor/camera-saturation-capacity.d.ts.map +0 -1
- package/dist/sensor/capture-color-sampling-binding.d.ts.map +0 -1
- package/dist/sensor/capture-mode-timing.d.ts.map +0 -1
- package/dist/sensor/capture-mode.d.ts.map +0 -1
- package/dist/sensor/color-sampling.d.ts.map +0 -1
- package/dist/sensor/constant-rate-temporal-integration.d.ts.map +0 -1
- package/dist/sensor/dark-current.d.ts.map +0 -1
- package/dist/sensor/environment-photo-signal.d.ts.map +0 -1
- package/dist/sensor/eqe-electron-rate.d.ts.map +0 -1
- package/dist/sensor/eqe-local-exposure.d.ts.map +0 -1
- package/dist/sensor/eqe-temporal-exposure.d.ts.map +0 -1
- package/dist/sensor/exposure-window.d.ts.map +0 -1
- package/dist/sensor/iso-signal-chain.d.ts.map +0 -1
- package/dist/sensor/local-exposure-binding.d.ts.map +0 -1
- package/dist/sensor/optical-stack.d.ts.map +0 -1
- package/dist/sensor/photon-energy.d.ts.map +0 -1
- package/dist/sensor/physical-charge-capacity.d.ts.map +0 -1
- package/dist/sensor/pixel-pitch.d.ts.map +0 -1
- package/dist/sensor/radiometry-readiness.d.ts.map +0 -1
- package/dist/sensor/raw-readout.d.ts.map +0 -1
- package/dist/sensor/raw-reconstruction.d.ts.map +0 -1
- package/dist/sensor/readout-exposure-linkage.d.ts.map +0 -1
- package/dist/sensor/readout-timing.d.ts.map +0 -1
- package/dist/sensor/response-application-compatibility.d.ts.map +0 -1
- package/dist/sensor/response-operating-range.d.ts.map +0 -1
- package/dist/sensor/responsivity-photocurrent.d.ts.map +0 -1
- package/dist/sensor/sampling-aperture.d.ts.map +0 -1
- package/dist/sensor/scene-eqe-temporal-exposure.d.ts.map +0 -1
- package/dist/sensor/sensor-geometry.d.ts.map +0 -1
- package/dist/sensor/signal-noise.d.ts.map +0 -1
- package/dist/sensor/spatial-sample-reduction.d.ts.map +0 -1
- package/dist/sensor/spatial-sampling-quadrature.d.ts.map +0 -1
- package/dist/sensor/spatio-spectral-reduction.d.ts.map +0 -1
- package/dist/sensor/spectral-coverage.d.ts.map +0 -1
- package/dist/sensor/spectral-quadrature.d.ts.map +0 -1
- package/dist/sensor/spectral-response.d.ts.map +0 -1
- package/dist/sensor/temporal-eqe-sum.d.ts.map +0 -1
- package/dist/sensor/temporal-photo-signal.d.ts.map +0 -1
- package/dist/sensor/temporal-sample-binding.d.ts.map +0 -1
- package/dist/simulation/poc-simulation.d.ts.map +0 -1
- package/dist/stabilization/camera-shake.d.ts.map +0 -1
- package/dist/stabilization/system.d.ts.map +0 -1
- package/docs/API_STYLE.md +0 -235
- package/docs/ARCHITECTURE.md +0 -356
- package/docs/AUTOMATION_COORDINATION.md +0 -190
- package/docs/CAPTURE_COLOR.md +0 -25
- package/docs/CAPTURE_CORRECTED_SDR.md +0 -25
- package/docs/CAPTURE_EXPORT_METADATA.md +0 -27
- package/docs/CAPTURE_SDR.md +0 -22
- package/docs/DENSE_PUPIL_QUALIFICATION.md +0 -121
- package/docs/DEVELOPERS.md +0 -68
- package/docs/DIGITAL_OPTICS_FOUNDATION.md +0 -69
- package/docs/ENVIRONMENT_RAW_CAPTURE.md +0 -208
- package/docs/EXPORT_ACCEPTANCE.md +0 -133
- package/docs/GENERIC_TIER_PRESETS.md +0 -269
- package/docs/GEOMETRIC_PREPARATION_REUSE.md +0 -141
- package/docs/IMAGE_FORMATION.md +0 -247
- package/docs/LINEAR_CAPTURE_ENCODING.md +0 -25
- package/docs/MOTION_AND_SIGNAL.md +0 -250
- package/docs/NATIVE_CAPTURE_SDR.md +0 -70
- package/docs/NATIVE_CAPTURE_SDR_REVIEW.md +0 -37
- package/docs/NATIVE_CAPTURE_SDR_VALIDATION.md +0 -34
- package/docs/NATIVE_RAW_AND_PRINT.md +0 -54
- package/docs/NUMERICAL_CORRECTNESS.md +0 -191
- package/docs/PERFORMANCE_BASELINE.md +0 -56
- package/docs/PHOTOGRAPHIC_EXPORT.md +0 -206
- package/docs/PHYSICS_FOUNDATION.md +0 -426
- package/docs/POC_API.md +0 -278
- package/docs/POC_PROJECTION_PLATFORM_REFERENCE.md +0 -12
- package/docs/POC_PROJECTION_REUSE.md +0 -124
- package/docs/PRINT_195_196_REVIEW.md +0 -93
- package/docs/PRINT_196_ENGINE_ACCEPTANCE.md +0 -45
- package/docs/PRINT_CONTRAST_REFERENCE.md +0 -43
- package/docs/PRINT_DETAIL_ASSESSMENT.md +0 -81
- package/docs/PRINT_DETAIL_JPEG_EVIDENCE.md +0 -36
- package/docs/PRINT_DETAIL_SDR_EVIDENCE.md +0 -29
- package/docs/PRINT_DETAIL_VALIDATION.md +0 -36
- package/docs/PRINT_PLANNING.md +0 -75
- package/docs/PRINT_REGION_STATISTICS.md +0 -38
- package/docs/PROCESSED_OUTPUT.md +0 -157
- package/docs/PRODUCTION_COMPOSITION.md +0 -373
- package/docs/PRODUCTION_ENVIRONMENT_CAPTURE.md +0 -131
- package/docs/PROVENANCE.md +0 -115
- package/docs/PSF_FOUNDATION.md +0 -165
- package/docs/RAW_FRAME_ENVELOPE.md +0 -56
- package/docs/RAW_FRAME_RECONSTRUCTION.md +0 -30
- package/docs/RELEASE_1_0.md +0 -66
- package/docs/RELEASE_1_0_1.md +0 -61
- package/docs/RELEASE_1_1_0.md +0 -25
- package/docs/RELEASE_1_2_0.md +0 -51
- package/docs/RELEASE_1_3_0.md +0 -15
- package/docs/RELEASE_1_4_0.md +0 -23
- package/docs/RELEASE_1_5_0.md +0 -105
- package/docs/RELEASE_AUDIT.md +0 -39
- package/docs/SCENE_RADIANCE_AND_ILLUMINATION.md +0 -298
- package/docs/SCENE_SENSOR_QUADRATURE.md +0 -98
- package/docs/SCENE_SENSOR_TEMPORAL_EXPOSURE.md +0 -86
- package/docs/SCIENTIFIC_ASSURANCE.md +0 -280
- package/docs/SCIENTIFIC_CONFORMANCE.md +0 -83
- package/docs/SDR_RENDERING.md +0 -33
- package/docs/SENSOR_APERTURE_RAYS.md +0 -23
- package/docs/SENSOR_ENVIRONMENT_QUERY.md +0 -86
- package/docs/SENSOR_EQE_LOCAL_EXPOSURE.md +0 -104
- package/docs/SENSOR_EQE_TEMPORAL_EXPOSURE.md +0 -74
- package/docs/SENSOR_PSF_QUADRATURE.md +0 -90
- package/docs/SENSOR_RAW_FRAME.md +0 -20
- package/docs/SENSOR_RAW_PRODUCER.md +0 -77
- package/docs/SEPARABLE_EMISSION_DRAFT.md +0 -103
- package/docs/SIGNAL_CONFORMANCE.md +0 -23
- package/docs/SIMULATED_CAPTURE.md +0 -65
- package/docs/STABILIZATION.md +0 -234
- package/docs/TEMPORAL_PHOTO_RAW.md +0 -83
- package/docs/TIER_ACCEPTANCE.md +0 -129
- package/docs/TIER_PRESET_ACCEPTANCE.md +0 -59
- package/docs/V1_COMPOSITION_MAP.md +0 -123
- package/docs/V1_HELPER_REUSE_REVIEW.md +0 -60
- package/docs/V1_PERFORMANCE_DISPOSITION.md +0 -88
- package/docs/benchmarks/2026-10-01-main-baseline.json +0 -694
- package/docs/benchmarks/2026-10-02-geometric-preparation-reuse.json +0 -2190
- package/docs/benchmarks/2026-10-02-poc-projection-reuse.json +0 -2423
- package/docs/benchmarks/2026-10-02-v1-environment-gc-profile.json +0 -210
- package/docs/benchmarks/2026-10-02-v1-environment-ordinary.json +0 -187
- package/docs/benchmarks/2026-10-02-v1-geometry-gc-profile.json +0 -756
- package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-1.json +0 -711
- package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-2.json +0 -711
- package/docs/benchmarks/2026-10-02-v1-poc-gc-profile.json +0 -885
- package/docs/benchmarks/2026-10-02-v1-poc-ordinary-1.json +0 -868
- package/docs/benchmarks/2026-10-02-v1-poc-ordinary-2.json +0 -868
- package/docs/licenses/castleCSF-MIT.txt +0 -21
- package/docs/validation/dense-pupil-2026-10-06/pilot.jsonl +0 -6
- package/docs/validation/documentation-fragments.json +0 -212
- package/docs/validation/native-capture-sdr-darwin-arm64-node26-review.jsonl +0 -4
- package/docs/validation/native-capture-sdr-darwin-arm64.jsonl +0 -3
- package/docs/validation/native-raw-print-2026-10-04/fractional-asymmetric-crop.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/gray-ramp.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/linear-area-checker.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/manifest.json +0 -218
- package/docs/validation/native-raw-print-2026-10-04/megapixel-native.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/native-color.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel-validation.json +0 -9
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json +0 -29
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.codes.u16le.gz +0 -0
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.rgb.gz +0 -0
- package/docs/validation/native-raw-print-2026-10-04/srgb.icc +0 -0
- package/docs/validation/native-raw-print-2026-10-04/validation.json +0 -41
- package/docs/validation/print-196-candidate-capabilities.json +0 -28
- package/docs/validation/print-196-candidate-evidence.json +0 -356
- package/docs/validation/print-196-engine-acceptance.json +0 -81
- package/docs/validation/print-detail-capabilities.json +0 -103
- package/docs/validation/print-detail-jpeg-evidence.json +0 -116
- package/docs/validation/print-detail-sdr-evidence.json +0 -81
- package/docs/validation/release-audit-inventory.json +0 -1306
- package/docs/validation/tier-acceptance-report-v1.json +0 -2538
|
@@ -1,280 +0,0 @@
|
|
|
1
|
-
# Scientific Assurance and Uncertainty Composition
|
|
2
|
-
|
|
3
|
-
Release context: **package 1.2.0 candidate / root API 1.2.0**. Subsystem/model versions and dated introduction or measurement records below are independent historical identities; they are not distribution versions. See [developer navigation](DEVELOPERS.md) and [release contract](RELEASE_1_2_0.md).
|
|
4
|
-
|
|
5
|
-
Photivra keeps **scientific status**, **source evidence**, **uncertainty**, **limitations**, and **reproducibility identity** as related but distinct concepts.
|
|
6
|
-
|
|
7
|
-
This document defines the cross-engine composition contract used when independently valid scientific modules are combined into a higher-level result.
|
|
8
|
-
|
|
9
|
-
The public contract is exposed as:
|
|
10
|
-
|
|
11
|
-
- `SCIENTIFIC_ASSURANCE_CONTRACT_VERSION`;
|
|
12
|
-
- `ScientificAssuranceComponent`;
|
|
13
|
-
- `composeScientificAssurance()`;
|
|
14
|
-
- `ComposedScientificAssurance`.
|
|
15
|
-
|
|
16
|
-
The first contract version is `0.1.0`.
|
|
17
|
-
|
|
18
|
-
## Core rule
|
|
19
|
-
|
|
20
|
-
A composed result must not appear more scientifically certain than the required inputs that produced it.
|
|
21
|
-
|
|
22
|
-
Photivra therefore:
|
|
23
|
-
|
|
24
|
-
1. preserves each component's source/profile identity;
|
|
25
|
-
2. preserves component evidence records;
|
|
26
|
-
3. preserves component uncertainty declarations;
|
|
27
|
-
4. identifies the weakest required scientific status;
|
|
28
|
-
5. reports missing required evidence explicitly;
|
|
29
|
-
6. refuses to invent an aggregate numeric uncertainty without a defensible propagation rule.
|
|
30
|
-
|
|
31
|
-
A composition helper does **not** turn provenance into a confidence score.
|
|
32
|
-
|
|
33
|
-
## Scientific status
|
|
34
|
-
|
|
35
|
-
Composition-level status uses:
|
|
36
|
-
|
|
37
|
-
- `calibrated` — every required component supports calibrated status and all required evidence is present;
|
|
38
|
-
- `approximation` — at least one required component is an explicit approximation and none is unknown/missing required evidence;
|
|
39
|
-
- `unknown` — at least one required component has unknown status or required evidence is missing.
|
|
40
|
-
|
|
41
|
-
A downstream composition cannot promote an approximation to calibrated merely because a later mathematical operation is exact.
|
|
42
|
-
|
|
43
|
-
For example:
|
|
44
|
-
|
|
45
|
-
```text
|
|
46
|
-
calibrated radiance
|
|
47
|
-
× calibrated transmission
|
|
48
|
-
× approximate paraxial bridge
|
|
49
|
-
= approximation
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
If a required evidence-backed component declares no evidence, the composition status becomes `unknown` and the missing component ID remains visible.
|
|
53
|
-
|
|
54
|
-
## Evidence basis
|
|
55
|
-
|
|
56
|
-
Each component declares one basis:
|
|
57
|
-
|
|
58
|
-
- `evidence-backed-fact`;
|
|
59
|
-
- `photivra-model-assumption`;
|
|
60
|
-
- `not-applicable`.
|
|
61
|
-
|
|
62
|
-
An `evidence-backed-fact` requires evidence.
|
|
63
|
-
|
|
64
|
-
A Photivra model assumption may cite explanatory/reference evidence, but it remains explicitly a model assumption rather than being upgraded into a measured fact.
|
|
65
|
-
|
|
66
|
-
Evidence continues to use the existing `EvidenceProvenance` contract:
|
|
67
|
-
|
|
68
|
-
- source origin and reuse rights remain separate;
|
|
69
|
-
- factual-reference-only material is not reusable numeric data;
|
|
70
|
-
- reusable data requires a license;
|
|
71
|
-
- Photivra-owned evidence must originate from Photivra.
|
|
72
|
-
|
|
73
|
-
## Uncertainty states
|
|
74
|
-
|
|
75
|
-
Component uncertainty has explicit semantic states.
|
|
76
|
-
|
|
77
|
-
### Quantified relative uncertainty
|
|
78
|
-
|
|
79
|
-
```ts
|
|
80
|
-
{
|
|
81
|
-
kind: "relative",
|
|
82
|
-
fraction: 0.02,
|
|
83
|
-
basis: "calibration repeatability"
|
|
84
|
-
}
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
### Quantified absolute uncertainty
|
|
88
|
-
|
|
89
|
-
```ts
|
|
90
|
-
{
|
|
91
|
-
kind: "absolute",
|
|
92
|
-
plusMinus: 0.1,
|
|
93
|
-
unit: "mm",
|
|
94
|
-
basis: "fixture measurement"
|
|
95
|
-
}
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
### Existing CalculationQuality
|
|
99
|
-
|
|
100
|
-
Modules that already expose multiple quantified `CalculationQuality.uncertainty` components may preserve the whole validated quality object:
|
|
101
|
-
|
|
102
|
-
```ts
|
|
103
|
-
{
|
|
104
|
-
kind: "calculation-quality",
|
|
105
|
-
quality
|
|
106
|
-
}
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
This prevents a multi-component uncertainty description from being flattened into one invented scalar.
|
|
110
|
-
|
|
111
|
-
### Not quantified
|
|
112
|
-
|
|
113
|
-
```ts
|
|
114
|
-
{
|
|
115
|
-
kind: "not-quantified",
|
|
116
|
-
limitation: "Model error exists but no defensible bound is available."
|
|
117
|
-
}
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
**Not quantified does not mean zero.**
|
|
121
|
-
|
|
122
|
-
### Unknown
|
|
123
|
-
|
|
124
|
-
```ts
|
|
125
|
-
{
|
|
126
|
-
kind: "unknown",
|
|
127
|
-
limitation: "No uncertainty characterization is available."
|
|
128
|
-
}
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
Use `unknown` when the uncertainty state itself is unavailable, not merely when a known approximation lacks a numeric error bound.
|
|
132
|
-
|
|
133
|
-
### Not applicable
|
|
134
|
-
|
|
135
|
-
```ts
|
|
136
|
-
{
|
|
137
|
-
kind: "not-applicable",
|
|
138
|
-
reason: "This identity-only component has no numeric quantity."
|
|
139
|
-
}
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
## Composed uncertainty
|
|
143
|
-
|
|
144
|
-
`composeScientificAssurance()` preserves all component declarations but does not automatically calculate a combined numeric uncertainty.
|
|
145
|
-
|
|
146
|
-
Its aggregate uncertainty state is:
|
|
147
|
-
|
|
148
|
-
1. `unknown` if any required component uncertainty is unknown;
|
|
149
|
-
2. otherwise `not-quantified` if any required component has known-but-unquantified uncertainty;
|
|
150
|
-
3. otherwise `not-propagated` when one or more required components have quantified uncertainty but no explicit propagation model has been supplied;
|
|
151
|
-
4. otherwise `not-applicable`.
|
|
152
|
-
|
|
153
|
-
This ordering prevents a quantified component from hiding a less-characterized required component.
|
|
154
|
-
|
|
155
|
-
### Why no automatic quadrature
|
|
156
|
-
|
|
157
|
-
Photivra does not assume that uncertainty components are statistically independent.
|
|
158
|
-
|
|
159
|
-
Do not automatically:
|
|
160
|
-
|
|
161
|
-
- add relative errors;
|
|
162
|
-
- add variances in quadrature;
|
|
163
|
-
- choose worst-case sums;
|
|
164
|
-
- publish an aggregate confidence interval.
|
|
165
|
-
|
|
166
|
-
A module may perform analytic propagation when the model, covariance/independence assumptions, and affected quantities are explicitly defined. That propagated result should remain traceable to the component uncertainties it consumed.
|
|
167
|
-
|
|
168
|
-
Monte Carlo simulation is not required where an analytic treatment or an explicit `not-propagated` state is scientifically more appropriate.
|
|
169
|
-
|
|
170
|
-
## Source identity and reproducibility
|
|
171
|
-
|
|
172
|
-
Each assurance component has a stable source identity:
|
|
173
|
-
|
|
174
|
-
- profile;
|
|
175
|
-
- result;
|
|
176
|
-
- model;
|
|
177
|
-
- fixture.
|
|
178
|
-
|
|
179
|
-
IDs and versions are preserved where available.
|
|
180
|
-
|
|
181
|
-
Material evidence/uncertainty changes must participate in the owning result/snapshot/plan's reproducibility identity. The production-plan tests verify that changing scene-radiance uncertainty changes both capture and plan fingerprints.
|
|
182
|
-
|
|
183
|
-
The canonical `basic-reference-scene` fixture is covered as a Photivra-owned `fixture` assurance source.
|
|
184
|
-
|
|
185
|
-
## Production composition (#111)
|
|
186
|
-
|
|
187
|
-
Production image-formation plan contract `0.4.0` adds `scientificAssurance` when the plan has composed scientific results.
|
|
188
|
-
|
|
189
|
-
The current physical path records required components for:
|
|
190
|
-
|
|
191
|
-
- scene-radiance result;
|
|
192
|
-
- optical throughput profile;
|
|
193
|
-
- Photivra primary-optics bridge model;
|
|
194
|
-
- each selected front-of-lens filter;
|
|
195
|
-
- non-unity field-throughput model when present.
|
|
196
|
-
|
|
197
|
-
The temporal path records the capture temporal-schedule approximation when temporal composition is active.
|
|
198
|
-
|
|
199
|
-
The primary optics bridge remains an approximation, so calibrated upstream data alone cannot cause the current scene-radiance → sensor-irradiance composition to claim calibrated status.
|
|
200
|
-
|
|
201
|
-
Optimized and reference consumer manifests receive the same assurance object unchanged.
|
|
202
|
-
|
|
203
|
-
## Cross-engine audit
|
|
204
|
-
|
|
205
|
-
### Scene radiance
|
|
206
|
-
|
|
207
|
-
Scene-radiance/provider contracts already distinguish:
|
|
208
|
-
|
|
209
|
-
- calibrated vs approximation status where supported;
|
|
210
|
-
- relative quantified uncertainty;
|
|
211
|
-
- `not-quantified`;
|
|
212
|
-
- evidence and limitations.
|
|
213
|
-
|
|
214
|
-
#111 maps those declarations into the common assurance component without reinterpreting them.
|
|
215
|
-
|
|
216
|
-
### Optics
|
|
217
|
-
|
|
218
|
-
The scene-to-sensor optical bridge already preserves:
|
|
219
|
-
|
|
220
|
-
- profile/transmission status;
|
|
221
|
-
- profile/transmission/working-f-number evidence;
|
|
222
|
-
- relative or unquantified uncertainty;
|
|
223
|
-
- explicit limitations.
|
|
224
|
-
|
|
225
|
-
The bridge itself is still an approximation and is represented as a separate Photivra-model component.
|
|
226
|
-
|
|
227
|
-
Front-of-lens filters preserve each filter's identity, status, evidence and uncertainty separately.
|
|
228
|
-
|
|
229
|
-
### Sensor
|
|
230
|
-
|
|
231
|
-
Sensor modules use several domain-specific readiness/profile/result contracts plus `CalculationQuality` where appropriate.
|
|
232
|
-
|
|
233
|
-
Those domain contracts remain authoritative. The common assurance layer must preserve them rather than replacing sensor-specific physical applicability with one generic score.
|
|
234
|
-
|
|
235
|
-
When a sensor result exposes multiple `CalculationQuality` uncertainty components, the common contract can retain the whole validated quality object.
|
|
236
|
-
|
|
237
|
-
### Exposure and metering
|
|
238
|
-
|
|
239
|
-
Current relative exposure/metering/control paths are deterministic model/policy outputs, often without a calibrated real-camera error distribution.
|
|
240
|
-
|
|
241
|
-
Do not invent numeric uncertainty merely because an exposure offset or setting is numeric.
|
|
242
|
-
|
|
243
|
-
Where the source is an educational/generic approximation, composed consumers should use explicit approximation + not-quantified semantics unless a future calibration contract supplies a real uncertainty model.
|
|
244
|
-
|
|
245
|
-
### Processed output (#112)
|
|
246
|
-
|
|
247
|
-
The bounded processed-camera/output pipeline is merged. It retains reconstruction/rendering/correction child envelopes and conservative upstream assurance; it does not infer calibrated color from deterministic processing.
|
|
248
|
-
|
|
249
|
-
When the processed output path composes source scientific results, it must:
|
|
250
|
-
|
|
251
|
-
- carry upstream assurance/evidence/uncertainty forward;
|
|
252
|
-
- add its own processing-model components;
|
|
253
|
-
- never upgrade scientific status because the output transform is deterministic;
|
|
254
|
-
- distinguish calibrated color/output transforms from generic approximations;
|
|
255
|
-
- keep display/encoding choices from erasing upstream limitations.
|
|
256
|
-
|
|
257
|
-
These requirements govern the merged shared processed-RAW/paired-JPEG path. Unsupported wider output/color combinations remain explicit; see [processed output](PROCESSED_OUTPUT.md).
|
|
258
|
-
|
|
259
|
-
## Relationship to provenance
|
|
260
|
-
|
|
261
|
-
`docs/PROVENANCE.md` remains the source of truth for legal/scientific source provenance and reuse rights.
|
|
262
|
-
|
|
263
|
-
This contract adds **composition semantics**. It does not replace:
|
|
264
|
-
|
|
265
|
-
- `CalculationResult.provenance`;
|
|
266
|
-
- `CalculationResult.quality`;
|
|
267
|
-
- `EvidenceProvenance`;
|
|
268
|
-
- module-specific calibration/readiness/applicability contracts.
|
|
269
|
-
|
|
270
|
-
## Release rule
|
|
271
|
-
|
|
272
|
-
A public composed result must not:
|
|
273
|
-
|
|
274
|
-
- convert `not-quantified` or `unknown` into zero uncertainty;
|
|
275
|
-
- silently discard required evidence;
|
|
276
|
-
- promote scientific status above a weaker required component;
|
|
277
|
-
- fabricate a numeric aggregate uncertainty;
|
|
278
|
-
- remove materially relevant uncertainty/evidence identity from deterministic serialization.
|
|
279
|
-
|
|
280
|
-
Violations are scientific correctness defects, not documentation-only issues.
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
# Scientific conformance: final V1 disposition (#131)
|
|
2
|
-
|
|
3
|
-
Release context: **package 1.2.0 candidate / root API 1.2.0**. Subsystem/model versions and dated introduction or measurement records below are independent historical identities; they are not distribution versions. See [developer navigation](DEVELOPERS.md) and [release contract](RELEASE_1_2_0.md).
|
|
4
|
-
|
|
5
|
-
The cross-stage conformance layer complements, rather than replaces, narrow unit tests. `test/cross-stage-conformance.test.ts` consumes #130's canonical owned fixture and merged public APIs only. It checks a coherent ideal-focus/projection→FOV/object-size→pixel-motion/defocus path, then controlled one-stop shutter and aperture variants across exposure, motion and diffraction.
|
|
6
|
-
|
|
7
|
-
Expectations follow independent Gaussian thin-lens reciprocal distance, angular span reconstruction, millimetre/micrometre pixel conversion, shutter-proportional lateral displacement, t/N² relative optical exposure, and wavelength/f-number Airy scaling. Neutral stationary/in-focus states and non-neutral variants preserve calculated provenance. Relative exposure is not photon-count evidence; no source/sensor calibration is inferred.
|
|
8
|
-
|
|
9
|
-
`test/signal-conformance.test.ts` adds independent energy/photon/QE/noise identities, including physical shutter exposure versus nominal ISO/rendered exposure. These analytic inputs are not a calibrated scene-to-sensor integration.
|
|
10
|
-
|
|
11
|
-
## Capture and processed-output slice
|
|
12
|
-
|
|
13
|
-
`test/raw-output-conformance.test.ts` exercises the merged capture-owned global sensor producer through charge/capacity/noise/ADC, immutable native CFA attachment, explicit reconstruction, declared color interpretation, WB, correction, SDR encoding and paired export. This slice uses the global-exposure fixture; local shutter-window coverage remains in the producer tests.
|
|
14
|
-
|
|
15
|
-
The fixture reuses #130's 36×24 mm imaging area, 50 mm f/4 lens, 5 m focus, 0.008 s shutter, ISO 100 and stochastic seed. It explicitly replaces the 600×400 native raster with a **6×4 Bayer regression lattice**: square 6 mm pitch, 24 sites. These dimensions are deliberately artificial, suitable for fast ordering/geometry checks, not pixel fidelity, demosaic quality, camera calibration, editor interoperability or performance. The canonical JSON is unchanged. Existing owned phase kernels average each 2×2 tile; six synthetic tile levels and channel differences make an incorrect orientation or source shift observable. Photoelectron expectations are supplied directly, with zero dark expectation and the existing synthetic readout profile (2 electron RMS read noise, 1 electron/code, black 64, white 1023, 1000 electron capacity). No scene radiance, wavelength response or spectral integration is inferred from these numbers.
|
|
16
|
-
|
|
17
|
-
Independent expectations are calculated from the emitted integer RAW codes, without using engine reconstruction, orientation, correction or SDR functions as an oracle:
|
|
18
|
-
|
|
19
|
-
| Boundary | Conformance evidence |
|
|
20
|
-
| --- | --- |
|
|
21
|
-
| Native capture → DNG | Every stored 16-bit strip code equals the produced post-ADC code, without container stretching. Native codes and noise remain identical through four output orientations. |
|
|
22
|
-
| RAW → reconstruction → color/encoding | Tile red/blue values and mean of the two green sites are independently black-subtracted and normalized by 959. The declared ideal RGB→XYZ→RGB round trip must preserve them within numeric tolerance. Integer orientation permutations and the piecewise sRGB transfer/8-bit rounding predict every processed pixel. |
|
|
23
|
-
| Shutter / ISO / rendering exposure | Twice the shutter doubles expected charge at fixed rates. ISO-only metadata does not change the explicitly selected readout regime, realized charge, RAW codes or processed pixels. Rendering +1 EV doubles linear rendering values while keeping RAW codes and RawDataUniqueID unchanged. No monotonic claim is made about individual Poisson draws. |
|
|
24
|
-
| WB → exposure → tone → encoding | Non-neutral gains (2, 1, 0.5), +1 rendering EV and positive Reinhard tone are evaluated independently in sequence. This catches double WB, WB after tone and transfer/quantization ordering errors. |
|
|
25
|
-
| Native correction → joint support → orientation | Identity correction preserves the plain processed pixels and view. A one-native-pixel shift reuses the exact noisy capture, excludes the unsupported native edge and yields independently predicted source pixels through all four orientations. RAW codes/default crop/data identity stay unchanged; RAW correction intent is metadata-only. |
|
|
26
|
-
| Signed dark values / display clipping | Zero photo/dark expectations preserve below-black read noise in stored RAW and signed reconstruction. Low clipping happens downstream. A separate +8 EV rendering clips all output channels without claiming physical or ADC capture saturation. |
|
|
27
|
-
| Unsigned ADC lower boundary | Explicit large read-noise variants with black 0/64 exercise lower-code clamping and separate upper pre-ADC/digital saturation at zero stored charge. Negative electronic noise is not mistaken for negative stored charge. |
|
|
28
|
-
|
|
29
|
-
Complete file bytes are checked for repeated-export determinism on the neutral rendering path. The strip reader here is a bounded structural regression check, not an independent external RAW editor or TIFF implementation. JPEG **pre-encoding pixels** are the analytic rendering oracle; a lossy JPEG decode is not used to prove exact pixel identity. Existing #16 decoder/editor acceptance remains separately authoritative.
|
|
30
|
-
|
|
31
|
-
The producer's `upstreamRadiometryVerified: false`, reconstruction's `producerOriginVerified: false` and approximation provenance remain visible. The fixture's unrelated inline float plane contains 999 values; it cannot supply the JPEG reconstruction. ISO independence applies to this explicit regime configuration, not to all future ISO-dependent body profiles.
|
|
32
|
-
|
|
33
|
-
The shadow check exposed a readout ordering defect: clamping negative electronic noise to zero electrons before adding the pedestal erased valid below-black RAW values. The correction preserves signed electronic signal through the upper-only pre-ADC threshold, adds the black offset, quantizes and then clamps to unsigned code zero/common digital saturation. Physical stored charge remains nonnegative. Readout provenance advances to model **2.0.0** and the producer's required capture noise identity advances to **0.2.0**, rejecting old 0.1.0 producer replay instead of silently recomputing changed shadows. See `SENSOR_RAW_PRODUCER.md` for migration. Public input/output field shapes remain unchanged; root API advances to 0.106.0. Existing positive electronic-signal code math and RNG seed schedule are unchanged.
|
|
34
|
-
|
|
35
|
-
## Final integrated acceptance
|
|
36
|
-
|
|
37
|
-
The final contribution is based on merged main `712c031689f5413003a1d15c2d0dfa9466bbbfb8` (#205): #16/#112 export/processing, #178 authoritative integration, #116/#119 tier acceptance and #43/#45 performance dispositions are merged. `test/final-scientific-conformance.test.ts` adds 16 normal-CI tests over those final public paths. PR #206 merged after owner review and contribution-specific DCO certification as `34c6d9aca1c2e365b253c1562734d11bc8e0235f`; post-merge CI 37032338620 passed Node 22.13/24. #131 is closed and the feature/science checklist is 32/32. #180 prepares the 1.0 distribution; tagging/publication remains owner-only.
|
|
38
|
-
|
|
39
|
-
The suite extracts the existing bounded tier-production request into `test/helpers/tier-production-fixture.ts` and reuses it from both tier acceptance and final conformance. The existing nine-pair/27-pupil suite retains its expectations. No runtime/API/schema/asset/dependency change or reference-golden regeneration occurs.
|
|
40
|
-
|
|
41
|
-
### Shared laboratory and explicit variants
|
|
42
|
-
|
|
43
|
-
#130 remains unchanged and supplies the imaging area, optical/exposure/focus reference, wavelength, reflectance, light level and seed. The final path explicitly declares these minimal specialized variants:
|
|
44
|
-
|
|
45
|
-
- The canonical planar monochromatic reference is extended to an owned **uniform angular environment with a flat 540–560 nm spectral-density band**, using its 550 nm centre, with incident spectral irradiance scaled by `1e-9`. This is not a delta-line spectrum or a measured environment. Lambertian reference radiance is independently `rho * E / pi`; provider values are explicitly supplied, not visibility/transport predictions.
|
|
46
|
-
- Native geometry is the existing owned **2×2 Bayer regression lattice** with registered tier topology, an independently declared 800×600 µm rectangular sensitive aperture, effective package-incident EQE 0.4, and explicit synthetic response/linearity bindings. Geometric pitch does not infer photon-collection area, QE or real camera pixels. The 20 nm midpoint bin samples 550 nm. Its finite declared operating ranges remain enforced.
|
|
47
|
-
- Exact generic 1.0.0 body/lens selections provide capability policies, finite-focus optical transmission and explicit readout regimes. Relative metering uses the same provider/illumination/material identities and registered time zero, with a supplied normalized scalar reduction. It remains uncalibrated; no physical radiance-to-luminance or manufacturer-specific meter is inferred.
|
|
48
|
-
- Neutral constant light replaces the registered waveform with a constant. The controlled temporal variant uses the owned `1 + 200 t` ramp. Orientation and exposure/rendering variants preserve the same scientific stage ownership and seed.
|
|
49
|
-
|
|
50
|
-
### Independent integrated expectations
|
|
51
|
-
|
|
52
|
-
For the fixed focus distance `s` and physical focal length `f`, independently solve `v = 1 / (1/f - 1/s)` in millimetres. The declared ideal symmetric working f-number is `Nw = N(1 + v/s)` with explicit unity pupil magnification. With tier transmission `T`, the expected sensor spectral irradiance is `L * pi * T / (4 * Nw²)`.
|
|
53
|
-
|
|
54
|
-
Expected generated electrons are independently:
|
|
55
|
-
|
|
56
|
-
`E_sensor * (800 * 600 * 1e-12 m²) * (20 nm) * (550e-9 m) / (h*c) * 0.4 * integratedSeconds`.
|
|
57
|
-
|
|
58
|
-
Here `h = 6.62607015e-34 J s`, `c = 299792458 m/s`. Constant light uses `integratedSeconds = duration`; the registered ramp integrates to `duration + 100 * duration²`. Uniform radiance makes normalized spatial weights integrate to unity. The chosen single spectral bin matches the declared midpoint rule; this is not a convergence/physical error bound.
|
|
59
|
-
|
|
60
|
-
Uniform relative scene-light factors 0.5/1/2 drive aperture-priority shutter to `t/factor` at fixed aperture/ISO, preserving expected photo charge. The independently declared dark rate still adds `4 * resolvedDuration` electrons, so total charge is not incorrectly held fixed by the meter. Compensation −1/0/+1 EV changes physical duration by 0.5/1/2 before charge/noise, without mutating the meter snapshot. The ramp and its equal-mean constant-field variant agree before stochastic sampling; no monotonic statement is made about individual random draws.
|
|
61
|
-
|
|
62
|
-
Post-capture +1 rendering EV doubles linear rendering values while preserving the complete physical result, capture serialization, native codes, noise seed and RAW data identity. The same realized RAW feeds production processing and paired export, with stored DNG codes independently read from the strip. Whole plan and file bytes replay deterministically. This structural strip check is not an external reader or independent TIFF implementation; #16's merged reader/editor acceptance remains its own evidence.
|
|
63
|
-
|
|
64
|
-
### Acceptance and API-style disposition
|
|
65
|
-
|
|
66
|
-
| #131 requirement / boundary | Final evidence and disposition |
|
|
67
|
-
| --- | --- |
|
|
68
|
-
| #130 across multiple domains | Existing `basic-reference-scene`, `cross-stage-conformance`, `signal-conformance`, `raw-output-conformance` suites plus the new shared-scene meter/optics/sensor/production/export path. Canonical fixture unchanged. |
|
|
69
|
-
| Coherent end-to-end deterministic path | All three exact tiers: scene-derived relative meter → immutable target/compensation → capability-based aperture-priority resolution → committed capture → invoked scene queries → finite-focus optics → spatial/spectral/temporal EQE → dark/charge/capacity/seeded noise/ADC → native RAW → production processing → paired DNG/JPEG. Independent SI count arithmetic and exact file codes. |
|
|
70
|
-
| Neutral and non-neutral variants | Constant neutral field; 0.5/1/2 scene light; −1/0/+1 compensation; registered temporal ramp/equal-mean field; four orientations; post-capture +1 EV. Existing suites cover focus, diffraction, motion, signed shadows, WB/tone, correction and spatially distinct orientation/crop patterns. |
|
|
71
|
-
| Ordering/coupling failures | New stale scene/seed/exposure/tier commitments block processing before source invocation. A trusted callback exception propagates instead of producing fallback output. Existing production tests cover missing renderer/stage support, temporal count/motion/focus/geometry mismatch and double attached/executed RAW paths. |
|
|
72
|
-
| Tier coherence and tradeoffs | Merged nine-pair production/output and 27 independently evaluated pupil cases in `generic-tier-production-acceptance`; versioned reports/envelopes, immutable correction A/B, stabilization/flash/flare in `generic-tier-report-acceptance`; no universal ranking or duplicate large fixture. |
|
|
73
|
-
| Final performance disposition | Merged #205 [performance report](V1_PERFORMANCE_DISPOSITION.md), complete 64-case independent POC equivalence, scalar/batch mutation and numerical guards. No new timing threshold or tiny-raster throughput claim. Runtime sources unchanged, so no fresh performance implementation is implied here. |
|
|
74
|
-
| API-style drift | Existing `api-style-compatibility` scans the entire root callable surface against documented verbs, compatibility sentinels and independent version surfaces. New path exercises input objects, calculation envelopes, versioned immutable records, exact identities and deterministic serialization. All checks must pass; no accidental convention change is introduced. |
|
|
75
|
-
| CI cost and independence | 16 new bounded tests; no network, private app, Blender, proprietary data, new dependency or expensive photoreal renderer. Existing focused suites remain authoritative. |
|
|
76
|
-
|
|
77
|
-
Scientifically meaningful API differences remain intentional under [API_STYLE.md](API_STYLE.md): parsers/targets/resolvers/plans/manifests return their semantic records, primitive calculations return `CalculationResult`, file export is asynchronous for encoding/hash work, and trusted caller-code exceptions may propagate while scientifically incomplete well-formed plans carry structured blockers. A physical approximation stays approximate even when its metadata/identity is valid. FNV plan fingerprints and SHA-256 capture/file/corpus commitments retain their separate contracts. No coercive wrapper or cosmetic public rename is warranted.
|
|
78
|
-
|
|
79
|
-
### Limits and completion boundary
|
|
80
|
-
|
|
81
|
-
The first physical route retains unity field throughput, optional destination-local PSF approximation and bounded sensor/provider-evaluation limits. The new neutral tier route explicitly omits PSF; existing executed environment/production tests cover declared sampled PSF and motion/rolling shutter, and tier pupil scenes independently validate finite profiles. No full field-dependent PSF transport, calibrated source visibility/radiometry/sensor color, generic arbitrary-optics integration, full-resolution throughput or private product fidelity is claimed. Upstream provider transport and radiometry verification remain false in the new complete path.
|
|
82
|
-
|
|
83
|
-
This final conformance disposition consumes the finite approved V1 support and documented limitations. It neither invents a new V1 deferral nor certifies scientific accuracy merely from passing tests. #180 still owns the exhaustive human/agent/source documentation audit, 1.0 packaging/release preparation and final limitations review. No tag, package publication or release is authorized by this contribution. Human review and contribution-specific DCO remain required before #131 closes.
|
package/docs/SDR_RENDERING.md
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# Standalone SDR rendering primitives: #112A
|
|
2
|
-
|
|
3
|
-
Release context: **package 1.2.0 candidate / root API 1.2.0**. Subsystem/model versions and dated introduction or measurement records below are independent historical identities; they are not distribution versions. See [developer navigation](DEVELOPERS.md) and [release contract](RELEASE_1_2_0.md).
|
|
4
|
-
|
|
5
|
-
Current integration: [processed camera output](PROCESSED_OUTPUT.md) documents
|
|
6
|
-
the shared preview/export path and explicit plan 0.6.0 post-RAW activation.
|
|
7
|
-
The historical slice descriptions below retain their original scope.
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
This low-level primitive defines bounded deterministic post-capture SDR rendering. Merged capture/WB/correction adapters and production plan 0.7.0 now integrate it through [processed output](PROCESSED_OUTPUT.md), preserving domain/order and shared color/WB ownership.
|
|
11
|
-
|
|
12
|
-
`calculateSdrRendering()` accepts a declared `color-transformed-linear-rgb` image state, `linear-srgb-d65` color-space identity, source state ID, co-sited interleaved RGB raster and relative reference-white value. `whiteBalanceHandling` must be `already-applied-upstream` or `not-required`. Intent-only/unresolved WB is rejected; this primitive never estimates/applies WB, converts XYZ/spectral/sensor RGB or changes lens-correction order. These input identities are producer declarations, not verification of upstream pixel fidelity. The capture adapter verifies them against the authoritative capture/profile history.
|
|
13
|
-
|
|
14
|
-
Profiles use schema `0.1.0`, public ID/version and explicit policies. No default tone/gamut/transfer or HDR mode is guessed. Inline samples are finite, dense and limited to 262144 values (at most 87381 RGB pixels); external storage/streaming/native-size processing remains outside this reference executor. Top-left raster origin, +X right/+Y down, tightly interleaved red/green/blue, row-major. Input is copied and never mutated.
|
|
15
|
-
|
|
16
|
-
| Stage | Defined operation |
|
|
17
|
-
| --- | --- |
|
|
18
|
-
| Rendering exposure | Multiply source samples by `2^renderingExposureEv/referenceWhiteValue`. EV is bounded to [−32,32]; this is a rendering brightness choice, not aperture/shutter/ISO compensation. Non-finite scale/sample results fail before later processing can hide them. |
|
|
19
|
-
| Tone curve | Identity, or positive per-channel Reinhard: positive x maps to x/(1+x); nonpositive values are retained until explicit gamut handling. This generic choice can change chromaticity and compresses reference white 1 to 0.5. No calibrated manufacturer look is claimed. |
|
|
20
|
-
| Gamut handling | Explicit component clipping to [0,1], with separate low/high sample counts, or rejection of any component outside [0,1]. This is range handling in the defined sRGB basis, not a perceptual/hue-preserving gamut map. |
|
|
21
|
-
| Transfer encoding | Standard sRGB component function: 12.92x for x≤0.0031308; otherwise 1.055x^(1/2.4)−0.055. Black/white endpoints return exact 0/1. |
|
|
22
|
-
| Quantization | 8 or 16 bits, full range 0..(2^bits−1), nearest exact binary64 ties to larger code, no dither. Packing/file tags belong to the serializer. |
|
|
23
|
-
| Display adaptation | Explicit external-platform seam, not applied; actual display capabilities are unknown. |
|
|
24
|
-
|
|
25
|
-
The returned tone-mapped linear, gamut-bounded linear, transfer-encoded float and integer arrays let consumers inspect the stages independently. Diagnostics distinguish pre-tone negative/above-reference rendering samples, tone-changed samples and actual gamut-clipped samples. They count channel samples, not pixels. No sensor/full-well/ADC/RAW clipping is inferred; capture saturation is `not-consumed`. A source clipped upstream may have no output clipping, while an unsaturated source can clip in SDR output. The capture adapter retains upstream diagnostics independently.
|
|
26
|
-
|
|
27
|
-
Output declares output-referred SDR sRGB, RGB primary xy coordinates (0.64,0.33), (0.30,0.60), (0.15,0.06), D65 white xy (0.3127,0.3290), and the standard reference-white luminance assumption 80 cd/m². This is an encoding/reference convention, not evidence that the user's screen emits that luminance. Actual viewing surround/display tone/black, platform color management, HDR adaptation and display saturation remain external and unknown. Floating-point source headroom does not establish PQ/HLG/HDR encoding.
|
|
28
|
-
|
|
29
|
-
The function touches no capture settings, physical radiometry/noise/saturation, metering, CFA/reconstruction, geometry, WB estimator, denoise/sharpen or resampling. It serves a common preview/processed-export rendering intent; it does not require screenshot/canvas reuse or promise byte-identical file/display backends. It does not replace #15C's authoritative **linear** export encoding: this primitive quantizes **transfer-encoded processed SDR** and does not replace the capture encoding API.
|
|
30
|
-
|
|
31
|
-
Compatibility: root API main `0.96.0` → `0.97.0`; package/POC/production schemas unchanged. This is the historical introduction version, not the current release version. Current package/root API 1.0.1 uses aligned release identity; #112 is merged. Schema/profile changes preserve explicit domains and independent version identities.
|
|
32
|
-
|
|
33
|
-
Research: [ICC sRGB encoding registry](https://registry.color.org/rgb-registry/srgb) defines the standard primaries, white/reference assumptions and component transfer equations. These public numerical facts/equations inform independently authored code/tests; no third-party implementation, ICC profile binaries, protected prose, calibration data or color tables are incorporated. Calculation provenance refers to deterministic rendering arithmetic, not physical/perceptual accuracy or commercial-camera calibration. Human science/provenance review and DCO contributor certification remain required before inclusion.
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# Ideal pupil rays for bounded capture
|
|
2
|
-
|
|
3
|
-
`calculateSensorApertureRays()` generates origin-aware rays for an explicitly declared ideal symmetric thin lens. Native sensor coordinates use +Y down; camera look directions use +Y up and +Z forward. Origins lie in the lens principal plane and use metres. Pupil sample points use millimetres.
|
|
4
|
-
|
|
5
|
-
For focal length f and nominal f-number N, the circular pupil radius is f/(2N). The shared focus contract determines image distance v. For finite object-plane distance D, every unrotated ray intersects (xD/v, -yD/v, D). At infinity the rays remain parallel. The existing constant-axis camera rotation rotates both origin and direction about the principal-plane origin at the actual local shutter time.
|
|
6
|
-
|
|
7
|
-
Uniform-area polar midpoints use r = R sqrt((i + 1/2)/Nr) and theta = 2 pi (j + 1/2)/Na. Each ray has normalized weight 1/(Nr Na). Counts are bounded to 1..32 radial and 4..64 angular samples, with at most 256 rays. These are integration samples, not a convergence guarantee.
|
|
8
|
-
|
|
9
|
-
## Capture integration
|
|
10
|
-
|
|
11
|
-
A caller may supply `pupil` and the separate `evaluateApertureRadiance(request, ray)` callback to `calculateEnvironmentSensorPhotoSignal()` or `simulateEnvironmentSensorRawFrame()`. The callback receives the actual pupil origin and look direction. It owns scene intersection, visibility and emitted/transported wavelength-resolved radiance; the engine owns focus, rotation, local shutter timing, sensor response and RAW production. The old single-argument environment callback remains compatible and unchanged when pupil sampling is omitted.
|
|
12
|
-
|
|
13
|
-
The engine averages physical irradiances over normalized pupil weights before sensor integration. The existing working-f-number radiometric factor is applied once. Pupil area is not multiplied again. A sampled local PSF and pupil integration are rejected together: neither an implicit second defocus nor an unreviewed optical composition is permitted. Every ray and the total provider budget are preflighted before provider execution. Full-frame site completeness, seeds and 4,096-site/100,000-query limits remain unchanged.
|
|
14
|
-
|
|
15
|
-
Diagnostics retain the original central `query`, plus `apertureRequest` and `apertureRay` for the actual evaluated ray. `pupilIntegrationApplied` and `pupilIntegrationProfile` report the declared integration. Provider transport and scene visibility remain unverified. The production composer rejects this standalone route until depth/visibility fidelity has an explicit composition contract; this API does not activate a production stage.
|
|
16
|
-
|
|
17
|
-
## Limits and evidence
|
|
18
|
-
|
|
19
|
-
This is an ideal paraxial approximation with unity pupil magnification. It does not model diffraction, aberrations, pupil clipping, lens housing, calibrated lens transmission, camera translation, scattering or physically measured sensor response. Existing separately declared field and spectral transmission remain separate. No megapixel RAW capability or physical device acceptance is established.
|
|
20
|
-
|
|
21
|
-
Tests independently intersect finite rays with the focus plane, check pupil moments, through-focus footprints, infinity parallelism, coordinate signs and camera rotation. Capture tests check uniform radiance against the unchanged no-pupil path, origin-dependent visibility averages, exact seeded replay, callback ownership and rejection before provider work. These synthetic controls do not qualify arbitrary scene providers.
|
|
22
|
-
|
|
23
|
-
Conceptual references: [PBRT projective camera models](https://www.pbr-book.org/4ed/Cameras_and_Film/Projective_Camera_Models) describes ideal lens sampling; [PBRT realistic cameras](https://www.pbr-book.org/3ed-2018/Camera_Models/Realistic_Cameras) distinguishes full lens geometry. Implementation and tests are original Photivra work using existing engine helpers; no reference code, data or prose is incorporated. AI-assisted work remains draft pending substantive human scientific/source review.
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
# Sensor support to environment radiance query
|
|
2
|
-
|
|
3
|
-
Release context: **package 1.2.0 candidate / root API 1.2.0**. Subsystem/model versions and dated introduction or measurement records below are independent historical identities; they are not distribution versions. See [developer navigation](DEVELOPERS.md) and [release contract](RELEASE_1_2_0.md).
|
|
4
|
-
|
|
5
|
-
`calculateSensorEnvironmentRadianceQuery()` derives a renderer-neutral environment
|
|
6
|
-
radiance request from an explicitly supplied physical sensor support point. It
|
|
7
|
-
reuses the existing focus-aware ideal projection and analytic inverse camera
|
|
8
|
-
rotation. This is a bounded environment-query adapter, not a surface-intersection
|
|
9
|
-
solver or a scene renderer.
|
|
10
|
-
|
|
11
|
-
## Coordinates, direction and clock
|
|
12
|
-
|
|
13
|
-
`sourcePointNativeSensorMm` is an optical support point in native sensor axes:
|
|
14
|
-
optical-axis origin, +X right, +Y down, millimetres. It can be a pre-AA quadrature
|
|
15
|
-
point or a pre-PSF source tap. The adapter converts it to image-plane axes with
|
|
16
|
-
`{x: native.x, y: -native.y}`. It never recentres off-axis support, applies digital
|
|
17
|
-
crop/orientation, or clips a source point to the sensor's active bounds.
|
|
18
|
-
|
|
19
|
-
Inputs retain physical `focalLengthMm`, an explicit finite/infinity `focus`, and
|
|
20
|
-
constant `angularVelocityRadPerSec` in the existing right-hand pitch/yaw/roll axes.
|
|
21
|
-
The existing `calculateInverseCameraRotationImageMapping()` owns the thin-lens
|
|
22
|
-
projection distance and simultaneous axis-angle rotation. Infinity uses physical
|
|
23
|
-
focal length; finite focus uses the existing Gaussian image distance. No alternate
|
|
24
|
-
projection or camera-motion equation is introduced.
|
|
25
|
-
|
|
26
|
-
`timeReference` must explicitly be `first-opening-boundary-phase`, mapping that
|
|
27
|
-
capture boundary to the rotation model's t=0. `timeSecondsFromOpeningReference`
|
|
28
|
-
is reused exactly for the query timestamp and rotation evaluation. Readout or
|
|
29
|
-
renderer time cannot stand in for that declared clock. Call separately at each
|
|
30
|
-
actual local shutter midpoint; this API does not establish local exposure timing.
|
|
31
|
-
|
|
32
|
-
The reference ray is normalized in camera axes at the first opening boundary,
|
|
33
|
-
with +Z forward. `referenceLookDirectionUnitVector` points **from camera toward
|
|
34
|
-
the environment**. The request's `outgoingDirectionUnitVector` is its negative,
|
|
35
|
-
representing radiance propagation **from environment toward camera**. This
|
|
36
|
-
adapter requires the explicit `outgoing-radiance-toward-camera` convention.
|
|
37
|
-
The selected provider must share it; providers indexing maps by a look direction
|
|
38
|
-
must deliberately convert the sign. Existing manually declared request semantics
|
|
39
|
-
are not rewritten by this additive API.
|
|
40
|
-
|
|
41
|
-
The existing rotation inverse rejects rays at or behind the exposure-start
|
|
42
|
-
reference camera plane. This forward-hemisphere limit is preserved, rather than
|
|
43
|
-
silently extending the primitive to arbitrary 360-degree environment queries.
|
|
44
|
-
|
|
45
|
-
## Request identity and handoff
|
|
46
|
-
|
|
47
|
-
`request` supplies the existing scene/provider/illumination/material IDs, unique
|
|
48
|
-
sample ID, schema version, wavelength and explicit air/vacuum basis. The adapter
|
|
49
|
-
owns its environment target and timestamp, then parses the complete request
|
|
50
|
-
through `parseSceneRadianceEvaluationRequest()`.
|
|
51
|
-
|
|
52
|
-
Use the returned request with the provider responsible for scene radiance. Bind
|
|
53
|
-
its result through the existing scene-profile/request/result validator and optical
|
|
54
|
-
bridge. At sensor quadrature nodes, the generated request can replace a manually
|
|
55
|
-
declared environment target in `calculateSceneToSensorIrradianceQuadrature()`.
|
|
56
|
-
At PSF support points, evaluate radiance/optical irradiance separately at each
|
|
57
|
-
point before supplying the local sampled-PSF adapter. Do not copy one environment
|
|
58
|
-
scalar across directions without an explicitly uniform provider model.
|
|
59
|
-
|
|
60
|
-
`geometricRayProjectionCalculated` is true for this named ideal model only.
|
|
61
|
-
`sceneIntersectionCalculated`, `visibilityCalculated` and `providerExecuted`
|
|
62
|
-
remain false. Existing scene/optical diagnostic origin flags remain conservative:
|
|
63
|
-
calling this adapter does not rewrite them or provide measured source truth.
|
|
64
|
-
|
|
65
|
-
## Limits and verification
|
|
66
|
-
|
|
67
|
-
Environment/rotation reference axes are explicitly the camera axes at the first
|
|
68
|
-
opening boundary. There is no world-pose translation or implicit Euler pose.
|
|
69
|
-
Surface points/material visibility, translation/parallax, moving objects, lens
|
|
70
|
-
distortion, chromatic field mapping, focus breathing, radiance transport and
|
|
71
|
-
production activation remain separate. The adapter's approximation envelope
|
|
72
|
-
retains the child analytic projection result; it claims no real-lens calibration,
|
|
73
|
-
combined uncertainty or full photographic accuracy.
|
|
74
|
-
|
|
75
|
-
Tests independently predict native/optical signs, direction normalization,
|
|
76
|
-
finite-focus projection and axis-specific Rodrigues rotation. Forward/inverse
|
|
77
|
-
rotation round trips preserve captured points. Actual pre-AA node requests pass
|
|
78
|
-
the existing provider-binding/optical adapter with owned synthetic radiance.
|
|
79
|
-
Unknown clock/direction/focus/basis, negative time, nonfinite point, invalid focal
|
|
80
|
-
length and behind-reference-plane requests reject. Inputs/results are owned
|
|
81
|
-
without mutating caller state.
|
|
82
|
-
|
|
83
|
-
Root API **0.112.0 → 0.113.0**, model 0.1.0. Existing public contracts and other
|
|
84
|
-
version surfaces stay unchanged; historical capture/file replay retains its API
|
|
85
|
-
stamp. No dependency, external asset, network access or cost is introduced.
|
|
86
|
-
At this introduction checkpoint, #16/#178/#112 were open and V1 was 25/32. They are now reviewed/merged; final conformance is complete.
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
# Irradiance to stationary EQE local exposure
|
|
2
|
-
|
|
3
|
-
Release context: **package 1.2.0 candidate / root API 1.2.0**. Subsystem/model versions and dated introduction or measurement records below are independent historical identities; they are not distribution versions. See [developer navigation](DEVELOPERS.md) and [release contract](RELEASE_1_2_0.md).
|
|
4
|
-
|
|
5
|
-
`calculateSensorEqeLocalExposure()` is a bounded sensor-layer composition. It
|
|
6
|
-
accepts explicit physical spectral irradiance samples in **W/m²/nm**, not RGB,
|
|
7
|
-
and returns a photoelectron expectation suitable for the existing accumulated
|
|
8
|
-
charge and RAW producer. It does not establish scene/optics origin, execute a
|
|
9
|
-
renderer, or activate reserved production stages.
|
|
10
|
-
|
|
11
|
-
## Input ownership and order
|
|
12
|
-
|
|
13
|
-
The caller supplies `colorSamplingProfile`, `spectralResponseProfile`,
|
|
14
|
-
`spatialSampling`, `spectralSampling`, `irradianceSamples`,
|
|
15
|
-
`responseApplication`, `operatingRangeProfile`, `localExposure`, and
|
|
16
|
-
`stationarityProfile`. Optional `airPhotonEnergyContext` retains the EQE API's
|
|
17
|
-
explicit air-to-vacuum photon-energy requirements; vacuum wavelengths need none.
|
|
18
|
-
|
|
19
|
-
The adapter delegates in this order:
|
|
20
|
-
|
|
21
|
-
1. Spatial midpoint/AA quadrature uses the supplied local timing's native raster
|
|
22
|
-
and binding profile, plus the explicit physical imaging area/aperture/lattice.
|
|
23
|
-
2. Spectral midpoint quadrature checks response support and requested wavelength
|
|
24
|
-
measure. The caller must separately establish scene/optics spectral coverage.
|
|
25
|
-
3. Reduction requires one identified irradiance value for every Cartesian node.
|
|
26
|
-
Ordering is irrelevant; missing, duplicate, nonfinite or negative inputs fail.
|
|
27
|
-
Values are evaluated at each node's `preAntiAliasingSourcePointMm` before AA
|
|
28
|
-
and sensor response. Spatial units and wavelength measure apply once.
|
|
29
|
-
4. Application compatibility establishes response plane/scope, collection area,
|
|
30
|
-
uniform spatial response and reference conditions. Operating range checks the
|
|
31
|
-
specified radiant-power domain and spectral/spatial linearity evidence.
|
|
32
|
-
5. EQE converts radiant power to photons and expected electrons. Responsivity
|
|
33
|
-
profiles are rejected by this EQE path. A channel filter is applied only when
|
|
34
|
-
the existing separable-response contract requires it.
|
|
35
|
-
6. Local shutter binding validates the site/channel and computes its exact
|
|
36
|
-
one-to-one native exposure window. The stationarity profile must match that
|
|
37
|
-
site, binding and window before rate × duration integration.
|
|
38
|
-
|
|
39
|
-
Prepare sample identities with the existing public spatial/spectral quadrature
|
|
40
|
-
functions and the same parameters. This composition recomputes those plans;
|
|
41
|
-
caller-supplied result flags do not bypass these calculations or validity gates.
|
|
42
|
-
The input is not frozen or mutated. Child results retain separate provenance,
|
|
43
|
-
evidence and declared response uncertainty; no uncertainty combination or
|
|
44
|
-
quadrature-convergence estimate is introduced.
|
|
45
|
-
|
|
46
|
-
## Downstream handoff
|
|
47
|
-
|
|
48
|
-
```ts
|
|
49
|
-
const photo = calculateSensorEqeLocalExposure(request);
|
|
50
|
-
const charge = {
|
|
51
|
-
photoSignal: photo.value.exposure.value,
|
|
52
|
-
darkCharge,
|
|
53
|
-
completenessProfile
|
|
54
|
-
};
|
|
55
|
-
// Feed charge with explicit sampling/capacity/readout state into
|
|
56
|
-
// simulateSensorRawFrame(). Paired export consumes that returned RAW frame.
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
Dark charge, other stored charge, completeness, capacity, stochastic realization
|
|
60
|
-
and electronics are still separate downstream responsibilities. Do not insert
|
|
61
|
-
fake zero-dark or completeness evidence to obtain RAW. A rolling schedule in the
|
|
62
|
-
RAW producer must match the local event used here. Nonstationary scene motion or
|
|
63
|
-
irradiance requires actual temporal integration, which this adapter does not
|
|
64
|
-
implement; a stationarity declaration is not such integration.
|
|
65
|
-
|
|
66
|
-
The result declares `upstreamOrigin: "declared-spatio-spectral-irradiance-samples"`
|
|
67
|
-
and `upstreamSceneAndOpticsVerified: false`. It retains spatial/spectral plans,
|
|
68
|
-
reduction, compatibility, operating range, electron rate, exposure binding and
|
|
69
|
-
exposure **envelopes**. Aggregate provenance is approximation. The RAW producer
|
|
70
|
-
and attachment/export origin flags stay conservative: executing this adapter
|
|
71
|
-
cannot prove the irradiance provider's history or calibration.
|
|
72
|
-
|
|
73
|
-
## Evidence and compatibility
|
|
74
|
-
|
|
75
|
-
`test/eqe-local-exposure.test.ts` independently predicts photon/electron counts
|
|
76
|
-
using SI Planck/light-speed constants, µm²-to-m² conversion, two spectral
|
|
77
|
-
midpoints and the synthetic QE curve. It checks order independence, exact rolling
|
|
78
|
-
windows and duration scaling, invalid node/plane/range/channel/binding/window
|
|
79
|
-
inputs, and all four native Bayer sites through deterministic RAW and paired
|
|
80
|
-
DNG/JPEG. Fixtures are owned synthetic test declarations, not measured camera
|
|
81
|
-
calibration or scene validation. Existing primitive tests remain in place.
|
|
82
|
-
|
|
83
|
-
This additive entry point advances root API **0.106.0 → 0.107.0**. The composition
|
|
84
|
-
model is 0.1.0; package, POC, production-plan, capture/RAW/producer schemas and
|
|
85
|
-
noise identities remain unchanged. Newly created captures carry the new root
|
|
86
|
-
API stamp, so their provenance-dependent export identities may differ. Historical
|
|
87
|
-
capture replay preserves its stored root stamp and pinned paired-file hashes;
|
|
88
|
-
no primitive equations, stochastic seeds or RAW readout arithmetic change.
|
|
89
|
-
|
|
90
|
-
Remaining #16/#178/#112 work includes committed scene/optics/PSF-to-node origin,
|
|
91
|
-
production-stage activation and broader
|
|
92
|
-
resolution/editor acceptance. This handoff does not close those tickets.
|
|
93
|
-
|
|
94
|
-
## Optical-node producer
|
|
95
|
-
|
|
96
|
-
[`calculateSceneToSensorIrradianceQuadrature()`](SCENE_SENSOR_QUADRATURE.md) produces the exact physical input node values from declared wavelength-resolved scene radiance through the existing optical bridge. Its output plane is sensor-package-incident; use matching effective package EQE and explicit source-plane evidence. Projection/PSF/source-truth and stationarity remain separate requirements.
|
|
97
|
-
|
|
98
|
-
## Nonstationary sensor calculation
|
|
99
|
-
|
|
100
|
-
[`calculateSensorEqeTemporalExposure()`](SENSOR_EQE_TEMPORAL_EXPOSURE.md) reuses
|
|
101
|
-
this adapter's instantaneous steps at every explicit local shutter midpoint.
|
|
102
|
-
It returns a distinct nonstationary photo expectation, with no stationarity
|
|
103
|
-
claim. The [temporal photo-signal handoff](TEMPORAL_PHOTO_RAW.md), added at API
|
|
104
|
-
0.110.0, constructs a distinct compact record for dark/charge/RAW consumers.
|