@babylonjs/core 5.0.0-beta.1 → 5.0.0-beta.5

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 (513) hide show
  1. package/Audio/sound.js +3 -1
  2. package/Audio/sound.js.map +1 -1
  3. package/Behaviors/Meshes/baseSixDofDragBehavior.js +29 -26
  4. package/Behaviors/Meshes/baseSixDofDragBehavior.js.map +1 -1
  5. package/Behaviors/Meshes/pointerDragBehavior.js +2 -0
  6. package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
  7. package/Bones/bone.d.ts +2 -1
  8. package/Bones/bone.js +28 -18
  9. package/Bones/bone.js.map +1 -1
  10. package/Bones/skeleton.js +3 -3
  11. package/Bones/skeleton.js.map +1 -1
  12. package/Buffers/buffer.js +2 -2
  13. package/Buffers/buffer.js.map +1 -1
  14. package/Cameras/Inputs/freeCameraTouchInput.js +2 -4
  15. package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
  16. package/Cameras/camera.js +1 -1
  17. package/Cameras/camera.js.map +1 -1
  18. package/Compute/computeEffect.js +2 -2
  19. package/Compute/computeEffect.js.map +1 -1
  20. package/Culling/ray.d.ts +6 -4
  21. package/Culling/ray.js +33 -11
  22. package/Culling/ray.js.map +1 -1
  23. package/Debug/axesViewer.d.ts +1 -0
  24. package/Debug/axesViewer.js +1 -0
  25. package/Debug/axesViewer.js.map +1 -1
  26. package/Debug/debugLayer.js +1 -1
  27. package/Debug/debugLayer.js.map +1 -1
  28. package/DeviceInput/Helpers/eventFactory.d.ts +1 -1
  29. package/DeviceInput/Helpers/eventFactory.js +1 -1
  30. package/DeviceInput/Helpers/eventFactory.js.map +1 -1
  31. package/DeviceInput/InputDevices/deviceEnums.d.ts +52 -1
  32. package/DeviceInput/InputDevices/deviceEnums.js +52 -0
  33. package/DeviceInput/InputDevices/deviceEnums.js.map +1 -1
  34. package/DeviceInput/InputDevices/deviceSource.d.ts +35 -0
  35. package/DeviceInput/InputDevices/deviceSource.js +38 -0
  36. package/DeviceInput/InputDevices/deviceSource.js.map +1 -0
  37. package/DeviceInput/InputDevices/deviceSourceManager.d.ts +14 -72
  38. package/DeviceInput/InputDevices/deviceSourceManager.js +10 -180
  39. package/DeviceInput/InputDevices/deviceSourceManager.js.map +1 -1
  40. package/DeviceInput/InputDevices/deviceTypes.d.ts +2 -2
  41. package/DeviceInput/InputDevices/deviceTypes.js.map +1 -1
  42. package/DeviceInput/{Interfaces → InputDevices}/inputInterfaces.d.ts +1 -5
  43. package/DeviceInput/{Interfaces → InputDevices}/inputInterfaces.js +0 -0
  44. package/DeviceInput/InputDevices/inputInterfaces.js.map +1 -0
  45. package/DeviceInput/InputDevices/internalDeviceSourceManager.d.ts +46 -0
  46. package/DeviceInput/InputDevices/internalDeviceSourceManager.js +144 -0
  47. package/DeviceInput/InputDevices/internalDeviceSourceManager.js.map +1 -0
  48. package/DeviceInput/{Implementations → InputDevices}/nativeDeviceInputSystem.d.ts +3 -7
  49. package/DeviceInput/{Implementations → InputDevices}/nativeDeviceInputSystem.js +9 -15
  50. package/DeviceInput/InputDevices/nativeDeviceInputSystem.js.map +1 -0
  51. package/DeviceInput/{Implementations → InputDevices}/webDeviceInputSystem.d.ts +11 -15
  52. package/DeviceInput/{Implementations → InputDevices}/webDeviceInputSystem.js +105 -82
  53. package/DeviceInput/InputDevices/webDeviceInputSystem.js.map +1 -0
  54. package/DeviceInput/index.d.ts +1 -5
  55. package/DeviceInput/index.js +1 -5
  56. package/DeviceInput/index.js.map +1 -1
  57. package/Engines/Extensions/engine.cubeTexture.js +1 -1
  58. package/Engines/Extensions/engine.cubeTexture.js.map +1 -1
  59. package/Engines/Extensions/engine.multiview.d.ts +5 -0
  60. package/Engines/Extensions/engine.multiview.js +4 -1
  61. package/Engines/Extensions/engine.multiview.js.map +1 -1
  62. package/Engines/Native/nativeInterfaces.d.ts +2 -1
  63. package/Engines/Native/nativeInterfaces.js.map +1 -1
  64. package/Engines/Processors/Expressions/shaderDefineExpression.js +1 -1
  65. package/Engines/Processors/Expressions/shaderDefineExpression.js.map +1 -1
  66. package/Engines/Processors/shaderCodeInliner.js +13 -13
  67. package/Engines/Processors/shaderCodeInliner.js.map +1 -1
  68. package/Engines/WebGPU/webgpuCacheBindGroups.js +9 -9
  69. package/Engines/WebGPU/webgpuCacheBindGroups.js.map +1 -1
  70. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +5 -7
  71. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  72. package/Engines/WebGPU/webgpuCacheRenderPipelineTree.d.ts +1 -1
  73. package/Engines/WebGPU/webgpuCacheRenderPipelineTree.js.map +1 -1
  74. package/Engines/WebGPU/webgpuCacheSampler.d.ts +2 -0
  75. package/Engines/WebGPU/webgpuCacheSampler.js +23 -2
  76. package/Engines/WebGPU/webgpuCacheSampler.js.map +1 -1
  77. package/Engines/WebGPU/webgpuComputeContext.js +1 -1
  78. package/Engines/WebGPU/webgpuComputeContext.js.map +1 -1
  79. package/Engines/WebGPU/webgpuDrawContext.d.ts +1 -1
  80. package/Engines/WebGPU/webgpuDrawContext.js +3 -3
  81. package/Engines/WebGPU/webgpuDrawContext.js.map +1 -1
  82. package/Engines/WebGPU/webgpuHardwareTexture.d.ts +0 -1
  83. package/Engines/WebGPU/webgpuHardwareTexture.js +0 -3
  84. package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
  85. package/Engines/WebGPU/webgpuPipelineContext.d.ts +0 -8
  86. package/Engines/WebGPU/webgpuPipelineContext.js.map +1 -1
  87. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js +13 -13
  88. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js.map +1 -1
  89. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +30 -30
  90. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
  91. package/Engines/WebGPU/webgpuTextureHelper.d.ts +0 -1
  92. package/Engines/WebGPU/webgpuTextureHelper.js +8 -30
  93. package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
  94. package/Engines/engine.d.ts +2 -7
  95. package/Engines/engine.js +2 -6
  96. package/Engines/engine.js.map +1 -1
  97. package/Engines/engineCapabilities.d.ts +2 -0
  98. package/Engines/engineCapabilities.js.map +1 -1
  99. package/Engines/nativeEngine.d.ts +1 -0
  100. package/Engines/nativeEngine.js +37 -11
  101. package/Engines/nativeEngine.js.map +1 -1
  102. package/Engines/nullEngine.js +2 -1
  103. package/Engines/nullEngine.js.map +1 -1
  104. package/Engines/thinEngine.d.ts +11 -2
  105. package/Engines/thinEngine.js +33 -21
  106. package/Engines/thinEngine.js.map +1 -1
  107. package/Engines/webgpuEngine.d.ts +3 -7
  108. package/Engines/webgpuEngine.js +11 -22
  109. package/Engines/webgpuEngine.js.map +1 -1
  110. package/Gamepads/Controllers/daydreamController.js +1 -1
  111. package/Gamepads/Controllers/daydreamController.js.map +1 -1
  112. package/Gamepads/gamepadManager.js +1 -1
  113. package/Gamepads/gamepadManager.js.map +1 -1
  114. package/Gizmos/gizmoManager.d.ts +2 -0
  115. package/Gizmos/gizmoManager.js +28 -24
  116. package/Gizmos/gizmoManager.js.map +1 -1
  117. package/Inputs/scene.inputManager.d.ts +1 -1
  118. package/Inputs/scene.inputManager.js +5 -8
  119. package/Inputs/scene.inputManager.js.map +1 -1
  120. package/Instrumentation/sceneInstrumentation.js +2 -2
  121. package/Instrumentation/sceneInstrumentation.js.map +1 -1
  122. package/Layers/layer.d.ts +2 -2
  123. package/Layers/layer.js.map +1 -1
  124. package/Lights/Shadows/cascadedShadowGenerator.js +2 -2
  125. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  126. package/Lights/Shadows/shadowGenerator.js +2 -2
  127. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  128. package/Loading/Plugins/babylonFileLoader.js +114 -28
  129. package/Loading/Plugins/babylonFileLoader.js.map +1 -1
  130. package/Loading/loadingScreen.js +8 -8
  131. package/Loading/loadingScreen.js.map +1 -1
  132. package/Loading/sceneLoader.js +3 -3
  133. package/Loading/sceneLoader.js.map +1 -1
  134. package/Materials/Node/Blocks/Dual/clipPlanesBlock.d.ts +37 -0
  135. package/Materials/Node/Blocks/Dual/clipPlanesBlock.js +117 -0
  136. package/Materials/Node/Blocks/Dual/clipPlanesBlock.js.map +1 -0
  137. package/Materials/Node/Blocks/Dual/currentScreenBlock.js +12 -12
  138. package/Materials/Node/Blocks/Dual/currentScreenBlock.js.map +1 -1
  139. package/Materials/Node/Blocks/Dual/fogBlock.js +5 -5
  140. package/Materials/Node/Blocks/Dual/fogBlock.js.map +1 -1
  141. package/Materials/Node/Blocks/Dual/imageSourceBlock.js +11 -11
  142. package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
  143. package/Materials/Node/Blocks/Dual/index.d.ts +1 -0
  144. package/Materials/Node/Blocks/Dual/index.js +1 -0
  145. package/Materials/Node/Blocks/Dual/index.js.map +1 -1
  146. package/Materials/Node/Blocks/Dual/lightBlock.js +10 -10
  147. package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
  148. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +26 -26
  149. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
  150. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js +1 -1
  151. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js.map +1 -1
  152. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js +7 -7
  153. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js.map +1 -1
  154. package/Materials/Node/Blocks/Dual/textureBlock.js +30 -30
  155. package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
  156. package/Materials/Node/Blocks/Fragment/derivativeBlock.js +2 -2
  157. package/Materials/Node/Blocks/Fragment/derivativeBlock.js.map +1 -1
  158. package/Materials/Node/Blocks/Fragment/discardBlock.js +1 -1
  159. package/Materials/Node/Blocks/Fragment/discardBlock.js.map +1 -1
  160. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js +1 -1
  161. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js.map +1 -1
  162. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +10 -10
  163. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
  164. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js +7 -7
  165. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js.map +1 -1
  166. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js +12 -12
  167. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
  168. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js +1 -1
  169. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js.map +1 -1
  170. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js +7 -7
  171. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js.map +1 -1
  172. package/Materials/Node/Blocks/Fragment/twirlBlock.js +4 -4
  173. package/Materials/Node/Blocks/Fragment/twirlBlock.js.map +1 -1
  174. package/Materials/Node/Blocks/Input/inputBlock.d.ts +2 -1
  175. package/Materials/Node/Blocks/Input/inputBlock.js +29 -24
  176. package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
  177. package/Materials/Node/Blocks/PBR/anisotropyBlock.js +5 -5
  178. package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
  179. package/Materials/Node/Blocks/PBR/clearCoatBlock.js +5 -5
  180. package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
  181. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +33 -33
  182. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  183. package/Materials/Node/Blocks/PBR/reflectionBlock.js +11 -11
  184. package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
  185. package/Materials/Node/Blocks/PBR/refractionBlock.js +11 -11
  186. package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
  187. package/Materials/Node/Blocks/PBR/sheenBlock.js +3 -3
  188. package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
  189. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js +1 -1
  190. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js.map +1 -1
  191. package/Materials/Node/Blocks/Particle/particleBlendMultiplyBlock.js +1 -1
  192. package/Materials/Node/Blocks/Particle/particleBlendMultiplyBlock.js.map +1 -1
  193. package/Materials/Node/Blocks/Particle/particleRampGradientBlock.js +1 -1
  194. package/Materials/Node/Blocks/Particle/particleRampGradientBlock.js.map +1 -1
  195. package/Materials/Node/Blocks/Particle/particleTextureBlock.js +7 -7
  196. package/Materials/Node/Blocks/Particle/particleTextureBlock.js.map +1 -1
  197. package/Materials/Node/Blocks/Vertex/bonesBlock.js +3 -3
  198. package/Materials/Node/Blocks/Vertex/bonesBlock.js.map +1 -1
  199. package/Materials/Node/Blocks/Vertex/instancesBlock.js +3 -3
  200. package/Materials/Node/Blocks/Vertex/instancesBlock.js.map +1 -1
  201. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js +5 -5
  202. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js.map +1 -1
  203. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js +16 -16
  204. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
  205. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js +1 -1
  206. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js.map +1 -1
  207. package/Materials/Node/Blocks/addBlock.js +1 -1
  208. package/Materials/Node/Blocks/addBlock.js.map +1 -1
  209. package/Materials/Node/Blocks/arcTan2Block.js +1 -1
  210. package/Materials/Node/Blocks/arcTan2Block.js.map +1 -1
  211. package/Materials/Node/Blocks/clampBlock.js +3 -3
  212. package/Materials/Node/Blocks/clampBlock.js.map +1 -1
  213. package/Materials/Node/Blocks/cloudBlock.js +7 -7
  214. package/Materials/Node/Blocks/cloudBlock.js.map +1 -1
  215. package/Materials/Node/Blocks/colorMergerBlock.js +8 -8
  216. package/Materials/Node/Blocks/colorMergerBlock.js.map +1 -1
  217. package/Materials/Node/Blocks/colorSplitterBlock.js +5 -5
  218. package/Materials/Node/Blocks/colorSplitterBlock.js.map +1 -1
  219. package/Materials/Node/Blocks/conditionalBlock.js +10 -10
  220. package/Materials/Node/Blocks/conditionalBlock.js.map +1 -1
  221. package/Materials/Node/Blocks/crossBlock.js +1 -1
  222. package/Materials/Node/Blocks/crossBlock.js.map +1 -1
  223. package/Materials/Node/Blocks/customBlock.js +1 -1
  224. package/Materials/Node/Blocks/customBlock.js.map +1 -1
  225. package/Materials/Node/Blocks/desaturateBlock.js +4 -4
  226. package/Materials/Node/Blocks/desaturateBlock.js.map +1 -1
  227. package/Materials/Node/Blocks/distanceBlock.js +1 -1
  228. package/Materials/Node/Blocks/distanceBlock.js.map +1 -1
  229. package/Materials/Node/Blocks/divideBlock.js +1 -1
  230. package/Materials/Node/Blocks/divideBlock.js.map +1 -1
  231. package/Materials/Node/Blocks/dotBlock.js +1 -1
  232. package/Materials/Node/Blocks/dotBlock.js.map +1 -1
  233. package/Materials/Node/Blocks/elbowBlock.d.ts +27 -0
  234. package/Materials/Node/Blocks/elbowBlock.js +60 -0
  235. package/Materials/Node/Blocks/elbowBlock.js.map +1 -0
  236. package/Materials/Node/Blocks/fresnelBlock.js +2 -2
  237. package/Materials/Node/Blocks/fresnelBlock.js.map +1 -1
  238. package/Materials/Node/Blocks/gradientBlock.js +8 -8
  239. package/Materials/Node/Blocks/gradientBlock.js.map +1 -1
  240. package/Materials/Node/Blocks/index.d.ts +1 -0
  241. package/Materials/Node/Blocks/index.js +1 -0
  242. package/Materials/Node/Blocks/index.js.map +1 -1
  243. package/Materials/Node/Blocks/lengthBlock.js +1 -1
  244. package/Materials/Node/Blocks/lengthBlock.js.map +1 -1
  245. package/Materials/Node/Blocks/lerpBlock.js +1 -1
  246. package/Materials/Node/Blocks/lerpBlock.js.map +1 -1
  247. package/Materials/Node/Blocks/matrixBuilderBlock.js +1 -1
  248. package/Materials/Node/Blocks/matrixBuilderBlock.js.map +1 -1
  249. package/Materials/Node/Blocks/maxBlock.js +1 -1
  250. package/Materials/Node/Blocks/maxBlock.js.map +1 -1
  251. package/Materials/Node/Blocks/minBlock.js +1 -1
  252. package/Materials/Node/Blocks/minBlock.js.map +1 -1
  253. package/Materials/Node/Blocks/modBlock.js +1 -1
  254. package/Materials/Node/Blocks/modBlock.js.map +1 -1
  255. package/Materials/Node/Blocks/multiplyBlock.js +1 -1
  256. package/Materials/Node/Blocks/multiplyBlock.js.map +1 -1
  257. package/Materials/Node/Blocks/nLerpBlock.js +1 -1
  258. package/Materials/Node/Blocks/nLerpBlock.js.map +1 -1
  259. package/Materials/Node/Blocks/negateBlock.js +1 -1
  260. package/Materials/Node/Blocks/negateBlock.js.map +1 -1
  261. package/Materials/Node/Blocks/normalBlendBlock.js +5 -5
  262. package/Materials/Node/Blocks/normalBlendBlock.js.map +1 -1
  263. package/Materials/Node/Blocks/normalizeBlock.js +1 -1
  264. package/Materials/Node/Blocks/normalizeBlock.js.map +1 -1
  265. package/Materials/Node/Blocks/oneMinusBlock.js +1 -1
  266. package/Materials/Node/Blocks/oneMinusBlock.js.map +1 -1
  267. package/Materials/Node/Blocks/posterizeBlock.js +1 -1
  268. package/Materials/Node/Blocks/posterizeBlock.js.map +1 -1
  269. package/Materials/Node/Blocks/powBlock.js +1 -1
  270. package/Materials/Node/Blocks/powBlock.js.map +1 -1
  271. package/Materials/Node/Blocks/randomNumberBlock.js +2 -2
  272. package/Materials/Node/Blocks/randomNumberBlock.js.map +1 -1
  273. package/Materials/Node/Blocks/reciprocalBlock.js +1 -1
  274. package/Materials/Node/Blocks/reciprocalBlock.js.map +1 -1
  275. package/Materials/Node/Blocks/reflectBlock.js +1 -1
  276. package/Materials/Node/Blocks/reflectBlock.js.map +1 -1
  277. package/Materials/Node/Blocks/refractBlock.js +1 -1
  278. package/Materials/Node/Blocks/refractBlock.js.map +1 -1
  279. package/Materials/Node/Blocks/remapBlock.js +3 -3
  280. package/Materials/Node/Blocks/remapBlock.js.map +1 -1
  281. package/Materials/Node/Blocks/replaceColorBlock.js +3 -3
  282. package/Materials/Node/Blocks/replaceColorBlock.js.map +1 -1
  283. package/Materials/Node/Blocks/rotate2dBlock.js +1 -1
  284. package/Materials/Node/Blocks/rotate2dBlock.js.map +1 -1
  285. package/Materials/Node/Blocks/scaleBlock.js +1 -1
  286. package/Materials/Node/Blocks/scaleBlock.js.map +1 -1
  287. package/Materials/Node/Blocks/simplexPerlin3DBlock.js +1 -1
  288. package/Materials/Node/Blocks/simplexPerlin3DBlock.js.map +1 -1
  289. package/Materials/Node/Blocks/smoothStepBlock.js +1 -1
  290. package/Materials/Node/Blocks/smoothStepBlock.js.map +1 -1
  291. package/Materials/Node/Blocks/stepBlock.js +1 -1
  292. package/Materials/Node/Blocks/stepBlock.js.map +1 -1
  293. package/Materials/Node/Blocks/subtractBlock.js +1 -1
  294. package/Materials/Node/Blocks/subtractBlock.js.map +1 -1
  295. package/Materials/Node/Blocks/transformBlock.js +13 -13
  296. package/Materials/Node/Blocks/transformBlock.js.map +1 -1
  297. package/Materials/Node/Blocks/trigonometryBlock.js +2 -2
  298. package/Materials/Node/Blocks/trigonometryBlock.js.map +1 -1
  299. package/Materials/Node/Blocks/vectorMergerBlock.js +22 -22
  300. package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
  301. package/Materials/Node/Blocks/vectorSplitterBlock.js +8 -8
  302. package/Materials/Node/Blocks/vectorSplitterBlock.js.map +1 -1
  303. package/Materials/Node/Blocks/viewDirectionBlock.js +1 -1
  304. package/Materials/Node/Blocks/viewDirectionBlock.js.map +1 -1
  305. package/Materials/Node/Blocks/voronoiNoiseBlock.js +5 -5
  306. package/Materials/Node/Blocks/voronoiNoiseBlock.js.map +1 -1
  307. package/Materials/Node/Blocks/waveBlock.js +3 -3
  308. package/Materials/Node/Blocks/waveBlock.js.map +1 -1
  309. package/Materials/Node/Blocks/worleyNoise3DBlock.js +5 -5
  310. package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
  311. package/Materials/Node/Enums/nodeMaterialSystemValues.d.ts +3 -1
  312. package/Materials/Node/Enums/nodeMaterialSystemValues.js +2 -0
  313. package/Materials/Node/Enums/nodeMaterialSystemValues.js.map +1 -1
  314. package/Materials/Node/nodeMaterial.d.ts +4 -0
  315. package/Materials/Node/nodeMaterial.js +20 -10
  316. package/Materials/Node/nodeMaterial.js.map +1 -1
  317. package/Materials/Node/nodeMaterialBlock.js +12 -12
  318. package/Materials/Node/nodeMaterialBlock.js.map +1 -1
  319. package/Materials/Node/nodeMaterialBuildState.js +24 -24
  320. package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
  321. package/Materials/Node/nodeMaterialBuildStateSharedData.js +1 -1
  322. package/Materials/Node/nodeMaterialBuildStateSharedData.js.map +1 -1
  323. package/Materials/PBR/pbrBaseMaterial.js +2 -2
  324. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  325. package/Materials/PBR/pbrMaterial.js +1 -2
  326. package/Materials/PBR/pbrMaterial.js.map +1 -1
  327. package/Materials/Textures/Loaders/ktxTextureLoader.js +1 -1
  328. package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
  329. package/Materials/Textures/MultiviewRenderTarget.d.ts +1 -0
  330. package/Materials/Textures/MultiviewRenderTarget.js +10 -2
  331. package/Materials/Textures/MultiviewRenderTarget.js.map +1 -1
  332. package/Materials/Textures/Procedurals/proceduralTexture.js +1 -1
  333. package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
  334. package/Materials/Textures/equiRectangularCubeTexture.js +1 -1
  335. package/Materials/Textures/equiRectangularCubeTexture.js.map +1 -1
  336. package/Materials/Textures/mirrorTexture.js +2 -2
  337. package/Materials/Textures/mirrorTexture.js.map +1 -1
  338. package/Materials/Textures/renderTargetTexture.js +2 -2
  339. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  340. package/Materials/Textures/videoTexture.js +1 -0
  341. package/Materials/Textures/videoTexture.js.map +1 -1
  342. package/Materials/effect.js +3 -3
  343. package/Materials/effect.js.map +1 -1
  344. package/Materials/material.d.ts +2 -0
  345. package/Materials/material.js +4 -1
  346. package/Materials/material.js.map +1 -1
  347. package/Materials/materialHelper.js +1 -1
  348. package/Materials/materialHelper.js.map +1 -1
  349. package/Materials/materialPluginManager.js +3 -3
  350. package/Materials/materialPluginManager.js.map +1 -1
  351. package/Materials/multiMaterial.d.ts +2 -0
  352. package/Materials/multiMaterial.js +12 -10
  353. package/Materials/multiMaterial.js.map +1 -1
  354. package/Materials/shaderMaterial.js +1 -1
  355. package/Materials/shaderMaterial.js.map +1 -1
  356. package/Materials/shadowDepthWrapper.js +1 -1
  357. package/Materials/shadowDepthWrapper.js.map +1 -1
  358. package/Materials/standardMaterial.d.ts +0 -5
  359. package/Materials/standardMaterial.js +1 -10
  360. package/Materials/standardMaterial.js.map +1 -1
  361. package/Maths/math.path.d.ts +1 -0
  362. package/Maths/math.path.js +1 -0
  363. package/Maths/math.path.js.map +1 -1
  364. package/Maths/math.size.js +1 -1
  365. package/Maths/math.size.js.map +1 -1
  366. package/Maths/math.vector.d.ts +1 -0
  367. package/Maths/math.vector.js +36 -19
  368. package/Maths/math.vector.js.map +1 -1
  369. package/Meshes/Builders/cylinderBuilder.d.ts +1 -1
  370. package/Meshes/Builders/cylinderBuilder.js +1 -1
  371. package/Meshes/Builders/cylinderBuilder.js.map +1 -1
  372. package/Meshes/Builders/geodesicBuilder.d.ts +1 -0
  373. package/Meshes/Builders/geodesicBuilder.js +1 -0
  374. package/Meshes/Builders/geodesicBuilder.js.map +1 -1
  375. package/Meshes/Builders/goldbergBuilder.d.ts +1 -0
  376. package/Meshes/Builders/goldbergBuilder.js +1 -0
  377. package/Meshes/Builders/goldbergBuilder.js.map +1 -1
  378. package/Meshes/Builders/linesBuilder.js.map +1 -1
  379. package/Meshes/Builders/tiledBoxBuilder.d.ts +30 -11
  380. package/Meshes/Builders/tiledBoxBuilder.js +30 -11
  381. package/Meshes/Builders/tiledBoxBuilder.js.map +1 -1
  382. package/Meshes/Builders/tiledPlaneBuilder.d.ts +21 -16
  383. package/Meshes/Builders/tiledPlaneBuilder.js +21 -16
  384. package/Meshes/Builders/tiledPlaneBuilder.js.map +1 -1
  385. package/Meshes/Compression/dracoCompression.d.ts +3 -0
  386. package/Meshes/Compression/dracoCompression.js +23 -7
  387. package/Meshes/Compression/dracoCompression.js.map +1 -1
  388. package/Meshes/abstractMesh.d.ts +6 -0
  389. package/Meshes/abstractMesh.js +14 -0
  390. package/Meshes/abstractMesh.js.map +1 -1
  391. package/Meshes/mesh.js +21 -6
  392. package/Meshes/mesh.js.map +1 -1
  393. package/Meshes/mesh.lts.d.ts +1 -1
  394. package/Meshes/mesh.lts.js.map +1 -1
  395. package/Meshes/mesh.vertexData.d.ts +1 -1
  396. package/Meshes/mesh.vertexData.js +2 -2
  397. package/Meshes/mesh.vertexData.js.map +1 -1
  398. package/Misc/PerformanceViewer/performanceViewerCollector.js +36 -19
  399. package/Misc/PerformanceViewer/performanceViewerCollector.js.map +1 -1
  400. package/Misc/assetsManager.d.ts +1 -0
  401. package/Misc/assetsManager.js +13 -0
  402. package/Misc/assetsManager.js.map +1 -1
  403. package/Misc/basis.js +1 -1
  404. package/Misc/basis.js.map +1 -1
  405. package/Misc/devTools.js +1 -1
  406. package/Misc/devTools.js.map +1 -1
  407. package/Misc/environmentTextureTools.js +2 -2
  408. package/Misc/environmentTextureTools.js.map +1 -1
  409. package/Misc/fileTools.js +7 -5
  410. package/Misc/fileTools.js.map +1 -1
  411. package/Misc/index.d.ts +1 -0
  412. package/Misc/index.js +1 -0
  413. package/Misc/index.js.map +1 -1
  414. package/Misc/khronosTextureContainer2.js +4 -3
  415. package/Misc/khronosTextureContainer2.js.map +1 -1
  416. package/Misc/reflector.js +6 -6
  417. package/Misc/reflector.js.map +1 -1
  418. package/Misc/tools.js +15 -13
  419. package/Misc/tools.js.map +1 -1
  420. package/Misc/uniqueIdGenerator.js +1 -1
  421. package/Misc/uniqueIdGenerator.js.map +1 -1
  422. package/Offline/database.js +1 -1
  423. package/Offline/database.js.map +1 -1
  424. package/Particles/baseParticleSystem.d.ts +4 -1
  425. package/Particles/baseParticleSystem.js +20 -5
  426. package/Particles/baseParticleSystem.js.map +1 -1
  427. package/Particles/gpuParticleSystem.js +2 -1
  428. package/Particles/gpuParticleSystem.js.map +1 -1
  429. package/Particles/particleHelper.js +2 -2
  430. package/Particles/particleHelper.js.map +1 -1
  431. package/Physics/Plugins/ammoJSPlugin.d.ts +5 -1
  432. package/Physics/Plugins/ammoJSPlugin.js +16 -11
  433. package/Physics/Plugins/ammoJSPlugin.js.map +1 -1
  434. package/Physics/physicsEngine.d.ts +1 -0
  435. package/Physics/physicsEngine.js +3 -1
  436. package/Physics/physicsEngine.js.map +1 -1
  437. package/Physics/physicsImpostor.d.ts +2 -2
  438. package/Physics/physicsImpostor.js.map +1 -1
  439. package/PostProcesses/blurPostProcess.js +5 -5
  440. package/PostProcesses/blurPostProcess.js.map +1 -1
  441. package/PostProcesses/imageProcessingPostProcess.js +1 -1
  442. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  443. package/PostProcesses/postProcess.js +1 -1
  444. package/PostProcesses/postProcess.js.map +1 -1
  445. package/PostProcesses/postProcessManager.js +2 -2
  446. package/PostProcesses/postProcessManager.js.map +1 -1
  447. package/Probes/reflectionProbe.js +2 -2
  448. package/Probes/reflectionProbe.js.map +1 -1
  449. package/Rendering/depthPeelingRenderer.js +3 -3
  450. package/Rendering/depthPeelingRenderer.js.map +1 -1
  451. package/Rendering/geometryBufferRenderer.js +8 -8
  452. package/Rendering/geometryBufferRenderer.js.map +1 -1
  453. package/Rendering/outlineRenderer.js +1 -1
  454. package/Rendering/outlineRenderer.js.map +1 -1
  455. package/Rendering/utilityLayerRenderer.js +4 -0
  456. package/Rendering/utilityLayerRenderer.js.map +1 -1
  457. package/Shaders/ShadersInclude/prePassVertex.js +1 -1
  458. package/Shaders/ShadersInclude/prePassVertex.js.map +1 -1
  459. package/Shaders/pbr.fragment.js +1 -1
  460. package/Shaders/pbr.fragment.js.map +1 -1
  461. package/ShadersWGSL/gpuUpdateParticles.compute.js +1 -1
  462. package/ShadersWGSL/gpuUpdateParticles.compute.js.map +1 -1
  463. package/Sprites/spriteManager.js +5 -6
  464. package/Sprites/spriteManager.js.map +1 -1
  465. package/Sprites/spriteMap.js +2 -2
  466. package/Sprites/spriteMap.js.map +1 -1
  467. package/Sprites/spriteRenderer.js +1 -1
  468. package/Sprites/spriteRenderer.js.map +1 -1
  469. package/XR/features/WebXRControllerPointerSelection.js +15 -9
  470. package/XR/features/WebXRControllerPointerSelection.js.map +1 -1
  471. package/XR/features/WebXRDOMOverlay.js +1 -1
  472. package/XR/features/WebXRDOMOverlay.js.map +1 -1
  473. package/XR/features/WebXRHandTracking.js +27 -27
  474. package/XR/features/WebXRHandTracking.js.map +1 -1
  475. package/XR/features/WebXRImageTracking.js +2 -2
  476. package/XR/features/WebXRImageTracking.js.map +1 -1
  477. package/XR/features/WebXRLayers.d.ts +28 -5
  478. package/XR/features/WebXRLayers.js +54 -20
  479. package/XR/features/WebXRLayers.js.map +1 -1
  480. package/XR/features/WebXRNearInteraction.d.ts +35 -3
  481. package/XR/features/WebXRNearInteraction.js +201 -40
  482. package/XR/features/WebXRNearInteraction.js.map +1 -1
  483. package/XR/motionController/webXRAbstractMotionController.js +1 -1
  484. package/XR/motionController/webXRAbstractMotionController.js.map +1 -1
  485. package/XR/motionController/webXRMotionControllerManager.js +2 -2
  486. package/XR/motionController/webXRMotionControllerManager.js.map +1 -1
  487. package/XR/motionController/webXRProfiledMotionController.js +1 -1
  488. package/XR/motionController/webXRProfiledMotionController.js.map +1 -1
  489. package/XR/webXRCamera.js +17 -4
  490. package/XR/webXRCamera.js.map +1 -1
  491. package/XR/webXREnterExitUI.js +2 -2
  492. package/XR/webXREnterExitUI.js.map +1 -1
  493. package/XR/webXRFeaturesManager.js +6 -6
  494. package/XR/webXRFeaturesManager.js.map +1 -1
  495. package/XR/webXRInputSource.js +3 -3
  496. package/XR/webXRInputSource.js.map +1 -1
  497. package/XR/webXRRenderTargetTextureProvider.d.ts +3 -2
  498. package/XR/webXRRenderTargetTextureProvider.js +37 -18
  499. package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
  500. package/XR/webXRSessionManager.js +1 -1
  501. package/XR/webXRSessionManager.js.map +1 -1
  502. package/node.d.ts +1 -1
  503. package/node.js.map +1 -1
  504. package/package.json +22 -13
  505. package/scene.d.ts +5 -2
  506. package/scene.js +31 -5
  507. package/scene.js.map +1 -1
  508. package/DeviceInput/Implementations/nativeDeviceInputSystem.js.map +0 -1
  509. package/DeviceInput/Implementations/webDeviceInputSystem.js.map +0 -1
  510. package/DeviceInput/Interfaces/inputInterfaces.js.map +0 -1
  511. package/DeviceInput/deviceInputSystem.d.ts +0 -60
  512. package/DeviceInput/deviceInputSystem.js +0 -84
  513. package/DeviceInput/deviceInputSystem.js.map +0 -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 * 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"]}
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"]}
@@ -610,11 +610,6 @@ export declare class StandardMaterial extends PushMaterial {
610
610
  * @returns the cloned material
611
611
  */
612
612
  clone(name: string): StandardMaterial;
613
- /**
614
- * Serializes this material in a JSON representation
615
- * @returns the serialized material object
616
- */
617
- serialize(): any;
618
613
  /**
619
614
  * Creates a standard material from parsed material data
620
615
  * @param source defines the JSON representation of the material
@@ -894,7 +894,7 @@ var StandardMaterial = /** @class */ (function (_super) {
894
894
  }
895
895
  for (var i = 1; i <= 6; ++i) {
896
896
  if (defines["UV" + i]) {
897
- attribs.push("uv" + (i === 1 ? "" : i));
897
+ attribs.push("uv".concat(i === 1 ? "" : i));
898
898
  }
899
899
  }
900
900
  if (defines.VERTEXCOLOR) {
@@ -1401,15 +1401,6 @@ var StandardMaterial = /** @class */ (function (_super) {
1401
1401
  this.stencil.copyTo(result.stencil);
1402
1402
  return result;
1403
1403
  };
1404
- /**
1405
- * Serializes this material in a JSON representation
1406
- * @returns the serialized material object
1407
- */
1408
- StandardMaterial.prototype.serialize = function () {
1409
- var serializationObject = SerializationHelper.Serialize(this);
1410
- serializationObject.stencil = this.stencil.serialize();
1411
- return serializationObject;
1412
- };
1413
1404
  /**
1414
1405
  * Creates a standard material from parsed material data
1415
1406
  * @param source defines the JSON representation of the material