@onerjs/core 8.56.4 → 9.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (722) hide show
  1. package/Animations/animatable.core.js +36 -0
  2. package/Animations/animatable.core.js.map +1 -1
  3. package/Animations/animationGroup.pure.d.ts +61 -1
  4. package/Animations/animationGroup.pure.js +191 -2
  5. package/Animations/animationGroup.pure.js.map +1 -1
  6. package/Animations/index.d.ts +1 -0
  7. package/Animations/index.js +1 -0
  8. package/Animations/index.js.map +1 -1
  9. package/Animations/pure.d.ts +1 -0
  10. package/Animations/pure.js +1 -0
  11. package/Animations/pure.js.map +1 -1
  12. package/Animations/rootMotion.d.ts +560 -0
  13. package/Animations/rootMotion.js +1709 -0
  14. package/Animations/rootMotion.js.map +1 -0
  15. package/Animations/runtimeAnimation.d.ts +57 -0
  16. package/Animations/runtimeAnimation.js +127 -3
  17. package/Animations/runtimeAnimation.js.map +1 -1
  18. package/Cameras/arcRotateCamera.pure.d.ts +2 -0
  19. package/Cameras/arcRotateCamera.pure.js +2 -0
  20. package/Cameras/arcRotateCamera.pure.js.map +1 -1
  21. package/Cameras/targetCamera.pure.d.ts +2 -0
  22. package/Cameras/targetCamera.pure.js +13 -2
  23. package/Cameras/targetCamera.pure.js.map +1 -1
  24. package/Collisions/gpuPicker.js +5 -5
  25. package/Collisions/gpuPicker.js.map +1 -1
  26. package/Engines/AbstractEngine/abstractEngine.query.pure.js +4 -2
  27. package/Engines/AbstractEngine/abstractEngine.query.pure.js.map +1 -1
  28. package/Engines/AbstractEngine/abstractEngine.query.types.d.ts +11 -2
  29. package/Engines/AbstractEngine/abstractEngine.query.types.js.map +1 -1
  30. package/Engines/AbstractEngine/abstractEngine.renderPass.pure.js +1 -0
  31. package/Engines/AbstractEngine/abstractEngine.renderPass.pure.js.map +1 -1
  32. package/Engines/Extensions/engine.multiRender.pure.js +63 -0
  33. package/Engines/Extensions/engine.multiRender.pure.js.map +1 -1
  34. package/Engines/Extensions/engine.multiRender.types.d.ts +13 -0
  35. package/Engines/Extensions/engine.multiRender.types.js.map +1 -1
  36. package/Engines/Extensions/engine.prefilteredCubeTexture.pure.js +2 -2
  37. package/Engines/Extensions/engine.prefilteredCubeTexture.pure.js.map +1 -1
  38. package/Engines/Extensions/engine.prefilteredCubeTexture.types.d.ts +2 -1
  39. package/Engines/Extensions/engine.prefilteredCubeTexture.types.js.map +1 -1
  40. package/Engines/Extensions/index.d.ts +1 -0
  41. package/Engines/Extensions/index.js +1 -0
  42. package/Engines/Extensions/index.js.map +1 -1
  43. package/Engines/Extensions/pure.d.ts +1 -1
  44. package/Engines/Extensions/pure.js +1 -1
  45. package/Engines/Extensions/pure.js.map +1 -1
  46. package/Engines/Native/Extensions/nativeEngine.cubeTexture.pure.js +88 -39
  47. package/Engines/Native/Extensions/nativeEngine.cubeTexture.pure.js.map +1 -1
  48. package/Engines/Native/Extensions/nativeEngine.cubeTexture.types.d.ts +20 -2
  49. package/Engines/Native/Extensions/nativeEngine.cubeTexture.types.js.map +1 -1
  50. package/Engines/Native/nativeHardwareTexture.d.ts +8 -1
  51. package/Engines/Native/nativeHardwareTexture.js +7 -0
  52. package/Engines/Native/nativeHardwareTexture.js.map +1 -1
  53. package/Engines/Native/nativeHelpers.js +56 -1
  54. package/Engines/Native/nativeHelpers.js.map +1 -1
  55. package/Engines/Native/nativeInterfaces.d.ts +37 -8
  56. package/Engines/Native/nativeInterfaces.js.map +1 -1
  57. package/Engines/Native/nativeRenderTargetWrapper.d.ts +40 -0
  58. package/Engines/Native/nativeRenderTargetWrapper.js +265 -5
  59. package/Engines/Native/nativeRenderTargetWrapper.js.map +1 -1
  60. package/Engines/Processors/shaderCodeCursor.d.ts +1 -0
  61. package/Engines/Processors/shaderCodeCursor.js +40 -3
  62. package/Engines/Processors/shaderCodeCursor.js.map +1 -1
  63. package/Engines/WebGPU/Extensions/engine.multiRender.pure.js +4 -0
  64. package/Engines/WebGPU/Extensions/engine.multiRender.pure.js.map +1 -1
  65. package/Engines/WebGPU/Extensions/engine.multiRender.types.d.ts +13 -0
  66. package/Engines/WebGPU/Extensions/engine.multiRender.types.js.map +1 -1
  67. package/Engines/WebGPU/Extensions/engine.query.pure.js +11 -3
  68. package/Engines/WebGPU/Extensions/engine.query.pure.js.map +1 -1
  69. package/Engines/WebGPU/Extensions/engine.renderTarget.pure.js +1 -0
  70. package/Engines/WebGPU/Extensions/engine.renderTarget.pure.js.map +1 -1
  71. package/Engines/WebGPU/Extensions/index.d.ts +1 -0
  72. package/Engines/WebGPU/Extensions/index.js +1 -0
  73. package/Engines/WebGPU/Extensions/index.js.map +1 -1
  74. package/Engines/WebGPU/Extensions/pure.d.ts +1 -1
  75. package/Engines/WebGPU/Extensions/pure.js +1 -1
  76. package/Engines/WebGPU/Extensions/pure.js.map +1 -1
  77. package/Engines/WebGPU/webgpuBundleList.d.ts +2 -0
  78. package/Engines/WebGPU/webgpuBundleList.js +4 -0
  79. package/Engines/WebGPU/webgpuBundleList.js.map +1 -1
  80. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +5 -2
  81. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  82. package/Engines/WebGPU/webgpuHardwareTexture.js +3 -1
  83. package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
  84. package/Engines/WebGPU/webgpuOcclusionQuery.js +1 -1
  85. package/Engines/WebGPU/webgpuOcclusionQuery.js.map +1 -1
  86. package/Engines/WebGPU/webgpuSnapshotRendering.d.ts +4 -0
  87. package/Engines/WebGPU/webgpuSnapshotRendering.js +40 -7
  88. package/Engines/WebGPU/webgpuSnapshotRendering.js.map +1 -1
  89. package/Engines/WebGPU/webgpuTextureHelper.d.ts +1 -1
  90. package/Engines/WebGPU/webgpuTextureHelper.js +2 -2
  91. package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
  92. package/Engines/WebGPU/webgpuTextureManager.d.ts +2 -0
  93. package/Engines/WebGPU/webgpuTextureManager.js +286 -13
  94. package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
  95. package/Engines/abstractEngine.pure.d.ts +17 -1
  96. package/Engines/abstractEngine.pure.js +17 -5
  97. package/Engines/abstractEngine.pure.js.map +1 -1
  98. package/Engines/constants.d.ts +4 -0
  99. package/Engines/constants.js +4 -0
  100. package/Engines/constants.js.map +1 -1
  101. package/Engines/engine.pure.d.ts +0 -1
  102. package/Engines/engine.pure.js +0 -7
  103. package/Engines/engine.pure.js.map +1 -1
  104. package/Engines/nativeEngine.pure.js +1 -1
  105. package/Engines/nativeEngine.pure.js.map +1 -1
  106. package/Engines/thinEngine.pure.d.ts +15 -0
  107. package/Engines/thinEngine.pure.js +61 -14
  108. package/Engines/thinEngine.pure.js.map +1 -1
  109. package/Engines/thinNativeEngine.pure.d.ts +218 -17
  110. package/Engines/thinNativeEngine.pure.js +1438 -165
  111. package/Engines/thinNativeEngine.pure.js.map +1 -1
  112. package/Engines/thinWebGPUEngine.d.ts +4 -0
  113. package/Engines/thinWebGPUEngine.js +16 -2
  114. package/Engines/thinWebGPUEngine.js.map +1 -1
  115. package/Engines/webgpuEngine.pure.d.ts +17 -3
  116. package/Engines/webgpuEngine.pure.js +56 -13
  117. package/Engines/webgpuEngine.pure.js.map +1 -1
  118. package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.pure.js +2 -2
  119. package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.pure.js.map +1 -1
  120. package/FlowGraph/Blocks/Data/Transformers/flowGraphJsonPointerParserBlock.pure.d.ts +10 -0
  121. package/FlowGraph/Blocks/Data/Transformers/flowGraphJsonPointerParserBlock.pure.js +24 -12
  122. package/FlowGraph/Blocks/Data/Transformers/flowGraphJsonPointerParserBlock.pure.js.map +1 -1
  123. package/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.d.ts +11 -2
  124. package/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.js +1 -1
  125. package/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.js.map +1 -1
  126. package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.pure.d.ts +7 -0
  127. package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.pure.js +43 -0
  128. package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.pure.js.map +1 -1
  129. package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.pure.d.ts +9 -1
  130. package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.pure.js +6 -8
  131. package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.pure.js.map +1 -1
  132. package/FlowGraph/Blocks/Event/flowGraphPointerOutEventBlock.pure.d.ts +2 -0
  133. package/FlowGraph/Blocks/Event/flowGraphPointerOutEventBlock.pure.js +5 -1
  134. package/FlowGraph/Blocks/Event/flowGraphPointerOutEventBlock.pure.js.map +1 -1
  135. package/FlowGraph/Blocks/Event/flowGraphPointerOverEventBlock.pure.d.ts +2 -0
  136. package/FlowGraph/Blocks/Event/flowGraphPointerOverEventBlock.pure.js +5 -1
  137. package/FlowGraph/Blocks/Event/flowGraphPointerOverEventBlock.pure.js.map +1 -1
  138. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.d.ts +9 -0
  139. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.js +34 -9
  140. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.js.map +1 -1
  141. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.d.ts +2 -0
  142. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.js +4 -0
  143. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.js.map +1 -1
  144. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.d.ts +18 -4
  145. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.js +24 -6
  146. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.js.map +1 -1
  147. package/FlowGraph/Blocks/Event/flowGraphSendCustomEventBlock.pure.js +19 -7
  148. package/FlowGraph/Blocks/Event/flowGraphSendCustomEventBlock.pure.js.map +1 -1
  149. package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.pure.js +3 -3
  150. package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.pure.js.map +1 -1
  151. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.d.ts +20 -2
  152. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.js +85 -25
  153. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.js.map +1 -1
  154. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.pure.d.ts +16 -1
  155. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.pure.js +64 -14
  156. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.pure.js.map +1 -1
  157. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCancelDelayBlock.pure.d.ts +12 -1
  158. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCancelDelayBlock.pure.js +8 -0
  159. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCancelDelayBlock.pure.js.map +1 -1
  160. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.pure.js +4 -1
  161. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.pure.js.map +1 -1
  162. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.pure.d.ts +12 -1
  163. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.pure.js +5 -1
  164. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.pure.js.map +1 -1
  165. package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.pure.js +64 -16
  166. package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.pure.js.map +1 -1
  167. package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.pure.d.ts +2 -0
  168. package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.pure.js +14 -2
  169. package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.pure.js.map +1 -1
  170. package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.pure.d.ts +5 -1
  171. package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.pure.js +23 -8
  172. package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.pure.js.map +1 -1
  173. package/FlowGraph/CustomTypes/flowGraphInteger.pure.d.ts +5 -0
  174. package/FlowGraph/CustomTypes/flowGraphInteger.pure.js +7 -0
  175. package/FlowGraph/CustomTypes/flowGraphInteger.pure.js.map +1 -1
  176. package/FlowGraph/CustomTypes/flowGraphMatrix.d.ts +10 -0
  177. package/FlowGraph/CustomTypes/flowGraphMatrix.js +14 -0
  178. package/FlowGraph/CustomTypes/flowGraphMatrix.js.map +1 -1
  179. package/FlowGraph/flowGraph.d.ts +6 -1
  180. package/FlowGraph/flowGraph.js +41 -9
  181. package/FlowGraph/flowGraph.js.map +1 -1
  182. package/FlowGraph/flowGraphAnimationHelpers.d.ts +24 -0
  183. package/FlowGraph/flowGraphAnimationHelpers.js +21 -0
  184. package/FlowGraph/flowGraphAnimationHelpers.js.map +1 -0
  185. package/FlowGraph/flowGraphBlock.js +3 -0
  186. package/FlowGraph/flowGraphBlock.js.map +1 -1
  187. package/FlowGraph/flowGraphConnection.d.ts +7 -0
  188. package/FlowGraph/flowGraphConnection.js +7 -0
  189. package/FlowGraph/flowGraphConnection.js.map +1 -1
  190. package/FlowGraph/flowGraphContext.d.ts +2 -1
  191. package/FlowGraph/flowGraphContext.js +5 -3
  192. package/FlowGraph/flowGraphContext.js.map +1 -1
  193. package/FlowGraph/flowGraphCoordinator.d.ts +15 -1
  194. package/FlowGraph/flowGraphCoordinator.js +47 -16
  195. package/FlowGraph/flowGraphCoordinator.js.map +1 -1
  196. package/FlowGraph/flowGraphEventBlock.d.ts +5 -0
  197. package/FlowGraph/flowGraphEventBlock.js +7 -0
  198. package/FlowGraph/flowGraphEventBlock.js.map +1 -1
  199. package/FlowGraph/flowGraphHostResolver.d.ts +2 -1
  200. package/FlowGraph/flowGraphHostResolver.js.map +1 -1
  201. package/FlowGraph/flowGraphParser.js +60 -2
  202. package/FlowGraph/flowGraphParser.js.map +1 -1
  203. package/FlowGraph/flowGraphValidator.js +0 -4
  204. package/FlowGraph/flowGraphValidator.js.map +1 -1
  205. package/FlowGraph/index.d.ts +2 -0
  206. package/FlowGraph/index.js +2 -0
  207. package/FlowGraph/index.js.map +1 -1
  208. package/FlowGraph/pure.d.ts +2 -0
  209. package/FlowGraph/pure.js +2 -0
  210. package/FlowGraph/pure.js.map +1 -1
  211. package/FlowGraph/serialization.d.ts +4 -2
  212. package/FlowGraph/serialization.js +12 -24
  213. package/FlowGraph/serialization.js.map +1 -1
  214. package/FlowGraph/typeDefinitions.d.ts +9 -1
  215. package/FlowGraph/typeDefinitions.js.map +1 -1
  216. package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.d.ts +5 -0
  217. package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.js +8 -0
  218. package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.js.map +1 -0
  219. package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.pure.d.ts +87 -0
  220. package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.pure.js +295 -0
  221. package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.pure.js.map +1 -0
  222. package/FrameGraph/Node/Blocks/PostProcesses/pure.d.ts +1 -0
  223. package/FrameGraph/Node/Blocks/PostProcesses/pure.js +1 -0
  224. package/FrameGraph/Node/Blocks/PostProcesses/pure.js.map +1 -1
  225. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +4 -4
  226. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
  227. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.d.ts +5 -1
  228. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js +13 -1
  229. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js.map +1 -1
  230. package/FrameGraph/Node/Blocks/Textures/minMaxReducerBlock.d.ts +1 -0
  231. package/FrameGraph/Node/Blocks/Textures/minMaxReducerBlock.js +4 -0
  232. package/FrameGraph/Node/Blocks/Textures/minMaxReducerBlock.js.map +1 -0
  233. package/FrameGraph/Node/Blocks/Textures/minMaxReducerBlock.pure.d.ts +54 -0
  234. package/FrameGraph/Node/Blocks/Textures/minMaxReducerBlock.pure.js +155 -0
  235. package/FrameGraph/Node/Blocks/Textures/minMaxReducerBlock.pure.js.map +1 -0
  236. package/FrameGraph/Node/Blocks/Textures/pure.d.ts +1 -0
  237. package/FrameGraph/Node/Blocks/Textures/pure.js +1 -0
  238. package/FrameGraph/Node/Blocks/Textures/pure.js.map +1 -1
  239. package/FrameGraph/Node/Blocks/allBlocks.pure.js +4 -0
  240. package/FrameGraph/Node/Blocks/allBlocks.pure.js.map +1 -1
  241. package/FrameGraph/Node/Blocks/index.d.ts +2 -0
  242. package/FrameGraph/Node/Blocks/index.js +2 -0
  243. package/FrameGraph/Node/Blocks/index.js.map +1 -1
  244. package/FrameGraph/Node/Blocks/inputBlock.pure.js +20 -1
  245. package/FrameGraph/Node/Blocks/inputBlock.pure.js.map +1 -1
  246. package/FrameGraph/Node/Blocks/pure.d.ts +2 -0
  247. package/FrameGraph/Node/Blocks/pure.js +2 -0
  248. package/FrameGraph/Node/Blocks/pure.js.map +1 -1
  249. package/FrameGraph/Node/Types/nodeRenderGraphTypes.d.ts +4 -2
  250. package/FrameGraph/Node/Types/nodeRenderGraphTypes.js +4 -2
  251. package/FrameGraph/Node/Types/nodeRenderGraphTypes.js.map +1 -1
  252. package/FrameGraph/Node/nodeRenderGraph.js +1 -1
  253. package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
  254. package/FrameGraph/Tasks/Layers/selectionOutlineTask.js +1 -0
  255. package/FrameGraph/Tasks/Layers/selectionOutlineTask.js.map +1 -1
  256. package/FrameGraph/Tasks/Misc/cullObjectsTask.js +5 -1
  257. package/FrameGraph/Tasks/Misc/cullObjectsTask.js.map +1 -1
  258. package/FrameGraph/Tasks/Misc/lightingVolumeTask.js +1 -0
  259. package/FrameGraph/Tasks/Misc/lightingVolumeTask.js.map +1 -1
  260. package/FrameGraph/Tasks/Misc/minMaxReducerTask.d.ts +62 -0
  261. package/FrameGraph/Tasks/Misc/minMaxReducerTask.js +159 -0
  262. package/FrameGraph/Tasks/Misc/minMaxReducerTask.js.map +1 -0
  263. package/FrameGraph/Tasks/PostProcesses/meshBlendingTask.d.ts +69 -0
  264. package/FrameGraph/Tasks/PostProcesses/meshBlendingTask.js +223 -0
  265. package/FrameGraph/Tasks/PostProcesses/meshBlendingTask.js.map +1 -0
  266. package/FrameGraph/Tasks/Rendering/geometryRendererTask.d.ts +25 -3
  267. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +72 -34
  268. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
  269. package/FrameGraph/Tasks/Rendering/objectRendererTask.js +3 -1
  270. package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
  271. package/FrameGraph/frameGraph.d.ts +4 -0
  272. package/FrameGraph/frameGraph.js +14 -0
  273. package/FrameGraph/frameGraph.js.map +1 -1
  274. package/FrameGraph/frameGraphObjectList.d.ts +6 -1
  275. package/FrameGraph/frameGraphObjectList.js.map +1 -1
  276. package/FrameGraph/frameGraphRenderContext.d.ts +3 -1
  277. package/FrameGraph/frameGraphRenderContext.js +5 -5
  278. package/FrameGraph/frameGraphRenderContext.js.map +1 -1
  279. package/FrameGraph/index.d.ts +2 -0
  280. package/FrameGraph/index.js +2 -0
  281. package/FrameGraph/index.js.map +1 -1
  282. package/FrameGraph/pure.d.ts +2 -0
  283. package/FrameGraph/pure.js +2 -0
  284. package/FrameGraph/pure.js.map +1 -1
  285. package/Inputs/scene.inputManager.d.ts +4 -0
  286. package/Inputs/scene.inputManager.js +50 -8
  287. package/Inputs/scene.inputManager.js.map +1 -1
  288. package/Lights/Clustered/clusteredLightingSceneComponent.pure.d.ts +5 -0
  289. package/Lights/Clustered/clusteredLightingSceneComponent.pure.js +22 -1
  290. package/Lights/Clustered/clusteredLightingSceneComponent.pure.js.map +1 -1
  291. package/Lights/Shadows/cascadedShadowGenerator.pure.js +7 -3
  292. package/Lights/Shadows/cascadedShadowGenerator.pure.js.map +1 -1
  293. package/Materials/GaussianSplatting/gaussianPointSplattingBlitMaterial.d.ts +7 -0
  294. package/Materials/GaussianSplatting/gaussianPointSplattingBlitMaterial.js +8 -0
  295. package/Materials/GaussianSplatting/gaussianPointSplattingBlitMaterial.js.map +1 -0
  296. package/Materials/GaussianSplatting/gaussianPointSplattingBlitMaterial.pure.d.ts +54 -0
  297. package/Materials/GaussianSplatting/gaussianPointSplattingBlitMaterial.pure.js +81 -0
  298. package/Materials/GaussianSplatting/gaussianPointSplattingBlitMaterial.pure.js.map +1 -0
  299. package/Materials/GaussianSplatting/gaussianPointSplattingDepthBlitMaterial.d.ts +7 -0
  300. package/Materials/GaussianSplatting/gaussianPointSplattingDepthBlitMaterial.js +8 -0
  301. package/Materials/GaussianSplatting/gaussianPointSplattingDepthBlitMaterial.js.map +1 -0
  302. package/Materials/GaussianSplatting/gaussianPointSplattingDepthBlitMaterial.pure.d.ts +60 -0
  303. package/Materials/GaussianSplatting/gaussianPointSplattingDepthBlitMaterial.pure.js +90 -0
  304. package/Materials/GaussianSplatting/gaussianPointSplattingDepthBlitMaterial.pure.js.map +1 -0
  305. package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.d.ts +31 -0
  306. package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.js +103 -5
  307. package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.js.map +1 -1
  308. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js +6 -6
  309. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js.map +1 -1
  310. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.d.ts +26 -1
  311. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js +153 -49
  312. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js.map +1 -1
  313. package/Materials/GaussianSplatting/gaussianSplattingOverdrawMaterialPlugin.d.ts +1 -0
  314. package/Materials/GaussianSplatting/gaussianSplattingOverdrawMaterialPlugin.js +4 -0
  315. package/Materials/GaussianSplatting/gaussianSplattingOverdrawMaterialPlugin.js.map +1 -0
  316. package/Materials/GaussianSplatting/gaussianSplattingOverdrawMaterialPlugin.pure.d.ts +83 -0
  317. package/Materials/GaussianSplatting/gaussianSplattingOverdrawMaterialPlugin.pure.js +191 -0
  318. package/Materials/GaussianSplatting/gaussianSplattingOverdrawMaterialPlugin.pure.js.map +1 -0
  319. package/Materials/GaussianSplatting/gaussianSplattingSizeMaterialPlugin.d.ts +1 -0
  320. package/Materials/GaussianSplatting/gaussianSplattingSizeMaterialPlugin.js +4 -0
  321. package/Materials/GaussianSplatting/gaussianSplattingSizeMaterialPlugin.js.map +1 -0
  322. package/Materials/GaussianSplatting/gaussianSplattingSizeMaterialPlugin.pure.d.ts +62 -0
  323. package/Materials/GaussianSplatting/gaussianSplattingSizeMaterialPlugin.pure.js +125 -0
  324. package/Materials/GaussianSplatting/gaussianSplattingSizeMaterialPlugin.pure.js.map +1 -0
  325. package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js +5 -5
  326. package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js.map +1 -1
  327. package/Materials/GaussianSplatting/pure.d.ts +4 -0
  328. package/Materials/GaussianSplatting/pure.js +4 -0
  329. package/Materials/GaussianSplatting/pure.js.map +1 -1
  330. package/Materials/Node/Blocks/Dual/imageSourceBlock.pure.d.ts +1 -0
  331. package/Materials/Node/Blocks/Dual/imageSourceBlock.pure.js +12 -0
  332. package/Materials/Node/Blocks/Dual/imageSourceBlock.pure.js.map +1 -1
  333. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js +11 -1
  334. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js.map +1 -1
  335. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js +17 -2
  336. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js.map +1 -1
  337. package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js +2 -2
  338. package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js.map +1 -1
  339. package/Materials/Node/nodeMaterial.pure.d.ts +4 -0
  340. package/Materials/Node/nodeMaterial.pure.js +4 -0
  341. package/Materials/Node/nodeMaterial.pure.js.map +1 -1
  342. package/Materials/Node/nodeMaterialBuildState.d.ts +1 -1
  343. package/Materials/Node/nodeMaterialBuildState.js +25 -3
  344. package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
  345. package/Materials/PBR/openpbrMaterial.pure.d.ts +2 -0
  346. package/Materials/PBR/pbrBaseMaterial.pure.d.ts +2 -0
  347. package/Materials/Textures/Procedurals/proceduralTexture.pure.d.ts +14 -14
  348. package/Materials/Textures/Procedurals/proceduralTexture.pure.js +37 -13
  349. package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
  350. package/Materials/Textures/baseTexture.pure.js +3 -0
  351. package/Materials/Textures/baseTexture.pure.js.map +1 -1
  352. package/Materials/Textures/cubeTexture.pure.js +1 -1
  353. package/Materials/Textures/cubeTexture.pure.js.map +1 -1
  354. package/Materials/Textures/internalTexture.d.ts +8 -1
  355. package/Materials/Textures/internalTexture.js +9 -2
  356. package/Materials/Textures/internalTexture.js.map +1 -1
  357. package/Materials/Textures/mirrorTexture.pure.js +3 -1
  358. package/Materials/Textures/mirrorTexture.pure.js.map +1 -1
  359. package/Materials/Textures/rawTexture2DArray.functions.d.ts +3 -3
  360. package/Materials/Textures/rawTexture2DArray.functions.js.map +1 -1
  361. package/Materials/Textures/rawTexture3D.d.ts +1 -1
  362. package/Materials/Textures/rawTexture3D.js +1 -1
  363. package/Materials/Textures/rawTexture3D.js.map +1 -1
  364. package/Materials/Textures/texture.pure.js +1 -1
  365. package/Materials/Textures/texture.pure.js.map +1 -1
  366. package/Materials/Textures/textureHelper.functions.d.ts +14 -0
  367. package/Materials/Textures/textureHelper.functions.js +24 -0
  368. package/Materials/Textures/textureHelper.functions.js.map +1 -1
  369. package/Materials/ditheredTileFadeMaterialPlugin.d.ts +210 -0
  370. package/Materials/ditheredTileFadeMaterialPlugin.js +509 -0
  371. package/Materials/ditheredTileFadeMaterialPlugin.js.map +1 -0
  372. package/Materials/effectRenderer.pure.d.ts +4 -0
  373. package/Materials/effectRenderer.pure.js +3 -2
  374. package/Materials/effectRenderer.pure.js.map +1 -1
  375. package/Materials/index.d.ts +5 -0
  376. package/Materials/index.js +5 -0
  377. package/Materials/index.js.map +1 -1
  378. package/Materials/material.pure.js +25 -12
  379. package/Materials/material.pure.js.map +1 -1
  380. package/Materials/materialHelper.geometryrendering.d.ts +46 -1
  381. package/Materials/materialHelper.geometryrendering.js +105 -8
  382. package/Materials/materialHelper.geometryrendering.js.map +1 -1
  383. package/Materials/prepass.defines.d.ts +2 -0
  384. package/Materials/prepass.defines.js +2 -0
  385. package/Materials/prepass.defines.js.map +1 -1
  386. package/Materials/pure.d.ts +5 -0
  387. package/Materials/pure.js +5 -0
  388. package/Materials/pure.js.map +1 -1
  389. package/Materials/standardMaterial.pure.d.ts +10 -0
  390. package/Materials/standardMaterial.pure.js +30 -5
  391. package/Materials/standardMaterial.pure.js.map +1 -1
  392. package/Meshes/Builders/polygonBuilder.pure.d.ts +4 -0
  393. package/Meshes/Builders/polygonBuilder.pure.js +3 -0
  394. package/Meshes/Builders/polygonBuilder.pure.js.map +1 -1
  395. package/Meshes/GaussianSplatting/gaussianPointSplattingController.d.ts +8 -0
  396. package/Meshes/GaussianSplatting/gaussianPointSplattingController.js +11 -0
  397. package/Meshes/GaussianSplatting/gaussianPointSplattingController.js.map +1 -0
  398. package/Meshes/GaussianSplatting/gaussianPointSplattingController.pure.d.ts +231 -0
  399. package/Meshes/GaussianSplatting/gaussianPointSplattingController.pure.js +1212 -0
  400. package/Meshes/GaussianSplatting/gaussianPointSplattingController.pure.js.map +1 -0
  401. package/Meshes/GaussianSplatting/gaussianPointSplattingRenderer.d.ts +14 -0
  402. package/Meshes/GaussianSplatting/gaussianPointSplattingRenderer.js +15 -0
  403. package/Meshes/GaussianSplatting/gaussianPointSplattingRenderer.js.map +1 -0
  404. package/Meshes/GaussianSplatting/gaussianPointSplattingRenderer.pure.d.ts +285 -0
  405. package/Meshes/GaussianSplatting/gaussianPointSplattingRenderer.pure.js +812 -0
  406. package/Meshes/GaussianSplatting/gaussianPointSplattingRenderer.pure.js.map +1 -0
  407. package/Meshes/GaussianSplatting/gaussianSplatting.functions.d.ts +19 -0
  408. package/Meshes/GaussianSplatting/gaussianSplatting.functions.js +23 -0
  409. package/Meshes/GaussianSplatting/gaussianSplatting.functions.js.map +1 -0
  410. package/Meshes/GaussianSplatting/gaussianSplattingMesh.d.ts +1 -0
  411. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +2 -0
  412. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
  413. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.d.ts +163 -14
  414. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +239 -24
  415. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
  416. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +34 -4
  417. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +125 -25
  418. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
  419. package/Meshes/GaussianSplatting/pure.d.ts +2 -0
  420. package/Meshes/GaussianSplatting/pure.js +2 -0
  421. package/Meshes/GaussianSplatting/pure.js.map +1 -1
  422. package/Meshes/Node/Blocks/booleanGeometryBlock.pure.js +25 -11
  423. package/Meshes/Node/Blocks/booleanGeometryBlock.pure.js.map +1 -1
  424. package/Meshes/abstractMesh.pure.d.ts +30 -0
  425. package/Meshes/abstractMesh.pure.js +54 -0
  426. package/Meshes/abstractMesh.pure.js.map +1 -1
  427. package/Meshes/index.d.ts +2 -0
  428. package/Meshes/index.js +2 -0
  429. package/Meshes/index.js.map +1 -1
  430. package/Meshes/instancedMesh.pure.d.ts +5 -0
  431. package/Meshes/instancedMesh.pure.js +12 -0
  432. package/Meshes/instancedMesh.pure.js.map +1 -1
  433. package/Meshes/mesh.pure.js +23 -8
  434. package/Meshes/mesh.pure.js.map +1 -1
  435. package/Meshes/meshBlendingTag.d.ts +47 -0
  436. package/Meshes/meshBlendingTag.js +64 -0
  437. package/Meshes/meshBlendingTag.js.map +1 -0
  438. package/Meshes/polygonMesh.js +2 -2
  439. package/Meshes/polygonMesh.js.map +1 -1
  440. package/Meshes/pure.d.ts +2 -0
  441. package/Meshes/pure.js +2 -0
  442. package/Meshes/pure.js.map +1 -1
  443. package/Meshes/subMesh.pure.d.ts +11 -2
  444. package/Meshes/subMesh.pure.js +20 -5
  445. package/Meshes/subMesh.pure.js.map +1 -1
  446. package/Meshes/thinInstanceMesh.pure.js +1 -0
  447. package/Meshes/thinInstanceMesh.pure.js.map +1 -1
  448. package/Misc/andOrNotEvaluator.js +4 -0
  449. package/Misc/andOrNotEvaluator.js.map +1 -1
  450. package/Misc/fileTools.pure.js +21 -0
  451. package/Misc/fileTools.pure.js.map +1 -1
  452. package/Misc/minMaxReducer.pure.d.ts +6 -0
  453. package/Misc/minMaxReducer.pure.js +10 -0
  454. package/Misc/minMaxReducer.pure.js.map +1 -1
  455. package/Misc/snapshotRenderingHelper.js +2 -2
  456. package/Misc/snapshotRenderingHelper.js.map +1 -1
  457. package/Misc/thinMinMaxReducer.d.ts +19 -2
  458. package/Misc/thinMinMaxReducer.js +74 -21
  459. package/Misc/thinMinMaxReducer.js.map +1 -1
  460. package/Misc/tools.pure.js +1 -1
  461. package/Misc/tools.pure.js.map +1 -1
  462. package/Particles/Node/Blocks/Update/updateNoiseBlock.pure.js +19 -7
  463. package/Particles/Node/Blocks/Update/updateNoiseBlock.pure.js.map +1 -1
  464. package/Particles/Node/Blocks/particleSourceTextureBlock.pure.js +3 -2
  465. package/Particles/Node/Blocks/particleSourceTextureBlock.pure.js.map +1 -1
  466. package/Particles/gpuParticleSystem.pure.d.ts +4 -0
  467. package/Particles/gpuParticleSystem.pure.js +101 -32
  468. package/Particles/gpuParticleSystem.pure.js.map +1 -1
  469. package/Particles/particle.js +3 -2
  470. package/Particles/particle.js.map +1 -1
  471. package/Particles/solidParticleSystem.js +7 -1
  472. package/Particles/solidParticleSystem.js.map +1 -1
  473. package/Particles/thinParticleSystem.function.d.ts +6 -0
  474. package/Particles/thinParticleSystem.function.js +144 -88
  475. package/Particles/thinParticleSystem.function.js.map +1 -1
  476. package/Particles/thinParticleSystem.pure.d.ts +8 -0
  477. package/Particles/thinParticleSystem.pure.js +154 -28
  478. package/Particles/thinParticleSystem.pure.js.map +1 -1
  479. package/Particles/webgl2ParticleSystem.pure.d.ts +1 -0
  480. package/Particles/webgl2ParticleSystem.pure.js +12 -4
  481. package/Particles/webgl2ParticleSystem.pure.js.map +1 -1
  482. package/Physics/v2/ragdoll.d.ts +2 -4
  483. package/Physics/v2/ragdoll.js +11 -4
  484. package/Physics/v2/ragdoll.js.map +1 -1
  485. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.pure.js +7 -0
  486. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.pure.js.map +1 -1
  487. package/PostProcesses/index.d.ts +2 -0
  488. package/PostProcesses/index.js +2 -0
  489. package/PostProcesses/index.js.map +1 -1
  490. package/PostProcesses/meshBlendingBlueNoise.d.ts +15 -0
  491. package/PostProcesses/meshBlendingBlueNoise.js +77 -0
  492. package/PostProcesses/meshBlendingBlueNoise.js.map +1 -0
  493. package/PostProcesses/meshBlendingPostProcess.d.ts +131 -0
  494. package/PostProcesses/meshBlendingPostProcess.js +315 -0
  495. package/PostProcesses/meshBlendingPostProcess.js.map +1 -0
  496. package/PostProcesses/pure.d.ts +2 -0
  497. package/PostProcesses/pure.js +2 -0
  498. package/PostProcesses/pure.js.map +1 -1
  499. package/PostProcesses/thinMeshBlendingPostProcess.d.ts +339 -0
  500. package/PostProcesses/thinMeshBlendingPostProcess.js +771 -0
  501. package/PostProcesses/thinMeshBlendingPostProcess.js.map +1 -0
  502. package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js +6 -6
  503. package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js.map +1 -1
  504. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.d.ts +12 -0
  505. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js +50 -25
  506. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js.map +1 -1
  507. package/Rendering/boundingBoxRenderer.pure.js +2 -1
  508. package/Rendering/boundingBoxRenderer.pure.js.map +1 -1
  509. package/Rendering/depthRenderer.pure.d.ts +9 -0
  510. package/Rendering/depthRenderer.pure.js +15 -4
  511. package/Rendering/depthRenderer.pure.js.map +1 -1
  512. package/Rendering/edgesRenderer.pure.d.ts +4 -2
  513. package/Rendering/edgesRenderer.pure.js +11 -2
  514. package/Rendering/edgesRenderer.pure.js.map +1 -1
  515. package/Rendering/fluidRenderer/fluidRenderingObject.d.ts +14 -0
  516. package/Rendering/fluidRenderer/fluidRenderingObject.js +26 -0
  517. package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
  518. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.d.ts +13 -3
  519. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js +22 -9
  520. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js.map +1 -1
  521. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js +3 -0
  522. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js.map +1 -1
  523. package/Rendering/geometryBufferRenderer.pure.d.ts +38 -4
  524. package/Rendering/geometryBufferRenderer.pure.js +130 -18
  525. package/Rendering/geometryBufferRenderer.pure.js.map +1 -1
  526. package/Rendering/objectRenderer.d.ts +7 -1
  527. package/Rendering/objectRenderer.js +45 -7
  528. package/Rendering/objectRenderer.js.map +1 -1
  529. package/Rendering/outlineRenderer.pure.js +6 -2
  530. package/Rendering/outlineRenderer.pure.js.map +1 -1
  531. package/Rendering/prePassRenderer.pure.js +3 -3
  532. package/Rendering/prePassRenderer.pure.js.map +1 -1
  533. package/Rendering/renderingManager.d.ts +1 -1
  534. package/Rendering/renderingManager.js +5 -4
  535. package/Rendering/renderingManager.js.map +1 -1
  536. package/Shaders/ShadersInclude/defaultFragmentAlpha.d.ts +5 -0
  537. package/Shaders/ShadersInclude/defaultFragmentAlpha.js +34 -0
  538. package/Shaders/ShadersInclude/defaultFragmentAlpha.js.map +1 -0
  539. package/Shaders/ShadersInclude/gaussianSplatting.js +3 -1
  540. package/Shaders/ShadersInclude/gaussianSplatting.js.map +1 -1
  541. package/Shaders/ShadersInclude/gaussianSplattingVertexDeclaration.js +5 -1
  542. package/Shaders/ShadersInclude/gaussianSplattingVertexDeclaration.js.map +1 -1
  543. package/Shaders/ShadersInclude/geometryRenderingFragment.d.ts +5 -0
  544. package/Shaders/ShadersInclude/geometryRenderingFragment.js +74 -0
  545. package/Shaders/ShadersInclude/geometryRenderingFragment.js.map +1 -0
  546. package/Shaders/ShadersInclude/lightsFragmentFunctions.js +27 -3
  547. package/Shaders/ShadersInclude/lightsFragmentFunctions.js.map +1 -1
  548. package/Shaders/ShadersInclude/mrtFragmentDeclaration.js +89 -0
  549. package/Shaders/ShadersInclude/mrtFragmentDeclaration.js.map +1 -1
  550. package/Shaders/ShadersInclude/oitDeclaration.js +1 -1
  551. package/Shaders/ShadersInclude/oitDeclaration.js.map +1 -1
  552. package/Shaders/ShadersInclude/openpbrBlockPrePass.js +24 -17
  553. package/Shaders/ShadersInclude/openpbrBlockPrePass.js.map +1 -1
  554. package/Shaders/ShadersInclude/pbrBlockPrePass.js +27 -20
  555. package/Shaders/ShadersInclude/pbrBlockPrePass.js.map +1 -1
  556. package/Shaders/ShadersInclude/pbrDebug.js +6 -2
  557. package/Shaders/ShadersInclude/pbrDebug.js.map +1 -1
  558. package/Shaders/ShadersInclude/prePassDeclaration.js +95 -2
  559. package/Shaders/ShadersInclude/prePassDeclaration.js.map +1 -1
  560. package/Shaders/default.fragment.js +31 -40
  561. package/Shaders/default.fragment.js.map +1 -1
  562. package/Shaders/depthOfField.fragment.js +13 -9
  563. package/Shaders/depthOfField.fragment.js.map +1 -1
  564. package/Shaders/fluidRenderingParticleDepth.vertex.js +16 -1
  565. package/Shaders/fluidRenderingParticleDepth.vertex.js.map +1 -1
  566. package/Shaders/fluidRenderingParticleThickness.vertex.js +16 -1
  567. package/Shaders/fluidRenderingParticleThickness.vertex.js.map +1 -1
  568. package/Shaders/gaussianSplatting.fragment.js +63 -3
  569. package/Shaders/gaussianSplatting.fragment.js.map +1 -1
  570. package/Shaders/gaussianSplatting.vertex.js +80 -0
  571. package/Shaders/gaussianSplatting.vertex.js.map +1 -1
  572. package/Shaders/geometry.fragment.js +17 -11
  573. package/Shaders/geometry.fragment.js.map +1 -1
  574. package/Shaders/gpuRenderParticles.fragment.js +43 -1
  575. package/Shaders/gpuRenderParticles.fragment.js.map +1 -1
  576. package/Shaders/gpuRenderParticles.vertex.js +96 -16
  577. package/Shaders/gpuRenderParticles.vertex.js.map +1 -1
  578. package/Shaders/meshBlending.fragment.d.ts +5 -0
  579. package/Shaders/meshBlending.fragment.js +519 -0
  580. package/Shaders/meshBlending.fragment.js.map +1 -0
  581. package/Shaders/minmaxRedux.fragment.js +6 -1
  582. package/Shaders/minmaxRedux.fragment.js.map +1 -1
  583. package/Shaders/particles.fragment.js +43 -1
  584. package/Shaders/particles.fragment.js.map +1 -1
  585. package/Shaders/particles.vertex.js +84 -3
  586. package/Shaders/particles.vertex.js.map +1 -1
  587. package/Shaders/sprites.fragment.js +52 -2
  588. package/Shaders/sprites.fragment.js.map +1 -1
  589. package/Shaders/sprites.vertex.js +62 -1
  590. package/Shaders/sprites.vertex.js.map +1 -1
  591. package/ShadersWGSL/ShadersInclude/defaultFragmentAlpha.d.ts +5 -0
  592. package/ShadersWGSL/ShadersInclude/defaultFragmentAlpha.js +33 -0
  593. package/ShadersWGSL/ShadersInclude/defaultFragmentAlpha.js.map +1 -0
  594. package/ShadersWGSL/ShadersInclude/gaussianPointSplatting.d.ts +5 -0
  595. package/ShadersWGSL/ShadersInclude/gaussianPointSplatting.js +65 -0
  596. package/ShadersWGSL/ShadersInclude/gaussianPointSplatting.js.map +1 -0
  597. package/ShadersWGSL/ShadersInclude/gaussianPointSplattingScan.d.ts +5 -0
  598. package/ShadersWGSL/ShadersInclude/gaussianPointSplattingScan.js +17 -0
  599. package/ShadersWGSL/ShadersInclude/gaussianPointSplattingScan.js.map +1 -0
  600. package/ShadersWGSL/ShadersInclude/gaussianSplatting.d.ts +1 -0
  601. package/ShadersWGSL/ShadersInclude/gaussianSplatting.js +6 -78
  602. package/ShadersWGSL/ShadersInclude/gaussianSplatting.js.map +1 -1
  603. package/ShadersWGSL/ShadersInclude/gaussianSplattingFragmentDeclaration.js +2 -2
  604. package/ShadersWGSL/ShadersInclude/gaussianSplattingFragmentDeclaration.js.map +1 -1
  605. package/ShadersWGSL/ShadersInclude/gaussianSplattingShared.d.ts +5 -0
  606. package/ShadersWGSL/ShadersInclude/gaussianSplattingShared.js +79 -0
  607. package/ShadersWGSL/ShadersInclude/gaussianSplattingShared.js.map +1 -0
  608. package/ShadersWGSL/ShadersInclude/geometryRenderingFragment.d.ts +6 -0
  609. package/ShadersWGSL/ShadersInclude/geometryRenderingFragment.js +76 -0
  610. package/ShadersWGSL/ShadersInclude/geometryRenderingFragment.js.map +1 -0
  611. package/ShadersWGSL/ShadersInclude/lightFragment.js +1 -1
  612. package/ShadersWGSL/ShadersInclude/lightFragment.js.map +1 -1
  613. package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.js +27 -3
  614. package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.js.map +1 -1
  615. package/ShadersWGSL/ShadersInclude/meshBlendTagFragmentOutput.d.ts +5 -0
  616. package/ShadersWGSL/ShadersInclude/meshBlendTagFragmentOutput.js +18 -0
  617. package/ShadersWGSL/ShadersInclude/meshBlendTagFragmentOutput.js.map +1 -0
  618. package/ShadersWGSL/ShadersInclude/openpbrBlockPrePass.d.ts +1 -0
  619. package/ShadersWGSL/ShadersInclude/openpbrBlockPrePass.js +11 -25
  620. package/ShadersWGSL/ShadersInclude/openpbrBlockPrePass.js.map +1 -1
  621. package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.d.ts +1 -0
  622. package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js +11 -25
  623. package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js.map +1 -1
  624. package/ShadersWGSL/ShadersInclude/pbrDebug.js +5 -1
  625. package/ShadersWGSL/ShadersInclude/pbrDebug.js.map +1 -1
  626. package/ShadersWGSL/ShadersInclude/prePassDeclaration.js +6 -1
  627. package/ShadersWGSL/ShadersInclude/prePassDeclaration.js.map +1 -1
  628. package/ShadersWGSL/default.fragment.js +17 -48
  629. package/ShadersWGSL/default.fragment.js.map +1 -1
  630. package/ShadersWGSL/fluidRenderingParticleDepth.vertex.js +15 -2
  631. package/ShadersWGSL/fluidRenderingParticleDepth.vertex.js.map +1 -1
  632. package/ShadersWGSL/fluidRenderingParticleThickness.vertex.js +15 -2
  633. package/ShadersWGSL/fluidRenderingParticleThickness.vertex.js.map +1 -1
  634. package/ShadersWGSL/gaussianPointSplattingBlit.fragment.d.ts +5 -0
  635. package/ShadersWGSL/gaussianPointSplattingBlit.fragment.js +22 -0
  636. package/ShadersWGSL/gaussianPointSplattingBlit.fragment.js.map +1 -0
  637. package/ShadersWGSL/gaussianPointSplattingBlit.vertex.d.ts +5 -0
  638. package/ShadersWGSL/gaussianPointSplattingBlit.vertex.js +19 -0
  639. package/ShadersWGSL/gaussianPointSplattingBlit.vertex.js.map +1 -0
  640. package/ShadersWGSL/gaussianPointSplattingDepthBlit.fragment.d.ts +5 -0
  641. package/ShadersWGSL/gaussianPointSplattingDepthBlit.fragment.js +21 -0
  642. package/ShadersWGSL/gaussianPointSplattingDepthBlit.fragment.js.map +1 -0
  643. package/ShadersWGSL/gaussianSplatting.fragment.js +63 -2
  644. package/ShadersWGSL/gaussianSplatting.fragment.js.map +1 -1
  645. package/ShadersWGSL/gaussianSplatting.vertex.js +82 -1
  646. package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
  647. package/ShadersWGSL/gaussianSplattingDepth.vertex.js +2 -1
  648. package/ShadersWGSL/gaussianSplattingDepth.vertex.js.map +1 -1
  649. package/ShadersWGSL/gaussianSplattingVoxel.vertex.js +2 -1
  650. package/ShadersWGSL/gaussianSplattingVoxel.vertex.js.map +1 -1
  651. package/ShadersWGSL/geometry.fragment.js +37 -2
  652. package/ShadersWGSL/geometry.fragment.js.map +1 -1
  653. package/ShadersWGSL/gpsHiZBuild.compute.d.ts +5 -0
  654. package/ShadersWGSL/gpsHiZBuild.compute.js +16 -0
  655. package/ShadersWGSL/gpsHiZBuild.compute.js.map +1 -0
  656. package/ShadersWGSL/gpsPartition.compute.d.ts +5 -0
  657. package/ShadersWGSL/gpsPartition.compute.js +27 -0
  658. package/ShadersWGSL/gpsPartition.compute.js.map +1 -0
  659. package/ShadersWGSL/gpsPreprocess.compute.d.ts +5 -0
  660. package/ShadersWGSL/gpsPreprocess.compute.js +86 -0
  661. package/ShadersWGSL/gpsPreprocess.compute.js.map +1 -0
  662. package/ShadersWGSL/gpsResolve.compute.d.ts +5 -0
  663. package/ShadersWGSL/gpsResolve.compute.js +41 -0
  664. package/ShadersWGSL/gpsResolve.compute.js.map +1 -0
  665. package/ShadersWGSL/gpsScanAdd.compute.d.ts +5 -0
  666. package/ShadersWGSL/gpsScanAdd.compute.js +22 -0
  667. package/ShadersWGSL/gpsScanAdd.compute.js.map +1 -0
  668. package/ShadersWGSL/gpsScanBlocks.compute.d.ts +5 -0
  669. package/ShadersWGSL/gpsScanBlocks.compute.js +23 -0
  670. package/ShadersWGSL/gpsScanBlocks.compute.js.map +1 -0
  671. package/ShadersWGSL/gpsScanSums.compute.d.ts +5 -0
  672. package/ShadersWGSL/gpsScanSums.compute.js +30 -0
  673. package/ShadersWGSL/gpsScanSums.compute.js.map +1 -0
  674. package/ShadersWGSL/gpsSplat.compute.d.ts +5 -0
  675. package/ShadersWGSL/gpsSplat.compute.js +37 -0
  676. package/ShadersWGSL/gpsSplat.compute.js.map +1 -0
  677. package/ShadersWGSL/gpuRenderParticles.fragment.js +47 -2
  678. package/ShadersWGSL/gpuRenderParticles.fragment.js.map +1 -1
  679. package/ShadersWGSL/gpuRenderParticles.vertex.js +110 -7
  680. package/ShadersWGSL/gpuRenderParticles.vertex.js.map +1 -1
  681. package/ShadersWGSL/meshBlending.fragment.d.ts +5 -0
  682. package/ShadersWGSL/meshBlending.fragment.js +576 -0
  683. package/ShadersWGSL/meshBlending.fragment.js.map +1 -0
  684. package/ShadersWGSL/minmaxRedux.fragment.js +20 -3
  685. package/ShadersWGSL/minmaxRedux.fragment.js.map +1 -1
  686. package/ShadersWGSL/openpbr.fragment.js +2 -1
  687. package/ShadersWGSL/openpbr.fragment.js.map +1 -1
  688. package/ShadersWGSL/particles.fragment.js +45 -1
  689. package/ShadersWGSL/particles.fragment.js.map +1 -1
  690. package/ShadersWGSL/particles.vertex.js +86 -4
  691. package/ShadersWGSL/particles.vertex.js.map +1 -1
  692. package/ShadersWGSL/pbr.fragment.js +2 -1
  693. package/ShadersWGSL/pbr.fragment.js.map +1 -1
  694. package/ShadersWGSL/sprites.fragment.js +56 -2
  695. package/ShadersWGSL/sprites.fragment.js.map +1 -1
  696. package/ShadersWGSL/sprites.vertex.js +62 -1
  697. package/ShadersWGSL/sprites.vertex.js.map +1 -1
  698. package/Sprites/spriteManager.d.ts +13 -0
  699. package/Sprites/spriteManager.js +15 -0
  700. package/Sprites/spriteManager.js.map +1 -1
  701. package/Sprites/spriteRenderer.d.ts +24 -1
  702. package/Sprites/spriteRenderer.js +368 -50
  703. package/Sprites/spriteRenderer.js.map +1 -1
  704. package/Sprites/thinSprite.d.ts +4 -0
  705. package/Sprites/thinSprite.js +4 -0
  706. package/Sprites/thinSprite.js.map +1 -1
  707. package/States/alphaCullingState.d.ts +3 -1
  708. package/States/alphaCullingState.js +18 -3
  709. package/States/alphaCullingState.js.map +1 -1
  710. package/XR/features/WebXRSpaceWarp.pure.js +2 -1
  711. package/XR/features/WebXRSpaceWarp.pure.js.map +1 -1
  712. package/XR/webXRDefaultExperience.d.ts +5 -1
  713. package/XR/webXRDefaultExperience.js.map +1 -1
  714. package/XR/webXREnterExitUI.d.ts +2 -1
  715. package/XR/webXREnterExitUI.js.map +1 -1
  716. package/assetContainer.d.ts +1 -0
  717. package/assetContainer.js +5 -1
  718. package/assetContainer.js.map +1 -1
  719. package/package.json +1 -1
  720. package/scene.pure.d.ts +36 -2
  721. package/scene.pure.js +63 -4
  722. package/scene.pure.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Node/Blocks/pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,0CAA0C,CAAC;AACzD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,sCAAsC,CAAC;AACrD,cAAc,oDAAoD,CAAC;AACnE,cAAc,oDAAoD,CAAC;AACnE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,0DAA0D,CAAC;AACzE,cAAc,wDAAwD,CAAC;AACvE,cAAc,sDAAsD,CAAC;AACrE,cAAc,kDAAkD,CAAC;AACjE,cAAc,mDAAmD,CAAC;AAClE,cAAc,wDAAwD,CAAC;AACvE,cAAc,6CAA6C,CAAC;AAC5D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,sDAAsD,CAAC;AACrE,cAAc,iDAAiD,CAAC;AAChE,cAAc,2CAA2C,CAAC;AAC1D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2DAA2D,CAAC;AAC1E,cAAc,4CAA4C,CAAC;AAC3D,cAAc,0CAA0C,CAAC;AACzD,cAAc,0CAA0C,CAAC;AACzD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,0CAA0C,CAAC;AACzD,cAAc,wCAAwC,CAAC;AACvD,cAAc,0CAA0C,CAAC;AACzD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC;AACjD,cAAc,sCAAsC,CAAC;AACrD,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC","sourcesContent":["/** Pure barrel — re-exports only side-effect-free modules */\nexport * from \"./computeShaderBlock.pure\";\nexport * from \"./cullObjectsBlock.pure\";\nexport * from \"./elbowBlock.pure\";\nexport * from \"./executeBlock.pure\";\nexport * from \"./inputBlock.pure\";\nexport * from \"./lightingVolumeBlock.pure\";\nexport * from \"./outputBlock.pure\";\nexport * from \"./resourceContainerBlock.pure\";\nexport * from \"./Layers/glowLayerBlock.pure\";\nexport * from \"./Layers/highlightLayerBlock.pure\";\nexport * from \"./Layers/selectionOutlineLayerBlock.pure\";\nexport * from \"./PostProcesses/anaglyphPostProcessBlock.pure\";\nexport * from \"./PostProcesses/basePostProcessBlock\";\nexport * from \"./PostProcesses/baseWithPropertiesPostProcessBlock\";\nexport * from \"./PostProcesses/blackAndWhitePostProcessBlock.pure\";\nexport * from \"./PostProcesses/bloomPostProcessBlock.pure\";\nexport * from \"./PostProcesses/blurPostProcessBlock.pure\";\nexport * from \"./PostProcesses/chromaticAberrationPostProcessBlock.pure\";\nexport * from \"./PostProcesses/circleOfConfusionPostProcessBlock.pure\";\nexport * from \"./PostProcesses/colorCorrectionPostProcessBlock.pure\";\nexport * from \"./PostProcesses/convolutionPostProcessBlock.pure\";\nexport * from \"./PostProcesses/depthOfFieldPostProcessBlock.pure\";\nexport * from \"./PostProcesses/extractHighlightsPostProcessBlock.pure\";\nexport * from \"./PostProcesses/filterPostProcessBlock.pure\";\nexport * from \"./PostProcesses/fxaaPostProcessBlock.pure\";\nexport * from \"./PostProcesses/grainPostProcessBlock.pure\";\nexport * from \"./PostProcesses/imageProcessingPostProcessBlock.pure\";\nexport * from \"./PostProcesses/motionBlurPostProcessBlock.pure\";\nexport * from \"./PostProcesses/passPostProcessBlock.pure\";\nexport * from \"./PostProcesses/sharpenPostProcessBlock.pure\";\nexport * from \"./PostProcesses/screenSpaceCurvaturePostProcessBlock.pure\";\nexport * from \"./PostProcesses/ssao2PostProcessBlock.pure\";\nexport * from \"./PostProcesses/ssrPostProcessBlock.pure\";\nexport * from \"./PostProcesses/taaPostProcessBlock.pure\";\nexport * from \"./PostProcesses/tonemapPostProcessBlock.pure\";\nexport * from \"./PostProcesses/volumetricLightingBlock.pure\";\nexport * from \"./Rendering/csmShadowGeneratorBlock.pure\";\nexport * from \"./Rendering/geometryRendererBlock.pure\";\nexport * from \"./Rendering/iblShadowsRendererBlock.pure\";\nexport * from \"./Rendering/objectRendererBlock.pure\";\nexport * from \"./Rendering/shadowGeneratorBlock.pure\";\nexport * from \"./Rendering/utilityLayerRendererBlock.pure\";\nexport * from \"./Teleport/teleportInBlock.pure\";\nexport * from \"./Teleport/teleportOutBlock.pure\";\nexport * from \"./Textures/clearBlock.pure\";\nexport * from \"./Textures/copyTextureBlock.pure\";\nexport * from \"./Textures/generateMipmapsBlock.pure\";\nexport * from \"./allBlocks.pure\";\nexport * from \"./Layers/pure\";\nexport * from \"./PostProcesses/pure\";\nexport * from \"./Rendering/pure\";\nexport * from \"./Teleport/pure\";\nexport * from \"./Textures/pure\";\n"]}
1
+ {"version":3,"file":"pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Node/Blocks/pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,0CAA0C,CAAC;AACzD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,sCAAsC,CAAC;AACrD,cAAc,oDAAoD,CAAC;AACnE,cAAc,oDAAoD,CAAC;AACnE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,0DAA0D,CAAC;AACzE,cAAc,wDAAwD,CAAC;AACvE,cAAc,sDAAsD,CAAC;AACrE,cAAc,kDAAkD,CAAC;AACjE,cAAc,mDAAmD,CAAC;AAClE,cAAc,wDAAwD,CAAC;AACvE,cAAc,6CAA6C,CAAC;AAC5D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,sDAAsD,CAAC;AACrE,cAAc,iDAAiD,CAAC;AAChE,cAAc,mDAAmD,CAAC;AAClE,cAAc,2CAA2C,CAAC;AAC1D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2DAA2D,CAAC;AAC1E,cAAc,4CAA4C,CAAC;AAC3D,cAAc,0CAA0C,CAAC;AACzD,cAAc,0CAA0C,CAAC;AACzD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,0CAA0C,CAAC;AACzD,cAAc,wCAAwC,CAAC;AACvD,cAAc,0CAA0C,CAAC;AACzD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC;AACjD,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AACnD,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC","sourcesContent":["/** Pure barrel — re-exports only side-effect-free modules */\nexport * from \"./computeShaderBlock.pure\";\nexport * from \"./cullObjectsBlock.pure\";\nexport * from \"./elbowBlock.pure\";\nexport * from \"./executeBlock.pure\";\nexport * from \"./inputBlock.pure\";\nexport * from \"./lightingVolumeBlock.pure\";\nexport * from \"./outputBlock.pure\";\nexport * from \"./resourceContainerBlock.pure\";\nexport * from \"./Layers/glowLayerBlock.pure\";\nexport * from \"./Layers/highlightLayerBlock.pure\";\nexport * from \"./Layers/selectionOutlineLayerBlock.pure\";\nexport * from \"./PostProcesses/anaglyphPostProcessBlock.pure\";\nexport * from \"./PostProcesses/basePostProcessBlock\";\nexport * from \"./PostProcesses/baseWithPropertiesPostProcessBlock\";\nexport * from \"./PostProcesses/blackAndWhitePostProcessBlock.pure\";\nexport * from \"./PostProcesses/bloomPostProcessBlock.pure\";\nexport * from \"./PostProcesses/blurPostProcessBlock.pure\";\nexport * from \"./PostProcesses/chromaticAberrationPostProcessBlock.pure\";\nexport * from \"./PostProcesses/circleOfConfusionPostProcessBlock.pure\";\nexport * from \"./PostProcesses/colorCorrectionPostProcessBlock.pure\";\nexport * from \"./PostProcesses/convolutionPostProcessBlock.pure\";\nexport * from \"./PostProcesses/depthOfFieldPostProcessBlock.pure\";\nexport * from \"./PostProcesses/extractHighlightsPostProcessBlock.pure\";\nexport * from \"./PostProcesses/filterPostProcessBlock.pure\";\nexport * from \"./PostProcesses/fxaaPostProcessBlock.pure\";\nexport * from \"./PostProcesses/grainPostProcessBlock.pure\";\nexport * from \"./PostProcesses/imageProcessingPostProcessBlock.pure\";\nexport * from \"./PostProcesses/motionBlurPostProcessBlock.pure\";\nexport * from \"./PostProcesses/meshBlendingPostProcessBlock.pure\";\nexport * from \"./PostProcesses/passPostProcessBlock.pure\";\nexport * from \"./PostProcesses/sharpenPostProcessBlock.pure\";\nexport * from \"./PostProcesses/screenSpaceCurvaturePostProcessBlock.pure\";\nexport * from \"./PostProcesses/ssao2PostProcessBlock.pure\";\nexport * from \"./PostProcesses/ssrPostProcessBlock.pure\";\nexport * from \"./PostProcesses/taaPostProcessBlock.pure\";\nexport * from \"./PostProcesses/tonemapPostProcessBlock.pure\";\nexport * from \"./PostProcesses/volumetricLightingBlock.pure\";\nexport * from \"./Rendering/csmShadowGeneratorBlock.pure\";\nexport * from \"./Rendering/geometryRendererBlock.pure\";\nexport * from \"./Rendering/iblShadowsRendererBlock.pure\";\nexport * from \"./Rendering/objectRendererBlock.pure\";\nexport * from \"./Rendering/shadowGeneratorBlock.pure\";\nexport * from \"./Rendering/utilityLayerRendererBlock.pure\";\nexport * from \"./Teleport/teleportInBlock.pure\";\nexport * from \"./Teleport/teleportOutBlock.pure\";\nexport * from \"./Textures/clearBlock.pure\";\nexport * from \"./Textures/copyTextureBlock.pure\";\nexport * from \"./Textures/generateMipmapsBlock.pure\";\nexport * from \"./Textures/minMaxReducerBlock.pure\";\nexport * from \"./allBlocks.pure\";\nexport * from \"./Layers/pure\";\nexport * from \"./PostProcesses/pure\";\nexport * from \"./Rendering/pure\";\nexport * from \"./Teleport/pure\";\nexport * from \"./Textures/pure\";\n"]}
@@ -70,7 +70,7 @@ export declare enum NodeRenderGraphBlockConnectionPointTypes {
70
70
  TextureAlbedoSqrt = 2048,
71
71
  /** Depth (in screen space) geometry texture */
72
72
  TextureScreenDepth = 4096,
73
- /** Normal (in world space) geometry texture */
73
+ /** Normal (in world space) geometry texture, encoded from [-1, 1] to [0, 1] */
74
74
  TextureWorldNormal = 8192,
75
75
  /** Position (in local space) geometry texture */
76
76
  TextureLocalPosition = 16384,
@@ -80,6 +80,8 @@ export declare enum NodeRenderGraphBlockConnectionPointTypes {
80
80
  TextureNormalizedViewDepth = 65536,
81
81
  /** Object ID geometry texture */
82
82
  TextureObjectId = 131072,
83
+ /** Packed mesh-blending tag geometry texture */
84
+ TextureMeshBlendTag = 262144,
83
85
  /** Bit field for all textures but back buffer depth/stencil */
84
86
  TextureAllButBackBufferDepthStencil = 1048571,
85
87
  /** Bit field for all textures but back buffer color and depth/stencil */
@@ -94,7 +96,7 @@ export declare enum NodeRenderGraphBlockConnectionPointTypes {
94
96
  ShadowLight = 4194304,
95
97
  /** Camera */
96
98
  Camera = 16777216,
97
- /** List of objects (meshes, particle systems, sprites) */
99
+ /** List of objects (meshes, particle systems, sprite managers) */
98
100
  ObjectList = 33554432,
99
101
  /** Detect type based on connection */
100
102
  AutoDetect = 268435456,
@@ -29,7 +29,7 @@ export var NodeRenderGraphBlockConnectionPointTypes;
29
29
  NodeRenderGraphBlockConnectionPointTypes[NodeRenderGraphBlockConnectionPointTypes["TextureAlbedoSqrt"] = 2048] = "TextureAlbedoSqrt";
30
30
  /** Depth (in screen space) geometry texture */
31
31
  NodeRenderGraphBlockConnectionPointTypes[NodeRenderGraphBlockConnectionPointTypes["TextureScreenDepth"] = 4096] = "TextureScreenDepth";
32
- /** Normal (in world space) geometry texture */
32
+ /** Normal (in world space) geometry texture, encoded from [-1, 1] to [0, 1] */
33
33
  NodeRenderGraphBlockConnectionPointTypes[NodeRenderGraphBlockConnectionPointTypes["TextureWorldNormal"] = 8192] = "TextureWorldNormal";
34
34
  /** Position (in local space) geometry texture */
35
35
  NodeRenderGraphBlockConnectionPointTypes[NodeRenderGraphBlockConnectionPointTypes["TextureLocalPosition"] = 16384] = "TextureLocalPosition";
@@ -39,6 +39,8 @@ export var NodeRenderGraphBlockConnectionPointTypes;
39
39
  NodeRenderGraphBlockConnectionPointTypes[NodeRenderGraphBlockConnectionPointTypes["TextureNormalizedViewDepth"] = 65536] = "TextureNormalizedViewDepth";
40
40
  /** Object ID geometry texture */
41
41
  NodeRenderGraphBlockConnectionPointTypes[NodeRenderGraphBlockConnectionPointTypes["TextureObjectId"] = 131072] = "TextureObjectId";
42
+ /** Packed mesh-blending tag geometry texture */
43
+ NodeRenderGraphBlockConnectionPointTypes[NodeRenderGraphBlockConnectionPointTypes["TextureMeshBlendTag"] = 262144] = "TextureMeshBlendTag";
42
44
  /** Bit field for all textures but back buffer depth/stencil */
43
45
  NodeRenderGraphBlockConnectionPointTypes[NodeRenderGraphBlockConnectionPointTypes["TextureAllButBackBufferDepthStencil"] = 1048571] = "TextureAllButBackBufferDepthStencil";
44
46
  /** Bit field for all textures but back buffer color and depth/stencil */
@@ -53,7 +55,7 @@ export var NodeRenderGraphBlockConnectionPointTypes;
53
55
  NodeRenderGraphBlockConnectionPointTypes[NodeRenderGraphBlockConnectionPointTypes["ShadowLight"] = 4194304] = "ShadowLight";
54
56
  /** Camera */
55
57
  NodeRenderGraphBlockConnectionPointTypes[NodeRenderGraphBlockConnectionPointTypes["Camera"] = 16777216] = "Camera";
56
- /** List of objects (meshes, particle systems, sprites) */
58
+ /** List of objects (meshes, particle systems, sprite managers) */
57
59
  NodeRenderGraphBlockConnectionPointTypes[NodeRenderGraphBlockConnectionPointTypes["ObjectList"] = 33554432] = "ObjectList";
58
60
  /** Detect type based on connection */
59
61
  NodeRenderGraphBlockConnectionPointTypes[NodeRenderGraphBlockConnectionPointTypes["AutoDetect"] = 268435456] = "AutoDetect";
@@ -1 +1 @@
1
- {"version":3,"file":"nodeRenderGraphTypes.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Node/Types/nodeRenderGraphTypes.ts"],"names":[],"mappings":"AAyDA;;GAEG;AACH,MAAM,CAAN,IAAY,wCAkEX;AAlED,WAAY,wCAAwC;IAChD,8BAA8B;IAC9B,6GAAoB,CAAA;IACpB,gCAAgC;IAChC,iIAA8B,CAAA;IAC9B,2CAA2C;IAC3C,6KAAoD,CAAA;IACpD,+BAA+B;IAC/B,yJAA0C,CAAA;IAC1C,6CAA6C;IAC7C,gIAA6B,CAAA;IAC7B,8CAA8C;IAC9C,kIAA8B,CAAA;IAC9B,8BAA8B;IAC9B,0HAA0B,CAAA;IAC1B,oCAAoC;IACpC,uIAAgC,CAAA;IAChC,iDAAiD;IACjD,yIAAiC,CAAA;IACjC,gCAAgC;IAChC,+HAA4B,CAAA;IAC5B,kCAAkC;IAClC,oIAA8B,CAAA;IAC9B,qCAAqC;IACrC,oIAA8B,CAAA;IAC9B,+CAA+C;IAC/C,sIAA+B,CAAA;IAC/B,+CAA+C;IAC/C,sIAA+B,CAAA;IAC/B,iDAAiD;IACjD,2IAAiC,CAAA;IACjC,uCAAuC;IACvC,6IAAkC,CAAA;IAClC,uDAAuD;IACvD,uJAAuC,CAAA;IACvC,iCAAiC;IACjC,kIAA4B,CAAA;IAE5B,+DAA+D;IAC/D,2KAAgD,CAAA;IAChD,yEAAyE;IACzE,mJAAoC,CAAA;IACpC,iCAAiC;IACjC,yHAAuB,CAAA;IAEvB,yBAAyB;IACzB,uIAA8B,CAAA;IAC9B,uBAAuB;IACvB,mIAA4B,CAAA;IAC5B,YAAY;IACZ,2HAAwB,CAAA;IACxB,aAAa;IACb,kHAAmB,CAAA;IACnB,0DAA0D;IAC1D,0HAAuB,CAAA;IAEvB,sCAAsC;IACtC,2HAAuB,CAAA;IACvB,qDAAqD;IACrD,+HAAyB,CAAA;IACzB,gBAAgB;IAChB,0HAAsB,CAAA;IACtB,oBAAoB;IACpB,oHAAmB,CAAA;IACnB,2BAA2B;IAC3B,8GAAgB,CAAA;AACpB,CAAC,EAlEW,wCAAwC,KAAxC,wCAAwC,QAkEnD;AAED;;GAEG;AACH,MAAM,CAAN,IAAkB,iDAOjB;AAPD,WAAkB,iDAAiD;IAC/D,6BAA6B;IAC7B,qIAAU,CAAA;IACV,qDAAqD;IACrD,iJAAgB,CAAA;IAChB,sEAAsE;IACtE,6IAAc,CAAA;AAClB,CAAC,EAPiB,iDAAiD,KAAjD,iDAAiD,QAOlE;AAED;;GAEG;AACH,MAAM,CAAN,IAAkB,uCAKjB;AALD,WAAkB,uCAAuC;IACrD,YAAY;IACZ,uGAAK,CAAA;IACL,aAAa;IACb,yGAAM,CAAA;AACV,CAAC,EALiB,uCAAuC,KAAvC,uCAAuC,QAKxD","sourcesContent":["import {\r\n type Color4,\r\n type Scene,\r\n type FrameGraphTextureHandle,\r\n type Camera,\r\n type FrameGraphObjectList,\r\n type IShadowLight,\r\n type FrameGraphShadowGeneratorTask,\r\n type FrameGraphObjectRendererTask,\r\n type FrameGraph,\r\n type NodeRenderGraphBlock,\r\n} from \"core/index\";\r\n\r\n/**\r\n * Description of a custom block to be used in the node render graph editor\r\n */\r\nexport interface INodeRenderGraphCustomBlockDescription {\r\n /** Block name. It will be used as the block name in the left menu of the editor. Spaces must be replaced by underscores in the name. */\r\n name: string;\r\n /** Description (tooltip) of the block. */\r\n description: string;\r\n /** Category of the block. Spaces must be replaced by underscores in the category name. */\r\n menu: string;\r\n /** Factory function to create the block. */\r\n factory: (frameGraph: FrameGraph, scene: Scene) => NodeRenderGraphBlock;\r\n}\r\n\r\n/**\r\n * Interface used to configure the node render graph editor\r\n */\r\nexport interface INodeRenderGraphEditorOptions {\r\n /** Define the URL to load node editor script from */\r\n editorURL?: string;\r\n /** Additional configuration for the FGE */\r\n nodeRenderGraphEditorConfig?: {\r\n backgroundColor?: Color4;\r\n hostScene?: Scene;\r\n customBlockDescriptions?: INodeRenderGraphCustomBlockDescription[];\r\n };\r\n}\r\n\r\n/**\r\n * Options that can be passed to the node render graph build method\r\n */\r\nexport interface INodeRenderGraphCreateOptions {\r\n /** If true, textures created by the node render graph will be visible in the inspector, for easier debugging (default: false) */\r\n debugTextures?: boolean;\r\n /** Rebuild the node render graph when the screen is resized (default: true) */\r\n rebuildGraphOnEngineResize?: boolean;\r\n /** Defines if the build should log activity (default: false) */\r\n verbose?: boolean;\r\n /** Defines if the autoConfigure method should be called when initializing blocks (default: false) */\r\n autoConfigure?: boolean;\r\n /** If true, external inputs like object lists and cameras will be filled with default values, taken from the scene. Note that external textures are not concerned (default: true). */\r\n autoFillExternalInputs?: boolean;\r\n}\r\n\r\n/**\r\n * Defines the kind of connection point for node render graph nodes\r\n */\r\nexport enum NodeRenderGraphBlockConnectionPointTypes {\r\n /** General purpose texture */\r\n Texture = 0x00000001,\r\n /** Back buffer color texture */\r\n TextureBackBuffer = 0x00000002,\r\n /** Back buffer depth/stencil attachment */\r\n TextureBackBufferDepthStencilAttachment = 0x00000004,\r\n /** Depth/stencil attachment */\r\n TextureDepthStencilAttachment = 0x00000008,\r\n /** Depth (in view space) geometry texture */\r\n TextureViewDepth = 0x00000010,\r\n /** Normal (in view space) geometry texture */\r\n TextureViewNormal = 0x00000020,\r\n /** Albedo geometry texture */\r\n TextureAlbedo = 0x00000040,\r\n /** Reflectivity geometry texture */\r\n TextureReflectivity = 0x00000080,\r\n /** Position (in world space) geometry texture */\r\n TextureWorldPosition = 0x00000100,\r\n /** Velocity geometry texture */\r\n TextureVelocity = 0x00000200,\r\n /** Irradiance geometry texture */\r\n TextureIrradiance = 0x00000400,\r\n /** Albedo (sqrt) geometry texture */\r\n TextureAlbedoSqrt = 0x00000800,\r\n /** Depth (in screen space) geometry texture */\r\n TextureScreenDepth = 0x00001000,\r\n /** Normal (in world space) geometry texture */\r\n TextureWorldNormal = 0x00002000,\r\n /** Position (in local space) geometry texture */\r\n TextureLocalPosition = 0x00004000,\r\n /** Linear velocity geometry texture */\r\n TextureLinearVelocity = 0x00008000,\r\n /** Normalied depth (in view space) geometry texture */\r\n TextureNormalizedViewDepth = 0x00010000,\r\n /** Object ID geometry texture */\r\n TextureObjectId = 0x00020000,\r\n\r\n /** Bit field for all textures but back buffer depth/stencil */\r\n TextureAllButBackBufferDepthStencil = 0x000ffffb,\r\n /** Bit field for all textures but back buffer color and depth/stencil */\r\n TextureAllButBackBuffer = 0x000ffff9,\r\n /** Bit field for all textures */\r\n TextureAll = 0x000fffff,\r\n\r\n /** Resource container */\r\n ResourceContainer = 0x00100000,\r\n /** Shadow generator */\r\n ShadowGenerator = 0x00200000,\r\n /** Light */\r\n ShadowLight = 0x00400000,\r\n /** Camera */\r\n Camera = 0x01000000,\r\n /** List of objects (meshes, particle systems, sprites) */\r\n ObjectList = 0x02000000,\r\n\r\n /** Detect type based on connection */\r\n AutoDetect = 0x10000000,\r\n /** Output type that will be defined by input type */\r\n BasedOnInput = 0x20000000,\r\n /** Undefined */\r\n Undefined = 0x40000000,\r\n /** Custom object */\r\n Object = 0x80000000,\r\n /** Bitmask of all types */\r\n All = 0xffffffff,\r\n}\r\n\r\n/**\r\n * Enum used to define the compatibility state between two connection points\r\n */\r\nexport const enum NodeRenderGraphConnectionPointCompatibilityStates {\r\n /** Points are compatibles */\r\n Compatible,\r\n /** Points are incompatible because of their types */\r\n TypeIncompatible,\r\n /** Points are incompatible because they are in the same hierarchy **/\r\n HierarchyIssue,\r\n}\r\n\r\n/**\r\n * Defines the direction of a connection point\r\n */\r\nexport const enum NodeRenderGraphConnectionPointDirection {\r\n /** Input */\r\n Input,\r\n /** Output */\r\n Output,\r\n}\r\n\r\n/**\r\n * Defines the type of a connection point value\r\n */\r\nexport type NodeRenderGraphBlockConnectionPointValueType =\r\n FrameGraphTextureHandle | Camera | FrameGraphObjectList | IShadowLight | FrameGraphShadowGeneratorTask | FrameGraphObjectRendererTask;\r\n"]}
1
+ {"version":3,"file":"nodeRenderGraphTypes.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Node/Types/nodeRenderGraphTypes.ts"],"names":[],"mappings":"AAyDA;;GAEG;AACH,MAAM,CAAN,IAAY,wCAoEX;AApED,WAAY,wCAAwC;IAChD,8BAA8B;IAC9B,6GAAoB,CAAA;IACpB,gCAAgC;IAChC,iIAA8B,CAAA;IAC9B,2CAA2C;IAC3C,6KAAoD,CAAA;IACpD,+BAA+B;IAC/B,yJAA0C,CAAA;IAC1C,6CAA6C;IAC7C,gIAA6B,CAAA;IAC7B,8CAA8C;IAC9C,kIAA8B,CAAA;IAC9B,8BAA8B;IAC9B,0HAA0B,CAAA;IAC1B,oCAAoC;IACpC,uIAAgC,CAAA;IAChC,iDAAiD;IACjD,yIAAiC,CAAA;IACjC,gCAAgC;IAChC,+HAA4B,CAAA;IAC5B,kCAAkC;IAClC,oIAA8B,CAAA;IAC9B,qCAAqC;IACrC,oIAA8B,CAAA;IAC9B,+CAA+C;IAC/C,sIAA+B,CAAA;IAC/B,+EAA+E;IAC/E,sIAA+B,CAAA;IAC/B,iDAAiD;IACjD,2IAAiC,CAAA;IACjC,uCAAuC;IACvC,6IAAkC,CAAA;IAClC,uDAAuD;IACvD,uJAAuC,CAAA;IACvC,iCAAiC;IACjC,kIAA4B,CAAA;IAC5B,gDAAgD;IAChD,0IAAgC,CAAA;IAEhC,+DAA+D;IAC/D,2KAAgD,CAAA;IAChD,yEAAyE;IACzE,mJAAoC,CAAA;IACpC,iCAAiC;IACjC,yHAAuB,CAAA;IAEvB,yBAAyB;IACzB,uIAA8B,CAAA;IAC9B,uBAAuB;IACvB,mIAA4B,CAAA;IAC5B,YAAY;IACZ,2HAAwB,CAAA;IACxB,aAAa;IACb,kHAAmB,CAAA;IACnB,kEAAkE;IAClE,0HAAuB,CAAA;IAEvB,sCAAsC;IACtC,2HAAuB,CAAA;IACvB,qDAAqD;IACrD,+HAAyB,CAAA;IACzB,gBAAgB;IAChB,0HAAsB,CAAA;IACtB,oBAAoB;IACpB,oHAAmB,CAAA;IACnB,2BAA2B;IAC3B,8GAAgB,CAAA;AACpB,CAAC,EApEW,wCAAwC,KAAxC,wCAAwC,QAoEnD;AAED;;GAEG;AACH,MAAM,CAAN,IAAkB,iDAOjB;AAPD,WAAkB,iDAAiD;IAC/D,6BAA6B;IAC7B,qIAAU,CAAA;IACV,qDAAqD;IACrD,iJAAgB,CAAA;IAChB,sEAAsE;IACtE,6IAAc,CAAA;AAClB,CAAC,EAPiB,iDAAiD,KAAjD,iDAAiD,QAOlE;AAED;;GAEG;AACH,MAAM,CAAN,IAAkB,uCAKjB;AALD,WAAkB,uCAAuC;IACrD,YAAY;IACZ,uGAAK,CAAA;IACL,aAAa;IACb,yGAAM,CAAA;AACV,CAAC,EALiB,uCAAuC,KAAvC,uCAAuC,QAKxD","sourcesContent":["import {\r\n type Color4,\r\n type Scene,\r\n type FrameGraphTextureHandle,\r\n type Camera,\r\n type FrameGraphObjectList,\r\n type IShadowLight,\r\n type FrameGraphShadowGeneratorTask,\r\n type FrameGraphObjectRendererTask,\r\n type FrameGraph,\r\n type NodeRenderGraphBlock,\r\n} from \"core/index\";\r\n\r\n/**\r\n * Description of a custom block to be used in the node render graph editor\r\n */\r\nexport interface INodeRenderGraphCustomBlockDescription {\r\n /** Block name. It will be used as the block name in the left menu of the editor. Spaces must be replaced by underscores in the name. */\r\n name: string;\r\n /** Description (tooltip) of the block. */\r\n description: string;\r\n /** Category of the block. Spaces must be replaced by underscores in the category name. */\r\n menu: string;\r\n /** Factory function to create the block. */\r\n factory: (frameGraph: FrameGraph, scene: Scene) => NodeRenderGraphBlock;\r\n}\r\n\r\n/**\r\n * Interface used to configure the node render graph editor\r\n */\r\nexport interface INodeRenderGraphEditorOptions {\r\n /** Define the URL to load node editor script from */\r\n editorURL?: string;\r\n /** Additional configuration for the FGE */\r\n nodeRenderGraphEditorConfig?: {\r\n backgroundColor?: Color4;\r\n hostScene?: Scene;\r\n customBlockDescriptions?: INodeRenderGraphCustomBlockDescription[];\r\n };\r\n}\r\n\r\n/**\r\n * Options that can be passed to the node render graph build method\r\n */\r\nexport interface INodeRenderGraphCreateOptions {\r\n /** If true, textures created by the node render graph will be visible in the inspector, for easier debugging (default: false) */\r\n debugTextures?: boolean;\r\n /** Rebuild the node render graph when the screen is resized (default: true) */\r\n rebuildGraphOnEngineResize?: boolean;\r\n /** Defines if the build should log activity (default: false) */\r\n verbose?: boolean;\r\n /** Defines if the autoConfigure method should be called when initializing blocks (default: false) */\r\n autoConfigure?: boolean;\r\n /** If true, external inputs like object lists and cameras will be filled with default values, taken from the scene. Note that external textures are not concerned (default: true). */\r\n autoFillExternalInputs?: boolean;\r\n}\r\n\r\n/**\r\n * Defines the kind of connection point for node render graph nodes\r\n */\r\nexport enum NodeRenderGraphBlockConnectionPointTypes {\r\n /** General purpose texture */\r\n Texture = 0x00000001,\r\n /** Back buffer color texture */\r\n TextureBackBuffer = 0x00000002,\r\n /** Back buffer depth/stencil attachment */\r\n TextureBackBufferDepthStencilAttachment = 0x00000004,\r\n /** Depth/stencil attachment */\r\n TextureDepthStencilAttachment = 0x00000008,\r\n /** Depth (in view space) geometry texture */\r\n TextureViewDepth = 0x00000010,\r\n /** Normal (in view space) geometry texture */\r\n TextureViewNormal = 0x00000020,\r\n /** Albedo geometry texture */\r\n TextureAlbedo = 0x00000040,\r\n /** Reflectivity geometry texture */\r\n TextureReflectivity = 0x00000080,\r\n /** Position (in world space) geometry texture */\r\n TextureWorldPosition = 0x00000100,\r\n /** Velocity geometry texture */\r\n TextureVelocity = 0x00000200,\r\n /** Irradiance geometry texture */\r\n TextureIrradiance = 0x00000400,\r\n /** Albedo (sqrt) geometry texture */\r\n TextureAlbedoSqrt = 0x00000800,\r\n /** Depth (in screen space) geometry texture */\r\n TextureScreenDepth = 0x00001000,\r\n /** Normal (in world space) geometry texture, encoded from [-1, 1] to [0, 1] */\r\n TextureWorldNormal = 0x00002000,\r\n /** Position (in local space) geometry texture */\r\n TextureLocalPosition = 0x00004000,\r\n /** Linear velocity geometry texture */\r\n TextureLinearVelocity = 0x00008000,\r\n /** Normalied depth (in view space) geometry texture */\r\n TextureNormalizedViewDepth = 0x00010000,\r\n /** Object ID geometry texture */\r\n TextureObjectId = 0x00020000,\r\n /** Packed mesh-blending tag geometry texture */\r\n TextureMeshBlendTag = 0x00040000,\r\n\r\n /** Bit field for all textures but back buffer depth/stencil */\r\n TextureAllButBackBufferDepthStencil = 0x000ffffb,\r\n /** Bit field for all textures but back buffer color and depth/stencil */\r\n TextureAllButBackBuffer = 0x000ffff9,\r\n /** Bit field for all textures */\r\n TextureAll = 0x000fffff,\r\n\r\n /** Resource container */\r\n ResourceContainer = 0x00100000,\r\n /** Shadow generator */\r\n ShadowGenerator = 0x00200000,\r\n /** Light */\r\n ShadowLight = 0x00400000,\r\n /** Camera */\r\n Camera = 0x01000000,\r\n /** List of objects (meshes, particle systems, sprite managers) */\r\n ObjectList = 0x02000000,\r\n\r\n /** Detect type based on connection */\r\n AutoDetect = 0x10000000,\r\n /** Output type that will be defined by input type */\r\n BasedOnInput = 0x20000000,\r\n /** Undefined */\r\n Undefined = 0x40000000,\r\n /** Custom object */\r\n Object = 0x80000000,\r\n /** Bitmask of all types */\r\n All = 0xffffffff,\r\n}\r\n\r\n/**\r\n * Enum used to define the compatibility state between two connection points\r\n */\r\nexport const enum NodeRenderGraphConnectionPointCompatibilityStates {\r\n /** Points are compatibles */\r\n Compatible,\r\n /** Points are incompatible because of their types */\r\n TypeIncompatible,\r\n /** Points are incompatible because they are in the same hierarchy **/\r\n HierarchyIssue,\r\n}\r\n\r\n/**\r\n * Defines the direction of a connection point\r\n */\r\nexport const enum NodeRenderGraphConnectionPointDirection {\r\n /** Input */\r\n Input,\r\n /** Output */\r\n Output,\r\n}\r\n\r\n/**\r\n * Defines the type of a connection point value\r\n */\r\nexport type NodeRenderGraphBlockConnectionPointValueType =\r\n FrameGraphTextureHandle | Camera | FrameGraphObjectList | IShadowLight | FrameGraphShadowGeneratorTask | FrameGraphObjectRendererTask;\r\n"]}
@@ -339,7 +339,7 @@ let NodeRenderGraph = (() => {
339
339
  input.value = camera;
340
340
  }
341
341
  else if (input.isObjectList()) {
342
- input.value = { meshes: this._scene.meshes, particleSystems: this._scene.particleSystems };
342
+ input.value = { meshes: this._scene.meshes, particleSystems: this._scene.particleSystems, spriteManagers: this._scene.spriteManagers };
343
343
  }
344
344
  else if (input.isShadowLight()) {
345
345
  if (lightIndex < shadowLights.length) {
@@ -1 +1 @@
1
- {"version":3,"file":"nodeRenderGraph.js","sourceRoot":"","sources":["../../../../../dev/core/src/FrameGraph/Node/nodeRenderGraph.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n type Observer,\r\n type Nullable,\r\n type NodeRenderGraphBlock,\r\n type NodeRenderGraphTeleportOutBlock,\r\n type NodeRenderGraphTeleportInBlock,\r\n type AbstractEngine,\r\n type INodeRenderGraphCreateOptions,\r\n type INodeRenderGraphEditorOptions,\r\n type Scene,\r\n type WritableObject,\r\n type IShadowLight,\r\n type INodeRenderGraphCustomBlockDescription,\r\n type Immutable,\r\n type Camera,\r\n} from \"core/index\";\r\nimport { Observable } from \"../../Misc/observable\";\r\nimport { NodeRenderGraphOutputBlock } from \"./Blocks/outputBlock.pure\";\r\nimport { FrameGraph } from \"../frameGraph\";\r\nimport { GetClass } from \"../../Misc/typeStore\";\r\nimport { serialize } from \"../../Misc/decorators\";\r\nimport { SerializationHelper } from \"../../Misc/decorators.serialization\";\r\nimport { Constants } from \"../../Engines/constants\";\r\nimport { WebRequest } from \"../../Misc/webRequest\";\r\nimport { NodeRenderGraphInputBlock } from \"./Blocks/inputBlock.pure\";\r\nimport { Tools } from \"../../Misc/tools.pure\";\r\nimport { Engine } from \"../../Engines/engine.pure\";\r\nimport { NodeRenderGraphBlockConnectionPointTypes } from \"./Types/nodeRenderGraphTypes\";\r\nimport { NodeRenderGraphClearBlock } from \"./Blocks/Textures/clearBlock.pure\";\r\nimport { NodeRenderGraphBaseObjectRendererBlock } from \"./Blocks/Rendering/baseObjectRendererBlock\";\r\nimport { NodeRenderGraphObjectRendererBlock } from \"./Blocks/Rendering/objectRendererBlock.pure\";\r\nimport { NodeRenderGraphBuildState } from \"./nodeRenderGraphBuildState\";\r\nimport { NodeRenderGraphCullObjectsBlock } from \"./Blocks/cullObjectsBlock.pure\";\r\n\r\n// declare NODERENDERGRAPHEDITOR namespace for compilation issue\r\ndeclare let NODERENDERGRAPHEDITOR: any;\r\ndeclare let BABYLON: any;\r\n\r\n/**\r\n * Defines a node render graph\r\n */\r\nexport class NodeRenderGraph {\r\n private static _BuildIdGenerator: number = 0;\r\n\r\n private _buildId: number = NodeRenderGraph._BuildIdGenerator++;\r\n\r\n /** Define the Url to load node editor script */\r\n public static EditorURL = `${Tools._DefaultCdnUrl}/v${Engine.Version}/nodeRenderGraphEditor/babylon.nodeRenderGraphEditor.js`;\r\n\r\n /** Define the Url to load snippets */\r\n public static SnippetUrl = Constants.SnippetUrl;\r\n\r\n /** Description of custom blocks to use in the node render graph editor */\r\n public static CustomBlockDescriptions: INodeRenderGraphCustomBlockDescription[] = [];\r\n\r\n private BJSNODERENDERGRAPHEDITOR = this._getGlobalNodeRenderGraphEditor();\r\n\r\n /** @returns the inspector from bundle or global */\r\n private _getGlobalNodeRenderGraphEditor(): any {\r\n // UMD global name detection from bundle metadata.\r\n // Note: rollup-built UMD bundles do not expose the editor class\r\n // directly on the namespace - it lives on `.default.NodeRenderGraphEditor` -\r\n // so we unwrap that case before falling back to the BABYLON global.\r\n if (typeof NODERENDERGRAPHEDITOR !== \"undefined\") {\r\n if ((NODERENDERGRAPHEDITOR as any).NodeRenderGraphEditor) {\r\n return NODERENDERGRAPHEDITOR;\r\n }\r\n if ((NODERENDERGRAPHEDITOR as any).default?.NodeRenderGraphEditor) {\r\n return (NODERENDERGRAPHEDITOR as any).default;\r\n }\r\n }\r\n\r\n // In case of module let's check the global emitted from the editor entry point.\r\n if (typeof BABYLON !== \"undefined\" && typeof BABYLON.NodeRenderGraphEditor !== \"undefined\") {\r\n return BABYLON;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Gets or sets data used by visual editor\r\n * @see https://nrge.babylonjs.com\r\n */\r\n public editorData: any = null;\r\n\r\n /**\r\n * Gets an array of blocks that needs to be serialized even if they are not yet connected\r\n */\r\n public attachedBlocks: NodeRenderGraphBlock[] = [];\r\n\r\n /**\r\n * Observable raised before the node render graph is built\r\n */\r\n public onBeforeBuildObservable = new Observable<FrameGraph>();\r\n\r\n /**\r\n * Observable raised after the node render graph is built\r\n * Note that this is the same observable as the one in the underlying FrameGraph!\r\n */\r\n public get onBuildObservable() {\r\n return this._frameGraph.onBuildObservable;\r\n }\r\n\r\n /**\r\n * Observable raised when an error is detected\r\n */\r\n public onBuildErrorObservable = new Observable<string>();\r\n\r\n /** Gets or sets the RenderGraphOutputBlock used to gather the final node render graph data */\r\n public outputBlock: Nullable<NodeRenderGraphOutputBlock> = null;\r\n\r\n /**\r\n * Snippet ID if the graph was created from the snippet server\r\n */\r\n public snippetId: string;\r\n\r\n /**\r\n * The name of the node render graph\r\n */\r\n @serialize()\r\n public name: string;\r\n\r\n /**\r\n * A free comment about the graph\r\n */\r\n @serialize(\"comment\")\r\n public comment: string;\r\n\r\n private readonly _engine: AbstractEngine;\r\n private readonly _scene: Scene;\r\n private readonly _resizeObserver: Nullable<Observer<AbstractEngine>> = null;\r\n private readonly _frameGraph: FrameGraph;\r\n private readonly _options: INodeRenderGraphCreateOptions;\r\n\r\n /**\r\n * Gets the frame graph used by this node render graph\r\n */\r\n public get frameGraph() {\r\n return this._frameGraph;\r\n }\r\n\r\n /**\r\n * Gets the scene used by this node render graph\r\n * @returns the scene used by this node render graph\r\n */\r\n public getScene() {\r\n return this._scene;\r\n }\r\n\r\n /**\r\n * Gets the options used to create this node render graph\r\n */\r\n public get options(): Immutable<INodeRenderGraphCreateOptions> {\r\n return this._options;\r\n }\r\n\r\n /**\r\n * Creates a new node render graph\r\n * @param name defines the name of the node render graph\r\n * @param scene defines the scene to use to execute the graph\r\n * @param options defines the options to use when creating the graph\r\n */\r\n public constructor(name: string, scene: Scene, options?: INodeRenderGraphCreateOptions) {\r\n this.name = name;\r\n this._scene = scene;\r\n this._engine = scene.getEngine();\r\n\r\n options = {\r\n debugTextures: false,\r\n autoConfigure: false,\r\n verbose: false,\r\n rebuildGraphOnEngineResize: true,\r\n autoFillExternalInputs: true,\r\n ...options,\r\n };\r\n\r\n this._options = options;\r\n\r\n this._frameGraph = new FrameGraph(this._scene, options.debugTextures, this);\r\n this._frameGraph.name = name;\r\n\r\n if (options.rebuildGraphOnEngineResize) {\r\n this._resizeObserver = this._engine.onResizeObservable.add(async () => {\r\n await this.buildAsync(false, true, false);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Gets the current class name (\"NodeRenderGraph\")\r\n * @returns the class name\r\n */\r\n public getClassName(): string {\r\n return \"NodeRenderGraph\";\r\n }\r\n\r\n /**\r\n * Gets a block by its name\r\n * @param name defines the name of the block to retrieve\r\n * @returns the required block or null if not found\r\n */\r\n public getBlockByName<T extends NodeRenderGraphBlock>(name: string): Nullable<T> {\r\n let result: Nullable<T> = null;\r\n for (const block of this.attachedBlocks) {\r\n if (block.name === name) {\r\n if (!result) {\r\n result = block as T;\r\n } else {\r\n Tools.Warn(\"More than one block was found with the name `\" + name + \"`\");\r\n return result;\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Get a block using a predicate\r\n * @param predicate defines the predicate used to find the good candidate\r\n * @returns the required block or null if not found\r\n */\r\n public getBlockByPredicate<T extends NodeRenderGraphBlock>(predicate: (block: NodeRenderGraphBlock) => boolean): Nullable<T> {\r\n for (const block of this.attachedBlocks) {\r\n if (predicate(block)) {\r\n return block as T;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Get all blocks that match a predicate\r\n * @param predicate defines the predicate used to find the good candidate(s)\r\n * @returns the list of blocks found\r\n */\r\n public getBlocksByPredicate<T extends NodeRenderGraphBlock>(predicate: (block: NodeRenderGraphBlock) => boolean): T[] {\r\n const blocks: T[] = [];\r\n for (const block of this.attachedBlocks) {\r\n if (predicate(block)) {\r\n blocks.push(block as T);\r\n }\r\n }\r\n\r\n return blocks;\r\n }\r\n\r\n /**\r\n * Gets the list of input blocks attached to this material\r\n * @returns an array of InputBlocks\r\n */\r\n public getInputBlocks() {\r\n const blocks: NodeRenderGraphInputBlock[] = [];\r\n for (const block of this.attachedBlocks) {\r\n if (block.isInput) {\r\n blocks.push(block as NodeRenderGraphInputBlock);\r\n }\r\n }\r\n\r\n return blocks;\r\n }\r\n\r\n /**\r\n * Replaces a camera in all camera input blocks of this node render graph.\r\n * If the current camera is found in any input block, it is replaced by the new camera,\r\n * optionally updating the scene's pointer camera and rebuilding the graph.\r\n * @param currentCamera The camera to replace.\r\n * @param newCamera The new camera to assign to the matching input blocks.\r\n * @param updateCameraToUseForPointers If true (default), updates `scene.cameraToUseForPointers` to the new camera when a replacement occurs.\r\n * @param rebuildGraph If true (default), rebuilds the graph asynchronously after the replacement.\r\n * @returns A promise that resolves to true if at least one input block was updated, false otherwise.\r\n */\r\n public async replaceCameraAsync(currentCamera: Nullable<Camera>, newCamera: Camera, updateCameraToUseForPointers = true, rebuildGraph = true) {\r\n const inputBlocks = this.getInputBlocks();\r\n\r\n let updated = false;\r\n for (const block of inputBlocks) {\r\n if (block.isCamera() && block.value === currentCamera) {\r\n block.value = newCamera;\r\n updated = true;\r\n }\r\n }\r\n\r\n if (updated) {\r\n if (updateCameraToUseForPointers) {\r\n this._scene.cameraToUseForPointers = newCamera;\r\n }\r\n\r\n if (rebuildGraph) {\r\n const currentAutoFill = this._options.autoFillExternalInputs;\r\n try {\r\n this._options.autoFillExternalInputs = false; // makes sure that the camera input block(s) we just updated don't get overwritten by autoFillExternalInputs\r\n\r\n await this.buildAsync();\r\n } finally {\r\n this._options.autoFillExternalInputs = currentAutoFill;\r\n }\r\n }\r\n }\r\n\r\n return updated;\r\n }\r\n\r\n /**\r\n * Launch the node render graph editor\r\n * @param config Define the configuration of the editor\r\n * @returns a promise fulfilled when the node editor is visible\r\n */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public async edit(config?: INodeRenderGraphEditorOptions): Promise<void> {\r\n return await new Promise((resolve) => {\r\n this.BJSNODERENDERGRAPHEDITOR = this.BJSNODERENDERGRAPHEDITOR || this._getGlobalNodeRenderGraphEditor();\r\n if (typeof this.BJSNODERENDERGRAPHEDITOR == \"undefined\") {\r\n const editorUrl = config && config.editorURL ? config.editorURL : NodeRenderGraph.EditorURL;\r\n\r\n // Load editor and add it to the DOM\r\n Tools.LoadBabylonScript(editorUrl, () => {\r\n this.BJSNODERENDERGRAPHEDITOR = this.BJSNODERENDERGRAPHEDITOR || this._getGlobalNodeRenderGraphEditor();\r\n this._createNodeEditor(config?.nodeRenderGraphEditorConfig);\r\n resolve();\r\n });\r\n } else {\r\n // Otherwise creates the editor\r\n this._createNodeEditor(config?.nodeRenderGraphEditorConfig);\r\n resolve();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Creates the node editor window.\r\n * @param additionalConfig Additional configuration for the FGE\r\n */\r\n private _createNodeEditor(additionalConfig?: any) {\r\n const nodeEditorConfig: any = {\r\n nodeRenderGraph: this,\r\n customBlockDescriptions: NodeRenderGraph.CustomBlockDescriptions,\r\n ...additionalConfig,\r\n };\r\n this.BJSNODERENDERGRAPHEDITOR.NodeRenderGraphEditor.Show(nodeEditorConfig);\r\n }\r\n\r\n /**\r\n * Build the final list of blocks that will be executed by the \"execute\" method.\r\n * It also builds the underlying frame graph unless specified otherwise.\r\n * @param dontBuildFrameGraph If the underlying frame graph should not be built (default: false)\r\n * @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.\r\n * @param setAsSceneFrameGraph If the built frame graph must be set as the scene's frame graph (default: true)\r\n */\r\n public async buildAsync(dontBuildFrameGraph = false, waitForReadiness = true, setAsSceneFrameGraph = true): Promise<void> {\r\n if (!this.outputBlock) {\r\n throw new Error(\"You must define the outputBlock property before building the node render graph\");\r\n }\r\n\r\n if (setAsSceneFrameGraph) {\r\n this._scene.frameGraph = this._frameGraph;\r\n }\r\n\r\n this._initializeBlock(this.outputBlock);\r\n\r\n this._frameGraph.clear();\r\n\r\n const state = new NodeRenderGraphBuildState();\r\n\r\n state.buildId = this._buildId;\r\n state.verbose = this._options.verbose!;\r\n\r\n if (this._options.autoFillExternalInputs) {\r\n this._autoFillExternalInputs();\r\n }\r\n\r\n this.onBeforeBuildObservable.notifyObservers(this._frameGraph);\r\n\r\n // Make sure that one of the object renderer is flagged as the main object renderer\r\n const objectRendererBlocks = this.getBlocksByPredicate<NodeRenderGraphBaseObjectRendererBlock>((block) => block instanceof NodeRenderGraphBaseObjectRendererBlock);\r\n if (objectRendererBlocks.length > 0 && !objectRendererBlocks.find((block) => block.isMainObjectRenderer)) {\r\n objectRendererBlocks[0].isMainObjectRenderer = true;\r\n }\r\n\r\n try {\r\n this.outputBlock.build(state);\r\n\r\n if (!dontBuildFrameGraph) {\r\n await this._frameGraph.buildAsync(waitForReadiness);\r\n }\r\n } finally {\r\n this._buildId = NodeRenderGraph._BuildIdGenerator++;\r\n\r\n state.emitErrors(this.onBuildErrorObservable);\r\n }\r\n }\r\n\r\n private _autoFillExternalInputs() {\r\n const allInputs = this.getInputBlocks();\r\n\r\n const shadowLights: IShadowLight[] = [];\r\n for (const light of this._scene.lights) {\r\n if ((light as IShadowLight).setShadowProjectionMatrix !== undefined) {\r\n shadowLights.push(light as IShadowLight);\r\n }\r\n }\r\n\r\n let cameraIndex = 0;\r\n let lightIndex = 0;\r\n for (const input of allInputs) {\r\n if (!input.isExternal) {\r\n continue;\r\n }\r\n if (!input.isAnAncestorOfType(\"NodeRenderGraphOutputBlock\")) {\r\n continue;\r\n }\r\n if ((input.type & NodeRenderGraphBlockConnectionPointTypes.TextureAllButBackBuffer) !== 0) {\r\n // nothing to do\r\n } else if (input.isCamera()) {\r\n const camera = this._scene.cameras[cameraIndex++] || this._scene.cameras[0];\r\n if (!this._scene.cameraToUseForPointers) {\r\n this._scene.cameraToUseForPointers = camera;\r\n }\r\n\r\n input.value = camera;\r\n } else if (input.isObjectList()) {\r\n input.value = { meshes: this._scene.meshes, particleSystems: this._scene.particleSystems };\r\n } else if (input.isShadowLight()) {\r\n if (lightIndex < shadowLights.length) {\r\n input.value = shadowLights[lightIndex++];\r\n lightIndex = lightIndex % shadowLights.length;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Returns a promise that resolves when the node render graph is ready to be executed\r\n * This method must be called after the graph has been built (NodeRenderGraph.build called)!\r\n * @param timeStep Time step in ms between retries (default is 16)\r\n * @param maxTimeout Maximum time in ms to wait for the graph to be ready (default is 10000)\r\n * @returns The promise that resolves when the graph is ready\r\n */\r\n public async whenReadyAsync(timeStep = 16, maxTimeout = 10000): Promise<void> {\r\n this._frameGraph.pausedExecution = true;\r\n await this._frameGraph.whenReadyAsync(timeStep, maxTimeout);\r\n this._frameGraph.pausedExecution = false;\r\n }\r\n\r\n /**\r\n * Execute the graph (the graph must have been built before!)\r\n */\r\n public execute() {\r\n this._frameGraph.execute();\r\n }\r\n\r\n private _initializeBlock(node: NodeRenderGraphBlock) {\r\n node.initialize();\r\n if (this._options.autoConfigure) {\r\n node.autoConfigure();\r\n }\r\n\r\n if (this.attachedBlocks.indexOf(node) === -1) {\r\n this.attachedBlocks.push(node);\r\n }\r\n\r\n for (const input of node.inputs) {\r\n const connectedPoint = input.connectedPoint;\r\n if (connectedPoint) {\r\n const block = connectedPoint.ownerBlock;\r\n if (block !== node) {\r\n this._initializeBlock(block);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Clear the current graph\r\n */\r\n public clear() {\r\n this.outputBlock = null;\r\n this.attachedBlocks.length = 0;\r\n }\r\n\r\n /**\r\n * Remove a block from the current graph\r\n * @param block defines the block to remove\r\n */\r\n public removeBlock(block: NodeRenderGraphBlock) {\r\n const attachedBlockIndex = this.attachedBlocks.indexOf(block);\r\n if (attachedBlockIndex > -1) {\r\n this.attachedBlocks.splice(attachedBlockIndex, 1);\r\n }\r\n\r\n if (block === this.outputBlock) {\r\n this.outputBlock = null;\r\n }\r\n }\r\n\r\n /**\r\n * Clear the current graph and load a new one from a serialization object\r\n * @param source defines the JSON representation of the graph\r\n * @param merge defines whether or not the source must be merged or replace the current content\r\n */\r\n public parseSerializedObject(source: any, merge = false) {\r\n if (!merge) {\r\n this.clear();\r\n }\r\n\r\n const map: { [key: number]: NodeRenderGraphBlock } = {};\r\n\r\n // Create blocks\r\n for (const parsedBlock of source.blocks) {\r\n const blockType: typeof NodeRenderGraphBlock = GetClass(parsedBlock.customType);\r\n if (blockType) {\r\n const additionalConstructionParameters = parsedBlock.additionalConstructionParameters;\r\n const block: NodeRenderGraphBlock = additionalConstructionParameters\r\n ? new blockType(\"\", this._frameGraph, this._scene, ...additionalConstructionParameters)\r\n : new blockType(\"\", this._frameGraph, this._scene);\r\n block._deserialize(parsedBlock);\r\n map[parsedBlock.id] = block;\r\n\r\n this.attachedBlocks.push(block);\r\n }\r\n }\r\n\r\n // Reconnect teleportation\r\n for (const block of this.attachedBlocks) {\r\n if (block.isTeleportOut) {\r\n const teleportOut = block as NodeRenderGraphTeleportOutBlock;\r\n const id = teleportOut._tempEntryPointUniqueId;\r\n if (id) {\r\n const source = map[id] as NodeRenderGraphTeleportInBlock;\r\n if (source) {\r\n source.attachToEndpoint(teleportOut);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Connections - Starts with input blocks only (except if in \"merge\" mode where we scan all blocks)\r\n for (let blockIndex = 0; blockIndex < source.blocks.length; blockIndex++) {\r\n const parsedBlock = source.blocks[blockIndex];\r\n const block = map[parsedBlock.id];\r\n\r\n if (!block) {\r\n continue;\r\n }\r\n\r\n if (block.inputs.length && parsedBlock.inputs.some((i: any) => i.targetConnectionName) && !merge) {\r\n continue;\r\n }\r\n this._restoreConnections(block, source, map);\r\n }\r\n\r\n // Outputs\r\n if (source.outputNodeId) {\r\n this.outputBlock = map[source.outputNodeId] as NodeRenderGraphOutputBlock;\r\n }\r\n\r\n // UI related info\r\n if (source.locations || (source.editorData && source.editorData.locations)) {\r\n const locations: {\r\n blockId: number;\r\n x: number;\r\n y: number;\r\n isCollapsed: boolean;\r\n }[] = source.locations || source.editorData.locations;\r\n\r\n for (const location of locations) {\r\n if (map[location.blockId]) {\r\n location.blockId = map[location.blockId].uniqueId;\r\n }\r\n }\r\n\r\n if (merge && this.editorData && this.editorData.locations) {\r\n locations.concat(this.editorData.locations);\r\n }\r\n\r\n if (source.locations) {\r\n this.editorData = {\r\n locations: locations,\r\n };\r\n } else {\r\n this.editorData = source.editorData;\r\n this.editorData.locations = locations;\r\n }\r\n\r\n const blockMap: { [key: number]: number } = {};\r\n\r\n for (const key in map) {\r\n blockMap[key] = map[key].uniqueId;\r\n }\r\n\r\n this.editorData.map = blockMap;\r\n }\r\n\r\n this.comment = source.comment;\r\n }\r\n\r\n private _restoreConnections(block: NodeRenderGraphBlock, source: any, map: { [key: number]: NodeRenderGraphBlock }) {\r\n for (const outputPoint of block.outputs) {\r\n for (const candidate of source.blocks) {\r\n const target = map[candidate.id];\r\n\r\n if (!target) {\r\n continue;\r\n }\r\n\r\n for (const input of candidate.inputs) {\r\n if (map[input.targetBlockId] === block && input.targetConnectionName === outputPoint.name) {\r\n const inputPoint = target.getInputByName(input.inputName);\r\n if (!inputPoint || inputPoint.isConnected) {\r\n continue;\r\n }\r\n\r\n outputPoint.connectTo(inputPoint, true);\r\n this._restoreConnections(target, source, map);\r\n continue;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Generate a string containing the code declaration required to create an equivalent of this node render graph\r\n * @returns a string\r\n */\r\n public generateCode() {\r\n let alreadyDumped: NodeRenderGraphBlock[] = [];\r\n const blocks: NodeRenderGraphBlock[] = [];\r\n const uniqueNames: string[] = [\"const\", \"var\", \"let\"];\r\n // Gets active blocks\r\n if (this.outputBlock) {\r\n this._gatherBlocks(this.outputBlock, blocks);\r\n }\r\n\r\n // Generate\r\n const options = JSON.stringify(this._options);\r\n let codeString = `let nodeRenderGraph = new BABYLON.NodeRenderGraph(\"${this.name || \"render graph\"}\", scene, ${options});\\n`;\r\n for (const node of blocks) {\r\n if (node.isInput && alreadyDumped.indexOf(node) === -1) {\r\n codeString += node._dumpCode(uniqueNames, alreadyDumped) + \"\\n\";\r\n }\r\n }\r\n\r\n if (this.outputBlock) {\r\n // Connections\r\n alreadyDumped = [];\r\n codeString += \"// Connections\\n\";\r\n codeString += this.outputBlock._dumpCodeForOutputConnections(alreadyDumped);\r\n\r\n // Output nodes\r\n codeString += \"// Output nodes\\n\";\r\n codeString += `nodeRenderGraph.outputBlock = ${this.outputBlock._codeVariableName};\\n`;\r\n codeString += `nodeRenderGraph.build();\\n`;\r\n }\r\n\r\n return codeString;\r\n }\r\n\r\n private _gatherBlocks(rootNode: NodeRenderGraphBlock, list: NodeRenderGraphBlock[]) {\r\n if (list.indexOf(rootNode) !== -1) {\r\n return;\r\n }\r\n list.push(rootNode);\r\n\r\n for (const input of rootNode.inputs) {\r\n const connectedPoint = input.connectedPoint;\r\n if (connectedPoint) {\r\n const block = connectedPoint.ownerBlock;\r\n if (block !== rootNode) {\r\n this._gatherBlocks(block, list);\r\n }\r\n }\r\n }\r\n\r\n // Teleportation\r\n if (rootNode.isTeleportOut) {\r\n const block = rootNode as NodeRenderGraphTeleportOutBlock;\r\n if (block.entryPoint) {\r\n this._gatherBlocks(block.entryPoint, list);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Clear the current graph and set it to a default state\r\n */\r\n public setToDefault() {\r\n this.clear();\r\n\r\n this.editorData = null;\r\n\r\n // Source textures\r\n const colorTexture = new NodeRenderGraphInputBlock(\"Color Texture\", this._frameGraph, this._scene, NodeRenderGraphBlockConnectionPointTypes.Texture);\r\n colorTexture.creationOptions.options.samples = 4;\r\n\r\n const depthTexture = new NodeRenderGraphInputBlock(\"Depth Texture\", this._frameGraph, this._scene, NodeRenderGraphBlockConnectionPointTypes.TextureDepthStencilAttachment);\r\n depthTexture.creationOptions.options.samples = 4;\r\n\r\n // Clear texture\r\n const clear = new NodeRenderGraphClearBlock(\"Clear\", this._frameGraph, this._scene);\r\n clear.clearDepth = true;\r\n clear.clearStencil = true;\r\n\r\n colorTexture.output.connectTo(clear.target);\r\n depthTexture.output.connectTo(clear.depth);\r\n\r\n // Object list and culling\r\n const camera = new NodeRenderGraphInputBlock(\"Camera\", this._frameGraph, this._scene, NodeRenderGraphBlockConnectionPointTypes.Camera);\r\n const objectList = new NodeRenderGraphInputBlock(\"Object List\", this._frameGraph, this._scene, NodeRenderGraphBlockConnectionPointTypes.ObjectList);\r\n const cull = new NodeRenderGraphCullObjectsBlock(\"Cull\", this._frameGraph, this._scene);\r\n\r\n camera.output.connectTo(cull.camera);\r\n objectList.output.connectTo(cull.objects);\r\n\r\n // Render objects\r\n const mainRendering = new NodeRenderGraphObjectRendererBlock(\"Main Rendering\", this._frameGraph, this._scene);\r\n\r\n camera.output.connectTo(mainRendering.camera);\r\n cull.output.connectTo(mainRendering.objects);\r\n clear.output.connectTo(mainRendering.target);\r\n clear.outputDepth.connectTo(mainRendering.depth);\r\n\r\n // Final output\r\n const output = new NodeRenderGraphOutputBlock(\"Output\", this._frameGraph, this._scene);\r\n mainRendering.output.connectTo(output.texture);\r\n\r\n this.outputBlock = output;\r\n }\r\n\r\n /**\r\n * Makes a duplicate of the current node render graph.\r\n * Note that you should call buildAsync() on the returned graph to make it usable.\r\n * @param name defines the name to use for the new node render graph\r\n * @returns the new node render graph\r\n */\r\n public clone(name: string): NodeRenderGraph {\r\n const serializationObject = this.serialize();\r\n\r\n const clone = SerializationHelper.Clone(() => new NodeRenderGraph(name, this._scene), this);\r\n clone.name = name;\r\n\r\n clone.parseSerializedObject(serializationObject);\r\n clone._buildId = this._buildId;\r\n\r\n return clone;\r\n }\r\n\r\n /**\r\n * Serializes this node render graph in a JSON representation\r\n * @param selectedBlocks defines the list of blocks to save (if null the whole node render graph will be saved)\r\n * @returns the serialized node render graph object\r\n */\r\n public serialize(selectedBlocks?: NodeRenderGraphBlock[]): any {\r\n const serializationObject = selectedBlocks ? {} : SerializationHelper.Serialize(this);\r\n serializationObject.editorData = JSON.parse(JSON.stringify(this.editorData)); // Copy\r\n\r\n let blocks: NodeRenderGraphBlock[] = [];\r\n\r\n if (selectedBlocks) {\r\n blocks = selectedBlocks;\r\n } else {\r\n serializationObject.customType = \"BABYLON.NodeRenderGraph\";\r\n if (this.outputBlock) {\r\n serializationObject.outputNodeId = this.outputBlock.uniqueId;\r\n }\r\n }\r\n\r\n // Blocks\r\n serializationObject.blocks = [];\r\n\r\n for (const block of blocks) {\r\n serializationObject.blocks.push(block.serialize());\r\n }\r\n\r\n if (!selectedBlocks) {\r\n for (const block of this.attachedBlocks) {\r\n if (blocks.indexOf(block) !== -1) {\r\n continue;\r\n }\r\n serializationObject.blocks.push(block.serialize());\r\n }\r\n }\r\n\r\n return serializationObject;\r\n }\r\n\r\n /**\r\n * Disposes the resources\r\n */\r\n public dispose(): void {\r\n for (const block of this.attachedBlocks) {\r\n block.dispose();\r\n }\r\n\r\n this._frameGraph.dispose();\r\n (this._frameGraph as WritableObject<FrameGraph>) = undefined as any;\r\n\r\n this._engine.onResizeObservable.remove(this._resizeObserver);\r\n (this._resizeObserver as WritableObject<Nullable<Observer<AbstractEngine>>>) = null;\r\n\r\n this.attachedBlocks.length = 0;\r\n this.onBuildErrorObservable.clear();\r\n }\r\n\r\n /**\r\n * Creates a new node render graph set to default basic configuration\r\n * @param name defines the name of the node render graph\r\n * @param scene defines the scene to use\r\n * @param nodeRenderGraphOptions defines options to use when creating the node render graph\r\n * @returns a new NodeRenderGraph\r\n */\r\n public static async CreateDefaultAsync(name: string, scene: Scene, nodeRenderGraphOptions?: INodeRenderGraphCreateOptions): Promise<NodeRenderGraph> {\r\n const renderGraph = new NodeRenderGraph(name, scene, nodeRenderGraphOptions);\r\n\r\n renderGraph.setToDefault();\r\n await renderGraph.buildAsync(false, true, false);\r\n\r\n return renderGraph;\r\n }\r\n\r\n /**\r\n * Creates a node render graph from parsed graph data\r\n * @param source defines the JSON representation of the node render graph\r\n * @param scene defines the scene to use\r\n * @param nodeRenderGraphOptions defines options to use when creating the node render\r\n * @param skipBuild defines whether to skip building the node render graph (default is true)\r\n * @returns a new node render graph\r\n */\r\n public static Parse(source: any, scene: Scene, nodeRenderGraphOptions?: INodeRenderGraphCreateOptions, skipBuild: boolean = true): NodeRenderGraph {\r\n const renderGraph = SerializationHelper.Parse(() => new NodeRenderGraph(source.name, scene, nodeRenderGraphOptions), source, null);\r\n\r\n renderGraph.parseSerializedObject(source);\r\n if (!skipBuild) {\r\n void renderGraph.buildAsync();\r\n }\r\n\r\n return renderGraph;\r\n }\r\n\r\n /**\r\n * Creates a node render graph from a snippet saved by the node render graph editor\r\n * @param snippetId defines the snippet to load\r\n * @param scene defines the scene to use\r\n * @param nodeRenderGraphOptions defines options to use when creating the node render graph\r\n * @param nodeRenderGraph defines a node render graph to update (instead of creating a new one)\r\n * @param skipBuild defines whether to skip building the node render graph (default is true)\r\n * @returns a promise that will resolve to the new node render graph\r\n */\r\n // eslint-disable-next-line @typescript-eslint/promise-function-async, no-restricted-syntax\r\n public static ParseFromSnippetAsync(\r\n snippetId: string,\r\n scene: Scene,\r\n nodeRenderGraphOptions?: INodeRenderGraphCreateOptions,\r\n nodeRenderGraph?: NodeRenderGraph,\r\n skipBuild: boolean = true\r\n ): Promise<NodeRenderGraph> {\r\n if (snippetId === \"_BLANK\") {\r\n return NodeRenderGraph.CreateDefaultAsync(\"blank\", scene, nodeRenderGraphOptions);\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n const request = new WebRequest();\r\n request.addEventListener(\"readystatechange\", async () => {\r\n if (request.readyState == 4) {\r\n if (request.status == 200) {\r\n const snippet = JSON.parse(JSON.parse(request.responseText).jsonPayload);\r\n const serializationObject = JSON.parse(snippet.nodeRenderGraph);\r\n\r\n if (!nodeRenderGraph) {\r\n nodeRenderGraph = SerializationHelper.Parse(() => new NodeRenderGraph(snippetId, scene, nodeRenderGraphOptions), serializationObject, null);\r\n }\r\n\r\n nodeRenderGraph.parseSerializedObject(serializationObject);\r\n nodeRenderGraph.snippetId = snippetId;\r\n\r\n try {\r\n if (!skipBuild) {\r\n await nodeRenderGraph.buildAsync();\r\n }\r\n resolve(nodeRenderGraph);\r\n } catch (err) {\r\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\r\n reject(err);\r\n }\r\n } else {\r\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\r\n reject(\"Unable to load the snippet \" + snippetId);\r\n }\r\n }\r\n });\r\n\r\n request.open(\"GET\", this.SnippetUrl + \"/\" + snippetId.replace(/#/g, \"/\"));\r\n request.send();\r\n });\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"nodeRenderGraph.js","sourceRoot":"","sources":["../../../../../dev/core/src/FrameGraph/Node/nodeRenderGraph.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n type Observer,\r\n type Nullable,\r\n type NodeRenderGraphBlock,\r\n type NodeRenderGraphTeleportOutBlock,\r\n type NodeRenderGraphTeleportInBlock,\r\n type AbstractEngine,\r\n type INodeRenderGraphCreateOptions,\r\n type INodeRenderGraphEditorOptions,\r\n type Scene,\r\n type WritableObject,\r\n type IShadowLight,\r\n type INodeRenderGraphCustomBlockDescription,\r\n type Immutable,\r\n type Camera,\r\n} from \"core/index\";\r\nimport { Observable } from \"../../Misc/observable\";\r\nimport { NodeRenderGraphOutputBlock } from \"./Blocks/outputBlock.pure\";\r\nimport { FrameGraph } from \"../frameGraph\";\r\nimport { GetClass } from \"../../Misc/typeStore\";\r\nimport { serialize } from \"../../Misc/decorators\";\r\nimport { SerializationHelper } from \"../../Misc/decorators.serialization\";\r\nimport { Constants } from \"../../Engines/constants\";\r\nimport { WebRequest } from \"../../Misc/webRequest\";\r\nimport { NodeRenderGraphInputBlock } from \"./Blocks/inputBlock.pure\";\r\nimport { Tools } from \"../../Misc/tools.pure\";\r\nimport { Engine } from \"../../Engines/engine.pure\";\r\nimport { NodeRenderGraphBlockConnectionPointTypes } from \"./Types/nodeRenderGraphTypes\";\r\nimport { NodeRenderGraphClearBlock } from \"./Blocks/Textures/clearBlock.pure\";\r\nimport { NodeRenderGraphBaseObjectRendererBlock } from \"./Blocks/Rendering/baseObjectRendererBlock\";\r\nimport { NodeRenderGraphObjectRendererBlock } from \"./Blocks/Rendering/objectRendererBlock.pure\";\r\nimport { NodeRenderGraphBuildState } from \"./nodeRenderGraphBuildState\";\r\nimport { NodeRenderGraphCullObjectsBlock } from \"./Blocks/cullObjectsBlock.pure\";\r\n\r\n// declare NODERENDERGRAPHEDITOR namespace for compilation issue\r\ndeclare let NODERENDERGRAPHEDITOR: any;\r\ndeclare let BABYLON: any;\r\n\r\n/**\r\n * Defines a node render graph\r\n */\r\nexport class NodeRenderGraph {\r\n private static _BuildIdGenerator: number = 0;\r\n\r\n private _buildId: number = NodeRenderGraph._BuildIdGenerator++;\r\n\r\n /** Define the Url to load node editor script */\r\n public static EditorURL = `${Tools._DefaultCdnUrl}/v${Engine.Version}/nodeRenderGraphEditor/babylon.nodeRenderGraphEditor.js`;\r\n\r\n /** Define the Url to load snippets */\r\n public static SnippetUrl = Constants.SnippetUrl;\r\n\r\n /** Description of custom blocks to use in the node render graph editor */\r\n public static CustomBlockDescriptions: INodeRenderGraphCustomBlockDescription[] = [];\r\n\r\n private BJSNODERENDERGRAPHEDITOR = this._getGlobalNodeRenderGraphEditor();\r\n\r\n /** @returns the inspector from bundle or global */\r\n private _getGlobalNodeRenderGraphEditor(): any {\r\n // UMD global name detection from bundle metadata.\r\n // Note: rollup-built UMD bundles do not expose the editor class\r\n // directly on the namespace - it lives on `.default.NodeRenderGraphEditor` -\r\n // so we unwrap that case before falling back to the BABYLON global.\r\n if (typeof NODERENDERGRAPHEDITOR !== \"undefined\") {\r\n if ((NODERENDERGRAPHEDITOR as any).NodeRenderGraphEditor) {\r\n return NODERENDERGRAPHEDITOR;\r\n }\r\n if ((NODERENDERGRAPHEDITOR as any).default?.NodeRenderGraphEditor) {\r\n return (NODERENDERGRAPHEDITOR as any).default;\r\n }\r\n }\r\n\r\n // In case of module let's check the global emitted from the editor entry point.\r\n if (typeof BABYLON !== \"undefined\" && typeof BABYLON.NodeRenderGraphEditor !== \"undefined\") {\r\n return BABYLON;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Gets or sets data used by visual editor\r\n * @see https://nrge.babylonjs.com\r\n */\r\n public editorData: any = null;\r\n\r\n /**\r\n * Gets an array of blocks that needs to be serialized even if they are not yet connected\r\n */\r\n public attachedBlocks: NodeRenderGraphBlock[] = [];\r\n\r\n /**\r\n * Observable raised before the node render graph is built\r\n */\r\n public onBeforeBuildObservable = new Observable<FrameGraph>();\r\n\r\n /**\r\n * Observable raised after the node render graph is built\r\n * Note that this is the same observable as the one in the underlying FrameGraph!\r\n */\r\n public get onBuildObservable() {\r\n return this._frameGraph.onBuildObservable;\r\n }\r\n\r\n /**\r\n * Observable raised when an error is detected\r\n */\r\n public onBuildErrorObservable = new Observable<string>();\r\n\r\n /** Gets or sets the RenderGraphOutputBlock used to gather the final node render graph data */\r\n public outputBlock: Nullable<NodeRenderGraphOutputBlock> = null;\r\n\r\n /**\r\n * Snippet ID if the graph was created from the snippet server\r\n */\r\n public snippetId: string;\r\n\r\n /**\r\n * The name of the node render graph\r\n */\r\n @serialize()\r\n public name: string;\r\n\r\n /**\r\n * A free comment about the graph\r\n */\r\n @serialize(\"comment\")\r\n public comment: string;\r\n\r\n private readonly _engine: AbstractEngine;\r\n private readonly _scene: Scene;\r\n private readonly _resizeObserver: Nullable<Observer<AbstractEngine>> = null;\r\n private readonly _frameGraph: FrameGraph;\r\n private readonly _options: INodeRenderGraphCreateOptions;\r\n\r\n /**\r\n * Gets the frame graph used by this node render graph\r\n */\r\n public get frameGraph() {\r\n return this._frameGraph;\r\n }\r\n\r\n /**\r\n * Gets the scene used by this node render graph\r\n * @returns the scene used by this node render graph\r\n */\r\n public getScene() {\r\n return this._scene;\r\n }\r\n\r\n /**\r\n * Gets the options used to create this node render graph\r\n */\r\n public get options(): Immutable<INodeRenderGraphCreateOptions> {\r\n return this._options;\r\n }\r\n\r\n /**\r\n * Creates a new node render graph\r\n * @param name defines the name of the node render graph\r\n * @param scene defines the scene to use to execute the graph\r\n * @param options defines the options to use when creating the graph\r\n */\r\n public constructor(name: string, scene: Scene, options?: INodeRenderGraphCreateOptions) {\r\n this.name = name;\r\n this._scene = scene;\r\n this._engine = scene.getEngine();\r\n\r\n options = {\r\n debugTextures: false,\r\n autoConfigure: false,\r\n verbose: false,\r\n rebuildGraphOnEngineResize: true,\r\n autoFillExternalInputs: true,\r\n ...options,\r\n };\r\n\r\n this._options = options;\r\n\r\n this._frameGraph = new FrameGraph(this._scene, options.debugTextures, this);\r\n this._frameGraph.name = name;\r\n\r\n if (options.rebuildGraphOnEngineResize) {\r\n this._resizeObserver = this._engine.onResizeObservable.add(async () => {\r\n await this.buildAsync(false, true, false);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Gets the current class name (\"NodeRenderGraph\")\r\n * @returns the class name\r\n */\r\n public getClassName(): string {\r\n return \"NodeRenderGraph\";\r\n }\r\n\r\n /**\r\n * Gets a block by its name\r\n * @param name defines the name of the block to retrieve\r\n * @returns the required block or null if not found\r\n */\r\n public getBlockByName<T extends NodeRenderGraphBlock>(name: string): Nullable<T> {\r\n let result: Nullable<T> = null;\r\n for (const block of this.attachedBlocks) {\r\n if (block.name === name) {\r\n if (!result) {\r\n result = block as T;\r\n } else {\r\n Tools.Warn(\"More than one block was found with the name `\" + name + \"`\");\r\n return result;\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Get a block using a predicate\r\n * @param predicate defines the predicate used to find the good candidate\r\n * @returns the required block or null if not found\r\n */\r\n public getBlockByPredicate<T extends NodeRenderGraphBlock>(predicate: (block: NodeRenderGraphBlock) => boolean): Nullable<T> {\r\n for (const block of this.attachedBlocks) {\r\n if (predicate(block)) {\r\n return block as T;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Get all blocks that match a predicate\r\n * @param predicate defines the predicate used to find the good candidate(s)\r\n * @returns the list of blocks found\r\n */\r\n public getBlocksByPredicate<T extends NodeRenderGraphBlock>(predicate: (block: NodeRenderGraphBlock) => boolean): T[] {\r\n const blocks: T[] = [];\r\n for (const block of this.attachedBlocks) {\r\n if (predicate(block)) {\r\n blocks.push(block as T);\r\n }\r\n }\r\n\r\n return blocks;\r\n }\r\n\r\n /**\r\n * Gets the list of input blocks attached to this material\r\n * @returns an array of InputBlocks\r\n */\r\n public getInputBlocks() {\r\n const blocks: NodeRenderGraphInputBlock[] = [];\r\n for (const block of this.attachedBlocks) {\r\n if (block.isInput) {\r\n blocks.push(block as NodeRenderGraphInputBlock);\r\n }\r\n }\r\n\r\n return blocks;\r\n }\r\n\r\n /**\r\n * Replaces a camera in all camera input blocks of this node render graph.\r\n * If the current camera is found in any input block, it is replaced by the new camera,\r\n * optionally updating the scene's pointer camera and rebuilding the graph.\r\n * @param currentCamera The camera to replace.\r\n * @param newCamera The new camera to assign to the matching input blocks.\r\n * @param updateCameraToUseForPointers If true (default), updates `scene.cameraToUseForPointers` to the new camera when a replacement occurs.\r\n * @param rebuildGraph If true (default), rebuilds the graph asynchronously after the replacement.\r\n * @returns A promise that resolves to true if at least one input block was updated, false otherwise.\r\n */\r\n public async replaceCameraAsync(currentCamera: Nullable<Camera>, newCamera: Camera, updateCameraToUseForPointers = true, rebuildGraph = true) {\r\n const inputBlocks = this.getInputBlocks();\r\n\r\n let updated = false;\r\n for (const block of inputBlocks) {\r\n if (block.isCamera() && block.value === currentCamera) {\r\n block.value = newCamera;\r\n updated = true;\r\n }\r\n }\r\n\r\n if (updated) {\r\n if (updateCameraToUseForPointers) {\r\n this._scene.cameraToUseForPointers = newCamera;\r\n }\r\n\r\n if (rebuildGraph) {\r\n const currentAutoFill = this._options.autoFillExternalInputs;\r\n try {\r\n this._options.autoFillExternalInputs = false; // makes sure that the camera input block(s) we just updated don't get overwritten by autoFillExternalInputs\r\n\r\n await this.buildAsync();\r\n } finally {\r\n this._options.autoFillExternalInputs = currentAutoFill;\r\n }\r\n }\r\n }\r\n\r\n return updated;\r\n }\r\n\r\n /**\r\n * Launch the node render graph editor\r\n * @param config Define the configuration of the editor\r\n * @returns a promise fulfilled when the node editor is visible\r\n */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public async edit(config?: INodeRenderGraphEditorOptions): Promise<void> {\r\n return await new Promise((resolve) => {\r\n this.BJSNODERENDERGRAPHEDITOR = this.BJSNODERENDERGRAPHEDITOR || this._getGlobalNodeRenderGraphEditor();\r\n if (typeof this.BJSNODERENDERGRAPHEDITOR == \"undefined\") {\r\n const editorUrl = config && config.editorURL ? config.editorURL : NodeRenderGraph.EditorURL;\r\n\r\n // Load editor and add it to the DOM\r\n Tools.LoadBabylonScript(editorUrl, () => {\r\n this.BJSNODERENDERGRAPHEDITOR = this.BJSNODERENDERGRAPHEDITOR || this._getGlobalNodeRenderGraphEditor();\r\n this._createNodeEditor(config?.nodeRenderGraphEditorConfig);\r\n resolve();\r\n });\r\n } else {\r\n // Otherwise creates the editor\r\n this._createNodeEditor(config?.nodeRenderGraphEditorConfig);\r\n resolve();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Creates the node editor window.\r\n * @param additionalConfig Additional configuration for the FGE\r\n */\r\n private _createNodeEditor(additionalConfig?: any) {\r\n const nodeEditorConfig: any = {\r\n nodeRenderGraph: this,\r\n customBlockDescriptions: NodeRenderGraph.CustomBlockDescriptions,\r\n ...additionalConfig,\r\n };\r\n this.BJSNODERENDERGRAPHEDITOR.NodeRenderGraphEditor.Show(nodeEditorConfig);\r\n }\r\n\r\n /**\r\n * Build the final list of blocks that will be executed by the \"execute\" method.\r\n * It also builds the underlying frame graph unless specified otherwise.\r\n * @param dontBuildFrameGraph If the underlying frame graph should not be built (default: false)\r\n * @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.\r\n * @param setAsSceneFrameGraph If the built frame graph must be set as the scene's frame graph (default: true)\r\n */\r\n public async buildAsync(dontBuildFrameGraph = false, waitForReadiness = true, setAsSceneFrameGraph = true): Promise<void> {\r\n if (!this.outputBlock) {\r\n throw new Error(\"You must define the outputBlock property before building the node render graph\");\r\n }\r\n\r\n if (setAsSceneFrameGraph) {\r\n this._scene.frameGraph = this._frameGraph;\r\n }\r\n\r\n this._initializeBlock(this.outputBlock);\r\n\r\n this._frameGraph.clear();\r\n\r\n const state = new NodeRenderGraphBuildState();\r\n\r\n state.buildId = this._buildId;\r\n state.verbose = this._options.verbose!;\r\n\r\n if (this._options.autoFillExternalInputs) {\r\n this._autoFillExternalInputs();\r\n }\r\n\r\n this.onBeforeBuildObservable.notifyObservers(this._frameGraph);\r\n\r\n // Make sure that one of the object renderer is flagged as the main object renderer\r\n const objectRendererBlocks = this.getBlocksByPredicate<NodeRenderGraphBaseObjectRendererBlock>((block) => block instanceof NodeRenderGraphBaseObjectRendererBlock);\r\n if (objectRendererBlocks.length > 0 && !objectRendererBlocks.find((block) => block.isMainObjectRenderer)) {\r\n objectRendererBlocks[0].isMainObjectRenderer = true;\r\n }\r\n\r\n try {\r\n this.outputBlock.build(state);\r\n\r\n if (!dontBuildFrameGraph) {\r\n await this._frameGraph.buildAsync(waitForReadiness);\r\n }\r\n } finally {\r\n this._buildId = NodeRenderGraph._BuildIdGenerator++;\r\n\r\n state.emitErrors(this.onBuildErrorObservable);\r\n }\r\n }\r\n\r\n private _autoFillExternalInputs() {\r\n const allInputs = this.getInputBlocks();\r\n\r\n const shadowLights: IShadowLight[] = [];\r\n for (const light of this._scene.lights) {\r\n if ((light as IShadowLight).setShadowProjectionMatrix !== undefined) {\r\n shadowLights.push(light as IShadowLight);\r\n }\r\n }\r\n\r\n let cameraIndex = 0;\r\n let lightIndex = 0;\r\n for (const input of allInputs) {\r\n if (!input.isExternal) {\r\n continue;\r\n }\r\n if (!input.isAnAncestorOfType(\"NodeRenderGraphOutputBlock\")) {\r\n continue;\r\n }\r\n if ((input.type & NodeRenderGraphBlockConnectionPointTypes.TextureAllButBackBuffer) !== 0) {\r\n // nothing to do\r\n } else if (input.isCamera()) {\r\n const camera = this._scene.cameras[cameraIndex++] || this._scene.cameras[0];\r\n if (!this._scene.cameraToUseForPointers) {\r\n this._scene.cameraToUseForPointers = camera;\r\n }\r\n\r\n input.value = camera;\r\n } else if (input.isObjectList()) {\r\n input.value = { meshes: this._scene.meshes, particleSystems: this._scene.particleSystems, spriteManagers: this._scene.spriteManagers };\r\n } else if (input.isShadowLight()) {\r\n if (lightIndex < shadowLights.length) {\r\n input.value = shadowLights[lightIndex++];\r\n lightIndex = lightIndex % shadowLights.length;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Returns a promise that resolves when the node render graph is ready to be executed\r\n * This method must be called after the graph has been built (NodeRenderGraph.build called)!\r\n * @param timeStep Time step in ms between retries (default is 16)\r\n * @param maxTimeout Maximum time in ms to wait for the graph to be ready (default is 10000)\r\n * @returns The promise that resolves when the graph is ready\r\n */\r\n public async whenReadyAsync(timeStep = 16, maxTimeout = 10000): Promise<void> {\r\n this._frameGraph.pausedExecution = true;\r\n await this._frameGraph.whenReadyAsync(timeStep, maxTimeout);\r\n this._frameGraph.pausedExecution = false;\r\n }\r\n\r\n /**\r\n * Execute the graph (the graph must have been built before!)\r\n */\r\n public execute() {\r\n this._frameGraph.execute();\r\n }\r\n\r\n private _initializeBlock(node: NodeRenderGraphBlock) {\r\n node.initialize();\r\n if (this._options.autoConfigure) {\r\n node.autoConfigure();\r\n }\r\n\r\n if (this.attachedBlocks.indexOf(node) === -1) {\r\n this.attachedBlocks.push(node);\r\n }\r\n\r\n for (const input of node.inputs) {\r\n const connectedPoint = input.connectedPoint;\r\n if (connectedPoint) {\r\n const block = connectedPoint.ownerBlock;\r\n if (block !== node) {\r\n this._initializeBlock(block);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Clear the current graph\r\n */\r\n public clear() {\r\n this.outputBlock = null;\r\n this.attachedBlocks.length = 0;\r\n }\r\n\r\n /**\r\n * Remove a block from the current graph\r\n * @param block defines the block to remove\r\n */\r\n public removeBlock(block: NodeRenderGraphBlock) {\r\n const attachedBlockIndex = this.attachedBlocks.indexOf(block);\r\n if (attachedBlockIndex > -1) {\r\n this.attachedBlocks.splice(attachedBlockIndex, 1);\r\n }\r\n\r\n if (block === this.outputBlock) {\r\n this.outputBlock = null;\r\n }\r\n }\r\n\r\n /**\r\n * Clear the current graph and load a new one from a serialization object\r\n * @param source defines the JSON representation of the graph\r\n * @param merge defines whether or not the source must be merged or replace the current content\r\n */\r\n public parseSerializedObject(source: any, merge = false) {\r\n if (!merge) {\r\n this.clear();\r\n }\r\n\r\n const map: { [key: number]: NodeRenderGraphBlock } = {};\r\n\r\n // Create blocks\r\n for (const parsedBlock of source.blocks) {\r\n const blockType: typeof NodeRenderGraphBlock = GetClass(parsedBlock.customType);\r\n if (blockType) {\r\n const additionalConstructionParameters = parsedBlock.additionalConstructionParameters;\r\n const block: NodeRenderGraphBlock = additionalConstructionParameters\r\n ? new blockType(\"\", this._frameGraph, this._scene, ...additionalConstructionParameters)\r\n : new blockType(\"\", this._frameGraph, this._scene);\r\n block._deserialize(parsedBlock);\r\n map[parsedBlock.id] = block;\r\n\r\n this.attachedBlocks.push(block);\r\n }\r\n }\r\n\r\n // Reconnect teleportation\r\n for (const block of this.attachedBlocks) {\r\n if (block.isTeleportOut) {\r\n const teleportOut = block as NodeRenderGraphTeleportOutBlock;\r\n const id = teleportOut._tempEntryPointUniqueId;\r\n if (id) {\r\n const source = map[id] as NodeRenderGraphTeleportInBlock;\r\n if (source) {\r\n source.attachToEndpoint(teleportOut);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Connections - Starts with input blocks only (except if in \"merge\" mode where we scan all blocks)\r\n for (let blockIndex = 0; blockIndex < source.blocks.length; blockIndex++) {\r\n const parsedBlock = source.blocks[blockIndex];\r\n const block = map[parsedBlock.id];\r\n\r\n if (!block) {\r\n continue;\r\n }\r\n\r\n if (block.inputs.length && parsedBlock.inputs.some((i: any) => i.targetConnectionName) && !merge) {\r\n continue;\r\n }\r\n this._restoreConnections(block, source, map);\r\n }\r\n\r\n // Outputs\r\n if (source.outputNodeId) {\r\n this.outputBlock = map[source.outputNodeId] as NodeRenderGraphOutputBlock;\r\n }\r\n\r\n // UI related info\r\n if (source.locations || (source.editorData && source.editorData.locations)) {\r\n const locations: {\r\n blockId: number;\r\n x: number;\r\n y: number;\r\n isCollapsed: boolean;\r\n }[] = source.locations || source.editorData.locations;\r\n\r\n for (const location of locations) {\r\n if (map[location.blockId]) {\r\n location.blockId = map[location.blockId].uniqueId;\r\n }\r\n }\r\n\r\n if (merge && this.editorData && this.editorData.locations) {\r\n locations.concat(this.editorData.locations);\r\n }\r\n\r\n if (source.locations) {\r\n this.editorData = {\r\n locations: locations,\r\n };\r\n } else {\r\n this.editorData = source.editorData;\r\n this.editorData.locations = locations;\r\n }\r\n\r\n const blockMap: { [key: number]: number } = {};\r\n\r\n for (const key in map) {\r\n blockMap[key] = map[key].uniqueId;\r\n }\r\n\r\n this.editorData.map = blockMap;\r\n }\r\n\r\n this.comment = source.comment;\r\n }\r\n\r\n private _restoreConnections(block: NodeRenderGraphBlock, source: any, map: { [key: number]: NodeRenderGraphBlock }) {\r\n for (const outputPoint of block.outputs) {\r\n for (const candidate of source.blocks) {\r\n const target = map[candidate.id];\r\n\r\n if (!target) {\r\n continue;\r\n }\r\n\r\n for (const input of candidate.inputs) {\r\n if (map[input.targetBlockId] === block && input.targetConnectionName === outputPoint.name) {\r\n const inputPoint = target.getInputByName(input.inputName);\r\n if (!inputPoint || inputPoint.isConnected) {\r\n continue;\r\n }\r\n\r\n outputPoint.connectTo(inputPoint, true);\r\n this._restoreConnections(target, source, map);\r\n continue;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Generate a string containing the code declaration required to create an equivalent of this node render graph\r\n * @returns a string\r\n */\r\n public generateCode() {\r\n let alreadyDumped: NodeRenderGraphBlock[] = [];\r\n const blocks: NodeRenderGraphBlock[] = [];\r\n const uniqueNames: string[] = [\"const\", \"var\", \"let\"];\r\n // Gets active blocks\r\n if (this.outputBlock) {\r\n this._gatherBlocks(this.outputBlock, blocks);\r\n }\r\n\r\n // Generate\r\n const options = JSON.stringify(this._options);\r\n let codeString = `let nodeRenderGraph = new BABYLON.NodeRenderGraph(\"${this.name || \"render graph\"}\", scene, ${options});\\n`;\r\n for (const node of blocks) {\r\n if (node.isInput && alreadyDumped.indexOf(node) === -1) {\r\n codeString += node._dumpCode(uniqueNames, alreadyDumped) + \"\\n\";\r\n }\r\n }\r\n\r\n if (this.outputBlock) {\r\n // Connections\r\n alreadyDumped = [];\r\n codeString += \"// Connections\\n\";\r\n codeString += this.outputBlock._dumpCodeForOutputConnections(alreadyDumped);\r\n\r\n // Output nodes\r\n codeString += \"// Output nodes\\n\";\r\n codeString += `nodeRenderGraph.outputBlock = ${this.outputBlock._codeVariableName};\\n`;\r\n codeString += `nodeRenderGraph.build();\\n`;\r\n }\r\n\r\n return codeString;\r\n }\r\n\r\n private _gatherBlocks(rootNode: NodeRenderGraphBlock, list: NodeRenderGraphBlock[]) {\r\n if (list.indexOf(rootNode) !== -1) {\r\n return;\r\n }\r\n list.push(rootNode);\r\n\r\n for (const input of rootNode.inputs) {\r\n const connectedPoint = input.connectedPoint;\r\n if (connectedPoint) {\r\n const block = connectedPoint.ownerBlock;\r\n if (block !== rootNode) {\r\n this._gatherBlocks(block, list);\r\n }\r\n }\r\n }\r\n\r\n // Teleportation\r\n if (rootNode.isTeleportOut) {\r\n const block = rootNode as NodeRenderGraphTeleportOutBlock;\r\n if (block.entryPoint) {\r\n this._gatherBlocks(block.entryPoint, list);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Clear the current graph and set it to a default state\r\n */\r\n public setToDefault() {\r\n this.clear();\r\n\r\n this.editorData = null;\r\n\r\n // Source textures\r\n const colorTexture = new NodeRenderGraphInputBlock(\"Color Texture\", this._frameGraph, this._scene, NodeRenderGraphBlockConnectionPointTypes.Texture);\r\n colorTexture.creationOptions.options.samples = 4;\r\n\r\n const depthTexture = new NodeRenderGraphInputBlock(\"Depth Texture\", this._frameGraph, this._scene, NodeRenderGraphBlockConnectionPointTypes.TextureDepthStencilAttachment);\r\n depthTexture.creationOptions.options.samples = 4;\r\n\r\n // Clear texture\r\n const clear = new NodeRenderGraphClearBlock(\"Clear\", this._frameGraph, this._scene);\r\n clear.clearDepth = true;\r\n clear.clearStencil = true;\r\n\r\n colorTexture.output.connectTo(clear.target);\r\n depthTexture.output.connectTo(clear.depth);\r\n\r\n // Object list and culling\r\n const camera = new NodeRenderGraphInputBlock(\"Camera\", this._frameGraph, this._scene, NodeRenderGraphBlockConnectionPointTypes.Camera);\r\n const objectList = new NodeRenderGraphInputBlock(\"Object List\", this._frameGraph, this._scene, NodeRenderGraphBlockConnectionPointTypes.ObjectList);\r\n const cull = new NodeRenderGraphCullObjectsBlock(\"Cull\", this._frameGraph, this._scene);\r\n\r\n camera.output.connectTo(cull.camera);\r\n objectList.output.connectTo(cull.objects);\r\n\r\n // Render objects\r\n const mainRendering = new NodeRenderGraphObjectRendererBlock(\"Main Rendering\", this._frameGraph, this._scene);\r\n\r\n camera.output.connectTo(mainRendering.camera);\r\n cull.output.connectTo(mainRendering.objects);\r\n clear.output.connectTo(mainRendering.target);\r\n clear.outputDepth.connectTo(mainRendering.depth);\r\n\r\n // Final output\r\n const output = new NodeRenderGraphOutputBlock(\"Output\", this._frameGraph, this._scene);\r\n mainRendering.output.connectTo(output.texture);\r\n\r\n this.outputBlock = output;\r\n }\r\n\r\n /**\r\n * Makes a duplicate of the current node render graph.\r\n * Note that you should call buildAsync() on the returned graph to make it usable.\r\n * @param name defines the name to use for the new node render graph\r\n * @returns the new node render graph\r\n */\r\n public clone(name: string): NodeRenderGraph {\r\n const serializationObject = this.serialize();\r\n\r\n const clone = SerializationHelper.Clone(() => new NodeRenderGraph(name, this._scene), this);\r\n clone.name = name;\r\n\r\n clone.parseSerializedObject(serializationObject);\r\n clone._buildId = this._buildId;\r\n\r\n return clone;\r\n }\r\n\r\n /**\r\n * Serializes this node render graph in a JSON representation\r\n * @param selectedBlocks defines the list of blocks to save (if null the whole node render graph will be saved)\r\n * @returns the serialized node render graph object\r\n */\r\n public serialize(selectedBlocks?: NodeRenderGraphBlock[]): any {\r\n const serializationObject = selectedBlocks ? {} : SerializationHelper.Serialize(this);\r\n serializationObject.editorData = JSON.parse(JSON.stringify(this.editorData)); // Copy\r\n\r\n let blocks: NodeRenderGraphBlock[] = [];\r\n\r\n if (selectedBlocks) {\r\n blocks = selectedBlocks;\r\n } else {\r\n serializationObject.customType = \"BABYLON.NodeRenderGraph\";\r\n if (this.outputBlock) {\r\n serializationObject.outputNodeId = this.outputBlock.uniqueId;\r\n }\r\n }\r\n\r\n // Blocks\r\n serializationObject.blocks = [];\r\n\r\n for (const block of blocks) {\r\n serializationObject.blocks.push(block.serialize());\r\n }\r\n\r\n if (!selectedBlocks) {\r\n for (const block of this.attachedBlocks) {\r\n if (blocks.indexOf(block) !== -1) {\r\n continue;\r\n }\r\n serializationObject.blocks.push(block.serialize());\r\n }\r\n }\r\n\r\n return serializationObject;\r\n }\r\n\r\n /**\r\n * Disposes the resources\r\n */\r\n public dispose(): void {\r\n for (const block of this.attachedBlocks) {\r\n block.dispose();\r\n }\r\n\r\n this._frameGraph.dispose();\r\n (this._frameGraph as WritableObject<FrameGraph>) = undefined as any;\r\n\r\n this._engine.onResizeObservable.remove(this._resizeObserver);\r\n (this._resizeObserver as WritableObject<Nullable<Observer<AbstractEngine>>>) = null;\r\n\r\n this.attachedBlocks.length = 0;\r\n this.onBuildErrorObservable.clear();\r\n }\r\n\r\n /**\r\n * Creates a new node render graph set to default basic configuration\r\n * @param name defines the name of the node render graph\r\n * @param scene defines the scene to use\r\n * @param nodeRenderGraphOptions defines options to use when creating the node render graph\r\n * @returns a new NodeRenderGraph\r\n */\r\n public static async CreateDefaultAsync(name: string, scene: Scene, nodeRenderGraphOptions?: INodeRenderGraphCreateOptions): Promise<NodeRenderGraph> {\r\n const renderGraph = new NodeRenderGraph(name, scene, nodeRenderGraphOptions);\r\n\r\n renderGraph.setToDefault();\r\n await renderGraph.buildAsync(false, true, false);\r\n\r\n return renderGraph;\r\n }\r\n\r\n /**\r\n * Creates a node render graph from parsed graph data\r\n * @param source defines the JSON representation of the node render graph\r\n * @param scene defines the scene to use\r\n * @param nodeRenderGraphOptions defines options to use when creating the node render\r\n * @param skipBuild defines whether to skip building the node render graph (default is true)\r\n * @returns a new node render graph\r\n */\r\n public static Parse(source: any, scene: Scene, nodeRenderGraphOptions?: INodeRenderGraphCreateOptions, skipBuild: boolean = true): NodeRenderGraph {\r\n const renderGraph = SerializationHelper.Parse(() => new NodeRenderGraph(source.name, scene, nodeRenderGraphOptions), source, null);\r\n\r\n renderGraph.parseSerializedObject(source);\r\n if (!skipBuild) {\r\n void renderGraph.buildAsync();\r\n }\r\n\r\n return renderGraph;\r\n }\r\n\r\n /**\r\n * Creates a node render graph from a snippet saved by the node render graph editor\r\n * @param snippetId defines the snippet to load\r\n * @param scene defines the scene to use\r\n * @param nodeRenderGraphOptions defines options to use when creating the node render graph\r\n * @param nodeRenderGraph defines a node render graph to update (instead of creating a new one)\r\n * @param skipBuild defines whether to skip building the node render graph (default is true)\r\n * @returns a promise that will resolve to the new node render graph\r\n */\r\n // eslint-disable-next-line @typescript-eslint/promise-function-async, no-restricted-syntax\r\n public static ParseFromSnippetAsync(\r\n snippetId: string,\r\n scene: Scene,\r\n nodeRenderGraphOptions?: INodeRenderGraphCreateOptions,\r\n nodeRenderGraph?: NodeRenderGraph,\r\n skipBuild: boolean = true\r\n ): Promise<NodeRenderGraph> {\r\n if (snippetId === \"_BLANK\") {\r\n return NodeRenderGraph.CreateDefaultAsync(\"blank\", scene, nodeRenderGraphOptions);\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n const request = new WebRequest();\r\n request.addEventListener(\"readystatechange\", async () => {\r\n if (request.readyState == 4) {\r\n if (request.status == 200) {\r\n const snippet = JSON.parse(JSON.parse(request.responseText).jsonPayload);\r\n const serializationObject = JSON.parse(snippet.nodeRenderGraph);\r\n\r\n if (!nodeRenderGraph) {\r\n nodeRenderGraph = SerializationHelper.Parse(() => new NodeRenderGraph(snippetId, scene, nodeRenderGraphOptions), serializationObject, null);\r\n }\r\n\r\n nodeRenderGraph.parseSerializedObject(serializationObject);\r\n nodeRenderGraph.snippetId = snippetId;\r\n\r\n try {\r\n if (!skipBuild) {\r\n await nodeRenderGraph.buildAsync();\r\n }\r\n resolve(nodeRenderGraph);\r\n } catch (err) {\r\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\r\n reject(err);\r\n }\r\n } else {\r\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\r\n reject(\"Unable to load the snippet \" + snippetId);\r\n }\r\n }\r\n });\r\n\r\n request.open(\"GET\", this.SnippetUrl + \"/\" + snippetId.replace(/#/g, \"/\"));\r\n request.send();\r\n });\r\n }\r\n}\r\n"]}
@@ -16,6 +16,7 @@ export class FrameGraphSelectionOutlineLayerTask extends FrameGraphBaseLayerTask
16
16
  this._objectRendererForLayerTask.objectList = {
17
17
  meshes: this.layer._selection || [],
18
18
  particleSystems: [],
19
+ spriteManagers: [],
19
20
  };
20
21
  }
21
22
  getClassName() {
@@ -1 +1 @@
1
- {"version":3,"file":"selectionOutlineTask.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Tasks/Layers/selectionOutlineTask.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,EAAE,uBAAuB,EAA+B,MAAM,iBAAiB,CAAC;AAEvF;;GAEG;AACH,MAAM,OAAO,mCAAoC,SAAQ,uBAAuB;IAc5E;;;;;;OAMG;IACH,YAAY,IAAY,EAAE,UAAsB,EAAE,KAAY,EAAE,OAA2C;QACvG,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,yBAAyB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,iDAAoC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAEpJ,IAAI,CAAC,2BAA2B,CAAC,UAAU,GAAG;YAC1C,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE;YACnC,eAAe,EAAE,EAAE;SACtB,CAAC;IACN,CAAC;IAEe,YAAY;QACxB,OAAO,qCAAqC,CAAC;IACjD,CAAC;IAEe,MAAM;QAClB,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAE3F,IAAI,iBAAiB,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,wCAAwC,IAAI,CAAC,IAAI,6BAA6B,CAAC,CAAC;QACpG,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,OAAgC,EAAE,MAAc,EAAE,EAAE;YACrE,OAAO,CAAC,iBAAiB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,2BAA2B,CAAC,aAAa,CAAC,CAAC;YACjG,IAAI,iBAAiB,EAAE,CAAC;gBACpB,OAAO,CAAC,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,YAAa,CAAC,CAAC;YAC1E,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;QAC7D,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC;IACnE,CAAC;CACJ","sourcesContent":["import { type FrameGraph, type Scene, type IThinSelectionOutlineLayerOptions, type FrameGraphTextureHandle, type Effect, type FrameGraphRenderContext } from \"core/index\";\r\nimport { ThinSelectionOutlineLayer } from \"core/Layers/thinSelectionOutlineLayer\";\r\nimport { FrameGraphBaseLayerTask, FrameGraphBaseLayerBlurType } from \"./baseLayerTask\";\r\n\r\n/**\r\n * Task which applies a selection outline effect to a texture.\r\n */\r\nexport class FrameGraphSelectionOutlineLayerTask extends FrameGraphBaseLayerTask {\r\n /**\r\n * The selection outline layer object. Use this object to update the selection outline layer properties (e.g. intensity, blur kernel size).\r\n */\r\n public override readonly layer: ThinSelectionOutlineLayer;\r\n\r\n /**\r\n * The depth texture to use when rendering the selection outline layer.\r\n * It must store the scene depth in camera view space Z, normalized or not.\r\n * If not normalized, the storeCameraSpaceZ option must be passed to the constructor.\r\n * Required only when layer.useDepthOcclusion is true and layer.occlusionStrength is greater than zero.\r\n */\r\n public depthTexture: FrameGraphTextureHandle | undefined;\r\n\r\n /**\r\n * Constructs a new selection outline layer task.\r\n * @param name Name of the task.\r\n * @param frameGraph The frame graph this task is associated with.\r\n * @param scene The scene to render the selection outline layer in.\r\n * @param options Options for the selection outline layer.\r\n */\r\n constructor(name: string, frameGraph: FrameGraph, scene: Scene, options?: IThinSelectionOutlineLayerOptions) {\r\n super(name, frameGraph, scene, new ThinSelectionOutlineLayer(name, scene, options, true), 0, FrameGraphBaseLayerBlurType.None, false, false, false);\r\n\r\n this._objectRendererForLayerTask.objectList = {\r\n meshes: this.layer._selection || [],\r\n particleSystems: [],\r\n };\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"FrameGraphSelectionOutlineLayerTask\";\r\n }\r\n\r\n public override record() {\r\n const useDepthOcclusion = this.layer.useDepthOcclusion && this.layer.occlusionStrength > 0;\r\n\r\n if (useDepthOcclusion && this.depthTexture === undefined) {\r\n throw new Error(`FrameGraphSelectionOutlineLayerTask \"${this.name}\": depthTexture is required`);\r\n }\r\n\r\n super.record(false, (context: FrameGraphRenderContext, effect: Effect) => {\r\n context.bindTextureHandle(effect, \"maskSampler\", this._objectRendererForLayerTask.outputTexture);\r\n if (useDepthOcclusion) {\r\n context.bindTextureHandle(effect, \"depthSampler\", this.depthTexture!);\r\n }\r\n });\r\n\r\n this.layer.textureWidth = this._layerTextureDimensions.width;\r\n this.layer.textureHeight = this._layerTextureDimensions.height;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"selectionOutlineTask.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Tasks/Layers/selectionOutlineTask.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,EAAE,uBAAuB,EAA+B,MAAM,iBAAiB,CAAC;AAEvF;;GAEG;AACH,MAAM,OAAO,mCAAoC,SAAQ,uBAAuB;IAc5E;;;;;;OAMG;IACH,YAAY,IAAY,EAAE,UAAsB,EAAE,KAAY,EAAE,OAA2C;QACvG,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,yBAAyB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,iDAAoC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAEpJ,IAAI,CAAC,2BAA2B,CAAC,UAAU,GAAG;YAC1C,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE;YACnC,eAAe,EAAE,EAAE;YACnB,cAAc,EAAE,EAAE;SACrB,CAAC;IACN,CAAC;IAEe,YAAY;QACxB,OAAO,qCAAqC,CAAC;IACjD,CAAC;IAEe,MAAM;QAClB,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAE3F,IAAI,iBAAiB,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,wCAAwC,IAAI,CAAC,IAAI,6BAA6B,CAAC,CAAC;QACpG,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,OAAgC,EAAE,MAAc,EAAE,EAAE;YACrE,OAAO,CAAC,iBAAiB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,2BAA2B,CAAC,aAAa,CAAC,CAAC;YACjG,IAAI,iBAAiB,EAAE,CAAC;gBACpB,OAAO,CAAC,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,YAAa,CAAC,CAAC;YAC1E,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;QAC7D,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC;IACnE,CAAC;CACJ","sourcesContent":["import { type FrameGraph, type Scene, type IThinSelectionOutlineLayerOptions, type FrameGraphTextureHandle, type Effect, type FrameGraphRenderContext } from \"core/index\";\r\nimport { ThinSelectionOutlineLayer } from \"core/Layers/thinSelectionOutlineLayer\";\r\nimport { FrameGraphBaseLayerTask, FrameGraphBaseLayerBlurType } from \"./baseLayerTask\";\r\n\r\n/**\r\n * Task which applies a selection outline effect to a texture.\r\n */\r\nexport class FrameGraphSelectionOutlineLayerTask extends FrameGraphBaseLayerTask {\r\n /**\r\n * The selection outline layer object. Use this object to update the selection outline layer properties (e.g. intensity, blur kernel size).\r\n */\r\n public override readonly layer: ThinSelectionOutlineLayer;\r\n\r\n /**\r\n * The depth texture to use when rendering the selection outline layer.\r\n * It must store the scene depth in camera view space Z, normalized or not.\r\n * If not normalized, the storeCameraSpaceZ option must be passed to the constructor.\r\n * Required only when layer.useDepthOcclusion is true and layer.occlusionStrength is greater than zero.\r\n */\r\n public depthTexture: FrameGraphTextureHandle | undefined;\r\n\r\n /**\r\n * Constructs a new selection outline layer task.\r\n * @param name Name of the task.\r\n * @param frameGraph The frame graph this task is associated with.\r\n * @param scene The scene to render the selection outline layer in.\r\n * @param options Options for the selection outline layer.\r\n */\r\n constructor(name: string, frameGraph: FrameGraph, scene: Scene, options?: IThinSelectionOutlineLayerOptions) {\r\n super(name, frameGraph, scene, new ThinSelectionOutlineLayer(name, scene, options, true), 0, FrameGraphBaseLayerBlurType.None, false, false, false);\r\n\r\n this._objectRendererForLayerTask.objectList = {\r\n meshes: this.layer._selection || [],\r\n particleSystems: [],\r\n spriteManagers: [],\r\n };\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"FrameGraphSelectionOutlineLayerTask\";\r\n }\r\n\r\n public override record() {\r\n const useDepthOcclusion = this.layer.useDepthOcclusion && this.layer.occlusionStrength > 0;\r\n\r\n if (useDepthOcclusion && this.depthTexture === undefined) {\r\n throw new Error(`FrameGraphSelectionOutlineLayerTask \"${this.name}\": depthTexture is required`);\r\n }\r\n\r\n super.record(false, (context: FrameGraphRenderContext, effect: Effect) => {\r\n context.bindTextureHandle(effect, \"maskSampler\", this._objectRendererForLayerTask.outputTexture);\r\n if (useDepthOcclusion) {\r\n context.bindTextureHandle(effect, \"depthSampler\", this.depthTexture!);\r\n }\r\n });\r\n\r\n this.layer.textureWidth = this._layerTextureDimensions.width;\r\n this.layer.textureHeight = this._layerTextureDimensions.height;\r\n }\r\n}\r\n"]}
@@ -15,6 +15,7 @@ export class FrameGraphCullObjectsTask extends FrameGraphTask {
15
15
  this.outputObjectList = {
16
16
  meshes: null,
17
17
  particleSystems: null,
18
+ spriteManagers: null,
18
19
  };
19
20
  }
20
21
  getClassName() {
@@ -27,11 +28,13 @@ export class FrameGraphCullObjectsTask extends FrameGraphTask {
27
28
  // Initial output values
28
29
  this.outputObjectList.meshes = this.objectList.meshes;
29
30
  this.outputObjectList.particleSystems = this.objectList.particleSystems;
31
+ this.outputObjectList.spriteManagers = this.objectList.spriteManagers;
30
32
  const pass = this._frameGraph.addObjectListPass(this.name);
31
33
  pass.setObjectList(this.outputObjectList);
32
34
  pass.setExecuteFunc((_context) => {
33
- // No culling on particle systems
35
+ // No culling on particle systems or sprite managers
34
36
  this.outputObjectList.particleSystems = this.objectList.particleSystems;
37
+ this.outputObjectList.spriteManagers = this.objectList.spriteManagers;
35
38
  if (this._scene._activeMeshesFrozen) {
36
39
  // If active meshes are frozen, we don't need culling: we keep the last list created before freezing
37
40
  return;
@@ -58,6 +61,7 @@ export class FrameGraphCullObjectsTask extends FrameGraphTask {
58
61
  passDisabled.setExecuteFunc((_context) => {
59
62
  this.outputObjectList.meshes = this.objectList.meshes;
60
63
  this.outputObjectList.particleSystems = this.objectList.particleSystems;
64
+ this.outputObjectList.spriteManagers = this.objectList.spriteManagers;
61
65
  });
62
66
  }
63
67
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cullObjectsTask.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Tasks/Misc/cullObjectsTask.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;GAEG;AACH,MAAM,OAAO,yBAA0B,SAAQ,cAAc;IAkBzD;;;;;OAKG;IACH,YAAY,IAAY,EAAE,UAAsB,EAAE,KAAY;QAC1D,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,gBAAgB,GAAG;YACpB,MAAM,EAAE,IAAI;YACZ,eAAe,EAAE,IAAI;SACxB,CAAC;IACN,CAAC;IAEe,YAAY;QACxB,OAAO,2BAA2B,CAAC;IACvC,CAAC;IAEM,MAAM;QACT,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC7D,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,CAAC,IAAI,sCAAsC,CAAC,CAAC;QAClG,CAAC;QAED,wBAAwB;QACxB,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QACtD,IAAI,CAAC,gBAAgB,CAAC,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;QAExE,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE3D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC1C,IAAI,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC7B,iCAAiC;YACjC,IAAI,CAAC,gBAAgB,CAAC,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;YAExE,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;gBAClC,oGAAoG;gBACpG,OAAO;YACX,CAAC;YAED,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,EAAE,CAAC;YAElC,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC;YAEnC,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;YAEjD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACvB,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;oBAC3F,SAAS;gBACb,CAAC;gBAED,IACI,IAAI,CAAC,SAAS;oBACd,IAAI,CAAC,UAAU,GAAG,CAAC;oBACnB,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;oBAC9C,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,IAAI,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,EACvG,CAAC;oBACC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC5C,CAAC;YACL,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,GAAG,WAAW,EAAE,IAAI,CAAC,CAAC;QAEvF,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAClD,YAAY,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,EAAE;YACrC,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YACtD,IAAI,CAAC,gBAAgB,CAAC,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;QAC5E,CAAC,CAAC,CAAC;IACP,CAAC;CACJ","sourcesContent":["import { type Scene, type Camera, type FrameGraph, type FrameGraphObjectList } from \"core/index\";\r\nimport { FrameGraphTask } from \"../../frameGraphTask\";\r\n\r\n/**\r\n * Task used to cull objects that are not visible.\r\n */\r\nexport class FrameGraphCullObjectsTask extends FrameGraphTask {\r\n /**\r\n * The object list to cull.\r\n */\r\n public objectList: FrameGraphObjectList;\r\n\r\n /**\r\n * The camera to use for culling.\r\n */\r\n public camera: Camera;\r\n\r\n /**\r\n * The output object list containing the culled objects.\r\n */\r\n public readonly outputObjectList: FrameGraphObjectList;\r\n\r\n private readonly _scene: Scene;\r\n\r\n /**\r\n * Creates a new cull objects task.\r\n * @param name The name of the task.\r\n * @param frameGraph The frame graph the task belongs to.\r\n * @param scene The scene to cull objects from.\r\n */\r\n constructor(name: string, frameGraph: FrameGraph, scene: Scene) {\r\n super(name, frameGraph);\r\n this._scene = scene;\r\n this.outputObjectList = {\r\n meshes: null,\r\n particleSystems: null,\r\n };\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"FrameGraphCullObjectsTask\";\r\n }\r\n\r\n public record() {\r\n if (this.objectList === undefined || this.camera === undefined) {\r\n throw new Error(`FrameGraphCullObjectsTask ${this.name}: objectList and camera are required`);\r\n }\r\n\r\n // Initial output values\r\n this.outputObjectList.meshes = this.objectList.meshes;\r\n this.outputObjectList.particleSystems = this.objectList.particleSystems;\r\n\r\n const pass = this._frameGraph.addObjectListPass(this.name);\r\n\r\n pass.setObjectList(this.outputObjectList);\r\n pass.setExecuteFunc((_context) => {\r\n // No culling on particle systems\r\n this.outputObjectList.particleSystems = this.objectList.particleSystems;\r\n\r\n if (this._scene._activeMeshesFrozen) {\r\n // If active meshes are frozen, we don't need culling: we keep the last list created before freezing\r\n return;\r\n }\r\n\r\n this.outputObjectList.meshes = [];\r\n\r\n this.camera._updateFrustumPlanes();\r\n\r\n const frustumPlanes = this.camera._frustumPlanes;\r\n\r\n const meshes = this.objectList.meshes || this._scene.meshes;\r\n for (let i = 0; i < meshes.length; i++) {\r\n const mesh = meshes[i];\r\n if (mesh.isBlocked || !mesh.isReady() || !mesh.isEnabled() || mesh.scaling.hasAZeroComponent) {\r\n continue;\r\n }\r\n\r\n if (\r\n mesh.isVisible &&\r\n mesh.visibility > 0 &&\r\n (mesh.layerMask & this.camera.layerMask) !== 0 &&\r\n (this._scene.skipFrustumClipping || mesh.alwaysSelectAsActiveMesh || mesh.isInFrustum(frustumPlanes))\r\n ) {\r\n this.outputObjectList.meshes.push(mesh);\r\n }\r\n }\r\n });\r\n\r\n const passDisabled = this._frameGraph.addObjectListPass(this.name + \"_disabled\", true);\r\n\r\n passDisabled.setObjectList(this.outputObjectList);\r\n passDisabled.setExecuteFunc((_context) => {\r\n this.outputObjectList.meshes = this.objectList.meshes;\r\n this.outputObjectList.particleSystems = this.objectList.particleSystems;\r\n });\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"cullObjectsTask.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Tasks/Misc/cullObjectsTask.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Scene, type Camera, type FrameGraph, type FrameGraphObjectList } from \"core/index\";\r\nimport { FrameGraphTask } from \"../../frameGraphTask\";\r\n\r\n/**\r\n * Task used to cull objects that are not visible.\r\n */\r\nexport class FrameGraphCullObjectsTask extends FrameGraphTask {\r\n /**\r\n * The object list to cull.\r\n */\r\n public objectList: FrameGraphObjectList;\r\n\r\n /**\r\n * The camera to use for culling.\r\n */\r\n public camera: Camera;\r\n\r\n /**\r\n * The output object list containing the culled objects.\r\n */\r\n public readonly outputObjectList: FrameGraphObjectList;\r\n\r\n private readonly _scene: Scene;\r\n\r\n /**\r\n * Creates a new cull objects task.\r\n * @param name The name of the task.\r\n * @param frameGraph The frame graph the task belongs to.\r\n * @param scene The scene to cull objects from.\r\n */\r\n constructor(name: string, frameGraph: FrameGraph, scene: Scene) {\r\n super(name, frameGraph);\r\n this._scene = scene;\r\n this.outputObjectList = {\r\n meshes: null,\r\n particleSystems: null,\r\n spriteManagers: null,\r\n };\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"FrameGraphCullObjectsTask\";\r\n }\r\n\r\n public record() {\r\n if (this.objectList === undefined || this.camera === undefined) {\r\n throw new Error(`FrameGraphCullObjectsTask ${this.name}: objectList and camera are required`);\r\n }\r\n\r\n // Initial output values\r\n this.outputObjectList.meshes = this.objectList.meshes;\r\n this.outputObjectList.particleSystems = this.objectList.particleSystems;\r\n this.outputObjectList.spriteManagers = this.objectList.spriteManagers;\r\n\r\n const pass = this._frameGraph.addObjectListPass(this.name);\r\n\r\n pass.setObjectList(this.outputObjectList);\r\n pass.setExecuteFunc((_context) => {\r\n // No culling on particle systems or sprite managers\r\n this.outputObjectList.particleSystems = this.objectList.particleSystems;\r\n this.outputObjectList.spriteManagers = this.objectList.spriteManagers;\r\n\r\n if (this._scene._activeMeshesFrozen) {\r\n // If active meshes are frozen, we don't need culling: we keep the last list created before freezing\r\n return;\r\n }\r\n\r\n this.outputObjectList.meshes = [];\r\n\r\n this.camera._updateFrustumPlanes();\r\n\r\n const frustumPlanes = this.camera._frustumPlanes;\r\n\r\n const meshes = this.objectList.meshes || this._scene.meshes;\r\n for (let i = 0; i < meshes.length; i++) {\r\n const mesh = meshes[i];\r\n if (mesh.isBlocked || !mesh.isReady() || !mesh.isEnabled() || mesh.scaling.hasAZeroComponent) {\r\n continue;\r\n }\r\n\r\n if (\r\n mesh.isVisible &&\r\n mesh.visibility > 0 &&\r\n (mesh.layerMask & this.camera.layerMask) !== 0 &&\r\n (this._scene.skipFrustumClipping || mesh.alwaysSelectAsActiveMesh || mesh.isInFrustum(frustumPlanes))\r\n ) {\r\n this.outputObjectList.meshes.push(mesh);\r\n }\r\n }\r\n });\r\n\r\n const passDisabled = this._frameGraph.addObjectListPass(this.name + \"_disabled\", true);\r\n\r\n passDisabled.setObjectList(this.outputObjectList);\r\n passDisabled.setExecuteFunc((_context) => {\r\n this.outputObjectList.meshes = this.objectList.meshes;\r\n this.outputObjectList.particleSystems = this.objectList.particleSystems;\r\n this.outputObjectList.spriteManagers = this.objectList.spriteManagers;\r\n });\r\n }\r\n}\r\n"]}
@@ -25,6 +25,7 @@ export class FrameGraphLightingVolumeTask extends FrameGraphTask {
25
25
  this.outputMeshLightingVolume = {
26
26
  meshes: [this.lightingVolume.mesh],
27
27
  particleSystems: [],
28
+ spriteManagers: [],
28
29
  };
29
30
  }
30
31
  isReady() {
@@ -1 +1 @@
1
- {"version":3,"file":"lightingVolumeTask.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Tasks/Misc/lightingVolumeTask.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;GAEG;AACH,MAAM,OAAO,4BAA6B,SAAQ,cAAc;IAiB5D,IAAoB,IAAI;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,IAAoB,IAAI,CAAC,IAAY;QACjC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC;QACpC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,YAAY,IAAY,EAAE,UAAsB;QAC5C,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAExB,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QAEjE,IAAI,CAAC,wBAAwB,GAAG;YAC5B,MAAM,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YAClC,eAAe,EAAE,EAAE;SACtB,CAAC;IACN,CAAC;IAEe,OAAO;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;QAC9C,IAAI,OAAO,EAAE,CAAC;YACV,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAEe,YAAY;QACxB,OAAO,8BAA8B,CAAC;IAC1C,CAAC;IAEM,MAAM;QACT,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAC,IAAI,+BAA+B,CAAC,CAAC;QAC9F,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;QAEzC,IAAI,CAAC,CAAC,KAAK,YAAY,gBAAgB,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAC,IAAI,qCAAqC,CAAC,CAAC;QACpG,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC;QAE3E,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE3D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAClD,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE;YACrB,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,GAAG,WAAW,EAAE,IAAI,CAAC,CAAC;QAEvF,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC1D,YAAY,CAAC,cAAc,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC1C,CAAC;IAEe,OAAO;QACnB,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;IAClC,CAAC;CACJ","sourcesContent":["import { type FrameGraph, type FrameGraphObjectList, type FrameGraphShadowGeneratorTask } from \"core/index\";\r\nimport { LightingVolume } from \"core/Lights/lightingVolume.pure\";\r\nimport { DirectionalLight } from \"core/Lights/directionalLight.pure\";\r\nimport { FrameGraphTask } from \"../../frameGraphTask\";\r\n\r\n/**\r\n * Task used to create a lighting volume from a directional light's shadow generator.\r\n */\r\nexport class FrameGraphLightingVolumeTask extends FrameGraphTask {\r\n /**\r\n * The shadow generator used to create the lighting volume.\r\n */\r\n public shadowGenerator: FrameGraphShadowGeneratorTask;\r\n\r\n /**\r\n * The output object list containing the lighting volume mesh.\r\n * You can get the mesh by doing outputMeshLightingVolume.meshes[0]\r\n */\r\n public readonly outputMeshLightingVolume: FrameGraphObjectList;\r\n\r\n /**\r\n * The lighting volume created by this task.\r\n */\r\n public readonly lightingVolume: LightingVolume;\r\n\r\n public override get name() {\r\n return this._name;\r\n }\r\n\r\n public override set name(name: string) {\r\n this._name = name;\r\n if (this.lightingVolume) {\r\n this.lightingVolume.name = name;\r\n }\r\n }\r\n\r\n /**\r\n * Creates a new FrameGraphLightingVolumeTask.\r\n * @param name Name of the task.\r\n * @param frameGraph The frame graph instance.\r\n */\r\n constructor(name: string, frameGraph: FrameGraph) {\r\n super(name, frameGraph);\r\n\r\n this.lightingVolume = new LightingVolume(name, frameGraph.scene);\r\n\r\n this.outputMeshLightingVolume = {\r\n meshes: [this.lightingVolume.mesh],\r\n particleSystems: [],\r\n };\r\n }\r\n\r\n public override isReady() {\r\n const isReady = this.lightingVolume.isReady();\r\n if (isReady) {\r\n this.lightingVolume._setComputeShaderFastMode(true);\r\n }\r\n return isReady;\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"FrameGraphLightingVolumeTask\";\r\n }\r\n\r\n public record() {\r\n if (this.shadowGenerator === undefined) {\r\n throw new Error(`FrameGraphLightingVolumeTask ${this.name}: shadowGenerator is required`);\r\n }\r\n\r\n const light = this.shadowGenerator.light;\r\n\r\n if (!(light instanceof DirectionalLight)) {\r\n throw new Error(`FrameGraphLightingVolumeTask ${this.name}: light must be a directional light`);\r\n }\r\n\r\n this.lightingVolume.shadowGenerator = this.shadowGenerator.shadowGenerator;\r\n\r\n const pass = this._frameGraph.addObjectListPass(this.name);\r\n\r\n pass.setObjectList(this.outputMeshLightingVolume);\r\n pass.setExecuteFunc(() => {\r\n this.lightingVolume.update();\r\n });\r\n\r\n const passDisabled = this._frameGraph.addObjectListPass(this.name + \"_disabled\", true);\r\n\r\n passDisabled.setObjectList(this.outputMeshLightingVolume);\r\n passDisabled.setExecuteFunc(() => {});\r\n }\r\n\r\n public override dispose() {\r\n super.dispose();\r\n this.lightingVolume.dispose();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"lightingVolumeTask.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Tasks/Misc/lightingVolumeTask.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;GAEG;AACH,MAAM,OAAO,4BAA6B,SAAQ,cAAc;IAiB5D,IAAoB,IAAI;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,IAAoB,IAAI,CAAC,IAAY;QACjC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC;QACpC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,YAAY,IAAY,EAAE,UAAsB;QAC5C,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAExB,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QAEjE,IAAI,CAAC,wBAAwB,GAAG;YAC5B,MAAM,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YAClC,eAAe,EAAE,EAAE;YACnB,cAAc,EAAE,EAAE;SACrB,CAAC;IACN,CAAC;IAEe,OAAO;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;QAC9C,IAAI,OAAO,EAAE,CAAC;YACV,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAEe,YAAY;QACxB,OAAO,8BAA8B,CAAC;IAC1C,CAAC;IAEM,MAAM;QACT,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAC,IAAI,+BAA+B,CAAC,CAAC;QAC9F,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;QAEzC,IAAI,CAAC,CAAC,KAAK,YAAY,gBAAgB,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAC,IAAI,qCAAqC,CAAC,CAAC;QACpG,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC;QAE3E,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE3D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAClD,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE;YACrB,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,GAAG,WAAW,EAAE,IAAI,CAAC,CAAC;QAEvF,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC1D,YAAY,CAAC,cAAc,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC1C,CAAC;IAEe,OAAO;QACnB,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;IAClC,CAAC;CACJ","sourcesContent":["import { type FrameGraph, type FrameGraphObjectList, type FrameGraphShadowGeneratorTask } from \"core/index\";\r\nimport { LightingVolume } from \"core/Lights/lightingVolume.pure\";\r\nimport { DirectionalLight } from \"core/Lights/directionalLight.pure\";\r\nimport { FrameGraphTask } from \"../../frameGraphTask\";\r\n\r\n/**\r\n * Task used to create a lighting volume from a directional light's shadow generator.\r\n */\r\nexport class FrameGraphLightingVolumeTask extends FrameGraphTask {\r\n /**\r\n * The shadow generator used to create the lighting volume.\r\n */\r\n public shadowGenerator: FrameGraphShadowGeneratorTask;\r\n\r\n /**\r\n * The output object list containing the lighting volume mesh.\r\n * You can get the mesh by doing outputMeshLightingVolume.meshes[0]\r\n */\r\n public readonly outputMeshLightingVolume: FrameGraphObjectList;\r\n\r\n /**\r\n * The lighting volume created by this task.\r\n */\r\n public readonly lightingVolume: LightingVolume;\r\n\r\n public override get name() {\r\n return this._name;\r\n }\r\n\r\n public override set name(name: string) {\r\n this._name = name;\r\n if (this.lightingVolume) {\r\n this.lightingVolume.name = name;\r\n }\r\n }\r\n\r\n /**\r\n * Creates a new FrameGraphLightingVolumeTask.\r\n * @param name Name of the task.\r\n * @param frameGraph The frame graph instance.\r\n */\r\n constructor(name: string, frameGraph: FrameGraph) {\r\n super(name, frameGraph);\r\n\r\n this.lightingVolume = new LightingVolume(name, frameGraph.scene);\r\n\r\n this.outputMeshLightingVolume = {\r\n meshes: [this.lightingVolume.mesh],\r\n particleSystems: [],\r\n spriteManagers: [],\r\n };\r\n }\r\n\r\n public override isReady() {\r\n const isReady = this.lightingVolume.isReady();\r\n if (isReady) {\r\n this.lightingVolume._setComputeShaderFastMode(true);\r\n }\r\n return isReady;\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"FrameGraphLightingVolumeTask\";\r\n }\r\n\r\n public record() {\r\n if (this.shadowGenerator === undefined) {\r\n throw new Error(`FrameGraphLightingVolumeTask ${this.name}: shadowGenerator is required`);\r\n }\r\n\r\n const light = this.shadowGenerator.light;\r\n\r\n if (!(light instanceof DirectionalLight)) {\r\n throw new Error(`FrameGraphLightingVolumeTask ${this.name}: light must be a directional light`);\r\n }\r\n\r\n this.lightingVolume.shadowGenerator = this.shadowGenerator.shadowGenerator;\r\n\r\n const pass = this._frameGraph.addObjectListPass(this.name);\r\n\r\n pass.setObjectList(this.outputMeshLightingVolume);\r\n pass.setExecuteFunc(() => {\r\n this.lightingVolume.update();\r\n });\r\n\r\n const passDisabled = this._frameGraph.addObjectListPass(this.name + \"_disabled\", true);\r\n\r\n passDisabled.setObjectList(this.outputMeshLightingVolume);\r\n passDisabled.setExecuteFunc(() => {});\r\n }\r\n\r\n public override dispose() {\r\n super.dispose();\r\n this.lightingVolume.dispose();\r\n }\r\n}\r\n"]}