@photivra/engine 1.4.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1074) hide show
  1. package/CHANGELOG.md +401 -6
  2. package/CITATION.cff +1 -1
  3. package/NODE_SUPPORT.md +64 -12
  4. package/README.md +301 -182
  5. package/SECURITY.md +37 -28
  6. package/THIRD_PARTY.md +148 -4
  7. package/dist/camera/equivalent-focal-length.d.ts +13 -14
  8. package/dist/camera/equivalent-focal-length.js +15 -13
  9. package/dist/camera/equivalent-focal-length.js.map +1 -1
  10. package/dist/camera/field-of-view.d.ts +30 -19
  11. package/dist/camera/field-of-view.js +67 -18
  12. package/dist/camera/field-of-view.js.map +1 -1
  13. package/dist/camera/lens-projection.d.ts +170 -0
  14. package/dist/camera/lens-projection.js +444 -0
  15. package/dist/camera/lens-projection.js.map +1 -0
  16. package/dist/camera/projected-object-size.d.ts +10 -11
  17. package/dist/camera/projected-object-size.js +12 -10
  18. package/dist/camera/projected-object-size.js.map +1 -1
  19. package/dist/capture/capture-export-metadata.d.ts +9 -10
  20. package/dist/capture/capture-export-metadata.js +8 -5
  21. package/dist/capture/capture-export-metadata.js.map +1 -1
  22. package/dist/capture/dng-import.d.ts +91 -0
  23. package/dist/capture/dng-import.js +343 -0
  24. package/dist/capture/dng-import.js.map +1 -0
  25. package/dist/capture/environment-raw-producer.d.ts +37 -17
  26. package/dist/capture/environment-raw-producer.js +43 -19
  27. package/dist/capture/environment-raw-producer.js.map +1 -1
  28. package/dist/capture/export-jpeg.d.ts +35 -4
  29. package/dist/capture/export-jpeg.js +133 -47
  30. package/dist/capture/export-jpeg.js.map +1 -1
  31. package/dist/capture/export-tiff.d.ts +48 -24
  32. package/dist/capture/export-tiff.js +91 -31
  33. package/dist/capture/export-tiff.js.map +1 -1
  34. package/dist/capture/focus-control.d.ts +42 -65
  35. package/dist/capture/focus-control.js +56 -75
  36. package/dist/capture/focus-control.js.map +1 -1
  37. package/dist/capture/host-yield-cadence.d.ts +25 -0
  38. package/dist/capture/host-yield-cadence.js +25 -0
  39. package/dist/capture/host-yield-cadence.js.map +1 -0
  40. package/dist/capture/linear-encoding.d.ts +14 -12
  41. package/dist/capture/linear-encoding.js +14 -13
  42. package/dist/capture/linear-encoding.js.map +1 -1
  43. package/dist/capture/lossless-jpeg.d.ts +27 -0
  44. package/dist/capture/lossless-jpeg.js +237 -0
  45. package/dist/capture/lossless-jpeg.js.map +1 -0
  46. package/dist/capture/native-environment-lean.d.ts +227 -0
  47. package/dist/capture/native-environment-lean.js +974 -0
  48. package/dist/capture/native-environment-lean.js.map +1 -0
  49. package/dist/capture/native-environment-optical-stage.d.ts +97 -0
  50. package/dist/capture/native-environment-optical-stage.js +340 -0
  51. package/dist/capture/native-environment-optical-stage.js.map +1 -0
  52. package/dist/capture/native-environment-raw.d.ts +140 -6
  53. package/dist/capture/native-environment-raw.js +435 -34
  54. package/dist/capture/native-environment-raw.js.map +1 -1
  55. package/dist/capture/native-raw-development.d.ts +118 -5
  56. package/dist/capture/native-raw-development.js +224 -59
  57. package/dist/capture/native-raw-development.js.map +1 -1
  58. package/dist/capture/native-raw-dng.d.ts +60 -0
  59. package/dist/capture/native-raw-dng.js +167 -0
  60. package/dist/capture/native-raw-dng.js.map +1 -0
  61. package/dist/capture/native-raw.d.ts +67 -10
  62. package/dist/capture/native-raw.js +90 -24
  63. package/dist/capture/native-raw.js.map +1 -1
  64. package/dist/capture/packed-sensor-raw.d.ts +160 -0
  65. package/dist/capture/packed-sensor-raw.js +221 -0
  66. package/dist/capture/packed-sensor-raw.js.map +1 -0
  67. package/dist/capture/photographic-export.d.ts +58 -35
  68. package/dist/capture/photographic-export.js +177 -70
  69. package/dist/capture/photographic-export.js.map +1 -1
  70. package/dist/capture/raw-development-kernel.d.ts +52 -0
  71. package/dist/capture/raw-development-kernel.js +88 -0
  72. package/dist/capture/raw-development-kernel.js.map +1 -0
  73. package/dist/capture/raw-frame-limits.d.ts +7 -7
  74. package/dist/capture/raw-frame-limits.js +7 -6
  75. package/dist/capture/raw-frame-limits.js.map +1 -1
  76. package/dist/capture/raw-frame-reconstruction.d.ts +8 -9
  77. package/dist/capture/raw-frame-reconstruction.js +9 -8
  78. package/dist/capture/raw-frame-reconstruction.js.map +1 -1
  79. package/dist/capture/raw-white-level.d.ts +55 -0
  80. package/dist/capture/raw-white-level.js +165 -0
  81. package/dist/capture/raw-white-level.js.map +1 -0
  82. package/dist/capture/release-sequence.d.ts +5 -7
  83. package/dist/capture/release-sequence.js +15 -13
  84. package/dist/capture/release-sequence.js.map +1 -1
  85. package/dist/capture/sensor-raw-frame.d.ts +5 -6
  86. package/dist/capture/sensor-raw-frame.js +26 -9
  87. package/dist/capture/sensor-raw-frame.js.map +1 -1
  88. package/dist/capture/sensor-raw-producer.d.ts +21 -13
  89. package/dist/capture/sensor-raw-producer.js +86 -25
  90. package/dist/capture/sensor-raw-producer.js.map +1 -1
  91. package/dist/capture/simulated-capture.d.ts +15 -16
  92. package/dist/capture/simulated-capture.js +22 -12
  93. package/dist/capture/simulated-capture.js.map +1 -1
  94. package/dist/color/camera-color-matrix.d.ts +69 -0
  95. package/dist/color/camera-color-matrix.js +132 -0
  96. package/dist/color/camera-color-matrix.js.map +1 -0
  97. package/dist/color/capture-color.d.ts +17 -10
  98. package/dist/color/capture-color.js +50 -17
  99. package/dist/color/capture-color.js.map +1 -1
  100. package/dist/color/chromatic-adaptation.d.ts +63 -0
  101. package/dist/color/chromatic-adaptation.js +91 -0
  102. package/dist/color/chromatic-adaptation.js.map +1 -0
  103. package/dist/color/color-difference.d.ts +104 -0
  104. package/dist/color/color-difference.js +205 -0
  105. package/dist/color/color-difference.js.map +1 -0
  106. package/dist/color/color-matching-functions.d.ts +168 -0
  107. package/dist/color/color-matching-functions.js +309 -0
  108. package/dist/color/color-matching-functions.js.map +1 -0
  109. package/dist/color/colorimetry-math.d.ts +52 -0
  110. package/dist/color/colorimetry-math.js +144 -0
  111. package/dist/color/colorimetry-math.js.map +1 -0
  112. package/dist/color/gamut-mapping.d.ts +54 -0
  113. package/dist/color/gamut-mapping.js +107 -0
  114. package/dist/color/gamut-mapping.js.map +1 -0
  115. package/dist/color/illuminants.d.ts +182 -0
  116. package/dist/color/illuminants.js +434 -0
  117. package/dist/color/illuminants.js.map +1 -0
  118. package/dist/color/rgb-color-spaces.d.ts +79 -0
  119. package/dist/color/rgb-color-spaces.js +115 -0
  120. package/dist/color/rgb-color-spaces.js.map +1 -0
  121. package/dist/color/sensor-color-development.d.ts +33 -11
  122. package/dist/color/sensor-color-development.js +104 -30
  123. package/dist/color/sensor-color-development.js.map +1 -1
  124. package/dist/color/srgb-icc.d.ts +9 -2
  125. package/dist/color/srgb-icc.js +16 -5
  126. package/dist/color/srgb-icc.js.map +1 -1
  127. package/dist/color/srgb-transfer.d.ts +1 -2
  128. package/dist/color/srgb-transfer.js +1 -1
  129. package/dist/color/srgb-transfer.js.map +1 -1
  130. package/dist/color/white-balance.d.ts +68 -19
  131. package/dist/color/white-balance.js +168 -35
  132. package/dist/color/white-balance.js.map +1 -1
  133. package/dist/composition/image-formation-plan.d.ts +152 -128
  134. package/dist/composition/image-formation-plan.js +292 -138
  135. package/dist/composition/image-formation-plan.js.map +1 -1
  136. package/dist/composition/plan-consumer.d.ts +6 -7
  137. package/dist/composition/plan-consumer.js +14 -11
  138. package/dist/composition/plan-consumer.js.map +1 -1
  139. package/dist/core/calculation-result.d.ts +21 -14
  140. package/dist/core/calculation-result.js +209 -11
  141. package/dist/core/calculation-result.js.map +1 -1
  142. package/dist/core/canonical-json.d.ts +13 -8
  143. package/dist/core/canonical-json.js +34 -15
  144. package/dist/core/canonical-json.js.map +1 -1
  145. package/dist/core/configuration-error.d.ts +5 -4
  146. package/dist/core/configuration-error.js +5 -3
  147. package/dist/core/configuration-error.js.map +1 -1
  148. package/dist/core/evidence-provenance.d.ts +12 -12
  149. package/dist/core/evidence-provenance.js +10 -9
  150. package/dist/core/evidence-provenance.js.map +1 -1
  151. package/dist/core/image-formation.d.ts +11 -10
  152. package/dist/core/image-formation.js +11 -9
  153. package/dist/core/image-formation.js.map +1 -1
  154. package/dist/core/owned-data.d.ts +9 -17
  155. package/dist/core/owned-data.js +9 -16
  156. package/dist/core/owned-data.js.map +1 -1
  157. package/dist/core/portable-math.d.ts +15 -0
  158. package/dist/core/portable-math.js +56 -0
  159. package/dist/core/portable-math.js.map +1 -0
  160. package/dist/core/record-validation.d.ts +48 -9
  161. package/dist/core/record-validation.js +93 -19
  162. package/dist/core/record-validation.js.map +1 -1
  163. package/dist/core/scientific-assurance.d.ts +16 -14
  164. package/dist/core/scientific-assurance.js +22 -18
  165. package/dist/core/scientific-assurance.js.map +1 -1
  166. package/dist/core/spectral-composition.d.ts +13 -14
  167. package/dist/core/spectral-composition.js +30 -27
  168. package/dist/core/spectral-composition.js.map +1 -1
  169. package/dist/core/spectral.d.ts +5 -6
  170. package/dist/core/spectral.js +9 -7
  171. package/dist/core/spectral.js.map +1 -1
  172. package/dist/core/validation.d.ts +3 -6
  173. package/dist/core/validation.js +3 -5
  174. package/dist/core/validation.js.map +1 -1
  175. package/dist/core/version.d.ts +6 -6
  176. package/dist/core/version.js +6 -5
  177. package/dist/core/version.js.map +1 -1
  178. package/dist/equipment/exposure-capabilities.d.ts +10 -10
  179. package/dist/equipment/exposure-capabilities.js +40 -30
  180. package/dist/equipment/exposure-capabilities.js.map +1 -1
  181. package/dist/equipment/generic-tier-assets.d.ts +13 -6
  182. package/dist/equipment/generic-tier-assets.js +34 -15
  183. package/dist/equipment/generic-tier-assets.js.map +1 -1
  184. package/dist/equipment/generic-tier-presets.d.ts +5 -6
  185. package/dist/equipment/generic-tier-presets.js +15 -13
  186. package/dist/equipment/generic-tier-presets.js.map +1 -1
  187. package/dist/equipment/iso-capabilities.d.ts +21 -22
  188. package/dist/equipment/iso-capabilities.js +49 -44
  189. package/dist/equipment/iso-capabilities.js.map +1 -1
  190. package/dist/equipment/metering-capabilities.d.ts +5 -6
  191. package/dist/equipment/metering-capabilities.js +22 -19
  192. package/dist/equipment/metering-capabilities.js.map +1 -1
  193. package/dist/equipment/release-capabilities.d.ts +3 -4
  194. package/dist/equipment/release-capabilities.js +18 -14
  195. package/dist/equipment/release-capabilities.js.map +1 -1
  196. package/dist/exposure/exposure-duration-control.d.ts +19 -17
  197. package/dist/exposure/exposure-duration-control.js +27 -23
  198. package/dist/exposure/exposure-duration-control.js.map +1 -1
  199. package/dist/exposure/exposure-mode-resolver.d.ts +42 -39
  200. package/dist/exposure/exposure-mode-resolver.js +127 -82
  201. package/dist/exposure/exposure-mode-resolver.js.map +1 -1
  202. package/dist/exposure/exposure.d.ts +17 -16
  203. package/dist/exposure/exposure.js +22 -15
  204. package/dist/exposure/exposure.js.map +1 -1
  205. package/dist/exposure/flash-ttl.d.ts +135 -0
  206. package/dist/exposure/flash-ttl.js +193 -0
  207. package/dist/exposure/flash-ttl.js.map +1 -0
  208. package/dist/exposure/flash.d.ts +144 -36
  209. package/dist/exposure/flash.js +259 -59
  210. package/dist/exposure/flash.js.map +1 -1
  211. package/dist/exposure/metering-scene-radiance.d.ts +10 -10
  212. package/dist/exposure/metering-scene-radiance.js +42 -23
  213. package/dist/exposure/metering-scene-radiance.js.map +1 -1
  214. package/dist/exposure/metering-target.d.ts +8 -8
  215. package/dist/exposure/metering-target.js +30 -20
  216. package/dist/exposure/metering-target.js.map +1 -1
  217. package/dist/exposure/metering-temporal.d.ts +16 -15
  218. package/dist/exposure/metering-temporal.js +41 -19
  219. package/dist/exposure/metering-temporal.js.map +1 -1
  220. package/dist/exposure/metering.d.ts +64 -17
  221. package/dist/exposure/metering.js +159 -30
  222. package/dist/exposure/metering.js.map +1 -1
  223. package/dist/exposure/program-line.d.ts +5 -5
  224. package/dist/exposure/program-line.js +20 -13
  225. package/dist/exposure/program-line.js.map +1 -1
  226. package/dist/facade/camera-preset.d.ts +8 -0
  227. package/dist/facade/camera-preset.js +102 -0
  228. package/dist/facade/camera-preset.js.map +1 -0
  229. package/dist/facade/chart-radiance-batch.d.ts +57 -0
  230. package/dist/facade/chart-radiance-batch.js +121 -0
  231. package/dist/facade/chart-radiance-batch.js.map +1 -0
  232. package/dist/facade/chart-scenes.d.ts +177 -0
  233. package/dist/facade/chart-scenes.js +232 -0
  234. package/dist/facade/chart-scenes.js.map +1 -0
  235. package/dist/facade/host-yield.d.ts +7 -0
  236. package/dist/facade/host-yield.js +23 -0
  237. package/dist/facade/host-yield.js.map +1 -0
  238. package/dist/facade/scene-radiance.d.ts +117 -0
  239. package/dist/facade/scene-radiance.js +205 -0
  240. package/dist/facade/scene-radiance.js.map +1 -0
  241. package/dist/facade/simulate-capture.d.ts +284 -0
  242. package/dist/facade/simulate-capture.js +1026 -0
  243. package/dist/facade/simulate-capture.js.map +1 -0
  244. package/dist/gpu/chart-radiance-gpu.d.ts +17 -0
  245. package/dist/gpu/chart-radiance-gpu.js +176 -0
  246. package/dist/gpu/chart-radiance-gpu.js.map +1 -0
  247. package/dist/gpu/image-kernel-accelerator.d.ts +132 -0
  248. package/dist/gpu/image-kernel-accelerator.js +720 -0
  249. package/dist/gpu/image-kernel-accelerator.js.map +1 -0
  250. package/dist/gpu/image-kernel-execution.d.ts +92 -0
  251. package/dist/gpu/image-kernel-execution.js +84 -0
  252. package/dist/gpu/image-kernel-execution.js.map +1 -0
  253. package/dist/gpu/sensor-stage-gpu.d.ts +44 -0
  254. package/dist/gpu/sensor-stage-gpu.js +317 -0
  255. package/dist/gpu/sensor-stage-gpu.js.map +1 -0
  256. package/dist/gpu/temporal-sum-gpu.d.ts +23 -0
  257. package/dist/gpu/temporal-sum-gpu.js +150 -0
  258. package/dist/gpu/temporal-sum-gpu.js.map +1 -0
  259. package/dist/gpu/webgpu-runtime.d.ts +63 -0
  260. package/dist/gpu/webgpu-runtime.js +215 -0
  261. package/dist/gpu/webgpu-runtime.js.map +1 -0
  262. package/dist/gpu/wgsl-chart-kernel.d.ts +30 -0
  263. package/dist/gpu/wgsl-chart-kernel.js +165 -0
  264. package/dist/gpu/wgsl-chart-kernel.js.map +1 -0
  265. package/dist/gpu/wgsl-kernels.d.ts +53 -0
  266. package/dist/gpu/wgsl-kernels.js +365 -0
  267. package/dist/gpu/wgsl-kernels.js.map +1 -0
  268. package/dist/gpu/wgsl-sensor-kernel.d.ts +64 -0
  269. package/dist/gpu/wgsl-sensor-kernel.js +409 -0
  270. package/dist/gpu/wgsl-sensor-kernel.js.map +1 -0
  271. package/dist/index.d.ts +89 -25
  272. package/dist/index.js +59 -15
  273. package/dist/index.js.map +1 -1
  274. package/dist/motion/camera-rotation.d.ts +92 -40
  275. package/dist/motion/camera-rotation.js +84 -47
  276. package/dist/motion/camera-rotation.js.map +1 -1
  277. package/dist/motion/capture-rotation-inverse-mapping.d.ts +37 -34
  278. package/dist/motion/capture-rotation-inverse-mapping.js +32 -24
  279. package/dist/motion/capture-rotation-inverse-mapping.js.map +1 -1
  280. package/dist/motion/capture-rotation-temporal-quadrature.d.ts +39 -35
  281. package/dist/motion/capture-rotation-temporal-quadrature.js +37 -28
  282. package/dist/motion/capture-rotation-temporal-quadrature.js.map +1 -1
  283. package/dist/motion/capture-rotation-trajectory.d.ts +32 -28
  284. package/dist/motion/capture-rotation-trajectory.js +36 -26
  285. package/dist/motion/capture-rotation-trajectory.js.map +1 -1
  286. package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts +23 -21
  287. package/dist/motion/capture-translation-parallax-temporal-quadrature.js +33 -14
  288. package/dist/motion/capture-translation-parallax-temporal-quadrature.js.map +1 -1
  289. package/dist/motion/extended-object-projection.d.ts +19 -16
  290. package/dist/motion/extended-object-projection.js +38 -18
  291. package/dist/motion/extended-object-projection.js.map +1 -1
  292. package/dist/motion/projected-motion.d.ts +18 -17
  293. package/dist/motion/projected-motion.js +25 -17
  294. package/dist/motion/projected-motion.js.map +1 -1
  295. package/dist/motion/temporal-exposure-sum.d.ts +55 -0
  296. package/dist/motion/temporal-exposure-sum.js +141 -0
  297. package/dist/motion/temporal-exposure-sum.js.map +1 -0
  298. package/dist/motion/video-sequence.d.ts +111 -0
  299. package/dist/motion/video-sequence.js +179 -0
  300. package/dist/motion/video-sequence.js.map +1 -0
  301. package/dist/optics/aperture.d.ts +14 -15
  302. package/dist/optics/aperture.js +13 -11
  303. package/dist/optics/aperture.js.map +1 -1
  304. package/dist/optics/atmospheric-haze.d.ts +83 -0
  305. package/dist/optics/atmospheric-haze.js +113 -0
  306. package/dist/optics/atmospheric-haze.js.map +1 -0
  307. package/dist/optics/brown-conrady-distortion.d.ts +116 -0
  308. package/dist/optics/brown-conrady-distortion.js +291 -0
  309. package/dist/optics/brown-conrady-distortion.js.map +1 -0
  310. package/dist/optics/circle-of-confusion.d.ts +10 -10
  311. package/dist/optics/circle-of-confusion.js +15 -11
  312. package/dist/optics/circle-of-confusion.js.map +1 -1
  313. package/dist/optics/complex-pupil-psf.d.ts +64 -33
  314. package/dist/optics/complex-pupil-psf.js +190 -98
  315. package/dist/optics/complex-pupil-psf.js.map +1 -1
  316. package/dist/optics/depth-of-field.d.ts +25 -15
  317. package/dist/optics/depth-of-field.js +67 -27
  318. package/dist/optics/depth-of-field.js.map +1 -1
  319. package/dist/optics/diffraction.d.ts +14 -13
  320. package/dist/optics/diffraction.js +14 -10
  321. package/dist/optics/diffraction.js.map +1 -1
  322. package/dist/optics/focus-breathing.d.ts +88 -27
  323. package/dist/optics/focus-breathing.js +114 -23
  324. package/dist/optics/focus-breathing.js.map +1 -1
  325. package/dist/optics/focus-state.d.ts +18 -18
  326. package/dist/optics/focus-state.js +21 -15
  327. package/dist/optics/focus-state.js.map +1 -1
  328. package/dist/optics/front-of-lens-filter.d.ts +45 -14
  329. package/dist/optics/front-of-lens-filter.js +259 -88
  330. package/dist/optics/front-of-lens-filter.js.map +1 -1
  331. package/dist/optics/illumination-vignetting.d.ts +16 -17
  332. package/dist/optics/illumination-vignetting.js +40 -17
  333. package/dist/optics/illumination-vignetting.js.map +1 -1
  334. package/dist/optics/irradiance-convolution.d.ts +59 -0
  335. package/dist/optics/irradiance-convolution.js +138 -0
  336. package/dist/optics/irradiance-convolution.js.map +1 -0
  337. package/dist/optics/lateral-chromatic-aberration.d.ts +33 -30
  338. package/dist/optics/lateral-chromatic-aberration.js +33 -23
  339. package/dist/optics/lateral-chromatic-aberration.js.map +1 -1
  340. package/dist/optics/lens-psf-kernels.d.ts +89 -0
  341. package/dist/optics/lens-psf-kernels.js +175 -0
  342. package/dist/optics/lens-psf-kernels.js.map +1 -0
  343. package/dist/optics/lens-psf-profile.d.ts +78 -46
  344. package/dist/optics/lens-psf-profile.js +335 -124
  345. package/dist/optics/lens-psf-profile.js.map +1 -1
  346. package/dist/optics/longitudinal-chromatic-aberration.d.ts +102 -0
  347. package/dist/optics/longitudinal-chromatic-aberration.js +210 -0
  348. package/dist/optics/longitudinal-chromatic-aberration.js.map +1 -0
  349. package/dist/optics/polygon-diffraction.d.ts +80 -23
  350. package/dist/optics/polygon-diffraction.js +130 -25
  351. package/dist/optics/polygon-diffraction.js.map +1 -1
  352. package/dist/optics/profile-contract.d.ts +5 -6
  353. package/dist/optics/profile-contract.js +14 -11
  354. package/dist/optics/profile-contract.js.map +1 -1
  355. package/dist/optics/psf-foundation.d.ts +23 -23
  356. package/dist/optics/psf-foundation.js +24 -21
  357. package/dist/optics/psf-foundation.js.map +1 -1
  358. package/dist/optics/pupil-vignetting.d.ts +118 -0
  359. package/dist/optics/pupil-vignetting.js +264 -0
  360. package/dist/optics/pupil-vignetting.js.map +1 -0
  361. package/dist/optics/radial-distortion.d.ts +34 -33
  362. package/dist/optics/radial-distortion.js +37 -30
  363. package/dist/optics/radial-distortion.js.map +1 -1
  364. package/dist/optics/scene-to-sensor-irradiance.d.ts +47 -33
  365. package/dist/optics/scene-to-sensor-irradiance.js +73 -45
  366. package/dist/optics/scene-to-sensor-irradiance.js.map +1 -1
  367. package/dist/optics/scene-to-sensor-quadrature.d.ts +23 -18
  368. package/dist/optics/scene-to-sensor-quadrature.js +16 -11
  369. package/dist/optics/scene-to-sensor-quadrature.js.map +1 -1
  370. package/dist/optics/sensor-aperture-rays.d.ts +20 -4
  371. package/dist/optics/sensor-aperture-rays.js +32 -14
  372. package/dist/optics/sensor-aperture-rays.js.map +1 -1
  373. package/dist/optics/sensor-environment-query.d.ts +81 -16
  374. package/dist/optics/sensor-environment-query.js +145 -12
  375. package/dist/optics/sensor-environment-query.js.map +1 -1
  376. package/dist/optics/sensor-psf-quadrature.d.ts +12 -10
  377. package/dist/optics/sensor-psf-quadrature.js +18 -11
  378. package/dist/optics/sensor-psf-quadrature.js.map +1 -1
  379. package/dist/optics/sensor-psf-support.d.ts +8 -6
  380. package/dist/optics/sensor-psf-support.js +8 -5
  381. package/dist/optics/sensor-psf-support.js.map +1 -1
  382. package/dist/optics/stray-light.d.ts +22 -19
  383. package/dist/optics/stray-light.js +18 -12
  384. package/dist/optics/stray-light.js.map +1 -1
  385. package/dist/optics/thin-lens.d.ts +10 -9
  386. package/dist/optics/thin-lens.js +12 -8
  387. package/dist/optics/thin-lens.js.map +1 -1
  388. package/dist/optics/zernike-wavefront.d.ts +154 -0
  389. package/dist/optics/zernike-wavefront.js +352 -0
  390. package/dist/optics/zernike-wavefront.js.map +1 -0
  391. package/dist/output/capture-corrected-sdr.d.ts +16 -8
  392. package/dist/output/capture-corrected-sdr.js +16 -8
  393. package/dist/output/capture-corrected-sdr.js.map +1 -1
  394. package/dist/output/capture-geometry.d.ts +34 -36
  395. package/dist/output/capture-geometry.js +52 -32
  396. package/dist/output/capture-geometry.js.map +1 -1
  397. package/dist/output/capture-sdr.d.ts +7 -6
  398. package/dist/output/capture-sdr.js +11 -8
  399. package/dist/output/capture-sdr.js.map +1 -1
  400. package/dist/output/crop.d.ts +22 -6
  401. package/dist/output/crop.js +40 -6
  402. package/dist/output/crop.js.map +1 -1
  403. package/dist/output/geometric-transforms.d.ts +60 -23
  404. package/dist/output/geometric-transforms.js +111 -24
  405. package/dist/output/geometric-transforms.js.map +1 -1
  406. package/dist/output/lens-corrections.d.ts +27 -19
  407. package/dist/output/lens-corrections.js +29 -13
  408. package/dist/output/lens-corrections.js.map +1 -1
  409. package/dist/output/native-capture-sdr.d.ts +71 -16
  410. package/dist/output/native-capture-sdr.js +190 -33
  411. package/dist/output/native-capture-sdr.js.map +1 -1
  412. package/dist/output/png-encoder.d.ts +65 -0
  413. package/dist/output/png-encoder.js +461 -0
  414. package/dist/output/png-encoder.js.map +1 -0
  415. package/dist/output/print-contrast-reference.d.ts +10 -9
  416. package/dist/output/print-contrast-reference.js +10 -8
  417. package/dist/output/print-contrast-reference.js.map +1 -1
  418. package/dist/output/print-detail.d.ts +18 -17
  419. package/dist/output/print-detail.js +12 -10
  420. package/dist/output/print-detail.js.map +1 -1
  421. package/dist/output/print-jpeg.d.ts +26 -5
  422. package/dist/output/print-jpeg.js +117 -50
  423. package/dist/output/print-jpeg.js.map +1 -1
  424. package/dist/output/print-plan.d.ts +19 -19
  425. package/dist/output/print-plan.js +11 -10
  426. package/dist/output/print-plan.js.map +1 -1
  427. package/dist/output/print-region-statistics.d.ts +14 -15
  428. package/dist/output/print-region-statistics.js +11 -11
  429. package/dist/output/print-region-statistics.js.map +1 -1
  430. package/dist/output/sdr-rendering.d.ts +48 -10
  431. package/dist/output/sdr-rendering.js +114 -25
  432. package/dist/output/sdr-rendering.js.map +1 -1
  433. package/dist/output/subject-framing-crop.d.ts +6 -10
  434. package/dist/output/subject-framing-crop.js +23 -13
  435. package/dist/output/subject-framing-crop.js.map +1 -1
  436. package/dist/processing/demosaic.d.ts +90 -0
  437. package/dist/processing/demosaic.js +275 -0
  438. package/dist/processing/demosaic.js.map +1 -0
  439. package/dist/processing/denoise.d.ts +68 -0
  440. package/dist/processing/denoise.js +214 -0
  441. package/dist/processing/denoise.js.map +1 -0
  442. package/dist/processing/focus-stacking.d.ts +17 -0
  443. package/dist/processing/focus-stacking.js +80 -0
  444. package/dist/processing/focus-stacking.js.map +1 -0
  445. package/dist/processing/hdr.d.ts +54 -0
  446. package/dist/processing/hdr.js +172 -0
  447. package/dist/processing/hdr.js.map +1 -0
  448. package/dist/processing/image-ops.d.ts +66 -0
  449. package/dist/processing/image-ops.js +192 -0
  450. package/dist/processing/image-ops.js.map +1 -0
  451. package/dist/processing/panorama.d.ts +51 -0
  452. package/dist/processing/panorama.js +305 -0
  453. package/dist/processing/panorama.js.map +1 -0
  454. package/dist/processing/processing-task.d.ts +85 -0
  455. package/dist/processing/processing-task.js +164 -0
  456. package/dist/processing/processing-task.js.map +1 -0
  457. package/dist/processing/tone-mapping.d.ts +69 -0
  458. package/dist/processing/tone-mapping.js +310 -0
  459. package/dist/processing/tone-mapping.js.map +1 -0
  460. package/dist/schema/camera.d.ts +5 -4
  461. package/dist/schema/illumination-spectral.d.ts +13 -19
  462. package/dist/schema/illumination-spectral.js +23 -19
  463. package/dist/schema/illumination-spectral.js.map +1 -1
  464. package/dist/schema/illumination-temporal.d.ts +12 -15
  465. package/dist/schema/illumination-temporal.js +43 -28
  466. package/dist/schema/illumination-temporal.js.map +1 -1
  467. package/dist/schema/illumination.d.ts +5 -4
  468. package/dist/schema/illumination.js +55 -20
  469. package/dist/schema/illumination.js.map +1 -1
  470. package/dist/schema/scene-radiance-temporal.d.ts +9 -11
  471. package/dist/schema/scene-radiance-temporal.js +26 -23
  472. package/dist/schema/scene-radiance-temporal.js.map +1 -1
  473. package/dist/schema/scene-radiance.d.ts +17 -17
  474. package/dist/schema/scene-radiance.js +56 -34
  475. package/dist/schema/scene-radiance.js.map +1 -1
  476. package/dist/schema/scene.d.ts +14 -13
  477. package/dist/schema/validation.d.ts +0 -1
  478. package/dist/schema/validation.js +17 -15
  479. package/dist/schema/validation.js.map +1 -1
  480. package/dist/sensor/accumulated-charge.d.ts +45 -64
  481. package/dist/sensor/accumulated-charge.js +41 -47
  482. package/dist/sensor/accumulated-charge.js.map +1 -1
  483. package/dist/sensor/architecture.d.ts +22 -25
  484. package/dist/sensor/architecture.js +17 -16
  485. package/dist/sensor/architecture.js.map +1 -1
  486. package/dist/sensor/camera-saturation-capacity.d.ts +21 -28
  487. package/dist/sensor/camera-saturation-capacity.js +36 -34
  488. package/dist/sensor/camera-saturation-capacity.js.map +1 -1
  489. package/dist/sensor/capture-color-sampling-binding.d.ts +46 -51
  490. package/dist/sensor/capture-color-sampling-binding.js +39 -41
  491. package/dist/sensor/capture-color-sampling-binding.js.map +1 -1
  492. package/dist/sensor/capture-mode-timing.d.ts +8 -9
  493. package/dist/sensor/capture-mode-timing.js +24 -21
  494. package/dist/sensor/capture-mode-timing.js.map +1 -1
  495. package/dist/sensor/capture-mode.d.ts +28 -30
  496. package/dist/sensor/capture-mode.js +33 -31
  497. package/dist/sensor/capture-mode.js.map +1 -1
  498. package/dist/sensor/color-sampling.d.ts +30 -33
  499. package/dist/sensor/color-sampling.js +32 -37
  500. package/dist/sensor/color-sampling.js.map +1 -1
  501. package/dist/sensor/constant-rate-temporal-integration.d.ts +19 -23
  502. package/dist/sensor/constant-rate-temporal-integration.js +28 -26
  503. package/dist/sensor/constant-rate-temporal-integration.js.map +1 -1
  504. package/dist/sensor/dark-current.d.ts +53 -49
  505. package/dist/sensor/dark-current.js +87 -46
  506. package/dist/sensor/dark-current.js.map +1 -1
  507. package/dist/sensor/environment-photo-signal.d.ts +71 -30
  508. package/dist/sensor/environment-photo-signal.js +127 -46
  509. package/dist/sensor/environment-photo-signal.js.map +1 -1
  510. package/dist/sensor/eqe-electron-rate.d.ts +14 -13
  511. package/dist/sensor/eqe-electron-rate.js +34 -14
  512. package/dist/sensor/eqe-electron-rate.js.map +1 -1
  513. package/dist/sensor/eqe-local-exposure.d.ts +24 -24
  514. package/dist/sensor/eqe-local-exposure.js +15 -11
  515. package/dist/sensor/eqe-local-exposure.js.map +1 -1
  516. package/dist/sensor/eqe-temporal-exposure.d.ts +11 -11
  517. package/dist/sensor/eqe-temporal-exposure.js +15 -10
  518. package/dist/sensor/eqe-temporal-exposure.js.map +1 -1
  519. package/dist/sensor/exposure-window.d.ts +48 -34
  520. package/dist/sensor/exposure-window.js +77 -36
  521. package/dist/sensor/exposure-window.js.map +1 -1
  522. package/dist/sensor/fixed-pattern-noise.d.ts +108 -0
  523. package/dist/sensor/fixed-pattern-noise.js +166 -0
  524. package/dist/sensor/fixed-pattern-noise.js.map +1 -0
  525. package/dist/sensor/iso-gain.d.ts +44 -0
  526. package/dist/sensor/iso-gain.js +119 -0
  527. package/dist/sensor/iso-gain.js.map +1 -0
  528. package/dist/sensor/iso-signal-chain.d.ts +25 -48
  529. package/dist/sensor/iso-signal-chain.js +52 -66
  530. package/dist/sensor/iso-signal-chain.js.map +1 -1
  531. package/dist/sensor/local-exposure-binding.d.ts +21 -21
  532. package/dist/sensor/local-exposure-binding.js +22 -18
  533. package/dist/sensor/local-exposure-binding.js.map +1 -1
  534. package/dist/sensor/optical-stack.d.ts +36 -40
  535. package/dist/sensor/optical-stack.js +34 -37
  536. package/dist/sensor/optical-stack.js.map +1 -1
  537. package/dist/sensor/photon-energy.d.ts +22 -28
  538. package/dist/sensor/photon-energy.js +42 -34
  539. package/dist/sensor/photon-energy.js.map +1 -1
  540. package/dist/sensor/physical-charge-capacity.d.ts +20 -30
  541. package/dist/sensor/physical-charge-capacity.js +35 -36
  542. package/dist/sensor/physical-charge-capacity.js.map +1 -1
  543. package/dist/sensor/pixel-pitch.d.ts +2 -3
  544. package/dist/sensor/pixel-pitch.js +4 -2
  545. package/dist/sensor/pixel-pitch.js.map +1 -1
  546. package/dist/sensor/radiometry-readiness.d.ts +13 -15
  547. package/dist/sensor/radiometry-readiness.js +20 -17
  548. package/dist/sensor/radiometry-readiness.js.map +1 -1
  549. package/dist/sensor/raw-readout.d.ts +173 -83
  550. package/dist/sensor/raw-readout.js +425 -160
  551. package/dist/sensor/raw-readout.js.map +1 -1
  552. package/dist/sensor/raw-reconstruction.d.ts +112 -44
  553. package/dist/sensor/raw-reconstruction.js +200 -47
  554. package/dist/sensor/raw-reconstruction.js.map +1 -1
  555. package/dist/sensor/readout-exposure-linkage.d.ts +103 -34
  556. package/dist/sensor/readout-exposure-linkage.js +125 -27
  557. package/dist/sensor/readout-exposure-linkage.js.map +1 -1
  558. package/dist/sensor/readout-timing.d.ts +43 -44
  559. package/dist/sensor/readout-timing.js +38 -30
  560. package/dist/sensor/readout-timing.js.map +1 -1
  561. package/dist/sensor/response-application-compatibility.d.ts +21 -28
  562. package/dist/sensor/response-application-compatibility.js +35 -34
  563. package/dist/sensor/response-application-compatibility.js.map +1 -1
  564. package/dist/sensor/response-operating-range.d.ts +26 -35
  565. package/dist/sensor/response-operating-range.js +40 -39
  566. package/dist/sensor/response-operating-range.js.map +1 -1
  567. package/dist/sensor/responsivity-photocurrent.d.ts +21 -29
  568. package/dist/sensor/responsivity-photocurrent.js +57 -40
  569. package/dist/sensor/responsivity-photocurrent.js.map +1 -1
  570. package/dist/sensor/sampling-aperture.d.ts +21 -25
  571. package/dist/sensor/sampling-aperture.js +29 -28
  572. package/dist/sensor/sampling-aperture.js.map +1 -1
  573. package/dist/sensor/scene-eqe-temporal-exposure.d.ts +14 -12
  574. package/dist/sensor/scene-eqe-temporal-exposure.js +13 -8
  575. package/dist/sensor/scene-eqe-temporal-exposure.js.map +1 -1
  576. package/dist/sensor/sensor-geometry.d.ts +28 -32
  577. package/dist/sensor/sensor-geometry.js +35 -20
  578. package/dist/sensor/sensor-geometry.js.map +1 -1
  579. package/dist/sensor/signal-noise.d.ts +14 -16
  580. package/dist/sensor/signal-noise.js +15 -13
  581. package/dist/sensor/signal-noise.js.map +1 -1
  582. package/dist/sensor/spatial-sample-reduction.d.ts +45 -60
  583. package/dist/sensor/spatial-sample-reduction.js +39 -48
  584. package/dist/sensor/spatial-sample-reduction.js.map +1 -1
  585. package/dist/sensor/spatial-sampling-quadrature.d.ts +46 -54
  586. package/dist/sensor/spatial-sampling-quadrature.js +31 -36
  587. package/dist/sensor/spatial-sampling-quadrature.js.map +1 -1
  588. package/dist/sensor/spatio-spectral-reduction.d.ts +32 -42
  589. package/dist/sensor/spatio-spectral-reduction.js +24 -29
  590. package/dist/sensor/spatio-spectral-reduction.js.map +1 -1
  591. package/dist/sensor/spectral-coverage.d.ts +6 -9
  592. package/dist/sensor/spectral-coverage.js +9 -6
  593. package/dist/sensor/spectral-coverage.js.map +1 -1
  594. package/dist/sensor/spectral-quadrature.d.ts +46 -60
  595. package/dist/sensor/spectral-quadrature.js +38 -48
  596. package/dist/sensor/spectral-quadrature.js.map +1 -1
  597. package/dist/sensor/spectral-response.d.ts +53 -41
  598. package/dist/sensor/spectral-response.js +80 -47
  599. package/dist/sensor/spectral-response.js.map +1 -1
  600. package/dist/sensor/stochastic-seed.d.ts +50 -0
  601. package/dist/sensor/stochastic-seed.js +123 -0
  602. package/dist/sensor/stochastic-seed.js.map +1 -0
  603. package/dist/sensor/temporal-eqe-sum.d.ts +2 -4
  604. package/dist/sensor/temporal-eqe-sum.js +5 -6
  605. package/dist/sensor/temporal-eqe-sum.js.map +1 -1
  606. package/dist/sensor/temporal-photo-signal.d.ts +5 -6
  607. package/dist/sensor/temporal-photo-signal.js +11 -10
  608. package/dist/sensor/temporal-photo-signal.js.map +1 -1
  609. package/dist/sensor/temporal-sample-binding.d.ts +1 -2
  610. package/dist/sensor/temporal-sample-binding.js +3 -3
  611. package/dist/sensor/temporal-sample-binding.js.map +1 -1
  612. package/dist/simulation/poc-simulation.d.ts +16 -16
  613. package/dist/simulation/poc-simulation.js +20 -15
  614. package/dist/simulation/poc-simulation.js.map +1 -1
  615. package/dist/stabilization/camera-shake.d.ts +42 -18
  616. package/dist/stabilization/camera-shake.js +43 -20
  617. package/dist/stabilization/camera-shake.js.map +1 -1
  618. package/dist/stabilization/system.d.ts +44 -41
  619. package/dist/stabilization/system.js +196 -108
  620. package/dist/stabilization/system.js.map +1 -1
  621. package/docs/AGENT_GUIDE.md +183 -0
  622. package/docs/API_REFERENCE.md +761 -2
  623. package/docs/QUICK_START.md +495 -0
  624. package/docs/USAGE.md +1719 -714
  625. package/docs/api/camera-equivalent-focal-length.md +6 -7
  626. package/docs/api/camera-field-of-view.md +16 -8
  627. package/docs/api/camera-lens-projection.md +246 -0
  628. package/docs/api/camera-projected-object-size.md +6 -5
  629. package/docs/api/capture-capture-export-metadata.md +10 -10
  630. package/docs/api/capture-dng-import.md +134 -0
  631. package/docs/api/capture-environment-raw-producer.md +17 -11
  632. package/docs/api/capture-export-jpeg.md +16 -0
  633. package/docs/api/capture-focus-control.md +25 -47
  634. package/docs/api/capture-linear-encoding.md +21 -12
  635. package/docs/api/capture-lossless-jpeg.md +49 -0
  636. package/docs/api/capture-native-environment-optical-stage.md +75 -0
  637. package/docs/api/capture-native-environment-raw.md +161 -4
  638. package/docs/api/capture-native-raw-development.md +69 -4
  639. package/docs/api/capture-native-raw-dng.md +84 -0
  640. package/docs/api/capture-native-raw.md +23 -8
  641. package/docs/api/capture-packed-sensor-raw.md +156 -0
  642. package/docs/api/capture-photographic-export.md +69 -31
  643. package/docs/api/capture-raw-frame-reconstruction.md +8 -8
  644. package/docs/api/capture-raw-white-level.md +37 -0
  645. package/docs/api/capture-release-sequence.md +6 -7
  646. package/docs/api/capture-sensor-raw-frame.md +6 -6
  647. package/docs/api/capture-sensor-raw-producer.md +17 -11
  648. package/docs/api/capture-simulated-capture.md +15 -15
  649. package/docs/api/color-camera-color-matrix.md +103 -0
  650. package/docs/api/color-capture-color.md +22 -11
  651. package/docs/api/color-chromatic-adaptation.md +82 -0
  652. package/docs/api/color-color-difference.md +134 -0
  653. package/docs/api/color-color-matching-functions.md +259 -0
  654. package/docs/api/color-colorimetry-math.md +54 -0
  655. package/docs/api/color-gamut-mapping.md +72 -0
  656. package/docs/api/color-illuminants.md +280 -0
  657. package/docs/api/color-rgb-color-spaces.md +151 -0
  658. package/docs/api/color-sensor-color-development.md +27 -0
  659. package/docs/api/color-srgb-icc.md +2 -4
  660. package/docs/api/color-white-balance.md +95 -19
  661. package/docs/api/composition-image-formation-plan.md +124 -95
  662. package/docs/api/composition-plan-consumer.md +7 -7
  663. package/docs/api/core-calculation-result.md +18 -14
  664. package/docs/api/core-configuration-error.md +1 -1
  665. package/docs/api/core-image-formation.md +7 -7
  666. package/docs/api/core-scientific-assurance.md +12 -10
  667. package/docs/api/core-spectral-composition.md +14 -14
  668. package/docs/api/core-spectral.md +6 -6
  669. package/docs/api/core-validation.md +3 -3
  670. package/docs/api/core-version.md +7 -6
  671. package/docs/api/equipment-exposure-capabilities.md +11 -10
  672. package/docs/api/equipment-generic-tier-assets.md +7 -2
  673. package/docs/api/equipment-generic-tier-presets.md +6 -6
  674. package/docs/api/equipment-iso-capabilities.md +18 -18
  675. package/docs/api/equipment-metering-capabilities.md +6 -6
  676. package/docs/api/equipment-release-capabilities.md +4 -4
  677. package/docs/api/exports.json +2213 -8
  678. package/docs/api/exposure-exposure-duration-control.md +9 -9
  679. package/docs/api/exposure-exposure-mode-resolver.md +35 -31
  680. package/docs/api/exposure-exposure.md +10 -10
  681. package/docs/api/exposure-flash-ttl.md +182 -0
  682. package/docs/api/exposure-flash.md +183 -28
  683. package/docs/api/exposure-metering-scene-radiance.md +11 -10
  684. package/docs/api/exposure-metering-target.md +9 -8
  685. package/docs/api/exposure-metering-temporal.md +8 -8
  686. package/docs/api/exposure-metering.md +69 -9
  687. package/docs/api/exposure-program-line.md +6 -5
  688. package/docs/api/facade-chart-radiance-batch.md +96 -0
  689. package/docs/api/facade-chart-scenes.md +240 -0
  690. package/docs/api/facade-scene-radiance.md +122 -0
  691. package/docs/api/facade-simulate-capture.md +324 -0
  692. package/docs/api/gpu-image-kernel-accelerator.md +157 -0
  693. package/docs/api/gpu-image-kernel-execution.md +152 -0
  694. package/docs/api/motion-camera-rotation.md +43 -26
  695. package/docs/api/motion-capture-rotation-inverse-mapping.md +24 -23
  696. package/docs/api/motion-capture-rotation-temporal-quadrature.md +22 -22
  697. package/docs/api/motion-capture-rotation-trajectory.md +15 -15
  698. package/docs/api/motion-capture-translation-parallax-temporal-quadrature.md +15 -14
  699. package/docs/api/motion-extended-object-projection.md +10 -8
  700. package/docs/api/motion-projected-motion.md +8 -8
  701. package/docs/api/motion-temporal-exposure-sum.md +98 -0
  702. package/docs/api/motion-video-sequence.md +159 -0
  703. package/docs/api/optics-aperture.md +8 -8
  704. package/docs/api/optics-atmospheric-haze.md +104 -0
  705. package/docs/api/optics-brown-conrady-distortion.md +123 -0
  706. package/docs/api/optics-circle-of-confusion.md +5 -4
  707. package/docs/api/optics-complex-pupil-psf.md +57 -16
  708. package/docs/api/optics-depth-of-field.md +12 -6
  709. package/docs/api/optics-diffraction.md +8 -7
  710. package/docs/api/optics-focus-breathing.md +104 -16
  711. package/docs/api/optics-focus-state.md +9 -10
  712. package/docs/api/optics-front-of-lens-filter.md +72 -14
  713. package/docs/api/optics-illumination-vignetting.md +10 -10
  714. package/docs/api/optics-irradiance-convolution.md +95 -0
  715. package/docs/api/optics-lateral-chromatic-aberration.md +22 -21
  716. package/docs/api/optics-lens-psf-kernels.md +72 -0
  717. package/docs/api/optics-lens-psf-profile.md +48 -26
  718. package/docs/api/optics-longitudinal-chromatic-aberration.md +128 -0
  719. package/docs/api/optics-polygon-diffraction.md +78 -13
  720. package/docs/api/optics-profile-contract.md +4 -4
  721. package/docs/api/optics-psf-foundation.md +12 -12
  722. package/docs/api/optics-pupil-vignetting.md +132 -0
  723. package/docs/api/optics-radial-distortion.md +12 -12
  724. package/docs/api/optics-scene-to-sensor-irradiance.md +25 -14
  725. package/docs/api/optics-scene-to-sensor-quadrature.md +15 -12
  726. package/docs/api/optics-sensor-aperture-rays.md +3 -2
  727. package/docs/api/optics-sensor-environment-query.md +52 -9
  728. package/docs/api/optics-sensor-psf-quadrature.md +13 -10
  729. package/docs/api/optics-stray-light.md +12 -11
  730. package/docs/api/optics-thin-lens.md +4 -3
  731. package/docs/api/optics-zernike-wavefront.md +229 -0
  732. package/docs/api/output-capture-corrected-sdr.md +10 -7
  733. package/docs/api/output-capture-geometry.md +35 -36
  734. package/docs/api/output-capture-sdr.md +4 -4
  735. package/docs/api/output-crop.md +7 -4
  736. package/docs/api/output-geometric-transforms.md +65 -19
  737. package/docs/api/output-lens-corrections.md +17 -15
  738. package/docs/api/output-native-capture-sdr.md +26 -13
  739. package/docs/api/output-png-encoder.md +105 -0
  740. package/docs/api/output-print-contrast-reference.md +8 -8
  741. package/docs/api/output-print-detail.md +14 -14
  742. package/docs/api/output-print-jpeg.md +22 -5
  743. package/docs/api/output-print-plan.md +18 -18
  744. package/docs/api/output-print-region-statistics.md +14 -14
  745. package/docs/api/output-sdr-rendering.md +52 -10
  746. package/docs/api/output-subject-framing-crop.md +5 -6
  747. package/docs/api/processing-demosaic.md +120 -0
  748. package/docs/api/processing-denoise.md +148 -0
  749. package/docs/api/processing-focus-stacking.md +41 -0
  750. package/docs/api/processing-hdr.md +113 -0
  751. package/docs/api/processing-panorama.md +82 -0
  752. package/docs/api/processing-processing-task.md +107 -0
  753. package/docs/api/processing-tone-mapping.md +142 -0
  754. package/docs/api/schema-camera.md +6 -4
  755. package/docs/api/schema-illumination-spectral.md +10 -11
  756. package/docs/api/schema-illumination-temporal.md +13 -15
  757. package/docs/api/schema-illumination.md +4 -4
  758. package/docs/api/schema-scene-radiance-temporal.md +10 -11
  759. package/docs/api/schema-scene-radiance.md +18 -17
  760. package/docs/api/schema-scene.md +9 -9
  761. package/docs/api/schema-validation.md +1 -1
  762. package/docs/api/sensor-accumulated-charge.md +12 -20
  763. package/docs/api/sensor-architecture.md +15 -16
  764. package/docs/api/sensor-camera-saturation-capacity.md +9 -11
  765. package/docs/api/sensor-capture-color-sampling-binding.md +47 -51
  766. package/docs/api/sensor-capture-mode-timing.md +9 -9
  767. package/docs/api/sensor-capture-mode.md +29 -30
  768. package/docs/api/sensor-color-sampling.md +31 -33
  769. package/docs/api/sensor-constant-rate-temporal-integration.md +10 -11
  770. package/docs/api/sensor-dark-current.md +30 -14
  771. package/docs/api/sensor-environment-photo-signal.md +13 -6
  772. package/docs/api/sensor-eqe-electron-rate.md +9 -8
  773. package/docs/api/sensor-eqe-local-exposure.md +18 -17
  774. package/docs/api/sensor-eqe-temporal-exposure.md +12 -11
  775. package/docs/api/sensor-exposure-window.md +24 -24
  776. package/docs/api/sensor-fixed-pattern-noise.md +104 -0
  777. package/docs/api/sensor-iso-gain.md +63 -0
  778. package/docs/api/sensor-iso-signal-chain.md +13 -22
  779. package/docs/api/sensor-local-exposure-binding.md +12 -13
  780. package/docs/api/sensor-optical-stack.md +37 -40
  781. package/docs/api/sensor-photon-energy.md +10 -11
  782. package/docs/api/sensor-physical-charge-capacity.md +8 -13
  783. package/docs/api/sensor-pixel-pitch.md +1 -1
  784. package/docs/api/sensor-radiometry-readiness.md +9 -9
  785. package/docs/api/sensor-raw-readout.md +118 -52
  786. package/docs/api/sensor-raw-reconstruction.md +97 -20
  787. package/docs/api/sensor-readout-exposure-linkage.md +120 -24
  788. package/docs/api/sensor-readout-timing.md +33 -35
  789. package/docs/api/sensor-response-application-compatibility.md +9 -11
  790. package/docs/api/sensor-response-operating-range.md +14 -18
  791. package/docs/api/sensor-responsivity-photocurrent.md +9 -12
  792. package/docs/api/sensor-sampling-aperture.md +22 -25
  793. package/docs/api/sensor-scene-eqe-temporal-exposure.md +9 -8
  794. package/docs/api/sensor-sensor-geometry.md +23 -24
  795. package/docs/api/sensor-signal-noise.md +10 -10
  796. package/docs/api/sensor-spatial-sample-reduction.md +27 -30
  797. package/docs/api/sensor-spatial-sampling-quadrature.md +37 -39
  798. package/docs/api/sensor-spatio-spectral-reduction.md +27 -29
  799. package/docs/api/sensor-spectral-coverage.md +5 -5
  800. package/docs/api/sensor-spectral-quadrature.md +33 -35
  801. package/docs/api/sensor-spectral-response.md +28 -16
  802. package/docs/api/sensor-temporal-photo-signal.md +6 -6
  803. package/docs/api/simulation-poc-simulation.md +17 -16
  804. package/docs/api/stabilization-camera-shake.md +29 -10
  805. package/docs/api/stabilization-system.md +25 -21
  806. package/docs/examples/production-request.json +3821 -2157
  807. package/docs/examples/simulate-capture.mjs +14 -0
  808. package/llms.txt +35 -0
  809. package/package.json +32 -12
  810. package/AGENTS.md +0 -674
  811. package/CONTRIBUTING.md +0 -76
  812. package/DCO +0 -33
  813. package/dist/camera/equivalent-focal-length.d.ts.map +0 -1
  814. package/dist/camera/field-of-view.d.ts.map +0 -1
  815. package/dist/camera/projected-object-size.d.ts.map +0 -1
  816. package/dist/capture/capture-export-metadata.d.ts.map +0 -1
  817. package/dist/capture/environment-raw-producer.d.ts.map +0 -1
  818. package/dist/capture/export-jpeg.d.ts.map +0 -1
  819. package/dist/capture/export-tiff.d.ts.map +0 -1
  820. package/dist/capture/focus-control.d.ts.map +0 -1
  821. package/dist/capture/linear-encoding.d.ts.map +0 -1
  822. package/dist/capture/native-environment-raw.d.ts.map +0 -1
  823. package/dist/capture/native-raw-development.d.ts.map +0 -1
  824. package/dist/capture/native-raw.d.ts.map +0 -1
  825. package/dist/capture/photographic-export.d.ts.map +0 -1
  826. package/dist/capture/raw-frame-limits.d.ts.map +0 -1
  827. package/dist/capture/raw-frame-reconstruction.d.ts.map +0 -1
  828. package/dist/capture/release-sequence.d.ts.map +0 -1
  829. package/dist/capture/sensor-raw-frame.d.ts.map +0 -1
  830. package/dist/capture/sensor-raw-producer.d.ts.map +0 -1
  831. package/dist/capture/simulated-capture.d.ts.map +0 -1
  832. package/dist/color/capture-color.d.ts.map +0 -1
  833. package/dist/color/sensor-color-development.d.ts.map +0 -1
  834. package/dist/color/srgb-icc.d.ts.map +0 -1
  835. package/dist/color/srgb-transfer.d.ts.map +0 -1
  836. package/dist/color/white-balance.d.ts.map +0 -1
  837. package/dist/composition/image-formation-plan.d.ts.map +0 -1
  838. package/dist/composition/plan-consumer.d.ts.map +0 -1
  839. package/dist/core/calculation-result.d.ts.map +0 -1
  840. package/dist/core/canonical-json.d.ts.map +0 -1
  841. package/dist/core/configuration-error.d.ts.map +0 -1
  842. package/dist/core/evidence-provenance.d.ts.map +0 -1
  843. package/dist/core/image-formation.d.ts.map +0 -1
  844. package/dist/core/owned-data.d.ts.map +0 -1
  845. package/dist/core/record-validation.d.ts.map +0 -1
  846. package/dist/core/scientific-assurance.d.ts.map +0 -1
  847. package/dist/core/spectral-composition.d.ts.map +0 -1
  848. package/dist/core/spectral.d.ts.map +0 -1
  849. package/dist/core/validation.d.ts.map +0 -1
  850. package/dist/core/version.d.ts.map +0 -1
  851. package/dist/equipment/exposure-capabilities.d.ts.map +0 -1
  852. package/dist/equipment/generic-tier-assets.d.ts.map +0 -1
  853. package/dist/equipment/generic-tier-presets.d.ts.map +0 -1
  854. package/dist/equipment/iso-capabilities.d.ts.map +0 -1
  855. package/dist/equipment/metering-capabilities.d.ts.map +0 -1
  856. package/dist/equipment/release-capabilities.d.ts.map +0 -1
  857. package/dist/exposure/exposure-duration-control.d.ts.map +0 -1
  858. package/dist/exposure/exposure-mode-resolver.d.ts.map +0 -1
  859. package/dist/exposure/exposure.d.ts.map +0 -1
  860. package/dist/exposure/flash.d.ts.map +0 -1
  861. package/dist/exposure/metering-scene-radiance.d.ts.map +0 -1
  862. package/dist/exposure/metering-target.d.ts.map +0 -1
  863. package/dist/exposure/metering-temporal.d.ts.map +0 -1
  864. package/dist/exposure/metering.d.ts.map +0 -1
  865. package/dist/exposure/program-line.d.ts.map +0 -1
  866. package/dist/index.d.ts.map +0 -1
  867. package/dist/motion/camera-rotation.d.ts.map +0 -1
  868. package/dist/motion/capture-rotation-inverse-mapping.d.ts.map +0 -1
  869. package/dist/motion/capture-rotation-temporal-quadrature.d.ts.map +0 -1
  870. package/dist/motion/capture-rotation-trajectory.d.ts.map +0 -1
  871. package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts.map +0 -1
  872. package/dist/motion/extended-object-projection.d.ts.map +0 -1
  873. package/dist/motion/projected-motion.d.ts.map +0 -1
  874. package/dist/optics/aperture.d.ts.map +0 -1
  875. package/dist/optics/circle-of-confusion.d.ts.map +0 -1
  876. package/dist/optics/complex-pupil-psf.d.ts.map +0 -1
  877. package/dist/optics/depth-of-field.d.ts.map +0 -1
  878. package/dist/optics/diffraction.d.ts.map +0 -1
  879. package/dist/optics/focus-breathing.d.ts.map +0 -1
  880. package/dist/optics/focus-state.d.ts.map +0 -1
  881. package/dist/optics/front-of-lens-filter.d.ts.map +0 -1
  882. package/dist/optics/illumination-vignetting.d.ts.map +0 -1
  883. package/dist/optics/lateral-chromatic-aberration.d.ts.map +0 -1
  884. package/dist/optics/lens-psf-profile.d.ts.map +0 -1
  885. package/dist/optics/polygon-diffraction.d.ts.map +0 -1
  886. package/dist/optics/profile-contract.d.ts.map +0 -1
  887. package/dist/optics/psf-foundation.d.ts.map +0 -1
  888. package/dist/optics/radial-distortion.d.ts.map +0 -1
  889. package/dist/optics/scene-to-sensor-irradiance.d.ts.map +0 -1
  890. package/dist/optics/scene-to-sensor-quadrature.d.ts.map +0 -1
  891. package/dist/optics/sensor-aperture-rays.d.ts.map +0 -1
  892. package/dist/optics/sensor-environment-query.d.ts.map +0 -1
  893. package/dist/optics/sensor-psf-quadrature.d.ts.map +0 -1
  894. package/dist/optics/sensor-psf-support.d.ts.map +0 -1
  895. package/dist/optics/stray-light.d.ts.map +0 -1
  896. package/dist/optics/thin-lens.d.ts.map +0 -1
  897. package/dist/output/capture-corrected-sdr.d.ts.map +0 -1
  898. package/dist/output/capture-geometry.d.ts.map +0 -1
  899. package/dist/output/capture-sdr.d.ts.map +0 -1
  900. package/dist/output/crop.d.ts.map +0 -1
  901. package/dist/output/geometric-transforms.d.ts.map +0 -1
  902. package/dist/output/lens-corrections.d.ts.map +0 -1
  903. package/dist/output/native-capture-sdr.d.ts.map +0 -1
  904. package/dist/output/print-contrast-reference.d.ts.map +0 -1
  905. package/dist/output/print-detail.d.ts.map +0 -1
  906. package/dist/output/print-jpeg.d.ts.map +0 -1
  907. package/dist/output/print-plan.d.ts.map +0 -1
  908. package/dist/output/print-region-statistics.d.ts.map +0 -1
  909. package/dist/output/sdr-rendering.d.ts.map +0 -1
  910. package/dist/output/subject-framing-crop.d.ts.map +0 -1
  911. package/dist/schema/camera.d.ts.map +0 -1
  912. package/dist/schema/camera.js +0 -3
  913. package/dist/schema/camera.js.map +0 -1
  914. package/dist/schema/illumination-spectral.d.ts.map +0 -1
  915. package/dist/schema/illumination-temporal.d.ts.map +0 -1
  916. package/dist/schema/illumination.d.ts.map +0 -1
  917. package/dist/schema/scene-radiance-temporal.d.ts.map +0 -1
  918. package/dist/schema/scene-radiance.d.ts.map +0 -1
  919. package/dist/schema/scene.d.ts.map +0 -1
  920. package/dist/schema/scene.js +0 -3
  921. package/dist/schema/scene.js.map +0 -1
  922. package/dist/schema/validation.d.ts.map +0 -1
  923. package/dist/sensor/accumulated-charge.d.ts.map +0 -1
  924. package/dist/sensor/architecture.d.ts.map +0 -1
  925. package/dist/sensor/camera-saturation-capacity.d.ts.map +0 -1
  926. package/dist/sensor/capture-color-sampling-binding.d.ts.map +0 -1
  927. package/dist/sensor/capture-mode-timing.d.ts.map +0 -1
  928. package/dist/sensor/capture-mode.d.ts.map +0 -1
  929. package/dist/sensor/color-sampling.d.ts.map +0 -1
  930. package/dist/sensor/constant-rate-temporal-integration.d.ts.map +0 -1
  931. package/dist/sensor/dark-current.d.ts.map +0 -1
  932. package/dist/sensor/environment-photo-signal.d.ts.map +0 -1
  933. package/dist/sensor/eqe-electron-rate.d.ts.map +0 -1
  934. package/dist/sensor/eqe-local-exposure.d.ts.map +0 -1
  935. package/dist/sensor/eqe-temporal-exposure.d.ts.map +0 -1
  936. package/dist/sensor/exposure-window.d.ts.map +0 -1
  937. package/dist/sensor/iso-signal-chain.d.ts.map +0 -1
  938. package/dist/sensor/local-exposure-binding.d.ts.map +0 -1
  939. package/dist/sensor/optical-stack.d.ts.map +0 -1
  940. package/dist/sensor/photon-energy.d.ts.map +0 -1
  941. package/dist/sensor/physical-charge-capacity.d.ts.map +0 -1
  942. package/dist/sensor/pixel-pitch.d.ts.map +0 -1
  943. package/dist/sensor/radiometry-readiness.d.ts.map +0 -1
  944. package/dist/sensor/raw-readout.d.ts.map +0 -1
  945. package/dist/sensor/raw-reconstruction.d.ts.map +0 -1
  946. package/dist/sensor/readout-exposure-linkage.d.ts.map +0 -1
  947. package/dist/sensor/readout-timing.d.ts.map +0 -1
  948. package/dist/sensor/response-application-compatibility.d.ts.map +0 -1
  949. package/dist/sensor/response-operating-range.d.ts.map +0 -1
  950. package/dist/sensor/responsivity-photocurrent.d.ts.map +0 -1
  951. package/dist/sensor/sampling-aperture.d.ts.map +0 -1
  952. package/dist/sensor/scene-eqe-temporal-exposure.d.ts.map +0 -1
  953. package/dist/sensor/sensor-geometry.d.ts.map +0 -1
  954. package/dist/sensor/signal-noise.d.ts.map +0 -1
  955. package/dist/sensor/spatial-sample-reduction.d.ts.map +0 -1
  956. package/dist/sensor/spatial-sampling-quadrature.d.ts.map +0 -1
  957. package/dist/sensor/spatio-spectral-reduction.d.ts.map +0 -1
  958. package/dist/sensor/spectral-coverage.d.ts.map +0 -1
  959. package/dist/sensor/spectral-quadrature.d.ts.map +0 -1
  960. package/dist/sensor/spectral-response.d.ts.map +0 -1
  961. package/dist/sensor/temporal-eqe-sum.d.ts.map +0 -1
  962. package/dist/sensor/temporal-photo-signal.d.ts.map +0 -1
  963. package/dist/sensor/temporal-sample-binding.d.ts.map +0 -1
  964. package/dist/simulation/poc-simulation.d.ts.map +0 -1
  965. package/dist/stabilization/camera-shake.d.ts.map +0 -1
  966. package/dist/stabilization/system.d.ts.map +0 -1
  967. package/docs/API_STYLE.md +0 -235
  968. package/docs/ARCHITECTURE.md +0 -356
  969. package/docs/AUTOMATION_COORDINATION.md +0 -190
  970. package/docs/CAPTURE_COLOR.md +0 -25
  971. package/docs/CAPTURE_CORRECTED_SDR.md +0 -25
  972. package/docs/CAPTURE_EXPORT_METADATA.md +0 -27
  973. package/docs/CAPTURE_SDR.md +0 -22
  974. package/docs/DEVELOPERS.md +0 -68
  975. package/docs/DIGITAL_OPTICS_FOUNDATION.md +0 -69
  976. package/docs/ENVIRONMENT_RAW_CAPTURE.md +0 -208
  977. package/docs/EXPORT_ACCEPTANCE.md +0 -133
  978. package/docs/GENERIC_TIER_PRESETS.md +0 -269
  979. package/docs/GEOMETRIC_PREPARATION_REUSE.md +0 -141
  980. package/docs/IMAGE_FORMATION.md +0 -247
  981. package/docs/LINEAR_CAPTURE_ENCODING.md +0 -25
  982. package/docs/MOTION_AND_SIGNAL.md +0 -250
  983. package/docs/NATIVE_CAPTURE_SDR.md +0 -70
  984. package/docs/NATIVE_CAPTURE_SDR_REVIEW.md +0 -37
  985. package/docs/NATIVE_CAPTURE_SDR_VALIDATION.md +0 -34
  986. package/docs/NATIVE_RAW_AND_PRINT.md +0 -47
  987. package/docs/NUMERICAL_CORRECTNESS.md +0 -191
  988. package/docs/PERFORMANCE_BASELINE.md +0 -56
  989. package/docs/PHOTOGRAPHIC_EXPORT.md +0 -206
  990. package/docs/PHYSICS_FOUNDATION.md +0 -426
  991. package/docs/POC_API.md +0 -278
  992. package/docs/POC_PROJECTION_PLATFORM_REFERENCE.md +0 -12
  993. package/docs/POC_PROJECTION_REUSE.md +0 -124
  994. package/docs/PRINT_195_196_REVIEW.md +0 -93
  995. package/docs/PRINT_196_ENGINE_ACCEPTANCE.md +0 -45
  996. package/docs/PRINT_CONTRAST_REFERENCE.md +0 -43
  997. package/docs/PRINT_DETAIL_ASSESSMENT.md +0 -81
  998. package/docs/PRINT_DETAIL_JPEG_EVIDENCE.md +0 -36
  999. package/docs/PRINT_DETAIL_SDR_EVIDENCE.md +0 -29
  1000. package/docs/PRINT_DETAIL_VALIDATION.md +0 -36
  1001. package/docs/PRINT_PLANNING.md +0 -75
  1002. package/docs/PRINT_REGION_STATISTICS.md +0 -38
  1003. package/docs/PROCESSED_OUTPUT.md +0 -157
  1004. package/docs/PRODUCTION_COMPOSITION.md +0 -373
  1005. package/docs/PRODUCTION_ENVIRONMENT_CAPTURE.md +0 -131
  1006. package/docs/PROVENANCE.md +0 -115
  1007. package/docs/PSF_FOUNDATION.md +0 -165
  1008. package/docs/RAW_FRAME_ENVELOPE.md +0 -56
  1009. package/docs/RAW_FRAME_RECONSTRUCTION.md +0 -30
  1010. package/docs/RELEASE_1_0.md +0 -66
  1011. package/docs/RELEASE_1_0_1.md +0 -61
  1012. package/docs/RELEASE_1_1_0.md +0 -25
  1013. package/docs/RELEASE_1_2_0.md +0 -51
  1014. package/docs/RELEASE_1_3_0.md +0 -15
  1015. package/docs/RELEASE_1_4_0.md +0 -23
  1016. package/docs/RELEASE_AUDIT.md +0 -39
  1017. package/docs/SCENE_RADIANCE_AND_ILLUMINATION.md +0 -298
  1018. package/docs/SCENE_SENSOR_QUADRATURE.md +0 -98
  1019. package/docs/SCENE_SENSOR_TEMPORAL_EXPOSURE.md +0 -86
  1020. package/docs/SCIENTIFIC_ASSURANCE.md +0 -280
  1021. package/docs/SCIENTIFIC_CONFORMANCE.md +0 -83
  1022. package/docs/SDR_RENDERING.md +0 -33
  1023. package/docs/SENSOR_APERTURE_RAYS.md +0 -23
  1024. package/docs/SENSOR_ENVIRONMENT_QUERY.md +0 -86
  1025. package/docs/SENSOR_EQE_LOCAL_EXPOSURE.md +0 -104
  1026. package/docs/SENSOR_EQE_TEMPORAL_EXPOSURE.md +0 -74
  1027. package/docs/SENSOR_PSF_QUADRATURE.md +0 -90
  1028. package/docs/SENSOR_RAW_FRAME.md +0 -20
  1029. package/docs/SENSOR_RAW_PRODUCER.md +0 -77
  1030. package/docs/SIGNAL_CONFORMANCE.md +0 -23
  1031. package/docs/SIMULATED_CAPTURE.md +0 -65
  1032. package/docs/STABILIZATION.md +0 -234
  1033. package/docs/TEMPORAL_PHOTO_RAW.md +0 -83
  1034. package/docs/TIER_ACCEPTANCE.md +0 -129
  1035. package/docs/TIER_PRESET_ACCEPTANCE.md +0 -59
  1036. package/docs/V1_COMPOSITION_MAP.md +0 -123
  1037. package/docs/V1_HELPER_REUSE_REVIEW.md +0 -60
  1038. package/docs/V1_PERFORMANCE_DISPOSITION.md +0 -88
  1039. package/docs/benchmarks/2026-10-01-main-baseline.json +0 -694
  1040. package/docs/benchmarks/2026-10-02-geometric-preparation-reuse.json +0 -2190
  1041. package/docs/benchmarks/2026-10-02-poc-projection-reuse.json +0 -2423
  1042. package/docs/benchmarks/2026-10-02-v1-environment-gc-profile.json +0 -210
  1043. package/docs/benchmarks/2026-10-02-v1-environment-ordinary.json +0 -187
  1044. package/docs/benchmarks/2026-10-02-v1-geometry-gc-profile.json +0 -756
  1045. package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-1.json +0 -711
  1046. package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-2.json +0 -711
  1047. package/docs/benchmarks/2026-10-02-v1-poc-gc-profile.json +0 -885
  1048. package/docs/benchmarks/2026-10-02-v1-poc-ordinary-1.json +0 -868
  1049. package/docs/benchmarks/2026-10-02-v1-poc-ordinary-2.json +0 -868
  1050. package/docs/licenses/castleCSF-MIT.txt +0 -21
  1051. package/docs/validation/documentation-fragments.json +0 -212
  1052. package/docs/validation/native-capture-sdr-darwin-arm64-node26-review.jsonl +0 -4
  1053. package/docs/validation/native-capture-sdr-darwin-arm64.jsonl +0 -3
  1054. package/docs/validation/native-raw-print-2026-10-04/fractional-asymmetric-crop.jpg +0 -0
  1055. package/docs/validation/native-raw-print-2026-10-04/gray-ramp.jpg +0 -0
  1056. package/docs/validation/native-raw-print-2026-10-04/linear-area-checker.jpg +0 -0
  1057. package/docs/validation/native-raw-print-2026-10-04/manifest.json +0 -218
  1058. package/docs/validation/native-raw-print-2026-10-04/megapixel-native.jpg +0 -0
  1059. package/docs/validation/native-raw-print-2026-10-04/native-color.jpg +0 -0
  1060. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel-validation.json +0 -9
  1061. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json +0 -29
  1062. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.codes.u16le.gz +0 -0
  1063. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.jpg +0 -0
  1064. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.rgb.gz +0 -0
  1065. package/docs/validation/native-raw-print-2026-10-04/srgb.icc +0 -0
  1066. package/docs/validation/native-raw-print-2026-10-04/validation.json +0 -41
  1067. package/docs/validation/print-196-candidate-capabilities.json +0 -28
  1068. package/docs/validation/print-196-candidate-evidence.json +0 -356
  1069. package/docs/validation/print-196-engine-acceptance.json +0 -81
  1070. package/docs/validation/print-detail-capabilities.json +0 -103
  1071. package/docs/validation/print-detail-jpeg-evidence.json +0 -116
  1072. package/docs/validation/print-detail-sdr-evidence.json +0 -81
  1073. package/docs/validation/release-audit-inventory.json +0 -1306
  1074. package/docs/validation/tier-acceptance-report-v1.json +0 -2538
@@ -1 +1 @@
1
- {"version":3,"file":"scene-radiance.js","sourceRoot":"","sources":["../../src/schema/scene-radiance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scene-radiance.js","sourceRoot":"","sources":["../../src/schema/scene-radiance.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Contracts for scene-radiance providers: the renderer or other code that reports how much\n * light leaves a scene point toward the camera.\n *\n * It covers material-response metadata, provider capability profiles, single evaluation\n * requests and results, and identity checks between them. The engine validates this data\n * but does not compute scene radiance itself.\n * @see docs/SCENE_RADIANCE_AND_ILLUMINATION.md for equations, coordinate/unit conventions, blockers\n * and support limits.\n */\n\nimport { InvalidConfigurationError } from \"../core/configuration-error.js\";\nimport {\n parseEvidenceList,\n type EvidenceProvenance\n} from \"../core/evidence-provenance.js\";\nimport {\n parseSpectralWavelengthBasis,\n parseSpectralWavelengthRangeNanometers,\n type SpectralWavelengthBasis,\n type SpectralWavelengthRangeNanometers\n} from \"../core/spectral.js\";\nimport type {\n SceneIlluminationProfile\n} from \"./illumination.js\";\nimport type {\n SceneIlluminationTemporalProfile\n} from \"./illumination-temporal.js\";\nimport type { Vector3 } from \"./scene.js\";\nimport { requireInputObject, requireInputArray, requireInputKeys, rejectUnknownFields, rejectUnknownVariantFields, UNCERTAINTY_VARIANT_FIELDS } from \"../core/record-validation.js\";\n\ntype UnknownRecord = Record<string, unknown>;\n\nexport const SCENE_MATERIAL_RESPONSE_PROFILE_SCHEMA_VERSION =\n \"0.1.0\" as const;\nexport const SCENE_RADIANCE_PROVIDER_PROFILE_SCHEMA_VERSION =\n \"0.1.0\" as const;\nexport const SCENE_RADIANCE_EVALUATION_SCHEMA_VERSION =\n \"0.1.0\" as const;\n\nexport type SceneRadianceScientificStatus =\n | \"calibrated\"\n | \"approximation\";\n\nexport type SceneRadianceUncertainty =\n | {\n kind: \"relative\";\n fraction: number;\n basis: string;\n }\n | {\n kind: \"not-quantified\";\n limitation: string;\n };\n\nexport interface SceneRadianceDataArtifactReference {\n id: string;\n checksumSha256: string;\n}\n\nexport type SceneMaterialResponseRepresentation =\n | {\n kind: \"unresolved\";\n limitation: string;\n }\n | {\n kind: \"rgb-pbr-approximation\";\n colorSpace: \"linear-srgb\";\n baseColor: {\n red: number;\n green: number;\n blue: number;\n };\n metallic: number;\n roughness: number;\n limitation: string;\n }\n | {\n kind: \"spectral-wavelength-preserving-data\";\n dataArtifact:\n SceneRadianceDataArtifactReference;\n wavelengthBasis:\n SpectralWavelengthBasis;\n wavelengthRangeNanometers:\n SpectralWavelengthRangeNanometers;\n scatteringModel:\n \"provider-defined-wavelength-preserving\";\n scientificStatus:\n SceneRadianceScientificStatus;\n uncertainty:\n SceneRadianceUncertainty;\n wavelengthChangingBehaviorModeled: false;\n emissionModeled: false;\n };\n\nexport interface SceneMaterialResponseDefinition {\n materialResponseId: string;\n evidence: readonly EvidenceProvenance[];\n representation:\n SceneMaterialResponseRepresentation;\n}\n\nexport interface SceneMaterialResponseProfile {\n schemaVersion:\n typeof SCENE_MATERIAL_RESPONSE_PROFILE_SCHEMA_VERSION;\n profileId: string;\n sceneId: string;\n evidence: readonly EvidenceProvenance[];\n materials:\n readonly SceneMaterialResponseDefinition[];\n fluorescenceModeled: false;\n volumetricMaterialTransportModeled: false;\n polarizationModeled: false;\n}\n\nexport type SceneMaterialResponseFidelity =\n | \"spectral-data\"\n | \"rgb-pbr-approximation\"\n | \"mixed\"\n | \"unresolved\";\n\nexport type SceneRadianceProviderSpectralFidelity =\n | \"wavelength-resolved\"\n | \"rgb-derived-approximation\";\n\nexport type SceneRadianceProviderVisibilityFidelity =\n | \"resolved\"\n | \"approximation\"\n | \"not-modeled\";\n\nexport type SceneRadianceProviderTransportFidelity =\n | \"resolved\"\n | \"approximation\"\n | \"not-modeled\";\n\nexport interface SceneRadianceProviderProfile {\n schemaVersion:\n typeof SCENE_RADIANCE_PROVIDER_PROFILE_SCHEMA_VERSION;\n profileId: string;\n sceneId: string;\n illuminationProfileId: string;\n illuminationTemporalProfileId?: string;\n materialResponseProfileId: string;\n outputQuantity:\n \"outgoing-spectral-radiance\";\n outputUnit:\n \"W/m^2/sr/nm\";\n scientificStatus: \"approximation\";\n uncertainty: SceneRadianceUncertainty;\n fidelity: {\n spectral:\n SceneRadianceProviderSpectralFidelity;\n material:\n SceneMaterialResponseFidelity;\n visibility:\n SceneRadianceProviderVisibilityFidelity;\n directTransport:\n SceneRadianceProviderTransportFidelity;\n indirectTransport:\n SceneRadianceProviderTransportFidelity;\n };\n wavelengthChangingTransportModeled: false;\n volumetricTransportModeled: false;\n polarizationModeled: false;\n evidence: readonly EvidenceProvenance[];\n limitations: readonly string[];\n}\n\nexport type SceneRadianceEvaluationTarget =\n | {\n kind: \"surface-point\";\n sceneObjectId: string;\n materialResponseId: string;\n positionM: Vector3;\n outgoingDirectionUnitVector: Vector3;\n }\n | {\n kind: \"environment-direction\";\n outgoingDirectionUnitVector: Vector3;\n };\n\nexport interface SceneRadianceEvaluationRequest {\n schemaVersion:\n typeof SCENE_RADIANCE_EVALUATION_SCHEMA_VERSION;\n sampleId: string;\n providerProfileId: string;\n sceneId: string;\n illuminationProfileId: string;\n materialResponseProfileId: string;\n target: SceneRadianceEvaluationTarget;\n timeSecondsFromExposureStart: number;\n wavelengthNanometers: number;\n wavelengthBasis:\n Exclude<SpectralWavelengthBasis, \"unspecified\">;\n}\n\nexport interface SceneRadianceEvaluationResult {\n schemaVersion:\n typeof SCENE_RADIANCE_EVALUATION_SCHEMA_VERSION;\n sampleId: string;\n providerProfileId: string;\n sceneId: string;\n wavelengthNanometers: number;\n wavelengthBasis:\n Exclude<SpectralWavelengthBasis, \"unspecified\">;\n quantity:\n \"outgoing-spectral-radiance\";\n unit: \"W/m^2/sr/nm\";\n spectralRadianceWattsPerSquareMeterSteradianNanometer:\n number;\n scientificStatus: \"approximation\";\n uncertainty: SceneRadianceUncertainty;\n evidence: readonly EvidenceProvenance[];\n limitations: readonly string[];\n}\n\nexport interface ValidateSceneRadianceEvaluationBindingsInput {\n providerProfile: SceneRadianceProviderProfile;\n illuminationProfile: SceneIlluminationProfile;\n illuminationTemporalProfile?:\n SceneIlluminationTemporalProfile;\n materialResponseProfile:\n SceneMaterialResponseProfile;\n request: SceneRadianceEvaluationRequest;\n result: SceneRadianceEvaluationResult;\n}\n\nexport interface SceneRadianceEvaluationBindingAssessment {\n providerBindingsMatched: true;\n requestResultIdentityMatched: true;\n materialResponseFidelity:\n SceneMaterialResponseFidelity;\n temporalIlluminationProfileBound:\n boolean;\n calibratedRadianceClaimAuthorized: false;\n sensorPlaneIrradianceCalculated: false;\n opticsApplied: false;\n photonsCalculated: false;\n}\n\nfunction requireRecord(\n value: unknown,\n path: string,\n allowedKeys: readonly string[] | null\n): UnknownRecord {\n if (\n typeof value !== \"object\" ||\n value === null ||\n Array.isArray(value)\n ) {\n throw new InvalidConfigurationError(\n path + \" must be an object.\"\n );\n }\n if (allowedKeys !== null) rejectUnknownFields(value, allowedKeys, path);\n return value as UnknownRecord;\n}\n\nfunction requireNonEmptyString(\n value: unknown,\n path: string\n): string {\n if (\n typeof value !== \"string\" ||\n value.trim().length === 0\n ) {\n throw new InvalidConfigurationError(\n path + \" must be a non-empty string.\"\n );\n }\n return value.trim();\n}\n\nfunction requireFinite(\n value: unknown,\n path: string\n): number {\n if (\n typeof value !== \"number\" ||\n !Number.isFinite(value)\n ) {\n throw new InvalidConfigurationError(\n path + \" must be a finite number.\"\n );\n }\n return value;\n}\n\nfunction requireNonNegativeFinite(\n value: unknown,\n path: string\n): number {\n const number = requireFinite(value, path);\n if (number < 0) {\n throw new InvalidConfigurationError(\n path +\n \" must be greater than or equal to zero.\"\n );\n }\n return number;\n}\n\nfunction requireFraction(\n value: unknown,\n path: string\n): number {\n const number = requireFinite(value, path);\n if (number < 0 || number > 1) {\n throw new InvalidConfigurationError(\n path +\n \" must be a finite fraction from 0 through 1.\"\n );\n }\n return number;\n}\n\nfunction parseVector3(\n value: unknown,\n path: string\n): Vector3 {\n const record = requireRecord(value, path, [\"x\", \"y\", \"z\"]);\n return {\n x: requireFinite(record.x, path + \".x\"),\n y: requireFinite(record.y, path + \".y\"),\n z: requireFinite(record.z, path + \".z\")\n };\n}\n\nfunction parseUnitDirection(\n value: unknown,\n path: string\n): Vector3 {\n const vector = parseVector3(value, path);\n const length = Math.hypot(\n vector.x,\n vector.y,\n vector.z\n );\n if (\n !Number.isFinite(length) ||\n Math.abs(length - 1) > 1e-9\n ) {\n throw new InvalidConfigurationError(\n path +\n \" must be a unit-length direction vector.\"\n );\n }\n return vector;\n}\n\nfunction parseUncertainty(\n value: unknown,\n path: string\n): SceneRadianceUncertainty {\n const record = requireRecord(value, path, null);\n rejectUnknownVariantFields(record, \"kind\", UNCERTAINTY_VARIANT_FIELDS, path);\n if (record.kind === \"relative\") {\n return {\n kind: \"relative\",\n fraction: requireNonNegativeFinite(\n record.fraction,\n path + \".fraction\"\n ),\n basis: requireNonEmptyString(\n record.basis,\n path + \".basis\"\n )\n };\n }\n if (record.kind === \"not-quantified\") {\n return {\n kind: \"not-quantified\",\n limitation: requireNonEmptyString(\n record.limitation,\n path + \".limitation\"\n )\n };\n }\n throw new InvalidConfigurationError(\n path + \".kind is invalid.\"\n );\n}\n\nfunction parseLimitations(\n value: unknown,\n path: string\n): readonly string[] {\n if (!Array.isArray(value)) {\n throw new InvalidConfigurationError(\n path + \" must be an array.\"\n );\n }\n const limitations = value.map(\n (entry, index) =>\n requireNonEmptyString(\n entry,\n path + \"[\" + index + \"]\"\n )\n );\n if (\n new Set(limitations).size !==\n limitations.length\n ) {\n throw new InvalidConfigurationError(\n path + \" must not contain duplicates.\"\n );\n }\n return limitations;\n}\n\nfunction parseArtifact(\n value: unknown,\n path: string\n): SceneRadianceDataArtifactReference {\n const record = requireRecord(value, path, [\"checksumSha256\", \"id\"]);\n const checksumSha256 =\n requireNonEmptyString(\n record.checksumSha256,\n path + \".checksumSha256\"\n );\n if (\n !/^[a-f0-9]{64}$/iu.test(\n checksumSha256\n )\n ) {\n throw new InvalidConfigurationError(\n path +\n \".checksumSha256 must be a 64-character SHA-256 hex digest.\"\n );\n }\n return {\n id: requireNonEmptyString(\n record.id,\n path + \".id\"\n ),\n checksumSha256:\n checksumSha256.toLowerCase()\n };\n}\n\nfunction parseMaterialRepresentation(\n value: unknown,\n path: string\n): SceneMaterialResponseRepresentation {\n const record = requireRecord(value, path, null);\n rejectUnknownVariantFields(record, \"kind\", {\n unresolved: [\"kind\", \"limitation\"],\n \"rgb-pbr-approximation\": [\"kind\", \"colorSpace\", \"baseColor\", \"metallic\", \"roughness\", \"limitation\"],\n \"spectral-wavelength-preserving-data\": [\"kind\", \"dataArtifact\", \"wavelengthBasis\", \"wavelengthRangeNanometers\", \"scatteringModel\",\n \"scientificStatus\", \"uncertainty\", \"wavelengthChangingBehaviorModeled\", \"emissionModeled\"]\n }, path);\n\n if (record.kind === \"unresolved\") {\n return {\n kind: \"unresolved\",\n limitation: requireNonEmptyString(\n record.limitation,\n path + \".limitation\"\n )\n };\n }\n\n if (\n record.kind ===\n \"rgb-pbr-approximation\"\n ) {\n if (record.colorSpace !== \"linear-srgb\") {\n throw new InvalidConfigurationError(\n path +\n '.colorSpace must be \"linear-srgb\".'\n );\n }\n const baseColor = requireRecord(\n record.baseColor,\n path + \".baseColor\", [\"red\", \"green\", \"blue\"]\n );\n return {\n kind: \"rgb-pbr-approximation\",\n colorSpace: \"linear-srgb\",\n baseColor: {\n red: requireFraction(\n baseColor.red,\n path + \".baseColor.red\"\n ),\n green: requireFraction(\n baseColor.green,\n path + \".baseColor.green\"\n ),\n blue: requireFraction(\n baseColor.blue,\n path + \".baseColor.blue\"\n )\n },\n metallic: requireFraction(\n record.metallic,\n path + \".metallic\"\n ),\n roughness: requireFraction(\n record.roughness,\n path + \".roughness\"\n ),\n limitation: requireNonEmptyString(\n record.limitation,\n path + \".limitation\"\n )\n };\n }\n\n if (\n record.kind !==\n \"spectral-wavelength-preserving-data\"\n ) {\n throw new InvalidConfigurationError(\n path + \".kind is invalid.\"\n );\n }\n\n if (\n record.scatteringModel !==\n \"provider-defined-wavelength-preserving\"\n ) {\n throw new InvalidConfigurationError(\n path +\n '.scatteringModel must be \"provider-defined-wavelength-preserving\".'\n );\n }\n if (\n record.scientificStatus !==\n \"calibrated\" &&\n record.scientificStatus !==\n \"approximation\"\n ) {\n throw new InvalidConfigurationError(\n path + \".scientificStatus is invalid.\"\n );\n }\n const scientificStatus =\n record.scientificStatus;\n const wavelengthBasis =\n parseSpectralWavelengthBasis(\n record.wavelengthBasis,\n path + \".wavelengthBasis\"\n );\n const uncertainty = parseUncertainty(\n record.uncertainty,\n path + \".uncertainty\"\n );\n if (\n scientificStatus === \"calibrated\" &&\n wavelengthBasis === \"unspecified\"\n ) {\n throw new InvalidConfigurationError(\n path +\n \" calibrated spectral material data requires an air or vacuum wavelength basis.\"\n );\n }\n if (\n scientificStatus === \"calibrated\" &&\n uncertainty.kind !== \"relative\"\n ) {\n throw new InvalidConfigurationError(\n path +\n \" calibrated spectral material data requires quantified relative uncertainty.\"\n );\n }\n if (\n record.wavelengthChangingBehaviorModeled !==\n false\n ) {\n throw new InvalidConfigurationError(\n path +\n \".wavelengthChangingBehaviorModeled must be false in schema 0.1.0.\"\n );\n }\n if (record.emissionModeled !== false) {\n throw new InvalidConfigurationError(\n path +\n \".emissionModeled must be false in schema 0.1.0.\"\n );\n }\n\n return {\n kind:\n \"spectral-wavelength-preserving-data\",\n dataArtifact: parseArtifact(\n record.dataArtifact,\n path + \".dataArtifact\"\n ),\n wavelengthBasis,\n wavelengthRangeNanometers:\n parseSpectralWavelengthRangeNanometers(\n record.wavelengthRangeNanometers,\n path + \".wavelengthRangeNanometers\"\n ),\n scatteringModel:\n \"provider-defined-wavelength-preserving\",\n scientificStatus,\n uncertainty,\n wavelengthChangingBehaviorModeled:\n false,\n emissionModeled: false\n };\n}\n\n/**\n * Parses material-response metadata used by a scene-radiance provider.\n *\n * RGB or PBR (physically based rendering) material data is always an approximation.\n * Spectral data is a per-wavelength provider input. It does not itself compute a BSDF\n * (how a surface scatters light), scene radiance, fluorescence, emission, volumetric\n * effects or polarization.\n */\nexport function parseSceneMaterialResponseProfile(\n value: unknown\n): SceneMaterialResponseProfile {\n const record = requireRecord(\n value,\n \"sceneMaterialResponseProfile\", [\"schemaVersion\", \"materials\", \"fluorescenceModeled\", \"volumetricMaterialTransportModeled\", \"polarizationModeled\", \"profileId\", \"sceneId\", \"evidence\"]\n );\n if (\n record.schemaVersion !==\n SCENE_MATERIAL_RESPONSE_PROFILE_SCHEMA_VERSION\n ) {\n throw new InvalidConfigurationError(\n 'sceneMaterialResponseProfile.schemaVersion must be \"' +\n SCENE_MATERIAL_RESPONSE_PROFILE_SCHEMA_VERSION +\n '\".'\n );\n }\n if (!Array.isArray(record.materials)) {\n throw new InvalidConfigurationError(\n \"sceneMaterialResponseProfile.materials must be an array.\"\n );\n }\n\n const materials = record.materials.map(\n (entry, index) => {\n const path =\n \"sceneMaterialResponseProfile.materials[\" +\n index +\n \"]\";\n const material = requireRecord(\n entry,\n path, [\"materialResponseId\", \"evidence\", \"representation\"]\n );\n return {\n materialResponseId:\n requireNonEmptyString(\n material.materialResponseId,\n path + \".materialResponseId\"\n ),\n evidence: parseEvidenceList(\n material.evidence,\n path + \".evidence\"\n ),\n representation:\n parseMaterialRepresentation(\n material.representation,\n path + \".representation\"\n )\n };\n }\n );\n const ids = materials.map(\n (entry) => entry.materialResponseId\n );\n if (new Set(ids).size !== ids.length) {\n throw new InvalidConfigurationError(\n \"sceneMaterialResponseProfile.materials[].materialResponseId must not contain duplicates.\"\n );\n }\n\n if (record.fluorescenceModeled !== false) {\n throw new InvalidConfigurationError(\n \"sceneMaterialResponseProfile.fluorescenceModeled must be false in schema 0.1.0.\"\n );\n }\n if (\n record.volumetricMaterialTransportModeled !==\n false\n ) {\n throw new InvalidConfigurationError(\n \"sceneMaterialResponseProfile.volumetricMaterialTransportModeled must be false in schema 0.1.0.\"\n );\n }\n if (record.polarizationModeled !== false) {\n throw new InvalidConfigurationError(\n \"sceneMaterialResponseProfile.polarizationModeled must be false in schema 0.1.0.\"\n );\n }\n\n return {\n schemaVersion:\n SCENE_MATERIAL_RESPONSE_PROFILE_SCHEMA_VERSION,\n profileId: requireNonEmptyString(\n record.profileId,\n \"sceneMaterialResponseProfile.profileId\"\n ),\n sceneId: requireNonEmptyString(\n record.sceneId,\n \"sceneMaterialResponseProfile.sceneId\"\n ),\n evidence: parseEvidenceList(\n record.evidence,\n \"sceneMaterialResponseProfile.evidence\"\n ),\n materials,\n fluorescenceModeled: false,\n volumetricMaterialTransportModeled:\n false,\n polarizationModeled: false\n };\n}\n\n/**\n * Returns the material fidelity a profile supports, choosing the lower level when in doubt.\n */\nexport function assessSceneMaterialResponseFidelity(\n profile: SceneMaterialResponseProfile\n): SceneMaterialResponseFidelity {\n requireInputObject(profile, \"assessSceneMaterialResponseFidelity input\");\n // 2.0.0: the whole profile is validated, so an unknown field at any level is rejected.\n parseSceneMaterialResponseProfile(profile);\n requireInputArray(profile.materials, \"profile.materials\");\n if (\n profile.materials.some(\n (entry) =>\n entry.representation.kind ===\n \"unresolved\"\n )\n ) {\n return \"unresolved\";\n }\n\n const kinds = new Set(\n profile.materials.map(\n (entry) => entry.representation.kind\n )\n );\n if (\n kinds.size === 0 ||\n kinds.has(\"unresolved\")\n ) {\n return \"unresolved\";\n }\n if (\n kinds.size === 1 &&\n kinds.has(\n \"spectral-wavelength-preserving-data\"\n )\n ) {\n return \"spectral-data\";\n }\n if (\n kinds.size === 1 &&\n kinds.has(\"rgb-pbr-approximation\")\n ) {\n return \"rgb-pbr-approximation\";\n }\n return \"mixed\";\n}\n\nfunction parseProviderFidelity(\n value: unknown,\n path: string\n): SceneRadianceProviderProfile[\"fidelity\"] {\n const record = requireRecord(value, path, [\"spectral\", \"material\", \"visibility\", \"directTransport\", \"indirectTransport\"]);\n const spectral = record.spectral;\n if (\n spectral !== \"wavelength-resolved\" &&\n spectral !==\n \"rgb-derived-approximation\"\n ) {\n throw new InvalidConfigurationError(\n path + \".spectral is invalid.\"\n );\n }\n const material = record.material;\n if (\n material !== \"spectral-data\" &&\n material !== \"rgb-pbr-approximation\" &&\n material !== \"mixed\" &&\n material !== \"unresolved\"\n ) {\n throw new InvalidConfigurationError(\n path + \".material is invalid.\"\n );\n }\n const parseVisibility = (\n candidate: unknown,\n candidatePath: string\n ): SceneRadianceProviderVisibilityFidelity => {\n if (\n candidate !== \"resolved\" &&\n candidate !== \"approximation\" &&\n candidate !== \"not-modeled\"\n ) {\n throw new InvalidConfigurationError(\n candidatePath + \" is invalid.\"\n );\n }\n return candidate;\n };\n const parseTransport = (\n candidate: unknown,\n candidatePath: string\n ): SceneRadianceProviderTransportFidelity => {\n if (\n candidate !== \"resolved\" &&\n candidate !== \"approximation\" &&\n candidate !== \"not-modeled\"\n ) {\n throw new InvalidConfigurationError(\n candidatePath + \" is invalid.\"\n );\n }\n return candidate;\n };\n\n return {\n spectral,\n material,\n visibility: parseVisibility(\n record.visibility,\n path + \".visibility\"\n ),\n directTransport: parseTransport(\n record.directTransport,\n path + \".directTransport\"\n ),\n indirectTransport: parseTransport(\n record.indirectTransport,\n path + \".indirectTransport\"\n )\n };\n}\n\n/**\n * Parses a provider's declaration of what it can do (its profile). Works with any renderer.\n *\n * Schema 0.1.0 is approximation-only by design. A provider may use calibrated inputs,\n * but this contract cannot support a claim of calibrated outgoing radiance. That needs\n * later work on complete spectral and light-transport models.\n */\nexport function parseSceneRadianceProviderProfile(\n value: unknown\n): SceneRadianceProviderProfile {\n const record = requireRecord(\n value,\n \"sceneRadianceProviderProfile\", [\"schemaVersion\", \"outputQuantity\", \"outputUnit\", \"scientificStatus\", \"wavelengthChangingTransportModeled\", \"volumetricTransportModeled\", \"polarizationModeled\", \"profileId\", \"sceneId\", \"illuminationProfileId\", \"illuminationTemporalProfileId\", \"materialResponseProfileId\", \"uncertainty\", \"fidelity\", \"evidence\", \"limitations\"]\n );\n if (\n record.schemaVersion !==\n SCENE_RADIANCE_PROVIDER_PROFILE_SCHEMA_VERSION\n ) {\n throw new InvalidConfigurationError(\n 'sceneRadianceProviderProfile.schemaVersion must be \"' +\n SCENE_RADIANCE_PROVIDER_PROFILE_SCHEMA_VERSION +\n '\".'\n );\n }\n if (\n record.outputQuantity !==\n \"outgoing-spectral-radiance\"\n ) {\n throw new InvalidConfigurationError(\n 'sceneRadianceProviderProfile.outputQuantity must be \"outgoing-spectral-radiance\".'\n );\n }\n if (record.outputUnit !== \"W/m^2/sr/nm\") {\n throw new InvalidConfigurationError(\n 'sceneRadianceProviderProfile.outputUnit must be \"W/m^2/sr/nm\".'\n );\n }\n if (\n record.scientificStatus !==\n \"approximation\"\n ) {\n throw new InvalidConfigurationError(\n 'sceneRadianceProviderProfile.scientificStatus must be \"approximation\" in schema 0.1.0.'\n );\n }\n if (\n record.wavelengthChangingTransportModeled !==\n false ||\n record.volumetricTransportModeled !==\n false ||\n record.polarizationModeled !== false\n ) {\n throw new InvalidConfigurationError(\n \"sceneRadianceProviderProfile wavelength-changing, volumetric, and polarization transport flags must all be false in schema 0.1.0.\"\n );\n }\n\n return {\n schemaVersion:\n SCENE_RADIANCE_PROVIDER_PROFILE_SCHEMA_VERSION,\n profileId: requireNonEmptyString(\n record.profileId,\n \"sceneRadianceProviderProfile.profileId\"\n ),\n sceneId: requireNonEmptyString(\n record.sceneId,\n \"sceneRadianceProviderProfile.sceneId\"\n ),\n illuminationProfileId:\n requireNonEmptyString(\n record.illuminationProfileId,\n \"sceneRadianceProviderProfile.illuminationProfileId\"\n ),\n ...(record.illuminationTemporalProfileId ===\n undefined\n ? {}\n : {\n illuminationTemporalProfileId:\n requireNonEmptyString(\n record.illuminationTemporalProfileId,\n \"sceneRadianceProviderProfile.illuminationTemporalProfileId\"\n )\n }),\n materialResponseProfileId:\n requireNonEmptyString(\n record.materialResponseProfileId,\n \"sceneRadianceProviderProfile.materialResponseProfileId\"\n ),\n outputQuantity:\n \"outgoing-spectral-radiance\",\n outputUnit: \"W/m^2/sr/nm\",\n scientificStatus: \"approximation\",\n uncertainty: parseUncertainty(\n record.uncertainty,\n \"sceneRadianceProviderProfile.uncertainty\"\n ),\n fidelity: parseProviderFidelity(\n record.fidelity,\n \"sceneRadianceProviderProfile.fidelity\"\n ),\n wavelengthChangingTransportModeled:\n false,\n volumetricTransportModeled: false,\n polarizationModeled: false,\n evidence: parseEvidenceList(\n record.evidence,\n \"sceneRadianceProviderProfile.evidence\"\n ),\n limitations: parseLimitations(\n record.limitations,\n \"sceneRadianceProviderProfile.limitations\"\n )\n };\n}\n\nfunction parsePositiveWavelengthNanometers(\n value: unknown,\n path: string\n): number {\n const wavelength = requireFinite(\n value,\n path\n );\n if (wavelength <= 0) {\n throw new InvalidConfigurationError(\n path + \" must be greater than zero.\"\n );\n }\n return wavelength;\n}\n\nfunction parseResolvedWavelengthBasis(\n value: unknown,\n path: string\n): Exclude<\n SpectralWavelengthBasis,\n \"unspecified\"\n> {\n const basis = parseSpectralWavelengthBasis(\n value,\n path\n );\n if (basis === \"unspecified\") {\n throw new InvalidConfigurationError(\n path +\n \" must be air or vacuum for outgoing spectral radiance.\"\n );\n }\n return basis;\n}\n\nfunction parseEvaluationTarget(\n value: unknown,\n path: string\n): SceneRadianceEvaluationTarget {\n const record = requireRecord(value, path, null);\n rejectUnknownVariantFields(record, \"kind\", {\n \"surface-point\": [\"kind\", \"sceneObjectId\", \"materialResponseId\", \"positionM\", \"outgoingDirectionUnitVector\"],\n \"environment-direction\": [\"kind\", \"outgoingDirectionUnitVector\"]\n }, path);\n if (record.kind === \"surface-point\") {\n return {\n kind: \"surface-point\",\n sceneObjectId: requireNonEmptyString(\n record.sceneObjectId,\n path + \".sceneObjectId\"\n ),\n materialResponseId:\n requireNonEmptyString(\n record.materialResponseId,\n path + \".materialResponseId\"\n ),\n positionM: parseVector3(\n record.positionM,\n path + \".positionM\"\n ),\n outgoingDirectionUnitVector:\n parseUnitDirection(\n record.outgoingDirectionUnitVector,\n path +\n \".outgoingDirectionUnitVector\"\n )\n };\n }\n if (\n record.kind ===\n \"environment-direction\"\n ) {\n return {\n kind: \"environment-direction\",\n outgoingDirectionUnitVector:\n parseUnitDirection(\n record.outgoingDirectionUnitVector,\n path +\n \".outgoingDirectionUnitVector\"\n )\n };\n }\n throw new InvalidConfigurationError(\n path + \".kind is invalid.\"\n );\n}\n\n/**\n * Parses one provider evaluation request at an explicit scene target,\n * physical time, wavelength, and outgoing direction.\n */\nexport function parseSceneRadianceEvaluationRequest(\n value: unknown\n): SceneRadianceEvaluationRequest {\n const record = requireRecord(\n value,\n \"sceneRadianceEvaluationRequest\", [\"schemaVersion\", \"sampleId\", \"providerProfileId\", \"sceneId\", \"illuminationProfileId\", \"materialResponseProfileId\", \"target\", \"timeSecondsFromExposureStart\", \"wavelengthNanometers\", \"wavelengthBasis\"]\n );\n if (\n record.schemaVersion !==\n SCENE_RADIANCE_EVALUATION_SCHEMA_VERSION\n ) {\n throw new InvalidConfigurationError(\n 'sceneRadianceEvaluationRequest.schemaVersion must be \"' +\n SCENE_RADIANCE_EVALUATION_SCHEMA_VERSION +\n '\".'\n );\n }\n\n return {\n schemaVersion:\n SCENE_RADIANCE_EVALUATION_SCHEMA_VERSION,\n sampleId: requireNonEmptyString(\n record.sampleId,\n \"sceneRadianceEvaluationRequest.sampleId\"\n ),\n providerProfileId:\n requireNonEmptyString(\n record.providerProfileId,\n \"sceneRadianceEvaluationRequest.providerProfileId\"\n ),\n sceneId: requireNonEmptyString(\n record.sceneId,\n \"sceneRadianceEvaluationRequest.sceneId\"\n ),\n illuminationProfileId:\n requireNonEmptyString(\n record.illuminationProfileId,\n \"sceneRadianceEvaluationRequest.illuminationProfileId\"\n ),\n materialResponseProfileId:\n requireNonEmptyString(\n record.materialResponseProfileId,\n \"sceneRadianceEvaluationRequest.materialResponseProfileId\"\n ),\n target: parseEvaluationTarget(\n record.target,\n \"sceneRadianceEvaluationRequest.target\"\n ),\n timeSecondsFromExposureStart:\n requireNonNegativeFinite(\n record.timeSecondsFromExposureStart,\n \"sceneRadianceEvaluationRequest.timeSecondsFromExposureStart\"\n ),\n wavelengthNanometers:\n parsePositiveWavelengthNanometers(\n record.wavelengthNanometers,\n \"sceneRadianceEvaluationRequest.wavelengthNanometers\"\n ),\n wavelengthBasis:\n parseResolvedWavelengthBasis(\n record.wavelengthBasis,\n \"sceneRadianceEvaluationRequest.wavelengthBasis\"\n )\n };\n}\n\n/**\n * Parses one outgoing spectral-radiance result from a provider.\n *\n * The number is accepted as the provider reported it. Parsing checks units, that the\n * value is finite and nonnegative, provenance and identity fields. It does not prove\n * the provider's light-transport calculation is physically correct.\n */\nexport function parseSceneRadianceEvaluationResult(\n value: unknown\n): SceneRadianceEvaluationResult {\n const record = requireRecord(\n value,\n \"sceneRadianceEvaluationResult\", [\"schemaVersion\", \"quantity\", \"unit\", \"scientificStatus\", \"sampleId\", \"providerProfileId\", \"sceneId\", \"wavelengthNanometers\", \"wavelengthBasis\", \"spectralRadianceWattsPerSquareMeterSteradianNanometer\", \"uncertainty\", \"evidence\", \"limitations\"]\n );\n if (\n record.schemaVersion !==\n SCENE_RADIANCE_EVALUATION_SCHEMA_VERSION\n ) {\n throw new InvalidConfigurationError(\n 'sceneRadianceEvaluationResult.schemaVersion must be \"' +\n SCENE_RADIANCE_EVALUATION_SCHEMA_VERSION +\n '\".'\n );\n }\n if (\n record.quantity !==\n \"outgoing-spectral-radiance\"\n ) {\n throw new InvalidConfigurationError(\n 'sceneRadianceEvaluationResult.quantity must be \"outgoing-spectral-radiance\".'\n );\n }\n if (record.unit !== \"W/m^2/sr/nm\") {\n throw new InvalidConfigurationError(\n 'sceneRadianceEvaluationResult.unit must be \"W/m^2/sr/nm\".'\n );\n }\n if (\n record.scientificStatus !==\n \"approximation\"\n ) {\n throw new InvalidConfigurationError(\n 'sceneRadianceEvaluationResult.scientificStatus must be \"approximation\" in schema 0.1.0.'\n );\n }\n\n return {\n schemaVersion:\n SCENE_RADIANCE_EVALUATION_SCHEMA_VERSION,\n sampleId: requireNonEmptyString(\n record.sampleId,\n \"sceneRadianceEvaluationResult.sampleId\"\n ),\n providerProfileId:\n requireNonEmptyString(\n record.providerProfileId,\n \"sceneRadianceEvaluationResult.providerProfileId\"\n ),\n sceneId: requireNonEmptyString(\n record.sceneId,\n \"sceneRadianceEvaluationResult.sceneId\"\n ),\n wavelengthNanometers:\n parsePositiveWavelengthNanometers(\n record.wavelengthNanometers,\n \"sceneRadianceEvaluationResult.wavelengthNanometers\"\n ),\n wavelengthBasis:\n parseResolvedWavelengthBasis(\n record.wavelengthBasis,\n \"sceneRadianceEvaluationResult.wavelengthBasis\"\n ),\n quantity:\n \"outgoing-spectral-radiance\",\n unit: \"W/m^2/sr/nm\",\n spectralRadianceWattsPerSquareMeterSteradianNanometer:\n requireNonNegativeFinite(\n record.spectralRadianceWattsPerSquareMeterSteradianNanometer,\n \"sceneRadianceEvaluationResult.spectralRadianceWattsPerSquareMeterSteradianNanometer\"\n ),\n scientificStatus: \"approximation\",\n uncertainty: parseUncertainty(\n record.uncertainty,\n \"sceneRadianceEvaluationResult.uncertainty\"\n ),\n evidence: parseEvidenceList(\n record.evidence,\n \"sceneRadianceEvaluationResult.evidence\"\n ),\n limitations: parseLimitations(\n record.limitations,\n \"sceneRadianceEvaluationResult.limitations\"\n )\n };\n}\n\nfunction requireEqual(\n actual: unknown,\n expected: unknown,\n message: string\n): void {\n if (actual !== expected) {\n throw new InvalidConfigurationError(\n message\n );\n }\n}\n\n/**\n * Checks that a provider result matches its request and profile identities exactly.\n *\n * It never recomputes the radiance value, and never upgrades the provider's\n * approximation to calibrated radiometry.\n */\nexport function validateSceneRadianceEvaluationBindings(\n input:\n ValidateSceneRadianceEvaluationBindingsInput\n): SceneRadianceEvaluationBindingAssessment {\n requireInputKeys(input, \"validateSceneRadianceEvaluationBindings\", [\"providerProfile\", \"illuminationProfile\", \"illuminationTemporalProfile\", \"materialResponseProfile\", \"request\", \"result\"]);\n const {\n providerProfile,\n illuminationProfile,\n illuminationTemporalProfile,\n materialResponseProfile,\n request,\n result\n } = input;\n\n requireInputObject(providerProfile, \"providerProfile input\");\n requireEqual(\n providerProfile.sceneId,\n illuminationProfile.sceneId,\n \"Provider and illumination profiles must reference the same sceneId.\"\n );\n requireEqual(\n providerProfile.sceneId,\n materialResponseProfile.sceneId,\n \"Provider and material-response profiles must reference the same sceneId.\"\n );\n requireEqual(\n providerProfile.illuminationProfileId,\n illuminationProfile.profileId,\n \"Provider illuminationProfileId must match the supplied illumination profile.\"\n );\n requireEqual(\n providerProfile.materialResponseProfileId,\n materialResponseProfile.profileId,\n \"Provider materialResponseProfileId must match the supplied material-response profile.\"\n );\n\n if (\n providerProfile\n .illuminationTemporalProfileId ===\n undefined\n ) {\n if (\n illuminationTemporalProfile !==\n undefined\n ) {\n throw new InvalidConfigurationError(\n \"A temporal illumination profile was supplied but the provider profile does not bind one.\"\n );\n }\n } else {\n if (\n illuminationTemporalProfile ===\n undefined\n ) {\n throw new InvalidConfigurationError(\n \"Provider illuminationTemporalProfileId requires the matching temporal illumination profile.\"\n );\n }\n requireEqual(\n providerProfile\n .illuminationTemporalProfileId,\n illuminationTemporalProfile\n .profileId,\n \"Provider illuminationTemporalProfileId must match the supplied temporal illumination profile.\"\n );\n requireEqual(\n providerProfile.sceneId,\n illuminationTemporalProfile.sceneId,\n \"Provider and temporal illumination profiles must reference the same sceneId.\"\n );\n requireEqual(\n providerProfile\n .illuminationProfileId,\n illuminationTemporalProfile\n .illuminationProfileId,\n \"Temporal illumination profile must bind the provider's illuminationProfileId.\"\n );\n }\n\n const materialResponseFidelity =\n assessSceneMaterialResponseFidelity(\n materialResponseProfile\n );\n requireEqual(\n providerProfile.fidelity.material,\n materialResponseFidelity,\n \"Provider material fidelity must match the supplied material-response profile.\"\n );\n\n requireEqual(\n request.providerProfileId,\n providerProfile.profileId,\n \"Request providerProfileId must match the supplied provider profile.\"\n );\n requireEqual(\n request.sceneId,\n providerProfile.sceneId,\n \"Request sceneId must match the supplied provider profile.\"\n );\n requireEqual(\n request.illuminationProfileId,\n illuminationProfile.profileId,\n \"Request illuminationProfileId must match the supplied illumination profile.\"\n );\n requireEqual(\n request.materialResponseProfileId,\n materialResponseProfile.profileId,\n \"Request materialResponseProfileId must match the supplied material-response profile.\"\n );\n\n if (request.target.kind === \"surface-point\") {\n const target = request.target;\n if (\n !materialResponseProfile.materials.some(\n (material) =>\n material.materialResponseId ===\n target.materialResponseId\n )\n ) {\n throw new InvalidConfigurationError(\n \"Request surface target materialResponseId is not declared by the supplied material-response profile.\"\n );\n }\n }\n\n requireEqual(\n result.sampleId,\n request.sampleId,\n \"Result sampleId must match the request.\"\n );\n requireEqual(\n result.providerProfileId,\n request.providerProfileId,\n \"Result providerProfileId must match the request.\"\n );\n requireEqual(\n result.sceneId,\n request.sceneId,\n \"Result sceneId must match the request.\"\n );\n requireEqual(\n result.wavelengthNanometers,\n request.wavelengthNanometers,\n \"Result wavelengthNanometers must match the request exactly.\"\n );\n requireEqual(\n result.wavelengthBasis,\n request.wavelengthBasis,\n \"Result wavelengthBasis must match the request.\"\n );\n\n return {\n providerBindingsMatched: true,\n requestResultIdentityMatched: true,\n materialResponseFidelity,\n temporalIlluminationProfileBound:\n illuminationTemporalProfile !==\n undefined,\n calibratedRadianceClaimAuthorized: false,\n sensorPlaneIrradianceCalculated:\n false,\n opticsApplied: false,\n photonsCalculated: false\n };\n}\n"]}
@@ -1,8 +1,10 @@
1
1
  /**
2
- * The legacy SceneConfiguration describes the POC subject and representative constant motion. It
3
- * is not a spectral scene-radiance provider, surface visibility solver or physical illumination
4
- * transport model. Keep that simpler request contract separate from production scene/provider
5
- * bindings.
2
+ * The legacy SceneConfiguration: the proof-of-concept (POC) subject and its representative
3
+ * constant motion, plus the curated scene description types.
4
+ *
5
+ * It is not a spectral scene-radiance provider, a surface visibility solver or a physical
6
+ * light-transport model. Keep this simpler request contract separate from the production
7
+ * scene and provider types.
6
8
  * @see docs/RELEASE_1_0.md and the corresponding domain guide.
7
9
  */
8
10
  /**
@@ -18,17 +20,17 @@ export interface Vector3 {
18
20
  */
19
21
  export type SceneRadiometry = {
20
22
  /**
21
- * Relative linear values preserve light ratios but are not absolutely
22
- * calibrated for photon-count calculations.
23
+ * Relative linear values keep light ratios correct but have no absolute
24
+ * calibration, so they cannot be used to compute photon counts.
23
25
  */
24
26
  kind: "relative-linear";
25
27
  referenceValue: number;
26
28
  } | {
27
29
  /**
28
- * Scene package includes an absolute luminance anchor that can support
29
- * calibrated photometric exposure work. Luminance alone is not
30
- * sufficient to derive photon counts; photon simulation additionally
31
- * requires defensible spectral and optical calibration.
30
+ * The scene package includes an absolute luminance reference, which can
31
+ * support calibrated photometric exposure work. Luminance alone cannot give
32
+ * photon counts. Simulating photons also needs defensible spectral and
33
+ * optical calibration.
32
34
  */
33
35
  kind: "absolute-luminance";
34
36
  referenceValue: number;
@@ -61,8 +63,8 @@ export type SceneCapability = "scene-linear-rgb" | "metric-depth" | "segmentatio
61
63
  /**
62
64
  * Versioned, renderer-independent description of a curated synthetic scene.
63
65
  *
64
- * Asset locations are intentionally not part of this scientific schema;
65
- * callers may bind the metadata to their own asset systems separately.
66
+ * Asset locations are deliberately left out of this scientific schema. Callers
67
+ * can link the metadata to their own asset systems.
66
68
  */
67
69
  export interface SceneDefinition {
68
70
  schemaVersion: string;
@@ -73,4 +75,3 @@ export interface SceneDefinition {
73
75
  objects: readonly SceneObject[];
74
76
  focusTargetIds?: readonly string[];
75
77
  }
76
- //# sourceMappingURL=scene.d.ts.map
@@ -15,4 +15,3 @@ export declare function parseCameraConfiguration(value: unknown): CameraConfigur
15
15
  * @returns The original value narrowed to SceneDefinition.
16
16
  */
17
17
  export declare function parseSceneDefinition(value: unknown): SceneDefinition;
18
- //# sourceMappingURL=validation.d.ts.map
@@ -1,11 +1,10 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  /**
3
- * Module boundary and integration notes.
4
- * Parses and validates an untrusted camera configuration.
5
- * Parses and validates an untrusted renderer-independent scene definition.
3
+ * Runtime parsers for untrusted camera configurations and scene definitions.
6
4
  * @see docs/SCENE_RADIANCE_AND_ILLUMINATION.md for equations, coordinate/unit conventions, blockers
7
5
  * and support limits.
8
6
  */
7
+ import { rejectUnknownFields, rejectUnknownVariantFields } from "../core/record-validation.js";
9
8
  import { InvalidConfigurationError } from "../core/configuration-error.js";
10
9
  export { InvalidConfigurationError } from "../core/configuration-error.js";
11
10
  const CAMERA_SUPPORTS = new Set([
@@ -24,10 +23,12 @@ const SCENE_CAPABILITIES = new Set([
24
23
  "multi-resolution-layers",
25
24
  "absolute-radiometry"
26
25
  ]);
27
- function requireRecord(value, path) {
26
+ function requireRecord(value, path, allowedKeys) {
28
27
  if (typeof value !== "object" || value === null || Array.isArray(value)) {
29
28
  throw new InvalidConfigurationError(`${path} must be an object.`);
30
29
  }
30
+ if (allowedKeys !== null)
31
+ rejectUnknownFields(value, allowedKeys, path);
31
32
  return value;
32
33
  }
33
34
  function requireString(record, key, path) {
@@ -59,7 +60,7 @@ function requirePositiveIntegerValue(record, key, path) {
59
60
  return value;
60
61
  }
61
62
  function assertVector3(value, path) {
62
- const vector = requireRecord(value, path);
63
+ const vector = requireRecord(value, path, ["x", "y", "z"]);
63
64
  for (const component of ["x", "y", "z"]) {
64
65
  const coordinate = vector[component];
65
66
  if (typeof coordinate !== "number" || !Number.isFinite(coordinate)) {
@@ -87,22 +88,22 @@ function assertUniqueStrings(values, path) {
87
88
  * @returns The original value narrowed to CameraConfiguration.
88
89
  */
89
90
  export function parseCameraConfiguration(value) {
90
- const camera = requireRecord(value, "camera");
91
- const sensor = requireRecord(camera.sensor, "camera.sensor");
91
+ const camera = requireRecord(value, "camera", ["sensor", "lens", "exposure", "focus", "stabilization"]);
92
+ const sensor = requireRecord(camera.sensor, "camera.sensor", ["widthMm", "heightMm", "pixelWidth", "pixelHeight"]);
92
93
  requirePositiveNumber(sensor, "widthMm", "camera.sensor");
93
94
  requirePositiveNumber(sensor, "heightMm", "camera.sensor");
94
95
  requirePositiveIntegerValue(sensor, "pixelWidth", "camera.sensor");
95
96
  requirePositiveIntegerValue(sensor, "pixelHeight", "camera.sensor");
96
- const lens = requireRecord(camera.lens, "camera.lens");
97
+ const lens = requireRecord(camera.lens, "camera.lens", ["focalLengthMm", "aperture"]);
97
98
  requirePositiveNumber(lens, "focalLengthMm", "camera.lens");
98
99
  requirePositiveNumber(lens, "aperture", "camera.lens");
99
- const exposure = requireRecord(camera.exposure, "camera.exposure");
100
+ const exposure = requireRecord(camera.exposure, "camera.exposure", ["shutterSeconds", "iso"]);
100
101
  requirePositiveNumber(exposure, "shutterSeconds", "camera.exposure");
101
102
  requirePositiveNumber(exposure, "iso", "camera.exposure");
102
- const focus = requireRecord(camera.focus, "camera.focus");
103
+ const focus = requireRecord(camera.focus, "camera.focus", ["focusDistanceM"]);
103
104
  requirePositiveNumber(focus, "focusDistanceM", "camera.focus");
104
105
  if (camera.stabilization !== undefined) {
105
- const stabilization = requireRecord(camera.stabilization, "camera.stabilization");
106
+ const stabilization = requireRecord(camera.stabilization, "camera.stabilization", ["bodyEnabled", "lensEnabled", "support"]);
106
107
  requireBoolean(stabilization, "bodyEnabled", "camera.stabilization");
107
108
  requireBoolean(stabilization, "lensEnabled", "camera.stabilization");
108
109
  const support = requireString(stabilization, "support", "camera.stabilization");
@@ -119,11 +120,12 @@ export function parseCameraConfiguration(value) {
119
120
  * @returns The original value narrowed to SceneDefinition.
120
121
  */
121
122
  export function parseSceneDefinition(value) {
122
- const scene = requireRecord(value, "scene");
123
+ const scene = requireRecord(value, "scene", ["schemaVersion", "id", "version", "radiometry", "capabilities", "objects", "focusTargetIds"]);
123
124
  requireString(scene, "schemaVersion", "scene");
124
125
  requireString(scene, "id", "scene");
125
126
  requireString(scene, "version", "scene");
126
- const radiometry = requireRecord(scene.radiometry, "scene.radiometry");
127
+ const radiometry = requireRecord(scene.radiometry, "scene.radiometry", null);
128
+ rejectUnknownVariantFields(radiometry, "kind", { "relative-linear": ["kind", "referenceValue"], "absolute-luminance": ["kind", "referenceValue", "referenceLuminanceCdM2"] }, "scene.radiometry");
127
129
  const radiometryKind = requireString(radiometry, "kind", "scene.radiometry");
128
130
  requirePositiveNumber(radiometry, "referenceValue", "scene.radiometry");
129
131
  if (radiometryKind === "absolute-luminance") {
@@ -145,7 +147,7 @@ export function parseSceneDefinition(value) {
145
147
  const objectIds = [];
146
148
  scene.objects.forEach((objectValue, index) => {
147
149
  const path = `scene.objects[${index}]`;
148
- const object = requireRecord(objectValue, path);
150
+ const object = requireRecord(objectValue, path, ["id", "distanceM", "label", "tags", "motion"]);
149
151
  objectIds.push(requireString(object, "id", path));
150
152
  requirePositiveNumber(object, "distanceM", path);
151
153
  if (object.label !== undefined && typeof object.label !== "string") {
@@ -155,7 +157,7 @@ export function parseSceneDefinition(value) {
155
157
  assertStringArray(object.tags, `${path}.tags`);
156
158
  }
157
159
  if (object.motion !== undefined) {
158
- const motion = requireRecord(object.motion, `${path}.motion`);
160
+ const motion = requireRecord(object.motion, `${path}.motion`, ["linearVelocityMps", "angularVelocityRadPerSec"]);
159
161
  assertVector3(motion.linearVelocityMps, `${path}.motion.linearVelocityMps`);
160
162
  if (motion.angularVelocityRadPerSec !== undefined) {
161
163
  assertVector3(motion.angularVelocityRadPerSec, `${path}.motion.angularVelocityRadPerSec`);
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/schema/validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/schema/validation.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Runtime parsers for untrusted camera configurations and scene definitions.\n * @see docs/SCENE_RADIANCE_AND_ILLUMINATION.md for equations, coordinate/unit conventions, blockers\n * and support limits.\n */\n\nimport { rejectUnknownFields, rejectUnknownVariantFields } from \"../core/record-validation.js\";\nimport { InvalidConfigurationError } from \"../core/configuration-error.js\";\nexport { InvalidConfigurationError } from \"../core/configuration-error.js\";\n\nimport type {\n CameraConfiguration,\n CameraSupport\n} from \"./camera.js\";\nimport type {\n SceneCapability,\n SceneDefinition\n} from \"./scene.js\";\n\ntype UnknownRecord = Record<string, unknown>;\n\nconst CAMERA_SUPPORTS = new Set<CameraSupport>([\n \"handheld\",\n \"braced\",\n \"monopod\",\n \"tripod\"\n]);\n\nconst SCENE_CAPABILITIES = new Set<SceneCapability>([\n \"scene-linear-rgb\",\n \"metric-depth\",\n \"segmentation\",\n \"occlusion-layers\",\n \"motion-vectors\",\n \"focus-targets\",\n \"multi-resolution-layers\",\n \"absolute-radiometry\"\n]);\n\nfunction requireRecord(\n value: unknown,\n path: string,\n allowedKeys: readonly string[] | null\n): UnknownRecord {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new InvalidConfigurationError(`${path} must be an object.`);\n }\n if (allowedKeys !== null) rejectUnknownFields(value, allowedKeys, path);\n return value as UnknownRecord;\n}\n\nfunction requireString(\n record: UnknownRecord,\n key: string,\n path: string\n): string {\n const value = record[key];\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new InvalidConfigurationError(\n `${path}.${key} must be a non-empty string.`\n );\n }\n return value;\n}\n\nfunction requireBoolean(\n record: UnknownRecord,\n key: string,\n path: string\n): boolean {\n const value = record[key];\n if (typeof value !== \"boolean\") {\n throw new InvalidConfigurationError(\n `${path}.${key} must be a boolean.`\n );\n }\n return value;\n}\n\nfunction requirePositiveNumber(\n record: UnknownRecord,\n key: string,\n path: string\n): number {\n const value = record[key];\n if (typeof value !== \"number\" || !Number.isFinite(value) || value <= 0) {\n throw new InvalidConfigurationError(\n `${path}.${key} must be a finite number greater than zero.`\n );\n }\n return value;\n}\n\nfunction requirePositiveIntegerValue(\n record: UnknownRecord,\n key: string,\n path: string\n): number {\n const value = record[key];\n if (!Number.isSafeInteger(value) || (value as number) <= 0) {\n throw new InvalidConfigurationError(\n `${path}.${key} must be a positive safe integer.`\n );\n }\n return value as number;\n}\n\nfunction assertVector3(value: unknown, path: string): void {\n const vector = requireRecord(value, path, [\"x\", \"y\", \"z\"]);\n for (const component of [\"x\", \"y\", \"z\"] as const) {\n const coordinate = vector[component];\n if (typeof coordinate !== \"number\" || !Number.isFinite(coordinate)) {\n throw new InvalidConfigurationError(\n `${path}.${component} must be a finite number.`\n );\n }\n }\n}\n\nfunction assertStringArray(value: unknown, path: string): readonly string[] {\n if (\n !Array.isArray(value) ||\n value.some(\n (entry) => typeof entry !== \"string\" || entry.trim().length === 0\n )\n ) {\n throw new InvalidConfigurationError(\n `${path} must be an array of non-empty strings.`\n );\n }\n return value as readonly string[];\n}\n\nfunction assertUniqueStrings(values: readonly string[], path: string): void {\n const normalized = values.map((value) => value.trim());\n if (new Set(normalized).size !== normalized.length) {\n throw new InvalidConfigurationError(`${path} must not contain duplicates.`);\n }\n}\n\n/**\n * Parses and validates an untrusted camera configuration.\n *\n * @param value Unknown external data.\n * @returns The original value narrowed to CameraConfiguration.\n */\nexport function parseCameraConfiguration(\n value: unknown\n): CameraConfiguration {\n const camera = requireRecord(value, \"camera\", [\"sensor\", \"lens\", \"exposure\", \"focus\", \"stabilization\"]);\n\n const sensor = requireRecord(camera.sensor, \"camera.sensor\", [\"widthMm\", \"heightMm\", \"pixelWidth\", \"pixelHeight\"]);\n requirePositiveNumber(sensor, \"widthMm\", \"camera.sensor\");\n requirePositiveNumber(sensor, \"heightMm\", \"camera.sensor\");\n requirePositiveIntegerValue(sensor, \"pixelWidth\", \"camera.sensor\");\n requirePositiveIntegerValue(sensor, \"pixelHeight\", \"camera.sensor\");\n\n const lens = requireRecord(camera.lens, \"camera.lens\", [\"focalLengthMm\", \"aperture\"]);\n requirePositiveNumber(lens, \"focalLengthMm\", \"camera.lens\");\n requirePositiveNumber(lens, \"aperture\", \"camera.lens\");\n\n const exposure = requireRecord(camera.exposure, \"camera.exposure\", [\"shutterSeconds\", \"iso\"]);\n requirePositiveNumber(exposure, \"shutterSeconds\", \"camera.exposure\");\n requirePositiveNumber(exposure, \"iso\", \"camera.exposure\");\n\n const focus = requireRecord(camera.focus, \"camera.focus\", [\"focusDistanceM\"]);\n requirePositiveNumber(focus, \"focusDistanceM\", \"camera.focus\");\n\n if (camera.stabilization !== undefined) {\n const stabilization = requireRecord(\n camera.stabilization,\n \"camera.stabilization\", [\"bodyEnabled\", \"lensEnabled\", \"support\"]\n );\n requireBoolean(stabilization, \"bodyEnabled\", \"camera.stabilization\");\n requireBoolean(stabilization, \"lensEnabled\", \"camera.stabilization\");\n const support = requireString(\n stabilization,\n \"support\",\n \"camera.stabilization\"\n );\n if (!CAMERA_SUPPORTS.has(support as CameraSupport)) {\n throw new InvalidConfigurationError(\n \"camera.stabilization.support is invalid.\"\n );\n }\n }\n\n return value as CameraConfiguration;\n}\n\n/**\n * Parses and validates an untrusted renderer-independent scene definition.\n *\n * @param value Unknown external data.\n * @returns The original value narrowed to SceneDefinition.\n */\nexport function parseSceneDefinition(value: unknown): SceneDefinition {\n const scene = requireRecord(value, \"scene\", [\"schemaVersion\", \"id\", \"version\", \"radiometry\", \"capabilities\", \"objects\", \"focusTargetIds\"]);\n requireString(scene, \"schemaVersion\", \"scene\");\n requireString(scene, \"id\", \"scene\");\n requireString(scene, \"version\", \"scene\");\n\n const radiometry = requireRecord(scene.radiometry, \"scene.radiometry\", null);\n rejectUnknownVariantFields(radiometry, \"kind\", { \"relative-linear\": [\"kind\", \"referenceValue\"], \"absolute-luminance\": [\"kind\", \"referenceValue\", \"referenceLuminanceCdM2\"] }, \"scene.radiometry\");\n const radiometryKind = requireString(\n radiometry,\n \"kind\",\n \"scene.radiometry\"\n );\n requirePositiveNumber(radiometry, \"referenceValue\", \"scene.radiometry\");\n\n if (radiometryKind === \"absolute-luminance\") {\n requirePositiveNumber(\n radiometry,\n \"referenceLuminanceCdM2\",\n \"scene.radiometry\"\n );\n } else if (radiometryKind !== \"relative-linear\") {\n throw new InvalidConfigurationError(\"scene.radiometry.kind is invalid.\");\n }\n\n const capabilities = assertStringArray(\n scene.capabilities,\n \"scene.capabilities\"\n );\n assertUniqueStrings(capabilities, \"scene.capabilities\");\n for (const capability of capabilities) {\n if (!SCENE_CAPABILITIES.has(capability as SceneCapability)) {\n throw new InvalidConfigurationError(\n `Unknown scene capability: ${capability}`\n );\n }\n }\n\n if (!Array.isArray(scene.objects)) {\n throw new InvalidConfigurationError(\"scene.objects must be an array.\");\n }\n\n const objectIds: string[] = [];\n scene.objects.forEach((objectValue, index) => {\n const path = `scene.objects[${index}]`;\n const object = requireRecord(objectValue, path, [\"id\", \"distanceM\", \"label\", \"tags\", \"motion\"]);\n objectIds.push(requireString(object, \"id\", path));\n requirePositiveNumber(object, \"distanceM\", path);\n\n if (object.label !== undefined && typeof object.label !== \"string\") {\n throw new InvalidConfigurationError(`${path}.label must be a string.`);\n }\n if (object.tags !== undefined) {\n assertStringArray(object.tags, `${path}.tags`);\n }\n if (object.motion !== undefined) {\n const motion = requireRecord(object.motion, `${path}.motion`, [\"linearVelocityMps\", \"angularVelocityRadPerSec\"]);\n assertVector3(\n motion.linearVelocityMps,\n `${path}.motion.linearVelocityMps`\n );\n if (motion.angularVelocityRadPerSec !== undefined) {\n assertVector3(\n motion.angularVelocityRadPerSec,\n `${path}.motion.angularVelocityRadPerSec`\n );\n }\n }\n });\n assertUniqueStrings(objectIds, \"scene.objects[].id\");\n\n if (scene.focusTargetIds !== undefined) {\n const focusTargetIds = assertStringArray(\n scene.focusTargetIds,\n \"scene.focusTargetIds\"\n );\n assertUniqueStrings(focusTargetIds, \"scene.focusTargetIds\");\n const knownIds = new Set(objectIds);\n for (const focusTargetId of focusTargetIds) {\n if (!knownIds.has(focusTargetId)) {\n throw new InvalidConfigurationError(\n `Unknown scene focus target: ${focusTargetId}`\n );\n }\n }\n }\n\n return value as SceneDefinition;\n}\n"]}
@@ -1,17 +1,13 @@
1
1
  /**
2
- * Module boundary and integration notes.
3
- * Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
4
- * missing required fields and incompatible scientific data fail at this boundary. Photo, dark and
5
- * explicitly incremental stored-electron components must share the exact site/channel/local shutter
6
- * event. Completeness is an evidence-backed declaration, not the consequence of an empty component
7
- * array. Expected stored charge remains distinct from a stochastic realization or nonlinear full-well
8
- * clamp.
9
- * Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
10
- * missing required fields and incompatible scientific data fail at this boundary. Photo, dark and
11
- * explicitly incremental stored-electron components must share the exact site/channel/local shutter
12
- * event. Completeness is an evidence-backed declaration, not the consequence of an empty component
13
- * array. Expected stored charge remains distinct from a stochastic realization or nonlinear full-well
14
- * clamp.
2
+ * Accumulated charge: adds up the expected electrons stored in one sensor site during one exposure.
3
+ *
4
+ * The parts are photo charge (from light), dark charge (from dark current) and any other stored
5
+ * charge declared explicitly as an addition. All parts must belong to the exact same site, colour
6
+ * channel and local shutter event. Whether the list of parts is complete is a declaration backed by
7
+ * evidence; an empty list does not mean "complete".
8
+ *
9
+ * The result is the expected (mean) charge. It is separate from a random (noise) realization and from
10
+ * the non-linear full-well clamp, which later steps apply.
15
11
  * @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
16
12
  * limits.
17
13
  */
@@ -117,83 +113,68 @@ export interface SensorAccumulatedChargeComposition<Photo extends SensorEqePhoto
117
113
  }
118
114
  export type SensorPhotoAccumulatedChargeComposition = SensorAccumulatedChargeComposition<SensorEqePhotoExposure, SensorPhotoDarkCurrentCharge>;
119
115
  /**
120
- * Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
121
- * missing required fields and incompatible scientific data fail at this boundary.
122
- *
123
- * Photo, dark and explicitly incremental stored-electron components must share the exact
124
- * site/channel/local shutter event. Completeness is an evidence-backed declaration, not the
125
- * consequence of an empty component array. Expected stored charge remains distinct from a stochastic
126
- * realization or nonlinear full-well clamp.
127
- * @param value - unknown. Treated as untrusted data; static typing alone is not validation.
128
- * @returns SensorAdditionalStoredChargeComponent. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
116
+ * Validates an untrusted additional stored-charge component (charge other than photo and dark
117
+ * charge, declared explicitly as an addition) and returns it normalized. Unknown enum values,
118
+ * missing required fields and inconsistent scientific data are rejected.
119
+ * @param value - Untrusted data. TypeScript types alone are not validation.
120
+ * @returns The result. Success does not imply calibration.
129
121
  *
130
- * @see docs/API_REFERENCE.md for the root export and exact type graph.
122
+ * @see docs/API_REFERENCE.md for the package export and its full type definitions.
131
123
  */
132
124
  export declare function parseSensorAdditionalStoredChargeComponent(value: unknown): SensorAdditionalStoredChargeComponent;
133
125
  /**
134
- * Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
135
- * missing required fields and incompatible scientific data fail at this boundary.
126
+ * Validates an untrusted completeness profile and returns it normalized. Unknown enum values,
127
+ * missing required fields and inconsistent scientific data are rejected.
136
128
  *
137
- * Photo, dark and explicitly incremental stored-electron components must share the exact
138
- * site/channel/local shutter event. Completeness is an evidence-backed declaration, not the
139
- * consequence of an empty component array. Expected stored charge remains distinct from a stochastic
140
- * realization or nonlinear full-well clamp.
141
- * @param value - unknown. Treated as untrusted data; static typing alone is not validation.
142
- * @returns SensorAccumulatedChargeCompletenessProfile. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
129
+ * Completeness is a declaration backed by evidence. An empty list of components does not
130
+ * mean the charge accounting is complete.
131
+ * @param value - Untrusted data. TypeScript types alone are not validation.
132
+ * @returns The result. Success does not imply calibration.
143
133
  *
144
- * @see docs/API_REFERENCE.md for the root export and exact type graph.
134
+ * @see docs/API_REFERENCE.md for the package export and its full type definitions.
145
135
  */
146
136
  export declare function parseSensorAccumulatedChargeCompletenessProfile(value: unknown): SensorAccumulatedChargeCompletenessProfile;
147
137
  /**
148
- * Compose photo, independently evaluated dark and explicitly incremental charge by exact local
149
- * exposure identity, retaining completeness assessment before capacity/noise.
138
+ * Adds photo charge, separately computed dark charge and any explicitly declared extra charge for
139
+ * one exact local exposure, and keeps the completeness assessment. Capacity and noise come later.
150
140
  *
151
- * Photo, dark and explicitly incremental stored-electron components must share the exact
152
- * site/channel/local shutter event. Completeness is an evidence-backed declaration, not the
153
- * consequence of an empty component array. Expected stored charge remains distinct from a stochastic
154
- * realization or nonlinear full-well clamp.
155
- * @param input - Omit<ComposeSensorAccumulatedChargeInput, "photoSignal" | "darkCharge"> & {
156
- photoSignal: SensorEqeExposureIntegration; darkCharge: SensorDarkCurrentCharge;
157
- }. See the linked contract for coordinate, unit and profile binding semantics.
158
- * @returns CalculationResult<SensorAccumulatedChargeComposition>. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
141
+ * All parts must belong to the exact same site, colour channel and local shutter event. The
142
+ * result is the expected charge, separate from a random realization or the full-well clamp.
143
+ * @param input - Charge input with a per-exposure photo signal (SensorEqeExposureIntegration) and
144
+ * dark charge (SensorDarkCurrentCharge); see `ComposeSensorAccumulatedChargeInput`.
145
+ * @returns The result. Success does not imply calibration.
159
146
  *
160
- * @see docs/API_REFERENCE.md for the root export and exact type graph.
147
+ * @see docs/API_REFERENCE.md for the package export and its full type definitions.
161
148
  */
162
149
  export declare function composeSensorAccumulatedCharge(input: Omit<ComposeSensorAccumulatedChargeInput, "photoSignal" | "darkCharge"> & {
163
150
  photoSignal: SensorEqeExposureIntegration;
164
151
  darkCharge: SensorDarkCurrentCharge;
165
152
  }): CalculationResult<SensorAccumulatedChargeComposition>;
166
153
  /**
167
- * Compose photo, independently evaluated dark and explicitly incremental charge by exact local
168
- * exposure identity, retaining completeness assessment before capacity/noise.
154
+ * Adds photo charge, separately computed dark charge and any explicitly declared extra charge for
155
+ * one exact local exposure, and keeps the completeness assessment. Capacity and noise come later.
169
156
  *
170
- * Photo, dark and explicitly incremental stored-electron components must share the exact
171
- * site/channel/local shutter event. Completeness is an evidence-backed declaration, not the
172
- * consequence of an empty component array. Expected stored charge remains distinct from a stochastic
173
- * realization or nonlinear full-well clamp.
174
- * @param input - Omit<ComposeSensorAccumulatedChargeInput, "photoSignal" | "darkCharge"> & {
175
- photoSignal: SensorEqeTemporalPhotoSignal; darkCharge: SensorTemporalDarkCurrentCharge;
176
- }. See the linked contract for coordinate, unit and profile binding semantics.
177
- * @returns CalculationResult<SensorAccumulatedChargeComposition<SensorEqeTemporalPhotoSignal, SensorTemporalDarkCurrentCharge>>. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
157
+ * All parts must belong to the exact same site, colour channel and local shutter event. The
158
+ * result is the expected charge, separate from a random realization or the full-well clamp.
159
+ * @param input - Charge input with a time-resolved photo signal (SensorEqeTemporalPhotoSignal) and
160
+ * dark charge (SensorTemporalDarkCurrentCharge); see `ComposeSensorAccumulatedChargeInput`.
161
+ * @returns The result. Success does not imply calibration.
178
162
  *
179
- * @see docs/API_REFERENCE.md for the root export and exact type graph.
163
+ * @see docs/API_REFERENCE.md for the package export and its full type definitions.
180
164
  */
181
165
  export declare function composeSensorAccumulatedCharge(input: Omit<ComposeSensorAccumulatedChargeInput, "photoSignal" | "darkCharge"> & {
182
166
  photoSignal: SensorEqeTemporalPhotoSignal;
183
167
  darkCharge: SensorTemporalDarkCurrentCharge;
184
168
  }): CalculationResult<SensorAccumulatedChargeComposition<SensorEqeTemporalPhotoSignal, SensorTemporalDarkCurrentCharge>>;
185
169
  /**
186
- * Compose photo, independently evaluated dark and explicitly incremental charge by exact local
187
- * exposure identity, retaining completeness assessment before capacity/noise.
170
+ * Adds photo charge, separately computed dark charge and any explicitly declared extra charge for
171
+ * one exact local exposure, and keeps the completeness assessment. Capacity and noise come later.
188
172
  *
189
- * Photo, dark and explicitly incremental stored-electron components must share the exact
190
- * site/channel/local shutter event. Completeness is an evidence-backed declaration, not the
191
- * consequence of an empty component array. Expected stored charge remains distinct from a stochastic
192
- * realization or nonlinear full-well clamp.
193
- * @param input - ComposeSensorPhotoAccumulatedChargeInput. See the linked contract for coordinate, unit and profile binding semantics.
194
- * @returns CalculationResult<SensorPhotoAccumulatedChargeComposition>. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
173
+ * All parts must belong to the exact same site, colour channel and local shutter event. The
174
+ * result is the expected charge, separate from a random realization or the full-well clamp.
175
+ * @param input - The input; see `ComposeSensorPhotoAccumulatedChargeInput` for its fields, units and coordinates.
176
+ * @returns The result. Success does not imply calibration.
195
177
  *
196
- * @see docs/API_REFERENCE.md for the root export and exact type graph.
178
+ * @see docs/API_REFERENCE.md for the package export and its full type definitions.
197
179
  */
198
180
  export declare function composeSensorAccumulatedCharge(input: ComposeSensorPhotoAccumulatedChargeInput): CalculationResult<SensorPhotoAccumulatedChargeComposition>;
199
- //# sourceMappingURL=accumulated-charge.d.ts.map