@needle-tools/engine 3.28.6-beta → 3.28.7-beta.1

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 (848) hide show
  1. package/CHANGELOG.md +2259 -2253
  2. package/LICENSE.md +10 -10
  3. package/README.md +52 -52
  4. package/dist/needle-engine.js +7 -10
  5. package/dist/needle-engine.light.js +7 -10
  6. package/dist/needle-engine.light.min.js +7 -10
  7. package/dist/needle-engine.light.umd.cjs +7 -10
  8. package/dist/needle-engine.min.js +7 -10
  9. package/dist/needle-engine.umd.cjs +7 -10
  10. package/lib/engine/api.d.ts +52 -52
  11. package/lib/engine/api.js +51 -51
  12. package/lib/engine/assets/index.d.ts +1 -1
  13. package/lib/engine/assets/index.js +4 -4
  14. package/lib/engine/codegen/register_types.d.ts +1 -1
  15. package/lib/engine/codegen/register_types.js +439 -439
  16. package/lib/engine/debug/debug.d.ts +12 -12
  17. package/lib/engine/debug/debug.js +26 -26
  18. package/lib/engine/debug/debug_console.d.ts +2 -2
  19. package/lib/engine/debug/debug_console.js +204 -204
  20. package/lib/engine/debug/debug_overlay.d.ts +10 -10
  21. package/lib/engine/debug/debug_overlay.js +277 -277
  22. package/lib/engine/debug/index.d.ts +1 -1
  23. package/lib/engine/debug/index.js +1 -1
  24. package/lib/engine/engine_addressables.d.ts +75 -75
  25. package/lib/engine/engine_addressables.js +441 -441
  26. package/lib/engine/engine_application.d.ts +19 -19
  27. package/lib/engine/engine_application.js +45 -45
  28. package/lib/engine/engine_assetdatabase.d.ts +25 -25
  29. package/lib/engine/engine_assetdatabase.js +341 -341
  30. package/lib/engine/engine_camera.d.ts +6 -6
  31. package/lib/engine/engine_camera.js +23 -23
  32. package/lib/engine/engine_components.d.ts +17 -17
  33. package/lib/engine/engine_components.js +273 -273
  34. package/lib/engine/engine_components_internal.d.ts +11 -11
  35. package/lib/engine/engine_components_internal.js +41 -41
  36. package/lib/engine/engine_constants.d.ts +5 -5
  37. package/lib/engine/engine_constants.js +32 -32
  38. package/lib/engine/engine_context.d.ts +269 -269
  39. package/lib/engine/engine_context.js +1242 -1242
  40. package/lib/engine/engine_context_registry.d.ts +50 -50
  41. package/lib/engine/engine_context_registry.js +89 -89
  42. package/lib/engine/engine_coroutine.d.ts +4 -4
  43. package/lib/engine/engine_coroutine.js +21 -21
  44. package/lib/engine/engine_create_objects.d.ts +13 -13
  45. package/lib/engine/engine_create_objects.js +33 -33
  46. package/lib/engine/engine_default_parameters.d.ts +2 -2
  47. package/lib/engine/engine_default_parameters.js +3 -3
  48. package/lib/engine/engine_editor-sync.d.ts +17 -17
  49. package/lib/engine/engine_editor-sync.js +7 -7
  50. package/lib/engine/engine_element.d.ts +55 -55
  51. package/lib/engine/engine_element.js +559 -559
  52. package/lib/engine/engine_element_attributes.d.ts +49 -49
  53. package/lib/engine/engine_element_attributes.js +1 -1
  54. package/lib/engine/engine_element_extras.d.ts +6 -6
  55. package/lib/engine/engine_element_extras.js +13 -13
  56. package/lib/engine/engine_element_loading.d.ts +40 -40
  57. package/lib/engine/engine_element_loading.js +312 -312
  58. package/lib/engine/engine_element_overlay.d.ts +19 -19
  59. package/lib/engine/engine_element_overlay.js +143 -143
  60. package/lib/engine/engine_fileloader.d.ts +3 -3
  61. package/lib/engine/engine_fileloader.js +7 -7
  62. package/lib/engine/engine_gameobject.d.ts +39 -39
  63. package/lib/engine/engine_gameobject.js +559 -559
  64. package/lib/engine/engine_generic_utils.d.ts +1 -1
  65. package/lib/engine/engine_generic_utils.js +13 -13
  66. package/lib/engine/engine_gizmos.d.ts +26 -26
  67. package/lib/engine/engine_gizmos.js +282 -282
  68. package/lib/engine/engine_gltf.d.ts +13 -13
  69. package/lib/engine/engine_gltf.js +15 -15
  70. package/lib/engine/engine_gltf_builtin_components.d.ts +7 -7
  71. package/lib/engine/engine_gltf_builtin_components.js +298 -298
  72. package/lib/engine/engine_hot_reload.d.ts +5 -5
  73. package/lib/engine/engine_hot_reload.js +182 -182
  74. package/lib/engine/engine_input.d.ts +129 -129
  75. package/lib/engine/engine_input.js +799 -799
  76. package/lib/engine/engine_input_utils.d.ts +2 -2
  77. package/lib/engine/engine_input_utils.js +22 -22
  78. package/lib/engine/engine_instancing.d.ts +16 -16
  79. package/lib/engine/engine_instancing.js +36 -36
  80. package/lib/engine/engine_license.d.ts +4 -4
  81. package/lib/engine/engine_license.js +398 -398
  82. package/lib/engine/engine_lifecycle_api.d.ts +14 -14
  83. package/lib/engine/engine_lifecycle_api.js +24 -24
  84. package/lib/engine/engine_lifecycle_functions_internal.d.ts +6 -6
  85. package/lib/engine/engine_lifecycle_functions_internal.js +28 -28
  86. package/lib/engine/engine_lightdata.d.ts +23 -23
  87. package/lib/engine/engine_lightdata.js +86 -86
  88. package/lib/engine/engine_loaders.d.ts +7 -7
  89. package/lib/engine/engine_loaders.js +69 -69
  90. package/lib/engine/engine_mainloop_utils.d.ts +13 -13
  91. package/lib/engine/engine_mainloop_utils.js +426 -426
  92. package/lib/engine/engine_math.d.ts +43 -43
  93. package/lib/engine/engine_math.js +147 -147
  94. package/lib/engine/engine_networking.d.ts +176 -176
  95. package/lib/engine/engine_networking.js +649 -649
  96. package/lib/engine/engine_networking_auto.d.ts +24 -24
  97. package/lib/engine/engine_networking_auto.js +324 -324
  98. package/lib/engine/engine_networking_files.d.ts +23 -23
  99. package/lib/engine/engine_networking_files.js +176 -176
  100. package/lib/engine/engine_networking_files_default_components.d.ts +3 -3
  101. package/lib/engine/engine_networking_files_default_components.js +39 -39
  102. package/lib/engine/engine_networking_instantiate.d.ts +39 -39
  103. package/lib/engine/engine_networking_instantiate.js +302 -302
  104. package/lib/engine/engine_networking_peer.d.ts +15 -15
  105. package/lib/engine/engine_networking_peer.js +132 -132
  106. package/lib/engine/engine_networking_streams.d.ts +90 -90
  107. package/lib/engine/engine_networking_streams.js +428 -428
  108. package/lib/engine/engine_networking_types.d.ts +14 -14
  109. package/lib/engine/engine_networking_types.js +7 -7
  110. package/lib/engine/engine_networking_utils.d.ts +2 -2
  111. package/lib/engine/engine_networking_utils.js +20 -20
  112. package/lib/engine/engine_patcher.d.ts +10 -10
  113. package/lib/engine/engine_patcher.js +142 -142
  114. package/lib/engine/engine_physics.d.ts +115 -115
  115. package/lib/engine/engine_physics.js +228 -228
  116. package/lib/engine/engine_physics.types.d.ts +37 -37
  117. package/lib/engine/engine_physics.types.js +33 -33
  118. package/lib/engine/engine_physics_rapier.d.ts +112 -112
  119. package/lib/engine/engine_physics_rapier.js +1266 -1266
  120. package/lib/engine/engine_playerview.d.ts +26 -26
  121. package/lib/engine/engine_playerview.js +64 -64
  122. package/lib/engine/engine_scenelighting.d.ts +74 -74
  123. package/lib/engine/engine_scenelighting.js +285 -285
  124. package/lib/engine/engine_scenetools.d.ts +35 -35
  125. package/lib/engine/engine_scenetools.js +212 -212
  126. package/lib/engine/engine_serialization.d.ts +4 -4
  127. package/lib/engine/engine_serialization.js +4 -4
  128. package/lib/engine/engine_serialization_builtin_serializer.d.ts +62 -62
  129. package/lib/engine/engine_serialization_builtin_serializer.js +369 -369
  130. package/lib/engine/engine_serialization_core.d.ts +84 -84
  131. package/lib/engine/engine_serialization_core.js +576 -576
  132. package/lib/engine/engine_serialization_decorator.d.ts +15 -15
  133. package/lib/engine/engine_serialization_decorator.js +54 -54
  134. package/lib/engine/engine_setup.d.ts +1 -1
  135. package/lib/engine/engine_setup.js +2 -2
  136. package/lib/engine/engine_shaders.d.ts +31 -31
  137. package/lib/engine/engine_shaders.js +229 -229
  138. package/lib/engine/engine_shims.d.ts +3 -3
  139. package/lib/engine/engine_shims.js +22 -22
  140. package/lib/engine/engine_texture.d.ts +20 -20
  141. package/lib/engine/engine_texture.js +57 -57
  142. package/lib/engine/engine_three_utils.d.ts +51 -51
  143. package/lib/engine/engine_three_utils.js +342 -342
  144. package/lib/engine/engine_time.d.ts +19 -19
  145. package/lib/engine/engine_time.js +47 -47
  146. package/lib/engine/engine_types.d.ts +358 -358
  147. package/lib/engine/engine_types.js +72 -72
  148. package/lib/engine/engine_typestore.d.ts +16 -16
  149. package/lib/engine/engine_typestore.js +35 -35
  150. package/lib/engine/engine_util_decorator.d.ts +12 -12
  151. package/lib/engine/engine_util_decorator.js +115 -115
  152. package/lib/engine/engine_utils.d.ts +104 -104
  153. package/lib/engine/engine_utils.js +518 -518
  154. package/lib/engine/engine_utils_screenshot.d.ts +10 -10
  155. package/lib/engine/engine_utils_screenshot.js +70 -70
  156. package/lib/engine/engine_web_api.d.ts +12 -12
  157. package/lib/engine/engine_web_api.js +112 -112
  158. package/lib/engine/extensions/EXT_texture_exr.d.ts +8 -8
  159. package/lib/engine/extensions/EXT_texture_exr.js +32 -32
  160. package/lib/engine/extensions/NEEDLE_animator_controller_model.d.ts +116 -116
  161. package/lib/engine/extensions/NEEDLE_animator_controller_model.js +91 -91
  162. package/lib/engine/extensions/NEEDLE_components.d.ts +33 -33
  163. package/lib/engine/extensions/NEEDLE_components.js +206 -206
  164. package/lib/engine/extensions/NEEDLE_gameobject_data.d.ts +10 -10
  165. package/lib/engine/extensions/NEEDLE_gameobject_data.js +57 -57
  166. package/lib/engine/extensions/NEEDLE_lighting_settings.d.ts +38 -38
  167. package/lib/engine/extensions/NEEDLE_lighting_settings.js +183 -183
  168. package/lib/engine/extensions/NEEDLE_lightmaps.d.ts +18 -18
  169. package/lib/engine/extensions/NEEDLE_lightmaps.js +108 -108
  170. package/lib/engine/extensions/NEEDLE_persistent_assets.d.ts +11 -11
  171. package/lib/engine/extensions/NEEDLE_persistent_assets.js +63 -63
  172. package/lib/engine/extensions/NEEDLE_progressive.d.ts +41 -41
  173. package/lib/engine/extensions/NEEDLE_progressive.js +366 -366
  174. package/lib/engine/extensions/NEEDLE_render_objects.d.ts +13 -13
  175. package/lib/engine/extensions/NEEDLE_render_objects.js +159 -159
  176. package/lib/engine/extensions/NEEDLE_techniques_webgl.d.ts +39 -39
  177. package/lib/engine/extensions/NEEDLE_techniques_webgl.js +544 -544
  178. package/lib/engine/extensions/extension_resolver.d.ts +4 -4
  179. package/lib/engine/extensions/extension_resolver.js +1 -1
  180. package/lib/engine/extensions/extension_utils.d.ts +2 -2
  181. package/lib/engine/extensions/extension_utils.js +140 -140
  182. package/lib/engine/extensions/extensions.d.ts +21 -21
  183. package/lib/engine/extensions/extensions.js +94 -94
  184. package/lib/engine/extensions/index.d.ts +5 -5
  185. package/lib/engine/extensions/index.js +5 -5
  186. package/lib/engine/extensions/usage_tracker.d.ts +13 -13
  187. package/lib/engine/extensions/usage_tracker.js +61 -61
  188. package/lib/engine/js-extensions/Camera.d.ts +1 -1
  189. package/lib/engine/js-extensions/Camera.js +36 -36
  190. package/lib/engine/js-extensions/Layers.d.ts +3 -3
  191. package/lib/engine/js-extensions/Layers.js +19 -19
  192. package/lib/engine/js-extensions/index.d.ts +2 -2
  193. package/lib/engine/js-extensions/index.js +2 -2
  194. package/lib/engine/shaders/shaderData.d.ts +55 -55
  195. package/lib/engine/shaders/shaderData.js +58 -58
  196. package/lib/engine/tests/test_utils.d.ts +2 -2
  197. package/lib/engine/tests/test_utils.js +53 -53
  198. package/lib/engine-components/AlignmentConstraint.d.ts +10 -10
  199. package/lib/engine-components/AlignmentConstraint.js +39 -39
  200. package/lib/engine-components/Animation.d.ts +53 -53
  201. package/lib/engine-components/Animation.js +333 -333
  202. package/lib/engine-components/AnimationCurve.d.ts +16 -16
  203. package/lib/engine-components/AnimationCurve.js +97 -97
  204. package/lib/engine-components/AnimationUtils.d.ts +8 -8
  205. package/lib/engine-components/AnimationUtils.js +110 -110
  206. package/lib/engine-components/Animator.d.ts +81 -81
  207. package/lib/engine-components/Animator.js +229 -229
  208. package/lib/engine-components/AnimatorController.d.ts +57 -57
  209. package/lib/engine-components/AnimatorController.js +887 -887
  210. package/lib/engine-components/AudioListener.d.ts +7 -7
  211. package/lib/engine-components/AudioListener.js +30 -30
  212. package/lib/engine-components/AudioSource.d.ts +61 -61
  213. package/lib/engine-components/AudioSource.js +422 -422
  214. package/lib/engine-components/AvatarLoader.d.ts +19 -19
  215. package/lib/engine-components/AvatarLoader.js +173 -173
  216. package/lib/engine-components/AxesHelper.d.ts +9 -9
  217. package/lib/engine-components/AxesHelper.js +44 -44
  218. package/lib/engine-components/BasicIKConstraint.d.ts +9 -9
  219. package/lib/engine-components/BasicIKConstraint.js +43 -43
  220. package/lib/engine-components/BoxHelperComponent.d.ts +16 -16
  221. package/lib/engine-components/BoxHelperComponent.js +89 -89
  222. package/lib/engine-components/Camera.d.ts +70 -70
  223. package/lib/engine-components/Camera.js +450 -450
  224. package/lib/engine-components/CameraUtils.d.ts +1 -1
  225. package/lib/engine-components/CameraUtils.js +77 -77
  226. package/lib/engine-components/CharacterController.d.ts +46 -46
  227. package/lib/engine-components/CharacterController.js +227 -227
  228. package/lib/engine-components/Collider.d.ts +46 -46
  229. package/lib/engine-components/Collider.js +153 -153
  230. package/lib/engine-components/Component.d.ts +228 -228
  231. package/lib/engine-components/Component.js +541 -541
  232. package/lib/engine-components/ContactShadows.d.ts +23 -23
  233. package/lib/engine-components/ContactShadows.js +233 -233
  234. package/lib/engine-components/DeleteBox.d.ts +9 -9
  235. package/lib/engine-components/DeleteBox.js +30 -30
  236. package/lib/engine-components/DeviceFlag.d.ts +12 -12
  237. package/lib/engine-components/DeviceFlag.js +43 -43
  238. package/lib/engine-components/DragControls.d.ts +51 -51
  239. package/lib/engine-components/DragControls.js +516 -516
  240. package/lib/engine-components/DropListener.d.ts +15 -15
  241. package/lib/engine-components/DropListener.js +120 -120
  242. package/lib/engine-components/Duplicatable.d.ts +16 -16
  243. package/lib/engine-components/Duplicatable.js +150 -150
  244. package/lib/engine-components/EventList.d.ts +28 -28
  245. package/lib/engine-components/EventList.js +105 -105
  246. package/lib/engine-components/EventTrigger.d.ts +12 -12
  247. package/lib/engine-components/EventTrigger.js +50 -50
  248. package/lib/engine-components/EventType.d.ts +19 -19
  249. package/lib/engine-components/EventType.js +71 -71
  250. package/lib/engine-components/FlyControls.d.ts +7 -7
  251. package/lib/engine-components/FlyControls.js +25 -25
  252. package/lib/engine-components/Fog.d.ts +20 -20
  253. package/lib/engine-components/Fog.js +60 -60
  254. package/lib/engine-components/Gizmos.d.ts +12 -12
  255. package/lib/engine-components/Gizmos.js +60 -60
  256. package/lib/engine-components/GridHelper.d.ts +12 -12
  257. package/lib/engine-components/GridHelper.js +47 -47
  258. package/lib/engine-components/GroundProjection.d.ts +21 -21
  259. package/lib/engine-components/GroundProjection.js +97 -97
  260. package/lib/engine-components/Interactable.d.ts +10 -10
  261. package/lib/engine-components/Interactable.js +11 -11
  262. package/lib/engine-components/Joints.d.ts +19 -19
  263. package/lib/engine-components/Joints.js +51 -51
  264. package/lib/engine-components/LODGroup.d.ts +30 -30
  265. package/lib/engine-components/LODGroup.js +145 -145
  266. package/lib/engine-components/Light.d.ts +75 -75
  267. package/lib/engine-components/Light.js +475 -475
  268. package/lib/engine-components/LookAtConstraint.d.ts +7 -7
  269. package/lib/engine-components/LookAtConstraint.js +17 -17
  270. package/lib/engine-components/NestedGltf.d.ts +11 -11
  271. package/lib/engine-components/NestedGltf.js +74 -74
  272. package/lib/engine-components/Networking.d.ts +11 -11
  273. package/lib/engine-components/Networking.js +70 -70
  274. package/lib/engine-components/OffsetConstraint.d.ts +14 -14
  275. package/lib/engine-components/OffsetConstraint.js +65 -65
  276. package/lib/engine-components/OrbitControls.d.ts +111 -111
  277. package/lib/engine-components/OrbitControls.js +646 -646
  278. package/lib/engine-components/ParticleSystem.d.ts +145 -145
  279. package/lib/engine-components/ParticleSystem.js +1077 -1077
  280. package/lib/engine-components/ParticleSystemModules.d.ts +489 -489
  281. package/lib/engine-components/ParticleSystemModules.js +1667 -1667
  282. package/lib/engine-components/ParticleSystemSubEmitter.d.ts +25 -25
  283. package/lib/engine-components/ParticleSystemSubEmitter.js +86 -86
  284. package/lib/engine-components/PlayerColor.d.ts +13 -13
  285. package/lib/engine-components/PlayerColor.js +83 -83
  286. package/lib/engine-components/ReflectionProbe.d.ts +22 -22
  287. package/lib/engine-components/ReflectionProbe.js +181 -181
  288. package/lib/engine-components/Renderer.d.ts +112 -112
  289. package/lib/engine-components/Renderer.js +1029 -1029
  290. package/lib/engine-components/RendererLightmap.d.ts +19 -19
  291. package/lib/engine-components/RendererLightmap.js +127 -127
  292. package/lib/engine-components/RigidBody.d.ts +120 -120
  293. package/lib/engine-components/RigidBody.js +452 -452
  294. package/lib/engine-components/SceneSwitcher.d.ts +72 -72
  295. package/lib/engine-components/SceneSwitcher.js +583 -583
  296. package/lib/engine-components/ScreenCapture.d.ts +64 -64
  297. package/lib/engine-components/ScreenCapture.js +405 -405
  298. package/lib/engine-components/ShadowCatcher.d.ts +18 -18
  299. package/lib/engine-components/ShadowCatcher.js +144 -144
  300. package/lib/engine-components/Skybox.d.ts +23 -23
  301. package/lib/engine-components/Skybox.js +287 -287
  302. package/lib/engine-components/SmoothFollow.d.ts +14 -14
  303. package/lib/engine-components/SmoothFollow.js +63 -63
  304. package/lib/engine-components/SpatialTrigger.d.ts +27 -27
  305. package/lib/engine-components/SpatialTrigger.js +144 -144
  306. package/lib/engine-components/SpectatorCamera.d.ts +45 -45
  307. package/lib/engine-components/SpectatorCamera.js +593 -593
  308. package/lib/engine-components/SpriteRenderer.d.ts +48 -48
  309. package/lib/engine-components/SpriteRenderer.js +257 -257
  310. package/lib/engine-components/SyncedCamera.d.ts +27 -27
  311. package/lib/engine-components/SyncedCamera.js +187 -187
  312. package/lib/engine-components/SyncedRoom.d.ts +24 -24
  313. package/lib/engine-components/SyncedRoom.js +162 -162
  314. package/lib/engine-components/SyncedTransform.d.ts +35 -35
  315. package/lib/engine-components/SyncedTransform.js +265 -265
  316. package/lib/engine-components/TestRunner.d.ts +13 -13
  317. package/lib/engine-components/TestRunner.js +99 -99
  318. package/lib/engine-components/TransformGizmo.d.ts +16 -16
  319. package/lib/engine-components/TransformGizmo.js +148 -148
  320. package/lib/engine-components/VideoPlayer.d.ts +86 -86
  321. package/lib/engine-components/VideoPlayer.js +792 -792
  322. package/lib/engine-components/Voip.d.ts +29 -29
  323. package/lib/engine-components/Voip.js +203 -203
  324. package/lib/engine-components/XRFlag.d.ts +33 -33
  325. package/lib/engine-components/XRFlag.js +128 -128
  326. package/lib/engine-components/api.d.ts +15 -15
  327. package/lib/engine-components/api.js +15 -15
  328. package/lib/engine-components/avatar/AvatarBlink_Simple.d.ts +10 -10
  329. package/lib/engine-components/avatar/AvatarBlink_Simple.js +75 -75
  330. package/lib/engine-components/avatar/AvatarEyeLook_Rotation.d.ts +13 -13
  331. package/lib/engine-components/avatar/AvatarEyeLook_Rotation.js +74 -74
  332. package/lib/engine-components/avatar/Avatar_Brain_LookAt.d.ts +27 -27
  333. package/lib/engine-components/avatar/Avatar_Brain_LookAt.js +119 -119
  334. package/lib/engine-components/avatar/Avatar_MouthShapes.d.ts +13 -13
  335. package/lib/engine-components/avatar/Avatar_MouthShapes.js +78 -78
  336. package/lib/engine-components/avatar/Avatar_MustacheShake.d.ts +8 -8
  337. package/lib/engine-components/avatar/Avatar_MustacheShake.js +28 -28
  338. package/lib/engine-components/codegen/components.d.ts +216 -216
  339. package/lib/engine-components/codegen/components.js +217 -217
  340. package/lib/engine-components/debug/LogStats.d.ts +5 -5
  341. package/lib/engine-components/debug/LogStats.js +18 -18
  342. package/lib/engine-components/export/gltf/GltfExport.d.ts +25 -25
  343. package/lib/engine-components/export/gltf/GltfExport.js +215 -215
  344. package/lib/engine-components/export/index.d.ts +1 -1
  345. package/lib/engine-components/export/index.js +1 -1
  346. package/lib/engine-components/export/usdz/Extension.d.ts +10 -10
  347. package/lib/engine-components/export/usdz/Extension.js +1 -1
  348. package/lib/engine-components/export/usdz/ThreeUSDZExporter.d.ts +114 -114
  349. package/lib/engine-components/export/usdz/ThreeUSDZExporter.js +1211 -1211
  350. package/lib/engine-components/export/usdz/USDZExporter.d.ts +59 -59
  351. package/lib/engine-components/export/usdz/USDZExporter.js +450 -450
  352. package/lib/engine-components/export/usdz/extensions/Animation.d.ts +69 -69
  353. package/lib/engine-components/export/usdz/extensions/Animation.js +650 -650
  354. package/lib/engine-components/export/usdz/extensions/DocumentExtension.d.ts +5 -5
  355. package/lib/engine-components/export/usdz/extensions/DocumentExtension.js +6 -6
  356. package/lib/engine-components/export/usdz/extensions/USDZText.d.ts +55 -55
  357. package/lib/engine-components/export/usdz/extensions/USDZText.js +246 -246
  358. package/lib/engine-components/export/usdz/extensions/USDZUI.d.ts +8 -8
  359. package/lib/engine-components/export/usdz/extensions/USDZUI.js +100 -100
  360. package/lib/engine-components/export/usdz/extensions/behavior/Actions.d.ts +30 -30
  361. package/lib/engine-components/export/usdz/extensions/behavior/Actions.js +88 -88
  362. package/lib/engine-components/export/usdz/extensions/behavior/AudioExtension.d.ts +9 -9
  363. package/lib/engine-components/export/usdz/extensions/behavior/AudioExtension.js +52 -52
  364. package/lib/engine-components/export/usdz/extensions/behavior/Behaviour.d.ts +22 -22
  365. package/lib/engine-components/export/usdz/extensions/behavior/Behaviour.js +134 -134
  366. package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.d.ts +126 -126
  367. package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.js +824 -824
  368. package/lib/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.d.ts +133 -133
  369. package/lib/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.js +464 -464
  370. package/lib/engine-components/export/usdz/index.d.ts +3 -3
  371. package/lib/engine-components/export/usdz/index.js +2 -2
  372. package/lib/engine-components/export/usdz/utils/animationutils.d.ts +3 -3
  373. package/lib/engine-components/export/usdz/utils/animationutils.js +85 -85
  374. package/lib/engine-components/export/usdz/utils/quicklook.d.ts +2 -2
  375. package/lib/engine-components/export/usdz/utils/quicklook.js +35 -35
  376. package/lib/engine-components/export/usdz/utils/timeutils.d.ts +1 -1
  377. package/lib/engine-components/export/usdz/utils/timeutils.js +14 -14
  378. package/lib/engine-components/js-extensions/ExtensionUtils.d.ts +6 -6
  379. package/lib/engine-components/js-extensions/ExtensionUtils.js +65 -65
  380. package/lib/engine-components/js-extensions/Object3D.d.ts +2 -2
  381. package/lib/engine-components/js-extensions/Object3D.js +140 -140
  382. package/lib/engine-components/js-extensions/RGBAColor.d.ts +14 -14
  383. package/lib/engine-components/js-extensions/RGBAColor.js +49 -49
  384. package/lib/engine-components/js-extensions/index.d.ts +3 -3
  385. package/lib/engine-components/js-extensions/index.js +3 -3
  386. package/lib/engine-components/postprocessing/Effects/Antialiasing.d.ts +13 -13
  387. package/lib/engine-components/postprocessing/Effects/Antialiasing.js +45 -45
  388. package/lib/engine-components/postprocessing/Effects/Bloom.d.ts +12 -12
  389. package/lib/engine-components/postprocessing/Effects/Bloom.js +77 -77
  390. package/lib/engine-components/postprocessing/Effects/ChromaticAberration.d.ts +8 -8
  391. package/lib/engine-components/postprocessing/Effects/ChromaticAberration.js +38 -38
  392. package/lib/engine-components/postprocessing/Effects/ColorAdjustments.d.ts +12 -12
  393. package/lib/engine-components/postprocessing/Effects/ColorAdjustments.js +81 -81
  394. package/lib/engine-components/postprocessing/Effects/DepthOfField.d.ts +21 -21
  395. package/lib/engine-components/postprocessing/Effects/DepthOfField.js +97 -97
  396. package/lib/engine-components/postprocessing/Effects/Pixelation.d.ts +7 -7
  397. package/lib/engine-components/postprocessing/Effects/Pixelation.js +28 -28
  398. package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusion.d.ts +13 -13
  399. package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusion.js +86 -86
  400. package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.d.ts +24 -24
  401. package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.js +94 -94
  402. package/lib/engine-components/postprocessing/Effects/TiltShiftEffect.d.ts +13 -13
  403. package/lib/engine-components/postprocessing/Effects/TiltShiftEffect.js +62 -62
  404. package/lib/engine-components/postprocessing/Effects/Tonemapping.d.ts +16 -16
  405. package/lib/engine-components/postprocessing/Effects/Tonemapping.js +51 -51
  406. package/lib/engine-components/postprocessing/Effects/Vignette.d.ts +11 -11
  407. package/lib/engine-components/postprocessing/Effects/Vignette.js +56 -56
  408. package/lib/engine-components/postprocessing/PostProcessingEffect.d.ts +33 -33
  409. package/lib/engine-components/postprocessing/PostProcessingEffect.js +126 -126
  410. package/lib/engine-components/postprocessing/PostProcessingHandler.d.ts +22 -22
  411. package/lib/engine-components/postprocessing/PostProcessingHandler.js +201 -201
  412. package/lib/engine-components/postprocessing/Volume.d.ts +25 -25
  413. package/lib/engine-components/postprocessing/Volume.js +193 -193
  414. package/lib/engine-components/postprocessing/VolumeParameter.d.ts +22 -22
  415. package/lib/engine-components/postprocessing/VolumeParameter.js +80 -80
  416. package/lib/engine-components/postprocessing/VolumeProfile.d.ts +7 -7
  417. package/lib/engine-components/postprocessing/VolumeProfile.js +41 -41
  418. package/lib/engine-components/postprocessing/index.d.ts +4 -4
  419. package/lib/engine-components/postprocessing/index.js +4 -4
  420. package/lib/engine-components/timeline/PlayableDirector.d.ts +107 -107
  421. package/lib/engine-components/timeline/PlayableDirector.js +624 -624
  422. package/lib/engine-components/timeline/SignalAsset.d.ts +18 -18
  423. package/lib/engine-components/timeline/SignalAsset.js +124 -124
  424. package/lib/engine-components/timeline/TimelineModels.d.ts +88 -88
  425. package/lib/engine-components/timeline/TimelineModels.js +22 -22
  426. package/lib/engine-components/timeline/TimelineTracks.d.ts +90 -90
  427. package/lib/engine-components/timeline/TimelineTracks.js +825 -825
  428. package/lib/engine-components/timeline/index.d.ts +4 -4
  429. package/lib/engine-components/timeline/index.js +3 -3
  430. package/lib/engine-components/ui/BaseUIComponent.d.ts +31 -31
  431. package/lib/engine-components/ui/BaseUIComponent.js +161 -161
  432. package/lib/engine-components/ui/Button.d.ts +56 -56
  433. package/lib/engine-components/ui/Button.js +282 -282
  434. package/lib/engine-components/ui/Canvas.d.ts +67 -67
  435. package/lib/engine-components/ui/Canvas.js +382 -382
  436. package/lib/engine-components/ui/CanvasGroup.d.ts +15 -15
  437. package/lib/engine-components/ui/CanvasGroup.js +53 -53
  438. package/lib/engine-components/ui/EventSystem.d.ts +102 -102
  439. package/lib/engine-components/ui/EventSystem.js +641 -641
  440. package/lib/engine-components/ui/Graphic.d.ts +45 -45
  441. package/lib/engine-components/ui/Graphic.js +236 -236
  442. package/lib/engine-components/ui/Image.d.ts +27 -27
  443. package/lib/engine-components/ui/Image.js +107 -107
  444. package/lib/engine-components/ui/InputField.d.ts +34 -34
  445. package/lib/engine-components/ui/InputField.js +234 -234
  446. package/lib/engine-components/ui/Interfaces.d.ts +38 -38
  447. package/lib/engine-components/ui/Interfaces.js +12 -12
  448. package/lib/engine-components/ui/Layout.d.ts +72 -72
  449. package/lib/engine-components/ui/Layout.js +318 -318
  450. package/lib/engine-components/ui/Outline.d.ts +7 -7
  451. package/lib/engine-components/ui/Outline.js +20 -20
  452. package/lib/engine-components/ui/PointerEvents.d.ts +64 -64
  453. package/lib/engine-components/ui/PointerEvents.js +68 -68
  454. package/lib/engine-components/ui/RaycastUtils.d.ts +11 -11
  455. package/lib/engine-components/ui/RaycastUtils.js +67 -67
  456. package/lib/engine-components/ui/Raycaster.d.ts +18 -18
  457. package/lib/engine-components/ui/Raycaster.js +69 -69
  458. package/lib/engine-components/ui/RectTransform.d.ts +61 -61
  459. package/lib/engine-components/ui/RectTransform.js +343 -343
  460. package/lib/engine-components/ui/SpatialHtml.d.ts +6 -6
  461. package/lib/engine-components/ui/SpatialHtml.js +57 -57
  462. package/lib/engine-components/ui/Text.d.ts +74 -74
  463. package/lib/engine-components/ui/Text.js +534 -534
  464. package/lib/engine-components/ui/Utils.d.ts +23 -23
  465. package/lib/engine-components/ui/Utils.js +90 -90
  466. package/lib/engine-components/ui/index.d.ts +1 -1
  467. package/lib/engine-components/ui/index.js +1 -1
  468. package/lib/engine-components/utils/LookAt.d.ts +13 -13
  469. package/lib/engine-components/utils/LookAt.js +59 -59
  470. package/lib/engine-components/utils/OpenURL.d.ts +21 -21
  471. package/lib/engine-components/utils/OpenURL.js +124 -124
  472. package/lib/engine-components/webxr/WebARCameraBackground.d.ts +19 -19
  473. package/lib/engine-components/webxr/WebARCameraBackground.js +193 -193
  474. package/lib/engine-components/webxr/WebARSessionRoot.d.ts +38 -38
  475. package/lib/engine-components/webxr/WebARSessionRoot.js +407 -407
  476. package/lib/engine-components/webxr/WebXR.d.ts +110 -110
  477. package/lib/engine-components/webxr/WebXR.js +672 -672
  478. package/lib/engine-components/webxr/WebXRAvatar.d.ts +61 -61
  479. package/lib/engine-components/webxr/WebXRAvatar.js +289 -289
  480. package/lib/engine-components/webxr/WebXRController.d.ts +154 -154
  481. package/lib/engine-components/webxr/WebXRController.js +1028 -1028
  482. package/lib/engine-components/webxr/WebXRGrabRendering.d.ts +42 -42
  483. package/lib/engine-components/webxr/WebXRGrabRendering.js +137 -137
  484. package/lib/engine-components/webxr/WebXRImageTracking.d.ts +49 -49
  485. package/lib/engine-components/webxr/WebXRImageTracking.js +336 -336
  486. package/lib/engine-components/webxr/WebXRPlaneTracking.d.ts +49 -49
  487. package/lib/engine-components/webxr/WebXRPlaneTracking.js +372 -372
  488. package/lib/engine-components/webxr/WebXRRig.d.ts +4 -4
  489. package/lib/engine-components/webxr/WebXRRig.js +19 -19
  490. package/lib/engine-components/webxr/WebXRSync.d.ts +54 -54
  491. package/lib/engine-components/webxr/WebXRSync.js +410 -410
  492. package/lib/engine-components/webxr/index.d.ts +4 -4
  493. package/lib/engine-components/webxr/index.js +4 -4
  494. package/lib/engine-components-experimental/Presentation.d.ts +6 -6
  495. package/lib/engine-components-experimental/Presentation.js +9 -9
  496. package/lib/engine-components-experimental/api.d.ts +1 -1
  497. package/lib/engine-components-experimental/api.js +1 -1
  498. package/lib/engine-components-experimental/networking/PlayerSync.d.ts +50 -50
  499. package/lib/engine-components-experimental/networking/PlayerSync.js +200 -200
  500. package/lib/engine-schemes/api.d.ts +1 -1
  501. package/lib/engine-schemes/api.js +1 -1
  502. package/lib/engine-schemes/schemes.d.ts +7 -7
  503. package/lib/engine-schemes/schemes.js +19 -19
  504. package/lib/engine-schemes/synced-camera-model.d.ts +25 -25
  505. package/lib/engine-schemes/synced-camera-model.js +67 -67
  506. package/lib/engine-schemes/synced-transform-model.d.ts +31 -31
  507. package/lib/engine-schemes/synced-transform-model.js +66 -66
  508. package/lib/engine-schemes/transform.d.ts +12 -12
  509. package/lib/engine-schemes/transform.js +39 -39
  510. package/lib/engine-schemes/vec3.d.ts +11 -11
  511. package/lib/engine-schemes/vec3.js +29 -29
  512. package/lib/engine-schemes/vec4.d.ts +12 -12
  513. package/lib/engine-schemes/vec4.js +33 -33
  514. package/lib/engine-schemes/vr-user-state-buffer.d.ts +36 -36
  515. package/lib/engine-schemes/vr-user-state-buffer.js +103 -103
  516. package/lib/include/three/ARButton.d.ts +3 -3
  517. package/lib/include/three/ARButton.js +151 -151
  518. package/lib/include/three/EXT_mesh_gpu_instancing_exporter.d.ts +6 -6
  519. package/lib/include/three/EXT_mesh_gpu_instancing_exporter.js +45 -45
  520. package/lib/include/three/VRButton.d.ts +5 -5
  521. package/lib/include/three/VRButton.js +118 -118
  522. package/lib/needle-engine.d.ts +6 -6
  523. package/lib/needle-engine.js +49 -49
  524. package/package.json +1 -1
  525. package/plugins/common/config.cjs +14 -14
  526. package/plugins/common/config.js +19 -19
  527. package/plugins/common/generator.js +10 -10
  528. package/plugins/common/license.cjs +30 -30
  529. package/plugins/common/version.js +11 -11
  530. package/plugins/next/license.cjs +4 -4
  531. package/plugins/next/next.js +70 -70
  532. package/plugins/types/index.d.ts +1 -1
  533. package/plugins/types/needleConfig.d.ts +21 -21
  534. package/plugins/types/userconfig.d.ts +42 -42
  535. package/plugins/vite/alias.js +70 -70
  536. package/plugins/vite/build.js +19 -19
  537. package/plugins/vite/config.js +73 -73
  538. package/plugins/vite/copyfiles.js +134 -134
  539. package/plugins/vite/defines.js +45 -45
  540. package/plugins/vite/dependency-watcher.js +224 -224
  541. package/plugins/vite/drop-client.js +76 -76
  542. package/plugins/vite/drop.js +82 -82
  543. package/plugins/vite/editor-connection.js +121 -121
  544. package/plugins/vite/facebook-instant-games.js +99 -99
  545. package/plugins/vite/gzip.js +5 -5
  546. package/plugins/vite/imports-logger.js +143 -143
  547. package/plugins/vite/index.js +81 -81
  548. package/plugins/vite/license.js +42 -42
  549. package/plugins/vite/meta.js +149 -149
  550. package/plugins/vite/peer.js +31 -31
  551. package/plugins/vite/poster-client.js +59 -59
  552. package/plugins/vite/poster.js +73 -73
  553. package/plugins/vite/reload-client.js +15 -15
  554. package/plugins/vite/reload.js +363 -363
  555. package/plugins/vite/transform-codegen.js +55 -55
  556. package/plugins/vite/vite-4.4-hack.js +31 -31
  557. package/src/engine/api.ts +54 -54
  558. package/src/engine/assets/index.ts +4 -4
  559. package/src/engine/codegen/register_types.ts +441 -441
  560. package/src/engine/debug/debug.ts +29 -29
  561. package/src/engine/debug/debug_console.ts +213 -213
  562. package/src/engine/debug/debug_overlay.ts +283 -283
  563. package/src/engine/engine.ts +13 -13
  564. package/src/engine/engine_addressables.ts +494 -494
  565. package/src/engine/engine_application.ts +53 -53
  566. package/src/engine/engine_assetdatabase.ts +383 -383
  567. package/src/engine/engine_camera.ts +32 -32
  568. package/src/engine/engine_components.ts +266 -266
  569. package/src/engine/engine_components_internal.ts +42 -42
  570. package/src/engine/engine_constants.ts +42 -42
  571. package/src/engine/engine_context.ts +1386 -1386
  572. package/src/engine/engine_context_registry.ts +103 -103
  573. package/src/engine/engine_coroutine.ts +24 -24
  574. package/src/engine/engine_create_objects.ts +39 -39
  575. package/src/engine/engine_default_parameters.ts +3 -3
  576. package/src/engine/engine_editor-sync.ts +29 -29
  577. package/src/engine/engine_element.ts +592 -592
  578. package/src/engine/engine_element_attributes.ts +61 -61
  579. package/src/engine/engine_element_extras.ts +16 -16
  580. package/src/engine/engine_element_loading.ts +341 -341
  581. package/src/engine/engine_element_overlay.ts +160 -160
  582. package/src/engine/engine_fileloader.js +8 -8
  583. package/src/engine/engine_gameobject.ts +621 -621
  584. package/src/engine/engine_generic_utils.js +13 -13
  585. package/src/engine/engine_gizmos.ts +321 -321
  586. package/src/engine/engine_gltf.ts +30 -30
  587. package/src/engine/engine_gltf_builtin_components.ts +350 -350
  588. package/src/engine/engine_hot_reload.ts +196 -196
  589. package/src/engine/engine_input.ts +879 -879
  590. package/src/engine/engine_input_utils.ts +23 -23
  591. package/src/engine/engine_instancing.ts +42 -42
  592. package/src/engine/engine_license.ts +413 -413
  593. package/src/engine/engine_lifecycle_api.ts +29 -29
  594. package/src/engine/engine_lifecycle_functions_internal.ts +36 -36
  595. package/src/engine/engine_lightdata.ts +113 -113
  596. package/src/engine/engine_loaders.ts +77 -77
  597. package/src/engine/engine_mainloop_utils.ts +431 -431
  598. package/src/engine/engine_math.ts +174 -174
  599. package/src/engine/engine_networking.ts +742 -742
  600. package/src/engine/engine_networking_auto.ts +373 -373
  601. package/src/engine/engine_networking_files.ts +206 -206
  602. package/src/engine/engine_networking_files_default_components.ts +54 -54
  603. package/src/engine/engine_networking_instantiate.ts +362 -362
  604. package/src/engine/engine_networking_peer.ts +158 -158
  605. package/src/engine/engine_networking_streams.ts +489 -489
  606. package/src/engine/engine_networking_types.ts +18 -18
  607. package/src/engine/engine_networking_utils.ts +23 -23
  608. package/src/engine/engine_networking_websocket.ts +2 -2
  609. package/src/engine/engine_patcher.ts +199 -199
  610. package/src/engine/engine_physics.ts +287 -287
  611. package/src/engine/engine_physics.types.ts +43 -43
  612. package/src/engine/engine_physics_rapier.ts +1385 -1385
  613. package/src/engine/engine_playerview.ts +79 -79
  614. package/src/engine/engine_scenelighting.ts +313 -313
  615. package/src/engine/engine_scenetools.ts +242 -242
  616. package/src/engine/engine_serialization.ts +6 -6
  617. package/src/engine/engine_serialization_builtin_serializer.ts +415 -415
  618. package/src/engine/engine_serialization_core.ts +680 -680
  619. package/src/engine/engine_serialization_decorator.ts +68 -68
  620. package/src/engine/engine_setup.ts +1 -1
  621. package/src/engine/engine_shaders.ts +242 -242
  622. package/src/engine/engine_shims.ts +28 -28
  623. package/src/engine/engine_texture.ts +70 -70
  624. package/src/engine/engine_three_utils.ts +382 -382
  625. package/src/engine/engine_time.ts +55 -55
  626. package/src/engine/engine_types.ts +489 -489
  627. package/src/engine/engine_typestore.ts +41 -41
  628. package/src/engine/engine_util_decorator.ts +134 -134
  629. package/src/engine/engine_utils.ts +605 -605
  630. package/src/engine/engine_utils_screenshot.ts +84 -84
  631. package/src/engine/engine_web_api.ts +119 -119
  632. package/src/engine/extensions/EXT_texture_exr.ts +49 -49
  633. package/src/engine/extensions/NEEDLE_animator_controller_model.ts +193 -193
  634. package/src/engine/extensions/NEEDLE_components.ts +250 -250
  635. package/src/engine/extensions/NEEDLE_gameobject_data.ts +82 -82
  636. package/src/engine/extensions/NEEDLE_lighting_settings.ts +210 -210
  637. package/src/engine/extensions/NEEDLE_lightmaps.ts +130 -130
  638. package/src/engine/extensions/NEEDLE_persistent_assets.ts +75 -75
  639. package/src/engine/extensions/NEEDLE_progressive.ts +412 -412
  640. package/src/engine/extensions/NEEDLE_render_objects.ts +209 -209
  641. package/src/engine/extensions/NEEDLE_techniques_webgl.ts +618 -618
  642. package/src/engine/extensions/extension_resolver.ts +4 -4
  643. package/src/engine/extensions/extension_utils.ts +149 -149
  644. package/src/engine/extensions/extensions.ts +118 -118
  645. package/src/engine/extensions/index.ts +4 -4
  646. package/src/engine/extensions/usage_tracker.ts +95 -95
  647. package/src/engine/js-extensions/Camera.ts +34 -34
  648. package/src/engine/js-extensions/Layers.ts +19 -19
  649. package/src/engine/js-extensions/index.ts +1 -1
  650. package/src/engine/shaders/shaderData.ts +67 -67
  651. package/src/engine/tests/test_utils.ts +63 -63
  652. package/src/engine-components/AlignmentConstraint.ts +35 -35
  653. package/src/engine-components/Animation.ts +345 -345
  654. package/src/engine-components/AnimationCurve.ts +83 -83
  655. package/src/engine-components/AnimationUtils.ts +117 -117
  656. package/src/engine-components/Animator.ts +243 -243
  657. package/src/engine-components/AnimatorController.ts +1020 -1020
  658. package/src/engine-components/AudioListener.ts +32 -32
  659. package/src/engine-components/AudioSource.ts +419 -419
  660. package/src/engine-components/AvatarLoader.ts +204 -204
  661. package/src/engine-components/AxesHelper.ts +33 -33
  662. package/src/engine-components/BasicIKConstraint.ts +53 -53
  663. package/src/engine-components/BoxCollider.ts +1 -1
  664. package/src/engine-components/BoxHelperComponent.ts +100 -100
  665. package/src/engine-components/Camera.ts +454 -454
  666. package/src/engine-components/CameraUtils.ts +89 -89
  667. package/src/engine-components/CharacterController.ts +243 -243
  668. package/src/engine-components/Collider.ts +160 -160
  669. package/src/engine-components/Component.ts +670 -670
  670. package/src/engine-components/ContactShadows.ts +265 -265
  671. package/src/engine-components/DeleteBox.ts +35 -35
  672. package/src/engine-components/DeviceFlag.ts +42 -42
  673. package/src/engine-components/DragControls.ts +574 -574
  674. package/src/engine-components/DropListener.ts +112 -112
  675. package/src/engine-components/Duplicatable.ts +146 -146
  676. package/src/engine-components/EventList.ts +125 -125
  677. package/src/engine-components/EventTrigger.ts +47 -47
  678. package/src/engine-components/EventType.ts +87 -87
  679. package/src/engine-components/FlyControls.ts +31 -31
  680. package/src/engine-components/Fog.ts +59 -59
  681. package/src/engine-components/Gizmos.ts +52 -52
  682. package/src/engine-components/GridHelper.ts +40 -40
  683. package/src/engine-components/GroundProjection.ts +97 -97
  684. package/src/engine-components/Interactable.ts +18 -18
  685. package/src/engine-components/Joints.ts +51 -51
  686. package/src/engine-components/LODGroup.ts +145 -145
  687. package/src/engine-components/Light.ts +493 -493
  688. package/src/engine-components/LookAtConstraint.ts +11 -11
  689. package/src/engine-components/NestedGltf.ts +70 -70
  690. package/src/engine-components/Networking.ts +72 -72
  691. package/src/engine-components/OffsetConstraint.ts +59 -59
  692. package/src/engine-components/OrbitControls.ts +653 -653
  693. package/src/engine-components/ParticleSystem.ts +1192 -1192
  694. package/src/engine-components/ParticleSystemModules.ts +1481 -1481
  695. package/src/engine-components/ParticleSystemSubEmitter.ts +110 -110
  696. package/src/engine-components/PlayerColor.ts +93 -93
  697. package/src/engine-components/ReflectionProbe.ts +192 -192
  698. package/src/engine-components/Renderer.ts +1125 -1125
  699. package/src/engine-components/RendererLightmap.ts +145 -145
  700. package/src/engine-components/RigidBody.ts +453 -453
  701. package/src/engine-components/SceneSwitcher.ts +594 -594
  702. package/src/engine-components/ScreenCapture.ts +437 -437
  703. package/src/engine-components/ShadowCatcher.ts +149 -149
  704. package/src/engine-components/Skybox.ts +281 -281
  705. package/src/engine-components/SmoothFollow.ts +57 -57
  706. package/src/engine-components/SpatialTrigger.ts +142 -142
  707. package/src/engine-components/SpectatorCamera.ts +675 -675
  708. package/src/engine-components/SphereCollider.ts +1 -1
  709. package/src/engine-components/SpriteRenderer.ts +244 -244
  710. package/src/engine-components/SyncedCamera.ts +208 -208
  711. package/src/engine-components/SyncedRoom.ts +166 -166
  712. package/src/engine-components/SyncedTransform.ts +336 -336
  713. package/src/engine-components/TestRunner.ts +114 -114
  714. package/src/engine-components/TransformGizmo.ts +157 -157
  715. package/src/engine-components/VideoPlayer.ts +831 -831
  716. package/src/engine-components/Voip.ts +214 -214
  717. package/src/engine-components/XRFlag.ts +138 -138
  718. package/src/engine-components/api.ts +22 -22
  719. package/src/engine-components/avatar/AvatarBlink_Simple.ts +67 -67
  720. package/src/engine-components/avatar/AvatarEyeLook_Rotation.ts +68 -68
  721. package/src/engine-components/avatar/Avatar_Brain_LookAt.ts +136 -136
  722. package/src/engine-components/avatar/Avatar_MouthShapes.ts +81 -81
  723. package/src/engine-components/avatar/Avatar_MustacheShake.ts +28 -28
  724. package/src/engine-components/codegen/components.ts +216 -216
  725. package/src/engine-components/debug/LogStats.ts +21 -21
  726. package/src/engine-components/export/gltf/GltfExport.ts +231 -231
  727. package/src/engine-components/export/usdz/Extension.ts +11 -11
  728. package/src/engine-components/export/usdz/ThreeUSDZExporter.ts +1773 -1773
  729. package/src/engine-components/export/usdz/USDZExporter.ts +477 -477
  730. package/src/engine-components/export/usdz/extensions/Animation.ts +774 -774
  731. package/src/engine-components/export/usdz/extensions/DocumentExtension.ts +9 -9
  732. package/src/engine-components/export/usdz/extensions/USDZText.ts +287 -287
  733. package/src/engine-components/export/usdz/extensions/USDZUI.ts +119 -119
  734. package/src/engine-components/export/usdz/extensions/behavior/Actions.ts +98 -98
  735. package/src/engine-components/export/usdz/extensions/behavior/AudioExtension.ts +67 -67
  736. package/src/engine-components/export/usdz/extensions/behavior/Behaviour.ts +202 -202
  737. package/src/engine-components/export/usdz/extensions/behavior/BehaviourComponents.ts +963 -963
  738. package/src/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.ts +517 -517
  739. package/src/engine-components/export/usdz/index.ts +2 -2
  740. package/src/engine-components/export/usdz/utils/animationutils.ts +100 -100
  741. package/src/engine-components/export/usdz/utils/quicklook.ts +42 -42
  742. package/src/engine-components/export/usdz/utils/timeutils.ts +19 -19
  743. package/src/engine-components/js-extensions/ExtensionUtils.ts +81 -81
  744. package/src/engine-components/js-extensions/Object3D.ts +181 -181
  745. package/src/engine-components/js-extensions/RGBAColor.ts +54 -54
  746. package/src/engine-components/js-extensions/Vector.ts +16 -16
  747. package/src/engine-components/js-extensions/index.ts +2 -2
  748. package/src/engine-components/postprocessing/Effects/Antialiasing.ts +51 -51
  749. package/src/engine-components/postprocessing/Effects/Bloom.ts +76 -76
  750. package/src/engine-components/postprocessing/Effects/ChromaticAberration.ts +35 -35
  751. package/src/engine-components/postprocessing/Effects/ColorAdjustments.ts +96 -96
  752. package/src/engine-components/postprocessing/Effects/DepthOfField.ts +93 -93
  753. package/src/engine-components/postprocessing/Effects/Pixelation.ts +26 -26
  754. package/src/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusion.ts +84 -84
  755. package/src/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.ts +98 -98
  756. package/src/engine-components/postprocessing/Effects/TiltShiftEffect.ts +55 -55
  757. package/src/engine-components/postprocessing/Effects/Tonemapping.ts +54 -54
  758. package/src/engine-components/postprocessing/Effects/Vignette.ts +54 -54
  759. package/src/engine-components/postprocessing/PostProcessingEffect.ts +148 -148
  760. package/src/engine-components/postprocessing/PostProcessingHandler.ts +232 -232
  761. package/src/engine-components/postprocessing/Volume.ts +216 -216
  762. package/src/engine-components/postprocessing/VolumeParameter.ts +92 -92
  763. package/src/engine-components/postprocessing/VolumeProfile.ts +40 -40
  764. package/src/engine-components/postprocessing/index.ts +3 -3
  765. package/src/engine-components/timeline/PlayableDirector.ts +666 -666
  766. package/src/engine-components/timeline/SignalAsset.ts +138 -138
  767. package/src/engine-components/timeline/TimelineModels.ts +93 -93
  768. package/src/engine-components/timeline/TimelineTracks.ts +906 -906
  769. package/src/engine-components/timeline/index.ts +3 -3
  770. package/src/engine-components/ui/BaseUIComponent.ts +195 -195
  771. package/src/engine-components/ui/Button.ts +283 -283
  772. package/src/engine-components/ui/Canvas.ts +390 -390
  773. package/src/engine-components/ui/CanvasGroup.ts +49 -49
  774. package/src/engine-components/ui/EventSystem.ts +736 -736
  775. package/src/engine-components/ui/Graphic.ts +255 -255
  776. package/src/engine-components/ui/Image.ts +102 -102
  777. package/src/engine-components/ui/InputField.ts +290 -290
  778. package/src/engine-components/ui/Interfaces.ts +57 -57
  779. package/src/engine-components/ui/Layout.ts +322 -322
  780. package/src/engine-components/ui/Outline.ts +12 -12
  781. package/src/engine-components/ui/PointerEvents.ts +118 -118
  782. package/src/engine-components/ui/RaycastUtils.ts +68 -68
  783. package/src/engine-components/ui/Raycaster.ts +73 -73
  784. package/src/engine-components/ui/RectTransform.ts +364 -364
  785. package/src/engine-components/ui/SpatialHtml.ts +63 -63
  786. package/src/engine-components/ui/Text.ts +572 -572
  787. package/src/engine-components/ui/Utils.ts +110 -110
  788. package/src/engine-components/utils/LookAt.ts +65 -65
  789. package/src/engine-components/utils/OpenURL.ts +118 -118
  790. package/src/engine-components/webxr/WebARCameraBackground.ts +224 -224
  791. package/src/engine-components/webxr/WebARSessionRoot.ts +446 -446
  792. package/src/engine-components/webxr/WebXR.ts +761 -761
  793. package/src/engine-components/webxr/WebXRAvatar.ts +356 -356
  794. package/src/engine-components/webxr/WebXRController.ts +1168 -1168
  795. package/src/engine-components/webxr/WebXRGrabRendering.ts +150 -150
  796. package/src/engine-components/webxr/WebXRImageTracking.ts +371 -371
  797. package/src/engine-components/webxr/WebXRPlaneTracking.ts +429 -429
  798. package/src/engine-components/webxr/WebXRRig.ts +21 -21
  799. package/src/engine-components/webxr/WebXRSync.ts +463 -463
  800. package/src/engine-components/webxr/index.ts +3 -3
  801. package/src/engine-components-experimental/Presentation.ts +12 -12
  802. package/src/engine-components-experimental/networking/PlayerSync.ts +217 -217
  803. package/src/engine-schemes/COMPILE_SCHEMES.bat +3 -3
  804. package/src/engine-schemes/COMPILE_TS.bat +11 -11
  805. package/src/engine-schemes/schemes.ts +27 -27
  806. package/src/engine-schemes/synced-camera-model.ts +92 -92
  807. package/src/engine-schemes/synced-transform-model.ts +90 -90
  808. package/src/engine-schemes/syncedCamera.fbs +10 -10
  809. package/src/engine-schemes/transform.ts +50 -50
  810. package/src/engine-schemes/transforms.fbs +25 -25
  811. package/src/engine-schemes/vec.fbs +19 -19
  812. package/src/engine-schemes/vec2.ts +33 -33
  813. package/src/engine-schemes/vec3.ts +38 -38
  814. package/src/engine-schemes/vec4.ts +43 -43
  815. package/src/engine-schemes/vr-user-state-buffer.ts +138 -138
  816. package/src/engine-schemes/vrUserStateBuffer.fbs +16 -16
  817. package/src/include/draco/draco_decoder.js +34 -34
  818. package/src/include/draco/draco_wasm_wrapper.js +117 -117
  819. package/src/include/ktx2/basis_transcoder.js +21 -21
  820. package/src/include/needle/arial-msdf.json +1471 -1471
  821. package/src/include/three/ARButton.js +231 -231
  822. package/src/include/three/DragControls.js +231 -231
  823. package/src/include/three/EXT_mesh_gpu_instancing_exporter.js +66 -66
  824. package/src/include/three/VRButton.js +194 -194
  825. package/src/needle-engine.ts +55 -55
  826. package/src/engine/dist/api.js +0 -73
  827. package/src/engine/dist/api.js.meta +0 -7
  828. package/src/engine/dist/engine_networking_streams.js +0 -474
  829. package/src/engine/dist/engine_networking_streams.js.meta +0 -7
  830. package/src/engine-schemes/dist/api.js +0 -17
  831. package/src/engine-schemes/dist/api.js.meta +0 -7
  832. package/src/engine-schemes/dist/schemes.js +0 -25
  833. package/src/engine-schemes/dist/schemes.js.meta +0 -7
  834. package/src/engine-schemes/dist/synced-camera-model.js +0 -74
  835. package/src/engine-schemes/dist/synced-camera-model.js.meta +0 -7
  836. package/src/engine-schemes/dist/synced-transform-model.js +0 -73
  837. package/src/engine-schemes/dist/synced-transform-model.js.meta +0 -7
  838. package/src/engine-schemes/dist/transform.js +0 -46
  839. package/src/engine-schemes/dist/transform.js.meta +0 -7
  840. package/src/engine-schemes/dist/vec2.js +0 -32
  841. package/src/engine-schemes/dist/vec2.js.meta +0 -7
  842. package/src/engine-schemes/dist/vec3.js +0 -36
  843. package/src/engine-schemes/dist/vec3.js.meta +0 -7
  844. package/src/engine-schemes/dist/vec4.js +0 -40
  845. package/src/engine-schemes/dist/vec4.js.meta +0 -7
  846. package/src/engine-schemes/dist/vr-user-state-buffer.js +0 -110
  847. package/src/engine-schemes/dist/vr-user-state-buffer.js.meta +0 -7
  848. package/src/engine-schemes/flatc.exe +0 -0
@@ -1,545 +1,545 @@
1
- import { FindShaderTechniques, whiteDefaultTexture, ToUnityMatrixArray, SetUnitySphericalHarmonics } from '../engine_shaders.js';
2
- import { AlwaysDepth, BackSide, DoubleSide, EqualDepth, FrontSide, GLSL3, GreaterDepth, GreaterEqualDepth, LessDepth, LessEqualDepth, LinearSRGBColorSpace, Matrix4, NotEqualDepth, RawShaderMaterial, Texture, Vector3, Vector4 } from 'three';
3
- import { Context } from '../engine_setup.js';
4
- import { getParam } from "../engine_utils.js";
5
- import * as SHADERDATA from "../shaders/shaderData.js";
6
- import { getWorldPosition } from "../engine_three_utils.js";
7
- const debug = getParam("debugcustomshader");
8
- export const NEEDLE_TECHNIQUES_WEBGL_NAME = "NEEDLE_techniques_webgl";
9
- //@ts-ignore
10
- var UniformType;
11
- (function (UniformType) {
12
- UniformType[UniformType["INT"] = 5124] = "INT";
13
- UniformType[UniformType["FLOAT"] = 5126] = "FLOAT";
14
- UniformType[UniformType["FLOAT_VEC2"] = 35664] = "FLOAT_VEC2";
15
- UniformType[UniformType["FLOAT_VEC3"] = 35665] = "FLOAT_VEC3";
16
- UniformType[UniformType["FLOAT_VEC4"] = 35666] = "FLOAT_VEC4";
17
- UniformType[UniformType["INT_VEC2"] = 35667] = "INT_VEC2";
18
- UniformType[UniformType["INT_VEC3"] = 35668] = "INT_VEC3";
19
- UniformType[UniformType["INT_VEC4"] = 35669] = "INT_VEC4";
20
- UniformType[UniformType["BOOL"] = 35670] = "BOOL";
21
- UniformType[UniformType["BOOL_VEC2"] = 35671] = "BOOL_VEC2";
22
- UniformType[UniformType["BOOL_VEC3"] = 35672] = "BOOL_VEC3";
23
- UniformType[UniformType["BOOL_VEC4"] = 35673] = "BOOL_VEC4";
24
- UniformType[UniformType["FLOAT_MAT2"] = 35674] = "FLOAT_MAT2";
25
- UniformType[UniformType["FLOAT_MAT3"] = 35675] = "FLOAT_MAT3";
26
- UniformType[UniformType["FLOAT_MAT4"] = 35676] = "FLOAT_MAT4";
27
- UniformType[UniformType["SAMPLER_2D"] = 35678] = "SAMPLER_2D";
28
- UniformType[UniformType["SAMPLER_3D"] = 35680] = "SAMPLER_3D";
29
- UniformType[UniformType["SAMPLER_CUBE"] = 35681] = "SAMPLER_CUBE";
30
- UniformType[UniformType["UNKNOWN"] = 0] = "UNKNOWN";
31
- })(UniformType || (UniformType = {}));
32
- class ObjectRendererData {
33
- objectToWorldMatrix = new Matrix4();
34
- worldToObjectMatrix = new Matrix4();
35
- objectToWorld = new Array();
36
- worldToObject = new Array();
37
- updateFrom(obj) {
38
- this.objectToWorldMatrix.copy(obj.matrixWorld);
39
- ToUnityMatrixArray(this.objectToWorldMatrix, this.objectToWorld);
40
- this.worldToObjectMatrix.copy(obj.matrixWorld).invert();
41
- ToUnityMatrixArray(this.worldToObjectMatrix, this.worldToObject);
42
- }
43
- }
44
- var CullMode;
45
- (function (CullMode) {
46
- CullMode[CullMode["Off"] = 0] = "Off";
47
- CullMode[CullMode["Front"] = 1] = "Front";
48
- CullMode[CullMode["Back"] = 2] = "Back";
49
- })(CullMode || (CullMode = {}));
50
- var ZTestMode;
51
- (function (ZTestMode) {
52
- ZTestMode[ZTestMode["Never"] = 1] = "Never";
53
- ZTestMode[ZTestMode["Less"] = 2] = "Less";
54
- ZTestMode[ZTestMode["Equal"] = 3] = "Equal";
55
- ZTestMode[ZTestMode["LEqual"] = 4] = "LEqual";
56
- ZTestMode[ZTestMode["Greater"] = 5] = "Greater";
57
- ZTestMode[ZTestMode["NotEqual"] = 6] = "NotEqual";
58
- ZTestMode[ZTestMode["GEqual"] = 7] = "GEqual";
59
- ZTestMode[ZTestMode["Always"] = 8] = "Always";
60
- })(ZTestMode || (ZTestMode = {}));
61
- export class CustomShader extends RawShaderMaterial {
62
- identifier;
63
- onBeforeRenderSceneCallback = this.onBeforeRenderScene.bind(this);
64
- clone() {
65
- const clone = super.clone();
66
- createUniformProperties(clone);
67
- return clone;
68
- }
69
- constructor(identifier, ...args) {
70
- super(...args);
71
- this.identifier = identifier;
72
- // this["normalMap"] = true;
73
- // this.needsUpdate = true;
74
- if (debug)
75
- console.log(this);
76
- this.type = "NEEDLE_CUSTOM_SHADER";
77
- if (!this.uniforms[this._objToWorldName])
78
- this.uniforms[this._objToWorldName] = { value: [] };
79
- if (!this.uniforms[this._worldToObjectName])
80
- this.uniforms[this._worldToObjectName] = { value: [] };
81
- if (!this.uniforms[this._viewProjectionName])
82
- this.uniforms[this._viewProjectionName] = { value: [] };
83
- if (this.uniforms[this._sphericalHarmonicsName]) {
84
- this.waitForLighting();
85
- }
86
- if (this.depthTextureUniform || this.opaqueTextureUniform) {
87
- Context.Current.pre_render_callbacks.push(this.onBeforeRenderSceneCallback);
88
- }
89
- }
90
- dispose() {
91
- super.dispose();
92
- const index = Context.Current.pre_render_callbacks.indexOf(this.onBeforeRenderSceneCallback);
93
- if (index >= 0)
94
- Context.Current.pre_render_callbacks.splice(index, 1);
95
- }
96
- async waitForLighting() {
97
- const context = Context.Current;
98
- if (!context) {
99
- console.error("Missing context");
100
- return;
101
- }
102
- const data = await context.sceneLighting.internalGetSceneLightingData(this.identifier);
103
- if (!data || !data.array) {
104
- console.warn("Missing lighting data for custom shader, getSceneLightingData did not return anything");
105
- return;
106
- }
107
- if (debug)
108
- console.log(data);
109
- const array = data.array;
110
- const envTexture = data.texture;
111
- // console.log(envTexture);
112
- this.uniforms["unity_SpecCube0"] = { value: envTexture };
113
- SetUnitySphericalHarmonics(this.uniforms, array);
114
- const hdr = Math.sqrt(Math.PI * .5);
115
- this.uniforms["unity_SpecCube0_HDR"] = { value: new Vector4(hdr, hdr, hdr, hdr) };
116
- // this.needsUpdate = true;
117
- // this.uniformsNeedUpdate = true;
118
- if (debug)
119
- console.log("Set environment lighting", this.uniforms);
120
- }
121
- _sphericalHarmonicsName = "unity_SpecCube0";
122
- _objToWorldName = "hlslcc_mtx4x4unity_ObjectToWorld";
123
- _worldToObjectName = "hlslcc_mtx4x4unity_WorldToObject";
124
- static viewProjection = new Matrix4();
125
- static _viewProjectionValues = [];
126
- _viewProjectionName = "hlslcc_mtx4x4unity_MatrixVP";
127
- static viewMatrix = new Matrix4();
128
- static _viewMatrixValues = [];
129
- _viewMatrixName = "hlslcc_mtx4x4unity_MatrixV";
130
- static _worldSpaceCameraPosName = "_WorldSpaceCameraPos";
131
- static _worldSpaceCameraPos = new Vector3();
132
- static _mainLightColor = new Vector4();
133
- static _mainLightPosition = new Vector3();
134
- static _lightData = new Vector4();
135
- _rendererData = new ObjectRendererData();
136
- get depthTextureUniform() {
137
- if (!this.uniforms)
138
- return undefined;
139
- return this.uniforms["_CameraDepthTexture"];
140
- }
141
- get opaqueTextureUniform() {
142
- if (!this.uniforms)
143
- return undefined;
144
- return this.uniforms["_CameraOpaqueTexture"];
145
- }
146
- onBeforeRenderScene() {
147
- if (this.opaqueTextureUniform) {
148
- Context.Current.setRequireColor(true);
149
- }
150
- if (this.depthTextureUniform) {
151
- Context.Current.setRequireDepth(true);
152
- }
153
- }
154
- onBeforeRender(_renderer, _scene, camera, _geometry, obj, _group) {
155
- if (!_geometry.attributes["tangent"])
156
- _geometry.computeTangents();
157
- this.onUpdateUniforms(camera, obj);
158
- }
159
- onUpdateUniforms(camera, obj) {
160
- const context = Context.Current;
161
- // TODO cache by camera
162
- // if (context.time.frame != this._lastFrame)
163
- {
164
- if (camera) {
165
- if (CustomShader.viewProjection && this.uniforms[this._viewProjectionName]) {
166
- CustomShader.viewProjection.copy(camera.projectionMatrix).multiply(camera.matrixWorldInverse);
167
- ToUnityMatrixArray(CustomShader.viewProjection, CustomShader._viewProjectionValues);
168
- }
169
- if (CustomShader.viewMatrix && this.uniforms[this._viewMatrixName]) {
170
- CustomShader.viewMatrix.copy(camera.matrixWorldInverse);
171
- ToUnityMatrixArray(CustomShader.viewMatrix, CustomShader._viewMatrixValues);
172
- }
173
- if (this.uniforms[CustomShader._worldSpaceCameraPosName]) {
174
- CustomShader._worldSpaceCameraPos.setFromMatrixPosition(camera.matrixWorld);
175
- }
176
- }
177
- }
178
- // this._lastFrame = context.time.frame;
179
- if (this.uniforms["_TimeParameters"]) {
180
- this.uniforms["_TimeParameters"].value = context.sceneLighting.timeVec4;
181
- }
182
- if (this.uniforms["_Time"]) {
183
- const _time = this.uniforms["_Time"].value;
184
- _time.x = context.sceneLighting.timeVec4.x / 20;
185
- _time.y = context.sceneLighting.timeVec4.x;
186
- _time.z = context.sceneLighting.timeVec4.x * 2;
187
- _time.w = context.sceneLighting.timeVec4.x * 3;
188
- }
189
- if (this.uniforms["_SinTime"]) {
190
- const _time = this.uniforms["_SinTime"].value;
191
- _time.x = Math.sin(context.sceneLighting.timeVec4.x / 8);
192
- _time.y = Math.sin(context.sceneLighting.timeVec4.x / 4);
193
- _time.z = Math.sin(context.sceneLighting.timeVec4.x / 2);
194
- _time.w = Math.sin(context.sceneLighting.timeVec4.x);
195
- }
196
- if (this.uniforms["_CosTime"]) {
197
- const _time = this.uniforms["_CosTime"].value;
198
- _time.x = Math.cos(context.sceneLighting.timeVec4.x / 8);
199
- _time.y = Math.cos(context.sceneLighting.timeVec4.x / 4);
200
- _time.z = Math.cos(context.sceneLighting.timeVec4.x / 2);
201
- _time.w = Math.cos(context.sceneLighting.timeVec4.x);
202
- }
203
- if (this.uniforms["unity_DeltaTime"]) {
204
- const _time = this.uniforms["unity_DeltaTime"].value;
205
- _time.x = context.time.deltaTime;
206
- _time.y = 1 / context.time.deltaTime;
207
- _time.z = context.time.smoothedDeltaTime;
208
- _time.w = 1 / context.time.smoothedDeltaTime;
209
- }
210
- const mainLight = context.mainLight;
211
- if (mainLight) {
212
- const lp = getWorldPosition(mainLight.gameObject, CustomShader._mainLightPosition);
213
- this.uniforms["_MainLightPosition"] = { value: lp.normalize() };
214
- CustomShader._mainLightColor.set(mainLight.color.r, mainLight.color.g, mainLight.color.b, 0);
215
- this.uniforms["_MainLightColor"] = { value: CustomShader._mainLightColor };
216
- const intensity = mainLight.intensity; // * (Math.PI * .5);
217
- CustomShader._lightData.z = intensity;
218
- this.uniforms["unity_LightData"] = { value: CustomShader._lightData };
219
- }
220
- if (camera) {
221
- if (CustomShader.viewProjection && this.uniforms[this._viewProjectionName]) {
222
- this.uniforms[this._viewProjectionName].value = CustomShader._viewProjectionValues;
223
- }
224
- if (CustomShader.viewMatrix && this.uniforms[this._viewMatrixName]) {
225
- this.uniforms[this._viewMatrixName].value = CustomShader._viewMatrixValues;
226
- }
227
- if (this.uniforms[CustomShader._worldSpaceCameraPosName]) {
228
- this.uniforms[CustomShader._worldSpaceCameraPosName] = { value: CustomShader._worldSpaceCameraPos };
229
- }
230
- if (context.mainCameraComponent) {
231
- if (this.uniforms["_ProjectionParams"]) {
232
- const params = this.uniforms["_ProjectionParams"].value;
233
- params.x = 1;
234
- params.y = context.mainCameraComponent.nearClipPlane;
235
- params.z = context.mainCameraComponent.farClipPlane;
236
- params.w = 1 / params.z;
237
- this.uniforms["_ProjectionParams"].value = params;
238
- }
239
- if (this.uniforms["_ZBufferParams"]) {
240
- const params = this.uniforms["_ZBufferParams"].value;
241
- const cam = context.mainCameraComponent;
242
- params.x = 1 - cam.farClipPlane / cam.nearClipPlane;
243
- params.y = cam.farClipPlane / cam.nearClipPlane;
244
- params.z = params.x / cam.farClipPlane;
245
- params.w = params.y / cam.farClipPlane;
246
- this.uniforms["_ZBufferParams"].value = params;
247
- }
248
- if (this.uniforms["_ScreenParams"]) {
249
- const params = this.uniforms["_ScreenParams"].value;
250
- params.x = context.domWidth;
251
- params.y = context.domHeight;
252
- params.z = 1.0 + 1.0 / params.x;
253
- params.w = 1.0 + 1.0 / params.y;
254
- this.uniforms["_ScreenParams"].value = params;
255
- }
256
- }
257
- }
258
- const depthTexture = this.depthTextureUniform;
259
- if (depthTexture) {
260
- depthTexture.value = context.depthTexture;
261
- }
262
- const colorTexture = this.opaqueTextureUniform;
263
- if (colorTexture) {
264
- colorTexture.value = context.opaqueColorTexture;
265
- }
266
- if (obj) {
267
- const objData = this._rendererData;
268
- objData.updateFrom(obj);
269
- this.uniforms[this._worldToObjectName].value = objData.worldToObject;
270
- this.uniforms[this._objToWorldName].value = objData.objectToWorld;
271
- }
272
- this.uniformsNeedUpdate = true;
273
- }
274
- }
275
- export class NEEDLE_techniques_webgl {
276
- get name() {
277
- return NEEDLE_TECHNIQUES_WEBGL_NAME;
278
- }
279
- parser;
280
- identifier;
281
- constructor(loader, identifier) {
282
- this.parser = loader;
283
- this.identifier = identifier;
284
- }
285
- loadMaterial(index) {
286
- const mat = this.parser.json.materials[index];
287
- if (!mat) {
288
- if (debug)
289
- console.log(index, this.parser.json.materials);
290
- return null;
291
- }
292
- if (!mat.extensions || !mat.extensions[NEEDLE_TECHNIQUES_WEBGL_NAME]) {
293
- if (debug)
294
- console.log("material " + index + " does not use NEEDLE_techniques_webgl");
295
- return null;
296
- }
297
- const techniqueIndex = mat.extensions[NEEDLE_TECHNIQUES_WEBGL_NAME].technique;
298
- if (techniqueIndex < 0)
299
- return null;
300
- const shaders = this.parser.json.extensions[NEEDLE_TECHNIQUES_WEBGL_NAME];
301
- if (!shaders)
302
- return null;
303
- if (debug)
304
- console.log(shaders);
305
- const technique = shaders.techniques[techniqueIndex];
306
- if (!technique)
307
- return null;
308
- return new Promise(async (resolve, reject) => {
309
- const bundle = await FindShaderTechniques(shaders, technique.program);
310
- const frag = bundle?.fragmentShader;
311
- const vert = bundle?.vertexShader;
312
- // console.log(techniqueIndex, shaders.techniques);
313
- if (!frag || !vert)
314
- return reject();
315
- if (debug)
316
- console.log("loadMaterial", mat, bundle);
317
- const uniforms = {};
318
- const techniqueUniforms = technique.uniforms;
319
- // BiRP time uniforms
320
- if (vert.includes("_Time") || frag.includes("_Time"))
321
- uniforms["_Time"] = { value: new Vector4(0, 0, 0, 0) };
322
- if (vert.includes("_SinTime") || frag.includes("_SinTime"))
323
- uniforms["_SinTime"] = { value: new Vector4(0, 0, 0, 0) };
324
- if (vert.includes("_CosTime") || frag.includes("_CosTime"))
325
- uniforms["_CosTime"] = { value: new Vector4(0, 0, 0, 0) };
326
- if (vert.includes("unity_DeltaTime") || frag.includes("unity_DeltaTime"))
327
- uniforms["unity_DeltaTime"] = { value: new Vector4(0, 0, 0, 0) };
328
- for (const u in techniqueUniforms) {
329
- const uniformName = u;
330
- // const uniformValues = techniqueUniforms[u];
331
- // const typeName = UniformType[uniformValues.type];
332
- switch (uniformName) {
333
- case "_TimeParameters":
334
- const timeUniform = new Vector4();
335
- uniforms[uniformName] = { value: timeUniform };
336
- break;
337
- case "hlslcc_mtx4x4unity_MatrixV":
338
- case "hlslcc_mtx4x4unity_MatrixVP":
339
- uniforms[uniformName] = { value: [] };
340
- break;
341
- case "_MainLightPosition":
342
- case "_MainLightColor":
343
- case "_WorldSpaceCameraPos":
344
- uniforms[uniformName] = { value: [0, 0, 0, 1] };
345
- break;
346
- case "unity_OrthoParams":
347
- break;
348
- case "unity_SpecCube0":
349
- uniforms[uniformName] = { value: null };
350
- break;
351
- default:
352
- case "_ScreenParams":
353
- case "_ZBufferParams":
354
- case "_ProjectionParams":
355
- uniforms[uniformName] = { value: [0, 0, 0, 0] };
356
- break;
357
- case "_CameraOpaqueTexture":
358
- case "_CameraDepthTexture":
359
- uniforms[uniformName] = { value: null };
360
- break;
361
- // switch (uniformValues.type) {
362
- // case UniformType.INT:
363
- // break;
364
- // case UniformType.FLOAT:
365
- // break;
366
- // case UniformType.FLOAT_VEC3:
367
- // console.log("VEC", uniformName);
368
- // break;
369
- // case UniformType.FLOAT_VEC4:
370
- // console.log("VEC", uniformName);
371
- // break;
372
- // case UniformType.SAMPLER_CUBE:
373
- // console.log("cube", uniformName);
374
- // break;
375
- // default:
376
- // console.log(typeName);
377
- // break;
378
- // }
379
- break;
380
- }
381
- }
382
- let isTransparent = false;
383
- if (mat.extensions && mat.extensions[NEEDLE_TECHNIQUES_WEBGL_NAME]) {
384
- const materialExtension = mat.extensions[NEEDLE_TECHNIQUES_WEBGL_NAME];
385
- if (materialExtension.technique === techniqueIndex) {
386
- if (debug)
387
- console.log(mat.name, "Material Properties", materialExtension);
388
- for (const key in materialExtension.values) {
389
- const val = materialExtension.values[key];
390
- if (typeof val === "string") {
391
- if (val.startsWith("/textures/")) {
392
- const indexString = val.substring("/textures/".length);
393
- const texIndex = Number.parseInt(indexString);
394
- if (texIndex >= 0) {
395
- let tex = await this.parser.getDependency("texture", texIndex);
396
- if (tex instanceof Texture) {
397
- tex = tex.clone();
398
- tex.colorSpace = LinearSRGBColorSpace;
399
- tex.needsUpdate = true;
400
- }
401
- uniforms[key] = { value: tex };
402
- continue;
403
- }
404
- }
405
- switch (key) {
406
- case "alphaMode":
407
- if (val === "BLEND")
408
- isTransparent = true;
409
- continue;
410
- }
411
- }
412
- if (Array.isArray(val) && val.length === 4) {
413
- uniforms[key] = { value: new Vector4(val[0], val[1], val[2], val[3]) };
414
- continue;
415
- }
416
- uniforms[key] = { value: val };
417
- }
418
- }
419
- }
420
- const material = new CustomShader(this.identifier, {
421
- name: mat.name ?? "",
422
- uniforms: uniforms,
423
- vertexShader: vert,
424
- fragmentShader: frag,
425
- lights: false,
426
- // defines: {
427
- // "USE_SHADOWMAP" : true
428
- // },
429
- });
430
- material.glslVersion = GLSL3;
431
- material.vertexShader = material.vertexShader.replace("#version 300 es", "");
432
- material.fragmentShader = material.fragmentShader.replace("#version 300 es", "");
433
- const culling = uniforms["_Cull"]?.value;
434
- switch (culling) {
435
- case CullMode.Off:
436
- material.side = DoubleSide;
437
- break;
438
- case CullMode.Front:
439
- material.side = BackSide;
440
- break;
441
- case CullMode.Back:
442
- material.side = FrontSide;
443
- break;
444
- default:
445
- material.side = FrontSide;
446
- break;
447
- }
448
- const zTest = uniforms["_ZTest"]?.value;
449
- switch (zTest) {
450
- case ZTestMode.Equal:
451
- material.depthTest = true;
452
- material.depthFunc = EqualDepth;
453
- break;
454
- case ZTestMode.NotEqual:
455
- material.depthTest = true;
456
- material.depthFunc = NotEqualDepth;
457
- break;
458
- case ZTestMode.Less:
459
- material.depthTest = true;
460
- material.depthFunc = LessDepth;
461
- break;
462
- case ZTestMode.LEqual:
463
- material.depthTest = true;
464
- material.depthFunc = LessEqualDepth;
465
- break;
466
- case ZTestMode.Greater:
467
- material.depthTest = true;
468
- material.depthFunc = GreaterDepth;
469
- break;
470
- case ZTestMode.GEqual:
471
- material.depthTest = true;
472
- material.depthFunc = GreaterEqualDepth;
473
- break;
474
- case ZTestMode.Always:
475
- material.depthTest = false;
476
- material.depthFunc = AlwaysDepth;
477
- break;
478
- }
479
- material.transparent = isTransparent;
480
- if (isTransparent)
481
- material.depthWrite = false;
482
- // set spherical harmonics once
483
- SetUnitySphericalHarmonics(uniforms);
484
- // update once to test if everything is assigned
485
- material.onUpdateUniforms();
486
- for (const u in techniqueUniforms) {
487
- const uniformName = u;
488
- const type = techniqueUniforms[u].type;
489
- if (uniforms[uniformName]?.value === undefined) {
490
- switch (type) {
491
- case SHADERDATA.UniformType.SAMPLER_2D:
492
- uniforms[uniformName] = { value: whiteDefaultTexture };
493
- console.warn("Missing/unassigned texture, fallback to white: " + uniformName);
494
- break;
495
- default:
496
- if (uniformName === "unity_OrthoParams") {
497
- }
498
- else
499
- console.warn("TODO: EXPECTED UNIFORM / fallback NOT SET: " + uniformName, techniqueUniforms[u]);
500
- break;
501
- }
502
- }
503
- }
504
- if (debug)
505
- console.log(material.uuid, uniforms);
506
- createUniformProperties(material);
507
- resolve(material);
508
- });
509
- }
510
- }
511
- // when animating custom material properties (uniforms) the path resolver tries to access them via material._MyProperty.
512
- // That doesnt exist by default for custom properties
513
- // We could re-write the path in the khr path resolver but that would require it to know beforehand
514
- // if the material uses as custom shader or not
515
- // this way all properties of custom shaders are also accessible via material._MyProperty
516
- function createUniformProperties(material) {
517
- if (material.uniforms) {
518
- if (debug)
519
- console.log("Uniforms:", material.uniforms);
520
- for (const key in material.uniforms) {
521
- defineProperty(key, key);
522
- // see NE-3396
523
- switch (key) {
524
- case "_Color":
525
- defineProperty("color", key);
526
- break;
527
- // case "_Metallic":
528
- // defineProperty("metalness", key);
529
- // break;
530
- }
531
- }
532
- }
533
- function defineProperty(key, uniformsKey) {
534
- if (!Object.getOwnPropertyDescriptor(material, key)) {
535
- Object.defineProperty(material, key, {
536
- get: () => material.uniforms[uniformsKey].value,
537
- set: (value) => {
538
- material.uniforms[uniformsKey].value = value;
539
- material.needsUpdate = true;
540
- }
541
- });
542
- }
543
- }
544
- }
1
+ import { FindShaderTechniques, whiteDefaultTexture, ToUnityMatrixArray, SetUnitySphericalHarmonics } from '../engine_shaders.js';
2
+ import { AlwaysDepth, BackSide, DoubleSide, EqualDepth, FrontSide, GLSL3, GreaterDepth, GreaterEqualDepth, LessDepth, LessEqualDepth, LinearSRGBColorSpace, Matrix4, NotEqualDepth, RawShaderMaterial, Texture, Vector3, Vector4 } from 'three';
3
+ import { Context } from '../engine_setup.js';
4
+ import { getParam } from "../engine_utils.js";
5
+ import * as SHADERDATA from "../shaders/shaderData.js";
6
+ import { getWorldPosition } from "../engine_three_utils.js";
7
+ const debug = getParam("debugcustomshader");
8
+ export const NEEDLE_TECHNIQUES_WEBGL_NAME = "NEEDLE_techniques_webgl";
9
+ //@ts-ignore
10
+ var UniformType;
11
+ (function (UniformType) {
12
+ UniformType[UniformType["INT"] = 5124] = "INT";
13
+ UniformType[UniformType["FLOAT"] = 5126] = "FLOAT";
14
+ UniformType[UniformType["FLOAT_VEC2"] = 35664] = "FLOAT_VEC2";
15
+ UniformType[UniformType["FLOAT_VEC3"] = 35665] = "FLOAT_VEC3";
16
+ UniformType[UniformType["FLOAT_VEC4"] = 35666] = "FLOAT_VEC4";
17
+ UniformType[UniformType["INT_VEC2"] = 35667] = "INT_VEC2";
18
+ UniformType[UniformType["INT_VEC3"] = 35668] = "INT_VEC3";
19
+ UniformType[UniformType["INT_VEC4"] = 35669] = "INT_VEC4";
20
+ UniformType[UniformType["BOOL"] = 35670] = "BOOL";
21
+ UniformType[UniformType["BOOL_VEC2"] = 35671] = "BOOL_VEC2";
22
+ UniformType[UniformType["BOOL_VEC3"] = 35672] = "BOOL_VEC3";
23
+ UniformType[UniformType["BOOL_VEC4"] = 35673] = "BOOL_VEC4";
24
+ UniformType[UniformType["FLOAT_MAT2"] = 35674] = "FLOAT_MAT2";
25
+ UniformType[UniformType["FLOAT_MAT3"] = 35675] = "FLOAT_MAT3";
26
+ UniformType[UniformType["FLOAT_MAT4"] = 35676] = "FLOAT_MAT4";
27
+ UniformType[UniformType["SAMPLER_2D"] = 35678] = "SAMPLER_2D";
28
+ UniformType[UniformType["SAMPLER_3D"] = 35680] = "SAMPLER_3D";
29
+ UniformType[UniformType["SAMPLER_CUBE"] = 35681] = "SAMPLER_CUBE";
30
+ UniformType[UniformType["UNKNOWN"] = 0] = "UNKNOWN";
31
+ })(UniformType || (UniformType = {}));
32
+ class ObjectRendererData {
33
+ objectToWorldMatrix = new Matrix4();
34
+ worldToObjectMatrix = new Matrix4();
35
+ objectToWorld = new Array();
36
+ worldToObject = new Array();
37
+ updateFrom(obj) {
38
+ this.objectToWorldMatrix.copy(obj.matrixWorld);
39
+ ToUnityMatrixArray(this.objectToWorldMatrix, this.objectToWorld);
40
+ this.worldToObjectMatrix.copy(obj.matrixWorld).invert();
41
+ ToUnityMatrixArray(this.worldToObjectMatrix, this.worldToObject);
42
+ }
43
+ }
44
+ var CullMode;
45
+ (function (CullMode) {
46
+ CullMode[CullMode["Off"] = 0] = "Off";
47
+ CullMode[CullMode["Front"] = 1] = "Front";
48
+ CullMode[CullMode["Back"] = 2] = "Back";
49
+ })(CullMode || (CullMode = {}));
50
+ var ZTestMode;
51
+ (function (ZTestMode) {
52
+ ZTestMode[ZTestMode["Never"] = 1] = "Never";
53
+ ZTestMode[ZTestMode["Less"] = 2] = "Less";
54
+ ZTestMode[ZTestMode["Equal"] = 3] = "Equal";
55
+ ZTestMode[ZTestMode["LEqual"] = 4] = "LEqual";
56
+ ZTestMode[ZTestMode["Greater"] = 5] = "Greater";
57
+ ZTestMode[ZTestMode["NotEqual"] = 6] = "NotEqual";
58
+ ZTestMode[ZTestMode["GEqual"] = 7] = "GEqual";
59
+ ZTestMode[ZTestMode["Always"] = 8] = "Always";
60
+ })(ZTestMode || (ZTestMode = {}));
61
+ export class CustomShader extends RawShaderMaterial {
62
+ identifier;
63
+ onBeforeRenderSceneCallback = this.onBeforeRenderScene.bind(this);
64
+ clone() {
65
+ const clone = super.clone();
66
+ createUniformProperties(clone);
67
+ return clone;
68
+ }
69
+ constructor(identifier, ...args) {
70
+ super(...args);
71
+ this.identifier = identifier;
72
+ // this["normalMap"] = true;
73
+ // this.needsUpdate = true;
74
+ if (debug)
75
+ console.log(this);
76
+ this.type = "NEEDLE_CUSTOM_SHADER";
77
+ if (!this.uniforms[this._objToWorldName])
78
+ this.uniforms[this._objToWorldName] = { value: [] };
79
+ if (!this.uniforms[this._worldToObjectName])
80
+ this.uniforms[this._worldToObjectName] = { value: [] };
81
+ if (!this.uniforms[this._viewProjectionName])
82
+ this.uniforms[this._viewProjectionName] = { value: [] };
83
+ if (this.uniforms[this._sphericalHarmonicsName]) {
84
+ this.waitForLighting();
85
+ }
86
+ if (this.depthTextureUniform || this.opaqueTextureUniform) {
87
+ Context.Current.pre_render_callbacks.push(this.onBeforeRenderSceneCallback);
88
+ }
89
+ }
90
+ dispose() {
91
+ super.dispose();
92
+ const index = Context.Current.pre_render_callbacks.indexOf(this.onBeforeRenderSceneCallback);
93
+ if (index >= 0)
94
+ Context.Current.pre_render_callbacks.splice(index, 1);
95
+ }
96
+ async waitForLighting() {
97
+ const context = Context.Current;
98
+ if (!context) {
99
+ console.error("Missing context");
100
+ return;
101
+ }
102
+ const data = await context.sceneLighting.internalGetSceneLightingData(this.identifier);
103
+ if (!data || !data.array) {
104
+ console.warn("Missing lighting data for custom shader, getSceneLightingData did not return anything");
105
+ return;
106
+ }
107
+ if (debug)
108
+ console.log(data);
109
+ const array = data.array;
110
+ const envTexture = data.texture;
111
+ // console.log(envTexture);
112
+ this.uniforms["unity_SpecCube0"] = { value: envTexture };
113
+ SetUnitySphericalHarmonics(this.uniforms, array);
114
+ const hdr = Math.sqrt(Math.PI * .5);
115
+ this.uniforms["unity_SpecCube0_HDR"] = { value: new Vector4(hdr, hdr, hdr, hdr) };
116
+ // this.needsUpdate = true;
117
+ // this.uniformsNeedUpdate = true;
118
+ if (debug)
119
+ console.log("Set environment lighting", this.uniforms);
120
+ }
121
+ _sphericalHarmonicsName = "unity_SpecCube0";
122
+ _objToWorldName = "hlslcc_mtx4x4unity_ObjectToWorld";
123
+ _worldToObjectName = "hlslcc_mtx4x4unity_WorldToObject";
124
+ static viewProjection = new Matrix4();
125
+ static _viewProjectionValues = [];
126
+ _viewProjectionName = "hlslcc_mtx4x4unity_MatrixVP";
127
+ static viewMatrix = new Matrix4();
128
+ static _viewMatrixValues = [];
129
+ _viewMatrixName = "hlslcc_mtx4x4unity_MatrixV";
130
+ static _worldSpaceCameraPosName = "_WorldSpaceCameraPos";
131
+ static _worldSpaceCameraPos = new Vector3();
132
+ static _mainLightColor = new Vector4();
133
+ static _mainLightPosition = new Vector3();
134
+ static _lightData = new Vector4();
135
+ _rendererData = new ObjectRendererData();
136
+ get depthTextureUniform() {
137
+ if (!this.uniforms)
138
+ return undefined;
139
+ return this.uniforms["_CameraDepthTexture"];
140
+ }
141
+ get opaqueTextureUniform() {
142
+ if (!this.uniforms)
143
+ return undefined;
144
+ return this.uniforms["_CameraOpaqueTexture"];
145
+ }
146
+ onBeforeRenderScene() {
147
+ if (this.opaqueTextureUniform) {
148
+ Context.Current.setRequireColor(true);
149
+ }
150
+ if (this.depthTextureUniform) {
151
+ Context.Current.setRequireDepth(true);
152
+ }
153
+ }
154
+ onBeforeRender(_renderer, _scene, camera, _geometry, obj, _group) {
155
+ if (!_geometry.attributes["tangent"])
156
+ _geometry.computeTangents();
157
+ this.onUpdateUniforms(camera, obj);
158
+ }
159
+ onUpdateUniforms(camera, obj) {
160
+ const context = Context.Current;
161
+ // TODO cache by camera
162
+ // if (context.time.frame != this._lastFrame)
163
+ {
164
+ if (camera) {
165
+ if (CustomShader.viewProjection && this.uniforms[this._viewProjectionName]) {
166
+ CustomShader.viewProjection.copy(camera.projectionMatrix).multiply(camera.matrixWorldInverse);
167
+ ToUnityMatrixArray(CustomShader.viewProjection, CustomShader._viewProjectionValues);
168
+ }
169
+ if (CustomShader.viewMatrix && this.uniforms[this._viewMatrixName]) {
170
+ CustomShader.viewMatrix.copy(camera.matrixWorldInverse);
171
+ ToUnityMatrixArray(CustomShader.viewMatrix, CustomShader._viewMatrixValues);
172
+ }
173
+ if (this.uniforms[CustomShader._worldSpaceCameraPosName]) {
174
+ CustomShader._worldSpaceCameraPos.setFromMatrixPosition(camera.matrixWorld);
175
+ }
176
+ }
177
+ }
178
+ // this._lastFrame = context.time.frame;
179
+ if (this.uniforms["_TimeParameters"]) {
180
+ this.uniforms["_TimeParameters"].value = context.sceneLighting.timeVec4;
181
+ }
182
+ if (this.uniforms["_Time"]) {
183
+ const _time = this.uniforms["_Time"].value;
184
+ _time.x = context.sceneLighting.timeVec4.x / 20;
185
+ _time.y = context.sceneLighting.timeVec4.x;
186
+ _time.z = context.sceneLighting.timeVec4.x * 2;
187
+ _time.w = context.sceneLighting.timeVec4.x * 3;
188
+ }
189
+ if (this.uniforms["_SinTime"]) {
190
+ const _time = this.uniforms["_SinTime"].value;
191
+ _time.x = Math.sin(context.sceneLighting.timeVec4.x / 8);
192
+ _time.y = Math.sin(context.sceneLighting.timeVec4.x / 4);
193
+ _time.z = Math.sin(context.sceneLighting.timeVec4.x / 2);
194
+ _time.w = Math.sin(context.sceneLighting.timeVec4.x);
195
+ }
196
+ if (this.uniforms["_CosTime"]) {
197
+ const _time = this.uniforms["_CosTime"].value;
198
+ _time.x = Math.cos(context.sceneLighting.timeVec4.x / 8);
199
+ _time.y = Math.cos(context.sceneLighting.timeVec4.x / 4);
200
+ _time.z = Math.cos(context.sceneLighting.timeVec4.x / 2);
201
+ _time.w = Math.cos(context.sceneLighting.timeVec4.x);
202
+ }
203
+ if (this.uniforms["unity_DeltaTime"]) {
204
+ const _time = this.uniforms["unity_DeltaTime"].value;
205
+ _time.x = context.time.deltaTime;
206
+ _time.y = 1 / context.time.deltaTime;
207
+ _time.z = context.time.smoothedDeltaTime;
208
+ _time.w = 1 / context.time.smoothedDeltaTime;
209
+ }
210
+ const mainLight = context.mainLight;
211
+ if (mainLight) {
212
+ const lp = getWorldPosition(mainLight.gameObject, CustomShader._mainLightPosition);
213
+ this.uniforms["_MainLightPosition"] = { value: lp.normalize() };
214
+ CustomShader._mainLightColor.set(mainLight.color.r, mainLight.color.g, mainLight.color.b, 0);
215
+ this.uniforms["_MainLightColor"] = { value: CustomShader._mainLightColor };
216
+ const intensity = mainLight.intensity; // * (Math.PI * .5);
217
+ CustomShader._lightData.z = intensity;
218
+ this.uniforms["unity_LightData"] = { value: CustomShader._lightData };
219
+ }
220
+ if (camera) {
221
+ if (CustomShader.viewProjection && this.uniforms[this._viewProjectionName]) {
222
+ this.uniforms[this._viewProjectionName].value = CustomShader._viewProjectionValues;
223
+ }
224
+ if (CustomShader.viewMatrix && this.uniforms[this._viewMatrixName]) {
225
+ this.uniforms[this._viewMatrixName].value = CustomShader._viewMatrixValues;
226
+ }
227
+ if (this.uniforms[CustomShader._worldSpaceCameraPosName]) {
228
+ this.uniforms[CustomShader._worldSpaceCameraPosName] = { value: CustomShader._worldSpaceCameraPos };
229
+ }
230
+ if (context.mainCameraComponent) {
231
+ if (this.uniforms["_ProjectionParams"]) {
232
+ const params = this.uniforms["_ProjectionParams"].value;
233
+ params.x = 1;
234
+ params.y = context.mainCameraComponent.nearClipPlane;
235
+ params.z = context.mainCameraComponent.farClipPlane;
236
+ params.w = 1 / params.z;
237
+ this.uniforms["_ProjectionParams"].value = params;
238
+ }
239
+ if (this.uniforms["_ZBufferParams"]) {
240
+ const params = this.uniforms["_ZBufferParams"].value;
241
+ const cam = context.mainCameraComponent;
242
+ params.x = 1 - cam.farClipPlane / cam.nearClipPlane;
243
+ params.y = cam.farClipPlane / cam.nearClipPlane;
244
+ params.z = params.x / cam.farClipPlane;
245
+ params.w = params.y / cam.farClipPlane;
246
+ this.uniforms["_ZBufferParams"].value = params;
247
+ }
248
+ if (this.uniforms["_ScreenParams"]) {
249
+ const params = this.uniforms["_ScreenParams"].value;
250
+ params.x = context.domWidth;
251
+ params.y = context.domHeight;
252
+ params.z = 1.0 + 1.0 / params.x;
253
+ params.w = 1.0 + 1.0 / params.y;
254
+ this.uniforms["_ScreenParams"].value = params;
255
+ }
256
+ }
257
+ }
258
+ const depthTexture = this.depthTextureUniform;
259
+ if (depthTexture) {
260
+ depthTexture.value = context.depthTexture;
261
+ }
262
+ const colorTexture = this.opaqueTextureUniform;
263
+ if (colorTexture) {
264
+ colorTexture.value = context.opaqueColorTexture;
265
+ }
266
+ if (obj) {
267
+ const objData = this._rendererData;
268
+ objData.updateFrom(obj);
269
+ this.uniforms[this._worldToObjectName].value = objData.worldToObject;
270
+ this.uniforms[this._objToWorldName].value = objData.objectToWorld;
271
+ }
272
+ this.uniformsNeedUpdate = true;
273
+ }
274
+ }
275
+ export class NEEDLE_techniques_webgl {
276
+ get name() {
277
+ return NEEDLE_TECHNIQUES_WEBGL_NAME;
278
+ }
279
+ parser;
280
+ identifier;
281
+ constructor(loader, identifier) {
282
+ this.parser = loader;
283
+ this.identifier = identifier;
284
+ }
285
+ loadMaterial(index) {
286
+ const mat = this.parser.json.materials[index];
287
+ if (!mat) {
288
+ if (debug)
289
+ console.log(index, this.parser.json.materials);
290
+ return null;
291
+ }
292
+ if (!mat.extensions || !mat.extensions[NEEDLE_TECHNIQUES_WEBGL_NAME]) {
293
+ if (debug)
294
+ console.log("material " + index + " does not use NEEDLE_techniques_webgl");
295
+ return null;
296
+ }
297
+ const techniqueIndex = mat.extensions[NEEDLE_TECHNIQUES_WEBGL_NAME].technique;
298
+ if (techniqueIndex < 0)
299
+ return null;
300
+ const shaders = this.parser.json.extensions[NEEDLE_TECHNIQUES_WEBGL_NAME];
301
+ if (!shaders)
302
+ return null;
303
+ if (debug)
304
+ console.log(shaders);
305
+ const technique = shaders.techniques[techniqueIndex];
306
+ if (!technique)
307
+ return null;
308
+ return new Promise(async (resolve, reject) => {
309
+ const bundle = await FindShaderTechniques(shaders, technique.program);
310
+ const frag = bundle?.fragmentShader;
311
+ const vert = bundle?.vertexShader;
312
+ // console.log(techniqueIndex, shaders.techniques);
313
+ if (!frag || !vert)
314
+ return reject();
315
+ if (debug)
316
+ console.log("loadMaterial", mat, bundle);
317
+ const uniforms = {};
318
+ const techniqueUniforms = technique.uniforms;
319
+ // BiRP time uniforms
320
+ if (vert.includes("_Time") || frag.includes("_Time"))
321
+ uniforms["_Time"] = { value: new Vector4(0, 0, 0, 0) };
322
+ if (vert.includes("_SinTime") || frag.includes("_SinTime"))
323
+ uniforms["_SinTime"] = { value: new Vector4(0, 0, 0, 0) };
324
+ if (vert.includes("_CosTime") || frag.includes("_CosTime"))
325
+ uniforms["_CosTime"] = { value: new Vector4(0, 0, 0, 0) };
326
+ if (vert.includes("unity_DeltaTime") || frag.includes("unity_DeltaTime"))
327
+ uniforms["unity_DeltaTime"] = { value: new Vector4(0, 0, 0, 0) };
328
+ for (const u in techniqueUniforms) {
329
+ const uniformName = u;
330
+ // const uniformValues = techniqueUniforms[u];
331
+ // const typeName = UniformType[uniformValues.type];
332
+ switch (uniformName) {
333
+ case "_TimeParameters":
334
+ const timeUniform = new Vector4();
335
+ uniforms[uniformName] = { value: timeUniform };
336
+ break;
337
+ case "hlslcc_mtx4x4unity_MatrixV":
338
+ case "hlslcc_mtx4x4unity_MatrixVP":
339
+ uniforms[uniformName] = { value: [] };
340
+ break;
341
+ case "_MainLightPosition":
342
+ case "_MainLightColor":
343
+ case "_WorldSpaceCameraPos":
344
+ uniforms[uniformName] = { value: [0, 0, 0, 1] };
345
+ break;
346
+ case "unity_OrthoParams":
347
+ break;
348
+ case "unity_SpecCube0":
349
+ uniforms[uniformName] = { value: null };
350
+ break;
351
+ default:
352
+ case "_ScreenParams":
353
+ case "_ZBufferParams":
354
+ case "_ProjectionParams":
355
+ uniforms[uniformName] = { value: [0, 0, 0, 0] };
356
+ break;
357
+ case "_CameraOpaqueTexture":
358
+ case "_CameraDepthTexture":
359
+ uniforms[uniformName] = { value: null };
360
+ break;
361
+ // switch (uniformValues.type) {
362
+ // case UniformType.INT:
363
+ // break;
364
+ // case UniformType.FLOAT:
365
+ // break;
366
+ // case UniformType.FLOAT_VEC3:
367
+ // console.log("VEC", uniformName);
368
+ // break;
369
+ // case UniformType.FLOAT_VEC4:
370
+ // console.log("VEC", uniformName);
371
+ // break;
372
+ // case UniformType.SAMPLER_CUBE:
373
+ // console.log("cube", uniformName);
374
+ // break;
375
+ // default:
376
+ // console.log(typeName);
377
+ // break;
378
+ // }
379
+ break;
380
+ }
381
+ }
382
+ let isTransparent = false;
383
+ if (mat.extensions && mat.extensions[NEEDLE_TECHNIQUES_WEBGL_NAME]) {
384
+ const materialExtension = mat.extensions[NEEDLE_TECHNIQUES_WEBGL_NAME];
385
+ if (materialExtension.technique === techniqueIndex) {
386
+ if (debug)
387
+ console.log(mat.name, "Material Properties", materialExtension);
388
+ for (const key in materialExtension.values) {
389
+ const val = materialExtension.values[key];
390
+ if (typeof val === "string") {
391
+ if (val.startsWith("/textures/")) {
392
+ const indexString = val.substring("/textures/".length);
393
+ const texIndex = Number.parseInt(indexString);
394
+ if (texIndex >= 0) {
395
+ let tex = await this.parser.getDependency("texture", texIndex);
396
+ if (tex instanceof Texture) {
397
+ tex = tex.clone();
398
+ tex.colorSpace = LinearSRGBColorSpace;
399
+ tex.needsUpdate = true;
400
+ }
401
+ uniforms[key] = { value: tex };
402
+ continue;
403
+ }
404
+ }
405
+ switch (key) {
406
+ case "alphaMode":
407
+ if (val === "BLEND")
408
+ isTransparent = true;
409
+ continue;
410
+ }
411
+ }
412
+ if (Array.isArray(val) && val.length === 4) {
413
+ uniforms[key] = { value: new Vector4(val[0], val[1], val[2], val[3]) };
414
+ continue;
415
+ }
416
+ uniforms[key] = { value: val };
417
+ }
418
+ }
419
+ }
420
+ const material = new CustomShader(this.identifier, {
421
+ name: mat.name ?? "",
422
+ uniforms: uniforms,
423
+ vertexShader: vert,
424
+ fragmentShader: frag,
425
+ lights: false,
426
+ // defines: {
427
+ // "USE_SHADOWMAP" : true
428
+ // },
429
+ });
430
+ material.glslVersion = GLSL3;
431
+ material.vertexShader = material.vertexShader.replace("#version 300 es", "");
432
+ material.fragmentShader = material.fragmentShader.replace("#version 300 es", "");
433
+ const culling = uniforms["_Cull"]?.value;
434
+ switch (culling) {
435
+ case CullMode.Off:
436
+ material.side = DoubleSide;
437
+ break;
438
+ case CullMode.Front:
439
+ material.side = BackSide;
440
+ break;
441
+ case CullMode.Back:
442
+ material.side = FrontSide;
443
+ break;
444
+ default:
445
+ material.side = FrontSide;
446
+ break;
447
+ }
448
+ const zTest = uniforms["_ZTest"]?.value;
449
+ switch (zTest) {
450
+ case ZTestMode.Equal:
451
+ material.depthTest = true;
452
+ material.depthFunc = EqualDepth;
453
+ break;
454
+ case ZTestMode.NotEqual:
455
+ material.depthTest = true;
456
+ material.depthFunc = NotEqualDepth;
457
+ break;
458
+ case ZTestMode.Less:
459
+ material.depthTest = true;
460
+ material.depthFunc = LessDepth;
461
+ break;
462
+ case ZTestMode.LEqual:
463
+ material.depthTest = true;
464
+ material.depthFunc = LessEqualDepth;
465
+ break;
466
+ case ZTestMode.Greater:
467
+ material.depthTest = true;
468
+ material.depthFunc = GreaterDepth;
469
+ break;
470
+ case ZTestMode.GEqual:
471
+ material.depthTest = true;
472
+ material.depthFunc = GreaterEqualDepth;
473
+ break;
474
+ case ZTestMode.Always:
475
+ material.depthTest = false;
476
+ material.depthFunc = AlwaysDepth;
477
+ break;
478
+ }
479
+ material.transparent = isTransparent;
480
+ if (isTransparent)
481
+ material.depthWrite = false;
482
+ // set spherical harmonics once
483
+ SetUnitySphericalHarmonics(uniforms);
484
+ // update once to test if everything is assigned
485
+ material.onUpdateUniforms();
486
+ for (const u in techniqueUniforms) {
487
+ const uniformName = u;
488
+ const type = techniqueUniforms[u].type;
489
+ if (uniforms[uniformName]?.value === undefined) {
490
+ switch (type) {
491
+ case SHADERDATA.UniformType.SAMPLER_2D:
492
+ uniforms[uniformName] = { value: whiteDefaultTexture };
493
+ console.warn("Missing/unassigned texture, fallback to white: " + uniformName);
494
+ break;
495
+ default:
496
+ if (uniformName === "unity_OrthoParams") {
497
+ }
498
+ else
499
+ console.warn("TODO: EXPECTED UNIFORM / fallback NOT SET: " + uniformName, techniqueUniforms[u]);
500
+ break;
501
+ }
502
+ }
503
+ }
504
+ if (debug)
505
+ console.log(material.uuid, uniforms);
506
+ createUniformProperties(material);
507
+ resolve(material);
508
+ });
509
+ }
510
+ }
511
+ // when animating custom material properties (uniforms) the path resolver tries to access them via material._MyProperty.
512
+ // That doesnt exist by default for custom properties
513
+ // We could re-write the path in the khr path resolver but that would require it to know beforehand
514
+ // if the material uses as custom shader or not
515
+ // this way all properties of custom shaders are also accessible via material._MyProperty
516
+ function createUniformProperties(material) {
517
+ if (material.uniforms) {
518
+ if (debug)
519
+ console.log("Uniforms:", material.uniforms);
520
+ for (const key in material.uniforms) {
521
+ defineProperty(key, key);
522
+ // see NE-3396
523
+ switch (key) {
524
+ case "_Color":
525
+ defineProperty("color", key);
526
+ break;
527
+ // case "_Metallic":
528
+ // defineProperty("metalness", key);
529
+ // break;
530
+ }
531
+ }
532
+ }
533
+ function defineProperty(key, uniformsKey) {
534
+ if (!Object.getOwnPropertyDescriptor(material, key)) {
535
+ Object.defineProperty(material, key, {
536
+ get: () => material.uniforms[uniformsKey].value,
537
+ set: (value) => {
538
+ material.uniforms[uniformsKey].value = value;
539
+ material.needsUpdate = true;
540
+ }
541
+ });
542
+ }
543
+ }
544
+ }
545
545
  //# sourceMappingURL=NEEDLE_techniques_webgl.js.map