@babylonjs/core 5.0.0-alpha.61 → 5.0.0-alpha.65

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 (519) hide show
  1. package/Animations/animation.js +42 -2
  2. package/Animations/animation.js.map +1 -1
  3. package/Animations/animationGroup.d.ts +5 -1
  4. package/Animations/animationGroup.js +19 -1
  5. package/Animations/animationGroup.js.map +1 -1
  6. package/Audio/sound.js +15 -1
  7. package/Audio/sound.js.map +1 -1
  8. package/Behaviors/Cameras/autoRotationBehavior.d.ts +5 -0
  9. package/Behaviors/Cameras/autoRotationBehavior.js +7 -0
  10. package/Behaviors/Cameras/autoRotationBehavior.js.map +1 -1
  11. package/Behaviors/Meshes/followBehavior.js +1 -1
  12. package/Behaviors/Meshes/followBehavior.js.map +1 -1
  13. package/Behaviors/Meshes/handConstraintBehavior.js +16 -12
  14. package/Behaviors/Meshes/handConstraintBehavior.js.map +1 -1
  15. package/Cameras/VR/vrDeviceOrientationArcRotateCamera.js +1 -1
  16. package/Cameras/VR/vrDeviceOrientationArcRotateCamera.js.map +1 -1
  17. package/Cameras/VR/vrExperienceHelper.d.ts +1 -1
  18. package/Cameras/VR/vrExperienceHelper.js +1 -1
  19. package/Cameras/VR/vrExperienceHelper.js.map +1 -1
  20. package/Cameras/camera.js +2 -2
  21. package/Cameras/camera.js.map +1 -1
  22. package/DeviceInput/Implementations/{nativeDeviceInputWrapper.d.ts → nativeDeviceInputSystem.d.ts} +5 -21
  23. package/DeviceInput/Implementations/{nativeDeviceInputWrapper.js → nativeDeviceInputSystem.js} +19 -20
  24. package/DeviceInput/Implementations/nativeDeviceInputSystem.js.map +1 -0
  25. package/DeviceInput/Implementations/webDeviceInputSystem.d.ts +7 -20
  26. package/DeviceInput/Implementations/webDeviceInputSystem.js +79 -71
  27. package/DeviceInput/Implementations/webDeviceInputSystem.js.map +1 -1
  28. package/DeviceInput/InputDevices/deviceSourceManager.d.ts +3 -2
  29. package/DeviceInput/InputDevices/deviceSourceManager.js +5 -1
  30. package/DeviceInput/InputDevices/deviceSourceManager.js.map +1 -1
  31. package/DeviceInput/Interfaces/inputInterfaces.d.ts +6 -13
  32. package/DeviceInput/Interfaces/inputInterfaces.js.map +1 -1
  33. package/DeviceInput/deviceInputSystem.d.ts +49 -5
  34. package/DeviceInput/deviceInputSystem.js +62 -10
  35. package/DeviceInput/deviceInputSystem.js.map +1 -1
  36. package/DeviceInput/index.d.ts +1 -1
  37. package/DeviceInput/index.js +1 -1
  38. package/DeviceInput/index.js.map +1 -1
  39. package/Engines/Extensions/engine.dynamicTexture.d.ts +2 -1
  40. package/Engines/Extensions/engine.dynamicTexture.js +2 -1
  41. package/Engines/Extensions/engine.dynamicTexture.js.map +1 -1
  42. package/Engines/Extensions/engine.views.d.ts +1 -1
  43. package/Engines/Extensions/engine.views.js +1 -1
  44. package/Engines/Extensions/engine.views.js.map +1 -1
  45. package/Engines/Processors/iShaderProcessor.d.ts +1 -1
  46. package/Engines/Processors/iShaderProcessor.js.map +1 -1
  47. package/Engines/Processors/shaderProcessingOptions.d.ts +5 -0
  48. package/Engines/Processors/shaderProcessingOptions.js.map +1 -1
  49. package/Engines/Processors/shaderProcessor.js +8 -2
  50. package/Engines/Processors/shaderProcessor.js.map +1 -1
  51. package/Engines/WebGPU/Extensions/engine.dynamicTexture.js +3 -11
  52. package/Engines/WebGPU/Extensions/engine.dynamicTexture.js.map +1 -1
  53. package/Engines/WebGPU/Extensions/engine.multiRender.js +19 -9
  54. package/Engines/WebGPU/Extensions/engine.multiRender.js.map +1 -1
  55. package/Engines/WebGPU/Extensions/engine.renderTarget.js +9 -6
  56. package/Engines/WebGPU/Extensions/engine.renderTarget.js.map +1 -1
  57. package/Engines/WebGPU/webgpuBufferManager.d.ts +1 -1
  58. package/Engines/WebGPU/webgpuBufferManager.js.map +1 -1
  59. package/Engines/WebGPU/webgpuCacheBindGroups.js +3 -3
  60. package/Engines/WebGPU/webgpuCacheBindGroups.js.map +1 -1
  61. package/Engines/WebGPU/webgpuCacheRenderPipeline.d.ts +4 -1
  62. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +37 -83
  63. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  64. package/Engines/WebGPU/webgpuCacheSampler.js +6 -4
  65. package/Engines/WebGPU/webgpuCacheSampler.js.map +1 -1
  66. package/Engines/WebGPU/webgpuClearQuad.d.ts +1 -1
  67. package/Engines/WebGPU/webgpuClearQuad.js +29 -11
  68. package/Engines/WebGPU/webgpuClearQuad.js.map +1 -1
  69. package/Engines/WebGPU/webgpuComputeContext.js +2 -2
  70. package/Engines/WebGPU/webgpuComputeContext.js.map +1 -1
  71. package/Engines/WebGPU/webgpuConstants.d.ts +57 -13
  72. package/Engines/WebGPU/webgpuConstants.js +62 -13
  73. package/Engines/WebGPU/webgpuConstants.js.map +1 -1
  74. package/Engines/WebGPU/webgpuHardwareTexture.d.ts +24 -4
  75. package/Engines/WebGPU/webgpuHardwareTexture.js +12 -2
  76. package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
  77. package/Engines/WebGPU/webgpuRenderTargetWrapper.d.ts +6 -0
  78. package/Engines/WebGPU/webgpuRenderTargetWrapper.js +12 -0
  79. package/Engines/WebGPU/webgpuRenderTargetWrapper.js.map +1 -0
  80. package/Engines/WebGPU/webgpuShaderProcessingContext.js +2 -0
  81. package/Engines/WebGPU/webgpuShaderProcessingContext.js.map +1 -1
  82. package/Engines/WebGPU/webgpuShaderProcessor.d.ts +2 -0
  83. package/Engines/WebGPU/webgpuShaderProcessor.js +23 -0
  84. package/Engines/WebGPU/webgpuShaderProcessor.js.map +1 -1
  85. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.d.ts +1 -0
  86. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js +17 -1
  87. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js.map +1 -1
  88. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.d.ts +1 -2
  89. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +11 -30
  90. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
  91. package/Engines/WebGPU/webgpuTextureHelper.d.ts +9 -2
  92. package/Engines/WebGPU/webgpuTextureHelper.js +291 -66
  93. package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
  94. package/Engines/engine.d.ts +145 -45
  95. package/Engines/engine.js +5 -1
  96. package/Engines/engine.js.map +1 -1
  97. package/Engines/nativeEngine.d.ts +11 -0
  98. package/Engines/nativeEngine.js +78 -18
  99. package/Engines/nativeEngine.js.map +1 -1
  100. package/Engines/renderTargetWrapper.d.ts +1 -1
  101. package/Engines/renderTargetWrapper.js +1 -1
  102. package/Engines/renderTargetWrapper.js.map +1 -1
  103. package/Engines/thinEngine.js +2 -2
  104. package/Engines/thinEngine.js.map +1 -1
  105. package/Engines/webgpuEngine.d.ts +5 -13
  106. package/Engines/webgpuEngine.js +37 -75
  107. package/Engines/webgpuEngine.js.map +1 -1
  108. package/Gizmos/positionGizmo.js +1 -1
  109. package/Gizmos/positionGizmo.js.map +1 -1
  110. package/Inputs/scene.inputManager.js +6 -1
  111. package/Inputs/scene.inputManager.js.map +1 -1
  112. package/Layers/effectLayer.d.ts +4 -0
  113. package/Layers/effectLayer.js +10 -0
  114. package/Layers/effectLayer.js.map +1 -1
  115. package/Layers/glowLayer.d.ts +8 -0
  116. package/Layers/glowLayer.js +7 -3
  117. package/Layers/glowLayer.js.map +1 -1
  118. package/Layers/highlightLayer.js +2 -0
  119. package/Layers/highlightLayer.js.map +1 -1
  120. package/Lights/Shadows/shadowGenerator.js +1 -1
  121. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  122. package/Lights/light.js +4 -1
  123. package/Lights/light.js.map +1 -1
  124. package/Lights/pointLight.js +1 -1
  125. package/Lights/pointLight.js.map +1 -1
  126. package/Lights/spotLight.js +1 -1
  127. package/Lights/spotLight.js.map +1 -1
  128. package/Loading/Plugins/babylonFileLoader.js +10 -7
  129. package/Loading/Plugins/babylonFileLoader.js.map +1 -1
  130. package/Materials/Node/Blocks/Fragment/index.d.ts +1 -0
  131. package/Materials/Node/Blocks/Fragment/index.js +1 -0
  132. package/Materials/Node/Blocks/Fragment/index.js.map +1 -1
  133. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js +1 -3
  134. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js.map +1 -1
  135. package/Materials/Node/Blocks/Fragment/twirlBlock.d.ts +49 -0
  136. package/Materials/Node/Blocks/Fragment/twirlBlock.js +145 -0
  137. package/Materials/Node/Blocks/Fragment/twirlBlock.js.map +1 -0
  138. package/Materials/Node/Blocks/customBlock.d.ts +31 -0
  139. package/Materials/Node/Blocks/customBlock.js +144 -0
  140. package/Materials/Node/Blocks/customBlock.js.map +1 -0
  141. package/Materials/Node/Blocks/index.d.ts +1 -0
  142. package/Materials/Node/Blocks/index.js +1 -0
  143. package/Materials/Node/Blocks/index.js.map +1 -1
  144. package/Materials/Node/nodeMaterial.js +8 -0
  145. package/Materials/Node/nodeMaterial.js.map +1 -1
  146. package/Materials/Node/nodeMaterialBlock.js +1 -1
  147. package/Materials/Node/nodeMaterialBlock.js.map +1 -1
  148. package/Materials/PBR/index.d.ts +4 -0
  149. package/Materials/PBR/index.js +4 -0
  150. package/Materials/PBR/index.js.map +1 -1
  151. package/Materials/PBR/pbrAnisotropicConfiguration.d.ts +28 -96
  152. package/Materials/PBR/pbrAnisotropicConfiguration.js +50 -111
  153. package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
  154. package/Materials/PBR/pbrBRDFConfiguration.d.ts +11 -37
  155. package/Materials/PBR/pbrBRDFConfiguration.js +39 -52
  156. package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
  157. package/Materials/PBR/pbrBaseMaterial.d.ts +15 -74
  158. package/Materials/PBR/pbrBaseMaterial.js +67 -182
  159. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  160. package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
  161. package/Materials/PBR/pbrClearCoatConfiguration.d.ts +23 -98
  162. package/Materials/PBR/pbrClearCoatConfiguration.js +91 -143
  163. package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
  164. package/Materials/PBR/pbrSheenConfiguration.d.ts +25 -93
  165. package/Materials/PBR/pbrSheenConfiguration.js +71 -126
  166. package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
  167. package/Materials/PBR/pbrSubSurfaceConfiguration.d.ts +28 -114
  168. package/Materials/PBR/pbrSubSurfaceConfiguration.js +150 -211
  169. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  170. package/Materials/Textures/dynamicTexture.d.ts +3 -2
  171. package/Materials/Textures/dynamicTexture.js +5 -3
  172. package/Materials/Textures/dynamicTexture.js.map +1 -1
  173. package/Materials/Textures/multiRenderTarget.js +3 -0
  174. package/Materials/Textures/multiRenderTarget.js.map +1 -1
  175. package/Materials/Textures/renderTargetTexture.js +1 -1
  176. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  177. package/Materials/Textures/thinRenderTargetTexture.js +1 -1
  178. package/Materials/Textures/thinRenderTargetTexture.js.map +1 -1
  179. package/Materials/Textures/thinTexture.d.ts +1 -2
  180. package/Materials/Textures/thinTexture.js +2 -4
  181. package/Materials/Textures/thinTexture.js.map +1 -1
  182. package/Materials/Textures/videoTexture.d.ts +1 -1
  183. package/Materials/Textures/videoTexture.js +1 -1
  184. package/Materials/Textures/videoTexture.js.map +1 -1
  185. package/Materials/effect.d.ts +6 -1
  186. package/Materials/effect.js +4 -1
  187. package/Materials/effect.js.map +1 -1
  188. package/Materials/fresnelParameters.d.ts +1 -1
  189. package/Materials/fresnelParameters.js +1 -1
  190. package/Materials/fresnelParameters.js.map +1 -1
  191. package/Materials/index.d.ts +4 -0
  192. package/Materials/index.js +4 -0
  193. package/Materials/index.js.map +1 -1
  194. package/Materials/material.d.ts +43 -2
  195. package/Materials/material.detailMapConfiguration.d.ts +29 -87
  196. package/Materials/material.detailMapConfiguration.js +50 -106
  197. package/Materials/material.detailMapConfiguration.js.map +1 -1
  198. package/Materials/material.js +99 -8
  199. package/Materials/material.js.map +1 -1
  200. package/Materials/materialDefines.d.ts +16 -0
  201. package/Materials/materialDefines.js +17 -5
  202. package/Materials/materialDefines.js.map +1 -1
  203. package/Materials/materialPluginBase.d.ts +182 -0
  204. package/Materials/materialPluginBase.js +209 -0
  205. package/Materials/materialPluginBase.js.map +1 -0
  206. package/Materials/materialPluginEvent.d.ts +98 -0
  207. package/Materials/materialPluginEvent.js +21 -0
  208. package/Materials/materialPluginEvent.js.map +1 -0
  209. package/Materials/materialPluginFactoryExport.d.ts +40 -0
  210. package/Materials/materialPluginFactoryExport.js +75 -0
  211. package/Materials/materialPluginFactoryExport.js.map +1 -0
  212. package/Materials/materialPluginManager.d.ts +90 -0
  213. package/Materials/materialPluginManager.js +323 -0
  214. package/Materials/materialPluginManager.js.map +1 -0
  215. package/Materials/shaderMaterial.d.ts +1 -1
  216. package/Materials/shaderMaterial.js +13 -1
  217. package/Materials/shaderMaterial.js.map +1 -1
  218. package/Materials/standardMaterial.d.ts +13 -10
  219. package/Materials/standardMaterial.js +45 -51
  220. package/Materials/standardMaterial.js.map +1 -1
  221. package/Materials/uniformBuffer.d.ts +7 -0
  222. package/Materials/uniformBuffer.js +22 -0
  223. package/Materials/uniformBuffer.js.map +1 -1
  224. package/Maths/math.vector.d.ts +12 -8
  225. package/Maths/math.vector.js +22 -14
  226. package/Maths/math.vector.js.map +1 -1
  227. package/Meshes/Builders/capsuleBuilder.d.ts +1 -1
  228. package/Meshes/Builders/capsuleBuilder.js +1 -1
  229. package/Meshes/Builders/capsuleBuilder.js.map +1 -1
  230. package/Meshes/abstractMesh.d.ts +1 -1
  231. package/Meshes/abstractMesh.js +24 -23
  232. package/Meshes/abstractMesh.js.map +1 -1
  233. package/Meshes/geometry.js +2 -2
  234. package/Meshes/geometry.js.map +1 -1
  235. package/Meshes/linesMesh.d.ts +1 -1
  236. package/Meshes/linesMesh.js +3 -2
  237. package/Meshes/linesMesh.js.map +1 -1
  238. package/Meshes/mesh.d.ts +12 -0
  239. package/Meshes/mesh.js +184 -115
  240. package/Meshes/mesh.js.map +1 -1
  241. package/Meshes/mesh.lts.d.ts +8 -8
  242. package/Meshes/mesh.lts.js.map +1 -1
  243. package/Meshes/mesh.vertexData.d.ts +6 -1
  244. package/Meshes/mesh.vertexData.js +295 -114
  245. package/Meshes/mesh.vertexData.js.map +1 -1
  246. package/Meshes/transformNode.js +20 -13
  247. package/Meshes/transformNode.js.map +1 -1
  248. package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.d.ts +2 -1
  249. package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.js +38 -33
  250. package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.js.map +1 -1
  251. package/Misc/PerformanceViewer/performanceViewerCollector.d.ts +29 -4
  252. package/Misc/PerformanceViewer/performanceViewerCollector.js +36 -12
  253. package/Misc/PerformanceViewer/performanceViewerCollector.js.map +1 -1
  254. package/Misc/assetsManager.d.ts +4 -4
  255. package/Misc/assetsManager.js +2 -2
  256. package/Misc/assetsManager.js.map +1 -1
  257. package/Misc/basis.js +1 -0
  258. package/Misc/basis.js.map +1 -1
  259. package/Misc/coroutine.d.ts +41 -0
  260. package/Misc/coroutine.js +136 -0
  261. package/Misc/coroutine.js.map +1 -0
  262. package/Misc/index.d.ts +1 -0
  263. package/Misc/index.js +1 -0
  264. package/Misc/index.js.map +1 -1
  265. package/Misc/interfaces/iPerfViewer.d.ts +4 -0
  266. package/Misc/interfaces/iPerfViewer.js.map +1 -1
  267. package/Misc/observableCoroutine.d.ts +9 -10
  268. package/Misc/observableCoroutine.js +34 -39
  269. package/Misc/observableCoroutine.js.map +1 -1
  270. package/Misc/sceneSerializer.js +1 -0
  271. package/Misc/sceneSerializer.js.map +1 -1
  272. package/Particles/particleSystem.js +3 -0
  273. package/Particles/particleSystem.js.map +1 -1
  274. package/Particles/subEmitter.js +1 -0
  275. package/Particles/subEmitter.js.map +1 -1
  276. package/PostProcesses/screenSpaceReflectionPostProcess.d.ts +1 -0
  277. package/PostProcesses/screenSpaceReflectionPostProcess.js +4 -0
  278. package/PostProcesses/screenSpaceReflectionPostProcess.js.map +1 -1
  279. package/Rendering/depthPeelingRenderer.d.ts +4 -1
  280. package/Rendering/depthPeelingRenderer.js +34 -9
  281. package/Rendering/depthPeelingRenderer.js.map +1 -1
  282. package/Rendering/depthRenderer.js +1 -1
  283. package/Rendering/depthRenderer.js.map +1 -1
  284. package/Rendering/outlineRenderer.js +24 -1
  285. package/Rendering/outlineRenderer.js.map +1 -1
  286. package/Rendering/prePassRenderer.js +7 -7
  287. package/Rendering/prePassRenderer.js.map +1 -1
  288. package/Rendering/renderingGroup.js +5 -1
  289. package/Rendering/renderingGroup.js.map +1 -1
  290. package/Shaders/ShadersInclude/defaultFragmentDeclaration.js +1 -1
  291. package/Shaders/ShadersInclude/defaultFragmentDeclaration.js.map +1 -1
  292. package/Shaders/ShadersInclude/defaultUboDeclaration.js +1 -1
  293. package/Shaders/ShadersInclude/defaultUboDeclaration.js.map +1 -1
  294. package/Shaders/ShadersInclude/defaultVertexDeclaration.js +1 -1
  295. package/Shaders/ShadersInclude/defaultVertexDeclaration.js.map +1 -1
  296. package/Shaders/ShadersInclude/pbrFragmentDeclaration.js +1 -1
  297. package/Shaders/ShadersInclude/pbrFragmentDeclaration.js.map +1 -1
  298. package/Shaders/ShadersInclude/pbrUboDeclaration.js +1 -1
  299. package/Shaders/ShadersInclude/pbrUboDeclaration.js.map +1 -1
  300. package/Shaders/ShadersInclude/pbrVertexDeclaration.js +1 -1
  301. package/Shaders/ShadersInclude/pbrVertexDeclaration.js.map +1 -1
  302. package/Shaders/anaglyph.fragment.js +1 -1
  303. package/Shaders/anaglyph.fragment.js.map +1 -1
  304. package/Shaders/background.fragment.js +1 -1
  305. package/Shaders/background.fragment.js.map +1 -1
  306. package/Shaders/background.vertex.js +1 -1
  307. package/Shaders/background.vertex.js.map +1 -1
  308. package/Shaders/blackAndWhite.fragment.js +1 -1
  309. package/Shaders/blackAndWhite.fragment.js.map +1 -1
  310. package/Shaders/bloomMerge.fragment.js +1 -1
  311. package/Shaders/bloomMerge.fragment.js.map +1 -1
  312. package/Shaders/blur.fragment.js +1 -1
  313. package/Shaders/blur.fragment.js.map +1 -1
  314. package/Shaders/boundingBoxRenderer.fragment.js +1 -1
  315. package/Shaders/boundingBoxRenderer.fragment.js.map +1 -1
  316. package/Shaders/boundingBoxRenderer.vertex.js +1 -1
  317. package/Shaders/boundingBoxRenderer.vertex.js.map +1 -1
  318. package/Shaders/chromaticAberration.fragment.js +1 -1
  319. package/Shaders/chromaticAberration.fragment.js.map +1 -1
  320. package/Shaders/circleOfConfusion.fragment.js +1 -1
  321. package/Shaders/circleOfConfusion.fragment.js.map +1 -1
  322. package/Shaders/clearQuad.vertex.js +1 -1
  323. package/Shaders/clearQuad.vertex.js.map +1 -1
  324. package/Shaders/color.fragment.js +1 -1
  325. package/Shaders/color.fragment.js.map +1 -1
  326. package/Shaders/color.vertex.js +1 -1
  327. package/Shaders/color.vertex.js.map +1 -1
  328. package/Shaders/colorCorrection.fragment.js +1 -1
  329. package/Shaders/colorCorrection.fragment.js.map +1 -1
  330. package/Shaders/convolution.fragment.js +1 -1
  331. package/Shaders/convolution.fragment.js.map +1 -1
  332. package/Shaders/default.fragment.js +1 -1
  333. package/Shaders/default.fragment.js.map +1 -1
  334. package/Shaders/depth.fragment.js +1 -1
  335. package/Shaders/depth.fragment.js.map +1 -1
  336. package/Shaders/depth.vertex.js +1 -1
  337. package/Shaders/depth.vertex.js.map +1 -1
  338. package/Shaders/depthBoxBlur.fragment.js +1 -1
  339. package/Shaders/depthBoxBlur.fragment.js.map +1 -1
  340. package/Shaders/depthOfField.fragment.js +1 -1
  341. package/Shaders/depthOfField.fragment.js.map +1 -1
  342. package/Shaders/depthOfFieldMerge.fragment.js +1 -1
  343. package/Shaders/depthOfFieldMerge.fragment.js.map +1 -1
  344. package/Shaders/displayPass.fragment.js +1 -1
  345. package/Shaders/displayPass.fragment.js.map +1 -1
  346. package/Shaders/extractHighlights.fragment.js +1 -1
  347. package/Shaders/extractHighlights.fragment.js.map +1 -1
  348. package/Shaders/filter.fragment.js +1 -1
  349. package/Shaders/filter.fragment.js.map +1 -1
  350. package/Shaders/fxaa.vertex.js +1 -1
  351. package/Shaders/fxaa.vertex.js.map +1 -1
  352. package/Shaders/geometry.vertex.js +1 -1
  353. package/Shaders/geometry.vertex.js.map +1 -1
  354. package/Shaders/glowBlurPostProcess.fragment.js +1 -1
  355. package/Shaders/glowBlurPostProcess.fragment.js.map +1 -1
  356. package/Shaders/glowMapGeneration.fragment.js +1 -1
  357. package/Shaders/glowMapGeneration.fragment.js.map +1 -1
  358. package/Shaders/glowMapGeneration.vertex.js +1 -1
  359. package/Shaders/glowMapGeneration.vertex.js.map +1 -1
  360. package/Shaders/glowMapMerge.fragment.js +1 -1
  361. package/Shaders/glowMapMerge.fragment.js.map +1 -1
  362. package/Shaders/glowMapMerge.vertex.js +1 -1
  363. package/Shaders/glowMapMerge.vertex.js.map +1 -1
  364. package/Shaders/grain.fragment.js +1 -1
  365. package/Shaders/grain.fragment.js.map +1 -1
  366. package/Shaders/hdrFiltering.vertex.js +1 -1
  367. package/Shaders/hdrFiltering.vertex.js.map +1 -1
  368. package/Shaders/highlights.fragment.js +1 -1
  369. package/Shaders/highlights.fragment.js.map +1 -1
  370. package/Shaders/imageProcessing.fragment.js +1 -1
  371. package/Shaders/imageProcessing.fragment.js.map +1 -1
  372. package/Shaders/kernelBlur.fragment.js +1 -1
  373. package/Shaders/kernelBlur.fragment.js.map +1 -1
  374. package/Shaders/kernelBlur.vertex.js +1 -1
  375. package/Shaders/kernelBlur.vertex.js.map +1 -1
  376. package/Shaders/layer.fragment.js +1 -1
  377. package/Shaders/layer.fragment.js.map +1 -1
  378. package/Shaders/layer.vertex.js +1 -1
  379. package/Shaders/layer.vertex.js.map +1 -1
  380. package/Shaders/lensFlare.fragment.js +1 -1
  381. package/Shaders/lensFlare.fragment.js.map +1 -1
  382. package/Shaders/lensFlare.vertex.js +1 -1
  383. package/Shaders/lensFlare.vertex.js.map +1 -1
  384. package/Shaders/lensHighlights.fragment.js +1 -1
  385. package/Shaders/lensHighlights.fragment.js.map +1 -1
  386. package/Shaders/line.fragment.js +1 -1
  387. package/Shaders/line.fragment.js.map +1 -1
  388. package/Shaders/line.vertex.js +1 -1
  389. package/Shaders/line.vertex.js.map +1 -1
  390. package/Shaders/minmaxRedux.fragment.js +1 -1
  391. package/Shaders/minmaxRedux.fragment.js.map +1 -1
  392. package/Shaders/motionBlur.fragment.js +1 -1
  393. package/Shaders/motionBlur.fragment.js.map +1 -1
  394. package/Shaders/noise.fragment.js +1 -1
  395. package/Shaders/noise.fragment.js.map +1 -1
  396. package/Shaders/outline.fragment.d.ts +2 -0
  397. package/Shaders/outline.fragment.js +3 -1
  398. package/Shaders/outline.fragment.js.map +1 -1
  399. package/Shaders/outline.vertex.d.ts +2 -0
  400. package/Shaders/outline.vertex.js +3 -1
  401. package/Shaders/outline.vertex.js.map +1 -1
  402. package/Shaders/particles.fragment.js +1 -1
  403. package/Shaders/particles.fragment.js.map +1 -1
  404. package/Shaders/particles.vertex.js +1 -1
  405. package/Shaders/particles.vertex.js.map +1 -1
  406. package/Shaders/pass.fragment.js +1 -1
  407. package/Shaders/pass.fragment.js.map +1 -1
  408. package/Shaders/passCube.fragment.js +1 -1
  409. package/Shaders/passCube.fragment.js.map +1 -1
  410. package/Shaders/pbr.fragment.js +1 -1
  411. package/Shaders/pbr.fragment.js.map +1 -1
  412. package/Shaders/postprocess.vertex.js +1 -1
  413. package/Shaders/postprocess.vertex.js.map +1 -1
  414. package/Shaders/procedural.vertex.js +1 -1
  415. package/Shaders/procedural.vertex.js.map +1 -1
  416. package/Shaders/rgbdDecode.fragment.js +1 -1
  417. package/Shaders/rgbdDecode.fragment.js.map +1 -1
  418. package/Shaders/rgbdEncode.fragment.js +1 -1
  419. package/Shaders/rgbdEncode.fragment.js.map +1 -1
  420. package/Shaders/screenSpaceCurvature.fragment.js +1 -1
  421. package/Shaders/screenSpaceCurvature.fragment.js.map +1 -1
  422. package/Shaders/screenSpaceReflection.fragment.js +1 -1
  423. package/Shaders/screenSpaceReflection.fragment.js.map +1 -1
  424. package/Shaders/shadowMap.fragment.js +1 -1
  425. package/Shaders/shadowMap.fragment.js.map +1 -1
  426. package/Shaders/shadowMap.vertex.js +1 -1
  427. package/Shaders/shadowMap.vertex.js.map +1 -1
  428. package/Shaders/sharpen.fragment.js +1 -1
  429. package/Shaders/sharpen.fragment.js.map +1 -1
  430. package/Shaders/sprites.fragment.js +1 -1
  431. package/Shaders/sprites.fragment.js.map +1 -1
  432. package/Shaders/sprites.vertex.js +1 -1
  433. package/Shaders/sprites.vertex.js.map +1 -1
  434. package/Shaders/ssaoCombine.fragment.js +1 -1
  435. package/Shaders/ssaoCombine.fragment.js.map +1 -1
  436. package/Shaders/standard.fragment.js +1 -1
  437. package/Shaders/standard.fragment.js.map +1 -1
  438. package/Shaders/stereoscopicInterlace.fragment.js +1 -1
  439. package/Shaders/stereoscopicInterlace.fragment.js.map +1 -1
  440. package/Shaders/subSurfaceScattering.fragment.js +1 -1
  441. package/Shaders/subSurfaceScattering.fragment.js.map +1 -1
  442. package/Shaders/tonemap.fragment.js +1 -1
  443. package/Shaders/tonemap.fragment.js.map +1 -1
  444. package/Shaders/volumetricLightScattering.fragment.js +1 -1
  445. package/Shaders/volumetricLightScattering.fragment.js.map +1 -1
  446. package/Shaders/volumetricLightScatteringPass.fragment.js +1 -1
  447. package/Shaders/volumetricLightScatteringPass.fragment.js.map +1 -1
  448. package/Shaders/volumetricLightScatteringPass.vertex.js +1 -1
  449. package/Shaders/volumetricLightScatteringPass.vertex.js.map +1 -1
  450. package/Shaders/vrDistortionCorrection.fragment.js +1 -1
  451. package/Shaders/vrDistortionCorrection.fragment.js.map +1 -1
  452. package/Shaders/vrMultiviewToSingleview.fragment.js +1 -1
  453. package/Shaders/vrMultiviewToSingleview.fragment.js.map +1 -1
  454. package/ShadersWGSL/ShadersInclude/meshUboDeclaration.js +1 -1
  455. package/ShadersWGSL/ShadersInclude/meshUboDeclaration.js.map +1 -1
  456. package/ShadersWGSL/ShadersInclude/sceneUboDeclaration.js +1 -1
  457. package/ShadersWGSL/ShadersInclude/sceneUboDeclaration.js.map +1 -1
  458. package/ShadersWGSL/gpuUpdateParticles.compute.js +1 -1
  459. package/ShadersWGSL/gpuUpdateParticles.compute.js.map +1 -1
  460. package/XR/features/WebXRControllerPointerSelection.d.ts +14 -0
  461. package/XR/features/WebXRControllerPointerSelection.js +55 -21
  462. package/XR/features/WebXRControllerPointerSelection.js.map +1 -1
  463. package/XR/features/WebXRHandTracking.d.ts +2 -0
  464. package/XR/features/WebXRHandTracking.js +34 -14
  465. package/XR/features/WebXRHandTracking.js.map +1 -1
  466. package/XR/features/WebXRLayers.d.ts +78 -0
  467. package/XR/features/WebXRLayers.js +243 -0
  468. package/XR/features/WebXRLayers.js.map +1 -0
  469. package/XR/features/WebXRPlaneDetector.js +8 -12
  470. package/XR/features/WebXRPlaneDetector.js.map +1 -1
  471. package/XR/features/index.d.ts +1 -0
  472. package/XR/features/index.js +1 -0
  473. package/XR/features/index.js.map +1 -1
  474. package/XR/index.d.ts +1 -0
  475. package/XR/index.js +1 -0
  476. package/XR/index.js.map +1 -1
  477. package/XR/native/index.d.ts +2 -0
  478. package/XR/native/index.js +3 -0
  479. package/XR/native/index.js.map +1 -0
  480. package/XR/native/nativeXRFrame.d.ts +27 -0
  481. package/XR/native/nativeXRFrame.js +81 -0
  482. package/XR/native/nativeXRFrame.js.map +1 -0
  483. package/XR/native/nativeXRRenderTarget.d.ts +44 -0
  484. package/XR/native/nativeXRRenderTarget.js +81 -0
  485. package/XR/native/nativeXRRenderTarget.js.map +1 -0
  486. package/XR/webXRCamera.js +2 -10
  487. package/XR/webXRCamera.js.map +1 -1
  488. package/XR/webXRExperienceHelper.js +15 -13
  489. package/XR/webXRExperienceHelper.js.map +1 -1
  490. package/XR/webXRFeaturesManager.d.ts +4 -0
  491. package/XR/webXRFeaturesManager.js +5 -1
  492. package/XR/webXRFeaturesManager.js.map +1 -1
  493. package/XR/webXRLayerWrapper.d.ts +48 -0
  494. package/XR/webXRLayerWrapper.js +60 -0
  495. package/XR/webXRLayerWrapper.js.map +1 -0
  496. package/XR/webXRManagedOutputCanvas.d.ts +2 -1
  497. package/XR/webXRManagedOutputCanvas.js +36 -29
  498. package/XR/webXRManagedOutputCanvas.js.map +1 -1
  499. package/XR/webXRRenderTargetTextureProvider.d.ts +55 -0
  500. package/XR/webXRRenderTargetTextureProvider.js +63 -0
  501. package/XR/webXRRenderTargetTextureProvider.js.map +1 -0
  502. package/XR/webXRSessionManager.d.ts +30 -7
  503. package/XR/webXRSessionManager.js +62 -64
  504. package/XR/webXRSessionManager.js.map +1 -1
  505. package/XR/webXRTypes.d.ts +1 -1
  506. package/XR/webXRTypes.js.map +1 -1
  507. package/XR/webXRWebGLLayer.d.ts +36 -0
  508. package/XR/webXRWebGLLayer.js +69 -0
  509. package/XR/webXRWebGLLayer.js.map +1 -0
  510. package/abstractScene.d.ts +1 -1
  511. package/abstractScene.js +1 -1
  512. package/abstractScene.js.map +1 -1
  513. package/assetContainer.js +3 -0
  514. package/assetContainer.js.map +1 -1
  515. package/package.json +51 -6
  516. package/scene.d.ts +4 -0
  517. package/scene.js +4 -0
  518. package/scene.js.map +1 -1
  519. package/DeviceInput/Implementations/nativeDeviceInputWrapper.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"material.detailMapConfiguration.js","sourceRoot":"","sources":["../../../sourceES6/core/Materials/material.detailMapConfiguration.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"../types\";\r\nimport { Scene } from \"../scene\";\r\nimport { Material } from \"./material\";\r\nimport { serialize, expandToProperty, serializeAsTexture, SerializationHelper } from '../Misc/decorators';\r\nimport { MaterialFlags } from './materialFlags';\r\nimport { MaterialHelper } from './materialHelper';\r\nimport { BaseTexture } from './Textures/baseTexture';\r\nimport { UniformBuffer } from './uniformBuffer';\r\nimport { IAnimatable } from '../Animations/animatable.interface';\r\n\r\n/**\r\n * @hidden\r\n */\r\nexport interface IMaterialDetailMapDefines {\r\n DETAIL: boolean;\r\n DETAILDIRECTUV: number;\r\n DETAIL_NORMALBLENDMETHOD: number;\r\n\r\n /** @hidden */\r\n _areTexturesDirty: boolean;\r\n}\r\n\r\n/**\r\n * Define the code related to the detail map parameters of a material\r\n *\r\n * Inspired from:\r\n * Unity: https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@9.0/manual/Mask-Map-and-Detail-Map.html and https://docs.unity3d.com/Manual/StandardShaderMaterialParameterDetail.html\r\n * Unreal: https://docs.unrealengine.com/en-US/Engine/Rendering/Materials/HowTo/DetailTexturing/index.html\r\n * Cryengine: https://docs.cryengine.com/display/SDKDOC2/Detail+Maps\r\n */\r\nexport class DetailMapConfiguration {\r\n\r\n private _texture: Nullable<BaseTexture> = null;\r\n /**\r\n * The detail texture of the material.\r\n */\r\n @serializeAsTexture(\"detailTexture\")\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public texture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Defines how strongly the detail diffuse/albedo channel is blended with the regular diffuse/albedo texture\r\n * Bigger values mean stronger blending\r\n */\r\n @serialize()\r\n public diffuseBlendLevel = 1;\r\n\r\n /**\r\n * Defines how strongly the detail roughness channel is blended with the regular roughness value\r\n * Bigger values mean stronger blending. Only used with PBR materials\r\n */\r\n @serialize()\r\n public roughnessBlendLevel = 1;\r\n\r\n /**\r\n * Defines how strong the bump effect from the detail map is\r\n * Bigger values mean stronger effect\r\n */\r\n @serialize()\r\n public bumpLevel = 1;\r\n\r\n private _normalBlendMethod = Material.MATERIAL_NORMALBLENDMETHOD_WHITEOUT;\r\n /**\r\n * The method used to blend the bump and detail normals together\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public normalBlendMethod: number;\r\n\r\n private _isEnabled = false;\r\n /**\r\n * Enable or disable the detail map on this material\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public isEnabled = false;\r\n\r\n /** @hidden */\r\n private _internalMarkAllSubMeshesAsTexturesDirty: () => void;\r\n\r\n /** @hidden */\r\n public _markAllSubMeshesAsTexturesDirty(): void {\r\n this._internalMarkAllSubMeshesAsTexturesDirty();\r\n }\r\n\r\n /**\r\n * Instantiate a new detail map\r\n * @param markAllSubMeshesAsTexturesDirty Callback to flag the material to dirty\r\n */\r\n constructor(markAllSubMeshesAsTexturesDirty: () => void) {\r\n this._internalMarkAllSubMeshesAsTexturesDirty = markAllSubMeshesAsTexturesDirty;\r\n }\r\n\r\n /**\r\n * Gets whether the submesh is ready to be used or not.\r\n * @param defines the list of \"defines\" to update.\r\n * @param scene defines the scene the material belongs to.\r\n * @returns - boolean indicating that the submesh is ready or not.\r\n */\r\n public isReadyForSubMesh(defines: IMaterialDetailMapDefines, scene: Scene): boolean {\r\n if (!this._isEnabled) {\r\n return true;\r\n }\r\n\r\n const engine = scene.getEngine();\r\n\r\n if (defines._areTexturesDirty && scene.texturesEnabled) {\r\n if (engine.getCaps().standardDerivatives && this._texture && MaterialFlags.DetailTextureEnabled) {\r\n // Detail texture cannot be not blocking.\r\n if (!this._texture.isReady()) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Update the defines for detail map usage\r\n * @param defines the list of \"defines\" to update.\r\n * @param scene defines the scene the material belongs to.\r\n */\r\n public prepareDefines(defines: IMaterialDetailMapDefines, scene: Scene): void {\r\n if (this._isEnabled) {\r\n defines.DETAIL_NORMALBLENDMETHOD = this._normalBlendMethod;\r\n\r\n const engine = scene.getEngine();\r\n\r\n if (defines._areTexturesDirty) {\r\n if (engine.getCaps().standardDerivatives && this._texture && MaterialFlags.DetailTextureEnabled && this._isEnabled) {\r\n MaterialHelper.PrepareDefinesForMergedUV(this._texture, defines, \"DETAIL\");\r\n defines.DETAIL_NORMALBLENDMETHOD = this._normalBlendMethod;\r\n } else {\r\n defines.DETAIL = false;\r\n }\r\n }\r\n } else {\r\n defines.DETAIL = false;\r\n }\r\n }\r\n\r\n /**\r\n * Binds the material data.\r\n * @param uniformBuffer defines the Uniform buffer to fill in.\r\n * @param scene defines the scene the material belongs to.\r\n * @param isFrozen defines whether the material is frozen or not.\r\n */\r\n public bindForSubMesh(uniformBuffer: UniformBuffer, scene: Scene, isFrozen: boolean): void {\r\n if (!this._isEnabled) {\r\n return;\r\n }\r\n\r\n if (!uniformBuffer.useUbo || !isFrozen || !uniformBuffer.isSync) {\r\n if (this._texture && MaterialFlags.DetailTextureEnabled) {\r\n uniformBuffer.updateFloat4(\"vDetailInfos\", this._texture.coordinatesIndex, this.diffuseBlendLevel, this.bumpLevel, this.roughnessBlendLevel);\r\n MaterialHelper.BindTextureMatrix(this._texture, uniformBuffer, \"detail\");\r\n }\r\n }\r\n\r\n // Textures\r\n if (scene.texturesEnabled) {\r\n if (this._texture && MaterialFlags.DetailTextureEnabled) {\r\n uniformBuffer.setTexture(\"detailSampler\", this._texture);\r\n }\r\n }\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 hasTexture(texture: BaseTexture): boolean {\r\n if (this._texture === texture) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Returns an array of the actively used textures.\r\n * @param activeTextures Array of BaseTextures\r\n */\r\n public getActiveTextures(activeTextures: BaseTexture[]): void {\r\n if (this._texture) {\r\n activeTextures.push(this._texture);\r\n }\r\n }\r\n\r\n /**\r\n * Returns the animatable textures.\r\n * @param animatables Array of animatable textures.\r\n */\r\n public getAnimatables(animatables: IAnimatable[]): void {\r\n if (this._texture && this._texture.animations && this._texture.animations.length > 0) {\r\n animatables.push(this._texture);\r\n }\r\n }\r\n\r\n /**\r\n * Disposes the resources of the material.\r\n * @param forceDisposeTextures - Forces the disposal of all textures.\r\n */\r\n public dispose(forceDisposeTextures?: boolean): void {\r\n if (forceDisposeTextures) {\r\n this._texture?.dispose();\r\n }\r\n }\r\n\r\n /**\r\n * Get the current class name useful for serialization or dynamic coding.\r\n * @returns \"DetailMapConfiguration\"\r\n */\r\n public getClassName(): string {\r\n return \"DetailMapConfiguration\";\r\n }\r\n\r\n /**\r\n * Add the required uniforms to the current list.\r\n * @param uniforms defines the current uniform list.\r\n */\r\n public static AddUniforms(uniforms: string[]): void {\r\n uniforms.push(\"vDetailInfos\");\r\n uniforms.push(\"detailMatrix\");\r\n }\r\n\r\n /**\r\n * Add the required samplers to the current list.\r\n * @param samplers defines the current sampler list.\r\n */\r\n public static AddSamplers(samplers: string[]): void {\r\n samplers.push(\"detailSampler\");\r\n }\r\n\r\n /**\r\n * Add the required uniforms to the current buffer.\r\n * @param uniformBuffer defines the current uniform buffer.\r\n */\r\n public static PrepareUniformBuffer(uniformBuffer: UniformBuffer): void {\r\n uniformBuffer.addUniform(\"vDetailInfos\", 4);\r\n uniformBuffer.addUniform(\"detailMatrix\", 16);\r\n }\r\n\r\n /**\r\n * Makes a duplicate of the current instance into another one.\r\n * @param detailMap define the instance where to copy the info\r\n */\r\n public copyTo(detailMap: DetailMapConfiguration): void {\r\n SerializationHelper.Clone(() => detailMap, this);\r\n }\r\n\r\n /**\r\n * Serializes this detail map instance\r\n * @returns - An object with the serialized instance.\r\n */\r\n public serialize(): any {\r\n return SerializationHelper.Serialize(this);\r\n }\r\n\r\n /**\r\n * Parses a detail map setting from a serialized object.\r\n * @param source - Serialized object.\r\n * @param scene Defines the scene we are parsing for\r\n * @param rootUrl Defines the rootUrl to load from\r\n */\r\n public parse(source: any, scene: Scene, rootUrl: string): void {\r\n SerializationHelper.Parse(() => this, source, scene, rootUrl);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"material.detailMapConfiguration.js","sourceRoot":"","sources":["../../../sourceES6/core/Materials/material.detailMapConfiguration.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"../types\";\r\nimport { Material } from \"./material\";\r\nimport { serialize, expandToProperty, serializeAsTexture } from \"../Misc/decorators\";\r\nimport { MaterialFlags } from \"./materialFlags\";\r\nimport { MaterialHelper } from \"./materialHelper\";\r\nimport { BaseTexture } from \"./Textures/baseTexture\";\r\nimport { UniformBuffer } from \"./uniformBuffer\";\r\nimport { IAnimatable } from \"../Animations/animatable.interface\";\r\nimport { MaterialDefines } from \"./materialDefines\";\r\nimport { MaterialPluginBase } from \"./materialPluginBase\";\r\n\r\nimport { SubMesh } from \"../Meshes/subMesh\";\r\n\r\ndeclare type Engine = import(\"../Engines/engine\").Engine;\r\ndeclare type Scene = import(\"../scene\").Scene;\r\ndeclare type AbstractMesh = import(\"../Meshes/abstractMesh\").AbstractMesh;\r\ndeclare type StandardMaterial = import(\"./standardMaterial\").StandardMaterial;\r\ndeclare type PBRBaseMaterial = import(\"./PBR/pbrBaseMaterial\").PBRBaseMaterial;\r\n\r\n/**\r\n * @hidden\r\n */\r\nexport class MaterialDetailMapDefines extends MaterialDefines {\r\n DETAIL = false;\r\n DETAILDIRECTUV = 0;\r\n DETAIL_NORMALBLENDMETHOD = 0;\r\n}\r\n\r\n/**\r\n * Plugin that implements the detail map component of a material\r\n *\r\n * Inspired from:\r\n * Unity: https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@9.0/manual/Mask-Map-and-Detail-Map.html and https://docs.unity3d.com/Manual/StandardShaderMaterialParameterDetail.html\r\n * Unreal: https://docs.unrealengine.com/en-US/Engine/Rendering/Materials/HowTo/DetailTexturing/index.html\r\n * Cryengine: https://docs.cryengine.com/display/SDKDOC2/Detail+Maps\r\n */\r\nexport class DetailMapConfiguration extends MaterialPluginBase {\r\n private _texture: Nullable<BaseTexture> = null;\r\n /**\r\n * The detail texture of the material.\r\n */\r\n @serializeAsTexture(\"detailTexture\")\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public texture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Defines how strongly the detail diffuse/albedo channel is blended with the regular diffuse/albedo texture\r\n * Bigger values mean stronger blending\r\n */\r\n @serialize()\r\n public diffuseBlendLevel = 1;\r\n\r\n /**\r\n * Defines how strongly the detail roughness channel is blended with the regular roughness value\r\n * Bigger values mean stronger blending. Only used with PBR materials\r\n */\r\n @serialize()\r\n public roughnessBlendLevel = 1;\r\n\r\n /**\r\n * Defines how strong the bump effect from the detail map is\r\n * Bigger values mean stronger effect\r\n */\r\n @serialize()\r\n public bumpLevel = 1;\r\n\r\n private _normalBlendMethod = Material.MATERIAL_NORMALBLENDMETHOD_WHITEOUT;\r\n /**\r\n * The method used to blend the bump and detail normals together\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public normalBlendMethod: number;\r\n\r\n private _isEnabled = false;\r\n /**\r\n * Enable or disable the detail map on this material\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public isEnabled = false;\r\n\r\n /** @hidden */\r\n private _internalMarkAllSubMeshesAsTexturesDirty: () => void;\r\n\r\n /** @hidden */\r\n public _markAllSubMeshesAsTexturesDirty(): void {\r\n this._enable(this._isEnabled);\r\n this._internalMarkAllSubMeshesAsTexturesDirty();\r\n }\r\n\r\n constructor(material: PBRBaseMaterial | StandardMaterial, addToPluginList = true) {\r\n super(material, \"DetailMap\", 140, new MaterialDetailMapDefines(), addToPluginList);\r\n\r\n this._internalMarkAllSubMeshesAsTexturesDirty = material._dirtyCallbacks[1];\r\n }\r\n\r\n public isReadyForSubMesh(defines: MaterialDetailMapDefines, scene: Scene, engine: Engine): boolean {\r\n if (!this._isEnabled) {\r\n return true;\r\n }\r\n\r\n if (defines._areTexturesDirty && scene.texturesEnabled) {\r\n if (engine.getCaps().standardDerivatives && this._texture && MaterialFlags.DetailTextureEnabled) {\r\n // Detail texture cannot be not blocking.\r\n if (!this._texture.isReady()) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public prepareDefines(defines: MaterialDetailMapDefines, scene: Scene, mesh: AbstractMesh): void {\r\n if (this._isEnabled) {\r\n defines.DETAIL_NORMALBLENDMETHOD = this._normalBlendMethod;\r\n\r\n const engine = scene.getEngine();\r\n\r\n if (defines._areTexturesDirty) {\r\n if (engine.getCaps().standardDerivatives && this._texture && MaterialFlags.DetailTextureEnabled && this._isEnabled) {\r\n MaterialHelper.PrepareDefinesForMergedUV(this._texture, defines, \"DETAIL\");\r\n defines.DETAIL_NORMALBLENDMETHOD = this._normalBlendMethod;\r\n } else {\r\n defines.DETAIL = false;\r\n }\r\n }\r\n } else {\r\n defines.DETAIL = false;\r\n }\r\n }\r\n\r\n public bindForSubMesh(uniformBuffer: UniformBuffer, scene: Scene, engine: Engine, subMesh: SubMesh): void {\r\n if (!this._isEnabled) {\r\n return;\r\n }\r\n\r\n const isFrozen = this._material.isFrozen;\r\n\r\n if (!uniformBuffer.useUbo || !isFrozen || !uniformBuffer.isSync) {\r\n if (this._texture && MaterialFlags.DetailTextureEnabled) {\r\n uniformBuffer.updateFloat4(\"vDetailInfos\", this._texture.coordinatesIndex, this.diffuseBlendLevel, this.bumpLevel, this.roughnessBlendLevel);\r\n MaterialHelper.BindTextureMatrix(this._texture, uniformBuffer, \"detail\");\r\n }\r\n }\r\n\r\n // Textures\r\n if (scene.texturesEnabled) {\r\n if (this._texture && MaterialFlags.DetailTextureEnabled) {\r\n uniformBuffer.setTexture(\"detailSampler\", this._texture);\r\n }\r\n }\r\n }\r\n\r\n public hasTexture(texture: BaseTexture): boolean {\r\n if (this._texture === texture) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public getActiveTextures(activeTextures: BaseTexture[]): void {\r\n if (this._texture) {\r\n activeTextures.push(this._texture);\r\n }\r\n }\r\n\r\n public getAnimatables(animatables: IAnimatable[]): void {\r\n if (this._texture && this._texture.animations && this._texture.animations.length > 0) {\r\n animatables.push(this._texture);\r\n }\r\n }\r\n\r\n public dispose(forceDisposeTextures?: boolean): void {\r\n if (forceDisposeTextures) {\r\n this._texture?.dispose();\r\n }\r\n }\r\n\r\n public getClassName(): string {\r\n return \"DetailMapConfiguration\";\r\n }\r\n\r\n public getSamplers(samplers: string[]): void {\r\n samplers.push(\"detailSampler\");\r\n }\r\n\r\n public getUniforms(): { ubo?: Array<{ name: string; size: number; type: string }>; vertex?: string; fragment?: string } {\r\n return {\r\n ubo: [\r\n { name: \"vDetailInfos\", size: 4, type: \"vec4\" },\r\n { name: \"detailMatrix\", size: 16, type: \"mat4\" },\r\n ],\r\n };\r\n }\r\n}\r\n"]}
@@ -10,6 +10,7 @@ import { Plane } from '../Maths/math.plane.js';
10
10
  import { MaterialHelper } from './materialHelper.js';
11
11
  import { DrawWrapper } from "./drawWrapper.js";
12
12
  import { MaterialStencilState } from "./materialStencilState.js";
13
+ import { MaterialPluginEvent } from "./materialPluginEvent.js";
13
14
  /**
14
15
  * Base class for the main features of a material in Babylon.js
15
16
  */
@@ -174,6 +175,23 @@ var Material = /** @class */ (function () {
174
175
  this.meshMap = null;
175
176
  /** @hidden */
176
177
  this._parentContainer = null;
178
+ /** @hidden */
179
+ this._uniformBufferLayoutBuilt = false;
180
+ this._eventInfo = {}; // will be initialized before each event notification
181
+ /** @hidden */
182
+ this._callbackPluginEventGeneric = function () { return void (0); };
183
+ /** @hidden */
184
+ this._callbackPluginEventIsReadyForSubMesh = function () { return void (0); };
185
+ /** @hidden */
186
+ this._callbackPluginEventPrepareDefines = function () { return void (0); };
187
+ /** @hidden */
188
+ this._callbackPluginEventHardBindForSubMesh = function () { return void (0); };
189
+ /** @hidden */
190
+ this._callbackPluginEventBindForSubMesh = function () { return void (0); };
191
+ /** @hidden */
192
+ this._callbackPluginEventHasRenderTargetTextures = function () { return void (0); };
193
+ /** @hidden */
194
+ this._callbackPluginEventFillRenderTargetTextures = function () { return void (0); };
177
195
  /**
178
196
  * Enforces alpha test in opaque or blend mode in order to improve the performances of some situations.
179
197
  */
@@ -184,6 +202,14 @@ var Material = /** @class */ (function () {
184
202
  this._transparencyMode = null;
185
203
  this.name = name;
186
204
  this._scene = scene || EngineStore.LastCreatedScene;
205
+ this._dirtyCallbacks = {};
206
+ this._dirtyCallbacks[1] = this._markAllSubMeshesAsTexturesDirty.bind(this);
207
+ this._dirtyCallbacks[2] = this._markAllSubMeshesAsLightsDirty.bind(this);
208
+ this._dirtyCallbacks[4] = this._markAllSubMeshesAsFresnelDirty.bind(this);
209
+ this._dirtyCallbacks[8] = this._markAllSubMeshesAsAttributesDirty.bind(this);
210
+ this._dirtyCallbacks[16] = this._markAllSubMeshesAsMiscDirty.bind(this);
211
+ this._dirtyCallbacks[32] = this._markAllSubMeshesAsPrePassDirty.bind(this);
212
+ this._dirtyCallbacks[63] = this._markAllSubMeshesAsAllDirty.bind(this);
187
213
  this.id = name || Tools.RandomId();
188
214
  this.uniqueId = this._scene.getUniqueId();
189
215
  this._materialContext = this._scene.getEngine().createMaterialContext();
@@ -203,6 +229,7 @@ var Material = /** @class */ (function () {
203
229
  if (this._scene.useMaterialMeshMap) {
204
230
  this.meshMap = {};
205
231
  }
232
+ Material.OnEventObservable.notifyObservers(this, MaterialPluginEvent.Created);
206
233
  }
207
234
  Object.defineProperty(Material.prototype, "canRenderToMRT", {
208
235
  /**
@@ -281,7 +308,9 @@ var Material = /** @class */ (function () {
281
308
  * Gets a boolean indicating that current material needs to register RTT
282
309
  */
283
310
  get: function () {
284
- return false;
311
+ this._eventInfo.hasRenderTargetTextures = false;
312
+ this._callbackPluginEventHasRenderTargetTextures(this._eventInfo);
313
+ return this._eventInfo.hasRenderTargetTextures;
285
314
  },
286
315
  enumerable: false,
287
316
  configurable: true
@@ -566,7 +595,14 @@ var Material = /** @class */ (function () {
566
595
  * @returns a boolean indicating that the submesh is ready or not
567
596
  */
568
597
  Material.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
569
- return false;
598
+ var defines = subMesh.materialDefines;
599
+ if (!defines) {
600
+ return false;
601
+ }
602
+ this._eventInfo.isReadyForSubMesh = true;
603
+ this._eventInfo.defines = defines;
604
+ this._callbackPluginEventIsReadyForSubMesh(this._eventInfo);
605
+ return this._eventInfo.isReadyForSubMesh;
570
606
  };
571
607
  /**
572
608
  * Returns the material effect
@@ -706,6 +742,16 @@ var Material = /** @class */ (function () {
706
742
  */
707
743
  Material.prototype.bind = function (world, mesh) {
708
744
  };
745
+ /**
746
+ * Initializes the uniform buffer layout for the shader.
747
+ */
748
+ Material.prototype.buildUniformLayout = function () {
749
+ var ubo = this._uniformBuffer;
750
+ this._eventInfo.ubo = ubo;
751
+ this._callbackPluginEventGeneric(MaterialPluginEvent.PrepareUniformBuffer, this._eventInfo);
752
+ ubo.create();
753
+ this._uniformBufferLayoutBuilt = true;
754
+ };
709
755
  /**
710
756
  * Binds the submesh to the material
711
757
  * @param world defines the world transformation matrix
@@ -713,6 +759,12 @@ var Material = /** @class */ (function () {
713
759
  * @param subMesh defines the submesh to bind the material to
714
760
  */
715
761
  Material.prototype.bindForSubMesh = function (world, mesh, subMesh) {
762
+ var effect = subMesh.effect;
763
+ if (!effect) {
764
+ return;
765
+ }
766
+ this._eventInfo.subMesh = subMesh;
767
+ this._callbackPluginEventBindForSubMesh(this._eventInfo);
716
768
  };
717
769
  /**
718
770
  * Binds the world matrix to the material
@@ -817,12 +869,23 @@ var Material = /** @class */ (function () {
817
869
  engine.setColorWrite(this._cachedColorWriteState);
818
870
  }
819
871
  };
872
+ /**
873
+ * Returns the animatable textures.
874
+ * @returns - Array of animatable textures.
875
+ */
876
+ Material.prototype.getAnimatables = function () {
877
+ this._eventInfo.animatables = [];
878
+ this._callbackPluginEventGeneric(MaterialPluginEvent.GetAnimatables, this._eventInfo);
879
+ return this._eventInfo.animatables;
880
+ };
820
881
  /**
821
882
  * Gets the active textures from the material
822
883
  * @returns an array of textures
823
884
  */
824
885
  Material.prototype.getActiveTextures = function () {
825
- return [];
886
+ this._eventInfo.activeTextures = [];
887
+ this._callbackPluginEventGeneric(MaterialPluginEvent.GetActiveTextures, this._eventInfo);
888
+ return this._eventInfo.activeTextures;
826
889
  };
827
890
  /**
828
891
  * Specifies if the material uses a texture
@@ -830,7 +893,10 @@ var Material = /** @class */ (function () {
830
893
  * @returns a boolean specifying if the material uses the texture
831
894
  */
832
895
  Material.prototype.hasTexture = function (texture) {
833
- return false;
896
+ this._eventInfo.hasTexture = false;
897
+ this._eventInfo.texture = texture;
898
+ this._callbackPluginEventGeneric(MaterialPluginEvent.HasTexture, this._eventInfo);
899
+ return this._eventInfo.hasTexture;
834
900
  };
835
901
  /**
836
902
  * Makes a duplicate of the material, and gives it a new name
@@ -976,6 +1042,25 @@ var Material = /** @class */ (function () {
976
1042
  }
977
1043
  this.getScene().resetCachedMaterial();
978
1044
  };
1045
+ /**
1046
+ * Resets the draw wrappers cache for all submeshes that are using this material
1047
+ */
1048
+ Material.prototype.resetDrawCache = function () {
1049
+ var meshes = this.getScene().meshes;
1050
+ for (var _i = 0, meshes_2 = meshes; _i < meshes_2.length; _i++) {
1051
+ var mesh = meshes_2[_i];
1052
+ if (!mesh.subMeshes) {
1053
+ continue;
1054
+ }
1055
+ for (var _a = 0, _b = mesh.subMeshes; _a < _b.length; _a++) {
1056
+ var subMesh = _b[_a];
1057
+ if (subMesh.getMaterial() !== this) {
1058
+ continue;
1059
+ }
1060
+ subMesh.resetDrawCache();
1061
+ }
1062
+ }
1063
+ };
979
1064
  /**
980
1065
  * Marks all submeshes of a material to indicate that their material defines need to be re-calculated
981
1066
  * @param func defines a function which checks material defines against the submeshes
@@ -985,8 +1070,8 @@ var Material = /** @class */ (function () {
985
1070
  return;
986
1071
  }
987
1072
  var meshes = this.getScene().meshes;
988
- for (var _i = 0, meshes_2 = meshes; _i < meshes_2.length; _i++) {
989
- var mesh = meshes_2[_i];
1073
+ for (var _i = 0, meshes_3 = meshes; _i < meshes_3.length; _i++) {
1074
+ var mesh = meshes_3[_i];
990
1075
  if (!mesh.subMeshes) {
991
1076
  continue;
992
1077
  }
@@ -1101,6 +1186,8 @@ var Material = /** @class */ (function () {
1101
1186
  scene.freeProcessedMaterials();
1102
1187
  // Remove from scene
1103
1188
  scene.removeMaterial(this);
1189
+ this._eventInfo.forceDisposeTextures = forceDisposeTextures;
1190
+ this._callbackPluginEventGeneric(MaterialPluginEvent.Disposed, this._eventInfo);
1104
1191
  if (this._parentContainer) {
1105
1192
  var index = this._parentContainer.materials.indexOf(this);
1106
1193
  if (index > -1) {
@@ -1121,8 +1208,8 @@ var Material = /** @class */ (function () {
1121
1208
  }
1122
1209
  else {
1123
1210
  var meshes = scene.meshes;
1124
- for (var _i = 0, meshes_3 = meshes; _i < meshes_3.length; _i++) {
1125
- var mesh = meshes_3[_i];
1211
+ for (var _i = 0, meshes_4 = meshes; _i < meshes_4.length; _i++) {
1212
+ var mesh = meshes_4[_i];
1126
1213
  if (mesh.material === this && !mesh.sourceMesh) {
1127
1214
  mesh.material = null;
1128
1215
  this.releaseVertexArrayObject(mesh, forceDisposeEffect);
@@ -1299,6 +1386,10 @@ var Material = /** @class */ (function () {
1299
1386
  * Details of the algorithm can be found here: https://blog.selfshadow.com/publications/blending-in-detail/
1300
1387
  */
1301
1388
  Material.MATERIAL_NORMALBLENDMETHOD_RNM = 1;
1389
+ /**
1390
+ * Event observable which raises global events common to all materials (like MaterialPluginEvent.Created)
1391
+ */
1392
+ Material.OnEventObservable = new Observable();
1302
1393
  Material._AllDirtyCallBack = function (defines) { return defines.markAllAsDirty(); };
1303
1394
  Material._ImageProcessingDirtyCallBack = function (defines) { return defines.markAsImageProcessingDirty(); };
1304
1395
  Material._TextureDirtyCallBack = function (defines) { return defines.markAsTexturesDirty(); };