@onerjs/core 9.0.0 → 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 (352) hide show
  1. package/Animations/animationGroup.pure.js.map +1 -1
  2. package/Cameras/targetCamera.pure.js +6 -1
  3. package/Cameras/targetCamera.pure.js.map +1 -1
  4. package/Engines/Native/nativeHardwareTexture.d.ts +8 -1
  5. package/Engines/Native/nativeHardwareTexture.js +7 -0
  6. package/Engines/Native/nativeHardwareTexture.js.map +1 -1
  7. package/Engines/Native/nativeHelpers.js +56 -1
  8. package/Engines/Native/nativeHelpers.js.map +1 -1
  9. package/Engines/Native/nativeInterfaces.d.ts +37 -8
  10. package/Engines/Native/nativeInterfaces.js.map +1 -1
  11. package/Engines/Native/nativeRenderTargetWrapper.d.ts +40 -0
  12. package/Engines/Native/nativeRenderTargetWrapper.js +265 -5
  13. package/Engines/Native/nativeRenderTargetWrapper.js.map +1 -1
  14. package/Engines/Processors/shaderCodeCursor.d.ts +1 -0
  15. package/Engines/Processors/shaderCodeCursor.js +40 -3
  16. package/Engines/Processors/shaderCodeCursor.js.map +1 -1
  17. package/Engines/WebGPU/Extensions/engine.renderTarget.pure.js +1 -0
  18. package/Engines/WebGPU/Extensions/engine.renderTarget.pure.js.map +1 -1
  19. package/Engines/abstractEngine.pure.d.ts +15 -1
  20. package/Engines/abstractEngine.pure.js +12 -4
  21. package/Engines/abstractEngine.pure.js.map +1 -1
  22. package/Engines/engine.pure.d.ts +0 -1
  23. package/Engines/engine.pure.js +0 -7
  24. package/Engines/engine.pure.js.map +1 -1
  25. package/Engines/nativeEngine.pure.js +1 -1
  26. package/Engines/nativeEngine.pure.js.map +1 -1
  27. package/Engines/thinEngine.pure.d.ts +1 -0
  28. package/Engines/thinEngine.pure.js +13 -2
  29. package/Engines/thinEngine.pure.js.map +1 -1
  30. package/Engines/thinNativeEngine.pure.d.ts +217 -17
  31. package/Engines/thinNativeEngine.pure.js +1431 -164
  32. package/Engines/thinNativeEngine.pure.js.map +1 -1
  33. package/Engines/thinWebGPUEngine.js +6 -1
  34. package/Engines/thinWebGPUEngine.js.map +1 -1
  35. package/Engines/webgpuEngine.pure.d.ts +12 -1
  36. package/Engines/webgpuEngine.pure.js +8 -0
  37. package/Engines/webgpuEngine.pure.js.map +1 -1
  38. package/FlowGraph/Blocks/Data/Transformers/flowGraphJsonPointerParserBlock.pure.d.ts +10 -0
  39. package/FlowGraph/Blocks/Data/Transformers/flowGraphJsonPointerParserBlock.pure.js +24 -12
  40. package/FlowGraph/Blocks/Data/Transformers/flowGraphJsonPointerParserBlock.pure.js.map +1 -1
  41. package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.pure.d.ts +7 -0
  42. package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.pure.js +43 -0
  43. package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.pure.js.map +1 -1
  44. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.d.ts +16 -4
  45. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.js +20 -6
  46. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.js.map +1 -1
  47. package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.pure.js +3 -3
  48. package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.pure.js.map +1 -1
  49. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.d.ts +7 -7
  50. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.js +52 -35
  51. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.js.map +1 -1
  52. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCancelDelayBlock.pure.d.ts +12 -1
  53. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCancelDelayBlock.pure.js +8 -0
  54. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCancelDelayBlock.pure.js.map +1 -1
  55. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.pure.js +4 -1
  56. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.pure.js.map +1 -1
  57. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.pure.d.ts +12 -1
  58. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.pure.js +5 -1
  59. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.pure.js.map +1 -1
  60. package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.pure.d.ts +2 -0
  61. package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.pure.js +14 -2
  62. package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.pure.js.map +1 -1
  63. package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.pure.d.ts +5 -1
  64. package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.pure.js +23 -8
  65. package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.pure.js.map +1 -1
  66. package/FlowGraph/CustomTypes/flowGraphInteger.pure.d.ts +5 -0
  67. package/FlowGraph/CustomTypes/flowGraphInteger.pure.js +7 -0
  68. package/FlowGraph/CustomTypes/flowGraphInteger.pure.js.map +1 -1
  69. package/FlowGraph/CustomTypes/flowGraphMatrix.d.ts +10 -0
  70. package/FlowGraph/CustomTypes/flowGraphMatrix.js +14 -0
  71. package/FlowGraph/CustomTypes/flowGraphMatrix.js.map +1 -1
  72. package/FlowGraph/flowGraph.d.ts +2 -1
  73. package/FlowGraph/flowGraph.js +3 -2
  74. package/FlowGraph/flowGraph.js.map +1 -1
  75. package/FlowGraph/flowGraphAnimationHelpers.d.ts +24 -0
  76. package/FlowGraph/flowGraphAnimationHelpers.js +21 -0
  77. package/FlowGraph/flowGraphAnimationHelpers.js.map +1 -0
  78. package/FlowGraph/flowGraphContext.js +1 -0
  79. package/FlowGraph/flowGraphContext.js.map +1 -1
  80. package/FlowGraph/flowGraphValidator.js +0 -4
  81. package/FlowGraph/flowGraphValidator.js.map +1 -1
  82. package/FlowGraph/index.d.ts +2 -0
  83. package/FlowGraph/index.js +2 -0
  84. package/FlowGraph/index.js.map +1 -1
  85. package/FlowGraph/pure.d.ts +2 -0
  86. package/FlowGraph/pure.js +2 -0
  87. package/FlowGraph/pure.js.map +1 -1
  88. package/FlowGraph/serialization.d.ts +2 -2
  89. package/FlowGraph/serialization.js +2 -2
  90. package/FlowGraph/serialization.js.map +1 -1
  91. package/FlowGraph/typeDefinitions.d.ts +1 -1
  92. package/FlowGraph/typeDefinitions.js.map +1 -1
  93. package/FrameGraph/Node/Blocks/Textures/minMaxReducerBlock.d.ts +1 -0
  94. package/FrameGraph/Node/Blocks/Textures/minMaxReducerBlock.js +4 -0
  95. package/FrameGraph/Node/Blocks/Textures/minMaxReducerBlock.js.map +1 -0
  96. package/FrameGraph/Node/Blocks/Textures/minMaxReducerBlock.pure.d.ts +54 -0
  97. package/FrameGraph/Node/Blocks/Textures/minMaxReducerBlock.pure.js +155 -0
  98. package/FrameGraph/Node/Blocks/Textures/minMaxReducerBlock.pure.js.map +1 -0
  99. package/FrameGraph/Node/Blocks/Textures/pure.d.ts +1 -0
  100. package/FrameGraph/Node/Blocks/Textures/pure.js +1 -0
  101. package/FrameGraph/Node/Blocks/Textures/pure.js.map +1 -1
  102. package/FrameGraph/Node/Blocks/allBlocks.pure.js +2 -0
  103. package/FrameGraph/Node/Blocks/allBlocks.pure.js.map +1 -1
  104. package/FrameGraph/Node/Blocks/index.d.ts +1 -0
  105. package/FrameGraph/Node/Blocks/index.js +1 -0
  106. package/FrameGraph/Node/Blocks/index.js.map +1 -1
  107. package/FrameGraph/Node/Blocks/pure.d.ts +1 -0
  108. package/FrameGraph/Node/Blocks/pure.js +1 -0
  109. package/FrameGraph/Node/Blocks/pure.js.map +1 -1
  110. package/FrameGraph/Tasks/Misc/minMaxReducerTask.d.ts +62 -0
  111. package/FrameGraph/Tasks/Misc/minMaxReducerTask.js +159 -0
  112. package/FrameGraph/Tasks/Misc/minMaxReducerTask.js.map +1 -0
  113. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +3 -1
  114. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
  115. package/FrameGraph/frameGraph.d.ts +4 -0
  116. package/FrameGraph/frameGraph.js +14 -0
  117. package/FrameGraph/frameGraph.js.map +1 -1
  118. package/FrameGraph/index.d.ts +1 -0
  119. package/FrameGraph/index.js +1 -0
  120. package/FrameGraph/index.js.map +1 -1
  121. package/FrameGraph/pure.d.ts +1 -0
  122. package/FrameGraph/pure.js +1 -0
  123. package/FrameGraph/pure.js.map +1 -1
  124. package/Inputs/scene.inputManager.js +1 -1
  125. package/Inputs/scene.inputManager.js.map +1 -1
  126. package/Lights/Clustered/clusteredLightingSceneComponent.pure.d.ts +5 -0
  127. package/Lights/Clustered/clusteredLightingSceneComponent.pure.js +22 -1
  128. package/Lights/Clustered/clusteredLightingSceneComponent.pure.js.map +1 -1
  129. package/Lights/Shadows/cascadedShadowGenerator.pure.js +7 -3
  130. package/Lights/Shadows/cascadedShadowGenerator.pure.js.map +1 -1
  131. package/Materials/GaussianSplatting/gaussianPointSplattingBlitMaterial.d.ts +7 -0
  132. package/Materials/GaussianSplatting/gaussianPointSplattingBlitMaterial.js +8 -0
  133. package/Materials/GaussianSplatting/gaussianPointSplattingBlitMaterial.js.map +1 -0
  134. package/Materials/GaussianSplatting/gaussianPointSplattingBlitMaterial.pure.d.ts +54 -0
  135. package/Materials/GaussianSplatting/gaussianPointSplattingBlitMaterial.pure.js +81 -0
  136. package/Materials/GaussianSplatting/gaussianPointSplattingBlitMaterial.pure.js.map +1 -0
  137. package/Materials/GaussianSplatting/gaussianPointSplattingDepthBlitMaterial.d.ts +7 -0
  138. package/Materials/GaussianSplatting/gaussianPointSplattingDepthBlitMaterial.js +8 -0
  139. package/Materials/GaussianSplatting/gaussianPointSplattingDepthBlitMaterial.js.map +1 -0
  140. package/Materials/GaussianSplatting/gaussianPointSplattingDepthBlitMaterial.pure.d.ts +60 -0
  141. package/Materials/GaussianSplatting/gaussianPointSplattingDepthBlitMaterial.pure.js +90 -0
  142. package/Materials/GaussianSplatting/gaussianPointSplattingDepthBlitMaterial.pure.js.map +1 -0
  143. package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.d.ts +31 -0
  144. package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.js +98 -0
  145. package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.js.map +1 -1
  146. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js +1 -1
  147. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js.map +1 -1
  148. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js +2 -2
  149. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js.map +1 -1
  150. package/Materials/GaussianSplatting/gaussianSplattingOverdrawMaterialPlugin.d.ts +1 -0
  151. package/Materials/GaussianSplatting/gaussianSplattingOverdrawMaterialPlugin.js +4 -0
  152. package/Materials/GaussianSplatting/gaussianSplattingOverdrawMaterialPlugin.js.map +1 -0
  153. package/Materials/GaussianSplatting/gaussianSplattingOverdrawMaterialPlugin.pure.d.ts +83 -0
  154. package/Materials/GaussianSplatting/gaussianSplattingOverdrawMaterialPlugin.pure.js +191 -0
  155. package/Materials/GaussianSplatting/gaussianSplattingOverdrawMaterialPlugin.pure.js.map +1 -0
  156. package/Materials/GaussianSplatting/gaussianSplattingSizeMaterialPlugin.d.ts +1 -0
  157. package/Materials/GaussianSplatting/gaussianSplattingSizeMaterialPlugin.js +4 -0
  158. package/Materials/GaussianSplatting/gaussianSplattingSizeMaterialPlugin.js.map +1 -0
  159. package/Materials/GaussianSplatting/gaussianSplattingSizeMaterialPlugin.pure.d.ts +62 -0
  160. package/Materials/GaussianSplatting/gaussianSplattingSizeMaterialPlugin.pure.js +125 -0
  161. package/Materials/GaussianSplatting/gaussianSplattingSizeMaterialPlugin.pure.js.map +1 -0
  162. package/Materials/GaussianSplatting/pure.d.ts +4 -0
  163. package/Materials/GaussianSplatting/pure.js +4 -0
  164. package/Materials/GaussianSplatting/pure.js.map +1 -1
  165. package/Materials/Node/Blocks/Dual/imageSourceBlock.pure.d.ts +1 -0
  166. package/Materials/Node/Blocks/Dual/imageSourceBlock.pure.js +12 -0
  167. package/Materials/Node/Blocks/Dual/imageSourceBlock.pure.js.map +1 -1
  168. package/Materials/Textures/Procedurals/proceduralTexture.pure.d.ts +1 -0
  169. package/Materials/Textures/Procedurals/proceduralTexture.pure.js +31 -7
  170. package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
  171. package/Materials/Textures/mirrorTexture.pure.js +3 -1
  172. package/Materials/Textures/mirrorTexture.pure.js.map +1 -1
  173. package/Materials/Textures/texture.pure.js +1 -1
  174. package/Materials/Textures/texture.pure.js.map +1 -1
  175. package/Materials/effectRenderer.pure.d.ts +4 -0
  176. package/Materials/effectRenderer.pure.js +3 -2
  177. package/Materials/effectRenderer.pure.js.map +1 -1
  178. package/Materials/index.d.ts +4 -0
  179. package/Materials/index.js +4 -0
  180. package/Materials/index.js.map +1 -1
  181. package/Materials/material.pure.js +25 -12
  182. package/Materials/material.pure.js.map +1 -1
  183. package/Materials/pure.d.ts +4 -0
  184. package/Materials/pure.js +4 -0
  185. package/Materials/pure.js.map +1 -1
  186. package/Materials/standardMaterial.pure.d.ts +8 -0
  187. package/Materials/standardMaterial.pure.js +24 -2
  188. package/Materials/standardMaterial.pure.js.map +1 -1
  189. package/Meshes/Builders/polygonBuilder.pure.js +1 -1
  190. package/Meshes/Builders/polygonBuilder.pure.js.map +1 -1
  191. package/Meshes/GaussianSplatting/gaussianPointSplattingController.d.ts +8 -0
  192. package/Meshes/GaussianSplatting/gaussianPointSplattingController.js +11 -0
  193. package/Meshes/GaussianSplatting/gaussianPointSplattingController.js.map +1 -0
  194. package/Meshes/GaussianSplatting/gaussianPointSplattingController.pure.d.ts +231 -0
  195. package/Meshes/GaussianSplatting/gaussianPointSplattingController.pure.js +1212 -0
  196. package/Meshes/GaussianSplatting/gaussianPointSplattingController.pure.js.map +1 -0
  197. package/Meshes/GaussianSplatting/gaussianPointSplattingRenderer.d.ts +14 -0
  198. package/Meshes/GaussianSplatting/gaussianPointSplattingRenderer.js +15 -0
  199. package/Meshes/GaussianSplatting/gaussianPointSplattingRenderer.js.map +1 -0
  200. package/Meshes/GaussianSplatting/gaussianPointSplattingRenderer.pure.d.ts +285 -0
  201. package/Meshes/GaussianSplatting/gaussianPointSplattingRenderer.pure.js +812 -0
  202. package/Meshes/GaussianSplatting/gaussianPointSplattingRenderer.pure.js.map +1 -0
  203. package/Meshes/GaussianSplatting/gaussianSplattingMesh.d.ts +1 -0
  204. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +2 -0
  205. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
  206. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.d.ts +160 -0
  207. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +219 -0
  208. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
  209. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +32 -4
  210. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +114 -21
  211. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
  212. package/Meshes/GaussianSplatting/pure.d.ts +2 -0
  213. package/Meshes/GaussianSplatting/pure.js +2 -0
  214. package/Meshes/GaussianSplatting/pure.js.map +1 -1
  215. package/Meshes/Node/Blocks/booleanGeometryBlock.pure.js +25 -11
  216. package/Meshes/Node/Blocks/booleanGeometryBlock.pure.js.map +1 -1
  217. package/Meshes/abstractMesh.pure.d.ts +12 -0
  218. package/Meshes/abstractMesh.pure.js +32 -0
  219. package/Meshes/abstractMesh.pure.js.map +1 -1
  220. package/Meshes/index.d.ts +1 -0
  221. package/Meshes/index.js +1 -0
  222. package/Meshes/index.js.map +1 -1
  223. package/Meshes/pure.d.ts +1 -0
  224. package/Meshes/pure.js +1 -0
  225. package/Meshes/pure.js.map +1 -1
  226. package/Meshes/subMesh.pure.d.ts +11 -2
  227. package/Meshes/subMesh.pure.js +20 -5
  228. package/Meshes/subMesh.pure.js.map +1 -1
  229. package/Meshes/thinInstanceMesh.pure.js +1 -0
  230. package/Meshes/thinInstanceMesh.pure.js.map +1 -1
  231. package/Misc/andOrNotEvaluator.js +4 -0
  232. package/Misc/andOrNotEvaluator.js.map +1 -1
  233. package/Misc/minMaxReducer.pure.d.ts +6 -0
  234. package/Misc/minMaxReducer.pure.js +10 -0
  235. package/Misc/minMaxReducer.pure.js.map +1 -1
  236. package/Misc/thinMinMaxReducer.d.ts +19 -2
  237. package/Misc/thinMinMaxReducer.js +74 -21
  238. package/Misc/thinMinMaxReducer.js.map +1 -1
  239. package/Misc/tools.pure.js +1 -1
  240. package/Misc/tools.pure.js.map +1 -1
  241. package/Particles/Node/Blocks/Update/updateNoiseBlock.pure.js +19 -7
  242. package/Particles/Node/Blocks/Update/updateNoiseBlock.pure.js.map +1 -1
  243. package/Particles/Node/Blocks/particleSourceTextureBlock.pure.js +3 -2
  244. package/Particles/Node/Blocks/particleSourceTextureBlock.pure.js.map +1 -1
  245. package/Particles/gpuParticleSystem.pure.d.ts +2 -0
  246. package/Particles/gpuParticleSystem.pure.js +12 -4
  247. package/Particles/gpuParticleSystem.pure.js.map +1 -1
  248. package/Particles/particle.js +3 -2
  249. package/Particles/particle.js.map +1 -1
  250. package/Particles/solidParticleSystem.js +7 -1
  251. package/Particles/solidParticleSystem.js.map +1 -1
  252. package/Particles/thinParticleSystem.function.d.ts +6 -0
  253. package/Particles/thinParticleSystem.function.js +144 -88
  254. package/Particles/thinParticleSystem.function.js.map +1 -1
  255. package/Particles/thinParticleSystem.pure.d.ts +6 -0
  256. package/Particles/thinParticleSystem.pure.js +70 -9
  257. package/Particles/thinParticleSystem.pure.js.map +1 -1
  258. package/Physics/v2/ragdoll.d.ts +2 -4
  259. package/Physics/v2/ragdoll.js +11 -4
  260. package/Physics/v2/ragdoll.js.map +1 -1
  261. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.d.ts +12 -0
  262. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js +43 -18
  263. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js.map +1 -1
  264. package/Rendering/depthRenderer.pure.d.ts +9 -0
  265. package/Rendering/depthRenderer.pure.js +12 -0
  266. package/Rendering/depthRenderer.pure.js.map +1 -1
  267. package/Rendering/fluidRenderer/fluidRenderingObject.d.ts +4 -0
  268. package/Rendering/fluidRenderer/fluidRenderingObject.js +6 -0
  269. package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
  270. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.d.ts +4 -0
  271. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js +8 -0
  272. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js.map +1 -1
  273. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js +3 -0
  274. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js.map +1 -1
  275. package/Rendering/geometryBufferRenderer.pure.js +4 -1
  276. package/Rendering/geometryBufferRenderer.pure.js.map +1 -1
  277. package/Rendering/prePassRenderer.pure.js +3 -3
  278. package/Rendering/prePassRenderer.pure.js.map +1 -1
  279. package/Shaders/ShadersInclude/gaussianSplatting.js +3 -1
  280. package/Shaders/ShadersInclude/gaussianSplatting.js.map +1 -1
  281. package/Shaders/ShadersInclude/lightsFragmentFunctions.js +27 -3
  282. package/Shaders/ShadersInclude/lightsFragmentFunctions.js.map +1 -1
  283. package/Shaders/ShadersInclude/oitDeclaration.js +1 -1
  284. package/Shaders/ShadersInclude/oitDeclaration.js.map +1 -1
  285. package/Shaders/minmaxRedux.fragment.js +6 -1
  286. package/Shaders/minmaxRedux.fragment.js.map +1 -1
  287. package/ShadersWGSL/ShadersInclude/gaussianPointSplatting.d.ts +5 -0
  288. package/ShadersWGSL/ShadersInclude/gaussianPointSplatting.js +65 -0
  289. package/ShadersWGSL/ShadersInclude/gaussianPointSplatting.js.map +1 -0
  290. package/ShadersWGSL/ShadersInclude/gaussianPointSplattingScan.d.ts +5 -0
  291. package/ShadersWGSL/ShadersInclude/gaussianPointSplattingScan.js +17 -0
  292. package/ShadersWGSL/ShadersInclude/gaussianPointSplattingScan.js.map +1 -0
  293. package/ShadersWGSL/ShadersInclude/gaussianSplatting.d.ts +1 -0
  294. package/ShadersWGSL/ShadersInclude/gaussianSplatting.js +6 -78
  295. package/ShadersWGSL/ShadersInclude/gaussianSplatting.js.map +1 -1
  296. package/ShadersWGSL/ShadersInclude/gaussianSplattingFragmentDeclaration.js +2 -2
  297. package/ShadersWGSL/ShadersInclude/gaussianSplattingFragmentDeclaration.js.map +1 -1
  298. package/ShadersWGSL/ShadersInclude/gaussianSplattingShared.d.ts +5 -0
  299. package/ShadersWGSL/ShadersInclude/gaussianSplattingShared.js +79 -0
  300. package/ShadersWGSL/ShadersInclude/gaussianSplattingShared.js.map +1 -0
  301. package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.js +27 -3
  302. package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.js.map +1 -1
  303. package/ShadersWGSL/gaussianPointSplattingBlit.fragment.d.ts +5 -0
  304. package/ShadersWGSL/gaussianPointSplattingBlit.fragment.js +22 -0
  305. package/ShadersWGSL/gaussianPointSplattingBlit.fragment.js.map +1 -0
  306. package/ShadersWGSL/gaussianPointSplattingBlit.vertex.d.ts +5 -0
  307. package/ShadersWGSL/gaussianPointSplattingBlit.vertex.js +19 -0
  308. package/ShadersWGSL/gaussianPointSplattingBlit.vertex.js.map +1 -0
  309. package/ShadersWGSL/gaussianPointSplattingDepthBlit.fragment.d.ts +5 -0
  310. package/ShadersWGSL/gaussianPointSplattingDepthBlit.fragment.js +21 -0
  311. package/ShadersWGSL/gaussianPointSplattingDepthBlit.fragment.js.map +1 -0
  312. package/ShadersWGSL/gaussianSplatting.vertex.js +2 -1
  313. package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
  314. package/ShadersWGSL/gaussianSplattingDepth.vertex.js +2 -1
  315. package/ShadersWGSL/gaussianSplattingDepth.vertex.js.map +1 -1
  316. package/ShadersWGSL/gaussianSplattingVoxel.vertex.js +2 -1
  317. package/ShadersWGSL/gaussianSplattingVoxel.vertex.js.map +1 -1
  318. package/ShadersWGSL/gpsHiZBuild.compute.d.ts +5 -0
  319. package/ShadersWGSL/gpsHiZBuild.compute.js +16 -0
  320. package/ShadersWGSL/gpsHiZBuild.compute.js.map +1 -0
  321. package/ShadersWGSL/gpsPartition.compute.d.ts +5 -0
  322. package/ShadersWGSL/gpsPartition.compute.js +27 -0
  323. package/ShadersWGSL/gpsPartition.compute.js.map +1 -0
  324. package/ShadersWGSL/gpsPreprocess.compute.d.ts +5 -0
  325. package/ShadersWGSL/gpsPreprocess.compute.js +86 -0
  326. package/ShadersWGSL/gpsPreprocess.compute.js.map +1 -0
  327. package/ShadersWGSL/gpsResolve.compute.d.ts +5 -0
  328. package/ShadersWGSL/gpsResolve.compute.js +41 -0
  329. package/ShadersWGSL/gpsResolve.compute.js.map +1 -0
  330. package/ShadersWGSL/gpsScanAdd.compute.d.ts +5 -0
  331. package/ShadersWGSL/gpsScanAdd.compute.js +22 -0
  332. package/ShadersWGSL/gpsScanAdd.compute.js.map +1 -0
  333. package/ShadersWGSL/gpsScanBlocks.compute.d.ts +5 -0
  334. package/ShadersWGSL/gpsScanBlocks.compute.js +23 -0
  335. package/ShadersWGSL/gpsScanBlocks.compute.js.map +1 -0
  336. package/ShadersWGSL/gpsScanSums.compute.d.ts +5 -0
  337. package/ShadersWGSL/gpsScanSums.compute.js +30 -0
  338. package/ShadersWGSL/gpsScanSums.compute.js.map +1 -0
  339. package/ShadersWGSL/gpsSplat.compute.d.ts +5 -0
  340. package/ShadersWGSL/gpsSplat.compute.js +37 -0
  341. package/ShadersWGSL/gpsSplat.compute.js.map +1 -0
  342. package/ShadersWGSL/minmaxRedux.fragment.js +20 -3
  343. package/ShadersWGSL/minmaxRedux.fragment.js.map +1 -1
  344. package/XR/features/WebXRSpaceWarp.pure.js +2 -1
  345. package/XR/features/WebXRSpaceWarp.pure.js.map +1 -1
  346. package/assetContainer.d.ts +1 -0
  347. package/assetContainer.js +5 -1
  348. package/assetContainer.js.map +1 -1
  349. package/package.json +1 -1
  350. package/scene.pure.d.ts +13 -2
  351. package/scene.pure.js +28 -4
  352. package/scene.pure.js.map +1 -1
@@ -2,4 +2,5 @@
2
2
  export * from "./clearBlock.pure.js";
3
3
  export * from "./copyTextureBlock.pure.js";
4
4
  export * from "./generateMipmapsBlock.pure.js";
5
+ export * from "./minMaxReducerBlock.pure.js";
5
6
  //# sourceMappingURL=pure.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pure.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/Textures/pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC","sourcesContent":["/** Pure barrel — re-exports only side-effect-free modules */\nexport * from \"./clearBlock.pure\";\nexport * from \"./copyTextureBlock.pure\";\nexport * from \"./generateMipmapsBlock.pure\";\n"]}
1
+ {"version":3,"file":"pure.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/Textures/pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC","sourcesContent":["/** Pure barrel — re-exports only side-effect-free modules */\nexport * from \"./clearBlock.pure\";\nexport * from \"./copyTextureBlock.pure\";\nexport * from \"./generateMipmapsBlock.pure\";\nexport * from \"./minMaxReducerBlock.pure\";\n"]}
@@ -40,6 +40,7 @@ import { RegisterFrameGraphNodeBlocksTeleportTeleportOutBlock } from "./Teleport
40
40
  import { RegisterClearBlock } from "./Textures/clearBlock.pure.js";
41
41
  import { RegisterCopyTextureBlock } from "./Textures/copyTextureBlock.pure.js";
42
42
  import { RegisterGenerateMipmapsBlock } from "./Textures/generateMipmapsBlock.pure.js";
43
+ import { RegisterMinMaxReducerBlock } from "./Textures/minMaxReducerBlock.pure.js";
43
44
  // Root-level blocks
44
45
  import { RegisterComputeShaderBlock } from "./computeShaderBlock.pure.js";
45
46
  import { RegisterCullObjectsBlock } from "./cullObjectsBlock.pure.js";
@@ -110,6 +111,7 @@ export function RegisterNodeRenderGraphTexturesBlocks() {
110
111
  RegisterClearBlock();
111
112
  RegisterCopyTextureBlock();
112
113
  RegisterGenerateMipmapsBlock();
114
+ RegisterMinMaxReducerBlock();
113
115
  }
114
116
  /**
115
117
  * Registers all core (root-level) node render graph blocks for deserialization.
@@ -1 +1 @@
1
- {"version":3,"file":"allBlocks.pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Node/Blocks/allBlocks.pure.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,EAAE,kCAAkC,EAAE,MAAM,0CAA0C,CAAC;AAE9F,uBAAuB;AACvB,OAAO,EAAE,gCAAgC,EAAE,MAAM,+CAA+C,CAAC;AACjG,OAAO,EAAE,qCAAqC,EAAE,MAAM,oDAAoD,CAAC;AAC3G,OAAO,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAC3F,OAAO,EAAE,4BAA4B,EAAE,MAAM,2CAA2C,CAAC;AACzF,OAAO,EAAE,2CAA2C,EAAE,MAAM,0DAA0D,CAAC;AACvH,OAAO,EAAE,yCAAyC,EAAE,MAAM,wDAAwD,CAAC;AACnH,OAAO,EAAE,uCAAuC,EAAE,MAAM,sDAAsD,CAAC;AAC/G,OAAO,EAAE,mCAAmC,EAAE,MAAM,kDAAkD,CAAC;AACvG,OAAO,EAAE,oCAAoC,EAAE,MAAM,mDAAmD,CAAC;AACzG,OAAO,EAAE,yCAAyC,EAAE,MAAM,wDAAwD,CAAC;AACnH,OAAO,EAAE,8BAA8B,EAAE,MAAM,6CAA6C,CAAC;AAC7F,OAAO,EAAE,4BAA4B,EAAE,MAAM,2CAA2C,CAAC;AACzF,OAAO,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAC3F,OAAO,EAAE,uCAAuC,EAAE,MAAM,sDAAsD,CAAC;AAC/G,OAAO,EAAE,oCAAoC,EAAE,MAAM,mDAAmD,CAAC;AACzG,OAAO,EAAE,kCAAkC,EAAE,MAAM,iDAAiD,CAAC;AACrG,OAAO,EAAE,4BAA4B,EAAE,MAAM,2CAA2C,CAAC;AACzF,OAAO,EAAE,4CAA4C,EAAE,MAAM,2DAA2D,CAAC;AACzH,OAAO,EAAE,+BAA+B,EAAE,MAAM,8CAA8C,CAAC;AAC/F,OAAO,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAC3F,OAAO,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AACvF,OAAO,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AACvF,OAAO,EAAE,+BAA+B,EAAE,MAAM,8CAA8C,CAAC;AAC/F,OAAO,EAAE,+BAA+B,EAAE,MAAM,8CAA8C,CAAC;AAE/F,mBAAmB;AACnB,OAAO,EAAE,+BAA+B,EAAE,MAAM,0CAA0C,CAAC;AAC3F,OAAO,EAAE,6BAA6B,EAAE,MAAM,wCAAwC,CAAC;AACvF,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAAE,iCAAiC,EAAE,MAAM,4CAA4C,CAAC;AAE/F,kBAAkB;AAClB,OAAO,EAAE,mDAAmD,EAAE,MAAM,iCAAiC,CAAC;AACtG,OAAO,EAAE,oDAAoD,EAAE,MAAM,kCAAkC,CAAC;AAExG,kBAAkB;AAClB,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AAEpF,oBAAoB;AACpB,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,sCAAsC,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,sCAAsC,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAE/E;;GAEG;AACH,MAAM,UAAU,mCAAmC;IAC/C,sBAAsB,EAAE,CAAC;IACzB,2BAA2B,EAAE,CAAC;IAC9B,kCAAkC,EAAE,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0CAA0C;IACtD,gCAAgC,EAAE,CAAC;IACnC,qCAAqC,EAAE,CAAC;IACxC,6BAA6B,EAAE,CAAC;IAChC,4BAA4B,EAAE,CAAC;IAC/B,2CAA2C,EAAE,CAAC;IAC9C,yCAAyC,EAAE,CAAC;IAC5C,uCAAuC,EAAE,CAAC;IAC1C,mCAAmC,EAAE,CAAC;IACtC,oCAAoC,EAAE,CAAC;IACvC,yCAAyC,EAAE,CAAC;IAC5C,8BAA8B,EAAE,CAAC;IACjC,4BAA4B,EAAE,CAAC;IAC/B,6BAA6B,EAAE,CAAC;IAChC,uCAAuC,EAAE,CAAC;IAC1C,oCAAoC,EAAE,CAAC;IACvC,kCAAkC,EAAE,CAAC;IACrC,4BAA4B,EAAE,CAAC;IAC/B,4CAA4C,EAAE,CAAC;IAC/C,+BAA+B,EAAE,CAAC;IAClC,6BAA6B,EAAE,CAAC;IAChC,2BAA2B,EAAE,CAAC;IAC9B,2BAA2B,EAAE,CAAC;IAC9B,+BAA+B,EAAE,CAAC;IAClC,+BAA+B,EAAE,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sCAAsC;IAClD,+BAA+B,EAAE,CAAC;IAClC,6BAA6B,EAAE,CAAC;IAChC,2BAA2B,EAAE,CAAC;IAC9B,4BAA4B,EAAE,CAAC;IAC/B,iCAAiC,EAAE,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qCAAqC;IACjD,mDAAmD,EAAE,CAAC;IACtD,oDAAoD,EAAE,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qCAAqC;IACjD,kBAAkB,EAAE,CAAC;IACrB,wBAAwB,EAAE,CAAC;IAC3B,4BAA4B,EAAE,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iCAAiC;IAC7C,0BAA0B,EAAE,CAAC;IAC7B,wBAAwB,EAAE,CAAC;IAC3B,sCAAsC,EAAE,CAAC;IACzC,oBAAoB,EAAE,CAAC;IACvB,sCAAsC,EAAE,CAAC;IACzC,2BAA2B,EAAE,CAAC;IAC9B,mBAAmB,EAAE,CAAC;IACtB,8BAA8B,EAAE,CAAC;AACrC,CAAC;AAED,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB;;;;;;;;GAQG;AACH,MAAM,UAAU,gCAAgC;IAC5C,IAAI,WAAW,EAAE,CAAC;QACd,OAAO;IACX,CAAC;IACD,WAAW,GAAG,IAAI,CAAC;IAEnB,mCAAmC,EAAE,CAAC;IACtC,0CAA0C,EAAE,CAAC;IAC7C,sCAAsC,EAAE,CAAC;IACzC,qCAAqC,EAAE,CAAC;IACxC,qCAAqC,EAAE,CAAC;IACxC,iCAAiC,EAAE,CAAC;AACxC,CAAC","sourcesContent":["// Layers blocks\nimport { RegisterGlowLayerBlock } from \"./Layers/glowLayerBlock.pure\";\nimport { RegisterHighlightLayerBlock } from \"./Layers/highlightLayerBlock.pure\";\nimport { RegisterSelectionOutlineLayerBlock } from \"./Layers/selectionOutlineLayerBlock.pure\";\n\n// PostProcesses blocks\nimport { RegisterAnaglyphPostProcessBlock } from \"./PostProcesses/anaglyphPostProcessBlock.pure\";\nimport { RegisterBlackAndWhitePostProcessBlock } from \"./PostProcesses/blackAndWhitePostProcessBlock.pure\";\nimport { RegisterBloomPostProcessBlock } from \"./PostProcesses/bloomPostProcessBlock.pure\";\nimport { RegisterBlurPostProcessBlock } from \"./PostProcesses/blurPostProcessBlock.pure\";\nimport { RegisterChromaticAberrationPostProcessBlock } from \"./PostProcesses/chromaticAberrationPostProcessBlock.pure\";\nimport { RegisterCircleOfConfusionPostProcessBlock } from \"./PostProcesses/circleOfConfusionPostProcessBlock.pure\";\nimport { RegisterColorCorrectionPostProcessBlock } from \"./PostProcesses/colorCorrectionPostProcessBlock.pure\";\nimport { RegisterConvolutionPostProcessBlock } from \"./PostProcesses/convolutionPostProcessBlock.pure\";\nimport { RegisterDepthOfFieldPostProcessBlock } from \"./PostProcesses/depthOfFieldPostProcessBlock.pure\";\nimport { RegisterExtractHighlightsPostProcessBlock } from \"./PostProcesses/extractHighlightsPostProcessBlock.pure\";\nimport { RegisterFilterPostProcessBlock } from \"./PostProcesses/filterPostProcessBlock.pure\";\nimport { RegisterFxaaPostProcessBlock } from \"./PostProcesses/fxaaPostProcessBlock.pure\";\nimport { RegisterGrainPostProcessBlock } from \"./PostProcesses/grainPostProcessBlock.pure\";\nimport { RegisterImageProcessingPostProcessBlock } from \"./PostProcesses/imageProcessingPostProcessBlock.pure\";\nimport { RegisterMeshBlendingPostProcessBlock } from \"./PostProcesses/meshBlendingPostProcessBlock.pure\";\nimport { RegisterMotionBlurPostProcessBlock } from \"./PostProcesses/motionBlurPostProcessBlock.pure\";\nimport { RegisterPassPostProcessBlock } from \"./PostProcesses/passPostProcessBlock.pure\";\nimport { RegisterScreenSpaceCurvaturePostProcessBlock } from \"./PostProcesses/screenSpaceCurvaturePostProcessBlock.pure\";\nimport { RegisterSharpenPostProcessBlock } from \"./PostProcesses/sharpenPostProcessBlock.pure\";\nimport { RegisterSsao2PostProcessBlock } from \"./PostProcesses/ssao2PostProcessBlock.pure\";\nimport { RegisterSsrPostProcessBlock } from \"./PostProcesses/ssrPostProcessBlock.pure\";\nimport { RegisterTaaPostProcessBlock } from \"./PostProcesses/taaPostProcessBlock.pure\";\nimport { RegisterTonemapPostProcessBlock } from \"./PostProcesses/tonemapPostProcessBlock.pure\";\nimport { RegisterVolumetricLightingBlock } from \"./PostProcesses/volumetricLightingBlock.pure\";\n\n// Rendering blocks\nimport { RegisterCsmShadowGeneratorBlock } from \"./Rendering/csmShadowGeneratorBlock.pure\";\nimport { RegisterGeometryRendererBlock } from \"./Rendering/geometryRendererBlock.pure\";\nimport { RegisterObjectRendererBlock } from \"./Rendering/objectRendererBlock.pure\";\nimport { RegisterShadowGeneratorBlock } from \"./Rendering/shadowGeneratorBlock.pure\";\nimport { RegisterUtilityLayerRendererBlock } from \"./Rendering/utilityLayerRendererBlock.pure\";\n\n// Teleport blocks\nimport { RegisterFrameGraphNodeBlocksTeleportTeleportInBlock } from \"./Teleport/teleportInBlock.pure\";\nimport { RegisterFrameGraphNodeBlocksTeleportTeleportOutBlock } from \"./Teleport/teleportOutBlock.pure\";\n\n// Textures blocks\nimport { RegisterClearBlock } from \"./Textures/clearBlock.pure\";\nimport { RegisterCopyTextureBlock } from \"./Textures/copyTextureBlock.pure\";\nimport { RegisterGenerateMipmapsBlock } from \"./Textures/generateMipmapsBlock.pure\";\n\n// Root-level blocks\nimport { RegisterComputeShaderBlock } from \"./computeShaderBlock.pure\";\nimport { RegisterCullObjectsBlock } from \"./cullObjectsBlock.pure\";\nimport { RegisterFrameGraphNodeBlocksElbowBlock } from \"./elbowBlock.pure\";\nimport { RegisterExecuteBlock } from \"./executeBlock.pure\";\nimport { RegisterFrameGraphNodeBlocksInputBlock } from \"./inputBlock.pure\";\nimport { RegisterLightingVolumeBlock } from \"./lightingVolumeBlock.pure\";\nimport { RegisterOutputBlock } from \"./outputBlock.pure\";\nimport { RegisterResourceContainerBlock } from \"./resourceContainerBlock.pure\";\n\n/**\n * Registers all layer node render graph blocks for deserialization.\n */\nexport function RegisterNodeRenderGraphLayersBlocks(): void {\n RegisterGlowLayerBlock();\n RegisterHighlightLayerBlock();\n RegisterSelectionOutlineLayerBlock();\n}\n\n/**\n * Registers all post-process node render graph blocks for deserialization.\n */\nexport function RegisterNodeRenderGraphPostProcessesBlocks(): void {\n RegisterAnaglyphPostProcessBlock();\n RegisterBlackAndWhitePostProcessBlock();\n RegisterBloomPostProcessBlock();\n RegisterBlurPostProcessBlock();\n RegisterChromaticAberrationPostProcessBlock();\n RegisterCircleOfConfusionPostProcessBlock();\n RegisterColorCorrectionPostProcessBlock();\n RegisterConvolutionPostProcessBlock();\n RegisterDepthOfFieldPostProcessBlock();\n RegisterExtractHighlightsPostProcessBlock();\n RegisterFilterPostProcessBlock();\n RegisterFxaaPostProcessBlock();\n RegisterGrainPostProcessBlock();\n RegisterImageProcessingPostProcessBlock();\n RegisterMeshBlendingPostProcessBlock();\n RegisterMotionBlurPostProcessBlock();\n RegisterPassPostProcessBlock();\n RegisterScreenSpaceCurvaturePostProcessBlock();\n RegisterSharpenPostProcessBlock();\n RegisterSsao2PostProcessBlock();\n RegisterSsrPostProcessBlock();\n RegisterTaaPostProcessBlock();\n RegisterTonemapPostProcessBlock();\n RegisterVolumetricLightingBlock();\n}\n\n/**\n * Registers all rendering node render graph blocks for deserialization.\n */\nexport function RegisterNodeRenderGraphRenderingBlocks(): void {\n RegisterCsmShadowGeneratorBlock();\n RegisterGeometryRendererBlock();\n RegisterObjectRendererBlock();\n RegisterShadowGeneratorBlock();\n RegisterUtilityLayerRendererBlock();\n}\n\n/**\n * Registers all teleport node render graph blocks for deserialization.\n */\nexport function RegisterNodeRenderGraphTeleportBlocks(): void {\n RegisterFrameGraphNodeBlocksTeleportTeleportInBlock();\n RegisterFrameGraphNodeBlocksTeleportTeleportOutBlock();\n}\n\n/**\n * Registers all texture node render graph blocks for deserialization.\n */\nexport function RegisterNodeRenderGraphTexturesBlocks(): void {\n RegisterClearBlock();\n RegisterCopyTextureBlock();\n RegisterGenerateMipmapsBlock();\n}\n\n/**\n * Registers all core (root-level) node render graph blocks for deserialization.\n */\nexport function RegisterNodeRenderGraphCoreBlocks(): void {\n RegisterComputeShaderBlock();\n RegisterCullObjectsBlock();\n RegisterFrameGraphNodeBlocksElbowBlock();\n RegisterExecuteBlock();\n RegisterFrameGraphNodeBlocksInputBlock();\n RegisterLightingVolumeBlock();\n RegisterOutputBlock();\n RegisterResourceContainerBlock();\n}\n\nlet _Registered = false;\n/**\n * Registers all node render graph blocks for deserialization.\n * Call this function when you need to deserialize node render graphs from JSON/snippets.\n *\n * This is the tree-shakeable replacement for:\n * ```ts\n * import \"@babylonjs/core/FrameGraph/Node/Blocks/index\";\n * ```\n */\nexport function RegisterAllNodeRenderGraphBlocks(): void {\n if (_Registered) {\n return;\n }\n _Registered = true;\n\n RegisterNodeRenderGraphLayersBlocks();\n RegisterNodeRenderGraphPostProcessesBlocks();\n RegisterNodeRenderGraphRenderingBlocks();\n RegisterNodeRenderGraphTeleportBlocks();\n RegisterNodeRenderGraphTexturesBlocks();\n RegisterNodeRenderGraphCoreBlocks();\n}\n"]}
1
+ {"version":3,"file":"allBlocks.pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Node/Blocks/allBlocks.pure.ts"],"names":[],"mappings":"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","sourcesContent":["// Layers blocks\nimport { RegisterGlowLayerBlock } from \"./Layers/glowLayerBlock.pure\";\nimport { RegisterHighlightLayerBlock } from \"./Layers/highlightLayerBlock.pure\";\nimport { RegisterSelectionOutlineLayerBlock } from \"./Layers/selectionOutlineLayerBlock.pure\";\n\n// PostProcesses blocks\nimport { RegisterAnaglyphPostProcessBlock } from \"./PostProcesses/anaglyphPostProcessBlock.pure\";\nimport { RegisterBlackAndWhitePostProcessBlock } from \"./PostProcesses/blackAndWhitePostProcessBlock.pure\";\nimport { RegisterBloomPostProcessBlock } from \"./PostProcesses/bloomPostProcessBlock.pure\";\nimport { RegisterBlurPostProcessBlock } from \"./PostProcesses/blurPostProcessBlock.pure\";\nimport { RegisterChromaticAberrationPostProcessBlock } from \"./PostProcesses/chromaticAberrationPostProcessBlock.pure\";\nimport { RegisterCircleOfConfusionPostProcessBlock } from \"./PostProcesses/circleOfConfusionPostProcessBlock.pure\";\nimport { RegisterColorCorrectionPostProcessBlock } from \"./PostProcesses/colorCorrectionPostProcessBlock.pure\";\nimport { RegisterConvolutionPostProcessBlock } from \"./PostProcesses/convolutionPostProcessBlock.pure\";\nimport { RegisterDepthOfFieldPostProcessBlock } from \"./PostProcesses/depthOfFieldPostProcessBlock.pure\";\nimport { RegisterExtractHighlightsPostProcessBlock } from \"./PostProcesses/extractHighlightsPostProcessBlock.pure\";\nimport { RegisterFilterPostProcessBlock } from \"./PostProcesses/filterPostProcessBlock.pure\";\nimport { RegisterFxaaPostProcessBlock } from \"./PostProcesses/fxaaPostProcessBlock.pure\";\nimport { RegisterGrainPostProcessBlock } from \"./PostProcesses/grainPostProcessBlock.pure\";\nimport { RegisterImageProcessingPostProcessBlock } from \"./PostProcesses/imageProcessingPostProcessBlock.pure\";\nimport { RegisterMeshBlendingPostProcessBlock } from \"./PostProcesses/meshBlendingPostProcessBlock.pure\";\nimport { RegisterMotionBlurPostProcessBlock } from \"./PostProcesses/motionBlurPostProcessBlock.pure\";\nimport { RegisterPassPostProcessBlock } from \"./PostProcesses/passPostProcessBlock.pure\";\nimport { RegisterScreenSpaceCurvaturePostProcessBlock } from \"./PostProcesses/screenSpaceCurvaturePostProcessBlock.pure\";\nimport { RegisterSharpenPostProcessBlock } from \"./PostProcesses/sharpenPostProcessBlock.pure\";\nimport { RegisterSsao2PostProcessBlock } from \"./PostProcesses/ssao2PostProcessBlock.pure\";\nimport { RegisterSsrPostProcessBlock } from \"./PostProcesses/ssrPostProcessBlock.pure\";\nimport { RegisterTaaPostProcessBlock } from \"./PostProcesses/taaPostProcessBlock.pure\";\nimport { RegisterTonemapPostProcessBlock } from \"./PostProcesses/tonemapPostProcessBlock.pure\";\nimport { RegisterVolumetricLightingBlock } from \"./PostProcesses/volumetricLightingBlock.pure\";\n\n// Rendering blocks\nimport { RegisterCsmShadowGeneratorBlock } from \"./Rendering/csmShadowGeneratorBlock.pure\";\nimport { RegisterGeometryRendererBlock } from \"./Rendering/geometryRendererBlock.pure\";\nimport { RegisterObjectRendererBlock } from \"./Rendering/objectRendererBlock.pure\";\nimport { RegisterShadowGeneratorBlock } from \"./Rendering/shadowGeneratorBlock.pure\";\nimport { RegisterUtilityLayerRendererBlock } from \"./Rendering/utilityLayerRendererBlock.pure\";\n\n// Teleport blocks\nimport { RegisterFrameGraphNodeBlocksTeleportTeleportInBlock } from \"./Teleport/teleportInBlock.pure\";\nimport { RegisterFrameGraphNodeBlocksTeleportTeleportOutBlock } from \"./Teleport/teleportOutBlock.pure\";\n\n// Textures blocks\nimport { RegisterClearBlock } from \"./Textures/clearBlock.pure\";\nimport { RegisterCopyTextureBlock } from \"./Textures/copyTextureBlock.pure\";\nimport { RegisterGenerateMipmapsBlock } from \"./Textures/generateMipmapsBlock.pure\";\nimport { RegisterMinMaxReducerBlock } from \"./Textures/minMaxReducerBlock.pure\";\n\n// Root-level blocks\nimport { RegisterComputeShaderBlock } from \"./computeShaderBlock.pure\";\nimport { RegisterCullObjectsBlock } from \"./cullObjectsBlock.pure\";\nimport { RegisterFrameGraphNodeBlocksElbowBlock } from \"./elbowBlock.pure\";\nimport { RegisterExecuteBlock } from \"./executeBlock.pure\";\nimport { RegisterFrameGraphNodeBlocksInputBlock } from \"./inputBlock.pure\";\nimport { RegisterLightingVolumeBlock } from \"./lightingVolumeBlock.pure\";\nimport { RegisterOutputBlock } from \"./outputBlock.pure\";\nimport { RegisterResourceContainerBlock } from \"./resourceContainerBlock.pure\";\n\n/**\n * Registers all layer node render graph blocks for deserialization.\n */\nexport function RegisterNodeRenderGraphLayersBlocks(): void {\n RegisterGlowLayerBlock();\n RegisterHighlightLayerBlock();\n RegisterSelectionOutlineLayerBlock();\n}\n\n/**\n * Registers all post-process node render graph blocks for deserialization.\n */\nexport function RegisterNodeRenderGraphPostProcessesBlocks(): void {\n RegisterAnaglyphPostProcessBlock();\n RegisterBlackAndWhitePostProcessBlock();\n RegisterBloomPostProcessBlock();\n RegisterBlurPostProcessBlock();\n RegisterChromaticAberrationPostProcessBlock();\n RegisterCircleOfConfusionPostProcessBlock();\n RegisterColorCorrectionPostProcessBlock();\n RegisterConvolutionPostProcessBlock();\n RegisterDepthOfFieldPostProcessBlock();\n RegisterExtractHighlightsPostProcessBlock();\n RegisterFilterPostProcessBlock();\n RegisterFxaaPostProcessBlock();\n RegisterGrainPostProcessBlock();\n RegisterImageProcessingPostProcessBlock();\n RegisterMeshBlendingPostProcessBlock();\n RegisterMotionBlurPostProcessBlock();\n RegisterPassPostProcessBlock();\n RegisterScreenSpaceCurvaturePostProcessBlock();\n RegisterSharpenPostProcessBlock();\n RegisterSsao2PostProcessBlock();\n RegisterSsrPostProcessBlock();\n RegisterTaaPostProcessBlock();\n RegisterTonemapPostProcessBlock();\n RegisterVolumetricLightingBlock();\n}\n\n/**\n * Registers all rendering node render graph blocks for deserialization.\n */\nexport function RegisterNodeRenderGraphRenderingBlocks(): void {\n RegisterCsmShadowGeneratorBlock();\n RegisterGeometryRendererBlock();\n RegisterObjectRendererBlock();\n RegisterShadowGeneratorBlock();\n RegisterUtilityLayerRendererBlock();\n}\n\n/**\n * Registers all teleport node render graph blocks for deserialization.\n */\nexport function RegisterNodeRenderGraphTeleportBlocks(): void {\n RegisterFrameGraphNodeBlocksTeleportTeleportInBlock();\n RegisterFrameGraphNodeBlocksTeleportTeleportOutBlock();\n}\n\n/**\n * Registers all texture node render graph blocks for deserialization.\n */\nexport function RegisterNodeRenderGraphTexturesBlocks(): void {\n RegisterClearBlock();\n RegisterCopyTextureBlock();\n RegisterGenerateMipmapsBlock();\n RegisterMinMaxReducerBlock();\n}\n\n/**\n * Registers all core (root-level) node render graph blocks for deserialization.\n */\nexport function RegisterNodeRenderGraphCoreBlocks(): void {\n RegisterComputeShaderBlock();\n RegisterCullObjectsBlock();\n RegisterFrameGraphNodeBlocksElbowBlock();\n RegisterExecuteBlock();\n RegisterFrameGraphNodeBlocksInputBlock();\n RegisterLightingVolumeBlock();\n RegisterOutputBlock();\n RegisterResourceContainerBlock();\n}\n\nlet _Registered = false;\n/**\n * Registers all node render graph blocks for deserialization.\n * Call this function when you need to deserialize node render graphs from JSON/snippets.\n *\n * This is the tree-shakeable replacement for:\n * ```ts\n * import \"@babylonjs/core/FrameGraph/Node/Blocks/index\";\n * ```\n */\nexport function RegisterAllNodeRenderGraphBlocks(): void {\n if (_Registered) {\n return;\n }\n _Registered = true;\n\n RegisterNodeRenderGraphLayersBlocks();\n RegisterNodeRenderGraphPostProcessesBlocks();\n RegisterNodeRenderGraphRenderingBlocks();\n RegisterNodeRenderGraphTeleportBlocks();\n RegisterNodeRenderGraphTexturesBlocks();\n RegisterNodeRenderGraphCoreBlocks();\n}\n"]}
@@ -46,3 +46,4 @@ export * from "./Teleport/teleportOutBlock.js";
46
46
  export * from "./Textures/clearBlock.js";
47
47
  export * from "./Textures/copyTextureBlock.js";
48
48
  export * from "./Textures/generateMipmapsBlock.js";
49
+ export * from "./Textures/minMaxReducerBlock.js";
@@ -46,4 +46,5 @@ export * from "./Teleport/teleportOutBlock.js";
46
46
  export * from "./Textures/clearBlock.js";
47
47
  export * from "./Textures/copyTextureBlock.js";
48
48
  export * from "./Textures/generateMipmapsBlock.js";
49
+ export * from "./Textures/minMaxReducerBlock.js";
49
50
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Node/Blocks/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC;AAEzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qCAAqC,CAAC;AAEpD,cAAc,0CAA0C,CAAC;AACzD,cAAc,sCAAsC,CAAC;AACrD,cAAc,oDAAoD,CAAC;AACnE,cAAc,+CAA+C,CAAC;AAC9D,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC;AACrD,cAAc,qDAAqD,CAAC;AACpE,cAAc,mDAAmD,CAAC;AAClE,cAAc,iDAAiD,CAAC;AAChE,cAAc,6CAA6C,CAAC;AAC5D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,mDAAmD,CAAC;AAClE,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,iDAAiD,CAAC;AAChE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,sCAAsC,CAAC;AACrD,cAAc,yCAAyC,CAAC;AACxD,cAAc,sDAAsD,CAAC;AACrE,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC;AACpD,cAAc,qCAAqC,CAAC;AACpD,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AAExD,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,uCAAuC,CAAC;AAEtD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAE5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC","sourcesContent":["export * from \"./computeShaderBlock\";\r\nexport * from \"./cullObjectsBlock\";\r\nexport * from \"./elbowBlock\";\r\nexport * from \"./executeBlock\";\r\nexport * from \"./inputBlock\";\r\nexport * from \"./lightingVolumeBlock\";\r\nexport * from \"./outputBlock\";\r\nexport * from \"./resourceContainerBlock\";\r\n\r\nexport * from \"./Layers/glowLayerBlock\";\r\nexport * from \"./Layers/highlightLayerBlock\";\r\nexport * from \"./Layers/selectionOutlineLayerBlock\";\r\n\r\nexport * from \"./PostProcesses/anaglyphPostProcessBlock\";\r\nexport * from \"./PostProcesses/basePostProcessBlock\";\r\nexport * from \"./PostProcesses/baseWithPropertiesPostProcessBlock\";\r\nexport * from \"./PostProcesses/blackAndWhitePostProcessBlock\";\r\nexport * from \"./PostProcesses/bloomPostProcessBlock\";\r\nexport * from \"./PostProcesses/blurPostProcessBlock\";\r\nexport * from \"./PostProcesses/chromaticAberrationPostProcessBlock\";\r\nexport * from \"./PostProcesses/circleOfConfusionPostProcessBlock\";\r\nexport * from \"./PostProcesses/colorCorrectionPostProcessBlock\";\r\nexport * from \"./PostProcesses/convolutionPostProcessBlock\";\r\nexport * from \"./PostProcesses/depthOfFieldPostProcessBlock\";\r\nexport * from \"./PostProcesses/extractHighlightsPostProcessBlock\";\r\nexport * from \"./PostProcesses/filterPostProcessBlock\";\r\nexport * from \"./PostProcesses/fxaaPostProcessBlock\";\r\nexport * from \"./PostProcesses/grainPostProcessBlock\";\r\nexport * from \"./PostProcesses/imageProcessingPostProcessBlock\";\r\nexport * from \"./PostProcesses/motionBlurPostProcessBlock\";\r\nexport * from \"./PostProcesses/meshBlendingPostProcessBlock\";\r\nexport * from \"./PostProcesses/passPostProcessBlock\";\r\nexport * from \"./PostProcesses/sharpenPostProcessBlock\";\r\nexport * from \"./PostProcesses/screenSpaceCurvaturePostProcessBlock\";\r\nexport * from \"./PostProcesses/ssao2PostProcessBlock\";\r\nexport * from \"./PostProcesses/ssrPostProcessBlock\";\r\nexport * from \"./PostProcesses/taaPostProcessBlock\";\r\nexport * from \"./PostProcesses/tonemapPostProcessBlock\";\r\nexport * from \"./PostProcesses/volumetricLightingBlock\";\r\n\r\nexport * from \"./Rendering/csmShadowGeneratorBlock\";\r\nexport * from \"./Rendering/geometryRendererBlock\";\r\nexport * from \"./Rendering/iblShadowsRendererBlock\";\r\nexport * from \"./Rendering/objectRendererBlock\";\r\nexport * from \"./Rendering/shadowGeneratorBlock\";\r\nexport * from \"./Rendering/utilityLayerRendererBlock\";\r\n\r\nexport * from \"./Teleport/teleportInBlock\";\r\nexport * from \"./Teleport/teleportOutBlock\";\r\n\r\nexport * from \"./Textures/clearBlock\";\r\nexport * from \"./Textures/copyTextureBlock\";\r\nexport * from \"./Textures/generateMipmapsBlock\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Node/Blocks/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC;AAEzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qCAAqC,CAAC;AAEpD,cAAc,0CAA0C,CAAC;AACzD,cAAc,sCAAsC,CAAC;AACrD,cAAc,oDAAoD,CAAC;AACnE,cAAc,+CAA+C,CAAC;AAC9D,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC;AACrD,cAAc,qDAAqD,CAAC;AACpE,cAAc,mDAAmD,CAAC;AAClE,cAAc,iDAAiD,CAAC;AAChE,cAAc,6CAA6C,CAAC;AAC5D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,mDAAmD,CAAC;AAClE,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,iDAAiD,CAAC;AAChE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,sCAAsC,CAAC;AACrD,cAAc,yCAAyC,CAAC;AACxD,cAAc,sDAAsD,CAAC;AACrE,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC;AACpD,cAAc,qCAAqC,CAAC;AACpD,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AAExD,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,uCAAuC,CAAC;AAEtD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAE5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC","sourcesContent":["export * from \"./computeShaderBlock\";\r\nexport * from \"./cullObjectsBlock\";\r\nexport * from \"./elbowBlock\";\r\nexport * from \"./executeBlock\";\r\nexport * from \"./inputBlock\";\r\nexport * from \"./lightingVolumeBlock\";\r\nexport * from \"./outputBlock\";\r\nexport * from \"./resourceContainerBlock\";\r\n\r\nexport * from \"./Layers/glowLayerBlock\";\r\nexport * from \"./Layers/highlightLayerBlock\";\r\nexport * from \"./Layers/selectionOutlineLayerBlock\";\r\n\r\nexport * from \"./PostProcesses/anaglyphPostProcessBlock\";\r\nexport * from \"./PostProcesses/basePostProcessBlock\";\r\nexport * from \"./PostProcesses/baseWithPropertiesPostProcessBlock\";\r\nexport * from \"./PostProcesses/blackAndWhitePostProcessBlock\";\r\nexport * from \"./PostProcesses/bloomPostProcessBlock\";\r\nexport * from \"./PostProcesses/blurPostProcessBlock\";\r\nexport * from \"./PostProcesses/chromaticAberrationPostProcessBlock\";\r\nexport * from \"./PostProcesses/circleOfConfusionPostProcessBlock\";\r\nexport * from \"./PostProcesses/colorCorrectionPostProcessBlock\";\r\nexport * from \"./PostProcesses/convolutionPostProcessBlock\";\r\nexport * from \"./PostProcesses/depthOfFieldPostProcessBlock\";\r\nexport * from \"./PostProcesses/extractHighlightsPostProcessBlock\";\r\nexport * from \"./PostProcesses/filterPostProcessBlock\";\r\nexport * from \"./PostProcesses/fxaaPostProcessBlock\";\r\nexport * from \"./PostProcesses/grainPostProcessBlock\";\r\nexport * from \"./PostProcesses/imageProcessingPostProcessBlock\";\r\nexport * from \"./PostProcesses/motionBlurPostProcessBlock\";\r\nexport * from \"./PostProcesses/meshBlendingPostProcessBlock\";\r\nexport * from \"./PostProcesses/passPostProcessBlock\";\r\nexport * from \"./PostProcesses/sharpenPostProcessBlock\";\r\nexport * from \"./PostProcesses/screenSpaceCurvaturePostProcessBlock\";\r\nexport * from \"./PostProcesses/ssao2PostProcessBlock\";\r\nexport * from \"./PostProcesses/ssrPostProcessBlock\";\r\nexport * from \"./PostProcesses/taaPostProcessBlock\";\r\nexport * from \"./PostProcesses/tonemapPostProcessBlock\";\r\nexport * from \"./PostProcesses/volumetricLightingBlock\";\r\n\r\nexport * from \"./Rendering/csmShadowGeneratorBlock\";\r\nexport * from \"./Rendering/geometryRendererBlock\";\r\nexport * from \"./Rendering/iblShadowsRendererBlock\";\r\nexport * from \"./Rendering/objectRendererBlock\";\r\nexport * from \"./Rendering/shadowGeneratorBlock\";\r\nexport * from \"./Rendering/utilityLayerRendererBlock\";\r\n\r\nexport * from \"./Teleport/teleportInBlock\";\r\nexport * from \"./Teleport/teleportOutBlock\";\r\n\r\nexport * from \"./Textures/clearBlock\";\r\nexport * from \"./Textures/copyTextureBlock\";\r\nexport * from \"./Textures/generateMipmapsBlock\";\r\nexport * from \"./Textures/minMaxReducerBlock\";\r\n"]}
@@ -47,6 +47,7 @@ export * from "./Teleport/teleportOutBlock.pure.js";
47
47
  export * from "./Textures/clearBlock.pure.js";
48
48
  export * from "./Textures/copyTextureBlock.pure.js";
49
49
  export * from "./Textures/generateMipmapsBlock.pure.js";
50
+ export * from "./Textures/minMaxReducerBlock.pure.js";
50
51
  export * from "./allBlocks.pure.js";
51
52
  export * from "./Layers/pure.js";
52
53
  export * from "./PostProcesses/pure.js";
@@ -47,6 +47,7 @@ export * from "./Teleport/teleportOutBlock.pure.js";
47
47
  export * from "./Textures/clearBlock.pure.js";
48
48
  export * from "./Textures/copyTextureBlock.pure.js";
49
49
  export * from "./Textures/generateMipmapsBlock.pure.js";
50
+ export * from "./Textures/minMaxReducerBlock.pure.js";
50
51
  export * from "./allBlocks.pure.js";
51
52
  export * from "./Layers/pure.js";
52
53
  export * from "./PostProcesses/pure.js";
@@ -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,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,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 \"./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"]}
@@ -0,0 +1,62 @@
1
+ import { type FrameGraph, type FrameGraphTextureHandle } from "../../../index.js";
2
+ import { DepthTextureType } from "../../../Misc/thinMinMaxReducer.js";
3
+ import { FrameGraphTask } from "../../frameGraphTask.js";
4
+ /**
5
+ * Task which computes the minimum and maximum values in the red channel of a frame graph texture,
6
+ * or in the depth aspect of a WebGPU depth/stencil attachment.
7
+ * Set sourceTexture to a handle from an earlier task (for example, a geometry renderer's geometryNormViewDepthTexture)
8
+ * to reuse its output without rendering another depth map. The reduction is performed on each graph execution.
9
+ */
10
+ export declare class FrameGraphMinMaxReducerTask extends FrameGraphTask {
11
+ /**
12
+ * The 2D texture to reduce. If generated by a graph task, that task must execute before this one.
13
+ * WebGPU can reduce the depth aspect of a single-sampled depth/stencil attachment; backbuffer depth,
14
+ * stencil-only attachments and integer color formats are not supported.
15
+ */
16
+ sourceTexture: FrameGraphTextureHandle;
17
+ /**
18
+ * Whether to ignore the clear value of a depth-as-color texture during reduction (default: false).
19
+ * For normalized view or forward screen depth, the clear value is 1; for view depth or reverse screen depth, it is 0.
20
+ * Always enabled for a depth/stencil attachment, which stores screen depth.
21
+ */
22
+ depthRedux: boolean;
23
+ /**
24
+ * The type of depth values stored in the source texture when depthRedux is true (default: normalized view depth).
25
+ */
26
+ depthTextureType: DepthTextureType;
27
+ /**
28
+ * The type of the intermediate and output textures (default: half float).
29
+ * Supported types are FLOAT, HALF_FLOAT, and UNSIGNED_BYTE.
30
+ */
31
+ textureType: number;
32
+ /**
33
+ * Wait for WebGPU texture readback before notifying observers (default: false).
34
+ * This delays the notification; it does not block graph execution.
35
+ */
36
+ get waitForReadback(): boolean;
37
+ set waitForReadback(value: boolean);
38
+ /**
39
+ * The 1x1 RG texture containing the minimum in red and maximum in green.
40
+ */
41
+ readonly outputTexture: FrameGraphTextureHandle;
42
+ /**
43
+ * Observable triggered after the reduced texture has been read back.
44
+ * With depthRedux enabled, an empty or equal-valued depth range falls back to [0, 1].
45
+ */
46
+ get onAfterReductionPerformed(): import("../../../index.js").Observable<{
47
+ min: number;
48
+ max: number;
49
+ }>;
50
+ private readonly _reducer;
51
+ private _stepCount;
52
+ /**
53
+ * Creates a min/max reduction task.
54
+ * @param name The name of the task.
55
+ * @param frameGraph The frame graph to add the task to.
56
+ */
57
+ constructor(name: string, frameGraph: FrameGraph);
58
+ getClassName(): string;
59
+ isReady(): boolean;
60
+ record(): void;
61
+ dispose(): void;
62
+ }
@@ -0,0 +1,159 @@
1
+
2
+ import { ThinMinMaxReducer } from "../../../Misc/thinMinMaxReducer.js";
3
+ import { IsDepthTexture, IsIntegerTextureFormat } from "../../../Materials/Textures/textureHelper.functions.js";
4
+ import { FrameGraphTask } from "../../frameGraphTask.js";
5
+ import { FrameGraphPostProcessTask } from "../PostProcesses/postProcessTask.js";
6
+ /**
7
+ * Task which computes the minimum and maximum values in the red channel of a frame graph texture,
8
+ * or in the depth aspect of a WebGPU depth/stencil attachment.
9
+ * Set sourceTexture to a handle from an earlier task (for example, a geometry renderer's geometryNormViewDepthTexture)
10
+ * to reuse its output without rendering another depth map. The reduction is performed on each graph execution.
11
+ */
12
+ export class FrameGraphMinMaxReducerTask extends FrameGraphTask {
13
+ /**
14
+ * Wait for WebGPU texture readback before notifying observers (default: false).
15
+ * This delays the notification; it does not block graph execution.
16
+ */
17
+ get waitForReadback() {
18
+ return this._reducer.waitForReadback;
19
+ }
20
+ set waitForReadback(value) {
21
+ this._reducer.waitForReadback = value;
22
+ }
23
+ /**
24
+ * Observable triggered after the reduced texture has been read back.
25
+ * With depthRedux enabled, an empty or equal-valued depth range falls back to [0, 1].
26
+ */
27
+ get onAfterReductionPerformed() {
28
+ return this._reducer.onAfterReductionPerformed;
29
+ }
30
+ /**
31
+ * Creates a min/max reduction task.
32
+ * @param name The name of the task.
33
+ * @param frameGraph The frame graph to add the task to.
34
+ */
35
+ constructor(name, frameGraph) {
36
+ super(name, frameGraph);
37
+ /**
38
+ * Whether to ignore the clear value of a depth-as-color texture during reduction (default: false).
39
+ * For normalized view or forward screen depth, the clear value is 1; for view depth or reverse screen depth, it is 0.
40
+ * Always enabled for a depth/stencil attachment, which stores screen depth.
41
+ */
42
+ this.depthRedux = false;
43
+ /**
44
+ * The type of depth values stored in the source texture when depthRedux is true (default: normalized view depth).
45
+ */
46
+ this.depthTextureType = 0 /* DepthTextureType.NormalizedViewDepth */;
47
+ /**
48
+ * The type of the intermediate and output textures (default: half float).
49
+ * Supported types are FLOAT, HALF_FLOAT, and UNSIGNED_BYTE.
50
+ */
51
+ this.textureType = 2;
52
+ this._stepCount = 0;
53
+ this._reducer = new ThinMinMaxReducer(frameGraph.scene, false);
54
+ this.outputTexture = frameGraph.textureManager.createDanglingHandle();
55
+ }
56
+ getClassName() {
57
+ return "FrameGraphMinMaxReducerTask";
58
+ }
59
+ isReady() {
60
+ for (let i = 0; i < this._stepCount; i++) {
61
+ if (!this._reducer.reductionSteps[i].isReady()) {
62
+ return false;
63
+ }
64
+ }
65
+ return true;
66
+ }
67
+ record() {
68
+ if (this.sourceTexture === undefined) {
69
+ throw new Error(`FrameGraphMinMaxReducerTask ${this.name}: sourceTexture is required`);
70
+ }
71
+ const description = this._frameGraph.textureManager.getTextureDescription(this.sourceTexture);
72
+ const { width, height } = description.size;
73
+ if (!Number.isInteger(width) || !Number.isInteger(height) || width < 1 || height < 1) {
74
+ throw new Error(`FrameGraphMinMaxReducerTask ${this.name}: sourceTexture must have positive integer dimensions`);
75
+ }
76
+ if ((description.options.targetTypes?.[0] ?? 3553) !== 3553) {
77
+ throw new Error(`FrameGraphMinMaxReducerTask ${this.name}: sourceTexture must be a 2D texture`);
78
+ }
79
+ const format = description.options.formats?.[0];
80
+ const sourceIsDepthTexture = format !== undefined && IsDepthTexture(format);
81
+ if (sourceIsDepthTexture) {
82
+ if (!this._frameGraph.engine.isWebGPU) {
83
+ throw new Error(`FrameGraphMinMaxReducerTask ${this.name}: depth/stencil sources require WebGPU`);
84
+ }
85
+ if (this._frameGraph.textureManager.isBackbufferDepthStencil(this.sourceTexture)) {
86
+ throw new Error(`FrameGraphMinMaxReducerTask ${this.name}: backbuffer depth cannot be sampled`);
87
+ }
88
+ if (format !== 15 &&
89
+ format !== 16 &&
90
+ format !== 13 &&
91
+ format !== 14 &&
92
+ format !== 18) {
93
+ throw new Error(`FrameGraphMinMaxReducerTask ${this.name}: sourceTexture must have a supported depth aspect`);
94
+ }
95
+ const samples = description.options.samples;
96
+ if (samples !== undefined && samples !== 0 && samples !== 1) {
97
+ throw new Error(`FrameGraphMinMaxReducerTask ${this.name}: depth/stencil sources must be single-sampled`);
98
+ }
99
+ }
100
+ else if (format !== undefined && IsIntegerTextureFormat(format)) {
101
+ throw new Error(`FrameGraphMinMaxReducerTask ${this.name}: sourceTexture must have a non-integer color format`);
102
+ }
103
+ if (this.textureType !== 1 && this.textureType !== 2 && this.textureType !== 0) {
104
+ throw new Error(`FrameGraphMinMaxReducerTask ${this.name}: textureType must be FLOAT, HALF_FLOAT, or UNSIGNED_BYTE`);
105
+ }
106
+ const depthRedux = this.depthRedux || sourceIsDepthTexture;
107
+ this._reducer.depthRedux = depthRedux;
108
+ const sourceDepthTextureType = sourceIsDepthTexture ? 2 /* DepthTextureType.ScreenDepth */ : this.depthTextureType;
109
+ const depthTextureType = depthRedux && sourceDepthTextureType === 2 /* DepthTextureType.ScreenDepth */ && this._frameGraph.engine.useReverseDepthBuffer
110
+ ? 1 /* DepthTextureType.ViewDepth */
111
+ : sourceDepthTextureType;
112
+ this._reducer.setTextureDimensions(width, height, depthTextureType, sourceIsDepthTexture);
113
+ const steps = this._reducer.reductionSteps;
114
+ const stepCount = Math.max(1, steps.length - 1);
115
+ this._stepCount = stepCount;
116
+ let sourceTexture = this.sourceTexture;
117
+ for (let i = 0; i < stepCount; i++) {
118
+ const step = steps[i];
119
+ const nextStep = steps[i + 1];
120
+ const targetTexture = this._frameGraph.textureManager.createRenderTargetTexture(`${this.name} ${step.name}`, {
121
+ size: { width: nextStep?.textureWidth ?? 1, height: nextStep?.textureHeight ?? 1 },
122
+ sizeIsPercentage: false,
123
+ options: {
124
+ createMipMaps: false,
125
+ samples: 1,
126
+ types: [this.textureType],
127
+ formats: [7],
128
+ useSRGBBuffers: [false],
129
+ },
130
+ });
131
+ const pass = new FrameGraphPostProcessTask(`${this.name} ${step.name}`, this._frameGraph, step);
132
+ pass.sourceTexture = sourceTexture;
133
+ pass.sourceSamplingMode = 1;
134
+ pass.targetTexture = targetTexture;
135
+ pass.record(true);
136
+ sourceTexture = pass.outputTexture;
137
+ }
138
+ this._frameGraph.textureManager.resolveDanglingHandle(this.outputTexture, sourceTexture);
139
+ const readPass = this._frameGraph.addPass(`${this.name} Read min/max`);
140
+ readPass.setExecuteFunc((context) => {
141
+ if (!this._reducer.onAfterReductionPerformed.hasObservers()) {
142
+ return;
143
+ }
144
+ const texture = context.getTextureFromHandle(this.outputTexture);
145
+ if (!texture) {
146
+ throw new Error(`FrameGraphMinMaxReducerTask ${this.name}: output texture is unavailable`);
147
+ }
148
+ this._reducer.readMinMax(texture, depthRedux);
149
+ });
150
+ const passDisabled = this._frameGraph.addRenderPass(`${this.name}_disabled`, true);
151
+ passDisabled.setRenderTarget(this.outputTexture);
152
+ passDisabled.setExecuteFunc(() => { });
153
+ }
154
+ dispose() {
155
+ this._reducer.dispose();
156
+ super.dispose();
157
+ }
158
+ }
159
+ //# sourceMappingURL=minMaxReducerTask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"minMaxReducerTask.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Tasks/Misc/minMaxReducerTask.ts"],"names":[],"mappings":"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","sourcesContent":["import { type FrameGraph, type FrameGraphTextureHandle } from \"core/index\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { DepthTextureType, ThinMinMaxReducer } from \"core/Misc/thinMinMaxReducer\";\r\nimport { IsDepthTexture, IsIntegerTextureFormat } from \"core/Materials/Textures/textureHelper.functions\";\r\nimport { FrameGraphTask } from \"../../frameGraphTask\";\r\nimport { FrameGraphPostProcessTask } from \"../PostProcesses/postProcessTask\";\r\n\r\n/**\r\n * Task which computes the minimum and maximum values in the red channel of a frame graph texture,\r\n * or in the depth aspect of a WebGPU depth/stencil attachment.\r\n * Set sourceTexture to a handle from an earlier task (for example, a geometry renderer's geometryNormViewDepthTexture)\r\n * to reuse its output without rendering another depth map. The reduction is performed on each graph execution.\r\n */\r\nexport class FrameGraphMinMaxReducerTask extends FrameGraphTask {\r\n /**\r\n * The 2D texture to reduce. If generated by a graph task, that task must execute before this one.\r\n * WebGPU can reduce the depth aspect of a single-sampled depth/stencil attachment; backbuffer depth,\r\n * stencil-only attachments and integer color formats are not supported.\r\n */\r\n public sourceTexture: FrameGraphTextureHandle;\r\n\r\n /**\r\n * Whether to ignore the clear value of a depth-as-color texture during reduction (default: false).\r\n * For normalized view or forward screen depth, the clear value is 1; for view depth or reverse screen depth, it is 0.\r\n * Always enabled for a depth/stencil attachment, which stores screen depth.\r\n */\r\n public depthRedux = false;\r\n\r\n /**\r\n * The type of depth values stored in the source texture when depthRedux is true (default: normalized view depth).\r\n */\r\n public depthTextureType = DepthTextureType.NormalizedViewDepth;\r\n\r\n /**\r\n * The type of the intermediate and output textures (default: half float).\r\n * Supported types are FLOAT, HALF_FLOAT, and UNSIGNED_BYTE.\r\n */\r\n public textureType = Constants.TEXTURETYPE_HALF_FLOAT;\r\n\r\n /**\r\n * Wait for WebGPU texture readback before notifying observers (default: false).\r\n * This delays the notification; it does not block graph execution.\r\n */\r\n public get waitForReadback(): boolean {\r\n return this._reducer.waitForReadback;\r\n }\r\n\r\n public set waitForReadback(value: boolean) {\r\n this._reducer.waitForReadback = value;\r\n }\r\n\r\n /**\r\n * The 1x1 RG texture containing the minimum in red and maximum in green.\r\n */\r\n public readonly outputTexture: FrameGraphTextureHandle;\r\n\r\n /**\r\n * Observable triggered after the reduced texture has been read back.\r\n * With depthRedux enabled, an empty or equal-valued depth range falls back to [0, 1].\r\n */\r\n public get onAfterReductionPerformed() {\r\n return this._reducer.onAfterReductionPerformed;\r\n }\r\n\r\n private readonly _reducer: ThinMinMaxReducer;\r\n private _stepCount = 0;\r\n\r\n /**\r\n * Creates a min/max reduction task.\r\n * @param name The name of the task.\r\n * @param frameGraph The frame graph to add the task to.\r\n */\r\n constructor(name: string, frameGraph: FrameGraph) {\r\n super(name, frameGraph);\r\n this._reducer = new ThinMinMaxReducer(frameGraph.scene, false);\r\n this.outputTexture = frameGraph.textureManager.createDanglingHandle();\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"FrameGraphMinMaxReducerTask\";\r\n }\r\n\r\n public override isReady(): boolean {\r\n for (let i = 0; i < this._stepCount; i++) {\r\n if (!this._reducer.reductionSteps[i].isReady()) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n public override record(): void {\r\n if (this.sourceTexture === undefined) {\r\n throw new Error(`FrameGraphMinMaxReducerTask ${this.name}: sourceTexture is required`);\r\n }\r\n\r\n const description = this._frameGraph.textureManager.getTextureDescription(this.sourceTexture);\r\n const { width, height } = description.size;\r\n if (!Number.isInteger(width) || !Number.isInteger(height) || width < 1 || height < 1) {\r\n throw new Error(`FrameGraphMinMaxReducerTask ${this.name}: sourceTexture must have positive integer dimensions`);\r\n }\r\n if ((description.options.targetTypes?.[0] ?? Constants.TEXTURE_2D) !== Constants.TEXTURE_2D) {\r\n throw new Error(`FrameGraphMinMaxReducerTask ${this.name}: sourceTexture must be a 2D texture`);\r\n }\r\n const format = description.options.formats?.[0];\r\n const sourceIsDepthTexture = format !== undefined && IsDepthTexture(format);\r\n if (sourceIsDepthTexture) {\r\n if (!this._frameGraph.engine.isWebGPU) {\r\n throw new Error(`FrameGraphMinMaxReducerTask ${this.name}: depth/stencil sources require WebGPU`);\r\n }\r\n if (this._frameGraph.textureManager.isBackbufferDepthStencil(this.sourceTexture)) {\r\n throw new Error(`FrameGraphMinMaxReducerTask ${this.name}: backbuffer depth cannot be sampled`);\r\n }\r\n if (\r\n format !== Constants.TEXTUREFORMAT_DEPTH16 &&\r\n format !== Constants.TEXTUREFORMAT_DEPTH24 &&\r\n format !== Constants.TEXTUREFORMAT_DEPTH24_STENCIL8 &&\r\n format !== Constants.TEXTUREFORMAT_DEPTH32_FLOAT &&\r\n format !== Constants.TEXTUREFORMAT_DEPTH32FLOAT_STENCIL8\r\n ) {\r\n throw new Error(`FrameGraphMinMaxReducerTask ${this.name}: sourceTexture must have a supported depth aspect`);\r\n }\r\n const samples = description.options.samples;\r\n if (samples !== undefined && samples !== 0 && samples !== 1) {\r\n throw new Error(`FrameGraphMinMaxReducerTask ${this.name}: depth/stencil sources must be single-sampled`);\r\n }\r\n } else if (format !== undefined && IsIntegerTextureFormat(format)) {\r\n throw new Error(`FrameGraphMinMaxReducerTask ${this.name}: sourceTexture must have a non-integer color format`);\r\n }\r\n if (this.textureType !== Constants.TEXTURETYPE_FLOAT && this.textureType !== Constants.TEXTURETYPE_HALF_FLOAT && this.textureType !== Constants.TEXTURETYPE_UNSIGNED_BYTE) {\r\n throw new Error(`FrameGraphMinMaxReducerTask ${this.name}: textureType must be FLOAT, HALF_FLOAT, or UNSIGNED_BYTE`);\r\n }\r\n\r\n const depthRedux = this.depthRedux || sourceIsDepthTexture;\r\n this._reducer.depthRedux = depthRedux;\r\n const sourceDepthTextureType = sourceIsDepthTexture ? DepthTextureType.ScreenDepth : this.depthTextureType;\r\n const depthTextureType =\r\n depthRedux && sourceDepthTextureType === DepthTextureType.ScreenDepth && this._frameGraph.engine.useReverseDepthBuffer\r\n ? DepthTextureType.ViewDepth\r\n : sourceDepthTextureType;\r\n this._reducer.setTextureDimensions(width, height, depthTextureType, sourceIsDepthTexture);\r\n\r\n const steps = this._reducer.reductionSteps;\r\n const stepCount = Math.max(1, steps.length - 1);\r\n this._stepCount = stepCount;\r\n let sourceTexture = this.sourceTexture;\r\n\r\n for (let i = 0; i < stepCount; i++) {\r\n const step = steps[i];\r\n const nextStep = steps[i + 1];\r\n const targetTexture = this._frameGraph.textureManager.createRenderTargetTexture(`${this.name} ${step.name}`, {\r\n size: { width: nextStep?.textureWidth ?? 1, height: nextStep?.textureHeight ?? 1 },\r\n sizeIsPercentage: false,\r\n options: {\r\n createMipMaps: false,\r\n samples: 1,\r\n types: [this.textureType],\r\n formats: [Constants.TEXTUREFORMAT_RG],\r\n useSRGBBuffers: [false],\r\n },\r\n });\r\n const pass = new FrameGraphPostProcessTask(`${this.name} ${step.name}`, this._frameGraph, step);\r\n pass.sourceTexture = sourceTexture;\r\n pass.sourceSamplingMode = Constants.TEXTURE_NEAREST_NEAREST;\r\n pass.targetTexture = targetTexture;\r\n pass.record(true);\r\n\r\n sourceTexture = pass.outputTexture;\r\n }\r\n\r\n this._frameGraph.textureManager.resolveDanglingHandle(this.outputTexture, sourceTexture);\r\n\r\n const readPass = this._frameGraph.addPass(`${this.name} Read min/max`);\r\n readPass.setExecuteFunc((context) => {\r\n if (!this._reducer.onAfterReductionPerformed.hasObservers()) {\r\n return;\r\n }\r\n const texture = context.getTextureFromHandle(this.outputTexture);\r\n if (!texture) {\r\n throw new Error(`FrameGraphMinMaxReducerTask ${this.name}: output texture is unavailable`);\r\n }\r\n this._reducer.readMinMax(texture, depthRedux);\r\n });\r\n\r\n const passDisabled = this._frameGraph.addRenderPass(`${this.name}_disabled`, true);\r\n passDisabled.setRenderTarget(this.outputTexture);\r\n passDisabled.setExecuteFunc(() => {});\r\n }\r\n\r\n public override dispose(): void {\r\n this._reducer.dispose();\r\n super.dispose();\r\n }\r\n}\r\n"]}
@@ -250,7 +250,9 @@ export class FrameGraphGeometryRendererTask extends FrameGraphObjectRendererTask
250
250
  break;
251
251
  }
252
252
  }
253
- this._scene.needsPreviousWorldMatrices = needPreviousWorldMatrices;
253
+ if (needPreviousWorldMatrices) {
254
+ this._frameGraph._requestPreviousWorldMatrices();
255
+ }
254
256
  return pass;
255
257
  }
256
258
  dispose() {