@onerjs/core 8.53.5 → 8.53.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (841) hide show
  1. package/Animations/animationGroup.d.ts +0 -1
  2. package/Animations/animationGroup.js +0 -1
  3. package/Animations/animationGroup.js.map +1 -1
  4. package/Animations/animationGroup.pure.js +2 -0
  5. package/Animations/animationGroup.pure.js.map +1 -1
  6. package/Animations/runtimeAnimation.js +11 -0
  7. package/Animations/runtimeAnimation.js.map +1 -1
  8. package/Audio/audioSceneComponent.pure.js +1 -1
  9. package/AudioV2/abstractAudio/abstractSound.d.ts +2 -1
  10. package/AudioV2/abstractAudio/abstractSound.js +7 -2
  11. package/AudioV2/abstractAudio/abstractSound.js.map +1 -1
  12. package/AudioV2/abstractAudio/abstractSoundInstance.d.ts +3 -1
  13. package/AudioV2/abstractAudio/abstractSoundInstance.js.map +1 -1
  14. package/AudioV2/abstractAudio/staticSound.d.ts +6 -0
  15. package/AudioV2/abstractAudio/staticSound.js +17 -1
  16. package/AudioV2/abstractAudio/staticSound.js.map +1 -1
  17. package/AudioV2/abstractAudio/staticSoundInstance.d.ts +4 -2
  18. package/AudioV2/abstractAudio/staticSoundInstance.js.map +1 -1
  19. package/AudioV2/abstractAudio/streamingSound.d.ts +6 -0
  20. package/AudioV2/abstractAudio/streamingSound.js +9 -1
  21. package/AudioV2/abstractAudio/streamingSound.js.map +1 -1
  22. package/AudioV2/webAudio/webAudioStaticSound.d.ts +7 -1
  23. package/AudioV2/webAudio/webAudioStaticSound.js +56 -8
  24. package/AudioV2/webAudio/webAudioStaticSound.js.map +1 -1
  25. package/AudioV2/webAudio/webAudioStreamingSound.d.ts +3 -1
  26. package/AudioV2/webAudio/webAudioStreamingSound.js +16 -4
  27. package/AudioV2/webAudio/webAudioStreamingSound.js.map +1 -1
  28. package/BakedVertexAnimation/bakedVertexAnimationManager.d.ts +2 -2
  29. package/BakedVertexAnimation/bakedVertexAnimationManager.js +151 -121
  30. package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -1
  31. package/Behaviors/Cameras/interpolatingBehavior.d.ts +17 -2
  32. package/Behaviors/Cameras/interpolatingBehavior.js +53 -23
  33. package/Behaviors/Cameras/interpolatingBehavior.js.map +1 -1
  34. package/Bones/bone.pure.js +3 -3
  35. package/Buffers/buffer.pure.js +0 -12
  36. package/Buffers/buffer.pure.js.map +1 -1
  37. package/Cameras/Inputs/BaseCameraMouseWheelInput.js +141 -126
  38. package/Cameras/Inputs/BaseCameraMouseWheelInput.js.map +1 -1
  39. package/Cameras/Inputs/BaseCameraPointersInput.d.ts +2 -1
  40. package/Cameras/Inputs/BaseCameraPointersInput.js +290 -277
  41. package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
  42. package/Cameras/Inputs/arcRotateCameraGamepadInput.js +115 -102
  43. package/Cameras/Inputs/arcRotateCameraGamepadInput.js.map +1 -1
  44. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.d.ts +3 -0
  45. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js +334 -273
  46. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js.map +1 -1
  47. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js +273 -258
  48. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js.map +1 -1
  49. package/Cameras/Inputs/arcRotateCameraPointersInput.js +237 -213
  50. package/Cameras/Inputs/arcRotateCameraPointersInput.js.map +1 -1
  51. package/Cameras/Inputs/flyCameraKeyboardInput.js +199 -168
  52. package/Cameras/Inputs/flyCameraKeyboardInput.js.map +1 -1
  53. package/Cameras/Inputs/flyCameraMouseInput.js +243 -229
  54. package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
  55. package/Cameras/Inputs/followCameraKeyboardMoveInput.js +311 -266
  56. package/Cameras/Inputs/followCameraKeyboardMoveInput.js.map +1 -1
  57. package/Cameras/Inputs/followCameraMouseWheelInput.js +139 -119
  58. package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
  59. package/Cameras/Inputs/followCameraPointersInput.js +239 -203
  60. package/Cameras/Inputs/followCameraPointersInput.js.map +1 -1
  61. package/Cameras/Inputs/freeCameraGamepadInput.js +127 -114
  62. package/Cameras/Inputs/freeCameraGamepadInput.js.map +1 -1
  63. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js +278 -244
  64. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js.map +1 -1
  65. package/Cameras/Inputs/freeCameraMouseInput.js +216 -202
  66. package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
  67. package/Cameras/Inputs/freeCameraMouseWheelInput.js +368 -353
  68. package/Cameras/Inputs/freeCameraMouseWheelInput.js.map +1 -1
  69. package/Cameras/Inputs/freeCameraTouchInput.js +185 -172
  70. package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
  71. package/Cameras/Inputs/geospatialCameraKeyboardInput.d.ts +2 -0
  72. package/Cameras/Inputs/geospatialCameraKeyboardInput.js +291 -246
  73. package/Cameras/Inputs/geospatialCameraKeyboardInput.js.map +1 -1
  74. package/Cameras/Inputs/geospatialCameraPointersInput.d.ts +11 -1
  75. package/Cameras/Inputs/geospatialCameraPointersInput.js +18 -2
  76. package/Cameras/Inputs/geospatialCameraPointersInput.js.map +1 -1
  77. package/Cameras/Inputs/orbitCameraPointersInput.js +112 -96
  78. package/Cameras/Inputs/orbitCameraPointersInput.js.map +1 -1
  79. package/Cameras/VR/vrExperienceHelper.d.ts +0 -2
  80. package/Cameras/VR/vrExperienceHelper.js +0 -2
  81. package/Cameras/VR/vrExperienceHelper.js.map +1 -1
  82. package/Cameras/VR/vrExperienceHelper.pure.js +5 -0
  83. package/Cameras/VR/vrExperienceHelper.pure.js.map +1 -1
  84. package/Cameras/arcRotateCamera.pure.js +1559 -1479
  85. package/Cameras/arcRotateCamera.pure.js.map +1 -1
  86. package/Cameras/camera.pure.js +1225 -1178
  87. package/Cameras/camera.pure.js.map +1 -1
  88. package/Cameras/flyCamera.pure.js +369 -351
  89. package/Cameras/flyCamera.pure.js.map +1 -1
  90. package/Cameras/followCamera.pure.js +229 -192
  91. package/Cameras/followCamera.pure.js.map +1 -1
  92. package/Cameras/freeCamera.pure.js +373 -351
  93. package/Cameras/freeCamera.pure.js.map +1 -1
  94. package/Cameras/geospatialCamera.pure.d.ts +30 -7
  95. package/Cameras/geospatialCamera.pure.js +502 -457
  96. package/Cameras/geospatialCamera.pure.js.map +1 -1
  97. package/Cameras/geospatialCameraMovement.js +2 -2
  98. package/Cameras/geospatialCameraMovement.js.map +1 -1
  99. package/Cameras/targetCamera.pure.d.ts +7 -0
  100. package/Cameras/targetCamera.pure.js +550 -509
  101. package/Cameras/targetCamera.pure.js.map +1 -1
  102. package/Cameras/universalCamera.pure.js +98 -85
  103. package/Cameras/universalCamera.pure.js.map +1 -1
  104. package/Collisions/gpuPicker.d.ts +111 -4
  105. package/Collisions/gpuPicker.js +696 -119
  106. package/Collisions/gpuPicker.js.map +1 -1
  107. package/Compute/computeShader.pure.js +372 -355
  108. package/Compute/computeShader.pure.js.map +1 -1
  109. package/Culling/Helper/transformFeedbackBoundingHelper.pure.js +2 -2
  110. package/Decorators/nodeDecorator.d.ts +11 -1
  111. package/Decorators/nodeDecorator.js +43 -6
  112. package/Decorators/nodeDecorator.js.map +1 -1
  113. package/Engines/AbstractEngine/abstractEngine.loadFile.pure.js +8 -0
  114. package/Engines/AbstractEngine/abstractEngine.loadFile.pure.js.map +1 -1
  115. package/Engines/Native/nativeHelpers.js +15 -0
  116. package/Engines/Native/nativeHelpers.js.map +1 -1
  117. package/Engines/Native/nativeInterfaces.d.ts +7 -2
  118. package/Engines/Native/nativeInterfaces.js.map +1 -1
  119. package/Engines/Native/nativeRenderTargetWrapper.d.ts +5 -0
  120. package/Engines/Native/nativeRenderTargetWrapper.js +35 -1
  121. package/Engines/Native/nativeRenderTargetWrapper.js.map +1 -1
  122. package/Engines/Processors/shaderProcessor.js +5 -3
  123. package/Engines/Processors/shaderProcessor.js.map +1 -1
  124. package/Engines/WebGPU/Extensions/engine.videoTexture.pure.js +16 -3
  125. package/Engines/WebGPU/Extensions/engine.videoTexture.pure.js.map +1 -1
  126. package/Engines/WebGPU/webgpuClearQuad.pure.js +7 -1
  127. package/Engines/WebGPU/webgpuClearQuad.pure.js.map +1 -1
  128. package/Engines/abstractEngine.functions.d.ts +8 -2
  129. package/Engines/abstractEngine.functions.js +12 -4
  130. package/Engines/abstractEngine.functions.js.map +1 -1
  131. package/Engines/abstractEngine.pure.d.ts +20 -1
  132. package/Engines/abstractEngine.pure.js +21 -134
  133. package/Engines/abstractEngine.pure.js.map +1 -1
  134. package/Engines/engine.d.ts +208 -0
  135. package/Engines/engine.pure.js +0 -15
  136. package/Engines/engine.pure.js.map +1 -1
  137. package/Engines/nullEngine.pure.d.ts +66 -0
  138. package/Engines/nullEngine.pure.js +97 -0
  139. package/Engines/nullEngine.pure.js.map +1 -1
  140. package/Engines/thinEngine.pure.d.ts +0 -13
  141. package/Engines/thinEngine.pure.js +4 -23
  142. package/Engines/thinEngine.pure.js.map +1 -1
  143. package/Engines/thinNativeEngine.d.ts +0 -1
  144. package/Engines/thinNativeEngine.js +0 -1
  145. package/Engines/thinNativeEngine.js.map +1 -1
  146. package/Engines/thinNativeEngine.pure.d.ts +27 -0
  147. package/Engines/thinNativeEngine.pure.js +383 -17
  148. package/Engines/thinNativeEngine.pure.js.map +1 -1
  149. package/Engines/webgpuEngine.d.ts +1 -0
  150. package/Engines/webgpuEngine.js +1 -0
  151. package/Engines/webgpuEngine.js.map +1 -1
  152. package/Engines/webgpuEngine.pure.d.ts +9 -0
  153. package/Engines/webgpuEngine.pure.js +7 -0
  154. package/Engines/webgpuEngine.pure.js.map +1 -1
  155. package/FlowGraph/flowGraph.js +9 -0
  156. package/FlowGraph/flowGraph.js.map +1 -1
  157. package/FlowGraph/flowGraphContext.js +597 -584
  158. package/FlowGraph/flowGraphContext.js.map +1 -1
  159. package/FlowGraph/flowGraphDataConnection.pure.d.ts +14 -0
  160. package/FlowGraph/flowGraphDataConnection.pure.js +38 -1
  161. package/FlowGraph/flowGraphDataConnection.pure.js.map +1 -1
  162. package/FlowGraph/serialization.d.ts +11 -0
  163. package/FlowGraph/serialization.js +11 -1
  164. package/FlowGraph/serialization.js.map +1 -1
  165. package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.pure.js +182 -170
  166. package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.pure.js.map +1 -1
  167. package/FrameGraph/Node/Blocks/Layers/highlightLayerBlock.pure.js +196 -184
  168. package/FrameGraph/Node/Blocks/Layers/highlightLayerBlock.pure.js.map +1 -1
  169. package/FrameGraph/Node/Blocks/Layers/selectionOutlineLayerBlock.pure.js +222 -210
  170. package/FrameGraph/Node/Blocks/Layers/selectionOutlineLayerBlock.pure.js.map +1 -1
  171. package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js +123 -111
  172. package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js.map +1 -1
  173. package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js +158 -146
  174. package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js.map +1 -1
  175. package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.pure.js +63 -51
  176. package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.pure.js.map +1 -1
  177. package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.pure.js +122 -110
  178. package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.pure.js.map +1 -1
  179. package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.pure.js +76 -64
  180. package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.pure.js.map +1 -1
  181. package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.pure.js +89 -77
  182. package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.pure.js.map +1 -1
  183. package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.pure.js +134 -122
  184. package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.pure.js.map +1 -1
  185. package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.pure.js +58 -46
  186. package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.pure.js.map +1 -1
  187. package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.pure.js +107 -95
  188. package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.pure.js.map +1 -1
  189. package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.pure.js +181 -169
  190. package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.pure.js.map +1 -1
  191. package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.pure.js +63 -51
  192. package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.pure.js.map +1 -1
  193. package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.pure.js +63 -51
  194. package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.pure.js.map +1 -1
  195. package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.pure.js +76 -64
  196. package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.pure.js.map +1 -1
  197. package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.pure.js +246 -234
  198. package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.pure.js.map +1 -1
  199. package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.pure.js +108 -96
  200. package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.pure.js.map +1 -1
  201. package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.pure.js +87 -75
  202. package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.pure.js.map +1 -1
  203. package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.pure.js +76 -64
  204. package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.pure.js.map +1 -1
  205. package/FrameGraph/Node/Blocks/PostProcesses/ssao2PostProcessBlock.pure.js +313 -301
  206. package/FrameGraph/Node/Blocks/PostProcesses/ssao2PostProcessBlock.pure.js.map +1 -1
  207. package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.pure.js +502 -490
  208. package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.pure.js.map +1 -1
  209. package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.pure.js +147 -135
  210. package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.pure.js.map +1 -1
  211. package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.pure.js +90 -78
  212. package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.pure.js.map +1 -1
  213. package/FrameGraph/Node/Blocks/PostProcesses/volumetricLightingBlock.pure.js +179 -167
  214. package/FrameGraph/Node/Blocks/PostProcesses/volumetricLightingBlock.pure.js.map +1 -1
  215. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +462 -451
  216. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
  217. package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js +265 -253
  218. package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js.map +1 -1
  219. package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.pure.js +204 -192
  220. package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.pure.js.map +1 -1
  221. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js +611 -550
  222. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js.map +1 -1
  223. package/FrameGraph/Node/Blocks/Rendering/iblShadowsRendererBlock.pure.js +320 -308
  224. package/FrameGraph/Node/Blocks/Rendering/iblShadowsRendererBlock.pure.js.map +1 -1
  225. package/FrameGraph/Node/Blocks/Rendering/utilityLayerRendererBlock.pure.js +87 -75
  226. package/FrameGraph/Node/Blocks/Rendering/utilityLayerRendererBlock.pure.js.map +1 -1
  227. package/FrameGraph/Node/Blocks/Textures/clearBlock.pure.js +154 -142
  228. package/FrameGraph/Node/Blocks/Textures/clearBlock.pure.js.map +1 -1
  229. package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.pure.js +150 -138
  230. package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.pure.js.map +1 -1
  231. package/FrameGraph/Node/Blocks/inputBlock.pure.js +270 -256
  232. package/FrameGraph/Node/Blocks/inputBlock.pure.js.map +1 -1
  233. package/FrameGraph/Node/Blocks/lightingVolumeBlock.pure.js +95 -83
  234. package/FrameGraph/Node/Blocks/lightingVolumeBlock.pure.js.map +1 -1
  235. package/FrameGraph/Node/nodeRenderGraph.js +715 -693
  236. package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
  237. package/FrameGraph/Node/nodeRenderGraphBlock.js +548 -533
  238. package/FrameGraph/Node/nodeRenderGraphBlock.js.map +1 -1
  239. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.d.ts +2 -2
  240. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js +43 -51
  241. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js.map +1 -1
  242. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.d.ts +0 -1
  243. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.js +0 -1
  244. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.js.map +1 -1
  245. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.d.ts +0 -1
  246. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.js +66 -35
  247. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.js.map +1 -1
  248. package/Helpers/environmentHelper.js +2 -2
  249. package/Helpers/environmentHelper.js.map +1 -1
  250. package/Layers/effectLayer.js +529 -519
  251. package/Layers/effectLayer.js.map +1 -1
  252. package/Layers/glowLayer.pure.js +428 -413
  253. package/Layers/glowLayer.pure.js.map +1 -1
  254. package/Layers/highlightLayer.pure.js +473 -458
  255. package/Layers/highlightLayer.pure.js.map +1 -1
  256. package/Layers/selectionOutlineLayer.pure.js +360 -345
  257. package/Layers/selectionOutlineLayer.pure.js.map +1 -1
  258. package/Lights/Clustered/clusteredLightContainer.pure.d.ts +1 -1
  259. package/Lights/Clustered/clusteredLightContainer.pure.js +583 -558
  260. package/Lights/Clustered/clusteredLightContainer.pure.js.map +1 -1
  261. package/Lights/Shadows/shadowGenerator.js +6 -1
  262. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  263. package/Lights/areaLight.pure.js +61 -39
  264. package/Lights/areaLight.pure.js.map +1 -1
  265. package/Lights/directionalLight.pure.js +308 -284
  266. package/Lights/directionalLight.pure.js.map +1 -1
  267. package/Lights/hemisphericLight.pure.js +123 -104
  268. package/Lights/hemisphericLight.pure.js.map +1 -1
  269. package/Lights/light.d.ts +5 -3
  270. package/Lights/light.js +869 -827
  271. package/Lights/light.js.map +1 -1
  272. package/Lights/pointLight.pure.js +185 -174
  273. package/Lights/pointLight.pure.js.map +1 -1
  274. package/Lights/rectAreaLight.pure.d.ts +17 -0
  275. package/Lights/rectAreaLight.pure.js +238 -159
  276. package/Lights/rectAreaLight.pure.js.map +1 -1
  277. package/Lights/shadowLight.js +280 -268
  278. package/Lights/shadowLight.js.map +1 -1
  279. package/Lights/spotLight.pure.js +460 -427
  280. package/Lights/spotLight.pure.js.map +1 -1
  281. package/Loading/Plugins/babylonFileLoader.pure.js +17 -5
  282. package/Loading/Plugins/babylonFileLoader.pure.js.map +1 -1
  283. package/Loading/sceneLoader.d.ts +5 -1
  284. package/Loading/sceneLoader.js +299 -402
  285. package/Loading/sceneLoader.js.map +1 -1
  286. package/Materials/Background/backgroundMaterial.pure.d.ts +18 -18
  287. package/Materials/Background/backgroundMaterial.pure.js +949 -794
  288. package/Materials/Background/backgroundMaterial.pure.js.map +1 -1
  289. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.d.ts +15 -0
  290. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js +34 -1
  291. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js.map +1 -1
  292. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.d.ts +9 -0
  293. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js +26 -2
  294. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js.map +1 -1
  295. package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.d.ts +2 -1
  296. package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js +169 -149
  297. package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js.map +1 -1
  298. package/Materials/Node/Blocks/Dual/imageSourceBlock.pure.js +1 -1
  299. package/Materials/Node/Blocks/Dual/lightBlock.pure.js +442 -429
  300. package/Materials/Node/Blocks/Dual/lightBlock.pure.js.map +1 -1
  301. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.pure.js +396 -383
  302. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.pure.js.map +1 -1
  303. package/Materials/Node/Blocks/Dual/sceneDepthBlock.pure.js +237 -220
  304. package/Materials/Node/Blocks/Dual/sceneDepthBlock.pure.js.map +1 -1
  305. package/Materials/Node/Blocks/Dual/textureBlock.pure.js +1 -1
  306. package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.pure.js +150 -133
  307. package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.pure.js.map +1 -1
  308. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js +265 -250
  309. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js.map +1 -1
  310. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.pure.js +159 -142
  311. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.pure.js.map +1 -1
  312. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.pure.js +214 -201
  313. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.pure.js.map +1 -1
  314. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.pure.js +419 -400
  315. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.pure.js.map +1 -1
  316. package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js +3 -1
  317. package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js.map +1 -1
  318. package/Materials/Node/Blocks/PBR/clearCoatBlock.pure.js +302 -289
  319. package/Materials/Node/Blocks/PBR/clearCoatBlock.pure.js.map +1 -1
  320. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js +1327 -1272
  321. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js.map +1 -1
  322. package/Materials/Node/Blocks/PBR/reflectionBlock.pure.js +352 -337
  323. package/Materials/Node/Blocks/PBR/reflectionBlock.pure.js.map +1 -1
  324. package/Materials/Node/Blocks/PBR/refractionBlock.pure.js +297 -277
  325. package/Materials/Node/Blocks/PBR/refractionBlock.pure.js.map +1 -1
  326. package/Materials/Node/Blocks/PBR/sheenBlock.pure.js +146 -131
  327. package/Materials/Node/Blocks/PBR/sheenBlock.pure.js.map +1 -1
  328. package/Materials/Node/Blocks/PBR/subSurfaceBlock.pure.js +158 -145
  329. package/Materials/Node/Blocks/PBR/subSurfaceBlock.pure.js.map +1 -1
  330. package/Materials/Node/Blocks/clampBlock.pure.js +92 -77
  331. package/Materials/Node/Blocks/clampBlock.pure.js.map +1 -1
  332. package/Materials/Node/Blocks/cloudBlock.pure.js +145 -132
  333. package/Materials/Node/Blocks/cloudBlock.pure.js.map +1 -1
  334. package/Materials/Node/Blocks/conditionalBlock.pure.js +182 -169
  335. package/Materials/Node/Blocks/conditionalBlock.pure.js.map +1 -1
  336. package/Materials/Node/Blocks/curveBlock.pure.js +259 -246
  337. package/Materials/Node/Blocks/curveBlock.pure.js.map +1 -1
  338. package/Materials/Node/Blocks/debugBlock.pure.js +119 -106
  339. package/Materials/Node/Blocks/debugBlock.pure.js.map +1 -1
  340. package/Materials/Node/Blocks/loopBlock.pure.js +123 -110
  341. package/Materials/Node/Blocks/loopBlock.pure.js.map +1 -1
  342. package/Materials/Node/Blocks/meshAttributeExistsBlock.pure.js +185 -172
  343. package/Materials/Node/Blocks/meshAttributeExistsBlock.pure.js.map +1 -1
  344. package/Materials/Node/Blocks/remapBlock.pure.js +127 -112
  345. package/Materials/Node/Blocks/remapBlock.pure.js.map +1 -1
  346. package/Materials/Node/Blocks/transformBlock.pure.js +196 -185
  347. package/Materials/Node/Blocks/transformBlock.pure.js.map +1 -1
  348. package/Materials/Node/Blocks/triPlanarBlock.pure.js +451 -438
  349. package/Materials/Node/Blocks/triPlanarBlock.pure.js.map +1 -1
  350. package/Materials/Node/Blocks/trigonometryBlock.pure.js +184 -171
  351. package/Materials/Node/Blocks/trigonometryBlock.pure.js.map +1 -1
  352. package/Materials/Node/Blocks/waveBlock.pure.js +97 -84
  353. package/Materials/Node/Blocks/waveBlock.pure.js.map +1 -1
  354. package/Materials/Node/Blocks/worleyNoise3DBlock.pure.js +276 -263
  355. package/Materials/Node/Blocks/worleyNoise3DBlock.pure.js.map +1 -1
  356. package/Materials/Node/nodeMaterial.pure.js +1765 -1737
  357. package/Materials/Node/nodeMaterial.pure.js.map +1 -1
  358. package/Materials/Node/nodeMaterialBuildState.d.ts +3 -3
  359. package/Materials/PBR/openpbrMaterial.pure.d.ts +102 -102
  360. package/Materials/PBR/openpbrMaterial.pure.js +3115 -2243
  361. package/Materials/PBR/openpbrMaterial.pure.js.map +1 -1
  362. package/Materials/PBR/pbrAnisotropicConfiguration.d.ts +3 -3
  363. package/Materials/PBR/pbrAnisotropicConfiguration.js +255 -227
  364. package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
  365. package/Materials/PBR/pbrBRDFConfiguration.d.ts +9 -9
  366. package/Materials/PBR/pbrBRDFConfiguration.js +203 -155
  367. package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
  368. package/Materials/PBR/pbrBaseMaterial.pure.d.ts +1 -1
  369. package/Materials/PBR/pbrBaseMaterial.pure.js +1751 -1736
  370. package/Materials/PBR/pbrBaseMaterial.pure.js.map +1 -1
  371. package/Materials/PBR/pbrBaseSimpleMaterial.d.ts +13 -13
  372. package/Materials/PBR/pbrBaseSimpleMaterial.js +205 -117
  373. package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
  374. package/Materials/PBR/pbrClearCoatConfiguration.d.ts +9 -9
  375. package/Materials/PBR/pbrClearCoatConfiguration.js +464 -406
  376. package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
  377. package/Materials/PBR/pbrIridescenceConfiguration.d.ts +3 -3
  378. package/Materials/PBR/pbrIridescenceConfiguration.js +271 -239
  379. package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -1
  380. package/Materials/PBR/pbrMaterial.pure.d.ts +66 -66
  381. package/Materials/PBR/pbrMaterial.pure.js +1041 -685
  382. package/Materials/PBR/pbrMaterial.pure.js.map +1 -1
  383. package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.d.ts +5 -5
  384. package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.js +176 -115
  385. package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.js.map +1 -1
  386. package/Materials/PBR/pbrSheenConfiguration.d.ts +7 -7
  387. package/Materials/PBR/pbrSheenConfiguration.js +314 -270
  388. package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
  389. package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.d.ts +5 -5
  390. package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.js +172 -117
  391. package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.js.map +1 -1
  392. package/Materials/PBR/pbrSubSurfaceConfiguration.d.ts +16 -16
  393. package/Materials/PBR/pbrSubSurfaceConfiguration.js +864 -764
  394. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  395. package/Materials/Textures/HTML/htmlInCanvasPolyfill.d.ts +43 -0
  396. package/Materials/Textures/HTML/htmlInCanvasPolyfill.js +64 -0
  397. package/Materials/Textures/HTML/htmlInCanvasPolyfill.js.map +1 -0
  398. package/Materials/Textures/HTML/htmlInteractionManager.d.ts +69 -0
  399. package/Materials/Textures/HTML/htmlInteractionManager.js +130 -0
  400. package/Materials/Textures/HTML/htmlInteractionManager.js.map +1 -0
  401. package/Materials/Textures/HTML/htmlRaycastInteractionManager.d.ts +84 -0
  402. package/Materials/Textures/HTML/htmlRaycastInteractionManager.js +246 -0
  403. package/Materials/Textures/HTML/htmlRaycastInteractionManager.js.map +1 -0
  404. package/Materials/Textures/HTML/htmlTexture.d.ts +148 -0
  405. package/Materials/Textures/HTML/htmlTexture.js +455 -0
  406. package/Materials/Textures/HTML/htmlTexture.js.map +1 -0
  407. package/Materials/Textures/HTML/index.d.ts +4 -0
  408. package/Materials/Textures/HTML/index.js +5 -0
  409. package/Materials/Textures/HTML/index.js.map +1 -0
  410. package/Materials/Textures/HTML/pure.d.ts +5 -0
  411. package/Materials/Textures/HTML/pure.js +6 -0
  412. package/Materials/Textures/HTML/pure.js.map +1 -0
  413. package/Materials/Textures/Procedurals/proceduralTexture.pure.js +671 -643
  414. package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
  415. package/Materials/Textures/baseTexture.pure.js +880 -825
  416. package/Materials/Textures/baseTexture.pure.js.map +1 -1
  417. package/Materials/Textures/cubeTexture.d.ts +0 -1
  418. package/Materials/Textures/cubeTexture.js +0 -1
  419. package/Materials/Textures/cubeTexture.js.map +1 -1
  420. package/Materials/Textures/cubeTexture.pure.js +368 -333
  421. package/Materials/Textures/cubeTexture.pure.js.map +1 -1
  422. package/Materials/Textures/dynamicTexture.d.ts +0 -1
  423. package/Materials/Textures/dynamicTexture.js +0 -1
  424. package/Materials/Textures/dynamicTexture.js.map +1 -1
  425. package/Materials/Textures/dynamicTexture.pure.js +2 -0
  426. package/Materials/Textures/dynamicTexture.pure.js.map +1 -1
  427. package/Materials/Textures/htmlElementTexture.d.ts +0 -2
  428. package/Materials/Textures/htmlElementTexture.js +0 -2
  429. package/Materials/Textures/htmlElementTexture.js.map +1 -1
  430. package/Materials/Textures/htmlElementTexture.pure.js +4 -0
  431. package/Materials/Textures/htmlElementTexture.pure.js.map +1 -1
  432. package/Materials/Textures/index.d.ts +1 -0
  433. package/Materials/Textures/index.js +1 -1
  434. package/Materials/Textures/index.js.map +1 -1
  435. package/Materials/Textures/multiRenderTarget.d.ts +0 -1
  436. package/Materials/Textures/multiRenderTarget.js +0 -1
  437. package/Materials/Textures/multiRenderTarget.js.map +1 -1
  438. package/Materials/Textures/multiRenderTarget.pure.js +2 -0
  439. package/Materials/Textures/multiRenderTarget.pure.js.map +1 -1
  440. package/Materials/Textures/pure.d.ts +1 -0
  441. package/Materials/Textures/pure.js +1 -0
  442. package/Materials/Textures/pure.js.map +1 -1
  443. package/Materials/Textures/texture.pure.js +961 -923
  444. package/Materials/Textures/texture.pure.js.map +1 -1
  445. package/Materials/Textures/videoTexture.pure.d.ts +3 -0
  446. package/Materials/Textures/videoTexture.pure.js +450 -401
  447. package/Materials/Textures/videoTexture.pure.js.map +1 -1
  448. package/Materials/colorCurves.pure.js +510 -477
  449. package/Materials/colorCurves.pure.js.map +1 -1
  450. package/Materials/effect.pure.js +0 -7
  451. package/Materials/effect.pure.js.map +1 -1
  452. package/Materials/imageProcessing.js +12 -4
  453. package/Materials/imageProcessing.js.map +1 -1
  454. package/Materials/imageProcessingConfiguration.pure.js +647 -587
  455. package/Materials/imageProcessingConfiguration.pure.js.map +1 -1
  456. package/Materials/material.decalMapConfiguration.pure.d.ts +2 -2
  457. package/Materials/material.decalMapConfiguration.pure.js +149 -130
  458. package/Materials/material.decalMapConfiguration.pure.js.map +1 -1
  459. package/Materials/material.detailMapConfiguration.d.ts +3 -3
  460. package/Materials/material.detailMapConfiguration.js +213 -175
  461. package/Materials/material.detailMapConfiguration.js.map +1 -1
  462. package/Materials/material.pure.js +1815 -1721
  463. package/Materials/material.pure.js.map +1 -1
  464. package/Materials/materialPluginBase.pure.js +270 -249
  465. package/Materials/materialPluginBase.pure.js.map +1 -1
  466. package/Materials/materialPluginManager.pure.js +18 -8
  467. package/Materials/materialPluginManager.pure.js.map +1 -1
  468. package/Materials/materialStencilState.js +211 -200
  469. package/Materials/materialStencilState.js.map +1 -1
  470. package/Materials/meshDebugPluginMaterial.pure.d.ts +2 -2
  471. package/Materials/meshDebugPluginMaterial.pure.js +397 -275
  472. package/Materials/meshDebugPluginMaterial.pure.js.map +1 -1
  473. package/Materials/standardMaterial.pure.d.ts +32 -32
  474. package/Materials/standardMaterial.pure.js +1804 -1394
  475. package/Materials/standardMaterial.pure.js.map +1 -1
  476. package/Maths/math.color.pure.js +5 -5
  477. package/Maths/math.functions.js +38 -30
  478. package/Maths/math.functions.js.map +1 -1
  479. package/Maths/math.vector.pure.js +25 -25
  480. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +18 -8
  481. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
  482. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +86 -1
  483. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +255 -104
  484. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
  485. package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.d.ts +39 -0
  486. package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js +322 -0
  487. package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js.map +1 -0
  488. package/Meshes/GreasedLine/greasedLineMesh.pure.js +4 -4
  489. package/Meshes/GreasedLine/greasedLineRibbonMesh.pure.js +3 -3
  490. package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js +107 -94
  491. package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js.map +1 -1
  492. package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.pure.js +276 -263
  493. package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.pure.js.map +1 -1
  494. package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.pure.js +247 -232
  495. package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.pure.js.map +1 -1
  496. package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.pure.js +299 -284
  497. package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.pure.js.map +1 -1
  498. package/Meshes/Node/Blocks/Set/aggregatorBlock.pure.js +196 -181
  499. package/Meshes/Node/Blocks/Set/aggregatorBlock.pure.js.map +1 -1
  500. package/Meshes/Node/Blocks/Set/latticeBlock.pure.js +198 -179
  501. package/Meshes/Node/Blocks/Set/latticeBlock.pure.js.map +1 -1
  502. package/Meshes/Node/Blocks/Set/setColorsBlock.pure.js +151 -138
  503. package/Meshes/Node/Blocks/Set/setColorsBlock.pure.js.map +1 -1
  504. package/Meshes/Node/Blocks/Set/setMaterialIDBlock.pure.js +107 -94
  505. package/Meshes/Node/Blocks/Set/setMaterialIDBlock.pure.js.map +1 -1
  506. package/Meshes/Node/Blocks/Set/setNormalsBlock.pure.js +138 -125
  507. package/Meshes/Node/Blocks/Set/setNormalsBlock.pure.js.map +1 -1
  508. package/Meshes/Node/Blocks/Set/setPositionsBlock.pure.js +213 -200
  509. package/Meshes/Node/Blocks/Set/setPositionsBlock.pure.js.map +1 -1
  510. package/Meshes/Node/Blocks/Set/setTangentsBlock.pure.js +138 -125
  511. package/Meshes/Node/Blocks/Set/setTangentsBlock.pure.js.map +1 -1
  512. package/Meshes/Node/Blocks/Set/setUVsBlock.pure.js +179 -164
  513. package/Meshes/Node/Blocks/Set/setUVsBlock.pure.js.map +1 -1
  514. package/Meshes/Node/Blocks/Sources/boxBlock.pure.js +183 -170
  515. package/Meshes/Node/Blocks/Sources/boxBlock.pure.js.map +1 -1
  516. package/Meshes/Node/Blocks/Sources/capsuleBlock.pure.js +125 -112
  517. package/Meshes/Node/Blocks/Sources/capsuleBlock.pure.js.map +1 -1
  518. package/Meshes/Node/Blocks/Sources/cylinderBlock.pure.js +153 -140
  519. package/Meshes/Node/Blocks/Sources/cylinderBlock.pure.js.map +1 -1
  520. package/Meshes/Node/Blocks/Sources/discBlock.pure.js +112 -99
  521. package/Meshes/Node/Blocks/Sources/discBlock.pure.js.map +1 -1
  522. package/Meshes/Node/Blocks/Sources/gridBlock.pure.js +133 -120
  523. package/Meshes/Node/Blocks/Sources/gridBlock.pure.js.map +1 -1
  524. package/Meshes/Node/Blocks/Sources/icoSphereBlock.pure.js +128 -115
  525. package/Meshes/Node/Blocks/Sources/icoSphereBlock.pure.js.map +1 -1
  526. package/Meshes/Node/Blocks/Sources/meshBlock.pure.js +116 -103
  527. package/Meshes/Node/Blocks/Sources/meshBlock.pure.js.map +1 -1
  528. package/Meshes/Node/Blocks/Sources/planeBlock.pure.js +160 -147
  529. package/Meshes/Node/Blocks/Sources/planeBlock.pure.js.map +1 -1
  530. package/Meshes/Node/Blocks/Sources/sphereBlock.pure.js +144 -131
  531. package/Meshes/Node/Blocks/Sources/sphereBlock.pure.js.map +1 -1
  532. package/Meshes/Node/Blocks/Sources/torusBlock.pure.js +112 -99
  533. package/Meshes/Node/Blocks/Sources/torusBlock.pure.js.map +1 -1
  534. package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.pure.js +200 -185
  535. package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.pure.js.map +1 -1
  536. package/Meshes/Node/Blocks/bevelBlock.pure.js +111 -98
  537. package/Meshes/Node/Blocks/bevelBlock.pure.js.map +1 -1
  538. package/Meshes/Node/Blocks/booleanGeometryBlock.pure.js +182 -165
  539. package/Meshes/Node/Blocks/booleanGeometryBlock.pure.js.map +1 -1
  540. package/Meshes/Node/Blocks/cleanGeometryBlock.pure.js +89 -76
  541. package/Meshes/Node/Blocks/cleanGeometryBlock.pure.js.map +1 -1
  542. package/Meshes/Node/Blocks/conditionBlock.pure.js +184 -169
  543. package/Meshes/Node/Blocks/conditionBlock.pure.js.map +1 -1
  544. package/Meshes/Node/Blocks/extrudeGeometryBlock.pure.js +270 -255
  545. package/Meshes/Node/Blocks/extrudeGeometryBlock.pure.js.map +1 -1
  546. package/Meshes/Node/Blocks/geometryCollectionBlock.pure.js +172 -159
  547. package/Meshes/Node/Blocks/geometryCollectionBlock.pure.js.map +1 -1
  548. package/Meshes/Node/Blocks/geometryCurveBlock.pure.js +230 -217
  549. package/Meshes/Node/Blocks/geometryCurveBlock.pure.js.map +1 -1
  550. package/Meshes/Node/Blocks/geometryEaseBlock.pure.js +256 -245
  551. package/Meshes/Node/Blocks/geometryEaseBlock.pure.js.map +1 -1
  552. package/Meshes/Node/Blocks/geometryOptimizeBlock.pure.js +206 -189
  553. package/Meshes/Node/Blocks/geometryOptimizeBlock.pure.js.map +1 -1
  554. package/Meshes/Node/Blocks/geometryTransformBlock.pure.js +166 -153
  555. package/Meshes/Node/Blocks/geometryTransformBlock.pure.js.map +1 -1
  556. package/Meshes/Node/Blocks/geometryTrigonometryBlock.pure.js +221 -208
  557. package/Meshes/Node/Blocks/geometryTrigonometryBlock.pure.js.map +1 -1
  558. package/Meshes/Node/Blocks/mappingBlock.pure.js +150 -137
  559. package/Meshes/Node/Blocks/mappingBlock.pure.js.map +1 -1
  560. package/Meshes/Node/Blocks/mathBlock.pure.js +269 -256
  561. package/Meshes/Node/Blocks/mathBlock.pure.js.map +1 -1
  562. package/Meshes/Node/Blocks/mergeGeometryBlock.pure.js +141 -128
  563. package/Meshes/Node/Blocks/mergeGeometryBlock.pure.js.map +1 -1
  564. package/Meshes/Node/Blocks/randomBlock.pure.js +161 -148
  565. package/Meshes/Node/Blocks/randomBlock.pure.js.map +1 -1
  566. package/Meshes/Node/Blocks/subdivideBlock.pure.js +102 -87
  567. package/Meshes/Node/Blocks/subdivideBlock.pure.js.map +1 -1
  568. package/Meshes/Node/nodeGeometry.js +560 -538
  569. package/Meshes/Node/nodeGeometry.js.map +1 -1
  570. package/Meshes/Node/nodeGeometryBlock.js +473 -458
  571. package/Meshes/Node/nodeGeometryBlock.js.map +1 -1
  572. package/Meshes/abstractMesh.pure.js +2218 -2207
  573. package/Meshes/abstractMesh.pure.js.map +1 -1
  574. package/Meshes/geometry.js +30 -15
  575. package/Meshes/geometry.js.map +1 -1
  576. package/Meshes/mesh.pure.js +26 -14
  577. package/Meshes/mesh.pure.js.map +1 -1
  578. package/Meshes/mesh.vertexData.js +1665 -1655
  579. package/Meshes/mesh.vertexData.js.map +1 -1
  580. package/Meshes/transformNode.pure.js +1400 -1372
  581. package/Meshes/transformNode.pure.js.map +1 -1
  582. package/Misc/decorators.d.ts +34 -19
  583. package/Misc/decorators.functions.d.ts +33 -2
  584. package/Misc/decorators.functions.js +114 -35
  585. package/Misc/decorators.functions.js.map +1 -1
  586. package/Misc/decorators.js +96 -68
  587. package/Misc/decorators.js.map +1 -1
  588. package/Misc/decorators.serialization.js +47 -40
  589. package/Misc/decorators.serialization.js.map +1 -1
  590. package/Misc/decorators.serializationUtilities.d.ts +24 -0
  591. package/Misc/decorators.serializationUtilities.js +20 -0
  592. package/Misc/decorators.serializationUtilities.js.map +1 -0
  593. package/Misc/dumpTools.pure.js +43 -33
  594. package/Misc/dumpTools.pure.js.map +1 -1
  595. package/Misc/fileTools.pure.js +8 -0
  596. package/Misc/fileTools.pure.js.map +1 -1
  597. package/Misc/observable.pure.js +0 -7
  598. package/Misc/observable.pure.js.map +1 -1
  599. package/Misc/snapshotRenderingHelper.d.ts +4 -1
  600. package/Misc/snapshotRenderingHelper.js.map +1 -1
  601. package/Misc/symbolMetadataPolyfill.d.ts +11 -0
  602. package/Misc/symbolMetadataPolyfill.js +22 -0
  603. package/Misc/symbolMetadataPolyfill.js.map +1 -0
  604. package/Misc/tools.pure.js +2 -2
  605. package/Misc/tools.pure.js.map +1 -1
  606. package/Morph/morphTarget.js +382 -365
  607. package/Morph/morphTarget.js.map +1 -1
  608. package/Particles/Node/Blocks/Conditions/particleConditionBlock.pure.js +160 -145
  609. package/Particles/Node/Blocks/Conditions/particleConditionBlock.pure.js.map +1 -1
  610. package/Particles/Node/Blocks/Emitters/coneShapeBlock.pure.js +187 -174
  611. package/Particles/Node/Blocks/Emitters/coneShapeBlock.pure.js.map +1 -1
  612. package/Particles/Node/Blocks/Emitters/meshShapeBlock.pure.js +238 -219
  613. package/Particles/Node/Blocks/Emitters/meshShapeBlock.pure.js.map +1 -1
  614. package/Particles/Node/Blocks/Emitters/setupSpriteSheetBlock.pure.js +140 -115
  615. package/Particles/Node/Blocks/Emitters/setupSpriteSheetBlock.pure.js.map +1 -1
  616. package/Particles/Node/Blocks/Emitters/sphereShapeBlock.pure.js +157 -144
  617. package/Particles/Node/Blocks/Emitters/sphereShapeBlock.pure.js.map +1 -1
  618. package/Particles/Node/Blocks/Triggers/particleTriggerBlock.pure.js +133 -119
  619. package/Particles/Node/Blocks/Triggers/particleTriggerBlock.pure.js.map +1 -1
  620. package/Particles/Node/Blocks/Update/alignAngleBlock.pure.js +93 -80
  621. package/Particles/Node/Blocks/Update/alignAngleBlock.pure.js.map +1 -1
  622. package/Particles/Node/Blocks/particleDebugBlock.pure.js +117 -105
  623. package/Particles/Node/Blocks/particleDebugBlock.pure.js.map +1 -1
  624. package/Particles/Node/Blocks/particleFloatToIntBlock.pure.js +105 -92
  625. package/Particles/Node/Blocks/particleFloatToIntBlock.pure.js.map +1 -1
  626. package/Particles/Node/Blocks/particleGradientValueBlock.pure.js +82 -69
  627. package/Particles/Node/Blocks/particleGradientValueBlock.pure.js.map +1 -1
  628. package/Particles/Node/Blocks/particleLocalVariableBlock.pure.js +113 -101
  629. package/Particles/Node/Blocks/particleLocalVariableBlock.pure.js.map +1 -1
  630. package/Particles/Node/Blocks/particleMathBlock.pure.js +278 -265
  631. package/Particles/Node/Blocks/particleMathBlock.pure.js.map +1 -1
  632. package/Particles/Node/Blocks/particleNumberMathBlock.pure.js +155 -142
  633. package/Particles/Node/Blocks/particleNumberMathBlock.pure.js.map +1 -1
  634. package/Particles/Node/Blocks/particleRandomBlock.pure.js +156 -143
  635. package/Particles/Node/Blocks/particleRandomBlock.pure.js.map +1 -1
  636. package/Particles/Node/Blocks/particleTrigonometryBlock.pure.js +217 -204
  637. package/Particles/Node/Blocks/particleTrigonometryBlock.pure.js.map +1 -1
  638. package/Particles/Node/Blocks/particleVectorMathBlock.pure.js +106 -93
  639. package/Particles/Node/Blocks/particleVectorMathBlock.pure.js.map +1 -1
  640. package/Particles/Node/Blocks/systemBlock.pure.js +366 -330
  641. package/Particles/Node/Blocks/systemBlock.pure.js.map +1 -1
  642. package/Particles/Node/nodeParticleBlock.js +339 -324
  643. package/Particles/Node/nodeParticleBlock.js.map +1 -1
  644. package/Particles/Node/nodeParticleSystemSet.js +494 -473
  645. package/Particles/Node/nodeParticleSystemSet.js.map +1 -1
  646. package/Particles/gpuParticleSystem.d.ts +0 -1
  647. package/Particles/gpuParticleSystem.js +0 -1
  648. package/Particles/gpuParticleSystem.js.map +1 -1
  649. package/Particles/gpuParticleSystem.pure.d.ts +4 -3
  650. package/Particles/gpuParticleSystem.pure.js +27 -16
  651. package/Particles/gpuParticleSystem.pure.js.map +1 -1
  652. package/Particles/particleSystem.pure.js +57 -2
  653. package/Particles/particleSystem.pure.js.map +1 -1
  654. package/Particles/thinParticleSystem.d.ts +0 -1
  655. package/Particles/thinParticleSystem.js +0 -1
  656. package/Particles/thinParticleSystem.js.map +1 -1
  657. package/Particles/thinParticleSystem.pure.js +2 -0
  658. package/Particles/thinParticleSystem.pure.js.map +1 -1
  659. package/Particles/webgl2ParticleSystem.pure.js +2 -0
  660. package/Particles/webgl2ParticleSystem.pure.js.map +1 -1
  661. package/Physics/v1/physicsImpostor.pure.js +4 -4
  662. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.js +675 -656
  663. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.js.map +1 -1
  664. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.d.ts +0 -1
  665. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js +0 -1
  666. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js.map +1 -1
  667. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js +521 -486
  668. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js.map +1 -1
  669. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.d.ts +0 -1
  670. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js +0 -1
  671. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js.map +1 -1
  672. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.pure.js +241 -220
  673. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.pure.js.map +1 -1
  674. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.pure.js +852 -835
  675. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.pure.js.map +1 -1
  676. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.pure.js +1135 -1073
  677. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.pure.js.map +1 -1
  678. package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.pure.js +319 -303
  679. package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.pure.js.map +1 -1
  680. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js +212 -199
  681. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
  682. package/PostProcesses/blackAndWhitePostProcess.pure.js +67 -55
  683. package/PostProcesses/blackAndWhitePostProcess.pure.js.map +1 -1
  684. package/PostProcesses/bloomMergePostProcess.pure.js +74 -62
  685. package/PostProcesses/bloomMergePostProcess.pure.js.map +1 -1
  686. package/PostProcesses/blurPostProcess.pure.js +127 -115
  687. package/PostProcesses/blurPostProcess.pure.js.map +1 -1
  688. package/PostProcesses/chromaticAberrationPostProcess.pure.js +130 -118
  689. package/PostProcesses/chromaticAberrationPostProcess.pure.js.map +1 -1
  690. package/PostProcesses/circleOfConfusionPostProcess.pure.js +115 -104
  691. package/PostProcesses/circleOfConfusionPostProcess.pure.js.map +1 -1
  692. package/PostProcesses/colorCorrectionPostProcess.pure.js +55 -43
  693. package/PostProcesses/colorCorrectionPostProcess.pure.js.map +1 -1
  694. package/PostProcesses/convolutionPostProcess.pure.js +96 -84
  695. package/PostProcesses/convolutionPostProcess.pure.js.map +1 -1
  696. package/PostProcesses/extractHighlightsPostProcess.pure.js +68 -57
  697. package/PostProcesses/extractHighlightsPostProcess.pure.js.map +1 -1
  698. package/PostProcesses/filterPostProcess.pure.js +66 -54
  699. package/PostProcesses/filterPostProcess.pure.js.map +1 -1
  700. package/PostProcesses/fxaaPostProcess.pure.js.map +1 -1
  701. package/PostProcesses/grainPostProcess.pure.js +82 -70
  702. package/PostProcesses/grainPostProcess.pure.js.map +1 -1
  703. package/PostProcesses/imageProcessingPostProcess.js +334 -322
  704. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  705. package/PostProcesses/motionBlurPostProcess.pure.js +246 -235
  706. package/PostProcesses/motionBlurPostProcess.pure.js.map +1 -1
  707. package/PostProcesses/passPostProcess.pure.js +75 -63
  708. package/PostProcesses/passPostProcess.pure.js.map +1 -1
  709. package/PostProcesses/postProcess.pure.js +899 -835
  710. package/PostProcesses/postProcess.pure.js.map +1 -1
  711. package/PostProcesses/refractionPostProcess.pure.js +114 -87
  712. package/PostProcesses/refractionPostProcess.pure.js.map +1 -1
  713. package/PostProcesses/screenSpaceCurvaturePostProcess.pure.js +108 -96
  714. package/PostProcesses/screenSpaceCurvaturePostProcess.pure.js.map +1 -1
  715. package/PostProcesses/screenSpaceReflectionPostProcess.pure.js +241 -220
  716. package/PostProcesses/screenSpaceReflectionPostProcess.pure.js.map +1 -1
  717. package/PostProcesses/sharpenPostProcess.pure.js +86 -74
  718. package/PostProcesses/sharpenPostProcess.pure.js.map +1 -1
  719. package/PostProcesses/tonemapPostProcess.pure.js +82 -70
  720. package/PostProcesses/tonemapPostProcess.pure.js.map +1 -1
  721. package/PostProcesses/volumetricLightScatteringPostProcess.pure.js +500 -465
  722. package/PostProcesses/volumetricLightScatteringPostProcess.pure.js.map +1 -1
  723. package/PostProcesses/vrMultiviewToSingleviewPostProcess.d.ts +0 -1
  724. package/PostProcesses/vrMultiviewToSingleviewPostProcess.js +0 -1
  725. package/PostProcesses/vrMultiviewToSingleviewPostProcess.js.map +1 -1
  726. package/PostProcesses/vrMultiviewToSingleviewPostProcess.pure.js +2 -0
  727. package/PostProcesses/vrMultiviewToSingleviewPostProcess.pure.js.map +1 -1
  728. package/Probes/reflectionProbe.pure.js +238 -224
  729. package/Probes/reflectionProbe.pure.js.map +1 -1
  730. package/Rendering/GlobalIllumination/giRSMManager.pure.d.ts +1 -1
  731. package/Rendering/GlobalIllumination/giRSMManager.pure.js +138 -105
  732. package/Rendering/GlobalIllumination/giRSMManager.pure.js.map +1 -1
  733. package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.d.ts +1 -1
  734. package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.js +155 -138
  735. package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.js.map +1 -1
  736. package/Rendering/IBLShadows/iblShadowsRenderPipeline.d.ts +0 -2
  737. package/Rendering/IBLShadows/iblShadowsRenderPipeline.js +0 -2
  738. package/Rendering/IBLShadows/iblShadowsRenderPipeline.js.map +1 -1
  739. package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js +5 -0
  740. package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js.map +1 -1
  741. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.d.ts +0 -1
  742. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js +0 -1
  743. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js.map +1 -1
  744. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.d.ts +1 -0
  745. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js +34 -0
  746. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js.map +1 -1
  747. package/Rendering/edgesRenderer.pure.js.map +1 -1
  748. package/Rendering/prePassRenderer.d.ts +0 -2
  749. package/Rendering/prePassRenderer.js +0 -2
  750. package/Rendering/prePassRenderer.js.map +1 -1
  751. package/Rendering/prePassRenderer.pure.js +2 -0
  752. package/Rendering/prePassRenderer.pure.js.map +1 -1
  753. package/Rendering/reflectiveShadowMap.pure.d.ts +1 -1
  754. package/Rendering/reflectiveShadowMap.pure.js +151 -130
  755. package/Rendering/reflectiveShadowMap.pure.js.map +1 -1
  756. package/Rendering/thinDepthPeelingRenderer.d.ts +0 -1
  757. package/Rendering/thinDepthPeelingRenderer.js +0 -1
  758. package/Rendering/thinDepthPeelingRenderer.js.map +1 -1
  759. package/Shaders/ShadersInclude/gaussianSplatting.js +1 -0
  760. package/Shaders/ShadersInclude/gaussianSplatting.js.map +1 -1
  761. package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js +35 -5
  762. package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
  763. package/Shaders/gaussianSplatting.fragment.js +17 -1
  764. package/Shaders/gaussianSplatting.fragment.js.map +1 -1
  765. package/Shaders/gaussianSplatting.vertex.js +1 -1
  766. package/Shaders/gaussianSplatting.vertex.js.map +1 -1
  767. package/Shaders/gaussianSplattingDepth.vertex.js +1 -1
  768. package/Shaders/gaussianSplattingDepth.vertex.js.map +1 -1
  769. package/Shaders/picking.fragment.js +39 -3
  770. package/Shaders/picking.fragment.js.map +1 -1
  771. package/ShadersWGSL/ShadersInclude/gaussianSplatting.js +3 -1
  772. package/ShadersWGSL/ShadersInclude/gaussianSplatting.js.map +1 -1
  773. package/ShadersWGSL/ShadersInclude/helperFunctions.js +2 -2
  774. package/ShadersWGSL/ShadersInclude/helperFunctions.js.map +1 -1
  775. package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js +39 -7
  776. package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
  777. package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js +4 -3
  778. package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js.map +1 -1
  779. package/ShadersWGSL/gaussianSplatting.fragment.js +14 -1
  780. package/ShadersWGSL/gaussianSplatting.fragment.js.map +1 -1
  781. package/ShadersWGSL/gaussianSplatting.vertex.js +2 -2
  782. package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
  783. package/ShadersWGSL/gaussianSplattingDepth.vertex.js +2 -2
  784. package/ShadersWGSL/gaussianSplattingDepth.vertex.js.map +1 -1
  785. package/ShadersWGSL/lightingVolume.compute.js +2 -2
  786. package/ShadersWGSL/lightingVolume.compute.js.map +1 -1
  787. package/ShadersWGSL/picking.fragment.js +22 -1
  788. package/ShadersWGSL/picking.fragment.js.map +1 -1
  789. package/XR/features/Layers/WebXRCompositionLayer.d.ts +3 -2
  790. package/XR/features/Layers/WebXRCompositionLayer.js +2 -2
  791. package/XR/features/Layers/WebXRCompositionLayer.js.map +1 -1
  792. package/XR/features/Layers/WebXRWebGPUCompositionLayer.d.ts +59 -0
  793. package/XR/features/Layers/WebXRWebGPUCompositionLayer.js +120 -0
  794. package/XR/features/Layers/WebXRWebGPUCompositionLayer.js.map +1 -0
  795. package/XR/features/Layers/WebXRWebGPUProjectionLayer.d.ts +25 -0
  796. package/XR/features/Layers/WebXRWebGPUProjectionLayer.js +69 -0
  797. package/XR/features/Layers/WebXRWebGPUProjectionLayer.js.map +1 -0
  798. package/XR/features/WebXRLayers.pure.d.ts +8 -0
  799. package/XR/features/WebXRLayers.pure.js +43 -6
  800. package/XR/features/WebXRLayers.pure.js.map +1 -1
  801. package/XR/native/nativeXRRenderTarget.d.ts +2 -2
  802. package/XR/native/nativeXRRenderTarget.js +2 -2
  803. package/XR/native/nativeXRRenderTarget.js.map +1 -1
  804. package/XR/webXRExperienceHelper.js +10 -1
  805. package/XR/webXRExperienceHelper.js.map +1 -1
  806. package/XR/webXRGraphicsBinding.d.ts +90 -0
  807. package/XR/webXRGraphicsBinding.js +85 -0
  808. package/XR/webXRGraphicsBinding.js.map +1 -0
  809. package/XR/webXRLayerRenderTargetTexture.d.ts +24 -0
  810. package/XR/webXRLayerRenderTargetTexture.js +30 -0
  811. package/XR/webXRLayerRenderTargetTexture.js.map +1 -0
  812. package/XR/webXRManagedOutputCanvas.d.ts +14 -0
  813. package/XR/webXRManagedOutputCanvas.js +24 -5
  814. package/XR/webXRManagedOutputCanvas.js.map +1 -1
  815. package/XR/webXRRenderTargetTextureProvider.d.ts +25 -4
  816. package/XR/webXRRenderTargetTextureProvider.js +33 -35
  817. package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
  818. package/XR/webXRSessionManager.d.ts +11 -0
  819. package/XR/webXRSessionManager.js +37 -0
  820. package/XR/webXRSessionManager.js.map +1 -1
  821. package/XR/webXRTypes.d.ts +9 -6
  822. package/XR/webXRTypes.js.map +1 -1
  823. package/XR/webXRWebGLLayer.d.ts +2 -2
  824. package/XR/webXRWebGLLayer.js +2 -2
  825. package/XR/webXRWebGLLayer.js.map +1 -1
  826. package/XR/webXRWebGLRenderTargetTextureProvider.d.ts +12 -0
  827. package/XR/webXRWebGLRenderTargetTextureProvider.js +58 -0
  828. package/XR/webXRWebGLRenderTargetTextureProvider.js.map +1 -0
  829. package/XR/webXRWebGPURenderTargetTextureProvider.d.ts +69 -0
  830. package/XR/webXRWebGPURenderTargetTextureProvider.js +148 -0
  831. package/XR/webXRWebGPURenderTargetTextureProvider.js.map +1 -0
  832. package/index.d.ts +1 -0
  833. package/index.js +1 -0
  834. package/index.js.map +1 -1
  835. package/node.js +878 -845
  836. package/node.js.map +1 -1
  837. package/package.json +8 -14
  838. package/scene.pure.d.ts +12 -0
  839. package/scene.pure.js +36 -0
  840. package/scene.pure.js.map +1 -1
  841. package/tslib.es6.js +304 -150
@@ -1 +1 @@
1
- {"version":3,"file":"backgroundMaterial.pure.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/Background/backgroundMaterial.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\n/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { serialize, serializeAsColor3, expandToProperty, serializeAsTexture, serializeAsVector3 } from \"../../Misc/decorators\";\r\nimport { SmartArray } from \"../../Misc/smartArray\";\r\nimport { Logger } from \"../../Misc/logger\";\r\nimport { type Nullable, type int, type float } from \"../../types\";\r\nimport { type Scene } from \"../../scene.pure\";\r\nimport { type Matrix, TmpVectors, Vector3, Vector4 } from \"../../Maths/math.vector.pure\";\r\nimport { VertexBuffer } from \"../../Buffers/buffer.pure\";\r\nimport { type SubMesh } from \"../../Meshes/subMesh.pure\";\r\nimport { type AbstractMesh } from \"../../Meshes/abstractMesh.pure\";\r\nimport { type Mesh } from \"../../Meshes/mesh.pure\";\r\nimport { type IEffectCreationOptions } from \"../../Materials/effect.pure\";\r\nimport { MaterialDefines } from \"../../Materials/materialDefines\";\r\nimport { PushMaterial } from \"../../Materials/pushMaterial\";\r\nimport { ImageProcessingDefinesMixin } from \"../../Materials/imageProcessingConfiguration.defines\";\r\nimport { ImageProcessingConfiguration } from \"../../Materials/imageProcessingConfiguration.pure\";\r\nimport { type BaseTexture } from \"../../Materials/Textures/baseTexture.pure\";\r\nimport { type RenderTargetTexture } from \"../../Materials/Textures/renderTargetTexture.pure\";\r\nimport { type IShadowLight } from \"../../Lights/shadowLight\";\r\nimport { Constants } from \"../../Engines/constants\";\r\nimport { MaterialFlags } from \"../materialFlags\";\r\nimport { Color3 } from \"../../Maths/math.color.pure\";\r\n\r\nimport { EffectFallbacks } from \"../effectFallbacks\";\r\nimport { AddClipPlaneUniforms, BindClipPlane } from \"../clipPlaneMaterialHelper\";\r\nimport {\r\n BindBonesParameters,\r\n BindFogParameters,\r\n BindLights,\r\n BindLogDepth,\r\n BindTextureMatrix,\r\n BindIBLParameters,\r\n BindIBLSamplers,\r\n HandleFallbacksForShadows,\r\n PrepareAttributesForBones,\r\n PrepareAttributesForInstances,\r\n PrepareDefinesForAttributes,\r\n PrepareDefinesForFrameBoundValues,\r\n PrepareDefinesForLights,\r\n PrepareDefinesForIBL,\r\n PrepareDefinesForMergedUV,\r\n PrepareDefinesForMisc,\r\n PrepareDefinesForMultiview,\r\n PrepareUniformsAndSamplersList,\r\n PrepareUniformsAndSamplersForIBL,\r\n PrepareUniformLayoutForIBL,\r\n AreLightsTexturesReady,\r\n} from \"../materialHelper.functions\";\r\nimport { SerializationHelper } from \"../../Misc/decorators.serialization\";\r\nimport { ShaderLanguage } from \"../shaderLanguage\";\r\nimport { ImageProcessingMixin } from \"../imageProcessing\";\r\nimport { RegisterClass } from \"../../Misc/typeStore\";\r\n\r\nclass BackgroundMaterialDefinesBase extends MaterialDefines {}\r\n\r\n/**\r\n * Background material defines definition.\r\n * @internal Mainly internal Use\r\n */\r\nclass BackgroundMaterialDefines extends ImageProcessingDefinesMixin(BackgroundMaterialDefinesBase) {\r\n /**\r\n * True if the diffuse texture is in use.\r\n */\r\n public DIFFUSE = false;\r\n\r\n /**\r\n * The direct UV channel to use.\r\n */\r\n public DIFFUSEDIRECTUV = 0;\r\n\r\n /**\r\n * True if the diffuse texture is in gamma space.\r\n */\r\n public GAMMADIFFUSE = false;\r\n\r\n /**\r\n * True if the diffuse texture has opacity in the alpha channel.\r\n */\r\n public DIFFUSEHASALPHA = false;\r\n\r\n /**\r\n * True if you want the material to fade to transparent at grazing angle.\r\n */\r\n public OPACITYFRESNEL = false;\r\n\r\n /**\r\n * True if an extra blur needs to be added in the reflection.\r\n */\r\n public REFLECTIONBLUR = false;\r\n\r\n /**\r\n * True if you want the material to fade to reflection at grazing angle.\r\n */\r\n public REFLECTIONFRESNEL = false;\r\n\r\n /**\r\n * True if you want the material to falloff as far as you move away from the scene center.\r\n */\r\n public REFLECTIONFALLOFF = false;\r\n\r\n /**\r\n * False if the current Webgl implementation does not support the texture lod extension.\r\n */\r\n public TEXTURELODSUPPORT = false;\r\n\r\n /**\r\n * True to ensure the data are premultiplied.\r\n */\r\n public PREMULTIPLYALPHA = false;\r\n\r\n /**\r\n * True if the texture contains cooked RGB values and not gray scaled multipliers.\r\n */\r\n public USERGBCOLOR = false;\r\n\r\n /**\r\n * True if highlight and shadow levels have been specified. It can help ensuring the main perceived color\r\n * stays aligned with the desired configuration.\r\n */\r\n public USEHIGHLIGHTANDSHADOWCOLORS = false;\r\n\r\n /**\r\n * True if only shadows must be rendered\r\n */\r\n public BACKMAT_SHADOWONLY = false;\r\n\r\n /**\r\n * True to add noise in order to reduce the banding effect.\r\n */\r\n public NOISE = false;\r\n\r\n /**\r\n * is the reflection texture in BGR color scheme?\r\n * Mainly used to solve a bug in ios10 video tag\r\n */\r\n public REFLECTIONBGR = false;\r\n\r\n /**\r\n * True if ground projection has been enabled.\r\n */\r\n public PROJECTED_GROUND = false;\r\n\r\n /** Defines whether reflection is enabled */\r\n public REFLECTION = false;\r\n /** Defines whether the reflection map is 3D */\r\n public REFLECTIONMAP_3D = false;\r\n /** Defines whether the reflection map is spherical */\r\n public REFLECTIONMAP_SPHERICAL = false;\r\n /** Defines whether the reflection map is planar */\r\n public REFLECTIONMAP_PLANAR = false;\r\n /** Defines whether the reflection map is cubic */\r\n public REFLECTIONMAP_CUBIC = false;\r\n /** Defines whether the reflection map is in projection mode */\r\n public REFLECTIONMAP_PROJECTION = false;\r\n /** Defines whether the reflection map is a skybox */\r\n public REFLECTIONMAP_SKYBOX = false;\r\n /** Defines whether the reflection map is explicit */\r\n public REFLECTIONMAP_EXPLICIT = false;\r\n /** Defines whether the reflection map is equirectangular */\r\n public REFLECTIONMAP_EQUIRECTANGULAR = false;\r\n /** Defines whether the reflection map is fixed equirectangular */\r\n public REFLECTIONMAP_EQUIRECTANGULAR_FIXED = false;\r\n /** Defines whether the reflection map is mirrored fixed equirectangular */\r\n public REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED = false;\r\n /** Defines whether the cubic map should be inverted */\r\n public INVERTCUBICMAP = false;\r\n /** Defines whether the reflection map uses opposite Z */\r\n public REFLECTIONMAP_OPPOSITEZ = false;\r\n /** Defines whether LOD is stored in the reflection alpha channel */\r\n public LODINREFLECTIONALPHA = false;\r\n /** Defines whether the reflection uses gamma space */\r\n public GAMMAREFLECTION = false;\r\n /** Defines whether the reflection is in RGBD format */\r\n public RGBDREFLECTION = false;\r\n /** Defines whether the equirectangular reflection uses a custom field of view */\r\n public EQUIRECTANGULAR_RELFECTION_FOV = false;\r\n\r\n /** Defines whether main UV1 channel is used */\r\n public MAINUV1 = false;\r\n /** Defines whether main UV2 channel is used */\r\n public MAINUV2 = false;\r\n /** Defines whether UV1 is used */\r\n public UV1 = false;\r\n /** Defines whether UV2 is used */\r\n public UV2 = false;\r\n /** Defines whether clip plane 1 is enabled */\r\n public CLIPPLANE = false;\r\n /** Defines whether clip plane 2 is enabled */\r\n public CLIPPLANE2 = false;\r\n /** Defines whether clip plane 3 is enabled */\r\n public CLIPPLANE3 = false;\r\n /** Defines whether clip plane 4 is enabled */\r\n public CLIPPLANE4 = false;\r\n /** Defines whether clip plane 5 is enabled */\r\n public CLIPPLANE5 = false;\r\n /** Defines whether clip plane 6 is enabled */\r\n public CLIPPLANE6 = false;\r\n /** Defines whether point size is used */\r\n public POINTSIZE = false;\r\n /** Defines whether fog is enabled */\r\n public FOG = false;\r\n /** Defines whether normals are available */\r\n public NORMAL = false;\r\n /** Defines the number of bone influencers */\r\n public NUM_BONE_INFLUENCERS = 0;\r\n /** Defines the number of bones per mesh */\r\n public BonesPerMesh = 0;\r\n /** Defines whether instances are used */\r\n public INSTANCES = false;\r\n /** Defines whether shadow uses float textures */\r\n public SHADOWFLOAT = false;\r\n /** Defines whether logarithmic depth is enabled */\r\n public LOGARITHMICDEPTH = false;\r\n /** Defines whether non-uniform scaling is applied */\r\n public NONUNIFORMSCALING = false;\r\n /** Defines whether alpha testing is enabled */\r\n public ALPHATEST = false;\r\n\r\n /**\r\n * Constructor of the defines.\r\n */\r\n constructor() {\r\n super();\r\n this.rebuild();\r\n }\r\n}\r\n\r\nclass BackgroundMaterialBase extends ImageProcessingMixin(PushMaterial) {}\r\n/**\r\n * Background material used to create an efficient environment around your scene.\r\n * #157MGZ: simple test\r\n */\r\nexport class BackgroundMaterial extends BackgroundMaterialBase {\r\n /**\r\n * Standard reflectance value at parallel view angle.\r\n */\r\n public static StandardReflectance0 = 0.05;\r\n\r\n /**\r\n * Standard reflectance value at grazing angle.\r\n */\r\n public static StandardReflectance90 = 0.5;\r\n\r\n @serializeAsColor3()\r\n protected _primaryColor: Color3;\r\n /**\r\n * Key light Color (multiply against the environment texture)\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsLightsDirty\")\r\n public primaryColor = Color3.White();\r\n\r\n @serializeAsColor3()\r\n protected __perceptualColor: Nullable<Color3>;\r\n /**\r\n * Experimental Internal Use Only.\r\n *\r\n * Key light Color in \"perceptual value\" meaning the color you would like to see on screen.\r\n * This acts as a helper to set the primary color to a more \"human friendly\" value.\r\n * Conversion to linear space as well as exposure and tone mapping correction will be applied to keep the\r\n * output color as close as possible from the chosen value.\r\n * (This does not account for contrast color grading and color curves as they are considered post effect and not directly\r\n * part of lighting setup.)\r\n */\r\n public get _perceptualColor(): Nullable<Color3> {\r\n return this.__perceptualColor;\r\n }\r\n public set _perceptualColor(value: Nullable<Color3>) {\r\n this.__perceptualColor = value;\r\n this._computePrimaryColorFromPerceptualColor();\r\n this._markAllSubMeshesAsLightsDirty();\r\n }\r\n\r\n @serialize()\r\n protected _primaryColorShadowLevel: float = 0;\r\n /**\r\n * Defines the level of the shadows (dark area of the reflection map) in order to help scaling the colors.\r\n * The color opposite to the primary color is used at the level chosen to define what the black area would look.\r\n */\r\n public get primaryColorShadowLevel(): float {\r\n return this._primaryColorShadowLevel;\r\n }\r\n public set primaryColorShadowLevel(value: float) {\r\n this._primaryColorShadowLevel = value;\r\n this._computePrimaryColors();\r\n this._markAllSubMeshesAsLightsDirty();\r\n }\r\n\r\n @serialize()\r\n protected _primaryColorHighlightLevel: float = 0;\r\n /**\r\n * Defines the level of the highlights (highlight area of the reflection map) in order to help scaling the colors.\r\n * The primary color is used at the level chosen to define what the white area would look.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsLightsDirty\")\r\n public get primaryColorHighlightLevel(): float {\r\n return this._primaryColorHighlightLevel;\r\n }\r\n public set primaryColorHighlightLevel(value: float) {\r\n this._primaryColorHighlightLevel = value;\r\n this._computePrimaryColors();\r\n this._markAllSubMeshesAsLightsDirty();\r\n }\r\n\r\n @serializeAsTexture()\r\n protected _reflectionTexture: Nullable<BaseTexture>;\r\n /**\r\n * Reflection Texture used in the material.\r\n * Should be author in a specific way for the best result (refer to the documentation).\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public reflectionTexture: Nullable<BaseTexture> = null;\r\n\r\n @serialize()\r\n protected _reflectionBlur: float;\r\n /**\r\n * Reflection Texture level of blur.\r\n *\r\n * Can be use to reuse an existing HDR Texture and target a specific LOD to prevent authoring the\r\n * texture twice.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public reflectionBlur: float = 0;\r\n\r\n @serializeAsTexture()\r\n protected _diffuseTexture: Nullable<BaseTexture>;\r\n /**\r\n * Diffuse Texture used in the material.\r\n * Should be author in a specific way for the best result (refer to the documentation).\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public diffuseTexture: Nullable<BaseTexture> = null;\r\n\r\n protected _shadowLights: Nullable<IShadowLight[]> = null;\r\n /**\r\n * Specify the list of lights casting shadow on the material.\r\n * All scene shadow lights will be included if null.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public shadowLights: Nullable<IShadowLight[]> = null;\r\n\r\n @serialize()\r\n protected _shadowLevel: float;\r\n /**\r\n * Helps adjusting the shadow to a softer level if required.\r\n * 0 means black shadows and 1 means no shadows.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public shadowLevel: float = 0;\r\n\r\n @serializeAsVector3()\r\n protected _sceneCenter: Vector3;\r\n /**\r\n * In case of opacity Fresnel or reflection falloff, this is use as a scene center.\r\n * It is usually zero but might be interesting to modify according to your setup.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public sceneCenter: Vector3 = Vector3.Zero();\r\n\r\n @serialize()\r\n protected _opacityFresnel: boolean;\r\n /**\r\n * This helps specifying that the material is falling off to the sky box at grazing angle.\r\n * This helps ensuring a nice transition when the camera goes under the ground.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public opacityFresnel: boolean = true;\r\n\r\n @serialize()\r\n protected _reflectionFresnel: boolean;\r\n /**\r\n * This helps specifying that the material is falling off from diffuse to the reflection texture at grazing angle.\r\n * This helps adding a mirror texture on the ground.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public reflectionFresnel: boolean = false;\r\n\r\n @serialize()\r\n protected _reflectionFalloffDistance: number;\r\n /**\r\n * This helps specifying the falloff radius off the reflection texture from the sceneCenter.\r\n * This helps adding a nice falloff effect to the reflection if used as a mirror for instance.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public reflectionFalloffDistance: number = 0.0;\r\n\r\n @serialize()\r\n protected _reflectionAmount: number;\r\n /**\r\n * This specifies the weight of the reflection against the background in case of reflection Fresnel.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public reflectionAmount: number = 1.0;\r\n\r\n @serialize()\r\n protected _reflectionReflectance0: number;\r\n /**\r\n * This specifies the weight of the reflection at grazing angle.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public reflectionReflectance0: number = 0.05;\r\n\r\n @serialize()\r\n protected _reflectionReflectance90: number;\r\n /**\r\n * This specifies the weight of the reflection at a perpendicular point of view.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public reflectionReflectance90: number = 0.5;\r\n\r\n /**\r\n * Sets the reflection reflectance fresnel values according to the default standard\r\n * empirically know to work well :-)\r\n */\r\n public set reflectionStandardFresnelWeight(value: number) {\r\n let reflectionWeight = value;\r\n\r\n if (reflectionWeight < 0.5) {\r\n reflectionWeight = reflectionWeight * 2.0;\r\n this.reflectionReflectance0 = BackgroundMaterial.StandardReflectance0 * reflectionWeight;\r\n this.reflectionReflectance90 = BackgroundMaterial.StandardReflectance90 * reflectionWeight;\r\n } else {\r\n reflectionWeight = reflectionWeight * 2.0 - 1.0;\r\n this.reflectionReflectance0 = BackgroundMaterial.StandardReflectance0 + (1.0 - BackgroundMaterial.StandardReflectance0) * reflectionWeight;\r\n this.reflectionReflectance90 = BackgroundMaterial.StandardReflectance90 + (1.0 - BackgroundMaterial.StandardReflectance90) * reflectionWeight;\r\n }\r\n }\r\n\r\n @serialize()\r\n protected _useRGBColor: boolean;\r\n /**\r\n * Helps to directly use the maps channels instead of their level.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public useRGBColor: boolean = true;\r\n\r\n @serialize()\r\n protected _enableNoise: boolean;\r\n /**\r\n * This helps reducing the banding effect that could occur on the background.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public enableNoise: boolean = false;\r\n\r\n /**\r\n * The current fov(field of view) multiplier, 0.0 - 2.0. Defaults to 1.0. Lower values \"zoom in\" and higher values \"zoom out\".\r\n * Best used when trying to implement visual zoom effects like fish-eye or binoculars while not adjusting camera fov.\r\n * Recommended to be keep at 1.0 except for special cases.\r\n */\r\n public get fovMultiplier(): number {\r\n return this._fovMultiplier;\r\n }\r\n public set fovMultiplier(value: number) {\r\n if (isNaN(value)) {\r\n value = 1.0;\r\n }\r\n this._fovMultiplier = Math.max(0.0, Math.min(2.0, value));\r\n }\r\n private _fovMultiplier: float = 1.0;\r\n\r\n /**\r\n * Enable the FOV adjustment feature controlled by fovMultiplier.\r\n */\r\n public useEquirectangularFOV: boolean = false;\r\n\r\n @serialize()\r\n private _maxSimultaneousLights: int = 4;\r\n /**\r\n * Number of Simultaneous lights allowed on the material.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public maxSimultaneousLights: int = 4;\r\n\r\n @serialize()\r\n private _shadowOnly: boolean = false;\r\n /**\r\n * Make the material only render shadows\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsLightsDirty\")\r\n public shadowOnly: boolean = false;\r\n\r\n /**\r\n * Due to a bug in iOS10, video tags (which are using the background material) are in BGR and not RGB.\r\n * Setting this flag to true (not done automatically!) will convert it back to RGB.\r\n */\r\n public switchToBGR: boolean = false;\r\n\r\n private _enableGroundProjection: boolean = false;\r\n /**\r\n * Enables the ground projection mode on the material.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/environment/skybox#ground-projection\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsMiscDirty\")\r\n public enableGroundProjection: boolean = false;\r\n\r\n /**\r\n * Defines the radius of the projected ground if enableGroundProjection is true.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/environment/skybox#ground-projection\r\n */\r\n @serialize()\r\n public projectedGroundRadius = 1000;\r\n\r\n /**\r\n * Defines the height of the projected ground if enableGroundProjection is true.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/environment/skybox#ground-projection\r\n */\r\n @serialize()\r\n public projectedGroundHeight = 10;\r\n\r\n // Temp values kept as cache in the material.\r\n private _renderTargets = new SmartArray<RenderTargetTexture>(16);\r\n private _reflectionControls = Vector4.Zero();\r\n private _white = Color3.White();\r\n private _primaryShadowColor = Color3.Black();\r\n private _primaryHighlightColor = Color3.Black();\r\n\r\n private _shadersLoaded = false;\r\n\r\n /**\r\n * Instantiates a Background Material in the given scene\r\n * @param name The friendly name of the material\r\n * @param scene The scene to add the material to\r\n * @param forceGLSL Use the GLSL code generation for the shader (even on WebGPU). Default is false\r\n */\r\n constructor(name: string, scene?: Scene, forceGLSL = false) {\r\n super(name, scene, undefined, forceGLSL);\r\n\r\n // Setup the default processing configuration to the scene.\r\n this._attachImageProcessingConfiguration(null);\r\n\r\n this.getRenderTargetTextures = (): SmartArray<RenderTargetTexture> => {\r\n this._renderTargets.reset();\r\n\r\n if (this._diffuseTexture && this._diffuseTexture.isRenderTarget) {\r\n this._renderTargets.push(this._diffuseTexture as RenderTargetTexture);\r\n }\r\n\r\n if (this._reflectionTexture && this._reflectionTexture.isRenderTarget) {\r\n this._renderTargets.push(this._reflectionTexture as RenderTargetTexture);\r\n }\r\n\r\n return this._renderTargets;\r\n };\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating that current material needs to register RTT\r\n */\r\n public override get hasRenderTargetTextures(): boolean {\r\n if (this._diffuseTexture && this._diffuseTexture.isRenderTarget) {\r\n return true;\r\n }\r\n\r\n if (this._reflectionTexture && this._reflectionTexture.isRenderTarget) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * The entire material has been created in order to prevent overdraw.\r\n * @returns false\r\n */\r\n public override needAlphaTesting(): boolean {\r\n return true;\r\n }\r\n\r\n /**\r\n * The entire material has been created in order to prevent overdraw.\r\n * @returns true if blending is enable\r\n */\r\n public override needAlphaBlending(): boolean {\r\n return this.alpha < 1 || (this._diffuseTexture != null && this._diffuseTexture.hasAlpha) || this._shadowOnly;\r\n }\r\n\r\n /**\r\n * Checks whether the material is ready to be rendered for a given mesh.\r\n * @param mesh The mesh to render\r\n * @param subMesh The submesh to check against\r\n * @param useInstances Specify wether or not the material is used with instances\r\n * @returns true if all the dependencies are ready (Textures, Effects...)\r\n */\r\n public override isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances: boolean = false): boolean {\r\n const drawWrapper = subMesh._drawWrapper;\r\n\r\n if (drawWrapper.effect && this.isFrozen) {\r\n if (drawWrapper._wasPreviouslyReady && drawWrapper._wasPreviouslyUsingInstances === useInstances) {\r\n return true;\r\n }\r\n }\r\n\r\n if (!subMesh.materialDefines) {\r\n subMesh.materialDefines = new BackgroundMaterialDefines();\r\n }\r\n\r\n const scene = this.getScene();\r\n const defines = <BackgroundMaterialDefines>subMesh.materialDefines;\r\n\r\n if (this._isReadyForSubMesh(subMesh)) {\r\n return true;\r\n }\r\n\r\n const engine = scene.getEngine();\r\n\r\n // Lights\r\n PrepareDefinesForLights(scene, mesh, defines, false, this._maxSimultaneousLights);\r\n defines._needNormals = true;\r\n\r\n if (!AreLightsTexturesReady(scene, mesh, this._maxSimultaneousLights)) {\r\n return false;\r\n }\r\n\r\n // Multiview\r\n PrepareDefinesForMultiview(scene, defines);\r\n\r\n // Textures\r\n if (defines._areTexturesDirty) {\r\n defines._needUVs = false;\r\n if (scene.texturesEnabled) {\r\n if (scene.getEngine().getCaps().textureLOD) {\r\n defines.TEXTURELODSUPPORT = true;\r\n }\r\n\r\n if (this._diffuseTexture && MaterialFlags.DiffuseTextureEnabled) {\r\n if (!this._diffuseTexture.isReadyOrNotBlocking()) {\r\n return false;\r\n }\r\n\r\n PrepareDefinesForMergedUV(this._diffuseTexture, defines, \"DIFFUSE\");\r\n defines.DIFFUSEHASALPHA = this._diffuseTexture.hasAlpha;\r\n defines.GAMMADIFFUSE = this._diffuseTexture.gammaSpace;\r\n defines.OPACITYFRESNEL = this._opacityFresnel;\r\n } else {\r\n defines.DIFFUSE = false;\r\n defines.DIFFUSEDIRECTUV = 0;\r\n defines.DIFFUSEHASALPHA = false;\r\n defines.GAMMADIFFUSE = false;\r\n defines.OPACITYFRESNEL = false;\r\n }\r\n\r\n const reflectionTexture = this._reflectionTexture;\r\n PrepareDefinesForIBL(scene, reflectionTexture, defines);\r\n if (reflectionTexture && MaterialFlags.ReflectionTextureEnabled) {\r\n if (!reflectionTexture.isReadyOrNotBlocking()) {\r\n return false;\r\n }\r\n defines.EQUIRECTANGULAR_RELFECTION_FOV = this.useEquirectangularFOV;\r\n defines.REFLECTIONBGR = this.switchToBGR;\r\n defines.REFLECTIONBLUR = this._reflectionBlur > 0;\r\n\r\n if (this.reflectionFresnel) {\r\n defines.REFLECTIONFRESNEL = true;\r\n defines.REFLECTIONFALLOFF = this.reflectionFalloffDistance > 0;\r\n\r\n this._reflectionControls.x = this.reflectionAmount;\r\n this._reflectionControls.y = this.reflectionReflectance0;\r\n this._reflectionControls.z = this.reflectionReflectance90;\r\n this._reflectionControls.w = 1 / this.reflectionFalloffDistance;\r\n } else {\r\n defines.REFLECTIONFRESNEL = false;\r\n defines.REFLECTIONFALLOFF = false;\r\n }\r\n } else {\r\n defines.REFLECTIONFRESNEL = false;\r\n defines.REFLECTIONFALLOFF = false;\r\n defines.REFLECTIONBLUR = false;\r\n }\r\n }\r\n\r\n defines.PREMULTIPLYALPHA = this.alphaMode === Constants.ALPHA_PREMULTIPLIED || this.alphaMode === Constants.ALPHA_PREMULTIPLIED_PORTERDUFF;\r\n defines.USERGBCOLOR = this._useRGBColor;\r\n defines.NOISE = this._enableNoise;\r\n }\r\n\r\n if (defines._areLightsDirty) {\r\n defines.USEHIGHLIGHTANDSHADOWCOLORS = !this._useRGBColor && (this._primaryColorShadowLevel !== 0 || this._primaryColorHighlightLevel !== 0);\r\n defines.BACKMAT_SHADOWONLY = this._shadowOnly;\r\n }\r\n\r\n if (defines._areImageProcessingDirty && this._imageProcessingConfiguration) {\r\n if (!this._imageProcessingConfiguration.isReady()) {\r\n return false;\r\n }\r\n\r\n this._imageProcessingConfiguration.prepareDefines(defines);\r\n }\r\n\r\n if (defines._areMiscDirty) {\r\n if (defines.REFLECTIONMAP_3D && this._enableGroundProjection) {\r\n defines.PROJECTED_GROUND = true;\r\n defines.REFLECTIONMAP_SKYBOX = true;\r\n } else {\r\n defines.PROJECTED_GROUND = false;\r\n }\r\n }\r\n\r\n // Misc.\r\n PrepareDefinesForMisc(\r\n mesh,\r\n scene,\r\n this._useLogarithmicDepth,\r\n this.pointsCloud,\r\n this.fogEnabled,\r\n this.needAlphaTestingForMesh(mesh),\r\n defines,\r\n undefined,\r\n undefined,\r\n undefined,\r\n this._isVertexOutputInvariant\r\n );\r\n\r\n // Values that need to be evaluated on every frame\r\n PrepareDefinesForFrameBoundValues(scene, engine, this, defines, useInstances, null, subMesh.getRenderingMesh().hasThinInstances);\r\n\r\n // Attribs\r\n if (PrepareDefinesForAttributes(mesh, defines, false, true, false)) {\r\n if (mesh) {\r\n if (!scene.getEngine().getCaps().standardDerivatives && !mesh.isVerticesDataPresent(VertexBuffer.NormalKind)) {\r\n mesh.createNormals(true);\r\n Logger.Warn(\"BackgroundMaterial: Normals have been created for the mesh: \" + mesh.name);\r\n }\r\n }\r\n }\r\n\r\n // Get correct effect\r\n if (defines.isDirty) {\r\n defines.markAsProcessed();\r\n scene.resetCachedMaterial();\r\n\r\n // Fallbacks\r\n const fallbacks = new EffectFallbacks();\r\n if (defines.FOG) {\r\n fallbacks.addFallback(0, \"FOG\");\r\n }\r\n\r\n if (defines.POINTSIZE) {\r\n fallbacks.addFallback(1, \"POINTSIZE\");\r\n }\r\n\r\n if (defines.MULTIVIEW) {\r\n fallbacks.addFallback(0, \"MULTIVIEW\");\r\n }\r\n\r\n HandleFallbacksForShadows(defines, fallbacks, this._maxSimultaneousLights);\r\n\r\n //Attributes\r\n const attribs = [VertexBuffer.PositionKind];\r\n\r\n if (defines.NORMAL) {\r\n attribs.push(VertexBuffer.NormalKind);\r\n }\r\n\r\n if (defines.UV1) {\r\n attribs.push(VertexBuffer.UVKind);\r\n }\r\n\r\n if (defines.UV2) {\r\n attribs.push(VertexBuffer.UV2Kind);\r\n }\r\n\r\n PrepareAttributesForBones(attribs, mesh, defines, fallbacks);\r\n PrepareAttributesForInstances(attribs, defines);\r\n\r\n const uniforms = [\r\n \"world\",\r\n \"view\",\r\n \"viewProjection\",\r\n \"vEyePosition\",\r\n \"vLightsType\",\r\n \"vFogInfos\",\r\n \"vFogColor\",\r\n \"pointSize\",\r\n \"mBones\",\r\n\r\n \"vPrimaryColor\",\r\n \"vPrimaryColorShadow\",\r\n \"fFovMultiplier\",\r\n\r\n \"shadowLevel\",\r\n \"alpha\",\r\n\r\n \"vBackgroundCenter\",\r\n \"vReflectionControl\",\r\n\r\n \"vDiffuseInfos\",\r\n \"diffuseMatrix\",\r\n\r\n \"projectedGroundInfos\",\r\n \"logarithmicDepthConstant\",\r\n ];\r\n\r\n AddClipPlaneUniforms(uniforms);\r\n const samplers = [\"diffuseSampler\"];\r\n PrepareUniformsAndSamplersForIBL(uniforms, samplers, false);\r\n const uniformBuffers = [\"Material\", \"Scene\"];\r\n\r\n if (ImageProcessingConfiguration) {\r\n ImageProcessingConfiguration.PrepareUniforms(uniforms, defines);\r\n ImageProcessingConfiguration.PrepareSamplers(samplers, defines);\r\n }\r\n\r\n PrepareUniformsAndSamplersList(<IEffectCreationOptions>{\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: defines,\r\n maxSimultaneousLights: this._maxSimultaneousLights,\r\n shaderLanguage: this._shaderLanguage,\r\n });\r\n\r\n const join = defines.toString();\r\n const effect = scene.getEngine().createEffect(\r\n \"background\",\r\n <IEffectCreationOptions>{\r\n attributes: attribs,\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: join,\r\n fallbacks: fallbacks,\r\n onCompiled: this.onCompiled,\r\n onError: this.onError,\r\n indexParameters: { maxSimultaneousLights: this._maxSimultaneousLights },\r\n shaderLanguage: this._shaderLanguage,\r\n extraInitializationsAsync: this._shadersLoaded\r\n ? undefined\r\n : async () => {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n await Promise.all([import(\"../../ShadersWGSL/background.vertex\"), import(\"../../ShadersWGSL/background.fragment\")]);\r\n } else {\r\n await Promise.all([import(\"../../Shaders/background.vertex\"), import(\"../../Shaders/background.fragment\")]);\r\n }\r\n\r\n this._shadersLoaded = true;\r\n },\r\n },\r\n engine\r\n );\r\n subMesh.setEffect(effect, defines, this._materialContext);\r\n\r\n this.buildUniformLayout();\r\n }\r\n\r\n if (!subMesh.effect || !subMesh.effect.isReady()) {\r\n return false;\r\n }\r\n\r\n defines._renderId = scene.getRenderId();\r\n drawWrapper._wasPreviouslyReady = true;\r\n drawWrapper._wasPreviouslyUsingInstances = useInstances;\r\n\r\n this._checkScenePerformancePriority();\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Compute the primary color according to the chosen perceptual color.\r\n */\r\n private _computePrimaryColorFromPerceptualColor(): void {\r\n if (!this.__perceptualColor) {\r\n return;\r\n }\r\n\r\n this._primaryColor.copyFrom(this.__perceptualColor);\r\n\r\n // Revert gamma space.\r\n this._primaryColor.toLinearSpaceToRef(this._primaryColor, this.getScene().getEngine().useExactSrgbConversions);\r\n\r\n // Revert image processing configuration.\r\n if (this._imageProcessingConfiguration) {\r\n // Revert Exposure.\r\n this._primaryColor.scaleToRef(1 / this._imageProcessingConfiguration.exposure, this._primaryColor);\r\n }\r\n\r\n this._computePrimaryColors();\r\n }\r\n\r\n /**\r\n * Compute the highlights and shadow colors according to their chosen levels.\r\n */\r\n private _computePrimaryColors(): void {\r\n if (this._primaryColorShadowLevel === 0 && this._primaryColorHighlightLevel === 0) {\r\n return;\r\n }\r\n\r\n // Find the highlight color based on the configuration.\r\n this._primaryColor.scaleToRef(this._primaryColorShadowLevel, this._primaryShadowColor);\r\n this._primaryColor.subtractToRef(this._primaryShadowColor, this._primaryShadowColor);\r\n\r\n // Find the shadow color based on the configuration.\r\n this._white.subtractToRef(this._primaryColor, this._primaryHighlightColor);\r\n this._primaryHighlightColor.scaleToRef(this._primaryColorHighlightLevel, this._primaryHighlightColor);\r\n this._primaryColor.addToRef(this._primaryHighlightColor, this._primaryHighlightColor);\r\n }\r\n\r\n /**\r\n * Build the uniform buffer used in the material.\r\n */\r\n public override buildUniformLayout(): void {\r\n // Order is important !\r\n this._uniformBuffer.addUniform(\"vPrimaryColor\", 4);\r\n this._uniformBuffer.addUniform(\"vPrimaryColorShadow\", 4);\r\n this._uniformBuffer.addUniform(\"vDiffuseInfos\", 2);\r\n this._uniformBuffer.addUniform(\"diffuseMatrix\", 16);\r\n this._uniformBuffer.addUniform(\"fFovMultiplier\", 1);\r\n this._uniformBuffer.addUniform(\"pointSize\", 1);\r\n this._uniformBuffer.addUniform(\"shadowLevel\", 1);\r\n this._uniformBuffer.addUniform(\"alpha\", 1);\r\n this._uniformBuffer.addUniform(\"vBackgroundCenter\", 3);\r\n this._uniformBuffer.addUniform(\"vReflectionControl\", 4);\r\n this._uniformBuffer.addUniform(\"projectedGroundInfos\", 2);\r\n\r\n PrepareUniformLayoutForIBL(this._uniformBuffer, true, false, false);\r\n\r\n this._uniformBuffer.create();\r\n }\r\n\r\n /**\r\n * Unbind the material.\r\n */\r\n public override unbind(): void {\r\n if (this._diffuseTexture && this._diffuseTexture.isRenderTarget) {\r\n this._uniformBuffer.setTexture(\"diffuseSampler\", null);\r\n }\r\n\r\n if (this._reflectionTexture && this._reflectionTexture.isRenderTarget) {\r\n this._uniformBuffer.setTexture(\"reflectionSampler\", null);\r\n }\r\n\r\n super.unbind();\r\n }\r\n\r\n /**\r\n * Bind only the world matrix to the material.\r\n * @param world The world matrix to bind.\r\n */\r\n public override bindOnlyWorldMatrix(world: Matrix): void {\r\n this._activeEffect!.setMatrix(\"world\", world);\r\n }\r\n\r\n /**\r\n * Bind the material for a dedicated submesh (every used meshes will be considered opaque).\r\n * @param world The world matrix to bind.\r\n * @param mesh the mesh to bind for.\r\n * @param subMesh The submesh to bind for.\r\n */\r\n public override bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void {\r\n const scene = this.getScene();\r\n\r\n const defines = <BackgroundMaterialDefines>subMesh.materialDefines;\r\n if (!defines) {\r\n return;\r\n }\r\n\r\n const effect = subMesh.effect;\r\n if (!effect) {\r\n return;\r\n }\r\n this._activeEffect = effect;\r\n\r\n // Matrices\r\n this.bindOnlyWorldMatrix(world);\r\n\r\n // Bones\r\n BindBonesParameters(mesh, this._activeEffect);\r\n\r\n const mustRebind = this._mustRebind(scene, effect, subMesh, mesh.visibility);\r\n const needToAlwaysBindUniformBuffers = scene.getEngine()._features.needToAlwaysBindUniformBuffers;\r\n if (mustRebind) {\r\n this._uniformBuffer.bindToEffect(effect, \"Material\");\r\n\r\n this.bindViewProjection(effect);\r\n\r\n const reflectionTexture = this._reflectionTexture;\r\n if (!this._uniformBuffer.useUbo || !this.isFrozen || !this._uniformBuffer.isSync || subMesh._drawWrapper._forceRebindOnNextCall) {\r\n // Texture uniforms\r\n if (scene.texturesEnabled) {\r\n if (this._diffuseTexture && MaterialFlags.DiffuseTextureEnabled) {\r\n this._uniformBuffer.updateFloat2(\"vDiffuseInfos\", this._diffuseTexture.coordinatesIndex, this._diffuseTexture.level);\r\n BindTextureMatrix(this._diffuseTexture, this._uniformBuffer, \"diffuse\");\r\n }\r\n\r\n BindIBLParameters(scene, defines, this._uniformBuffer, Color3.White(), reflectionTexture, false, true, false, false, false, false, this._reflectionBlur);\r\n }\r\n\r\n if (this.shadowLevel > 0) {\r\n this._uniformBuffer.updateFloat(\"shadowLevel\", this.shadowLevel);\r\n }\r\n this._uniformBuffer.updateFloat(\"alpha\", this.alpha);\r\n\r\n // Point size\r\n if (this.pointsCloud) {\r\n this._uniformBuffer.updateFloat(\"pointSize\", this.pointSize);\r\n }\r\n\r\n if (defines.USEHIGHLIGHTANDSHADOWCOLORS) {\r\n this._uniformBuffer.updateColor4(\"vPrimaryColor\", this._primaryHighlightColor, 1.0);\r\n this._uniformBuffer.updateColor4(\"vPrimaryColorShadow\", this._primaryShadowColor, 1.0);\r\n } else {\r\n this._uniformBuffer.updateColor4(\"vPrimaryColor\", this._primaryColor, 1.0);\r\n }\r\n }\r\n\r\n this._uniformBuffer.updateFloat(\"fFovMultiplier\", this._fovMultiplier);\r\n\r\n // Fresnel\r\n if (defines.REFLECTIONFRESNEL) {\r\n this._uniformBuffer.updateFloat4(\r\n \"vReflectionControl\",\r\n this._reflectionControls.x,\r\n this._reflectionControls.y,\r\n this._reflectionControls.z,\r\n this._reflectionControls.w\r\n );\r\n }\r\n if ((defines.REFLECTIONFRESNEL && defines.REFLECTIONFALLOFF) || defines.OPACITYFRESNEL) {\r\n const center = TmpVectors.Vector3[0].copyFrom(this.sceneCenter).subtractInPlace(scene.floatingOriginOffset);\r\n this._uniformBuffer.updateFloat3(\"vBackgroundCenter\", center.x, center.y, center.z);\r\n }\r\n\r\n // Textures\r\n if (scene.texturesEnabled) {\r\n if (this._diffuseTexture && MaterialFlags.DiffuseTextureEnabled) {\r\n this._uniformBuffer.setTexture(\"diffuseSampler\", this._diffuseTexture);\r\n }\r\n\r\n if (reflectionTexture && MaterialFlags.ReflectionTextureEnabled) {\r\n BindIBLSamplers(scene, defines, this._uniformBuffer, reflectionTexture);\r\n }\r\n\r\n if (defines.PROJECTED_GROUND) {\r\n this._uniformBuffer.updateFloat2(\"projectedGroundInfos\", this.projectedGroundRadius, this.projectedGroundHeight);\r\n }\r\n }\r\n\r\n // Clip plane\r\n BindClipPlane(this._activeEffect, this, scene);\r\n\r\n scene.bindEyePosition(effect);\r\n } else if (needToAlwaysBindUniformBuffers) {\r\n this._uniformBuffer.bindToEffect(effect, \"Material\");\r\n this._needToBindSceneUbo = true;\r\n }\r\n\r\n if ((mustRebind || !this.isFrozen || needToAlwaysBindUniformBuffers) && scene.lightsEnabled) {\r\n BindLights(scene, mesh, this._activeEffect, defines, this._maxSimultaneousLights);\r\n }\r\n\r\n if (mustRebind || !this.isFrozen) {\r\n // View\r\n this.bindView(effect);\r\n\r\n // Fog\r\n BindFogParameters(scene, mesh, this._activeEffect, true);\r\n\r\n // Log. depth\r\n if (this._useLogarithmicDepth) {\r\n BindLogDepth(defines, effect, scene);\r\n }\r\n\r\n // image processing\r\n if (this._imageProcessingConfiguration) {\r\n this._imageProcessingConfiguration.bind(this._activeEffect);\r\n }\r\n }\r\n\r\n this._afterBind(mesh, this._activeEffect, subMesh);\r\n\r\n this._uniformBuffer.update();\r\n }\r\n\r\n /**\r\n * Checks to see if a texture is used in the material.\r\n * @param texture - Base texture to use.\r\n * @returns - Boolean specifying if a texture is used in the material.\r\n */\r\n public override hasTexture(texture: BaseTexture): boolean {\r\n if (super.hasTexture(texture)) {\r\n return true;\r\n }\r\n\r\n if (this._reflectionTexture === texture) {\r\n return true;\r\n }\r\n\r\n if (this._diffuseTexture === texture) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Dispose the material.\r\n * @param forceDisposeEffect Force disposal of the associated effect.\r\n * @param forceDisposeTextures Force disposal of the associated textures.\r\n */\r\n public override dispose(forceDisposeEffect: boolean = false, forceDisposeTextures: boolean = false): void {\r\n if (forceDisposeTextures) {\r\n if (this.diffuseTexture) {\r\n this.diffuseTexture.dispose();\r\n }\r\n if (this.reflectionTexture) {\r\n this.reflectionTexture.dispose();\r\n }\r\n }\r\n\r\n this._renderTargets.dispose();\r\n\r\n if (this._imageProcessingConfiguration && this._imageProcessingObserver) {\r\n this._imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingObserver);\r\n }\r\n\r\n super.dispose(forceDisposeEffect);\r\n }\r\n\r\n /**\r\n * Clones the material.\r\n * @param name The cloned name.\r\n * @returns The cloned material.\r\n */\r\n public override clone(name: string): BackgroundMaterial {\r\n return SerializationHelper.Clone(() => new BackgroundMaterial(name, this.getScene()), this);\r\n }\r\n\r\n /**\r\n * Serializes the current material to its JSON representation.\r\n * @returns The JSON representation.\r\n */\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.customType = \"BABYLON.BackgroundMaterial\";\r\n return serializationObject;\r\n }\r\n\r\n /**\r\n * Gets the class name of the material\r\n * @returns \"BackgroundMaterial\"\r\n */\r\n public override getClassName(): string {\r\n return \"BackgroundMaterial\";\r\n }\r\n\r\n /**\r\n * Parse a JSON input to create back a background material.\r\n * @param source The JSON data to parse\r\n * @param scene The scene to create the parsed material in\r\n * @param rootUrl The root url of the assets the material depends upon\r\n * @returns the instantiated BackgroundMaterial.\r\n */\r\n public static override Parse(source: any, scene: Scene, rootUrl: string): BackgroundMaterial {\r\n return SerializationHelper.Parse(() => new BackgroundMaterial(source.name, scene), source, scene, rootUrl);\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for backgroundMaterial.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterBackgroundMaterial(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n RegisterClass(\"BABYLON.BackgroundMaterial\", BackgroundMaterial);\r\n}\r\n"]}
1
+ {"version":3,"file":"backgroundMaterial.pure.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/Background/backgroundMaterial.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\n/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { serialize, serializeAsColor3, expandToProperty, serializeAsTexture, serializeAsVector3 } from \"../../Misc/decorators\";\r\nimport { SmartArray } from \"../../Misc/smartArray\";\r\nimport { Logger } from \"../../Misc/logger\";\r\nimport { type Nullable, type int, type float } from \"../../types\";\r\nimport { type Scene } from \"../../scene.pure\";\r\nimport { type Matrix, TmpVectors, Vector3, Vector4 } from \"../../Maths/math.vector.pure\";\r\nimport { VertexBuffer } from \"../../Buffers/buffer.pure\";\r\nimport { type SubMesh } from \"../../Meshes/subMesh.pure\";\r\nimport { type AbstractMesh } from \"../../Meshes/abstractMesh.pure\";\r\nimport { type Mesh } from \"../../Meshes/mesh.pure\";\r\nimport { type IEffectCreationOptions } from \"../../Materials/effect.pure\";\r\nimport { MaterialDefines } from \"../../Materials/materialDefines\";\r\nimport { PushMaterial } from \"../../Materials/pushMaterial\";\r\nimport { ImageProcessingDefinesMixin } from \"../../Materials/imageProcessingConfiguration.defines\";\r\nimport { ImageProcessingConfiguration, RegisterImageProcessingConfiguration } from \"../../Materials/imageProcessingConfiguration.pure\";\r\nimport { type BaseTexture } from \"../../Materials/Textures/baseTexture.pure\";\r\nimport { type RenderTargetTexture } from \"../../Materials/Textures/renderTargetTexture.pure\";\r\nimport { type IShadowLight } from \"../../Lights/shadowLight\";\r\nimport { Constants } from \"../../Engines/constants\";\r\nimport { MaterialFlags } from \"../materialFlags\";\r\nimport { Color3 } from \"../../Maths/math.color.pure\";\r\n\r\nimport { EffectFallbacks } from \"../effectFallbacks\";\r\nimport { AddClipPlaneUniforms, BindClipPlane } from \"../clipPlaneMaterialHelper\";\r\nimport {\r\n BindBonesParameters,\r\n BindFogParameters,\r\n BindLights,\r\n BindLogDepth,\r\n BindTextureMatrix,\r\n BindIBLParameters,\r\n BindIBLSamplers,\r\n HandleFallbacksForShadows,\r\n PrepareAttributesForBones,\r\n PrepareAttributesForInstances,\r\n PrepareDefinesForAttributes,\r\n PrepareDefinesForFrameBoundValues,\r\n PrepareDefinesForLights,\r\n PrepareDefinesForIBL,\r\n PrepareDefinesForMergedUV,\r\n PrepareDefinesForMisc,\r\n PrepareDefinesForMultiview,\r\n PrepareUniformsAndSamplersList,\r\n PrepareUniformsAndSamplersForIBL,\r\n PrepareUniformLayoutForIBL,\r\n AreLightsTexturesReady,\r\n} from \"../materialHelper.functions\";\r\nimport { SerializationHelper } from \"../../Misc/decorators.serialization\";\r\nimport { ShaderLanguage } from \"../shaderLanguage\";\r\nimport { ImageProcessingMixin } from \"../imageProcessing\";\r\nimport { RegisterClass } from \"../../Misc/typeStore\";\r\n\r\nclass BackgroundMaterialDefinesBase extends MaterialDefines {}\r\n\r\n/**\r\n * Background material defines definition.\r\n * @internal Mainly internal Use\r\n */\r\nclass BackgroundMaterialDefines extends ImageProcessingDefinesMixin(BackgroundMaterialDefinesBase) {\r\n /**\r\n * True if the diffuse texture is in use.\r\n */\r\n public DIFFUSE = false;\r\n\r\n /**\r\n * The direct UV channel to use.\r\n */\r\n public DIFFUSEDIRECTUV = 0;\r\n\r\n /**\r\n * True if the diffuse texture is in gamma space.\r\n */\r\n public GAMMADIFFUSE = false;\r\n\r\n /**\r\n * True if the diffuse texture has opacity in the alpha channel.\r\n */\r\n public DIFFUSEHASALPHA = false;\r\n\r\n /**\r\n * True if you want the material to fade to transparent at grazing angle.\r\n */\r\n public OPACITYFRESNEL = false;\r\n\r\n /**\r\n * True if an extra blur needs to be added in the reflection.\r\n */\r\n public REFLECTIONBLUR = false;\r\n\r\n /**\r\n * True if you want the material to fade to reflection at grazing angle.\r\n */\r\n public REFLECTIONFRESNEL = false;\r\n\r\n /**\r\n * True if you want the material to falloff as far as you move away from the scene center.\r\n */\r\n public REFLECTIONFALLOFF = false;\r\n\r\n /**\r\n * False if the current Webgl implementation does not support the texture lod extension.\r\n */\r\n public TEXTURELODSUPPORT = false;\r\n\r\n /**\r\n * True to ensure the data are premultiplied.\r\n */\r\n public PREMULTIPLYALPHA = false;\r\n\r\n /**\r\n * True if the texture contains cooked RGB values and not gray scaled multipliers.\r\n */\r\n public USERGBCOLOR = false;\r\n\r\n /**\r\n * True if highlight and shadow levels have been specified. It can help ensuring the main perceived color\r\n * stays aligned with the desired configuration.\r\n */\r\n public USEHIGHLIGHTANDSHADOWCOLORS = false;\r\n\r\n /**\r\n * True if only shadows must be rendered\r\n */\r\n public BACKMAT_SHADOWONLY = false;\r\n\r\n /**\r\n * True to add noise in order to reduce the banding effect.\r\n */\r\n public NOISE = false;\r\n\r\n /**\r\n * is the reflection texture in BGR color scheme?\r\n * Mainly used to solve a bug in ios10 video tag\r\n */\r\n public REFLECTIONBGR = false;\r\n\r\n /**\r\n * True if ground projection has been enabled.\r\n */\r\n public PROJECTED_GROUND = false;\r\n\r\n /** Defines whether reflection is enabled */\r\n public REFLECTION = false;\r\n /** Defines whether the reflection map is 3D */\r\n public REFLECTIONMAP_3D = false;\r\n /** Defines whether the reflection map is spherical */\r\n public REFLECTIONMAP_SPHERICAL = false;\r\n /** Defines whether the reflection map is planar */\r\n public REFLECTIONMAP_PLANAR = false;\r\n /** Defines whether the reflection map is cubic */\r\n public REFLECTIONMAP_CUBIC = false;\r\n /** Defines whether the reflection map is in projection mode */\r\n public REFLECTIONMAP_PROJECTION = false;\r\n /** Defines whether the reflection map is a skybox */\r\n public REFLECTIONMAP_SKYBOX = false;\r\n /** Defines whether the reflection map is explicit */\r\n public REFLECTIONMAP_EXPLICIT = false;\r\n /** Defines whether the reflection map is equirectangular */\r\n public REFLECTIONMAP_EQUIRECTANGULAR = false;\r\n /** Defines whether the reflection map is fixed equirectangular */\r\n public REFLECTIONMAP_EQUIRECTANGULAR_FIXED = false;\r\n /** Defines whether the reflection map is mirrored fixed equirectangular */\r\n public REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED = false;\r\n /** Defines whether the cubic map should be inverted */\r\n public INVERTCUBICMAP = false;\r\n /** Defines whether the reflection map uses opposite Z */\r\n public REFLECTIONMAP_OPPOSITEZ = false;\r\n /** Defines whether LOD is stored in the reflection alpha channel */\r\n public LODINREFLECTIONALPHA = false;\r\n /** Defines whether the reflection uses gamma space */\r\n public GAMMAREFLECTION = false;\r\n /** Defines whether the reflection is in RGBD format */\r\n public RGBDREFLECTION = false;\r\n /** Defines whether the equirectangular reflection uses a custom field of view */\r\n public EQUIRECTANGULAR_RELFECTION_FOV = false;\r\n\r\n /** Defines whether main UV1 channel is used */\r\n public MAINUV1 = false;\r\n /** Defines whether main UV2 channel is used */\r\n public MAINUV2 = false;\r\n /** Defines whether UV1 is used */\r\n public UV1 = false;\r\n /** Defines whether UV2 is used */\r\n public UV2 = false;\r\n /** Defines whether clip plane 1 is enabled */\r\n public CLIPPLANE = false;\r\n /** Defines whether clip plane 2 is enabled */\r\n public CLIPPLANE2 = false;\r\n /** Defines whether clip plane 3 is enabled */\r\n public CLIPPLANE3 = false;\r\n /** Defines whether clip plane 4 is enabled */\r\n public CLIPPLANE4 = false;\r\n /** Defines whether clip plane 5 is enabled */\r\n public CLIPPLANE5 = false;\r\n /** Defines whether clip plane 6 is enabled */\r\n public CLIPPLANE6 = false;\r\n /** Defines whether point size is used */\r\n public POINTSIZE = false;\r\n /** Defines whether fog is enabled */\r\n public FOG = false;\r\n /** Defines whether normals are available */\r\n public NORMAL = false;\r\n /** Defines the number of bone influencers */\r\n public NUM_BONE_INFLUENCERS = 0;\r\n /** Defines the number of bones per mesh */\r\n public BonesPerMesh = 0;\r\n /** Defines whether instances are used */\r\n public INSTANCES = false;\r\n /** Defines whether shadow uses float textures */\r\n public SHADOWFLOAT = false;\r\n /** Defines whether logarithmic depth is enabled */\r\n public LOGARITHMICDEPTH = false;\r\n /** Defines whether non-uniform scaling is applied */\r\n public NONUNIFORMSCALING = false;\r\n /** Defines whether alpha testing is enabled */\r\n public ALPHATEST = false;\r\n\r\n /**\r\n * Constructor of the defines.\r\n */\r\n constructor() {\r\n super();\r\n this.rebuild();\r\n }\r\n}\r\n\r\nclass BackgroundMaterialBase extends ImageProcessingMixin(PushMaterial) {}\r\n/**\r\n * Background material used to create an efficient environment around your scene.\r\n * #157MGZ: simple test\r\n */\r\nexport class BackgroundMaterial extends BackgroundMaterialBase {\r\n /**\r\n * Standard reflectance value at parallel view angle.\r\n */\r\n public static StandardReflectance0 = 0.05;\r\n\r\n /**\r\n * Standard reflectance value at grazing angle.\r\n */\r\n public static StandardReflectance90 = 0.5;\r\n\r\n @serializeAsColor3()\r\n protected _primaryColor: Color3;\r\n /**\r\n * Key light Color (multiply against the environment texture)\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsLightsDirty\")\r\n public accessor primaryColor = Color3.White();\r\n\r\n @serializeAsColor3()\r\n protected __perceptualColor: Nullable<Color3>;\r\n /**\r\n * Experimental Internal Use Only.\r\n *\r\n * Key light Color in \"perceptual value\" meaning the color you would like to see on screen.\r\n * This acts as a helper to set the primary color to a more \"human friendly\" value.\r\n * Conversion to linear space as well as exposure and tone mapping correction will be applied to keep the\r\n * output color as close as possible from the chosen value.\r\n * (This does not account for contrast color grading and color curves as they are considered post effect and not directly\r\n * part of lighting setup.)\r\n */\r\n public get _perceptualColor(): Nullable<Color3> {\r\n return this.__perceptualColor;\r\n }\r\n public set _perceptualColor(value: Nullable<Color3>) {\r\n this.__perceptualColor = value;\r\n this._computePrimaryColorFromPerceptualColor();\r\n this._markAllSubMeshesAsLightsDirty();\r\n }\r\n\r\n @serialize()\r\n protected _primaryColorShadowLevel: float = 0;\r\n /**\r\n * Defines the level of the shadows (dark area of the reflection map) in order to help scaling the colors.\r\n * The color opposite to the primary color is used at the level chosen to define what the black area would look.\r\n */\r\n public get primaryColorShadowLevel(): float {\r\n return this._primaryColorShadowLevel;\r\n }\r\n public set primaryColorShadowLevel(value: float) {\r\n this._primaryColorShadowLevel = value;\r\n this._computePrimaryColors();\r\n this._markAllSubMeshesAsLightsDirty();\r\n }\r\n\r\n @serialize()\r\n protected _primaryColorHighlightLevel: float = 0;\r\n /**\r\n * Defines the level of the highlights (highlight area of the reflection map) in order to help scaling the colors.\r\n * The primary color is used at the level chosen to define what the white area would look.\r\n */\r\n public get primaryColorHighlightLevel(): float {\r\n return this._primaryColorHighlightLevel;\r\n }\r\n public set primaryColorHighlightLevel(value: float) {\r\n this._primaryColorHighlightLevel = value;\r\n this._computePrimaryColors();\r\n this._markAllSubMeshesAsLightsDirty();\r\n }\r\n\r\n @serializeAsTexture()\r\n protected _reflectionTexture: Nullable<BaseTexture>;\r\n /**\r\n * Reflection Texture used in the material.\r\n * Should be author in a specific way for the best result (refer to the documentation).\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor reflectionTexture: Nullable<BaseTexture> = null;\r\n\r\n @serialize()\r\n protected _reflectionBlur: float;\r\n /**\r\n * Reflection Texture level of blur.\r\n *\r\n * Can be use to reuse an existing HDR Texture and target a specific LOD to prevent authoring the\r\n * texture twice.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor reflectionBlur: float = 0;\r\n\r\n @serializeAsTexture()\r\n protected _diffuseTexture: Nullable<BaseTexture>;\r\n /**\r\n * Diffuse Texture used in the material.\r\n * Should be author in a specific way for the best result (refer to the documentation).\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor diffuseTexture: Nullable<BaseTexture> = null;\r\n\r\n protected _shadowLights: Nullable<IShadowLight[]> = null;\r\n /**\r\n * Specify the list of lights casting shadow on the material.\r\n * All scene shadow lights will be included if null.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor shadowLights: Nullable<IShadowLight[]> = null;\r\n\r\n @serialize()\r\n protected _shadowLevel: float;\r\n /**\r\n * Helps adjusting the shadow to a softer level if required.\r\n * 0 means black shadows and 1 means no shadows.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor shadowLevel: float = 0;\r\n\r\n @serializeAsVector3()\r\n protected _sceneCenter: Vector3;\r\n /**\r\n * In case of opacity Fresnel or reflection falloff, this is use as a scene center.\r\n * It is usually zero but might be interesting to modify according to your setup.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor sceneCenter: Vector3 = Vector3.Zero();\r\n\r\n @serialize()\r\n protected _opacityFresnel: boolean;\r\n /**\r\n * This helps specifying that the material is falling off to the sky box at grazing angle.\r\n * This helps ensuring a nice transition when the camera goes under the ground.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor opacityFresnel: boolean = true;\r\n\r\n @serialize()\r\n protected _reflectionFresnel: boolean;\r\n /**\r\n * This helps specifying that the material is falling off from diffuse to the reflection texture at grazing angle.\r\n * This helps adding a mirror texture on the ground.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor reflectionFresnel: boolean = false;\r\n\r\n @serialize()\r\n protected _reflectionFalloffDistance: number;\r\n /**\r\n * This helps specifying the falloff radius off the reflection texture from the sceneCenter.\r\n * This helps adding a nice falloff effect to the reflection if used as a mirror for instance.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor reflectionFalloffDistance: number = 0.0;\r\n\r\n @serialize()\r\n protected _reflectionAmount: number;\r\n /**\r\n * This specifies the weight of the reflection against the background in case of reflection Fresnel.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor reflectionAmount: number = 1.0;\r\n\r\n @serialize()\r\n protected _reflectionReflectance0: number;\r\n /**\r\n * This specifies the weight of the reflection at grazing angle.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor reflectionReflectance0: number = 0.05;\r\n\r\n @serialize()\r\n protected _reflectionReflectance90: number;\r\n /**\r\n * This specifies the weight of the reflection at a perpendicular point of view.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor reflectionReflectance90: number = 0.5;\r\n\r\n /**\r\n * Sets the reflection reflectance fresnel values according to the default standard\r\n * empirically know to work well :-)\r\n */\r\n public set reflectionStandardFresnelWeight(value: number) {\r\n let reflectionWeight = value;\r\n\r\n if (reflectionWeight < 0.5) {\r\n reflectionWeight = reflectionWeight * 2.0;\r\n this.reflectionReflectance0 = BackgroundMaterial.StandardReflectance0 * reflectionWeight;\r\n this.reflectionReflectance90 = BackgroundMaterial.StandardReflectance90 * reflectionWeight;\r\n } else {\r\n reflectionWeight = reflectionWeight * 2.0 - 1.0;\r\n this.reflectionReflectance0 = BackgroundMaterial.StandardReflectance0 + (1.0 - BackgroundMaterial.StandardReflectance0) * reflectionWeight;\r\n this.reflectionReflectance90 = BackgroundMaterial.StandardReflectance90 + (1.0 - BackgroundMaterial.StandardReflectance90) * reflectionWeight;\r\n }\r\n }\r\n\r\n @serialize()\r\n protected _useRGBColor: boolean;\r\n /**\r\n * Helps to directly use the maps channels instead of their level.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor useRGBColor: boolean = true;\r\n\r\n @serialize()\r\n protected _enableNoise: boolean;\r\n /**\r\n * This helps reducing the banding effect that could occur on the background.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor enableNoise: boolean = false;\r\n\r\n /**\r\n * The current fov(field of view) multiplier, 0.0 - 2.0. Defaults to 1.0. Lower values \"zoom in\" and higher values \"zoom out\".\r\n * Best used when trying to implement visual zoom effects like fish-eye or binoculars while not adjusting camera fov.\r\n * Recommended to be keep at 1.0 except for special cases.\r\n */\r\n public get fovMultiplier(): number {\r\n return this._fovMultiplier;\r\n }\r\n public set fovMultiplier(value: number) {\r\n if (isNaN(value)) {\r\n value = 1.0;\r\n }\r\n this._fovMultiplier = Math.max(0.0, Math.min(2.0, value));\r\n }\r\n private _fovMultiplier: float = 1.0;\r\n\r\n /**\r\n * Enable the FOV adjustment feature controlled by fovMultiplier.\r\n */\r\n public useEquirectangularFOV: boolean = false;\r\n\r\n @serialize()\r\n private _maxSimultaneousLights: int = 4;\r\n /**\r\n * Number of Simultaneous lights allowed on the material.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor maxSimultaneousLights: int = 4;\r\n\r\n @serialize()\r\n private _shadowOnly: boolean = false;\r\n /**\r\n * Make the material only render shadows\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsLightsDirty\")\r\n public accessor shadowOnly: boolean = false;\r\n\r\n /**\r\n * Due to a bug in iOS10, video tags (which are using the background material) are in BGR and not RGB.\r\n * Setting this flag to true (not done automatically!) will convert it back to RGB.\r\n */\r\n public switchToBGR: boolean = false;\r\n\r\n private _enableGroundProjection: boolean = false;\r\n /**\r\n * Enables the ground projection mode on the material.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/environment/skybox#ground-projection\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsMiscDirty\")\r\n public accessor enableGroundProjection: boolean = false;\r\n\r\n /**\r\n * Defines the radius of the projected ground if enableGroundProjection is true.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/environment/skybox#ground-projection\r\n */\r\n @serialize()\r\n public projectedGroundRadius = 1000;\r\n\r\n /**\r\n * Defines the height of the projected ground if enableGroundProjection is true.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/environment/skybox#ground-projection\r\n */\r\n @serialize()\r\n public projectedGroundHeight = 10;\r\n\r\n // Temp values kept as cache in the material.\r\n private _renderTargets = new SmartArray<RenderTargetTexture>(16);\r\n private _reflectionControls = Vector4.Zero();\r\n private _white = Color3.White();\r\n private _primaryShadowColor = Color3.Black();\r\n private _primaryHighlightColor = Color3.Black();\r\n\r\n private _shadersLoaded = false;\r\n\r\n /**\r\n * Instantiates a Background Material in the given scene\r\n * @param name The friendly name of the material\r\n * @param scene The scene to add the material to\r\n * @param forceGLSL Use the GLSL code generation for the shader (even on WebGPU). Default is false\r\n */\r\n constructor(name: string, scene?: Scene, forceGLSL = false) {\r\n super(name, scene, undefined, forceGLSL);\r\n\r\n // Setup the default processing configuration to the scene.\r\n this._attachImageProcessingConfiguration(null);\r\n\r\n this.getRenderTargetTextures = (): SmartArray<RenderTargetTexture> => {\r\n this._renderTargets.reset();\r\n\r\n if (this._diffuseTexture && this._diffuseTexture.isRenderTarget) {\r\n this._renderTargets.push(this._diffuseTexture as RenderTargetTexture);\r\n }\r\n\r\n if (this._reflectionTexture && this._reflectionTexture.isRenderTarget) {\r\n this._renderTargets.push(this._reflectionTexture as RenderTargetTexture);\r\n }\r\n\r\n return this._renderTargets;\r\n };\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating that current material needs to register RTT\r\n */\r\n public override get hasRenderTargetTextures(): boolean {\r\n if (this._diffuseTexture && this._diffuseTexture.isRenderTarget) {\r\n return true;\r\n }\r\n\r\n if (this._reflectionTexture && this._reflectionTexture.isRenderTarget) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * The entire material has been created in order to prevent overdraw.\r\n * @returns false\r\n */\r\n public override needAlphaTesting(): boolean {\r\n return true;\r\n }\r\n\r\n /**\r\n * The entire material has been created in order to prevent overdraw.\r\n * @returns true if blending is enable\r\n */\r\n public override needAlphaBlending(): boolean {\r\n return this.alpha < 1 || (this._diffuseTexture != null && this._diffuseTexture.hasAlpha) || this._shadowOnly;\r\n }\r\n\r\n /**\r\n * Checks whether the material is ready to be rendered for a given mesh.\r\n * @param mesh The mesh to render\r\n * @param subMesh The submesh to check against\r\n * @param useInstances Specify wether or not the material is used with instances\r\n * @returns true if all the dependencies are ready (Textures, Effects...)\r\n */\r\n public override isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances: boolean = false): boolean {\r\n const drawWrapper = subMesh._drawWrapper;\r\n\r\n if (drawWrapper.effect && this.isFrozen) {\r\n if (drawWrapper._wasPreviouslyReady && drawWrapper._wasPreviouslyUsingInstances === useInstances) {\r\n return true;\r\n }\r\n }\r\n\r\n if (!subMesh.materialDefines) {\r\n subMesh.materialDefines = new BackgroundMaterialDefines();\r\n }\r\n\r\n const scene = this.getScene();\r\n const defines = <BackgroundMaterialDefines>subMesh.materialDefines;\r\n\r\n if (this._isReadyForSubMesh(subMesh)) {\r\n return true;\r\n }\r\n\r\n const engine = scene.getEngine();\r\n\r\n // Lights\r\n PrepareDefinesForLights(scene, mesh, defines, false, this._maxSimultaneousLights);\r\n defines._needNormals = true;\r\n\r\n if (!AreLightsTexturesReady(scene, mesh, this._maxSimultaneousLights)) {\r\n return false;\r\n }\r\n\r\n // Multiview\r\n PrepareDefinesForMultiview(scene, defines);\r\n\r\n // Textures\r\n if (defines._areTexturesDirty) {\r\n defines._needUVs = false;\r\n if (scene.texturesEnabled) {\r\n if (scene.getEngine().getCaps().textureLOD) {\r\n defines.TEXTURELODSUPPORT = true;\r\n }\r\n\r\n if (this._diffuseTexture && MaterialFlags.DiffuseTextureEnabled) {\r\n if (!this._diffuseTexture.isReadyOrNotBlocking()) {\r\n return false;\r\n }\r\n\r\n PrepareDefinesForMergedUV(this._diffuseTexture, defines, \"DIFFUSE\");\r\n defines.DIFFUSEHASALPHA = this._diffuseTexture.hasAlpha;\r\n defines.GAMMADIFFUSE = this._diffuseTexture.gammaSpace;\r\n defines.OPACITYFRESNEL = this._opacityFresnel;\r\n } else {\r\n defines.DIFFUSE = false;\r\n defines.DIFFUSEDIRECTUV = 0;\r\n defines.DIFFUSEHASALPHA = false;\r\n defines.GAMMADIFFUSE = false;\r\n defines.OPACITYFRESNEL = false;\r\n }\r\n\r\n const reflectionTexture = this._reflectionTexture;\r\n PrepareDefinesForIBL(scene, reflectionTexture, defines);\r\n if (reflectionTexture && MaterialFlags.ReflectionTextureEnabled) {\r\n if (!reflectionTexture.isReadyOrNotBlocking()) {\r\n return false;\r\n }\r\n defines.EQUIRECTANGULAR_RELFECTION_FOV = this.useEquirectangularFOV;\r\n defines.REFLECTIONBGR = this.switchToBGR;\r\n defines.REFLECTIONBLUR = this._reflectionBlur > 0;\r\n\r\n if (this.reflectionFresnel) {\r\n defines.REFLECTIONFRESNEL = true;\r\n defines.REFLECTIONFALLOFF = this.reflectionFalloffDistance > 0;\r\n\r\n this._reflectionControls.x = this.reflectionAmount;\r\n this._reflectionControls.y = this.reflectionReflectance0;\r\n this._reflectionControls.z = this.reflectionReflectance90;\r\n this._reflectionControls.w = 1 / this.reflectionFalloffDistance;\r\n } else {\r\n defines.REFLECTIONFRESNEL = false;\r\n defines.REFLECTIONFALLOFF = false;\r\n }\r\n } else {\r\n defines.REFLECTIONFRESNEL = false;\r\n defines.REFLECTIONFALLOFF = false;\r\n defines.REFLECTIONBLUR = false;\r\n }\r\n }\r\n\r\n defines.PREMULTIPLYALPHA = this.alphaMode === Constants.ALPHA_PREMULTIPLIED || this.alphaMode === Constants.ALPHA_PREMULTIPLIED_PORTERDUFF;\r\n defines.USERGBCOLOR = this._useRGBColor;\r\n defines.NOISE = this._enableNoise;\r\n }\r\n\r\n if (defines._areLightsDirty) {\r\n defines.USEHIGHLIGHTANDSHADOWCOLORS = !this._useRGBColor && (this._primaryColorShadowLevel !== 0 || this._primaryColorHighlightLevel !== 0);\r\n defines.BACKMAT_SHADOWONLY = this._shadowOnly;\r\n }\r\n\r\n if (defines._areImageProcessingDirty && this._imageProcessingConfiguration) {\r\n if (!this._imageProcessingConfiguration.isReady()) {\r\n return false;\r\n }\r\n\r\n this._imageProcessingConfiguration.prepareDefines(defines);\r\n }\r\n\r\n if (defines._areMiscDirty) {\r\n if (defines.REFLECTIONMAP_3D && this._enableGroundProjection) {\r\n defines.PROJECTED_GROUND = true;\r\n defines.REFLECTIONMAP_SKYBOX = true;\r\n } else {\r\n defines.PROJECTED_GROUND = false;\r\n }\r\n }\r\n\r\n // Misc.\r\n PrepareDefinesForMisc(\r\n mesh,\r\n scene,\r\n this._useLogarithmicDepth,\r\n this.pointsCloud,\r\n this.fogEnabled,\r\n this.needAlphaTestingForMesh(mesh),\r\n defines,\r\n undefined,\r\n undefined,\r\n undefined,\r\n this._isVertexOutputInvariant\r\n );\r\n\r\n // Values that need to be evaluated on every frame\r\n PrepareDefinesForFrameBoundValues(scene, engine, this, defines, useInstances, null, subMesh.getRenderingMesh().hasThinInstances);\r\n\r\n // Attribs\r\n if (PrepareDefinesForAttributes(mesh, defines, false, true, false)) {\r\n if (mesh) {\r\n if (!scene.getEngine().getCaps().standardDerivatives && !mesh.isVerticesDataPresent(VertexBuffer.NormalKind)) {\r\n mesh.createNormals(true);\r\n Logger.Warn(\"BackgroundMaterial: Normals have been created for the mesh: \" + mesh.name);\r\n }\r\n }\r\n }\r\n\r\n // Get correct effect\r\n if (defines.isDirty) {\r\n defines.markAsProcessed();\r\n scene.resetCachedMaterial();\r\n\r\n // Fallbacks\r\n const fallbacks = new EffectFallbacks();\r\n if (defines.FOG) {\r\n fallbacks.addFallback(0, \"FOG\");\r\n }\r\n\r\n if (defines.POINTSIZE) {\r\n fallbacks.addFallback(1, \"POINTSIZE\");\r\n }\r\n\r\n if (defines.MULTIVIEW) {\r\n fallbacks.addFallback(0, \"MULTIVIEW\");\r\n }\r\n\r\n HandleFallbacksForShadows(defines, fallbacks, this._maxSimultaneousLights);\r\n\r\n //Attributes\r\n const attribs = [VertexBuffer.PositionKind];\r\n\r\n if (defines.NORMAL) {\r\n attribs.push(VertexBuffer.NormalKind);\r\n }\r\n\r\n if (defines.UV1) {\r\n attribs.push(VertexBuffer.UVKind);\r\n }\r\n\r\n if (defines.UV2) {\r\n attribs.push(VertexBuffer.UV2Kind);\r\n }\r\n\r\n PrepareAttributesForBones(attribs, mesh, defines, fallbacks);\r\n PrepareAttributesForInstances(attribs, defines);\r\n\r\n const uniforms = [\r\n \"world\",\r\n \"view\",\r\n \"viewProjection\",\r\n \"vEyePosition\",\r\n \"vLightsType\",\r\n \"vFogInfos\",\r\n \"vFogColor\",\r\n \"pointSize\",\r\n \"mBones\",\r\n\r\n \"vPrimaryColor\",\r\n \"vPrimaryColorShadow\",\r\n \"fFovMultiplier\",\r\n\r\n \"shadowLevel\",\r\n \"alpha\",\r\n\r\n \"vBackgroundCenter\",\r\n \"vReflectionControl\",\r\n\r\n \"vDiffuseInfos\",\r\n \"diffuseMatrix\",\r\n\r\n \"projectedGroundInfos\",\r\n \"logarithmicDepthConstant\",\r\n ];\r\n\r\n AddClipPlaneUniforms(uniforms);\r\n const samplers = [\"diffuseSampler\"];\r\n PrepareUniformsAndSamplersForIBL(uniforms, samplers, false);\r\n const uniformBuffers = [\"Material\", \"Scene\"];\r\n\r\n if (ImageProcessingConfiguration) {\r\n ImageProcessingConfiguration.PrepareUniforms(uniforms, defines);\r\n ImageProcessingConfiguration.PrepareSamplers(samplers, defines);\r\n }\r\n\r\n PrepareUniformsAndSamplersList(<IEffectCreationOptions>{\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: defines,\r\n maxSimultaneousLights: this._maxSimultaneousLights,\r\n shaderLanguage: this._shaderLanguage,\r\n });\r\n\r\n const join = defines.toString();\r\n const effect = scene.getEngine().createEffect(\r\n \"background\",\r\n <IEffectCreationOptions>{\r\n attributes: attribs,\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: join,\r\n fallbacks: fallbacks,\r\n onCompiled: this.onCompiled,\r\n onError: this.onError,\r\n indexParameters: { maxSimultaneousLights: this._maxSimultaneousLights },\r\n shaderLanguage: this._shaderLanguage,\r\n extraInitializationsAsync: this._shadersLoaded\r\n ? undefined\r\n : async () => {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n await Promise.all([import(\"../../ShadersWGSL/background.vertex\"), import(\"../../ShadersWGSL/background.fragment\")]);\r\n } else {\r\n await Promise.all([import(\"../../Shaders/background.vertex\"), import(\"../../Shaders/background.fragment\")]);\r\n }\r\n\r\n this._shadersLoaded = true;\r\n },\r\n },\r\n engine\r\n );\r\n subMesh.setEffect(effect, defines, this._materialContext);\r\n\r\n this.buildUniformLayout();\r\n }\r\n\r\n if (!subMesh.effect || !subMesh.effect.isReady()) {\r\n return false;\r\n }\r\n\r\n defines._renderId = scene.getRenderId();\r\n drawWrapper._wasPreviouslyReady = true;\r\n drawWrapper._wasPreviouslyUsingInstances = useInstances;\r\n\r\n this._checkScenePerformancePriority();\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Compute the primary color according to the chosen perceptual color.\r\n */\r\n private _computePrimaryColorFromPerceptualColor(): void {\r\n if (!this.__perceptualColor) {\r\n return;\r\n }\r\n\r\n this._primaryColor.copyFrom(this.__perceptualColor);\r\n\r\n // Revert gamma space.\r\n this._primaryColor.toLinearSpaceToRef(this._primaryColor, this.getScene().getEngine().useExactSrgbConversions);\r\n\r\n // Revert image processing configuration.\r\n if (this._imageProcessingConfiguration) {\r\n // Revert Exposure.\r\n this._primaryColor.scaleToRef(1 / this._imageProcessingConfiguration.exposure, this._primaryColor);\r\n }\r\n\r\n this._computePrimaryColors();\r\n }\r\n\r\n /**\r\n * Compute the highlights and shadow colors according to their chosen levels.\r\n */\r\n private _computePrimaryColors(): void {\r\n if (this._primaryColorShadowLevel === 0 && this._primaryColorHighlightLevel === 0) {\r\n return;\r\n }\r\n\r\n // Find the highlight color based on the configuration.\r\n this._primaryColor.scaleToRef(this._primaryColorShadowLevel, this._primaryShadowColor);\r\n this._primaryColor.subtractToRef(this._primaryShadowColor, this._primaryShadowColor);\r\n\r\n // Find the shadow color based on the configuration.\r\n this._white.subtractToRef(this._primaryColor, this._primaryHighlightColor);\r\n this._primaryHighlightColor.scaleToRef(this._primaryColorHighlightLevel, this._primaryHighlightColor);\r\n this._primaryColor.addToRef(this._primaryHighlightColor, this._primaryHighlightColor);\r\n }\r\n\r\n /**\r\n * Build the uniform buffer used in the material.\r\n */\r\n public override buildUniformLayout(): void {\r\n // Order is important !\r\n this._uniformBuffer.addUniform(\"vPrimaryColor\", 4);\r\n this._uniformBuffer.addUniform(\"vPrimaryColorShadow\", 4);\r\n this._uniformBuffer.addUniform(\"vDiffuseInfos\", 2);\r\n this._uniformBuffer.addUniform(\"diffuseMatrix\", 16);\r\n this._uniformBuffer.addUniform(\"fFovMultiplier\", 1);\r\n this._uniformBuffer.addUniform(\"pointSize\", 1);\r\n this._uniformBuffer.addUniform(\"shadowLevel\", 1);\r\n this._uniformBuffer.addUniform(\"alpha\", 1);\r\n this._uniformBuffer.addUniform(\"vBackgroundCenter\", 3);\r\n this._uniformBuffer.addUniform(\"vReflectionControl\", 4);\r\n this._uniformBuffer.addUniform(\"projectedGroundInfos\", 2);\r\n\r\n PrepareUniformLayoutForIBL(this._uniformBuffer, true, false, false);\r\n\r\n this._uniformBuffer.create();\r\n }\r\n\r\n /**\r\n * Unbind the material.\r\n */\r\n public override unbind(): void {\r\n if (this._diffuseTexture && this._diffuseTexture.isRenderTarget) {\r\n this._uniformBuffer.setTexture(\"diffuseSampler\", null);\r\n }\r\n\r\n if (this._reflectionTexture && this._reflectionTexture.isRenderTarget) {\r\n this._uniformBuffer.setTexture(\"reflectionSampler\", null);\r\n }\r\n\r\n super.unbind();\r\n }\r\n\r\n /**\r\n * Bind only the world matrix to the material.\r\n * @param world The world matrix to bind.\r\n */\r\n public override bindOnlyWorldMatrix(world: Matrix): void {\r\n this._activeEffect!.setMatrix(\"world\", world);\r\n }\r\n\r\n /**\r\n * Bind the material for a dedicated submesh (every used meshes will be considered opaque).\r\n * @param world The world matrix to bind.\r\n * @param mesh the mesh to bind for.\r\n * @param subMesh The submesh to bind for.\r\n */\r\n public override bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void {\r\n const scene = this.getScene();\r\n\r\n const defines = <BackgroundMaterialDefines>subMesh.materialDefines;\r\n if (!defines) {\r\n return;\r\n }\r\n\r\n const effect = subMesh.effect;\r\n if (!effect) {\r\n return;\r\n }\r\n this._activeEffect = effect;\r\n\r\n // Matrices\r\n this.bindOnlyWorldMatrix(world);\r\n\r\n // Bones\r\n BindBonesParameters(mesh, this._activeEffect);\r\n\r\n const mustRebind = this._mustRebind(scene, effect, subMesh, mesh.visibility);\r\n const needToAlwaysBindUniformBuffers = scene.getEngine()._features.needToAlwaysBindUniformBuffers;\r\n if (mustRebind) {\r\n this._uniformBuffer.bindToEffect(effect, \"Material\");\r\n\r\n this.bindViewProjection(effect);\r\n\r\n const reflectionTexture = this._reflectionTexture;\r\n if (!this._uniformBuffer.useUbo || !this.isFrozen || !this._uniformBuffer.isSync || subMesh._drawWrapper._forceRebindOnNextCall) {\r\n // Texture uniforms\r\n if (scene.texturesEnabled) {\r\n if (this._diffuseTexture && MaterialFlags.DiffuseTextureEnabled) {\r\n this._uniformBuffer.updateFloat2(\"vDiffuseInfos\", this._diffuseTexture.coordinatesIndex, this._diffuseTexture.level);\r\n BindTextureMatrix(this._diffuseTexture, this._uniformBuffer, \"diffuse\");\r\n }\r\n\r\n BindIBLParameters(scene, defines, this._uniformBuffer, Color3.White(), reflectionTexture, false, true, false, false, false, false, this._reflectionBlur);\r\n }\r\n\r\n if (this.shadowLevel > 0) {\r\n this._uniformBuffer.updateFloat(\"shadowLevel\", this.shadowLevel);\r\n }\r\n this._uniformBuffer.updateFloat(\"alpha\", this.alpha);\r\n\r\n // Point size\r\n if (this.pointsCloud) {\r\n this._uniformBuffer.updateFloat(\"pointSize\", this.pointSize);\r\n }\r\n\r\n if (defines.USEHIGHLIGHTANDSHADOWCOLORS) {\r\n this._uniformBuffer.updateColor4(\"vPrimaryColor\", this._primaryHighlightColor, 1.0);\r\n this._uniformBuffer.updateColor4(\"vPrimaryColorShadow\", this._primaryShadowColor, 1.0);\r\n } else {\r\n this._uniformBuffer.updateColor4(\"vPrimaryColor\", this._primaryColor, 1.0);\r\n }\r\n }\r\n\r\n this._uniformBuffer.updateFloat(\"fFovMultiplier\", this._fovMultiplier);\r\n\r\n // Fresnel\r\n if (defines.REFLECTIONFRESNEL) {\r\n this._uniformBuffer.updateFloat4(\r\n \"vReflectionControl\",\r\n this._reflectionControls.x,\r\n this._reflectionControls.y,\r\n this._reflectionControls.z,\r\n this._reflectionControls.w\r\n );\r\n }\r\n if ((defines.REFLECTIONFRESNEL && defines.REFLECTIONFALLOFF) || defines.OPACITYFRESNEL) {\r\n const center = TmpVectors.Vector3[0].copyFrom(this.sceneCenter).subtractInPlace(scene.floatingOriginOffset);\r\n this._uniformBuffer.updateFloat3(\"vBackgroundCenter\", center.x, center.y, center.z);\r\n }\r\n\r\n // Textures\r\n if (scene.texturesEnabled) {\r\n if (this._diffuseTexture && MaterialFlags.DiffuseTextureEnabled) {\r\n this._uniformBuffer.setTexture(\"diffuseSampler\", this._diffuseTexture);\r\n }\r\n\r\n if (reflectionTexture && MaterialFlags.ReflectionTextureEnabled) {\r\n BindIBLSamplers(scene, defines, this._uniformBuffer, reflectionTexture);\r\n }\r\n\r\n if (defines.PROJECTED_GROUND) {\r\n this._uniformBuffer.updateFloat2(\"projectedGroundInfos\", this.projectedGroundRadius, this.projectedGroundHeight);\r\n }\r\n }\r\n\r\n // Clip plane\r\n BindClipPlane(this._activeEffect, this, scene);\r\n\r\n scene.bindEyePosition(effect);\r\n } else if (needToAlwaysBindUniformBuffers) {\r\n this._uniformBuffer.bindToEffect(effect, \"Material\");\r\n this._needToBindSceneUbo = true;\r\n }\r\n\r\n if ((mustRebind || !this.isFrozen || needToAlwaysBindUniformBuffers) && scene.lightsEnabled) {\r\n BindLights(scene, mesh, this._activeEffect, defines, this._maxSimultaneousLights);\r\n }\r\n\r\n if (mustRebind || !this.isFrozen) {\r\n // View\r\n this.bindView(effect);\r\n\r\n // Fog\r\n BindFogParameters(scene, mesh, this._activeEffect, true);\r\n\r\n // Log. depth\r\n if (this._useLogarithmicDepth) {\r\n BindLogDepth(defines, effect, scene);\r\n }\r\n\r\n // image processing\r\n if (this._imageProcessingConfiguration) {\r\n this._imageProcessingConfiguration.bind(this._activeEffect);\r\n }\r\n }\r\n\r\n this._afterBind(mesh, this._activeEffect, subMesh);\r\n\r\n this._uniformBuffer.update();\r\n }\r\n\r\n /**\r\n * Checks to see if a texture is used in the material.\r\n * @param texture - Base texture to use.\r\n * @returns - Boolean specifying if a texture is used in the material.\r\n */\r\n public override hasTexture(texture: BaseTexture): boolean {\r\n if (super.hasTexture(texture)) {\r\n return true;\r\n }\r\n\r\n if (this._reflectionTexture === texture) {\r\n return true;\r\n }\r\n\r\n if (this._diffuseTexture === texture) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Dispose the material.\r\n * @param forceDisposeEffect Force disposal of the associated effect.\r\n * @param forceDisposeTextures Force disposal of the associated textures.\r\n */\r\n public override dispose(forceDisposeEffect: boolean = false, forceDisposeTextures: boolean = false): void {\r\n if (forceDisposeTextures) {\r\n if (this.diffuseTexture) {\r\n this.diffuseTexture.dispose();\r\n }\r\n if (this.reflectionTexture) {\r\n this.reflectionTexture.dispose();\r\n }\r\n }\r\n\r\n this._renderTargets.dispose();\r\n\r\n if (this._imageProcessingConfiguration && this._imageProcessingObserver) {\r\n this._imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingObserver);\r\n }\r\n\r\n super.dispose(forceDisposeEffect);\r\n }\r\n\r\n /**\r\n * Clones the material.\r\n * @param name The cloned name.\r\n * @returns The cloned material.\r\n */\r\n public override clone(name: string): BackgroundMaterial {\r\n return SerializationHelper.Clone(() => new BackgroundMaterial(name, this.getScene()), this);\r\n }\r\n\r\n /**\r\n * Serializes the current material to its JSON representation.\r\n * @returns The JSON representation.\r\n */\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.customType = \"BABYLON.BackgroundMaterial\";\r\n return serializationObject;\r\n }\r\n\r\n /**\r\n * Gets the class name of the material\r\n * @returns \"BackgroundMaterial\"\r\n */\r\n public override getClassName(): string {\r\n return \"BackgroundMaterial\";\r\n }\r\n\r\n /**\r\n * Parse a JSON input to create back a background material.\r\n * @param source The JSON data to parse\r\n * @param scene The scene to create the parsed material in\r\n * @param rootUrl The root url of the assets the material depends upon\r\n * @returns the instantiated BackgroundMaterial.\r\n */\r\n public static override Parse(source: any, scene: Scene, rootUrl: string): BackgroundMaterial {\r\n return SerializationHelper.Parse(() => new BackgroundMaterial(source.name, scene), source, scene, rootUrl);\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for backgroundMaterial.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterBackgroundMaterial(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n // BackgroundMaterial serializes its image processing configuration, so the parser must be registered for clone/parse to work.\r\n RegisterImageProcessingConfiguration();\r\n\r\n RegisterClass(\"BABYLON.BackgroundMaterial\", BackgroundMaterial);\r\n}\r\n"]}
@@ -23,12 +23,22 @@ export declare class GaussianSplattingGpuPickingMaterialPlugin extends MaterialP
23
23
  private _partVisibility;
24
24
  private _defaultPartVisibility;
25
25
  private _maxPartCount;
26
+ private _enableDepthPicking;
27
+ private _enablePackedDepthPicking;
26
28
  /**
27
29
  * Creates a new GaussianSplattingGpuPickingMaterialPlugin.
28
30
  * @param material The GaussianSplattingMaterial to attach the plugin to.
29
31
  * @param maxPartCount The maximum number of parts supported for compound meshes.
30
32
  */
31
33
  constructor(material: GaussianSplattingMaterial, maxPartCount?: number);
34
+ /**
35
+ * Enables writing the GPU picker depth MRT attachment.
36
+ */
37
+ set enableDepthPicking(value: boolean);
38
+ /**
39
+ * Enables byte-packed depth output for the GPU picker depth MRT attachment.
40
+ */
41
+ set enablePackedDepthPicking(value: boolean);
32
42
  /**
33
43
  * Encodes a 24-bit picking ID into normalized RGB components.
34
44
  * @param id The picking ID to encode
@@ -80,6 +90,11 @@ export declare class GaussianSplattingGpuPickingMaterialPlugin extends MaterialP
80
90
  * @returns true
81
91
  */
82
92
  isReadyForSubMesh(_defines: MaterialDefines, _scene: Scene, _engine: AbstractEngine, _subMesh: SubMesh): boolean;
93
+ /**
94
+ * Sets the defines for the next rendering.
95
+ * @param defines the list of defines to update
96
+ */
97
+ prepareDefines(defines: MaterialDefines): void;
83
98
  /**
84
99
  * Returns custom shader code to inject GPU picking color output.
85
100
  *
@@ -17,16 +17,41 @@ export class GaussianSplattingGpuPickingMaterialPlugin extends MaterialPluginBas
17
17
  * @param maxPartCount The maximum number of parts supported for compound meshes.
18
18
  */
19
19
  constructor(material, maxPartCount) {
20
- super(material, "GaussianSplatGpuPicking", 200);
20
+ super(material, "GaussianSplatGpuPicking", 200, {
21
+ GPUPICKER_DEPTH: false,
22
+ GPUPICKER_PACK_DEPTH: false,
23
+ });
21
24
  this._pickingColor = [0, 0, 0];
22
25
  this._isCompound = false;
23
26
  this._partPickingColors = [];
24
27
  this._partVisibility = [];
25
28
  this._defaultPartVisibility = [];
29
+ this._enableDepthPicking = false;
30
+ this._enablePackedDepthPicking = false;
26
31
  this._maxPartCount = maxPartCount ?? GetGaussianSplattingMaxPartCount(material.getScene().getEngine());
27
32
  this._defaultPartVisibility = new Array(this._maxPartCount).fill(1.0);
28
33
  this._enable(true);
29
34
  }
35
+ /**
36
+ * Enables writing the GPU picker depth MRT attachment.
37
+ */
38
+ set enableDepthPicking(value) {
39
+ if (this._enableDepthPicking === value) {
40
+ return;
41
+ }
42
+ this._enableDepthPicking = value;
43
+ this.markAllDefinesAsDirty();
44
+ }
45
+ /**
46
+ * Enables byte-packed depth output for the GPU picker depth MRT attachment.
47
+ */
48
+ set enablePackedDepthPicking(value) {
49
+ if (this._enablePackedDepthPicking === value) {
50
+ return;
51
+ }
52
+ this._enablePackedDepthPicking = value;
53
+ this.markAllDefinesAsDirty();
54
+ }
30
55
  /**
31
56
  * Encodes a 24-bit picking ID into normalized RGB components.
32
57
  * @param id The picking ID to encode
@@ -115,6 +140,14 @@ export class GaussianSplattingGpuPickingMaterialPlugin extends MaterialPluginBas
115
140
  isReadyForSubMesh(_defines, _scene, _engine, _subMesh) {
116
141
  return true;
117
142
  }
143
+ /**
144
+ * Sets the defines for the next rendering.
145
+ * @param defines the list of defines to update
146
+ */
147
+ prepareDefines(defines) {
148
+ defines["GPUPICKER_DEPTH"] = this._enableDepthPicking;
149
+ defines["GPUPICKER_PACK_DEPTH"] = this._enableDepthPicking && this._enablePackedDepthPicking;
150
+ }
118
151
  /**
119
152
  * Returns custom shader code to inject GPU picking color output.
120
153
  *
@@ -1 +1 @@
1
- {"version":3,"file":"gaussianSplattingGpuPickingMaterialPlugin.pure.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { type Nullable } from \"../../types\";\r\nimport { type Scene } from \"../../scene.pure\";\r\nimport { type AbstractEngine } from \"../../Engines/abstractEngine.pure\";\r\nimport { type SubMesh } from \"../../Meshes/subMesh.pure\";\r\nimport { type UniformBuffer } from \"../uniformBuffer\";\r\nimport { type MaterialDefines } from \"../materialDefines\";\r\nimport { MaterialPluginBase } from \"../materialPluginBase.pure\";\r\nimport { ShaderLanguage } from \"../shaderLanguage\";\r\nimport { GetGaussianSplattingMaxPartCount, type GaussianSplattingMaterial } from \"./gaussianSplattingMaterial.pure\";\r\nimport { RegisterClass } from \"../../Misc/typeStore\";\r\n\r\n/**\r\n * Plugin for GaussianSplattingMaterial that replaces per-splat color output with\r\n * a pre-computed picking color for GPU-based hit testing.\r\n *\r\n * The picking color is computed on the CPU by encoding a 24-bit picking ID as RGB\r\n * (matching the readback decoding in GPUPicker).\r\n * @experimental\r\n */\r\nexport class GaussianSplattingGpuPickingMaterialPlugin extends MaterialPluginBase {\r\n private _pickingColor: [number, number, number] = [0, 0, 0];\r\n private _isCompound: boolean = false;\r\n private _partPickingColors: number[] = [];\r\n private _partVisibility: number[] = [];\r\n private _defaultPartVisibility: number[] = [];\r\n private _maxPartCount: number;\r\n\r\n /**\r\n * Creates a new GaussianSplattingGpuPickingMaterialPlugin.\r\n * @param material The GaussianSplattingMaterial to attach the plugin to.\r\n * @param maxPartCount The maximum number of parts supported for compound meshes.\r\n */\r\n constructor(material: GaussianSplattingMaterial, maxPartCount?: number) {\r\n super(material, \"GaussianSplatGpuPicking\", 200);\r\n\r\n this._maxPartCount = maxPartCount ?? GetGaussianSplattingMaxPartCount(material.getScene().getEngine());\r\n this._defaultPartVisibility = new Array(this._maxPartCount).fill(1.0);\r\n this._enable(true);\r\n }\r\n\r\n /**\r\n * Encodes a 24-bit picking ID into normalized RGB components.\r\n * @param id The picking ID to encode\r\n * @returns A tuple [r, g, b] with values in [0, 1]\r\n */\r\n public static EncodeIdToColor(id: number): [number, number, number] {\r\n return [((id >> 16) & 0xff) / 255, ((id >> 8) & 0xff) / 255, (id & 0xff) / 255];\r\n }\r\n\r\n /**\r\n * Sets the picking color for a non-compound mesh from a picking ID.\r\n * The ID is encoded into an RGB color on the CPU.\r\n * @param id The 24-bit picking ID.\r\n */\r\n public set meshId(id: number) {\r\n this._pickingColor = GaussianSplattingGpuPickingMaterialPlugin.EncodeIdToColor(id);\r\n }\r\n\r\n /**\r\n * Sets whether this material is for a compound mesh with per-part picking.\r\n */\r\n public set isCompound(value: boolean) {\r\n this._isCompound = value;\r\n this.markAllDefinesAsDirty();\r\n }\r\n\r\n /**\r\n * Gets whether this material is for a compound mesh with per-part picking.\r\n */\r\n public get isCompound(): boolean {\r\n return this._isCompound;\r\n }\r\n\r\n /**\r\n * Sets the per-part picking colors from an array of picking IDs.\r\n * Each ID is encoded into an RGB color on the CPU.\r\n * @param ids Array mapping part index to picking ID.\r\n */\r\n public set partMeshIds(ids: number[]) {\r\n const colors: number[] = [];\r\n for (let i = 0; i < this._maxPartCount; i++) {\r\n const c = i < ids.length ? GaussianSplattingGpuPickingMaterialPlugin.EncodeIdToColor(ids[i]) : ([0, 0, 0] as [number, number, number]);\r\n colors.push(c[0], c[1], c[2]);\r\n }\r\n this._partPickingColors = colors;\r\n }\r\n\r\n /**\r\n * Sets which parts are active (pickable) for the compound picking pass.\r\n * Parts not in the set are discarded in the shader by overriding partVisibility to 0.\r\n * @param activeParts Array of part indices that should be pickable.\r\n */\r\n public setPartActive(activeParts: number[]): void {\r\n const visibility = this._partVisibility;\r\n visibility.length = this._maxPartCount;\r\n visibility.fill(0.0);\r\n for (const index of activeParts) {\r\n if (index >= 0 && index < this._maxPartCount) {\r\n visibility[index] = 1.0;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @returns the class name\r\n */\r\n public override getClassName(): string {\r\n return \"GaussianSplattingGpuPickingMaterialPlugin\";\r\n }\r\n\r\n /**\r\n * Indicates this plugin supports both GLSL and WGSL.\r\n * @param shaderLanguage the shader language to check\r\n * @returns true for GLSL and WGSL\r\n */\r\n public override isCompatible(shaderLanguage: ShaderLanguage): boolean {\r\n switch (shaderLanguage) {\r\n case ShaderLanguage.GLSL:\r\n case ShaderLanguage.WGSL:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Always ready — no textures or async resources to wait on.\r\n * @param _defines the defines\r\n * @param _scene the scene\r\n * @param _engine the engine\r\n * @param _subMesh the submesh\r\n * @returns true\r\n */\r\n public override isReadyForSubMesh(_defines: MaterialDefines, _scene: Scene, _engine: AbstractEngine, _subMesh: SubMesh): boolean {\r\n return true;\r\n }\r\n\r\n /**\r\n * Returns custom shader code to inject GPU picking color output.\r\n *\r\n * @param shaderType \"vertex\" or \"fragment\"\r\n * @param shaderLanguage the shader language to use (default: GLSL)\r\n * @returns null or a map of injection point names to code strings\r\n */\r\n public override getCustomCode(shaderType: string, shaderLanguage = ShaderLanguage.GLSL): Nullable<{ [pointName: string]: string }> {\r\n if (shaderLanguage === ShaderLanguage.WGSL) {\r\n return this._getCustomCodeWGSL(shaderType);\r\n }\r\n return this._getCustomCodeGLSL(shaderType);\r\n }\r\n\r\n private _getCustomCodeGLSL(shaderType: string): Nullable<{ [pointName: string]: string }> {\r\n if (shaderType === \"vertex\") {\r\n return {\r\n CUSTOM_VERTEX_DEFINITIONS: `varying float vPartIndex;`,\r\n CUSTOM_VERTEX_UPDATE: `\r\n#if IS_COMPOUND\r\n vPartIndex = float(splat.partIndex);\r\n#else\r\n vPartIndex = 0.0;\r\n#endif\r\n `,\r\n };\r\n } else if (shaderType === \"fragment\") {\r\n return {\r\n CUSTOM_FRAGMENT_DEFINITIONS: `\r\nvarying float vPartIndex;\r\n#if IS_COMPOUND\r\nuniform vec3 partPickingColors[${this._maxPartCount}];\r\n#else\r\nuniform vec3 pickingColor;\r\n#endif\r\n `,\r\n CUSTOM_FRAGMENT_BEFORE_FRAGCOLOR: `\r\n#if IS_COMPOUND\r\n if (vColor.a < 0.001) discard;\r\n finalColor = vec4(partPickingColors[int(vPartIndex + 0.5)], 1.0);\r\n#else\r\n if (vColor.a < 0.001) discard;\r\n finalColor = vec4(pickingColor, 1.0);\r\n#endif\r\n `,\r\n };\r\n }\r\n return null;\r\n }\r\n\r\n private _getCustomCodeWGSL(shaderType: string): Nullable<{ [pointName: string]: string }> {\r\n if (shaderType === \"vertex\") {\r\n return {\r\n CUSTOM_VERTEX_DEFINITIONS: `varying vPartIndex: f32;`,\r\n CUSTOM_VERTEX_UPDATE: `\r\n#if IS_COMPOUND\r\n vertexOutputs.vPartIndex = f32(splat.partIndex);\r\n#else\r\n vertexOutputs.vPartIndex = 0.0;\r\n#endif\r\n `,\r\n };\r\n } else if (shaderType === \"fragment\") {\r\n return {\r\n CUSTOM_FRAGMENT_DEFINITIONS: `\r\nvarying vPartIndex: f32;\r\n#if IS_COMPOUND\r\nuniform partPickingColors: array<vec3f, ${this._maxPartCount}>;\r\n#else\r\nuniform pickingColor: vec3f;\r\n#endif\r\n `,\r\n CUSTOM_FRAGMENT_BEFORE_FRAGCOLOR: `\r\n#if IS_COMPOUND\r\n if (fragmentInputs.vColor.a < 0.001) { discard; }\r\n finalColor = vec4f(uniforms.partPickingColors[i32(fragmentInputs.vPartIndex + 0.5)], 1.0);\r\n#else\r\n if (fragmentInputs.vColor.a < 0.001) { discard; }\r\n finalColor = vec4f(uniforms.pickingColor, 1.0);\r\n#endif\r\n `,\r\n };\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Registers the picking uniforms with the engine.\r\n * @returns uniform descriptions\r\n */\r\n public override getUniforms(): {\r\n ubo?: Array<{ name: string; size?: number; type?: string; arraySize?: number }>;\r\n vertex?: string;\r\n fragment?: string;\r\n externalUniforms?: string[];\r\n } {\r\n return {\r\n externalUniforms: [\"pickingColor\", \"partPickingColors\"],\r\n };\r\n }\r\n\r\n /**\r\n * Binds the picking color uniform(s) each frame.\r\n * @param _uniformBuffer the uniform buffer (unused — we bind directly on the effect)\r\n * @param _scene the current scene\r\n * @param _engine the current engine\r\n * @param subMesh the submesh being rendered\r\n */\r\n public override bindForSubMesh(_uniformBuffer: UniformBuffer, _scene: Scene, _engine: AbstractEngine, subMesh: SubMesh): void {\r\n const effect = subMesh.effect;\r\n if (!effect) {\r\n return;\r\n }\r\n\r\n if (this._isCompound) {\r\n effect.setArray3(\"partPickingColors\", this._partPickingColors);\r\n // default all visible when setPartActive hasn't been called\r\n const visibility = this._partVisibility.length > 0 ? this._partVisibility : this._defaultPartVisibility;\r\n effect.setArray(\"partVisibility\", visibility);\r\n } else {\r\n effect.setFloat3(\"pickingColor\", this._pickingColor[0], this._pickingColor[1], this._pickingColor[2]);\r\n }\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for gaussianSplattingGpuPickingMaterialPlugin.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterGaussianSplattingGpuPickingMaterialPlugin(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n RegisterClass(\"BABYLON.GaussianSplattingGpuPickingMaterialPlugin\", GaussianSplattingGpuPickingMaterialPlugin);\r\n}\r\n"]}
1
+ {"version":3,"file":"gaussianSplattingGpuPickingMaterialPlugin.pure.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAQ7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAAE,gCAAgC,EAAkC,MAAM,kCAAkC,CAAC;AACpH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD;;;;;;;GAOG;AACH,MAAM,OAAO,yCAA0C,SAAQ,kBAAkB;IAU7E;;;;OAIG;IACH,YAAY,QAAmC,EAAE,YAAqB;QAClE,KAAK,CAAC,QAAQ,EAAE,yBAAyB,EAAE,GAAG,EAAE;YAC5C,eAAe,EAAE,KAAK;YACtB,oBAAoB,EAAE,KAAK;SAC9B,CAAC,CAAC;QAlBC,kBAAa,GAA6B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACpD,gBAAW,GAAY,KAAK,CAAC;QAC7B,uBAAkB,GAAa,EAAE,CAAC;QAClC,oBAAe,GAAa,EAAE,CAAC;QAC/B,2BAAsB,GAAa,EAAE,CAAC;QAEtC,wBAAmB,GAAG,KAAK,CAAC;QAC5B,8BAAyB,GAAG,KAAK,CAAC;QAatC,IAAI,CAAC,aAAa,GAAG,YAAY,IAAI,gCAAgC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;QACvG,IAAI,CAAC,sBAAsB,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,IAAW,kBAAkB,CAAC,KAAc;QACxC,IAAI,IAAI,CAAC,mBAAmB,KAAK,KAAK,EAAE,CAAC;YACrC,OAAO;QACX,CAAC;QAED,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,IAAW,wBAAwB,CAAC,KAAc;QAC9C,IAAI,IAAI,CAAC,yBAAyB,KAAK,KAAK,EAAE,CAAC;YAC3C,OAAO;QACX,CAAC;QAED,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;QACvC,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,eAAe,CAAC,EAAU;QACpC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IACpF,CAAC;IAED;;;;OAIG;IACH,IAAW,MAAM,CAAC,EAAU;QACxB,IAAI,CAAC,aAAa,GAAG,yCAAyC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IACvF,CAAC;IAED;;OAEG;IACH,IAAW,UAAU,CAAC,KAAc;QAChC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,IAAW,UAAU;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,IAAW,WAAW,CAAC,GAAa;QAChC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,yCAAyC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAA8B,CAAC;YACvI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACI,aAAa,CAAC,WAAqB;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC;QACxC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;QACvC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;YAC9B,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC3C,UAAU,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;YAC5B,CAAC;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACa,YAAY;QACxB,OAAO,2CAA2C,CAAC;IACvD,CAAC;IAED;;;;OAIG;IACa,YAAY,CAAC,cAA8B;QACvD,QAAQ,cAAc,EAAE,CAAC;YACrB,iCAAyB;YACzB;gBACI,OAAO,IAAI,CAAC;YAChB;gBACI,OAAO,KAAK,CAAC;QACrB,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACa,iBAAiB,CAAC,QAAyB,EAAE,MAAa,EAAE,OAAuB,EAAE,QAAiB;QAClH,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;OAGG;IACa,cAAc,CAAC,OAAwB;QACnD,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACtD,OAAO,CAAC,sBAAsB,CAAC,GAAG,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,yBAAyB,CAAC;IACjG,CAAC;IAED;;;;;;OAMG;IACa,aAAa,CAAC,UAAkB,EAAE,cAAc,8BAAsB;QAClF,IAAI,cAAc,gCAAwB,EAAE,CAAC;YACzC,OAAO,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC;IAEO,kBAAkB,CAAC,UAAkB;QACzC,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC1B,OAAO;gBACH,yBAAyB,EAAE,2BAA2B;gBACtD,oBAAoB,EAAE;;;;;;iBAMrB;aACJ,CAAC;QACN,CAAC;aAAM,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;YACnC,OAAO;gBACH,2BAA2B,EAAE;;;iCAGZ,IAAI,CAAC,aAAa;;;;iBAIlC;gBACD,gCAAgC,EAAE;;;;;;;;iBAQjC;aACJ,CAAC;QACN,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,kBAAkB,CAAC,UAAkB;QACzC,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC1B,OAAO;gBACH,yBAAyB,EAAE,0BAA0B;gBACrD,oBAAoB,EAAE;;;;;;iBAMrB;aACJ,CAAC;QACN,CAAC;aAAM,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;YACnC,OAAO;gBACH,2BAA2B,EAAE;;;0CAGH,IAAI,CAAC,aAAa;;;;iBAI3C;gBACD,gCAAgC,EAAE;;;;;;;;iBAQjC;aACJ,CAAC;QACN,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;OAGG;IACa,WAAW;QAMvB,OAAO;YACH,gBAAgB,EAAE,CAAC,cAAc,EAAE,mBAAmB,CAAC;SAC1D,CAAC;IACN,CAAC;IAED;;;;;;OAMG;IACa,cAAc,CAAC,cAA6B,EAAE,MAAa,EAAE,OAAuB,EAAE,OAAgB;QAClH,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO;QACX,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,MAAM,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC/D,4DAA4D;YAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC;YACxG,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1G,CAAC;IACL,CAAC;CACJ;AAED,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB;;;GAGG;AACH,MAAM,UAAU,iDAAiD;IAC7D,IAAI,WAAW,EAAE,CAAC;QACd,OAAO;IACX,CAAC;IACD,WAAW,GAAG,IAAI,CAAC;IAEnB,aAAa,CAAC,mDAAmD,EAAE,yCAAyC,CAAC,CAAC;AAClH,CAAC","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { type Nullable } from \"../../types\";\r\nimport { type Scene } from \"../../scene.pure\";\r\nimport { type AbstractEngine } from \"../../Engines/abstractEngine.pure\";\r\nimport { type SubMesh } from \"../../Meshes/subMesh.pure\";\r\nimport { type UniformBuffer } from \"../uniformBuffer\";\r\nimport { type MaterialDefines } from \"../materialDefines\";\r\nimport { MaterialPluginBase } from \"../materialPluginBase.pure\";\r\nimport { ShaderLanguage } from \"../shaderLanguage\";\r\nimport { GetGaussianSplattingMaxPartCount, type GaussianSplattingMaterial } from \"./gaussianSplattingMaterial.pure\";\r\nimport { RegisterClass } from \"../../Misc/typeStore\";\r\n\r\n/**\r\n * Plugin for GaussianSplattingMaterial that replaces per-splat color output with\r\n * a pre-computed picking color for GPU-based hit testing.\r\n *\r\n * The picking color is computed on the CPU by encoding a 24-bit picking ID as RGB\r\n * (matching the readback decoding in GPUPicker).\r\n * @experimental\r\n */\r\nexport class GaussianSplattingGpuPickingMaterialPlugin extends MaterialPluginBase {\r\n private _pickingColor: [number, number, number] = [0, 0, 0];\r\n private _isCompound: boolean = false;\r\n private _partPickingColors: number[] = [];\r\n private _partVisibility: number[] = [];\r\n private _defaultPartVisibility: number[] = [];\r\n private _maxPartCount: number;\r\n private _enableDepthPicking = false;\r\n private _enablePackedDepthPicking = false;\r\n\r\n /**\r\n * Creates a new GaussianSplattingGpuPickingMaterialPlugin.\r\n * @param material The GaussianSplattingMaterial to attach the plugin to.\r\n * @param maxPartCount The maximum number of parts supported for compound meshes.\r\n */\r\n constructor(material: GaussianSplattingMaterial, maxPartCount?: number) {\r\n super(material, \"GaussianSplatGpuPicking\", 200, {\r\n GPUPICKER_DEPTH: false,\r\n GPUPICKER_PACK_DEPTH: false,\r\n });\r\n\r\n this._maxPartCount = maxPartCount ?? GetGaussianSplattingMaxPartCount(material.getScene().getEngine());\r\n this._defaultPartVisibility = new Array(this._maxPartCount).fill(1.0);\r\n this._enable(true);\r\n }\r\n\r\n /**\r\n * Enables writing the GPU picker depth MRT attachment.\r\n */\r\n public set enableDepthPicking(value: boolean) {\r\n if (this._enableDepthPicking === value) {\r\n return;\r\n }\r\n\r\n this._enableDepthPicking = value;\r\n this.markAllDefinesAsDirty();\r\n }\r\n\r\n /**\r\n * Enables byte-packed depth output for the GPU picker depth MRT attachment.\r\n */\r\n public set enablePackedDepthPicking(value: boolean) {\r\n if (this._enablePackedDepthPicking === value) {\r\n return;\r\n }\r\n\r\n this._enablePackedDepthPicking = value;\r\n this.markAllDefinesAsDirty();\r\n }\r\n\r\n /**\r\n * Encodes a 24-bit picking ID into normalized RGB components.\r\n * @param id The picking ID to encode\r\n * @returns A tuple [r, g, b] with values in [0, 1]\r\n */\r\n public static EncodeIdToColor(id: number): [number, number, number] {\r\n return [((id >> 16) & 0xff) / 255, ((id >> 8) & 0xff) / 255, (id & 0xff) / 255];\r\n }\r\n\r\n /**\r\n * Sets the picking color for a non-compound mesh from a picking ID.\r\n * The ID is encoded into an RGB color on the CPU.\r\n * @param id The 24-bit picking ID.\r\n */\r\n public set meshId(id: number) {\r\n this._pickingColor = GaussianSplattingGpuPickingMaterialPlugin.EncodeIdToColor(id);\r\n }\r\n\r\n /**\r\n * Sets whether this material is for a compound mesh with per-part picking.\r\n */\r\n public set isCompound(value: boolean) {\r\n this._isCompound = value;\r\n this.markAllDefinesAsDirty();\r\n }\r\n\r\n /**\r\n * Gets whether this material is for a compound mesh with per-part picking.\r\n */\r\n public get isCompound(): boolean {\r\n return this._isCompound;\r\n }\r\n\r\n /**\r\n * Sets the per-part picking colors from an array of picking IDs.\r\n * Each ID is encoded into an RGB color on the CPU.\r\n * @param ids Array mapping part index to picking ID.\r\n */\r\n public set partMeshIds(ids: number[]) {\r\n const colors: number[] = [];\r\n for (let i = 0; i < this._maxPartCount; i++) {\r\n const c = i < ids.length ? GaussianSplattingGpuPickingMaterialPlugin.EncodeIdToColor(ids[i]) : ([0, 0, 0] as [number, number, number]);\r\n colors.push(c[0], c[1], c[2]);\r\n }\r\n this._partPickingColors = colors;\r\n }\r\n\r\n /**\r\n * Sets which parts are active (pickable) for the compound picking pass.\r\n * Parts not in the set are discarded in the shader by overriding partVisibility to 0.\r\n * @param activeParts Array of part indices that should be pickable.\r\n */\r\n public setPartActive(activeParts: number[]): void {\r\n const visibility = this._partVisibility;\r\n visibility.length = this._maxPartCount;\r\n visibility.fill(0.0);\r\n for (const index of activeParts) {\r\n if (index >= 0 && index < this._maxPartCount) {\r\n visibility[index] = 1.0;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @returns the class name\r\n */\r\n public override getClassName(): string {\r\n return \"GaussianSplattingGpuPickingMaterialPlugin\";\r\n }\r\n\r\n /**\r\n * Indicates this plugin supports both GLSL and WGSL.\r\n * @param shaderLanguage the shader language to check\r\n * @returns true for GLSL and WGSL\r\n */\r\n public override isCompatible(shaderLanguage: ShaderLanguage): boolean {\r\n switch (shaderLanguage) {\r\n case ShaderLanguage.GLSL:\r\n case ShaderLanguage.WGSL:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Always ready — no textures or async resources to wait on.\r\n * @param _defines the defines\r\n * @param _scene the scene\r\n * @param _engine the engine\r\n * @param _subMesh the submesh\r\n * @returns true\r\n */\r\n public override isReadyForSubMesh(_defines: MaterialDefines, _scene: Scene, _engine: AbstractEngine, _subMesh: SubMesh): boolean {\r\n return true;\r\n }\r\n\r\n /**\r\n * Sets the defines for the next rendering.\r\n * @param defines the list of defines to update\r\n */\r\n public override prepareDefines(defines: MaterialDefines): void {\r\n defines[\"GPUPICKER_DEPTH\"] = this._enableDepthPicking;\r\n defines[\"GPUPICKER_PACK_DEPTH\"] = this._enableDepthPicking && this._enablePackedDepthPicking;\r\n }\r\n\r\n /**\r\n * Returns custom shader code to inject GPU picking color output.\r\n *\r\n * @param shaderType \"vertex\" or \"fragment\"\r\n * @param shaderLanguage the shader language to use (default: GLSL)\r\n * @returns null or a map of injection point names to code strings\r\n */\r\n public override getCustomCode(shaderType: string, shaderLanguage = ShaderLanguage.GLSL): Nullable<{ [pointName: string]: string }> {\r\n if (shaderLanguage === ShaderLanguage.WGSL) {\r\n return this._getCustomCodeWGSL(shaderType);\r\n }\r\n return this._getCustomCodeGLSL(shaderType);\r\n }\r\n\r\n private _getCustomCodeGLSL(shaderType: string): Nullable<{ [pointName: string]: string }> {\r\n if (shaderType === \"vertex\") {\r\n return {\r\n CUSTOM_VERTEX_DEFINITIONS: `varying float vPartIndex;`,\r\n CUSTOM_VERTEX_UPDATE: `\r\n#if IS_COMPOUND\r\n vPartIndex = float(splat.partIndex);\r\n#else\r\n vPartIndex = 0.0;\r\n#endif\r\n `,\r\n };\r\n } else if (shaderType === \"fragment\") {\r\n return {\r\n CUSTOM_FRAGMENT_DEFINITIONS: `\r\nvarying float vPartIndex;\r\n#if IS_COMPOUND\r\nuniform vec3 partPickingColors[${this._maxPartCount}];\r\n#else\r\nuniform vec3 pickingColor;\r\n#endif\r\n `,\r\n CUSTOM_FRAGMENT_BEFORE_FRAGCOLOR: `\r\n#if IS_COMPOUND\r\n if (vColor.a < 0.001) discard;\r\n finalColor = vec4(partPickingColors[int(vPartIndex + 0.5)], 1.0);\r\n#else\r\n if (vColor.a < 0.001) discard;\r\n finalColor = vec4(pickingColor, 1.0);\r\n#endif\r\n `,\r\n };\r\n }\r\n return null;\r\n }\r\n\r\n private _getCustomCodeWGSL(shaderType: string): Nullable<{ [pointName: string]: string }> {\r\n if (shaderType === \"vertex\") {\r\n return {\r\n CUSTOM_VERTEX_DEFINITIONS: `varying vPartIndex: f32;`,\r\n CUSTOM_VERTEX_UPDATE: `\r\n#if IS_COMPOUND\r\n vertexOutputs.vPartIndex = f32(splat.partIndex);\r\n#else\r\n vertexOutputs.vPartIndex = 0.0;\r\n#endif\r\n `,\r\n };\r\n } else if (shaderType === \"fragment\") {\r\n return {\r\n CUSTOM_FRAGMENT_DEFINITIONS: `\r\nvarying vPartIndex: f32;\r\n#if IS_COMPOUND\r\nuniform partPickingColors: array<vec3f, ${this._maxPartCount}>;\r\n#else\r\nuniform pickingColor: vec3f;\r\n#endif\r\n `,\r\n CUSTOM_FRAGMENT_BEFORE_FRAGCOLOR: `\r\n#if IS_COMPOUND\r\n if (fragmentInputs.vColor.a < 0.001) { discard; }\r\n finalColor = vec4f(uniforms.partPickingColors[i32(fragmentInputs.vPartIndex + 0.5)], 1.0);\r\n#else\r\n if (fragmentInputs.vColor.a < 0.001) { discard; }\r\n finalColor = vec4f(uniforms.pickingColor, 1.0);\r\n#endif\r\n `,\r\n };\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Registers the picking uniforms with the engine.\r\n * @returns uniform descriptions\r\n */\r\n public override getUniforms(): {\r\n ubo?: Array<{ name: string; size?: number; type?: string; arraySize?: number }>;\r\n vertex?: string;\r\n fragment?: string;\r\n externalUniforms?: string[];\r\n } {\r\n return {\r\n externalUniforms: [\"pickingColor\", \"partPickingColors\"],\r\n };\r\n }\r\n\r\n /**\r\n * Binds the picking color uniform(s) each frame.\r\n * @param _uniformBuffer the uniform buffer (unused — we bind directly on the effect)\r\n * @param _scene the current scene\r\n * @param _engine the current engine\r\n * @param subMesh the submesh being rendered\r\n */\r\n public override bindForSubMesh(_uniformBuffer: UniformBuffer, _scene: Scene, _engine: AbstractEngine, subMesh: SubMesh): void {\r\n const effect = subMesh.effect;\r\n if (!effect) {\r\n return;\r\n }\r\n\r\n if (this._isCompound) {\r\n effect.setArray3(\"partPickingColors\", this._partPickingColors);\r\n // default all visible when setPartActive hasn't been called\r\n const visibility = this._partVisibility.length > 0 ? this._partVisibility : this._defaultPartVisibility;\r\n effect.setArray(\"partVisibility\", visibility);\r\n } else {\r\n effect.setFloat3(\"pickingColor\", this._pickingColor[0], this._pickingColor[1], this._pickingColor[2]);\r\n }\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for gaussianSplattingGpuPickingMaterialPlugin.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterGaussianSplattingGpuPickingMaterialPlugin(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n RegisterClass(\"BABYLON.GaussianSplattingGpuPickingMaterialPlugin\", GaussianSplattingGpuPickingMaterialPlugin);\r\n}\r\n"]}
@@ -41,10 +41,19 @@ export declare class GaussianSplattingMaterial extends PushMaterial {
41
41
  * Compensation
42
42
  */
43
43
  static Compensation: boolean;
44
+ /**
45
+ * Minimum projected splat size, in pixels, below which a splat is discarded (default 0 = disabled).
46
+ * Matches PlayCanvas `minPixelSize`. Applies to all Gaussian Splatting meshes using this material.
47
+ */
48
+ static MinPixelSize: number;
44
49
  /**
45
50
  * Point spread function (default 0.3). Can be overriden per GS material, otherwise, using default static `KernelSize` value
46
51
  */
47
52
  kernelSize: number;
53
+ /**
54
+ * Minimum projected splat size, in pixels, below which a splat is discarded (default 0 = disabled).
55
+ */
56
+ minPixelSize: number;
48
57
  private _compensation;
49
58
  private _isDirty;
50
59
  /**