@aura3d/engine 2.0.4 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (651) hide show
  1. package/README.md +25 -10
  2. package/dist/animation/AnimationAction.d.ts.map +1 -1
  3. package/dist/animation/AnimationAction.js +20 -2
  4. package/dist/animation/AnimationAction.js.map +1 -1
  5. package/dist/animation/AnimationLayer.d.ts +1 -0
  6. package/dist/animation/AnimationLayer.d.ts.map +1 -1
  7. package/dist/animation/AnimationLayer.js +24 -3
  8. package/dist/animation/AnimationLayer.js.map +1 -1
  9. package/dist/animation/AnimationMixer.d.ts +3 -0
  10. package/dist/animation/AnimationMixer.d.ts.map +1 -1
  11. package/dist/animation/AnimationMixer.js +69 -5
  12. package/dist/animation/AnimationMixer.js.map +1 -1
  13. package/dist/animation/AnimationTrack.d.ts.map +1 -1
  14. package/dist/animation/AnimationTrack.js +13 -0
  15. package/dist/animation/AnimationTrack.js.map +1 -1
  16. package/dist/animation/FootIk.d.ts +10 -0
  17. package/dist/animation/FootIk.d.ts.map +1 -1
  18. package/dist/animation/FootIk.js +95 -3
  19. package/dist/animation/FootIk.js.map +1 -1
  20. package/dist/animation/HumanoidRetargeting.d.ts +29 -0
  21. package/dist/animation/HumanoidRetargeting.d.ts.map +1 -1
  22. package/dist/animation/HumanoidRetargeting.js +41 -1
  23. package/dist/animation/HumanoidRetargeting.js.map +1 -1
  24. package/dist/animation/LocomotionKit.d.ts +6 -0
  25. package/dist/animation/LocomotionKit.d.ts.map +1 -1
  26. package/dist/animation/LocomotionKit.js +6 -0
  27. package/dist/animation/LocomotionKit.js.map +1 -1
  28. package/dist/animation/RootMotion.d.ts +27 -0
  29. package/dist/animation/RootMotion.d.ts.map +1 -1
  30. package/dist/animation/RootMotion.js +38 -0
  31. package/dist/animation/RootMotion.js.map +1 -1
  32. package/dist/animation/SpringBones.d.ts +28 -0
  33. package/dist/animation/SpringBones.d.ts.map +1 -1
  34. package/dist/animation/SpringBones.js +24 -0
  35. package/dist/animation/SpringBones.js.map +1 -1
  36. package/dist/assets/GLTFAnimationRuntime.d.ts +95 -2
  37. package/dist/assets/GLTFAnimationRuntime.d.ts.map +1 -1
  38. package/dist/assets/GLTFAnimationRuntime.js +328 -3
  39. package/dist/assets/GLTFAnimationRuntime.js.map +1 -1
  40. package/dist/assets/GLTFExtensionSupport.js +2 -2
  41. package/dist/assets/GLTFExtensionSupport.js.map +1 -1
  42. package/dist/assets/GLTFLoader.d.ts +360 -1
  43. package/dist/assets/GLTFLoader.d.ts.map +1 -1
  44. package/dist/assets/GLTFLoader.js +197 -1
  45. package/dist/assets/GLTFLoader.js.map +1 -1
  46. package/dist/assets/KTX2BasisTextureTranscoder.d.ts +39 -0
  47. package/dist/assets/KTX2BasisTextureTranscoder.d.ts.map +1 -1
  48. package/dist/assets/KTX2BasisTextureTranscoder.js +70 -0
  49. package/dist/assets/KTX2BasisTextureTranscoder.js.map +1 -1
  50. package/dist/assets/TexturePipeline.d.ts +20 -0
  51. package/dist/assets/TexturePipeline.d.ts.map +1 -1
  52. package/dist/assets/TexturePipeline.js +20 -0
  53. package/dist/assets/TexturePipeline.js.map +1 -1
  54. package/dist/assets/TextureStreaming.d.ts +30 -0
  55. package/dist/assets/TextureStreaming.d.ts.map +1 -1
  56. package/dist/assets/TextureStreaming.js +53 -0
  57. package/dist/assets/TextureStreaming.js.map +1 -1
  58. package/dist/assets/browser-index.d.ts +7 -3
  59. package/dist/assets/browser-index.d.ts.map +1 -1
  60. package/dist/assets/browser-index.js +3 -1
  61. package/dist/assets/browser-index.js.map +1 -1
  62. package/dist/assets/gltf-runtime.d.ts +1 -1
  63. package/dist/assets/gltf-runtime.d.ts.map +1 -1
  64. package/dist/assets/gltf-runtime.js.map +1 -1
  65. package/dist/assets/index.d.ts +7 -7
  66. package/dist/assets/index.d.ts.map +1 -1
  67. package/dist/assets/index.js +3 -3
  68. package/dist/assets/index.js.map +1 -1
  69. package/dist/assets/loaders/HDRLoader.d.ts +40 -0
  70. package/dist/assets/loaders/HDRLoader.d.ts.map +1 -1
  71. package/dist/assets/loaders/HDRLoader.js +158 -0
  72. package/dist/assets/loaders/HDRLoader.js.map +1 -1
  73. package/dist/audio/AudioSource.d.ts +2 -0
  74. package/dist/audio/AudioSource.d.ts.map +1 -1
  75. package/dist/audio/AudioSource.js +7 -0
  76. package/dist/audio/AudioSource.js.map +1 -1
  77. package/dist/audio/Footsteps.d.ts +47 -0
  78. package/dist/audio/Footsteps.d.ts.map +1 -0
  79. package/dist/audio/Footsteps.js +73 -0
  80. package/dist/audio/Footsteps.js.map +1 -0
  81. package/dist/audio/GameMixer.d.ts +69 -0
  82. package/dist/audio/GameMixer.d.ts.map +1 -0
  83. package/dist/audio/GameMixer.js +141 -0
  84. package/dist/audio/GameMixer.js.map +1 -0
  85. package/dist/audio/PositionalEmitter.d.ts +95 -0
  86. package/dist/audio/PositionalEmitter.d.ts.map +1 -0
  87. package/dist/audio/PositionalEmitter.js +199 -0
  88. package/dist/audio/PositionalEmitter.js.map +1 -0
  89. package/dist/audio/index.d.ts +6 -0
  90. package/dist/audio/index.d.ts.map +1 -1
  91. package/dist/audio/index.js +3 -0
  92. package/dist/audio/index.js.map +1 -1
  93. package/dist/aura3d-cli/pull-bridge/profiles.d.ts +12 -2
  94. package/dist/aura3d-cli/pull-bridge/profiles.d.ts.map +1 -1
  95. package/dist/aura3d-cli/pull-bridge/profiles.js +35 -4
  96. package/dist/aura3d-cli/pull-bridge/profiles.js.map +1 -1
  97. package/dist/aura3d-cli/pull-bridge/provenance.d.ts +15 -1
  98. package/dist/aura3d-cli/pull-bridge/provenance.d.ts.map +1 -1
  99. package/dist/aura3d-cli/pull-bridge/provenance.js +60 -1
  100. package/dist/aura3d-cli/pull-bridge/provenance.js.map +1 -1
  101. package/dist/aura3d-cli/pull-bridge/scoring.d.ts +10 -1
  102. package/dist/aura3d-cli/pull-bridge/scoring.d.ts.map +1 -1
  103. package/dist/aura3d-cli/pull-bridge/scoring.js +9 -1
  104. package/dist/aura3d-cli/pull-bridge/scoring.js.map +1 -1
  105. package/dist/aura3d-cli/pull-bridge/search.js +2 -2
  106. package/dist/aura3d-cli/pull-bridge/search.js.map +1 -1
  107. package/dist/aura3d-cli/pull-bridge.d.ts +15 -3
  108. package/dist/aura3d-cli/pull-bridge.d.ts.map +1 -1
  109. package/dist/aura3d-cli/pull-bridge.js +68 -5
  110. package/dist/aura3d-cli/pull-bridge.js.map +1 -1
  111. package/dist/controls/ArcballControls.d.ts +92 -0
  112. package/dist/controls/ArcballControls.d.ts.map +1 -0
  113. package/dist/controls/ArcballControls.js +286 -0
  114. package/dist/controls/ArcballControls.js.map +1 -0
  115. package/dist/controls/DragControls.d.ts +13 -0
  116. package/dist/controls/DragControls.d.ts.map +1 -1
  117. package/dist/controls/DragControls.js +24 -1
  118. package/dist/controls/DragControls.js.map +1 -1
  119. package/dist/controls/FlyControls.d.ts +9 -0
  120. package/dist/controls/FlyControls.d.ts.map +1 -1
  121. package/dist/controls/FlyControls.js +20 -2
  122. package/dist/controls/FlyControls.js.map +1 -1
  123. package/dist/controls/FocusFrame.d.ts +34 -0
  124. package/dist/controls/FocusFrame.d.ts.map +1 -0
  125. package/dist/controls/FocusFrame.js +82 -0
  126. package/dist/controls/FocusFrame.js.map +1 -0
  127. package/dist/controls/HoverOutline.d.ts +46 -0
  128. package/dist/controls/HoverOutline.d.ts.map +1 -0
  129. package/dist/controls/HoverOutline.js +87 -0
  130. package/dist/controls/HoverOutline.js.map +1 -0
  131. package/dist/controls/InteractionControls.d.ts +7 -0
  132. package/dist/controls/InteractionControls.d.ts.map +1 -1
  133. package/dist/controls/InteractionControls.js +12 -1
  134. package/dist/controls/InteractionControls.js.map +1 -1
  135. package/dist/controls/NativeControlTypes.d.ts +17 -0
  136. package/dist/controls/NativeControlTypes.d.ts.map +1 -1
  137. package/dist/controls/NativeControlTypes.js.map +1 -1
  138. package/dist/controls/OrbitControls.d.ts +9 -0
  139. package/dist/controls/OrbitControls.d.ts.map +1 -1
  140. package/dist/controls/OrbitControls.js +26 -6
  141. package/dist/controls/OrbitControls.js.map +1 -1
  142. package/dist/controls/Picking.d.ts +15 -0
  143. package/dist/controls/Picking.d.ts.map +1 -1
  144. package/dist/controls/Picking.js +62 -23
  145. package/dist/controls/Picking.js.map +1 -1
  146. package/dist/controls/PointerLockControls.d.ts.map +1 -1
  147. package/dist/controls/PointerLockControls.js +4 -0
  148. package/dist/controls/PointerLockControls.js.map +1 -1
  149. package/dist/controls/SelectionManager.d.ts +8 -0
  150. package/dist/controls/SelectionManager.d.ts.map +1 -1
  151. package/dist/controls/SelectionManager.js +11 -0
  152. package/dist/controls/SelectionManager.js.map +1 -1
  153. package/dist/controls/TrackballControls.d.ts +7 -0
  154. package/dist/controls/TrackballControls.d.ts.map +1 -1
  155. package/dist/controls/TrackballControls.js +19 -5
  156. package/dist/controls/TrackballControls.js.map +1 -1
  157. package/dist/controls/TransformControls.d.ts +8 -0
  158. package/dist/controls/TransformControls.d.ts.map +1 -1
  159. package/dist/controls/TransformControls.js +15 -2
  160. package/dist/controls/TransformControls.js.map +1 -1
  161. package/dist/controls/index.d.ts +6 -0
  162. package/dist/controls/index.d.ts.map +1 -1
  163. package/dist/controls/index.js +3 -0
  164. package/dist/controls/index.js.map +1 -1
  165. package/dist/create-aura3d/index.js +1 -1
  166. package/dist/editor-runtime/RootEditorSurface.d.ts +65 -0
  167. package/dist/editor-runtime/RootEditorSurface.d.ts.map +1 -0
  168. package/dist/editor-runtime/RootEditorSurface.js +62 -0
  169. package/dist/editor-runtime/RootEditorSurface.js.map +1 -0
  170. package/dist/editor-runtime/index.d.ts +2 -0
  171. package/dist/editor-runtime/index.d.ts.map +1 -1
  172. package/dist/editor-runtime/index.js +1 -0
  173. package/dist/editor-runtime/index.js.map +1 -1
  174. package/dist/engine/agent-api/AnimationController.d.ts +9 -1
  175. package/dist/engine/agent-api/AnimationController.d.ts.map +1 -1
  176. package/dist/engine/agent-api/AnimationController.js +5 -1
  177. package/dist/engine/agent-api/AnimationController.js.map +1 -1
  178. package/dist/engine/agent-api/AnimationDebugOverlay.d.ts +56 -0
  179. package/dist/engine/agent-api/AnimationDebugOverlay.d.ts.map +1 -0
  180. package/dist/engine/agent-api/AnimationDebugOverlay.js +148 -0
  181. package/dist/engine/agent-api/AnimationDebugOverlay.js.map +1 -0
  182. package/dist/engine/agent-api/AnimationMixerBuilders.d.ts +41 -0
  183. package/dist/engine/agent-api/AnimationMixerBuilders.d.ts.map +1 -0
  184. package/dist/engine/agent-api/AnimationMixerBuilders.js +146 -0
  185. package/dist/engine/agent-api/AnimationMixerBuilders.js.map +1 -0
  186. package/dist/engine/agent-api/AssetDecoders.d.ts +17 -0
  187. package/dist/engine/agent-api/AssetDecoders.d.ts.map +1 -0
  188. package/dist/engine/agent-api/AssetDecoders.js +18 -0
  189. package/dist/engine/agent-api/AssetDecoders.js.map +1 -0
  190. package/dist/engine/agent-api/Decals.d.ts +174 -0
  191. package/dist/engine/agent-api/Decals.d.ts.map +1 -0
  192. package/dist/engine/agent-api/Decals.js +350 -0
  193. package/dist/engine/agent-api/Decals.js.map +1 -0
  194. package/dist/engine/agent-api/FootPlanting.d.ts +75 -0
  195. package/dist/engine/agent-api/FootPlanting.d.ts.map +1 -0
  196. package/dist/engine/agent-api/FootPlanting.js +60 -0
  197. package/dist/engine/agent-api/FootPlanting.js.map +1 -0
  198. package/dist/engine/agent-api/GameAppRuntime.d.ts +19 -0
  199. package/dist/engine/agent-api/GameAppRuntime.d.ts.map +1 -1
  200. package/dist/engine/agent-api/GameAppRuntime.js +37 -1
  201. package/dist/engine/agent-api/GameAppRuntime.js.map +1 -1
  202. package/dist/engine/agent-api/GameCameraRigs.d.ts +185 -0
  203. package/dist/engine/agent-api/GameCameraRigs.d.ts.map +1 -0
  204. package/dist/engine/agent-api/GameCameraRigs.js +414 -0
  205. package/dist/engine/agent-api/GameCameraRigs.js.map +1 -0
  206. package/dist/engine/agent-api/GameFeel.d.ts +100 -0
  207. package/dist/engine/agent-api/GameFeel.d.ts.map +1 -0
  208. package/dist/engine/agent-api/GameFeel.js +226 -0
  209. package/dist/engine/agent-api/GameFeel.js.map +1 -0
  210. package/dist/engine/agent-api/LabelTelemetry.d.ts +108 -0
  211. package/dist/engine/agent-api/LabelTelemetry.d.ts.map +1 -0
  212. package/dist/engine/agent-api/LabelTelemetry.js +116 -0
  213. package/dist/engine/agent-api/LabelTelemetry.js.map +1 -0
  214. package/dist/engine/agent-api/NavigationCrowds.d.ts +146 -0
  215. package/dist/engine/agent-api/NavigationCrowds.d.ts.map +1 -0
  216. package/dist/engine/agent-api/NavigationCrowds.js +104 -0
  217. package/dist/engine/agent-api/NavigationCrowds.js.map +1 -0
  218. package/dist/engine/agent-api/PhysicsRuntime.d.ts +61 -5
  219. package/dist/engine/agent-api/PhysicsRuntime.d.ts.map +1 -1
  220. package/dist/engine/agent-api/PhysicsRuntime.js +53 -21
  221. package/dist/engine/agent-api/PhysicsRuntime.js.map +1 -1
  222. package/dist/engine/agent-api/RootGeometry.d.ts +16 -1
  223. package/dist/engine/agent-api/RootGeometry.d.ts.map +1 -1
  224. package/dist/engine/agent-api/RootGeometry.js.map +1 -1
  225. package/dist/engine/agent-api/RuntimeNodeHandle.d.ts +6 -0
  226. package/dist/engine/agent-api/RuntimeNodeHandle.d.ts.map +1 -1
  227. package/dist/engine/agent-api/RuntimeNodeHandle.js.map +1 -1
  228. package/dist/engine/agent-api/Scatter.d.ts +18 -0
  229. package/dist/engine/agent-api/Scatter.d.ts.map +1 -0
  230. package/dist/engine/agent-api/Scatter.js +18 -0
  231. package/dist/engine/agent-api/Scatter.js.map +1 -0
  232. package/dist/engine/agent-api/TouchControlBinding.d.ts +32 -0
  233. package/dist/engine/agent-api/TouchControlBinding.d.ts.map +1 -1
  234. package/dist/engine/agent-api/TouchControlBinding.js +36 -0
  235. package/dist/engine/agent-api/TouchControlBinding.js.map +1 -1
  236. package/dist/engine/agent-api/VehicleChassis.d.ts.map +1 -1
  237. package/dist/engine/agent-api/VehicleChassis.js +76 -13
  238. package/dist/engine/agent-api/VehicleChassis.js.map +1 -1
  239. package/dist/engine/agent-api/index.d.ts +708 -6
  240. package/dist/engine/agent-api/index.d.ts.map +1 -1
  241. package/dist/engine/agent-api/index.js +1757 -134
  242. package/dist/engine/agent-api/index.js.map +1 -1
  243. package/dist/engine/agent-api/product-viewer-runtime.d.ts.map +1 -1
  244. package/dist/engine/game/GameAudio.d.ts +66 -0
  245. package/dist/engine/game/GameAudio.d.ts.map +1 -1
  246. package/dist/engine/game/GameAudio.js +179 -44
  247. package/dist/engine/game/GameAudio.js.map +1 -1
  248. package/dist/engine/instances-model/InstancedModel.d.ts +111 -0
  249. package/dist/engine/instances-model/InstancedModel.d.ts.map +1 -0
  250. package/dist/engine/instances-model/InstancedModel.js +108 -0
  251. package/dist/engine/instances-model/InstancedModel.js.map +1 -0
  252. package/dist/engine/material-physical/PhysicalMaterialSpec.d.ts +72 -0
  253. package/dist/engine/material-physical/PhysicalMaterialSpec.d.ts.map +1 -0
  254. package/dist/engine/material-physical/PhysicalMaterialSpec.js +95 -0
  255. package/dist/engine/material-physical/PhysicalMaterialSpec.js.map +1 -0
  256. package/dist/engine/production-runtime/GameAppRuntime.d.ts +1 -1
  257. package/dist/engine/production-runtime/GameAppRuntime.d.ts.map +1 -1
  258. package/dist/engine/production-runtime/GameRenderPreset.d.ts +76 -0
  259. package/dist/engine/production-runtime/GameRenderPreset.d.ts.map +1 -1
  260. package/dist/engine/production-runtime/GameRenderPreset.js +167 -0
  261. package/dist/engine/production-runtime/GameRenderPreset.js.map +1 -1
  262. package/dist/engine/production-runtime/TypedGLBActor.d.ts +22 -2
  263. package/dist/engine/production-runtime/TypedGLBActor.d.ts.map +1 -1
  264. package/dist/engine/production-runtime/TypedGLBActor.js +33 -1
  265. package/dist/engine/production-runtime/TypedGLBActor.js.map +1 -1
  266. package/dist/engine/production-runtime/index.d.ts +4 -4
  267. package/dist/engine/production-runtime/index.d.ts.map +1 -1
  268. package/dist/engine/production-runtime/index.js +5 -3
  269. package/dist/engine/production-runtime/index.js.map +1 -1
  270. package/dist/input/ActionMap.d.ts +40 -0
  271. package/dist/input/ActionMap.d.ts.map +1 -1
  272. package/dist/input/ActionMap.js +179 -0
  273. package/dist/input/ActionMap.js.map +1 -1
  274. package/dist/input/ComboDetector.d.ts +49 -0
  275. package/dist/input/ComboDetector.d.ts.map +1 -0
  276. package/dist/input/ComboDetector.js +102 -0
  277. package/dist/input/ComboDetector.js.map +1 -0
  278. package/dist/input/Haptics.d.ts +46 -0
  279. package/dist/input/Haptics.d.ts.map +1 -0
  280. package/dist/input/Haptics.js +67 -0
  281. package/dist/input/Haptics.js.map +1 -0
  282. package/dist/input/TouchLayouts.d.ts +35 -0
  283. package/dist/input/TouchLayouts.d.ts.map +1 -0
  284. package/dist/input/TouchLayouts.js +88 -0
  285. package/dist/input/TouchLayouts.js.map +1 -0
  286. package/dist/input/WebXRSessionController.d.ts +53 -0
  287. package/dist/input/WebXRSessionController.d.ts.map +1 -1
  288. package/dist/input/WebXRSessionController.js +88 -2
  289. package/dist/input/WebXRSessionController.js.map +1 -1
  290. package/dist/input/index.d.ts +8 -2
  291. package/dist/input/index.d.ts.map +1 -1
  292. package/dist/input/index.js +3 -0
  293. package/dist/input/index.js.map +1 -1
  294. package/dist/lean/game.d.ts +98 -0
  295. package/dist/lean/game.d.ts.map +1 -1
  296. package/dist/lean/game.js +192 -0
  297. package/dist/lean/game.js.map +1 -1
  298. package/dist/materials/GameReadyMaterialLibrary.d.ts +39 -0
  299. package/dist/materials/GameReadyMaterialLibrary.d.ts.map +1 -0
  300. package/dist/materials/GameReadyMaterialLibrary.js +253 -0
  301. package/dist/materials/GameReadyMaterialLibrary.js.map +1 -0
  302. package/dist/materials/MaterialValidation.d.ts +21 -0
  303. package/dist/materials/MaterialValidation.d.ts.map +1 -1
  304. package/dist/materials/MaterialValidation.js +105 -0
  305. package/dist/materials/MaterialValidation.js.map +1 -1
  306. package/dist/materials/browser-index.d.ts +2 -0
  307. package/dist/materials/browser-index.d.ts.map +1 -1
  308. package/dist/materials/browser-index.js +1 -0
  309. package/dist/materials/browser-index.js.map +1 -1
  310. package/dist/materials/node.d.ts +2 -2
  311. package/dist/materials/node.d.ts.map +1 -1
  312. package/dist/materials/node.js +1 -1
  313. package/dist/materials/node.js.map +1 -1
  314. package/dist/physics/CollisionVolumes.d.ts +59 -0
  315. package/dist/physics/CollisionVolumes.d.ts.map +1 -1
  316. package/dist/physics/CollisionVolumes.js +87 -0
  317. package/dist/physics/CollisionVolumes.js.map +1 -1
  318. package/dist/physics/PhysicsDebugDraw.d.ts +37 -0
  319. package/dist/physics/PhysicsDebugDraw.d.ts.map +1 -1
  320. package/dist/physics/PhysicsDebugDraw.js +38 -1
  321. package/dist/physics/PhysicsDebugDraw.js.map +1 -1
  322. package/dist/physics/PhysicsWorld.d.ts +15 -0
  323. package/dist/physics/PhysicsWorld.d.ts.map +1 -1
  324. package/dist/physics/PhysicsWorld.js +8 -1
  325. package/dist/physics/PhysicsWorld.js.map +1 -1
  326. package/dist/physics/solverless.d.ts +1 -1
  327. package/dist/physics/solverless.d.ts.map +1 -1
  328. package/dist/physics/solverless.js.map +1 -1
  329. package/dist/physics-rapier/index.d.ts +7 -1
  330. package/dist/physics-rapier/index.d.ts.map +1 -1
  331. package/dist/physics-rapier/index.js +1 -1
  332. package/dist/physics-rapier/index.js.map +1 -1
  333. package/dist/react/index.d.ts +136 -2
  334. package/dist/react/index.d.ts.map +1 -1
  335. package/dist/react/index.js +251 -10
  336. package/dist/react/index.js.map +1 -1
  337. package/dist/rendering/AtmosphereWetness.d.ts +61 -0
  338. package/dist/rendering/AtmosphereWetness.d.ts.map +1 -0
  339. package/dist/rendering/AtmosphereWetness.js +99 -0
  340. package/dist/rendering/AtmosphereWetness.js.map +1 -0
  341. package/dist/rendering/ClusteredForwardLighting.d.ts +25 -1
  342. package/dist/rendering/ClusteredForwardLighting.d.ts.map +1 -1
  343. package/dist/rendering/ClusteredForwardLighting.js +80 -3
  344. package/dist/rendering/ClusteredForwardLighting.js.map +1 -1
  345. package/dist/rendering/DayNightSky.d.ts +63 -0
  346. package/dist/rendering/DayNightSky.d.ts.map +1 -0
  347. package/dist/rendering/DayNightSky.js +156 -0
  348. package/dist/rendering/DayNightSky.js.map +1 -0
  349. package/dist/rendering/EnvironmentPresetPack.d.ts +30 -0
  350. package/dist/rendering/EnvironmentPresetPack.d.ts.map +1 -0
  351. package/dist/rendering/EnvironmentPresetPack.js +49 -0
  352. package/dist/rendering/EnvironmentPresetPack.js.map +1 -0
  353. package/dist/rendering/ForwardPass.d.ts +65 -0
  354. package/dist/rendering/ForwardPass.d.ts.map +1 -1
  355. package/dist/rendering/ForwardPass.js +196 -2
  356. package/dist/rendering/ForwardPass.js.map +1 -1
  357. package/dist/rendering/InstancedPBRMaterial.d.ts +1 -0
  358. package/dist/rendering/InstancedPBRMaterial.d.ts.map +1 -1
  359. package/dist/rendering/InstancedPBRMaterial.js +3 -0
  360. package/dist/rendering/InstancedPBRMaterial.js.map +1 -1
  361. package/dist/rendering/InstancingDiagnostics.d.ts +69 -0
  362. package/dist/rendering/InstancingDiagnostics.d.ts.map +1 -0
  363. package/dist/rendering/InstancingDiagnostics.js +98 -0
  364. package/dist/rendering/InstancingDiagnostics.js.map +1 -0
  365. package/dist/rendering/LightingRig.d.ts +19 -1
  366. package/dist/rendering/LightingRig.d.ts.map +1 -1
  367. package/dist/rendering/LightingRig.js +61 -1
  368. package/dist/rendering/LightingRig.js.map +1 -1
  369. package/dist/rendering/MeshConsolidation.d.ts +12 -0
  370. package/dist/rendering/MeshConsolidation.d.ts.map +1 -1
  371. package/dist/rendering/MeshConsolidation.js +28 -0
  372. package/dist/rendering/MeshConsolidation.js.map +1 -1
  373. package/dist/rendering/MorphTargetPlan.d.ts +29 -2
  374. package/dist/rendering/MorphTargetPlan.d.ts.map +1 -1
  375. package/dist/rendering/MorphTargetPlan.js +23 -4
  376. package/dist/rendering/MorphTargetPlan.js.map +1 -1
  377. package/dist/rendering/NormalMappedPBRMaterial.d.ts.map +1 -1
  378. package/dist/rendering/NormalMappedPBRMaterial.js +22 -2
  379. package/dist/rendering/NormalMappedPBRMaterial.js.map +1 -1
  380. package/dist/rendering/OceanSurface.d.ts +75 -0
  381. package/dist/rendering/OceanSurface.d.ts.map +1 -1
  382. package/dist/rendering/OceanSurface.js +211 -0
  383. package/dist/rendering/OceanSurface.js.map +1 -1
  384. package/dist/rendering/PBRMaterial.d.ts +1 -0
  385. package/dist/rendering/PBRMaterial.d.ts.map +1 -1
  386. package/dist/rendering/PBRMaterial.js +23 -2
  387. package/dist/rendering/PBRMaterial.js.map +1 -1
  388. package/dist/rendering/PbrReference.d.ts +48 -0
  389. package/dist/rendering/PbrReference.d.ts.map +1 -1
  390. package/dist/rendering/PbrReference.js +126 -0
  391. package/dist/rendering/PbrReference.js.map +1 -1
  392. package/dist/rendering/PlanarReflection.d.ts +221 -0
  393. package/dist/rendering/PlanarReflection.d.ts.map +1 -0
  394. package/dist/rendering/PlanarReflection.js +541 -0
  395. package/dist/rendering/PlanarReflection.js.map +1 -0
  396. package/dist/rendering/PostProcessPass.d.ts +13 -0
  397. package/dist/rendering/PostProcessPass.d.ts.map +1 -1
  398. package/dist/rendering/PostProcessPass.js +15 -4
  399. package/dist/rendering/PostProcessPass.js.map +1 -1
  400. package/dist/rendering/ReflectionSurfaces.d.ts +14 -0
  401. package/dist/rendering/ReflectionSurfaces.d.ts.map +1 -1
  402. package/dist/rendering/ReflectionSurfaces.js +93 -0
  403. package/dist/rendering/ReflectionSurfaces.js.map +1 -1
  404. package/dist/rendering/RenderDevice.d.ts +87 -0
  405. package/dist/rendering/RenderDevice.d.ts.map +1 -1
  406. package/dist/rendering/RenderDevice.js +85 -0
  407. package/dist/rendering/RenderDevice.js.map +1 -1
  408. package/dist/rendering/Renderer.js +3 -1
  409. package/dist/rendering/Renderer.js.map +1 -1
  410. package/dist/rendering/RendererPostprocessPlan.d.ts +48 -0
  411. package/dist/rendering/RendererPostprocessPlan.d.ts.map +1 -1
  412. package/dist/rendering/RendererPostprocessPlan.js +101 -11
  413. package/dist/rendering/RendererPostprocessPlan.js.map +1 -1
  414. package/dist/rendering/RendererVisualPipelineReport.d.ts.map +1 -1
  415. package/dist/rendering/RendererVisualPipelineReport.js +3 -1
  416. package/dist/rendering/RendererVisualPipelineReport.js.map +1 -1
  417. package/dist/rendering/Sampler.d.ts +29 -0
  418. package/dist/rendering/Sampler.d.ts.map +1 -1
  419. package/dist/rendering/Sampler.js +47 -0
  420. package/dist/rendering/Sampler.js.map +1 -1
  421. package/dist/rendering/SdfText.d.ts +250 -0
  422. package/dist/rendering/SdfText.d.ts.map +1 -0
  423. package/dist/rendering/SdfText.js +551 -0
  424. package/dist/rendering/SdfText.js.map +1 -0
  425. package/dist/rendering/ShaderChunks.d.ts.map +1 -1
  426. package/dist/rendering/ShaderChunks.js +30 -12
  427. package/dist/rendering/ShaderChunks.js.map +1 -1
  428. package/dist/rendering/ShaderLibrary.d.ts.map +1 -1
  429. package/dist/rendering/ShaderLibrary.js +478 -34
  430. package/dist/rendering/ShaderLibrary.js.map +1 -1
  431. package/dist/rendering/ShaderLibraryCore.d.ts.map +1 -1
  432. package/dist/rendering/ShaderLibraryCore.js +70 -12
  433. package/dist/rendering/ShaderLibraryCore.js.map +1 -1
  434. package/dist/rendering/ShadowMap.d.ts +24 -0
  435. package/dist/rendering/ShadowMap.d.ts.map +1 -1
  436. package/dist/rendering/ShadowMap.js +43 -0
  437. package/dist/rendering/ShadowMap.js.map +1 -1
  438. package/dist/rendering/SkinnedLitMaterial.d.ts.map +1 -1
  439. package/dist/rendering/SkinnedLitMaterial.js +2 -0
  440. package/dist/rendering/SkinnedLitMaterial.js.map +1 -1
  441. package/dist/rendering/SkinningBounds.d.ts +10 -0
  442. package/dist/rendering/SkinningBounds.d.ts.map +1 -1
  443. package/dist/rendering/SkinningBounds.js +27 -0
  444. package/dist/rendering/SkinningBounds.js.map +1 -1
  445. package/dist/rendering/SpriteFlipbook.d.ts +60 -0
  446. package/dist/rendering/SpriteFlipbook.d.ts.map +1 -0
  447. package/dist/rendering/SpriteFlipbook.js +128 -0
  448. package/dist/rendering/SpriteFlipbook.js.map +1 -0
  449. package/dist/rendering/TerrainTiles.d.ts +120 -0
  450. package/dist/rendering/TerrainTiles.d.ts.map +1 -0
  451. package/dist/rendering/TerrainTiles.js +221 -0
  452. package/dist/rendering/TerrainTiles.js.map +1 -0
  453. package/dist/rendering/TexturedPBRMaterial.d.ts +1 -0
  454. package/dist/rendering/TexturedPBRMaterial.d.ts.map +1 -1
  455. package/dist/rendering/TexturedPBRMaterial.js +23 -2
  456. package/dist/rendering/TexturedPBRMaterial.js.map +1 -1
  457. package/dist/rendering/TexturedUnlitMaterial.d.ts.map +1 -1
  458. package/dist/rendering/TexturedUnlitMaterial.js +20 -2
  459. package/dist/rendering/TexturedUnlitMaterial.js.map +1 -1
  460. package/dist/rendering/UnlitMaterial.d.ts.map +1 -1
  461. package/dist/rendering/UnlitMaterial.js +20 -2
  462. package/dist/rendering/UnlitMaterial.js.map +1 -1
  463. package/dist/rendering/VertexFormat.d.ts +6 -0
  464. package/dist/rendering/VertexFormat.d.ts.map +1 -1
  465. package/dist/rendering/VertexFormat.js +12 -0
  466. package/dist/rendering/VertexFormat.js.map +1 -1
  467. package/dist/rendering/VolumetricFog.d.ts +55 -0
  468. package/dist/rendering/VolumetricFog.d.ts.map +1 -0
  469. package/dist/rendering/VolumetricFog.js +91 -0
  470. package/dist/rendering/VolumetricFog.js.map +1 -0
  471. package/dist/rendering/WaterSurface.d.ts +77 -0
  472. package/dist/rendering/WaterSurface.d.ts.map +1 -0
  473. package/dist/rendering/WaterSurface.js +133 -0
  474. package/dist/rendering/WaterSurface.js.map +1 -0
  475. package/dist/rendering/WebGL2Device.d.ts +58 -0
  476. package/dist/rendering/WebGL2Device.d.ts.map +1 -1
  477. package/dist/rendering/WebGL2Device.js +536 -17
  478. package/dist/rendering/WebGL2Device.js.map +1 -1
  479. package/dist/rendering/WebGPUDevice.d.ts +50 -0
  480. package/dist/rendering/WebGPUDevice.d.ts.map +1 -1
  481. package/dist/rendering/WebGPUDevice.js +504 -10
  482. package/dist/rendering/WebGPUDevice.js.map +1 -1
  483. package/dist/rendering/WebGPUSkinningLimits.d.ts +40 -0
  484. package/dist/rendering/WebGPUSkinningLimits.d.ts.map +1 -1
  485. package/dist/rendering/WebGPUSkinningLimits.js +32 -0
  486. package/dist/rendering/WebGPUSkinningLimits.js.map +1 -1
  487. package/dist/rendering/effects/CollisionModule.d.ts +9 -0
  488. package/dist/rendering/effects/CollisionModule.d.ts.map +1 -1
  489. package/dist/rendering/effects/CollisionModule.js +10 -0
  490. package/dist/rendering/effects/CollisionModule.js.map +1 -1
  491. package/dist/rendering/effects/ColorModule.d.ts +7 -0
  492. package/dist/rendering/effects/ColorModule.d.ts.map +1 -1
  493. package/dist/rendering/effects/ColorModule.js +23 -0
  494. package/dist/rendering/effects/ColorModule.js.map +1 -1
  495. package/dist/rendering/effects/ForceModule.d.ts +35 -0
  496. package/dist/rendering/effects/ForceModule.d.ts.map +1 -1
  497. package/dist/rendering/effects/ForceModule.js +49 -0
  498. package/dist/rendering/effects/ForceModule.js.map +1 -1
  499. package/dist/rendering/effects/GPUParticleBackend.d.ts +186 -0
  500. package/dist/rendering/effects/GPUParticleBackend.d.ts.map +1 -1
  501. package/dist/rendering/effects/GPUParticleBackend.js +692 -1
  502. package/dist/rendering/effects/GPUParticleBackend.js.map +1 -1
  503. package/dist/rendering/effects/HeightfieldModule.d.ts +58 -0
  504. package/dist/rendering/effects/HeightfieldModule.d.ts.map +1 -0
  505. package/dist/rendering/effects/HeightfieldModule.js +129 -0
  506. package/dist/rendering/effects/HeightfieldModule.js.map +1 -0
  507. package/dist/rendering/effects/LightingModule.d.ts +34 -0
  508. package/dist/rendering/effects/LightingModule.d.ts.map +1 -0
  509. package/dist/rendering/effects/LightingModule.js +54 -0
  510. package/dist/rendering/effects/LightingModule.js.map +1 -0
  511. package/dist/rendering/effects/ParticleDiagnostics.d.ts +8 -0
  512. package/dist/rendering/effects/ParticleDiagnostics.d.ts.map +1 -1
  513. package/dist/rendering/effects/ParticleDiagnostics.js +3 -0
  514. package/dist/rendering/effects/ParticleDiagnostics.js.map +1 -1
  515. package/dist/rendering/effects/ParticleModule.d.ts +8 -0
  516. package/dist/rendering/effects/ParticleModule.d.ts.map +1 -1
  517. package/dist/rendering/effects/ParticleModule.js.map +1 -1
  518. package/dist/rendering/effects/ParticleRenderer.d.ts +20 -0
  519. package/dist/rendering/effects/ParticleRenderer.d.ts.map +1 -1
  520. package/dist/rendering/effects/ParticleRenderer.js +57 -7
  521. package/dist/rendering/effects/ParticleRenderer.js.map +1 -1
  522. package/dist/rendering/effects/ParticleSystem.d.ts +45 -1
  523. package/dist/rendering/effects/ParticleSystem.d.ts.map +1 -1
  524. package/dist/rendering/effects/ParticleSystem.js +373 -4
  525. package/dist/rendering/effects/ParticleSystem.js.map +1 -1
  526. package/dist/rendering/effects/SizeModule.d.ts +4 -0
  527. package/dist/rendering/effects/SizeModule.d.ts.map +1 -1
  528. package/dist/rendering/effects/SizeModule.js +16 -0
  529. package/dist/rendering/effects/SizeModule.js.map +1 -1
  530. package/dist/rendering/effects/SubEmitterModule.d.ts +61 -0
  531. package/dist/rendering/effects/SubEmitterModule.d.ts.map +1 -0
  532. package/dist/rendering/effects/SubEmitterModule.js +119 -0
  533. package/dist/rendering/effects/SubEmitterModule.js.map +1 -0
  534. package/dist/rendering/effects/TrailModule.d.ts +38 -0
  535. package/dist/rendering/effects/TrailModule.d.ts.map +1 -1
  536. package/dist/rendering/effects/TrailModule.js +95 -2
  537. package/dist/rendering/effects/TrailModule.js.map +1 -1
  538. package/dist/rendering/effects/TurbulenceModule.d.ts +43 -0
  539. package/dist/rendering/effects/TurbulenceModule.d.ts.map +1 -0
  540. package/dist/rendering/effects/TurbulenceModule.js +130 -0
  541. package/dist/rendering/effects/TurbulenceModule.js.map +1 -0
  542. package/dist/rendering/effects/index.d.ts +4 -0
  543. package/dist/rendering/effects/index.d.ts.map +1 -1
  544. package/dist/rendering/effects/index.js +4 -0
  545. package/dist/rendering/effects/index.js.map +1 -1
  546. package/dist/rendering/index.d.ts +57 -19
  547. package/dist/rendering/index.d.ts.map +1 -1
  548. package/dist/rendering/index.js +31 -10
  549. package/dist/rendering/index.js.map +1 -1
  550. package/dist/rendering/materials/MaterialExtensions.js +3 -3
  551. package/dist/rendering/materials/MaterialExtensions.js.map +1 -1
  552. package/dist/rendering/postprocess/NativeBloomPyramid.d.ts +28 -0
  553. package/dist/rendering/postprocess/NativeBloomPyramid.d.ts.map +1 -0
  554. package/dist/rendering/postprocess/NativeBloomPyramid.js +54 -0
  555. package/dist/rendering/postprocess/NativeBloomPyramid.js.map +1 -0
  556. package/dist/rendering/postprocess/NativeLdrEffectLuts.d.ts +10 -1
  557. package/dist/rendering/postprocess/NativeLdrEffectLuts.d.ts.map +1 -1
  558. package/dist/rendering/postprocess/NativeLdrEffectLuts.js +19 -2
  559. package/dist/rendering/postprocess/NativeLdrEffectLuts.js.map +1 -1
  560. package/dist/rendering/postprocess/index.d.ts +2 -0
  561. package/dist/rendering/postprocess/index.d.ts.map +1 -1
  562. package/dist/rendering/postprocess/index.js +1 -0
  563. package/dist/rendering/postprocess/index.js.map +1 -1
  564. package/dist/rendering/production-runtime/PBRHDRPipeline.d.ts +22 -0
  565. package/dist/rendering/production-runtime/PBRHDRPipeline.d.ts.map +1 -1
  566. package/dist/rendering/production-runtime/PBRHDRPipeline.js +125 -0
  567. package/dist/rendering/production-runtime/PBRHDRPipeline.js.map +1 -1
  568. package/dist/rendering/production-runtime/ProductionWebGPURenderer.d.ts +52 -0
  569. package/dist/rendering/production-runtime/ProductionWebGPURenderer.d.ts.map +1 -1
  570. package/dist/rendering/production-runtime/ProductionWebGPURenderer.js +101 -0
  571. package/dist/rendering/production-runtime/ProductionWebGPURenderer.js.map +1 -1
  572. package/dist/rendering/production-runtime/index.d.ts +5 -4
  573. package/dist/rendering/production-runtime/index.d.ts.map +1 -1
  574. package/dist/rendering/production-runtime/index.js +3 -2
  575. package/dist/rendering/production-runtime/index.js.map +1 -1
  576. package/dist/rendering/production-runtime/passes/DepthPrepass.d.ts +26 -1
  577. package/dist/rendering/production-runtime/passes/DepthPrepass.d.ts.map +1 -1
  578. package/dist/rendering/production-runtime/passes/DepthPrepass.js +49 -2
  579. package/dist/rendering/production-runtime/passes/DepthPrepass.js.map +1 -1
  580. package/dist/rendering/production-runtime/passes/FramegraphTopology.d.ts +13 -0
  581. package/dist/rendering/production-runtime/passes/FramegraphTopology.d.ts.map +1 -0
  582. package/dist/rendering/production-runtime/passes/FramegraphTopology.js +59 -0
  583. package/dist/rendering/production-runtime/passes/FramegraphTopology.js.map +1 -0
  584. package/dist/rendering/production-runtime/passes/OpaquePass.d.ts +24 -1
  585. package/dist/rendering/production-runtime/passes/OpaquePass.d.ts.map +1 -1
  586. package/dist/rendering/production-runtime/passes/OpaquePass.js +41 -2
  587. package/dist/rendering/production-runtime/passes/OpaquePass.js.map +1 -1
  588. package/dist/rendering/production-runtime/passes/ShadowPass.d.ts +24 -1
  589. package/dist/rendering/production-runtime/passes/ShadowPass.d.ts.map +1 -1
  590. package/dist/rendering/production-runtime/passes/ShadowPass.js +43 -2
  591. package/dist/rendering/production-runtime/passes/ShadowPass.js.map +1 -1
  592. package/dist/rendering/production-runtime/passes/SkyboxPass.d.ts +21 -1
  593. package/dist/rendering/production-runtime/passes/SkyboxPass.d.ts.map +1 -1
  594. package/dist/rendering/production-runtime/passes/SkyboxPass.js +39 -2
  595. package/dist/rendering/production-runtime/passes/SkyboxPass.js.map +1 -1
  596. package/dist/rendering/production-runtime/passes/ToneMappingPass.d.ts +29 -1
  597. package/dist/rendering/production-runtime/passes/ToneMappingPass.d.ts.map +1 -1
  598. package/dist/rendering/production-runtime/passes/ToneMappingPass.js +53 -2
  599. package/dist/rendering/production-runtime/passes/ToneMappingPass.js.map +1 -1
  600. package/dist/rendering/production-runtime/passes/TransparentPass.d.ts +24 -1
  601. package/dist/rendering/production-runtime/passes/TransparentPass.d.ts.map +1 -1
  602. package/dist/rendering/production-runtime/passes/TransparentPass.js +42 -2
  603. package/dist/rendering/production-runtime/passes/TransparentPass.js.map +1 -1
  604. package/dist/rendering/shadows/CascadeHysteresis.d.ts +67 -0
  605. package/dist/rendering/shadows/CascadeHysteresis.d.ts.map +1 -0
  606. package/dist/rendering/shadows/CascadeHysteresis.js +104 -0
  607. package/dist/rendering/shadows/CascadeHysteresis.js.map +1 -0
  608. package/dist/rendering/shadows/ContactShadows.d.ts +52 -0
  609. package/dist/rendering/shadows/ContactShadows.d.ts.map +1 -1
  610. package/dist/rendering/shadows/ContactShadows.js +122 -0
  611. package/dist/rendering/shadows/ContactShadows.js.map +1 -1
  612. package/dist/rendering/shadows/SpotShadowMaps.d.ts +77 -0
  613. package/dist/rendering/shadows/SpotShadowMaps.d.ts.map +1 -0
  614. package/dist/rendering/shadows/SpotShadowMaps.js +106 -0
  615. package/dist/rendering/shadows/SpotShadowMaps.js.map +1 -0
  616. package/dist/rendering/webgpu/WebGPUPostProcess.d.ts +2 -0
  617. package/dist/rendering/webgpu/WebGPUPostProcess.d.ts.map +1 -1
  618. package/dist/rendering/webgpu/WebGPUPostProcess.js +1 -0
  619. package/dist/rendering/webgpu/WebGPUPostProcess.js.map +1 -1
  620. package/dist/rendering/webgpu/WebGPUPostShaders.d.ts +78 -0
  621. package/dist/rendering/webgpu/WebGPUPostShaders.d.ts.map +1 -0
  622. package/dist/rendering/webgpu/WebGPUPostShaders.js +262 -0
  623. package/dist/rendering/webgpu/WebGPUPostShaders.js.map +1 -0
  624. package/dist/scene/Scene.d.ts +8 -1
  625. package/dist/scene/Scene.d.ts.map +1 -1
  626. package/dist/scene/Scene.js +12 -2
  627. package/dist/scene/Scene.js.map +1 -1
  628. package/dist/scripting/VisualGraphContext.d.ts +31 -0
  629. package/dist/scripting/VisualGraphContext.d.ts.map +1 -1
  630. package/dist/scripting/VisualGraphExecutor.d.ts.map +1 -1
  631. package/dist/scripting/VisualGraphExecutor.js +110 -0
  632. package/dist/scripting/VisualGraphExecutor.js.map +1 -1
  633. package/dist/scripting/VisualNodeCatalog.d.ts +1 -1
  634. package/dist/scripting/VisualNodeCatalog.d.ts.map +1 -1
  635. package/dist/scripting/VisualNodeCatalog.js +20 -0
  636. package/dist/scripting/VisualNodeCatalog.js.map +1 -1
  637. package/dist/scripting/VisualScriptingRoot.d.ts +96 -0
  638. package/dist/scripting/VisualScriptingRoot.d.ts.map +1 -0
  639. package/dist/scripting/VisualScriptingRoot.js +150 -0
  640. package/dist/scripting/VisualScriptingRoot.js.map +1 -0
  641. package/dist/scripting/index.d.ts +3 -1
  642. package/dist/scripting/index.d.ts.map +1 -1
  643. package/dist/scripting/index.js +1 -0
  644. package/dist/scripting/index.js.map +1 -1
  645. package/package.json +24 -22
  646. package/templates/cinematic-scene/node_modules/.vite/deps/_metadata.json +8 -0
  647. package/templates/cinematic-scene/node_modules/.vite/deps/package.json +3 -0
  648. package/templates/cinematic-scene/test-results/.last-run.json +6 -0
  649. package/templates/cinematic-scene/test-results/route-health-Aura3D-cinematic-scene-reaches-ready-state/error-context.md +64 -0
  650. package/templates/product-viewer/node_modules/.vite/deps/_metadata.json +8 -0
  651. package/templates/product-viewer/node_modules/.vite/deps/package.json +3 -0
@@ -4,13 +4,18 @@ import { Texture } from "./Texture.js";
4
4
  import { TextureBinding } from "./TextureBinding.js";
5
5
  export const CLUSTER_TILE_SIZE = 64;
6
6
  export const MAX_LIGHTS_PER_CLUSTER = 64;
7
- export function createClusteredForwardLighting(lights, viewportWidth, viewportHeight, viewProjectionMatrix) {
7
+ export function createClusteredForwardLighting(lights, viewportWidth, viewportHeight, viewProjectionMatrix, options = {}) {
8
8
  if (!Number.isInteger(viewportWidth) || viewportWidth <= 0 || !Number.isInteger(viewportHeight) || viewportHeight <= 0) {
9
9
  throw new RangeError("Clustered-forward viewport dimensions must be positive integers.");
10
10
  }
11
11
  if (viewProjectionMatrix && viewProjectionMatrix.length < 16) {
12
12
  throw new RangeError("Clustered-forward view-projection matrix must contain 16 values.");
13
13
  }
14
+ const observerPosition = options.observerPosition;
15
+ if (observerPosition !== undefined &&
16
+ (observerPosition.length !== 3 || observerPosition.some((component) => !Number.isFinite(component)))) {
17
+ throw new RangeError("Clustered-forward observerPosition must be three finite numbers.");
18
+ }
14
19
  const gridWidth = Math.max(1, Math.ceil(viewportWidth / CLUSTER_TILE_SIZE));
15
20
  const gridHeight = Math.max(1, Math.ceil(viewportHeight / CLUSTER_TILE_SIZE));
16
21
  const clusterCount = gridWidth * gridHeight;
@@ -49,8 +54,29 @@ export function createClusteredForwardLighting(lights, viewportWidth, viewportHe
49
54
  const referencedLights = new Set();
50
55
  let totalLightReferences = 0;
51
56
  let maxIndexedLightsInCluster = 0;
57
+ let overBudgetClusterCount = 0;
58
+ let maxRequestedLightsInCluster = 0;
59
+ let fallbackPolicy = "none";
60
+ const requestedPerCluster = [];
61
+ const indexedPerCluster = [];
52
62
  for (let cluster = 0; cluster < clusterCount; cluster += 1) {
53
- const selected = clusterLists[cluster].slice(0, MAX_LIGHTS_PER_CLUSTER);
63
+ const candidates = clusterLists[cluster];
64
+ requestedPerCluster.push(candidates.length);
65
+ maxRequestedLightsInCluster = Math.max(maxRequestedLightsInCluster, candidates.length);
66
+ // Over-budget clusters keep at most MAX_LIGHTS_PER_CLUSTER entries. With an
67
+ // observer the survivors are the nearest N by emitter distance (stable
68
+ // tie-break on input order); without one the input order is kept and the
69
+ // weaker policy is recorded in diagnostics instead of applied silently.
70
+ const selected = candidates.length > MAX_LIGHTS_PER_CLUSTER
71
+ ? (() => {
72
+ overBudgetClusterCount += 1;
73
+ fallbackPolicy = observerPosition ? "nearest-observer" : "input-order-no-observer";
74
+ return observerPosition
75
+ ? nearestLightIndicesFirst(candidates, lights, observerPosition).slice(0, MAX_LIGHTS_PER_CLUSTER)
76
+ : candidates.slice(0, MAX_LIGHTS_PER_CLUSTER);
77
+ })()
78
+ : candidates;
79
+ indexedPerCluster.push(selected.length);
54
80
  maxIndexedLightsInCluster = Math.max(maxIndexedLightsInCluster, selected.length);
55
81
  totalLightReferences += selected.length;
56
82
  for (const [index, lightIndex] of selected.entries()) {
@@ -60,6 +86,15 @@ export function createClusteredForwardLighting(lights, viewportWidth, viewportHe
60
86
  referencedLights.add(lightIndex);
61
87
  }
62
88
  }
89
+ const warnings = [];
90
+ if (overBudgetClusterCount > 0) {
91
+ const basis = observerPosition
92
+ ? `nearest ${MAX_LIGHTS_PER_CLUSTER} to the observer per over-budget cluster`
93
+ : `first ${MAX_LIGHTS_PER_CLUSTER} in input order per over-budget cluster (no observerPosition supplied; pass the camera position for distance-ranked fallback)`;
94
+ warnings.push(`Clustered-forward light budget exceeded: ${overBudgetClusterCount} of ${clusterCount} clusters ` +
95
+ `requested more than ${MAX_LIGHTS_PER_CLUSTER} lights (peak ${maxRequestedLightsInCluster}); kept the ${basis}.`);
96
+ emitClusteredForwardWarning(warnings[0], options.onWarning, gridWidth, gridHeight, maxRequestedLightsInCluster, fallbackPolicy);
97
+ }
63
98
  const lightTexture = new Texture({
64
99
  width: 6,
65
100
  height: Math.max(1, lights.length),
@@ -99,7 +134,13 @@ export function createClusteredForwardLighting(lights, viewportWidth, viewportHe
99
134
  maxIndexedLightsInCluster,
100
135
  totalLightReferences,
101
136
  culledLightCount: culledLights.size,
102
- droppedLightCount: lights.length - culledLights.size - referencedLights.size
137
+ droppedLightCount: lights.length - culledLights.size - referencedLights.size,
138
+ overBudgetClusterCount,
139
+ maxRequestedLightsInCluster,
140
+ requestedPerCluster,
141
+ indexedPerCluster,
142
+ fallbackPolicy,
143
+ warnings
103
144
  },
104
145
  dispose() {
105
146
  lightTexture.dispose();
@@ -153,4 +194,40 @@ function clampTile(value, size) {
153
194
  function lightKind(kind) {
154
195
  return kind === "directional" ? 0 : kind === "point" ? 1 : kind === "spot" ? 2 : 3;
155
196
  }
197
+ function nearestLightIndicesFirst(candidates, lights, observerPosition) {
198
+ return candidates
199
+ .map((lightIndex, order) => ({
200
+ lightIndex,
201
+ order,
202
+ distanceSquared: distanceSquaredToObserver(lights[lightIndex].position, observerPosition)
203
+ }))
204
+ .sort((left, right) => left.distanceSquared !== right.distanceSquared
205
+ ? left.distanceSquared - right.distanceSquared
206
+ : left.order - right.order)
207
+ .map((entry) => entry.lightIndex);
208
+ }
209
+ function distanceSquaredToObserver(position, observerPosition) {
210
+ const dx = position[0] - observerPosition[0];
211
+ const dy = position[1] - observerPosition[1];
212
+ const dz = position[2] - observerPosition[2];
213
+ const squared = dx * dx + dy * dy + dz * dz;
214
+ return Number.isFinite(squared) ? squared : Number.POSITIVE_INFINITY;
215
+ }
216
+ const warnedClusterConfigurations = new Set();
217
+ /** Clears the once-per-configuration warning memory (tests + device reset). */
218
+ export function resetClusteredForwardLightingWarnings() {
219
+ warnedClusterConfigurations.clear();
220
+ }
221
+ function emitClusteredForwardWarning(message, onWarning, gridWidth, gridHeight, maxRequestedLightsInCluster, fallbackPolicy) {
222
+ if (onWarning) {
223
+ onWarning(message);
224
+ return;
225
+ }
226
+ const signature = `${gridWidth}x${gridHeight}|peak${maxRequestedLightsInCluster}|${fallbackPolicy}`;
227
+ if (warnedClusterConfigurations.has(signature))
228
+ return;
229
+ warnedClusterConfigurations.add(signature);
230
+ if (typeof console !== "undefined" && typeof console.warn === "function")
231
+ console.warn(message);
232
+ }
156
233
  //# sourceMappingURL=ClusteredForwardLighting.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClusteredForwardLighting.js","sourceRoot":"","sources":["../../../../packages/rendering/src/ClusteredForwardLighting.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ClusteredForwardLighting.js","sourceRoot":"","sources":["../../../../packages/rendering/src/ClusteredForwardLighting.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * D3 day/night sky descriptor (PRD D3 box 1).
3
+ *
4
+ * Pure deterministic descriptor for a time-of-day sky: gradient keyframes
5
+ * (zenith/horizon hex), a sun disc, a moon disc with phase, a seeded star
6
+ * field, and 2D value-noise cloud cells.
7
+ *
8
+ * Claim boundary: this is a color-gradient dome with sprite/disc overlays.
9
+ * There is no scattering simulation here — Rayleigh/Mie models are excluded
10
+ * and must not be claimed from this module.
11
+ */
12
+ export interface DayNightSkyOptions {
13
+ /** Hour of day in [0, 24). 12 is solar noon, 0 is midnight. */
14
+ readonly hour?: number;
15
+ readonly seed?: number;
16
+ readonly starCount?: number;
17
+ readonly cloudCellCount?: number;
18
+ }
19
+ export interface DayNightSkyDisc {
20
+ readonly azimuthRadians: number;
21
+ readonly elevationRadians: number;
22
+ readonly angularRadius: number;
23
+ readonly color: string;
24
+ readonly intensity: number;
25
+ }
26
+ export interface DayNightSkyStar {
27
+ readonly x: number;
28
+ readonly y: number;
29
+ readonly size: number;
30
+ readonly brightness: number;
31
+ }
32
+ export interface DayNightSkyCloudCell {
33
+ readonly x: number;
34
+ readonly y: number;
35
+ readonly radius: number;
36
+ readonly coverage: number;
37
+ readonly alpha: number;
38
+ }
39
+ export interface DayNightSkyState {
40
+ readonly hour: number;
41
+ readonly seed: number;
42
+ /** 0 at midnight, 1 at solar noon. */
43
+ readonly dayFactor: number;
44
+ /** 1 at midnight, 0 at solar noon. */
45
+ readonly nightFactor: number;
46
+ readonly zenithColor: string;
47
+ readonly horizonColor: string;
48
+ readonly sun: DayNightSkyDisc;
49
+ readonly moon: DayNightSkyDisc & {
50
+ readonly phase: number;
51
+ };
52
+ readonly stars: readonly DayNightSkyStar[];
53
+ readonly visibleStarCount: number;
54
+ readonly clouds: readonly DayNightSkyCloudCell[];
55
+ readonly averageCloudCoverage: number;
56
+ readonly claimBoundary: string;
57
+ readonly hash: string;
58
+ }
59
+ export declare const DAY_NIGHT_SKY_CLAIM_BOUNDARY: string;
60
+ export declare function createDayNightSky(options?: DayNightSkyOptions): DayNightSkyState;
61
+ /** Seeded 2D value-noise cloud density in [0, 1]. Exported for route builders. */
62
+ export declare function sampleCloudNoise(x: number, y: number, seed: number): number;
63
+ //# sourceMappingURL=DayNightSky.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DayNightSky.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/DayNightSky.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,kBAAkB;IACjC,+DAA+D;IAC/D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,sCAAsC;IACtC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,GAAG,EAAE,eAAe,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5D,QAAQ,CAAC,KAAK,EAAE,SAAS,eAAe,EAAE,CAAC;IAC3C,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACjD,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,4BAA4B,QAEsD,CAAC;AAqBhG,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,kBAAuB,GAAG,gBAAgB,CAmFpF;AAED,kFAAkF;AAClF,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAW3E"}
@@ -0,0 +1,156 @@
1
+ /**
2
+ * D3 day/night sky descriptor (PRD D3 box 1).
3
+ *
4
+ * Pure deterministic descriptor for a time-of-day sky: gradient keyframes
5
+ * (zenith/horizon hex), a sun disc, a moon disc with phase, a seeded star
6
+ * field, and 2D value-noise cloud cells.
7
+ *
8
+ * Claim boundary: this is a color-gradient dome with sprite/disc overlays.
9
+ * There is no scattering simulation here — Rayleigh/Mie models are excluded
10
+ * and must not be claimed from this module.
11
+ */
12
+ export const DAY_NIGHT_SKY_CLAIM_BOUNDARY = "Time-of-day gradient dome with sun/moon discs, seeded stars, and 2D-noise clouds. " +
13
+ "Scattering-simulation claims are excluded: no Rayleigh/Mie model is implemented or implied.";
14
+ const skyKeyframes = [
15
+ { hour: 0, dayFactor: 0, zenith: [0x02, 0x06, 0x17], horizon: [0x0a, 0x14, 0x33] },
16
+ { hour: 5, dayFactor: 0, zenith: [0x02, 0x06, 0x17], horizon: [0x0a, 0x14, 0x33] },
17
+ { hour: 6.5, dayFactor: 0.35, zenith: [0x2b, 0x4a, 0x7a], horizon: [0xf5, 0x9e, 0x5c] },
18
+ { hour: 8, dayFactor: 0.8, zenith: [0x3f, 0x7d, 0xd6], horizon: [0xbf, 0xe2, 0xff] },
19
+ { hour: 12, dayFactor: 1, zenith: [0x1f, 0x5f, 0xc4], horizon: [0x8f, 0xc9, 0xff] },
20
+ { hour: 16, dayFactor: 0.8, zenith: [0x3f, 0x7d, 0xd6], horizon: [0xbf, 0xe2, 0xff] },
21
+ { hour: 17.5, dayFactor: 0.35, zenith: [0x2b, 0x4a, 0x7a], horizon: [0xf5, 0x9e, 0x5c] },
22
+ { hour: 19, dayFactor: 0, zenith: [0x02, 0x06, 0x17], horizon: [0x0a, 0x14, 0x33] },
23
+ { hour: 24, dayFactor: 0, zenith: [0x02, 0x06, 0x17], horizon: [0x0a, 0x14, 0x33] }
24
+ ];
25
+ export function createDayNightSky(options = {}) {
26
+ const hour = options.hour ?? 12;
27
+ if (!Number.isFinite(hour) || hour < 0 || hour >= 24) {
28
+ throw new RangeError("Day/night sky hour must be in [0, 24).");
29
+ }
30
+ const seed = Math.floor(options.seed ?? 0xd3a7);
31
+ if (!Number.isInteger(seed))
32
+ throw new RangeError("Day/night sky seed must be an integer.");
33
+ const starCount = rangeInt(options.starCount ?? 90, 0, 400, "starCount");
34
+ const cloudCellCount = rangeInt(options.cloudCellCount ?? 14, 0, 64, "cloudCellCount");
35
+ const lower = [...skyKeyframes].reverse().find((key) => key.hour <= hour) ?? skyKeyframes[0];
36
+ const upper = skyKeyframes.find((key) => key.hour > hour) ?? skyKeyframes[skyKeyframes.length - 1];
37
+ const span = Math.max(1e-6, upper.hour - lower.hour);
38
+ const t = (hour - lower.hour) / span;
39
+ const dayFactor = lower.dayFactor + (upper.dayFactor - lower.dayFactor) * t;
40
+ const nightFactor = 1 - dayFactor;
41
+ const zenith = lerpRgb(lower.zenith, upper.zenith, t);
42
+ const horizon = lerpRgb(lower.horizon, upper.horizon, t);
43
+ const sunAngle = ((hour - 6) / 12) * Math.PI;
44
+ const sun = {
45
+ azimuthRadians: round4(sunAngle),
46
+ elevationRadians: round4(Math.sin(sunAngle) * 1.1),
47
+ angularRadius: 0.055,
48
+ color: dayFactor > 0.25 ? "#fff7d6" : "#ff9e5c",
49
+ intensity: round4(0.25 + dayFactor * 0.75)
50
+ };
51
+ const moonAngle = sunAngle + Math.PI;
52
+ const phase = (seeded01(seed ^ 0x9e37) * 0.9 + 0.1);
53
+ const moon = {
54
+ azimuthRadians: round4(moonAngle),
55
+ elevationRadians: round4(Math.sin(moonAngle) * 1.1),
56
+ angularRadius: 0.042,
57
+ color: "#dbeafe",
58
+ intensity: round4(0.2 + nightFactor * 0.8),
59
+ phase: round4(phase)
60
+ };
61
+ const stars = Array.from({ length: starCount }, (_, index) => ({
62
+ x: round4(seeded01(seed + index * 101) * 2 - 1),
63
+ y: round4(seeded01(seed + index * 331) * 1.4 - 0.15),
64
+ size: round4(0.004 + seeded01(seed + index * 557) * 0.01),
65
+ brightness: round4((0.35 + seeded01(seed + index * 733) * 0.65) * nightFactor)
66
+ }));
67
+ const visibleStarCount = stars.filter((star) => star.brightness > 0.05 && star.y > 0).length;
68
+ const clouds = Array.from({ length: cloudCellCount }, (_, index) => {
69
+ const x = seeded01(seed + index * 37) * 2 - 1;
70
+ const y = 0.12 + seeded01(seed + index * 71) * 0.62;
71
+ const coverage = sampleCloudNoise(x, y, seed);
72
+ return {
73
+ x: round4(x),
74
+ y: round4(y),
75
+ radius: round4(0.1 + seeded01(seed + index * 113) * 0.22),
76
+ coverage: round4(coverage),
77
+ alpha: round4(coverage * (0.25 + dayFactor * 0.55))
78
+ };
79
+ });
80
+ const averageCloudCoverage = clouds.length === 0
81
+ ? 0
82
+ : round4(clouds.reduce((sum, cell) => sum + cell.coverage, 0) / clouds.length);
83
+ const hash = hashValues([
84
+ hour, dayFactor, zenith[0], zenith[1], zenith[2], horizon[0], horizon[1], horizon[2],
85
+ sun.elevationRadians, moon.elevationRadians, visibleStarCount, averageCloudCoverage,
86
+ stars.length, clouds.length
87
+ ]);
88
+ return {
89
+ hour,
90
+ seed,
91
+ dayFactor: round4(dayFactor),
92
+ nightFactor: round4(nightFactor),
93
+ zenithColor: rgbToHex(zenith),
94
+ horizonColor: rgbToHex(horizon),
95
+ sun,
96
+ moon,
97
+ stars,
98
+ visibleStarCount,
99
+ clouds,
100
+ averageCloudCoverage,
101
+ claimBoundary: DAY_NIGHT_SKY_CLAIM_BOUNDARY,
102
+ hash
103
+ };
104
+ }
105
+ /** Seeded 2D value-noise cloud density in [0, 1]. Exported for route builders. */
106
+ export function sampleCloudNoise(x, y, seed) {
107
+ const xi = Math.floor(x * 4);
108
+ const yi = Math.floor(y * 4);
109
+ const xf = x * 4 - xi;
110
+ const yf = y * 4 - yi;
111
+ const smooth = (v) => v * v * (3 - 2 * v);
112
+ const corner = (dx, dy) => seeded01((seed ^ (xi + dx) * 374761393 ^ (yi + dy) * 668265263) >>> 0);
113
+ const top = corner(0, 0) + (corner(1, 0) - corner(0, 0)) * smooth(xf);
114
+ const bottom = corner(0, 1) + (corner(1, 1) - corner(0, 1)) * smooth(xf);
115
+ const value = top + (bottom - top) * smooth(yf);
116
+ return Math.max(0, Math.min(1, (value - 0.32) / 0.36));
117
+ }
118
+ function lerpRgb(a, b, t) {
119
+ return [
120
+ Math.round(a[0] + (b[0] - a[0]) * t),
121
+ Math.round(a[1] + (b[1] - a[1]) * t),
122
+ Math.round(a[2] + (b[2] - a[2]) * t)
123
+ ];
124
+ }
125
+ function rgbToHex(rgb) {
126
+ const toHex = (v) => Math.max(0, Math.min(255, Math.round(v))).toString(16).padStart(2, "0");
127
+ return `#${toHex(rgb[0])}${toHex(rgb[1])}${toHex(rgb[2])}`;
128
+ }
129
+ function seeded01(seed) {
130
+ let value = seed >>> 0;
131
+ value ^= value << 13;
132
+ value ^= value >>> 17;
133
+ value ^= value << 5;
134
+ return ((value >>> 0) % 10_000) / 10_000;
135
+ }
136
+ function rangeInt(value, min, max, label) {
137
+ if (!Number.isInteger(value) || value < min || value > max) {
138
+ throw new RangeError(`Day/night sky ${label} must be an integer in [${min}, ${max}].`);
139
+ }
140
+ return value;
141
+ }
142
+ function round4(value) {
143
+ return Number(value.toFixed(4));
144
+ }
145
+ function hashValues(values) {
146
+ let hash = 0x811c9dc5;
147
+ for (const value of values) {
148
+ const scaled = Math.round(value * 10_000);
149
+ hash ^= scaled & 0xff;
150
+ hash = Math.imul(hash, 0x01000193) >>> 0;
151
+ hash ^= (scaled >>> 8) & 0xff;
152
+ hash = Math.imul(hash, 0x01000193) >>> 0;
153
+ }
154
+ return hash.toString(16).padStart(8, "0");
155
+ }
156
+ //# sourceMappingURL=DayNightSky.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DayNightSky.js","sourceRoot":"","sources":["../../../../packages/rendering/src/DayNightSky.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { ExternalParityEnvironmentPreset } from "./ExternalParityRenderPreset.js";
2
+ export type EnvironmentPresetPackSlot = "indoor" | "outdoor" | "night";
3
+ export interface EnvironmentPresetPackEntry {
4
+ readonly slot: EnvironmentPresetPackSlot;
5
+ readonly basePreset: ExternalParityEnvironmentPreset;
6
+ /**
7
+ * Measured exposure gain applied to the generated HDR source so every
8
+ * slot's mean linear luma matches the pack target (outdoor daylight).
9
+ * Measured 2026-09-03 from 64x32 generated sources, not guessed.
10
+ */
11
+ readonly exposureFactor: number;
12
+ readonly evidence: string;
13
+ }
14
+ export interface EnvironmentPresetPack {
15
+ /** Pack-wide mean-luma target: the measured outdoor daylight source mean. */
16
+ readonly targetMeanLuma: number;
17
+ readonly entries: readonly EnvironmentPresetPackEntry[];
18
+ /** Frozen-reference SSIM floor for exposure-normalized PMREM rows. */
19
+ readonly pmremRowSsimFloor: 0.975;
20
+ }
21
+ export declare const AURA_INDOOR_OUTDOOR_NIGHT_PRESET_PACK: EnvironmentPresetPack;
22
+ /**
23
+ * Applies a pack entry's measured exposure gain to generated HDR float
24
+ * data (pure linear gain: structure-preserving by construction, which is
25
+ * what lets the frozen-reference SSIM gate isolate pipeline regressions
26
+ * from exposure intent).
27
+ */
28
+ export declare function applyPresetPackExposure(data: Float32Array, exposureFactor: number): Float32Array;
29
+ export declare function meanLinearLuma(data: Float32Array, pixelCount: number): number;
30
+ //# sourceMappingURL=EnvironmentPresetPack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnvironmentPresetPack.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/EnvironmentPresetPack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AAEpF,MAAM,MAAM,yBAAyB,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAEvE,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,+BAA+B,CAAC;IACrD;;;;OAIG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,6EAA6E;IAC7E,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,SAAS,0BAA0B,EAAE,CAAC;IACxD,sEAAsE;IACtE,QAAQ,CAAC,iBAAiB,EAAE,KAAK,CAAC;CACnC;AAED,eAAO,MAAM,qCAAqC,EAAE,qBAuBnD,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,YAAY,EAClB,cAAc,EAAE,MAAM,GACrB,YAAY,CASd;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAO7E"}
@@ -0,0 +1,49 @@
1
+ export const AURA_INDOOR_OUTDOOR_NIGHT_PRESET_PACK = {
2
+ targetMeanLuma: 0.60698,
3
+ entries: [
4
+ {
5
+ slot: "indoor",
6
+ basePreset: "softbox",
7
+ exposureFactor: 0.866755,
8
+ evidence: "softbox interior source mean 0.70029 normalized to the daylight target 0.60698"
9
+ },
10
+ {
11
+ slot: "outdoor",
12
+ basePreset: "daylight",
13
+ exposureFactor: 1,
14
+ evidence: "daylight source mean 0.60698 defines the pack target; identity gain"
15
+ },
16
+ {
17
+ slot: "night",
18
+ basePreset: "evening",
19
+ exposureFactor: 2.114618,
20
+ evidence: "evening source mean 0.28704 normalized to the daylight target 0.60698"
21
+ }
22
+ ],
23
+ pmremRowSsimFloor: 0.975
24
+ };
25
+ /**
26
+ * Applies a pack entry's measured exposure gain to generated HDR float
27
+ * data (pure linear gain: structure-preserving by construction, which is
28
+ * what lets the frozen-reference SSIM gate isolate pipeline regressions
29
+ * from exposure intent).
30
+ */
31
+ export function applyPresetPackExposure(data, exposureFactor) {
32
+ if (!Number.isFinite(exposureFactor) || exposureFactor <= 0) {
33
+ throw new RangeError(`Preset pack exposure factor must be finite and positive, got ${exposureFactor}.`);
34
+ }
35
+ const out = new Float32Array(data.length);
36
+ for (let index = 0; index < data.length; index += 1) {
37
+ out[index] = data[index] * exposureFactor;
38
+ }
39
+ return out;
40
+ }
41
+ export function meanLinearLuma(data, pixelCount) {
42
+ let sum = 0;
43
+ for (let pixel = 0; pixel < pixelCount; pixel += 1) {
44
+ const base = pixel * 4;
45
+ sum += 0.2126 * data[base] + 0.7152 * data[base + 1] + 0.0722 * data[base + 2];
46
+ }
47
+ return sum / Math.max(1, pixelCount);
48
+ }
49
+ //# sourceMappingURL=EnvironmentPresetPack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnvironmentPresetPack.js","sourceRoot":"","sources":["../../../../packages/rendering/src/EnvironmentPresetPack.ts"],"names":[],"mappings":"AAwBA,MAAM,CAAC,MAAM,qCAAqC,GAA0B;IAC1E,cAAc,EAAE,OAAO;IACvB,OAAO,EAAE;QACP;YACE,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,SAAS;YACrB,cAAc,EAAE,QAAQ;YACxB,QAAQ,EAAE,gFAAgF;SAC3F;QACD;YACE,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,UAAU;YACtB,cAAc,EAAE,CAAC;YACjB,QAAQ,EAAE,qEAAqE;SAChF;QACD;YACE,IAAI,EAAE,OAAO;YACb,UAAU,EAAE,SAAS;YACrB,cAAc,EAAE,QAAQ;YACxB,QAAQ,EAAE,uEAAuE;SAClF;KACF;IACD,iBAAiB,EAAE,KAAK;CACzB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAkB,EAClB,cAAsB;IAEtB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,UAAU,CAAC,gEAAgE,cAAc,GAAG,CAAC,CAAC;IAC1G,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAE,GAAG,cAAc,CAAC;IAC7C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAkB,EAAE,UAAkB;IACnE,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;QACvB,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAE,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAE,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAE,CAAC;IACpF,CAAC;IACD,OAAO,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AACvC,CAAC"}
@@ -3,9 +3,12 @@ import { type CollectedLight } from "./LightCollector.js";
3
3
  import { Material } from "./Material.js";
4
4
  import { MaterialInstance } from "./MaterialInstance.js";
5
5
  import { type MorphTargetDelta } from "./MorphTarget.js";
6
+ import { type RenderShaderProgram, type UniformValue } from "./RenderDevice.js";
6
7
  import { BaseRenderPass, type RenderPassContext } from "./RenderPass.js";
8
+ import { type SkinningCpuFallbackReason } from "./WebGPUSkinningLimits.js";
7
9
  import { type ShaderLibrary } from "./ShaderLibraryCore.js";
8
10
  import { type ShadowFilterKernel } from "./ShadowMap.js";
11
+ import type { ForwardSpotShadowMapOptions } from "./shadows/SpotShadowMaps.js";
9
12
  import { TextureBinding } from "./TextureBinding.js";
10
13
  export interface RenderItem {
11
14
  readonly geometry: Geometry;
@@ -19,6 +22,12 @@ export interface RenderItem {
19
22
  readonly skinning?: SkinningPaletteBinding;
20
23
  readonly morphTargets?: readonly MorphTargetDelta[];
21
24
  readonly morphWeights?: readonly number[];
25
+ /**
26
+ * Wrinkle-detail intensity resolved engine-side from live morph weights
27
+ * (`resolveWrinkleMapStrength`). Shaders that declare `u_wrinkleStrength` modulate
28
+ * procedural normal detail by it; absent (or zero) leaves rendering bit-identical.
29
+ */
30
+ readonly wrinkleStrength?: number;
22
31
  readonly instanceTransforms?: Float32Array | readonly number[];
23
32
  readonly instanceColors?: Float32Array | readonly number[];
24
33
  readonly instanceAttributes?: readonly RenderItemInstanceAttribute[];
@@ -57,7 +66,23 @@ export interface SkinningPaletteDiagnostics {
57
66
  readonly uniformArraySubmissions: number;
58
67
  readonly dataTextureSubmissions: number;
59
68
  readonly eightInfluenceSubmissions: number;
69
+ readonly cpuFallbackCount: number;
60
70
  readonly maxUniformJoints: number;
71
+ /**
72
+ * Per-mesh palette decision (bounded: the first 64 submissions; overflow counted in
73
+ * `decisionOverflow`). Each entry carries the CPU-fallback reason code so a claim about
74
+ * which path carried a rig rests on observed decisions, not inference.
75
+ */
76
+ readonly decisions: readonly SkinningPaletteDecisionRecord[];
77
+ readonly decisionOverflow: number;
78
+ }
79
+ /** One observed joint-palette decision for a submitted skinned mesh. */
80
+ export interface SkinningPaletteDecisionRecord {
81
+ readonly label: string;
82
+ readonly jointCount: number;
83
+ readonly path: SkinningPalettePath | "cpu";
84
+ readonly reason: SkinningCpuFallbackReason;
85
+ readonly cpuFallback: boolean;
61
86
  }
62
87
  /** Joints addressable through the uniform-array palette. Re-exported for shaders. */
63
88
  export declare const MAX_UNIFORM_SKINNING_JOINTS = 96;
@@ -115,6 +140,16 @@ export interface ForwardEnvironmentFogOptions {
115
140
  readonly heightFalloff?: number;
116
141
  readonly heightReference?: number;
117
142
  readonly maxOpacity?: number;
143
+ /**
144
+ * A5 volumetric inscatter (muse3jsparity-PRD). 0/absent reproduces the
145
+ * legacy fog path exactly; the forward pass binds these only when the
146
+ * program declares them.
147
+ */
148
+ readonly volumetricIntensity?: number;
149
+ /** World-space direction TOWARD the dominant volumetric light. */
150
+ readonly volumetricLightDirection?: readonly [number, number, number];
151
+ /** Linear RGB of the dominant volumetric light. */
152
+ readonly volumetricLightColor?: readonly [number, number, number];
118
153
  }
119
154
  export interface ForwardShadowMapOptions {
120
155
  readonly texture: TextureBinding;
@@ -125,6 +160,12 @@ export interface ForwardShadowMapOptions {
125
160
  readonly texelSize?: readonly [number, number];
126
161
  readonly filterKernel?: ShadowFilterKernel;
127
162
  readonly pointLight?: ForwardPointShadowMapOptions;
163
+ /**
164
+ * B1 spot shadow path (muse3jsparity-PRD): perspective spot shadow uniforms.
165
+ * Bound only when the program declares the `u_spotShadow*` uniforms, so
166
+ * existing programs render exactly as before.
167
+ */
168
+ readonly spotLight?: ForwardSpotShadowMapOptions;
128
169
  readonly cascades?: readonly ForwardShadowCascadeOptions[];
129
170
  }
130
171
  export interface ForwardShadowCascadeOptions {
@@ -158,5 +199,29 @@ export declare class ForwardPass extends BaseRenderPass {
158
199
  private applyLightUniforms;
159
200
  private getShader;
160
201
  }
202
+ export declare class SkinningPaletteUploadManager {
203
+ private static readonly validatedGeometryJointCounts;
204
+ private static readonly maxRecordedDecisions;
205
+ private submissions;
206
+ private jointsUploaded;
207
+ private maxJointCount;
208
+ private uniformArraySubmissions;
209
+ private dataTextureSubmissions;
210
+ private eightInfluenceSubmissions;
211
+ private cpuFallbackCount;
212
+ private decisions;
213
+ private decisionOverflow;
214
+ beginFrame(): void;
215
+ /**
216
+ * Which palette paths this frame actually used. Published rather than inferred so a
217
+ * claim about data-texture or eight-influence skinning rests on observed submissions.
218
+ * Each submission also records its `decideSkinningPalettePath` decision (same inputs the
219
+ * upload path used) so the CPU-fallback reason code travels with the diagnostics.
220
+ */
221
+ diagnostics(): SkinningPaletteDiagnostics;
222
+ bind(item: RenderItem, skinning: SkinningPaletteBinding, material: Material, shader: RenderShaderProgram, uniforms: Map<string, UniformValue>): void;
223
+ private recordDecision;
224
+ }
161
225
  export declare function selectForwardShadowMap(shadowMap: ForwardShadowMapOptions | undefined, item: RenderItem, cameraViewMatrix?: Float32Array | readonly number[], cameraPosition?: readonly [number, number, number]): ForwardShadowMapOptions | undefined;
226
+ export declare function applyForwardSpotShadowMapUniforms(spotShadowMap: ForwardSpotShadowMapOptions | undefined, item: RenderItem, shader: RenderShaderProgram, uniforms: Map<string, UniformValue>): void;
162
227
  //# sourceMappingURL=ForwardPass.d.ts.map