@onerjs/core 8.53.5 → 8.53.7

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,4 +1,4 @@
1
- import { __decorate } from "../../tslib.es6.js";
1
+ import { __esDecorate, __runInitializers } from "../../tslib.es6.js";
2
2
  import { Observable } from "../../Misc/observable.js";
3
3
  import { NodeRenderGraphOutputBlock } from "./Blocks/outputBlock.pure.js";
4
4
  import { FrameGraph } from "../frameGraph.js";
@@ -19,713 +19,735 @@ import { NodeRenderGraphCullObjectsBlock } from "./Blocks/cullObjectsBlock.pure.
19
19
  /**
20
20
  * Defines a node render graph
21
21
  */
22
- export class NodeRenderGraph {
23
- /** @returns the inspector from bundle or global */
24
- _getGlobalNodeRenderGraphEditor() {
25
- // UMD global name detection from bundle metadata.
26
- // Note: rollup-built UMD bundles do not expose the editor class
27
- // directly on the namespace - it lives on `.default.NodeRenderGraphEditor` -
28
- // so we unwrap that case before falling back to the BABYLON global.
29
- if (typeof NODERENDERGRAPHEDITOR !== "undefined") {
30
- if (NODERENDERGRAPHEDITOR.NodeRenderGraphEditor) {
31
- return NODERENDERGRAPHEDITOR;
32
- }
33
- if (NODERENDERGRAPHEDITOR.default?.NodeRenderGraphEditor) {
34
- return NODERENDERGRAPHEDITOR.default;
35
- }
36
- }
37
- // In case of module let's check the global emitted from the editor entry point.
38
- if (typeof BABYLON !== "undefined" && typeof BABYLON.NodeRenderGraphEditor !== "undefined") {
39
- return BABYLON;
40
- }
41
- return undefined;
42
- }
43
- /**
44
- * Observable raised after the node render graph is built
45
- * Note that this is the same observable as the one in the underlying FrameGraph!
46
- */
47
- get onBuildObservable() {
48
- return this._frameGraph.onBuildObservable;
49
- }
50
- /**
51
- * Gets the frame graph used by this node render graph
52
- */
53
- get frameGraph() {
54
- return this._frameGraph;
55
- }
56
- /**
57
- * Gets the scene used by this node render graph
58
- * @returns the scene used by this node render graph
59
- */
60
- getScene() {
61
- return this._scene;
62
- }
63
- /**
64
- * Gets the options used to create this node render graph
65
- */
66
- get options() {
67
- return this._options;
68
- }
69
- /**
70
- * Creates a new node render graph
71
- * @param name defines the name of the node render graph
72
- * @param scene defines the scene to use to execute the graph
73
- * @param options defines the options to use when creating the graph
74
- */
75
- constructor(name, scene, options) {
76
- this._buildId = NodeRenderGraph._BuildIdGenerator++;
77
- this.BJSNODERENDERGRAPHEDITOR = this._getGlobalNodeRenderGraphEditor();
78
- /**
79
- * Gets or sets data used by visual editor
80
- * @see https://nrge.babylonjs.com
81
- */
82
- this.editorData = null;
83
- /**
84
- * Gets an array of blocks that needs to be serialized even if they are not yet connected
85
- */
86
- this.attachedBlocks = [];
87
- /**
88
- * Observable raised before the node render graph is built
89
- */
90
- this.onBeforeBuildObservable = new Observable();
91
- /**
92
- * Observable raised when an error is detected
93
- */
94
- this.onBuildErrorObservable = new Observable();
95
- /** Gets or sets the RenderGraphOutputBlock used to gather the final node render graph data */
96
- this.outputBlock = null;
97
- this._resizeObserver = null;
98
- this.name = name;
99
- this._scene = scene;
100
- this._engine = scene.getEngine();
101
- options = {
102
- debugTextures: false,
103
- autoConfigure: false,
104
- verbose: false,
105
- rebuildGraphOnEngineResize: true,
106
- autoFillExternalInputs: true,
107
- ...options,
108
- };
109
- this._options = options;
110
- this._frameGraph = new FrameGraph(this._scene, options.debugTextures, this);
111
- this._frameGraph.name = name;
112
- if (options.rebuildGraphOnEngineResize) {
113
- this._resizeObserver = this._engine.onResizeObservable.add(async () => {
114
- await this.buildAsync(false, true, false);
115
- });
116
- }
117
- }
118
- /**
119
- * Gets the current class name ("NodeRenderGraph")
120
- * @returns the class name
121
- */
122
- getClassName() {
123
- return "NodeRenderGraph";
124
- }
125
- /**
126
- * Gets a block by its name
127
- * @param name defines the name of the block to retrieve
128
- * @returns the required block or null if not found
129
- */
130
- getBlockByName(name) {
131
- let result = null;
132
- for (const block of this.attachedBlocks) {
133
- if (block.name === name) {
134
- if (!result) {
135
- result = block;
22
+ let NodeRenderGraph = (() => {
23
+ var _a;
24
+ let _name_decorators;
25
+ let _name_initializers = [];
26
+ let _name_extraInitializers = [];
27
+ let _comment_decorators;
28
+ let _comment_initializers = [];
29
+ let _comment_extraInitializers = [];
30
+ return _a = class NodeRenderGraph {
31
+ /** @returns the inspector from bundle or global */
32
+ _getGlobalNodeRenderGraphEditor() {
33
+ // UMD global name detection from bundle metadata.
34
+ // Note: rollup-built UMD bundles do not expose the editor class
35
+ // directly on the namespace - it lives on `.default.NodeRenderGraphEditor` -
36
+ // so we unwrap that case before falling back to the BABYLON global.
37
+ if (typeof NODERENDERGRAPHEDITOR !== "undefined") {
38
+ if (NODERENDERGRAPHEDITOR.NodeRenderGraphEditor) {
39
+ return NODERENDERGRAPHEDITOR;
40
+ }
41
+ if (NODERENDERGRAPHEDITOR.default?.NodeRenderGraphEditor) {
42
+ return NODERENDERGRAPHEDITOR.default;
43
+ }
136
44
  }
137
- else {
138
- Tools.Warn("More than one block was found with the name `" + name + "`");
139
- return result;
140
- }
141
- }
142
- }
143
- return result;
144
- }
145
- /**
146
- * Get a block using a predicate
147
- * @param predicate defines the predicate used to find the good candidate
148
- * @returns the required block or null if not found
149
- */
150
- getBlockByPredicate(predicate) {
151
- for (const block of this.attachedBlocks) {
152
- if (predicate(block)) {
153
- return block;
154
- }
155
- }
156
- return null;
157
- }
158
- /**
159
- * Get all blocks that match a predicate
160
- * @param predicate defines the predicate used to find the good candidate(s)
161
- * @returns the list of blocks found
162
- */
163
- getBlocksByPredicate(predicate) {
164
- const blocks = [];
165
- for (const block of this.attachedBlocks) {
166
- if (predicate(block)) {
167
- blocks.push(block);
168
- }
169
- }
170
- return blocks;
171
- }
172
- /**
173
- * Gets the list of input blocks attached to this material
174
- * @returns an array of InputBlocks
175
- */
176
- getInputBlocks() {
177
- const blocks = [];
178
- for (const block of this.attachedBlocks) {
179
- if (block.isInput) {
180
- blocks.push(block);
181
- }
182
- }
183
- return blocks;
184
- }
185
- /**
186
- * Replaces a camera in all camera input blocks of this node render graph.
187
- * If the current camera is found in any input block, it is replaced by the new camera,
188
- * optionally updating the scene's pointer camera and rebuilding the graph.
189
- * @param currentCamera The camera to replace.
190
- * @param newCamera The new camera to assign to the matching input blocks.
191
- * @param updateCameraToUseForPointers If true (default), updates `scene.cameraToUseForPointers` to the new camera when a replacement occurs.
192
- * @param rebuildGraph If true (default), rebuilds the graph asynchronously after the replacement.
193
- * @returns A promise that resolves to true if at least one input block was updated, false otherwise.
194
- */
195
- async replaceCameraAsync(currentCamera, newCamera, updateCameraToUseForPointers = true, rebuildGraph = true) {
196
- const inputBlocks = this.getInputBlocks();
197
- let updated = false;
198
- for (const block of inputBlocks) {
199
- if (block.isCamera() && block.value === currentCamera) {
200
- block.value = newCamera;
201
- updated = true;
202
- }
203
- }
204
- if (updated) {
205
- if (updateCameraToUseForPointers) {
206
- this._scene.cameraToUseForPointers = newCamera;
207
- }
208
- if (rebuildGraph) {
209
- const currentAutoFill = this._options.autoFillExternalInputs;
210
- try {
211
- this._options.autoFillExternalInputs = false; // makes sure that the camera input block(s) we just updated don't get overwritten by autoFillExternalInputs
212
- await this.buildAsync();
45
+ // In case of module let's check the global emitted from the editor entry point.
46
+ if (typeof BABYLON !== "undefined" && typeof BABYLON.NodeRenderGraphEditor !== "undefined") {
47
+ return BABYLON;
213
48
  }
214
- finally {
215
- this._options.autoFillExternalInputs = currentAutoFill;
216
- }
217
- }
218
- }
219
- return updated;
220
- }
221
- /**
222
- * Launch the node render graph editor
223
- * @param config Define the configuration of the editor
224
- * @returns a promise fulfilled when the node editor is visible
225
- */
226
- // eslint-disable-next-line @typescript-eslint/naming-convention
227
- async edit(config) {
228
- return await new Promise((resolve) => {
229
- this.BJSNODERENDERGRAPHEDITOR = this.BJSNODERENDERGRAPHEDITOR || this._getGlobalNodeRenderGraphEditor();
230
- if (typeof this.BJSNODERENDERGRAPHEDITOR == "undefined") {
231
- const editorUrl = config && config.editorURL ? config.editorURL : NodeRenderGraph.EditorURL;
232
- // Load editor and add it to the DOM
233
- Tools.LoadBabylonScript(editorUrl, () => {
49
+ return undefined;
50
+ }
51
+ /**
52
+ * Observable raised after the node render graph is built
53
+ * Note that this is the same observable as the one in the underlying FrameGraph!
54
+ */
55
+ get onBuildObservable() {
56
+ return this._frameGraph.onBuildObservable;
57
+ }
58
+ /**
59
+ * Gets the frame graph used by this node render graph
60
+ */
61
+ get frameGraph() {
62
+ return this._frameGraph;
63
+ }
64
+ /**
65
+ * Gets the scene used by this node render graph
66
+ * @returns the scene used by this node render graph
67
+ */
68
+ getScene() {
69
+ return this._scene;
70
+ }
71
+ /**
72
+ * Gets the options used to create this node render graph
73
+ */
74
+ get options() {
75
+ return this._options;
76
+ }
77
+ /**
78
+ * Creates a new node render graph
79
+ * @param name defines the name of the node render graph
80
+ * @param scene defines the scene to use to execute the graph
81
+ * @param options defines the options to use when creating the graph
82
+ */
83
+ constructor(name, scene, options) {
84
+ this._buildId = _a._BuildIdGenerator++;
85
+ this.BJSNODERENDERGRAPHEDITOR = this._getGlobalNodeRenderGraphEditor();
86
+ /**
87
+ * Gets or sets data used by visual editor
88
+ * @see https://nrge.babylonjs.com
89
+ */
90
+ this.editorData = null;
91
+ /**
92
+ * Gets an array of blocks that needs to be serialized even if they are not yet connected
93
+ */
94
+ this.attachedBlocks = [];
95
+ /**
96
+ * Observable raised before the node render graph is built
97
+ */
98
+ this.onBeforeBuildObservable = new Observable();
99
+ /**
100
+ * Observable raised when an error is detected
101
+ */
102
+ this.onBuildErrorObservable = new Observable();
103
+ /** Gets or sets the RenderGraphOutputBlock used to gather the final node render graph data */
104
+ this.outputBlock = null;
105
+ /**
106
+ * The name of the node render graph
107
+ */
108
+ this.name = __runInitializers(this, _name_initializers, void 0);
109
+ /**
110
+ * A free comment about the graph
111
+ */
112
+ this.comment = (__runInitializers(this, _name_extraInitializers), __runInitializers(this, _comment_initializers, void 0));
113
+ this._engine = __runInitializers(this, _comment_extraInitializers);
114
+ this._resizeObserver = null;
115
+ this.name = name;
116
+ this._scene = scene;
117
+ this._engine = scene.getEngine();
118
+ options = {
119
+ debugTextures: false,
120
+ autoConfigure: false,
121
+ verbose: false,
122
+ rebuildGraphOnEngineResize: true,
123
+ autoFillExternalInputs: true,
124
+ ...options,
125
+ };
126
+ this._options = options;
127
+ this._frameGraph = new FrameGraph(this._scene, options.debugTextures, this);
128
+ this._frameGraph.name = name;
129
+ if (options.rebuildGraphOnEngineResize) {
130
+ this._resizeObserver = this._engine.onResizeObservable.add(async () => {
131
+ await this.buildAsync(false, true, false);
132
+ });
133
+ }
134
+ }
135
+ /**
136
+ * Gets the current class name ("NodeRenderGraph")
137
+ * @returns the class name
138
+ */
139
+ getClassName() {
140
+ return "NodeRenderGraph";
141
+ }
142
+ /**
143
+ * Gets a block by its name
144
+ * @param name defines the name of the block to retrieve
145
+ * @returns the required block or null if not found
146
+ */
147
+ getBlockByName(name) {
148
+ let result = null;
149
+ for (const block of this.attachedBlocks) {
150
+ if (block.name === name) {
151
+ if (!result) {
152
+ result = block;
153
+ }
154
+ else {
155
+ Tools.Warn("More than one block was found with the name `" + name + "`");
156
+ return result;
157
+ }
158
+ }
159
+ }
160
+ return result;
161
+ }
162
+ /**
163
+ * Get a block using a predicate
164
+ * @param predicate defines the predicate used to find the good candidate
165
+ * @returns the required block or null if not found
166
+ */
167
+ getBlockByPredicate(predicate) {
168
+ for (const block of this.attachedBlocks) {
169
+ if (predicate(block)) {
170
+ return block;
171
+ }
172
+ }
173
+ return null;
174
+ }
175
+ /**
176
+ * Get all blocks that match a predicate
177
+ * @param predicate defines the predicate used to find the good candidate(s)
178
+ * @returns the list of blocks found
179
+ */
180
+ getBlocksByPredicate(predicate) {
181
+ const blocks = [];
182
+ for (const block of this.attachedBlocks) {
183
+ if (predicate(block)) {
184
+ blocks.push(block);
185
+ }
186
+ }
187
+ return blocks;
188
+ }
189
+ /**
190
+ * Gets the list of input blocks attached to this material
191
+ * @returns an array of InputBlocks
192
+ */
193
+ getInputBlocks() {
194
+ const blocks = [];
195
+ for (const block of this.attachedBlocks) {
196
+ if (block.isInput) {
197
+ blocks.push(block);
198
+ }
199
+ }
200
+ return blocks;
201
+ }
202
+ /**
203
+ * Replaces a camera in all camera input blocks of this node render graph.
204
+ * If the current camera is found in any input block, it is replaced by the new camera,
205
+ * optionally updating the scene's pointer camera and rebuilding the graph.
206
+ * @param currentCamera The camera to replace.
207
+ * @param newCamera The new camera to assign to the matching input blocks.
208
+ * @param updateCameraToUseForPointers If true (default), updates `scene.cameraToUseForPointers` to the new camera when a replacement occurs.
209
+ * @param rebuildGraph If true (default), rebuilds the graph asynchronously after the replacement.
210
+ * @returns A promise that resolves to true if at least one input block was updated, false otherwise.
211
+ */
212
+ async replaceCameraAsync(currentCamera, newCamera, updateCameraToUseForPointers = true, rebuildGraph = true) {
213
+ const inputBlocks = this.getInputBlocks();
214
+ let updated = false;
215
+ for (const block of inputBlocks) {
216
+ if (block.isCamera() && block.value === currentCamera) {
217
+ block.value = newCamera;
218
+ updated = true;
219
+ }
220
+ }
221
+ if (updated) {
222
+ if (updateCameraToUseForPointers) {
223
+ this._scene.cameraToUseForPointers = newCamera;
224
+ }
225
+ if (rebuildGraph) {
226
+ const currentAutoFill = this._options.autoFillExternalInputs;
227
+ try {
228
+ this._options.autoFillExternalInputs = false; // makes sure that the camera input block(s) we just updated don't get overwritten by autoFillExternalInputs
229
+ await this.buildAsync();
230
+ }
231
+ finally {
232
+ this._options.autoFillExternalInputs = currentAutoFill;
233
+ }
234
+ }
235
+ }
236
+ return updated;
237
+ }
238
+ /**
239
+ * Launch the node render graph editor
240
+ * @param config Define the configuration of the editor
241
+ * @returns a promise fulfilled when the node editor is visible
242
+ */
243
+ // eslint-disable-next-line @typescript-eslint/naming-convention
244
+ async edit(config) {
245
+ return await new Promise((resolve) => {
234
246
  this.BJSNODERENDERGRAPHEDITOR = this.BJSNODERENDERGRAPHEDITOR || this._getGlobalNodeRenderGraphEditor();
235
- this._createNodeEditor(config?.nodeRenderGraphEditorConfig);
236
- resolve();
247
+ if (typeof this.BJSNODERENDERGRAPHEDITOR == "undefined") {
248
+ const editorUrl = config && config.editorURL ? config.editorURL : _a.EditorURL;
249
+ // Load editor and add it to the DOM
250
+ Tools.LoadBabylonScript(editorUrl, () => {
251
+ this.BJSNODERENDERGRAPHEDITOR = this.BJSNODERENDERGRAPHEDITOR || this._getGlobalNodeRenderGraphEditor();
252
+ this._createNodeEditor(config?.nodeRenderGraphEditorConfig);
253
+ resolve();
254
+ });
255
+ }
256
+ else {
257
+ // Otherwise creates the editor
258
+ this._createNodeEditor(config?.nodeRenderGraphEditorConfig);
259
+ resolve();
260
+ }
237
261
  });
238
262
  }
239
- else {
240
- // Otherwise creates the editor
241
- this._createNodeEditor(config?.nodeRenderGraphEditorConfig);
242
- resolve();
243
- }
244
- });
245
- }
246
- /**
247
- * Creates the node editor window.
248
- * @param additionalConfig Additional configuration for the FGE
249
- */
250
- _createNodeEditor(additionalConfig) {
251
- const nodeEditorConfig = {
252
- nodeRenderGraph: this,
253
- customBlockDescriptions: NodeRenderGraph.CustomBlockDescriptions,
254
- ...additionalConfig,
255
- };
256
- this.BJSNODERENDERGRAPHEDITOR.NodeRenderGraphEditor.Show(nodeEditorConfig);
257
- }
258
- /**
259
- * Build the final list of blocks that will be executed by the "execute" method.
260
- * It also builds the underlying frame graph unless specified otherwise.
261
- * @param dontBuildFrameGraph If the underlying frame graph should not be built (default: false)
262
- * @param waitForReadiness If the method should wait for the frame graph to be ready before resolving (default: true). Note that this parameter has no effect if "dontBuildFrameGraph" is true.
263
- * @param setAsSceneFrameGraph If the built frame graph must be set as the scene's frame graph (default: true)
264
- */
265
- async buildAsync(dontBuildFrameGraph = false, waitForReadiness = true, setAsSceneFrameGraph = true) {
266
- if (!this.outputBlock) {
267
- throw new Error("You must define the outputBlock property before building the node render graph");
268
- }
269
- if (setAsSceneFrameGraph) {
270
- this._scene.frameGraph = this._frameGraph;
271
- }
272
- this._initializeBlock(this.outputBlock);
273
- this._frameGraph.clear();
274
- const state = new NodeRenderGraphBuildState();
275
- state.buildId = this._buildId;
276
- state.verbose = this._options.verbose;
277
- if (this._options.autoFillExternalInputs) {
278
- this._autoFillExternalInputs();
279
- }
280
- this.onBeforeBuildObservable.notifyObservers(this._frameGraph);
281
- // Make sure that one of the object renderer is flagged as the main object renderer
282
- const objectRendererBlocks = this.getBlocksByPredicate((block) => block instanceof NodeRenderGraphBaseObjectRendererBlock);
283
- if (objectRendererBlocks.length > 0 && !objectRendererBlocks.find((block) => block.isMainObjectRenderer)) {
284
- objectRendererBlocks[0].isMainObjectRenderer = true;
285
- }
286
- try {
287
- this.outputBlock.build(state);
288
- if (!dontBuildFrameGraph) {
289
- await this._frameGraph.buildAsync(waitForReadiness);
290
- }
291
- }
292
- finally {
293
- this._buildId = NodeRenderGraph._BuildIdGenerator++;
294
- state.emitErrors(this.onBuildErrorObservable);
295
- }
296
- }
297
- _autoFillExternalInputs() {
298
- const allInputs = this.getInputBlocks();
299
- const shadowLights = [];
300
- for (const light of this._scene.lights) {
301
- if (light.setShadowProjectionMatrix !== undefined) {
302
- shadowLights.push(light);
303
- }
304
- }
305
- let cameraIndex = 0;
306
- let lightIndex = 0;
307
- for (const input of allInputs) {
308
- if (!input.isExternal) {
309
- continue;
310
- }
311
- if (!input.isAnAncestorOfType("NodeRenderGraphOutputBlock")) {
312
- continue;
313
- }
314
- if ((input.type & NodeRenderGraphBlockConnectionPointTypes.TextureAllButBackBuffer) !== 0) {
315
- // nothing to do
316
- }
317
- else if (input.isCamera()) {
318
- const camera = this._scene.cameras[cameraIndex++] || this._scene.cameras[0];
319
- if (!this._scene.cameraToUseForPointers) {
320
- this._scene.cameraToUseForPointers = camera;
321
- }
322
- input.value = camera;
323
- }
324
- else if (input.isObjectList()) {
325
- input.value = { meshes: this._scene.meshes, particleSystems: this._scene.particleSystems };
326
- }
327
- else if (input.isShadowLight()) {
328
- if (lightIndex < shadowLights.length) {
329
- input.value = shadowLights[lightIndex++];
330
- lightIndex = lightIndex % shadowLights.length;
331
- }
332
- }
333
- }
334
- }
335
- /**
336
- * Returns a promise that resolves when the node render graph is ready to be executed
337
- * This method must be called after the graph has been built (NodeRenderGraph.build called)!
338
- * @param timeStep Time step in ms between retries (default is 16)
339
- * @param maxTimeout Maximum time in ms to wait for the graph to be ready (default is 10000)
340
- * @returns The promise that resolves when the graph is ready
341
- */
342
- async whenReadyAsync(timeStep = 16, maxTimeout = 10000) {
343
- this._frameGraph.pausedExecution = true;
344
- await this._frameGraph.whenReadyAsync(timeStep, maxTimeout);
345
- this._frameGraph.pausedExecution = false;
346
- }
347
- /**
348
- * Execute the graph (the graph must have been built before!)
349
- */
350
- execute() {
351
- this._frameGraph.execute();
352
- }
353
- _initializeBlock(node) {
354
- node.initialize();
355
- if (this._options.autoConfigure) {
356
- node.autoConfigure();
357
- }
358
- if (this.attachedBlocks.indexOf(node) === -1) {
359
- this.attachedBlocks.push(node);
360
- }
361
- for (const input of node.inputs) {
362
- const connectedPoint = input.connectedPoint;
363
- if (connectedPoint) {
364
- const block = connectedPoint.ownerBlock;
365
- if (block !== node) {
366
- this._initializeBlock(block);
367
- }
368
- }
369
- }
370
- }
371
- /**
372
- * Clear the current graph
373
- */
374
- clear() {
375
- this.outputBlock = null;
376
- this.attachedBlocks.length = 0;
377
- }
378
- /**
379
- * Remove a block from the current graph
380
- * @param block defines the block to remove
381
- */
382
- removeBlock(block) {
383
- const attachedBlockIndex = this.attachedBlocks.indexOf(block);
384
- if (attachedBlockIndex > -1) {
385
- this.attachedBlocks.splice(attachedBlockIndex, 1);
386
- }
387
- if (block === this.outputBlock) {
388
- this.outputBlock = null;
389
- }
390
- }
391
- /**
392
- * Clear the current graph and load a new one from a serialization object
393
- * @param source defines the JSON representation of the graph
394
- * @param merge defines whether or not the source must be merged or replace the current content
395
- */
396
- parseSerializedObject(source, merge = false) {
397
- if (!merge) {
398
- this.clear();
399
- }
400
- const map = {};
401
- // Create blocks
402
- for (const parsedBlock of source.blocks) {
403
- const blockType = GetClass(parsedBlock.customType);
404
- if (blockType) {
405
- const additionalConstructionParameters = parsedBlock.additionalConstructionParameters;
406
- const block = additionalConstructionParameters
407
- ? new blockType("", this._frameGraph, this._scene, ...additionalConstructionParameters)
408
- : new blockType("", this._frameGraph, this._scene);
409
- block._deserialize(parsedBlock);
410
- map[parsedBlock.id] = block;
411
- this.attachedBlocks.push(block);
412
- }
413
- }
414
- // Reconnect teleportation
415
- for (const block of this.attachedBlocks) {
416
- if (block.isTeleportOut) {
417
- const teleportOut = block;
418
- const id = teleportOut._tempEntryPointUniqueId;
419
- if (id) {
420
- const source = map[id];
421
- if (source) {
422
- source.attachToEndpoint(teleportOut);
423
- }
424
- }
425
- }
426
- }
427
- // Connections - Starts with input blocks only (except if in "merge" mode where we scan all blocks)
428
- for (let blockIndex = 0; blockIndex < source.blocks.length; blockIndex++) {
429
- const parsedBlock = source.blocks[blockIndex];
430
- const block = map[parsedBlock.id];
431
- if (!block) {
432
- continue;
433
- }
434
- if (block.inputs.length && parsedBlock.inputs.some((i) => i.targetConnectionName) && !merge) {
435
- continue;
436
- }
437
- this._restoreConnections(block, source, map);
438
- }
439
- // Outputs
440
- if (source.outputNodeId) {
441
- this.outputBlock = map[source.outputNodeId];
442
- }
443
- // UI related info
444
- if (source.locations || (source.editorData && source.editorData.locations)) {
445
- const locations = source.locations || source.editorData.locations;
446
- for (const location of locations) {
447
- if (map[location.blockId]) {
448
- location.blockId = map[location.blockId].uniqueId;
449
- }
450
- }
451
- if (merge && this.editorData && this.editorData.locations) {
452
- locations.concat(this.editorData.locations);
453
- }
454
- if (source.locations) {
455
- this.editorData = {
456
- locations: locations,
263
+ /**
264
+ * Creates the node editor window.
265
+ * @param additionalConfig Additional configuration for the FGE
266
+ */
267
+ _createNodeEditor(additionalConfig) {
268
+ const nodeEditorConfig = {
269
+ nodeRenderGraph: this,
270
+ customBlockDescriptions: _a.CustomBlockDescriptions,
271
+ ...additionalConfig,
457
272
  };
273
+ this.BJSNODERENDERGRAPHEDITOR.NodeRenderGraphEditor.Show(nodeEditorConfig);
274
+ }
275
+ /**
276
+ * Build the final list of blocks that will be executed by the "execute" method.
277
+ * It also builds the underlying frame graph unless specified otherwise.
278
+ * @param dontBuildFrameGraph If the underlying frame graph should not be built (default: false)
279
+ * @param waitForReadiness If the method should wait for the frame graph to be ready before resolving (default: true). Note that this parameter has no effect if "dontBuildFrameGraph" is true.
280
+ * @param setAsSceneFrameGraph If the built frame graph must be set as the scene's frame graph (default: true)
281
+ */
282
+ async buildAsync(dontBuildFrameGraph = false, waitForReadiness = true, setAsSceneFrameGraph = true) {
283
+ if (!this.outputBlock) {
284
+ throw new Error("You must define the outputBlock property before building the node render graph");
285
+ }
286
+ if (setAsSceneFrameGraph) {
287
+ this._scene.frameGraph = this._frameGraph;
288
+ }
289
+ this._initializeBlock(this.outputBlock);
290
+ this._frameGraph.clear();
291
+ const state = new NodeRenderGraphBuildState();
292
+ state.buildId = this._buildId;
293
+ state.verbose = this._options.verbose;
294
+ if (this._options.autoFillExternalInputs) {
295
+ this._autoFillExternalInputs();
296
+ }
297
+ this.onBeforeBuildObservable.notifyObservers(this._frameGraph);
298
+ // Make sure that one of the object renderer is flagged as the main object renderer
299
+ const objectRendererBlocks = this.getBlocksByPredicate((block) => block instanceof NodeRenderGraphBaseObjectRendererBlock);
300
+ if (objectRendererBlocks.length > 0 && !objectRendererBlocks.find((block) => block.isMainObjectRenderer)) {
301
+ objectRendererBlocks[0].isMainObjectRenderer = true;
302
+ }
303
+ try {
304
+ this.outputBlock.build(state);
305
+ if (!dontBuildFrameGraph) {
306
+ await this._frameGraph.buildAsync(waitForReadiness);
307
+ }
308
+ }
309
+ finally {
310
+ this._buildId = _a._BuildIdGenerator++;
311
+ state.emitErrors(this.onBuildErrorObservable);
312
+ }
458
313
  }
459
- else {
460
- this.editorData = source.editorData;
461
- this.editorData.locations = locations;
462
- }
463
- const blockMap = {};
464
- for (const key in map) {
465
- blockMap[key] = map[key].uniqueId;
466
- }
467
- this.editorData.map = blockMap;
468
- }
469
- this.comment = source.comment;
470
- }
471
- _restoreConnections(block, source, map) {
472
- for (const outputPoint of block.outputs) {
473
- for (const candidate of source.blocks) {
474
- const target = map[candidate.id];
475
- if (!target) {
476
- continue;
477
- }
478
- for (const input of candidate.inputs) {
479
- if (map[input.targetBlockId] === block && input.targetConnectionName === outputPoint.name) {
480
- const inputPoint = target.getInputByName(input.inputName);
481
- if (!inputPoint || inputPoint.isConnected) {
482
- continue;
483
- }
484
- outputPoint.connectTo(inputPoint, true);
485
- this._restoreConnections(target, source, map);
314
+ _autoFillExternalInputs() {
315
+ const allInputs = this.getInputBlocks();
316
+ const shadowLights = [];
317
+ for (const light of this._scene.lights) {
318
+ if (light.setShadowProjectionMatrix !== undefined) {
319
+ shadowLights.push(light);
320
+ }
321
+ }
322
+ let cameraIndex = 0;
323
+ let lightIndex = 0;
324
+ for (const input of allInputs) {
325
+ if (!input.isExternal) {
486
326
  continue;
487
327
  }
328
+ if (!input.isAnAncestorOfType("NodeRenderGraphOutputBlock")) {
329
+ continue;
330
+ }
331
+ if ((input.type & NodeRenderGraphBlockConnectionPointTypes.TextureAllButBackBuffer) !== 0) {
332
+ // nothing to do
333
+ }
334
+ else if (input.isCamera()) {
335
+ const camera = this._scene.cameras[cameraIndex++] || this._scene.cameras[0];
336
+ if (!this._scene.cameraToUseForPointers) {
337
+ this._scene.cameraToUseForPointers = camera;
338
+ }
339
+ input.value = camera;
340
+ }
341
+ else if (input.isObjectList()) {
342
+ input.value = { meshes: this._scene.meshes, particleSystems: this._scene.particleSystems };
343
+ }
344
+ else if (input.isShadowLight()) {
345
+ if (lightIndex < shadowLights.length) {
346
+ input.value = shadowLights[lightIndex++];
347
+ lightIndex = lightIndex % shadowLights.length;
348
+ }
349
+ }
488
350
  }
489
351
  }
490
- }
491
- }
492
- /**
493
- * Generate a string containing the code declaration required to create an equivalent of this node render graph
494
- * @returns a string
495
- */
496
- generateCode() {
497
- let alreadyDumped = [];
498
- const blocks = [];
499
- const uniqueNames = ["const", "var", "let"];
500
- // Gets active blocks
501
- if (this.outputBlock) {
502
- this._gatherBlocks(this.outputBlock, blocks);
503
- }
504
- // Generate
505
- const options = JSON.stringify(this._options);
506
- let codeString = `let nodeRenderGraph = new BABYLON.NodeRenderGraph("${this.name || "render graph"}", scene, ${options});\n`;
507
- for (const node of blocks) {
508
- if (node.isInput && alreadyDumped.indexOf(node) === -1) {
509
- codeString += node._dumpCode(uniqueNames, alreadyDumped) + "\n";
510
- }
511
- }
512
- if (this.outputBlock) {
513
- // Connections
514
- alreadyDumped = [];
515
- codeString += "// Connections\n";
516
- codeString += this.outputBlock._dumpCodeForOutputConnections(alreadyDumped);
517
- // Output nodes
518
- codeString += "// Output nodes\n";
519
- codeString += `nodeRenderGraph.outputBlock = ${this.outputBlock._codeVariableName};\n`;
520
- codeString += `nodeRenderGraph.build();\n`;
521
- }
522
- return codeString;
523
- }
524
- _gatherBlocks(rootNode, list) {
525
- if (list.indexOf(rootNode) !== -1) {
526
- return;
527
- }
528
- list.push(rootNode);
529
- for (const input of rootNode.inputs) {
530
- const connectedPoint = input.connectedPoint;
531
- if (connectedPoint) {
532
- const block = connectedPoint.ownerBlock;
533
- if (block !== rootNode) {
534
- this._gatherBlocks(block, list);
535
- }
536
- }
537
- }
538
- // Teleportation
539
- if (rootNode.isTeleportOut) {
540
- const block = rootNode;
541
- if (block.entryPoint) {
542
- this._gatherBlocks(block.entryPoint, list);
543
- }
544
- }
545
- }
546
- /**
547
- * Clear the current graph and set it to a default state
548
- */
549
- setToDefault() {
550
- this.clear();
551
- this.editorData = null;
552
- // Source textures
553
- const colorTexture = new NodeRenderGraphInputBlock("Color Texture", this._frameGraph, this._scene, NodeRenderGraphBlockConnectionPointTypes.Texture);
554
- colorTexture.creationOptions.options.samples = 4;
555
- const depthTexture = new NodeRenderGraphInputBlock("Depth Texture", this._frameGraph, this._scene, NodeRenderGraphBlockConnectionPointTypes.TextureDepthStencilAttachment);
556
- depthTexture.creationOptions.options.samples = 4;
557
- // Clear texture
558
- const clear = new NodeRenderGraphClearBlock("Clear", this._frameGraph, this._scene);
559
- clear.clearDepth = true;
560
- clear.clearStencil = true;
561
- colorTexture.output.connectTo(clear.target);
562
- depthTexture.output.connectTo(clear.depth);
563
- // Object list and culling
564
- const camera = new NodeRenderGraphInputBlock("Camera", this._frameGraph, this._scene, NodeRenderGraphBlockConnectionPointTypes.Camera);
565
- const objectList = new NodeRenderGraphInputBlock("Object List", this._frameGraph, this._scene, NodeRenderGraphBlockConnectionPointTypes.ObjectList);
566
- const cull = new NodeRenderGraphCullObjectsBlock("Cull", this._frameGraph, this._scene);
567
- camera.output.connectTo(cull.camera);
568
- objectList.output.connectTo(cull.objects);
569
- // Render objects
570
- const mainRendering = new NodeRenderGraphObjectRendererBlock("Main Rendering", this._frameGraph, this._scene);
571
- camera.output.connectTo(mainRendering.camera);
572
- cull.output.connectTo(mainRendering.objects);
573
- clear.output.connectTo(mainRendering.target);
574
- clear.outputDepth.connectTo(mainRendering.depth);
575
- // Final output
576
- const output = new NodeRenderGraphOutputBlock("Output", this._frameGraph, this._scene);
577
- mainRendering.output.connectTo(output.texture);
578
- this.outputBlock = output;
579
- }
580
- /**
581
- * Makes a duplicate of the current node render graph.
582
- * Note that you should call buildAsync() on the returned graph to make it usable.
583
- * @param name defines the name to use for the new node render graph
584
- * @returns the new node render graph
585
- */
586
- clone(name) {
587
- const serializationObject = this.serialize();
588
- const clone = SerializationHelper.Clone(() => new NodeRenderGraph(name, this._scene), this);
589
- clone.name = name;
590
- clone.parseSerializedObject(serializationObject);
591
- clone._buildId = this._buildId;
592
- return clone;
593
- }
594
- /**
595
- * Serializes this node render graph in a JSON representation
596
- * @param selectedBlocks defines the list of blocks to save (if null the whole node render graph will be saved)
597
- * @returns the serialized node render graph object
598
- */
599
- serialize(selectedBlocks) {
600
- const serializationObject = selectedBlocks ? {} : SerializationHelper.Serialize(this);
601
- serializationObject.editorData = JSON.parse(JSON.stringify(this.editorData)); // Copy
602
- let blocks = [];
603
- if (selectedBlocks) {
604
- blocks = selectedBlocks;
605
- }
606
- else {
607
- serializationObject.customType = "BABYLON.NodeRenderGraph";
608
- if (this.outputBlock) {
609
- serializationObject.outputNodeId = this.outputBlock.uniqueId;
610
- }
611
- }
612
- // Blocks
613
- serializationObject.blocks = [];
614
- for (const block of blocks) {
615
- serializationObject.blocks.push(block.serialize());
616
- }
617
- if (!selectedBlocks) {
618
- for (const block of this.attachedBlocks) {
619
- if (blocks.indexOf(block) !== -1) {
620
- continue;
621
- }
622
- serializationObject.blocks.push(block.serialize());
623
- }
624
- }
625
- return serializationObject;
626
- }
627
- /**
628
- * Disposes the resources
629
- */
630
- dispose() {
631
- for (const block of this.attachedBlocks) {
632
- block.dispose();
633
- }
634
- this._frameGraph.dispose();
635
- this._frameGraph = undefined;
636
- this._engine.onResizeObservable.remove(this._resizeObserver);
637
- this._resizeObserver = null;
638
- this.attachedBlocks.length = 0;
639
- this.onBuildErrorObservable.clear();
640
- }
641
- /**
642
- * Creates a new node render graph set to default basic configuration
643
- * @param name defines the name of the node render graph
644
- * @param scene defines the scene to use
645
- * @param nodeRenderGraphOptions defines options to use when creating the node render graph
646
- * @returns a new NodeRenderGraph
647
- */
648
- static async CreateDefaultAsync(name, scene, nodeRenderGraphOptions) {
649
- const renderGraph = new NodeRenderGraph(name, scene, nodeRenderGraphOptions);
650
- renderGraph.setToDefault();
651
- await renderGraph.buildAsync(false, true, false);
652
- return renderGraph;
653
- }
654
- /**
655
- * Creates a node render graph from parsed graph data
656
- * @param source defines the JSON representation of the node render graph
657
- * @param scene defines the scene to use
658
- * @param nodeRenderGraphOptions defines options to use when creating the node render
659
- * @param skipBuild defines whether to skip building the node render graph (default is true)
660
- * @returns a new node render graph
661
- */
662
- static Parse(source, scene, nodeRenderGraphOptions, skipBuild = true) {
663
- const renderGraph = SerializationHelper.Parse(() => new NodeRenderGraph(source.name, scene, nodeRenderGraphOptions), source, null);
664
- renderGraph.parseSerializedObject(source);
665
- if (!skipBuild) {
666
- void renderGraph.buildAsync();
667
- }
668
- return renderGraph;
669
- }
670
- /**
671
- * Creates a node render graph from a snippet saved by the node render graph editor
672
- * @param snippetId defines the snippet to load
673
- * @param scene defines the scene to use
674
- * @param nodeRenderGraphOptions defines options to use when creating the node render graph
675
- * @param nodeRenderGraph defines a node render graph to update (instead of creating a new one)
676
- * @param skipBuild defines whether to skip building the node render graph (default is true)
677
- * @returns a promise that will resolve to the new node render graph
678
- */
679
- // eslint-disable-next-line @typescript-eslint/promise-function-async, no-restricted-syntax
680
- static ParseFromSnippetAsync(snippetId, scene, nodeRenderGraphOptions, nodeRenderGraph, skipBuild = true) {
681
- if (snippetId === "_BLANK") {
682
- return NodeRenderGraph.CreateDefaultAsync("blank", scene, nodeRenderGraphOptions);
683
- }
684
- return new Promise((resolve, reject) => {
685
- const request = new WebRequest();
686
- request.addEventListener("readystatechange", async () => {
687
- if (request.readyState == 4) {
688
- if (request.status == 200) {
689
- const snippet = JSON.parse(JSON.parse(request.responseText).jsonPayload);
690
- const serializationObject = JSON.parse(snippet.nodeRenderGraph);
691
- if (!nodeRenderGraph) {
692
- nodeRenderGraph = SerializationHelper.Parse(() => new NodeRenderGraph(snippetId, scene, nodeRenderGraphOptions), serializationObject, null);
352
+ /**
353
+ * Returns a promise that resolves when the node render graph is ready to be executed
354
+ * This method must be called after the graph has been built (NodeRenderGraph.build called)!
355
+ * @param timeStep Time step in ms between retries (default is 16)
356
+ * @param maxTimeout Maximum time in ms to wait for the graph to be ready (default is 10000)
357
+ * @returns The promise that resolves when the graph is ready
358
+ */
359
+ async whenReadyAsync(timeStep = 16, maxTimeout = 10000) {
360
+ this._frameGraph.pausedExecution = true;
361
+ await this._frameGraph.whenReadyAsync(timeStep, maxTimeout);
362
+ this._frameGraph.pausedExecution = false;
363
+ }
364
+ /**
365
+ * Execute the graph (the graph must have been built before!)
366
+ */
367
+ execute() {
368
+ this._frameGraph.execute();
369
+ }
370
+ _initializeBlock(node) {
371
+ node.initialize();
372
+ if (this._options.autoConfigure) {
373
+ node.autoConfigure();
374
+ }
375
+ if (this.attachedBlocks.indexOf(node) === -1) {
376
+ this.attachedBlocks.push(node);
377
+ }
378
+ for (const input of node.inputs) {
379
+ const connectedPoint = input.connectedPoint;
380
+ if (connectedPoint) {
381
+ const block = connectedPoint.ownerBlock;
382
+ if (block !== node) {
383
+ this._initializeBlock(block);
693
384
  }
694
- nodeRenderGraph.parseSerializedObject(serializationObject);
695
- nodeRenderGraph.snippetId = snippetId;
696
- try {
697
- if (!skipBuild) {
698
- await nodeRenderGraph.buildAsync();
385
+ }
386
+ }
387
+ }
388
+ /**
389
+ * Clear the current graph
390
+ */
391
+ clear() {
392
+ this.outputBlock = null;
393
+ this.attachedBlocks.length = 0;
394
+ }
395
+ /**
396
+ * Remove a block from the current graph
397
+ * @param block defines the block to remove
398
+ */
399
+ removeBlock(block) {
400
+ const attachedBlockIndex = this.attachedBlocks.indexOf(block);
401
+ if (attachedBlockIndex > -1) {
402
+ this.attachedBlocks.splice(attachedBlockIndex, 1);
403
+ }
404
+ if (block === this.outputBlock) {
405
+ this.outputBlock = null;
406
+ }
407
+ }
408
+ /**
409
+ * Clear the current graph and load a new one from a serialization object
410
+ * @param source defines the JSON representation of the graph
411
+ * @param merge defines whether or not the source must be merged or replace the current content
412
+ */
413
+ parseSerializedObject(source, merge = false) {
414
+ if (!merge) {
415
+ this.clear();
416
+ }
417
+ const map = {};
418
+ // Create blocks
419
+ for (const parsedBlock of source.blocks) {
420
+ const blockType = GetClass(parsedBlock.customType);
421
+ if (blockType) {
422
+ const additionalConstructionParameters = parsedBlock.additionalConstructionParameters;
423
+ const block = additionalConstructionParameters
424
+ ? new blockType("", this._frameGraph, this._scene, ...additionalConstructionParameters)
425
+ : new blockType("", this._frameGraph, this._scene);
426
+ block._deserialize(parsedBlock);
427
+ map[parsedBlock.id] = block;
428
+ this.attachedBlocks.push(block);
429
+ }
430
+ }
431
+ // Reconnect teleportation
432
+ for (const block of this.attachedBlocks) {
433
+ if (block.isTeleportOut) {
434
+ const teleportOut = block;
435
+ const id = teleportOut._tempEntryPointUniqueId;
436
+ if (id) {
437
+ const source = map[id];
438
+ if (source) {
439
+ source.attachToEndpoint(teleportOut);
699
440
  }
700
- resolve(nodeRenderGraph);
701
441
  }
702
- catch (err) {
703
- // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
704
- reject(err);
442
+ }
443
+ }
444
+ // Connections - Starts with input blocks only (except if in "merge" mode where we scan all blocks)
445
+ for (let blockIndex = 0; blockIndex < source.blocks.length; blockIndex++) {
446
+ const parsedBlock = source.blocks[blockIndex];
447
+ const block = map[parsedBlock.id];
448
+ if (!block) {
449
+ continue;
450
+ }
451
+ if (block.inputs.length && parsedBlock.inputs.some((i) => i.targetConnectionName) && !merge) {
452
+ continue;
453
+ }
454
+ this._restoreConnections(block, source, map);
455
+ }
456
+ // Outputs
457
+ if (source.outputNodeId) {
458
+ this.outputBlock = map[source.outputNodeId];
459
+ }
460
+ // UI related info
461
+ if (source.locations || (source.editorData && source.editorData.locations)) {
462
+ const locations = source.locations || source.editorData.locations;
463
+ for (const location of locations) {
464
+ if (map[location.blockId]) {
465
+ location.blockId = map[location.blockId].uniqueId;
705
466
  }
706
467
  }
468
+ if (merge && this.editorData && this.editorData.locations) {
469
+ locations.concat(this.editorData.locations);
470
+ }
471
+ if (source.locations) {
472
+ this.editorData = {
473
+ locations: locations,
474
+ };
475
+ }
707
476
  else {
708
- // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
709
- reject("Unable to load the snippet " + snippetId);
710
- }
711
- }
712
- });
713
- request.open("GET", this.SnippetUrl + "/" + snippetId.replace(/#/g, "/"));
714
- request.send();
715
- });
716
- }
717
- }
718
- NodeRenderGraph._BuildIdGenerator = 0;
719
- /** Define the Url to load node editor script */
720
- NodeRenderGraph.EditorURL = `${Tools._DefaultCdnUrl}/v${Engine.Version}/nodeRenderGraphEditor/babylon.nodeRenderGraphEditor.js`;
721
- /** Define the Url to load snippets */
722
- NodeRenderGraph.SnippetUrl = `https://snippet.babylonjs.com`;
723
- /** Description of custom blocks to use in the node render graph editor */
724
- NodeRenderGraph.CustomBlockDescriptions = [];
725
- __decorate([
726
- serialize()
727
- ], NodeRenderGraph.prototype, "name", void 0);
728
- __decorate([
729
- serialize("comment")
730
- ], NodeRenderGraph.prototype, "comment", void 0);
477
+ this.editorData = source.editorData;
478
+ this.editorData.locations = locations;
479
+ }
480
+ const blockMap = {};
481
+ for (const key in map) {
482
+ blockMap[key] = map[key].uniqueId;
483
+ }
484
+ this.editorData.map = blockMap;
485
+ }
486
+ this.comment = source.comment;
487
+ }
488
+ _restoreConnections(block, source, map) {
489
+ for (const outputPoint of block.outputs) {
490
+ for (const candidate of source.blocks) {
491
+ const target = map[candidate.id];
492
+ if (!target) {
493
+ continue;
494
+ }
495
+ for (const input of candidate.inputs) {
496
+ if (map[input.targetBlockId] === block && input.targetConnectionName === outputPoint.name) {
497
+ const inputPoint = target.getInputByName(input.inputName);
498
+ if (!inputPoint || inputPoint.isConnected) {
499
+ continue;
500
+ }
501
+ outputPoint.connectTo(inputPoint, true);
502
+ this._restoreConnections(target, source, map);
503
+ continue;
504
+ }
505
+ }
506
+ }
507
+ }
508
+ }
509
+ /**
510
+ * Generate a string containing the code declaration required to create an equivalent of this node render graph
511
+ * @returns a string
512
+ */
513
+ generateCode() {
514
+ let alreadyDumped = [];
515
+ const blocks = [];
516
+ const uniqueNames = ["const", "var", "let"];
517
+ // Gets active blocks
518
+ if (this.outputBlock) {
519
+ this._gatherBlocks(this.outputBlock, blocks);
520
+ }
521
+ // Generate
522
+ const options = JSON.stringify(this._options);
523
+ let codeString = `let nodeRenderGraph = new BABYLON.NodeRenderGraph("${this.name || "render graph"}", scene, ${options});\n`;
524
+ for (const node of blocks) {
525
+ if (node.isInput && alreadyDumped.indexOf(node) === -1) {
526
+ codeString += node._dumpCode(uniqueNames, alreadyDumped) + "\n";
527
+ }
528
+ }
529
+ if (this.outputBlock) {
530
+ // Connections
531
+ alreadyDumped = [];
532
+ codeString += "// Connections\n";
533
+ codeString += this.outputBlock._dumpCodeForOutputConnections(alreadyDumped);
534
+ // Output nodes
535
+ codeString += "// Output nodes\n";
536
+ codeString += `nodeRenderGraph.outputBlock = ${this.outputBlock._codeVariableName};\n`;
537
+ codeString += `nodeRenderGraph.build();\n`;
538
+ }
539
+ return codeString;
540
+ }
541
+ _gatherBlocks(rootNode, list) {
542
+ if (list.indexOf(rootNode) !== -1) {
543
+ return;
544
+ }
545
+ list.push(rootNode);
546
+ for (const input of rootNode.inputs) {
547
+ const connectedPoint = input.connectedPoint;
548
+ if (connectedPoint) {
549
+ const block = connectedPoint.ownerBlock;
550
+ if (block !== rootNode) {
551
+ this._gatherBlocks(block, list);
552
+ }
553
+ }
554
+ }
555
+ // Teleportation
556
+ if (rootNode.isTeleportOut) {
557
+ const block = rootNode;
558
+ if (block.entryPoint) {
559
+ this._gatherBlocks(block.entryPoint, list);
560
+ }
561
+ }
562
+ }
563
+ /**
564
+ * Clear the current graph and set it to a default state
565
+ */
566
+ setToDefault() {
567
+ this.clear();
568
+ this.editorData = null;
569
+ // Source textures
570
+ const colorTexture = new NodeRenderGraphInputBlock("Color Texture", this._frameGraph, this._scene, NodeRenderGraphBlockConnectionPointTypes.Texture);
571
+ colorTexture.creationOptions.options.samples = 4;
572
+ const depthTexture = new NodeRenderGraphInputBlock("Depth Texture", this._frameGraph, this._scene, NodeRenderGraphBlockConnectionPointTypes.TextureDepthStencilAttachment);
573
+ depthTexture.creationOptions.options.samples = 4;
574
+ // Clear texture
575
+ const clear = new NodeRenderGraphClearBlock("Clear", this._frameGraph, this._scene);
576
+ clear.clearDepth = true;
577
+ clear.clearStencil = true;
578
+ colorTexture.output.connectTo(clear.target);
579
+ depthTexture.output.connectTo(clear.depth);
580
+ // Object list and culling
581
+ const camera = new NodeRenderGraphInputBlock("Camera", this._frameGraph, this._scene, NodeRenderGraphBlockConnectionPointTypes.Camera);
582
+ const objectList = new NodeRenderGraphInputBlock("Object List", this._frameGraph, this._scene, NodeRenderGraphBlockConnectionPointTypes.ObjectList);
583
+ const cull = new NodeRenderGraphCullObjectsBlock("Cull", this._frameGraph, this._scene);
584
+ camera.output.connectTo(cull.camera);
585
+ objectList.output.connectTo(cull.objects);
586
+ // Render objects
587
+ const mainRendering = new NodeRenderGraphObjectRendererBlock("Main Rendering", this._frameGraph, this._scene);
588
+ camera.output.connectTo(mainRendering.camera);
589
+ cull.output.connectTo(mainRendering.objects);
590
+ clear.output.connectTo(mainRendering.target);
591
+ clear.outputDepth.connectTo(mainRendering.depth);
592
+ // Final output
593
+ const output = new NodeRenderGraphOutputBlock("Output", this._frameGraph, this._scene);
594
+ mainRendering.output.connectTo(output.texture);
595
+ this.outputBlock = output;
596
+ }
597
+ /**
598
+ * Makes a duplicate of the current node render graph.
599
+ * Note that you should call buildAsync() on the returned graph to make it usable.
600
+ * @param name defines the name to use for the new node render graph
601
+ * @returns the new node render graph
602
+ */
603
+ clone(name) {
604
+ const serializationObject = this.serialize();
605
+ const clone = SerializationHelper.Clone(() => new _a(name, this._scene), this);
606
+ clone.name = name;
607
+ clone.parseSerializedObject(serializationObject);
608
+ clone._buildId = this._buildId;
609
+ return clone;
610
+ }
611
+ /**
612
+ * Serializes this node render graph in a JSON representation
613
+ * @param selectedBlocks defines the list of blocks to save (if null the whole node render graph will be saved)
614
+ * @returns the serialized node render graph object
615
+ */
616
+ serialize(selectedBlocks) {
617
+ const serializationObject = selectedBlocks ? {} : SerializationHelper.Serialize(this);
618
+ serializationObject.editorData = JSON.parse(JSON.stringify(this.editorData)); // Copy
619
+ let blocks = [];
620
+ if (selectedBlocks) {
621
+ blocks = selectedBlocks;
622
+ }
623
+ else {
624
+ serializationObject.customType = "BABYLON.NodeRenderGraph";
625
+ if (this.outputBlock) {
626
+ serializationObject.outputNodeId = this.outputBlock.uniqueId;
627
+ }
628
+ }
629
+ // Blocks
630
+ serializationObject.blocks = [];
631
+ for (const block of blocks) {
632
+ serializationObject.blocks.push(block.serialize());
633
+ }
634
+ if (!selectedBlocks) {
635
+ for (const block of this.attachedBlocks) {
636
+ if (blocks.indexOf(block) !== -1) {
637
+ continue;
638
+ }
639
+ serializationObject.blocks.push(block.serialize());
640
+ }
641
+ }
642
+ return serializationObject;
643
+ }
644
+ /**
645
+ * Disposes the resources
646
+ */
647
+ dispose() {
648
+ for (const block of this.attachedBlocks) {
649
+ block.dispose();
650
+ }
651
+ this._frameGraph.dispose();
652
+ this._frameGraph = undefined;
653
+ this._engine.onResizeObservable.remove(this._resizeObserver);
654
+ this._resizeObserver = null;
655
+ this.attachedBlocks.length = 0;
656
+ this.onBuildErrorObservable.clear();
657
+ }
658
+ /**
659
+ * Creates a new node render graph set to default basic configuration
660
+ * @param name defines the name of the node render graph
661
+ * @param scene defines the scene to use
662
+ * @param nodeRenderGraphOptions defines options to use when creating the node render graph
663
+ * @returns a new NodeRenderGraph
664
+ */
665
+ static async CreateDefaultAsync(name, scene, nodeRenderGraphOptions) {
666
+ const renderGraph = new _a(name, scene, nodeRenderGraphOptions);
667
+ renderGraph.setToDefault();
668
+ await renderGraph.buildAsync(false, true, false);
669
+ return renderGraph;
670
+ }
671
+ /**
672
+ * Creates a node render graph from parsed graph data
673
+ * @param source defines the JSON representation of the node render graph
674
+ * @param scene defines the scene to use
675
+ * @param nodeRenderGraphOptions defines options to use when creating the node render
676
+ * @param skipBuild defines whether to skip building the node render graph (default is true)
677
+ * @returns a new node render graph
678
+ */
679
+ static Parse(source, scene, nodeRenderGraphOptions, skipBuild = true) {
680
+ const renderGraph = SerializationHelper.Parse(() => new _a(source.name, scene, nodeRenderGraphOptions), source, null);
681
+ renderGraph.parseSerializedObject(source);
682
+ if (!skipBuild) {
683
+ void renderGraph.buildAsync();
684
+ }
685
+ return renderGraph;
686
+ }
687
+ /**
688
+ * Creates a node render graph from a snippet saved by the node render graph editor
689
+ * @param snippetId defines the snippet to load
690
+ * @param scene defines the scene to use
691
+ * @param nodeRenderGraphOptions defines options to use when creating the node render graph
692
+ * @param nodeRenderGraph defines a node render graph to update (instead of creating a new one)
693
+ * @param skipBuild defines whether to skip building the node render graph (default is true)
694
+ * @returns a promise that will resolve to the new node render graph
695
+ */
696
+ // eslint-disable-next-line @typescript-eslint/promise-function-async, no-restricted-syntax
697
+ static ParseFromSnippetAsync(snippetId, scene, nodeRenderGraphOptions, nodeRenderGraph, skipBuild = true) {
698
+ if (snippetId === "_BLANK") {
699
+ return _a.CreateDefaultAsync("blank", scene, nodeRenderGraphOptions);
700
+ }
701
+ return new Promise((resolve, reject) => {
702
+ const request = new WebRequest();
703
+ request.addEventListener("readystatechange", async () => {
704
+ if (request.readyState == 4) {
705
+ if (request.status == 200) {
706
+ const snippet = JSON.parse(JSON.parse(request.responseText).jsonPayload);
707
+ const serializationObject = JSON.parse(snippet.nodeRenderGraph);
708
+ if (!nodeRenderGraph) {
709
+ nodeRenderGraph = SerializationHelper.Parse(() => new _a(snippetId, scene, nodeRenderGraphOptions), serializationObject, null);
710
+ }
711
+ nodeRenderGraph.parseSerializedObject(serializationObject);
712
+ nodeRenderGraph.snippetId = snippetId;
713
+ try {
714
+ if (!skipBuild) {
715
+ await nodeRenderGraph.buildAsync();
716
+ }
717
+ resolve(nodeRenderGraph);
718
+ }
719
+ catch (err) {
720
+ // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
721
+ reject(err);
722
+ }
723
+ }
724
+ else {
725
+ // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
726
+ reject("Unable to load the snippet " + snippetId);
727
+ }
728
+ }
729
+ });
730
+ request.open("GET", this.SnippetUrl + "/" + snippetId.replace(/#/g, "/"));
731
+ request.send();
732
+ });
733
+ }
734
+ },
735
+ (() => {
736
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
737
+ _name_decorators = [serialize()];
738
+ _comment_decorators = [serialize("comment")];
739
+ __esDecorate(null, null, _name_decorators, { kind: "field", name: "name", static: false, private: false, access: { has: obj => "name" in obj, get: obj => obj.name, set: (obj, value) => { obj.name = value; } }, metadata: _metadata }, _name_initializers, _name_extraInitializers);
740
+ __esDecorate(null, null, _comment_decorators, { kind: "field", name: "comment", static: false, private: false, access: { has: obj => "comment" in obj, get: obj => obj.comment, set: (obj, value) => { obj.comment = value; } }, metadata: _metadata }, _comment_initializers, _comment_extraInitializers);
741
+ if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
742
+ })(),
743
+ _a._BuildIdGenerator = 0,
744
+ /** Define the Url to load node editor script */
745
+ _a.EditorURL = `${Tools._DefaultCdnUrl}/v${Engine.Version}/nodeRenderGraphEditor/babylon.nodeRenderGraphEditor.js`,
746
+ /** Define the Url to load snippets */
747
+ _a.SnippetUrl = `https://snippet.babylonjs.com`,
748
+ /** Description of custom blocks to use in the node render graph editor */
749
+ _a.CustomBlockDescriptions = [],
750
+ _a;
751
+ })();
752
+ export { NodeRenderGraph };
731
753
  //# sourceMappingURL=nodeRenderGraph.js.map