@aura3d/engine 4.0.2 → 4.0.4

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 (1045) hide show
  1. package/README.md +13 -3
  2. package/dist/animation/AnimationAction.d.ts +55 -1
  3. package/dist/animation/AnimationAction.d.ts.map +1 -1
  4. package/dist/animation/AnimationAction.js +156 -27
  5. package/dist/animation/AnimationAction.js.map +1 -1
  6. package/dist/animation/AnimationController.d.ts +8 -0
  7. package/dist/animation/AnimationController.d.ts.map +1 -1
  8. package/dist/animation/AnimationController.js.map +1 -1
  9. package/dist/animation/AnimationEvents.d.ts +1 -1
  10. package/dist/animation/AnimationEvents.d.ts.map +1 -1
  11. package/dist/animation/AnimationEvents.js +33 -14
  12. package/dist/animation/AnimationEvents.js.map +1 -1
  13. package/dist/animation/AnimationMixer.d.ts +35 -0
  14. package/dist/animation/AnimationMixer.d.ts.map +1 -1
  15. package/dist/animation/AnimationMixer.js +60 -10
  16. package/dist/animation/AnimationMixer.js.map +1 -1
  17. package/dist/animation/AnimationObjectGroup.d.ts +28 -0
  18. package/dist/animation/AnimationObjectGroup.d.ts.map +1 -0
  19. package/dist/animation/AnimationObjectGroup.js +242 -0
  20. package/dist/animation/AnimationObjectGroup.js.map +1 -0
  21. package/dist/animation/AnimationTrack.d.ts +18 -2
  22. package/dist/animation/AnimationTrack.d.ts.map +1 -1
  23. package/dist/animation/AnimationTrack.js +62 -0
  24. package/dist/animation/AnimationTrack.js.map +1 -1
  25. package/dist/animation/AnimationUtils.d.ts +56 -0
  26. package/dist/animation/AnimationUtils.d.ts.map +1 -0
  27. package/dist/animation/AnimationUtils.js +202 -0
  28. package/dist/animation/AnimationUtils.js.map +1 -0
  29. package/dist/animation/PropertyBinding.d.ts +93 -0
  30. package/dist/animation/PropertyBinding.d.ts.map +1 -0
  31. package/dist/animation/PropertyBinding.js +393 -0
  32. package/dist/animation/PropertyBinding.js.map +1 -0
  33. package/dist/animation/SceneAnimationBridge.d.ts +23 -1
  34. package/dist/animation/SceneAnimationBridge.d.ts.map +1 -1
  35. package/dist/animation/SceneAnimationBridge.js +152 -14
  36. package/dist/animation/SceneAnimationBridge.js.map +1 -1
  37. package/dist/animation/browser-index.d.ts +3 -0
  38. package/dist/animation/browser-index.d.ts.map +1 -1
  39. package/dist/animation/browser-index.js +3 -0
  40. package/dist/animation/browser-index.js.map +1 -1
  41. package/dist/animation/index.d.ts +3 -0
  42. package/dist/animation/index.d.ts.map +1 -1
  43. package/dist/animation/index.js +3 -0
  44. package/dist/animation/index.js.map +1 -1
  45. package/dist/animation/pose/blendKernels.d.ts +1 -1
  46. package/dist/animation/pose/blendKernels.d.ts.map +1 -1
  47. package/dist/animation/pose/blendKernels.js +3 -3
  48. package/dist/animation/pose/blendKernels.js.map +1 -1
  49. package/dist/assets/DataTextureLoader.d.ts +16 -0
  50. package/dist/assets/DataTextureLoader.d.ts.map +1 -0
  51. package/dist/assets/DataTextureLoader.js +29 -0
  52. package/dist/assets/DataTextureLoader.js.map +1 -0
  53. package/dist/assets/EXRLoader.d.ts +78 -0
  54. package/dist/assets/EXRLoader.d.ts.map +1 -0
  55. package/dist/assets/EXRLoader.js +1398 -0
  56. package/dist/assets/EXRLoader.js.map +1 -0
  57. package/dist/assets/FileLoader.d.ts +32 -0
  58. package/dist/assets/FileLoader.d.ts.map +1 -0
  59. package/dist/assets/FileLoader.js +79 -0
  60. package/dist/assets/FileLoader.js.map +1 -0
  61. package/dist/assets/GLTFRenderResources.d.ts +9 -0
  62. package/dist/assets/GLTFRenderResources.d.ts.map +1 -1
  63. package/dist/assets/GLTFRenderResources.js +47 -4
  64. package/dist/assets/GLTFRenderResources.js.map +1 -1
  65. package/dist/assets/GLTFSharedTextureCache.d.ts +40 -0
  66. package/dist/assets/GLTFSharedTextureCache.d.ts.map +1 -0
  67. package/dist/assets/GLTFSharedTextureCache.js +68 -0
  68. package/dist/assets/GLTFSharedTextureCache.js.map +1 -0
  69. package/dist/assets/ImageBitmapLoader.d.ts +27 -0
  70. package/dist/assets/ImageBitmapLoader.d.ts.map +1 -0
  71. package/dist/assets/ImageBitmapLoader.js +51 -0
  72. package/dist/assets/ImageBitmapLoader.js.map +1 -0
  73. package/dist/assets/ImageLoader.d.ts.map +1 -1
  74. package/dist/assets/ImageLoader.js +12 -5
  75. package/dist/assets/ImageLoader.js.map +1 -1
  76. package/dist/assets/LoadContext.d.ts +4 -1
  77. package/dist/assets/LoadContext.d.ts.map +1 -1
  78. package/dist/assets/LoadContext.js +7 -2
  79. package/dist/assets/LoadContext.js.map +1 -1
  80. package/dist/assets/LoaderFetch.d.ts +12 -0
  81. package/dist/assets/LoaderFetch.d.ts.map +1 -0
  82. package/dist/assets/LoaderFetch.js +54 -0
  83. package/dist/assets/LoaderFetch.js.map +1 -0
  84. package/dist/assets/TextureLoader.d.ts.map +1 -1
  85. package/dist/assets/TextureLoader.js +3 -1
  86. package/dist/assets/TextureLoader.js.map +1 -1
  87. package/dist/assets/asset-corpus/ProductionGLTFRenderPipeline.d.ts +6 -0
  88. package/dist/assets/asset-corpus/ProductionGLTFRenderPipeline.d.ts.map +1 -1
  89. package/dist/assets/asset-corpus/ProductionGLTFRenderPipeline.js +2 -1
  90. package/dist/assets/asset-corpus/ProductionGLTFRenderPipeline.js.map +1 -1
  91. package/dist/assets/browser-index.d.ts +9 -0
  92. package/dist/assets/browser-index.d.ts.map +1 -1
  93. package/dist/assets/browser-index.js +5 -0
  94. package/dist/assets/browser-index.js.map +1 -1
  95. package/dist/assets/gltf-runtime.d.ts +2 -0
  96. package/dist/assets/gltf-runtime.d.ts.map +1 -1
  97. package/dist/assets/gltf-runtime.js +1 -0
  98. package/dist/assets/gltf-runtime.js.map +1 -1
  99. package/dist/assets/index.d.ts +11 -0
  100. package/dist/assets/index.d.ts.map +1 -1
  101. package/dist/assets/index.js +7 -0
  102. package/dist/assets/index.js.map +1 -1
  103. package/dist/assets/loaders/TextureLoader.d.ts +27 -1
  104. package/dist/assets/loaders/TextureLoader.d.ts.map +1 -1
  105. package/dist/assets/loaders/TextureLoader.js +62 -4
  106. package/dist/assets/loaders/TextureLoader.js.map +1 -1
  107. package/dist/audio/AudioAnalyser.d.ts +42 -0
  108. package/dist/audio/AudioAnalyser.d.ts.map +1 -0
  109. package/dist/audio/AudioAnalyser.js +75 -0
  110. package/dist/audio/AudioAnalyser.js.map +1 -0
  111. package/dist/audio/AudioContextManager.d.ts +6 -0
  112. package/dist/audio/AudioContextManager.d.ts.map +1 -1
  113. package/dist/audio/AudioContextManager.js.map +1 -1
  114. package/dist/audio/AudioListener.d.ts +27 -0
  115. package/dist/audio/AudioListener.d.ts.map +1 -1
  116. package/dist/audio/AudioListener.js +34 -0
  117. package/dist/audio/AudioListener.js.map +1 -1
  118. package/dist/audio/PositionalEmitter.d.ts +58 -2
  119. package/dist/audio/PositionalEmitter.d.ts.map +1 -1
  120. package/dist/audio/PositionalEmitter.js +111 -12
  121. package/dist/audio/PositionalEmitter.js.map +1 -1
  122. package/dist/audio/SpatialAudio.d.ts +24 -0
  123. package/dist/audio/SpatialAudio.d.ts.map +1 -1
  124. package/dist/audio/SpatialAudio.js +31 -2
  125. package/dist/audio/SpatialAudio.js.map +1 -1
  126. package/dist/audio/game-sound/SpatialVoice.d.ts +2 -2
  127. package/dist/audio/game-sound/SpatialVoice.d.ts.map +1 -1
  128. package/dist/audio/game-sound/SpatialVoice.js +1 -1
  129. package/dist/audio/index.d.ts +5 -3
  130. package/dist/audio/index.d.ts.map +1 -1
  131. package/dist/audio/index.js +2 -1
  132. package/dist/audio/index.js.map +1 -1
  133. package/dist/aura3d-cli/codemods/camera-cast.d.ts +34 -0
  134. package/dist/aura3d-cli/codemods/camera-cast.d.ts.map +1 -0
  135. package/dist/aura3d-cli/codemods/camera-cast.js +259 -0
  136. package/dist/aura3d-cli/codemods/camera-cast.js.map +1 -0
  137. package/dist/aura3d-cli/codemods/core-v2.d.ts +55 -0
  138. package/dist/aura3d-cli/codemods/core-v2.d.ts.map +1 -0
  139. package/dist/aura3d-cli/codemods/core-v2.js +371 -0
  140. package/dist/aura3d-cli/codemods/core-v2.js.map +1 -0
  141. package/dist/aura3d-cli/codemods/engine-entry-imports.js +3 -3
  142. package/dist/aura3d-cli/codemods/engine-entry-imports.js.map +1 -1
  143. package/dist/aura3d-cli/codemods/post-v2.d.ts +88 -0
  144. package/dist/aura3d-cli/codemods/post-v2.d.ts.map +1 -0
  145. package/dist/aura3d-cli/codemods/post-v2.js +379 -0
  146. package/dist/aura3d-cli/codemods/post-v2.js.map +1 -0
  147. package/dist/aura3d-cli/commands/prd01/index.js +1 -1
  148. package/dist/aura3d-cli/commands/prd01/index.js.map +1 -1
  149. package/dist/aura3d-cli/commands/prd02/environmentsBake.d.ts.map +1 -1
  150. package/dist/aura3d-cli/commands/prd02/environmentsBake.js +1 -1
  151. package/dist/aura3d-cli/commands/prd02/environmentsBake.js.map +1 -1
  152. package/dist/aura3d-cli/commands/prd03/index.d.ts +4 -2
  153. package/dist/aura3d-cli/commands/prd03/index.d.ts.map +1 -1
  154. package/dist/aura3d-cli/commands/prd03/index.js +4 -2
  155. package/dist/aura3d-cli/commands/prd03/index.js.map +1 -1
  156. package/dist/aura3d-cli/commands/prd08/feelLint.js +1 -1
  157. package/dist/aura3d-cli/commands/prd08/feelLint.js.map +1 -1
  158. package/dist/aura3d-cli/commands/prd08/index.js +1 -1
  159. package/dist/aura3d-cli/commands/prd08/index.js.map +1 -1
  160. package/dist/aura3d-cli/commands/prd10/index.js +8 -1
  161. package/dist/aura3d-cli/commands/prd10/index.js.map +1 -1
  162. package/dist/aura3d-cli/lint/feelSourceScan.d.ts +20 -0
  163. package/dist/aura3d-cli/lint/feelSourceScan.d.ts.map +1 -0
  164. package/dist/aura3d-cli/lint/feelSourceScan.js +91 -0
  165. package/dist/aura3d-cli/lint/feelSourceScan.js.map +1 -0
  166. package/dist/aura3d-cli/look/lint-static.js +1 -1
  167. package/dist/aura3d-cli/look/lint-static.js.map +1 -1
  168. package/dist/aura3d-cli/migrate-three/CompatibilityWarnings.d.ts.map +1 -1
  169. package/dist/aura3d-cli/migrate-three/CompatibilityWarnings.js +57 -12
  170. package/dist/aura3d-cli/migrate-three/CompatibilityWarnings.js.map +1 -1
  171. package/dist/aura3d-cli/migrate-three/ImportMap.d.ts +36 -12
  172. package/dist/aura3d-cli/migrate-three/ImportMap.d.ts.map +1 -1
  173. package/dist/aura3d-cli/migrate-three/ImportMap.js +120 -22
  174. package/dist/aura3d-cli/migrate-three/ImportMap.js.map +1 -1
  175. package/dist/aura3d-cli/migrate-three/ThreeToA3DAdapter.d.ts.map +1 -1
  176. package/dist/aura3d-cli/migrate-three/ThreeToA3DAdapter.js +3 -1
  177. package/dist/aura3d-cli/migrate-three/ThreeToA3DAdapter.js.map +1 -1
  178. package/dist/aura3d-cli/migrate-three/emit.d.ts +14 -1
  179. package/dist/aura3d-cli/migrate-three/emit.d.ts.map +1 -1
  180. package/dist/aura3d-cli/migrate-three/emit.js +670 -23
  181. package/dist/aura3d-cli/migrate-three/emit.js.map +1 -1
  182. package/dist/aura3d-cli/migrate-three/mappings.d.ts +24 -2
  183. package/dist/aura3d-cli/migrate-three/mappings.d.ts.map +1 -1
  184. package/dist/aura3d-cli/migrate-three/mappings.js +259 -12
  185. package/dist/aura3d-cli/migrate-three/mappings.js.map +1 -1
  186. package/dist/aura3d-cli/migrate-three/parse.d.ts +2 -0
  187. package/dist/aura3d-cli/migrate-three/parse.d.ts.map +1 -1
  188. package/dist/aura3d-cli/migrate-three/parse.js +134 -19
  189. package/dist/aura3d-cli/migrate-three/parse.js.map +1 -1
  190. package/dist/aura3d-cli/migrate-three/report.d.ts +1 -0
  191. package/dist/aura3d-cli/migrate-three/report.d.ts.map +1 -1
  192. package/dist/aura3d-cli/migrate-three/report.js +1 -1
  193. package/dist/aura3d-cli/migrate-three/report.js.map +1 -1
  194. package/dist/create-aura3d/index.js +1 -1
  195. package/dist/create-aura3d/showcase-spec-artifacts.d.ts +1 -1
  196. package/dist/engine/agent-api/AnimationMixerBuilders.d.ts +4 -0
  197. package/dist/engine/agent-api/AnimationMixerBuilders.d.ts.map +1 -1
  198. package/dist/engine/agent-api/AnimationMixerBuilders.js +17 -7
  199. package/dist/engine/agent-api/AnimationMixerBuilders.js.map +1 -1
  200. package/dist/engine/agent-api/Clock.d.ts +37 -0
  201. package/dist/engine/agent-api/Clock.d.ts.map +1 -0
  202. package/dist/engine/agent-api/Clock.js +67 -0
  203. package/dist/engine/agent-api/Clock.js.map +1 -0
  204. package/dist/engine/agent-api/RootGeometry.d.ts +124 -4
  205. package/dist/engine/agent-api/RootGeometry.d.ts.map +1 -1
  206. package/dist/engine/agent-api/RootGeometry.js +426 -19
  207. package/dist/engine/agent-api/RootGeometry.js.map +1 -1
  208. package/dist/engine/agent-api/RuntimeNodeHandle.d.ts +14 -0
  209. package/dist/engine/agent-api/RuntimeNodeHandle.d.ts.map +1 -1
  210. package/dist/engine/agent-api/RuntimeNodeHandle.js +22 -0
  211. package/dist/engine/agent-api/RuntimeNodeHandle.js.map +1 -1
  212. package/dist/engine/agent-api/SceneQueries.d.ts +67 -1
  213. package/dist/engine/agent-api/SceneQueries.d.ts.map +1 -1
  214. package/dist/engine/agent-api/SceneQueries.js +211 -5
  215. package/dist/engine/agent-api/SceneQueries.js.map +1 -1
  216. package/dist/engine/agent-api/app/actorAnimationHandle.d.ts +44 -0
  217. package/dist/engine/agent-api/app/actorAnimationHandle.d.ts.map +1 -1
  218. package/dist/engine/agent-api/app/actorAnimationHandle.js +98 -0
  219. package/dist/engine/agent-api/app/actorAnimationHandle.js.map +1 -1
  220. package/dist/engine/agent-api/app/createAuraApp.d.ts.map +1 -1
  221. package/dist/engine/agent-api/app/createAuraApp.js +93 -0
  222. package/dist/engine/agent-api/app/createAuraApp.js.map +1 -1
  223. package/dist/engine/agent-api/app/frameLoop.d.ts.map +1 -1
  224. package/dist/engine/agent-api/app/frameLoop.js +4 -0
  225. package/dist/engine/agent-api/app/frameLoop.js.map +1 -1
  226. package/dist/engine/agent-api/app/routeState.d.ts +1 -0
  227. package/dist/engine/agent-api/app/routeState.d.ts.map +1 -1
  228. package/dist/engine/agent-api/app/routeState.js +14 -0
  229. package/dist/engine/agent-api/app/routeState.js.map +1 -1
  230. package/dist/engine/agent-api/app/runtimeNodes.d.ts +7 -0
  231. package/dist/engine/agent-api/app/runtimeNodes.d.ts.map +1 -1
  232. package/dist/engine/agent-api/app/runtimeNodes.js +340 -12
  233. package/dist/engine/agent-api/app/runtimeNodes.js.map +1 -1
  234. package/dist/engine/agent-api/assetEvents.d.ts +25 -0
  235. package/dist/engine/agent-api/assetEvents.d.ts.map +1 -0
  236. package/dist/engine/agent-api/assetEvents.js +36 -0
  237. package/dist/engine/agent-api/assetEvents.js.map +1 -0
  238. package/dist/engine/agent-api/camera/Spline.d.ts +10 -4
  239. package/dist/engine/agent-api/camera/Spline.d.ts.map +1 -1
  240. package/dist/engine/agent-api/camera/Spline.js +28 -101
  241. package/dist/engine/agent-api/camera/Spline.js.map +1 -1
  242. package/dist/engine/agent-api/characters/clone.d.ts +55 -0
  243. package/dist/engine/agent-api/characters/clone.d.ts.map +1 -0
  244. package/dist/engine/agent-api/characters/clone.js +99 -0
  245. package/dist/engine/agent-api/characters/clone.js.map +1 -0
  246. package/dist/engine/agent-api/color.d.ts.map +1 -1
  247. package/dist/engine/agent-api/color.js +4 -18
  248. package/dist/engine/agent-api/color.js.map +1 -1
  249. package/dist/engine/agent-api/compiler/actors.d.ts.map +1 -1
  250. package/dist/engine/agent-api/compiler/actors.js +19 -7
  251. package/dist/engine/agent-api/compiler/actors.js.map +1 -1
  252. package/dist/engine/agent-api/compiler/animation.d.ts.map +1 -1
  253. package/dist/engine/agent-api/compiler/animation.js +8 -1
  254. package/dist/engine/agent-api/compiler/animation.js.map +1 -1
  255. package/dist/engine/agent-api/compiler/backgroundImage.d.ts +24 -0
  256. package/dist/engine/agent-api/compiler/backgroundImage.d.ts.map +1 -0
  257. package/dist/engine/agent-api/compiler/backgroundImage.js +134 -0
  258. package/dist/engine/agent-api/compiler/backgroundImage.js.map +1 -0
  259. package/dist/engine/agent-api/compiler/compileScene.d.ts.map +1 -1
  260. package/dist/engine/agent-api/compiler/compileScene.js +7 -2
  261. package/dist/engine/agent-api/compiler/compileScene.js.map +1 -1
  262. package/dist/engine/agent-api/compiler/customMaterial.d.ts +80 -0
  263. package/dist/engine/agent-api/compiler/customMaterial.d.ts.map +1 -0
  264. package/dist/engine/agent-api/compiler/customMaterial.js +628 -0
  265. package/dist/engine/agent-api/compiler/customMaterial.js.map +1 -0
  266. package/dist/engine/agent-api/compiler/environment.d.ts +1 -1
  267. package/dist/engine/agent-api/compiler/environment.d.ts.map +1 -1
  268. package/dist/engine/agent-api/compiler/environment.js +10 -5
  269. package/dist/engine/agent-api/compiler/environment.js.map +1 -1
  270. package/dist/engine/agent-api/compiler/environmentSourcesState.d.ts +15 -0
  271. package/dist/engine/agent-api/compiler/environmentSourcesState.d.ts.map +1 -0
  272. package/dist/engine/agent-api/compiler/environmentSourcesState.js +13 -0
  273. package/dist/engine/agent-api/compiler/environmentSourcesState.js.map +1 -0
  274. package/dist/engine/agent-api/compiler/errors.d.ts +1 -1
  275. package/dist/engine/agent-api/compiler/errors.d.ts.map +1 -1
  276. package/dist/engine/agent-api/compiler/errors.js.map +1 -1
  277. package/dist/engine/agent-api/compiler/geometry.d.ts +20 -5
  278. package/dist/engine/agent-api/compiler/geometry.d.ts.map +1 -1
  279. package/dist/engine/agent-api/compiler/geometry.js +34 -8
  280. package/dist/engine/agent-api/compiler/geometry.js.map +1 -1
  281. package/dist/engine/agent-api/compiler/handlers.d.ts.map +1 -1
  282. package/dist/engine/agent-api/compiler/handlers.js +35 -1
  283. package/dist/engine/agent-api/compiler/handlers.js.map +1 -1
  284. package/dist/engine/agent-api/compiler/lensFlare.d.ts +21 -0
  285. package/dist/engine/agent-api/compiler/lensFlare.d.ts.map +1 -0
  286. package/dist/engine/agent-api/compiler/lensFlare.js +173 -0
  287. package/dist/engine/agent-api/compiler/lensFlare.js.map +1 -0
  288. package/dist/engine/agent-api/compiler/lights.d.ts.map +1 -1
  289. package/dist/engine/agent-api/compiler/lights.js +23 -0
  290. package/dist/engine/agent-api/compiler/lights.js.map +1 -1
  291. package/dist/engine/agent-api/compiler/lines.d.ts +23 -0
  292. package/dist/engine/agent-api/compiler/lines.d.ts.map +1 -0
  293. package/dist/engine/agent-api/compiler/lines.js +520 -0
  294. package/dist/engine/agent-api/compiler/lines.js.map +1 -0
  295. package/dist/engine/agent-api/compiler/modelMaterials.d.ts.map +1 -1
  296. package/dist/engine/agent-api/compiler/modelMaterials.js +11 -0
  297. package/dist/engine/agent-api/compiler/modelMaterials.js.map +1 -1
  298. package/dist/engine/agent-api/compiler/observations.d.ts +7 -0
  299. package/dist/engine/agent-api/compiler/observations.d.ts.map +1 -1
  300. package/dist/engine/agent-api/compiler/observations.js +33 -1
  301. package/dist/engine/agent-api/compiler/observations.js.map +1 -1
  302. package/dist/engine/agent-api/compiler/paritySurfaces.d.ts +37 -0
  303. package/dist/engine/agent-api/compiler/paritySurfaces.d.ts.map +1 -0
  304. package/dist/engine/agent-api/compiler/paritySurfaces.js +310 -0
  305. package/dist/engine/agent-api/compiler/paritySurfaces.js.map +1 -0
  306. package/dist/engine/agent-api/compiler/postprocess.d.ts.map +1 -1
  307. package/dist/engine/agent-api/compiler/postprocess.js +6 -3
  308. package/dist/engine/agent-api/compiler/postprocess.js.map +1 -1
  309. package/dist/engine/agent-api/compiler/primitives.d.ts +22 -3
  310. package/dist/engine/agent-api/compiler/primitives.d.ts.map +1 -1
  311. package/dist/engine/agent-api/compiler/primitives.js +320 -57
  312. package/dist/engine/agent-api/compiler/primitives.js.map +1 -1
  313. package/dist/engine/agent-api/compiler/renderInput.d.ts.map +1 -1
  314. package/dist/engine/agent-api/compiler/renderInput.js +42 -5
  315. package/dist/engine/agent-api/compiler/renderInput.js.map +1 -1
  316. package/dist/engine/agent-api/compiler/renderer.d.ts.map +1 -1
  317. package/dist/engine/agent-api/compiler/renderer.js +44 -6
  318. package/dist/engine/agent-api/compiler/renderer.js.map +1 -1
  319. package/dist/engine/agent-api/compiler/textures.d.ts +64 -2
  320. package/dist/engine/agent-api/compiler/textures.d.ts.map +1 -1
  321. package/dist/engine/agent-api/compiler/textures.js +257 -21
  322. package/dist/engine/agent-api/compiler/textures.js.map +1 -1
  323. package/dist/engine/agent-api/devtools/routeHealth.d.ts +12 -1
  324. package/dist/engine/agent-api/devtools/routeHealth.d.ts.map +1 -1
  325. package/dist/engine/agent-api/devtools/routeHealth.js +3 -3
  326. package/dist/engine/agent-api/devtools/routeHealth.js.map +1 -1
  327. package/dist/engine/agent-api/index.d.ts +33 -5
  328. package/dist/engine/agent-api/index.d.ts.map +1 -1
  329. package/dist/engine/agent-api/index.js +19 -3
  330. package/dist/engine/agent-api/index.js.map +1 -1
  331. package/dist/engine/agent-api/lodMarkers.d.ts +23 -0
  332. package/dist/engine/agent-api/lodMarkers.d.ts.map +1 -0
  333. package/dist/engine/agent-api/lodMarkers.js +33 -0
  334. package/dist/engine/agent-api/lodMarkers.js.map +1 -0
  335. package/dist/engine/agent-api/nodes/batched.d.ts +96 -0
  336. package/dist/engine/agent-api/nodes/batched.d.ts.map +1 -0
  337. package/dist/engine/agent-api/nodes/batched.js +456 -0
  338. package/dist/engine/agent-api/nodes/batched.js.map +1 -0
  339. package/dist/engine/agent-api/nodes/batchedState.d.ts +137 -0
  340. package/dist/engine/agent-api/nodes/batchedState.d.ts.map +1 -0
  341. package/dist/engine/agent-api/nodes/batchedState.js +435 -0
  342. package/dist/engine/agent-api/nodes/batchedState.js.map +1 -0
  343. package/dist/engine/agent-api/nodes/builder.d.ts.map +1 -1
  344. package/dist/engine/agent-api/nodes/builder.js +0 -3
  345. package/dist/engine/agent-api/nodes/builder.js.map +1 -1
  346. package/dist/engine/agent-api/nodes/camera.d.ts.map +1 -1
  347. package/dist/engine/agent-api/nodes/camera.js +2 -1
  348. package/dist/engine/agent-api/nodes/camera.js.map +1 -1
  349. package/dist/engine/agent-api/nodes/cameras.d.ts +114 -0
  350. package/dist/engine/agent-api/nodes/cameras.d.ts.map +1 -0
  351. package/dist/engine/agent-api/nodes/cameras.js +107 -0
  352. package/dist/engine/agent-api/nodes/cameras.js.map +1 -0
  353. package/dist/engine/agent-api/nodes/compute.d.ts +48 -0
  354. package/dist/engine/agent-api/nodes/compute.d.ts.map +1 -0
  355. package/dist/engine/agent-api/nodes/compute.js +73 -0
  356. package/dist/engine/agent-api/nodes/compute.js.map +1 -0
  357. package/dist/engine/agent-api/nodes/effects.composite.d.ts +3 -2
  358. package/dist/engine/agent-api/nodes/effects.composite.d.ts.map +1 -1
  359. package/dist/engine/agent-api/nodes/effects.post.d.ts +35 -0
  360. package/dist/engine/agent-api/nodes/effects.post.d.ts.map +1 -1
  361. package/dist/engine/agent-api/nodes/effects.post.js +69 -0
  362. package/dist/engine/agent-api/nodes/effects.post.js.map +1 -1
  363. package/dist/engine/agent-api/nodes/environments.composite.d.ts.map +1 -1
  364. package/dist/engine/agent-api/nodes/environments.d.ts +1 -1
  365. package/dist/engine/agent-api/nodes/environments.js +1 -1
  366. package/dist/engine/agent-api/nodes/environments.js.map +1 -1
  367. package/dist/engine/agent-api/nodes/game/instanceTransforms.d.ts +19 -6
  368. package/dist/engine/agent-api/nodes/game/instanceTransforms.d.ts.map +1 -1
  369. package/dist/engine/agent-api/nodes/game/instanceTransforms.js +31 -9
  370. package/dist/engine/agent-api/nodes/game/instanceTransforms.js.map +1 -1
  371. package/dist/engine/agent-api/nodes/geometry.d.ts +28 -1
  372. package/dist/engine/agent-api/nodes/geometry.d.ts.map +1 -1
  373. package/dist/engine/agent-api/nodes/geometry.js +62 -2
  374. package/dist/engine/agent-api/nodes/geometry.js.map +1 -1
  375. package/dist/engine/agent-api/nodes/groups.d.ts +8 -1
  376. package/dist/engine/agent-api/nodes/groups.d.ts.map +1 -1
  377. package/dist/engine/agent-api/nodes/groups.js +28 -0
  378. package/dist/engine/agent-api/nodes/groups.js.map +1 -1
  379. package/dist/engine/agent-api/nodes/helpers.d.ts +100 -0
  380. package/dist/engine/agent-api/nodes/helpers.d.ts.map +1 -0
  381. package/dist/engine/agent-api/nodes/helpers.js +254 -0
  382. package/dist/engine/agent-api/nodes/helpers.js.map +1 -0
  383. package/dist/engine/agent-api/nodes/instancedMesh.d.ts +87 -0
  384. package/dist/engine/agent-api/nodes/instancedMesh.d.ts.map +1 -0
  385. package/dist/engine/agent-api/nodes/instancedMesh.js +156 -0
  386. package/dist/engine/agent-api/nodes/instancedMesh.js.map +1 -0
  387. package/dist/engine/agent-api/nodes/instances.d.ts +49 -1
  388. package/dist/engine/agent-api/nodes/instances.d.ts.map +1 -1
  389. package/dist/engine/agent-api/nodes/instances.js +21 -0
  390. package/dist/engine/agent-api/nodes/instances.js.map +1 -1
  391. package/dist/engine/agent-api/nodes/lensFlare.d.ts +126 -0
  392. package/dist/engine/agent-api/nodes/lensFlare.d.ts.map +1 -0
  393. package/dist/engine/agent-api/nodes/lensFlare.js +184 -0
  394. package/dist/engine/agent-api/nodes/lensFlare.js.map +1 -0
  395. package/dist/engine/agent-api/nodes/lights.d.ts +34 -0
  396. package/dist/engine/agent-api/nodes/lights.d.ts.map +1 -1
  397. package/dist/engine/agent-api/nodes/lights.js +27 -0
  398. package/dist/engine/agent-api/nodes/lights.js.map +1 -1
  399. package/dist/engine/agent-api/nodes/lines.d.ts +69 -0
  400. package/dist/engine/agent-api/nodes/lines.d.ts.map +1 -0
  401. package/dist/engine/agent-api/nodes/lines.js +136 -0
  402. package/dist/engine/agent-api/nodes/lines.js.map +1 -0
  403. package/dist/engine/agent-api/nodes/material.d.ts +9 -1
  404. package/dist/engine/agent-api/nodes/material.d.ts.map +1 -1
  405. package/dist/engine/agent-api/nodes/material.js +12 -0
  406. package/dist/engine/agent-api/nodes/material.js.map +1 -1
  407. package/dist/engine/agent-api/nodes/overrideMaterial.d.ts +18 -0
  408. package/dist/engine/agent-api/nodes/overrideMaterial.d.ts.map +1 -0
  409. package/dist/engine/agent-api/nodes/overrideMaterial.js +43 -0
  410. package/dist/engine/agent-api/nodes/overrideMaterial.js.map +1 -0
  411. package/dist/engine/agent-api/nodes/points.d.ts +29 -0
  412. package/dist/engine/agent-api/nodes/points.d.ts.map +1 -0
  413. package/dist/engine/agent-api/nodes/points.js +34 -0
  414. package/dist/engine/agent-api/nodes/points.js.map +1 -0
  415. package/dist/engine/agent-api/nodes/primitives.d.ts +11 -0
  416. package/dist/engine/agent-api/nodes/primitives.d.ts.map +1 -1
  417. package/dist/engine/agent-api/nodes/primitives.js +55 -1
  418. package/dist/engine/agent-api/nodes/primitives.js.map +1 -1
  419. package/dist/engine/agent-api/nodes/prompt/promptPlanV2.d.ts.map +1 -1
  420. package/dist/engine/agent-api/nodes/prompt/promptPlanV2.js +6 -2
  421. package/dist/engine/agent-api/nodes/prompt/promptPlanV2.js.map +1 -1
  422. package/dist/engine/agent-api/nodes/prompt/promptRecipes.d.ts.map +1 -1
  423. package/dist/engine/agent-api/nodes/prompt/promptRecipes.js +7 -1
  424. package/dist/engine/agent-api/nodes/prompt/promptRecipes.js.map +1 -1
  425. package/dist/engine/agent-api/nodes/scene.d.ts +22 -3
  426. package/dist/engine/agent-api/nodes/scene.d.ts.map +1 -1
  427. package/dist/engine/agent-api/nodes/scene.js +41 -2
  428. package/dist/engine/agent-api/nodes/scene.js.map +1 -1
  429. package/dist/engine/agent-api/nodes/sprites.d.ts +29 -0
  430. package/dist/engine/agent-api/nodes/sprites.d.ts.map +1 -0
  431. package/dist/engine/agent-api/nodes/sprites.js +43 -0
  432. package/dist/engine/agent-api/nodes/sprites.js.map +1 -0
  433. package/dist/engine/agent-api/nodes/surfaces.d.ts +48 -0
  434. package/dist/engine/agent-api/nodes/surfaces.d.ts.map +1 -0
  435. package/dist/engine/agent-api/nodes/surfaces.js +32 -0
  436. package/dist/engine/agent-api/nodes/surfaces.js.map +1 -0
  437. package/dist/engine/agent-api/nodes/texture.d.ts +114 -0
  438. package/dist/engine/agent-api/nodes/texture.d.ts.map +1 -0
  439. package/dist/engine/agent-api/nodes/texture.js +590 -0
  440. package/dist/engine/agent-api/nodes/texture.js.map +1 -0
  441. package/dist/engine/agent-api/nodes/types/runtime.d.ts +91 -4
  442. package/dist/engine/agent-api/nodes/types/runtime.d.ts.map +1 -1
  443. package/dist/engine/agent-api/nodes/types.d.ts +387 -4
  444. package/dist/engine/agent-api/nodes/types.d.ts.map +1 -1
  445. package/dist/engine/agent-api/postBridge.d.ts +7 -0
  446. package/dist/engine/agent-api/postBridge.d.ts.map +1 -1
  447. package/dist/engine/agent-api/postBridge.js +63 -5
  448. package/dist/engine/agent-api/postBridge.js.map +1 -1
  449. package/dist/engine/agent-api/public/devtools.d.ts +1 -0
  450. package/dist/engine/agent-api/public/devtools.d.ts.map +1 -1
  451. package/dist/engine/agent-api/public/devtools.js.map +1 -1
  452. package/dist/engine/agent-api/publishedUnion.d.ts +137 -1
  453. package/dist/engine/agent-api/publishedUnion.d.ts.map +1 -1
  454. package/dist/engine/agent-api/publishedUnion.js +109 -0
  455. package/dist/engine/agent-api/publishedUnion.js.map +1 -1
  456. package/dist/engine/agent-api/runtimeEvidence.d.ts +10 -0
  457. package/dist/engine/agent-api/runtimeEvidence.d.ts.map +1 -1
  458. package/dist/engine/agent-api/runtimeEvidence.js +18 -1
  459. package/dist/engine/agent-api/runtimeEvidence.js.map +1 -1
  460. package/dist/engine/agent-api/sceneMath.d.ts +2 -2
  461. package/dist/engine/agent-api/sceneMath.d.ts.map +1 -1
  462. package/dist/engine/agent-api/sceneMath.js +8 -5
  463. package/dist/engine/agent-api/sceneMath.js.map +1 -1
  464. package/dist/engine/agent-api/sceneMath.lookLowering.d.ts +14 -0
  465. package/dist/engine/agent-api/sceneMath.lookLowering.d.ts.map +1 -0
  466. package/dist/engine/agent-api/sceneMath.lookLowering.js +8 -0
  467. package/dist/engine/agent-api/sceneMath.lookLowering.js.map +1 -0
  468. package/dist/engine/agent-api/stereoMath.d.ts +45 -0
  469. package/dist/engine/agent-api/stereoMath.d.ts.map +1 -0
  470. package/dist/engine/agent-api/stereoMath.js +78 -0
  471. package/dist/engine/agent-api/stereoMath.js.map +1 -0
  472. package/dist/engine/agent-api/vfx/atmosphere-api.d.ts +13 -0
  473. package/dist/engine/agent-api/vfx/atmosphere-api.d.ts.map +1 -1
  474. package/dist/engine/agent-api/vfx/atmosphere-api.js +19 -0
  475. package/dist/engine/agent-api/vfx/atmosphere-api.js.map +1 -1
  476. package/dist/engine/agent-api/world/kits.d.ts +1 -1
  477. package/dist/engine/agent-api/world/placement.js.map +1 -1
  478. package/dist/engine/agent-api/world/spline.d.ts +7 -22
  479. package/dist/engine/agent-api/world/spline.d.ts.map +1 -1
  480. package/dist/engine/agent-api/world/spline.js +30 -24
  481. package/dist/engine/agent-api/world/spline.js.map +1 -1
  482. package/dist/engine/agent-api/xr/index.d.ts +18 -0
  483. package/dist/engine/agent-api/xr/index.d.ts.map +1 -0
  484. package/dist/engine/agent-api/xr/index.js +15 -0
  485. package/dist/engine/agent-api/xr/index.js.map +1 -0
  486. package/dist/engine/agent-api/xr/types.d.ts +85 -0
  487. package/dist/engine/agent-api/xr/types.d.ts.map +1 -0
  488. package/dist/engine/agent-api/xr/types.js +2 -0
  489. package/dist/engine/agent-api/xr/types.js.map +1 -0
  490. package/dist/engine/agent-api/xr/xrButton.d.ts +50 -0
  491. package/dist/engine/agent-api/xr/xrButton.d.ts.map +1 -0
  492. package/dist/engine/agent-api/xr/xrButton.js +93 -0
  493. package/dist/engine/agent-api/xr/xrButton.js.map +1 -0
  494. package/dist/engine/agent-api/xr/xrRuntime.d.ts +40 -0
  495. package/dist/engine/agent-api/xr/xrRuntime.d.ts.map +1 -0
  496. package/dist/engine/agent-api/xr/xrRuntime.js +236 -0
  497. package/dist/engine/agent-api/xr/xrRuntime.js.map +1 -0
  498. package/dist/engine/agent-api/xr/xrViewOverride.d.ts +35 -0
  499. package/dist/engine/agent-api/xr/xrViewOverride.d.ts.map +1 -0
  500. package/dist/engine/agent-api/xr/xrViewOverride.js +99 -0
  501. package/dist/engine/agent-api/xr/xrViewOverride.js.map +1 -0
  502. package/dist/engine/contracts/animation.d.ts +18 -0
  503. package/dist/engine/contracts/animation.d.ts.map +1 -1
  504. package/dist/engine/contracts/animation.js +4 -1
  505. package/dist/engine/contracts/animation.js.map +1 -1
  506. package/dist/engine/contracts/compiler.d.ts +5 -0
  507. package/dist/engine/contracts/compiler.d.ts.map +1 -1
  508. package/dist/engine/contracts/compiler.js.map +1 -1
  509. package/dist/engine/contracts/flags.d.ts.map +1 -1
  510. package/dist/engine/contracts/flags.js +19 -2
  511. package/dist/engine/contracts/flags.js.map +1 -1
  512. package/dist/engine/contracts/post.d.ts +12 -0
  513. package/dist/engine/contracts/post.d.ts.map +1 -1
  514. package/dist/engine/contracts/post.js.map +1 -1
  515. package/dist/engine/index.d.ts +1 -0
  516. package/dist/engine/index.d.ts.map +1 -1
  517. package/dist/engine/index.js +5 -0
  518. package/dist/engine/index.js.map +1 -1
  519. package/dist/engine/lanes/prd02.d.ts +1 -0
  520. package/dist/engine/lanes/prd02.d.ts.map +1 -1
  521. package/dist/engine/lanes/prd02.js +15 -0
  522. package/dist/engine/lanes/prd02.js.map +1 -1
  523. package/dist/engine/lanes/prd06.d.ts.map +1 -1
  524. package/dist/engine/lanes/prd06.js +21 -2
  525. package/dist/engine/lanes/prd06.js.map +1 -1
  526. package/dist/engine/lanes/prd13.d.ts.map +1 -1
  527. package/dist/engine/lanes/prd13.js +4 -1
  528. package/dist/engine/lanes/prd13.js.map +1 -1
  529. package/dist/engine/production-runtime/TypedGLBActor.d.ts +8 -1
  530. package/dist/engine/production-runtime/TypedGLBActor.d.ts.map +1 -1
  531. package/dist/engine/production-runtime/TypedGLBActor.js +4 -3
  532. package/dist/engine/production-runtime/TypedGLBActor.js.map +1 -1
  533. package/dist/engine/production-runtime/actor/TypedGLBActorAnimation.d.ts +5 -1
  534. package/dist/engine/production-runtime/actor/TypedGLBActorAnimation.d.ts.map +1 -1
  535. package/dist/engine/production-runtime/actor/TypedGLBActorAnimation.js +10 -6
  536. package/dist/engine/production-runtime/actor/TypedGLBActorAnimation.js.map +1 -1
  537. package/dist/engine/production-runtime/effects/EffectNodeLowering.d.ts +19 -1
  538. package/dist/engine/production-runtime/effects/EffectNodeLowering.d.ts.map +1 -1
  539. package/dist/engine/production-runtime/effects/EffectNodeLowering.js +39 -25
  540. package/dist/engine/production-runtime/effects/EffectNodeLowering.js.map +1 -1
  541. package/dist/engine/production-runtime/effects/ProductionEffectSystem.d.ts +5 -0
  542. package/dist/engine/production-runtime/effects/ProductionEffectSystem.d.ts.map +1 -1
  543. package/dist/engine/production-runtime/effects/ProductionEffectSystem.js +79 -8
  544. package/dist/engine/production-runtime/effects/ProductionEffectSystem.js.map +1 -1
  545. package/dist/engine/public/index.d.ts +6 -2
  546. package/dist/engine/public/index.d.ts.map +1 -1
  547. package/dist/engine/public/index.js +5 -1
  548. package/dist/engine/public/index.js.map +1 -1
  549. package/dist/engine/public/renderTarget.d.ts +14 -0
  550. package/dist/engine/public/renderTarget.d.ts.map +1 -0
  551. package/dist/engine/public/renderTarget.js +13 -0
  552. package/dist/engine/public/renderTarget.js.map +1 -0
  553. package/dist/engine/public/renderer.d.ts +4 -0
  554. package/dist/engine/public/renderer.d.ts.map +1 -1
  555. package/dist/engine/public/renderer.js +8 -0
  556. package/dist/engine/public/renderer.js.map +1 -1
  557. package/dist/input/WebXRSessionController.d.ts +43 -0
  558. package/dist/input/WebXRSessionController.d.ts.map +1 -1
  559. package/dist/input/WebXRSessionController.js +8 -0
  560. package/dist/input/WebXRSessionController.js.map +1 -1
  561. package/dist/input/index.d.ts +1 -15
  562. package/dist/input/index.d.ts.map +1 -1
  563. package/dist/input/index.js +0 -7
  564. package/dist/input/index.js.map +1 -1
  565. package/dist/math/Box3.d.ts +50 -0
  566. package/dist/math/Box3.d.ts.map +1 -1
  567. package/dist/math/Box3.js +177 -6
  568. package/dist/math/Box3.js.map +1 -1
  569. package/dist/math/Capsule.d.ts +25 -0
  570. package/dist/math/Capsule.d.ts.map +1 -0
  571. package/dist/math/Capsule.js +54 -0
  572. package/dist/math/Capsule.js.map +1 -0
  573. package/dist/math/Color.d.ts +27 -0
  574. package/dist/math/Color.d.ts.map +1 -1
  575. package/dist/math/Color.js +87 -0
  576. package/dist/math/Color.js.map +1 -1
  577. package/dist/math/ConvexHull.d.ts +100 -0
  578. package/dist/math/ConvexHull.d.ts.map +1 -0
  579. package/dist/math/ConvexHull.js +578 -0
  580. package/dist/math/ConvexHull.js.map +1 -0
  581. package/dist/math/Curves.d.ts +59 -18
  582. package/dist/math/Curves.d.ts.map +1 -1
  583. package/dist/math/Curves.js +15 -73
  584. package/dist/math/Curves.js.map +1 -1
  585. package/dist/math/Cylindrical.d.ts +19 -0
  586. package/dist/math/Cylindrical.d.ts.map +1 -0
  587. package/dist/math/Cylindrical.js +40 -0
  588. package/dist/math/Cylindrical.js.map +1 -0
  589. package/dist/math/Euler.d.ts +24 -0
  590. package/dist/math/Euler.d.ts.map +1 -1
  591. package/dist/math/Euler.js +126 -2
  592. package/dist/math/Euler.js.map +1 -1
  593. package/dist/math/Frustum.d.ts +18 -0
  594. package/dist/math/Frustum.d.ts.map +1 -1
  595. package/dist/math/Frustum.js +62 -12
  596. package/dist/math/Frustum.js.map +1 -1
  597. package/dist/math/Line3.d.ts +38 -0
  598. package/dist/math/Line3.d.ts.map +1 -0
  599. package/dist/math/Line3.js +122 -0
  600. package/dist/math/Line3.js.map +1 -0
  601. package/dist/math/MathUtils.d.ts +37 -0
  602. package/dist/math/MathUtils.d.ts.map +1 -0
  603. package/dist/math/MathUtils.js +105 -0
  604. package/dist/math/MathUtils.js.map +1 -0
  605. package/dist/math/Matrix3.d.ts +23 -2
  606. package/dist/math/Matrix3.d.ts.map +1 -1
  607. package/dist/math/Matrix3.js +90 -0
  608. package/dist/math/Matrix3.js.map +1 -1
  609. package/dist/math/Matrix4.d.ts +3 -0
  610. package/dist/math/Matrix4.d.ts.map +1 -1
  611. package/dist/math/Matrix4.js +17 -0
  612. package/dist/math/Matrix4.js.map +1 -1
  613. package/dist/math/OBB.d.ts +44 -0
  614. package/dist/math/OBB.d.ts.map +1 -0
  615. package/dist/math/OBB.js +214 -0
  616. package/dist/math/OBB.js.map +1 -0
  617. package/dist/math/Octree.d.ts +72 -0
  618. package/dist/math/Octree.d.ts.map +1 -0
  619. package/dist/math/Octree.js +385 -0
  620. package/dist/math/Octree.js.map +1 -0
  621. package/dist/math/Plane.d.ts +42 -0
  622. package/dist/math/Plane.d.ts.map +1 -1
  623. package/dist/math/Plane.js +79 -3
  624. package/dist/math/Plane.js.map +1 -1
  625. package/dist/math/Quaternion.d.ts +6 -1
  626. package/dist/math/Quaternion.d.ts.map +1 -1
  627. package/dist/math/Quaternion.js +28 -3
  628. package/dist/math/Quaternion.js.map +1 -1
  629. package/dist/math/Ray.d.ts +42 -2
  630. package/dist/math/Ray.d.ts.map +1 -1
  631. package/dist/math/Ray.js +202 -9
  632. package/dist/math/Ray.js.map +1 -1
  633. package/dist/math/ShapeUtils.d.ts +28 -0
  634. package/dist/math/ShapeUtils.d.ts.map +1 -0
  635. package/dist/math/ShapeUtils.js +551 -0
  636. package/dist/math/ShapeUtils.js.map +1 -0
  637. package/dist/math/Sphere.d.ts +32 -0
  638. package/dist/math/Sphere.d.ts.map +1 -1
  639. package/dist/math/Sphere.js +122 -4
  640. package/dist/math/Sphere.js.map +1 -1
  641. package/dist/math/Spherical.d.ts +21 -0
  642. package/dist/math/Spherical.d.ts.map +1 -0
  643. package/dist/math/Spherical.js +50 -0
  644. package/dist/math/Spherical.js.map +1 -0
  645. package/dist/math/SphericalHarmonics3.d.ts +35 -0
  646. package/dist/math/SphericalHarmonics3.d.ts.map +1 -0
  647. package/dist/math/SphericalHarmonics3.js +115 -0
  648. package/dist/math/SphericalHarmonics3.js.map +1 -0
  649. package/dist/math/Triangle.d.ts +45 -0
  650. package/dist/math/Triangle.d.ts.map +1 -0
  651. package/dist/math/Triangle.js +160 -0
  652. package/dist/math/Triangle.js.map +1 -0
  653. package/dist/math/Vector2.d.ts +7 -0
  654. package/dist/math/Vector2.d.ts.map +1 -1
  655. package/dist/math/Vector2.js +17 -0
  656. package/dist/math/Vector2.js.map +1 -1
  657. package/dist/math/Vector3.d.ts +16 -0
  658. package/dist/math/Vector3.d.ts.map +1 -1
  659. package/dist/math/Vector3.js +35 -0
  660. package/dist/math/Vector3.js.map +1 -1
  661. package/dist/math/curves/ArcCurve.d.ts +7 -0
  662. package/dist/math/curves/ArcCurve.d.ts.map +1 -0
  663. package/dist/math/curves/ArcCurve.js +9 -0
  664. package/dist/math/curves/ArcCurve.js.map +1 -0
  665. package/dist/math/curves/CatmullRomCurve3.d.ts +39 -0
  666. package/dist/math/curves/CatmullRomCurve3.d.ts.map +1 -0
  667. package/dist/math/curves/CatmullRomCurve3.js +176 -0
  668. package/dist/math/curves/CatmullRomCurve3.js.map +1 -0
  669. package/dist/math/curves/ClampedCatmullRomCurve3.d.ts +26 -0
  670. package/dist/math/curves/ClampedCatmullRomCurve3.d.ts.map +1 -0
  671. package/dist/math/curves/ClampedCatmullRomCurve3.js +48 -0
  672. package/dist/math/curves/ClampedCatmullRomCurve3.js.map +1 -0
  673. package/dist/math/curves/CubicBezierCurve.d.ts +14 -0
  674. package/dist/math/curves/CubicBezierCurve.d.ts.map +1 -0
  675. package/dist/math/curves/CubicBezierCurve.js +25 -0
  676. package/dist/math/curves/CubicBezierCurve.js.map +1 -0
  677. package/dist/math/curves/CubicBezierCurve3.d.ts +14 -0
  678. package/dist/math/curves/CubicBezierCurve3.d.ts.map +1 -0
  679. package/dist/math/curves/CubicBezierCurve3.js +25 -0
  680. package/dist/math/curves/CubicBezierCurve3.js.map +1 -0
  681. package/dist/math/curves/CurveBase.d.ts +49 -0
  682. package/dist/math/curves/CurveBase.d.ts.map +1 -0
  683. package/dist/math/curves/CurveBase.js +199 -0
  684. package/dist/math/curves/CurveBase.js.map +1 -0
  685. package/dist/math/curves/CurvePath.d.ts +34 -0
  686. package/dist/math/curves/CurvePath.d.ts.map +1 -0
  687. package/dist/math/curves/CurvePath.js +135 -0
  688. package/dist/math/curves/CurvePath.js.map +1 -0
  689. package/dist/math/curves/EllipseCurve.d.ts +18 -0
  690. package/dist/math/curves/EllipseCurve.d.ts.map +1 -0
  691. package/dist/math/curves/EllipseCurve.js +67 -0
  692. package/dist/math/curves/EllipseCurve.js.map +1 -0
  693. package/dist/math/curves/Interpolations.d.ts +9 -0
  694. package/dist/math/curves/Interpolations.d.ts.map +1 -0
  695. package/dist/math/curves/Interpolations.js +21 -0
  696. package/dist/math/curves/Interpolations.js.map +1 -0
  697. package/dist/math/curves/LineCurve.d.ts +16 -0
  698. package/dist/math/curves/LineCurve.d.ts.map +1 -0
  699. package/dist/math/curves/LineCurve.js +32 -0
  700. package/dist/math/curves/LineCurve.js.map +1 -0
  701. package/dist/math/curves/LineCurve3.d.ts +16 -0
  702. package/dist/math/curves/LineCurve3.d.ts.map +1 -0
  703. package/dist/math/curves/LineCurve3.js +32 -0
  704. package/dist/math/curves/LineCurve3.js.map +1 -0
  705. package/dist/math/curves/Path.d.ts +23 -0
  706. package/dist/math/curves/Path.d.ts.map +1 -0
  707. package/dist/math/curves/Path.js +94 -0
  708. package/dist/math/curves/Path.js.map +1 -0
  709. package/dist/math/curves/QuadraticBezierCurve.d.ts +13 -0
  710. package/dist/math/curves/QuadraticBezierCurve.d.ts.map +1 -0
  711. package/dist/math/curves/QuadraticBezierCurve.js +23 -0
  712. package/dist/math/curves/QuadraticBezierCurve.js.map +1 -0
  713. package/dist/math/curves/QuadraticBezierCurve3.d.ts +13 -0
  714. package/dist/math/curves/QuadraticBezierCurve3.d.ts.map +1 -0
  715. package/dist/math/curves/QuadraticBezierCurve3.js +23 -0
  716. package/dist/math/curves/QuadraticBezierCurve3.js.map +1 -0
  717. package/dist/math/curves/Shape.d.ts +15 -0
  718. package/dist/math/curves/Shape.d.ts.map +1 -0
  719. package/dist/math/curves/Shape.js +26 -0
  720. package/dist/math/curves/Shape.js.map +1 -0
  721. package/dist/math/curves/SplineCurve.d.ts +11 -0
  722. package/dist/math/curves/SplineCurve.d.ts.map +1 -0
  723. package/dist/math/curves/SplineCurve.js +27 -0
  724. package/dist/math/curves/SplineCurve.js.map +1 -0
  725. package/dist/math/index.d.ts +12 -0
  726. package/dist/math/index.d.ts.map +1 -1
  727. package/dist/math/index.js +16 -0
  728. package/dist/math/index.js.map +1 -1
  729. package/dist/physics-rapier/index.d.ts.map +1 -1
  730. package/dist/physics-rapier/index.js +20 -5
  731. package/dist/physics-rapier/index.js.map +1 -1
  732. package/dist/rendering/EnvironmentPlatform.d.ts.map +1 -1
  733. package/dist/rendering/EnvironmentPlatform.js +6 -2
  734. package/dist/rendering/EnvironmentPlatform.js.map +1 -1
  735. package/dist/rendering/ForwardPass.d.ts +2 -0
  736. package/dist/rendering/ForwardPass.d.ts.map +1 -1
  737. package/dist/rendering/ForwardPass.js +70 -5
  738. package/dist/rendering/ForwardPass.js.map +1 -1
  739. package/dist/rendering/Geometry.d.ts +40 -0
  740. package/dist/rendering/Geometry.d.ts.map +1 -1
  741. package/dist/rendering/Geometry.js +39 -2
  742. package/dist/rendering/Geometry.js.map +1 -1
  743. package/dist/rendering/IndexBuffer.d.ts +16 -1
  744. package/dist/rendering/IndexBuffer.d.ts.map +1 -1
  745. package/dist/rendering/IndexBuffer.js +46 -1
  746. package/dist/rendering/IndexBuffer.js.map +1 -1
  747. package/dist/rendering/InstancedPBRMaterial.d.ts +2 -0
  748. package/dist/rendering/InstancedPBRMaterial.d.ts.map +1 -1
  749. package/dist/rendering/InstancedPBRMaterial.js +1 -0
  750. package/dist/rendering/InstancedPBRMaterial.js.map +1 -1
  751. package/dist/rendering/Material.d.ts +9 -0
  752. package/dist/rendering/Material.d.ts.map +1 -1
  753. package/dist/rendering/Material.js +3 -0
  754. package/dist/rendering/Material.js.map +1 -1
  755. package/dist/rendering/PBRMaterial.d.ts +2 -0
  756. package/dist/rendering/PBRMaterial.d.ts.map +1 -1
  757. package/dist/rendering/PBRMaterial.js +1 -0
  758. package/dist/rendering/PBRMaterial.js.map +1 -1
  759. package/dist/rendering/PortableShaderMaterial.d.ts +13 -3
  760. package/dist/rendering/PortableShaderMaterial.d.ts.map +1 -1
  761. package/dist/rendering/PortableShaderMaterial.js +24 -12
  762. package/dist/rendering/PortableShaderMaterial.js.map +1 -1
  763. package/dist/rendering/RenderDevice.d.ts +98 -0
  764. package/dist/rendering/RenderDevice.d.ts.map +1 -1
  765. package/dist/rendering/RenderDevice.js +129 -0
  766. package/dist/rendering/RenderDevice.js.map +1 -1
  767. package/dist/rendering/Renderer.d.ts +94 -0
  768. package/dist/rendering/Renderer.d.ts.map +1 -1
  769. package/dist/rendering/Renderer.js +321 -26
  770. package/dist/rendering/Renderer.js.map +1 -1
  771. package/dist/rendering/Sampler.d.ts +35 -0
  772. package/dist/rendering/Sampler.d.ts.map +1 -1
  773. package/dist/rendering/Sampler.js +96 -0
  774. package/dist/rendering/Sampler.js.map +1 -1
  775. package/dist/rendering/ShaderLibraryCore.d.ts +14 -0
  776. package/dist/rendering/ShaderLibraryCore.d.ts.map +1 -1
  777. package/dist/rendering/ShaderLibraryCore.js +94 -4
  778. package/dist/rendering/ShaderLibraryCore.js.map +1 -1
  779. package/dist/rendering/Texture.d.ts +53 -1
  780. package/dist/rendering/Texture.d.ts.map +1 -1
  781. package/dist/rendering/Texture.js +53 -2
  782. package/dist/rendering/Texture.js.map +1 -1
  783. package/dist/rendering/UnlitMaterial.d.ts +46 -0
  784. package/dist/rendering/UnlitMaterial.d.ts.map +1 -1
  785. package/dist/rendering/UnlitMaterial.js +32 -3
  786. package/dist/rendering/UnlitMaterial.js.map +1 -1
  787. package/dist/rendering/VertexFormat.d.ts +19 -1
  788. package/dist/rendering/VertexFormat.d.ts.map +1 -1
  789. package/dist/rendering/VertexFormat.js +40 -1
  790. package/dist/rendering/VertexFormat.js.map +1 -1
  791. package/dist/rendering/WebGL2Device.d.ts +16 -0
  792. package/dist/rendering/WebGL2Device.d.ts.map +1 -1
  793. package/dist/rendering/WebGL2Device.js +31 -6
  794. package/dist/rendering/WebGL2Device.js.map +1 -1
  795. package/dist/rendering/WebGPUDevice.d.ts +92 -1
  796. package/dist/rendering/WebGPUDevice.d.ts.map +1 -1
  797. package/dist/rendering/WebGPUDevice.js +417 -44
  798. package/dist/rendering/WebGPUDevice.js.map +1 -1
  799. package/dist/rendering/batching/BatchedGeometryPool.d.ts +22 -1
  800. package/dist/rendering/batching/BatchedGeometryPool.d.ts.map +1 -1
  801. package/dist/rendering/batching/BatchedGeometryPool.js +50 -2
  802. package/dist/rendering/batching/BatchedGeometryPool.js.map +1 -1
  803. package/dist/rendering/batching/DrawDataTexture.d.ts +21 -1
  804. package/dist/rendering/batching/DrawDataTexture.d.ts.map +1 -1
  805. package/dist/rendering/batching/DrawDataTexture.js +30 -4
  806. package/dist/rendering/batching/DrawDataTexture.js.map +1 -1
  807. package/dist/rendering/batching/MultiDrawBatch.d.ts +26 -0
  808. package/dist/rendering/batching/MultiDrawBatch.d.ts.map +1 -1
  809. package/dist/rendering/batching/MultiDrawBatch.js +64 -2
  810. package/dist/rendering/batching/MultiDrawBatch.js.map +1 -1
  811. package/dist/rendering/batching/index.d.ts +2 -2
  812. package/dist/rendering/batching/index.d.ts.map +1 -1
  813. package/dist/rendering/batching/index.js +2 -2
  814. package/dist/rendering/batching/index.js.map +1 -1
  815. package/dist/rendering/compute/ComputeContext.d.ts +84 -0
  816. package/dist/rendering/compute/ComputeContext.d.ts.map +1 -0
  817. package/dist/rendering/compute/ComputeContext.js +371 -0
  818. package/dist/rendering/compute/ComputeContext.js.map +1 -0
  819. package/dist/rendering/compute/index.d.ts +4 -0
  820. package/dist/rendering/compute/index.d.ts.map +1 -0
  821. package/dist/rendering/compute/index.js +3 -0
  822. package/dist/rendering/compute/index.js.map +1 -0
  823. package/dist/rendering/compute/types.d.ts +108 -0
  824. package/dist/rendering/compute/types.d.ts.map +1 -0
  825. package/dist/rendering/compute/types.js +25 -0
  826. package/dist/rendering/compute/types.js.map +1 -0
  827. package/dist/rendering/contracts/core.d.ts +1 -1
  828. package/dist/rendering/contracts/core.d.ts.map +1 -1
  829. package/dist/rendering/contracts/core.js.map +1 -1
  830. package/dist/rendering/contracts/flags.state.d.ts.map +1 -1
  831. package/dist/rendering/contracts/flags.state.js +20 -1
  832. package/dist/rendering/contracts/flags.state.js.map +1 -1
  833. package/dist/rendering/contracts/output.d.ts +1 -1
  834. package/dist/rendering/contracts/output.d.ts.map +1 -1
  835. package/dist/rendering/contracts/output.js.map +1 -1
  836. package/dist/rendering/contracts/post.d.ts +7 -0
  837. package/dist/rendering/contracts/post.d.ts.map +1 -1
  838. package/dist/rendering/contracts/post.js.map +1 -1
  839. package/dist/rendering/contracts/renderItem.d.ts +15 -0
  840. package/dist/rendering/contracts/renderItem.d.ts.map +1 -1
  841. package/dist/rendering/contracts/renderSource.d.ts +3 -1
  842. package/dist/rendering/contracts/renderSource.d.ts.map +1 -1
  843. package/dist/rendering/contracts/sampling.d.ts +23 -0
  844. package/dist/rendering/contracts/sampling.d.ts.map +1 -1
  845. package/dist/rendering/contracts/sampling.js.map +1 -1
  846. package/dist/rendering/environment/EnvironmentCache.d.ts.map +1 -1
  847. package/dist/rendering/environment/EnvironmentCache.js +7 -3
  848. package/dist/rendering/environment/EnvironmentCache.js.map +1 -1
  849. package/dist/rendering/environment/RoomEnvironmentScene.d.ts +2 -2
  850. package/dist/rendering/environment/RoomEnvironmentScene.d.ts.map +1 -1
  851. package/dist/rendering/environment/RoomEnvironmentScene.js.map +1 -1
  852. package/dist/rendering/geometry/Circle.d.ts +14 -0
  853. package/dist/rendering/geometry/Circle.d.ts.map +1 -0
  854. package/dist/rendering/geometry/Circle.js +31 -0
  855. package/dist/rendering/geometry/Circle.js.map +1 -0
  856. package/dist/rendering/geometry/Cone.d.ts +37 -0
  857. package/dist/rendering/geometry/Cone.d.ts.map +1 -0
  858. package/dist/rendering/geometry/Cone.js +129 -0
  859. package/dist/rendering/geometry/Cone.js.map +1 -0
  860. package/dist/rendering/geometry/Convex.d.ts +19 -0
  861. package/dist/rendering/geometry/Convex.d.ts.map +1 -0
  862. package/dist/rendering/geometry/Convex.js +27 -0
  863. package/dist/rendering/geometry/Convex.js.map +1 -0
  864. package/dist/rendering/geometry/Edges.d.ts +15 -0
  865. package/dist/rendering/geometry/Edges.d.ts.map +1 -0
  866. package/dist/rendering/geometry/Edges.js +98 -0
  867. package/dist/rendering/geometry/Edges.js.map +1 -0
  868. package/dist/rendering/geometry/Extrude.d.ts +29 -0
  869. package/dist/rendering/geometry/Extrude.d.ts.map +1 -0
  870. package/dist/rendering/geometry/Extrude.js +403 -0
  871. package/dist/rendering/geometry/Extrude.js.map +1 -0
  872. package/dist/rendering/geometry/Lathe.d.ts +20 -0
  873. package/dist/rendering/geometry/Lathe.d.ts.map +1 -0
  874. package/dist/rendering/geometry/Lathe.js +94 -0
  875. package/dist/rendering/geometry/Lathe.js.map +1 -0
  876. package/dist/rendering/geometry/Polyhedron.d.ts +21 -0
  877. package/dist/rendering/geometry/Polyhedron.d.ts.map +1 -0
  878. package/dist/rendering/geometry/Polyhedron.js +201 -0
  879. package/dist/rendering/geometry/Polyhedron.js.map +1 -0
  880. package/dist/rendering/geometry/Primitives.d.ts +38 -2
  881. package/dist/rendering/geometry/Primitives.d.ts.map +1 -1
  882. package/dist/rendering/geometry/Primitives.js +114 -0
  883. package/dist/rendering/geometry/Primitives.js.map +1 -1
  884. package/dist/rendering/geometry/Ring.d.ts +16 -0
  885. package/dist/rendering/geometry/Ring.d.ts.map +1 -0
  886. package/dist/rendering/geometry/Ring.js +44 -0
  887. package/dist/rendering/geometry/Ring.js.map +1 -0
  888. package/dist/rendering/geometry/RoundedBox.d.ts +22 -0
  889. package/dist/rendering/geometry/RoundedBox.d.ts.map +1 -0
  890. package/dist/rendering/geometry/RoundedBox.js +191 -0
  891. package/dist/rendering/geometry/RoundedBox.js.map +1 -0
  892. package/dist/rendering/geometry/Shape.d.ts +15 -0
  893. package/dist/rendering/geometry/Shape.d.ts.map +1 -0
  894. package/dist/rendering/geometry/Shape.js +44 -0
  895. package/dist/rendering/geometry/Shape.js.map +1 -0
  896. package/dist/rendering/geometry/Support.d.ts +137 -0
  897. package/dist/rendering/geometry/Support.d.ts.map +1 -0
  898. package/dist/rendering/geometry/Support.js +1066 -0
  899. package/dist/rendering/geometry/Support.js.map +1 -0
  900. package/dist/rendering/geometry/TorusKnot.d.ts +18 -0
  901. package/dist/rendering/geometry/TorusKnot.d.ts.map +1 -0
  902. package/dist/rendering/geometry/TorusKnot.js +83 -0
  903. package/dist/rendering/geometry/TorusKnot.js.map +1 -0
  904. package/dist/rendering/geometry/Tube.d.ts +19 -0
  905. package/dist/rendering/geometry/Tube.d.ts.map +1 -0
  906. package/dist/rendering/geometry/Tube.js +70 -0
  907. package/dist/rendering/geometry/Tube.js.map +1 -0
  908. package/dist/rendering/geometry/Wireframe.d.ts +19 -0
  909. package/dist/rendering/geometry/Wireframe.d.ts.map +1 -0
  910. package/dist/rendering/geometry/Wireframe.js +63 -0
  911. package/dist/rendering/geometry/Wireframe.js.map +1 -0
  912. package/dist/rendering/index.d.ts +38 -7
  913. package/dist/rendering/index.d.ts.map +1 -1
  914. package/dist/rendering/index.js +25 -3
  915. package/dist/rendering/index.js.map +1 -1
  916. package/dist/rendering/lanes/prd11.js +1 -1
  917. package/dist/rendering/lanes/prd11.js.map +1 -1
  918. package/dist/rendering/output/ToneMappingOperators.glsl.d.ts +1 -1
  919. package/dist/rendering/output/ToneMappingOperators.glsl.d.ts.map +1 -1
  920. package/dist/rendering/output/ToneMappingOperators.glsl.js +9 -1
  921. package/dist/rendering/output/ToneMappingOperators.glsl.js.map +1 -1
  922. package/dist/rendering/post/v2Entry.d.ts +1 -0
  923. package/dist/rendering/post/v2Entry.d.ts.map +1 -1
  924. package/dist/rendering/post/v2Entry.js.map +1 -1
  925. package/dist/rendering/post/v2Stages.d.ts +30 -1
  926. package/dist/rendering/post/v2Stages.d.ts.map +1 -1
  927. package/dist/rendering/post/v2Stages.js +87 -21
  928. package/dist/rendering/post/v2Stages.js.map +1 -1
  929. package/dist/rendering/program/ProgramCache.d.ts.map +1 -1
  930. package/dist/rendering/program/ProgramCache.js +12 -0
  931. package/dist/rendering/program/ProgramCache.js.map +1 -1
  932. package/dist/rendering/program/ProgramGenerator.d.ts.map +1 -1
  933. package/dist/rendering/program/ProgramGenerator.js +3 -0
  934. package/dist/rendering/program/ProgramGenerator.js.map +1 -1
  935. package/dist/rendering/reference/PostProcessPass.d.ts +1 -1
  936. package/dist/rendering/reference/PostProcessPass.d.ts.map +1 -1
  937. package/dist/rendering/reference/PostProcessPass.js +8 -1
  938. package/dist/rendering/reference/PostProcessPass.js.map +1 -1
  939. package/dist/rendering/renderer/CullingBatching.d.ts +44 -2
  940. package/dist/rendering/renderer/CullingBatching.d.ts.map +1 -1
  941. package/dist/rendering/renderer/CullingBatching.js +66 -11
  942. package/dist/rendering/renderer/CullingBatching.js.map +1 -1
  943. package/dist/rendering/shaders/chunks/lighting_mirrors.d.ts +2 -2
  944. package/dist/rendering/shaders/chunks/lighting_mirrors.d.ts.map +1 -1
  945. package/dist/rendering/shaders/chunks/lighting_mirrors.js.map +1 -1
  946. package/dist/rendering/shadows/DirectionalCascadeFitter.d.ts +8 -8
  947. package/dist/rendering/shadows/DirectionalCascadeFitter.d.ts.map +1 -1
  948. package/dist/rendering/shadows/DirectionalCascadeFitter.js.map +1 -1
  949. package/dist/rendering/shadows/ShadowAtlas.d.ts +5 -5
  950. package/dist/rendering/shadows/ShadowAtlas.d.ts.map +1 -1
  951. package/dist/rendering/shadows/ShadowAtlas.js.map +1 -1
  952. package/dist/rendering/vfx/ProceduralVolumeEmitter.d.ts +11 -0
  953. package/dist/rendering/vfx/ProceduralVolumeEmitter.d.ts.map +1 -1
  954. package/dist/rendering/vfx/ProceduralVolumeEmitter.js +20 -6
  955. package/dist/rendering/vfx/ProceduralVolumeEmitter.js.map +1 -1
  956. package/dist/rendering/webgl2/ContextLifecycle.d.ts +36 -0
  957. package/dist/rendering/webgl2/ContextLifecycle.d.ts.map +1 -1
  958. package/dist/rendering/webgl2/ContextLifecycle.js +110 -2
  959. package/dist/rendering/webgl2/ContextLifecycle.js.map +1 -1
  960. package/dist/rendering/webgl2/LegacyPost.d.ts +16 -1
  961. package/dist/rendering/webgl2/LegacyPost.d.ts.map +1 -1
  962. package/dist/rendering/webgl2/LegacyPost.js +49 -16
  963. package/dist/rendering/webgl2/LegacyPost.js.map +1 -1
  964. package/dist/rendering/webgl2/MultiDraw.d.ts.map +1 -1
  965. package/dist/rendering/webgl2/MultiDraw.js +42 -2
  966. package/dist/rendering/webgl2/MultiDraw.js.map +1 -1
  967. package/dist/rendering/webgl2/TextureUpload.d.ts +7 -0
  968. package/dist/rendering/webgl2/TextureUpload.d.ts.map +1 -1
  969. package/dist/rendering/webgl2/TextureUpload.js +54 -10
  970. package/dist/rendering/webgl2/TextureUpload.js.map +1 -1
  971. package/dist/scene/Layers.d.ts +5 -0
  972. package/dist/scene/Layers.d.ts.map +1 -1
  973. package/dist/scene/Layers.js +13 -0
  974. package/dist/scene/Layers.js.map +1 -1
  975. package/dist/scene/SceneNode.d.ts +27 -1
  976. package/dist/scene/SceneNode.d.ts.map +1 -1
  977. package/dist/scene/SceneNode.js +33 -1
  978. package/dist/scene/SceneNode.js.map +1 -1
  979. package/package.json +77 -32
  980. package/templates/cinematic-scene/index.html +2 -28
  981. package/templates/cinematic-scene/package.json +2 -1
  982. package/templates/cinematic-scene/src/main.ts +3 -3
  983. package/templates/cinematic-scene/tests/look-floor.ts +73 -3
  984. package/templates/cinematic-scene/tests/route-health.spec.ts +1 -1
  985. package/templates/cinematic-scene/tests/screenshot.spec.ts +12 -2
  986. package/templates/cinematic-scene/vite.config.ts +7 -0
  987. package/templates/mini-game/index.html +1 -27
  988. package/templates/mini-game/package-lock.json +1312 -0
  989. package/templates/mini-game/package.json +2 -1
  990. package/templates/mini-game/src/main.ts +1 -1
  991. package/templates/mini-game/tests/certified-rig.spec.ts +1 -1
  992. package/templates/mini-game/tests/look-floor.ts +73 -3
  993. package/templates/mini-game/tests/playable.spec.ts +57 -12
  994. package/templates/mini-game/tests/screenshot.spec.ts +12 -2
  995. package/templates/mini-game/vite.config.ts +7 -0
  996. package/templates/product-viewer/index.html +2 -27
  997. package/templates/product-viewer/package.json +2 -1
  998. package/templates/product-viewer/tests/look-floor.ts +73 -3
  999. package/templates/product-viewer/tests/screenshot.spec.ts +13 -4
  1000. package/templates/product-viewer/vite.config.ts +7 -0
  1001. package/templates/production-asset-inspector/package.json +1 -1
  1002. package/templates/production-material-studio/package.json +1 -1
  1003. package/templates/production-product-configurator/package.json +1 -1
  1004. package/templates/production-product-viewer/package.json +1 -1
  1005. package/dist/input/controls/CameraRig.d.ts +0 -3
  1006. package/dist/input/controls/CameraRig.d.ts.map +0 -1
  1007. package/dist/input/controls/CameraRig.js +0 -3
  1008. package/dist/input/controls/CameraRig.js.map +0 -1
  1009. package/dist/input/controls/ControlTypes.d.ts +0 -3
  1010. package/dist/input/controls/ControlTypes.d.ts.map +0 -1
  1011. package/dist/input/controls/ControlTypes.js +0 -3
  1012. package/dist/input/controls/ControlTypes.js.map +0 -1
  1013. package/dist/input/controls/EditorFlyControls.d.ts +0 -3
  1014. package/dist/input/controls/EditorFlyControls.d.ts.map +0 -1
  1015. package/dist/input/controls/EditorFlyControls.js +0 -3
  1016. package/dist/input/controls/EditorFlyControls.js.map +0 -1
  1017. package/dist/input/controls/FirstPersonControls.d.ts +0 -3
  1018. package/dist/input/controls/FirstPersonControls.d.ts.map +0 -1
  1019. package/dist/input/controls/FirstPersonControls.js +0 -3
  1020. package/dist/input/controls/FirstPersonControls.js.map +0 -1
  1021. package/dist/input/controls/OrbitControls.d.ts +0 -3
  1022. package/dist/input/controls/OrbitControls.d.ts.map +0 -1
  1023. package/dist/input/controls/OrbitControls.js +0 -3
  1024. package/dist/input/controls/OrbitControls.js.map +0 -1
  1025. package/dist/input/controls/PointerLockControls.d.ts +0 -2
  1026. package/dist/input/controls/PointerLockControls.d.ts.map +0 -1
  1027. package/dist/input/controls/PointerLockControls.js +0 -3
  1028. package/dist/input/controls/PointerLockControls.js.map +0 -1
  1029. package/dist/input/controls/SceneCameraAdapter.d.ts +0 -3
  1030. package/dist/input/controls/SceneCameraAdapter.d.ts.map +0 -1
  1031. package/dist/input/controls/SceneCameraAdapter.js +0 -3
  1032. package/dist/input/controls/SceneCameraAdapter.js.map +0 -1
  1033. package/dist/input/controls/ThirdPersonFollowControls.d.ts +0 -3
  1034. package/dist/input/controls/ThirdPersonFollowControls.d.ts.map +0 -1
  1035. package/dist/input/controls/ThirdPersonFollowControls.js +0 -3
  1036. package/dist/input/controls/ThirdPersonFollowControls.js.map +0 -1
  1037. package/templates/cinematic-scene/public/fonts/graphik/Graphik-Medium-Web.woff2 +0 -0
  1038. package/templates/cinematic-scene/public/fonts/graphik/Graphik-Regular-Web.woff2 +0 -0
  1039. package/templates/cinematic-scene/public/fonts/graphik/Graphik-RegularItalic-Web.woff2 +0 -0
  1040. package/templates/mini-game/public/fonts/graphik/Graphik-Medium-Web.woff2 +0 -0
  1041. package/templates/mini-game/public/fonts/graphik/Graphik-Regular-Web.woff2 +0 -0
  1042. package/templates/mini-game/public/fonts/graphik/Graphik-RegularItalic-Web.woff2 +0 -0
  1043. package/templates/product-viewer/public/fonts/graphik/Graphik-Medium-Web.woff2 +0 -0
  1044. package/templates/product-viewer/public/fonts/graphik/Graphik-Regular-Web.woff2 +0 -0
  1045. package/templates/product-viewer/public/fonts/graphik/Graphik-RegularItalic-Web.woff2 +0 -0
@@ -0,0 +1,1398 @@
1
+ /**
2
+ * threejs-parity AD-03 (docs/workflows/threejs-parity-gaps.md §6 lane L4):
3
+ * real OpenEXR decode — the scanline/tile pipeline is a faithful port of
4
+ * three.js r185 `examples/jsm/loaders/EXRLoader.js` (itself a port of the
5
+ * TinyEXR/OpenEXR reference implementation), trimmed to the compression
6
+ * family this lane requires: NO_COMPRESSION, RLE, ZIPS, ZIP and PIZ, with
7
+ * HALF and FLOAT channel pixel types. PXR24, B44/A, DWA/B and deep data
8
+ * throw `unsupported-format` rather than silently mis-decoding.
9
+ *
10
+ * Output mirrors three's `EXRLoader` result shape: `RGBAFormat` RGBA pixels
11
+ * as `Uint16Array` half floats (default) or `Float32Array`, `flipY: false`,
12
+ * `generateMipmaps: false` — feedable straight into `texture.data`.
13
+ */
14
+ import { AssetLoadError } from "./AssetLoader.js";
15
+ const warn = (message) => {
16
+ if (typeof console !== "undefined" && typeof console.warn === "function")
17
+ console.warn(message);
18
+ };
19
+ /** IEEE-754 half encode (three's `DataUtils.toHalfFloat`, round-to-nearest). */
20
+ function toHalfFloat(value) {
21
+ if (Number.isNaN(value))
22
+ return 0x7c00 | 1;
23
+ if (value === 0)
24
+ return value === -Infinity || Object.is(value, -0) ? 0x8000 : 0;
25
+ const sign = value < 0 ? 0x8000 : 0;
26
+ const abs = Math.abs(value);
27
+ if (abs === Infinity)
28
+ return sign | 0x7c00;
29
+ if (abs >= 65520)
30
+ return sign | 0x7bff;
31
+ if (abs < 6.103515625e-5) {
32
+ return sign | Math.round(abs / 5.9604644775390625e-8);
33
+ }
34
+ const exponent = Math.floor(Math.log2(abs));
35
+ const mantissa = Math.round((abs / Math.pow(2, exponent) - 1) * 1024);
36
+ return sign | ((exponent + 15) << 10) | (mantissa & 0x3ff);
37
+ }
38
+ /**
39
+ * zlib inflate for ZIP/ZIPS blocks. `DecompressionStream("deflate")` covers
40
+ * browsers and Node >= 18; the `node:zlib` fallback keeps older Node test
41
+ * environments working. Three vendors fflate's `unzlibSync` — identical zlib
42
+ * semantics either way.
43
+ */
44
+ async function inflateZlib(compressed) {
45
+ if (typeof DecompressionStream === "function") {
46
+ const stream = new Blob([compressed]).stream().pipeThrough(new DecompressionStream("deflate"));
47
+ return new Uint8Array(await new Response(stream).arrayBuffer());
48
+ }
49
+ // Runtime-only Node fallback. The specifier is a variable so bundlers
50
+ // (esbuild/vite/rollup) cannot resolve it — browser entries must never
51
+ // graph a Node builtin even behind a capability probe (bundle-size gate).
52
+ const zlibModule = "node:zlib";
53
+ const zlib = (await import(zlibModule));
54
+ const out = zlib.inflateSync(compressed);
55
+ return new Uint8Array(out.buffer, out.byteOffset, out.byteLength);
56
+ }
57
+ /**
58
+ * Parse an EXR `ArrayBuffer` into interleaved pixel data — the async sibling
59
+ * of three's `EXRLoader.parse` (async only because ZIP/ZIPS inflate via
60
+ * `DecompressionStream` is async).
61
+ */
62
+ export async function parseEXR(buffer, options = {}) {
63
+ const outputType = options.type ?? "half";
64
+ const outputFormat = options.outputFormat ?? "rgba";
65
+ const partIndex = Math.max(0, options.part ?? 0);
66
+ const USHORT_RANGE = (1 << 16);
67
+ const BITMAP_SIZE = (USHORT_RANGE >> 3);
68
+ const HUF_ENCBITS = 16; // literal (value) bit length
69
+ const HUF_DECBITS = 14; // decoding bit size (>= 8)
70
+ const HUF_ENCSIZE = (1 << HUF_ENCBITS) + 1; // encoding table size
71
+ const HUF_DECSIZE = 1 << HUF_DECBITS; // decoding table size
72
+ const HUF_DECMASK = HUF_DECSIZE - 1;
73
+ const NBITS = 16;
74
+ const A_OFFSET = 1 << (NBITS - 1);
75
+ const MOD_MASK = (1 << NBITS) - 1;
76
+ const SHORT_ZEROCODE_RUN = 59;
77
+ const LONG_ZEROCODE_RUN = 63;
78
+ const SHORTEST_LONG_RUN = 2 + LONG_ZEROCODE_RUN - SHORT_ZEROCODE_RUN;
79
+ const ULONG_SIZE = 8;
80
+ const FLOAT32_SIZE = 4;
81
+ const INT32_SIZE = 4;
82
+ const INT16_SIZE = 2;
83
+ const INT8_SIZE = 1;
84
+ const STATIC_HUFFMAN = 0;
85
+ const DEFLATE = 1;
86
+ const UNKNOWN = 0;
87
+ const LOSSY_DCT = 1;
88
+ const RLE = 2;
89
+ void HUF_DECMASK;
90
+ void NBITS;
91
+ void A_OFFSET;
92
+ void MOD_MASK;
93
+ void ULONG_SIZE;
94
+ void FLOAT32_SIZE;
95
+ void STATIC_HUFFMAN;
96
+ void DEFLATE;
97
+ void UNKNOWN;
98
+ void LOSSY_DCT;
99
+ void RLE;
100
+ const logBase = Math.pow(2.7182818, 2.2);
101
+ void logBase;
102
+ function parseNullTerminatedString(buffer, offset) {
103
+ const uintBuffer = new Uint8Array(buffer);
104
+ let endOffset = 0;
105
+ while (uintBuffer[offset.value + endOffset] != 0) {
106
+ endOffset += 1;
107
+ }
108
+ const stringValue = new TextDecoder().decode(uintBuffer.slice(offset.value, offset.value + endOffset));
109
+ offset.value = offset.value + endOffset + 1;
110
+ return stringValue;
111
+ }
112
+ function parseFixedLengthString(buffer, offset, size) {
113
+ const stringValue = new TextDecoder().decode(new Uint8Array(buffer).slice(offset.value, offset.value + size));
114
+ offset.value = offset.value + size;
115
+ return stringValue;
116
+ }
117
+ function parseRational(dataView, offset) {
118
+ const x = parseInt32(dataView, offset);
119
+ const y = parseUint32(dataView, offset);
120
+ return [x, y];
121
+ }
122
+ function parseTimecode(dataView, offset) {
123
+ const x = parseUint32(dataView, offset);
124
+ const y = parseUint32(dataView, offset);
125
+ return [x, y];
126
+ }
127
+ function parseInt32(dataView, offset) {
128
+ const Int32 = dataView.getInt32(offset.value, true);
129
+ offset.value = offset.value + INT32_SIZE;
130
+ return Int32;
131
+ }
132
+ function parseUint32(dataView, offset) {
133
+ const Uint32 = dataView.getUint32(offset.value, true);
134
+ offset.value = offset.value + INT32_SIZE;
135
+ return Uint32;
136
+ }
137
+ function parseUint8Array(uInt8Array, offset) {
138
+ const Uint8 = uInt8Array[offset.value];
139
+ offset.value = offset.value + INT8_SIZE;
140
+ return Uint8;
141
+ }
142
+ function parseUint8(dataView, offset) {
143
+ const Uint8 = dataView.getUint8(offset.value);
144
+ offset.value = offset.value + INT8_SIZE;
145
+ return Uint8;
146
+ }
147
+ const parseInt64 = function (dataView, offset) {
148
+ const int = Number(dataView.getBigInt64(offset.value, true));
149
+ offset.value += ULONG_SIZE;
150
+ return int;
151
+ };
152
+ function parseFloat32(dataView, offset) {
153
+ const float = dataView.getFloat32(offset.value, true);
154
+ offset.value += FLOAT32_SIZE;
155
+ return float;
156
+ }
157
+ function decodeFloat32(dataView, offset) {
158
+ return toHalfFloat(parseFloat32(dataView, offset));
159
+ }
160
+ // https://stackoverflow.com/questions/5678432/decompressing-half-precision-floats-in-javascript
161
+ function decodeFloat16(binary) {
162
+ const exponent = (binary & 0x7C00) >> 10, fraction = binary & 0x03FF;
163
+ return (binary >> 15 ? -1 : 1) * (exponent ?
164
+ (exponent === 0x1F ?
165
+ fraction ? NaN : Infinity :
166
+ Math.pow(2, exponent - 15) * (1 + fraction / 0x400)) :
167
+ 6.103515625e-5 * (fraction / 0x400));
168
+ }
169
+ function parseUint16(dataView, offset) {
170
+ const Uint16 = dataView.getUint16(offset.value, true);
171
+ offset.value += INT16_SIZE;
172
+ return Uint16;
173
+ }
174
+ function parseFloat16(buffer, offset) {
175
+ return decodeFloat16(parseUint16(buffer, offset));
176
+ }
177
+ function parseChlist(dataView, buffer, offset, size) {
178
+ const startOffset = offset.value;
179
+ const channels = [];
180
+ while (offset.value < (startOffset + size - 1)) {
181
+ const name = parseNullTerminatedString(buffer, offset);
182
+ const pixelType = parseInt32(dataView, offset);
183
+ const pLinear = parseUint8(dataView, offset);
184
+ offset.value += 3; // reserved, three chars
185
+ const xSampling = parseInt32(dataView, offset);
186
+ const ySampling = parseInt32(dataView, offset);
187
+ channels.push({
188
+ name: name,
189
+ pixelType: pixelType,
190
+ pLinear: pLinear,
191
+ xSampling: xSampling,
192
+ ySampling: ySampling
193
+ });
194
+ }
195
+ offset.value += 1;
196
+ return channels;
197
+ }
198
+ function parseChromaticities(dataView, offset) {
199
+ const redX = parseFloat32(dataView, offset);
200
+ const redY = parseFloat32(dataView, offset);
201
+ const greenX = parseFloat32(dataView, offset);
202
+ const greenY = parseFloat32(dataView, offset);
203
+ const blueX = parseFloat32(dataView, offset);
204
+ const blueY = parseFloat32(dataView, offset);
205
+ const whiteX = parseFloat32(dataView, offset);
206
+ const whiteY = parseFloat32(dataView, offset);
207
+ return { redX: redX, redY: redY, greenX: greenX, greenY: greenY, blueX: blueX, blueY: blueY, whiteX: whiteX, whiteY: whiteY };
208
+ }
209
+ function parseCompression(dataView, offset) {
210
+ const compressionCodes = [
211
+ 'NO_COMPRESSION',
212
+ 'RLE_COMPRESSION',
213
+ 'ZIPS_COMPRESSION',
214
+ 'ZIP_COMPRESSION',
215
+ 'PIZ_COMPRESSION',
216
+ 'PXR24_COMPRESSION',
217
+ 'B44_COMPRESSION',
218
+ 'B44A_COMPRESSION',
219
+ 'DWAA_COMPRESSION',
220
+ 'DWAB_COMPRESSION'
221
+ ];
222
+ const compression = parseUint8(dataView, offset);
223
+ return compressionCodes[compression];
224
+ }
225
+ function parseBox2i(dataView, offset) {
226
+ const xMin = parseInt32(dataView, offset);
227
+ const yMin = parseInt32(dataView, offset);
228
+ const xMax = parseInt32(dataView, offset);
229
+ const yMax = parseInt32(dataView, offset);
230
+ return { xMin: xMin, yMin: yMin, xMax: xMax, yMax: yMax };
231
+ }
232
+ function parseLineOrder(dataView, offset) {
233
+ const lineOrders = [
234
+ 'INCREASING_Y',
235
+ 'DECREASING_Y',
236
+ 'RANDOM_Y',
237
+ ];
238
+ const lineOrder = parseUint8(dataView, offset);
239
+ return lineOrders[lineOrder];
240
+ }
241
+ function parseEnvmap(dataView, offset) {
242
+ const envmaps = [
243
+ 'ENVMAP_LATLONG',
244
+ 'ENVMAP_CUBE'
245
+ ];
246
+ const envmap = parseUint8(dataView, offset);
247
+ return envmaps[envmap];
248
+ }
249
+ function parseTiledesc(dataView, offset) {
250
+ const levelModes = [
251
+ 'ONE_LEVEL',
252
+ 'MIPMAP_LEVELS',
253
+ 'RIPMAP_LEVELS',
254
+ ];
255
+ const roundingModes = [
256
+ 'ROUND_DOWN',
257
+ 'ROUND_UP',
258
+ ];
259
+ const xSize = parseUint32(dataView, offset);
260
+ const ySize = parseUint32(dataView, offset);
261
+ const modes = parseUint8(dataView, offset);
262
+ return {
263
+ xSize: xSize,
264
+ ySize: ySize,
265
+ levelMode: levelModes[modes & 0xf],
266
+ roundingMode: roundingModes[modes >> 4]
267
+ };
268
+ }
269
+ function parseV2f(dataView, offset) {
270
+ const x = parseFloat32(dataView, offset);
271
+ const y = parseFloat32(dataView, offset);
272
+ return [x, y];
273
+ }
274
+ function parseV3f(dataView, offset) {
275
+ const x = parseFloat32(dataView, offset);
276
+ const y = parseFloat32(dataView, offset);
277
+ const z = parseFloat32(dataView, offset);
278
+ return [x, y, z];
279
+ }
280
+ function parseValue(dataView, buffer, offset, type, size) {
281
+ if (type === 'string' || type === 'stringvector' || type === 'iccProfile') {
282
+ return parseFixedLengthString(buffer, offset, size);
283
+ }
284
+ else if (type === 'chlist') {
285
+ return parseChlist(dataView, buffer, offset, size);
286
+ }
287
+ else if (type === 'chromaticities') {
288
+ return parseChromaticities(dataView, offset);
289
+ }
290
+ else if (type === 'compression') {
291
+ return parseCompression(dataView, offset);
292
+ }
293
+ else if (type === 'box2i') {
294
+ return parseBox2i(dataView, offset);
295
+ }
296
+ else if (type === 'envmap') {
297
+ return parseEnvmap(dataView, offset);
298
+ }
299
+ else if (type === 'tiledesc') {
300
+ return parseTiledesc(dataView, offset);
301
+ }
302
+ else if (type === 'lineOrder') {
303
+ return parseLineOrder(dataView, offset);
304
+ }
305
+ else if (type === 'float') {
306
+ return parseFloat32(dataView, offset);
307
+ }
308
+ else if (type === 'v2f') {
309
+ return parseV2f(dataView, offset);
310
+ }
311
+ else if (type === 'v3f') {
312
+ return parseV3f(dataView, offset);
313
+ }
314
+ else if (type === 'int') {
315
+ return parseInt32(dataView, offset);
316
+ }
317
+ else if (type === 'rational') {
318
+ return parseRational(dataView, offset);
319
+ }
320
+ else if (type === 'timecode') {
321
+ return parseTimecode(dataView, offset);
322
+ }
323
+ else if (type === 'preview' || type === 'deepImageState' || type === 'idmanifest') {
324
+ // Known metadata-only types: silently skip, they carry no pixel data.
325
+ offset.value += size;
326
+ return 'skipped';
327
+ }
328
+ else {
329
+ offset.value += size;
330
+ return undefined;
331
+ }
332
+ }
333
+ function roundLog2(x, mode) {
334
+ const log2 = Math.log2(x);
335
+ return mode == 'ROUND_DOWN' ? Math.floor(log2) : Math.ceil(log2);
336
+ }
337
+ function calculateTileLevels(tiledesc, w, h) {
338
+ let num = 0;
339
+ switch (tiledesc.levelMode) {
340
+ case 'ONE_LEVEL':
341
+ num = 1;
342
+ break;
343
+ case 'MIPMAP_LEVELS':
344
+ num = roundLog2(Math.max(w, h), tiledesc.roundingMode) + 1;
345
+ break;
346
+ case 'RIPMAP_LEVELS':
347
+ throw new Error('EXRLoader: RIPMAP_LEVELS tiles currently unsupported.');
348
+ }
349
+ return num;
350
+ }
351
+ function calculateTiles(count, dataSize, size, roundingMode) {
352
+ const tiles = new Array(count);
353
+ for (let i = 0; i < count; i++) {
354
+ const b = (1 << i);
355
+ let s = (dataSize / b) | 0;
356
+ if (roundingMode == 'ROUND_UP' && s * b < dataSize)
357
+ s += 1;
358
+ const l = Math.max(s, 1);
359
+ tiles[i] = ((l + size - 1) / size) | 0;
360
+ }
361
+ return tiles;
362
+ }
363
+ async function parseTiles() {
364
+ const EXRDecoder = this;
365
+ const offset = EXRDecoder.offset;
366
+ const tmpOffset = { value: 0 };
367
+ for (let tile = 0; tile < EXRDecoder.tileCount; tile++) {
368
+ const tileX = parseInt32(EXRDecoder.viewer, offset);
369
+ const tileY = parseInt32(EXRDecoder.viewer, offset);
370
+ offset.value += 8; // skip levels - only parsing top-level
371
+ EXRDecoder.size = parseUint32(EXRDecoder.viewer, offset);
372
+ const startX = tileX * EXRDecoder.blockWidth;
373
+ const startY = tileY * EXRDecoder.blockHeight;
374
+ EXRDecoder.columns = (startX + EXRDecoder.blockWidth > EXRDecoder.width) ? EXRDecoder.width - startX : EXRDecoder.blockWidth;
375
+ EXRDecoder.lines = (startY + EXRDecoder.blockHeight > EXRDecoder.height) ? EXRDecoder.height - startY : EXRDecoder.blockHeight;
376
+ const bytesBlockLine = EXRDecoder.columns * EXRDecoder.totalBytes;
377
+ const isCompressed = EXRDecoder.size < EXRDecoder.lines * bytesBlockLine;
378
+ const viewer = isCompressed ? await EXRDecoder.uncompress(EXRDecoder) : uncompressRAW(EXRDecoder);
379
+ offset.value += EXRDecoder.size;
380
+ for (let line = 0; line < EXRDecoder.lines; line++) {
381
+ const lineOffset = line * EXRDecoder.columns * EXRDecoder.totalBytes;
382
+ for (let channelID = 0; channelID < EXRDecoder.inputChannels.length; channelID++) {
383
+ const name = EXRHeader.channels[channelID].name;
384
+ const lOff = EXRDecoder.channelByteOffsets[name] * EXRDecoder.columns;
385
+ const cOff = EXRDecoder.decodeChannels[name];
386
+ if (cOff === undefined)
387
+ continue;
388
+ tmpOffset.value = lineOffset + lOff;
389
+ const outLineOffset = (EXRDecoder.height - (1 + startY + line)) * EXRDecoder.outLineWidth;
390
+ for (let x = 0; x < EXRDecoder.columns; x++) {
391
+ const outIndex = outLineOffset + (x + startX) * EXRDecoder.outputChannels + cOff;
392
+ EXRDecoder.byteArray[outIndex] = EXRDecoder.getter(viewer, tmpOffset);
393
+ }
394
+ }
395
+ }
396
+ }
397
+ }
398
+ function reverseLutFromBitmap(bitmap, lut) {
399
+ let k = 0;
400
+ for (let i = 0; i < USHORT_RANGE; ++i) {
401
+ if ((i == 0) || (bitmap[i >> 3] & (1 << (i & 7)))) {
402
+ lut[k++] = i;
403
+ }
404
+ }
405
+ const n = k - 1;
406
+ while (k < USHORT_RANGE)
407
+ lut[k++] = 0;
408
+ return n;
409
+ }
410
+ function hufClearDecTable(hdec) {
411
+ for (let i = 0; i < HUF_DECSIZE; i++) {
412
+ hdec[i] = {};
413
+ hdec[i].len = 0;
414
+ hdec[i].lit = 0;
415
+ hdec[i].p = null;
416
+ }
417
+ }
418
+ const getBitsReturn = { l: 0, c: 0, lc: 0 };
419
+ function getBits(nBits, c, lc, uInt8Array, inOffset) {
420
+ while (lc < nBits) {
421
+ c = (c << 8) | parseUint8Array(uInt8Array, inOffset);
422
+ lc += 8;
423
+ }
424
+ lc -= nBits;
425
+ getBitsReturn.l = (c >> lc) & ((1 << nBits) - 1);
426
+ getBitsReturn.c = c;
427
+ getBitsReturn.lc = lc;
428
+ }
429
+ const hufTableBuffer = new Array(59);
430
+ function hufCanonicalCodeTable(hcode) {
431
+ for (let i = 0; i <= 58; ++i)
432
+ hufTableBuffer[i] = 0;
433
+ for (let i = 0; i < HUF_ENCSIZE; ++i)
434
+ hufTableBuffer[hcode[i]] += 1;
435
+ let c = 0;
436
+ for (let i = 58; i > 0; --i) {
437
+ const nc = ((c + hufTableBuffer[i]) >> 1);
438
+ hufTableBuffer[i] = c;
439
+ c = nc;
440
+ }
441
+ for (let i = 0; i < HUF_ENCSIZE; ++i) {
442
+ const l = hcode[i];
443
+ if (l > 0)
444
+ hcode[i] = l | (hufTableBuffer[l]++ << 6);
445
+ }
446
+ }
447
+ function hufUnpackEncTable(uInt8Array, inOffset, ni, im, iM, hcode) {
448
+ const p = inOffset;
449
+ let c = 0;
450
+ let lc = 0;
451
+ for (; im <= iM; im++) {
452
+ if (p.value - inOffset.value > ni)
453
+ return false;
454
+ getBits(6, c, lc, uInt8Array, p);
455
+ const l = getBitsReturn.l;
456
+ c = getBitsReturn.c;
457
+ lc = getBitsReturn.lc;
458
+ hcode[im] = l;
459
+ if (l == LONG_ZEROCODE_RUN) {
460
+ if (p.value - inOffset.value > ni) {
461
+ throw new Error('EXRLoader: Something wrong with hufUnpackEncTable');
462
+ }
463
+ getBits(8, c, lc, uInt8Array, p);
464
+ let zerun = getBitsReturn.l + SHORTEST_LONG_RUN;
465
+ c = getBitsReturn.c;
466
+ lc = getBitsReturn.lc;
467
+ if (im + zerun > iM + 1) {
468
+ throw new Error('EXRLoader: Something wrong with hufUnpackEncTable');
469
+ }
470
+ while (zerun--)
471
+ hcode[im++] = 0;
472
+ im--;
473
+ }
474
+ else if (l >= SHORT_ZEROCODE_RUN) {
475
+ let zerun = l - SHORT_ZEROCODE_RUN + 2;
476
+ if (im + zerun > iM + 1) {
477
+ throw new Error('EXRLoader: Something wrong with hufUnpackEncTable');
478
+ }
479
+ while (zerun--)
480
+ hcode[im++] = 0;
481
+ im--;
482
+ }
483
+ }
484
+ hufCanonicalCodeTable(hcode);
485
+ }
486
+ function hufLength(code) {
487
+ return code & 63;
488
+ }
489
+ function hufCode(code) {
490
+ return code >> 6;
491
+ }
492
+ function hufBuildDecTable(hcode, im, iM, hdecod) {
493
+ for (; im <= iM; im++) {
494
+ const c = hufCode(hcode[im]);
495
+ const l = hufLength(hcode[im]);
496
+ if (c >> l) {
497
+ throw new Error('EXRLoader: Invalid table entry');
498
+ }
499
+ if (l > HUF_DECBITS) {
500
+ const pl = hdecod[(c >> (l - HUF_DECBITS))];
501
+ if (pl.len) {
502
+ throw new Error('EXRLoader: Invalid table entry');
503
+ }
504
+ pl.lit++;
505
+ if (pl.p) {
506
+ const p = pl.p;
507
+ pl.p = new Array(pl.lit);
508
+ for (let i = 0; i < pl.lit - 1; ++i) {
509
+ pl.p[i] = p[i];
510
+ }
511
+ }
512
+ else {
513
+ pl.p = new Array(1);
514
+ }
515
+ pl.p[pl.lit - 1] = im;
516
+ }
517
+ else if (l) {
518
+ let plOffset = 0;
519
+ for (let i = 1 << (HUF_DECBITS - l); i > 0; i--) {
520
+ const pl = hdecod[(c << (HUF_DECBITS - l)) + plOffset];
521
+ if (pl.len || pl.p) {
522
+ throw new Error('EXRLoader: Invalid table entry');
523
+ }
524
+ pl.len = l;
525
+ pl.lit = im;
526
+ plOffset++;
527
+ }
528
+ }
529
+ }
530
+ return true;
531
+ }
532
+ const getCharReturn = { c: 0, lc: 0 };
533
+ function getChar(c, lc, uInt8Array, inOffset) {
534
+ c = (c << 8) | parseUint8Array(uInt8Array, inOffset);
535
+ lc += 8;
536
+ getCharReturn.c = c;
537
+ getCharReturn.lc = lc;
538
+ }
539
+ const getCodeReturn = { c: 0, lc: 0 };
540
+ function getCode(po, rlc, c, lc, uInt8Array, inOffset, outBuffer, outBufferOffset, outBufferEndOffset) {
541
+ if (po == rlc) {
542
+ if (lc < 8) {
543
+ getChar(c, lc, uInt8Array, inOffset);
544
+ c = getCharReturn.c;
545
+ lc = getCharReturn.lc;
546
+ }
547
+ lc -= 8;
548
+ let cs = (c >> lc);
549
+ cs = new Uint8Array([cs])[0];
550
+ if (outBufferOffset.value + cs > outBufferEndOffset) {
551
+ return false;
552
+ }
553
+ const s = outBuffer[outBufferOffset.value - 1];
554
+ while (cs-- > 0) {
555
+ outBuffer[outBufferOffset.value++] = s;
556
+ }
557
+ }
558
+ else if (outBufferOffset.value < outBufferEndOffset) {
559
+ outBuffer[outBufferOffset.value++] = po;
560
+ }
561
+ else {
562
+ return false;
563
+ }
564
+ getCodeReturn.c = c;
565
+ getCodeReturn.lc = lc;
566
+ }
567
+ function UInt16(value) {
568
+ return (value & 0xFFFF);
569
+ }
570
+ function Int16(value) {
571
+ const ref = UInt16(value);
572
+ return (ref > 0x7FFF) ? ref - 0x10000 : ref;
573
+ }
574
+ const wdec14Return = { a: 0, b: 0 };
575
+ function wdec14(l, h) {
576
+ const ls = Int16(l);
577
+ const hs = Int16(h);
578
+ const hi = hs;
579
+ const ai = ls + (hi & 1) + (hi >> 1);
580
+ const as = ai;
581
+ const bs = ai - hi;
582
+ wdec14Return.a = as;
583
+ wdec14Return.b = bs;
584
+ }
585
+ function wdec16(l, h) {
586
+ const m = UInt16(l);
587
+ const d = UInt16(h);
588
+ const bb = (m - (d >> 1)) & MOD_MASK;
589
+ const aa = (d + bb - A_OFFSET) & MOD_MASK;
590
+ wdec14Return.a = aa;
591
+ wdec14Return.b = bb;
592
+ }
593
+ function wav2Decode(buffer, j, nx, ox, ny, oy, mx) {
594
+ const w14 = mx < (1 << 14);
595
+ const n = (nx > ny) ? ny : nx;
596
+ let p = 1;
597
+ let p2;
598
+ let py;
599
+ while (p <= n)
600
+ p <<= 1;
601
+ p >>= 1;
602
+ p2 = p;
603
+ p >>= 1;
604
+ while (p >= 1) {
605
+ py = 0;
606
+ const ey = py + oy * (ny - p2);
607
+ const oy1 = oy * p;
608
+ const oy2 = oy * p2;
609
+ const ox1 = ox * p;
610
+ const ox2 = ox * p2;
611
+ let i00, i01, i10, i11;
612
+ for (; py <= ey; py += oy2) {
613
+ let px = py;
614
+ const ex = py + ox * (nx - p2);
615
+ for (; px <= ex; px += ox2) {
616
+ const p01 = px + ox1;
617
+ const p10 = px + oy1;
618
+ const p11 = p10 + ox1;
619
+ if (w14) {
620
+ wdec14(buffer[px + j], buffer[p10 + j]);
621
+ i00 = wdec14Return.a;
622
+ i10 = wdec14Return.b;
623
+ wdec14(buffer[p01 + j], buffer[p11 + j]);
624
+ i01 = wdec14Return.a;
625
+ i11 = wdec14Return.b;
626
+ wdec14(i00, i01);
627
+ buffer[px + j] = wdec14Return.a;
628
+ buffer[p01 + j] = wdec14Return.b;
629
+ wdec14(i10, i11);
630
+ buffer[p10 + j] = wdec14Return.a;
631
+ buffer[p11 + j] = wdec14Return.b;
632
+ }
633
+ else {
634
+ wdec16(buffer[px + j], buffer[p10 + j]);
635
+ i00 = wdec14Return.a;
636
+ i10 = wdec14Return.b;
637
+ wdec16(buffer[p01 + j], buffer[p11 + j]);
638
+ i01 = wdec14Return.a;
639
+ i11 = wdec14Return.b;
640
+ wdec16(i00, i01);
641
+ buffer[px + j] = wdec14Return.a;
642
+ buffer[p01 + j] = wdec14Return.b;
643
+ wdec16(i10, i11);
644
+ buffer[p10 + j] = wdec14Return.a;
645
+ buffer[p11 + j] = wdec14Return.b;
646
+ }
647
+ }
648
+ if (nx & p) {
649
+ const p10 = px + oy1;
650
+ if (w14)
651
+ wdec14(buffer[px + j], buffer[p10 + j]);
652
+ else
653
+ wdec16(buffer[px + j], buffer[p10 + j]);
654
+ i00 = wdec14Return.a;
655
+ buffer[p10 + j] = wdec14Return.b;
656
+ buffer[px + j] = i00;
657
+ }
658
+ }
659
+ if (ny & p) {
660
+ let px = py;
661
+ const ex = py + ox * (nx - p2);
662
+ for (; px <= ex; px += ox2) {
663
+ const p01 = px + ox1;
664
+ if (w14)
665
+ wdec14(buffer[px + j], buffer[p01 + j]);
666
+ else
667
+ wdec16(buffer[px + j], buffer[p01 + j]);
668
+ i00 = wdec14Return.a;
669
+ buffer[p01 + j] = wdec14Return.b;
670
+ buffer[px + j] = i00;
671
+ }
672
+ }
673
+ p2 = p;
674
+ p >>= 1;
675
+ }
676
+ return py;
677
+ }
678
+ function hufDecode(encodingTable, decodingTable, uInt8Array, inOffset, ni, rlc, no, outBuffer, outOffset) {
679
+ let c = 0;
680
+ let lc = 0;
681
+ const outBufferEndOffset = no;
682
+ const inOffsetEnd = Math.trunc(inOffset.value + (ni + 7) / 8);
683
+ while (inOffset.value < inOffsetEnd) {
684
+ getChar(c, lc, uInt8Array, inOffset);
685
+ c = getCharReturn.c;
686
+ lc = getCharReturn.lc;
687
+ while (lc >= HUF_DECBITS) {
688
+ const index = (c >> (lc - HUF_DECBITS)) & HUF_DECMASK;
689
+ const pl = decodingTable[index];
690
+ if (pl.len) {
691
+ lc -= pl.len;
692
+ getCode(pl.lit, rlc, c, lc, uInt8Array, inOffset, outBuffer, outOffset, outBufferEndOffset);
693
+ c = getCodeReturn.c;
694
+ lc = getCodeReturn.lc;
695
+ }
696
+ else {
697
+ if (!pl.p) {
698
+ throw new Error('EXRLoader: hufDecode issues');
699
+ }
700
+ let j;
701
+ for (j = 0; j < pl.lit; j++) {
702
+ const l = hufLength(encodingTable[pl.p[j]]);
703
+ while (lc < l && inOffset.value < inOffsetEnd) {
704
+ getChar(c, lc, uInt8Array, inOffset);
705
+ c = getCharReturn.c;
706
+ lc = getCharReturn.lc;
707
+ }
708
+ if (lc >= l) {
709
+ if (hufCode(encodingTable[pl.p[j]]) == ((c >> (lc - l)) & ((1 << l) - 1))) {
710
+ lc -= l;
711
+ getCode(pl.p[j], rlc, c, lc, uInt8Array, inOffset, outBuffer, outOffset, outBufferEndOffset);
712
+ c = getCodeReturn.c;
713
+ lc = getCodeReturn.lc;
714
+ break;
715
+ }
716
+ }
717
+ }
718
+ if (j == pl.lit) {
719
+ throw new Error('EXRLoader: hufDecode issues');
720
+ }
721
+ }
722
+ }
723
+ }
724
+ const i = (8 - ni) & 7;
725
+ c >>= i;
726
+ lc -= i;
727
+ while (lc > 0) {
728
+ const pl = decodingTable[(c << (HUF_DECBITS - lc)) & HUF_DECMASK];
729
+ if (pl.len) {
730
+ lc -= pl.len;
731
+ getCode(pl.lit, rlc, c, lc, uInt8Array, inOffset, outBuffer, outOffset, outBufferEndOffset);
732
+ c = getCodeReturn.c;
733
+ lc = getCodeReturn.lc;
734
+ }
735
+ else {
736
+ throw new Error('EXRLoader: hufDecode issues');
737
+ }
738
+ }
739
+ return true;
740
+ }
741
+ function hufUncompress(uInt8Array, inDataView, inOffset, nCompressed, outBuffer, nRaw) {
742
+ const outOffset = { value: 0 };
743
+ const initialInOffset = inOffset.value;
744
+ const im = parseUint32(inDataView, inOffset);
745
+ const iM = parseUint32(inDataView, inOffset);
746
+ inOffset.value += 4;
747
+ const nBits = parseUint32(inDataView, inOffset);
748
+ inOffset.value += 4;
749
+ if (im < 0 || im >= HUF_ENCSIZE || iM < 0 || iM >= HUF_ENCSIZE) {
750
+ throw new Error('EXRLoader: Something wrong with HUF_ENCSIZE');
751
+ }
752
+ const freq = new Array(HUF_ENCSIZE);
753
+ const hdec = new Array(HUF_DECSIZE);
754
+ hufClearDecTable(hdec);
755
+ const ni = nCompressed - (inOffset.value - initialInOffset);
756
+ hufUnpackEncTable(uInt8Array, inOffset, ni, im, iM, freq);
757
+ if (nBits > 8 * (nCompressed - (inOffset.value - initialInOffset))) {
758
+ throw new Error('EXRLoader: Something wrong with hufUncompress');
759
+ }
760
+ hufBuildDecTable(freq, im, iM, hdec);
761
+ hufDecode(freq, hdec, uInt8Array, inOffset, nBits, iM, nRaw, outBuffer, outOffset);
762
+ }
763
+ function applyLut(lut, data, nData) {
764
+ for (let i = 0; i < nData; ++i) {
765
+ data[i] = lut[data[i]];
766
+ }
767
+ }
768
+ function predictor(source) {
769
+ for (let t = 1; t < source.length; t++) {
770
+ const d = source[t - 1] + source[t] - 128;
771
+ source[t] = d;
772
+ }
773
+ }
774
+ function interleaveScalar(source, out) {
775
+ let t1 = 0;
776
+ let t2 = Math.floor((source.length + 1) / 2);
777
+ let s = 0;
778
+ const stop = source.length - 1;
779
+ while (true) {
780
+ if (s > stop)
781
+ break;
782
+ out[s++] = source[t1++];
783
+ if (s > stop)
784
+ break;
785
+ out[s++] = source[t2++];
786
+ }
787
+ }
788
+ function decodeRunLength(source) {
789
+ let size = source.byteLength;
790
+ const out = new Array();
791
+ let p = 0;
792
+ const reader = new DataView(source);
793
+ while (size > 0) {
794
+ const l = reader.getInt8(p++);
795
+ if (l < 0) {
796
+ const count = -l;
797
+ size -= count + 1;
798
+ for (let i = 0; i < count; i++) {
799
+ out.push(reader.getUint8(p++));
800
+ }
801
+ }
802
+ else {
803
+ const count = l;
804
+ size -= 2;
805
+ const value = reader.getUint8(p++);
806
+ for (let i = 0; i < count + 1; i++) {
807
+ out.push(value);
808
+ }
809
+ }
810
+ }
811
+ return out;
812
+ }
813
+ function uncompressRAW(info) {
814
+ return new DataView(info.array.buffer, info.offset.value, info.size);
815
+ }
816
+ function uncompressRLE(info) {
817
+ const compressed = info.viewer.buffer.slice(info.offset.value, info.offset.value + info.size);
818
+ const rawBuffer = new Uint8Array(decodeRunLength(compressed));
819
+ const tmpBuffer = new Uint8Array(rawBuffer.length);
820
+ predictor(rawBuffer); // revert predictor
821
+ interleaveScalar(rawBuffer, tmpBuffer); // interleave pixels
822
+ return new DataView(tmpBuffer.buffer);
823
+ }
824
+ async function uncompressZIP(info) {
825
+ const compressed = info.array.slice(info.offset.value, info.offset.value + info.size);
826
+ const rawBuffer = await inflateZlib(compressed);
827
+ const tmpBuffer = new Uint8Array(rawBuffer.length);
828
+ predictor(rawBuffer); // revert predictor
829
+ interleaveScalar(rawBuffer, tmpBuffer); // interleave pixels
830
+ return new DataView(tmpBuffer.buffer);
831
+ }
832
+ function uncompressPIZ(info) {
833
+ const inDataView = info.viewer;
834
+ const inOffset = { value: info.offset.value };
835
+ const outBuffer = new Uint16Array(info.columns * info.lines * (info.inputChannels.length * info.type));
836
+ const bitmap = new Uint8Array(BITMAP_SIZE);
837
+ // Setup channel info
838
+ let outBufferEnd = 0;
839
+ const pizChannelData = new Array(info.inputChannels.length);
840
+ for (let i = 0, il = info.inputChannels.length; i < il; i++) {
841
+ pizChannelData[i] = {};
842
+ pizChannelData[i]['start'] = outBufferEnd;
843
+ pizChannelData[i]['end'] = pizChannelData[i]['start'];
844
+ pizChannelData[i]['nx'] = info.columns;
845
+ pizChannelData[i]['ny'] = info.lines;
846
+ pizChannelData[i]['size'] = info.type;
847
+ outBufferEnd += pizChannelData[i].nx * pizChannelData[i].ny * pizChannelData[i].size;
848
+ }
849
+ // Read range compression data
850
+ const minNonZero = parseUint16(inDataView, inOffset);
851
+ const maxNonZero = parseUint16(inDataView, inOffset);
852
+ if (maxNonZero >= BITMAP_SIZE) {
853
+ throw new Error('EXRLoader: Something is wrong with PIZ_COMPRESSION BITMAP_SIZE');
854
+ }
855
+ if (minNonZero <= maxNonZero) {
856
+ for (let i = 0; i < maxNonZero - minNonZero + 1; i++) {
857
+ bitmap[i + minNonZero] = parseUint8(inDataView, inOffset);
858
+ }
859
+ }
860
+ // Reverse LUT
861
+ const lut = new Uint16Array(USHORT_RANGE);
862
+ const maxValue = reverseLutFromBitmap(bitmap, lut);
863
+ const length = parseUint32(inDataView, inOffset);
864
+ // Huffman decoding
865
+ hufUncompress(info.array, inDataView, inOffset, length, outBuffer, outBufferEnd);
866
+ // Wavelet decoding
867
+ for (let i = 0; i < info.inputChannels.length; ++i) {
868
+ const cd = pizChannelData[i];
869
+ for (let j = 0; j < pizChannelData[i].size; ++j) {
870
+ wav2Decode(outBuffer, cd.start + j, cd.nx, cd.size, cd.ny, cd.nx * cd.size, maxValue);
871
+ }
872
+ }
873
+ // Expand the pixel data to their original range
874
+ applyLut(lut, outBuffer, outBufferEnd);
875
+ // Rearrange the pixel data into the format expected by the caller.
876
+ let tmpOffset = 0;
877
+ const tmpBuffer = new Uint8Array(outBuffer.buffer.byteLength);
878
+ for (let y = 0; y < info.lines; y++) {
879
+ for (let c = 0; c < info.inputChannels.length; c++) {
880
+ const cd = pizChannelData[c];
881
+ const n = cd.nx * cd.size;
882
+ const cp = new Uint8Array(outBuffer.buffer, cd.end * INT16_SIZE, n * INT16_SIZE);
883
+ tmpBuffer.set(cp, tmpOffset);
884
+ tmpOffset += n * INT16_SIZE;
885
+ cd.end += n;
886
+ }
887
+ }
888
+ return new DataView(tmpBuffer.buffer);
889
+ }
890
+ async function parseScanline() {
891
+ const EXRDecoder = this;
892
+ const offset = EXRDecoder.offset;
893
+ const tmpOffset = { value: 0 };
894
+ for (let scanlineBlockIdx = 0; scanlineBlockIdx < EXRDecoder.height / EXRDecoder.blockHeight; scanlineBlockIdx++) {
895
+ const line = parseInt32(EXRDecoder.viewer, offset) - EXRHeader.dataWindow.yMin; // line_no
896
+ EXRDecoder.size = parseUint32(EXRDecoder.viewer, offset); // data_len
897
+ EXRDecoder.lines = ((line + EXRDecoder.blockHeight > EXRDecoder.height) ? (EXRDecoder.height - line) : EXRDecoder.blockHeight);
898
+ const bytesPerLine = EXRDecoder.columns * EXRDecoder.totalBytes;
899
+ const isCompressed = EXRDecoder.size < EXRDecoder.lines * bytesPerLine;
900
+ const viewer = isCompressed ? await EXRDecoder.uncompress(EXRDecoder) : uncompressRAW(EXRDecoder);
901
+ offset.value += EXRDecoder.size;
902
+ for (let line_y = 0; line_y < EXRDecoder.lines; line_y++) {
903
+ const true_y = line + line_y;
904
+ const lineOffset = line_y * bytesPerLine;
905
+ const outLineOffset = (EXRDecoder.height - 1 - true_y) * EXRDecoder.outLineWidth;
906
+ for (let channelID = 0; channelID < EXRDecoder.inputChannels.length; channelID++) {
907
+ const name = EXRHeader.channels[channelID].name;
908
+ const lOff = EXRDecoder.channelByteOffsets[name] * EXRDecoder.columns;
909
+ const cOff = EXRDecoder.decodeChannels[name];
910
+ if (cOff === undefined)
911
+ continue;
912
+ tmpOffset.value = lineOffset + lOff;
913
+ for (let x = 0; x < EXRDecoder.columns; x++) {
914
+ const outIndex = outLineOffset + x * EXRDecoder.outputChannels + cOff;
915
+ EXRDecoder.byteArray[outIndex] = EXRDecoder.getter(viewer, tmpOffset);
916
+ }
917
+ }
918
+ }
919
+ }
920
+ }
921
+ async function parseMultiPartScanline() {
922
+ const EXRDecoder = this;
923
+ const chunkOffsets = EXRDecoder.chunkOffsets;
924
+ const tmpOffset = { value: 0 };
925
+ for (let chunkIdx = 0; chunkIdx < chunkOffsets.length; chunkIdx++) {
926
+ const offset = { value: chunkOffsets[chunkIdx] };
927
+ offset.value += INT32_SIZE; // skip part number
928
+ const line = parseInt32(EXRDecoder.viewer, offset) - EXRHeader.dataWindow.yMin;
929
+ EXRDecoder.size = parseUint32(EXRDecoder.viewer, offset);
930
+ EXRDecoder.lines = ((line + EXRDecoder.blockHeight > EXRDecoder.height) ? (EXRDecoder.height - line) : EXRDecoder.blockHeight);
931
+ const bytesPerLine = EXRDecoder.columns * EXRDecoder.totalBytes;
932
+ const isCompressed = EXRDecoder.size < EXRDecoder.lines * bytesPerLine;
933
+ const savedOffset = EXRDecoder.offset;
934
+ EXRDecoder.offset = offset;
935
+ const viewer = isCompressed ? await EXRDecoder.uncompress(EXRDecoder) : uncompressRAW(EXRDecoder);
936
+ EXRDecoder.offset = savedOffset;
937
+ for (let line_y = 0; line_y < EXRDecoder.lines; line_y++) {
938
+ const true_y = line + line_y;
939
+ const lineOffset = line_y * bytesPerLine;
940
+ const outLineOffset = (EXRDecoder.height - 1 - true_y) * EXRDecoder.outLineWidth;
941
+ for (let channelID = 0; channelID < EXRDecoder.inputChannels.length; channelID++) {
942
+ const name = EXRHeader.channels[channelID].name;
943
+ const lOff = EXRDecoder.channelByteOffsets[name] * EXRDecoder.columns;
944
+ const cOff = EXRDecoder.decodeChannels[name];
945
+ if (cOff === undefined)
946
+ continue;
947
+ tmpOffset.value = lineOffset + lOff;
948
+ for (let x = 0; x < EXRDecoder.columns; x++) {
949
+ const outIndex = outLineOffset + x * EXRDecoder.outputChannels + cOff;
950
+ EXRDecoder.byteArray[outIndex] = EXRDecoder.getter(viewer, tmpOffset);
951
+ }
952
+ }
953
+ }
954
+ }
955
+ }
956
+ function parsePartHeader(dataView, buffer, offset) {
957
+ const header = {};
958
+ let hasAttributes = false;
959
+ while (true) {
960
+ const attributeName = parseNullTerminatedString(buffer, offset);
961
+ if (attributeName === '')
962
+ break;
963
+ hasAttributes = true;
964
+ const attributeType = parseNullTerminatedString(buffer, offset);
965
+ const attributeSize = parseUint32(dataView, offset);
966
+ const attributeValue = parseValue(dataView, buffer, offset, attributeType, attributeSize);
967
+ if (attributeValue === undefined) {
968
+ warn(`EXRLoader: Skipped unknown header attribute type '${attributeType}'.`);
969
+ }
970
+ else {
971
+ header[attributeName] = attributeValue;
972
+ }
973
+ }
974
+ return hasAttributes ? header : null;
975
+ }
976
+ function parseHeader(dataView, buffer, offset) {
977
+ if (dataView.getUint32(0, true) != 20000630) {
978
+ throw new AssetLoadError("EXRLoader: Provided file doesn't appear to be in OpenEXR format.", "exr");
979
+ }
980
+ const version = dataView.getUint8(4);
981
+ const spec = dataView.getUint8(5);
982
+ const flags = {
983
+ singleTile: !!(spec & 2),
984
+ longName: !!(spec & 4),
985
+ deepFormat: !!(spec & 8),
986
+ multiPart: !!(spec & 16),
987
+ };
988
+ // start of header
989
+ offset.value = 8; // start at 8 - after pre-amble
990
+ const headers = [];
991
+ if (flags.multiPart) {
992
+ while (true) {
993
+ const header = parsePartHeader(dataView, buffer, offset);
994
+ if (header === null)
995
+ break;
996
+ header.version = version;
997
+ header.spec = flags;
998
+ headers.push(header);
999
+ }
1000
+ if (headers.length === 0) {
1001
+ throw new AssetLoadError("EXRLoader: No valid part headers found.", "exr");
1002
+ }
1003
+ }
1004
+ else {
1005
+ const header = parsePartHeader(dataView, buffer, offset);
1006
+ if (header === null) {
1007
+ throw new AssetLoadError("EXRLoader: Missing EXR header attributes.", "exr");
1008
+ }
1009
+ header.version = version;
1010
+ header.spec = flags;
1011
+ headers.push(header);
1012
+ }
1013
+ return headers;
1014
+ }
1015
+ function setupDecoder(EXRHeader, dataView, uInt8Array, offset) {
1016
+ const EXRDecoder = {
1017
+ size: 0,
1018
+ viewer: dataView,
1019
+ array: uInt8Array,
1020
+ offset: offset,
1021
+ width: EXRHeader.dataWindow.xMax - EXRHeader.dataWindow.xMin + 1,
1022
+ height: EXRHeader.dataWindow.yMax - EXRHeader.dataWindow.yMin + 1,
1023
+ inputChannels: EXRHeader.channels,
1024
+ channelByteOffsets: {},
1025
+ shouldExpand: false,
1026
+ yCbCr: false,
1027
+ totalBytes: null,
1028
+ columns: null,
1029
+ lines: null,
1030
+ type: null,
1031
+ uncompress: null,
1032
+ getter: null,
1033
+ format: null,
1034
+ };
1035
+ switch (EXRHeader.compression) {
1036
+ case 'NO_COMPRESSION':
1037
+ EXRDecoder.blockHeight = 1;
1038
+ EXRDecoder.uncompress = uncompressRAW;
1039
+ break;
1040
+ case 'RLE_COMPRESSION':
1041
+ EXRDecoder.blockHeight = 1;
1042
+ EXRDecoder.uncompress = uncompressRLE;
1043
+ break;
1044
+ case 'ZIPS_COMPRESSION':
1045
+ EXRDecoder.blockHeight = 1;
1046
+ EXRDecoder.uncompress = uncompressZIP;
1047
+ break;
1048
+ case 'ZIP_COMPRESSION':
1049
+ EXRDecoder.blockHeight = 16;
1050
+ EXRDecoder.uncompress = uncompressZIP;
1051
+ break;
1052
+ case 'PIZ_COMPRESSION':
1053
+ EXRDecoder.blockHeight = 32;
1054
+ EXRDecoder.uncompress = uncompressPIZ;
1055
+ break;
1056
+ default:
1057
+ // AD-03 scope: PXR24, B44/A, DWA/B and deep data are out of the lane's
1058
+ // required compression family — fail loudly rather than mis-decoding.
1059
+ throw new AssetLoadError(`EXRLoader: ${EXRHeader.compression} is unsupported (supported: none, RLE, ZIPS, ZIP, PIZ).`, "exr");
1060
+ }
1061
+ const channels = {};
1062
+ for (const channel of EXRHeader.channels) {
1063
+ switch (channel.name) {
1064
+ case 'Y':
1065
+ case 'R':
1066
+ case 'G':
1067
+ case 'B':
1068
+ case 'A':
1069
+ channels[channel.name] = true;
1070
+ EXRDecoder.type = channel.pixelType;
1071
+ break;
1072
+ case 'RY':
1073
+ case 'BY':
1074
+ channels[channel.name] = true;
1075
+ EXRDecoder.yCbCr = true;
1076
+ EXRDecoder.type = channel.pixelType;
1077
+ break;
1078
+ default:
1079
+ EXRDecoder.type = channel.pixelType;
1080
+ warn(`EXRLoader: unsupported channel ${channel.name}; decoding anyway (pixelType ${channel.pixelType}).`);
1081
+ }
1082
+ }
1083
+ if (!('A' in channels) && !('R' in channels) && !('Y' in channels)) {
1084
+ throw new AssetLoadError('EXRLoader: no recognizable channels found (expected R/G/B/A, Y or RY/BY).', "exr");
1085
+ }
1086
+ let fillAlpha = false;
1087
+ const channelCount = EXRDecoder.inputChannels.length;
1088
+ let invalidOutput = false;
1089
+ switch (channelCount) {
1090
+ case 4:
1091
+ if (outputFormat === "rgba") {
1092
+ EXRDecoder.format = "rgba";
1093
+ EXRDecoder.outputChannels = 4;
1094
+ EXRDecoder.decodeChannels = { R: 0, G: 1, B: 2, A: 3 };
1095
+ }
1096
+ else if (outputFormat === "rg") {
1097
+ EXRDecoder.format = "rg";
1098
+ EXRDecoder.outputChannels = 2;
1099
+ EXRDecoder.decodeChannels = { R: 0, G: 1 };
1100
+ }
1101
+ else if (outputFormat === "r") {
1102
+ EXRDecoder.format = "r";
1103
+ EXRDecoder.outputChannels = 1;
1104
+ EXRDecoder.decodeChannels = { R: 0 };
1105
+ }
1106
+ else
1107
+ invalidOutput = true;
1108
+ break;
1109
+ case 3:
1110
+ if (outputFormat === "rgba") {
1111
+ fillAlpha = !channels.A;
1112
+ EXRDecoder.format = "rgba";
1113
+ EXRDecoder.outputChannels = 4;
1114
+ EXRDecoder.decodeChannels = { R: 0, G: 1, B: 2, A: 3 };
1115
+ }
1116
+ else if (outputFormat === "rg") {
1117
+ EXRDecoder.format = "rg";
1118
+ EXRDecoder.outputChannels = 2;
1119
+ EXRDecoder.decodeChannels = { R: 0, G: 1 };
1120
+ }
1121
+ else if (outputFormat === "r") {
1122
+ EXRDecoder.format = "r";
1123
+ EXRDecoder.outputChannels = 1;
1124
+ EXRDecoder.decodeChannels = { R: 0 };
1125
+ }
1126
+ else
1127
+ invalidOutput = true;
1128
+ break;
1129
+ case 2:
1130
+ if (outputFormat === "rgba") {
1131
+ fillAlpha = !channels.A;
1132
+ EXRDecoder.format = "rgba";
1133
+ EXRDecoder.outputChannels = 4;
1134
+ EXRDecoder.decodeChannels = { R: 0, G: 1, B: 2, A: 3 };
1135
+ }
1136
+ else if (outputFormat === "rg") {
1137
+ EXRDecoder.format = "rg";
1138
+ EXRDecoder.outputChannels = 2;
1139
+ EXRDecoder.decodeChannels = { R: 0, G: 1 };
1140
+ }
1141
+ else if (outputFormat === "r") {
1142
+ EXRDecoder.format = "r";
1143
+ EXRDecoder.outputChannels = 1;
1144
+ EXRDecoder.decodeChannels = { R: 0 };
1145
+ }
1146
+ else
1147
+ invalidOutput = true;
1148
+ break;
1149
+ case 1:
1150
+ if (outputFormat === "rgba") {
1151
+ fillAlpha = true;
1152
+ EXRDecoder.format = "rgba";
1153
+ EXRDecoder.outputChannels = 4;
1154
+ EXRDecoder.shouldExpand = true;
1155
+ EXRDecoder.decodeChannels = { Y: 0 };
1156
+ }
1157
+ else if (outputFormat === "rg") {
1158
+ EXRDecoder.format = "rg";
1159
+ EXRDecoder.outputChannels = 2;
1160
+ EXRDecoder.shouldExpand = true;
1161
+ EXRDecoder.decodeChannels = { Y: 0 };
1162
+ }
1163
+ else if (outputFormat === "r") {
1164
+ EXRDecoder.format = "r";
1165
+ EXRDecoder.outputChannels = 1;
1166
+ EXRDecoder.decodeChannels = { Y: 0 };
1167
+ }
1168
+ else
1169
+ invalidOutput = true;
1170
+ break;
1171
+ default:
1172
+ invalidOutput = true;
1173
+ }
1174
+ if (invalidOutput) {
1175
+ throw new AssetLoadError('EXRLoader: invalid output format for specified file.', "exr");
1176
+ }
1177
+ // Luminance/chroma images always decode to RGBA.
1178
+ if (EXRDecoder.yCbCr) {
1179
+ EXRDecoder.format = "rgba";
1180
+ EXRDecoder.outputChannels = 4;
1181
+ EXRDecoder.decodeChannels = { Y: 0, RY: 1, BY: 2 };
1182
+ fillAlpha = true;
1183
+ }
1184
+ if (EXRDecoder.type == 1) {
1185
+ // half
1186
+ EXRDecoder.getter = outputType === "float" ? parseFloat16 : parseUint16;
1187
+ }
1188
+ else if (EXRDecoder.type == 2) {
1189
+ // float
1190
+ EXRDecoder.getter = outputType === "float" ? parseFloat32 : decodeFloat32;
1191
+ }
1192
+ else {
1193
+ throw new AssetLoadError(`EXRLoader: unsupported pixelType ${EXRDecoder.type} for ${EXRHeader.compression}.`, "exr");
1194
+ }
1195
+ EXRDecoder.columns = EXRDecoder.width;
1196
+ const size = EXRDecoder.width * EXRDecoder.height * EXRDecoder.outputChannels;
1197
+ if (outputType === "float") {
1198
+ EXRDecoder.byteArray = new Float32Array(size);
1199
+ if (fillAlpha)
1200
+ EXRDecoder.byteArray.fill(1, 0, size);
1201
+ }
1202
+ else {
1203
+ EXRDecoder.byteArray = new Uint16Array(size);
1204
+ if (fillAlpha)
1205
+ EXRDecoder.byteArray.fill(0x3C00, 0, size); // half 1.0
1206
+ }
1207
+ let byteOffset = 0;
1208
+ for (const channel of EXRHeader.channels) {
1209
+ if (EXRDecoder.decodeChannels[channel.name] !== undefined) {
1210
+ EXRDecoder.channelByteOffsets[channel.name] = byteOffset;
1211
+ }
1212
+ byteOffset += channel.pixelType * 2;
1213
+ }
1214
+ EXRDecoder.totalBytes = byteOffset;
1215
+ EXRDecoder.outLineWidth = EXRDecoder.width * EXRDecoder.outputChannels;
1216
+ if (EXRHeader.spec.deepFormat) {
1217
+ throw new AssetLoadError('EXRLoader: deep image data is unsupported.', "exr");
1218
+ }
1219
+ else if (EXRHeader.spec.singleTile) {
1220
+ EXRDecoder.blockHeight = EXRHeader.tiles.ySize;
1221
+ EXRDecoder.blockWidth = EXRHeader.tiles.xSize;
1222
+ const numXLevels = calculateTileLevels(EXRHeader.tiles, EXRDecoder.width, EXRDecoder.height);
1223
+ const numXTiles = calculateTiles(numXLevels, EXRDecoder.width, EXRHeader.tiles.xSize, EXRHeader.tiles.roundingMode);
1224
+ const numYTiles = calculateTiles(numXLevels, EXRDecoder.height, EXRHeader.tiles.ySize, EXRHeader.tiles.roundingMode);
1225
+ EXRDecoder.tileCount = numXTiles[0] * numYTiles[0];
1226
+ for (let l = 0; l < numXLevels; l++)
1227
+ for (let y = 0; y < numYTiles[l]; y++)
1228
+ for (let x = 0; x < numXTiles[l]; x++)
1229
+ parseInt64(dataView, offset); // tileOffset
1230
+ EXRDecoder.decode = parseTiles.bind(EXRDecoder);
1231
+ }
1232
+ else if (EXRHeader.spec.multiPart) {
1233
+ EXRDecoder.blockWidth = EXRDecoder.width;
1234
+ EXRDecoder.chunkOffsets = EXRHeader._chunkOffsets;
1235
+ EXRDecoder.decode = parseMultiPartScanline.bind(EXRDecoder);
1236
+ }
1237
+ else {
1238
+ EXRDecoder.blockWidth = EXRDecoder.width;
1239
+ const blockCount = Math.ceil(EXRDecoder.height / EXRDecoder.blockHeight);
1240
+ for (let i = 0; i < blockCount; i++)
1241
+ parseInt64(dataView, offset); // scanlineOffset
1242
+ EXRDecoder.decode = parseScanline.bind(EXRDecoder);
1243
+ }
1244
+ return EXRDecoder;
1245
+ }
1246
+ // start parsing file
1247
+ const offset = { value: 0 };
1248
+ const bufferDataView = new DataView(buffer);
1249
+ const uInt8Array = new Uint8Array(buffer);
1250
+ const EXRHeaders = parseHeader(bufferDataView, buffer, offset);
1251
+ const EXRHeader = EXRHeaders[Math.min(partIndex, EXRHeaders.length - 1)];
1252
+ if (!EXRHeader) {
1253
+ throw new AssetLoadError("EXRLoader: No EXR headers found.", "exr");
1254
+ }
1255
+ // Multi-part files interleave all parts' chunk-offset tables before the
1256
+ // pixel data; read the selected part's table and skip the rest.
1257
+ if (EXRHeader.spec.multiPart || EXRHeader.spec.deepFormat) {
1258
+ for (let p = 0; p < EXRHeaders.length; p++) {
1259
+ const chunkCount = EXRHeaders[p].chunkCount;
1260
+ if (p === Math.min(partIndex, EXRHeaders.length - 1)) {
1261
+ EXRHeader._chunkOffsets = [];
1262
+ for (let i = 0; i < chunkCount; i++)
1263
+ EXRHeader._chunkOffsets.push(parseInt64(bufferDataView, offset));
1264
+ }
1265
+ else {
1266
+ for (let i = 0; i < chunkCount; i++)
1267
+ parseInt64(bufferDataView, offset);
1268
+ }
1269
+ }
1270
+ }
1271
+ const EXRDecoder = setupDecoder(EXRHeader, bufferDataView, uInt8Array, offset);
1272
+ // parse input data
1273
+ await EXRDecoder.decode();
1274
+ // output texture post-processing
1275
+ if (EXRDecoder.shouldExpand) {
1276
+ const byteArray = EXRDecoder.byteArray;
1277
+ if (outputFormat === "rgba") {
1278
+ for (let i = 0; i < byteArray.length; i += 4)
1279
+ byteArray[i + 2] = (byteArray[i + 1] = byteArray[i]);
1280
+ }
1281
+ else if (outputFormat === "rg") {
1282
+ for (let i = 0; i < byteArray.length; i += 2)
1283
+ byteArray[i + 1] = byteArray[i];
1284
+ }
1285
+ }
1286
+ // Luminance/chroma → RGB (Rec.709): R = (1+RY)·Y, B = (1+BY)·Y,
1287
+ // G = (Y − R·0.2126 − B·0.0722) / 0.7152 — same as three's second pass.
1288
+ if (EXRDecoder.yCbCr) {
1289
+ const byteArray = EXRDecoder.byteArray;
1290
+ const nPixels = EXRDecoder.width * EXRDecoder.height;
1291
+ if (outputType === "half") {
1292
+ for (let i = 0; i < nPixels; i++) {
1293
+ const base = i * 4;
1294
+ const Y = decodeFloat16(byteArray[base]);
1295
+ const RY = decodeFloat16(byteArray[base + 1]);
1296
+ const BY = decodeFloat16(byteArray[base + 2]);
1297
+ const R = (1 + RY) * Y;
1298
+ const B = (1 + BY) * Y;
1299
+ const G = (Y - R * 0.2126 - B * 0.0722) / 0.7152;
1300
+ byteArray[base] = toHalfFloat(Math.max(0, R));
1301
+ byteArray[base + 1] = toHalfFloat(Math.max(0, G));
1302
+ byteArray[base + 2] = toHalfFloat(Math.max(0, B));
1303
+ }
1304
+ }
1305
+ else {
1306
+ for (let i = 0; i < nPixels; i++) {
1307
+ const base = i * 4;
1308
+ const Y = byteArray[base];
1309
+ const RY = byteArray[base + 1];
1310
+ const BY = byteArray[base + 2];
1311
+ const R = (1 + RY) * Y;
1312
+ const B = (1 + BY) * Y;
1313
+ byteArray[base] = Math.max(0, R);
1314
+ byteArray[base + 1] = Math.max(0, (Y - R * 0.2126 - B * 0.0722) / 0.7152);
1315
+ byteArray[base + 2] = Math.max(0, B);
1316
+ }
1317
+ }
1318
+ }
1319
+ return {
1320
+ width: EXRDecoder.width,
1321
+ height: EXRDecoder.height,
1322
+ data: EXRDecoder.byteArray,
1323
+ channels: EXRDecoder.outputChannels,
1324
+ type: outputType,
1325
+ format: EXRDecoder.format,
1326
+ colorSpace: "linear",
1327
+ flipY: false,
1328
+ generateMipmaps: false,
1329
+ header: EXRHeader,
1330
+ };
1331
+ }
1332
+ /**
1333
+ * `new THREE.EXRLoader()` — real async decode. Works standalone
1334
+ * (`load(url, onLoad?, onProgress?, onError?)` → `Promise<AuraEXRTextureData>`)
1335
+ * and as an `AssetManager` loader (`type: "exr"`).
1336
+ *
1337
+ * `type`/`outputFormat`/`part` mirror three's `setDataType`/`setOutputFormat`/
1338
+ * `setPart` builder methods.
1339
+ */
1340
+ export class EXRLoader {
1341
+ type = "exr";
1342
+ outputType = "half";
1343
+ outputFormat = "rgba";
1344
+ part = 0;
1345
+ setDataType(value) {
1346
+ this.outputType = value;
1347
+ return this;
1348
+ }
1349
+ setOutputFormat(value) {
1350
+ this.outputFormat = value;
1351
+ return this;
1352
+ }
1353
+ setPart(value) {
1354
+ this.part = value;
1355
+ return this;
1356
+ }
1357
+ canLoad(request) {
1358
+ return (request.type === this.type || request.type === undefined) && /\.exr(?:\?.*)?$/i.test(request.url);
1359
+ }
1360
+ load(requestOrUrl, contextOrOnLoad, onProgress, onError) {
1361
+ if (typeof requestOrUrl === "string") {
1362
+ const url = requestOrUrl;
1363
+ const onLoad = typeof contextOrOnLoad === "function" ? contextOrOnLoad : undefined;
1364
+ const pending = this.loadBytes(url)
1365
+ .then((data) => { onLoad?.(data); return data; });
1366
+ if (onError)
1367
+ pending.catch(onError);
1368
+ return pending;
1369
+ }
1370
+ const request = requestOrUrl;
1371
+ const context = contextOrOnLoad;
1372
+ context.throwIfAborted(request.url);
1373
+ return this.loadBytes(request.url, request.signal);
1374
+ }
1375
+ /** `parse(buffer)` — three's synchronous-looking parse; async here for zlib. */
1376
+ parse(buffer) {
1377
+ return parseEXR(buffer, { type: this.outputType, outputFormat: this.outputFormat, part: this.part });
1378
+ }
1379
+ async loadBytes(url, signal) {
1380
+ if (typeof fetch !== "function") {
1381
+ throw new AssetLoadError("EXRLoader requires fetch for non-buffer input", url);
1382
+ }
1383
+ const response = await fetch(url, { signal });
1384
+ if (!response.ok) {
1385
+ throw new AssetLoadError(`EXR request failed with ${response.status}`, url);
1386
+ }
1387
+ const buffer = await response.arrayBuffer();
1388
+ try {
1389
+ return await parseEXR(buffer, { type: this.outputType, outputFormat: this.outputFormat, part: this.part });
1390
+ }
1391
+ catch (error) {
1392
+ throw new AssetLoadError(error instanceof Error ? error.message : String(error), url, [], error);
1393
+ }
1394
+ }
1395
+ }
1396
+ /** Alias matching three's export name where an explicit class is wanted. */
1397
+ export { EXRLoader as EXRLoaderThreeCompat };
1398
+ //# sourceMappingURL=EXRLoader.js.map