@babylonjs/core 5.0.0-alpha.59 → 5.0.0-alpha.62

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 (400) hide show
  1. package/Animations/animation.d.ts +20 -0
  2. package/Animations/animation.js +57 -8
  3. package/Animations/animation.js.map +1 -1
  4. package/Animations/animationKey.d.ts +4 -0
  5. package/Animations/animationKey.js +4 -0
  6. package/Animations/animationKey.js.map +1 -1
  7. package/Audio/sound.js +1 -1
  8. package/Audio/sound.js.map +1 -1
  9. package/BakedVertexAnimation/bakedVertexAnimationManager.d.ts +130 -0
  10. package/BakedVertexAnimation/bakedVertexAnimationManager.js +134 -0
  11. package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -0
  12. package/BakedVertexAnimation/index.d.ts +2 -0
  13. package/BakedVertexAnimation/index.js +3 -0
  14. package/BakedVertexAnimation/index.js.map +1 -0
  15. package/BakedVertexAnimation/vertexAnimationBaker.d.ts +65 -0
  16. package/BakedVertexAnimation/vertexAnimationBaker.js +155 -0
  17. package/BakedVertexAnimation/vertexAnimationBaker.js.map +1 -0
  18. package/Behaviors/Cameras/autoRotationBehavior.d.ts +5 -0
  19. package/Behaviors/Cameras/autoRotationBehavior.js +7 -0
  20. package/Behaviors/Cameras/autoRotationBehavior.js.map +1 -1
  21. package/Behaviors/Cameras/framingBehavior.d.ts +5 -0
  22. package/Behaviors/Cameras/framingBehavior.js +8 -1
  23. package/Behaviors/Cameras/framingBehavior.js.map +1 -1
  24. package/Bones/bone.d.ts +3 -1
  25. package/Bones/bone.js +4 -1
  26. package/Bones/bone.js.map +1 -1
  27. package/Cameras/Inputs/BaseCameraPointersInput.js +4 -6
  28. package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
  29. package/Cameras/Inputs/flyCameraMouseInput.js +4 -4
  30. package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
  31. package/Cameras/Inputs/freeCameraMouseInput.js +4 -4
  32. package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
  33. package/Cameras/camera.js +8 -2
  34. package/Cameras/camera.js.map +1 -1
  35. package/Cameras/targetCamera.js +1 -1
  36. package/Cameras/targetCamera.js.map +1 -1
  37. package/Culling/boundingBox.d.ts +4 -0
  38. package/Culling/boundingBox.js +8 -0
  39. package/Culling/boundingBox.js.map +1 -1
  40. package/Debug/physicsViewer.js +1 -1
  41. package/Debug/physicsViewer.js.map +1 -1
  42. package/Debug/skeletonViewer.js +2 -2
  43. package/Debug/skeletonViewer.js.map +1 -1
  44. package/DeviceInput/Implementations/nativeDeviceInputWrapper.d.ts +6 -1
  45. package/DeviceInput/Implementations/nativeDeviceInputWrapper.js +16 -1
  46. package/DeviceInput/Implementations/nativeDeviceInputWrapper.js.map +1 -1
  47. package/DeviceInput/Implementations/webDeviceInputSystem.js +10 -10
  48. package/DeviceInput/Implementations/webDeviceInputSystem.js.map +1 -1
  49. package/DeviceInput/deviceInputSystem.js +6 -1
  50. package/DeviceInput/deviceInputSystem.js.map +1 -1
  51. package/Engines/Extensions/engine.dynamicTexture.d.ts +2 -1
  52. package/Engines/Extensions/engine.dynamicTexture.js +2 -1
  53. package/Engines/Extensions/engine.dynamicTexture.js.map +1 -1
  54. package/Engines/Extensions/engine.multiview.js +17 -6
  55. package/Engines/Extensions/engine.multiview.js.map +1 -1
  56. package/Engines/WebGPU/Extensions/engine.dynamicTexture.js +3 -11
  57. package/Engines/WebGPU/Extensions/engine.dynamicTexture.js.map +1 -1
  58. package/Engines/WebGPU/Extensions/engine.multiRender.js +0 -4
  59. package/Engines/WebGPU/Extensions/engine.multiRender.js.map +1 -1
  60. package/Engines/WebGPU/Extensions/engine.query.js +19 -3
  61. package/Engines/WebGPU/Extensions/engine.query.js.map +1 -1
  62. package/Engines/WebGPU/Extensions/engine.renderTarget.js +0 -4
  63. package/Engines/WebGPU/Extensions/engine.renderTarget.js.map +1 -1
  64. package/Engines/WebGPU/webgpuBundleList.d.ts +13 -0
  65. package/Engines/WebGPU/webgpuBundleList.js +27 -0
  66. package/Engines/WebGPU/webgpuBundleList.js.map +1 -1
  67. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +42 -61
  68. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  69. package/Engines/WebGPU/webgpuCacheSampler.js +6 -4
  70. package/Engines/WebGPU/webgpuCacheSampler.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 +25 -2
  75. package/Engines/WebGPU/webgpuHardwareTexture.js +2 -1
  76. package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
  77. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.d.ts +6 -0
  78. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +6 -0
  79. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
  80. package/Engines/WebGPU/webgpuSnapshotRendering.d.ts +27 -0
  81. package/Engines/WebGPU/webgpuSnapshotRendering.js +107 -0
  82. package/Engines/WebGPU/webgpuSnapshotRendering.js.map +1 -0
  83. package/Engines/WebGPU/webgpuTextureHelper.d.ts +4 -4
  84. package/Engines/WebGPU/webgpuTextureHelper.js +273 -80
  85. package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
  86. package/Engines/constants.d.ts +2 -0
  87. package/Engines/constants.js +2 -0
  88. package/Engines/constants.js.map +1 -1
  89. package/Engines/engine.d.ts +94 -40
  90. package/Engines/engine.js +43 -1
  91. package/Engines/engine.js.map +1 -1
  92. package/Engines/engineFeatures.d.ts +2 -0
  93. package/Engines/engineFeatures.js.map +1 -1
  94. package/Engines/index.d.ts +1 -0
  95. package/Engines/index.js +1 -0
  96. package/Engines/index.js.map +1 -1
  97. package/Engines/nativeEngine.js +49 -23
  98. package/Engines/nativeEngine.js.map +1 -1
  99. package/Engines/nullEngine.js +1 -0
  100. package/Engines/nullEngine.js.map +1 -1
  101. package/Engines/thinEngine.d.ts +0 -11
  102. package/Engines/thinEngine.js +12 -40
  103. package/Engines/thinEngine.js.map +1 -1
  104. package/Engines/webgpuEngine.d.ts +6 -6
  105. package/Engines/webgpuEngine.js +28 -71
  106. package/Engines/webgpuEngine.js.map +1 -1
  107. package/Helpers/sceneHelpers.d.ts +3 -3
  108. package/Helpers/sceneHelpers.js +1 -2
  109. package/Helpers/sceneHelpers.js.map +1 -1
  110. package/Inputs/scene.inputManager.js +12 -14
  111. package/Inputs/scene.inputManager.js.map +1 -1
  112. package/Layers/effectLayer.d.ts +13 -1
  113. package/Layers/effectLayer.js +115 -65
  114. package/Layers/effectLayer.js.map +1 -1
  115. package/Layers/highlightLayer.d.ts +2 -1
  116. package/Layers/highlightLayer.js +6 -3
  117. package/Layers/highlightLayer.js.map +1 -1
  118. package/Lights/Shadows/cascadedShadowGenerator.d.ts +1 -0
  119. package/Lights/Shadows/cascadedShadowGenerator.js +14 -0
  120. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  121. package/Lights/Shadows/shadowGenerator.d.ts +4 -0
  122. package/Lights/Shadows/shadowGenerator.js +31 -3
  123. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  124. package/Lights/light.js +7 -1
  125. package/Lights/light.js.map +1 -1
  126. package/Lights/pointLight.js +1 -1
  127. package/Lights/pointLight.js.map +1 -1
  128. package/Lights/spotLight.js +1 -1
  129. package/Lights/spotLight.js.map +1 -1
  130. package/Loading/Plugins/babylonFileLoader.js +17 -4
  131. package/Loading/Plugins/babylonFileLoader.js.map +1 -1
  132. package/Materials/Background/backgroundMaterial.js +1 -0
  133. package/Materials/Background/backgroundMaterial.js.map +1 -1
  134. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.d.ts +10 -0
  135. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +31 -0
  136. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
  137. package/Materials/Node/Blocks/Fragment/index.d.ts +2 -0
  138. package/Materials/Node/Blocks/Fragment/index.js +2 -0
  139. package/Materials/Node/Blocks/Fragment/index.js.map +1 -1
  140. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.d.ts +41 -0
  141. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js +128 -0
  142. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js.map +1 -0
  143. package/Materials/Node/Blocks/Fragment/twirlBlock.d.ts +49 -0
  144. package/Materials/Node/Blocks/Fragment/twirlBlock.js +145 -0
  145. package/Materials/Node/Blocks/Fragment/twirlBlock.js.map +1 -0
  146. package/Materials/Node/Blocks/Input/inputBlock.js +1 -1
  147. package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
  148. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.d.ts +1 -0
  149. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js +15 -0
  150. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js.map +1 -1
  151. package/Materials/Node/Blocks/customBlock.d.ts +31 -0
  152. package/Materials/Node/Blocks/customBlock.js +144 -0
  153. package/Materials/Node/Blocks/customBlock.js.map +1 -0
  154. package/Materials/Node/Blocks/index.d.ts +2 -0
  155. package/Materials/Node/Blocks/index.js +2 -0
  156. package/Materials/Node/Blocks/index.js.map +1 -1
  157. package/Materials/Node/Blocks/vectorMergerBlock.js +4 -4
  158. package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
  159. package/Materials/Node/Blocks/voronoiNoiseBlock.d.ts +39 -0
  160. package/Materials/Node/Blocks/voronoiNoiseBlock.js +107 -0
  161. package/Materials/Node/Blocks/voronoiNoiseBlock.js.map +1 -0
  162. package/Materials/Node/Blocks/worleyNoise3DBlock.d.ts +8 -0
  163. package/Materials/Node/Blocks/worleyNoise3DBlock.js +34 -2
  164. package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
  165. package/Materials/Node/nodeMaterial.d.ts +1 -0
  166. package/Materials/Node/nodeMaterial.js +2 -0
  167. package/Materials/Node/nodeMaterial.js.map +1 -1
  168. package/Materials/Node/nodeMaterialBuildStateSharedData.d.ts +5 -0
  169. package/Materials/Node/nodeMaterialBuildStateSharedData.js.map +1 -1
  170. package/Materials/PBR/pbrBaseMaterial.d.ts +2 -0
  171. package/Materials/PBR/pbrBaseMaterial.js +12 -5
  172. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  173. package/Materials/PBR/pbrSubSurfaceConfiguration.d.ts +11 -0
  174. package/Materials/PBR/pbrSubSurfaceConfiguration.js +18 -3
  175. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  176. package/Materials/Textures/dynamicTexture.d.ts +2 -1
  177. package/Materials/Textures/dynamicTexture.js +4 -2
  178. package/Materials/Textures/dynamicTexture.js.map +1 -1
  179. package/Materials/Textures/hdrCubeTexture.d.ts +9 -0
  180. package/Materials/Textures/hdrCubeTexture.js +21 -5
  181. package/Materials/Textures/hdrCubeTexture.js.map +1 -1
  182. package/Materials/Textures/mirrorTexture.d.ts +2 -0
  183. package/Materials/Textures/mirrorTexture.js +13 -0
  184. package/Materials/Textures/mirrorTexture.js.map +1 -1
  185. package/Materials/Textures/thinRenderTargetTexture.js +1 -1
  186. package/Materials/Textures/thinRenderTargetTexture.js.map +1 -1
  187. package/Materials/Textures/thinTexture.d.ts +1 -2
  188. package/Materials/Textures/thinTexture.js +2 -4
  189. package/Materials/Textures/thinTexture.js.map +1 -1
  190. package/Materials/imageProcessingConfiguration.d.ts +16 -1
  191. package/Materials/imageProcessingConfiguration.js +31 -0
  192. package/Materials/imageProcessingConfiguration.js.map +1 -1
  193. package/Materials/materialHelper.d.ts +15 -1
  194. package/Materials/materialHelper.js +40 -3
  195. package/Materials/materialHelper.js.map +1 -1
  196. package/Materials/pushMaterial.d.ts +2 -2
  197. package/Materials/pushMaterial.js +7 -3
  198. package/Materials/pushMaterial.js.map +1 -1
  199. package/Materials/shaderMaterial.d.ts +6 -5
  200. package/Materials/shaderMaterial.js +70 -28
  201. package/Materials/shaderMaterial.js.map +1 -1
  202. package/Materials/shadowDepthWrapper.js +7 -7
  203. package/Materials/shadowDepthWrapper.js.map +1 -1
  204. package/Materials/standardMaterial.d.ts +2 -0
  205. package/Materials/standardMaterial.js +11 -1
  206. package/Materials/standardMaterial.js.map +1 -1
  207. package/Materials/uniformBuffer.js +1 -2
  208. package/Materials/uniformBuffer.js.map +1 -1
  209. package/Maths/math.color.d.ts +20 -0
  210. package/Maths/math.color.js +45 -2
  211. package/Maths/math.color.js.map +1 -1
  212. package/Maths/math.vector.d.ts +14 -9
  213. package/Maths/math.vector.js +36 -17
  214. package/Maths/math.vector.js.map +1 -1
  215. package/Meshes/Builders/boxBuilder.d.ts +1 -1
  216. package/Meshes/Builders/boxBuilder.js +1 -0
  217. package/Meshes/Builders/boxBuilder.js.map +1 -1
  218. package/Meshes/Builders/cylinderBuilder.d.ts +17 -17
  219. package/Meshes/Builders/cylinderBuilder.js +1 -0
  220. package/Meshes/Builders/cylinderBuilder.js.map +1 -1
  221. package/Meshes/Builders/discBuilder.d.ts +1 -1
  222. package/Meshes/Builders/discBuilder.js +1 -0
  223. package/Meshes/Builders/discBuilder.js.map +1 -1
  224. package/Meshes/Builders/groundBuilder.d.ts +8 -8
  225. package/Meshes/Builders/groundBuilder.js +2 -0
  226. package/Meshes/Builders/groundBuilder.js.map +1 -1
  227. package/Meshes/Builders/hemisphereBuilder.d.ts +4 -4
  228. package/Meshes/Builders/hemisphereBuilder.js +1 -0
  229. package/Meshes/Builders/hemisphereBuilder.js.map +1 -1
  230. package/Meshes/Builders/icoSphereBuilder.d.ts +1 -1
  231. package/Meshes/Builders/icoSphereBuilder.js +1 -0
  232. package/Meshes/Builders/icoSphereBuilder.js.map +1 -1
  233. package/Meshes/Builders/planeBuilder.d.ts +1 -1
  234. package/Meshes/Builders/planeBuilder.js +1 -0
  235. package/Meshes/Builders/planeBuilder.js.map +1 -1
  236. package/Meshes/Builders/polyhedronBuilder.d.ts +1 -1
  237. package/Meshes/Builders/polyhedronBuilder.js +1 -0
  238. package/Meshes/Builders/polyhedronBuilder.js.map +1 -1
  239. package/Meshes/Builders/sphereBuilder.d.ts +1 -1
  240. package/Meshes/Builders/sphereBuilder.js +1 -0
  241. package/Meshes/Builders/sphereBuilder.js.map +1 -1
  242. package/Meshes/Builders/torusBuilder.d.ts +8 -8
  243. package/Meshes/Builders/torusBuilder.js +1 -0
  244. package/Meshes/Builders/torusBuilder.js.map +1 -1
  245. package/Meshes/Builders/torusKnotBuilder.d.ts +11 -11
  246. package/Meshes/Builders/torusKnotBuilder.js +1 -0
  247. package/Meshes/Builders/torusKnotBuilder.js.map +1 -1
  248. package/Meshes/abstractMesh.d.ts +22 -2
  249. package/Meshes/abstractMesh.js +78 -28
  250. package/Meshes/abstractMesh.js.map +1 -1
  251. package/Meshes/geometry.d.ts +3 -0
  252. package/Meshes/geometry.js +15 -7
  253. package/Meshes/geometry.js.map +1 -1
  254. package/Meshes/linesMesh.d.ts +0 -2
  255. package/Meshes/linesMesh.js +3 -35
  256. package/Meshes/linesMesh.js.map +1 -1
  257. package/Meshes/mesh.d.ts +12 -0
  258. package/Meshes/mesh.js +186 -117
  259. package/Meshes/mesh.js.map +1 -1
  260. package/Meshes/mesh.vertexData.d.ts +6 -1
  261. package/Meshes/mesh.vertexData.js +295 -114
  262. package/Meshes/mesh.vertexData.js.map +1 -1
  263. package/Meshes/thinInstanceMesh.js +6 -5
  264. package/Meshes/thinInstanceMesh.js.map +1 -1
  265. package/Meshes/transformNode.d.ts +8 -8
  266. package/Meshes/transformNode.js +25 -17
  267. package/Meshes/transformNode.js.map +1 -1
  268. package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.d.ts +1 -0
  269. package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.js +13 -8
  270. package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.js.map +1 -1
  271. package/Misc/PerformanceViewer/performanceViewerCollector.js +1 -1
  272. package/Misc/PerformanceViewer/performanceViewerCollector.js.map +1 -1
  273. package/Misc/basis.d.ts +3 -2
  274. package/Misc/basis.js +31 -15
  275. package/Misc/basis.js.map +1 -1
  276. package/Misc/coroutine.d.ts +45 -0
  277. package/Misc/coroutine.js +123 -0
  278. package/Misc/coroutine.js.map +1 -0
  279. package/Misc/index.d.ts +1 -0
  280. package/Misc/index.js +1 -0
  281. package/Misc/index.js.map +1 -1
  282. package/Misc/observableCoroutine.d.ts +9 -10
  283. package/Misc/observableCoroutine.js +31 -39
  284. package/Misc/observableCoroutine.js.map +1 -1
  285. package/Misc/sceneSerializer.js +0 -3
  286. package/Misc/sceneSerializer.js.map +1 -1
  287. package/Misc/tools.d.ts +2 -4
  288. package/Misc/tools.js +6 -10
  289. package/Misc/tools.js.map +1 -1
  290. package/Particles/particleSystem.js +19 -16
  291. package/Particles/particleSystem.js.map +1 -1
  292. package/Particles/solidParticleSystem.js +29 -5
  293. package/Particles/solidParticleSystem.js.map +1 -1
  294. package/Particles/subEmitter.js +1 -0
  295. package/Particles/subEmitter.js.map +1 -1
  296. package/Physics/Plugins/ammoJSPlugin.js +10 -8
  297. package/Physics/Plugins/ammoJSPlugin.js.map +1 -1
  298. package/PostProcesses/imageProcessingPostProcess.js +1 -0
  299. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  300. package/Probes/reflectionProbe.d.ts +2 -0
  301. package/Probes/reflectionProbe.js +21 -0
  302. package/Probes/reflectionProbe.js.map +1 -1
  303. package/Rendering/boundingBoxRenderer.d.ts +3 -0
  304. package/Rendering/boundingBoxRenderer.js +49 -14
  305. package/Rendering/boundingBoxRenderer.js.map +1 -1
  306. package/Rendering/depthRenderer.d.ts +1 -1
  307. package/Rendering/depthRenderer.js +2 -2
  308. package/Rendering/depthRenderer.js.map +1 -1
  309. package/Rendering/edgesRenderer.js +3 -1
  310. package/Rendering/edgesRenderer.js.map +1 -1
  311. package/Rendering/geometryBufferRenderer.d.ts +0 -2
  312. package/Rendering/geometryBufferRenderer.js +13 -10
  313. package/Rendering/geometryBufferRenderer.js.map +1 -1
  314. package/Shaders/ShadersInclude/bakedVertexAnimation.d.ts +5 -0
  315. package/Shaders/ShadersInclude/bakedVertexAnimation.js +7 -0
  316. package/Shaders/ShadersInclude/bakedVertexAnimation.js.map +1 -0
  317. package/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.d.ts +5 -0
  318. package/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.js +7 -0
  319. package/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.js.map +1 -0
  320. package/Shaders/ShadersInclude/bonesDeclaration.js +1 -1
  321. package/Shaders/ShadersInclude/bonesDeclaration.js.map +1 -1
  322. package/Shaders/ShadersInclude/bonesVertex.js +1 -1
  323. package/Shaders/ShadersInclude/bonesVertex.js.map +1 -1
  324. package/Shaders/ShadersInclude/pbrBlockImageProcessing.js +1 -1
  325. package/Shaders/ShadersInclude/pbrBlockImageProcessing.js.map +1 -1
  326. package/Shaders/ShadersInclude/shadowsFragmentFunctions.js +1 -1
  327. package/Shaders/ShadersInclude/shadowsFragmentFunctions.js.map +1 -1
  328. package/Shaders/background.fragment.js +1 -1
  329. package/Shaders/background.fragment.js.map +1 -1
  330. package/Shaders/background.vertex.d.ts +2 -0
  331. package/Shaders/background.vertex.js +3 -1
  332. package/Shaders/background.vertex.js.map +1 -1
  333. package/Shaders/color.vertex.d.ts +2 -0
  334. package/Shaders/color.vertex.js +3 -1
  335. package/Shaders/color.vertex.js.map +1 -1
  336. package/Shaders/default.vertex.d.ts +2 -0
  337. package/Shaders/default.vertex.js +3 -1
  338. package/Shaders/default.vertex.js.map +1 -1
  339. package/Shaders/depth.vertex.d.ts +2 -0
  340. package/Shaders/depth.vertex.js +3 -1
  341. package/Shaders/depth.vertex.js.map +1 -1
  342. package/Shaders/geometry.vertex.d.ts +2 -0
  343. package/Shaders/geometry.vertex.js +3 -1
  344. package/Shaders/geometry.vertex.js.map +1 -1
  345. package/Shaders/glowMapGeneration.vertex.d.ts +2 -0
  346. package/Shaders/glowMapGeneration.vertex.js +3 -1
  347. package/Shaders/glowMapGeneration.vertex.js.map +1 -1
  348. package/Shaders/outline.vertex.d.ts +2 -0
  349. package/Shaders/outline.vertex.js +3 -1
  350. package/Shaders/outline.vertex.js.map +1 -1
  351. package/Shaders/pbr.vertex.d.ts +2 -0
  352. package/Shaders/pbr.vertex.js +3 -1
  353. package/Shaders/pbr.vertex.js.map +1 -1
  354. package/Shaders/shadowMap.vertex.d.ts +2 -0
  355. package/Shaders/shadowMap.vertex.js +3 -1
  356. package/Shaders/shadowMap.vertex.js.map +1 -1
  357. package/Shaders/volumetricLightScatteringPass.vertex.d.ts +2 -0
  358. package/Shaders/volumetricLightScatteringPass.vertex.js +3 -1
  359. package/Shaders/volumetricLightScatteringPass.vertex.js.map +1 -1
  360. package/ShadersWGSL/ShadersInclude/bakedVertexAnimation.d.ts +5 -0
  361. package/ShadersWGSL/ShadersInclude/bakedVertexAnimation.js +7 -0
  362. package/ShadersWGSL/ShadersInclude/bakedVertexAnimation.js.map +1 -0
  363. package/ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration.d.ts +5 -0
  364. package/ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration.js +7 -0
  365. package/ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration.js.map +1 -0
  366. package/ShadersWGSL/ShadersInclude/bonesDeclaration.js +1 -1
  367. package/ShadersWGSL/ShadersInclude/bonesDeclaration.js.map +1 -1
  368. package/ShadersWGSL/ShadersInclude/bonesVertex.js +1 -1
  369. package/ShadersWGSL/ShadersInclude/bonesVertex.js.map +1 -1
  370. package/ShadersWGSL/ShadersInclude/clipPlaneFragment.d.ts +5 -0
  371. package/ShadersWGSL/ShadersInclude/clipPlaneFragment.js +7 -0
  372. package/ShadersWGSL/ShadersInclude/clipPlaneFragment.js.map +1 -0
  373. package/ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration.d.ts +5 -0
  374. package/ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration.js +7 -0
  375. package/ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration.js.map +1 -0
  376. package/ShadersWGSL/ShadersInclude/clipPlaneVertex.d.ts +5 -0
  377. package/ShadersWGSL/ShadersInclude/clipPlaneVertex.js +7 -0
  378. package/ShadersWGSL/ShadersInclude/clipPlaneVertex.js.map +1 -0
  379. package/ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration.d.ts +5 -0
  380. package/ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration.js +7 -0
  381. package/ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration.js.map +1 -0
  382. package/Sprites/spriteRenderer.d.ts +1 -0
  383. package/Sprites/spriteRenderer.js +13 -1
  384. package/Sprites/spriteRenderer.js.map +1 -1
  385. package/XR/features/WebXRControllerPointerSelection.d.ts +14 -0
  386. package/XR/features/WebXRControllerPointerSelection.js +38 -10
  387. package/XR/features/WebXRControllerPointerSelection.js.map +1 -1
  388. package/XR/features/WebXRNearInteraction.d.ts +1 -0
  389. package/XR/features/WebXRNearInteraction.js +2 -0
  390. package/XR/features/WebXRNearInteraction.js.map +1 -1
  391. package/index.d.ts +1 -0
  392. package/index.js +1 -0
  393. package/index.js.map +1 -1
  394. package/node.d.ts +30 -1
  395. package/node.js +12 -0
  396. package/node.js.map +1 -1
  397. package/package.json +52 -1
  398. package/scene.d.ts +10 -0
  399. package/scene.js +27 -0
  400. package/scene.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"shadowDepthWrapper.js","sourceRoot":"","sources":["../../../sourceES6/core/Materials/shadowDepthWrapper.ts"],"names":[],"mappings":"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","sourcesContent":["import { Observer } from \"../Misc/observable\";\r\nimport { Nullable } from \"../types\";\r\nimport { Scene } from \"../scene\";\r\nimport { SubMesh } from \"../Meshes/subMesh\";\r\nimport { Material } from \"./material\";\r\nimport { Effect, IEffectCreationOptions } from './effect';\r\nimport { AbstractMesh } from '../Meshes/abstractMesh';\r\nimport { Node } from '../node';\r\nimport { ShadowGenerator } from '../Lights/Shadows/shadowGenerator';\r\nimport { RandomGUID } from '../Misc/guid';\r\nimport { DrawWrapper } from \"./drawWrapper\";\r\nimport { Engine } from \"../Engines/engine\";\r\n\r\n\r\n/**\r\n * Options to be used when creating a shadow depth material\r\n */\r\nexport interface IIOptionShadowDepthMaterial {\r\n /** Variables in the vertex shader code that need to have their names remapped.\r\n * The format is: [\"var_name\", \"var_remapped_name\", \"var_name\", \"var_remapped_name\", ...]\r\n * \"var_name\" should be either: worldPos or vNormalW\r\n * So, if the variable holding the world position in your vertex shader is not named worldPos, you must tell the system\r\n * the name to use instead by using: [\"worldPos\", \"myWorldPosVar\"] assuming the variable is named myWorldPosVar in your code.\r\n * If the normal must also be remapped: [\"worldPos\", \"myWorldPosVar\", \"vNormalW\", \"myWorldNormal\"]\r\n */\r\n remappedVariables?: string[];\r\n\r\n /** Set standalone to true if the base material wrapped by ShadowDepthMaterial is not used for a regular object but for depth shadow generation only */\r\n standalone?: boolean;\r\n}\r\n\r\nclass MapMap<Ka, Kb, V> {\r\n readonly mm = new Map<Ka, Map<Kb, V>>();\r\n\r\n get(a: Ka, b: Kb): V | undefined {\r\n const m = this.mm.get(a);\r\n if (m !== undefined) {\r\n return m.get(b);\r\n }\r\n return undefined;\r\n }\r\n\r\n set(a: Ka, b: Kb, v: V): void {\r\n let m = this.mm.get(a);\r\n if (m === undefined) {\r\n this.mm.set(a, (m = new Map()));\r\n }\r\n m.set(b, v);\r\n }\r\n}\r\n\r\n/**\r\n * Class that can be used to wrap a base material to generate accurate shadows when using custom vertex/fragment code in the base material\r\n */\r\nexport class ShadowDepthWrapper {\r\n\r\n private _scene: Scene;\r\n private _options?: IIOptionShadowDepthMaterial;\r\n private _baseMaterial: Material;\r\n private _onEffectCreatedObserver: Nullable<Observer<{ effect: Effect, subMesh: Nullable<SubMesh> }>>;\r\n private _subMeshToEffect: Map<Nullable<SubMesh>, Effect>;\r\n private _subMeshToDepthWrapper: MapMap<Nullable<SubMesh>, ShadowGenerator, { drawWrapper: Array<Nullable<DrawWrapper>>, mainDrawWrapper: DrawWrapper, depthDefines: string, token: string }>; // key is (subMesh + shadowGenerator)\r\n private _meshes: Map<AbstractMesh, Nullable<Observer<Node>>>;\r\n\r\n /** Gets the standalone status of the wrapper */\r\n public get standalone(): boolean {\r\n return this._options?.standalone ?? false;\r\n }\r\n\r\n /** Gets the base material the wrapper is built upon */\r\n public get baseMaterial(): Material {\r\n return this._baseMaterial;\r\n }\r\n\r\n /**\r\n * Instantiate a new shadow depth wrapper.\r\n * It works by injecting some specific code in the vertex/fragment shaders of the base material and is used by a shadow generator to\r\n * generate the shadow depth map. For more information, please refer to the documentation:\r\n * https://doc.babylonjs.com/babylon101/shadows\r\n * @param baseMaterial Material to wrap\r\n * @param scene Define the scene the material belongs to\r\n * @param options Options used to create the wrapper\r\n */\r\n constructor(baseMaterial: Material, scene: Scene, options?: IIOptionShadowDepthMaterial) {\r\n this._baseMaterial = baseMaterial;\r\n this._scene = scene ?? Engine.LastCreatedScene;\r\n this._options = options;\r\n\r\n this._subMeshToEffect = new Map();\r\n this._subMeshToDepthWrapper = new MapMap();\r\n this._meshes = new Map();\r\n\r\n // Register for onEffectCreated to store the effect of the base material when it is (re)generated. This effect will be used\r\n // to create the depth effect later on\r\n this._onEffectCreatedObserver = this._baseMaterial.onEffectCreatedObservable.add((params: { effect: Effect, subMesh: Nullable<SubMesh> }) => {\r\n const mesh = params.subMesh?.getMesh();\r\n\r\n if (mesh && !this._meshes.has(mesh)) {\r\n // Register for mesh onDispose to clean up our internal maps when a mesh is disposed\r\n this._meshes.set(mesh,\r\n mesh.onDisposeObservable.add((mesh: Node) => {\r\n const iterator = this._subMeshToEffect.keys();\r\n for (let key = iterator.next(); key.done !== true; key = iterator.next()) {\r\n const subMesh = key.value;\r\n if (subMesh?.getMesh() === mesh as AbstractMesh) {\r\n this._subMeshToEffect.delete(subMesh);\r\n this._subMeshToDepthWrapper.mm.delete(subMesh);\r\n }\r\n }\r\n })\r\n );\r\n }\r\n\r\n this._subMeshToEffect.set(params.subMesh, params.effect);\r\n this._subMeshToDepthWrapper.mm.delete(params.subMesh); // trigger a depth effect recreation\r\n });\r\n }\r\n\r\n /**\r\n * Gets the effect to use to generate the depth map\r\n * @param subMesh subMesh to get the effect for\r\n * @param shadowGenerator shadow generator to get the effect for\r\n * @param passIdForDrawWrapper Id of the pass for which the effect from the draw wrapper must be retrieved from\r\n * @returns the effect to use to generate the depth map for the subMesh + shadow generator specified\r\n */\r\n public getEffect(subMesh: Nullable<SubMesh>, shadowGenerator: ShadowGenerator, passIdForDrawWrapper: number): Nullable<DrawWrapper> {\r\n const entry = this._subMeshToDepthWrapper.mm.get(subMesh)?.get(shadowGenerator);\r\n if (!entry) {\r\n return null;\r\n }\r\n let drawWrapper = entry.drawWrapper[passIdForDrawWrapper];\r\n if (!drawWrapper) {\r\n drawWrapper = entry.drawWrapper[passIdForDrawWrapper] = new DrawWrapper(this._scene.getEngine());\r\n drawWrapper.setEffect(entry.mainDrawWrapper.effect, entry.mainDrawWrapper.defines);\r\n }\r\n\r\n return drawWrapper;\r\n }\r\n\r\n /**\r\n * Specifies that the submesh is ready to be used for depth rendering\r\n * @param subMesh submesh to check\r\n * @param defines the list of defines to take into account when checking the effect\r\n * @param shadowGenerator combined with subMesh, it defines the effect to check\r\n * @param useInstances specifies that instances should be used\r\n * @param passIdForDrawWrapper Id of the pass for which the draw wrapper should be created\r\n * @returns a boolean indicating that the submesh is ready or not\r\n */\r\n public isReadyForSubMesh(subMesh: SubMesh, defines: string[], shadowGenerator: ShadowGenerator, useInstances: boolean, passIdForDrawWrapper: number): boolean {\r\n if (this.standalone) {\r\n // will ensure the effect is (re)created for the base material\r\n if (!this._baseMaterial.isReadyForSubMesh(subMesh.getMesh(), subMesh, useInstances)) {\r\n return false;\r\n }\r\n }\r\n\r\n return this._makeEffect(subMesh, defines, shadowGenerator, passIdForDrawWrapper)?.isReady() ?? false;\r\n }\r\n\r\n /**\r\n * Disposes the resources\r\n */\r\n public dispose(): void {\r\n this._baseMaterial.onEffectCreatedObservable.remove(this._onEffectCreatedObserver);\r\n this._onEffectCreatedObserver = null;\r\n\r\n const iterator = this._meshes.entries();\r\n for (let entry = iterator.next(); entry.done !== true; entry = iterator.next()) {\r\n const [mesh, observer] = entry.value;\r\n\r\n mesh.onDisposeObservable.remove(observer);\r\n }\r\n }\r\n\r\n private _makeEffect(subMesh: SubMesh, defines: string[], shadowGenerator: ShadowGenerator, passIdForDrawWrapper: number): Nullable<Effect> {\r\n const engine = this._scene.getEngine();\r\n const origEffect = this._subMeshToEffect.get(subMesh);\r\n\r\n if (!origEffect) {\r\n return null;\r\n }\r\n\r\n let params = this._subMeshToDepthWrapper.get(subMesh, shadowGenerator);\r\n if (!params) {\r\n const mainDrawWrapper = new DrawWrapper(engine);\r\n const renderPassId = this._scene.activeCameras?.[0]?.renderPassId ?? this._scene.activeCamera?.renderPassId ?? 0;\r\n mainDrawWrapper.defines = subMesh._getDrawWrapper(renderPassId)?.defines ?? null;\r\n\r\n params = {\r\n drawWrapper: [],\r\n mainDrawWrapper,\r\n depthDefines: \"\",\r\n token: RandomGUID()\r\n };\r\n params.drawWrapper[passIdForDrawWrapper] = mainDrawWrapper;\r\n this._subMeshToDepthWrapper.set(subMesh, shadowGenerator, params);\r\n }\r\n\r\n let join = defines.join(\"\\n\");\r\n\r\n if (params.mainDrawWrapper.effect) {\r\n if (join === params.depthDefines) {\r\n // we already created the depth effect and it is still up to date for this submesh + shadow generator\r\n return params.mainDrawWrapper.effect;\r\n }\r\n }\r\n\r\n params.depthDefines = join;\r\n\r\n // the depth effect is either out of date or has not been created yet\r\n let vertexCode = origEffect.rawVertexSourceCode,\r\n fragmentCode = origEffect.rawFragmentSourceCode;\r\n\r\n // vertex code\r\n const vertexNormalBiasCode = this._options && this._options.remappedVariables ? `#include<shadowMapVertexNormalBias>(${this._options.remappedVariables.join(\",\")})` : Effect.IncludesShadersStore[\"shadowMapVertexNormalBias\"],\r\n vertexMetricCode = this._options && this._options.remappedVariables ? `#include<shadowMapVertexMetric>(${this._options.remappedVariables.join(\",\")})` : Effect.IncludesShadersStore[\"shadowMapVertexMetric\"],\r\n fragmentSoftTransparentShadow = this._options && this._options.remappedVariables ? `#include<shadowMapFragmentSoftTransparentShadow>(${this._options.remappedVariables.join(\",\")})` : Effect.IncludesShadersStore[\"shadowMapFragmentSoftTransparentShadow\"],\r\n fragmentBlockCode = Effect.IncludesShadersStore[\"shadowMapFragment\"];\r\n\r\n vertexCode = vertexCode.replace(/void\\s+?main/g, Effect.IncludesShadersStore[\"shadowMapVertexExtraDeclaration\"] + \"\\r\\nvoid main\");\r\n vertexCode = vertexCode.replace(/#define SHADOWDEPTH_NORMALBIAS|#define CUSTOM_VERTEX_UPDATE_WORLDPOS/g, vertexNormalBiasCode);\r\n\r\n if (vertexCode.indexOf(\"#define SHADOWDEPTH_METRIC\") !== -1) {\r\n vertexCode = vertexCode.replace(/#define SHADOWDEPTH_METRIC/g, vertexMetricCode);\r\n } else {\r\n vertexCode = vertexCode.replace(/}\\s*$/g, vertexMetricCode + \"\\r\\n}\");\r\n }\r\n vertexCode = vertexCode.replace(/#define SHADER_NAME.*?\\n|out vec4 glFragColor;\\n/g, \"\");\r\n\r\n // fragment code\r\n const hasLocationForSoftTransparentShadow = fragmentCode.indexOf(\"#define SHADOWDEPTH_SOFTTRANSPARENTSHADOW\") >= 0 || fragmentCode.indexOf(\"#define CUSTOM_FRAGMENT_BEFORE_FOG\") >= 0;\r\n const hasLocationForFragment = fragmentCode.indexOf(\"#define SHADOWDEPTH_FRAGMENT\") !== -1;\r\n\r\n let fragmentCodeToInjectAtEnd = \"\";\r\n\r\n if (!hasLocationForSoftTransparentShadow) {\r\n fragmentCodeToInjectAtEnd = fragmentSoftTransparentShadow + \"\\r\\n\";\r\n } else {\r\n fragmentCode = fragmentCode.replace(/#define SHADOWDEPTH_SOFTTRANSPARENTSHADOW|#define CUSTOM_FRAGMENT_BEFORE_FOG/g, fragmentSoftTransparentShadow);\r\n }\r\n\r\n fragmentCode = fragmentCode.replace(/void\\s+?main/g, Effect.IncludesShadersStore[\"shadowMapFragmentExtraDeclaration\"] + \"\\r\\nvoid main\");\r\n\r\n if (hasLocationForFragment) {\r\n fragmentCode = fragmentCode.replace(/#define SHADOWDEPTH_FRAGMENT/g, fragmentBlockCode);\r\n } else {\r\n fragmentCodeToInjectAtEnd += fragmentBlockCode + \"\\r\\n\";\r\n }\r\n if (fragmentCodeToInjectAtEnd) {\r\n fragmentCode = fragmentCode.replace(/}\\s*$/g, fragmentCodeToInjectAtEnd + \"}\");\r\n }\r\n\r\n fragmentCode = fragmentCode.replace(/#define SHADER_NAME.*?\\n|out vec4 glFragColor;\\n/g, \"\");\r\n\r\n const uniforms = origEffect.getUniformNames().slice();\r\n\r\n uniforms.push(\"biasAndScaleSM\", \"depthValuesSM\", \"lightDataSM\", \"softTransparentShadowSM\");\r\n\r\n params.mainDrawWrapper.effect = engine.createEffect({\r\n vertexSource: vertexCode,\r\n fragmentSource: fragmentCode,\r\n vertexToken: params.token,\r\n fragmentToken: params.token,\r\n }, <IEffectCreationOptions>{\r\n attributes: origEffect.getAttributesNames(),\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: origEffect.getUniformBuffersNames(),\r\n samplers: origEffect.getSamplers(),\r\n defines: join + \"\\n\" + origEffect.defines.replace(\"#define SHADOWS\", \"\").replace(/#define SHADOW\\d/g, \"\"),\r\n indexParameters: origEffect.getIndexParameters(),\r\n }, engine);\r\n\r\n for (let id = 0; id < params.drawWrapper.length; ++id) {\r\n if (id !== passIdForDrawWrapper) {\r\n params.drawWrapper[id]?.setEffect(params.mainDrawWrapper.effect, params.mainDrawWrapper.defines);\r\n }\r\n }\r\n return params.mainDrawWrapper.effect;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"shadowDepthWrapper.js","sourceRoot":"","sources":["../../../sourceES6/core/Materials/shadowDepthWrapper.ts"],"names":[],"mappings":"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","sourcesContent":["import { Observer } from \"../Misc/observable\";\r\nimport { Nullable } from \"../types\";\r\nimport { Scene } from \"../scene\";\r\nimport { SubMesh } from \"../Meshes/subMesh\";\r\nimport { Material } from \"./material\";\r\nimport { Effect, IEffectCreationOptions } from './effect';\r\nimport { AbstractMesh } from '../Meshes/abstractMesh';\r\nimport { Node } from '../node';\r\nimport { ShadowGenerator } from '../Lights/Shadows/shadowGenerator';\r\nimport { RandomGUID } from '../Misc/guid';\r\nimport { DrawWrapper } from \"./drawWrapper\";\r\nimport { Engine } from \"../Engines/engine\";\r\n\r\n/**\r\n * Options to be used when creating a shadow depth material\r\n */\r\nexport interface IIOptionShadowDepthMaterial {\r\n /** Variables in the vertex shader code that need to have their names remapped.\r\n * The format is: [\"var_name\", \"var_remapped_name\", \"var_name\", \"var_remapped_name\", ...]\r\n * \"var_name\" should be either: worldPos or vNormalW\r\n * So, if the variable holding the world position in your vertex shader is not named worldPos, you must tell the system\r\n * the name to use instead by using: [\"worldPos\", \"myWorldPosVar\"] assuming the variable is named myWorldPosVar in your code.\r\n * If the normal must also be remapped: [\"worldPos\", \"myWorldPosVar\", \"vNormalW\", \"myWorldNormal\"]\r\n */\r\n remappedVariables?: string[];\r\n\r\n /** Set standalone to true if the base material wrapped by ShadowDepthMaterial is not used for a regular object but for depth shadow generation only */\r\n standalone?: boolean;\r\n}\r\n\r\nclass MapMap<Ka, Kb, V> {\r\n readonly mm = new Map<Ka, Map<Kb, V>>();\r\n\r\n get(a: Ka, b: Kb): V | undefined {\r\n const m = this.mm.get(a);\r\n if (m !== undefined) {\r\n return m.get(b);\r\n }\r\n return undefined;\r\n }\r\n\r\n set(a: Ka, b: Kb, v: V): void {\r\n let m = this.mm.get(a);\r\n if (m === undefined) {\r\n this.mm.set(a, (m = new Map()));\r\n }\r\n m.set(b, v);\r\n }\r\n}\r\n\r\n/**\r\n * Class that can be used to wrap a base material to generate accurate shadows when using custom vertex/fragment code in the base material\r\n */\r\nexport class ShadowDepthWrapper {\r\n\r\n private _scene: Scene;\r\n private _options?: IIOptionShadowDepthMaterial;\r\n private _baseMaterial: Material;\r\n private _onEffectCreatedObserver: Nullable<Observer<{ effect: Effect, subMesh: Nullable<SubMesh> }>>;\r\n private _subMeshToEffect: Map<Nullable<SubMesh>, [Effect, number]>;\r\n private _subMeshToDepthWrapper: MapMap<Nullable<SubMesh>, ShadowGenerator, { drawWrapper: Array<Nullable<DrawWrapper>>, mainDrawWrapper: DrawWrapper, depthDefines: string, token: string }>; // key is (subMesh + shadowGenerator)\r\n private _meshes: Map<AbstractMesh, Nullable<Observer<Node>>>;\r\n\r\n /** Gets the standalone status of the wrapper */\r\n public get standalone(): boolean {\r\n return this._options?.standalone ?? false;\r\n }\r\n\r\n /** Gets the base material the wrapper is built upon */\r\n public get baseMaterial(): Material {\r\n return this._baseMaterial;\r\n }\r\n\r\n /**\r\n * Instantiate a new shadow depth wrapper.\r\n * It works by injecting some specific code in the vertex/fragment shaders of the base material and is used by a shadow generator to\r\n * generate the shadow depth map. For more information, please refer to the documentation:\r\n * https://doc.babylonjs.com/babylon101/shadows\r\n * @param baseMaterial Material to wrap\r\n * @param scene Define the scene the material belongs to\r\n * @param options Options used to create the wrapper\r\n */\r\n constructor(baseMaterial: Material, scene: Scene, options?: IIOptionShadowDepthMaterial) {\r\n this._baseMaterial = baseMaterial;\r\n this._scene = scene ?? Engine.LastCreatedScene;\r\n this._options = options;\r\n\r\n this._subMeshToEffect = new Map();\r\n this._subMeshToDepthWrapper = new MapMap();\r\n this._meshes = new Map();\r\n\r\n // Register for onEffectCreated to store the effect of the base material when it is (re)generated. This effect will be used\r\n // to create the depth effect later on\r\n this._onEffectCreatedObserver = this._baseMaterial.onEffectCreatedObservable.add((params: { effect: Effect, subMesh: Nullable<SubMesh> }) => {\r\n const mesh = params.subMesh?.getMesh();\r\n\r\n if (mesh && !this._meshes.has(mesh)) {\r\n // Register for mesh onDispose to clean up our internal maps when a mesh is disposed\r\n this._meshes.set(mesh,\r\n mesh.onDisposeObservable.add((mesh: Node) => {\r\n const iterator = this._subMeshToEffect.keys();\r\n for (let key = iterator.next(); key.done !== true; key = iterator.next()) {\r\n const subMesh = key.value;\r\n if (subMesh?.getMesh() === mesh as AbstractMesh) {\r\n this._subMeshToEffect.delete(subMesh);\r\n this._subMeshToDepthWrapper.mm.delete(subMesh);\r\n }\r\n }\r\n })\r\n );\r\n }\r\n\r\n this._subMeshToEffect.set(params.subMesh, [params.effect, this._scene.getEngine().currentRenderPassId]);\r\n this._subMeshToDepthWrapper.mm.delete(params.subMesh); // trigger a depth effect recreation\r\n });\r\n }\r\n\r\n /**\r\n * Gets the effect to use to generate the depth map\r\n * @param subMesh subMesh to get the effect for\r\n * @param shadowGenerator shadow generator to get the effect for\r\n * @param passIdForDrawWrapper Id of the pass for which the effect from the draw wrapper must be retrieved from\r\n * @returns the effect to use to generate the depth map for the subMesh + shadow generator specified\r\n */\r\n public getEffect(subMesh: Nullable<SubMesh>, shadowGenerator: ShadowGenerator, passIdForDrawWrapper: number): Nullable<DrawWrapper> {\r\n const entry = this._subMeshToDepthWrapper.mm.get(subMesh)?.get(shadowGenerator);\r\n if (!entry) {\r\n return null;\r\n }\r\n let drawWrapper = entry.drawWrapper[passIdForDrawWrapper];\r\n if (!drawWrapper) {\r\n drawWrapper = entry.drawWrapper[passIdForDrawWrapper] = new DrawWrapper(this._scene.getEngine());\r\n drawWrapper.setEffect(entry.mainDrawWrapper.effect, entry.mainDrawWrapper.defines);\r\n }\r\n\r\n return drawWrapper;\r\n }\r\n\r\n /**\r\n * Specifies that the submesh is ready to be used for depth rendering\r\n * @param subMesh submesh to check\r\n * @param defines the list of defines to take into account when checking the effect\r\n * @param shadowGenerator combined with subMesh, it defines the effect to check\r\n * @param useInstances specifies that instances should be used\r\n * @param passIdForDrawWrapper Id of the pass for which the draw wrapper should be created\r\n * @returns a boolean indicating that the submesh is ready or not\r\n */\r\n public isReadyForSubMesh(subMesh: SubMesh, defines: string[], shadowGenerator: ShadowGenerator, useInstances: boolean, passIdForDrawWrapper: number): boolean {\r\n if (this.standalone) {\r\n // will ensure the effect is (re)created for the base material\r\n if (!this._baseMaterial.isReadyForSubMesh(subMesh.getMesh(), subMesh, useInstances)) {\r\n return false;\r\n }\r\n }\r\n\r\n return this._makeEffect(subMesh, defines, shadowGenerator, passIdForDrawWrapper)?.isReady() ?? false;\r\n }\r\n\r\n /**\r\n * Disposes the resources\r\n */\r\n public dispose(): void {\r\n this._baseMaterial.onEffectCreatedObservable.remove(this._onEffectCreatedObserver);\r\n this._onEffectCreatedObserver = null;\r\n\r\n const iterator = this._meshes.entries();\r\n for (let entry = iterator.next(); entry.done !== true; entry = iterator.next()) {\r\n const [mesh, observer] = entry.value;\r\n\r\n mesh.onDisposeObservable.remove(observer);\r\n }\r\n }\r\n\r\n private _makeEffect(subMesh: SubMesh, defines: string[], shadowGenerator: ShadowGenerator, passIdForDrawWrapper: number): Nullable<Effect> {\r\n const engine = this._scene.getEngine();\r\n const origEffectAndRenderPassId = this._subMeshToEffect.get(subMesh);\r\n\r\n if (!origEffectAndRenderPassId) {\r\n return null;\r\n }\r\n\r\n const [origEffect, origRenderPassId] = origEffectAndRenderPassId;\r\n\r\n let params = this._subMeshToDepthWrapper.get(subMesh, shadowGenerator);\r\n if (!params) {\r\n const mainDrawWrapper = new DrawWrapper(engine);\r\n mainDrawWrapper.defines = subMesh._getDrawWrapper(origRenderPassId)?.defines ?? null;\r\n\r\n params = {\r\n drawWrapper: [],\r\n mainDrawWrapper,\r\n depthDefines: \"\",\r\n token: RandomGUID()\r\n };\r\n params.drawWrapper[passIdForDrawWrapper] = mainDrawWrapper;\r\n this._subMeshToDepthWrapper.set(subMesh, shadowGenerator, params);\r\n }\r\n\r\n let join = defines.join(\"\\n\");\r\n\r\n if (params.mainDrawWrapper.effect) {\r\n if (join === params.depthDefines) {\r\n // we already created the depth effect and it is still up to date for this submesh + shadow generator\r\n return params.mainDrawWrapper.effect;\r\n }\r\n }\r\n\r\n params.depthDefines = join;\r\n\r\n // the depth effect is either out of date or has not been created yet\r\n let vertexCode = origEffect.rawVertexSourceCode,\r\n fragmentCode = origEffect.rawFragmentSourceCode;\r\n\r\n // vertex code\r\n const vertexNormalBiasCode = this._options && this._options.remappedVariables ? `#include<shadowMapVertexNormalBias>(${this._options.remappedVariables.join(\",\")})` : Effect.IncludesShadersStore[\"shadowMapVertexNormalBias\"],\r\n vertexMetricCode = this._options && this._options.remappedVariables ? `#include<shadowMapVertexMetric>(${this._options.remappedVariables.join(\",\")})` : Effect.IncludesShadersStore[\"shadowMapVertexMetric\"],\r\n fragmentSoftTransparentShadow = this._options && this._options.remappedVariables ? `#include<shadowMapFragmentSoftTransparentShadow>(${this._options.remappedVariables.join(\",\")})` : Effect.IncludesShadersStore[\"shadowMapFragmentSoftTransparentShadow\"],\r\n fragmentBlockCode = Effect.IncludesShadersStore[\"shadowMapFragment\"];\r\n\r\n vertexCode = vertexCode.replace(/void\\s+?main/g, Effect.IncludesShadersStore[\"shadowMapVertexExtraDeclaration\"] + \"\\r\\nvoid main\");\r\n vertexCode = vertexCode.replace(/#define SHADOWDEPTH_NORMALBIAS|#define CUSTOM_VERTEX_UPDATE_WORLDPOS/g, vertexNormalBiasCode);\r\n\r\n if (vertexCode.indexOf(\"#define SHADOWDEPTH_METRIC\") !== -1) {\r\n vertexCode = vertexCode.replace(/#define SHADOWDEPTH_METRIC/g, vertexMetricCode);\r\n } else {\r\n vertexCode = vertexCode.replace(/}\\s*$/g, vertexMetricCode + \"\\r\\n}\");\r\n }\r\n vertexCode = vertexCode.replace(/#define SHADER_NAME.*?\\n|out vec4 glFragColor;\\n/g, \"\");\r\n\r\n // fragment code\r\n const hasLocationForSoftTransparentShadow = fragmentCode.indexOf(\"#define SHADOWDEPTH_SOFTTRANSPARENTSHADOW\") >= 0 || fragmentCode.indexOf(\"#define CUSTOM_FRAGMENT_BEFORE_FOG\") >= 0;\r\n const hasLocationForFragment = fragmentCode.indexOf(\"#define SHADOWDEPTH_FRAGMENT\") !== -1;\r\n\r\n let fragmentCodeToInjectAtEnd = \"\";\r\n\r\n if (!hasLocationForSoftTransparentShadow) {\r\n fragmentCodeToInjectAtEnd = fragmentSoftTransparentShadow + \"\\r\\n\";\r\n } else {\r\n fragmentCode = fragmentCode.replace(/#define SHADOWDEPTH_SOFTTRANSPARENTSHADOW|#define CUSTOM_FRAGMENT_BEFORE_FOG/g, fragmentSoftTransparentShadow);\r\n }\r\n\r\n fragmentCode = fragmentCode.replace(/void\\s+?main/g, Effect.IncludesShadersStore[\"shadowMapFragmentExtraDeclaration\"] + \"\\r\\nvoid main\");\r\n\r\n if (hasLocationForFragment) {\r\n fragmentCode = fragmentCode.replace(/#define SHADOWDEPTH_FRAGMENT/g, fragmentBlockCode);\r\n } else {\r\n fragmentCodeToInjectAtEnd += fragmentBlockCode + \"\\r\\n\";\r\n }\r\n if (fragmentCodeToInjectAtEnd) {\r\n fragmentCode = fragmentCode.replace(/}\\s*$/g, fragmentCodeToInjectAtEnd + \"}\");\r\n }\r\n\r\n fragmentCode = fragmentCode.replace(/#define SHADER_NAME.*?\\n|out vec4 glFragColor;\\n/g, \"\");\r\n\r\n const uniforms = origEffect.getUniformNames().slice();\r\n\r\n uniforms.push(\"biasAndScaleSM\", \"depthValuesSM\", \"lightDataSM\", \"softTransparentShadowSM\");\r\n\r\n params.mainDrawWrapper.effect = engine.createEffect({\r\n vertexSource: vertexCode,\r\n fragmentSource: fragmentCode,\r\n vertexToken: params.token,\r\n fragmentToken: params.token,\r\n }, <IEffectCreationOptions>{\r\n attributes: origEffect.getAttributesNames(),\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: origEffect.getUniformBuffersNames(),\r\n samplers: origEffect.getSamplers(),\r\n defines: join + \"\\n\" + origEffect.defines.replace(\"#define SHADOWS\", \"\").replace(/#define SHADOW\\d/g, \"\"),\r\n indexParameters: origEffect.getIndexParameters(),\r\n }, engine);\r\n\r\n for (let id = 0; id < params.drawWrapper.length; ++id) {\r\n if (id !== passIdForDrawWrapper) {\r\n params.drawWrapper[id]?.setEffect(params.mainDrawWrapper.effect, params.mainDrawWrapper.defines);\r\n }\r\n }\r\n return params.mainDrawWrapper.effect;\r\n }\r\n}\r\n"]}
@@ -31,6 +31,7 @@ export declare class StandardMaterialDefines extends MaterialDefines implements
31
31
  DETAIL: boolean;
32
32
  DETAILDIRECTUV: number;
33
33
  DETAIL_NORMALBLENDMETHOD: number;
34
+ BAKED_VERTEX_ANIMATION_TEXTURE: boolean;
34
35
  AMBIENT: boolean;
35
36
  AMBIENTDIRECTUV: number;
36
37
  OPACITY: boolean;
@@ -151,6 +152,7 @@ export declare class StandardMaterialDefines extends MaterialDefines implements
151
152
  SAMPLER3DGREENDEPTH: boolean;
152
153
  SAMPLER3DBGRMAP: boolean;
153
154
  IMAGEPROCESSINGPOSTPROCESS: boolean;
155
+ SKIPFINALCOLORCLAMP: boolean;
154
156
  MULTIVIEW: boolean;
155
157
  ORDER_INDEPENDENT_TRANSPARENCY: boolean;
156
158
  ORDER_INDEPENDENT_TRANSPARENCY_16BITS: boolean;
@@ -35,6 +35,7 @@ var StandardMaterialDefines = /** @class */ (function (_super) {
35
35
  _this.DETAIL = false;
36
36
  _this.DETAILDIRECTUV = 0;
37
37
  _this.DETAIL_NORMALBLENDMETHOD = 0;
38
+ _this.BAKED_VERTEX_ANIMATION_TEXTURE = false;
38
39
  _this.AMBIENT = false;
39
40
  _this.AMBIENTDIRECTUV = 0;
40
41
  _this.OPACITY = false;
@@ -155,6 +156,7 @@ var StandardMaterialDefines = /** @class */ (function (_super) {
155
156
  _this.SAMPLER3DGREENDEPTH = false;
156
157
  _this.SAMPLER3DBGRMAP = false;
157
158
  _this.IMAGEPROCESSINGPOSTPROCESS = false;
159
+ _this.SKIPFINALCOLORCLAMP = false;
158
160
  _this.MULTIVIEW = false;
159
161
  _this.ORDER_INDEPENDENT_TRANSPARENCY = false;
160
162
  _this.ORDER_INDEPENDENT_TRANSPARENCY_16BITS = false;
@@ -888,6 +890,7 @@ var StandardMaterial = /** @class */ (function (_super) {
888
890
  MaterialHelper.PrepareAttributesForBones(attribs, mesh, defines, fallbacks);
889
891
  MaterialHelper.PrepareAttributesForInstances(attribs, defines);
890
892
  MaterialHelper.PrepareAttributesForMorphTargets(attribs, mesh, defines);
893
+ MaterialHelper.PrepareAttributesForBakedVertexAnimation(attribs, mesh, defines);
891
894
  var shaderName = "default";
892
895
  var uniforms = ["world", "view", "viewProjection", "vEyePosition", "vLightsType", "vAmbientColor", "vDiffuseColor", "vSpecularColor", "vEmissiveColor", "visibility",
893
896
  "vFogInfos", "vFogColor", "pointSize",
@@ -1042,6 +1045,7 @@ var StandardMaterial = /** @class */ (function (_super) {
1042
1045
  * @param subMesh defines the submesh to bind the material to
1043
1046
  */
1044
1047
  StandardMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {
1048
+ var _a;
1045
1049
  var scene = this.getScene();
1046
1050
  var defines = subMesh.materialDefines;
1047
1051
  if (!defines) {
@@ -1238,6 +1242,9 @@ var StandardMaterial = /** @class */ (function (_super) {
1238
1242
  if (defines.NUM_MORPH_INFLUENCERS) {
1239
1243
  MaterialHelper.BindMorphTargetParameters(mesh, effect);
1240
1244
  }
1245
+ if (defines.BAKED_VERTEX_ANIMATION_TEXTURE) {
1246
+ (_a = mesh.bakedVertexAnimationManager) === null || _a === void 0 ? void 0 : _a.bind(effect, defines.INSTANCES);
1247
+ }
1241
1248
  // Log. depth
1242
1249
  if (this.useLogarithmicDepth) {
1243
1250
  MaterialHelper.BindLogDepth(defines, effect, scene);
@@ -1358,7 +1365,10 @@ var StandardMaterial = /** @class */ (function (_super) {
1358
1365
  if (this._refractionTexture === texture) {
1359
1366
  return true;
1360
1367
  }
1361
- return this.detailMap.hasTexture(texture);
1368
+ if (this.detailMap.hasTexture(texture)) {
1369
+ return true;
1370
+ }
1371
+ return false;
1362
1372
  };
1363
1373
  /**
1364
1374
  * Disposes the material