@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,133 +0,0 @@
|
|
|
1
|
-
# Simulated Sensor RAW DNG / JPEG acceptance
|
|
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
|
-
This record separates implemented export behavior, reproducible independent
|
|
6
|
-
checks and external application acceptance for #16. The files are synthetic
|
|
7
|
-
Photivra captures, never photographs from a physical commercial camera.
|
|
8
|
-
|
|
9
|
-
## Current implemented boundary
|
|
10
|
-
|
|
11
|
-
`simulateEnvironmentSensorRawFrame()` executes supplied analytic environment
|
|
12
|
-
queries through the existing optics, wavelength/EQE, local temporal exposure,
|
|
13
|
-
dark/charge/capacity, seeded shot/read noise and ADC pipeline. Its exact native
|
|
14
|
-
post-ADC CFA frame feeds `createPhotographicExportPair()` and the shared #112
|
|
15
|
-
processed path. The serializer does not reconstruct the sensor simulation.
|
|
16
|
-
Attached manual RAW fixtures remain valid low-level serializer inputs, but are
|
|
17
|
-
not the evidence used here for producer-origin acceptance.
|
|
18
|
-
|
|
19
|
-
Provider transport, visibility, calibration and complete production-stage
|
|
20
|
-
activation are explicitly unverified. Source evaluation and authoritative
|
|
21
|
-
sensor-code production are executed; these are different claims. Bounded production integration is now merged in #178; provider transport and unsupported combinations remain explicit limits, not properties established by a DNG file. Child diagnostics remain accessible in the engine result.
|
|
22
|
-
|
|
23
|
-
The public export API requires explicit profiles, WB/rendering policy, identity,
|
|
24
|
-
workflow and event time. It copies validated data before asynchronous hashing.
|
|
25
|
-
The commercial app and calling runtime own file downloads. There is no file IO,
|
|
26
|
-
wall-clock sampling, service, new runtime dependency, Adobe SDK or competing
|
|
27
|
-
writer in the engine.
|
|
28
|
-
|
|
29
|
-
## Reproduce the acceptance files
|
|
30
|
-
|
|
31
|
-
```sh
|
|
32
|
-
node scripts/generate-producer-export-acceptance.mjs OUTPUT_DIRECTORY
|
|
33
|
-
python scripts/verify-producer-export-acceptance.py OUTPUT_DIRECTORY
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
The generator uses the existing repository dev compiler to compile only its
|
|
37
|
-
entry point and imported engine/owned fixture modules in a disposable directory.
|
|
38
|
-
It cleans that directory on success or failure. It is not an engine dependency
|
|
39
|
-
or package export. Run from a checkout with its normal dev dependencies installed.
|
|
40
|
-
The Python verifier requires independently installed Pillow, lxml and LibRaw.
|
|
41
|
-
Missing required independent tooling is a failure, not a passing skipped check.
|
|
42
|
-
|
|
43
|
-
Five 72×48 native pairs are committed in
|
|
44
|
-
`test/fixtures/producer-export-acceptance/`: landscape, both portrait directions,
|
|
45
|
-
inverted landscape and manual WB. Each represents an explicitly identified
|
|
46
|
-
shutter event with distinct artifact IDs; the controlled cases use the same seed
|
|
47
|
-
and physical/noise inputs, so orientation and metadata-WB variations preserve
|
|
48
|
-
all native codes and RAW-data identity. Portrait JPEGs are 48×72, upright JPEG
|
|
49
|
-
orientation is 1, and DNG retains native 72×48 pixels with its orientation tag.
|
|
50
|
-
|
|
51
|
-
These are explicit #130-derived camera/exposure/seed/units variants. The source
|
|
52
|
-
is an owned three-zone analytic angular environment at 400–500 nm, not the
|
|
53
|
-
canonical Lambertian target or a measured calibration. Optical transmission,
|
|
54
|
-
EQE, uniform aperture response, absent AA/PSF and direct noiseless source
|
|
55
|
-
radiance remain named approximations. Physical sampling uses square 500 µm
|
|
56
|
-
pitch, a declared 0.8×0.6-pitch sensitive aperture, one aperture midpoint and
|
|
57
|
-
one shutter midpoint, with two spectral nodes. Each capture executes 6,912
|
|
58
|
-
provider queries. This is bounded reference evidence, not native camera pixel
|
|
59
|
-
pitch, high-resolution output, measured accuracy or convergence evidence.
|
|
60
|
-
|
|
61
|
-
The actual generated samples include signed-noise shadows below BlackLevel 64,
|
|
62
|
-
physical clipping and ADC clipping at WhiteLevel 1023. Original RAW integers,
|
|
63
|
-
not an RGB screenshot or later tone curve, supply the DNG. The manual-WB case
|
|
64
|
-
changes AsShotNeutral and JPEG development, while preserving those RAW codes.
|
|
65
|
-
The manifest records exact file SHA-256, RAW-data identity, expected codes/RGB,
|
|
66
|
-
producer model/version/query count, clipping counts and bounded elapsed/heap
|
|
67
|
-
observations. Regeneration can change incidental measurement fields; image
|
|
68
|
-
samples/file hashes remain deterministic for the pinned engine/policy.
|
|
69
|
-
|
|
70
|
-
## Independent checks
|
|
71
|
-
|
|
72
|
-
The optional verifier uses Pillow's TIFF directory reader and independent strip
|
|
73
|
-
unpacking for exact RAW codes; Pillow decodes JPEG and standard EXIF. DOM/Expat
|
|
74
|
-
and lxml/libxml2 independently agree on XMP attributes. LibRaw's documented
|
|
75
|
-
opaque-handle C API opens, unpacks and renders every DNG, independently verifies
|
|
76
|
-
native dimensions/white code and reads camera-neutral WB gains. Its emitted
|
|
77
|
-
PPM is decoded by Pillow to verify all oriented output dimensions.
|
|
78
|
-
|
|
79
|
-
LibRaw API reference: https://www.libraw.org/docs/API-C.html. No LibRaw source,
|
|
80
|
-
private structure layout or version-dependent pointer offset is incorporated.
|
|
81
|
-
Its version is recorded in `independent-validation.json`. Different demosaic,
|
|
82
|
-
tone or display algorithms are not expected to produce pixel-identical images.
|
|
83
|
-
|
|
84
|
-
Standard capture metadata agree across DNG/JPEG; shared CaptureID/hash remain
|
|
85
|
-
separate from per-resource IDs and native RAW-data identity. Privacy checks
|
|
86
|
-
reject false camera/GPS/serial/host/creator/AI assertions through the existing
|
|
87
|
-
strict metadata contract and verify selected forbidden tags are absent in files.
|
|
88
|
-
Advanced noise hints, calibration matrices/signatures, rights fields and original
|
|
89
|
-
RAW-resource lineage are omitted when no justified mapping exists. See
|
|
90
|
-
[photographic export](PHOTOGRAPHIC_EXPORT.md) and
|
|
91
|
-
[capture metadata](CAPTURE_EXPORT_METADATA.md) for the existing field contract.
|
|
92
|
-
|
|
93
|
-
## Supported sizes and memory semantics
|
|
94
|
-
|
|
95
|
-
All existing stage limits remain unchanged: the reference producer,
|
|
96
|
-
reconstruction and full-native export path permit at most **4,096 native sites**.
|
|
97
|
-
The structural attachment ceiling alone does not authorize image execution.
|
|
98
|
-
No 24/45/60 MP export, streaming or resampling is claimed. A tiny output crop
|
|
99
|
-
cannot evade full-native counting. See [RAW frame envelope](RAW_FRAME_ENVELOPE.md)
|
|
100
|
-
and its complete-edge regression tests.
|
|
101
|
-
|
|
102
|
-
The generator also records 24/45/60 MP unsupported-size preflight requests with
|
|
103
|
-
an empty site payload. They reject before any provider invocation or large image
|
|
104
|
-
allocation. These are measured rejections with deliberately unsupported/missing
|
|
105
|
-
coverage, not typical-resolution memory/performance benchmarks. Before/after
|
|
106
|
-
heap is not peak memory; measured timings are informational. The explicit
|
|
107
|
-
bounded support declaration satisfies #16's supported-limit option without
|
|
108
|
-
claiming high-resolution processing or silently raising safety budgets.
|
|
109
|
-
|
|
110
|
-
## Closure map
|
|
111
|
-
|
|
112
|
-
| Requirement | Implementation / evidence | Status |
|
|
113
|
-
| --- | --- | --- |
|
|
114
|
-
| True native post-ADC CFA RAW; exact lossless codes; effective ADC/black/white consistency; no baked processing | `sensor-raw-producer.test.ts`, `raw-output-conformance.test.ts`, producer-derived files and independent verifier | Implemented / independently checked |
|
|
115
|
-
| RAW directly from simulated capture; ISO/gain upstream; same-capture standalone JPEG | `environment-raw-integration.test.ts`, `raw-output-conformance.test.ts`, generated producer pairs | Implemented / bounded origin evidence |
|
|
116
|
-
| Shared capture/provenance/hash; distinct resource/RAW IDs; truthful Photivra EXIF/XMP/IPTC | `capture-export-metadata.test.ts`, `photographic-export.test.ts`, independent file inspection | Implemented / checked |
|
|
117
|
-
| No generative-AI, real-camera, GPS/serial/host/path or fabricated creator/rights claims | Strict input projection and existing negative tests; generated file inspection | Implemented / checked |
|
|
118
|
-
| Native CFA phase, active/default crop, aspect and all orientations | `photographic-export.test.ts`, four generated orientations and LibRaw rendered dimensions | Implemented / checked |
|
|
119
|
-
| As-shot WB metadata does not rewrite RAW; virtual color interpretation is explicit | `photographic-export-correction.test.ts`, same-code manual-WB case and LibRaw neutral-gain interpretation | Implemented / approximate color basis |
|
|
120
|
-
| Deterministic fixture/code/critical metadata acceptance | Committed manifests, hashes and independent TIFF/JPEG/XML/LibRaw verification | Checked |
|
|
121
|
-
| Size/memory boundary and optional runtime/package surface | Existing 4,096-native-site envelope, unsupported-size records, browser/package gates | Explicit supported limits |
|
|
122
|
-
| Adobe RAW interpretation plus independent RAW reader | LibRaw all five pairs; owner Lightroom 9.6 screenshots cover four orientations/as-shot and usable exposure/WB | Reviewed bounded acceptance |
|
|
123
|
-
| JPEG independent decoder/editor/browser acceptance | Pillow all five pairs; owner Photoshop 2026/Chrome landscape screenshots | Reviewed bounded acceptance |
|
|
124
|
-
| Provenance/license review | Existing Apache/DNG notices, owned fixtures and no new dependency; AI-assisted contribution | Owner approved and signed PR #201 |
|
|
125
|
-
| Accurate simulated-RAW documentation | This record and existing metadata/export/frame documentation | Reviewed and merged; reconciled for 1.0 |
|
|
126
|
-
|
|
127
|
-
## Recorded owner external acceptance — 2026-10-02
|
|
128
|
-
|
|
129
|
-
[Reviewed PR #201](https://github.com/Photivra/photivra/pull/201) records owner-supplied screenshots: Lightroom 9.6 (build 20260923-1659-a32d844) opens landscape DNG at 72×48, both portraits at 48×72 and inverted landscape at 72×48. Exposure +2.34 brightens the landscape; WB at 6500 K/Tint −78 visibly changes the midtone band. The manual-WB thumbnail uses As Shot and shows a distinct warm band; Adobe's displayed 50,000 K/Tint +28 is its interpretation of synthetic gains, not measured color-temperature accuracy. Photoshop 2026 and Chrome render the landscape JPEG at 72×48.
|
|
130
|
-
|
|
131
|
-
Independent automated decoding covers all five pairs. User-Mac file hashes and exact Photoshop/Chrome builds were not supplied/reverified; editor/browser screenshots cover the landscape JPEG, not every JPEG variant. These limits are preserved. The committed independent report and `external-review.template.json` describe the earlier automated-only checkpoint; template booleans are not new acceptance evidence. PR #201 merged as `8f5259c4d6b40746173d7842554d416f0138ee27` after owner review/DCO and merge authorization, closing #16. The release audit does not regenerate scientific fixtures, claim additional editor tests or install/buy commercial tooling.
|
|
132
|
-
|
|
133
|
-
For a future export/model change, rerun the independent reader and relevant Adobe/editor/browser checks against that exact candidate and record hashes/builds. Runtime arithmetic/export schemas remain unchanged in this release preparation.
|
|
@@ -1,269 +0,0 @@
|
|
|
1
|
-
# Generic equipment tier reference assets
|
|
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
|
-
`resolveGenericEquipmentTierCatalog({ presetVersion: "1.0.0" })` returns immutable
|
|
6
|
-
Consumer, Prosumer and Professional body/lens reference bundles. These are
|
|
7
|
-
Photivra-owned synthetic educational approximations, with unquantified physical
|
|
8
|
-
uncertainty. They are not measured calibration, commercial camera emulation or a
|
|
9
|
-
universal ranking of real equipment.
|
|
10
|
-
|
|
11
|
-
The tier is a catalog key. Scientific functions consume the ordinary explicit
|
|
12
|
-
profiles; no tier multiplier enters their equations. Sensor format, native raster
|
|
13
|
-
and capture geometry remain caller-owned. All three initial lens forms are 50 mm
|
|
14
|
-
primes with a common f/4–f/16 capability range; prime/zoom and focal range are
|
|
15
|
-
separate asset properties rather than tier meanings. This first catalog contains
|
|
16
|
-
no zoom, macro, OIS or variable focal-length family.
|
|
17
|
-
|
|
18
|
-
## Exact selection and reference binding
|
|
19
|
-
|
|
20
|
-
```ts
|
|
21
|
-
import {
|
|
22
|
-
createGenericEquipmentTierSelection,
|
|
23
|
-
parseGenericEquipmentTierSelection,
|
|
24
|
-
resolveGenericEquipmentTierLensProfiles
|
|
25
|
-
} from "@photivra/engine";
|
|
26
|
-
|
|
27
|
-
const selection = createGenericEquipmentTierSelection({
|
|
28
|
-
presetVersion: "1.0.0",
|
|
29
|
-
bodyTier: "consumer",
|
|
30
|
-
lensTier: "professional"
|
|
31
|
-
});
|
|
32
|
-
const saved = parseGenericEquipmentTierSelection(
|
|
33
|
-
JSON.parse(JSON.stringify(selection))
|
|
34
|
-
);
|
|
35
|
-
const profiles = resolveGenericEquipmentTierLensProfiles({
|
|
36
|
-
selection: saved,
|
|
37
|
-
state: {
|
|
38
|
-
bodyId: "photivra-consumer-body", bodyVersion: "1.0.0",
|
|
39
|
-
lensId: "photivra-professional-prime", lensVersion: "1.0.0",
|
|
40
|
-
focalLengthMm: 50, aperture: 4, focusDistanceM: 5,
|
|
41
|
-
captureMode: "still", frameRateHz: 0, stabilizationMode: "off",
|
|
42
|
-
outputWidth: 600, outputHeight: 400
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
Omitting `lensTier` pairs matching tiers; all nine pairings are allowed through
|
|
48
|
-
#109's capability resolver. The strict saved-selection parser binds exact IDs,
|
|
49
|
-
preset version and every profile reference, including versions on wrappers for
|
|
50
|
-
subsystems whose native profile lacks a version field. Unknown fields, missing
|
|
51
|
-
references, changed versions and a `latest` alias fail. It returns the canonical
|
|
52
|
-
immutable selection. Output dimensions must be explicit and valid; they do not
|
|
53
|
-
select sensor size. This module does not mutate the POC or production plan.
|
|
54
|
-
|
|
55
|
-
The optical resolver supports only the explicit still/reference acquisition
|
|
56
|
-
state above. Aperture capability does not authorize extrapolating optical data
|
|
57
|
-
outside f/4. Still stabilization must be off for this optical slice. It exposes:
|
|
58
|
-
|
|
59
|
-
- radial distortion and lateral-CA channel maps (the CA map already includes the
|
|
60
|
-
common radial base; do not apply that base twice);
|
|
61
|
-
- normalized illumination vignetting, separate breathing projection scale and
|
|
62
|
-
a synthetic flat 540–560 nm transmission reference;
|
|
63
|
-
- nine scalar Fraunhofer complex-pupil slices at center, mid-field (10, 6 mm),
|
|
64
|
-
corner (18, 12 mm), each at signed image-plane defocus −20, 0 and +20 µm;
|
|
65
|
-
- a 550 nm/vacuum clean-lens ghost/veil profile, and separately declared
|
|
66
|
-
reconstructed-linear geometry/CA/gain correction components.
|
|
67
|
-
|
|
68
|
-
The 5×5 pupil grids and OPD arrays are independently authored discrete reference
|
|
69
|
-
responses tagged to these exact contexts. They are not an inferred continuous
|
|
70
|
-
lens model or a physically calibrated prediction at arbitrary defocus. No
|
|
71
|
-
interpolation is offered. Normalized PSF shape energy remains one; relative pupil
|
|
72
|
-
throughput stays separate. Pupil clipping and illumination falloff are separate
|
|
73
|
-
contributions with distinct ownership. Their simultaneous production composition
|
|
74
|
-
is not defined here. LoCA, spectral bokeh, onion rings, texture rendering and
|
|
75
|
-
measured MTF are not implemented by these assets.
|
|
76
|
-
|
|
77
|
-
Correction transforms retain the established destination-to-source semantics.
|
|
78
|
-
Sequential common radial and channel-offset transforms are generic approximate
|
|
79
|
-
compensation; they do not claim the exact inverse of the combined optical CA
|
|
80
|
-
map. Gain is partial and amplifies sampled noise. Correction never recreates
|
|
81
|
-
photons, updates metering, regenerates noise or changes physical capture history.
|
|
82
|
-
The caller must provide any required source prefiltering; a resampler declaration
|
|
83
|
-
is a contract, not proof that prefiltering was performed.
|
|
84
|
-
|
|
85
|
-
## Curated declarations and tradeoffs
|
|
86
|
-
|
|
87
|
-
| Explicit body declaration | Consumer | Prosumer | Professional |
|
|
88
|
-
| --- | --- | --- | --- |
|
|
89
|
-
| Maximum standard exposure index | 6400 | 12800 | 25600 |
|
|
90
|
-
| Maximum declared cadence (fps) | 4 | 8 | 12 |
|
|
91
|
-
| Maximum logical sequence frames | 8 | 16 | 24 |
|
|
92
|
-
| Base electronic RMS read noise (electrons) | 6 | 3 | 2 |
|
|
93
|
-
| Data readout duration (seconds) | 0.030 | 0.015 | 0.008 |
|
|
94
|
-
| Pitch/yaw/roll stabilization gain | 0.35 | 0.65 | 0.85 |
|
|
95
|
-
| Continuous AF mode | unavailable | available | available |
|
|
96
|
-
| Highlight-weighted meter/ambience AWB | unavailable | available | available |
|
|
97
|
-
|
|
98
|
-
ISO selects explicit readout regimes on a finite power-of-two setting grid.
|
|
99
|
-
It is not a photon/noise equation. Full-well/storage physics is not inferred from
|
|
100
|
-
pre-ADC saturation or ADC white. AF uses the same ideal instantaneous actuator
|
|
101
|
-
for every tier; mode availability does not establish faster or more accurate
|
|
102
|
-
tracking. Data readout duration does not establish exposure scan or flash motion
|
|
103
|
-
geometry. Flash capabilities declare front/rear ordinary sync and no HSS; callers
|
|
104
|
-
must resolve actual exposure-window compatibility separately.
|
|
105
|
-
|
|
106
|
-
The lens declarations intentionally include a tradeoff: Professional has less
|
|
107
|
-
clipping/stray light and lower radial/CA coefficients, but more f/4 falloff and
|
|
108
|
-
peripheral gain cost than Prosumer. Near/far pupil character also differs rather
|
|
109
|
-
than every wavefront coefficient shrinking monotonically. No overall quality or
|
|
110
|
-
bokeh score is produced.
|
|
111
|
-
|
|
112
|
-
## Acceptance boundary
|
|
113
|
-
|
|
114
|
-
`test/generic-tier-presets.test.ts` reuses #130's canonical focal length, aperture,
|
|
115
|
-
focus, illumination wavelength and exposure time. It leaves that fixture unchanged.
|
|
116
|
-
A small explicit 9×9 sampled-ramp/noise target tests correction using one capture
|
|
117
|
-
and one noise identity for Off/On. The target is a sampled executor fixture, not a
|
|
118
|
-
radiometrically composed scene or a resolution/MTF claim. Multidimensional pupil
|
|
119
|
-
checks cover all declared field/defocus slices and separate passivity/energy.
|
|
120
|
-
Every advertised ISO setting resolves into an explicit regime. Matched angular
|
|
121
|
-
disturbance, corner radial/CA, off-frame ghost/veil and correction Jacobian/source
|
|
122
|
-
coverage checks consume the existing low-level APIs. The shifted output lattice
|
|
123
|
-
exposes missing support and joint crop rather than extending edges.
|
|
124
|
-
|
|
125
|
-
`test/fixtures/generic-tier-assets-v1.json` pins the complete canonical manifest
|
|
126
|
-
with SHA-256. Retuning an existing version requires deliberate fixture change and
|
|
127
|
-
review; accepted retuning must introduce a new preset/profile version while
|
|
128
|
-
retaining historical definitions required by saved simulations. This initial
|
|
129
|
-
resolver recognizes only 1.0.0 and rejects unavailable history without fallback.
|
|
130
|
-
|
|
131
|
-
Initial acceptance was partial; the current #116 disposition is documented in
|
|
132
|
-
[TIER_PRESET_ACCEPTANCE.md](TIER_PRESET_ACCEPTANCE.md). #119 remains the broader
|
|
133
|
-
cross-tier validation ticket. The following inventory describes the initial slice.
|
|
134
|
-
Remaining acceptance includes composed physical scene/corrected-image reports,
|
|
135
|
-
residual CA/distortion and retained-FOV/stretch/edge-response envelopes, controlled
|
|
136
|
-
bokeh/textured backgrounds and spectral effects where modeled, broader body
|
|
137
|
-
stabilization/AF/drive/meter/WB execution cases, and applicable output paths.
|
|
138
|
-
There is no separate tier-specific browser approximation to compare here; the
|
|
139
|
-
public implementation remains browser-safe and uses the ordinary reference APIs.
|
|
140
|
-
No private application acceptance is invented.
|
|
141
|
-
|
|
142
|
-
Initial tier assets landed at root API 0.105.0; the current root API is 1.0.1.
|
|
143
|
-
This acceptance-only extension does not change runtime/API or asset definitions. Selection schema 0.1.0, asset version 1.0.0, npm package,
|
|
144
|
-
POC and production contracts remain independent. Human scientific/provenance
|
|
145
|
-
review and contribution-specific DCO certification are still required.
|
|
146
|
-
|
|
147
|
-
## Correction residual and sampled-edge acceptance
|
|
148
|
-
|
|
149
|
-
`test/generic-tier-correction-acceptance.test.ts` extends #119 with the exact 1.0.0
|
|
150
|
-
assets on a 9×9 synthetic slanted-step target and fixed alternating noise. Correction
|
|
151
|
-
Off/On forks one sampled capture. Independent k1 radial arithmetic, finite-difference
|
|
152
|
-
Jacobians, bilinear weights and polynomial partial-reciprocal gain predict every
|
|
153
|
-
channel sample. These checks quantify sampled interpolation, not optical MTF or a
|
|
154
|
-
radiometrically composed scene.
|
|
155
|
-
|
|
156
|
-
Independent monotonic scalar bisection recovers ideal coordinates through each
|
|
157
|
-
combined physical radial/CA map. Common green distortion is compensated, while
|
|
158
|
-
sequential partial channel correction leaves a nonzero, reduced CA residual. The
|
|
159
|
-
bounded sampled points require less than 0.1 mm residual displacement; this is a
|
|
160
|
-
regression envelope for synthetic definitions, not measured accuracy or a continuous
|
|
161
|
-
field guarantee. Full 2×2 Jacobians, determinants and principal stretches are checked
|
|
162
|
-
independently. A shifted lattice checks exact missing-source support and the joint
|
|
163
|
-
valid crop. Retained channel pixel-center ray envelopes remain distinct from captured
|
|
164
|
-
pixel-edge FOV; the joint RGB crop cannot expand a channel's ray coverage.
|
|
165
|
-
|
|
166
|
-
No runtime, root API, schema, preset manifest, package or POC behavior changes.
|
|
167
|
-
This does not complete #116/#119: physical PSF/scene composition, broader body
|
|
168
|
-
execution and applicable export acceptance remain separately tracked.
|
|
169
|
-
|
|
170
|
-
## Body execution acceptance
|
|
171
|
-
|
|
172
|
-
`test/generic-tier-body-acceptance.test.ts` executes the exact 1.0.0 body
|
|
173
|
-
assets through existing public APIs using #130's matched optical/exposure state.
|
|
174
|
-
Fifteen cases cover all three tiers:
|
|
175
|
-
|
|
176
|
-
- Burst times follow the maximum of explicit cadence and exposure duration;
|
|
177
|
-
a slow shutter cannot overlap ordinary still exposures. Self-timer delay is
|
|
178
|
-
applied once. Frame seeds are reproducible/distinct within the tested sequence;
|
|
179
|
-
frame-count limits and unsupported focus bracketing reject.
|
|
180
|
-
- Single AF acquires and holds; focus/release priority gates remain separate.
|
|
181
|
-
Consumer rejects continuous AF; Prosumer/Professional follow the same known
|
|
182
|
-
target and require explicit reacquisition after loss. The common ideal actuator
|
|
183
|
-
does not establish real tracking speed or recognition performance.
|
|
184
|
-
- Uniform/highlight metering uses independently calculated weighted means and
|
|
185
|
-
target ratios, stays invariant to output crop, and rejects tone-mapped input.
|
|
186
|
-
- Observable pre-WB weighted patches yield independent logarithmic-strength AWB
|
|
187
|
-
gains. Clipped samples are excluded/reported, unsupported policies reject,
|
|
188
|
-
and a locked state preserves resolved gains without altering RAW/exposure.
|
|
189
|
-
- Global data-readout declarations retain nonzero duration with zero spatial
|
|
190
|
-
phase skew under all three shutter mechanisms. These tests do not establish
|
|
191
|
-
exposure-boundary scans, flash compatibility or rolling-motion behavior.
|
|
192
|
-
|
|
193
|
-
Assets, runtime contracts and all versions remain unchanged. These are bounded
|
|
194
|
-
synthetic body-policy execution checks, not measured camera calibration or full
|
|
195
|
-
capture/production/output acceptance. Physical scene/PSF composition, applicable
|
|
196
|
-
export wiring and broader stabilization/flash acceptance remain separate work.
|
|
197
|
-
|
|
198
|
-
## Readout-to-file acceptance
|
|
199
|
-
|
|
200
|
-
`test/generic-tier-output-acceptance.test.ts` binds the exact body 1.0.0
|
|
201
|
-
readout/signal-chain profiles to an explicitly declared owned 2×2 Bayer/native-still
|
|
202
|
-
test topology. The topology IDs are registered to those required by the assets;
|
|
203
|
-
matching channel names alone is not the binding. Charge expectations, physical
|
|
204
|
-
storage capacity and ideal test-color interpretation remain independent synthetic
|
|
205
|
-
fixture contracts. This tiny raster is structural regression evidence and is not
|
|
206
|
-
an external-editor acceptance file or a realistic pixel sampling model.
|
|
207
|
-
|
|
208
|
-
Nine cases verify that ISO 100/400 resolve the same base regime and ISO 800 selects
|
|
209
|
-
the explicitly declared high regime. Expected photons/charge and the realized
|
|
210
|
-
stored charge remain unchanged while electronic noise and conversion gain change.
|
|
211
|
-
Independent signed-signal/pedestal/quantization arithmetic predicts each RAW code.
|
|
212
|
-
The producer itself still consumes an explicit regime: changing ISO metadata
|
|
213
|
-
without changing that regime cannot alter its samples. Unsupported ISO settings
|
|
214
|
-
reject in the upstream capability resolver.
|
|
215
|
-
|
|
216
|
-
Both regimes export through all four orientations. Stored DNG codes match every
|
|
217
|
-
native produced sample; downstream +1 EV preserves codes, capture/noise and RAW
|
|
218
|
-
image identity while changing processed pixels. Repeated JPEG export is deterministic.
|
|
219
|
-
These are genuine producer-to-file checks, with upstream radiometry and producer
|
|
220
|
-
origin verification still explicitly unasserted. They do not establish tier lens
|
|
221
|
-
PSF/scene composition, calibrated color, full production activation or external
|
|
222
|
-
editor/high-resolution interoperability. Runtime, API/schema and asset versions
|
|
223
|
-
remain unchanged.
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
## Supported production and finite pupil scene acceptance
|
|
227
|
-
|
|
228
|
-
`test/generic-tier-production-acceptance.test.ts` runs every body/lens pairing
|
|
229
|
-
through the authoritative plan 0.7.0 environment route using the exact preset
|
|
230
|
-
transmission values and body readout/ISO profiles. A separately identified fixture
|
|
231
|
-
bridge explicitly binds the selected lens's transmission to its exposure-capability
|
|
232
|
-
profile ID; those two IDs represent different contracts. The test does not retune
|
|
233
|
-
or overwrite the saved 1.0.0 assets.
|
|
234
|
-
|
|
235
|
-
The owned 2×2 sensor registration, 540–560 nm flat EQE, charge capacity, dark
|
|
236
|
-
current and ideal output color are independent approximations, never facts inferred
|
|
237
|
-
from body tier. All three body selections produce the same expected photo charge
|
|
238
|
-
for a given lens. The lens transmission ratios independently predict photo-count
|
|
239
|
-
ratios; ISO regime changes preserve photo charge. Executed RAW is preserved through
|
|
240
|
-
processing and deterministic paired export. Both consumer manifests retain the same
|
|
241
|
-
immutable executed result. Unsupported wavelength support and stale commitments
|
|
242
|
-
reject before provider callbacks.
|
|
243
|
-
|
|
244
|
-
Production explicitly omits PSF and declares unity field throughput. It does not
|
|
245
|
-
claim to compose the assets' discrete 550 nm pupil data across a continuous spectrum,
|
|
246
|
-
combine pupil clipping with illumination falloff, or execute every lens effect.
|
|
247
|
-
That omission remains recorded as modeled-zero with evidence and limitations.
|
|
248
|
-
|
|
249
|
-
A separate finite monochromatic sampled scene evaluates all 27 exact field/defocus
|
|
250
|
-
pupil responses. An independent direct phase sum predicts each normalized PSF tap;
|
|
251
|
-
controlled texture/highlight samples are summed at every tap with metric pitch and
|
|
252
|
-
+Y-up/native +Y-down signs. The same sampled physical response feeds correction
|
|
253
|
-
Off/On, retaining capture/noise identity, full Jacobians and retained ray coverage.
|
|
254
|
-
This coarse sampled scene is neither measured MTF nor a continuous optical model,
|
|
255
|
-
color-fringing prediction or a perceptual bokeh score. No interpolation, sharpen
|
|
256
|
-
pass, hidden quality multiplier or external data is introduced.
|
|
257
|
-
|
|
258
|
-
See the acceptance disposition for #116 ownership, merged #119 validation and
|
|
259
|
-
scientific limits. Runtime/API/schema/asset/package/POC versions stay unchanged.
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
## Versioned cross-tier reports
|
|
263
|
-
|
|
264
|
-
The reviewed/merged #119 acceptance layer is [TIER_ACCEPTANCE.md](TIER_ACCEPTANCE.md).
|
|
265
|
-
It links a reproducible three-domain report, normative finite regression envelopes,
|
|
266
|
-
explicit multidimensional pupil/texture and crop/gain tradeoffs, and matched signed
|
|
267
|
-
stabilization/ordinary-flash checks. Existing body, correction and producer-to-file
|
|
268
|
-
acceptance remains part of that evidence. Measured calibration and unsupported
|
|
269
|
-
optical metrics are not invented; runtime/assets and all versions are unchanged.
|
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
# Call-local geometry preparation reuse: #43
|
|
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
|
-
`calculateGeometricSamplingPlan()` already parses and copies a complete transform
|
|
6
|
-
list at its public boundary. It previously called the public scalar mapping API
|
|
7
|
-
for every destination pixel, reparsing/copying that same list and rebuilding its
|
|
8
|
-
preparation provenance each time. This change uses one private point evaluator
|
|
9
|
-
for the call-owned mapping. The public scalar API still prepares external input
|
|
10
|
-
on every call and uses that same evaluator.
|
|
11
|
-
|
|
12
|
-
This is a bounded internal optimization against merged main
|
|
13
|
-
`c1374c31473f893310d1ce4f0d5a737aaba43ab5`, not a new prepared/cache API. It consumes
|
|
14
|
-
no pending export/tier/POC draft. Root API 0.103.0, geometry schema/model versions,
|
|
15
|
-
POC, package and production contracts stay unchanged.
|
|
16
|
-
|
|
17
|
-
## Whole-consumer measurements
|
|
18
|
-
|
|
19
|
-
[Recorded evidence](benchmarks/2026-10-02-geometric-preparation-reuse.json) contains
|
|
20
|
-
two independent ordinary paired runs and one GC-assisted run. Both source trees
|
|
21
|
-
were built with `tsc`. Context is Node 24.19.0/V8 13.6.233.17-node.51, Linux x64,
|
|
22
|
-
AMD EPYC 9V74 and 9 logical CPUs on shared execution infrastructure. Each run
|
|
23
|
-
records the reference commit and candidate source-file SHA-256; the source/build
|
|
24
|
-
labels are operator-attested, and the fingerprint identifies the runtime change.
|
|
25
|
-
|
|
26
|
-
The consumers are merged `calculateGeometricSamplingPlan()` and the whole
|
|
27
|
-
`calculateLensCorrectedCapture()` executor: common radial map, channel-specific
|
|
28
|
-
CA, affine map, joint support, actual resampling, and peripheral gain. Both use
|
|
29
|
-
the same owned synthetic capture/noise identity. The sampled linear plane spans
|
|
30
|
-
24×24 mm, with explicit pitch and a separate physical profile normalization
|
|
31
|
-
radius. Nearest sampling is explicit; the bounded compressing coordinate maps
|
|
32
|
-
have no source-prefilter requirement. No prefilter is claimed or fabricated.
|
|
33
|
-
These are real bounded engine consumers, not a copied equation microbenchmark
|
|
34
|
-
or a complete physical production renderer.
|
|
35
|
-
|
|
36
|
-
| Consumer | Reference ms, ordinary run 1 | Candidate ms, run 1 | Candidate/reference, run 1 | Ratio, run 2 | GC-assisted ratio |
|
|
37
|
-
| --- | ---: | ---: | ---: | ---: | ---: |
|
|
38
|
-
| Plan 1×1 | 0.035 | 0.025 | 0.716 | 0.702 | 0.969 |
|
|
39
|
-
| Correction 1×1 | 0.303 | 0.261 | 0.864 | 0.833 | 0.869 |
|
|
40
|
-
| Plan 5×5 | 0.476 | 0.267 | 0.560 | 0.593 | 0.603 |
|
|
41
|
-
| Correction 5×5 | 3.364 | 2.124 | 0.631 | 0.635 | 0.651 |
|
|
42
|
-
| Plan 17×17 | 5.566 | 2.987 | 0.537 | 0.568 | 0.646 |
|
|
43
|
-
| Correction 17×17 | 39.255 | 24.333 | 0.620 | 0.612 | 0.606 |
|
|
44
|
-
| Plan 33×33 | 22.461 | 11.942 | 0.532 | 0.584 | 0.625 |
|
|
45
|
-
| Correction 33×33 | 155.051 | 100.624 | 0.649 | 0.618 | 0.642 |
|
|
46
|
-
| Plan 65×65 | 90.566 | 59.639 | 0.659 | 0.691 | 0.599 |
|
|
47
|
-
| Correction 65×65 | 640.165 | 468.194 | 0.731 | 0.740 | 0.749 |
|
|
48
|
-
|
|
49
|
-
There are five measured blocks, alternating reference/candidate order and rotating
|
|
50
|
-
scenario order. The 1×1/5×5 cases use 100 warmup calls and 100 calls per block;
|
|
51
|
-
larger cases use two warmups and one whole call per block. Raw block timing and
|
|
52
|
-
retained-heap deltas are preserved. Final runs occurred after release checks,
|
|
53
|
-
without concurrent task benchmarks/tests. Shared host activity is uncontrolled.
|
|
54
|
-
GC-assisted distributions are separate; do not infer GC causality from ratios.
|
|
55
|
-
|
|
56
|
-
The two ordinary runs show 26–39% shorter corrected-capture calls at 17×17 through
|
|
57
|
-
65×65. Corresponding sampling plans are about 31–47% shorter. Small cases also
|
|
58
|
-
improve in these runs, but microsecond-scale results have more timing noise.
|
|
59
|
-
These are not portable speed constants, browser frame times, observed product
|
|
60
|
-
traffic, full-resolution throughput or proof of an end-user latency benefit.
|
|
61
|
-
|
|
62
|
-
The decision is to retain this small internal candidate for review. The result
|
|
63
|
-
justifies removal of duplicate preparation in this concrete consumer, not a
|
|
64
|
-
public mutable prepared engine, extra solver, vignetting/rotation abstraction or
|
|
65
|
-
cross-input cache. #45's POC result is independent and not its evidence basis.
|
|
66
|
-
No browser-motivated public API is introduced; no browser performance claim is
|
|
67
|
-
made. The public implementation remains browser-safe, with the existing package
|
|
68
|
-
and static gates required.
|
|
69
|
-
|
|
70
|
-
## Preparation, profiling and memory
|
|
71
|
-
|
|
72
|
-
Separate preparation loops measured about 7–8 µs to parse/copy the three-transform
|
|
73
|
-
mapping; that cost remains at every public boundary. There is no new preparation
|
|
74
|
-
stage or long-lived state. The sampling-plan result still owns its normal mapping
|
|
75
|
-
and all per-pixel diagnostics. Call-local reuse avoids repeating the same work
|
|
76
|
-
for every point. Small grids above include one-off/amortization evidence rather
|
|
77
|
-
than assuming a prepared path is always free.
|
|
78
|
-
|
|
79
|
-
Separate CPU and allocation sampling used five whole 65×65 corrected captures
|
|
80
|
-
per path. Reference CPU stacks included `prepareGeometricMapping` in 882 of 2,657
|
|
81
|
-
samples inside the consumer (about 33%). Candidate had 1 of 1,779. This is sampled
|
|
82
|
-
inclusive attribution, not exact elapsed time or a claim that preparation costs
|
|
83
|
-
33% everywhere. Recursive finite checks, radial work and other categories overlap;
|
|
84
|
-
do not sum the category counts. Inlining and sampling affect attribution.
|
|
85
|
-
|
|
86
|
-
V8 Inspector heap sampling, at 32 KiB intervals and requesting inclusion of
|
|
87
|
-
objects collected by major/minor GC, estimated 6,946,184,128 sampled bytes for
|
|
88
|
-
reference and 4,840,744,824 for candidate over five captures (about 30% lower).
|
|
89
|
-
Preparation-inclusive estimates fell from 2,075,859,720 to 656,240 bytes. These are
|
|
90
|
-
statistical allocation estimates, not exact allocation counters, retained live
|
|
91
|
-
memory or GC-pause measurements. Instrumented runs are separate from all timing
|
|
92
|
-
comparisons. No raw inspector profiles/private paths are stored. Raw net retained
|
|
93
|
-
heap deltas are also retained; they are not allocation counts or context sizes.
|
|
94
|
-
|
|
95
|
-
## Correctness and copy boundary
|
|
96
|
-
|
|
97
|
-
External prepared objects remain untrusted: every public entry parses/copies the
|
|
98
|
-
current input before evaluating it. There is no persistent context or cache to
|
|
99
|
-
invalidate. The private evaluator is reached only with that call-owned mapping.
|
|
100
|
-
It retains per-point finite checks, every intermediate radial operating-envelope
|
|
101
|
-
check, arithmetic order, full Jacobians/principal stretches and the ordinary
|
|
102
|
-
point-result validation/provenance. Scalar and batch points use the same equation
|
|
103
|
-
implementation. No numerical tolerance is relaxed and no inverse iteration bound
|
|
104
|
-
is changed.
|
|
105
|
-
|
|
106
|
-
Affine derivative arrays are copied per result point. They must not alias another
|
|
107
|
-
pixel, the returned mapping, the caller or another call. This preserves the prior
|
|
108
|
-
copy semantics despite sharing the internal parsed mapping. Existing masks,
|
|
109
|
-
joint crops, source coverage, prefilter requirements, resampler identities and
|
|
110
|
-
retained-ray/FOV diagnostics are unchanged.
|
|
111
|
-
|
|
112
|
-
`test/geometric-preparation-reuse.test.ts` compares every point in a fixed 32-case
|
|
113
|
-
corpus (seed `0x43c1374c`) against scalar evaluation, covering all four quarter
|
|
114
|
-
turns, off-center lattices, noncommuting affine/radial order and varied coefficients.
|
|
115
|
-
It also tests mutation isolation, revalidation after prior success, folded/singular
|
|
116
|
-
input and intermediate-domain failure. Existing correction/geometry tests retain
|
|
117
|
-
noise/capture identity and blur/resampling guarantees. The paired benchmark checks
|
|
118
|
-
complete result/provenance equality with the unchanged reference for every measured
|
|
119
|
-
scenario before timing. The canonical #130 fixture is unchanged and is not used
|
|
120
|
-
as performance evidence.
|
|
121
|
-
|
|
122
|
-
## Reproduction and review
|
|
123
|
-
|
|
124
|
-
Build an independent reference checkout of the recorded main commit with
|
|
125
|
-
`npm ci` / `npm run build`, and build this candidate checkout. Run sequentially
|
|
126
|
-
without concurrent task checks or benchmarks; replace the reference-root below.
|
|
127
|
-
|
|
128
|
-
```sh
|
|
129
|
-
node scripts/benchmark-geometric-consumers.mjs --reference-root=/path/to/reference --reference-commit=c1374c31473f893310d1ce4f0d5a737aaba43ab5
|
|
130
|
-
node --expose-gc scripts/benchmark-geometric-consumers.mjs --reference-root=/path/to/reference --reference-commit=c1374c31473f893310d1ce4f0d5a737aaba43ab5 --profile=sample
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
Repeat ordinary runs separately. Profiling is optional and separate from timing.
|
|
134
|
-
There is no timing CI threshold, new runtime dependency, third-party data, paid
|
|
135
|
-
service or production-stage activation. Human scientific/provenance review and
|
|
136
|
-
contribution-specific DCO certification remain required before merge; measurements
|
|
137
|
-
are not scientific or legal certification.
|
|
138
|
-
|
|
139
|
-
## Final V1 remeasurement
|
|
140
|
-
|
|
141
|
-
[Final V1 performance disposition](V1_PERFORMANCE_DISPOSITION.md) records current main #204, fresh paired timing/equivalence, preparation/memory profiles and dense executed environment-to-RAW evidence. PR #205 merged the final reviewed/signed no-further-change disposition; PR #206 merged final conformance. The measured engine commit remains the historical benchmark identity. Earlier candidate and pending-remeasurement statements above are historical.
|