@aura3d/engine 4.3.7 → 4.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (577) hide show
  1. package/README.md +1 -0
  2. package/dist/animation/AnimationTrack.d.ts.map +1 -1
  3. package/dist/animation/AnimationTrack.js +3 -1
  4. package/dist/animation/AnimationTrack.js.map +1 -1
  5. package/dist/animation/pose/BoneMask.d.ts +8 -0
  6. package/dist/animation/pose/BoneMask.d.ts.map +1 -1
  7. package/dist/animation/pose/BoneMask.js +18 -1
  8. package/dist/animation/pose/BoneMask.js.map +1 -1
  9. package/dist/animation/pose/PoseMixer.d.ts +18 -2
  10. package/dist/animation/pose/PoseMixer.d.ts.map +1 -1
  11. package/dist/animation/pose/PoseMixer.js +55 -4
  12. package/dist/animation/pose/PoseMixer.js.map +1 -1
  13. package/dist/animation/pose/RetargetWorker.d.ts +8 -1
  14. package/dist/animation/pose/RetargetWorker.d.ts.map +1 -1
  15. package/dist/animation/pose/RetargetWorker.js +30 -2
  16. package/dist/animation/pose/RetargetWorker.js.map +1 -1
  17. package/dist/assets/GLTFAnimationRuntime.d.ts.map +1 -1
  18. package/dist/assets/GLTFAnimationRuntime.js +11 -4
  19. package/dist/assets/GLTFAnimationRuntime.js.map +1 -1
  20. package/dist/assets/GLTFLoader.d.ts +2 -0
  21. package/dist/assets/GLTFLoader.d.ts.map +1 -1
  22. package/dist/assets/GLTFLoader.js +17 -3
  23. package/dist/assets/GLTFLoader.js.map +1 -1
  24. package/dist/aura3d-cli/index.d.ts +6 -0
  25. package/dist/aura3d-cli/index.d.ts.map +1 -1
  26. package/dist/aura3d-cli/index.js +28 -0
  27. package/dist/aura3d-cli/index.js.map +1 -1
  28. package/dist/aura3d-cli/migrate-three/emit.d.ts.map +1 -1
  29. package/dist/aura3d-cli/migrate-three/emit.js +109 -29
  30. package/dist/aura3d-cli/migrate-three/emit.js.map +1 -1
  31. package/dist/aura3d-cli/migrate-three/mappings.d.ts +15 -0
  32. package/dist/aura3d-cli/migrate-three/mappings.d.ts.map +1 -1
  33. package/dist/aura3d-cli/migrate-three/mappings.js +70 -60
  34. package/dist/aura3d-cli/migrate-three/mappings.js.map +1 -1
  35. package/dist/aura3d-cli/migrate-three/parse.d.ts +9 -0
  36. package/dist/aura3d-cli/migrate-three/parse.d.ts.map +1 -1
  37. package/dist/aura3d-cli/migrate-three/parse.js +1 -1
  38. package/dist/aura3d-cli/migrate-three/parse.js.map +1 -1
  39. package/dist/create-aura3d/cli.js +22 -2
  40. package/dist/create-aura3d/cli.js.map +1 -1
  41. package/dist/create-aura3d/index.d.ts +11 -0
  42. package/dist/create-aura3d/index.d.ts.map +1 -1
  43. package/dist/create-aura3d/index.js +9 -2
  44. package/dist/create-aura3d/index.js.map +1 -1
  45. package/dist/create-aura3d/template-assets.d.ts +53 -0
  46. package/dist/create-aura3d/template-assets.d.ts.map +1 -0
  47. package/dist/create-aura3d/template-assets.js +116 -0
  48. package/dist/create-aura3d/template-assets.js.map +1 -0
  49. package/dist/engine/agent-api/Clock.d.ts +9 -3
  50. package/dist/engine/agent-api/Clock.d.ts.map +1 -1
  51. package/dist/engine/agent-api/Clock.js +17 -6
  52. package/dist/engine/agent-api/Clock.js.map +1 -1
  53. package/dist/engine/agent-api/animationMask.d.ts +26 -0
  54. package/dist/engine/agent-api/animationMask.d.ts.map +1 -0
  55. package/dist/engine/agent-api/animationMask.js +38 -0
  56. package/dist/engine/agent-api/animationMask.js.map +1 -0
  57. package/dist/engine/agent-api/app/actorAnimationHandle.d.ts +2 -0
  58. package/dist/engine/agent-api/app/actorAnimationHandle.d.ts.map +1 -1
  59. package/dist/engine/agent-api/app/actorAnimationHandle.js +26 -3
  60. package/dist/engine/agent-api/app/actorAnimationHandle.js.map +1 -1
  61. package/dist/engine/agent-api/app/canvas.d.ts +21 -0
  62. package/dist/engine/agent-api/app/canvas.d.ts.map +1 -1
  63. package/dist/engine/agent-api/app/canvas.js +119 -7
  64. package/dist/engine/agent-api/app/canvas.js.map +1 -1
  65. package/dist/engine/agent-api/app/createAuraApp.d.ts.map +1 -1
  66. package/dist/engine/agent-api/app/createAuraApp.js +153 -14
  67. package/dist/engine/agent-api/app/createAuraApp.js.map +1 -1
  68. package/dist/engine/agent-api/app/frameLoop.d.ts +13 -0
  69. package/dist/engine/agent-api/app/frameLoop.d.ts.map +1 -1
  70. package/dist/engine/agent-api/app/frameLoop.js +118 -15
  71. package/dist/engine/agent-api/app/frameLoop.js.map +1 -1
  72. package/dist/engine/agent-api/app/mountRenderer.d.ts +6 -1
  73. package/dist/engine/agent-api/app/mountRenderer.d.ts.map +1 -1
  74. package/dist/engine/agent-api/app/mountRenderer.js +2 -2
  75. package/dist/engine/agent-api/app/mountRenderer.js.map +1 -1
  76. package/dist/engine/agent-api/app/parentFit.d.ts +20 -2
  77. package/dist/engine/agent-api/app/parentFit.d.ts.map +1 -1
  78. package/dist/engine/agent-api/app/parentFit.js +13 -9
  79. package/dist/engine/agent-api/app/parentFit.js.map +1 -1
  80. package/dist/engine/agent-api/app/renderPath.d.ts +86 -0
  81. package/dist/engine/agent-api/app/renderPath.d.ts.map +1 -0
  82. package/dist/engine/agent-api/app/renderPath.js +269 -0
  83. package/dist/engine/agent-api/app/renderPath.js.map +1 -0
  84. package/dist/engine/agent-api/app/rendererOptions.d.ts +31 -1
  85. package/dist/engine/agent-api/app/rendererOptions.d.ts.map +1 -1
  86. package/dist/engine/agent-api/app/rendererOptions.js +74 -7
  87. package/dist/engine/agent-api/app/rendererOptions.js.map +1 -1
  88. package/dist/engine/agent-api/app/routeState.d.ts.map +1 -1
  89. package/dist/engine/agent-api/app/routeState.js +8 -3
  90. package/dist/engine/agent-api/app/routeState.js.map +1 -1
  91. package/dist/engine/agent-api/app/runtimeNodes.d.ts +2 -0
  92. package/dist/engine/agent-api/app/runtimeNodes.d.ts.map +1 -1
  93. package/dist/engine/agent-api/app/runtimeNodes.js +111 -2
  94. package/dist/engine/agent-api/app/runtimeNodes.js.map +1 -1
  95. package/dist/engine/agent-api/camera/extension.d.ts.map +1 -1
  96. package/dist/engine/agent-api/camera/extension.js +2 -2
  97. package/dist/engine/agent-api/camera/extension.js.map +1 -1
  98. package/dist/engine/agent-api/camera/rigs/fromSpec.d.ts +2 -0
  99. package/dist/engine/agent-api/camera/rigs/fromSpec.d.ts.map +1 -1
  100. package/dist/engine/agent-api/camera/rigs/fromSpec.js +11 -1
  101. package/dist/engine/agent-api/camera/rigs/fromSpec.js.map +1 -1
  102. package/dist/engine/agent-api/compiler/animation.d.ts.map +1 -1
  103. package/dist/engine/agent-api/compiler/animation.js +4 -2
  104. package/dist/engine/agent-api/compiler/animation.js.map +1 -1
  105. package/dist/engine/agent-api/compiler/camera.d.ts.map +1 -1
  106. package/dist/engine/agent-api/compiler/camera.js +10 -0
  107. package/dist/engine/agent-api/compiler/camera.js.map +1 -1
  108. package/dist/engine/agent-api/compiler/compileScene.d.ts +21 -5
  109. package/dist/engine/agent-api/compiler/compileScene.d.ts.map +1 -1
  110. package/dist/engine/agent-api/compiler/compileScene.js +112 -13
  111. package/dist/engine/agent-api/compiler/compileScene.js.map +1 -1
  112. package/dist/engine/agent-api/compiler/contactShadowKey.d.ts +14 -0
  113. package/dist/engine/agent-api/compiler/contactShadowKey.d.ts.map +1 -0
  114. package/dist/engine/agent-api/compiler/contactShadowKey.js +66 -0
  115. package/dist/engine/agent-api/compiler/contactShadowKey.js.map +1 -0
  116. package/dist/engine/agent-api/compiler/environment.d.ts +56 -2
  117. package/dist/engine/agent-api/compiler/environment.d.ts.map +1 -1
  118. package/dist/engine/agent-api/compiler/environment.js +202 -15
  119. package/dist/engine/agent-api/compiler/environment.js.map +1 -1
  120. package/dist/engine/agent-api/compiler/geometry.d.ts +18 -1
  121. package/dist/engine/agent-api/compiler/geometry.d.ts.map +1 -1
  122. package/dist/engine/agent-api/compiler/geometry.js +25 -5
  123. package/dist/engine/agent-api/compiler/geometry.js.map +1 -1
  124. package/dist/engine/agent-api/compiler/lights.d.ts.map +1 -1
  125. package/dist/engine/agent-api/compiler/lights.js +14 -6
  126. package/dist/engine/agent-api/compiler/lights.js.map +1 -1
  127. package/dist/engine/agent-api/compiler/mountedRoots.d.ts +6 -0
  128. package/dist/engine/agent-api/compiler/mountedRoots.d.ts.map +1 -0
  129. package/dist/engine/agent-api/compiler/mountedRoots.js +25 -0
  130. package/dist/engine/agent-api/compiler/mountedRoots.js.map +1 -0
  131. package/dist/engine/agent-api/compiler/observations.d.ts +9 -1
  132. package/dist/engine/agent-api/compiler/observations.d.ts.map +1 -1
  133. package/dist/engine/agent-api/compiler/observations.js +5 -4
  134. package/dist/engine/agent-api/compiler/observations.js.map +1 -1
  135. package/dist/engine/agent-api/compiler/optionCoverage.js +17 -0
  136. package/dist/engine/agent-api/compiler/optionCoverage.js.map +1 -1
  137. package/dist/engine/agent-api/compiler/postprocess.d.ts.map +1 -1
  138. package/dist/engine/agent-api/compiler/postprocess.js +2 -0
  139. package/dist/engine/agent-api/compiler/postprocess.js.map +1 -1
  140. package/dist/engine/agent-api/compiler/primitives.d.ts +34 -0
  141. package/dist/engine/agent-api/compiler/primitives.d.ts.map +1 -1
  142. package/dist/engine/agent-api/compiler/primitives.js +113 -3
  143. package/dist/engine/agent-api/compiler/primitives.js.map +1 -1
  144. package/dist/engine/agent-api/compiler/renderInput.d.ts.map +1 -1
  145. package/dist/engine/agent-api/compiler/renderInput.js +40 -4
  146. package/dist/engine/agent-api/compiler/renderInput.js.map +1 -1
  147. package/dist/engine/agent-api/compiler/renderer.d.ts +6 -4
  148. package/dist/engine/agent-api/compiler/renderer.d.ts.map +1 -1
  149. package/dist/engine/agent-api/compiler/renderer.js +54 -14
  150. package/dist/engine/agent-api/compiler/renderer.js.map +1 -1
  151. package/dist/engine/agent-api/compiler/shadows.d.ts +35 -1
  152. package/dist/engine/agent-api/compiler/shadows.d.ts.map +1 -1
  153. package/dist/engine/agent-api/compiler/shadows.js +103 -4
  154. package/dist/engine/agent-api/compiler/shadows.js.map +1 -1
  155. package/dist/engine/agent-api/diagnostics.d.ts +22 -0
  156. package/dist/engine/agent-api/diagnostics.d.ts.map +1 -1
  157. package/dist/engine/agent-api/diagnostics.js +53 -1
  158. package/dist/engine/agent-api/diagnostics.js.map +1 -1
  159. package/dist/engine/agent-api/feel/extension.d.ts.map +1 -1
  160. package/dist/engine/agent-api/feel/extension.js +2 -1
  161. package/dist/engine/agent-api/feel/extension.js.map +1 -1
  162. package/dist/engine/agent-api/looks/lookFill.d.ts +4 -0
  163. package/dist/engine/agent-api/looks/lookFill.d.ts.map +1 -0
  164. package/dist/engine/agent-api/looks/lookFill.js +29 -0
  165. package/dist/engine/agent-api/looks/lookFill.js.map +1 -0
  166. package/dist/engine/agent-api/looks/lookPresets.d.ts +13 -0
  167. package/dist/engine/agent-api/looks/lookPresets.d.ts.map +1 -1
  168. package/dist/engine/agent-api/looks/lookPresets.js +5 -0
  169. package/dist/engine/agent-api/looks/lookPresets.js.map +1 -1
  170. package/dist/engine/agent-api/looks/looks.d.ts.map +1 -1
  171. package/dist/engine/agent-api/looks/looks.js +6 -0
  172. package/dist/engine/agent-api/looks/looks.js.map +1 -1
  173. package/dist/engine/agent-api/looks/structuralQA.d.ts.map +1 -1
  174. package/dist/engine/agent-api/looks/structuralQA.js +4 -2
  175. package/dist/engine/agent-api/looks/structuralQA.js.map +1 -1
  176. package/dist/engine/agent-api/nodes/game/instanceTransforms.d.ts +5 -4
  177. package/dist/engine/agent-api/nodes/game/instanceTransforms.d.ts.map +1 -1
  178. package/dist/engine/agent-api/nodes/game/instanceTransforms.js +61 -5
  179. package/dist/engine/agent-api/nodes/game/instanceTransforms.js.map +1 -1
  180. package/dist/engine/agent-api/nodes/groups.d.ts.map +1 -1
  181. package/dist/engine/agent-api/nodes/groups.js +2 -1
  182. package/dist/engine/agent-api/nodes/groups.js.map +1 -1
  183. package/dist/engine/agent-api/nodes/instances.d.ts.map +1 -1
  184. package/dist/engine/agent-api/nodes/instances.js +16 -4
  185. package/dist/engine/agent-api/nodes/instances.js.map +1 -1
  186. package/dist/engine/agent-api/nodes/interactions.d.ts +32 -10
  187. package/dist/engine/agent-api/nodes/interactions.d.ts.map +1 -1
  188. package/dist/engine/agent-api/nodes/interactions.js +40 -11
  189. package/dist/engine/agent-api/nodes/interactions.js.map +1 -1
  190. package/dist/engine/agent-api/nodes/model.d.ts +18 -0
  191. package/dist/engine/agent-api/nodes/model.d.ts.map +1 -1
  192. package/dist/engine/agent-api/nodes/model.js +41 -1
  193. package/dist/engine/agent-api/nodes/model.js.map +1 -1
  194. package/dist/engine/agent-api/nodes/optionDiagnostics.d.ts +14 -0
  195. package/dist/engine/agent-api/nodes/optionDiagnostics.d.ts.map +1 -0
  196. package/dist/engine/agent-api/nodes/optionDiagnostics.js +34 -0
  197. package/dist/engine/agent-api/nodes/optionDiagnostics.js.map +1 -0
  198. package/dist/engine/agent-api/nodes/orbitInteraction.d.ts +9 -0
  199. package/dist/engine/agent-api/nodes/orbitInteraction.d.ts.map +1 -0
  200. package/dist/engine/agent-api/nodes/orbitInteraction.js +52 -0
  201. package/dist/engine/agent-api/nodes/orbitInteraction.js.map +1 -0
  202. package/dist/engine/agent-api/nodes/physics.d.ts +26 -0
  203. package/dist/engine/agent-api/nodes/physics.d.ts.map +1 -1
  204. package/dist/engine/agent-api/nodes/physics.js +115 -7
  205. package/dist/engine/agent-api/nodes/physics.js.map +1 -1
  206. package/dist/engine/agent-api/nodes/primitives.d.ts +16 -1
  207. package/dist/engine/agent-api/nodes/primitives.d.ts.map +1 -1
  208. package/dist/engine/agent-api/nodes/primitives.js +27 -1
  209. package/dist/engine/agent-api/nodes/primitives.js.map +1 -1
  210. package/dist/engine/agent-api/nodes/scene.d.ts.map +1 -1
  211. package/dist/engine/agent-api/nodes/scene.js +4 -2
  212. package/dist/engine/agent-api/nodes/scene.js.map +1 -1
  213. package/dist/engine/agent-api/nodes/text3d.d.ts.map +1 -1
  214. package/dist/engine/agent-api/nodes/text3d.js +11 -2
  215. package/dist/engine/agent-api/nodes/text3d.js.map +1 -1
  216. package/dist/engine/agent-api/nodes/types/runtime.d.ts +38 -0
  217. package/dist/engine/agent-api/nodes/types/runtime.d.ts.map +1 -1
  218. package/dist/engine/agent-api/nodes/types.d.ts +44 -0
  219. package/dist/engine/agent-api/nodes/types.d.ts.map +1 -1
  220. package/dist/engine/agent-api/platform.d.ts +5 -0
  221. package/dist/engine/agent-api/platform.d.ts.map +1 -1
  222. package/dist/engine/agent-api/platform.js +15 -0
  223. package/dist/engine/agent-api/platform.js.map +1 -1
  224. package/dist/engine/agent-api/postBridge.d.ts.map +1 -1
  225. package/dist/engine/agent-api/postBridge.js +5 -1
  226. package/dist/engine/agent-api/postBridge.js.map +1 -1
  227. package/dist/engine/agent-api/sceneKitDiagnostics.d.ts.map +1 -1
  228. package/dist/engine/agent-api/sceneKitDiagnostics.js +5 -2
  229. package/dist/engine/agent-api/sceneKitDiagnostics.js.map +1 -1
  230. package/dist/engine/contracts/animation.d.ts +5 -3
  231. package/dist/engine/contracts/animation.d.ts.map +1 -1
  232. package/dist/engine/contracts/animation.js.map +1 -1
  233. package/dist/engine/contracts/environment.d.ts +9 -0
  234. package/dist/engine/contracts/environment.d.ts.map +1 -1
  235. package/dist/engine/contracts/environment.js.map +1 -1
  236. package/dist/engine/contracts/flags.d.ts.map +1 -1
  237. package/dist/engine/contracts/flags.js +2 -1
  238. package/dist/engine/contracts/flags.js.map +1 -1
  239. package/dist/engine/contracts/lighting.d.ts +3 -0
  240. package/dist/engine/contracts/lighting.d.ts.map +1 -1
  241. package/dist/engine/contracts/lighting.js.map +1 -1
  242. package/dist/engine/contracts/stubs/game.d.ts.map +1 -1
  243. package/dist/engine/contracts/stubs/game.js +9 -1
  244. package/dist/engine/contracts/stubs/game.js.map +1 -1
  245. package/dist/engine/contracts/urlCache.d.ts +4 -0
  246. package/dist/engine/contracts/urlCache.d.ts.map +1 -0
  247. package/dist/engine/contracts/urlCache.js +25 -0
  248. package/dist/engine/contracts/urlCache.js.map +1 -0
  249. package/dist/engine/lanes/prd01/outputSurface.d.ts.map +1 -1
  250. package/dist/engine/lanes/prd01/outputSurface.js +25 -1
  251. package/dist/engine/lanes/prd01/outputSurface.js.map +1 -1
  252. package/dist/engine/lanes/prd02.d.ts +12 -4
  253. package/dist/engine/lanes/prd02.d.ts.map +1 -1
  254. package/dist/engine/lanes/prd02.js +23 -7
  255. package/dist/engine/lanes/prd02.js.map +1 -1
  256. package/dist/game/touch/TouchControls.d.ts.map +1 -1
  257. package/dist/game/touch/TouchControls.js +48 -12
  258. package/dist/game/touch/TouchControls.js.map +1 -1
  259. package/dist/math/SphericalHarmonics3.d.ts +6 -3
  260. package/dist/math/SphericalHarmonics3.d.ts.map +1 -1
  261. package/dist/math/SphericalHarmonics3.js +8 -5
  262. package/dist/math/SphericalHarmonics3.js.map +1 -1
  263. package/dist/math/three/Box3.d.ts +106 -0
  264. package/dist/math/three/Box3.d.ts.map +1 -0
  265. package/dist/math/three/Box3.js +348 -0
  266. package/dist/math/three/Box3.js.map +1 -0
  267. package/dist/math/three/Color.d.ts +127 -0
  268. package/dist/math/three/Color.d.ts.map +1 -0
  269. package/dist/math/three/Color.js +501 -0
  270. package/dist/math/three/Color.js.map +1 -0
  271. package/dist/math/three/Euler.d.ts +50 -0
  272. package/dist/math/three/Euler.d.ts.map +1 -0
  273. package/dist/math/three/Euler.js +210 -0
  274. package/dist/math/three/Euler.js.map +1 -0
  275. package/dist/math/three/Frustum.d.ts +59 -0
  276. package/dist/math/three/Frustum.d.ts.map +1 -0
  277. package/dist/math/three/Frustum.js +135 -0
  278. package/dist/math/three/Frustum.js.map +1 -0
  279. package/dist/math/three/Matrix3.d.ts +56 -0
  280. package/dist/math/three/Matrix3.d.ts.map +1 -0
  281. package/dist/math/three/Matrix3.js +248 -0
  282. package/dist/math/three/Matrix3.js.map +1 -0
  283. package/dist/math/three/Matrix4.d.ts +79 -0
  284. package/dist/math/three/Matrix4.d.ts.map +1 -0
  285. package/dist/math/three/Matrix4.js +708 -0
  286. package/dist/math/three/Matrix4.js.map +1 -0
  287. package/dist/math/three/Plane.d.ts +65 -0
  288. package/dist/math/three/Plane.d.ts.map +1 -0
  289. package/dist/math/three/Plane.js +135 -0
  290. package/dist/math/three/Plane.js.map +1 -0
  291. package/dist/math/three/Quaternion.d.ts +91 -0
  292. package/dist/math/three/Quaternion.d.ts.map +1 -0
  293. package/dist/math/three/Quaternion.js +444 -0
  294. package/dist/math/three/Quaternion.js.map +1 -0
  295. package/dist/math/three/Ray.d.ts +56 -0
  296. package/dist/math/three/Ray.d.ts.map +1 -0
  297. package/dist/math/three/Ray.js +340 -0
  298. package/dist/math/three/Ray.js.map +1 -0
  299. package/dist/math/three/Sphere.d.ts +58 -0
  300. package/dist/math/three/Sphere.d.ts.map +1 -0
  301. package/dist/math/three/Sphere.js +166 -0
  302. package/dist/math/three/Sphere.js.map +1 -0
  303. package/dist/math/three/Triangle.d.ts +58 -0
  304. package/dist/math/three/Triangle.d.ts.map +1 -0
  305. package/dist/math/three/Triangle.js +229 -0
  306. package/dist/math/three/Triangle.js.map +1 -0
  307. package/dist/math/three/Vector2.d.ts +88 -0
  308. package/dist/math/three/Vector2.d.ts.map +1 -0
  309. package/dist/math/three/Vector2.js +283 -0
  310. package/dist/math/three/Vector2.js.map +1 -0
  311. package/dist/math/three/Vector3.d.ts +137 -0
  312. package/dist/math/three/Vector3.d.ts.map +1 -0
  313. package/dist/math/three/Vector3.js +458 -0
  314. package/dist/math/three/Vector3.js.map +1 -0
  315. package/dist/math/three/Vector4.d.ts +100 -0
  316. package/dist/math/three/Vector4.d.ts.map +1 -0
  317. package/dist/math/three/Vector4.js +443 -0
  318. package/dist/math/three/Vector4.js.map +1 -0
  319. package/dist/math/three/index.d.ts +29 -0
  320. package/dist/math/three/index.d.ts.map +1 -0
  321. package/dist/math/three/index.js +29 -0
  322. package/dist/math/three/index.js.map +1 -0
  323. package/dist/react/index.d.ts +21 -0
  324. package/dist/react/index.d.ts.map +1 -1
  325. package/dist/react/index.js +128 -21
  326. package/dist/react/index.js.map +1 -1
  327. package/dist/rendering/DepthPass.d.ts +7 -0
  328. package/dist/rendering/DepthPass.d.ts.map +1 -1
  329. package/dist/rendering/DepthPass.js +43 -6
  330. package/dist/rendering/DepthPass.js.map +1 -1
  331. package/dist/rendering/ForwardPass.d.ts +82 -5
  332. package/dist/rendering/ForwardPass.d.ts.map +1 -1
  333. package/dist/rendering/ForwardPass.js +180 -35
  334. package/dist/rendering/ForwardPass.js.map +1 -1
  335. package/dist/rendering/MaterialBinding.js +6 -2
  336. package/dist/rendering/MaterialBinding.js.map +1 -1
  337. package/dist/rendering/RenderDevice.d.ts +5 -0
  338. package/dist/rendering/RenderDevice.d.ts.map +1 -1
  339. package/dist/rendering/RenderDevice.js.map +1 -1
  340. package/dist/rendering/Renderer.d.ts +8 -0
  341. package/dist/rendering/Renderer.d.ts.map +1 -1
  342. package/dist/rendering/Renderer.js +37 -6
  343. package/dist/rendering/Renderer.js.map +1 -1
  344. package/dist/rendering/RendererPostprocessPlan.d.ts.map +1 -1
  345. package/dist/rendering/RendererPostprocessPlan.js +8 -1
  346. package/dist/rendering/RendererPostprocessPlan.js.map +1 -1
  347. package/dist/rendering/ShaderChunks.d.ts.map +1 -1
  348. package/dist/rendering/ShaderChunks.js +3 -1
  349. package/dist/rendering/ShaderChunks.js.map +1 -1
  350. package/dist/rendering/ShaderLibrary.d.ts.map +1 -1
  351. package/dist/rendering/ShaderLibrary.js +17 -5
  352. package/dist/rendering/ShaderLibrary.js.map +1 -1
  353. package/dist/rendering/ShaderLibraryCore.d.ts.map +1 -1
  354. package/dist/rendering/ShaderLibraryCore.js +2 -1
  355. package/dist/rendering/ShaderLibraryCore.js.map +1 -1
  356. package/dist/rendering/WebGL2Device.d.ts +19 -1
  357. package/dist/rendering/WebGL2Device.d.ts.map +1 -1
  358. package/dist/rendering/WebGL2Device.js +114 -37
  359. package/dist/rendering/WebGL2Device.js.map +1 -1
  360. package/dist/rendering/WebGL2StateCache.d.ts +22 -0
  361. package/dist/rendering/WebGL2StateCache.d.ts.map +1 -1
  362. package/dist/rendering/WebGL2StateCache.js +71 -42
  363. package/dist/rendering/WebGL2StateCache.js.map +1 -1
  364. package/dist/rendering/contracts/core.d.ts.map +1 -1
  365. package/dist/rendering/contracts/core.js +22 -2
  366. package/dist/rendering/contracts/core.js.map +1 -1
  367. package/dist/rendering/contracts/program.d.ts.map +1 -1
  368. package/dist/rendering/contracts/program.js +8 -1
  369. package/dist/rendering/contracts/program.js.map +1 -1
  370. package/dist/rendering/contracts/quality.d.ts +21 -0
  371. package/dist/rendering/contracts/quality.d.ts.map +1 -1
  372. package/dist/rendering/contracts/quality.js +5 -0
  373. package/dist/rendering/contracts/quality.js.map +1 -1
  374. package/dist/rendering/contracts/renderItem.d.ts +6 -0
  375. package/dist/rendering/contracts/renderItem.d.ts.map +1 -1
  376. package/dist/rendering/contracts/structuralMemo.d.ts +23 -0
  377. package/dist/rendering/contracts/structuralMemo.d.ts.map +1 -0
  378. package/dist/rendering/contracts/structuralMemo.js +81 -0
  379. package/dist/rendering/contracts/structuralMemo.js.map +1 -0
  380. package/dist/rendering/environment/EnvironmentCache.d.ts.map +1 -1
  381. package/dist/rendering/environment/EnvironmentCache.js +6 -1
  382. package/dist/rendering/environment/EnvironmentCache.js.map +1 -1
  383. package/dist/rendering/environment/FirstFrameGate.d.ts +23 -0
  384. package/dist/rendering/environment/FirstFrameGate.d.ts.map +1 -0
  385. package/dist/rendering/environment/FirstFrameGate.js +58 -0
  386. package/dist/rendering/environment/FirstFrameGate.js.map +1 -0
  387. package/dist/rendering/environment/Rgb9e5Cube.d.ts.map +1 -1
  388. package/dist/rendering/environment/Rgb9e5Cube.js +8 -4
  389. package/dist/rendering/environment/Rgb9e5Cube.js.map +1 -1
  390. package/dist/rendering/environment/probeBuild.d.ts +29 -0
  391. package/dist/rendering/environment/probeBuild.d.ts.map +1 -1
  392. package/dist/rendering/environment/probeBuild.js +124 -45
  393. package/dist/rendering/environment/probeBuild.js.map +1 -1
  394. package/dist/rendering/forward/Lighting.d.ts +43 -3
  395. package/dist/rendering/forward/Lighting.d.ts.map +1 -1
  396. package/dist/rendering/forward/Lighting.js +127 -17
  397. package/dist/rendering/forward/Lighting.js.map +1 -1
  398. package/dist/rendering/forward/contactShadowMaskStore.d.ts +41 -0
  399. package/dist/rendering/forward/contactShadowMaskStore.d.ts.map +1 -0
  400. package/dist/rendering/forward/contactShadowMaskStore.js +85 -0
  401. package/dist/rendering/forward/contactShadowMaskStore.js.map +1 -0
  402. package/dist/rendering/geometry/Shape.d.ts.map +1 -1
  403. package/dist/rendering/geometry/Shape.js +7 -2
  404. package/dist/rendering/geometry/Shape.js.map +1 -1
  405. package/dist/rendering/geometry/Support.d.ts +4 -0
  406. package/dist/rendering/geometry/Support.d.ts.map +1 -1
  407. package/dist/rendering/geometry/Support.js +3 -2
  408. package/dist/rendering/geometry/Support.js.map +1 -1
  409. package/dist/rendering/index.d.ts +6 -0
  410. package/dist/rendering/index.d.ts.map +1 -1
  411. package/dist/rendering/index.js +5 -0
  412. package/dist/rendering/index.js.map +1 -1
  413. package/dist/rendering/passes/ContactShadowPass.d.ts +40 -3
  414. package/dist/rendering/passes/ContactShadowPass.d.ts.map +1 -1
  415. package/dist/rendering/passes/ContactShadowPass.js +73 -13
  416. package/dist/rendering/passes/ContactShadowPass.js.map +1 -1
  417. package/dist/rendering/passes/Prd02ContactShadowsContributor.d.ts +19 -0
  418. package/dist/rendering/passes/Prd02ContactShadowsContributor.d.ts.map +1 -1
  419. package/dist/rendering/passes/Prd02ContactShadowsContributor.js +179 -28
  420. package/dist/rendering/passes/Prd02ContactShadowsContributor.js.map +1 -1
  421. package/dist/rendering/post/v2Stages.d.ts.map +1 -1
  422. package/dist/rendering/post/v2Stages.js +2 -0
  423. package/dist/rendering/post/v2Stages.js.map +1 -1
  424. package/dist/rendering/program/ProgramFeatures.d.ts +6 -0
  425. package/dist/rendering/program/ProgramFeatures.d.ts.map +1 -1
  426. package/dist/rendering/program/ProgramFeatures.js +11 -5
  427. package/dist/rendering/program/ProgramFeatures.js.map +1 -1
  428. package/dist/rendering/program/ProgramGenerator.d.ts +6 -0
  429. package/dist/rendering/program/ProgramGenerator.d.ts.map +1 -1
  430. package/dist/rendering/program/ProgramGenerator.js +36 -1
  431. package/dist/rendering/program/ProgramGenerator.js.map +1 -1
  432. package/dist/rendering/program/ProgramKey.d.ts.map +1 -1
  433. package/dist/rendering/program/ProgramKey.js +4 -1
  434. package/dist/rendering/program/ProgramKey.js.map +1 -1
  435. package/dist/rendering/program/chunks/shadow_forward.glsl.d.ts +1 -1
  436. package/dist/rendering/program/chunks/shadow_forward.glsl.d.ts.map +1 -1
  437. package/dist/rendering/program/chunks/shadow_forward.glsl.js +4 -1
  438. package/dist/rendering/program/chunks/shadow_forward.glsl.js.map +1 -1
  439. package/dist/rendering/quality/DirectPath.d.ts +56 -0
  440. package/dist/rendering/quality/DirectPath.d.ts.map +1 -0
  441. package/dist/rendering/quality/DirectPath.js +74 -0
  442. package/dist/rendering/quality/DirectPath.js.map +1 -0
  443. package/dist/rendering/renderer/Background.d.ts +0 -5
  444. package/dist/rendering/renderer/Background.d.ts.map +1 -1
  445. package/dist/rendering/renderer/Background.js +56 -4
  446. package/dist/rendering/renderer/Background.js.map +1 -1
  447. package/dist/rendering/renderer/InstanceFrustumCull.d.ts +41 -0
  448. package/dist/rendering/renderer/InstanceFrustumCull.d.ts.map +1 -0
  449. package/dist/rendering/renderer/InstanceFrustumCull.js +138 -0
  450. package/dist/rendering/renderer/InstanceFrustumCull.js.map +1 -0
  451. package/dist/rendering/renderer/ShadowOrchestration.d.ts +2 -0
  452. package/dist/rendering/renderer/ShadowOrchestration.d.ts.map +1 -1
  453. package/dist/rendering/renderer/ShadowOrchestration.js +1 -0
  454. package/dist/rendering/renderer/ShadowOrchestration.js.map +1 -1
  455. package/dist/rendering/renderer/coreOutputPostRoute.d.ts +0 -5
  456. package/dist/rendering/renderer/coreOutputPostRoute.d.ts.map +1 -1
  457. package/dist/rendering/renderer/coreOutputPostRoute.js +12 -2
  458. package/dist/rendering/renderer/coreOutputPostRoute.js.map +1 -1
  459. package/dist/rendering/resources/InstanceBuffer.d.ts +2 -0
  460. package/dist/rendering/resources/InstanceBuffer.d.ts.map +1 -1
  461. package/dist/rendering/resources/InstanceBuffer.js +23 -0
  462. package/dist/rendering/resources/InstanceBuffer.js.map +1 -1
  463. package/dist/rendering/shaders/chunks/contact_shadow.glsl.d.ts +11 -6
  464. package/dist/rendering/shaders/chunks/contact_shadow.glsl.d.ts.map +1 -1
  465. package/dist/rendering/shaders/chunks/contact_shadow.glsl.js +41 -19
  466. package/dist/rendering/shaders/chunks/contact_shadow.glsl.js.map +1 -1
  467. package/dist/rendering/shaders/chunks/contact_shadow_mask.glsl.d.ts +12 -0
  468. package/dist/rendering/shaders/chunks/contact_shadow_mask.glsl.d.ts.map +1 -0
  469. package/dist/rendering/shaders/chunks/contact_shadow_mask.glsl.js +21 -0
  470. package/dist/rendering/shaders/chunks/contact_shadow_mask.glsl.js.map +1 -0
  471. package/dist/rendering/shaders/chunks/lighting_ibl.glsl.d.ts +6 -1
  472. package/dist/rendering/shaders/chunks/lighting_ibl.glsl.d.ts.map +1 -1
  473. package/dist/rendering/shaders/chunks/lighting_ibl.glsl.js +8 -2
  474. package/dist/rendering/shaders/chunks/lighting_ibl.glsl.js.map +1 -1
  475. package/dist/rendering/shadows/CascadeUse.d.ts +31 -0
  476. package/dist/rendering/shadows/CascadeUse.d.ts.map +1 -0
  477. package/dist/rendering/shadows/CascadeUse.js +60 -0
  478. package/dist/rendering/shadows/CascadeUse.js.map +1 -0
  479. package/dist/rendering/shadows/Prd02DepthShaderLibrary.d.ts +7 -1
  480. package/dist/rendering/shadows/Prd02DepthShaderLibrary.d.ts.map +1 -1
  481. package/dist/rendering/shadows/Prd02DepthShaderLibrary.js +12 -3
  482. package/dist/rendering/shadows/Prd02DepthShaderLibrary.js.map +1 -1
  483. package/dist/rendering/shadows/Prd02ShadowBridge.d.ts +12 -1
  484. package/dist/rendering/shadows/Prd02ShadowBridge.d.ts.map +1 -1
  485. package/dist/rendering/shadows/Prd02ShadowBridge.js +17 -5
  486. package/dist/rendering/shadows/Prd02ShadowBridge.js.map +1 -1
  487. package/dist/rendering/shadows/Prd02ShadowsContributor.d.ts +4 -0
  488. package/dist/rendering/shadows/Prd02ShadowsContributor.d.ts.map +1 -1
  489. package/dist/rendering/shadows/Prd02ShadowsContributor.js +3 -1
  490. package/dist/rendering/shadows/Prd02ShadowsContributor.js.map +1 -1
  491. package/dist/rendering/shadows/ShadowFilterTier.d.ts +51 -0
  492. package/dist/rendering/shadows/ShadowFilterTier.d.ts.map +1 -0
  493. package/dist/rendering/shadows/ShadowFilterTier.js +89 -0
  494. package/dist/rendering/shadows/ShadowFilterTier.js.map +1 -0
  495. package/dist/rendering/shadows/ShadowSystem.d.ts +15 -0
  496. package/dist/rendering/shadows/ShadowSystem.d.ts.map +1 -1
  497. package/dist/rendering/shadows/ShadowSystem.js +12 -2
  498. package/dist/rendering/shadows/ShadowSystem.js.map +1 -1
  499. package/dist/rendering/shadows/shadowLegacy.d.ts +12 -0
  500. package/dist/rendering/shadows/shadowLegacy.d.ts.map +1 -1
  501. package/dist/rendering/shadows/shadowLegacy.js +24 -0
  502. package/dist/rendering/shadows/shadowLegacy.js.map +1 -1
  503. package/dist/rendering/webgl2/BloomFusion.d.ts +31 -0
  504. package/dist/rendering/webgl2/BloomFusion.d.ts.map +1 -0
  505. package/dist/rendering/webgl2/BloomFusion.js +25 -0
  506. package/dist/rendering/webgl2/BloomFusion.js.map +1 -0
  507. package/dist/rendering/webgl2/ContextLifecycle.d.ts +14 -0
  508. package/dist/rendering/webgl2/ContextLifecycle.d.ts.map +1 -1
  509. package/dist/rendering/webgl2/ContextLifecycle.js +44 -5
  510. package/dist/rendering/webgl2/ContextLifecycle.js.map +1 -1
  511. package/dist/rendering/webgl2/LegacyPost.d.ts +30 -0
  512. package/dist/rendering/webgl2/LegacyPost.d.ts.map +1 -1
  513. package/dist/rendering/webgl2/LegacyPost.js +259 -27
  514. package/dist/rendering/webgl2/LegacyPost.js.map +1 -1
  515. package/dist/rendering/webgl2/MultiDraw.d.ts +2 -0
  516. package/dist/rendering/webgl2/MultiDraw.d.ts.map +1 -1
  517. package/dist/rendering/webgl2/MultiDraw.js +33 -7
  518. package/dist/rendering/webgl2/MultiDraw.js.map +1 -1
  519. package/dist/rendering/webgl2/Samplers.d.ts +10 -1
  520. package/dist/rendering/webgl2/Samplers.d.ts.map +1 -1
  521. package/dist/rendering/webgl2/Samplers.js +24 -1
  522. package/dist/rendering/webgl2/Samplers.js.map +1 -1
  523. package/dist/rendering/webgl2/TextureFormats.d.ts +12 -0
  524. package/dist/rendering/webgl2/TextureFormats.d.ts.map +1 -1
  525. package/dist/rendering/webgl2/TextureFormats.js +16 -0
  526. package/dist/rendering/webgl2/TextureFormats.js.map +1 -1
  527. package/package.json +25 -25
  528. package/templates/cinematic-scene/package.json +2 -2
  529. package/templates/mini-game/package.json +2 -2
  530. package/templates/product-viewer/package.json +2 -2
  531. package/templates/production-asset-inspector/package.json +1 -1
  532. package/templates/production-material-studio/package.json +1 -1
  533. package/templates/production-product-configurator/package.json +1 -1
  534. package/templates/production-product-viewer/package.json +1 -1
  535. package/dist/environments/EnvironmentPreview.d.ts +0 -13
  536. package/dist/environments/EnvironmentPreview.d.ts.map +0 -1
  537. package/dist/environments/EnvironmentPreview.js +0 -16
  538. package/dist/environments/EnvironmentPreview.js.map +0 -1
  539. package/dist/environments/EnvironmentRegistry.d.ts +0 -35
  540. package/dist/environments/EnvironmentRegistry.d.ts.map +0 -1
  541. package/dist/environments/EnvironmentRegistry.js +0 -39
  542. package/dist/environments/EnvironmentRegistry.js.map +0 -1
  543. package/dist/environments/HDRIEnvironment.d.ts +0 -38
  544. package/dist/environments/HDRIEnvironment.d.ts.map +0 -1
  545. package/dist/environments/HDRIEnvironment.js +0 -34
  546. package/dist/environments/HDRIEnvironment.js.map +0 -1
  547. package/dist/environments/PMREMPreset.d.ts +0 -14
  548. package/dist/environments/PMREMPreset.d.ts.map +0 -1
  549. package/dist/environments/PMREMPreset.js +0 -16
  550. package/dist/environments/PMREMPreset.js.map +0 -1
  551. package/dist/environments/index.d.ts +0 -6
  552. package/dist/environments/index.d.ts.map +0 -1
  553. package/dist/environments/index.js +0 -3
  554. package/dist/environments/index.js.map +0 -1
  555. package/dist/environments/node.d.ts +0 -7
  556. package/dist/environments/node.d.ts.map +0 -1
  557. package/dist/environments/node.js +0 -5
  558. package/dist/environments/node.js.map +0 -1
  559. package/dist/environments/production-runtime/ProductionEnvironmentCorpus.d.ts +0 -78
  560. package/dist/environments/production-runtime/ProductionEnvironmentCorpus.d.ts.map +0 -1
  561. package/dist/environments/production-runtime/ProductionEnvironmentCorpus.js +0 -67
  562. package/dist/environments/production-runtime/ProductionEnvironmentCorpus.js.map +0 -1
  563. package/dist/environments/production-runtime/index.d.ts +0 -3
  564. package/dist/environments/production-runtime/index.d.ts.map +0 -1
  565. package/dist/environments/production-runtime/index.js +0 -2
  566. package/dist/environments/production-runtime/index.js.map +0 -1
  567. package/dist/environments/threejs-example-parity/index.d.ts +0 -17
  568. package/dist/environments/threejs-example-parity/index.d.ts.map +0 -1
  569. package/dist/environments/threejs-example-parity/index.js +0 -49
  570. package/dist/environments/threejs-example-parity/index.js.map +0 -1
  571. package/templates/cinematic-scene/node_modules/.vite/deps/_metadata.json +0 -8
  572. package/templates/cinematic-scene/node_modules/.vite/deps/package.json +0 -3
  573. package/templates/cinematic-scene/test-results/.last-run.json +0 -6
  574. package/templates/cinematic-scene/test-results/route-health-Aura3D-cinematic-scene-reaches-ready-state/error-context.md +0 -64
  575. package/templates/mini-game/package-lock.json +0 -1312
  576. package/templates/product-viewer/node_modules/.vite/deps/_metadata.json +0 -8
  577. package/templates/product-viewer/node_modules/.vite/deps/package.json +0 -3
@@ -0,0 +1,81 @@
1
+ // Internal (deliberately not re-exported from contracts/index.ts).
2
+ const hasOwn = Object.prototype.hasOwnProperty;
3
+ /**
4
+ * Allocation-free structural equality over own enumerable keys. Two values that are equal here have equal own-entry sets, so
5
+ * any serialisation that reads exactly those entries (and ignores key order) gives the same string for both; the converse is
6
+ * not required, so a record that only differs by an `undefined`-valued key is a miss, never a wrong hit.
7
+ */
8
+ export function sameStructure(a, b) {
9
+ if (a === b)
10
+ return true;
11
+ if (typeof a !== "object" || typeof b !== "object" || a === null || b === null)
12
+ return false;
13
+ if (Array.isArray(a)) {
14
+ if (!Array.isArray(b) || a.length !== b.length)
15
+ return false;
16
+ for (let i = 0; i < a.length; i += 1)
17
+ if (!sameStructure(a[i], b[i]))
18
+ return false;
19
+ return true;
20
+ }
21
+ if (Array.isArray(b))
22
+ return false;
23
+ let count = 0;
24
+ for (const key in a) {
25
+ if (!hasOwn.call(a, key))
26
+ continue;
27
+ count += 1;
28
+ if (!hasOwn.call(b, key) || !sameStructure(a[key], b[key]))
29
+ return false;
30
+ }
31
+ let other = 0;
32
+ for (const key in b)
33
+ if (hasOwn.call(b, key))
34
+ other += 1;
35
+ return count === other;
36
+ }
37
+ /** Plain-data deep copy (objects, arrays, primitives): a memo must not alias a record the caller may mutate later. */
38
+ export function snapshotOf(value) {
39
+ if (value === null || typeof value !== "object")
40
+ return value;
41
+ if (Array.isArray(value))
42
+ return value.map(snapshotOf);
43
+ const out = {};
44
+ for (const key in value) {
45
+ if (hasOwn.call(value, key))
46
+ out[key] = snapshotOf(value[key]);
47
+ }
48
+ return out;
49
+ }
50
+ /**
51
+ * A small ring of recent (record snapshot, result) pairs for a pure function of a plain-data record. A frame asks for the
52
+ * same few records in the same order every time, so the search starts after the last hit.
53
+ */
54
+ export class StructuralMemo {
55
+ capacity;
56
+ records = [];
57
+ values = [];
58
+ next = 0;
59
+ cursor = 0;
60
+ constructor(capacity) {
61
+ this.capacity = capacity;
62
+ }
63
+ /** Compute `compute(record)` once per structurally distinct record. */
64
+ resolve(record, compute) {
65
+ const size = this.records.length;
66
+ for (let n = 0; n < size; n += 1) {
67
+ const i = (this.cursor + n) % size;
68
+ if (sameStructure(this.records[i], record)) {
69
+ this.cursor = (i + 1) % size;
70
+ return this.values[i];
71
+ }
72
+ }
73
+ const value = compute();
74
+ this.records[this.next] = snapshotOf(record);
75
+ this.values[this.next] = value;
76
+ this.cursor = (this.next + 1) % this.capacity;
77
+ this.next = (this.next + 1) % this.capacity;
78
+ return value;
79
+ }
80
+ }
81
+ //# sourceMappingURL=structuralMemo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structuralMemo.js","sourceRoot":"","sources":["../../../../../packages/rendering/src/contracts/structuralMemo.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"EnvironmentCache.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/environment/EnvironmentCache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAoC,KAAK,gBAAgB,EAAE,KAAK,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACpI,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAK9E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;CAChC;AAED,iFAAiF;AACjF,MAAM,MAAM,sBAAsB,GAAG,CAAC,GAAG,EAAE,mBAAmB,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAgB7F,+FAA+F;AAC/F,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,eAAe,EAAE,kBAAkB,EAAE,OAAO,GAAG,MAAM,CAIhG;AAED,qBAAa,gBAAgB;IAOzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAR1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA0C;IACzE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgD;IACzE,OAAO,CAAC,KAAK,CAAK;gBAGC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,uBAAuB,EAChC,MAAM,CAAC,EAAE,sBAAsB,YAAA;IAGlD;;;;OAIG;IACG,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAwBnG;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,eAAe,GAAG,gBAAgB;IAWhD,2EAA2E;IAC3E,OAAO,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAStC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM;IAOzC,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,iEAAiE;IACjE,OAAO,CAAC,cAAc;IAetB,OAAO,IAAI,IAAI;CAOhB;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAiBD;;;;;;;;;;;GAWG;AACH;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAG5G;AASD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,uBAAuB,GAAG,CAAC,MAAM,uBAAuB,CAAC,GAAG,sBAAsB,CAqC7H"}
1
+ {"version":3,"file":"EnvironmentCache.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/environment/EnvironmentCache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAoC,KAAK,gBAAgB,EAAE,KAAK,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACpI,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAM9E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;CAChC;AAED,iFAAiF;AACjF,MAAM,MAAM,sBAAsB,GAAG,CAAC,GAAG,EAAE,mBAAmB,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAgB7F,+FAA+F;AAC/F,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,eAAe,EAAE,kBAAkB,EAAE,OAAO,GAAG,MAAM,CAIhG;AAED,qBAAa,gBAAgB;IAOzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAR1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA0C;IACzE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgD;IACzE,OAAO,CAAC,KAAK,CAAK;gBAGC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,uBAAuB,EAChC,MAAM,CAAC,EAAE,sBAAsB,YAAA;IAGlD;;;;OAIG;IACG,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAwBnG;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,eAAe,GAAG,gBAAgB;IAWhD,2EAA2E;IAC3E,OAAO,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAStC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM;IAOzC,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,iEAAiE;IACjE,OAAO,CAAC,cAAc;IAetB,OAAO,IAAI,IAAI;CAOhB;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAiBD;;;;;;;;;;;GAWG;AACH;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAG5G;AASD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,uBAAuB,GAAG,CAAC,MAAM,uBAAuB,CAAC,GAAG,sBAAsB,CAyC7H"}
@@ -17,6 +17,7 @@ import { QUALITY_TIERS } from "../contracts/quality.js";
17
17
  import { decodeHdrEquirect, hdrImageToRgba32f } from "./HdrEquirect.js";
18
18
  import { readRgb9e5Cube } from "./Rgb9e5Cube.js";
19
19
  import { buildNeutralFloorProbe, buildProbeFromLevels } from "./probeBuild.js";
20
+ import { whenFirstFramePresented } from "./FirstFrameGate.js";
20
21
  const NEUTRAL_TAG = "__neutral__";
21
22
  function keyId(key) {
22
23
  return `${key.url ?? `preset:${key.preset ?? NEUTRAL_TAG}`}@${key.tier}`;
@@ -177,7 +178,11 @@ export function defaultProbeLoader(factory) {
177
178
  return async (key) => {
178
179
  if (key.preset === "neutral") {
179
180
  // Default environment: embedded, so a published-package app needs no /aura-environments fetch or copied file.
180
- const { loadEmbeddedNeutralProbe } = await import("./neutralEmbeddedLoader.js");
181
+ // The chunk is requested at once (network, no CPU), but decoding it is tens of ms of main-thread work that the first
182
+ // frame does not need: that frame is lit by the synchronous analytic floor, and the baked cube is built after it.
183
+ const loaderModule = import("./neutralEmbeddedLoader.js");
184
+ await whenFirstFramePresented();
185
+ const { loadEmbeddedNeutralProbe } = await loaderModule;
181
186
  return loadEmbeddedNeutralProbe();
182
187
  }
183
188
  if (key.preset) {
@@ -1 +1 @@
1
- {"version":3,"file":"EnvironmentCache.js","sourceRoot":"","sources":["../../../../../packages/rendering/src/environment/EnvironmentCache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EnvironmentCache.js","sourceRoot":"","sources":["../../../../../packages/rendering/src/environment/EnvironmentCache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * First-frame gate (beat-three.js PRD-2, WP-8). Environment work that is not needed to draw the first frame (decoding the
3
+ * baked default probe: base64, gunzip, RGB9E5 decode, half-float encode of five mip levels) must not run before that frame is
4
+ * submitted. A `Renderer` arms the gate when it is created and notifies it when its first frame has been submitted; the
5
+ * default-probe loader waits on it. The frame is lit by the synchronous analytic floor probe in the meantime.
6
+ *
7
+ * Process-wide and one-shot: once any renderer has submitted a frame, later waits resolve at once. Where no renderer exists
8
+ * (unit tests, tooling) the gate is never armed and waits resolve at once. A frame that never arrives must not strand the
9
+ * upgrade, so a wait also ends after `timeoutMs`.
10
+ */
11
+ /** Default upper bound on a wait, in ms; a first frame slower than this lets the deferred work run before it. */
12
+ export declare const FIRST_FRAME_GATE_TIMEOUT_MS = 3000;
13
+ /** Called when a renderer is created. No effect once a frame has been submitted. */
14
+ export declare function armFirstFrameGate(): void;
15
+ /** Called after a renderer submits a frame. Releases waiters in a later task, so they never extend the frame's own task. */
16
+ export declare function notifyFirstFramePresented(): void;
17
+ /** Resolves once the first frame has been submitted (in a later task), at once if no frame is pending, or after `timeoutMs`. */
18
+ export declare function whenFirstFramePresented(timeoutMs?: number): Promise<void>;
19
+ /** Test seam: back to the initial, unarmed state. */
20
+ export declare function resetFirstFrameGateForTests(): void;
21
+ /** Test seam: the gate's current phase. */
22
+ export declare function firstFrameGatePhase(): "idle" | "armed" | "presented";
23
+ //# sourceMappingURL=FirstFrameGate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FirstFrameGate.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/environment/FirstFrameGate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAUH,iHAAiH;AACjH,eAAO,MAAM,2BAA2B,OAAO,CAAC;AAEhD,oFAAoF;AACpF,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED,4HAA4H;AAC5H,wBAAgB,yBAAyB,IAAI,IAAI,CAOhD;AAED,gIAAgI;AAChI,wBAAgB,uBAAuB,CAAC,SAAS,GAAE,MAAoC,GAAG,OAAO,CAAC,IAAI,CAAC,CAatG;AAED,qDAAqD;AACrD,wBAAgB,2BAA2B,IAAI,IAAI,CAIlD;AAED,2CAA2C;AAC3C,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,OAAO,GAAG,WAAW,CAEpE"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * First-frame gate (beat-three.js PRD-2, WP-8). Environment work that is not needed to draw the first frame (decoding the
3
+ * baked default probe: base64, gunzip, RGB9E5 decode, half-float encode of five mip levels) must not run before that frame is
4
+ * submitted. A `Renderer` arms the gate when it is created and notifies it when its first frame has been submitted; the
5
+ * default-probe loader waits on it. The frame is lit by the synchronous analytic floor probe in the meantime.
6
+ *
7
+ * Process-wide and one-shot: once any renderer has submitted a frame, later waits resolve at once. Where no renderer exists
8
+ * (unit tests, tooling) the gate is never armed and waits resolve at once. A frame that never arrives must not strand the
9
+ * upgrade, so a wait also ends after `timeoutMs`.
10
+ */
11
+ const state = { armed: false, presented: false, waiters: [] };
12
+ /** Default upper bound on a wait, in ms; a first frame slower than this lets the deferred work run before it. */
13
+ export const FIRST_FRAME_GATE_TIMEOUT_MS = 3000;
14
+ /** Called when a renderer is created. No effect once a frame has been submitted. */
15
+ export function armFirstFrameGate() {
16
+ if (!state.presented)
17
+ state.armed = true;
18
+ }
19
+ /** Called after a renderer submits a frame. Releases waiters in a later task, so they never extend the frame's own task. */
20
+ export function notifyFirstFramePresented() {
21
+ if (state.presented)
22
+ return;
23
+ state.presented = true;
24
+ const waiters = state.waiters;
25
+ state.waiters = [];
26
+ if (waiters.length === 0)
27
+ return;
28
+ setTimeout(() => { for (const release of waiters)
29
+ release(); }, 0);
30
+ }
31
+ /** Resolves once the first frame has been submitted (in a later task), at once if no frame is pending, or after `timeoutMs`. */
32
+ export function whenFirstFramePresented(timeoutMs = FIRST_FRAME_GATE_TIMEOUT_MS) {
33
+ if (!state.armed || state.presented)
34
+ return Promise.resolve();
35
+ return new Promise((resolve) => {
36
+ let done = false;
37
+ const release = () => {
38
+ if (done)
39
+ return;
40
+ done = true;
41
+ clearTimeout(timer);
42
+ resolve();
43
+ };
44
+ const timer = setTimeout(release, timeoutMs);
45
+ state.waiters.push(release);
46
+ });
47
+ }
48
+ /** Test seam: back to the initial, unarmed state. */
49
+ export function resetFirstFrameGateForTests() {
50
+ state.armed = false;
51
+ state.presented = false;
52
+ state.waiters = [];
53
+ }
54
+ /** Test seam: the gate's current phase. */
55
+ export function firstFrameGatePhase() {
56
+ return state.presented ? "presented" : state.armed ? "armed" : "idle";
57
+ }
58
+ //# sourceMappingURL=FirstFrameGate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FirstFrameGate.js","sourceRoot":"","sources":["../../../../../packages/rendering/src/environment/FirstFrameGate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,MAAM,KAAK,GAAc,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AAEzE,iHAAiH;AACjH,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,CAAC;AAEhD,oFAAoF;AACpF,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC,KAAK,CAAC,SAAS;QAAE,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;AAC3C,CAAC;AAED,4HAA4H;AAC5H,MAAM,UAAU,yBAAyB;IACvC,IAAI,KAAK,CAAC,SAAS;QAAE,OAAO;IAC5B,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;IACvB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;IACnB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACjC,UAAU,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,OAAO,IAAI,OAAO;QAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,gIAAgI;AAChI,MAAM,UAAU,uBAAuB,CAAC,YAAoB,2BAA2B;IACrF,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC9D,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QACnC,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,MAAM,OAAO,GAAG,GAAS,EAAE;YACzB,IAAI,IAAI;gBAAE,OAAO;YACjB,IAAI,GAAG,IAAI,CAAC;YACZ,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC7C,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,2BAA2B;IACzC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;IACpB,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;IACxB,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AACrB,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,mBAAmB;IACjC,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AACxE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Rgb9e5Cube.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/environment/Rgb9e5Cube.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,UAAU,yBAA2F,CAAC;AACnH,eAAO,MAAM,gCAAgC,MAAM,CAAC;AACpD,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC,MAAM,MAAM,qBAAqB,GAC7B,oBAAoB,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,mBAAmB,GACjF,0BAA0B,GAAG,gBAAgB,GAAG,aAAa,GAC7D,iBAAiB,GAAG,oBAAoB,GAAG,iBAAiB,GAAG,oBAAoB,CAAC;AAExF,qBAAa,eAAgB,SAAQ,KAAK;aACZ,MAAM,EAAE,qBAAqB;gBAA7B,MAAM,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM;CAI3E;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,gEAAgE;IAChE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,SAAS,YAAY,EAAE,CAAC,EAAE,CAAC;CACvD;AAID,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAuD5D;AAED,iHAAiH;AACjH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAIrE;AAED,iGAAiG;AACjG,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAOlE"}
1
+ {"version":3,"file":"Rgb9e5Cube.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/environment/Rgb9e5Cube.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,UAAU,yBAA2F,CAAC;AACnH,eAAO,MAAM,gCAAgC,MAAM,CAAC;AACpD,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC,MAAM,MAAM,qBAAqB,GAC7B,oBAAoB,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,mBAAmB,GACjF,0BAA0B,GAAG,gBAAgB,GAAG,aAAa,GAC7D,iBAAiB,GAAG,oBAAoB,GAAG,iBAAiB,GAAG,oBAAoB,CAAC;AAExF,qBAAa,eAAgB,SAAQ,KAAK;aACZ,MAAM,EAAE,qBAAqB;gBAA7B,MAAM,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM;CAI3E;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,gEAAgE;IAChE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,SAAS,YAAY,EAAE,CAAC,EAAE,CAAC;CACvD;AAOD,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CA4D5D;AAED,iHAAiH;AACjH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAIrE;AAED,iGAAiG;AACjG,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAOlE"}
@@ -15,6 +15,8 @@ export class Rgb9e5CubeError extends Error {
15
15
  }
16
16
  }
17
17
  const align4 = (n) => (n + 3) & ~3;
18
+ /** 2^(e − 15 − 9) for each 5-bit shared exponent. */
19
+ const RGB9E5_SCALE = Array.from({ length: 32 }, (_, e) => Math.pow(2, e - 15 - 9));
18
20
  export function readRgb9e5Cube(bytes) {
19
21
  if (bytes.byteLength < KTX2_HEADER_BYTES)
20
22
  throw new Rgb9e5CubeError("ENV_KTX2_TRUNCATED", `need ${KTX2_HEADER_BYTES} header bytes, got ${bytes.byteLength}`);
@@ -72,11 +74,13 @@ export function readRgb9e5Cube(bytes) {
72
74
  const start = levelOffset + face * faceBytes;
73
75
  const packed = new Uint32Array(bytes.buffer, bytes.byteOffset + start, size * size);
74
76
  const rgba = new Float32Array(size * size * 4);
77
+ // Same arithmetic as `unpackRgb9e5` (mantissa × 2^(e−24)) with the 32 possible scales precomputed and no per-texel allocation.
75
78
  for (let t = 0; t < packed.length; t += 1) {
76
- const [r, g, b] = unpackRgb9e5(packed[t]);
77
- rgba[t * 4] = r;
78
- rgba[t * 4 + 1] = g;
79
- rgba[t * 4 + 2] = b;
79
+ const word = packed[t];
80
+ const scale = RGB9E5_SCALE[(word >>> 27) & 0x1f];
81
+ rgba[t * 4] = (word & 0x1ff) * scale;
82
+ rgba[t * 4 + 1] = ((word >>> 9) & 0x1ff) * scale;
83
+ rgba[t * 4 + 2] = ((word >>> 18) & 0x1ff) * scale;
80
84
  rgba[t * 4 + 3] = 1;
81
85
  }
82
86
  levelFaces.push(rgba);
@@ -1 +1 @@
1
- {"version":3,"file":"Rgb9e5Cube.js","sourceRoot":"","sources":["../../../../../packages/rendering/src/environment/Rgb9e5Cube.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Rgb9e5Cube.js","sourceRoot":"","sources":["../../../../../packages/rendering/src/environment/Rgb9e5Cube.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,12 @@ export declare class Prd02EnvironmentProbe implements EnvironmentProbe {
30
30
  readonly shTexture: Texture | null;
31
31
  readonly background: Texture | null;
32
32
  readonly source: ProbeSource;
33
+ /**
34
+ * Set only on a probe whose every texel (all faces, all mips) is this one linear radiance: the analytic neutral floor.
35
+ * `probeToEquirectTexture` then fills its output directly instead of sampling the cube per equirect texel. The value is
36
+ * the float32 radiance the cube was encoded from, so the fill is bit-identical to the sampled result.
37
+ */
38
+ readonly uniformRadiance: number | undefined;
33
39
  private disposed;
34
40
  constructor(args: {
35
41
  readonly specularCube: Texture;
@@ -39,9 +45,24 @@ export declare class Prd02EnvironmentProbe implements EnvironmentProbe {
39
45
  readonly shTexture: Texture | null;
40
46
  readonly background: Texture | null;
41
47
  readonly source: ProbeSource;
48
+ readonly uniformRadiance?: number;
42
49
  });
43
50
  dispose(): void;
44
51
  }
52
+ /**
53
+ * IEEE-754 binary16 encode for rgba16f upload (clamps negatives/∞ to the HDR range).
54
+ *
55
+ * Bit-for-bit the same result as the earlier `Math.log2` / `Math.round` version (including its rounding of a
56
+ * mantissa that carries into the next binade down rather than up), but reads the exponent and mantissa from
57
+ * the float32 bits: that version dominated the first frame (about 250 ms of CPU for the default room probe).
58
+ * Inputs are always float32 face data, so the double → float32 store below is exact.
59
+ */
60
+ export declare function floatToHalf(value: number): number;
61
+ /**
62
+ * `texels` RGBA half-float texels of one linear radiance (alpha 1). Same bits as `faceToHalf` of a face filled with
63
+ * `radiance` and alpha 1, without encoding every channel of every texel.
64
+ */
65
+ export declare function uniformRadianceHalf(texels: number, radiance: number): Uint16Array;
45
66
  /** Pack the 27-float SH into a 9×1 rgba32f texture (w lane unused). */
46
67
  export declare function sh9ToTexture(sh9: Float32Array): Texture;
47
68
  /** Build a probe from six RGBA float faces (linear HDR). */
@@ -84,6 +105,14 @@ export declare function buildNeutralRoomLegacyProbe(options?: Prd02ProbeBuildOpt
84
105
  export declare function buildRoomFaces(faceSize: number): Float32Array[];
85
106
  /** 90° perspective view-projection for cube capture at `position`. Row-major, GL clip space. */
86
107
  export declare function cubeFaceViewProjection(face: 0 | 1 | 2 | 3 | 4 | 5, position?: readonly [number, number, number], near?: number, far?: number): Float32Array;
108
+ /** IEEE-754 binary16 decode (rgba16f readback → Float32); table-driven, exact (every half is a float32). */
109
+ export declare function halfToFloat(h: number): number;
110
+ /** 2× box-filter downsample of an RGBA32F image (mip chain, linear HDR). Sums in the same order as a naive 2×2 loop. */
111
+ export declare function downsampleRgba(src: Float32Array, w: number, h: number): {
112
+ data: Float32Array;
113
+ width: number;
114
+ height: number;
115
+ };
87
116
  /**
88
117
  * Legacy-path bridge (PRD-02 Phase 3): project the probe's mip-0 specular
89
118
  * cube to a mipped RGBA16F equirect — linear HDR end to end (no Reinhard,
@@ -1 +1 @@
1
- {"version":3,"file":"probeBuild.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/environment/probeBuild.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"probeBuild.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/environment/probeBuild.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAwB,MAAM,eAAe,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAGpE,OAAO,EAA8D,KAAK,mBAAmB,EAAE,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEvJ,eAAO,MAAM,eAAe,+CAAgD,CAAC;AAE7E,MAAM,MAAM,WAAW,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AAErD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACjD,gFAAgF;IAChF,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,eAAe,CAAC;IACxF,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,4EAA4E;IAC5E,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,oFAAoF;IACpF,QAAQ,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,qBAAa,qBAAsB,YAAW,gBAAgB;IAC5D,SAAgB,IAAI,EAAG,mBAAmB,CAAU;IACpD,SAAgB,YAAY,EAAE,OAAO,CAAC;IACtC,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,SAAgB,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACvD,SAAgB,GAAG,EAAE,YAAY,CAAC;IAClC,SAAgB,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1C,SAAgB,UAAU,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3C,SAAgB,MAAM,EAAE,WAAW,CAAC;IACpC;;;;OAIG;IACH,SAAgB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpD,OAAO,CAAC,QAAQ,CAAS;gBAEb,IAAI,EAAE;QAChB,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;QAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAChD,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC;QAC3B,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;QACnC,QAAQ,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI,CAAC;QACpC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;QAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;KACnC;IAWD,OAAO,IAAI,IAAI;CAOhB;AAKD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAUjD;AASD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,CAWjF;AAED,uEAAuE;AACvE,wBAAgB,YAAY,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAQvD;AAED,4DAA4D;AAC5D,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,SAAS,YAAY,EAAE,EAC9B,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,EACtC,OAAO,GAAE,sBAA2B,GACnC,qBAAqB,CA4BvB;AAED,gFAAgF;AAChF,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAA;CAAE,EAAE,EACzF,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,EACtC,OAAO,GAAE,sBAA2B,GACnC,qBAAqB,CA2BvB;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,qBAAqB,CAAC;AAEzD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,2BAU5B,CAAC;AAEH;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,EACtC,OAAO,GAAE,sBAA2B,GACnC,qBAAqB,CA0BvB;AA8BD;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,GAAE,sBAA2B,GAAG,qBAAqB,CAkCvG;AAED,wEAAwE;AACxE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,EAAE,CAe/D;AAED,gGAAgG;AAChG,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAC3B,QAAQ,GAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAa,EACvD,IAAI,SAAO,EACX,GAAG,SAAM,GACR,YAAY,CAqCd;AAKD,4GAA4G;AAC5G,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAgB7C;AAED,wHAAwH;AACxH,wBAAgB,cAAc,CAAC,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAqB7H;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,gBAAgB,EACvB,OAAO,GAAE;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAClE,OAAO,CAkDT"}
@@ -18,6 +18,12 @@ export class Prd02EnvironmentProbe {
18
18
  shTexture;
19
19
  background;
20
20
  source;
21
+ /**
22
+ * Set only on a probe whose every texel (all faces, all mips) is this one linear radiance: the analytic neutral floor.
23
+ * `probeToEquirectTexture` then fills its output directly instead of sampling the cube per equirect texel. The value is
24
+ * the float32 radiance the cube was encoded from, so the fill is bit-identical to the sampled result.
25
+ */
26
+ uniformRadiance;
21
27
  disposed = false;
22
28
  constructor(args) {
23
29
  this.specularCube = args.specularCube;
@@ -27,6 +33,7 @@ export class Prd02EnvironmentProbe {
27
33
  this.shTexture = args.shTexture;
28
34
  this.background = args.background;
29
35
  this.source = args.source;
36
+ this.uniformRadiance = args.uniformRadiance;
30
37
  }
31
38
  dispose() {
32
39
  if (this.disposed)
@@ -37,19 +44,29 @@ export class Prd02EnvironmentProbe {
37
44
  this.background?.dispose();
38
45
  }
39
46
  }
40
- /** IEEE-754 binary16 encode for rgba16f upload (clamps negatives/∞ to the HDR range). */
41
- function floatToHalf(value) {
42
- const v = Math.max(0, value);
43
- if (Number.isNaN(v))
47
+ const halfScratch = new Float32Array(1);
48
+ const halfScratchBits = new Uint32Array(halfScratch.buffer);
49
+ /**
50
+ * IEEE-754 binary16 encode for rgba16f upload (clamps negatives/∞ to the HDR range).
51
+ *
52
+ * Bit-for-bit the same result as the earlier `Math.log2` / `Math.round` version (including its rounding of a
53
+ * mantissa that carries into the next binade down rather than up), but reads the exponent and mantissa from
54
+ * the float32 bits: that version dominated the first frame (about 250 ms of CPU for the default room probe).
55
+ * Inputs are always float32 face data, so the double → float32 store below is exact.
56
+ */
57
+ export function floatToHalf(value) {
58
+ if (value !== value)
44
59
  return 0x7e00;
45
- if (!Number.isFinite(v) || v >= 65504)
46
- return 0x7bff;
47
- if (v === 0)
60
+ if (value <= 0)
48
61
  return 0;
49
- if (v < 2 ** -14)
50
- return Math.round(v / 2 ** -24);
51
- const exponent = Math.floor(Math.log2(v));
52
- const mantissa = Math.round((v / 2 ** exponent - 1) * 1024);
62
+ if (value >= 65504)
63
+ return 0x7bff;
64
+ if (value < 6.103515625e-5)
65
+ return Math.round(value / 5.960464477539063e-8);
66
+ halfScratch[0] = value;
67
+ const bits = halfScratchBits[0];
68
+ const exponent = (bits >>> 23) - 127;
69
+ const mantissa = ((bits & 0x7fffff) + 4096) >>> 13;
53
70
  return ((exponent + 15) << 10) | (mantissa & 0x03ff);
54
71
  }
55
72
  /** Float32 RGBA face → Uint16 half-float bytes (the rgba16f upload format). */
@@ -59,6 +76,22 @@ function faceToHalf(face) {
59
76
  out[i] = floatToHalf(face[i] ?? 0);
60
77
  return out;
61
78
  }
79
+ /**
80
+ * `texels` RGBA half-float texels of one linear radiance (alpha 1). Same bits as `faceToHalf` of a face filled with
81
+ * `radiance` and alpha 1, without encoding every channel of every texel.
82
+ */
83
+ export function uniformRadianceHalf(texels, radiance) {
84
+ const out = new Uint16Array(texels * 4);
85
+ const rgb = floatToHalf(radiance);
86
+ const alpha = floatToHalf(1);
87
+ for (let i = 0; i < out.length; i += 4) {
88
+ out[i] = rgb;
89
+ out[i + 1] = rgb;
90
+ out[i + 2] = rgb;
91
+ out[i + 3] = alpha;
92
+ }
93
+ return out;
94
+ }
62
95
  /** Pack the 27-float SH into a 9×1 rgba32f texture (w lane unused). */
63
96
  export function sh9ToTexture(sh9) {
64
97
  const data = new Float32Array(36);
@@ -156,19 +189,30 @@ export const NEUTRAL_FLOOR_SH9 = new Float32Array([
156
189
  * arrives through the baked `neutral` preset upgrade.
157
190
  */
158
191
  export function buildNeutralFloorProbe(faceSize, options = {}) {
159
- const face = new Float32Array(faceSize * faceSize * 4);
160
- for (let i = 0; i < faceSize * faceSize; i += 1) {
161
- face[i * 4] = NEUTRAL_FLOOR_RADIANCE;
162
- face[i * 4 + 1] = NEUTRAL_FLOOR_RADIANCE;
163
- face[i * 4 + 2] = NEUTRAL_FLOOR_RADIANCE;
164
- face[i * 4 + 3] = 1;
165
- }
166
- const faces = [face, face, face, face, face, face];
167
- return buildProbeFromLevels([{ faceSize, faces }], faceSize, {
168
- ...options,
192
+ // The floor is one constant radiance, so one encoded face is shared by all six (`Texture` copies what it is given).
193
+ // Same bits as encoding six identical float faces through `buildProbeFromLevels`, at a sixth of the work and without
194
+ // the 6 x faceSize^2 x 4 float allocation: this runs synchronously before the first frame.
195
+ const data = uniformRadianceHalf(faceSize * faceSize, NEUTRAL_FLOOR_RADIANCE);
196
+ const specularCube = new Texture({
197
+ width: faceSize,
198
+ height: faceSize,
199
+ format: "rgba16f",
169
200
  label: options.label ?? "env-neutral-floor",
201
+ cubeFaces: CUBE_FACE_ORDER.map((face) => ({
202
+ face: face,
203
+ mipLevels: [{ width: faceSize, height: faceSize, data }]
204
+ }))
205
+ });
206
+ const sh9 = options.sh9 ?? new Float32Array(NEUTRAL_FLOOR_SH9);
207
+ return new Prd02EnvironmentProbe({
208
+ specularCube,
209
+ mipCount: 1,
210
+ faceSize,
211
+ sh9,
212
+ shTexture: sh9ToTexture(sh9),
213
+ background: options.background ?? null,
170
214
  source: options.source ?? "neutral",
171
- sh9: options.sh9 ?? new Float32Array(NEUTRAL_FLOOR_SH9)
215
+ uniformRadiance: Math.fround(NEUTRAL_FLOOR_RADIANCE)
172
216
  });
173
217
  }
174
218
  /** Nearest 2× upsample of one square float RGBA face. */
@@ -308,36 +352,43 @@ export function cubeFaceViewProjection(face, position = [0, 0, 0], near = 0.05,
308
352
  }
309
353
  return out;
310
354
  }
311
- /** IEEE-754 binary16 decode (rgba16f readback → Float32). */
312
- function halfToFloat(h) {
313
- const sign = h & 0x8000 ? -1 : 1;
314
- const exp = (h >> 10) & 0x1f;
315
- const mantissa = h & 0x03ff;
316
- if (exp === 0)
317
- return sign * mantissa * 2 ** -24;
318
- if (exp === 0x1f)
319
- return mantissa !== 0 ? Number.NaN : sign * Number.POSITIVE_INFINITY;
320
- return sign * (1 + mantissa / 1024) * 2 ** (exp - 15);
355
+ let halfDecodeTable = null;
356
+ /** IEEE-754 binary16 decode (rgba16f readback → Float32); table-driven, exact (every half is a float32). */
357
+ export function halfToFloat(h) {
358
+ if (halfDecodeTable === null) {
359
+ const table = new Float32Array(65536);
360
+ for (let bits = 0; bits < 65536; bits += 1) {
361
+ const sign = bits & 0x8000 ? -1 : 1;
362
+ const exp = (bits >> 10) & 0x1f;
363
+ const mantissa = bits & 0x03ff;
364
+ table[bits] = exp === 0
365
+ ? sign * mantissa * 2 ** -24
366
+ : exp === 0x1f
367
+ ? (mantissa !== 0 ? Number.NaN : sign * Number.POSITIVE_INFINITY)
368
+ : sign * (1 + mantissa / 1024) * 2 ** (exp - 15);
369
+ }
370
+ halfDecodeTable = table;
371
+ }
372
+ return halfDecodeTable[h & 0xffff];
321
373
  }
322
- /** 2× box-filter downsample of an RGBA32F image (mip chain, linear HDR). */
323
- function downsampleRgba(src, w, h) {
374
+ /** 2× box-filter downsample of an RGBA32F image (mip chain, linear HDR). Sums in the same order as a naive 2×2 loop. */
375
+ export function downsampleRgba(src, w, h) {
324
376
  const nw = Math.max(1, w >> 1);
325
377
  const nh = Math.max(1, h >> 1);
326
378
  const out = new Float32Array(nw * nh * 4);
327
379
  for (let y = 0; y < nh; y += 1) {
380
+ const sy0 = Math.min(h - 1, y * 2);
381
+ const sy1 = Math.min(h - 1, y * 2 + 1);
328
382
  for (let x = 0; x < nw; x += 1) {
383
+ const sx0 = Math.min(w - 1, x * 2);
384
+ const sx1 = Math.min(w - 1, x * 2 + 1);
385
+ const i00 = (sy0 * w + sx0) * 4;
386
+ const i01 = (sy0 * w + sx1) * 4;
387
+ const i10 = (sy1 * w + sx0) * 4;
388
+ const i11 = (sy1 * w + sx1) * 4;
389
+ const o = (y * nw + x) * 4;
329
390
  for (let c = 0; c < 4; c += 1) {
330
- let sum = 0;
331
- let count = 0;
332
- for (let dy = 0; dy < 2; dy += 1) {
333
- for (let dx = 0; dx < 2; dx += 1) {
334
- const sx = Math.min(w - 1, x * 2 + dx);
335
- const sy = Math.min(h - 1, y * 2 + dy);
336
- sum += src[(sy * w + sx) * 4 + c];
337
- count += 1;
338
- }
339
- }
340
- out[(y * nw + x) * 4 + c] = sum / count;
391
+ out[o + c] = (src[i00 + c] + src[i01 + c] + src[i10 + c] + src[i11 + c]) / 4;
341
392
  }
342
393
  }
343
394
  }
@@ -352,6 +403,9 @@ function downsampleRgba(src, w, h) {
352
403
  export function probeToEquirectTexture(probe, options = {}) {
353
404
  const width = options.width ?? probe.faceSize * 2;
354
405
  const height = options.height ?? probe.faceSize;
406
+ const uniform = probe.uniformRadiance;
407
+ if (uniform !== undefined)
408
+ return uniformEquirectTexture(probe, uniform, width, height);
355
409
  const faceSize = probe.faceSize;
356
410
  const level0 = probe.specularCube.cubeFaces.map((face) => {
357
411
  const mip = face.mipLevels[0];
@@ -403,4 +457,29 @@ export function probeToEquirectTexture(probe, options = {}) {
403
457
  mipLevels
404
458
  });
405
459
  }
460
+ /**
461
+ * The equirect of a probe whose cube is one constant radiance. Sampling is nearest-texel and the half encode of a value
462
+ * that is already a half is the identity, and a 2x2 box mean of four equal halves is exact in float32, so every texel of
463
+ * every mip equals the half of the radiance: this is the sampled result, produced without the per-texel cube lookups.
464
+ */
465
+ function uniformEquirectTexture(probe, radiance, width, height) {
466
+ const mipLevels = [];
467
+ let w = width;
468
+ let h = height;
469
+ for (;;) {
470
+ mipLevels.push({ width: w, height: h, data: uniformRadianceHalf(w * h, radiance) });
471
+ if (w <= 1 && h <= 1)
472
+ break;
473
+ w = Math.max(1, w >> 1);
474
+ h = Math.max(1, h >> 1);
475
+ }
476
+ return new Texture({
477
+ width,
478
+ height,
479
+ format: "rgba16f",
480
+ colorSpace: "linear",
481
+ label: `prd02-equirect-${probe.source}`,
482
+ mipLevels
483
+ });
484
+ }
406
485
  //# sourceMappingURL=probeBuild.js.map