@onerjs/core 8.53.5 → 8.53.6

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 (841) hide show
  1. package/Animations/animationGroup.d.ts +0 -1
  2. package/Animations/animationGroup.js +0 -1
  3. package/Animations/animationGroup.js.map +1 -1
  4. package/Animations/animationGroup.pure.js +2 -0
  5. package/Animations/animationGroup.pure.js.map +1 -1
  6. package/Animations/runtimeAnimation.js +11 -0
  7. package/Animations/runtimeAnimation.js.map +1 -1
  8. package/Audio/audioSceneComponent.pure.js +1 -1
  9. package/AudioV2/abstractAudio/abstractSound.d.ts +2 -1
  10. package/AudioV2/abstractAudio/abstractSound.js +7 -2
  11. package/AudioV2/abstractAudio/abstractSound.js.map +1 -1
  12. package/AudioV2/abstractAudio/abstractSoundInstance.d.ts +3 -1
  13. package/AudioV2/abstractAudio/abstractSoundInstance.js.map +1 -1
  14. package/AudioV2/abstractAudio/staticSound.d.ts +6 -0
  15. package/AudioV2/abstractAudio/staticSound.js +17 -1
  16. package/AudioV2/abstractAudio/staticSound.js.map +1 -1
  17. package/AudioV2/abstractAudio/staticSoundInstance.d.ts +4 -2
  18. package/AudioV2/abstractAudio/staticSoundInstance.js.map +1 -1
  19. package/AudioV2/abstractAudio/streamingSound.d.ts +6 -0
  20. package/AudioV2/abstractAudio/streamingSound.js +9 -1
  21. package/AudioV2/abstractAudio/streamingSound.js.map +1 -1
  22. package/AudioV2/webAudio/webAudioStaticSound.d.ts +7 -1
  23. package/AudioV2/webAudio/webAudioStaticSound.js +56 -8
  24. package/AudioV2/webAudio/webAudioStaticSound.js.map +1 -1
  25. package/AudioV2/webAudio/webAudioStreamingSound.d.ts +3 -1
  26. package/AudioV2/webAudio/webAudioStreamingSound.js +16 -4
  27. package/AudioV2/webAudio/webAudioStreamingSound.js.map +1 -1
  28. package/BakedVertexAnimation/bakedVertexAnimationManager.d.ts +2 -2
  29. package/BakedVertexAnimation/bakedVertexAnimationManager.js +151 -121
  30. package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -1
  31. package/Behaviors/Cameras/interpolatingBehavior.d.ts +17 -2
  32. package/Behaviors/Cameras/interpolatingBehavior.js +53 -23
  33. package/Behaviors/Cameras/interpolatingBehavior.js.map +1 -1
  34. package/Bones/bone.pure.js +3 -3
  35. package/Buffers/buffer.pure.js +0 -12
  36. package/Buffers/buffer.pure.js.map +1 -1
  37. package/Cameras/Inputs/BaseCameraMouseWheelInput.js +141 -126
  38. package/Cameras/Inputs/BaseCameraMouseWheelInput.js.map +1 -1
  39. package/Cameras/Inputs/BaseCameraPointersInput.d.ts +2 -1
  40. package/Cameras/Inputs/BaseCameraPointersInput.js +290 -277
  41. package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
  42. package/Cameras/Inputs/arcRotateCameraGamepadInput.js +115 -102
  43. package/Cameras/Inputs/arcRotateCameraGamepadInput.js.map +1 -1
  44. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.d.ts +3 -0
  45. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js +334 -273
  46. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js.map +1 -1
  47. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js +273 -258
  48. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js.map +1 -1
  49. package/Cameras/Inputs/arcRotateCameraPointersInput.js +237 -213
  50. package/Cameras/Inputs/arcRotateCameraPointersInput.js.map +1 -1
  51. package/Cameras/Inputs/flyCameraKeyboardInput.js +199 -168
  52. package/Cameras/Inputs/flyCameraKeyboardInput.js.map +1 -1
  53. package/Cameras/Inputs/flyCameraMouseInput.js +243 -229
  54. package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
  55. package/Cameras/Inputs/followCameraKeyboardMoveInput.js +311 -266
  56. package/Cameras/Inputs/followCameraKeyboardMoveInput.js.map +1 -1
  57. package/Cameras/Inputs/followCameraMouseWheelInput.js +139 -119
  58. package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
  59. package/Cameras/Inputs/followCameraPointersInput.js +239 -203
  60. package/Cameras/Inputs/followCameraPointersInput.js.map +1 -1
  61. package/Cameras/Inputs/freeCameraGamepadInput.js +127 -114
  62. package/Cameras/Inputs/freeCameraGamepadInput.js.map +1 -1
  63. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js +278 -244
  64. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js.map +1 -1
  65. package/Cameras/Inputs/freeCameraMouseInput.js +216 -202
  66. package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
  67. package/Cameras/Inputs/freeCameraMouseWheelInput.js +368 -353
  68. package/Cameras/Inputs/freeCameraMouseWheelInput.js.map +1 -1
  69. package/Cameras/Inputs/freeCameraTouchInput.js +185 -172
  70. package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
  71. package/Cameras/Inputs/geospatialCameraKeyboardInput.d.ts +2 -0
  72. package/Cameras/Inputs/geospatialCameraKeyboardInput.js +291 -246
  73. package/Cameras/Inputs/geospatialCameraKeyboardInput.js.map +1 -1
  74. package/Cameras/Inputs/geospatialCameraPointersInput.d.ts +11 -1
  75. package/Cameras/Inputs/geospatialCameraPointersInput.js +18 -2
  76. package/Cameras/Inputs/geospatialCameraPointersInput.js.map +1 -1
  77. package/Cameras/Inputs/orbitCameraPointersInput.js +112 -96
  78. package/Cameras/Inputs/orbitCameraPointersInput.js.map +1 -1
  79. package/Cameras/VR/vrExperienceHelper.d.ts +0 -2
  80. package/Cameras/VR/vrExperienceHelper.js +0 -2
  81. package/Cameras/VR/vrExperienceHelper.js.map +1 -1
  82. package/Cameras/VR/vrExperienceHelper.pure.js +5 -0
  83. package/Cameras/VR/vrExperienceHelper.pure.js.map +1 -1
  84. package/Cameras/arcRotateCamera.pure.js +1559 -1479
  85. package/Cameras/arcRotateCamera.pure.js.map +1 -1
  86. package/Cameras/camera.pure.js +1225 -1178
  87. package/Cameras/camera.pure.js.map +1 -1
  88. package/Cameras/flyCamera.pure.js +369 -351
  89. package/Cameras/flyCamera.pure.js.map +1 -1
  90. package/Cameras/followCamera.pure.js +229 -192
  91. package/Cameras/followCamera.pure.js.map +1 -1
  92. package/Cameras/freeCamera.pure.js +373 -351
  93. package/Cameras/freeCamera.pure.js.map +1 -1
  94. package/Cameras/geospatialCamera.pure.d.ts +30 -7
  95. package/Cameras/geospatialCamera.pure.js +502 -457
  96. package/Cameras/geospatialCamera.pure.js.map +1 -1
  97. package/Cameras/geospatialCameraMovement.js +2 -2
  98. package/Cameras/geospatialCameraMovement.js.map +1 -1
  99. package/Cameras/targetCamera.pure.d.ts +7 -0
  100. package/Cameras/targetCamera.pure.js +550 -509
  101. package/Cameras/targetCamera.pure.js.map +1 -1
  102. package/Cameras/universalCamera.pure.js +98 -85
  103. package/Cameras/universalCamera.pure.js.map +1 -1
  104. package/Collisions/gpuPicker.d.ts +111 -4
  105. package/Collisions/gpuPicker.js +696 -119
  106. package/Collisions/gpuPicker.js.map +1 -1
  107. package/Compute/computeShader.pure.js +372 -355
  108. package/Compute/computeShader.pure.js.map +1 -1
  109. package/Culling/Helper/transformFeedbackBoundingHelper.pure.js +2 -2
  110. package/Decorators/nodeDecorator.d.ts +11 -1
  111. package/Decorators/nodeDecorator.js +43 -6
  112. package/Decorators/nodeDecorator.js.map +1 -1
  113. package/Engines/AbstractEngine/abstractEngine.loadFile.pure.js +8 -0
  114. package/Engines/AbstractEngine/abstractEngine.loadFile.pure.js.map +1 -1
  115. package/Engines/Native/nativeHelpers.js +15 -0
  116. package/Engines/Native/nativeHelpers.js.map +1 -1
  117. package/Engines/Native/nativeInterfaces.d.ts +7 -2
  118. package/Engines/Native/nativeInterfaces.js.map +1 -1
  119. package/Engines/Native/nativeRenderTargetWrapper.d.ts +5 -0
  120. package/Engines/Native/nativeRenderTargetWrapper.js +35 -1
  121. package/Engines/Native/nativeRenderTargetWrapper.js.map +1 -1
  122. package/Engines/Processors/shaderProcessor.js +5 -3
  123. package/Engines/Processors/shaderProcessor.js.map +1 -1
  124. package/Engines/WebGPU/Extensions/engine.videoTexture.pure.js +16 -3
  125. package/Engines/WebGPU/Extensions/engine.videoTexture.pure.js.map +1 -1
  126. package/Engines/WebGPU/webgpuClearQuad.pure.js +7 -1
  127. package/Engines/WebGPU/webgpuClearQuad.pure.js.map +1 -1
  128. package/Engines/abstractEngine.functions.d.ts +8 -2
  129. package/Engines/abstractEngine.functions.js +12 -4
  130. package/Engines/abstractEngine.functions.js.map +1 -1
  131. package/Engines/abstractEngine.pure.d.ts +20 -1
  132. package/Engines/abstractEngine.pure.js +21 -134
  133. package/Engines/abstractEngine.pure.js.map +1 -1
  134. package/Engines/engine.d.ts +208 -0
  135. package/Engines/engine.pure.js +0 -15
  136. package/Engines/engine.pure.js.map +1 -1
  137. package/Engines/nullEngine.pure.d.ts +66 -0
  138. package/Engines/nullEngine.pure.js +97 -0
  139. package/Engines/nullEngine.pure.js.map +1 -1
  140. package/Engines/thinEngine.pure.d.ts +0 -13
  141. package/Engines/thinEngine.pure.js +4 -23
  142. package/Engines/thinEngine.pure.js.map +1 -1
  143. package/Engines/thinNativeEngine.d.ts +0 -1
  144. package/Engines/thinNativeEngine.js +0 -1
  145. package/Engines/thinNativeEngine.js.map +1 -1
  146. package/Engines/thinNativeEngine.pure.d.ts +27 -0
  147. package/Engines/thinNativeEngine.pure.js +383 -17
  148. package/Engines/thinNativeEngine.pure.js.map +1 -1
  149. package/Engines/webgpuEngine.d.ts +1 -0
  150. package/Engines/webgpuEngine.js +1 -0
  151. package/Engines/webgpuEngine.js.map +1 -1
  152. package/Engines/webgpuEngine.pure.d.ts +9 -0
  153. package/Engines/webgpuEngine.pure.js +7 -0
  154. package/Engines/webgpuEngine.pure.js.map +1 -1
  155. package/FlowGraph/flowGraph.js +9 -0
  156. package/FlowGraph/flowGraph.js.map +1 -1
  157. package/FlowGraph/flowGraphContext.js +597 -584
  158. package/FlowGraph/flowGraphContext.js.map +1 -1
  159. package/FlowGraph/flowGraphDataConnection.pure.d.ts +14 -0
  160. package/FlowGraph/flowGraphDataConnection.pure.js +38 -1
  161. package/FlowGraph/flowGraphDataConnection.pure.js.map +1 -1
  162. package/FlowGraph/serialization.d.ts +11 -0
  163. package/FlowGraph/serialization.js +11 -1
  164. package/FlowGraph/serialization.js.map +1 -1
  165. package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.pure.js +182 -170
  166. package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.pure.js.map +1 -1
  167. package/FrameGraph/Node/Blocks/Layers/highlightLayerBlock.pure.js +196 -184
  168. package/FrameGraph/Node/Blocks/Layers/highlightLayerBlock.pure.js.map +1 -1
  169. package/FrameGraph/Node/Blocks/Layers/selectionOutlineLayerBlock.pure.js +222 -210
  170. package/FrameGraph/Node/Blocks/Layers/selectionOutlineLayerBlock.pure.js.map +1 -1
  171. package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js +123 -111
  172. package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js.map +1 -1
  173. package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js +158 -146
  174. package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js.map +1 -1
  175. package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.pure.js +63 -51
  176. package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.pure.js.map +1 -1
  177. package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.pure.js +122 -110
  178. package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.pure.js.map +1 -1
  179. package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.pure.js +76 -64
  180. package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.pure.js.map +1 -1
  181. package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.pure.js +89 -77
  182. package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.pure.js.map +1 -1
  183. package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.pure.js +134 -122
  184. package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.pure.js.map +1 -1
  185. package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.pure.js +58 -46
  186. package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.pure.js.map +1 -1
  187. package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.pure.js +107 -95
  188. package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.pure.js.map +1 -1
  189. package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.pure.js +181 -169
  190. package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.pure.js.map +1 -1
  191. package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.pure.js +63 -51
  192. package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.pure.js.map +1 -1
  193. package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.pure.js +63 -51
  194. package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.pure.js.map +1 -1
  195. package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.pure.js +76 -64
  196. package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.pure.js.map +1 -1
  197. package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.pure.js +246 -234
  198. package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.pure.js.map +1 -1
  199. package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.pure.js +108 -96
  200. package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.pure.js.map +1 -1
  201. package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.pure.js +87 -75
  202. package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.pure.js.map +1 -1
  203. package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.pure.js +76 -64
  204. package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.pure.js.map +1 -1
  205. package/FrameGraph/Node/Blocks/PostProcesses/ssao2PostProcessBlock.pure.js +313 -301
  206. package/FrameGraph/Node/Blocks/PostProcesses/ssao2PostProcessBlock.pure.js.map +1 -1
  207. package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.pure.js +502 -490
  208. package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.pure.js.map +1 -1
  209. package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.pure.js +147 -135
  210. package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.pure.js.map +1 -1
  211. package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.pure.js +90 -78
  212. package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.pure.js.map +1 -1
  213. package/FrameGraph/Node/Blocks/PostProcesses/volumetricLightingBlock.pure.js +179 -167
  214. package/FrameGraph/Node/Blocks/PostProcesses/volumetricLightingBlock.pure.js.map +1 -1
  215. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +462 -451
  216. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
  217. package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js +265 -253
  218. package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js.map +1 -1
  219. package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.pure.js +204 -192
  220. package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.pure.js.map +1 -1
  221. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js +611 -550
  222. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js.map +1 -1
  223. package/FrameGraph/Node/Blocks/Rendering/iblShadowsRendererBlock.pure.js +320 -308
  224. package/FrameGraph/Node/Blocks/Rendering/iblShadowsRendererBlock.pure.js.map +1 -1
  225. package/FrameGraph/Node/Blocks/Rendering/utilityLayerRendererBlock.pure.js +87 -75
  226. package/FrameGraph/Node/Blocks/Rendering/utilityLayerRendererBlock.pure.js.map +1 -1
  227. package/FrameGraph/Node/Blocks/Textures/clearBlock.pure.js +154 -142
  228. package/FrameGraph/Node/Blocks/Textures/clearBlock.pure.js.map +1 -1
  229. package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.pure.js +150 -138
  230. package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.pure.js.map +1 -1
  231. package/FrameGraph/Node/Blocks/inputBlock.pure.js +270 -256
  232. package/FrameGraph/Node/Blocks/inputBlock.pure.js.map +1 -1
  233. package/FrameGraph/Node/Blocks/lightingVolumeBlock.pure.js +95 -83
  234. package/FrameGraph/Node/Blocks/lightingVolumeBlock.pure.js.map +1 -1
  235. package/FrameGraph/Node/nodeRenderGraph.js +715 -693
  236. package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
  237. package/FrameGraph/Node/nodeRenderGraphBlock.js +548 -533
  238. package/FrameGraph/Node/nodeRenderGraphBlock.js.map +1 -1
  239. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.d.ts +2 -2
  240. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js +43 -51
  241. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js.map +1 -1
  242. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.d.ts +0 -1
  243. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.js +0 -1
  244. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.js.map +1 -1
  245. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.d.ts +0 -1
  246. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.js +66 -35
  247. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.js.map +1 -1
  248. package/Helpers/environmentHelper.js +2 -2
  249. package/Helpers/environmentHelper.js.map +1 -1
  250. package/Layers/effectLayer.js +529 -519
  251. package/Layers/effectLayer.js.map +1 -1
  252. package/Layers/glowLayer.pure.js +428 -413
  253. package/Layers/glowLayer.pure.js.map +1 -1
  254. package/Layers/highlightLayer.pure.js +473 -458
  255. package/Layers/highlightLayer.pure.js.map +1 -1
  256. package/Layers/selectionOutlineLayer.pure.js +360 -345
  257. package/Layers/selectionOutlineLayer.pure.js.map +1 -1
  258. package/Lights/Clustered/clusteredLightContainer.pure.d.ts +1 -1
  259. package/Lights/Clustered/clusteredLightContainer.pure.js +583 -558
  260. package/Lights/Clustered/clusteredLightContainer.pure.js.map +1 -1
  261. package/Lights/Shadows/shadowGenerator.js +6 -1
  262. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  263. package/Lights/areaLight.pure.js +61 -39
  264. package/Lights/areaLight.pure.js.map +1 -1
  265. package/Lights/directionalLight.pure.js +308 -284
  266. package/Lights/directionalLight.pure.js.map +1 -1
  267. package/Lights/hemisphericLight.pure.js +123 -104
  268. package/Lights/hemisphericLight.pure.js.map +1 -1
  269. package/Lights/light.d.ts +5 -3
  270. package/Lights/light.js +869 -827
  271. package/Lights/light.js.map +1 -1
  272. package/Lights/pointLight.pure.js +185 -174
  273. package/Lights/pointLight.pure.js.map +1 -1
  274. package/Lights/rectAreaLight.pure.d.ts +17 -0
  275. package/Lights/rectAreaLight.pure.js +238 -159
  276. package/Lights/rectAreaLight.pure.js.map +1 -1
  277. package/Lights/shadowLight.js +280 -268
  278. package/Lights/shadowLight.js.map +1 -1
  279. package/Lights/spotLight.pure.js +460 -427
  280. package/Lights/spotLight.pure.js.map +1 -1
  281. package/Loading/Plugins/babylonFileLoader.pure.js +17 -5
  282. package/Loading/Plugins/babylonFileLoader.pure.js.map +1 -1
  283. package/Loading/sceneLoader.d.ts +5 -1
  284. package/Loading/sceneLoader.js +299 -402
  285. package/Loading/sceneLoader.js.map +1 -1
  286. package/Materials/Background/backgroundMaterial.pure.d.ts +18 -18
  287. package/Materials/Background/backgroundMaterial.pure.js +949 -794
  288. package/Materials/Background/backgroundMaterial.pure.js.map +1 -1
  289. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.d.ts +15 -0
  290. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js +34 -1
  291. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js.map +1 -1
  292. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.d.ts +9 -0
  293. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js +26 -2
  294. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js.map +1 -1
  295. package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.d.ts +2 -1
  296. package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js +169 -149
  297. package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js.map +1 -1
  298. package/Materials/Node/Blocks/Dual/imageSourceBlock.pure.js +1 -1
  299. package/Materials/Node/Blocks/Dual/lightBlock.pure.js +442 -429
  300. package/Materials/Node/Blocks/Dual/lightBlock.pure.js.map +1 -1
  301. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.pure.js +396 -383
  302. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.pure.js.map +1 -1
  303. package/Materials/Node/Blocks/Dual/sceneDepthBlock.pure.js +237 -220
  304. package/Materials/Node/Blocks/Dual/sceneDepthBlock.pure.js.map +1 -1
  305. package/Materials/Node/Blocks/Dual/textureBlock.pure.js +1 -1
  306. package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.pure.js +150 -133
  307. package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.pure.js.map +1 -1
  308. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js +265 -250
  309. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js.map +1 -1
  310. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.pure.js +159 -142
  311. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.pure.js.map +1 -1
  312. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.pure.js +214 -201
  313. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.pure.js.map +1 -1
  314. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.pure.js +419 -400
  315. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.pure.js.map +1 -1
  316. package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js +3 -1
  317. package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js.map +1 -1
  318. package/Materials/Node/Blocks/PBR/clearCoatBlock.pure.js +302 -289
  319. package/Materials/Node/Blocks/PBR/clearCoatBlock.pure.js.map +1 -1
  320. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js +1327 -1272
  321. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js.map +1 -1
  322. package/Materials/Node/Blocks/PBR/reflectionBlock.pure.js +352 -337
  323. package/Materials/Node/Blocks/PBR/reflectionBlock.pure.js.map +1 -1
  324. package/Materials/Node/Blocks/PBR/refractionBlock.pure.js +297 -277
  325. package/Materials/Node/Blocks/PBR/refractionBlock.pure.js.map +1 -1
  326. package/Materials/Node/Blocks/PBR/sheenBlock.pure.js +146 -131
  327. package/Materials/Node/Blocks/PBR/sheenBlock.pure.js.map +1 -1
  328. package/Materials/Node/Blocks/PBR/subSurfaceBlock.pure.js +158 -145
  329. package/Materials/Node/Blocks/PBR/subSurfaceBlock.pure.js.map +1 -1
  330. package/Materials/Node/Blocks/clampBlock.pure.js +92 -77
  331. package/Materials/Node/Blocks/clampBlock.pure.js.map +1 -1
  332. package/Materials/Node/Blocks/cloudBlock.pure.js +145 -132
  333. package/Materials/Node/Blocks/cloudBlock.pure.js.map +1 -1
  334. package/Materials/Node/Blocks/conditionalBlock.pure.js +182 -169
  335. package/Materials/Node/Blocks/conditionalBlock.pure.js.map +1 -1
  336. package/Materials/Node/Blocks/curveBlock.pure.js +259 -246
  337. package/Materials/Node/Blocks/curveBlock.pure.js.map +1 -1
  338. package/Materials/Node/Blocks/debugBlock.pure.js +119 -106
  339. package/Materials/Node/Blocks/debugBlock.pure.js.map +1 -1
  340. package/Materials/Node/Blocks/loopBlock.pure.js +123 -110
  341. package/Materials/Node/Blocks/loopBlock.pure.js.map +1 -1
  342. package/Materials/Node/Blocks/meshAttributeExistsBlock.pure.js +185 -172
  343. package/Materials/Node/Blocks/meshAttributeExistsBlock.pure.js.map +1 -1
  344. package/Materials/Node/Blocks/remapBlock.pure.js +127 -112
  345. package/Materials/Node/Blocks/remapBlock.pure.js.map +1 -1
  346. package/Materials/Node/Blocks/transformBlock.pure.js +196 -185
  347. package/Materials/Node/Blocks/transformBlock.pure.js.map +1 -1
  348. package/Materials/Node/Blocks/triPlanarBlock.pure.js +451 -438
  349. package/Materials/Node/Blocks/triPlanarBlock.pure.js.map +1 -1
  350. package/Materials/Node/Blocks/trigonometryBlock.pure.js +184 -171
  351. package/Materials/Node/Blocks/trigonometryBlock.pure.js.map +1 -1
  352. package/Materials/Node/Blocks/waveBlock.pure.js +97 -84
  353. package/Materials/Node/Blocks/waveBlock.pure.js.map +1 -1
  354. package/Materials/Node/Blocks/worleyNoise3DBlock.pure.js +276 -263
  355. package/Materials/Node/Blocks/worleyNoise3DBlock.pure.js.map +1 -1
  356. package/Materials/Node/nodeMaterial.pure.js +1765 -1737
  357. package/Materials/Node/nodeMaterial.pure.js.map +1 -1
  358. package/Materials/Node/nodeMaterialBuildState.d.ts +3 -3
  359. package/Materials/PBR/openpbrMaterial.pure.d.ts +102 -102
  360. package/Materials/PBR/openpbrMaterial.pure.js +3115 -2243
  361. package/Materials/PBR/openpbrMaterial.pure.js.map +1 -1
  362. package/Materials/PBR/pbrAnisotropicConfiguration.d.ts +3 -3
  363. package/Materials/PBR/pbrAnisotropicConfiguration.js +255 -227
  364. package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
  365. package/Materials/PBR/pbrBRDFConfiguration.d.ts +9 -9
  366. package/Materials/PBR/pbrBRDFConfiguration.js +203 -155
  367. package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
  368. package/Materials/PBR/pbrBaseMaterial.pure.d.ts +1 -1
  369. package/Materials/PBR/pbrBaseMaterial.pure.js +1751 -1736
  370. package/Materials/PBR/pbrBaseMaterial.pure.js.map +1 -1
  371. package/Materials/PBR/pbrBaseSimpleMaterial.d.ts +13 -13
  372. package/Materials/PBR/pbrBaseSimpleMaterial.js +205 -117
  373. package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
  374. package/Materials/PBR/pbrClearCoatConfiguration.d.ts +9 -9
  375. package/Materials/PBR/pbrClearCoatConfiguration.js +464 -406
  376. package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
  377. package/Materials/PBR/pbrIridescenceConfiguration.d.ts +3 -3
  378. package/Materials/PBR/pbrIridescenceConfiguration.js +271 -239
  379. package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -1
  380. package/Materials/PBR/pbrMaterial.pure.d.ts +66 -66
  381. package/Materials/PBR/pbrMaterial.pure.js +1041 -685
  382. package/Materials/PBR/pbrMaterial.pure.js.map +1 -1
  383. package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.d.ts +5 -5
  384. package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.js +176 -115
  385. package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.js.map +1 -1
  386. package/Materials/PBR/pbrSheenConfiguration.d.ts +7 -7
  387. package/Materials/PBR/pbrSheenConfiguration.js +314 -270
  388. package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
  389. package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.d.ts +5 -5
  390. package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.js +172 -117
  391. package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.js.map +1 -1
  392. package/Materials/PBR/pbrSubSurfaceConfiguration.d.ts +16 -16
  393. package/Materials/PBR/pbrSubSurfaceConfiguration.js +864 -764
  394. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  395. package/Materials/Textures/HTML/htmlInCanvasPolyfill.d.ts +43 -0
  396. package/Materials/Textures/HTML/htmlInCanvasPolyfill.js +64 -0
  397. package/Materials/Textures/HTML/htmlInCanvasPolyfill.js.map +1 -0
  398. package/Materials/Textures/HTML/htmlInteractionManager.d.ts +69 -0
  399. package/Materials/Textures/HTML/htmlInteractionManager.js +130 -0
  400. package/Materials/Textures/HTML/htmlInteractionManager.js.map +1 -0
  401. package/Materials/Textures/HTML/htmlRaycastInteractionManager.d.ts +84 -0
  402. package/Materials/Textures/HTML/htmlRaycastInteractionManager.js +246 -0
  403. package/Materials/Textures/HTML/htmlRaycastInteractionManager.js.map +1 -0
  404. package/Materials/Textures/HTML/htmlTexture.d.ts +148 -0
  405. package/Materials/Textures/HTML/htmlTexture.js +455 -0
  406. package/Materials/Textures/HTML/htmlTexture.js.map +1 -0
  407. package/Materials/Textures/HTML/index.d.ts +4 -0
  408. package/Materials/Textures/HTML/index.js +5 -0
  409. package/Materials/Textures/HTML/index.js.map +1 -0
  410. package/Materials/Textures/HTML/pure.d.ts +5 -0
  411. package/Materials/Textures/HTML/pure.js +6 -0
  412. package/Materials/Textures/HTML/pure.js.map +1 -0
  413. package/Materials/Textures/Procedurals/proceduralTexture.pure.js +671 -643
  414. package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
  415. package/Materials/Textures/baseTexture.pure.js +880 -825
  416. package/Materials/Textures/baseTexture.pure.js.map +1 -1
  417. package/Materials/Textures/cubeTexture.d.ts +0 -1
  418. package/Materials/Textures/cubeTexture.js +0 -1
  419. package/Materials/Textures/cubeTexture.js.map +1 -1
  420. package/Materials/Textures/cubeTexture.pure.js +368 -333
  421. package/Materials/Textures/cubeTexture.pure.js.map +1 -1
  422. package/Materials/Textures/dynamicTexture.d.ts +0 -1
  423. package/Materials/Textures/dynamicTexture.js +0 -1
  424. package/Materials/Textures/dynamicTexture.js.map +1 -1
  425. package/Materials/Textures/dynamicTexture.pure.js +2 -0
  426. package/Materials/Textures/dynamicTexture.pure.js.map +1 -1
  427. package/Materials/Textures/htmlElementTexture.d.ts +0 -2
  428. package/Materials/Textures/htmlElementTexture.js +0 -2
  429. package/Materials/Textures/htmlElementTexture.js.map +1 -1
  430. package/Materials/Textures/htmlElementTexture.pure.js +4 -0
  431. package/Materials/Textures/htmlElementTexture.pure.js.map +1 -1
  432. package/Materials/Textures/index.d.ts +1 -0
  433. package/Materials/Textures/index.js +1 -1
  434. package/Materials/Textures/index.js.map +1 -1
  435. package/Materials/Textures/multiRenderTarget.d.ts +0 -1
  436. package/Materials/Textures/multiRenderTarget.js +0 -1
  437. package/Materials/Textures/multiRenderTarget.js.map +1 -1
  438. package/Materials/Textures/multiRenderTarget.pure.js +2 -0
  439. package/Materials/Textures/multiRenderTarget.pure.js.map +1 -1
  440. package/Materials/Textures/pure.d.ts +1 -0
  441. package/Materials/Textures/pure.js +1 -0
  442. package/Materials/Textures/pure.js.map +1 -1
  443. package/Materials/Textures/texture.pure.js +961 -923
  444. package/Materials/Textures/texture.pure.js.map +1 -1
  445. package/Materials/Textures/videoTexture.pure.d.ts +3 -0
  446. package/Materials/Textures/videoTexture.pure.js +450 -401
  447. package/Materials/Textures/videoTexture.pure.js.map +1 -1
  448. package/Materials/colorCurves.pure.js +510 -477
  449. package/Materials/colorCurves.pure.js.map +1 -1
  450. package/Materials/effect.pure.js +0 -7
  451. package/Materials/effect.pure.js.map +1 -1
  452. package/Materials/imageProcessing.js +12 -4
  453. package/Materials/imageProcessing.js.map +1 -1
  454. package/Materials/imageProcessingConfiguration.pure.js +647 -587
  455. package/Materials/imageProcessingConfiguration.pure.js.map +1 -1
  456. package/Materials/material.decalMapConfiguration.pure.d.ts +2 -2
  457. package/Materials/material.decalMapConfiguration.pure.js +149 -130
  458. package/Materials/material.decalMapConfiguration.pure.js.map +1 -1
  459. package/Materials/material.detailMapConfiguration.d.ts +3 -3
  460. package/Materials/material.detailMapConfiguration.js +213 -175
  461. package/Materials/material.detailMapConfiguration.js.map +1 -1
  462. package/Materials/material.pure.js +1815 -1721
  463. package/Materials/material.pure.js.map +1 -1
  464. package/Materials/materialPluginBase.pure.js +270 -249
  465. package/Materials/materialPluginBase.pure.js.map +1 -1
  466. package/Materials/materialPluginManager.pure.js +18 -8
  467. package/Materials/materialPluginManager.pure.js.map +1 -1
  468. package/Materials/materialStencilState.js +211 -200
  469. package/Materials/materialStencilState.js.map +1 -1
  470. package/Materials/meshDebugPluginMaterial.pure.d.ts +2 -2
  471. package/Materials/meshDebugPluginMaterial.pure.js +397 -275
  472. package/Materials/meshDebugPluginMaterial.pure.js.map +1 -1
  473. package/Materials/standardMaterial.pure.d.ts +32 -32
  474. package/Materials/standardMaterial.pure.js +1804 -1394
  475. package/Materials/standardMaterial.pure.js.map +1 -1
  476. package/Maths/math.color.pure.js +5 -5
  477. package/Maths/math.functions.js +38 -30
  478. package/Maths/math.functions.js.map +1 -1
  479. package/Maths/math.vector.pure.js +25 -25
  480. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +18 -8
  481. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
  482. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +86 -1
  483. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +255 -104
  484. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
  485. package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.d.ts +39 -0
  486. package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js +322 -0
  487. package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js.map +1 -0
  488. package/Meshes/GreasedLine/greasedLineMesh.pure.js +4 -4
  489. package/Meshes/GreasedLine/greasedLineRibbonMesh.pure.js +3 -3
  490. package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js +107 -94
  491. package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js.map +1 -1
  492. package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.pure.js +276 -263
  493. package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.pure.js.map +1 -1
  494. package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.pure.js +247 -232
  495. package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.pure.js.map +1 -1
  496. package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.pure.js +299 -284
  497. package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.pure.js.map +1 -1
  498. package/Meshes/Node/Blocks/Set/aggregatorBlock.pure.js +196 -181
  499. package/Meshes/Node/Blocks/Set/aggregatorBlock.pure.js.map +1 -1
  500. package/Meshes/Node/Blocks/Set/latticeBlock.pure.js +198 -179
  501. package/Meshes/Node/Blocks/Set/latticeBlock.pure.js.map +1 -1
  502. package/Meshes/Node/Blocks/Set/setColorsBlock.pure.js +151 -138
  503. package/Meshes/Node/Blocks/Set/setColorsBlock.pure.js.map +1 -1
  504. package/Meshes/Node/Blocks/Set/setMaterialIDBlock.pure.js +107 -94
  505. package/Meshes/Node/Blocks/Set/setMaterialIDBlock.pure.js.map +1 -1
  506. package/Meshes/Node/Blocks/Set/setNormalsBlock.pure.js +138 -125
  507. package/Meshes/Node/Blocks/Set/setNormalsBlock.pure.js.map +1 -1
  508. package/Meshes/Node/Blocks/Set/setPositionsBlock.pure.js +213 -200
  509. package/Meshes/Node/Blocks/Set/setPositionsBlock.pure.js.map +1 -1
  510. package/Meshes/Node/Blocks/Set/setTangentsBlock.pure.js +138 -125
  511. package/Meshes/Node/Blocks/Set/setTangentsBlock.pure.js.map +1 -1
  512. package/Meshes/Node/Blocks/Set/setUVsBlock.pure.js +179 -164
  513. package/Meshes/Node/Blocks/Set/setUVsBlock.pure.js.map +1 -1
  514. package/Meshes/Node/Blocks/Sources/boxBlock.pure.js +183 -170
  515. package/Meshes/Node/Blocks/Sources/boxBlock.pure.js.map +1 -1
  516. package/Meshes/Node/Blocks/Sources/capsuleBlock.pure.js +125 -112
  517. package/Meshes/Node/Blocks/Sources/capsuleBlock.pure.js.map +1 -1
  518. package/Meshes/Node/Blocks/Sources/cylinderBlock.pure.js +153 -140
  519. package/Meshes/Node/Blocks/Sources/cylinderBlock.pure.js.map +1 -1
  520. package/Meshes/Node/Blocks/Sources/discBlock.pure.js +112 -99
  521. package/Meshes/Node/Blocks/Sources/discBlock.pure.js.map +1 -1
  522. package/Meshes/Node/Blocks/Sources/gridBlock.pure.js +133 -120
  523. package/Meshes/Node/Blocks/Sources/gridBlock.pure.js.map +1 -1
  524. package/Meshes/Node/Blocks/Sources/icoSphereBlock.pure.js +128 -115
  525. package/Meshes/Node/Blocks/Sources/icoSphereBlock.pure.js.map +1 -1
  526. package/Meshes/Node/Blocks/Sources/meshBlock.pure.js +116 -103
  527. package/Meshes/Node/Blocks/Sources/meshBlock.pure.js.map +1 -1
  528. package/Meshes/Node/Blocks/Sources/planeBlock.pure.js +160 -147
  529. package/Meshes/Node/Blocks/Sources/planeBlock.pure.js.map +1 -1
  530. package/Meshes/Node/Blocks/Sources/sphereBlock.pure.js +144 -131
  531. package/Meshes/Node/Blocks/Sources/sphereBlock.pure.js.map +1 -1
  532. package/Meshes/Node/Blocks/Sources/torusBlock.pure.js +112 -99
  533. package/Meshes/Node/Blocks/Sources/torusBlock.pure.js.map +1 -1
  534. package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.pure.js +200 -185
  535. package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.pure.js.map +1 -1
  536. package/Meshes/Node/Blocks/bevelBlock.pure.js +111 -98
  537. package/Meshes/Node/Blocks/bevelBlock.pure.js.map +1 -1
  538. package/Meshes/Node/Blocks/booleanGeometryBlock.pure.js +182 -165
  539. package/Meshes/Node/Blocks/booleanGeometryBlock.pure.js.map +1 -1
  540. package/Meshes/Node/Blocks/cleanGeometryBlock.pure.js +89 -76
  541. package/Meshes/Node/Blocks/cleanGeometryBlock.pure.js.map +1 -1
  542. package/Meshes/Node/Blocks/conditionBlock.pure.js +184 -169
  543. package/Meshes/Node/Blocks/conditionBlock.pure.js.map +1 -1
  544. package/Meshes/Node/Blocks/extrudeGeometryBlock.pure.js +270 -255
  545. package/Meshes/Node/Blocks/extrudeGeometryBlock.pure.js.map +1 -1
  546. package/Meshes/Node/Blocks/geometryCollectionBlock.pure.js +172 -159
  547. package/Meshes/Node/Blocks/geometryCollectionBlock.pure.js.map +1 -1
  548. package/Meshes/Node/Blocks/geometryCurveBlock.pure.js +230 -217
  549. package/Meshes/Node/Blocks/geometryCurveBlock.pure.js.map +1 -1
  550. package/Meshes/Node/Blocks/geometryEaseBlock.pure.js +256 -245
  551. package/Meshes/Node/Blocks/geometryEaseBlock.pure.js.map +1 -1
  552. package/Meshes/Node/Blocks/geometryOptimizeBlock.pure.js +206 -189
  553. package/Meshes/Node/Blocks/geometryOptimizeBlock.pure.js.map +1 -1
  554. package/Meshes/Node/Blocks/geometryTransformBlock.pure.js +166 -153
  555. package/Meshes/Node/Blocks/geometryTransformBlock.pure.js.map +1 -1
  556. package/Meshes/Node/Blocks/geometryTrigonometryBlock.pure.js +221 -208
  557. package/Meshes/Node/Blocks/geometryTrigonometryBlock.pure.js.map +1 -1
  558. package/Meshes/Node/Blocks/mappingBlock.pure.js +150 -137
  559. package/Meshes/Node/Blocks/mappingBlock.pure.js.map +1 -1
  560. package/Meshes/Node/Blocks/mathBlock.pure.js +269 -256
  561. package/Meshes/Node/Blocks/mathBlock.pure.js.map +1 -1
  562. package/Meshes/Node/Blocks/mergeGeometryBlock.pure.js +141 -128
  563. package/Meshes/Node/Blocks/mergeGeometryBlock.pure.js.map +1 -1
  564. package/Meshes/Node/Blocks/randomBlock.pure.js +161 -148
  565. package/Meshes/Node/Blocks/randomBlock.pure.js.map +1 -1
  566. package/Meshes/Node/Blocks/subdivideBlock.pure.js +102 -87
  567. package/Meshes/Node/Blocks/subdivideBlock.pure.js.map +1 -1
  568. package/Meshes/Node/nodeGeometry.js +560 -538
  569. package/Meshes/Node/nodeGeometry.js.map +1 -1
  570. package/Meshes/Node/nodeGeometryBlock.js +473 -458
  571. package/Meshes/Node/nodeGeometryBlock.js.map +1 -1
  572. package/Meshes/abstractMesh.pure.js +2218 -2207
  573. package/Meshes/abstractMesh.pure.js.map +1 -1
  574. package/Meshes/geometry.js +30 -15
  575. package/Meshes/geometry.js.map +1 -1
  576. package/Meshes/mesh.pure.js +26 -14
  577. package/Meshes/mesh.pure.js.map +1 -1
  578. package/Meshes/mesh.vertexData.js +1665 -1655
  579. package/Meshes/mesh.vertexData.js.map +1 -1
  580. package/Meshes/transformNode.pure.js +1400 -1372
  581. package/Meshes/transformNode.pure.js.map +1 -1
  582. package/Misc/decorators.d.ts +34 -19
  583. package/Misc/decorators.functions.d.ts +33 -2
  584. package/Misc/decorators.functions.js +114 -35
  585. package/Misc/decorators.functions.js.map +1 -1
  586. package/Misc/decorators.js +96 -68
  587. package/Misc/decorators.js.map +1 -1
  588. package/Misc/decorators.serialization.js +47 -40
  589. package/Misc/decorators.serialization.js.map +1 -1
  590. package/Misc/decorators.serializationUtilities.d.ts +24 -0
  591. package/Misc/decorators.serializationUtilities.js +20 -0
  592. package/Misc/decorators.serializationUtilities.js.map +1 -0
  593. package/Misc/dumpTools.pure.js +43 -33
  594. package/Misc/dumpTools.pure.js.map +1 -1
  595. package/Misc/fileTools.pure.js +8 -0
  596. package/Misc/fileTools.pure.js.map +1 -1
  597. package/Misc/observable.pure.js +0 -7
  598. package/Misc/observable.pure.js.map +1 -1
  599. package/Misc/snapshotRenderingHelper.d.ts +4 -1
  600. package/Misc/snapshotRenderingHelper.js.map +1 -1
  601. package/Misc/symbolMetadataPolyfill.d.ts +11 -0
  602. package/Misc/symbolMetadataPolyfill.js +22 -0
  603. package/Misc/symbolMetadataPolyfill.js.map +1 -0
  604. package/Misc/tools.pure.js +2 -2
  605. package/Misc/tools.pure.js.map +1 -1
  606. package/Morph/morphTarget.js +382 -365
  607. package/Morph/morphTarget.js.map +1 -1
  608. package/Particles/Node/Blocks/Conditions/particleConditionBlock.pure.js +160 -145
  609. package/Particles/Node/Blocks/Conditions/particleConditionBlock.pure.js.map +1 -1
  610. package/Particles/Node/Blocks/Emitters/coneShapeBlock.pure.js +187 -174
  611. package/Particles/Node/Blocks/Emitters/coneShapeBlock.pure.js.map +1 -1
  612. package/Particles/Node/Blocks/Emitters/meshShapeBlock.pure.js +238 -219
  613. package/Particles/Node/Blocks/Emitters/meshShapeBlock.pure.js.map +1 -1
  614. package/Particles/Node/Blocks/Emitters/setupSpriteSheetBlock.pure.js +140 -115
  615. package/Particles/Node/Blocks/Emitters/setupSpriteSheetBlock.pure.js.map +1 -1
  616. package/Particles/Node/Blocks/Emitters/sphereShapeBlock.pure.js +157 -144
  617. package/Particles/Node/Blocks/Emitters/sphereShapeBlock.pure.js.map +1 -1
  618. package/Particles/Node/Blocks/Triggers/particleTriggerBlock.pure.js +133 -119
  619. package/Particles/Node/Blocks/Triggers/particleTriggerBlock.pure.js.map +1 -1
  620. package/Particles/Node/Blocks/Update/alignAngleBlock.pure.js +93 -80
  621. package/Particles/Node/Blocks/Update/alignAngleBlock.pure.js.map +1 -1
  622. package/Particles/Node/Blocks/particleDebugBlock.pure.js +117 -105
  623. package/Particles/Node/Blocks/particleDebugBlock.pure.js.map +1 -1
  624. package/Particles/Node/Blocks/particleFloatToIntBlock.pure.js +105 -92
  625. package/Particles/Node/Blocks/particleFloatToIntBlock.pure.js.map +1 -1
  626. package/Particles/Node/Blocks/particleGradientValueBlock.pure.js +82 -69
  627. package/Particles/Node/Blocks/particleGradientValueBlock.pure.js.map +1 -1
  628. package/Particles/Node/Blocks/particleLocalVariableBlock.pure.js +113 -101
  629. package/Particles/Node/Blocks/particleLocalVariableBlock.pure.js.map +1 -1
  630. package/Particles/Node/Blocks/particleMathBlock.pure.js +278 -265
  631. package/Particles/Node/Blocks/particleMathBlock.pure.js.map +1 -1
  632. package/Particles/Node/Blocks/particleNumberMathBlock.pure.js +155 -142
  633. package/Particles/Node/Blocks/particleNumberMathBlock.pure.js.map +1 -1
  634. package/Particles/Node/Blocks/particleRandomBlock.pure.js +156 -143
  635. package/Particles/Node/Blocks/particleRandomBlock.pure.js.map +1 -1
  636. package/Particles/Node/Blocks/particleTrigonometryBlock.pure.js +217 -204
  637. package/Particles/Node/Blocks/particleTrigonometryBlock.pure.js.map +1 -1
  638. package/Particles/Node/Blocks/particleVectorMathBlock.pure.js +106 -93
  639. package/Particles/Node/Blocks/particleVectorMathBlock.pure.js.map +1 -1
  640. package/Particles/Node/Blocks/systemBlock.pure.js +366 -330
  641. package/Particles/Node/Blocks/systemBlock.pure.js.map +1 -1
  642. package/Particles/Node/nodeParticleBlock.js +339 -324
  643. package/Particles/Node/nodeParticleBlock.js.map +1 -1
  644. package/Particles/Node/nodeParticleSystemSet.js +494 -473
  645. package/Particles/Node/nodeParticleSystemSet.js.map +1 -1
  646. package/Particles/gpuParticleSystem.d.ts +0 -1
  647. package/Particles/gpuParticleSystem.js +0 -1
  648. package/Particles/gpuParticleSystem.js.map +1 -1
  649. package/Particles/gpuParticleSystem.pure.d.ts +4 -3
  650. package/Particles/gpuParticleSystem.pure.js +27 -16
  651. package/Particles/gpuParticleSystem.pure.js.map +1 -1
  652. package/Particles/particleSystem.pure.js +57 -2
  653. package/Particles/particleSystem.pure.js.map +1 -1
  654. package/Particles/thinParticleSystem.d.ts +0 -1
  655. package/Particles/thinParticleSystem.js +0 -1
  656. package/Particles/thinParticleSystem.js.map +1 -1
  657. package/Particles/thinParticleSystem.pure.js +2 -0
  658. package/Particles/thinParticleSystem.pure.js.map +1 -1
  659. package/Particles/webgl2ParticleSystem.pure.js +2 -0
  660. package/Particles/webgl2ParticleSystem.pure.js.map +1 -1
  661. package/Physics/v1/physicsImpostor.pure.js +4 -4
  662. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.js +675 -656
  663. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.js.map +1 -1
  664. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.d.ts +0 -1
  665. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js +0 -1
  666. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js.map +1 -1
  667. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js +521 -486
  668. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js.map +1 -1
  669. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.d.ts +0 -1
  670. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js +0 -1
  671. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js.map +1 -1
  672. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.pure.js +241 -220
  673. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.pure.js.map +1 -1
  674. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.pure.js +852 -835
  675. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.pure.js.map +1 -1
  676. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.pure.js +1135 -1073
  677. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.pure.js.map +1 -1
  678. package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.pure.js +319 -303
  679. package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.pure.js.map +1 -1
  680. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js +212 -199
  681. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
  682. package/PostProcesses/blackAndWhitePostProcess.pure.js +67 -55
  683. package/PostProcesses/blackAndWhitePostProcess.pure.js.map +1 -1
  684. package/PostProcesses/bloomMergePostProcess.pure.js +74 -62
  685. package/PostProcesses/bloomMergePostProcess.pure.js.map +1 -1
  686. package/PostProcesses/blurPostProcess.pure.js +127 -115
  687. package/PostProcesses/blurPostProcess.pure.js.map +1 -1
  688. package/PostProcesses/chromaticAberrationPostProcess.pure.js +130 -118
  689. package/PostProcesses/chromaticAberrationPostProcess.pure.js.map +1 -1
  690. package/PostProcesses/circleOfConfusionPostProcess.pure.js +115 -104
  691. package/PostProcesses/circleOfConfusionPostProcess.pure.js.map +1 -1
  692. package/PostProcesses/colorCorrectionPostProcess.pure.js +55 -43
  693. package/PostProcesses/colorCorrectionPostProcess.pure.js.map +1 -1
  694. package/PostProcesses/convolutionPostProcess.pure.js +96 -84
  695. package/PostProcesses/convolutionPostProcess.pure.js.map +1 -1
  696. package/PostProcesses/extractHighlightsPostProcess.pure.js +68 -57
  697. package/PostProcesses/extractHighlightsPostProcess.pure.js.map +1 -1
  698. package/PostProcesses/filterPostProcess.pure.js +66 -54
  699. package/PostProcesses/filterPostProcess.pure.js.map +1 -1
  700. package/PostProcesses/fxaaPostProcess.pure.js.map +1 -1
  701. package/PostProcesses/grainPostProcess.pure.js +82 -70
  702. package/PostProcesses/grainPostProcess.pure.js.map +1 -1
  703. package/PostProcesses/imageProcessingPostProcess.js +334 -322
  704. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  705. package/PostProcesses/motionBlurPostProcess.pure.js +246 -235
  706. package/PostProcesses/motionBlurPostProcess.pure.js.map +1 -1
  707. package/PostProcesses/passPostProcess.pure.js +75 -63
  708. package/PostProcesses/passPostProcess.pure.js.map +1 -1
  709. package/PostProcesses/postProcess.pure.js +899 -835
  710. package/PostProcesses/postProcess.pure.js.map +1 -1
  711. package/PostProcesses/refractionPostProcess.pure.js +114 -87
  712. package/PostProcesses/refractionPostProcess.pure.js.map +1 -1
  713. package/PostProcesses/screenSpaceCurvaturePostProcess.pure.js +108 -96
  714. package/PostProcesses/screenSpaceCurvaturePostProcess.pure.js.map +1 -1
  715. package/PostProcesses/screenSpaceReflectionPostProcess.pure.js +241 -220
  716. package/PostProcesses/screenSpaceReflectionPostProcess.pure.js.map +1 -1
  717. package/PostProcesses/sharpenPostProcess.pure.js +86 -74
  718. package/PostProcesses/sharpenPostProcess.pure.js.map +1 -1
  719. package/PostProcesses/tonemapPostProcess.pure.js +82 -70
  720. package/PostProcesses/tonemapPostProcess.pure.js.map +1 -1
  721. package/PostProcesses/volumetricLightScatteringPostProcess.pure.js +500 -465
  722. package/PostProcesses/volumetricLightScatteringPostProcess.pure.js.map +1 -1
  723. package/PostProcesses/vrMultiviewToSingleviewPostProcess.d.ts +0 -1
  724. package/PostProcesses/vrMultiviewToSingleviewPostProcess.js +0 -1
  725. package/PostProcesses/vrMultiviewToSingleviewPostProcess.js.map +1 -1
  726. package/PostProcesses/vrMultiviewToSingleviewPostProcess.pure.js +2 -0
  727. package/PostProcesses/vrMultiviewToSingleviewPostProcess.pure.js.map +1 -1
  728. package/Probes/reflectionProbe.pure.js +238 -224
  729. package/Probes/reflectionProbe.pure.js.map +1 -1
  730. package/Rendering/GlobalIllumination/giRSMManager.pure.d.ts +1 -1
  731. package/Rendering/GlobalIllumination/giRSMManager.pure.js +138 -105
  732. package/Rendering/GlobalIllumination/giRSMManager.pure.js.map +1 -1
  733. package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.d.ts +1 -1
  734. package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.js +155 -138
  735. package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.js.map +1 -1
  736. package/Rendering/IBLShadows/iblShadowsRenderPipeline.d.ts +0 -2
  737. package/Rendering/IBLShadows/iblShadowsRenderPipeline.js +0 -2
  738. package/Rendering/IBLShadows/iblShadowsRenderPipeline.js.map +1 -1
  739. package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js +5 -0
  740. package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js.map +1 -1
  741. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.d.ts +0 -1
  742. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js +0 -1
  743. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js.map +1 -1
  744. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.d.ts +1 -0
  745. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js +34 -0
  746. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js.map +1 -1
  747. package/Rendering/edgesRenderer.pure.js.map +1 -1
  748. package/Rendering/prePassRenderer.d.ts +0 -2
  749. package/Rendering/prePassRenderer.js +0 -2
  750. package/Rendering/prePassRenderer.js.map +1 -1
  751. package/Rendering/prePassRenderer.pure.js +2 -0
  752. package/Rendering/prePassRenderer.pure.js.map +1 -1
  753. package/Rendering/reflectiveShadowMap.pure.d.ts +1 -1
  754. package/Rendering/reflectiveShadowMap.pure.js +151 -130
  755. package/Rendering/reflectiveShadowMap.pure.js.map +1 -1
  756. package/Rendering/thinDepthPeelingRenderer.d.ts +0 -1
  757. package/Rendering/thinDepthPeelingRenderer.js +0 -1
  758. package/Rendering/thinDepthPeelingRenderer.js.map +1 -1
  759. package/Shaders/ShadersInclude/gaussianSplatting.js +1 -0
  760. package/Shaders/ShadersInclude/gaussianSplatting.js.map +1 -1
  761. package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js +35 -5
  762. package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
  763. package/Shaders/gaussianSplatting.fragment.js +17 -1
  764. package/Shaders/gaussianSplatting.fragment.js.map +1 -1
  765. package/Shaders/gaussianSplatting.vertex.js +1 -1
  766. package/Shaders/gaussianSplatting.vertex.js.map +1 -1
  767. package/Shaders/gaussianSplattingDepth.vertex.js +1 -1
  768. package/Shaders/gaussianSplattingDepth.vertex.js.map +1 -1
  769. package/Shaders/picking.fragment.js +39 -3
  770. package/Shaders/picking.fragment.js.map +1 -1
  771. package/ShadersWGSL/ShadersInclude/gaussianSplatting.js +3 -1
  772. package/ShadersWGSL/ShadersInclude/gaussianSplatting.js.map +1 -1
  773. package/ShadersWGSL/ShadersInclude/helperFunctions.js +2 -2
  774. package/ShadersWGSL/ShadersInclude/helperFunctions.js.map +1 -1
  775. package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js +39 -7
  776. package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
  777. package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js +4 -3
  778. package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js.map +1 -1
  779. package/ShadersWGSL/gaussianSplatting.fragment.js +14 -1
  780. package/ShadersWGSL/gaussianSplatting.fragment.js.map +1 -1
  781. package/ShadersWGSL/gaussianSplatting.vertex.js +2 -2
  782. package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
  783. package/ShadersWGSL/gaussianSplattingDepth.vertex.js +2 -2
  784. package/ShadersWGSL/gaussianSplattingDepth.vertex.js.map +1 -1
  785. package/ShadersWGSL/lightingVolume.compute.js +2 -2
  786. package/ShadersWGSL/lightingVolume.compute.js.map +1 -1
  787. package/ShadersWGSL/picking.fragment.js +22 -1
  788. package/ShadersWGSL/picking.fragment.js.map +1 -1
  789. package/XR/features/Layers/WebXRCompositionLayer.d.ts +3 -2
  790. package/XR/features/Layers/WebXRCompositionLayer.js +2 -2
  791. package/XR/features/Layers/WebXRCompositionLayer.js.map +1 -1
  792. package/XR/features/Layers/WebXRWebGPUCompositionLayer.d.ts +59 -0
  793. package/XR/features/Layers/WebXRWebGPUCompositionLayer.js +120 -0
  794. package/XR/features/Layers/WebXRWebGPUCompositionLayer.js.map +1 -0
  795. package/XR/features/Layers/WebXRWebGPUProjectionLayer.d.ts +25 -0
  796. package/XR/features/Layers/WebXRWebGPUProjectionLayer.js +69 -0
  797. package/XR/features/Layers/WebXRWebGPUProjectionLayer.js.map +1 -0
  798. package/XR/features/WebXRLayers.pure.d.ts +8 -0
  799. package/XR/features/WebXRLayers.pure.js +43 -6
  800. package/XR/features/WebXRLayers.pure.js.map +1 -1
  801. package/XR/native/nativeXRRenderTarget.d.ts +2 -2
  802. package/XR/native/nativeXRRenderTarget.js +2 -2
  803. package/XR/native/nativeXRRenderTarget.js.map +1 -1
  804. package/XR/webXRExperienceHelper.js +10 -1
  805. package/XR/webXRExperienceHelper.js.map +1 -1
  806. package/XR/webXRGraphicsBinding.d.ts +90 -0
  807. package/XR/webXRGraphicsBinding.js +85 -0
  808. package/XR/webXRGraphicsBinding.js.map +1 -0
  809. package/XR/webXRLayerRenderTargetTexture.d.ts +24 -0
  810. package/XR/webXRLayerRenderTargetTexture.js +30 -0
  811. package/XR/webXRLayerRenderTargetTexture.js.map +1 -0
  812. package/XR/webXRManagedOutputCanvas.d.ts +14 -0
  813. package/XR/webXRManagedOutputCanvas.js +24 -5
  814. package/XR/webXRManagedOutputCanvas.js.map +1 -1
  815. package/XR/webXRRenderTargetTextureProvider.d.ts +25 -4
  816. package/XR/webXRRenderTargetTextureProvider.js +33 -35
  817. package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
  818. package/XR/webXRSessionManager.d.ts +11 -0
  819. package/XR/webXRSessionManager.js +37 -0
  820. package/XR/webXRSessionManager.js.map +1 -1
  821. package/XR/webXRTypes.d.ts +9 -6
  822. package/XR/webXRTypes.js.map +1 -1
  823. package/XR/webXRWebGLLayer.d.ts +2 -2
  824. package/XR/webXRWebGLLayer.js +2 -2
  825. package/XR/webXRWebGLLayer.js.map +1 -1
  826. package/XR/webXRWebGLRenderTargetTextureProvider.d.ts +12 -0
  827. package/XR/webXRWebGLRenderTargetTextureProvider.js +58 -0
  828. package/XR/webXRWebGLRenderTargetTextureProvider.js.map +1 -0
  829. package/XR/webXRWebGPURenderTargetTextureProvider.d.ts +69 -0
  830. package/XR/webXRWebGPURenderTargetTextureProvider.js +148 -0
  831. package/XR/webXRWebGPURenderTargetTextureProvider.js.map +1 -0
  832. package/index.d.ts +1 -0
  833. package/index.js +1 -0
  834. package/index.js.map +1 -1
  835. package/node.js +878 -845
  836. package/node.js.map +1 -1
  837. package/package.json +8 -14
  838. package/scene.pure.d.ts +12 -0
  839. package/scene.pure.js +36 -0
  840. package/scene.pure.js.map +1 -1
  841. package/tslib.es6.js +304 -150
@@ -1,3 +1,2 @@
1
1
  export * from "./thinNativeEngine.pure.js";
2
2
  export * from "./thinNativeEngine.types.js";
3
- import "../Buffers/buffer.align.js";
@@ -1,4 +1,3 @@
1
1
  export * from "./thinNativeEngine.pure.js";
2
2
  export * from "./thinNativeEngine.types.js";
3
- import "../Buffers/buffer.align.js";
4
3
  //# sourceMappingURL=thinNativeEngine.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"thinNativeEngine.js","sourceRoot":"","sources":["../../../../dev/core/src/Engines/thinNativeEngine.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AAEzC,OAAO,yBAAyB,CAAC","sourcesContent":["export * from \"./thinNativeEngine.pure\";\nexport * from \"./thinNativeEngine.types\";\n\nimport \"../Buffers/buffer.align\";\n"]}
1
+ {"version":3,"file":"thinNativeEngine.js","sourceRoot":"","sources":["../../../../dev/core/src/Engines/thinNativeEngine.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC","sourcesContent":["export * from \"./thinNativeEngine.pure\";\nexport * from \"./thinNativeEngine.types\";\n"]}
@@ -7,6 +7,7 @@ import { type Effect } from "../Materials/effect.pure.js";
7
7
  import { DataBuffer } from "../Buffers/dataBuffer.js";
8
8
  import { type RenderTargetCreationOptions, type TextureSize, type DepthTextureCreationOptions, type InternalTextureCreationOptions } from "../Materials/Textures/textureCreationOptions.js";
9
9
  import { type IPipelineContext } from "./IPipelineContext.js";
10
+ import { type IMultiRenderTargetOptions } from "../Materials/Textures/multiRenderTarget.pure.js";
10
11
  import { type IColor3Like, type IColor4Like, type IViewportLike } from "../Maths/math.like.js";
11
12
  import { type ISceneLike } from "./abstractEngine.pure.js";
12
13
  import { ThinEngine } from "./thinEngine.pure.js";
@@ -17,6 +18,7 @@ import { type IStencilState } from "../States/IStencilState.js";
17
18
  import { type RenderTargetWrapper } from "./renderTargetWrapper.js";
18
19
  import { type NativeData, NativeDataStream } from "./Native/nativeDataStream.js";
19
20
  import { type INative, type INativeEngine, type NativeFramebuffer, type NativeTexture } from "./Native/nativeInterfaces.js";
21
+ import { NativeRenderTargetWrapper } from "./Native/nativeRenderTargetWrapper.js";
20
22
  import { type IHardwareTextureWrapper } from "../Materials/Textures/hardwareTextureWrapper.js";
21
23
  import { type _IShaderProcessingContext } from "./Processors/shaderProcessingOptions.js";
22
24
  import { type ShaderLanguage } from "../Materials/shaderLanguage.js";
@@ -65,6 +67,7 @@ export declare class ThinNativeEngine extends ThinEngine {
65
67
  private _frameStats;
66
68
  private _boundBuffersVertexArray;
67
69
  private _currentDepthTest;
70
+ private _depthTestEnabled;
68
71
  private _stencilTest;
69
72
  private _stencilMask;
70
73
  private _stencilFunc;
@@ -215,6 +218,9 @@ export declare class ThinNativeEngine extends ThinEngine {
215
218
  * @param enable defines the state to set
216
219
  */
217
220
  setDepthBuffer(enable: boolean): void;
221
+ private _encodeDepthTest;
222
+ private _flushDepthTestState;
223
+ applyStates(): void;
218
224
  /**
219
225
  * Gets a boolean indicating if depth writing is enabled
220
226
  * @returns the current depth writing state
@@ -466,6 +472,27 @@ export declare class ThinNativeEngine extends ThinEngine {
466
472
  height: number;
467
473
  depth: number;
468
474
  }, options: boolean | RenderTargetCreationOptions): RenderTargetWrapper;
475
+ createRenderTargetCubeTexture(size: number, options?: RenderTargetCreationOptions): RenderTargetWrapper;
476
+ createMultipleRenderTarget(size: TextureSize, options: IMultiRenderTargetOptions, _initializeBuffers?: boolean): RenderTargetWrapper;
477
+ /**
478
+ * Creates (or recreates) the native framebuffer of a multi render target from the color attachment
479
+ * textures currently held by the wrapper. bgfx binds a fixed attachment set when a framebuffer is
480
+ * created and cannot re-point an individual attachment the way GL's framebufferTexture2D can, so the
481
+ * whole framebuffer has to be recreated whenever an attachment is swapped after creation (e.g. the OIT
482
+ * depth-peeling renderer replaces every attachment via MultiRenderTarget.setInternalTexture).
483
+ * @param rtWrapper The multi render target wrapper to build the framebuffer for.
484
+ * @internal
485
+ */
486
+ _createMultiRenderTargetFramebuffer(rtWrapper: NativeRenderTargetWrapper): void;
487
+ generateMipMapsForCubemap(_texture: InternalTexture, _unbind?: boolean): void;
488
+ bindAttachments(_attachments: number[]): void;
489
+ buildTextureLayout(textureStatus: boolean[], _backBufferLayout?: boolean): number[];
490
+ restoreSingleAttachment(): void;
491
+ restoreSingleAttachmentForRenderTarget(): void;
492
+ generateMipMapsMultiFramebuffer(_texture: RenderTargetWrapper): void;
493
+ resolveMultiFramebuffer(_texture: RenderTargetWrapper): void;
494
+ unBindMultiColorAttachmentFramebuffer(_rtWrapper: RenderTargetWrapper, _disableGenerateMipMaps?: boolean, onBeforeUnbind?: () => void): void;
495
+ updateMultipleRenderTargetTextureSampleCount(rtWrapper: Nullable<RenderTargetWrapper>, samples: number, _initializeBuffers?: boolean): number;
469
496
  updateRenderTargetTextureSampleCount(rtWrapper: RenderTargetWrapper, samples: number): number;
470
497
  updateTextureSamplingMode(samplingMode: number, texture: InternalTexture): void;
471
498
  bindFramebuffer(texture: RenderTargetWrapper, faceIndex?: number, requiredWidth?: number, requiredHeight?: number, forceFullscreenViewport?: boolean): void;
@@ -1,4 +1,5 @@
1
1
  /** This file must only contain pure code and pure imports */
2
+ import { RegisterBufferAlign } from "../Buffers/buffer.align.pure.js";
2
3
  import { InternalTexture } from "../Materials/Textures/internalTexture.js";
3
4
  import { DataBuffer } from "../Buffers/dataBuffer.js";
4
5
  import { Observable } from "../Misc/observable.pure.js";
@@ -132,6 +133,12 @@ export class ThinNativeEngine extends ThinEngine {
132
133
  * @internal
133
134
  */
134
135
  _initializeNativeEngine(adaptToDeviceRatio) {
136
+ // ThinNativeEngine relies on VertexBuffer.effective{Buffer,ByteOffset,ByteStride}
137
+ // (defined in Buffers/buffer.align.pure) to bind vertex attributes through
138
+ // recordVertexBuffer. Register the side effect here so the engine is usable
139
+ // on its own without callers having to remember to import the wrapper module.
140
+ // The registration is idempotent.
141
+ RegisterBufferAlign();
135
142
  this._engine = new _native.Engine({
136
143
  version: AbstractEngine.Version,
137
144
  nonFloatVertexBuffers: true,
@@ -141,7 +148,8 @@ export class ThinNativeEngine extends ThinEngine {
141
148
  this._frameStats = { gpuTimeNs: Number.NaN };
142
149
  this._boundBuffersVertexArray = null;
143
150
  this._currentDepthTest = _native.Engine.DEPTH_TEST_LEQUAL;
144
- this._stencilTest;
151
+ this._depthTestEnabled = true;
152
+ this._stencilTest = false;
145
153
  this._stencilMask = 255;
146
154
  this._stencilFunc = 519;
147
155
  this._stencilFuncRef = 0;
@@ -175,6 +183,10 @@ export class ThinNativeEngine extends ThinEngine {
175
183
  this._webGLVersion = 2;
176
184
  this.disableUniformBuffers = true;
177
185
  this._shaderPlatformName = "NATIVE";
186
+ // Babylon Native is not WebGL and has no _gl context. Report a distinct engine name (like
187
+ // WebGPU reports "WebGPU") so application/feature code that branches on engine.name === "WebGL"
188
+ // to touch the WebGL-only _gl context skips the native engine instead of dereferencing null.
189
+ this._name = "Native";
178
190
  // TODO: Initialize this more correctly based on the hardware capabilities.
179
191
  // Init caps
180
192
  this._caps = {
@@ -212,7 +224,7 @@ export class ThinNativeEngine extends ThinEngine {
212
224
  textureHalfFloatRender: true,
213
225
  textureLOD: true,
214
226
  texelFetch: false,
215
- drawBuffersExtension: false,
227
+ drawBuffersExtension: true,
216
228
  depthTextureExtension: false,
217
229
  vertexArrayObject: true,
218
230
  instancedArrays: true,
@@ -411,8 +423,16 @@ export class ThinNativeEngine extends ThinEngine {
411
423
  return null;
412
424
  }
413
425
  clear(color, backBuffer, depth, stencil = false, stencilClearValue = 0) {
414
- if (this.useReverseDepthBuffer) {
415
- throw new Error("reverse depth buffer is not currently implemented");
426
+ if (depth && this.useReverseDepthBuffer) {
427
+ // Reverse-Z: the scene is rendered with a flipped projection (near maps to 1, far to 0), so the
428
+ // depth buffer is cleared to 0 and the comparison must accept greater values. The WebGL engine
429
+ // sets depthCullingState.depthFunc = GEQUAL here and relies on applyStates() running the depth
430
+ // comparison to the GL context before each draw. The native draw path does not call applyStates()
431
+ // (only depth-test enable/disable is reconciled in _flushDepthTestState()), so setting the shared
432
+ // state alone would never reach the backend. Route the comparison through the native command path
433
+ // as well -- mirroring the WebGPU engine's clear path, which calls setDepthFunctionToGreaterOrEqual().
434
+ this._depthCullingState.depthFunc = 518;
435
+ this.setDepthFunction(518);
416
436
  }
417
437
  this._commandBufferEncoder.startEncodingCommand(_native.Engine.COMMAND_CLEAR);
418
438
  this._commandBufferEncoder.encodeCommandArgAsUInt32(backBuffer && color ? 1 : 0);
@@ -421,7 +441,7 @@ export class ThinNativeEngine extends ThinEngine {
421
441
  this._commandBufferEncoder.encodeCommandArgAsFloat32(color ? color.b : 0);
422
442
  this._commandBufferEncoder.encodeCommandArgAsFloat32(color ? color.a : 1);
423
443
  this._commandBufferEncoder.encodeCommandArgAsUInt32(depth ? 1 : 0);
424
- this._commandBufferEncoder.encodeCommandArgAsFloat32(1);
444
+ this._commandBufferEncoder.encodeCommandArgAsFloat32(depth && this.useReverseDepthBuffer ? 0 : 1);
425
445
  this._commandBufferEncoder.encodeCommandArgAsUInt32(stencil ? 1 : 0);
426
446
  this._commandBufferEncoder.encodeCommandArgAsUInt32(stencilClearValue);
427
447
  this._commandBufferEncoder.finishEncodingCommand();
@@ -538,6 +558,7 @@ export class ThinNativeEngine extends ThinEngine {
538
558
  return;
539
559
  }
540
560
  // Apply states
561
+ this._flushDepthTestState();
541
562
  this._drawCalls.addCount(1, false);
542
563
  if (instancesCount) {
543
564
  this._commandBufferEncoder.startEncodingCommand(_native.Engine.COMMAND_DRAWINDEXEDINSTANCED);
@@ -566,6 +587,7 @@ export class ThinNativeEngine extends ThinEngine {
566
587
  return;
567
588
  }
568
589
  // Apply states
590
+ this._flushDepthTestState();
569
591
  this._drawCalls.addCount(1, false);
570
592
  if (instancesCount) {
571
593
  this._commandBufferEncoder.startEncodingCommand(_native.Engine.COMMAND_DRAWINSTANCED);
@@ -816,10 +838,41 @@ export class ThinNativeEngine extends ThinEngine {
816
838
  * @param enable defines the state to set
817
839
  */
818
840
  setDepthBuffer(enable) {
841
+ // Keep the shared depth-culling state in sync so that code paths which toggle
842
+ // depth testing through engine.depthCullingState.depthTest (for example
843
+ // EffectRenderer.applyEffectWrapper) are also honored on the native side. The
844
+ // native draw path does not go through the WebGL applyStates() flush, so the
845
+ // value is reconciled in _flushDepthTestState() right before each draw.
846
+ this._depthCullingState.depthTest = enable;
847
+ this._encodeDepthTest(enable);
848
+ }
849
+ _encodeDepthTest(enable) {
850
+ this._depthTestEnabled = enable;
819
851
  this._commandBufferEncoder.startEncodingCommand(_native.Engine.COMMAND_SETDEPTHTEST);
820
852
  this._commandBufferEncoder.encodeCommandArgAsUInt32(enable ? this._currentDepthTest : _native.Engine.DEPTH_TEST_ALWAYS);
821
853
  this._commandBufferEncoder.finishEncodingCommand();
822
854
  }
855
+ _flushDepthTestState() {
856
+ // Unlike the WebGL engine, the native engine does not call applyStates() before
857
+ // a draw, so depth-test toggles made directly on engine.depthCullingState are
858
+ // flushed here to match the cross-engine contract.
859
+ if (this._depthCullingState.depthTest !== this._depthTestEnabled) {
860
+ this._encodeDepthTest(this._depthCullingState.depthTest);
861
+ }
862
+ }
863
+ applyStates() {
864
+ // The base ThinEngine.applyStates() drives the WebGL context (this._gl) directly, which is null on
865
+ // Native. Flush the depth-culling state through the native command path instead, so callers that
866
+ // mutate engine.depthCullingState directly and then call applyStates() (e.g. the depth-peeling / OIT
867
+ // renderer) take effect. Alpha and stencil state are applied on Native via their dedicated setters
868
+ // (setAlphaMode / setStencil*), which encode their commands when called.
869
+ const depthCullingState = this._depthCullingState;
870
+ if (depthCullingState.depthFunc !== null && depthCullingState.depthFunc !== undefined) {
871
+ this.setDepthFunction(depthCullingState.depthFunc);
872
+ }
873
+ this.setDepthBuffer(depthCullingState.depthTest);
874
+ this.setDepthWrite(depthCullingState.depthMask);
875
+ }
823
876
  /**
824
877
  * Gets a boolean indicating if depth writing is enabled
825
878
  * @returns the current depth writing state
@@ -877,9 +930,13 @@ export class ThinNativeEngine extends ThinEngine {
877
930
  break;
878
931
  }
879
932
  this._currentDepthTest = nativeDepthFunc;
880
- this._commandBufferEncoder.startEncodingCommand(_native.Engine.COMMAND_SETDEPTHTEST);
881
- this._commandBufferEncoder.encodeCommandArgAsUInt32(this._currentDepthTest);
882
- this._commandBufferEncoder.finishEncodingCommand();
933
+ // Route through _encodeDepthTest so the tracked _depthTestEnabled state stays in
934
+ // sync with the encoded command. Because COMMAND_SETDEPTHTEST conflates the
935
+ // compare function and the enable bit (DEPTH_TEST_ALWAYS == disabled), encoding
936
+ // the new function directly here would silently re-enable depth testing while
937
+ // depth testing is logically disabled; _encodeDepthTest honors the current
938
+ // depthCullingState.depthTest and only emits the new function when enabled.
939
+ this._encodeDepthTest(this._depthCullingState.depthTest);
883
940
  }
884
941
  /**
885
942
  * Enable or disable depth writing
@@ -1555,6 +1612,13 @@ export class ThinNativeEngine extends ThinEngine {
1555
1612
  internalTexture.baseHeight = this._engine.getTextureHeight(texture);
1556
1613
  internalTexture.width = internalTexture.baseWidth;
1557
1614
  internalTexture.height = internalTexture.baseHeight;
1615
+ if (this._engine.getTextureLayerCount) {
1616
+ const layerCount = this._engine.getTextureLayerCount(texture);
1617
+ if (layerCount > 1) {
1618
+ internalTexture.is2DArray = true;
1619
+ internalTexture.baseDepth = internalTexture.depth = layerCount;
1620
+ }
1621
+ }
1558
1622
  internalTexture.isReady = true;
1559
1623
  internalTexture.useMipMaps = hasMipMaps;
1560
1624
  this.updateTextureSamplingMode(samplingMode, internalTexture);
@@ -1589,6 +1653,13 @@ export class ThinNativeEngine extends ThinEngine {
1589
1653
  if (newWidth !== internalTexture.baseWidth || newHeight !== internalTexture.baseHeight) {
1590
1654
  throw new Error(`updateWrappedNativeTexture: new handle dimensions (${newWidth}x${newHeight}) must match the wrapped texture's dimensions (${internalTexture.baseWidth}x${internalTexture.baseHeight}).`);
1591
1655
  }
1656
+ if (this._engine.getTextureLayerCount) {
1657
+ const newLayerCount = this._engine.getTextureLayerCount(texture);
1658
+ const oldLayerCount = internalTexture.is2DArray ? internalTexture.depth : 1;
1659
+ if (newLayerCount !== oldLayerCount) {
1660
+ throw new Error(`updateWrappedNativeTexture: new handle layer count (${newLayerCount}) must match the wrapped texture's layer count (${oldLayerCount}).`);
1661
+ }
1662
+ }
1592
1663
  // Pre-validate before mutating any state so a thrown precondition leaves the InternalTexture untouched.
1593
1664
  // Note: rtWrapper.texture only returns _textures[0]; walk every attachment to catch the multi-RT case where
1594
1665
  // the wrapped texture is at index > 0.
@@ -1808,6 +1879,273 @@ export class ThinNativeEngine extends ThinEngine {
1808
1879
  rtWrapper.setTextures(texture);
1809
1880
  return rtWrapper;
1810
1881
  }
1882
+ createRenderTargetCubeTexture(size, options) {
1883
+ const rtWrapper = this._createHardwareRenderTargetWrapper(false, true, size);
1884
+ let generateDepthBuffer = true;
1885
+ let generateStencilBuffer = false;
1886
+ let generateMipMaps = false;
1887
+ let type = 0;
1888
+ let samplingMode = 3;
1889
+ let format = 5;
1890
+ let samples = 1;
1891
+ let label;
1892
+ if (options !== undefined && typeof options === "object") {
1893
+ generateDepthBuffer = options.generateDepthBuffer ?? true;
1894
+ generateStencilBuffer = !!options.generateStencilBuffer;
1895
+ generateMipMaps = !!options.generateMipMaps;
1896
+ type = options.type ?? 0;
1897
+ samplingMode = options.samplingMode ?? 3;
1898
+ format = options.format ?? 5;
1899
+ samples = options.samples ?? 1;
1900
+ label = options.label;
1901
+ }
1902
+ // Match _createInternalTexture: float/half-float RTTs that the platform can't linearly filter fall
1903
+ // back to NEAREST so the cube RTT never carries an unsupported sampling mode.
1904
+ if (type === 1 && !this._caps.textureFloatLinearFiltering) {
1905
+ samplingMode = 1;
1906
+ }
1907
+ else if (type === 2 && !this._caps.textureHalfFloatLinearFiltering) {
1908
+ samplingMode = 1;
1909
+ }
1910
+ if (type === 1 && !this._caps.textureFloat) {
1911
+ type = 0;
1912
+ Logger.Warn("Float textures are not supported. Type forced to TEXTURETYPE_UNSIGNED_BYTE");
1913
+ }
1914
+ const texture = new InternalTexture(this, 5 /* InternalTextureSource.RenderTarget */);
1915
+ texture.isCube = true;
1916
+ texture.baseWidth = size;
1917
+ texture.baseHeight = size;
1918
+ texture.width = size;
1919
+ texture.height = size;
1920
+ texture.isReady = true;
1921
+ texture.samples = samples;
1922
+ texture.generateMipMaps = generateMipMaps;
1923
+ texture.samplingMode = samplingMode;
1924
+ texture.type = type;
1925
+ texture.format = format;
1926
+ texture.label = label;
1927
+ const nativeTexture = texture._hardwareTexture.underlyingResource;
1928
+ const nativeTextureFormat = getNativeTextureFormat(format, type);
1929
+ // See the createRenderTargetTexture MSAA/mips note: avoid the mips + samples combo on bgfx.
1930
+ const hasMips = samples > 1 ? false : generateMipMaps;
1931
+ this._engine.initializeTexture(nativeTexture, size, size, hasMips, nativeTextureFormat, /*renderTarget*/ true, /*srgb*/ false, samples, /*isCube*/ true);
1932
+ this._setTextureSampling(nativeTexture, getNativeSamplingMode(samplingMode));
1933
+ // The native engine cannot render to all six faces through one framebuffer, so create one
1934
+ // framebuffer per face (the C++ side binds the matching cube layer); bindFramebuffer(faceIndex)
1935
+ // then selects the right one.
1936
+ const framebuffers = [];
1937
+ for (let face = 0; face < 6; face++) {
1938
+ framebuffers.push(this._engine.createFrameBuffer(nativeTexture, size, size, generateStencilBuffer, generateDepthBuffer, samples, face));
1939
+ }
1940
+ rtWrapper._framebuffers = framebuffers;
1941
+ rtWrapper._generateDepthBuffer = generateDepthBuffer;
1942
+ rtWrapper._generateStencilBuffer = generateStencilBuffer;
1943
+ rtWrapper._samples = samples;
1944
+ rtWrapper.setTextures(texture);
1945
+ // Track the hand-built cube RTT texture the same way _createInternalTexture tracks 2D textures so it
1946
+ // participates in engine-wide lifecycle management (dispose iteration, context rebuild, stats).
1947
+ this._internalTexturesCache.push(texture);
1948
+ return rtWrapper;
1949
+ }
1950
+ createMultipleRenderTarget(size, options, _initializeBuffers = true) {
1951
+ const rtWrapper = this._createHardwareRenderTargetWrapper(true, false, size);
1952
+ let generateMipMaps = false;
1953
+ let generateDepthBuffer = true;
1954
+ let generateStencilBuffer = false;
1955
+ let generateDepthTexture = false;
1956
+ let textureCount = 1;
1957
+ let samples = 1;
1958
+ let types = [];
1959
+ let samplingModes = [];
1960
+ let formats = [];
1961
+ let targets = [];
1962
+ let faceIndex = [];
1963
+ let layerIndex = [];
1964
+ let labels = [];
1965
+ let dontCreateTextures = false;
1966
+ if (options !== undefined) {
1967
+ generateMipMaps = options.generateMipMaps ?? false;
1968
+ generateDepthBuffer = options.generateDepthBuffer ?? true;
1969
+ generateStencilBuffer = options.generateStencilBuffer ?? false;
1970
+ generateDepthTexture = options.generateDepthTexture ?? false;
1971
+ textureCount = options.textureCount ?? 1;
1972
+ samples = options.samples ?? 1;
1973
+ types = options.types || types;
1974
+ samplingModes = options.samplingModes || samplingModes;
1975
+ formats = options.formats || formats;
1976
+ targets = options.targetTypes || targets;
1977
+ faceIndex = options.faceIndex || faceIndex;
1978
+ layerIndex = options.layerIndex || layerIndex;
1979
+ labels = options.labels || labels;
1980
+ dontCreateTextures = options.dontCreateTextures ?? false;
1981
+ }
1982
+ rtWrapper.label = options?.label ?? "MultiRenderTargetWrapper";
1983
+ const width = size.width ?? size;
1984
+ const height = size.height ?? size;
1985
+ const textures = [];
1986
+ const attachments = [];
1987
+ for (let i = 0; i < textureCount; i++) {
1988
+ const samplingMode = samplingModes[i] || 3;
1989
+ let type = types[i] || 0;
1990
+ const format = formats[i] || 5;
1991
+ const target = targets[i] || 3553;
1992
+ attachments.push(i);
1993
+ // target === -1 marks an attachment with no engine-created texture; dontCreateTextures defers them.
1994
+ if (target === -1 || dontCreateTextures) {
1995
+ continue;
1996
+ }
1997
+ if (type === 1 && !this._caps.textureFloat) {
1998
+ type = 0;
1999
+ Logger.Warn("Float textures are not supported. Multi render target attachment forced to TEXTURETYPE_UNSIGNED_BYTE type");
2000
+ }
2001
+ const texture = new InternalTexture(this, 6 /* InternalTextureSource.MultiRenderTarget */);
2002
+ const nativeTexture = texture._hardwareTexture.underlyingResource;
2003
+ if (target !== 3553) {
2004
+ // Native multi render targets currently only attach 2D color textures; cube / 2D-array
2005
+ // attachments are created as 2D so the attachment still exists and mrt.textures[i] is populated.
2006
+ Logger.Warn("Multi render target attachment target " + target + " is not supported on Native; using a 2D texture.");
2007
+ }
2008
+ // bgfx auto-generates the mip chain on resolve; avoid the mips + MSAA combo (see createRenderTargetTexture).
2009
+ const hasMips = samples > 1 ? false : generateMipMaps;
2010
+ this._engine.initializeTexture(nativeTexture, width, height, hasMips, getNativeTextureFormat(format, type), /*renderTarget*/ true, /*srgb*/ false, samples);
2011
+ this._setTextureSampling(nativeTexture, getNativeSamplingMode(samplingMode));
2012
+ texture.baseWidth = width;
2013
+ texture.baseHeight = height;
2014
+ texture.width = width;
2015
+ texture.height = height;
2016
+ texture.isReady = true;
2017
+ texture.samples = samples;
2018
+ texture.generateMipMaps = generateMipMaps;
2019
+ texture.samplingMode = samplingMode;
2020
+ texture.type = type;
2021
+ texture.format = format;
2022
+ texture.label = labels[i] ?? rtWrapper.label + "-Texture" + i;
2023
+ textures[i] = texture;
2024
+ this._internalTexturesCache.push(texture);
2025
+ }
2026
+ rtWrapper._generateDepthBuffer = generateDepthBuffer || generateDepthTexture;
2027
+ rtWrapper._generateStencilBuffer = generateStencilBuffer;
2028
+ rtWrapper._samples = samples;
2029
+ rtWrapper._attachments = attachments;
2030
+ rtWrapper.setTextures(textures);
2031
+ rtWrapper.setLayerAndFaceIndices(layerIndex, faceIndex);
2032
+ // The native engine creates one framebuffer with all the color attachments (bgfx writes to every
2033
+ // attachment of the bound framebuffer, so there is no drawBuffers equivalent to issue per draw).
2034
+ this._createMultiRenderTargetFramebuffer(rtWrapper);
2035
+ return rtWrapper;
2036
+ }
2037
+ /**
2038
+ * Creates (or recreates) the native framebuffer of a multi render target from the color attachment
2039
+ * textures currently held by the wrapper. bgfx binds a fixed attachment set when a framebuffer is
2040
+ * created and cannot re-point an individual attachment the way GL's framebufferTexture2D can, so the
2041
+ * whole framebuffer has to be recreated whenever an attachment is swapped after creation (e.g. the OIT
2042
+ * depth-peeling renderer replaces every attachment via MultiRenderTarget.setInternalTexture).
2043
+ * @param rtWrapper The multi render target wrapper to build the framebuffer for.
2044
+ * @internal
2045
+ */
2046
+ _createMultiRenderTargetFramebuffer(rtWrapper) {
2047
+ const textures = rtWrapper.textures;
2048
+ if (!textures) {
2049
+ return;
2050
+ }
2051
+ const colorHandles = [];
2052
+ for (const texture of textures) {
2053
+ const handle = texture?._hardwareTexture?.underlyingResource;
2054
+ if (handle) {
2055
+ colorHandles.push(handle);
2056
+ }
2057
+ }
2058
+ // bgfx framebuffers use a dense, ordered attachment list, so only (re)build once every expected color
2059
+ // attachment is present. Building from a partial set (e.g. attachments deferred via dontCreateTextures /
2060
+ // targetTypes[i] === -1, or filled out of order) would compress the attachment indices -- attachment 2
2061
+ // would become attachment 1, etc. -- and produce a framebuffer that does not match the MRT layout. The
2062
+ // count match guarantees the collected handles are contiguous and in attachment order.
2063
+ const expectedCount = rtWrapper._attachments ? rtWrapper._attachments.length : colorHandles.length;
2064
+ if (colorHandles.length === 0 || colorHandles.length !== expectedCount) {
2065
+ return;
2066
+ }
2067
+ const width = rtWrapper.width;
2068
+ const height = rtWrapper.height;
2069
+ if (this._engine.createMultiFrameBuffer) {
2070
+ rtWrapper._framebuffer = this._engine.createMultiFrameBuffer(colorHandles, width, height, rtWrapper._generateStencilBuffer, rtWrapper._generateDepthBuffer, rtWrapper._samples);
2071
+ }
2072
+ else {
2073
+ // Older Babylon Native binaries (predating multi render target support) do not expose createMultiFrameBuffer.
2074
+ // Fall back to a single-attachment framebuffer bound to the first color target so the scene keeps rendering.
2075
+ // Warn once (limit 1): the framebuffer can be rebuilt many times during attachment setup/swaps.
2076
+ Logger.Warn("createMultiFrameBuffer is not supported by this version of Babylon Native; multi render targets are unavailable. Falling back to a single-attachment framebuffer bound to the first color target.", 1);
2077
+ rtWrapper._framebuffer = this._engine.createFrameBuffer(colorHandles[0], width, height, rtWrapper._generateStencilBuffer, rtWrapper._generateDepthBuffer, rtWrapper._samples);
2078
+ }
2079
+ }
2080
+ generateMipMapsForCubemap(_texture, _unbind = true) {
2081
+ // The WebGL path rebinds gl.TEXTURE_CUBE_MAP and calls gl.generateMipmap; both deref _gl, which is
2082
+ // null on Native. bgfx auto-generates the mip chain when a render target texture created with mips is
2083
+ // resolved (the same way 2D RTTs get their mips here -- unBindFramebuffer issues no explicit mipgen),
2084
+ // so this is a no-op on Native.
2085
+ }
2086
+ bindAttachments(_attachments) {
2087
+ // No-op on Native: bgfx renders to every color attachment of the bound framebuffer, so there is
2088
+ // no gl.drawBuffers equivalent to select a subset.
2089
+ }
2090
+ buildTextureLayout(textureStatus, _backBufferLayout = false) {
2091
+ // Native has no gl draw-buffer enums; return a per-attachment index list (consumers only use the
2092
+ // length/order, and bindAttachments is a no-op).
2093
+ const result = [];
2094
+ for (let i = 0; i < textureStatus.length; i++) {
2095
+ result.push(textureStatus[i] ? i : -1);
2096
+ }
2097
+ return result;
2098
+ }
2099
+ restoreSingleAttachment() {
2100
+ // No-op on Native (see bindAttachments).
2101
+ }
2102
+ restoreSingleAttachmentForRenderTarget() {
2103
+ // No-op on Native (see bindAttachments).
2104
+ }
2105
+ generateMipMapsMultiFramebuffer(_texture) {
2106
+ // No-op on Native: bgfx auto-generates mips on render-target resolve (as for 2D/cube RTTs).
2107
+ }
2108
+ resolveMultiFramebuffer(_texture) {
2109
+ // No-op on Native: bgfx resolves MSAA render targets automatically.
2110
+ }
2111
+ unBindMultiColorAttachmentFramebuffer(_rtWrapper, _disableGenerateMipMaps = false, onBeforeUnbind) {
2112
+ this._currentRenderTarget = null;
2113
+ if (onBeforeUnbind) {
2114
+ onBeforeUnbind();
2115
+ }
2116
+ this._bindUnboundFramebuffer(null);
2117
+ }
2118
+ updateMultipleRenderTargetTextureSampleCount(rtWrapper, samples, _initializeBuffers = true) {
2119
+ if (!rtWrapper || rtWrapper.samples === samples) {
2120
+ return samples;
2121
+ }
2122
+ const textures = rtWrapper.textures;
2123
+ if (!textures) {
2124
+ return rtWrapper.samples;
2125
+ }
2126
+ const nativeRTWrapper = rtWrapper;
2127
+ // bgfx couples MSAA to the texture creation flags (see updateRenderTargetTextureSampleCount), so
2128
+ // changing the sample count after the fact requires reissuing every color attachment's underlying
2129
+ // bgfx handle with the new MSAA flag. initializeTexture disposes the old handle and allocates a fresh
2130
+ // one while preserving the InternalTexture / Graphics::Texture identity; only the internal bgfx handle
2131
+ // rotates. Afterwards the framebuffer is recreated so its attachment list refers to the new handles.
2132
+ for (const texture of textures) {
2133
+ // Wrapped (External-source) textures own an opaque external handle (format=-1); reinitializing
2134
+ // would destroy it and getNativeTextureFormat would throw, so leave those attachments untouched.
2135
+ if (!texture?._hardwareTexture || texture.source === 15 /* InternalTextureSource.External */) {
2136
+ continue;
2137
+ }
2138
+ const nativeTexture = texture._hardwareTexture.underlyingResource;
2139
+ // See the bgfx-msaa-mips workaround in updateRenderTargetTextureSampleCount (BabylonNative#1714).
2140
+ const hasMips = samples > 1 ? false : texture.generateMipMaps;
2141
+ this._engine.initializeTexture(nativeTexture, texture.baseWidth, texture.baseHeight, hasMips, getNativeTextureFormat(texture.format, texture.type),
2142
+ /*renderTarget*/ true, texture._useSRGBBuffer, samples);
2143
+ texture.samples = samples;
2144
+ }
2145
+ nativeRTWrapper._samples = samples;
2146
+ this._createMultiRenderTargetFramebuffer(nativeRTWrapper);
2147
+ return samples;
2148
+ }
1811
2149
  updateRenderTargetTextureSampleCount(rtWrapper, samples) {
1812
2150
  if (rtWrapper.samples === samples) {
1813
2151
  return samples;
@@ -1847,10 +2185,24 @@ export class ThinNativeEngine extends ThinEngine {
1847
2185
  // underlying bgfx resource has 1 mip level. Remove this guard once a fixed bgfx is in stable BN npm.
1848
2186
  const hasMips = samples > 1 ? false : texture.generateMipMaps;
1849
2187
  const nativeTextureFormat = getNativeTextureFormat(texture.format, texture.type);
1850
- this._engine.initializeTexture(nativeTexture, texture.baseWidth, texture.baseHeight, hasMips, nativeTextureFormat, /*renderTarget*/ true, texture._useSRGBBuffer, samples);
1851
- // NativeRenderTargetWrapper._framebuffer setter releases the old framebuffer before assigning,
1852
- // so no manual _releaseFramebufferObjects call is needed (and would double-delete the handle).
1853
- nativeRTWrapper._framebuffer = this._engine.createFrameBuffer(nativeTexture, texture.baseWidth, texture.baseHeight, rtWrapper._generateStencilBuffer, rtWrapper._generateDepthBuffer, samples);
2188
+ const isCube = texture.isCube;
2189
+ this._engine.initializeTexture(nativeTexture, texture.baseWidth, texture.baseHeight, hasMips, nativeTextureFormat,
2190
+ /*renderTarget*/ true, texture._useSRGBBuffer, samples, isCube);
2191
+ if (isCube) {
2192
+ // Cube RTTs render through one framebuffer per face (see createRenderTargetCubeTexture). The
2193
+ // underlying bgfx handle was just rotated, so recreate all six attachments; the _framebuffers
2194
+ // setter releases the stale ones and keeps _framebuffer aliased to face 0 for single-target paths.
2195
+ const framebuffers = [];
2196
+ for (let face = 0; face < 6; face++) {
2197
+ framebuffers.push(this._engine.createFrameBuffer(nativeTexture, texture.baseWidth, texture.baseHeight, rtWrapper._generateStencilBuffer, rtWrapper._generateDepthBuffer, samples, face));
2198
+ }
2199
+ nativeRTWrapper._framebuffers = framebuffers;
2200
+ }
2201
+ else {
2202
+ // NativeRenderTargetWrapper._framebuffer setter releases the old framebuffer before assigning,
2203
+ // so no manual _releaseFramebufferObjects call is needed (and would double-delete the handle).
2204
+ nativeRTWrapper._framebuffer = this._engine.createFrameBuffer(nativeTexture, texture.baseWidth, texture.baseHeight, rtWrapper._generateStencilBuffer, rtWrapper._generateDepthBuffer, samples);
2205
+ }
1854
2206
  rtWrapper._samples = samples;
1855
2207
  texture.samples = samples;
1856
2208
  return samples;
@@ -1868,13 +2220,17 @@ export class ThinNativeEngine extends ThinEngine {
1868
2220
  this.unBindFramebuffer(this._currentRenderTarget);
1869
2221
  }
1870
2222
  this._currentRenderTarget = texture;
1871
- if (faceIndex) {
1872
- throw new Error("Cuboid frame buffers are not yet supported in NativeEngine.");
1873
- }
1874
2223
  if (requiredWidth || requiredHeight) {
1875
2224
  throw new Error("Required width/height for frame buffers not yet supported in NativeEngine.");
1876
2225
  }
1877
- if (nativeRTWrapper._framebufferDepthStencil) {
2226
+ if (nativeRTWrapper._framebuffers) {
2227
+ // Cube render target: bind the framebuffer for the requested face.
2228
+ this._bindUnboundFramebuffer(nativeRTWrapper._framebuffers[faceIndex ?? 0]);
2229
+ }
2230
+ else if (faceIndex) {
2231
+ throw new Error("Cuboid frame buffers are not yet supported in NativeEngine.");
2232
+ }
2233
+ else if (nativeRTWrapper._framebufferDepthStencil) {
1878
2234
  this._bindUnboundFramebuffer(nativeRTWrapper._framebufferDepthStencil);
1879
2235
  }
1880
2236
  else {
@@ -2091,7 +2447,17 @@ export class ThinNativeEngine extends ThinEngine {
2091
2447
  * @param generateMipMaps defines whether to generate mipmaps or not
2092
2448
  */
2093
2449
  updateTextureData(texture, imageData, xOffset, yOffset, width, height, faceIndex = 0, lod = 0, generateMipMaps = false) {
2094
- throw new Error("updateTextureData not implemented.");
2450
+ if (!texture._hardwareTexture) {
2451
+ return;
2452
+ }
2453
+ if (!this._engine.updateTextureData) {
2454
+ throw new Error("updateTextureData not implemented.");
2455
+ }
2456
+ // bgfx updates the requested sub-rectangle of the existing texture (faceIndex selects the cube
2457
+ // face / array layer, lod selects the mip level). invertY is forwarded so the native side can match
2458
+ // the vertical orientation the base texture upload uses. Mip regeneration after a partial update is
2459
+ // not supported on Native, so generateMipMaps is ignored (consistent with the other raw-texture paths).
2460
+ this._engine.updateTextureData(texture._hardwareTexture.underlyingResource, imageData, xOffset, yOffset, width, height, faceIndex, lod, texture.invertY);
2095
2461
  }
2096
2462
  /**
2097
2463
  * @internal