@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,16 +1,27 @@
1
- import { type MaterialDefines, type Effect, type Mesh, type AbstractMesh, type Material } from "../index.js";
1
+ import { type MaterialDefines, type Effect, type Mesh, type AbstractMesh, type Material, type AbstractEngine } from "../index.js";
2
2
  import { Matrix } from "../Maths/math.vector.pure.js";
3
3
  /**
4
4
  * Provides the object ID written by geometry rendering for a mesh.
5
5
  *
6
6
  * IDs must be unsigned integers supported by the object ID texture format. ID 0 is reserved for background or excluded meshes.
7
7
  * RGBA textures support IDs up to 0xFFFFFF, while RED textures support IDs up to 0xFF.
8
+ * Instances and thin instances use the source mesh ID, and this callback receives the source mesh for instanced draws.
8
9
  * This callback runs in the render hot path and may be called multiple times for the same mesh in a frame.
9
10
  * It should avoid allocations and return a consistent value for a mesh during a render.
10
11
  */
11
12
  export type GeometryRenderingObjectIdProvider = (mesh: AbstractMesh) => number;
13
+ /**
14
+ * Provides the packed mesh-blending tag written by geometry rendering for a mesh.
15
+ *
16
+ * Tags must be 0 or contain a group ID between 1 and 63 in their low six bits. Tag 0 disables mesh blending.
17
+ * Instances and thin instances use the source mesh tag. This callback receives the source mesh for instanced draws.
18
+ * It runs in the render hot path and should avoid allocations and return a consistent value during a render.
19
+ */
20
+ export type GeometryRenderingMeshBlendTagProvider = (mesh: AbstractMesh) => number;
12
21
  /** @internal */
13
22
  export declare function _GetGeometryRenderingObjectId(mesh: AbstractMesh, provider: GeometryRenderingObjectIdProvider, maxObjectId?: number): number;
23
+ /** @internal */
24
+ export declare function _GetGeometryRenderingMeshBlendTag(mesh: AbstractMesh, provider: GeometryRenderingMeshBlendTagProvider): number;
14
25
  /**
15
26
  * Type of clear operation to perform on a geometry texture.
16
27
  */
@@ -37,6 +48,22 @@ export declare enum GeometryRenderingTextureClearType {
37
48
  * A configuration is created for each rendering pass a geometry rendering is used in.
38
49
  */
39
50
  export type GeometryRenderingConfiguration = {
51
+ /** @internal */
52
+ _attachments?: number[];
53
+ /** @internal */
54
+ _colorAttachments?: number[];
55
+ /** @internal */
56
+ _mrtCount?: number;
57
+ /** @internal */
58
+ _defines?: string;
59
+ /** @internal */
60
+ _currentWorldMatrices?: {
61
+ [index: number]: Matrix;
62
+ };
63
+ /** @internal */
64
+ _worldMatrixFrameIds?: {
65
+ [index: number]: number;
66
+ };
40
67
  /**
41
68
  * Defines used for the geometry rendering.
42
69
  */
@@ -83,6 +110,10 @@ export type GeometryRenderingConfiguration = {
83
110
  * Whether the object ID texture uses the RED format.
84
111
  */
85
112
  objectIdIsRedFormat: boolean;
113
+ /**
114
+ * Provides the packed mesh-blending tag written for each rendered mesh.
115
+ */
116
+ meshBlendTagProvider?: GeometryRenderingMeshBlendTagProvider;
86
117
  };
87
118
  /**
88
119
  * Helper class to manage geometry rendering.
@@ -116,6 +147,20 @@ export declare class MaterialHelperGeometryRendering {
116
147
  * @returns The configuration.
117
148
  */
118
149
  static GetConfiguration(renderPassId: number): GeometryRenderingConfiguration;
150
+ /** @internal */
151
+ static _PrepareConfiguration(renderPassId: number, attachments: number[], colorAttachments: number[]): void;
152
+ /** @internal */
153
+ static _PrepareStringDefines(renderPassId: number, defines: string[]): boolean;
154
+ /** @internal */
155
+ static _BindAttachmentsForEffect(engine: AbstractEngine, effect: Pick<Effect, "_multiTarget">): boolean;
156
+ /** @internal */
157
+ static _RestoreAttachments(engine: AbstractEngine): void;
158
+ /** @internal */
159
+ static _BindColorAttachments(engine: AbstractEngine): boolean;
160
+ /** @internal */
161
+ static _IsColorAttachmentEnabled(engine: AbstractEngine): boolean;
162
+ /** @internal */
163
+ static _BindZeroAlphaDiscard(engine: AbstractEngine, effect: Effect): void;
119
164
  /**
120
165
  * Adds uniforms and samplers for geometry rendering.
121
166
  * @param uniforms The array of uniforms to add to.
@@ -8,6 +8,14 @@ export function _GetGeometryRenderingObjectId(mesh, provider, maxObjectId = 0xff
8
8
  }
9
9
  return objectId;
10
10
  }
11
+ /** @internal */
12
+ export function _GetGeometryRenderingMeshBlendTag(mesh, provider) {
13
+ const tag = provider(mesh);
14
+ if (!Number.isInteger(tag) || tag < 0 || tag > 0xff || (tag !== 0 && (tag & 0x3f) === 0)) {
15
+ throw new Error(`Invalid geometry mesh-blending tag ${tag} for mesh "${mesh.name}". Tags must be 0 or contain a group ID between 1 and 63.`);
16
+ }
17
+ return tag;
18
+ }
11
19
  /**
12
20
  * Type of clear operation to perform on a geometry texture.
13
21
  */
@@ -68,13 +76,83 @@ export class MaterialHelperGeometryRendering {
68
76
  static GetConfiguration(renderPassId) {
69
77
  return MaterialHelperGeometryRendering._Configurations[renderPassId];
70
78
  }
79
+ /** @internal */
80
+ static _PrepareConfiguration(renderPassId, attachments, colorAttachments) {
81
+ const configuration = MaterialHelperGeometryRendering._Configurations[renderPassId];
82
+ configuration._attachments = attachments;
83
+ configuration._colorAttachments = colorAttachments;
84
+ configuration._mrtCount = attachments.length;
85
+ let defines = "#define PREPASS\n";
86
+ for (const description of MaterialHelperGeometryRendering.GeometryTextureDescriptions) {
87
+ const index = configuration.defines[description.defineIndex];
88
+ if (index !== undefined) {
89
+ defines += `#define ${description.define}\n#define ${description.defineIndex} ${index}\n`;
90
+ }
91
+ }
92
+ if (configuration.objectIdIsRedFormat) {
93
+ defines += "#define PREPASS_OBJECT_ID_R8\n";
94
+ }
95
+ configuration._defines = defines + `#define SCENE_MRT_COUNT ${attachments.length}\n`;
96
+ }
97
+ /** @internal */
98
+ static _PrepareStringDefines(renderPassId, defines) {
99
+ const configuration = MaterialHelperGeometryRendering._Configurations[renderPassId];
100
+ if (!configuration?._defines) {
101
+ return false;
102
+ }
103
+ defines.push(configuration._defines);
104
+ return true;
105
+ }
106
+ /** @internal */
107
+ static _BindAttachmentsForEffect(engine, effect) {
108
+ const configuration = MaterialHelperGeometryRendering._Configurations[engine.currentRenderPassId];
109
+ if (!configuration?._attachments) {
110
+ return true;
111
+ }
112
+ engine.bindAttachments(effect._multiTarget ? configuration._attachments : configuration._colorAttachments);
113
+ return effect._multiTarget || configuration.defines["PREPASS_COLOR_INDEX"] !== undefined;
114
+ }
115
+ /** @internal */
116
+ static _RestoreAttachments(engine) {
117
+ const configuration = MaterialHelperGeometryRendering._Configurations[engine.currentRenderPassId];
118
+ if (configuration?._colorAttachments) {
119
+ engine.bindAttachments(configuration._colorAttachments);
120
+ }
121
+ }
122
+ /** @internal */
123
+ static _BindColorAttachments(engine) {
124
+ const configuration = MaterialHelperGeometryRendering._Configurations[engine.currentRenderPassId];
125
+ if (!configuration?._colorAttachments) {
126
+ return true;
127
+ }
128
+ engine.bindAttachments(configuration._colorAttachments);
129
+ return configuration.defines["PREPASS_COLOR_INDEX"] !== undefined;
130
+ }
131
+ /** @internal */
132
+ static _IsColorAttachmentEnabled(engine) {
133
+ const configuration = MaterialHelperGeometryRendering._Configurations[engine.currentRenderPassId];
134
+ return !configuration?._colorAttachments || configuration.defines["PREPASS_COLOR_INDEX"] !== undefined;
135
+ }
136
+ /** @internal */
137
+ static _BindZeroAlphaDiscard(engine, effect) {
138
+ const configuration = MaterialHelperGeometryRendering._Configurations[engine.currentRenderPassId];
139
+ if (!configuration) {
140
+ return;
141
+ }
142
+ const alphaMode = engine.getAlphaMode();
143
+ const discard = configuration.defines["PREPASS_COLOR_INDEX"] === undefined ||
144
+ alphaMode === 2 ||
145
+ alphaMode === 1 ||
146
+ alphaMode === 17;
147
+ effect.setFloat("geometryZeroAlphaDiscard", discard ? 1 : 0);
148
+ }
71
149
  /**
72
150
  * Adds uniforms and samplers for geometry rendering.
73
151
  * @param uniforms The array of uniforms to add to.
74
152
  * @param _samplers The array of samplers to add to.
75
153
  */
76
154
  static AddUniformsAndSamplers(uniforms, _samplers) {
77
- uniforms.push("previousWorld", "previousViewProjection", "mPreviousBones", "objectId");
155
+ uniforms.push("previousWorld", "previousViewProjection", "mPreviousBones", "objectId", "meshBlendTag");
78
156
  }
79
157
  /**
80
158
  * Marks a list of meshes as dirty for geometry rendering.
@@ -123,7 +201,7 @@ export class MaterialHelperGeometryRendering {
123
201
  }
124
202
  }
125
203
  defines["PREPASS_OBJECT_ID_R8"] = configuration.objectIdIsRedFormat;
126
- defines["SCENE_MRT_COUNT"] = numMRT;
204
+ defines["SCENE_MRT_COUNT"] = configuration._mrtCount ?? numMRT;
127
205
  defines["BONES_VELOCITY_ENABLED"] =
128
206
  mesh.useBones && mesh.computeBonesUsingShaders && mesh.skeleton && !mesh.skeleton.isUsingTextureForMatrices && configuration.excludedSkinnedMesh.indexOf(mesh) === -1;
129
207
  }
@@ -156,15 +234,28 @@ export class MaterialHelperGeometryRendering {
156
234
  }
157
235
  effect.setFloat("objectId", objectId);
158
236
  }
237
+ if (configuration.defines["PREPASS_MESH_BLEND_TAG_INDEX"] !== undefined) {
238
+ const meshBlendTag = configuration.meshBlendTagProvider ? _GetGeometryRenderingMeshBlendTag(mesh, configuration.meshBlendTagProvider) : mesh.meshBlendingTag;
239
+ effect.setInt("meshBlendTag", meshBlendTag);
240
+ }
159
241
  if (configuration.defines["PREPASS_VELOCITY_INDEX"] !== undefined || configuration.defines["PREPASS_VELOCITY_LINEAR_INDEX"] !== undefined) {
160
- if (!configuration.previousWorldMatrices[mesh.uniqueId]) {
242
+ const currentWorldMatrices = (configuration._currentWorldMatrices ?? (configuration._currentWorldMatrices = {}));
243
+ const worldMatrixFrameIds = (configuration._worldMatrixFrameIds ?? (configuration._worldMatrixFrameIds = {}));
244
+ if (!currentWorldMatrices[mesh.uniqueId]) {
245
+ currentWorldMatrices[mesh.uniqueId] = world.clone();
161
246
  configuration.previousWorldMatrices[mesh.uniqueId] = world.clone();
162
247
  }
163
- if (!configuration.previousViewProjection) {
164
- configuration.previousViewProjection = scene.getTransformMatrix().clone();
165
- configuration.currentViewProjection = scene.getTransformMatrix().clone();
248
+ if (worldMatrixFrameIds[mesh.uniqueId] !== engine.frameId) {
249
+ configuration.previousWorldMatrices[mesh.uniqueId].copyFrom(currentWorldMatrices[mesh.uniqueId]);
250
+ worldMatrixFrameIds[mesh.uniqueId] = engine.frameId;
251
+ }
252
+ currentWorldMatrices[mesh.uniqueId].copyFrom(world);
253
+ if (configuration.lastUpdateFrameId === -1) {
254
+ configuration.lastUpdateFrameId = engine.frameId;
255
+ configuration.previousViewProjection.copyFrom(scene.getTransformMatrix());
256
+ configuration.currentViewProjection.copyFrom(scene.getTransformMatrix());
166
257
  }
167
- if (configuration.currentViewProjection.updateFlag !== scene.getTransformMatrix().updateFlag) {
258
+ else if (configuration.currentViewProjection.updateFlag !== scene.getTransformMatrix().updateFlag) {
168
259
  // First update of the prepass configuration for this rendering pass
169
260
  configuration.lastUpdateFrameId = engine.frameId;
170
261
  configuration.previousViewProjection.copyFrom(configuration.currentViewProjection);
@@ -177,7 +268,6 @@ export class MaterialHelperGeometryRendering {
177
268
  }
178
269
  effect.setMatrix("previousWorld", configuration.previousWorldMatrices[mesh.uniqueId]);
179
270
  effect.setMatrix("previousViewProjection", configuration.previousViewProjection);
180
- configuration.previousWorldMatrices[mesh.uniqueId] = world.clone();
181
271
  if (mesh.useBones && mesh.computeBonesUsingShaders && mesh.skeleton) {
182
272
  const skeleton = mesh.skeleton;
183
273
  if (!skeleton.isUsingTextureForMatrices || effect.getUniformIndex("boneTextureInfo") === -1) {
@@ -310,6 +400,13 @@ MaterialHelperGeometryRendering.GeometryTextureDescriptions = [
310
400
  define: "PREPASS_OBJECT_ID",
311
401
  defineIndex: "PREPASS_OBJECT_ID_INDEX",
312
402
  },
403
+ {
404
+ type: 16,
405
+ name: "MeshBlendTag",
406
+ clearType: 0 /* GeometryRenderingTextureClearType.Zero */,
407
+ define: "PREPASS_MESH_BLEND_TAG",
408
+ defineIndex: "PREPASS_MESH_BLEND_TAG_INDEX",
409
+ },
313
410
  ];
314
411
  MaterialHelperGeometryRendering._Configurations = {};
315
412
  //# sourceMappingURL=materialHelper.geometryrendering.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"materialHelper.geometryrendering.js","sourceRoot":"","sources":["../../../../dev/core/src/Materials/materialHelper.geometryrendering.ts"],"names":[],"mappings":"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","sourcesContent":["import { type MaterialDefines, type Effect, type Mesh, type AbstractMesh, type Material } from \"core/index\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { Matrix } from \"core/Maths/math.vector.pure\";\r\n\r\n/**\r\n * Provides the object ID written by geometry rendering for a mesh.\r\n *\r\n * IDs must be unsigned integers supported by the object ID texture format. ID 0 is reserved for background or excluded meshes.\r\n * RGBA textures support IDs up to 0xFFFFFF, while RED textures support IDs up to 0xFF.\r\n * This callback runs in the render hot path and may be called multiple times for the same mesh in a frame.\r\n * It should avoid allocations and return a consistent value for a mesh during a render.\r\n */\r\nexport type GeometryRenderingObjectIdProvider = (mesh: AbstractMesh) => number;\r\n\r\n/** @internal */\r\nexport function _GetGeometryRenderingObjectId(mesh: AbstractMesh, provider: GeometryRenderingObjectIdProvider, maxObjectId = 0xffffff): number {\r\n const objectId = provider(mesh);\r\n\r\n if (!Number.isInteger(objectId) || objectId < 0 || objectId > maxObjectId) {\r\n throw new Error(`Invalid geometry object ID ${objectId} for mesh \"${mesh.name}\". Object IDs must be integers between 0 and 0x${maxObjectId.toString(16).toUpperCase()}.`);\r\n }\r\n\r\n return objectId;\r\n}\r\n\r\n/**\r\n * Type of clear operation to perform on a geometry texture.\r\n */\r\nexport const enum GeometryRenderingTextureClearType {\r\n /**\r\n * Clear the texture with zero.\r\n */\r\n Zero = 0,\r\n\r\n /**\r\n * Clear the texture with one.\r\n */\r\n One = 1,\r\n\r\n /**\r\n * Clear the texture with the maximum view Z value.\r\n */\r\n MaxViewZ = 2,\r\n\r\n /**\r\n * Do not clear the texture.\r\n */\r\n NoClear = 3,\r\n}\r\n\r\n/**\r\n * Configuration for geometry rendering.\r\n * A configuration is created for each rendering pass a geometry rendering is used in.\r\n */\r\nexport type GeometryRenderingConfiguration = {\r\n /**\r\n * Defines used for the geometry rendering.\r\n */\r\n defines: { [name: string]: number };\r\n\r\n /**\r\n * Previous world matrices for meshes.\r\n */\r\n previousWorldMatrices: { [index: number]: Matrix };\r\n\r\n /**\r\n * Previous view projection matrix.\r\n */\r\n previousViewProjection: Matrix;\r\n\r\n /**\r\n * Current view projection matrix.\r\n */\r\n currentViewProjection: Matrix;\r\n\r\n /**\r\n * Previous bones for skinned meshes.\r\n */\r\n previousBones: { [index: number]: Float32Array };\r\n\r\n /**\r\n * Last frame id the configuration was updated.\r\n */\r\n lastUpdateFrameId: number;\r\n\r\n /**\r\n * List of excluded skinned meshes.\r\n */\r\n excludedSkinnedMesh: AbstractMesh[];\r\n\r\n /**\r\n * Whether to reverse culling for the geometry rendering (meaning, if back faces should be culled, front faces are culled instead, and the other way around).\r\n */\r\n reverseCulling: boolean;\r\n\r\n /**\r\n * Provides the object ID written for each rendered mesh.\r\n */\r\n objectIdProvider?: GeometryRenderingObjectIdProvider;\r\n\r\n /**\r\n * Whether the object ID texture uses the RED format.\r\n */\r\n objectIdIsRedFormat: boolean;\r\n};\r\n\r\n/**\r\n * Helper class to manage geometry rendering.\r\n */\r\nexport class MaterialHelperGeometryRendering {\r\n /**\r\n * Descriptions of the geometry textures.\r\n */\r\n public static readonly GeometryTextureDescriptions = [\r\n {\r\n type: Constants.PREPASS_IRRADIANCE_LEGACY_TEXTURE_TYPE,\r\n name: \"IrradianceLegacy\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_IRRADIANCE_LEGACY\",\r\n defineIndex: \"PREPASS_IRRADIANCE_LEGACY_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_POSITION_TEXTURE_TYPE,\r\n name: \"WorldPosition\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_POSITION\",\r\n defineIndex: \"PREPASS_POSITION_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_VELOCITY_TEXTURE_TYPE,\r\n name: \"Velocity\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_VELOCITY\",\r\n defineIndex: \"PREPASS_VELOCITY_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_REFLECTIVITY_TEXTURE_TYPE,\r\n name: \"Reflectivity\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_REFLECTIVITY\",\r\n defineIndex: \"PREPASS_REFLECTIVITY_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_DEPTH_TEXTURE_TYPE,\r\n name: \"ViewDepth\",\r\n clearType: GeometryRenderingTextureClearType.MaxViewZ,\r\n define: \"PREPASS_DEPTH\",\r\n defineIndex: \"PREPASS_DEPTH_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_NORMAL_TEXTURE_TYPE,\r\n name: \"ViewNormal\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_NORMAL\",\r\n defineIndex: \"PREPASS_NORMAL_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_ALBEDO_SQRT_TEXTURE_TYPE,\r\n name: \"AlbedoSqrt\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_ALBEDO_SQRT\",\r\n defineIndex: \"PREPASS_ALBEDO_SQRT_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_WORLD_NORMAL_TEXTURE_TYPE,\r\n name: \"WorldNormal\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_WORLD_NORMAL\",\r\n defineIndex: \"PREPASS_WORLD_NORMAL_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_LOCAL_POSITION_TEXTURE_TYPE,\r\n name: \"LocalPosition\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_LOCAL_POSITION\",\r\n defineIndex: \"PREPASS_LOCAL_POSITION_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_SCREENSPACE_DEPTH_TEXTURE_TYPE,\r\n name: \"ScreenDepth\",\r\n clearType: GeometryRenderingTextureClearType.One,\r\n define: \"PREPASS_SCREENSPACE_DEPTH\",\r\n defineIndex: \"PREPASS_SCREENSPACE_DEPTH_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_VELOCITY_LINEAR_TEXTURE_TYPE,\r\n name: \"LinearVelocity\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_VELOCITY_LINEAR\",\r\n defineIndex: \"PREPASS_VELOCITY_LINEAR_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_ALBEDO_TEXTURE_TYPE,\r\n name: \"Albedo\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_ALBEDO\",\r\n defineIndex: \"PREPASS_ALBEDO_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_NORMALIZED_VIEW_DEPTH_TEXTURE_TYPE,\r\n name: \"NormalizedViewDepth\",\r\n clearType: GeometryRenderingTextureClearType.One,\r\n define: \"PREPASS_NORMALIZED_VIEW_DEPTH\",\r\n defineIndex: \"PREPASS_NORMALIZED_VIEW_DEPTH_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_COLOR_TEXTURE_TYPE,\r\n name: \"Color\",\r\n clearType: GeometryRenderingTextureClearType.NoClear,\r\n define: \"PREPASS_COLOR\",\r\n defineIndex: \"PREPASS_COLOR_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_IRRADIANCE_TEXTURE_TYPE,\r\n name: \"Irradiance\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_IRRADIANCE\",\r\n defineIndex: \"PREPASS_IRRADIANCE_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_OBJECT_ID_TEXTURE_TYPE,\r\n name: \"ObjectId\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_OBJECT_ID\",\r\n defineIndex: \"PREPASS_OBJECT_ID_INDEX\",\r\n },\r\n ];\r\n\r\n private static _Configurations: { [renderPassId: number]: GeometryRenderingConfiguration } = {};\r\n\r\n /**\r\n * Creates a new geometry rendering configuration.\r\n * @param renderPassId Render pass id the configuration is created for.\r\n * @returns The created configuration.\r\n */\r\n public static CreateConfiguration(renderPassId: number) {\r\n MaterialHelperGeometryRendering._Configurations[renderPassId] = {\r\n defines: {},\r\n previousWorldMatrices: {},\r\n previousViewProjection: Matrix.Zero(),\r\n currentViewProjection: Matrix.Zero(),\r\n previousBones: {},\r\n lastUpdateFrameId: -1,\r\n excludedSkinnedMesh: [],\r\n reverseCulling: false,\r\n objectIdIsRedFormat: false,\r\n };\r\n return MaterialHelperGeometryRendering._Configurations[renderPassId];\r\n }\r\n\r\n /**\r\n * Deletes a geometry rendering configuration.\r\n * @param renderPassId The render pass id of the configuration to delete.\r\n */\r\n public static DeleteConfiguration(renderPassId: number) {\r\n delete MaterialHelperGeometryRendering._Configurations[renderPassId];\r\n }\r\n\r\n /**\r\n * Gets a geometry rendering configuration.\r\n * @param renderPassId The render pass id of the configuration to get.\r\n * @returns The configuration.\r\n */\r\n public static GetConfiguration(renderPassId: number): GeometryRenderingConfiguration {\r\n return MaterialHelperGeometryRendering._Configurations[renderPassId];\r\n }\r\n\r\n /**\r\n * Adds uniforms and samplers for geometry rendering.\r\n * @param uniforms The array of uniforms to add to.\r\n * @param _samplers The array of samplers to add to.\r\n */\r\n public static AddUniformsAndSamplers(uniforms: string[], _samplers: string[]) {\r\n uniforms.push(\"previousWorld\", \"previousViewProjection\", \"mPreviousBones\", \"objectId\");\r\n }\r\n\r\n /**\r\n * Marks a list of meshes as dirty for geometry rendering.\r\n * @param renderPassId The render pass id the meshes are marked as dirty for.\r\n * @param meshes The list of meshes to mark as dirty.\r\n */\r\n public static MarkAsDirty(renderPassId: number, meshes: AbstractMesh[]) {\r\n for (const mesh of meshes) {\r\n if (!mesh.subMeshes) {\r\n continue;\r\n }\r\n\r\n for (const subMesh of mesh.subMeshes) {\r\n subMesh._removeDrawWrapper(renderPassId);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Prepares defines for geometry rendering.\r\n * @param renderPassId The render pass id the defines are prepared for.\r\n * @param mesh The mesh the defines are prepared for.\r\n * @param defines The defines to update according to the geometry rendering configuration.\r\n */\r\n public static PrepareDefines(renderPassId: number, mesh: AbstractMesh, defines: MaterialDefines) {\r\n if (!defines._arePrePassDirty) {\r\n return;\r\n }\r\n\r\n const configuration = MaterialHelperGeometryRendering._Configurations[renderPassId];\r\n if (!configuration) {\r\n return;\r\n }\r\n\r\n defines[\"PREPASS\"] = true;\r\n\r\n let numMRT = 0;\r\n\r\n for (let i = 0; i < MaterialHelperGeometryRendering.GeometryTextureDescriptions.length; i++) {\r\n const geometryTextureDescription = MaterialHelperGeometryRendering.GeometryTextureDescriptions[i];\r\n const defineName = geometryTextureDescription.define;\r\n const defineIndex = geometryTextureDescription.defineIndex;\r\n const index = configuration.defines[defineIndex];\r\n\r\n if (index !== undefined) {\r\n defines[defineName] = true;\r\n defines[defineIndex] = index;\r\n numMRT++;\r\n } else {\r\n defines[defineName] = false;\r\n delete defines[defineIndex];\r\n }\r\n }\r\n\r\n defines[\"PREPASS_OBJECT_ID_R8\"] = configuration.objectIdIsRedFormat;\r\n defines[\"SCENE_MRT_COUNT\"] = numMRT;\r\n\r\n defines[\"BONES_VELOCITY_ENABLED\"] =\r\n mesh.useBones && mesh.computeBonesUsingShaders && mesh.skeleton && !mesh.skeleton.isUsingTextureForMatrices && configuration.excludedSkinnedMesh.indexOf(mesh) === -1;\r\n }\r\n\r\n /**\r\n * Binds geometry rendering data for a mesh.\r\n * @param renderPassId The render pass id the geometry rendering data is bound for.\r\n * @param effect The effect to bind the geometry rendering data to.\r\n * @param mesh The mesh to bind the geometry rendering data for.\r\n * @param world The world matrix of the mesh.\r\n * @param material The material of the mesh.\r\n */\r\n public static Bind(renderPassId: number, effect: Effect, mesh: Mesh, world: Matrix, material: Material) {\r\n const configuration = MaterialHelperGeometryRendering._Configurations[renderPassId];\r\n if (!configuration) {\r\n return;\r\n }\r\n\r\n const scene = mesh.getScene();\r\n const engine = scene.getEngine();\r\n\r\n if (configuration.reverseCulling) {\r\n engine.setStateCullFaceType(scene._mirroredCameraPosition ? material.cullBackFaces : !material.cullBackFaces);\r\n }\r\n\r\n if (configuration.defines[\"PREPASS_OBJECT_ID_INDEX\"] !== undefined) {\r\n const maxObjectId = configuration.objectIdIsRedFormat ? 0xff : 0xffffff;\r\n let objectId = mesh.uniqueId;\r\n if (configuration.objectIdProvider) {\r\n objectId = _GetGeometryRenderingObjectId(mesh, configuration.objectIdProvider, maxObjectId);\r\n } else if (objectId > maxObjectId) {\r\n throw new Error(\r\n `Invalid geometry object ID ${objectId} for mesh \"${mesh.name}\". Object IDs must be integers between 0 and 0x${maxObjectId.toString(16).toUpperCase()}.`\r\n );\r\n }\r\n effect.setFloat(\"objectId\", objectId);\r\n }\r\n\r\n if (configuration.defines[\"PREPASS_VELOCITY_INDEX\"] !== undefined || configuration.defines[\"PREPASS_VELOCITY_LINEAR_INDEX\"] !== undefined) {\r\n if (!configuration.previousWorldMatrices[mesh.uniqueId]) {\r\n configuration.previousWorldMatrices[mesh.uniqueId] = world.clone();\r\n }\r\n\r\n if (!configuration.previousViewProjection) {\r\n configuration.previousViewProjection = scene.getTransformMatrix().clone();\r\n configuration.currentViewProjection = scene.getTransformMatrix().clone();\r\n }\r\n\r\n if (configuration.currentViewProjection.updateFlag !== scene.getTransformMatrix().updateFlag) {\r\n // First update of the prepass configuration for this rendering pass\r\n configuration.lastUpdateFrameId = engine.frameId;\r\n configuration.previousViewProjection.copyFrom(configuration.currentViewProjection);\r\n configuration.currentViewProjection.copyFrom(scene.getTransformMatrix());\r\n } else if (configuration.lastUpdateFrameId !== engine.frameId) {\r\n // The scene transformation did not change from the previous frame (so no camera motion), we must update previousViewProjection accordingly\r\n configuration.lastUpdateFrameId = engine.frameId;\r\n configuration.previousViewProjection.copyFrom(configuration.currentViewProjection);\r\n }\r\n\r\n effect.setMatrix(\"previousWorld\", configuration.previousWorldMatrices[mesh.uniqueId]);\r\n effect.setMatrix(\"previousViewProjection\", configuration.previousViewProjection);\r\n\r\n configuration.previousWorldMatrices[mesh.uniqueId] = world.clone();\r\n\r\n if (mesh.useBones && mesh.computeBonesUsingShaders && mesh.skeleton) {\r\n const skeleton = mesh.skeleton;\r\n\r\n if (!skeleton.isUsingTextureForMatrices || effect.getUniformIndex(\"boneTextureInfo\") === -1) {\r\n const matrices = skeleton.getTransformMatrices(mesh);\r\n\r\n if (matrices) {\r\n if (!configuration.previousBones[mesh.uniqueId]) {\r\n configuration.previousBones[mesh.uniqueId] = matrices.slice();\r\n }\r\n effect.setMatrices(\"mPreviousBones\", configuration.previousBones[mesh.uniqueId]);\r\n configuration.previousBones[mesh.uniqueId].set(matrices);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"materialHelper.geometryrendering.js","sourceRoot":"","sources":["../../../../dev/core/src/Materials/materialHelper.geometryrendering.ts"],"names":[],"mappings":"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","sourcesContent":["import { type MaterialDefines, type Effect, type Mesh, type AbstractMesh, type Material, type AbstractEngine } from \"core/index\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { Matrix } from \"core/Maths/math.vector.pure\";\r\n\r\n/**\r\n * Provides the object ID written by geometry rendering for a mesh.\r\n *\r\n * IDs must be unsigned integers supported by the object ID texture format. ID 0 is reserved for background or excluded meshes.\r\n * RGBA textures support IDs up to 0xFFFFFF, while RED textures support IDs up to 0xFF.\r\n * Instances and thin instances use the source mesh ID, and this callback receives the source mesh for instanced draws.\r\n * This callback runs in the render hot path and may be called multiple times for the same mesh in a frame.\r\n * It should avoid allocations and return a consistent value for a mesh during a render.\r\n */\r\nexport type GeometryRenderingObjectIdProvider = (mesh: AbstractMesh) => number;\r\n\r\n/**\r\n * Provides the packed mesh-blending tag written by geometry rendering for a mesh.\r\n *\r\n * Tags must be 0 or contain a group ID between 1 and 63 in their low six bits. Tag 0 disables mesh blending.\r\n * Instances and thin instances use the source mesh tag. This callback receives the source mesh for instanced draws.\r\n * It runs in the render hot path and should avoid allocations and return a consistent value during a render.\r\n */\r\nexport type GeometryRenderingMeshBlendTagProvider = (mesh: AbstractMesh) => number;\r\n\r\n/** @internal */\r\nexport function _GetGeometryRenderingObjectId(mesh: AbstractMesh, provider: GeometryRenderingObjectIdProvider, maxObjectId = 0xffffff): number {\r\n const objectId = provider(mesh);\r\n\r\n if (!Number.isInteger(objectId) || objectId < 0 || objectId > maxObjectId) {\r\n throw new Error(`Invalid geometry object ID ${objectId} for mesh \"${mesh.name}\". Object IDs must be integers between 0 and 0x${maxObjectId.toString(16).toUpperCase()}.`);\r\n }\r\n\r\n return objectId;\r\n}\r\n\r\n/** @internal */\r\nexport function _GetGeometryRenderingMeshBlendTag(mesh: AbstractMesh, provider: GeometryRenderingMeshBlendTagProvider): number {\r\n const tag = provider(mesh);\r\n\r\n if (!Number.isInteger(tag) || tag < 0 || tag > 0xff || (tag !== 0 && (tag & 0x3f) === 0)) {\r\n throw new Error(`Invalid geometry mesh-blending tag ${tag} for mesh \"${mesh.name}\". Tags must be 0 or contain a group ID between 1 and 63.`);\r\n }\r\n\r\n return tag;\r\n}\r\n\r\n/**\r\n * Type of clear operation to perform on a geometry texture.\r\n */\r\nexport const enum GeometryRenderingTextureClearType {\r\n /**\r\n * Clear the texture with zero.\r\n */\r\n Zero = 0,\r\n\r\n /**\r\n * Clear the texture with one.\r\n */\r\n One = 1,\r\n\r\n /**\r\n * Clear the texture with the maximum view Z value.\r\n */\r\n MaxViewZ = 2,\r\n\r\n /**\r\n * Do not clear the texture.\r\n */\r\n NoClear = 3,\r\n}\r\n\r\n/**\r\n * Configuration for geometry rendering.\r\n * A configuration is created for each rendering pass a geometry rendering is used in.\r\n */\r\nexport type GeometryRenderingConfiguration = {\r\n /** @internal */\r\n _attachments?: number[];\r\n\r\n /** @internal */\r\n _colorAttachments?: number[];\r\n\r\n /** @internal */\r\n _mrtCount?: number;\r\n\r\n /** @internal */\r\n _defines?: string;\r\n\r\n /** @internal */\r\n _currentWorldMatrices?: { [index: number]: Matrix };\r\n\r\n /** @internal */\r\n _worldMatrixFrameIds?: { [index: number]: number };\r\n\r\n /**\r\n * Defines used for the geometry rendering.\r\n */\r\n defines: { [name: string]: number };\r\n\r\n /**\r\n * Previous world matrices for meshes.\r\n */\r\n previousWorldMatrices: { [index: number]: Matrix };\r\n\r\n /**\r\n * Previous view projection matrix.\r\n */\r\n previousViewProjection: Matrix;\r\n\r\n /**\r\n * Current view projection matrix.\r\n */\r\n currentViewProjection: Matrix;\r\n\r\n /**\r\n * Previous bones for skinned meshes.\r\n */\r\n previousBones: { [index: number]: Float32Array };\r\n\r\n /**\r\n * Last frame id the configuration was updated.\r\n */\r\n lastUpdateFrameId: number;\r\n\r\n /**\r\n * List of excluded skinned meshes.\r\n */\r\n excludedSkinnedMesh: AbstractMesh[];\r\n\r\n /**\r\n * Whether to reverse culling for the geometry rendering (meaning, if back faces should be culled, front faces are culled instead, and the other way around).\r\n */\r\n reverseCulling: boolean;\r\n\r\n /**\r\n * Provides the object ID written for each rendered mesh.\r\n */\r\n objectIdProvider?: GeometryRenderingObjectIdProvider;\r\n\r\n /**\r\n * Whether the object ID texture uses the RED format.\r\n */\r\n objectIdIsRedFormat: boolean;\r\n\r\n /**\r\n * Provides the packed mesh-blending tag written for each rendered mesh.\r\n */\r\n meshBlendTagProvider?: GeometryRenderingMeshBlendTagProvider;\r\n};\r\n\r\n/**\r\n * Helper class to manage geometry rendering.\r\n */\r\nexport class MaterialHelperGeometryRendering {\r\n /**\r\n * Descriptions of the geometry textures.\r\n */\r\n public static readonly GeometryTextureDescriptions = [\r\n {\r\n type: Constants.PREPASS_IRRADIANCE_LEGACY_TEXTURE_TYPE,\r\n name: \"IrradianceLegacy\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_IRRADIANCE_LEGACY\",\r\n defineIndex: \"PREPASS_IRRADIANCE_LEGACY_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_POSITION_TEXTURE_TYPE,\r\n name: \"WorldPosition\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_POSITION\",\r\n defineIndex: \"PREPASS_POSITION_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_VELOCITY_TEXTURE_TYPE,\r\n name: \"Velocity\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_VELOCITY\",\r\n defineIndex: \"PREPASS_VELOCITY_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_REFLECTIVITY_TEXTURE_TYPE,\r\n name: \"Reflectivity\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_REFLECTIVITY\",\r\n defineIndex: \"PREPASS_REFLECTIVITY_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_DEPTH_TEXTURE_TYPE,\r\n name: \"ViewDepth\",\r\n clearType: GeometryRenderingTextureClearType.MaxViewZ,\r\n define: \"PREPASS_DEPTH\",\r\n defineIndex: \"PREPASS_DEPTH_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_NORMAL_TEXTURE_TYPE,\r\n name: \"ViewNormal\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_NORMAL\",\r\n defineIndex: \"PREPASS_NORMAL_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_ALBEDO_SQRT_TEXTURE_TYPE,\r\n name: \"AlbedoSqrt\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_ALBEDO_SQRT\",\r\n defineIndex: \"PREPASS_ALBEDO_SQRT_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_WORLD_NORMAL_TEXTURE_TYPE,\r\n name: \"WorldNormal\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_WORLD_NORMAL\",\r\n defineIndex: \"PREPASS_WORLD_NORMAL_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_LOCAL_POSITION_TEXTURE_TYPE,\r\n name: \"LocalPosition\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_LOCAL_POSITION\",\r\n defineIndex: \"PREPASS_LOCAL_POSITION_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_SCREENSPACE_DEPTH_TEXTURE_TYPE,\r\n name: \"ScreenDepth\",\r\n clearType: GeometryRenderingTextureClearType.One,\r\n define: \"PREPASS_SCREENSPACE_DEPTH\",\r\n defineIndex: \"PREPASS_SCREENSPACE_DEPTH_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_VELOCITY_LINEAR_TEXTURE_TYPE,\r\n name: \"LinearVelocity\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_VELOCITY_LINEAR\",\r\n defineIndex: \"PREPASS_VELOCITY_LINEAR_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_ALBEDO_TEXTURE_TYPE,\r\n name: \"Albedo\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_ALBEDO\",\r\n defineIndex: \"PREPASS_ALBEDO_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_NORMALIZED_VIEW_DEPTH_TEXTURE_TYPE,\r\n name: \"NormalizedViewDepth\",\r\n clearType: GeometryRenderingTextureClearType.One,\r\n define: \"PREPASS_NORMALIZED_VIEW_DEPTH\",\r\n defineIndex: \"PREPASS_NORMALIZED_VIEW_DEPTH_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_COLOR_TEXTURE_TYPE,\r\n name: \"Color\",\r\n clearType: GeometryRenderingTextureClearType.NoClear,\r\n define: \"PREPASS_COLOR\",\r\n defineIndex: \"PREPASS_COLOR_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_IRRADIANCE_TEXTURE_TYPE,\r\n name: \"Irradiance\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_IRRADIANCE\",\r\n defineIndex: \"PREPASS_IRRADIANCE_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_OBJECT_ID_TEXTURE_TYPE,\r\n name: \"ObjectId\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_OBJECT_ID\",\r\n defineIndex: \"PREPASS_OBJECT_ID_INDEX\",\r\n },\r\n {\r\n type: Constants.PREPASS_MESH_BLEND_TAG_TEXTURE_TYPE,\r\n name: \"MeshBlendTag\",\r\n clearType: GeometryRenderingTextureClearType.Zero,\r\n define: \"PREPASS_MESH_BLEND_TAG\",\r\n defineIndex: \"PREPASS_MESH_BLEND_TAG_INDEX\",\r\n },\r\n ];\r\n\r\n private static _Configurations: { [renderPassId: number]: GeometryRenderingConfiguration } = {};\r\n\r\n /**\r\n * Creates a new geometry rendering configuration.\r\n * @param renderPassId Render pass id the configuration is created for.\r\n * @returns The created configuration.\r\n */\r\n public static CreateConfiguration(renderPassId: number) {\r\n MaterialHelperGeometryRendering._Configurations[renderPassId] = {\r\n defines: {},\r\n previousWorldMatrices: {},\r\n previousViewProjection: Matrix.Zero(),\r\n currentViewProjection: Matrix.Zero(),\r\n previousBones: {},\r\n lastUpdateFrameId: -1,\r\n excludedSkinnedMesh: [],\r\n reverseCulling: false,\r\n objectIdIsRedFormat: false,\r\n };\r\n return MaterialHelperGeometryRendering._Configurations[renderPassId];\r\n }\r\n\r\n /**\r\n * Deletes a geometry rendering configuration.\r\n * @param renderPassId The render pass id of the configuration to delete.\r\n */\r\n public static DeleteConfiguration(renderPassId: number) {\r\n delete MaterialHelperGeometryRendering._Configurations[renderPassId];\r\n }\r\n\r\n /**\r\n * Gets a geometry rendering configuration.\r\n * @param renderPassId The render pass id of the configuration to get.\r\n * @returns The configuration.\r\n */\r\n public static GetConfiguration(renderPassId: number): GeometryRenderingConfiguration {\r\n return MaterialHelperGeometryRendering._Configurations[renderPassId];\r\n }\r\n\r\n /** @internal */\r\n public static _PrepareConfiguration(renderPassId: number, attachments: number[], colorAttachments: number[]): void {\r\n const configuration = MaterialHelperGeometryRendering._Configurations[renderPassId];\r\n configuration._attachments = attachments;\r\n configuration._colorAttachments = colorAttachments;\r\n configuration._mrtCount = attachments.length;\r\n\r\n let defines = \"#define PREPASS\\n\";\r\n for (const description of MaterialHelperGeometryRendering.GeometryTextureDescriptions) {\r\n const index = configuration.defines[description.defineIndex];\r\n if (index !== undefined) {\r\n defines += `#define ${description.define}\\n#define ${description.defineIndex} ${index}\\n`;\r\n }\r\n }\r\n if (configuration.objectIdIsRedFormat) {\r\n defines += \"#define PREPASS_OBJECT_ID_R8\\n\";\r\n }\r\n configuration._defines = defines + `#define SCENE_MRT_COUNT ${attachments.length}\\n`;\r\n }\r\n\r\n /** @internal */\r\n public static _PrepareStringDefines(renderPassId: number, defines: string[]): boolean {\r\n const configuration = MaterialHelperGeometryRendering._Configurations[renderPassId];\r\n if (!configuration?._defines) {\r\n return false;\r\n }\r\n defines.push(configuration._defines);\r\n return true;\r\n }\r\n\r\n /** @internal */\r\n public static _BindAttachmentsForEffect(engine: AbstractEngine, effect: Pick<Effect, \"_multiTarget\">): boolean {\r\n const configuration = MaterialHelperGeometryRendering._Configurations[engine.currentRenderPassId];\r\n if (!configuration?._attachments) {\r\n return true;\r\n }\r\n engine.bindAttachments(effect._multiTarget ? configuration._attachments : configuration._colorAttachments!);\r\n return effect._multiTarget || configuration.defines[\"PREPASS_COLOR_INDEX\"] !== undefined;\r\n }\r\n\r\n /** @internal */\r\n public static _RestoreAttachments(engine: AbstractEngine): void {\r\n const configuration = MaterialHelperGeometryRendering._Configurations[engine.currentRenderPassId];\r\n if (configuration?._colorAttachments) {\r\n engine.bindAttachments(configuration._colorAttachments);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public static _BindColorAttachments(engine: AbstractEngine): boolean {\r\n const configuration = MaterialHelperGeometryRendering._Configurations[engine.currentRenderPassId];\r\n if (!configuration?._colorAttachments) {\r\n return true;\r\n }\r\n engine.bindAttachments(configuration._colorAttachments);\r\n return configuration.defines[\"PREPASS_COLOR_INDEX\"] !== undefined;\r\n }\r\n\r\n /** @internal */\r\n public static _IsColorAttachmentEnabled(engine: AbstractEngine): boolean {\r\n const configuration = MaterialHelperGeometryRendering._Configurations[engine.currentRenderPassId];\r\n return !configuration?._colorAttachments || configuration.defines[\"PREPASS_COLOR_INDEX\"] !== undefined;\r\n }\r\n\r\n /** @internal */\r\n public static _BindZeroAlphaDiscard(engine: AbstractEngine, effect: Effect): void {\r\n const configuration = MaterialHelperGeometryRendering._Configurations[engine.currentRenderPassId];\r\n if (!configuration) {\r\n return;\r\n }\r\n const alphaMode = engine.getAlphaMode();\r\n const discard =\r\n configuration.defines[\"PREPASS_COLOR_INDEX\"] === undefined ||\r\n alphaMode === Constants.ALPHA_COMBINE ||\r\n alphaMode === Constants.ALPHA_ADD ||\r\n alphaMode === Constants.ALPHA_LAYER_ACCUMULATE;\r\n effect.setFloat(\"geometryZeroAlphaDiscard\", discard ? 1 : 0);\r\n }\r\n\r\n /**\r\n * Adds uniforms and samplers for geometry rendering.\r\n * @param uniforms The array of uniforms to add to.\r\n * @param _samplers The array of samplers to add to.\r\n */\r\n public static AddUniformsAndSamplers(uniforms: string[], _samplers: string[]) {\r\n uniforms.push(\"previousWorld\", \"previousViewProjection\", \"mPreviousBones\", \"objectId\", \"meshBlendTag\");\r\n }\r\n\r\n /**\r\n * Marks a list of meshes as dirty for geometry rendering.\r\n * @param renderPassId The render pass id the meshes are marked as dirty for.\r\n * @param meshes The list of meshes to mark as dirty.\r\n */\r\n public static MarkAsDirty(renderPassId: number, meshes: AbstractMesh[]) {\r\n for (const mesh of meshes) {\r\n if (!mesh.subMeshes) {\r\n continue;\r\n }\r\n\r\n for (const subMesh of mesh.subMeshes) {\r\n subMesh._removeDrawWrapper(renderPassId);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Prepares defines for geometry rendering.\r\n * @param renderPassId The render pass id the defines are prepared for.\r\n * @param mesh The mesh the defines are prepared for.\r\n * @param defines The defines to update according to the geometry rendering configuration.\r\n */\r\n public static PrepareDefines(renderPassId: number, mesh: AbstractMesh, defines: MaterialDefines) {\r\n if (!defines._arePrePassDirty) {\r\n return;\r\n }\r\n\r\n const configuration = MaterialHelperGeometryRendering._Configurations[renderPassId];\r\n if (!configuration) {\r\n return;\r\n }\r\n\r\n defines[\"PREPASS\"] = true;\r\n\r\n let numMRT = 0;\r\n\r\n for (let i = 0; i < MaterialHelperGeometryRendering.GeometryTextureDescriptions.length; i++) {\r\n const geometryTextureDescription = MaterialHelperGeometryRendering.GeometryTextureDescriptions[i];\r\n const defineName = geometryTextureDescription.define;\r\n const defineIndex = geometryTextureDescription.defineIndex;\r\n const index = configuration.defines[defineIndex];\r\n\r\n if (index !== undefined) {\r\n defines[defineName] = true;\r\n defines[defineIndex] = index;\r\n numMRT++;\r\n } else {\r\n defines[defineName] = false;\r\n delete defines[defineIndex];\r\n }\r\n }\r\n\r\n defines[\"PREPASS_OBJECT_ID_R8\"] = configuration.objectIdIsRedFormat;\r\n defines[\"SCENE_MRT_COUNT\"] = configuration._mrtCount ?? numMRT;\r\n\r\n defines[\"BONES_VELOCITY_ENABLED\"] =\r\n mesh.useBones && mesh.computeBonesUsingShaders && mesh.skeleton && !mesh.skeleton.isUsingTextureForMatrices && configuration.excludedSkinnedMesh.indexOf(mesh) === -1;\r\n }\r\n\r\n /**\r\n * Binds geometry rendering data for a mesh.\r\n * @param renderPassId The render pass id the geometry rendering data is bound for.\r\n * @param effect The effect to bind the geometry rendering data to.\r\n * @param mesh The mesh to bind the geometry rendering data for.\r\n * @param world The world matrix of the mesh.\r\n * @param material The material of the mesh.\r\n */\r\n public static Bind(renderPassId: number, effect: Effect, mesh: Mesh, world: Matrix, material: Material) {\r\n const configuration = MaterialHelperGeometryRendering._Configurations[renderPassId];\r\n if (!configuration) {\r\n return;\r\n }\r\n\r\n const scene = mesh.getScene();\r\n const engine = scene.getEngine();\r\n\r\n if (configuration.reverseCulling) {\r\n engine.setStateCullFaceType(scene._mirroredCameraPosition ? material.cullBackFaces : !material.cullBackFaces);\r\n }\r\n\r\n if (configuration.defines[\"PREPASS_OBJECT_ID_INDEX\"] !== undefined) {\r\n const maxObjectId = configuration.objectIdIsRedFormat ? 0xff : 0xffffff;\r\n let objectId = mesh.uniqueId;\r\n if (configuration.objectIdProvider) {\r\n objectId = _GetGeometryRenderingObjectId(mesh, configuration.objectIdProvider, maxObjectId);\r\n } else if (objectId > maxObjectId) {\r\n throw new Error(\r\n `Invalid geometry object ID ${objectId} for mesh \"${mesh.name}\". Object IDs must be integers between 0 and 0x${maxObjectId.toString(16).toUpperCase()}.`\r\n );\r\n }\r\n effect.setFloat(\"objectId\", objectId);\r\n }\r\n\r\n if (configuration.defines[\"PREPASS_MESH_BLEND_TAG_INDEX\"] !== undefined) {\r\n const meshBlendTag = configuration.meshBlendTagProvider ? _GetGeometryRenderingMeshBlendTag(mesh, configuration.meshBlendTagProvider) : mesh.meshBlendingTag;\r\n effect.setInt(\"meshBlendTag\", meshBlendTag);\r\n }\r\n\r\n if (configuration.defines[\"PREPASS_VELOCITY_INDEX\"] !== undefined || configuration.defines[\"PREPASS_VELOCITY_LINEAR_INDEX\"] !== undefined) {\r\n const currentWorldMatrices = (configuration._currentWorldMatrices ??= {});\r\n const worldMatrixFrameIds = (configuration._worldMatrixFrameIds ??= {});\r\n if (!currentWorldMatrices[mesh.uniqueId]) {\r\n currentWorldMatrices[mesh.uniqueId] = world.clone();\r\n configuration.previousWorldMatrices[mesh.uniqueId] = world.clone();\r\n }\r\n if (worldMatrixFrameIds[mesh.uniqueId] !== engine.frameId) {\r\n configuration.previousWorldMatrices[mesh.uniqueId].copyFrom(currentWorldMatrices[mesh.uniqueId]);\r\n worldMatrixFrameIds[mesh.uniqueId] = engine.frameId;\r\n }\r\n currentWorldMatrices[mesh.uniqueId].copyFrom(world);\r\n\r\n if (configuration.lastUpdateFrameId === -1) {\r\n configuration.lastUpdateFrameId = engine.frameId;\r\n configuration.previousViewProjection.copyFrom(scene.getTransformMatrix());\r\n configuration.currentViewProjection.copyFrom(scene.getTransformMatrix());\r\n } else if (configuration.currentViewProjection.updateFlag !== scene.getTransformMatrix().updateFlag) {\r\n // First update of the prepass configuration for this rendering pass\r\n configuration.lastUpdateFrameId = engine.frameId;\r\n configuration.previousViewProjection.copyFrom(configuration.currentViewProjection);\r\n configuration.currentViewProjection.copyFrom(scene.getTransformMatrix());\r\n } else if (configuration.lastUpdateFrameId !== engine.frameId) {\r\n // The scene transformation did not change from the previous frame (so no camera motion), we must update previousViewProjection accordingly\r\n configuration.lastUpdateFrameId = engine.frameId;\r\n configuration.previousViewProjection.copyFrom(configuration.currentViewProjection);\r\n }\r\n\r\n effect.setMatrix(\"previousWorld\", configuration.previousWorldMatrices[mesh.uniqueId]);\r\n effect.setMatrix(\"previousViewProjection\", configuration.previousViewProjection);\r\n\r\n if (mesh.useBones && mesh.computeBonesUsingShaders && mesh.skeleton) {\r\n const skeleton = mesh.skeleton;\r\n\r\n if (!skeleton.isUsingTextureForMatrices || effect.getUniformIndex(\"boneTextureInfo\") === -1) {\r\n const matrices = skeleton.getTransformMatrices(mesh);\r\n\r\n if (matrices) {\r\n if (!configuration.previousBones[mesh.uniqueId]) {\r\n configuration.previousBones[mesh.uniqueId] = matrices.slice();\r\n }\r\n effect.setMatrices(\"mPreviousBones\", configuration.previousBones[mesh.uniqueId]);\r\n configuration.previousBones[mesh.uniqueId].set(matrices);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n"]}
@@ -40,6 +40,8 @@ export declare function PrepassDefinesMixin<Tbase extends PrepassDefinesMixinCon
40
40
  PREPASS_OBJECT_ID: boolean;
41
41
  PREPASS_OBJECT_ID_INDEX: number;
42
42
  PREPASS_OBJECT_ID_R8: boolean;
43
+ PREPASS_MESH_BLEND_TAG: boolean;
44
+ PREPASS_MESH_BLEND_TAG_INDEX: number;
43
45
  SCENE_MRT_COUNT: number;
44
46
  };
45
47
  } & Tbase;
@@ -41,6 +41,8 @@ export function PrepassDefinesMixin(base) {
41
41
  this.PREPASS_OBJECT_ID = false;
42
42
  this.PREPASS_OBJECT_ID_INDEX = -1;
43
43
  this.PREPASS_OBJECT_ID_R8 = false;
44
+ this.PREPASS_MESH_BLEND_TAG = false;
45
+ this.PREPASS_MESH_BLEND_TAG_INDEX = -1;
44
46
  this.SCENE_MRT_COUNT = 0;
45
47
  }
46
48
  };
@@ -1 +1 @@
1
- {"version":3,"file":"prepass.defines.js","sourceRoot":"","sources":["../../../../dev/core/src/Materials/prepass.defines.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAA+C,IAAW;IACzF,OAAO,KAAM,SAAQ,IAAI;QAAlB;;YACI,YAAO,GAAG,KAAK,CAAC;YAChB,kBAAa,GAAG,KAAK,CAAC;YACtB,wBAAmB,GAAG,CAAC,CAAC,CAAC;YACzB,8BAAyB,GAAG,KAAK,CAAC;YAClC,oCAA+B,GAAG,CAAC,CAAC,CAAC;YACrC,uBAAkB,GAAG,KAAK,CAAC;YAC3B,6BAAwB,GAAG,CAAC,CAAC,CAAC;YAC9B,mBAAc,GAAG,KAAK,CAAC;YACvB,yBAAoB,GAAG,CAAC,CAAC,CAAC;YAC1B,wBAAmB,GAAG,KAAK,CAAC;YAC5B,8BAAyB,GAAG,CAAC,CAAC,CAAC;YAC/B,kBAAa,GAAG,KAAK,CAAC;YACtB,wBAAmB,GAAG,CAAC,CAAC,CAAC;YACzB,8BAAyB,GAAG,KAAK,CAAC;YAClC,oCAA+B,GAAG,CAAC,CAAC,CAAC;YACrC,kCAA6B,GAAG,KAAK,CAAC;YACtC,wCAAmC,GAAG,CAAC,CAAC,CAAC;YACzC,mBAAc,GAAG,KAAK,CAAC;YACvB,yBAAoB,GAAG,CAAC,CAAC,CAAC;YAC1B,8BAAyB,GAAG,KAAK,CAAC;YAClC,yBAAoB,GAAG,KAAK,CAAC;YAC7B,+BAA0B,GAAG,CAAC,CAAC,CAAC;YAChC,qBAAgB,GAAG,KAAK,CAAC;YACzB,2BAAsB,GAAG,CAAC,CAAC,CAAC;YAC5B,2BAAsB,GAAG,KAAK,CAAC;YAC/B,iCAA4B,GAAG,CAAC,CAAC,CAAC;YAClC,qBAAgB,GAAG,KAAK,CAAC;YACzB,2BAAsB,GAAG,CAAC,CAAC,CAAC;YAC5B,4BAAuB,GAAG,KAAK,CAAC;YAChC,kCAA6B,GAAG,CAAC,CAAC,CAAC;YACnC,yBAAoB,GAAG,KAAK,CAAC;YAC7B,+BAA0B,GAAG,CAAC,CAAC,CAAC;YAChC,sBAAiB,GAAG,KAAK,CAAC;YAC1B,4BAAuB,GAAG,CAAC,CAAC,CAAC;YAC7B,yBAAoB,GAAG,KAAK,CAAC;YAC7B,oBAAe,GAAG,CAAC,CAAC;QAC/B,CAAC;KAAA,CAAC;AACN,CAAC","sourcesContent":["type PrepassDefinesMixinConstructor<T = {}> = new (...args: any[]) => T;\r\n\r\n/**\r\n * Mixin to add prepass defines to your material defines\r\n * @internal\r\n */\r\nexport function PrepassDefinesMixin<Tbase extends PrepassDefinesMixinConstructor>(base: Tbase) {\r\n return class extends base {\r\n public PREPASS = false;\r\n public PREPASS_COLOR = false;\r\n public PREPASS_COLOR_INDEX = -1;\r\n public PREPASS_IRRADIANCE_LEGACY = false;\r\n public PREPASS_IRRADIANCE_LEGACY_INDEX = -1;\r\n public PREPASS_IRRADIANCE = false;\r\n public PREPASS_IRRADIANCE_INDEX = -1;\r\n public PREPASS_ALBEDO = false;\r\n public PREPASS_ALBEDO_INDEX = -1;\r\n public PREPASS_ALBEDO_SQRT = false;\r\n public PREPASS_ALBEDO_SQRT_INDEX = -1;\r\n public PREPASS_DEPTH = false;\r\n public PREPASS_DEPTH_INDEX = -1;\r\n public PREPASS_SCREENSPACE_DEPTH = false;\r\n public PREPASS_SCREENSPACE_DEPTH_INDEX = -1;\r\n public PREPASS_NORMALIZED_VIEW_DEPTH = false;\r\n public PREPASS_NORMALIZED_VIEW_DEPTH_INDEX = -1;\r\n public PREPASS_NORMAL = false;\r\n public PREPASS_NORMAL_INDEX = -1;\r\n public PREPASS_NORMAL_WORLDSPACE = false;\r\n public PREPASS_WORLD_NORMAL = false;\r\n public PREPASS_WORLD_NORMAL_INDEX = -1;\r\n public PREPASS_POSITION = false;\r\n public PREPASS_POSITION_INDEX = -1;\r\n public PREPASS_LOCAL_POSITION = false;\r\n public PREPASS_LOCAL_POSITION_INDEX = -1;\r\n public PREPASS_VELOCITY = false;\r\n public PREPASS_VELOCITY_INDEX = -1;\r\n public PREPASS_VELOCITY_LINEAR = false;\r\n public PREPASS_VELOCITY_LINEAR_INDEX = -1;\r\n public PREPASS_REFLECTIVITY = false;\r\n public PREPASS_REFLECTIVITY_INDEX = -1;\r\n public PREPASS_OBJECT_ID = false;\r\n public PREPASS_OBJECT_ID_INDEX = -1;\r\n public PREPASS_OBJECT_ID_R8 = false;\r\n public SCENE_MRT_COUNT = 0;\r\n };\r\n}\r\n"]}
1
+ {"version":3,"file":"prepass.defines.js","sourceRoot":"","sources":["../../../../dev/core/src/Materials/prepass.defines.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAA+C,IAAW;IACzF,OAAO,KAAM,SAAQ,IAAI;QAAlB;;YACI,YAAO,GAAG,KAAK,CAAC;YAChB,kBAAa,GAAG,KAAK,CAAC;YACtB,wBAAmB,GAAG,CAAC,CAAC,CAAC;YACzB,8BAAyB,GAAG,KAAK,CAAC;YAClC,oCAA+B,GAAG,CAAC,CAAC,CAAC;YACrC,uBAAkB,GAAG,KAAK,CAAC;YAC3B,6BAAwB,GAAG,CAAC,CAAC,CAAC;YAC9B,mBAAc,GAAG,KAAK,CAAC;YACvB,yBAAoB,GAAG,CAAC,CAAC,CAAC;YAC1B,wBAAmB,GAAG,KAAK,CAAC;YAC5B,8BAAyB,GAAG,CAAC,CAAC,CAAC;YAC/B,kBAAa,GAAG,KAAK,CAAC;YACtB,wBAAmB,GAAG,CAAC,CAAC,CAAC;YACzB,8BAAyB,GAAG,KAAK,CAAC;YAClC,oCAA+B,GAAG,CAAC,CAAC,CAAC;YACrC,kCAA6B,GAAG,KAAK,CAAC;YACtC,wCAAmC,GAAG,CAAC,CAAC,CAAC;YACzC,mBAAc,GAAG,KAAK,CAAC;YACvB,yBAAoB,GAAG,CAAC,CAAC,CAAC;YAC1B,8BAAyB,GAAG,KAAK,CAAC;YAClC,yBAAoB,GAAG,KAAK,CAAC;YAC7B,+BAA0B,GAAG,CAAC,CAAC,CAAC;YAChC,qBAAgB,GAAG,KAAK,CAAC;YACzB,2BAAsB,GAAG,CAAC,CAAC,CAAC;YAC5B,2BAAsB,GAAG,KAAK,CAAC;YAC/B,iCAA4B,GAAG,CAAC,CAAC,CAAC;YAClC,qBAAgB,GAAG,KAAK,CAAC;YACzB,2BAAsB,GAAG,CAAC,CAAC,CAAC;YAC5B,4BAAuB,GAAG,KAAK,CAAC;YAChC,kCAA6B,GAAG,CAAC,CAAC,CAAC;YACnC,yBAAoB,GAAG,KAAK,CAAC;YAC7B,+BAA0B,GAAG,CAAC,CAAC,CAAC;YAChC,sBAAiB,GAAG,KAAK,CAAC;YAC1B,4BAAuB,GAAG,CAAC,CAAC,CAAC;YAC7B,yBAAoB,GAAG,KAAK,CAAC;YAC7B,2BAAsB,GAAG,KAAK,CAAC;YAC/B,iCAA4B,GAAG,CAAC,CAAC,CAAC;YAClC,oBAAe,GAAG,CAAC,CAAC;QAC/B,CAAC;KAAA,CAAC;AACN,CAAC","sourcesContent":["type PrepassDefinesMixinConstructor<T = {}> = new (...args: any[]) => T;\r\n\r\n/**\r\n * Mixin to add prepass defines to your material defines\r\n * @internal\r\n */\r\nexport function PrepassDefinesMixin<Tbase extends PrepassDefinesMixinConstructor>(base: Tbase) {\r\n return class extends base {\r\n public PREPASS = false;\r\n public PREPASS_COLOR = false;\r\n public PREPASS_COLOR_INDEX = -1;\r\n public PREPASS_IRRADIANCE_LEGACY = false;\r\n public PREPASS_IRRADIANCE_LEGACY_INDEX = -1;\r\n public PREPASS_IRRADIANCE = false;\r\n public PREPASS_IRRADIANCE_INDEX = -1;\r\n public PREPASS_ALBEDO = false;\r\n public PREPASS_ALBEDO_INDEX = -1;\r\n public PREPASS_ALBEDO_SQRT = false;\r\n public PREPASS_ALBEDO_SQRT_INDEX = -1;\r\n public PREPASS_DEPTH = false;\r\n public PREPASS_DEPTH_INDEX = -1;\r\n public PREPASS_SCREENSPACE_DEPTH = false;\r\n public PREPASS_SCREENSPACE_DEPTH_INDEX = -1;\r\n public PREPASS_NORMALIZED_VIEW_DEPTH = false;\r\n public PREPASS_NORMALIZED_VIEW_DEPTH_INDEX = -1;\r\n public PREPASS_NORMAL = false;\r\n public PREPASS_NORMAL_INDEX = -1;\r\n public PREPASS_NORMAL_WORLDSPACE = false;\r\n public PREPASS_WORLD_NORMAL = false;\r\n public PREPASS_WORLD_NORMAL_INDEX = -1;\r\n public PREPASS_POSITION = false;\r\n public PREPASS_POSITION_INDEX = -1;\r\n public PREPASS_LOCAL_POSITION = false;\r\n public PREPASS_LOCAL_POSITION_INDEX = -1;\r\n public PREPASS_VELOCITY = false;\r\n public PREPASS_VELOCITY_INDEX = -1;\r\n public PREPASS_VELOCITY_LINEAR = false;\r\n public PREPASS_VELOCITY_LINEAR_INDEX = -1;\r\n public PREPASS_REFLECTIVITY = false;\r\n public PREPASS_REFLECTIVITY_INDEX = -1;\r\n public PREPASS_OBJECT_ID = false;\r\n public PREPASS_OBJECT_ID_INDEX = -1;\r\n public PREPASS_OBJECT_ID_R8 = false;\r\n public PREPASS_MESH_BLEND_TAG = false;\r\n public PREPASS_MESH_BLEND_TAG_INDEX = -1;\r\n public SCENE_MRT_COUNT = 0;\r\n };\r\n}\r\n"]}
@@ -29,6 +29,7 @@ export * from "./drawWrapper.js";
29
29
  export * from "./materialPluginBase.pure.js";
30
30
  export * from "./materialPluginManager.pure.js";
31
31
  export * from "./materialPluginEvent.js";
32
+ export * from "./ditheredTileFadeMaterialPlugin.js";
32
33
  export * from "./material.detailMapConfiguration.js";
33
34
  export * from "./material.decalMapConfiguration.pure.js";
34
35
  export * from "./materialPluginFactoryExport.js";
@@ -38,7 +39,11 @@ export * from "./GreasedLine/greasedLineMaterialInterfaces.js";
38
39
  export * from "./GreasedLine/greasedLineMaterialDefaults.js";
39
40
  export * from "./meshDebugPluginMaterial.pure.js";
40
41
  export * from "./GaussianSplatting/gaussianSplattingMaterial.pure.js";
42
+ export * from "./GaussianSplatting/gaussianPointSplattingBlitMaterial.pure.js";
43
+ export * from "./GaussianSplatting/gaussianPointSplattingDepthBlitMaterial.pure.js";
41
44
  export * from "./GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js";
45
+ export * from "./GaussianSplatting/gaussianSplattingSizeMaterialPlugin.pure.js";
46
+ export * from "./GaussianSplatting/gaussianSplattingOverdrawMaterialPlugin.pure.js";
42
47
  export * from "./GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js";
43
48
  export * from "./GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.js";
44
49
  export * from "./materialHelper.functions.js";
package/Materials/pure.js CHANGED
@@ -30,6 +30,7 @@ export * from "./drawWrapper.js";
30
30
  export * from "./materialPluginBase.pure.js";
31
31
  export * from "./materialPluginManager.pure.js";
32
32
  export * from "./materialPluginEvent.js";
33
+ export * from "./ditheredTileFadeMaterialPlugin.js";
33
34
  export * from "./material.detailMapConfiguration.js";
34
35
  export * from "./material.decalMapConfiguration.pure.js";
35
36
  export * from "./materialPluginFactoryExport.js";
@@ -39,7 +40,11 @@ export * from "./GreasedLine/greasedLineMaterialInterfaces.js";
39
40
  export * from "./GreasedLine/greasedLineMaterialDefaults.js";
40
41
  export * from "./meshDebugPluginMaterial.pure.js";
41
42
  export * from "./GaussianSplatting/gaussianSplattingMaterial.pure.js";
43
+ export * from "./GaussianSplatting/gaussianPointSplattingBlitMaterial.pure.js";
44
+ export * from "./GaussianSplatting/gaussianPointSplattingDepthBlitMaterial.pure.js";
42
45
  export * from "./GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js";
46
+ export * from "./GaussianSplatting/gaussianSplattingSizeMaterialPlugin.pure.js";
47
+ export * from "./GaussianSplatting/gaussianSplattingOverdrawMaterialPlugin.pure.js";
43
48
  export * from "./GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js";
44
49
  export * from "./GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.js";
45
50
  export * from "./materialHelper.functions.js";
@@ -1 +1 @@
1
- {"version":3,"file":"pure.js","sourceRoot":"","sources":["../../../../dev/core/src/Materials/pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,6DAA6D;AAC7D,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qCAAqC,CAAC;AACpD,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8CAA8C,CAAC;AAC7D,cAAc,yCAAyC,CAAC;AACxD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oDAAoD,CAAC;AACnE,cAAc,oEAAoE,CAAC;AACnF,cAAc,oEAAoE,CAAC;AACnF,cAAc,+DAA+D,CAAC;AAC9E,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oCAAoC,CAAC;AACnD,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC","sourcesContent":["/** Pure barrel — re-exports only side-effect-free modules */\n/* eslint-disable @typescript-eslint/no-restricted-imports */\nexport * from \"./Background/pure\";\nexport * from \"./colorCurves.pure\";\nexport * from \"./iEffectFallbacks\";\nexport * from \"./effectFallbacks\";\nexport * from \"./effect.pure\";\nexport * from \"./fresnelParameters.pure\";\nexport * from \"./imageProcessing\";\nexport * from \"./imageProcessingConfiguration.pure\";\nexport * from \"./material.pure\";\nexport * from \"./materialDefines\";\nexport * from \"./clipPlaneMaterialHelper\";\nexport * from \"./materialHelper\";\nexport * from \"./multiMaterial.pure\";\nexport * from \"./Occlusion/pure\";\nexport * from \"./PBR/pure\";\nexport * from \"./pushMaterial\";\nexport * from \"./shaderLanguage\";\nexport * from \"./shaderMaterial.pure\";\nexport * from \"./standardMaterial.pure\";\nexport * from \"./Textures/pure\";\nexport * from \"./uniformBuffer\";\nexport * from \"./materialFlags\";\nexport * from \"./Node/pure\";\nexport * from \"./effectRenderer.pure\";\nexport * from \"./shadowDepthWrapper\";\nexport * from \"./drawWrapper.functions\";\nexport * from \"./drawWrapper\";\nexport * from \"./materialPluginBase.pure\";\nexport * from \"./materialPluginManager.pure\";\nexport * from \"./materialPluginEvent\";\nexport * from \"./material.detailMapConfiguration\";\nexport * from \"./material.decalMapConfiguration.pure\";\nexport * from \"./materialPluginFactoryExport\";\nexport * from \"./GreasedLine/greasedLinePluginMaterial.pure\";\nexport * from \"./GreasedLine/greasedLineSimpleMaterial\";\nexport * from \"./GreasedLine/greasedLineMaterialInterfaces\";\nexport * from \"./GreasedLine/greasedLineMaterialDefaults\";\nexport * from \"./meshDebugPluginMaterial.pure\";\nexport * from \"./GaussianSplatting/gaussianSplattingMaterial.pure\";\nexport * from \"./GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure\";\nexport * from \"./GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure\";\nexport * from \"./GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure\";\nexport * from \"./materialHelper.functions\";\nexport * from \"./materialHelper.geometryrendering\";\nexport * from \"./materialStencilState\";\nexport * from \"./uv.defines\";\nexport * from \"./floatingOriginMatrixOverrides\";\nexport * from \"./vertexPullingHelper.functions\";\nexport * from \"./effect.webgl.functions.pure\";\nexport * from \"./standardMaterial.decalMap.pure\";\nexport * from \"./GaussianSplatting/pure\";\nexport * from \"./GreasedLine/pure\";\n"]}
1
+ {"version":3,"file":"pure.js","sourceRoot":"","sources":["../../../../dev/core/src/Materials/pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,6DAA6D;AAC7D,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qCAAqC,CAAC;AACpD,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,kCAAkC,CAAC;AACjD,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8CAA8C,CAAC;AAC7D,cAAc,yCAAyC,CAAC;AACxD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oDAAoD,CAAC;AACnE,cAAc,6DAA6D,CAAC;AAC5E,cAAc,kEAAkE,CAAC;AACjF,cAAc,oEAAoE,CAAC;AACnF,cAAc,8DAA8D,CAAC;AAC7E,cAAc,kEAAkE,CAAC;AACjF,cAAc,oEAAoE,CAAC;AACnF,cAAc,+DAA+D,CAAC;AAC9E,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oCAAoC,CAAC;AACnD,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC","sourcesContent":["/** Pure barrel — re-exports only side-effect-free modules */\n/* eslint-disable @typescript-eslint/no-restricted-imports */\nexport * from \"./Background/pure\";\nexport * from \"./colorCurves.pure\";\nexport * from \"./iEffectFallbacks\";\nexport * from \"./effectFallbacks\";\nexport * from \"./effect.pure\";\nexport * from \"./fresnelParameters.pure\";\nexport * from \"./imageProcessing\";\nexport * from \"./imageProcessingConfiguration.pure\";\nexport * from \"./material.pure\";\nexport * from \"./materialDefines\";\nexport * from \"./clipPlaneMaterialHelper\";\nexport * from \"./materialHelper\";\nexport * from \"./multiMaterial.pure\";\nexport * from \"./Occlusion/pure\";\nexport * from \"./PBR/pure\";\nexport * from \"./pushMaterial\";\nexport * from \"./shaderLanguage\";\nexport * from \"./shaderMaterial.pure\";\nexport * from \"./standardMaterial.pure\";\nexport * from \"./Textures/pure\";\nexport * from \"./uniformBuffer\";\nexport * from \"./materialFlags\";\nexport * from \"./Node/pure\";\nexport * from \"./effectRenderer.pure\";\nexport * from \"./shadowDepthWrapper\";\nexport * from \"./drawWrapper.functions\";\nexport * from \"./drawWrapper\";\nexport * from \"./materialPluginBase.pure\";\nexport * from \"./materialPluginManager.pure\";\nexport * from \"./materialPluginEvent\";\nexport * from \"./ditheredTileFadeMaterialPlugin\";\nexport * from \"./material.detailMapConfiguration\";\nexport * from \"./material.decalMapConfiguration.pure\";\nexport * from \"./materialPluginFactoryExport\";\nexport * from \"./GreasedLine/greasedLinePluginMaterial.pure\";\nexport * from \"./GreasedLine/greasedLineSimpleMaterial\";\nexport * from \"./GreasedLine/greasedLineMaterialInterfaces\";\nexport * from \"./GreasedLine/greasedLineMaterialDefaults\";\nexport * from \"./meshDebugPluginMaterial.pure\";\nexport * from \"./GaussianSplatting/gaussianSplattingMaterial.pure\";\nexport * from \"./GaussianSplatting/gaussianPointSplattingBlitMaterial.pure\";\nexport * from \"./GaussianSplatting/gaussianPointSplattingDepthBlitMaterial.pure\";\nexport * from \"./GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure\";\nexport * from \"./GaussianSplatting/gaussianSplattingSizeMaterialPlugin.pure\";\nexport * from \"./GaussianSplatting/gaussianSplattingOverdrawMaterialPlugin.pure\";\nexport * from \"./GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure\";\nexport * from \"./GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure\";\nexport * from \"./materialHelper.functions\";\nexport * from \"./materialHelper.geometryrendering\";\nexport * from \"./materialStencilState\";\nexport * from \"./uv.defines\";\nexport * from \"./floatingOriginMatrixOverrides\";\nexport * from \"./vertexPullingHelper.functions\";\nexport * from \"./effect.webgl.functions.pure\";\nexport * from \"./standardMaterial.decalMap.pure\";\nexport * from \"./GaussianSplatting/pure\";\nexport * from \"./GreasedLine/pure\";\n"]}
@@ -53,6 +53,8 @@ declare const StandardMaterialDefinesBase_base: {
53
53
  PREPASS_OBJECT_ID: boolean;
54
54
  PREPASS_OBJECT_ID_INDEX: number;
55
55
  PREPASS_OBJECT_ID_R8: boolean;
56
+ PREPASS_MESH_BLEND_TAG: boolean;
57
+ PREPASS_MESH_BLEND_TAG_INDEX: number;
56
58
  SCENE_MRT_COUNT: number;
57
59
  };
58
60
  } & {
@@ -171,6 +173,7 @@ export declare class StandardMaterialDefines extends StandardMaterialDefines_bas
171
173
  REFRACTIONMAP_3D: boolean;
172
174
  REFLECTIONOVERALPHA: boolean;
173
175
  TWOSIDEDLIGHTING: boolean;
176
+ SKIP_OUT_OF_RANGE_LIGHTING: boolean;
174
177
  SHADOWFLOAT: boolean;
175
178
  MORPHTARGETS: boolean;
176
179
  MORPHTARGETS_POSITION: boolean;
@@ -470,6 +473,13 @@ export declare class StandardMaterial extends StandardMaterialBase {
470
473
  * Defines the maximum number of lights that can be used in the material
471
474
  */
472
475
  accessor maxSimultaneousLights: number;
476
+ private _skipOutOfRangeLighting;
477
+ /**
478
+ * If set to true, point and spot lights skip their lighting computations for fragments beyond the light range, where they
479
+ * contribute nothing. Only lights with a finite range are affected. The extra per-fragment test costs time when most fragments
480
+ * are within range of most lights, so only enable it for sparse lighting measured on the target devices (default: false).
481
+ */
482
+ accessor skipOutOfRangeLighting: boolean;
473
483
  private _invertNormalMapX;
474
484
  /**
475
485
  * If sets to true, x component of normal map value will invert (x = 1.0 - x).