@photivra/engine 1.5.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1078) hide show
  1. package/CHANGELOG.md +393 -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 +116 -9
  56. package/dist/capture/native-raw-development.js +221 -62
  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 +65 -12
  62. package/dist/capture/native-raw.js +81 -19
  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 -8
  639. package/docs/api/capture-native-raw-dng.md +84 -0
  640. package/docs/api/capture-native-raw.md +21 -10
  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/DENSE_PUPIL_QUALIFICATION.md +0 -121
  975. package/docs/DEVELOPERS.md +0 -68
  976. package/docs/DIGITAL_OPTICS_FOUNDATION.md +0 -69
  977. package/docs/ENVIRONMENT_RAW_CAPTURE.md +0 -208
  978. package/docs/EXPORT_ACCEPTANCE.md +0 -133
  979. package/docs/GENERIC_TIER_PRESETS.md +0 -269
  980. package/docs/GEOMETRIC_PREPARATION_REUSE.md +0 -141
  981. package/docs/IMAGE_FORMATION.md +0 -247
  982. package/docs/LINEAR_CAPTURE_ENCODING.md +0 -25
  983. package/docs/MOTION_AND_SIGNAL.md +0 -250
  984. package/docs/NATIVE_CAPTURE_SDR.md +0 -70
  985. package/docs/NATIVE_CAPTURE_SDR_REVIEW.md +0 -37
  986. package/docs/NATIVE_CAPTURE_SDR_VALIDATION.md +0 -34
  987. package/docs/NATIVE_RAW_AND_PRINT.md +0 -54
  988. package/docs/NUMERICAL_CORRECTNESS.md +0 -191
  989. package/docs/PERFORMANCE_BASELINE.md +0 -56
  990. package/docs/PHOTOGRAPHIC_EXPORT.md +0 -206
  991. package/docs/PHYSICS_FOUNDATION.md +0 -426
  992. package/docs/POC_API.md +0 -278
  993. package/docs/POC_PROJECTION_PLATFORM_REFERENCE.md +0 -12
  994. package/docs/POC_PROJECTION_REUSE.md +0 -124
  995. package/docs/PRINT_195_196_REVIEW.md +0 -93
  996. package/docs/PRINT_196_ENGINE_ACCEPTANCE.md +0 -45
  997. package/docs/PRINT_CONTRAST_REFERENCE.md +0 -43
  998. package/docs/PRINT_DETAIL_ASSESSMENT.md +0 -81
  999. package/docs/PRINT_DETAIL_JPEG_EVIDENCE.md +0 -36
  1000. package/docs/PRINT_DETAIL_SDR_EVIDENCE.md +0 -29
  1001. package/docs/PRINT_DETAIL_VALIDATION.md +0 -36
  1002. package/docs/PRINT_PLANNING.md +0 -75
  1003. package/docs/PRINT_REGION_STATISTICS.md +0 -38
  1004. package/docs/PROCESSED_OUTPUT.md +0 -157
  1005. package/docs/PRODUCTION_COMPOSITION.md +0 -373
  1006. package/docs/PRODUCTION_ENVIRONMENT_CAPTURE.md +0 -131
  1007. package/docs/PROVENANCE.md +0 -115
  1008. package/docs/PSF_FOUNDATION.md +0 -165
  1009. package/docs/RAW_FRAME_ENVELOPE.md +0 -56
  1010. package/docs/RAW_FRAME_RECONSTRUCTION.md +0 -30
  1011. package/docs/RELEASE_1_0.md +0 -66
  1012. package/docs/RELEASE_1_0_1.md +0 -61
  1013. package/docs/RELEASE_1_1_0.md +0 -25
  1014. package/docs/RELEASE_1_2_0.md +0 -51
  1015. package/docs/RELEASE_1_3_0.md +0 -15
  1016. package/docs/RELEASE_1_4_0.md +0 -23
  1017. package/docs/RELEASE_1_5_0.md +0 -105
  1018. package/docs/RELEASE_AUDIT.md +0 -39
  1019. package/docs/SCENE_RADIANCE_AND_ILLUMINATION.md +0 -298
  1020. package/docs/SCENE_SENSOR_QUADRATURE.md +0 -98
  1021. package/docs/SCENE_SENSOR_TEMPORAL_EXPOSURE.md +0 -86
  1022. package/docs/SCIENTIFIC_ASSURANCE.md +0 -280
  1023. package/docs/SCIENTIFIC_CONFORMANCE.md +0 -83
  1024. package/docs/SDR_RENDERING.md +0 -33
  1025. package/docs/SENSOR_APERTURE_RAYS.md +0 -23
  1026. package/docs/SENSOR_ENVIRONMENT_QUERY.md +0 -86
  1027. package/docs/SENSOR_EQE_LOCAL_EXPOSURE.md +0 -104
  1028. package/docs/SENSOR_EQE_TEMPORAL_EXPOSURE.md +0 -74
  1029. package/docs/SENSOR_PSF_QUADRATURE.md +0 -90
  1030. package/docs/SENSOR_RAW_FRAME.md +0 -20
  1031. package/docs/SENSOR_RAW_PRODUCER.md +0 -77
  1032. package/docs/SEPARABLE_EMISSION_DRAFT.md +0 -103
  1033. package/docs/SIGNAL_CONFORMANCE.md +0 -23
  1034. package/docs/SIMULATED_CAPTURE.md +0 -65
  1035. package/docs/STABILIZATION.md +0 -234
  1036. package/docs/TEMPORAL_PHOTO_RAW.md +0 -83
  1037. package/docs/TIER_ACCEPTANCE.md +0 -129
  1038. package/docs/TIER_PRESET_ACCEPTANCE.md +0 -59
  1039. package/docs/V1_COMPOSITION_MAP.md +0 -123
  1040. package/docs/V1_HELPER_REUSE_REVIEW.md +0 -60
  1041. package/docs/V1_PERFORMANCE_DISPOSITION.md +0 -88
  1042. package/docs/benchmarks/2026-10-01-main-baseline.json +0 -694
  1043. package/docs/benchmarks/2026-10-02-geometric-preparation-reuse.json +0 -2190
  1044. package/docs/benchmarks/2026-10-02-poc-projection-reuse.json +0 -2423
  1045. package/docs/benchmarks/2026-10-02-v1-environment-gc-profile.json +0 -210
  1046. package/docs/benchmarks/2026-10-02-v1-environment-ordinary.json +0 -187
  1047. package/docs/benchmarks/2026-10-02-v1-geometry-gc-profile.json +0 -756
  1048. package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-1.json +0 -711
  1049. package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-2.json +0 -711
  1050. package/docs/benchmarks/2026-10-02-v1-poc-gc-profile.json +0 -885
  1051. package/docs/benchmarks/2026-10-02-v1-poc-ordinary-1.json +0 -868
  1052. package/docs/benchmarks/2026-10-02-v1-poc-ordinary-2.json +0 -868
  1053. package/docs/licenses/castleCSF-MIT.txt +0 -21
  1054. package/docs/validation/dense-pupil-2026-10-06/pilot.jsonl +0 -6
  1055. package/docs/validation/documentation-fragments.json +0 -212
  1056. package/docs/validation/native-capture-sdr-darwin-arm64-node26-review.jsonl +0 -4
  1057. package/docs/validation/native-capture-sdr-darwin-arm64.jsonl +0 -3
  1058. package/docs/validation/native-raw-print-2026-10-04/fractional-asymmetric-crop.jpg +0 -0
  1059. package/docs/validation/native-raw-print-2026-10-04/gray-ramp.jpg +0 -0
  1060. package/docs/validation/native-raw-print-2026-10-04/linear-area-checker.jpg +0 -0
  1061. package/docs/validation/native-raw-print-2026-10-04/manifest.json +0 -218
  1062. package/docs/validation/native-raw-print-2026-10-04/megapixel-native.jpg +0 -0
  1063. package/docs/validation/native-raw-print-2026-10-04/native-color.jpg +0 -0
  1064. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel-validation.json +0 -9
  1065. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json +0 -29
  1066. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.codes.u16le.gz +0 -0
  1067. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.jpg +0 -0
  1068. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.rgb.gz +0 -0
  1069. package/docs/validation/native-raw-print-2026-10-04/srgb.icc +0 -0
  1070. package/docs/validation/native-raw-print-2026-10-04/validation.json +0 -41
  1071. package/docs/validation/print-196-candidate-capabilities.json +0 -28
  1072. package/docs/validation/print-196-candidate-evidence.json +0 -356
  1073. package/docs/validation/print-196-engine-acceptance.json +0 -81
  1074. package/docs/validation/print-detail-capabilities.json +0 -103
  1075. package/docs/validation/print-detail-jpeg-evidence.json +0 -116
  1076. package/docs/validation/print-detail-sdr-evidence.json +0 -81
  1077. package/docs/validation/release-audit-inventory.json +0 -1306
  1078. package/docs/validation/tier-acceptance-report-v1.json +0 -2538
@@ -1 +1 @@
1
- {"version":3,"file":"illumination-temporal.js","sourceRoot":"","sources":["../../src/schema/illumination-temporal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"illumination-temporal.js","sourceRoot":"","sources":["../../src/schema/illumination-temporal.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Time-varying light sources, such as flicker or a pulsed light.\n *\n * A temporal profile sits on top of an existing illumination profile. Each binding multiplies\n * one source by a relative waveform over time. The base source magnitude and spectrum still\n * apply, and sources with no binding stay constant. This module parses the profile, evaluates\n * a waveform at one capture time, and integrates it over an exposure window.\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 InvalidScientificInputError,\n requirePositiveInteger\n} from \"../core/validation.js\";\nimport type {\n CaptureExposureWindows\n} from \"../sensor/exposure-window.js\";\nimport type {\n SceneIlluminationProfile,\n SceneIlluminationUncertainty\n} from \"./illumination.js\";\nimport { requireInputKeys, rejectUnknownFields, rejectUnknownVariantFields, UNCERTAINTY_VARIANT_FIELDS, requireFixedFieldsWhenPresent } from \"../core/record-validation.js\";\n\ntype UnknownRecord = Record<string, unknown>;\n\nexport const SCENE_ILLUMINATION_TEMPORAL_PROFILE_SCHEMA_VERSION =\n \"0.1.0\" as const;\n\nexport type SceneIlluminationTemporalScientificStatus =\n | \"calibrated\"\n | \"approximation\";\n\nexport interface SceneIlluminationTemporalWaveformSample {\n timeSecondsFromWaveformReference: number;\n relativeMagnitudeMultiplier: number;\n}\n\ninterface SceneIlluminationTemporalWaveformBase {\n waveformId: string;\n timeUnit: \"s\";\n scientificStatus:\n SceneIlluminationTemporalScientificStatus;\n uncertainty: SceneIlluminationUncertainty;\n evidence: readonly EvidenceProvenance[];\n interpolation: \"piecewise-linear\";\n samples:\n readonly SceneIlluminationTemporalWaveformSample[];\n}\n\nexport type SceneIlluminationTemporalWaveform =\n | (SceneIlluminationTemporalWaveformBase & {\n kind:\n \"aperiodic-relative-multiplier\";\n outsideSupportBehavior: \"zero\";\n })\n | (SceneIlluminationTemporalWaveformBase & {\n kind:\n \"periodic-relative-multiplier\";\n periodSeconds: number;\n endpointContinuityRequired: true;\n });\n\nexport type SceneIlluminationTemporalRegistrationUncertainty =\n | {\n kind: \"absolute-seconds\";\n plusMinusSeconds: number;\n basis: string;\n }\n | {\n kind: \"not-quantified\";\n limitation: string;\n };\n\nexport interface SceneIlluminationTemporalSourceBinding {\n bindingId: string;\n sourceId: string;\n waveformId: string;\n captureTimeReference:\n \"first-opening-boundary-phase\";\n /**\n * The capture time at which the waveform's own t=0 falls.\n *\n * waveformTime = captureTime - waveformTimeZeroSecondsFromCaptureReference\n */\n waveformTimeZeroSecondsFromCaptureReference:\n number;\n scientificStatus:\n SceneIlluminationTemporalScientificStatus;\n timingUncertainty:\n SceneIlluminationTemporalRegistrationUncertainty;\n evidence: readonly EvidenceProvenance[];\n}\n\nexport interface SceneIlluminationTemporalProfile {\n schemaVersion:\n typeof SCENE_ILLUMINATION_TEMPORAL_PROFILE_SCHEMA_VERSION;\n profileId: string;\n sceneId: string;\n illuminationProfileId: string;\n evidence: readonly EvidenceProvenance[];\n waveforms:\n readonly SceneIlluminationTemporalWaveform[];\n sourceBindings:\n readonly SceneIlluminationTemporalSourceBinding[];\n baseIlluminationProfileRemainsAuthoritative:\n true;\n sensorReadoutTimingUsedAsExposureTiming:\n false;\n automaticExposurePolicyIncluded: false;\n}\n\nexport interface EvaluateSceneIlluminationTemporalMultiplierInput {\n illuminationProfile:\n SceneIlluminationProfile;\n temporalProfile:\n SceneIlluminationTemporalProfile;\n sourceId: string;\n captureTimeSecondsFromReference: number;\n}\n\nexport interface SceneIlluminationTemporalMultiplierEvaluation {\n sourceId: string;\n sourceEnabled: boolean;\n temporalProfileId: string;\n bindingId: string;\n waveformId: string;\n captureTimeReference:\n \"first-opening-boundary-phase\";\n captureTimeSecondsFromReference: number;\n waveformTimeSecondsFromWaveformReference:\n number;\n waveformKind:\n SceneIlluminationTemporalWaveform[\"kind\"];\n relativeMagnitudeMultiplier: number;\n effectiveRelativeMagnitudeMultiplier:\n number;\n sourceMagnitudeApplied: false;\n materialTransportApplied: false;\n sceneRadianceCalculated: false;\n sensorReadoutTimingUsed: false;\n automaticExposureResolved: false;\n}\n\nexport interface IntegrateSceneIlluminationTemporalMultiplierInput {\n illuminationProfile:\n SceneIlluminationProfile;\n temporalProfile:\n SceneIlluminationTemporalProfile;\n sourceId: string;\n exposureWindows: CaptureExposureWindows;\n sampleIndex: number;\n temporalSampleCount: number;\n}\n\nexport interface SceneIlluminationTemporalIntegrationNode {\n temporalSampleIndex: number;\n localExposurePhase: number;\n captureTimeSecondsFromReference: number;\n waveformTimeSecondsFromWaveformReference:\n number;\n relativeMagnitudeMultiplier: number;\n effectiveRelativeMagnitudeMultiplier:\n number;\n normalizedTimeWeight: number;\n timeMeasureSeconds: number;\n}\n\nexport interface SceneIlluminationTemporalExposureIntegration {\n sourceId: string;\n sourceEnabled: boolean;\n temporalProfileId: string;\n bindingId: string;\n waveformId: string;\n timeReference:\n \"first-opening-boundary-phase\";\n localExposureWindow: {\n startSecondsFromCaptureReference: number;\n endSecondsFromCaptureReference: number;\n durationSeconds: number;\n };\n quadratureScheme: \"uniform-midpoint\";\n temporalSampleCount: number;\n nodes:\n readonly SceneIlluminationTemporalIntegrationNode[];\n averageRelativeMagnitudeMultiplier:\n number;\n integratedRelativeMagnitudeSeconds:\n number;\n averageEffectiveRelativeMagnitudeMultiplier:\n number;\n integratedEffectiveRelativeMagnitudeSeconds:\n number;\n sourceMagnitudeApplied: false;\n materialTransportApplied: false;\n sceneRadianceCalculated: false;\n sensorReadoutTimingUsed: false;\n automaticExposureResolved: false;\n convergenceErrorEstimated: 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 finite.\"\n );\n }\n return value;\n}\n\nfunction requirePositiveFinite(\n value: unknown,\n path: string\n): number {\n const parsed = requireFinite(\n value,\n path\n );\n if (parsed <= 0) {\n throw new InvalidConfigurationError(\n path +\n \" must be greater than zero.\"\n );\n }\n return parsed;\n}\n\nfunction requireNonNegativeFinite(\n value: unknown,\n path: string\n): number {\n const parsed = requireFinite(\n value,\n path\n );\n if (parsed < 0) {\n throw new InvalidConfigurationError(\n path +\n \" must be greater than or equal to zero.\"\n );\n }\n return parsed;\n}\n\nfunction requireReusableNumericEvidence(\n value: unknown,\n path: string\n): readonly EvidenceProvenance[] {\n const evidence = parseEvidenceList(\n value,\n path\n );\n if (\n !evidence.some(\n (entry) =>\n entry.reuseStatus ===\n \"reusable-data\" ||\n entry.reuseStatus ===\n \"photivra-owned\"\n )\n ) {\n throw new InvalidConfigurationError(\n path +\n \" must contain reusable-data or photivra-owned evidence because the waveform embeds reusable numeric data.\"\n );\n }\n return evidence;\n}\n\nfunction parseScientificStatus(\n value: unknown,\n path: string\n): SceneIlluminationTemporalScientificStatus {\n if (\n value !== \"calibrated\" &&\n value !== \"approximation\"\n ) {\n throw new InvalidConfigurationError(\n path + \" is invalid.\"\n );\n }\n return value;\n}\n\nfunction parseUncertainty(\n value: unknown,\n path: string\n): SceneIlluminationUncertainty {\n const record = requireRecord(\n value,\n path, null\n );\n rejectUnknownVariantFields(record, \"kind\", UNCERTAINTY_VARIANT_FIELDS, path);\n if (record.kind === \"relative\") {\n return {\n kind: \"relative\",\n fraction:\n 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:\n requireNonEmptyString(\n record.limitation,\n path + \".limitation\"\n )\n };\n }\n throw new InvalidConfigurationError(\n path + \".kind is invalid.\"\n );\n}\n\nfunction parseRegistrationUncertainty(\n value: unknown,\n path: string\n): SceneIlluminationTemporalRegistrationUncertainty {\n const record = requireRecord(\n value,\n path, null\n );\n rejectUnknownVariantFields(record, \"kind\", { \"absolute-seconds\": [\"kind\", \"plusMinusSeconds\", \"basis\"], \"not-quantified\": [\"kind\", \"limitation\"] }, path);\n if (\n record.kind ===\n \"absolute-seconds\"\n ) {\n return {\n kind: \"absolute-seconds\",\n plusMinusSeconds:\n requireNonNegativeFinite(\n record.plusMinusSeconds,\n path +\n \".plusMinusSeconds\"\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:\n requireNonEmptyString(\n record.limitation,\n path + \".limitation\"\n )\n };\n }\n throw new InvalidConfigurationError(\n path + \".kind is invalid.\"\n );\n}\n\nfunction parseWaveformSamples(\n value: unknown,\n path: string\n): readonly SceneIlluminationTemporalWaveformSample[] {\n if (\n !Array.isArray(value) ||\n value.length < 2\n ) {\n throw new InvalidConfigurationError(\n path +\n \" must contain at least two samples.\"\n );\n }\n\n let previous =\n Number.NEGATIVE_INFINITY;\n return value.map((entry, index) => {\n const samplePath =\n path + \"[\" + index + \"]\";\n const sample = requireRecord(\n entry,\n samplePath, [\"timeSecondsFromWaveformReference\", \"relativeMagnitudeMultiplier\"]\n );\n const time =\n requireNonNegativeFinite(\n sample\n .timeSecondsFromWaveformReference,\n samplePath +\n \".timeSecondsFromWaveformReference\"\n );\n if (time <= previous) {\n throw new InvalidConfigurationError(\n path +\n \" times must be strictly increasing.\"\n );\n }\n previous = time;\n return {\n timeSecondsFromWaveformReference:\n time,\n relativeMagnitudeMultiplier:\n requireNonNegativeFinite(\n sample\n .relativeMagnitudeMultiplier,\n samplePath +\n \".relativeMagnitudeMultiplier\"\n )\n };\n });\n}\n\nconst WAVEFORM_BASE_FIELDS = [\"kind\", \"waveformId\", \"timeUnit\", \"scientificStatus\", \"uncertainty\", \"evidence\", \"interpolation\", \"samples\"] as const;\n\nfunction parseWaveform(\n value: unknown,\n path: string\n): SceneIlluminationTemporalWaveform {\n const record = requireRecord(\n value,\n path, null\n );\n rejectUnknownVariantFields(record, \"kind\", {\n \"aperiodic-relative-multiplier\": [...WAVEFORM_BASE_FIELDS, \"outsideSupportBehavior\"],\n \"periodic-relative-multiplier\": [...WAVEFORM_BASE_FIELDS, \"periodSeconds\", \"endpointContinuityRequired\"]\n }, path);\n if (record.timeUnit !== \"s\") {\n throw new InvalidConfigurationError(\n path + '.timeUnit must be \"s\".'\n );\n }\n if (\n record.interpolation !==\n \"piecewise-linear\"\n ) {\n throw new InvalidConfigurationError(\n path +\n '.interpolation must be \"piecewise-linear\".'\n );\n }\n\n const waveformId =\n requireNonEmptyString(\n record.waveformId,\n path + \".waveformId\"\n );\n const scientificStatus =\n parseScientificStatus(\n record.scientificStatus,\n path + \".scientificStatus\"\n );\n const uncertainty =\n parseUncertainty(\n record.uncertainty,\n path + \".uncertainty\"\n );\n if (\n scientificStatus === \"calibrated\" &&\n uncertainty.kind !== \"relative\"\n ) {\n throw new InvalidConfigurationError(\n path +\n \" calibrated waveform data requires quantified relative uncertainty.\"\n );\n }\n const evidence =\n requireReusableNumericEvidence(\n record.evidence,\n path + \".evidence\"\n );\n const samples =\n parseWaveformSamples(\n record.samples,\n path + \".samples\"\n );\n\n if (\n samples[0]!\n .timeSecondsFromWaveformReference !==\n 0\n ) {\n throw new InvalidConfigurationError(\n path +\n \".samples must begin at waveform-local t=0.\"\n );\n }\n\n if (\n record.kind ===\n \"aperiodic-relative-multiplier\"\n ) {\n if (\n record.outsideSupportBehavior !==\n \"zero\"\n ) {\n throw new InvalidConfigurationError(\n path +\n '.outsideSupportBehavior must be \"zero\".'\n );\n }\n return {\n kind:\n \"aperiodic-relative-multiplier\",\n waveformId,\n timeUnit: \"s\",\n scientificStatus,\n uncertainty,\n evidence,\n interpolation:\n \"piecewise-linear\",\n samples,\n outsideSupportBehavior:\n \"zero\"\n };\n }\n\n if (\n record.kind ===\n \"periodic-relative-multiplier\"\n ) {\n const periodSeconds =\n requirePositiveFinite(\n record.periodSeconds,\n path + \".periodSeconds\"\n );\n const last =\n samples[samples.length - 1]!;\n if (\n last\n .timeSecondsFromWaveformReference !==\n periodSeconds\n ) {\n throw new InvalidConfigurationError(\n path +\n \".samples must end exactly at periodSeconds.\"\n );\n }\n if (\n samples[0]!\n .relativeMagnitudeMultiplier !==\n last.relativeMagnitudeMultiplier\n ) {\n throw new InvalidConfigurationError(\n path +\n \" periodic endpoint multipliers must match.\"\n );\n }\n if (\n record.endpointContinuityRequired !==\n true\n ) {\n throw new InvalidConfigurationError(\n path +\n \".endpointContinuityRequired must be true.\"\n );\n }\n return {\n kind:\n \"periodic-relative-multiplier\",\n waveformId,\n timeUnit: \"s\",\n scientificStatus,\n uncertainty,\n evidence,\n interpolation:\n \"piecewise-linear\",\n samples,\n periodSeconds,\n endpointContinuityRequired:\n true\n };\n }\n\n throw new InvalidConfigurationError(\n path + \".kind is invalid.\"\n );\n}\n\nfunction parseSourceBinding(\n value: unknown,\n path: string\n): SceneIlluminationTemporalSourceBinding {\n const record = requireRecord(\n value,\n path, [\"captureTimeReference\", \"scientificStatus\", \"timingUncertainty\", \"bindingId\", \"sourceId\", \"waveformId\", \"waveformTimeZeroSecondsFromCaptureReference\", \"evidence\"]\n );\n if (\n record.captureTimeReference !==\n \"first-opening-boundary-phase\"\n ) {\n throw new InvalidConfigurationError(\n path +\n '.captureTimeReference must be \"first-opening-boundary-phase\".'\n );\n }\n\n const scientificStatus =\n parseScientificStatus(\n record.scientificStatus,\n path + \".scientificStatus\"\n );\n const timingUncertainty =\n parseRegistrationUncertainty(\n record.timingUncertainty,\n path + \".timingUncertainty\"\n );\n if (\n scientificStatus === \"calibrated\" &&\n timingUncertainty.kind !==\n \"absolute-seconds\"\n ) {\n throw new InvalidConfigurationError(\n path +\n \" calibrated waveform registration requires quantified absolute timing uncertainty.\"\n );\n }\n\n return {\n bindingId:\n requireNonEmptyString(\n record.bindingId,\n path + \".bindingId\"\n ),\n sourceId:\n requireNonEmptyString(\n record.sourceId,\n path + \".sourceId\"\n ),\n waveformId:\n requireNonEmptyString(\n record.waveformId,\n path + \".waveformId\"\n ),\n captureTimeReference:\n \"first-opening-boundary-phase\",\n waveformTimeZeroSecondsFromCaptureReference:\n requireFinite(\n record\n .waveformTimeZeroSecondsFromCaptureReference,\n path +\n \".waveformTimeZeroSecondsFromCaptureReference\"\n ),\n scientificStatus,\n timingUncertainty,\n evidence: parseEvidenceList(\n record.evidence,\n path + \".evidence\"\n )\n };\n}\n\n/** Fixed flags the parser writes; a parsed profile may carry them back in unchanged. */\nconst TEMPORAL_PROFILE_FIXED_FIELDS = {\n baseIlluminationProfileRemainsAuthoritative: true, sensorReadoutTimingUsedAsExposureTiming: false,\n automaticExposurePolicyIncluded: false\n} as const;\n\n/**\n * Parses a time-varying illumination profile that sits on top of one existing\n * illumination profile.\n *\n * The base source magnitude and spectrum still apply. Each binding multiplies one\n * source by one relative waveform over time. Sources with no binding stay constant.\n */\nexport function parseSceneIlluminationTemporalProfile(\n value: unknown\n): SceneIlluminationTemporalProfile {\n const record = requireRecord(\n value,\n \"sceneIlluminationTemporalProfile\", [\"schemaVersion\", \"waveforms\", \"sourceBindings\", \"profileId\", \"sceneId\", \"illuminationProfileId\", \"evidence\", ...Object.keys(TEMPORAL_PROFILE_FIXED_FIELDS)]\n );\n requireFixedFieldsWhenPresent(record, TEMPORAL_PROFILE_FIXED_FIELDS, \"sceneIlluminationTemporalProfile\");\n if (\n record.schemaVersion !==\n SCENE_ILLUMINATION_TEMPORAL_PROFILE_SCHEMA_VERSION\n ) {\n throw new InvalidConfigurationError(\n 'sceneIlluminationTemporalProfile.schemaVersion must be \"' +\n SCENE_ILLUMINATION_TEMPORAL_PROFILE_SCHEMA_VERSION +\n '\".'\n );\n }\n if (!Array.isArray(record.waveforms)) {\n throw new InvalidConfigurationError(\n \"sceneIlluminationTemporalProfile.waveforms must be an array.\"\n );\n }\n if (\n !Array.isArray(record.sourceBindings)\n ) {\n throw new InvalidConfigurationError(\n \"sceneIlluminationTemporalProfile.sourceBindings must be an array.\"\n );\n }\n\n const waveforms =\n record.waveforms.map(\n (entry, index) =>\n parseWaveform(\n entry,\n \"sceneIlluminationTemporalProfile.waveforms[\" +\n index +\n \"]\"\n )\n );\n const waveformIds =\n waveforms.map(\n (entry) => entry.waveformId\n );\n if (\n new Set(waveformIds).size !==\n waveformIds.length\n ) {\n throw new InvalidConfigurationError(\n \"sceneIlluminationTemporalProfile.waveforms[].waveformId must not contain duplicates.\"\n );\n }\n\n const sourceBindings =\n record.sourceBindings.map(\n (entry, index) =>\n parseSourceBinding(\n entry,\n \"sceneIlluminationTemporalProfile.sourceBindings[\" +\n index +\n \"]\"\n )\n );\n const bindingIds =\n sourceBindings.map(\n (entry) => entry.bindingId\n );\n if (\n new Set(bindingIds).size !==\n bindingIds.length\n ) {\n throw new InvalidConfigurationError(\n \"sceneIlluminationTemporalProfile.sourceBindings[].bindingId must not contain duplicates.\"\n );\n }\n const sourceIds =\n sourceBindings.map(\n (entry) => entry.sourceId\n );\n if (\n new Set(sourceIds).size !==\n sourceIds.length\n ) {\n throw new InvalidConfigurationError(\n \"sceneIlluminationTemporalProfile supports at most one temporal binding per sourceId in schema 0.1.0.\"\n );\n }\n const waveformIdSet =\n new Set(waveformIds);\n for (const binding of sourceBindings) {\n if (\n !waveformIdSet.has(\n binding.waveformId\n )\n ) {\n throw new InvalidConfigurationError(\n \"sceneIlluminationTemporalProfile source binding references an unknown waveformId.\"\n );\n }\n }\n\n return {\n schemaVersion:\n SCENE_ILLUMINATION_TEMPORAL_PROFILE_SCHEMA_VERSION,\n profileId:\n requireNonEmptyString(\n record.profileId,\n \"sceneIlluminationTemporalProfile.profileId\"\n ),\n sceneId:\n requireNonEmptyString(\n record.sceneId,\n \"sceneIlluminationTemporalProfile.sceneId\"\n ),\n illuminationProfileId:\n requireNonEmptyString(\n record.illuminationProfileId,\n \"sceneIlluminationTemporalProfile.illuminationProfileId\"\n ),\n evidence: parseEvidenceList(\n record.evidence,\n \"sceneIlluminationTemporalProfile.evidence\"\n ),\n waveforms,\n sourceBindings,\n baseIlluminationProfileRemainsAuthoritative:\n true,\n sensorReadoutTimingUsedAsExposureTiming:\n false,\n automaticExposurePolicyIncluded:\n false\n };\n}\n\nfunction requireProfileBindings(\n illuminationProfile:\n SceneIlluminationProfile,\n temporalProfile:\n SceneIlluminationTemporalProfile\n): void {\n if (\n temporalProfile.sceneId !==\n illuminationProfile.sceneId\n ) {\n throw new InvalidScientificInputError(\n \"Temporal illumination profile sceneId must match the illumination profile.\"\n );\n }\n if (\n temporalProfile\n .illuminationProfileId !==\n illuminationProfile.profileId\n ) {\n throw new InvalidScientificInputError(\n \"Temporal illumination profile illuminationProfileId must match the supplied illumination profile.\"\n );\n }\n\n const knownSourceIds =\n new Set(\n illuminationProfile.sources.map(\n (entry) => entry.sourceId\n )\n );\n for (\n const binding of\n temporalProfile.sourceBindings\n ) {\n if (\n !knownSourceIds.has(\n binding.sourceId\n )\n ) {\n throw new InvalidScientificInputError(\n \"Temporal illumination source binding references a sourceId that is not declared by the illumination profile.\"\n );\n }\n }\n}\n\nfunction resolveSourceAndTemporalBinding(\n illuminationProfile:\n SceneIlluminationProfile,\n temporalProfile:\n SceneIlluminationTemporalProfile,\n sourceId: string\n): {\n source:\n SceneIlluminationProfile[\"sources\"][number];\n binding:\n SceneIlluminationTemporalSourceBinding;\n waveform:\n SceneIlluminationTemporalWaveform;\n} {\n requireProfileBindings(\n illuminationProfile,\n temporalProfile\n );\n\n const source =\n illuminationProfile.sources.find(\n (entry) =>\n entry.sourceId === sourceId\n );\n if (source === undefined) {\n throw new InvalidScientificInputError(\n \"sourceId is not declared by the supplied illumination profile.\"\n );\n }\n\n const binding =\n temporalProfile.sourceBindings.find(\n (entry) =>\n entry.sourceId === sourceId\n );\n if (binding === undefined) {\n throw new InvalidScientificInputError(\n \"Time-varying source evaluation requires an explicit source waveform-to-capture registration.\"\n );\n }\n\n const waveform =\n temporalProfile.waveforms.find(\n (entry) =>\n entry.waveformId ===\n binding.waveformId\n );\n if (waveform === undefined) {\n throw new InvalidScientificInputError(\n \"Temporal source binding waveformId is not declared by the temporal profile.\"\n );\n }\n\n return {\n source,\n binding,\n waveform\n };\n}\n\nfunction interpolateWaveform(\n samples:\n readonly SceneIlluminationTemporalWaveformSample[],\n timeSeconds: number\n): number {\n const first = samples[0]!;\n const last =\n samples[samples.length - 1]!;\n\n if (\n timeSeconds ===\n first.timeSecondsFromWaveformReference\n ) {\n return first\n .relativeMagnitudeMultiplier;\n }\n if (\n timeSeconds ===\n last.timeSecondsFromWaveformReference\n ) {\n return last\n .relativeMagnitudeMultiplier;\n }\n\n for (\n let index = 1;\n index < samples.length;\n index += 1\n ) {\n const right = samples[index]!;\n if (\n timeSeconds <\n right\n .timeSecondsFromWaveformReference\n ) {\n const left =\n samples[index - 1]!;\n const span =\n right\n .timeSecondsFromWaveformReference -\n left\n .timeSecondsFromWaveformReference;\n const phase =\n (timeSeconds -\n left\n .timeSecondsFromWaveformReference) /\n span;\n return (\n left\n .relativeMagnitudeMultiplier +\n phase *\n (right\n .relativeMagnitudeMultiplier -\n left\n .relativeMagnitudeMultiplier)\n );\n }\n }\n\n return last\n .relativeMagnitudeMultiplier;\n}\n\nfunction positiveModulo(\n value: number,\n modulus: number\n): number {\n const remainder = value % modulus;\n return remainder < 0\n ? remainder + modulus\n : remainder;\n}\n\nfunction evaluateWaveform(\n waveform:\n SceneIlluminationTemporalWaveform,\n waveformTimeSeconds: number\n): number {\n if (\n waveform.kind ===\n \"aperiodic-relative-multiplier\"\n ) {\n const last =\n waveform.samples[\n waveform.samples.length - 1\n ]!;\n if (\n waveformTimeSeconds < 0 ||\n waveformTimeSeconds >\n last\n .timeSecondsFromWaveformReference\n ) {\n return 0;\n }\n return interpolateWaveform(\n waveform.samples,\n waveformTimeSeconds\n );\n }\n\n const periodicTime =\n positiveModulo(\n waveformTimeSeconds,\n waveform.periodSeconds\n );\n return interpolateWaveform(\n waveform.samples,\n periodicTime\n );\n}\n\n/**\n * Returns one registered source's time-varying multiplier at one capture time.\n *\n * Capture time is in seconds from the first opening boundary of the exposure. Sensor\n * readout timing is never used in place of capture time.\n */\nexport function evaluateSceneIlluminationTemporalMultiplier(\n input:\n EvaluateSceneIlluminationTemporalMultiplierInput\n): SceneIlluminationTemporalMultiplierEvaluation {\n requireInputKeys(input, \"evaluateSceneIlluminationTemporalMultiplier\", [\"illuminationProfile\", \"temporalProfile\", \"sourceId\", \"captureTimeSecondsFromReference\"]);\n if (\n typeof input.sourceId !== \"string\" ||\n input.sourceId.trim().length === 0\n ) {\n throw new InvalidConfigurationError(\n \"sourceId must be a non-empty string.\"\n );\n }\n if (\n typeof input\n .captureTimeSecondsFromReference !==\n \"number\" ||\n !Number.isFinite(\n input\n .captureTimeSecondsFromReference\n )\n ) {\n throw new InvalidScientificInputError(\n \"captureTimeSecondsFromReference must be finite.\"\n );\n }\n\n const {\n source,\n binding,\n waveform\n } =\n resolveSourceAndTemporalBinding(\n input.illuminationProfile,\n input.temporalProfile,\n input.sourceId\n );\n\n const waveformTimeSeconds =\n input\n .captureTimeSecondsFromReference -\n binding\n .waveformTimeZeroSecondsFromCaptureReference;\n const multiplier =\n evaluateWaveform(\n waveform,\n waveformTimeSeconds\n );\n\n return {\n sourceId: source.sourceId,\n sourceEnabled: source.enabled,\n temporalProfileId:\n input.temporalProfile.profileId,\n bindingId: binding.bindingId,\n waveformId: waveform.waveformId,\n captureTimeReference:\n \"first-opening-boundary-phase\",\n captureTimeSecondsFromReference:\n input\n .captureTimeSecondsFromReference,\n waveformTimeSecondsFromWaveformReference:\n waveformTimeSeconds,\n waveformKind: waveform.kind,\n relativeMagnitudeMultiplier:\n multiplier,\n effectiveRelativeMagnitudeMultiplier:\n source.enabled ? multiplier : 0,\n sourceMagnitudeApplied: false,\n materialTransportApplied: false,\n sceneRadianceCalculated: false,\n sensorReadoutTimingUsed: false,\n automaticExposureResolved: false\n };\n}\n\n/**\n * Integrates one source's time-varying multiplier over one local exposure window\n * (from sensor/exposure-window), using the deterministic midpoint rule.\n *\n * It integrates only the relative modulation over time. It does not apply source\n * magnitude, scene light transport, optics, sensor response or metering policy.\n */\nexport function integrateSceneIlluminationTemporalMultiplierOverExposureWindow(\n input:\n IntegrateSceneIlluminationTemporalMultiplierInput\n): SceneIlluminationTemporalExposureIntegration {\n requireInputKeys(input, \"integrateSceneIlluminationTemporalMultiplierOverExposureWindow\", [\"illuminationProfile\", \"temporalProfile\", \"sourceId\", \"exposureWindows\", \"sampleIndex\", \"temporalSampleCount\"]);\n requirePositiveInteger(\n \"temporalSampleCount\",\n input.temporalSampleCount\n );\n if (\n !Number.isSafeInteger(\n input.sampleIndex\n ) ||\n input.sampleIndex < 0\n ) {\n throw new InvalidScientificInputError(\n \"sampleIndex must be a non-negative safe integer.\"\n );\n }\n if (\n input.exposureWindows\n .timeReference !==\n \"first-opening-boundary-phase\"\n ) {\n throw new InvalidScientificInputError(\n \"Exposure windows must use the first-opening-boundary-phase time reference.\"\n );\n }\n\n const window =\n input.exposureWindows.samples[\n input.sampleIndex\n ];\n if (window === undefined) {\n throw new InvalidScientificInputError(\n \"sampleIndex is outside exposureWindows.samples.\"\n );\n }\n\n const context =\n resolveSourceAndTemporalBinding(\n input.illuminationProfile,\n input.temporalProfile,\n input.sourceId\n );\n const durationSeconds =\n window.localExposureDurationSeconds;\n const normalizedTimeWeight =\n 1 / input.temporalSampleCount;\n const timeMeasureSeconds =\n durationSeconds /\n input.temporalSampleCount;\n\n let averageMultiplier = 0;\n let integratedMultiplierSeconds =\n 0;\n let averageEffectiveMultiplier =\n 0;\n let integratedEffectiveMultiplierSeconds =\n 0;\n\n const nodes = Array.from(\n {\n length:\n input.temporalSampleCount\n },\n (_, temporalSampleIndex) => {\n const localExposurePhase =\n (temporalSampleIndex + 0.5) /\n input.temporalSampleCount;\n const captureTimeSeconds =\n window\n .startOffsetSecondsFromOpeningReference +\n localExposurePhase *\n durationSeconds;\n const evaluated =\n evaluateSceneIlluminationTemporalMultiplier(\n {\n illuminationProfile:\n input.illuminationProfile,\n temporalProfile:\n input.temporalProfile,\n sourceId: input.sourceId,\n captureTimeSecondsFromReference:\n captureTimeSeconds\n }\n );\n\n averageMultiplier +=\n evaluated\n .relativeMagnitudeMultiplier *\n normalizedTimeWeight;\n integratedMultiplierSeconds +=\n evaluated\n .relativeMagnitudeMultiplier *\n timeMeasureSeconds;\n averageEffectiveMultiplier +=\n evaluated\n .effectiveRelativeMagnitudeMultiplier *\n normalizedTimeWeight;\n integratedEffectiveMultiplierSeconds +=\n evaluated\n .effectiveRelativeMagnitudeMultiplier *\n timeMeasureSeconds;\n\n return {\n temporalSampleIndex,\n localExposurePhase,\n captureTimeSecondsFromReference:\n captureTimeSeconds,\n waveformTimeSecondsFromWaveformReference:\n evaluated\n .waveformTimeSecondsFromWaveformReference,\n relativeMagnitudeMultiplier:\n evaluated\n .relativeMagnitudeMultiplier,\n effectiveRelativeMagnitudeMultiplier:\n evaluated\n .effectiveRelativeMagnitudeMultiplier,\n normalizedTimeWeight,\n timeMeasureSeconds\n };\n }\n );\n\n return {\n sourceId: context.source.sourceId,\n sourceEnabled:\n context.source.enabled,\n temporalProfileId:\n input.temporalProfile.profileId,\n bindingId:\n context.binding.bindingId,\n waveformId:\n context.waveform.waveformId,\n timeReference:\n \"first-opening-boundary-phase\",\n localExposureWindow: {\n startSecondsFromCaptureReference:\n window\n .startOffsetSecondsFromOpeningReference,\n endSecondsFromCaptureReference:\n window\n .endOffsetSecondsFromOpeningReference,\n durationSeconds\n },\n quadratureScheme:\n \"uniform-midpoint\",\n temporalSampleCount:\n input.temporalSampleCount,\n nodes,\n averageRelativeMagnitudeMultiplier:\n averageMultiplier,\n integratedRelativeMagnitudeSeconds:\n integratedMultiplierSeconds,\n averageEffectiveRelativeMagnitudeMultiplier:\n averageEffectiveMultiplier,\n integratedEffectiveRelativeMagnitudeSeconds:\n integratedEffectiveMultiplierSeconds,\n sourceMagnitudeApplied: false,\n materialTransportApplied: false,\n sceneRadianceCalculated: false,\n sensorReadoutTimingUsed: false,\n automaticExposureResolved: false,\n convergenceErrorEstimated: false\n };\n}\n"]}
@@ -127,12 +127,13 @@ export interface SceneIlluminationProfile {
127
127
  volumetricTransportModeled: false;
128
128
  polarizationModeled: false;
129
129
  }
130
+ /** Parses one source of a scene illumination profile (also used by record-taking helpers). Not a root export. */
131
+ export declare function parseSceneIlluminationSource(value: unknown, path: string): SceneIlluminationSource;
130
132
  /**
131
133
  * Parses a renderer-independent scene illumination profile.
132
134
  *
133
- * The result describes illumination sources only. It does not calculate
134
- * outgoing scene radiance, apply material response, evaluate visibility or
135
- * indirect transport, or authorize downstream photon/electron claims.
135
+ * The result describes light sources only. It does not compute outgoing scene
136
+ * radiance, material response, visibility or indirect light, and on its own it
137
+ * does not justify photon or electron counts downstream.
136
138
  */
137
139
  export declare function parseSceneIlluminationProfile(value: unknown): SceneIlluminationProfile;
138
- //# sourceMappingURL=illumination.d.ts.map
@@ -1,23 +1,27 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  /**
3
- * Module boundary and integration notes.
4
- * Parses a renderer-independent scene illumination profile. The result describes illumination sources
5
- * only. It does not calculate outgoing scene radiance, apply material response, evaluate visibility or
6
- * indirect transport, or authorize downstream photon/electron claims.
3
+ * Scene illumination profiles: the light sources in a scene, independent of any renderer.
4
+ *
5
+ * A profile describes sources only. It does not compute the light leaving surfaces
6
+ * (outgoing scene radiance), material response, visibility or indirect light, and on its
7
+ * own it does not justify photon or electron counts downstream.
7
8
  * @see docs/SCENE_RADIANCE_AND_ILLUMINATION.md for equations, coordinate/unit conventions, blockers
8
9
  * and support limits.
9
10
  */
11
+ import { rejectUnknownFields, rejectUnknownVariantFields, requireFixedFieldsWhenPresent } from "../core/record-validation.js";
10
12
  import { InvalidConfigurationError } from "../core/configuration-error.js";
11
13
  import { parseEvidenceList } from "../core/evidence-provenance.js";
12
14
  import { parseSpectralWavelengthBasis } from "../core/spectral.js";
13
15
  import { parseNormalizedDiscreteSpectralLineDistribution } from "../core/spectral-composition.js";
14
16
  export const SCENE_ILLUMINATION_PROFILE_SCHEMA_VERSION = "0.1.0";
15
- function requireRecord(value, path) {
17
+ function requireRecord(value, path, allowedKeys) {
16
18
  if (typeof value !== "object" ||
17
19
  value === null ||
18
20
  Array.isArray(value)) {
19
21
  throw new InvalidConfigurationError(path + " must be an object.");
20
22
  }
23
+ if (allowedKeys !== null)
24
+ rejectUnknownFields(value, allowedKeys, path);
21
25
  return value;
22
26
  }
23
27
  function requireNonEmptyString(value, path) {
@@ -62,7 +66,7 @@ function requireFraction(value, path) {
62
66
  return number;
63
67
  }
64
68
  function parseVector3(value, path) {
65
- const record = requireRecord(value, path);
69
+ const record = requireRecord(value, path, ["x", "y", "z"]);
66
70
  return {
67
71
  x: requireFinite(record.x, path + ".x"),
68
72
  y: requireFinite(record.y, path + ".y"),
@@ -86,8 +90,9 @@ function parseScientificStatus(value, path) {
86
90
  return value;
87
91
  }
88
92
  function parseUncertainty(value, path) {
89
- const record = requireRecord(value, path);
93
+ const record = requireRecord(value, path, null);
90
94
  if (record.kind === "relative") {
95
+ rejectUnknownFields(record, ["kind", "fraction", "basis"], path);
91
96
  return {
92
97
  kind: "relative",
93
98
  fraction: requireNonNegativeFinite(record.fraction, path + ".fraction"),
@@ -95,6 +100,7 @@ function parseUncertainty(value, path) {
95
100
  };
96
101
  }
97
102
  if (record.kind === "not-quantified") {
103
+ rejectUnknownFields(record, ["kind", "limitation"], path);
98
104
  return {
99
105
  kind: "not-quantified",
100
106
  limitation: requireNonEmptyString(record.limitation, path + ".limitation")
@@ -110,14 +116,16 @@ function validateCalibratedUncertainty(scientificStatus, uncertainty, path) {
110
116
  }
111
117
  }
112
118
  function parsePointOrigin(value, path) {
113
- const record = requireRecord(value, path);
119
+ const record = requireRecord(value, path, null);
114
120
  if (record.kind === "point-position") {
121
+ rejectUnknownFields(record, ["kind", "positionM"], path);
115
122
  return {
116
123
  kind: "point-position",
117
124
  positionM: parseVector3(record.positionM, path + ".positionM")
118
125
  };
119
126
  }
120
127
  if (record.kind === "scene-object-binding") {
128
+ rejectUnknownFields(record, ["kind", "sceneObjectId"], path);
121
129
  return {
122
130
  kind: "scene-object-binding",
123
131
  sceneObjectId: requireNonEmptyString(record.sceneObjectId, path + ".sceneObjectId")
@@ -126,7 +134,8 @@ function parsePointOrigin(value, path) {
126
134
  throw new InvalidConfigurationError(path + ".kind is invalid.");
127
135
  }
128
136
  function parseGeometry(family, value, path) {
129
- const record = requireRecord(value, path);
137
+ // The allowed fields depend on the source family; parsePointOrigin checks the point geometry.
138
+ const record = requireRecord(value, path, null);
130
139
  if (family === "point") {
131
140
  return parsePointOrigin(record, path);
132
141
  }
@@ -134,6 +143,7 @@ function parseGeometry(family, value, path) {
134
143
  if (record.kind !== "spot") {
135
144
  throw new InvalidConfigurationError(path + '.kind must be "spot" for a spot source.');
136
145
  }
146
+ rejectUnknownFields(record, ["kind", "origin", "directionUnitVector", "outerConeAngleDegrees"], path);
137
147
  const outerConeAngleDegrees = requirePositiveFinite(record.outerConeAngleDegrees, path + ".outerConeAngleDegrees");
138
148
  if (outerConeAngleDegrees >= 180) {
139
149
  throw new InvalidConfigurationError(path +
@@ -151,6 +161,7 @@ function parseGeometry(family, value, path) {
151
161
  throw new InvalidConfigurationError(path +
152
162
  '.kind must be "scene-object-binding" for an area source so emitting geometry remains scene-owned.');
153
163
  }
164
+ rejectUnknownFields(record, ["kind", "sceneObjectId"], path);
154
165
  return {
155
166
  kind: "scene-object-binding",
156
167
  sceneObjectId: requireNonEmptyString(record.sceneObjectId, path + ".sceneObjectId")
@@ -161,6 +172,7 @@ function parseGeometry(family, value, path) {
161
172
  throw new InvalidConfigurationError(path +
162
173
  '.kind must be "directional" for a directional source.');
163
174
  }
175
+ rejectUnknownFields(record, ["kind", "directionUnitVector"], path);
164
176
  return {
165
177
  kind: "directional",
166
178
  directionUnitVector: parseDirectionUnitVector(record.directionUnitVector, path + ".directionUnitVector")
@@ -170,10 +182,17 @@ function parseGeometry(family, value, path) {
170
182
  throw new InvalidConfigurationError(path +
171
183
  '.kind must be "environment" for an environment source.');
172
184
  }
185
+ rejectUnknownFields(record, ["kind"], path);
173
186
  return { kind: "environment" };
174
187
  }
175
188
  function parseMagnitude(family, value, path) {
176
- const record = requireRecord(value, path);
189
+ const record = requireRecord(value, path, null);
190
+ rejectUnknownVariantFields(record, "kind", {
191
+ "relative-linear-scale": ["kind", "scale", "scientificStatus", "limitation"],
192
+ "radiant-intensity": ["kind", "wattsPerSteradian", "scientificStatus", "uncertainty", "evidence"],
193
+ "surface-radiance": ["kind", "wattsPerSquareMeterSteradian", "scientificStatus", "uncertainty", "evidence"],
194
+ "reference-plane-irradiance": ["kind", "wattsPerSquareMeter", "referencePlaneId", "scientificStatus", "uncertainty", "evidence"]
195
+ }, path);
177
196
  if (record.kind === "relative-linear-scale") {
178
197
  if (record.scientificStatus !== "approximation") {
179
198
  throw new InvalidConfigurationError(path +
@@ -240,7 +259,15 @@ function requireReusableSpectrumEvidence(value, path) {
240
259
  return evidence;
241
260
  }
242
261
  function parseSpectrum(value, path) {
243
- const record = requireRecord(value, path);
262
+ const record = requireRecord(value, path, null);
263
+ rejectUnknownVariantFields(record, "kind", {
264
+ unresolved: ["kind", "limitation"],
265
+ "rgb-preview-approximation": ["kind", "colorSpace", "red", "green", "blue", "limitation"],
266
+ "blackbody-temperature-approximation": ["kind", "temperatureKelvin", "limitation"],
267
+ "discrete-relative-lines": ["kind", "spectrumId", "wavelengthUnit", "scientificStatus", "uncertainty", "evidence", "distribution"],
268
+ "continuous-relative-spectrum": ["kind", "spectrumId", "wavelengthUnit", "wavelengthBasis", "interpolation", "outsideRangeBehavior",
269
+ "normalization", "scientificStatus", "uncertainty", "evidence", "samples"]
270
+ }, path);
244
271
  if (record.kind === "unresolved") {
245
272
  return {
246
273
  kind: "unresolved",
@@ -349,7 +376,7 @@ function parseSpectrum(value, path) {
349
376
  let previousWavelength = Number.NEGATIVE_INFINITY;
350
377
  let hasPositiveDensity = false;
351
378
  const samples = record.samples.map((entry, index) => {
352
- const sample = requireRecord(entry, path + ".samples[" + index + "]");
379
+ const sample = requireRecord(entry, path + ".samples[" + index + "]", ["wavelengthNanometers", "relativeDensityPerNanometer"]);
353
380
  const wavelengthNanometers = requirePositiveFinite(sample.wavelengthNanometers, path +
354
381
  ".samples[" +
355
382
  index +
@@ -412,10 +439,11 @@ function parseFamily(value, path) {
412
439
  }
413
440
  return value;
414
441
  }
415
- function parseSource(value, path) {
416
- const record = requireRecord(value, path);
442
+ /** Parses one source of a scene illumination profile (also used by record-taking helpers). Not a root export. */
443
+ export function parseSceneIlluminationSource(value, path) {
444
+ const record = requireRecord(value, path, ["family", "temporalBehavior", "sourceId", "enabled", "geometry", "magnitude", "spectrum", "evidence", "limitations"]);
417
445
  const family = parseFamily(record.family, path + ".family");
418
- const temporalBehavior = requireRecord(record.temporalBehavior, path + ".temporalBehavior");
446
+ const temporalBehavior = requireRecord(record.temporalBehavior, path + ".temporalBehavior", ["kind"]);
419
447
  if (temporalBehavior.kind !==
420
448
  "time-invariant") {
421
449
  throw new InvalidConfigurationError(path +
@@ -439,15 +467,22 @@ function parseSource(value, path) {
439
467
  })
440
468
  };
441
469
  }
470
+ /** Fixed flags the parser writes; a parsed profile may carry them back in unchanged. */
471
+ const ILLUMINATION_PROFILE_FIXED_FIELDS = {
472
+ sceneRadianceCalculated: false, materialResponseApplied: false, visibilityEvaluated: false,
473
+ indirectTransportEvaluated: false, fluorescenceModeled: false, volumetricTransportModeled: false,
474
+ polarizationModeled: false
475
+ };
442
476
  /**
443
477
  * Parses a renderer-independent scene illumination profile.
444
478
  *
445
- * The result describes illumination sources only. It does not calculate
446
- * outgoing scene radiance, apply material response, evaluate visibility or
447
- * indirect transport, or authorize downstream photon/electron claims.
479
+ * The result describes light sources only. It does not compute outgoing scene
480
+ * radiance, material response, visibility or indirect light, and on its own it
481
+ * does not justify photon or electron counts downstream.
448
482
  */
449
483
  export function parseSceneIlluminationProfile(value) {
450
- const record = requireRecord(value, "sceneIlluminationProfile");
484
+ const record = requireRecord(value, "sceneIlluminationProfile", ["schemaVersion", "sources", "profileId", "sceneId", "evidence", ...Object.keys(ILLUMINATION_PROFILE_FIXED_FIELDS)]);
485
+ requireFixedFieldsWhenPresent(record, ILLUMINATION_PROFILE_FIXED_FIELDS, "sceneIlluminationProfile");
451
486
  if (record.schemaVersion !==
452
487
  SCENE_ILLUMINATION_PROFILE_SCHEMA_VERSION) {
453
488
  throw new InvalidConfigurationError('sceneIlluminationProfile.schemaVersion must be "' +
@@ -457,7 +492,7 @@ export function parseSceneIlluminationProfile(value) {
457
492
  if (!Array.isArray(record.sources)) {
458
493
  throw new InvalidConfigurationError("sceneIlluminationProfile.sources must be an array.");
459
494
  }
460
- const sources = record.sources.map((source, index) => parseSource(source, "sceneIlluminationProfile.sources[" +
495
+ const sources = record.sources.map((source, index) => parseSceneIlluminationSource(source, "sceneIlluminationProfile.sources[" +
461
496
  index +
462
497
  "]"));
463
498
  const sourceIds = sources.map((source) => source.sourceId);
@@ -1 +1 @@
1
- {"version":3,"file":"illumination.js","sourceRoot":"","sources":["../../src/schema/illumination.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"illumination.js","sourceRoot":"","sources":["../../src/schema/illumination.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Scene illumination profiles: the light sources in a scene, independent of any renderer.\n *\n * A profile describes sources only. It does not compute the light leaving surfaces\n * (outgoing scene radiance), material response, visibility or indirect light, and on its\n * own it does not justify photon or electron counts downstream.\n * @see docs/SCENE_RADIANCE_AND_ILLUMINATION.md for equations, coordinate/unit conventions, blockers\n * and support limits.\n */\n\nimport { rejectUnknownFields, rejectUnknownVariantFields, requireFixedFieldsWhenPresent } from \"../core/record-validation.js\";\nimport { InvalidConfigurationError } from \"../core/configuration-error.js\";\nimport {\n parseEvidenceList,\n type EvidenceProvenance\n} from \"../core/evidence-provenance.js\";\nimport {\n parseSpectralWavelengthBasis,\n type SpectralWavelengthBasis\n} from \"../core/spectral.js\";\nimport {\n parseNormalizedDiscreteSpectralLineDistribution,\n type NormalizedDiscreteSpectralLineDistribution\n} from \"../core/spectral-composition.js\";\nimport type { Vector3 } from \"./scene.js\";\n\ntype UnknownRecord = Record<string, unknown>;\n\nexport const SCENE_ILLUMINATION_PROFILE_SCHEMA_VERSION = \"0.1.0\" as const;\n\nexport type SceneIlluminationSourceFamily =\n | \"point\"\n | \"spot\"\n | \"area\"\n | \"directional\"\n | \"environment\";\n\nexport type SceneIlluminationScientificStatus =\n | \"calibrated\"\n | \"approximation\";\n\nexport type SceneIlluminationUncertainty =\n | {\n kind: \"relative\";\n fraction: number;\n basis: string;\n }\n | {\n kind: \"not-quantified\";\n limitation: string;\n };\n\nexport type SceneIlluminationSourceGeometry =\n | {\n kind: \"point-position\";\n positionM: Vector3;\n }\n | {\n kind: \"scene-object-binding\";\n sceneObjectId: string;\n }\n | {\n kind: \"spot\";\n origin:\n | {\n kind: \"point-position\";\n positionM: Vector3;\n }\n | {\n kind: \"scene-object-binding\";\n sceneObjectId: string;\n };\n directionUnitVector: Vector3;\n outerConeAngleDegrees: number;\n }\n | {\n kind: \"directional\";\n directionUnitVector: Vector3;\n }\n | {\n kind: \"environment\";\n };\n\nexport type SceneIlluminationMagnitude =\n | {\n kind: \"relative-linear-scale\";\n scale: number;\n scientificStatus: \"approximation\";\n limitation: string;\n }\n | {\n kind: \"radiant-intensity\";\n wattsPerSteradian: number;\n scientificStatus: SceneIlluminationScientificStatus;\n uncertainty: SceneIlluminationUncertainty;\n evidence: readonly EvidenceProvenance[];\n }\n | {\n kind: \"surface-radiance\";\n wattsPerSquareMeterSteradian: number;\n scientificStatus: SceneIlluminationScientificStatus;\n uncertainty: SceneIlluminationUncertainty;\n evidence: readonly EvidenceProvenance[];\n }\n | {\n kind: \"reference-plane-irradiance\";\n wattsPerSquareMeter: number;\n referencePlaneId: string;\n scientificStatus: SceneIlluminationScientificStatus;\n uncertainty: SceneIlluminationUncertainty;\n evidence: readonly EvidenceProvenance[];\n };\n\nexport interface SceneIlluminationRelativeSpectrumSample {\n wavelengthNanometers: number;\n relativeDensityPerNanometer: number;\n}\n\nexport type SceneIlluminationSpectrum =\n | {\n kind: \"unresolved\";\n limitation: string;\n }\n | {\n kind: \"rgb-preview-approximation\";\n colorSpace: \"linear-srgb\";\n red: number;\n green: number;\n blue: number;\n limitation: string;\n }\n | {\n kind: \"blackbody-temperature-approximation\";\n temperatureKelvin: number;\n limitation: string;\n }\n | {\n kind: \"continuous-relative-spectrum\";\n spectrumId: string;\n wavelengthUnit: \"nm\";\n wavelengthBasis: SpectralWavelengthBasis;\n interpolation: \"piecewise-linear\";\n outsideRangeBehavior: \"fail-closed\";\n normalization: \"arbitrary-relative-scale\";\n scientificStatus:\n | \"calibrated-relative-shape\"\n | \"approximation\";\n uncertainty: SceneIlluminationUncertainty;\n evidence: readonly EvidenceProvenance[];\n samples:\n readonly SceneIlluminationRelativeSpectrumSample[];\n }\n | {\n kind: \"discrete-relative-lines\";\n spectrumId: string;\n wavelengthUnit: \"nm\";\n scientificStatus:\n | \"calibrated-relative-lines\"\n | \"approximation\";\n uncertainty: SceneIlluminationUncertainty;\n evidence: readonly EvidenceProvenance[];\n distribution:\n NormalizedDiscreteSpectralLineDistribution;\n };\n\nexport interface SceneIlluminationSource {\n sourceId: string;\n family: SceneIlluminationSourceFamily;\n enabled: boolean;\n geometry: SceneIlluminationSourceGeometry;\n magnitude: SceneIlluminationMagnitude;\n spectrum: SceneIlluminationSpectrum;\n temporalBehavior: {\n kind: \"time-invariant\";\n };\n evidence: readonly EvidenceProvenance[];\n limitations?: readonly string[];\n}\n\nexport interface SceneIlluminationProfile {\n schemaVersion:\n typeof SCENE_ILLUMINATION_PROFILE_SCHEMA_VERSION;\n profileId: string;\n sceneId: string;\n evidence: readonly EvidenceProvenance[];\n sources: readonly SceneIlluminationSource[];\n sceneRadianceCalculated: false;\n materialResponseApplied: false;\n visibilityEvaluated: false;\n indirectTransportEvaluated: false;\n fluorescenceModeled: false;\n volumetricTransportModeled: false;\n polarizationModeled: 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 requireBoolean(\n value: unknown,\n path: string\n): boolean {\n if (typeof value !== \"boolean\") {\n throw new InvalidConfigurationError(\n path + \" must be a boolean.\"\n );\n }\n return value;\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 requirePositiveFinite(\n value: unknown,\n path: string\n): number {\n const number = requireFinite(value, path);\n if (number <= 0) {\n throw new InvalidConfigurationError(\n path + \" must be greater than zero.\"\n );\n }\n return number;\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 + \" 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 + \" 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 parseDirectionUnitVector(\n value: unknown,\n path: string\n): Vector3 {\n const vector = parseVector3(value, path);\n const magnitude = Math.hypot(\n vector.x,\n vector.y,\n vector.z\n );\n if (\n !Number.isFinite(magnitude) ||\n Math.abs(magnitude - 1) > 1e-9\n ) {\n throw new InvalidConfigurationError(\n path + \" must be a unit-length direction vector.\"\n );\n }\n return vector;\n}\n\nfunction parseScientificStatus(\n value: unknown,\n path: string\n): SceneIlluminationScientificStatus {\n if (\n value !== \"calibrated\" &&\n value !== \"approximation\"\n ) {\n throw new InvalidConfigurationError(\n path + \" is invalid.\"\n );\n }\n return value;\n}\n\nfunction parseUncertainty(\n value: unknown,\n path: string\n): SceneIlluminationUncertainty {\n const record = requireRecord(value, path, null);\n\n if (record.kind === \"relative\") {\n rejectUnknownFields(record, [\"kind\", \"fraction\", \"basis\"], path);\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\n if (record.kind === \"not-quantified\") {\n rejectUnknownFields(record, [\"kind\", \"limitation\"], path);\n return {\n kind: \"not-quantified\",\n limitation: requireNonEmptyString(\n record.limitation,\n path + \".limitation\"\n )\n };\n }\n\n throw new InvalidConfigurationError(\n path + \".kind is invalid.\"\n );\n}\n\nfunction validateCalibratedUncertainty(\n scientificStatus:\n SceneIlluminationScientificStatus,\n uncertainty: SceneIlluminationUncertainty,\n path: string\n): void {\n if (\n scientificStatus === \"calibrated\" &&\n uncertainty.kind !== \"relative\"\n ) {\n throw new InvalidConfigurationError(\n path +\n \" calibrated physical magnitude requires quantified relative uncertainty.\"\n );\n }\n}\n\nfunction parsePointOrigin(\n value: unknown,\n path: string\n):\n | {\n kind: \"point-position\";\n positionM: Vector3;\n }\n | {\n kind: \"scene-object-binding\";\n sceneObjectId: string;\n } {\n const record = requireRecord(value, path, null);\n\n if (record.kind === \"point-position\") {\n rejectUnknownFields(record, [\"kind\", \"positionM\"], path);\n return {\n kind: \"point-position\",\n positionM: parseVector3(\n record.positionM,\n path + \".positionM\"\n )\n };\n }\n\n if (record.kind === \"scene-object-binding\") {\n rejectUnknownFields(record, [\"kind\", \"sceneObjectId\"], path);\n return {\n kind: \"scene-object-binding\",\n sceneObjectId: requireNonEmptyString(\n record.sceneObjectId,\n path + \".sceneObjectId\"\n )\n };\n }\n\n throw new InvalidConfigurationError(\n path + \".kind is invalid.\"\n );\n}\n\nfunction parseGeometry(\n family: SceneIlluminationSourceFamily,\n value: unknown,\n path: string\n): SceneIlluminationSourceGeometry {\n // The allowed fields depend on the source family; parsePointOrigin checks the point geometry.\n const record = requireRecord(value, path, null);\n\n if (family === \"point\") {\n return parsePointOrigin(record, path);\n }\n\n if (family === \"spot\") {\n if (record.kind !== \"spot\") {\n throw new InvalidConfigurationError(\n path + '.kind must be \"spot\" for a spot source.'\n );\n }\n rejectUnknownFields(record, [\"kind\", \"origin\", \"directionUnitVector\", \"outerConeAngleDegrees\"], path);\n const outerConeAngleDegrees =\n requirePositiveFinite(\n record.outerConeAngleDegrees,\n path + \".outerConeAngleDegrees\"\n );\n if (outerConeAngleDegrees >= 180) {\n throw new InvalidConfigurationError(\n path +\n \".outerConeAngleDegrees must be less than 180.\"\n );\n }\n return {\n kind: \"spot\",\n origin: parsePointOrigin(\n record.origin,\n path + \".origin\"\n ),\n directionUnitVector:\n parseDirectionUnitVector(\n record.directionUnitVector,\n path + \".directionUnitVector\"\n ),\n outerConeAngleDegrees\n };\n }\n\n if (family === \"area\") {\n if (record.kind !== \"scene-object-binding\") {\n throw new InvalidConfigurationError(\n path +\n '.kind must be \"scene-object-binding\" for an area source so emitting geometry remains scene-owned.'\n );\n }\n rejectUnknownFields(record, [\"kind\", \"sceneObjectId\"], path);\n return {\n kind: \"scene-object-binding\",\n sceneObjectId: requireNonEmptyString(\n record.sceneObjectId,\n path + \".sceneObjectId\"\n )\n };\n }\n\n if (family === \"directional\") {\n if (record.kind !== \"directional\") {\n throw new InvalidConfigurationError(\n path +\n '.kind must be \"directional\" for a directional source.'\n );\n }\n rejectUnknownFields(record, [\"kind\", \"directionUnitVector\"], path);\n return {\n kind: \"directional\",\n directionUnitVector:\n parseDirectionUnitVector(\n record.directionUnitVector,\n path + \".directionUnitVector\"\n )\n };\n }\n\n if (record.kind !== \"environment\") {\n throw new InvalidConfigurationError(\n path +\n '.kind must be \"environment\" for an environment source.'\n );\n }\n rejectUnknownFields(record, [\"kind\"], path);\n return { kind: \"environment\" };\n}\n\nfunction parseMagnitude(\n family: SceneIlluminationSourceFamily,\n value: unknown,\n path: string\n): SceneIlluminationMagnitude {\n const record = requireRecord(value, path, null);\n rejectUnknownVariantFields(record, \"kind\", {\n \"relative-linear-scale\": [\"kind\", \"scale\", \"scientificStatus\", \"limitation\"],\n \"radiant-intensity\": [\"kind\", \"wattsPerSteradian\", \"scientificStatus\", \"uncertainty\", \"evidence\"],\n \"surface-radiance\": [\"kind\", \"wattsPerSquareMeterSteradian\", \"scientificStatus\", \"uncertainty\", \"evidence\"],\n \"reference-plane-irradiance\": [\"kind\", \"wattsPerSquareMeter\", \"referencePlaneId\", \"scientificStatus\", \"uncertainty\", \"evidence\"]\n }, path);\n\n if (record.kind === \"relative-linear-scale\") {\n if (record.scientificStatus !== \"approximation\") {\n throw new InvalidConfigurationError(\n path +\n '.scientificStatus must be \"approximation\" for relative-linear-scale.'\n );\n }\n return {\n kind: \"relative-linear-scale\",\n scale: requirePositiveFinite(\n record.scale,\n path + \".scale\"\n ),\n scientificStatus: \"approximation\",\n limitation: requireNonEmptyString(\n record.limitation,\n path + \".limitation\"\n )\n };\n }\n\n const scientificStatus =\n parseScientificStatus(\n record.scientificStatus,\n path + \".scientificStatus\"\n );\n const uncertainty =\n parseUncertainty(\n record.uncertainty,\n path + \".uncertainty\"\n );\n validateCalibratedUncertainty(\n scientificStatus,\n uncertainty,\n path\n );\n const evidence = parseEvidenceList(\n record.evidence,\n path + \".evidence\"\n );\n\n if (\n record.kind === \"radiant-intensity\" &&\n family === \"point\"\n ) {\n return {\n kind: \"radiant-intensity\",\n wattsPerSteradian:\n requirePositiveFinite(\n record.wattsPerSteradian,\n path + \".wattsPerSteradian\"\n ),\n scientificStatus,\n uncertainty,\n evidence\n };\n }\n\n if (\n record.kind === \"surface-radiance\" &&\n family === \"area\"\n ) {\n return {\n kind: \"surface-radiance\",\n wattsPerSquareMeterSteradian:\n requirePositiveFinite(\n record.wattsPerSquareMeterSteradian,\n path +\n \".wattsPerSquareMeterSteradian\"\n ),\n scientificStatus,\n uncertainty,\n evidence\n };\n }\n\n if (\n record.kind ===\n \"reference-plane-irradiance\" &&\n family === \"directional\"\n ) {\n return {\n kind: \"reference-plane-irradiance\",\n wattsPerSquareMeter:\n requirePositiveFinite(\n record.wattsPerSquareMeter,\n path + \".wattsPerSquareMeter\"\n ),\n referencePlaneId:\n requireNonEmptyString(\n record.referencePlaneId,\n path + \".referencePlaneId\"\n ),\n scientificStatus,\n uncertainty,\n evidence\n };\n }\n\n throw new InvalidConfigurationError(\n path +\n \".kind is not supported for source family \" +\n family +\n \".\"\n );\n}\n\nfunction requireReusableSpectrumEvidence(\n value: unknown,\n path: string\n): readonly EvidenceProvenance[] {\n const evidence = parseEvidenceList(\n value,\n path\n );\n if (\n !evidence.some(\n (entry) =>\n entry.reuseStatus ===\n \"reusable-data\" ||\n entry.reuseStatus ===\n \"photivra-owned\"\n )\n ) {\n throw new InvalidConfigurationError(\n path +\n \" must contain reusable-data or photivra-owned evidence because the spectrum embeds reusable numeric data.\"\n );\n }\n return evidence;\n}\n\nfunction parseSpectrum(\n value: unknown,\n path: string\n): SceneIlluminationSpectrum {\n const record = requireRecord(value, path, null);\n rejectUnknownVariantFields(record, \"kind\", {\n unresolved: [\"kind\", \"limitation\"],\n \"rgb-preview-approximation\": [\"kind\", \"colorSpace\", \"red\", \"green\", \"blue\", \"limitation\"],\n \"blackbody-temperature-approximation\": [\"kind\", \"temperatureKelvin\", \"limitation\"],\n \"discrete-relative-lines\": [\"kind\", \"spectrumId\", \"wavelengthUnit\", \"scientificStatus\", \"uncertainty\", \"evidence\", \"distribution\"],\n \"continuous-relative-spectrum\": [\"kind\", \"spectrumId\", \"wavelengthUnit\", \"wavelengthBasis\", \"interpolation\", \"outsideRangeBehavior\",\n \"normalization\", \"scientificStatus\", \"uncertainty\", \"evidence\", \"samples\"]\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-preview-approximation\"\n ) {\n if (record.colorSpace !== \"linear-srgb\") {\n throw new InvalidConfigurationError(\n path +\n '.colorSpace must be \"linear-srgb\" for the first RGB preview approximation.'\n );\n }\n return {\n kind: \"rgb-preview-approximation\",\n colorSpace: \"linear-srgb\",\n red: requireFraction(\n record.red,\n path + \".red\"\n ),\n green: requireFraction(\n record.green,\n path + \".green\"\n ),\n blue: requireFraction(\n record.blue,\n path + \".blue\"\n ),\n limitation: requireNonEmptyString(\n record.limitation,\n path + \".limitation\"\n )\n };\n }\n\n if (\n record.kind ===\n \"blackbody-temperature-approximation\"\n ) {\n return {\n kind: \"blackbody-temperature-approximation\",\n temperatureKelvin:\n requirePositiveFinite(\n record.temperatureKelvin,\n path + \".temperatureKelvin\"\n ),\n limitation: requireNonEmptyString(\n record.limitation,\n path + \".limitation\"\n )\n };\n }\n\n if (\n record.kind ===\n \"discrete-relative-lines\"\n ) {\n if (record.wavelengthUnit !== \"nm\") {\n throw new InvalidConfigurationError(\n path + '.wavelengthUnit must be \"nm\".'\n );\n }\n if (\n record.scientificStatus !==\n \"calibrated-relative-lines\" &&\n record.scientificStatus !==\n \"approximation\"\n ) {\n throw new InvalidConfigurationError(\n path + \".scientificStatus is invalid.\"\n );\n }\n const uncertainty =\n parseUncertainty(\n record.uncertainty,\n path + \".uncertainty\"\n );\n if (\n record.scientificStatus ===\n \"calibrated-relative-lines\" &&\n uncertainty.kind !== \"relative\"\n ) {\n throw new InvalidConfigurationError(\n path +\n \" calibrated-relative-lines spectra require quantified relative uncertainty.\"\n );\n }\n\n return {\n kind: \"discrete-relative-lines\",\n spectrumId: requireNonEmptyString(\n record.spectrumId,\n path + \".spectrumId\"\n ),\n wavelengthUnit: \"nm\",\n scientificStatus:\n record.scientificStatus,\n uncertainty,\n evidence:\n requireReusableSpectrumEvidence(\n record.evidence,\n path + \".evidence\"\n ),\n distribution:\n parseNormalizedDiscreteSpectralLineDistribution(\n record.distribution,\n path + \".distribution\"\n )\n };\n }\n\n if (\n record.kind !==\n \"continuous-relative-spectrum\"\n ) {\n throw new InvalidConfigurationError(\n path + \".kind is invalid.\"\n );\n }\n\n if (record.wavelengthUnit !== \"nm\") {\n throw new InvalidConfigurationError(\n path + '.wavelengthUnit must be \"nm\".'\n );\n }\n if (\n record.interpolation !==\n \"piecewise-linear\"\n ) {\n throw new InvalidConfigurationError(\n path +\n '.interpolation must be \"piecewise-linear\".'\n );\n }\n if (\n record.outsideRangeBehavior !==\n \"fail-closed\"\n ) {\n throw new InvalidConfigurationError(\n path +\n '.outsideRangeBehavior must be \"fail-closed\".'\n );\n }\n if (\n record.normalization !==\n \"arbitrary-relative-scale\"\n ) {\n throw new InvalidConfigurationError(\n path +\n '.normalization must be \"arbitrary-relative-scale\".'\n );\n }\n if (\n record.scientificStatus !==\n \"calibrated-relative-shape\" &&\n record.scientificStatus !==\n \"approximation\"\n ) {\n throw new InvalidConfigurationError(\n path + \".scientificStatus is invalid.\"\n );\n }\n\n const wavelengthBasis =\n parseSpectralWavelengthBasis(\n record.wavelengthBasis,\n path + \".wavelengthBasis\"\n );\n const uncertainty =\n parseUncertainty(\n record.uncertainty,\n path + \".uncertainty\"\n );\n if (\n record.scientificStatus ===\n \"calibrated-relative-shape\" &&\n wavelengthBasis === \"unspecified\"\n ) {\n throw new InvalidConfigurationError(\n path +\n ' calibrated-relative-shape spectra must declare wavelengthBasis \"air\" or \"vacuum\".'\n );\n }\n if (\n record.scientificStatus ===\n \"calibrated-relative-shape\" &&\n uncertainty.kind !== \"relative\"\n ) {\n throw new InvalidConfigurationError(\n path +\n \" calibrated-relative-shape spectra require quantified relative uncertainty.\"\n );\n }\n\n const evidence =\n requireReusableSpectrumEvidence(\n record.evidence,\n path + \".evidence\"\n );\n if (\n !Array.isArray(record.samples) ||\n record.samples.length < 2\n ) {\n throw new InvalidConfigurationError(\n path +\n \".samples must contain at least two wavelength samples.\"\n );\n }\n\n let previousWavelength =\n Number.NEGATIVE_INFINITY;\n let hasPositiveDensity = false;\n const samples = record.samples.map(\n (entry, index) => {\n const sample = requireRecord(\n entry,\n path + \".samples[\" + index + \"]\", [\"wavelengthNanometers\", \"relativeDensityPerNanometer\"]\n );\n const wavelengthNanometers =\n requirePositiveFinite(\n sample.wavelengthNanometers,\n path +\n \".samples[\" +\n index +\n \"].wavelengthNanometers\"\n );\n if (\n wavelengthNanometers <=\n previousWavelength\n ) {\n throw new InvalidConfigurationError(\n path +\n \".samples wavelengths must be strictly increasing.\"\n );\n }\n previousWavelength =\n wavelengthNanometers;\n const relativeDensityPerNanometer =\n requireNonNegativeFinite(\n sample.relativeDensityPerNanometer,\n path +\n \".samples[\" +\n index +\n \"].relativeDensityPerNanometer\"\n );\n if (relativeDensityPerNanometer > 0) {\n hasPositiveDensity = true;\n }\n return {\n wavelengthNanometers,\n relativeDensityPerNanometer\n };\n }\n );\n\n if (!hasPositiveDensity) {\n throw new InvalidConfigurationError(\n path +\n \".samples must contain at least one positive relative density.\"\n );\n }\n\n return {\n kind: \"continuous-relative-spectrum\",\n spectrumId: requireNonEmptyString(\n record.spectrumId,\n path + \".spectrumId\"\n ),\n wavelengthUnit: \"nm\",\n wavelengthBasis,\n interpolation: \"piecewise-linear\",\n outsideRangeBehavior: \"fail-closed\",\n normalization: \"arbitrary-relative-scale\",\n scientificStatus:\n record.scientificStatus,\n uncertainty,\n evidence,\n samples\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 parseFamily(\n value: unknown,\n path: string\n): SceneIlluminationSourceFamily {\n if (\n value !== \"point\" &&\n value !== \"spot\" &&\n value !== \"area\" &&\n value !== \"directional\" &&\n value !== \"environment\"\n ) {\n throw new InvalidConfigurationError(\n path + \" is invalid.\"\n );\n }\n return value;\n}\n\n/** Parses one source of a scene illumination profile (also used by record-taking helpers). Not a root export. */\nexport function parseSceneIlluminationSource(\n value: unknown,\n path: string\n): SceneIlluminationSource {\n const record = requireRecord(value, path, [\"family\", \"temporalBehavior\", \"sourceId\", \"enabled\", \"geometry\", \"magnitude\", \"spectrum\", \"evidence\", \"limitations\"]);\n const family = parseFamily(\n record.family,\n path + \".family\"\n );\n\n const temporalBehavior =\n requireRecord(\n record.temporalBehavior,\n path + \".temporalBehavior\", [\"kind\"]\n );\n if (\n temporalBehavior.kind !==\n \"time-invariant\"\n ) {\n throw new InvalidConfigurationError(\n path +\n '.temporalBehavior.kind must be \"time-invariant\" in schema 0.1.0.'\n );\n }\n\n return {\n sourceId: requireNonEmptyString(\n record.sourceId,\n path + \".sourceId\"\n ),\n family,\n enabled: requireBoolean(\n record.enabled,\n path + \".enabled\"\n ),\n geometry: parseGeometry(\n family,\n record.geometry,\n path + \".geometry\"\n ),\n magnitude: parseMagnitude(\n family,\n record.magnitude,\n path + \".magnitude\"\n ),\n spectrum: parseSpectrum(\n record.spectrum,\n path + \".spectrum\"\n ),\n temporalBehavior: {\n kind: \"time-invariant\"\n },\n evidence: parseEvidenceList(\n record.evidence,\n path + \".evidence\"\n ),\n ...(record.limitations === undefined\n ? {}\n : {\n limitations: parseLimitations(\n record.limitations,\n path + \".limitations\"\n )\n })\n };\n}\n\n/** Fixed flags the parser writes; a parsed profile may carry them back in unchanged. */\nconst ILLUMINATION_PROFILE_FIXED_FIELDS = {\n sceneRadianceCalculated: false, materialResponseApplied: false, visibilityEvaluated: false,\n indirectTransportEvaluated: false, fluorescenceModeled: false, volumetricTransportModeled: false,\n polarizationModeled: false\n} as const;\n\n/**\n * Parses a renderer-independent scene illumination profile.\n *\n * The result describes light sources only. It does not compute outgoing scene\n * radiance, material response, visibility or indirect light, and on its own it\n * does not justify photon or electron counts downstream.\n */\nexport function parseSceneIlluminationProfile(\n value: unknown\n): SceneIlluminationProfile {\n const record = requireRecord(\n value,\n \"sceneIlluminationProfile\", [\"schemaVersion\", \"sources\", \"profileId\", \"sceneId\", \"evidence\", ...Object.keys(ILLUMINATION_PROFILE_FIXED_FIELDS)]\n );\n requireFixedFieldsWhenPresent(record, ILLUMINATION_PROFILE_FIXED_FIELDS, \"sceneIlluminationProfile\");\n\n if (\n record.schemaVersion !==\n SCENE_ILLUMINATION_PROFILE_SCHEMA_VERSION\n ) {\n throw new InvalidConfigurationError(\n 'sceneIlluminationProfile.schemaVersion must be \"' +\n SCENE_ILLUMINATION_PROFILE_SCHEMA_VERSION +\n '\".'\n );\n }\n\n if (!Array.isArray(record.sources)) {\n throw new InvalidConfigurationError(\n \"sceneIlluminationProfile.sources must be an array.\"\n );\n }\n\n const sources = record.sources.map(\n (source, index) =>\n parseSceneIlluminationSource(\n source,\n \"sceneIlluminationProfile.sources[\" +\n index +\n \"]\"\n )\n );\n const sourceIds = sources.map(\n (source) => source.sourceId\n );\n if (\n new Set(sourceIds).size !==\n sourceIds.length\n ) {\n throw new InvalidConfigurationError(\n \"sceneIlluminationProfile.sources[].sourceId must not contain duplicates.\"\n );\n }\n\n return {\n schemaVersion:\n SCENE_ILLUMINATION_PROFILE_SCHEMA_VERSION,\n profileId: requireNonEmptyString(\n record.profileId,\n \"sceneIlluminationProfile.profileId\"\n ),\n sceneId: requireNonEmptyString(\n record.sceneId,\n \"sceneIlluminationProfile.sceneId\"\n ),\n evidence: parseEvidenceList(\n record.evidence,\n \"sceneIlluminationProfile.evidence\"\n ),\n sources,\n sceneRadianceCalculated: false,\n materialResponseApplied: false,\n visibilityEvaluated: false,\n indirectTransportEvaluated: false,\n fluorescenceModeled: false,\n volumetricTransportModeled: false,\n polarizationModeled: false\n };\n}\n"]}
@@ -87,21 +87,19 @@ export interface ReducedSceneRadianceTemporalExposure {
87
87
  sensorReadoutTimingUsedAsExposureTiming: false;
88
88
  }
89
89
  /**
90
- * Creates renderer/provider-neutral scene-radiance evaluation nodes over one
91
- * authoritative local exposure window.
90
+ * Plans the times (nodes) at which a scene-radiance provider must report radiance
91
+ * during one local exposure window. Works with any renderer or provider.
92
92
  *
93
- * The plan deliberately carries capture time separately from the legacy #85
94
- * request field name. Providers/renderers must evaluate scene/source radiance
95
- * at node.captureTimeSecondsFromReference on the first-opening-boundary clock.
93
+ * Capture time is a separate field, not the older request field
94
+ * timeSecondsFromExposureStart. Providers must evaluate radiance at
95
+ * node.captureTimeSecondsFromReference, measured from the first opening boundary.
96
96
  */
97
97
  export declare function createSceneRadianceTemporalSamplingPlan(input: CreateSceneRadianceTemporalSamplingPlanInput): SceneRadianceTemporalSamplingPlan;
98
98
  /**
99
- * Reduces provider-returned wavelength-resolved scene radiance over the
100
- * authoritative local exposure window.
99
+ * Combines the provider's per-wavelength scene radiance over the local exposure window.
101
100
  *
102
- * Every sample must bind to the exact plan node/time/result identity. Numeric
103
- * uncertainty is retained per node and explicitly not combined because no
104
- * correlation/independence assumption is introduced.
101
+ * Each sample must match its planned node, time and result identity exactly.
102
+ * Uncertainty stays per node and is not combined, because no correlation or
103
+ * independence is assumed.
105
104
  */
106
105
  export declare function reduceSceneRadianceTemporalSamples(input: ReduceSceneRadianceTemporalSamplesInput): ReducedSceneRadianceTemporalExposure;
107
- //# sourceMappingURL=scene-radiance-temporal.d.ts.map