@babylonjs/core 5.45.2 → 5.47.0

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 (563) hide show
  1. package/Actions/actionManager.js +6 -1
  2. package/Actions/actionManager.js.map +1 -1
  3. package/Actions/condition.js +23 -23
  4. package/Actions/condition.js.map +1 -1
  5. package/Animations/animatable.js +48 -48
  6. package/Animations/animatable.js.map +1 -1
  7. package/Animations/animation.js +53 -53
  8. package/Animations/animation.js.map +1 -1
  9. package/Animations/animationGroup.js +53 -53
  10. package/Animations/animationGroup.js.map +1 -1
  11. package/Animations/runtimeAnimation.js +36 -36
  12. package/Animations/runtimeAnimation.js.map +1 -1
  13. package/Audio/audioEngine.js +14 -14
  14. package/Audio/audioEngine.js.map +1 -1
  15. package/Audio/audioSceneComponent.js +14 -14
  16. package/Audio/audioSceneComponent.js.map +1 -1
  17. package/Audio/sound.js +47 -47
  18. package/Audio/sound.js.map +1 -1
  19. package/Behaviors/Meshes/baseSixDofDragBehavior.d.ts +1 -1
  20. package/Behaviors/Meshes/fadeInOutBehavior.js +11 -11
  21. package/Behaviors/Meshes/fadeInOutBehavior.js.map +1 -1
  22. package/Behaviors/Meshes/pointerDragBehavior.js +34 -34
  23. package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
  24. package/Bones/bone.js +15 -15
  25. package/Bones/bone.js.map +1 -1
  26. package/Bones/boneIKController.js +9 -9
  27. package/Bones/boneIKController.js.map +1 -1
  28. package/Bones/boneLookController.js +50 -50
  29. package/Bones/boneLookController.js.map +1 -1
  30. package/Bones/skeleton.js +35 -35
  31. package/Bones/skeleton.js.map +1 -1
  32. package/Buffers/buffer.js +14 -14
  33. package/Buffers/buffer.js.map +1 -1
  34. package/Buffers/dataBuffer.js +6 -6
  35. package/Buffers/dataBuffer.js.map +1 -1
  36. package/Cameras/Inputs/freeCameraDeviceOrientationInput.js +42 -42
  37. package/Cameras/Inputs/freeCameraDeviceOrientationInput.js.map +1 -1
  38. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js +18 -18
  39. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js.map +1 -1
  40. package/Cameras/VR/vrExperienceHelper.js +178 -178
  41. package/Cameras/VR/vrExperienceHelper.js.map +1 -1
  42. package/Cameras/arcRotateCamera.js +176 -176
  43. package/Cameras/arcRotateCamera.js.map +1 -1
  44. package/Cameras/camera.js +90 -90
  45. package/Cameras/camera.js.map +1 -1
  46. package/Cameras/flyCamera.js +82 -82
  47. package/Cameras/flyCamera.js.map +1 -1
  48. package/Cameras/freeCamera.js +54 -54
  49. package/Cameras/freeCamera.js.map +1 -1
  50. package/Compute/computeShader.js +12 -12
  51. package/Compute/computeShader.js.map +1 -1
  52. package/Culling/ray.d.ts +1 -1
  53. package/Debug/axesViewer.js +12 -12
  54. package/Debug/axesViewer.js.map +1 -1
  55. package/Debug/debugLayer.js +21 -21
  56. package/Debug/debugLayer.js.map +1 -1
  57. package/Debug/directionalLightFrustumViewer.js +20 -20
  58. package/Debug/directionalLightFrustumViewer.js.map +1 -1
  59. package/Debug/physicsViewer.js +3 -3
  60. package/Debug/physicsViewer.js.map +1 -1
  61. package/Debug/rayHelper.js +10 -10
  62. package/Debug/rayHelper.js.map +1 -1
  63. package/Debug/skeletonViewer.js +81 -81
  64. package/Debug/skeletonViewer.js.map +1 -1
  65. package/DeviceInput/InputDevices/deviceSource.d.ts +1 -1
  66. package/DeviceInput/InputDevices/deviceSourceManager.js +31 -31
  67. package/DeviceInput/InputDevices/deviceSourceManager.js.map +1 -1
  68. package/DeviceInput/InputDevices/deviceTypes.d.ts +1 -1
  69. package/DeviceInput/eventFactory.d.ts +1 -1
  70. package/DeviceInput/eventFactory.js +4 -4
  71. package/DeviceInput/eventFactory.js.map +1 -1
  72. package/DeviceInput/internalDeviceSourceManager.d.ts +2 -2
  73. package/DeviceInput/webDeviceInputSystem.js +2 -2
  74. package/DeviceInput/webDeviceInputSystem.js.map +1 -1
  75. package/Engines/Extensions/engine.computeShader.d.ts +3 -3
  76. package/Engines/Extensions/engine.multiRender.js +1 -1
  77. package/Engines/Extensions/engine.multiRender.js.map +1 -1
  78. package/Engines/Extensions/engine.query.d.ts +1 -1
  79. package/Engines/Extensions/engine.renderTarget.d.ts +1 -1
  80. package/Engines/Extensions/engine.renderTarget.js +1 -1
  81. package/Engines/Extensions/engine.renderTarget.js.map +1 -1
  82. package/Engines/Native/nativeDataStream.d.ts +1 -1
  83. package/Engines/Native/nativeHardwareTexture.js +3 -3
  84. package/Engines/Native/nativeHardwareTexture.js.map +1 -1
  85. package/Engines/Native/nativeInterfaces.d.ts +5 -5
  86. package/Engines/Native/nativePipelineContext.js +7 -7
  87. package/Engines/Native/nativePipelineContext.js.map +1 -1
  88. package/Engines/Native/nativeRenderTargetWrapper.js +6 -6
  89. package/Engines/Native/nativeRenderTargetWrapper.js.map +1 -1
  90. package/Engines/Processors/shaderCodeInliner.js +4 -4
  91. package/Engines/Processors/shaderCodeInliner.js.map +1 -1
  92. package/Engines/Processors/shaderProcessingOptions.d.ts +1 -1
  93. package/Engines/WebGL/webGLHardwareTexture.js +3 -3
  94. package/Engines/WebGL/webGLHardwareTexture.js.map +1 -1
  95. package/Engines/WebGPU/webgpuBufferManager.js +3 -3
  96. package/Engines/WebGPU/webgpuBufferManager.js.map +1 -1
  97. package/Engines/WebGPU/webgpuCacheBindGroups.js +6 -6
  98. package/Engines/WebGPU/webgpuCacheBindGroups.js.map +1 -1
  99. package/Engines/WebGPU/webgpuCacheRenderPipelineTree.js +5 -5
  100. package/Engines/WebGPU/webgpuCacheRenderPipelineTree.js.map +1 -1
  101. package/Engines/WebGPU/webgpuClearQuad.js +11 -11
  102. package/Engines/WebGPU/webgpuClearQuad.js.map +1 -1
  103. package/Engines/WebGPU/webgpuComputeContext.js +7 -7
  104. package/Engines/WebGPU/webgpuComputeContext.js.map +1 -1
  105. package/Engines/WebGPU/webgpuComputePipelineContext.js +4 -4
  106. package/Engines/WebGPU/webgpuComputePipelineContext.js.map +1 -1
  107. package/Engines/WebGPU/webgpuDrawContext.js +7 -7
  108. package/Engines/WebGPU/webgpuDrawContext.js.map +1 -1
  109. package/Engines/WebGPU/webgpuHardwareTexture.js +9 -9
  110. package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
  111. package/Engines/WebGPU/webgpuMaterialContext.js +5 -5
  112. package/Engines/WebGPU/webgpuMaterialContext.js.map +1 -1
  113. package/Engines/WebGPU/webgpuOcclusionQuery.js +10 -10
  114. package/Engines/WebGPU/webgpuOcclusionQuery.js.map +1 -1
  115. package/Engines/WebGPU/webgpuPipelineContext.js +6 -6
  116. package/Engines/WebGPU/webgpuPipelineContext.js.map +1 -1
  117. package/Engines/WebGPU/webgpuQuerySet.js +3 -3
  118. package/Engines/WebGPU/webgpuQuerySet.js.map +1 -1
  119. package/Engines/WebGPU/webgpuShaderProcessingContext.js +3 -3
  120. package/Engines/WebGPU/webgpuShaderProcessingContext.js.map +1 -1
  121. package/Engines/WebGPU/webgpuTextureHelper.js +3 -3
  122. package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
  123. package/Engines/WebGPU/webgpuTimestampQuery.js +3 -3
  124. package/Engines/WebGPU/webgpuTimestampQuery.js.map +1 -1
  125. package/Engines/engine.js +134 -134
  126. package/Engines/engine.js.map +1 -1
  127. package/Engines/nativeEngine.js +6 -6
  128. package/Engines/nativeEngine.js.map +1 -1
  129. package/Engines/nullEngine.js +25 -25
  130. package/Engines/nullEngine.js.map +1 -1
  131. package/Engines/renderTargetWrapper.js +25 -25
  132. package/Engines/renderTargetWrapper.js.map +1 -1
  133. package/Engines/thinEngine.js +243 -243
  134. package/Engines/thinEngine.js.map +1 -1
  135. package/Engines/webgpuEngine.js +132 -132
  136. package/Engines/webgpuEngine.js.map +1 -1
  137. package/Events/keyboardEvents.js +10 -10
  138. package/Events/keyboardEvents.js.map +1 -1
  139. package/Events/pointerEvents.js +10 -10
  140. package/Events/pointerEvents.js.map +1 -1
  141. package/Gamepads/Controllers/poseEnabledController.js +9 -9
  142. package/Gamepads/Controllers/poseEnabledController.js.map +1 -1
  143. package/Gamepads/Controllers/webVRController.js +13 -13
  144. package/Gamepads/Controllers/webVRController.js.map +1 -1
  145. package/Gamepads/gamepad.js +20 -20
  146. package/Gamepads/gamepad.js.map +1 -1
  147. package/Gizmos/axisDragGizmo.js +45 -45
  148. package/Gizmos/axisDragGizmo.js.map +1 -1
  149. package/Gizmos/axisScaleGizmo.js +12 -12
  150. package/Gizmos/axisScaleGizmo.js.map +1 -1
  151. package/Gizmos/boundingBoxGizmo.js +74 -74
  152. package/Gizmos/boundingBoxGizmo.js.map +1 -1
  153. package/Gizmos/gizmo.js +34 -34
  154. package/Gizmos/gizmo.js.map +1 -1
  155. package/Gizmos/gizmoManager.js +40 -40
  156. package/Gizmos/gizmoManager.js.map +1 -1
  157. package/Gizmos/planeDragGizmo.js +23 -23
  158. package/Gizmos/planeDragGizmo.js.map +1 -1
  159. package/Gizmos/planeRotationGizmo.js +12 -12
  160. package/Gizmos/planeRotationGizmo.js.map +1 -1
  161. package/Gizmos/positionGizmo.js +40 -40
  162. package/Gizmos/positionGizmo.js.map +1 -1
  163. package/Gizmos/rotationGizmo.js +47 -47
  164. package/Gizmos/rotationGizmo.js.map +1 -1
  165. package/Gizmos/scaleGizmo.js +41 -41
  166. package/Gizmos/scaleGizmo.js.map +1 -1
  167. package/Helpers/environmentHelper.js +18 -18
  168. package/Helpers/environmentHelper.js.map +1 -1
  169. package/Helpers/textureDome.js +96 -96
  170. package/Helpers/textureDome.js.map +1 -1
  171. package/IAccessibilityTag.d.ts +2 -2
  172. package/Inputs/scene.inputManager.d.ts +4 -3
  173. package/Inputs/scene.inputManager.js +12 -11
  174. package/Inputs/scene.inputManager.js.map +1 -1
  175. package/Instrumentation/engineInstrumentation.js +21 -21
  176. package/Instrumentation/engineInstrumentation.js.map +1 -1
  177. package/Instrumentation/sceneInstrumentation.js +90 -90
  178. package/Instrumentation/sceneInstrumentation.js.map +1 -1
  179. package/Layers/effectLayer.js +48 -48
  180. package/Layers/effectLayer.js.map +1 -1
  181. package/Layers/glowLayer.js +32 -32
  182. package/Layers/glowLayer.js.map +1 -1
  183. package/Layers/highlightLayer.js +26 -26
  184. package/Layers/highlightLayer.js.map +1 -1
  185. package/Layers/layer.js +40 -40
  186. package/Layers/layer.js.map +1 -1
  187. package/LensFlares/lensFlare.js +15 -15
  188. package/LensFlares/lensFlare.js.map +1 -1
  189. package/LensFlares/lensFlareSystem.js +4 -4
  190. package/LensFlares/lensFlareSystem.js.map +1 -1
  191. package/Lights/Shadows/cascadedShadowGenerator.js +18 -18
  192. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  193. package/Lights/Shadows/shadowGenerator.js +115 -115
  194. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  195. package/Lights/directionalLight.js +31 -31
  196. package/Lights/directionalLight.js.map +1 -1
  197. package/Lights/light.js +72 -72
  198. package/Lights/light.js.map +1 -1
  199. package/Lights/pointLight.js +18 -18
  200. package/Lights/pointLight.js.map +1 -1
  201. package/Lights/spotLight.js +30 -30
  202. package/Lights/spotLight.js.map +1 -1
  203. package/Loading/sceneLoader.d.ts +1 -1
  204. package/Materials/Background/backgroundMaterial.js +124 -124
  205. package/Materials/Background/backgroundMaterial.js.map +1 -1
  206. package/Materials/Node/Blocks/Dual/imageSourceBlock.js +8 -8
  207. package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
  208. package/Materials/Node/Blocks/Dual/lightBlock.js +14 -14
  209. package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
  210. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +9 -9
  211. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
  212. package/Materials/Node/Blocks/Dual/textureBlock.js +26 -26
  213. package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
  214. package/Materials/Node/Blocks/Input/inputBlock.js +34 -34
  215. package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
  216. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +14 -14
  217. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  218. package/Materials/Node/Blocks/PBR/reflectionBlock.js +16 -16
  219. package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
  220. package/Materials/Node/Blocks/customBlock.js +7 -7
  221. package/Materials/Node/Blocks/customBlock.js.map +1 -1
  222. package/Materials/Node/Blocks/gradientBlock.js +13 -13
  223. package/Materials/Node/Blocks/gradientBlock.js.map +1 -1
  224. package/Materials/Node/Blocks/triPlanarBlock.js +30 -30
  225. package/Materials/Node/Blocks/triPlanarBlock.js.map +1 -1
  226. package/Materials/Node/nodeMaterial.d.ts +1 -1
  227. package/Materials/Node/nodeMaterial.js +60 -60
  228. package/Materials/Node/nodeMaterial.js.map +1 -1
  229. package/Materials/Node/nodeMaterialBlock.js +35 -35
  230. package/Materials/Node/nodeMaterialBlock.js.map +1 -1
  231. package/Materials/Node/nodeMaterialBlockConnectionPoint.js +50 -50
  232. package/Materials/Node/nodeMaterialBlockConnectionPoint.js.map +1 -1
  233. package/Materials/PBR/pbrAnisotropicConfiguration.js +5 -5
  234. package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
  235. package/Materials/PBR/pbrBRDFConfiguration.js +4 -4
  236. package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
  237. package/Materials/PBR/pbrBaseMaterial.js +53 -55
  238. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  239. package/Materials/PBR/pbrBaseSimpleMaterial.js +17 -17
  240. package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
  241. package/Materials/PBR/pbrClearCoatConfiguration.js +5 -5
  242. package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
  243. package/Materials/PBR/pbrIridescenceConfiguration.js +5 -5
  244. package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -1
  245. package/Materials/PBR/pbrMaterial.js +209 -209
  246. package/Materials/PBR/pbrMaterial.js.map +1 -1
  247. package/Materials/PBR/pbrSheenConfiguration.js +5 -5
  248. package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
  249. package/Materials/PBR/pbrSpecularGlossinessMaterial.js +6 -6
  250. package/Materials/PBR/pbrSpecularGlossinessMaterial.js.map +1 -1
  251. package/Materials/PBR/pbrSubSurfaceConfiguration.js +51 -51
  252. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  253. package/Materials/Textures/baseTexture.js +99 -99
  254. package/Materials/Textures/baseTexture.js.map +1 -1
  255. package/Materials/Textures/cubeTexture.js +61 -61
  256. package/Materials/Textures/cubeTexture.js.map +1 -1
  257. package/Materials/Textures/externalTexture.js +16 -16
  258. package/Materials/Textures/externalTexture.js.map +1 -1
  259. package/Materials/Textures/hdrCubeTexture.js +44 -44
  260. package/Materials/Textures/hdrCubeTexture.js.map +1 -1
  261. package/Materials/Textures/internalTexture.js +31 -31
  262. package/Materials/Textures/internalTexture.js.map +1 -1
  263. package/Materials/Textures/mirrorTexture.js +73 -73
  264. package/Materials/Textures/mirrorTexture.js.map +1 -1
  265. package/Materials/Textures/multiRenderTarget.js +47 -47
  266. package/Materials/Textures/multiRenderTarget.js.map +1 -1
  267. package/Materials/Textures/rawTexture2DArray.js +6 -6
  268. package/Materials/Textures/rawTexture2DArray.js.map +1 -1
  269. package/Materials/Textures/renderTargetTexture.js +142 -142
  270. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  271. package/Materials/Textures/texture.d.ts +1 -1
  272. package/Materials/Textures/texture.js +26 -26
  273. package/Materials/Textures/texture.js.map +1 -1
  274. package/Materials/Textures/textureCreationOptions.d.ts +1 -1
  275. package/Materials/Textures/textureSampler.js +20 -20
  276. package/Materials/Textures/textureSampler.js.map +1 -1
  277. package/Materials/Textures/thinRenderTargetTexture.js +6 -6
  278. package/Materials/Textures/thinRenderTargetTexture.js.map +1 -1
  279. package/Materials/Textures/thinTexture.js +39 -39
  280. package/Materials/Textures/thinTexture.js.map +1 -1
  281. package/Materials/Textures/videoTexture.js +41 -41
  282. package/Materials/Textures/videoTexture.js.map +1 -1
  283. package/Materials/drawWrapper.js +6 -6
  284. package/Materials/drawWrapper.js.map +1 -1
  285. package/Materials/effect.js +18 -18
  286. package/Materials/effect.js.map +1 -1
  287. package/Materials/effectRenderer.js +9 -9
  288. package/Materials/effectRenderer.js.map +1 -1
  289. package/Materials/fresnelParameters.d.ts +2 -2
  290. package/Materials/fresnelParameters.js +13 -13
  291. package/Materials/fresnelParameters.js.map +1 -1
  292. package/Materials/material.detailMapConfiguration.js +5 -5
  293. package/Materials/material.detailMapConfiguration.js.map +1 -1
  294. package/Materials/material.js +223 -223
  295. package/Materials/material.js.map +1 -1
  296. package/Materials/materialPluginBase.js +5 -5
  297. package/Materials/materialPluginBase.js.map +1 -1
  298. package/Materials/materialPluginEvent.d.ts +14 -14
  299. package/Materials/materialPluginManager.d.ts +1 -1
  300. package/Materials/multiMaterial.js +16 -16
  301. package/Materials/multiMaterial.js.map +1 -1
  302. package/Materials/shadowDepthWrapper.js +14 -14
  303. package/Materials/shadowDepthWrapper.js.map +1 -1
  304. package/Materials/standardMaterial.js +100 -100
  305. package/Materials/standardMaterial.js.map +1 -1
  306. package/Materials/uniformBufferEffectCommonAccessor.js +3 -3
  307. package/Materials/uniformBufferEffectCommonAccessor.js.map +1 -1
  308. package/Maths/math.functions.js +2 -0
  309. package/Maths/math.functions.js.map +1 -1
  310. package/Maths/math.path.js +11 -11
  311. package/Maths/math.path.js.map +1 -1
  312. package/Maths/math.vector.d.ts +27 -7
  313. package/Maths/math.vector.js +75 -48
  314. package/Maths/math.vector.js.map +1 -1
  315. package/Meshes/Builders/goldbergBuilder.d.ts +2 -2
  316. package/Meshes/Compression/dracoCompression.js +23 -23
  317. package/Meshes/Compression/dracoCompression.js.map +1 -1
  318. package/Meshes/Compression/meshoptCompression.js +9 -9
  319. package/Meshes/Compression/meshoptCompression.js.map +1 -1
  320. package/Meshes/abstractMesh.js +179 -179
  321. package/Meshes/abstractMesh.js.map +1 -1
  322. package/Meshes/geometry.js +32 -32
  323. package/Meshes/geometry.js.map +1 -1
  324. package/Meshes/goldbergMesh.d.ts +1 -1
  325. package/Meshes/linesMesh.js +3 -3
  326. package/Meshes/linesMesh.js.map +1 -1
  327. package/Meshes/mesh.js +166 -166
  328. package/Meshes/mesh.js.map +1 -1
  329. package/Meshes/mesh.vertexData.js.map +1 -1
  330. package/Meshes/polygonMesh.js +5 -5
  331. package/Meshes/polygonMesh.js.map +1 -1
  332. package/Meshes/subMesh.js +59 -59
  333. package/Meshes/subMesh.js.map +1 -1
  334. package/Meshes/transformNode.js +52 -52
  335. package/Meshes/transformNode.js.map +1 -1
  336. package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.d.ts +1 -1
  337. package/Misc/PerformanceViewer/performanceViewerCollector.js +12 -12
  338. package/Misc/PerformanceViewer/performanceViewerCollector.js.map +1 -1
  339. package/Misc/arrayTools.d.ts +1 -1
  340. package/Misc/copyTextureToTexture.js +3 -3
  341. package/Misc/copyTextureToTexture.js.map +1 -1
  342. package/Misc/coroutine.d.ts +5 -5
  343. package/Misc/deferred.js +9 -9
  344. package/Misc/deferred.js.map +1 -1
  345. package/Misc/depthReducer.js +7 -7
  346. package/Misc/depthReducer.js.map +1 -1
  347. package/Misc/environmentTextureTools.d.ts +1 -1
  348. package/Misc/error.d.ts +1 -1
  349. package/Misc/fileTools.d.ts +5 -5
  350. package/Misc/filesInput.js +6 -6
  351. package/Misc/filesInput.js.map +1 -1
  352. package/Misc/khronosTextureContainer2.js +9 -9
  353. package/Misc/khronosTextureContainer2.js.map +1 -1
  354. package/Misc/observable.js +12 -12
  355. package/Misc/observable.js.map +1 -1
  356. package/Misc/perfCounter.js +16 -16
  357. package/Misc/perfCounter.js.map +1 -1
  358. package/Misc/sceneOptimizer.js +76 -76
  359. package/Misc/sceneOptimizer.js.map +1 -1
  360. package/Misc/stringDictionary.d.ts +1 -1
  361. package/Misc/trajectoryClassifier.js +67 -67
  362. package/Misc/trajectoryClassifier.js.map +1 -1
  363. package/Misc/videoRecorder.js +15 -15
  364. package/Misc/videoRecorder.js.map +1 -1
  365. package/Misc/virtualJoystick.js +12 -12
  366. package/Misc/virtualJoystick.js.map +1 -1
  367. package/Morph/morphTarget.js +28 -28
  368. package/Morph/morphTarget.js.map +1 -1
  369. package/Morph/morphTargetManager.js +18 -18
  370. package/Morph/morphTargetManager.js.map +1 -1
  371. package/Offline/database.js +12 -12
  372. package/Offline/database.js.map +1 -1
  373. package/Particles/EmitterTypes/coneParticleEmitter.js +25 -25
  374. package/Particles/EmitterTypes/coneParticleEmitter.js.map +1 -1
  375. package/Particles/EmitterTypes/meshParticleEmitter.js +20 -20
  376. package/Particles/EmitterTypes/meshParticleEmitter.js.map +1 -1
  377. package/Particles/baseParticleSystem.js +232 -232
  378. package/Particles/baseParticleSystem.js.map +1 -1
  379. package/Particles/cloudPoint.js +9 -9
  380. package/Particles/cloudPoint.js.map +1 -1
  381. package/Particles/gpuParticleSystem.js +123 -123
  382. package/Particles/gpuParticleSystem.js.map +1 -1
  383. package/Particles/particleSystem.js +102 -102
  384. package/Particles/particleSystem.js.map +1 -1
  385. package/Particles/particleSystemComponent.js +5 -0
  386. package/Particles/particleSystemComponent.js.map +1 -1
  387. package/Particles/pointsCloudSystem.js +18 -18
  388. package/Particles/pointsCloudSystem.js.map +1 -1
  389. package/Particles/solidParticle.js +23 -23
  390. package/Particles/solidParticle.js.map +1 -1
  391. package/Physics/index.d.ts +1 -0
  392. package/Physics/index.js +1 -0
  393. package/Physics/index.js.map +1 -1
  394. package/Physics/v1/physicsEngine.js +14 -14
  395. package/Physics/v1/physicsEngine.js.map +1 -1
  396. package/Physics/v1/physicsImpostor.js +149 -149
  397. package/Physics/v1/physicsImpostor.js.map +1 -1
  398. package/Physics/v2/IPhysicsEnginePlugin.d.ts +6 -8
  399. package/Physics/v2/IPhysicsEnginePlugin.js +1 -0
  400. package/Physics/v2/IPhysicsEnginePlugin.js.map +1 -1
  401. package/Physics/v2/physicsBody.d.ts +10 -1
  402. package/Physics/v2/physicsBody.js +13 -1
  403. package/Physics/v2/physicsBody.js.map +1 -1
  404. package/Physics/v2/physicsConstraint.d.ts +139 -66
  405. package/Physics/v2/physicsConstraint.js +145 -78
  406. package/Physics/v2/physicsConstraint.js.map +1 -1
  407. package/Physics/v2/physicsEngine.js +14 -14
  408. package/Physics/v2/physicsEngine.js.map +1 -1
  409. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js +137 -129
  410. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js.map +1 -1
  411. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js +68 -68
  412. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
  413. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js +6 -6
  414. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js.map +1 -1
  415. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js +226 -225
  416. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js.map +1 -1
  417. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js +10 -10
  418. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
  419. package/PostProcesses/anaglyphPostProcess.js +7 -7
  420. package/PostProcesses/anaglyphPostProcess.js.map +1 -1
  421. package/PostProcesses/blackAndWhitePostProcess.js +7 -7
  422. package/PostProcesses/blackAndWhitePostProcess.js.map +1 -1
  423. package/PostProcesses/bloomEffect.js +28 -28
  424. package/PostProcesses/bloomEffect.js.map +1 -1
  425. package/PostProcesses/bloomMergePostProcess.js +7 -7
  426. package/PostProcesses/bloomMergePostProcess.js.map +1 -1
  427. package/PostProcesses/blurPostProcess.js +32 -32
  428. package/PostProcesses/blurPostProcess.js.map +1 -1
  429. package/PostProcesses/chromaticAberrationPostProcess.js +7 -7
  430. package/PostProcesses/chromaticAberrationPostProcess.js.map +1 -1
  431. package/PostProcesses/circleOfConfusionPostProcess.js +7 -7
  432. package/PostProcesses/circleOfConfusionPostProcess.js.map +1 -1
  433. package/PostProcesses/colorCorrectionPostProcess.js +7 -7
  434. package/PostProcesses/colorCorrectionPostProcess.js.map +1 -1
  435. package/PostProcesses/convolutionPostProcess.js +7 -7
  436. package/PostProcesses/convolutionPostProcess.js.map +1 -1
  437. package/PostProcesses/depthOfFieldBlurPostProcess.js +7 -7
  438. package/PostProcesses/depthOfFieldBlurPostProcess.js.map +1 -1
  439. package/PostProcesses/depthOfFieldEffect.js +36 -36
  440. package/PostProcesses/depthOfFieldEffect.js.map +1 -1
  441. package/PostProcesses/depthOfFieldMergePostProcess.js +7 -7
  442. package/PostProcesses/depthOfFieldMergePostProcess.js.map +1 -1
  443. package/PostProcesses/extractHighlightsPostProcess.js +7 -7
  444. package/PostProcesses/extractHighlightsPostProcess.js.map +1 -1
  445. package/PostProcesses/filterPostProcess.js +7 -7
  446. package/PostProcesses/filterPostProcess.js.map +1 -1
  447. package/PostProcesses/grainPostProcess.js +7 -7
  448. package/PostProcesses/grainPostProcess.js.map +1 -1
  449. package/PostProcesses/imageProcessingPostProcess.js +42 -42
  450. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  451. package/PostProcesses/motionBlurPostProcess.js +41 -41
  452. package/PostProcesses/motionBlurPostProcess.js.map +1 -1
  453. package/PostProcesses/passPostProcess.js +15 -15
  454. package/PostProcesses/passPostProcess.js.map +1 -1
  455. package/PostProcesses/postProcess.d.ts +2 -2
  456. package/PostProcesses/postProcess.js +123 -123
  457. package/PostProcesses/postProcess.js.map +1 -1
  458. package/PostProcesses/refractionPostProcess.js +21 -21
  459. package/PostProcesses/refractionPostProcess.js.map +1 -1
  460. package/PostProcesses/screenSpaceCurvaturePostProcess.js +7 -7
  461. package/PostProcesses/screenSpaceCurvaturePostProcess.js.map +1 -1
  462. package/PostProcesses/screenSpaceReflectionPostProcess.js +19 -19
  463. package/PostProcesses/screenSpaceReflectionPostProcess.js.map +1 -1
  464. package/PostProcesses/sharpenPostProcess.js +7 -7
  465. package/PostProcesses/sharpenPostProcess.js.map +1 -1
  466. package/PostProcesses/stereoscopicInterlacePostProcess.js +14 -14
  467. package/PostProcesses/stereoscopicInterlacePostProcess.js.map +1 -1
  468. package/PostProcesses/tonemapPostProcess.js +7 -7
  469. package/PostProcesses/tonemapPostProcess.js.map +1 -1
  470. package/PostProcesses/volumetricLightScatteringPostProcess.js +11 -11
  471. package/PostProcesses/volumetricLightScatteringPostProcess.js.map +1 -1
  472. package/PostProcesses/vrDistortionCorrectionPostProcess.js +7 -7
  473. package/PostProcesses/vrDistortionCorrectionPostProcess.js.map +1 -1
  474. package/Rendering/depthPeelingRenderer.js +36 -36
  475. package/Rendering/depthPeelingRenderer.js.map +1 -1
  476. package/Rendering/depthRenderer.js +8 -8
  477. package/Rendering/depthRenderer.js.map +1 -1
  478. package/Rendering/edgesRenderer.js +34 -34
  479. package/Rendering/edgesRenderer.js.map +1 -1
  480. package/Rendering/fluidRenderer/fluidRenderer.js +8 -8
  481. package/Rendering/fluidRenderer/fluidRenderer.js.map +1 -1
  482. package/Rendering/fluidRenderer/fluidRenderingDepthTextureCopy.js +3 -3
  483. package/Rendering/fluidRenderer/fluidRenderingDepthTextureCopy.js.map +1 -1
  484. package/Rendering/fluidRenderer/fluidRenderingObject.js +22 -19
  485. package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
  486. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js +12 -12
  487. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js.map +1 -1
  488. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js +18 -18
  489. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js.map +1 -1
  490. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js +71 -68
  491. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js.map +1 -1
  492. package/Rendering/fluidRenderer/fluidRenderingTextures.js +29 -29
  493. package/Rendering/fluidRenderer/fluidRenderingTextures.js.map +1 -1
  494. package/Rendering/geometryBufferRenderer.js +173 -168
  495. package/Rendering/geometryBufferRenderer.js.map +1 -1
  496. package/Rendering/prePassRenderer.js +51 -51
  497. package/Rendering/prePassRenderer.js.map +1 -1
  498. package/Rendering/renderingGroup.js +25 -25
  499. package/Rendering/renderingGroup.js.map +1 -1
  500. package/Rendering/renderingManager.js +21 -21
  501. package/Rendering/renderingManager.js.map +1 -1
  502. package/Rendering/subSurfaceConfiguration.js +18 -18
  503. package/Rendering/subSurfaceConfiguration.js.map +1 -1
  504. package/Rendering/utilityLayerRenderer.js +76 -76
  505. package/Rendering/utilityLayerRenderer.js.map +1 -1
  506. package/Shaders/ShadersInclude/pbrBlockSubSurface.js +1 -1
  507. package/Shaders/ShadersInclude/pbrBlockSubSurface.js.map +1 -1
  508. package/Shaders/fluidRenderingParticleDepth.fragment.js +5 -1
  509. package/Shaders/fluidRenderingParticleDepth.fragment.js.map +1 -1
  510. package/Shaders/fluidRenderingRender.fragment.js +7 -2
  511. package/Shaders/fluidRenderingRender.fragment.js.map +1 -1
  512. package/Shaders/geometry.fragment.d.ts +2 -0
  513. package/Shaders/geometry.fragment.js +5 -1
  514. package/Shaders/geometry.fragment.js.map +1 -1
  515. package/Shaders/geometry.vertex.d.ts +2 -0
  516. package/Shaders/geometry.vertex.js +8 -4
  517. package/Shaders/geometry.vertex.js.map +1 -1
  518. package/Sprites/sprite.js +16 -16
  519. package/Sprites/sprite.js.map +1 -1
  520. package/Sprites/spriteManager.js +81 -81
  521. package/Sprites/spriteManager.js.map +1 -1
  522. package/Sprites/spriteMap.js +32 -32
  523. package/Sprites/spriteMap.js.map +1 -1
  524. package/Sprites/spriteRenderer.js +6 -6
  525. package/Sprites/spriteRenderer.js.map +1 -1
  526. package/Sprites/thinSprite.js +22 -22
  527. package/Sprites/thinSprite.js.map +1 -1
  528. package/States/stencilStateComposer.js +10 -10
  529. package/States/stencilStateComposer.js.map +1 -1
  530. package/XR/features/WebXRAnchorSystem.js +7 -7
  531. package/XR/features/WebXRAnchorSystem.js.map +1 -1
  532. package/XR/features/WebXRControllerMovement.d.ts +3 -3
  533. package/XR/features/WebXRControllerMovement.js +97 -97
  534. package/XR/features/WebXRControllerMovement.js.map +1 -1
  535. package/XR/features/WebXRControllerPhysics.js +24 -24
  536. package/XR/features/WebXRControllerPhysics.js.map +1 -1
  537. package/XR/features/WebXRControllerTeleportation.js +26 -26
  538. package/XR/features/WebXRControllerTeleportation.js.map +1 -1
  539. package/XR/features/WebXRDOMOverlay.d.ts +1 -1
  540. package/XR/features/WebXRFeaturePointSystem.js +6 -6
  541. package/XR/features/WebXRFeaturePointSystem.js.map +1 -1
  542. package/XR/features/WebXRHandTracking.d.ts +1 -1
  543. package/XR/features/WebXRHandTracking.js +95 -95
  544. package/XR/features/WebXRHandTracking.js.map +1 -1
  545. package/XR/features/WebXRWalkingLocomotion.js +21 -21
  546. package/XR/features/WebXRWalkingLocomotion.js.map +1 -1
  547. package/XR/motionController/webXRAbstractMotionController.d.ts +3 -3
  548. package/XR/motionController/webXRMotionControllerManager.d.ts +1 -1
  549. package/XR/native/nativeXRFrame.js +3 -3
  550. package/XR/native/nativeXRFrame.js.map +1 -1
  551. package/XR/webXRFeaturesManager.d.ts +1 -1
  552. package/XR/webXRLayerWrapper.d.ts +2 -2
  553. package/XR/webXRLayerWrapper.js +17 -17
  554. package/XR/webXRLayerWrapper.js.map +1 -1
  555. package/abstractScene.d.ts +2 -2
  556. package/node.d.ts +1 -1
  557. package/node.js +71 -71
  558. package/node.js.map +1 -1
  559. package/package.json +1 -1
  560. package/scene.js +777 -777
  561. package/scene.js.map +1 -1
  562. package/sceneComponent.d.ts +12 -12
  563. package/types.d.ts +11 -11
@@ -1 +1 @@
1
- {"version":3,"file":"fresnelParameters.js","sourceRoot":"","sources":["../../../../lts/core/generated/Materials/fresnelParameters.ts"],"names":[],"mappings":"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","sourcesContent":["import { DeepCopier } from \"../Misc/deepCopier\";\r\nimport type { DeepImmutable } from \"../types\";\r\nimport { Color3 } from \"../Maths/math.color\";\r\nimport { Engine } from \"../Engines/engine\";\r\nimport { SerializationHelper } from \"../Misc/decorators\";\r\nimport { Constants } from \"../Engines/constants\";\r\n\r\n/**\r\n * Options to be used when creating a FresnelParameters.\r\n */\r\nexport type IFresnelParametersCreationOptions = {\r\n /**\r\n * Define the color used on edges (grazing angle)\r\n */\r\n leftColor?: Color3;\r\n\r\n /**\r\n * Define the color used on center\r\n */\r\n rightColor?: Color3;\r\n\r\n /**\r\n * Define bias applied to computed fresnel term\r\n */\r\n bias?: number;\r\n\r\n /**\r\n * Defined the power exponent applied to fresnel term\r\n */\r\n power?: number;\r\n\r\n /**\r\n * Define if the fresnel effect is enable or not.\r\n */\r\n isEnabled?: boolean;\r\n};\r\n\r\n/**\r\n * Serialized format for FresnelParameters.\r\n */\r\nexport type IFresnelParametersSerialized = {\r\n /**\r\n * Define the color used on edges (grazing angle) [as an array]\r\n */\r\n leftColor: number[];\r\n\r\n /**\r\n * Define the color used on center [as an array]\r\n */\r\n rightColor: number[];\r\n\r\n /**\r\n * Define bias applied to computed fresnel term\r\n */\r\n bias: number;\r\n\r\n /**\r\n * Defined the power exponent applied to fresnel term\r\n */\r\n power?: number;\r\n\r\n /**\r\n * Define if the fresnel effect is enable or not.\r\n */\r\n isEnabled: boolean;\r\n};\r\n\r\n/**\r\n * This represents all the required information to add a fresnel effect on a material:\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/fresnelParameters\r\n */\r\nexport class FresnelParameters {\r\n private _isEnabled = true;\r\n /**\r\n * Define if the fresnel effect is enable or not.\r\n */\r\n public get isEnabled(): boolean {\r\n return this._isEnabled;\r\n }\r\n public set isEnabled(value: boolean) {\r\n if (this._isEnabled === value) {\r\n return;\r\n }\r\n\r\n this._isEnabled = value;\r\n Engine.MarkAllMaterialsAsDirty(Constants.MATERIAL_FresnelDirtyFlag | Constants.MATERIAL_MiscDirtyFlag);\r\n }\r\n\r\n /**\r\n * Define the color used on edges (grazing angle)\r\n */\r\n public leftColor: Color3;\r\n\r\n /**\r\n * Define the color used on center\r\n */\r\n public rightColor: Color3;\r\n\r\n /**\r\n * Define bias applied to computed fresnel term\r\n */\r\n public bias: number;\r\n\r\n /**\r\n * Defined the power exponent applied to fresnel term\r\n */\r\n public power: number;\r\n\r\n /**\r\n * Creates a new FresnelParameters object.\r\n *\r\n * @param options provide your own settings to optionally to override defaults\r\n */\r\n public constructor(options: IFresnelParametersCreationOptions = {}) {\r\n this.bias = options.bias === undefined ? 0 : options.bias;\r\n this.power = options.power === undefined ? 1 : options.power;\r\n this.leftColor = options.leftColor || Color3.White();\r\n this.rightColor = options.rightColor || Color3.Black();\r\n if (options.isEnabled === false) {\r\n this.isEnabled = false;\r\n }\r\n }\r\n\r\n /**\r\n * Clones the current fresnel and its values\r\n * @returns a clone fresnel configuration\r\n */\r\n public clone(): FresnelParameters {\r\n const newFresnelParameters = new FresnelParameters();\r\n\r\n DeepCopier.DeepCopy(this, newFresnelParameters);\r\n\r\n return newFresnelParameters;\r\n }\r\n\r\n /**\r\n * Determines equality between FresnelParameters objects\r\n * @param otherFresnelParameters defines the second operand\r\n * @returns true if the power, bias, leftColor, rightColor and isEnabled values are equal to the given ones\r\n */\r\n public equals(otherFresnelParameters: DeepImmutable<FresnelParameters>): boolean {\r\n return (\r\n otherFresnelParameters &&\r\n this.bias === otherFresnelParameters.bias &&\r\n this.power === otherFresnelParameters.power &&\r\n this.leftColor.equals(otherFresnelParameters.leftColor) &&\r\n this.rightColor.equals(otherFresnelParameters.rightColor) &&\r\n this.isEnabled === otherFresnelParameters.isEnabled\r\n );\r\n }\r\n\r\n /**\r\n * Serializes the current fresnel parameters to a JSON representation.\r\n * @returns the JSON serialization\r\n */\r\n public serialize(): IFresnelParametersSerialized {\r\n return {\r\n isEnabled: this.isEnabled,\r\n leftColor: this.leftColor.asArray(),\r\n rightColor: this.rightColor.asArray(),\r\n bias: this.bias,\r\n power: this.power,\r\n };\r\n }\r\n\r\n /**\r\n * Parse a JSON object and deserialize it to a new Fresnel parameter object.\r\n * @param parsedFresnelParameters Define the JSON representation\r\n * @returns the parsed parameters\r\n */\r\n public static Parse(parsedFresnelParameters: IFresnelParametersSerialized): FresnelParameters {\r\n return new FresnelParameters({\r\n isEnabled: parsedFresnelParameters.isEnabled,\r\n leftColor: Color3.FromArray(parsedFresnelParameters.leftColor),\r\n rightColor: Color3.FromArray(parsedFresnelParameters.rightColor),\r\n bias: parsedFresnelParameters.bias,\r\n power: parsedFresnelParameters.power || 1.0,\r\n });\r\n }\r\n}\r\n\r\n// References the dependencies.\r\nSerializationHelper._FresnelParametersParser = FresnelParameters.Parse;\r\n"]}
1
+ {"version":3,"file":"fresnelParameters.js","sourceRoot":"","sources":["../../../../lts/core/generated/Materials/fresnelParameters.ts"],"names":[],"mappings":"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","sourcesContent":["import { DeepCopier } from \"../Misc/deepCopier\";\r\nimport type { DeepImmutable } from \"../types\";\r\nimport { Color3 } from \"../Maths/math.color\";\r\nimport { Engine } from \"../Engines/engine\";\r\nimport { SerializationHelper } from \"../Misc/decorators\";\r\nimport { Constants } from \"../Engines/constants\";\r\n\r\n/**\r\n * Options to be used when creating a FresnelParameters.\r\n */\r\nexport type IFresnelParametersCreationOptions = {\r\n /**\r\n * Define the color used on edges (grazing angle)\r\n */\r\n leftColor?: Color3;\r\n\r\n /**\r\n * Define the color used on center\r\n */\r\n rightColor?: Color3;\r\n\r\n /**\r\n * Define bias applied to computed fresnel term\r\n */\r\n bias?: number;\r\n\r\n /**\r\n * Defined the power exponent applied to fresnel term\r\n */\r\n power?: number;\r\n\r\n /**\r\n * Define if the fresnel effect is enable or not.\r\n */\r\n isEnabled?: boolean;\r\n};\r\n\r\n/**\r\n * Serialized format for FresnelParameters.\r\n */\r\nexport type IFresnelParametersSerialized = {\r\n /**\r\n * Define the color used on edges (grazing angle) [as an array]\r\n */\r\n leftColor: number[];\r\n\r\n /**\r\n * Define the color used on center [as an array]\r\n */\r\n rightColor: number[];\r\n\r\n /**\r\n * Define bias applied to computed fresnel term\r\n */\r\n bias: number;\r\n\r\n /**\r\n * Defined the power exponent applied to fresnel term\r\n */\r\n power?: number;\r\n\r\n /**\r\n * Define if the fresnel effect is enable or not.\r\n */\r\n isEnabled: boolean;\r\n};\r\n\r\n/**\r\n * This represents all the required information to add a fresnel effect on a material:\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/fresnelParameters\r\n */\r\nexport class FresnelParameters {\r\n private _isEnabled = true;\r\n /**\r\n * Define if the fresnel effect is enable or not.\r\n */\r\n public get isEnabled(): boolean {\r\n return this._isEnabled;\r\n }\r\n public set isEnabled(value: boolean) {\r\n if (this._isEnabled === value) {\r\n return;\r\n }\r\n\r\n this._isEnabled = value;\r\n Engine.MarkAllMaterialsAsDirty(Constants.MATERIAL_FresnelDirtyFlag | Constants.MATERIAL_MiscDirtyFlag);\r\n }\r\n\r\n /**\r\n * Define the color used on edges (grazing angle)\r\n */\r\n public leftColor: Color3;\r\n\r\n /**\r\n * Define the color used on center\r\n */\r\n public rightColor: Color3;\r\n\r\n /**\r\n * Define bias applied to computed fresnel term\r\n */\r\n public bias: number;\r\n\r\n /**\r\n * Defined the power exponent applied to fresnel term\r\n */\r\n public power: number;\r\n\r\n /**\r\n * Creates a new FresnelParameters object.\r\n *\r\n * @param options provide your own settings to optionally to override defaults\r\n */\r\n public constructor(options: IFresnelParametersCreationOptions = {}) {\r\n this.bias = options.bias === undefined ? 0 : options.bias;\r\n this.power = options.power === undefined ? 1 : options.power;\r\n this.leftColor = options.leftColor || Color3.White();\r\n this.rightColor = options.rightColor || Color3.Black();\r\n if (options.isEnabled === false) {\r\n this.isEnabled = false;\r\n }\r\n }\r\n\r\n /**\r\n * Clones the current fresnel and its values\r\n * @returns a clone fresnel configuration\r\n */\r\n public clone(): FresnelParameters {\r\n const newFresnelParameters = new FresnelParameters();\r\n\r\n DeepCopier.DeepCopy(this, newFresnelParameters);\r\n\r\n return newFresnelParameters;\r\n }\r\n\r\n /**\r\n * Determines equality between FresnelParameters objects\r\n * @param otherFresnelParameters defines the second operand\r\n * @returns true if the power, bias, leftColor, rightColor and isEnabled values are equal to the given ones\r\n */\r\n public equals(otherFresnelParameters: DeepImmutable<FresnelParameters>): boolean {\r\n return (\r\n otherFresnelParameters &&\r\n this.bias === otherFresnelParameters.bias &&\r\n this.power === otherFresnelParameters.power &&\r\n this.leftColor.equals(otherFresnelParameters.leftColor) &&\r\n this.rightColor.equals(otherFresnelParameters.rightColor) &&\r\n this.isEnabled === otherFresnelParameters.isEnabled\r\n );\r\n }\r\n\r\n /**\r\n * Serializes the current fresnel parameters to a JSON representation.\r\n * @returns the JSON serialization\r\n */\r\n public serialize(): IFresnelParametersSerialized {\r\n return {\r\n isEnabled: this.isEnabled,\r\n leftColor: this.leftColor.asArray(),\r\n rightColor: this.rightColor.asArray(),\r\n bias: this.bias,\r\n power: this.power,\r\n };\r\n }\r\n\r\n /**\r\n * Parse a JSON object and deserialize it to a new Fresnel parameter object.\r\n * @param parsedFresnelParameters Define the JSON representation\r\n * @returns the parsed parameters\r\n */\r\n public static Parse(parsedFresnelParameters: IFresnelParametersSerialized): FresnelParameters {\r\n return new FresnelParameters({\r\n isEnabled: parsedFresnelParameters.isEnabled,\r\n leftColor: Color3.FromArray(parsedFresnelParameters.leftColor),\r\n rightColor: Color3.FromArray(parsedFresnelParameters.rightColor),\r\n bias: parsedFresnelParameters.bias,\r\n power: parsedFresnelParameters.power || 1.0,\r\n });\r\n }\r\n}\r\n\r\n// References the dependencies.\r\nSerializationHelper._FresnelParametersParser = FresnelParameters.Parse;\r\n"]}
@@ -26,6 +26,11 @@ export class MaterialDetailMapDefines extends MaterialDefines {
26
26
  * Cryengine: https://docs.cryengine.com/display/SDKDOC2/Detail+Maps
27
27
  */
28
28
  export class DetailMapConfiguration extends MaterialPluginBase {
29
+ /** @internal */
30
+ _markAllSubMeshesAsTexturesDirty() {
31
+ this._enable(this._isEnabled);
32
+ this._internalMarkAllSubMeshesAsTexturesDirty();
33
+ }
29
34
  constructor(material, addToPluginList = true) {
30
35
  super(material, "DetailMap", 140, new MaterialDetailMapDefines(), addToPluginList);
31
36
  this._texture = null;
@@ -52,11 +57,6 @@ export class DetailMapConfiguration extends MaterialPluginBase {
52
57
  this.isEnabled = false;
53
58
  this._internalMarkAllSubMeshesAsTexturesDirty = material._dirtyCallbacks[1];
54
59
  }
55
- /** @internal */
56
- _markAllSubMeshesAsTexturesDirty() {
57
- this._enable(this._isEnabled);
58
- this._internalMarkAllSubMeshesAsTexturesDirty();
59
- }
60
60
  isReadyForSubMesh(defines, scene, engine) {
61
61
  if (!this._isEnabled) {
62
62
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"material.detailMapConfiguration.js","sourceRoot":"","sources":["../../../../lts/core/generated/Materials/material.detailMapConfiguration.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport type { Nullable } from \"../types\";\r\nimport { Material } from \"./material\";\r\nimport { serialize, expandToProperty, serializeAsTexture } from \"../Misc/decorators\";\r\nimport { MaterialFlags } from \"./materialFlags\";\r\nimport { MaterialHelper } from \"./materialHelper\";\r\nimport type { BaseTexture } from \"./Textures/baseTexture\";\r\nimport type { UniformBuffer } from \"./uniformBuffer\";\r\nimport type { IAnimatable } from \"../Animations/animatable.interface\";\r\nimport { MaterialDefines } from \"./materialDefines\";\r\nimport { MaterialPluginBase } from \"./materialPluginBase\";\r\nimport { Constants } from \"../Engines/constants\";\r\n\r\ndeclare type Engine = import(\"../Engines/engine\").Engine;\r\ndeclare type Scene = import(\"../scene\").Scene;\r\ndeclare type StandardMaterial = import(\"./standardMaterial\").StandardMaterial;\r\ndeclare type PBRBaseMaterial = import(\"./PBR/pbrBaseMaterial\").PBRBaseMaterial;\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class MaterialDetailMapDefines extends MaterialDefines {\r\n DETAIL = false;\r\n DETAILDIRECTUV = 0;\r\n DETAIL_NORMALBLENDMETHOD = 0;\r\n}\r\n\r\n/**\r\n * Plugin that implements the detail map component of a material\r\n *\r\n * Inspired from:\r\n * Unity: https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@9.0/manual/Mask-Map-and-Detail-Map.html and https://docs.unity3d.com/Manual/StandardShaderMaterialParameterDetail.html\r\n * Unreal: https://docs.unrealengine.com/en-US/Engine/Rendering/Materials/HowTo/DetailTexturing/index.html\r\n * Cryengine: https://docs.cryengine.com/display/SDKDOC2/Detail+Maps\r\n */\r\nexport class DetailMapConfiguration extends MaterialPluginBase {\r\n private _texture: Nullable<BaseTexture> = null;\r\n /**\r\n * The detail texture of the material.\r\n */\r\n @serializeAsTexture(\"detailTexture\")\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public texture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Defines how strongly the detail diffuse/albedo channel is blended with the regular diffuse/albedo texture\r\n * Bigger values mean stronger blending\r\n */\r\n @serialize()\r\n public diffuseBlendLevel = 1;\r\n\r\n /**\r\n * Defines how strongly the detail roughness channel is blended with the regular roughness value\r\n * Bigger values mean stronger blending. Only used with PBR materials\r\n */\r\n @serialize()\r\n public roughnessBlendLevel = 1;\r\n\r\n /**\r\n * Defines how strong the bump effect from the detail map is\r\n * Bigger values mean stronger effect\r\n */\r\n @serialize()\r\n public bumpLevel = 1;\r\n\r\n private _normalBlendMethod = Material.MATERIAL_NORMALBLENDMETHOD_WHITEOUT;\r\n /**\r\n * The method used to blend the bump and detail normals together\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public normalBlendMethod: number;\r\n\r\n private _isEnabled = false;\r\n /**\r\n * Enable or disable the detail map on this material\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public isEnabled = false;\r\n\r\n /** @internal */\r\n private _internalMarkAllSubMeshesAsTexturesDirty: () => void;\r\n\r\n /** @internal */\r\n public _markAllSubMeshesAsTexturesDirty(): void {\r\n this._enable(this._isEnabled);\r\n this._internalMarkAllSubMeshesAsTexturesDirty();\r\n }\r\n\r\n constructor(material: PBRBaseMaterial | StandardMaterial, addToPluginList = true) {\r\n super(material, \"DetailMap\", 140, new MaterialDetailMapDefines(), addToPluginList);\r\n\r\n this._internalMarkAllSubMeshesAsTexturesDirty = material._dirtyCallbacks[Constants.MATERIAL_TextureDirtyFlag];\r\n }\r\n\r\n public isReadyForSubMesh(defines: MaterialDetailMapDefines, scene: Scene, engine: Engine): boolean {\r\n if (!this._isEnabled) {\r\n return true;\r\n }\r\n\r\n if (defines._areTexturesDirty && scene.texturesEnabled) {\r\n if (engine.getCaps().standardDerivatives && this._texture && MaterialFlags.DetailTextureEnabled) {\r\n // Detail texture cannot be not blocking.\r\n if (!this._texture.isReady()) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public prepareDefines(defines: MaterialDetailMapDefines, scene: Scene): void {\r\n if (this._isEnabled) {\r\n defines.DETAIL_NORMALBLENDMETHOD = this._normalBlendMethod;\r\n\r\n const engine = scene.getEngine();\r\n\r\n if (defines._areTexturesDirty) {\r\n if (engine.getCaps().standardDerivatives && this._texture && MaterialFlags.DetailTextureEnabled && this._isEnabled) {\r\n MaterialHelper.PrepareDefinesForMergedUV(this._texture, defines, \"DETAIL\");\r\n defines.DETAIL_NORMALBLENDMETHOD = this._normalBlendMethod;\r\n } else {\r\n defines.DETAIL = false;\r\n }\r\n }\r\n } else {\r\n defines.DETAIL = false;\r\n }\r\n }\r\n\r\n public bindForSubMesh(uniformBuffer: UniformBuffer, scene: Scene): void {\r\n if (!this._isEnabled) {\r\n return;\r\n }\r\n\r\n const isFrozen = this._material.isFrozen;\r\n\r\n if (!uniformBuffer.useUbo || !isFrozen || !uniformBuffer.isSync) {\r\n if (this._texture && MaterialFlags.DetailTextureEnabled) {\r\n uniformBuffer.updateFloat4(\"vDetailInfos\", this._texture.coordinatesIndex, this.diffuseBlendLevel, this.bumpLevel, this.roughnessBlendLevel);\r\n MaterialHelper.BindTextureMatrix(this._texture, uniformBuffer, \"detail\");\r\n }\r\n }\r\n\r\n // Textures\r\n if (scene.texturesEnabled) {\r\n if (this._texture && MaterialFlags.DetailTextureEnabled) {\r\n uniformBuffer.setTexture(\"detailSampler\", this._texture);\r\n }\r\n }\r\n }\r\n\r\n public hasTexture(texture: BaseTexture): boolean {\r\n if (this._texture === texture) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public getActiveTextures(activeTextures: BaseTexture[]): void {\r\n if (this._texture) {\r\n activeTextures.push(this._texture);\r\n }\r\n }\r\n\r\n public getAnimatables(animatables: IAnimatable[]): void {\r\n if (this._texture && this._texture.animations && this._texture.animations.length > 0) {\r\n animatables.push(this._texture);\r\n }\r\n }\r\n\r\n public dispose(forceDisposeTextures?: boolean): void {\r\n if (forceDisposeTextures) {\r\n this._texture?.dispose();\r\n }\r\n }\r\n\r\n public getClassName(): string {\r\n return \"DetailMapConfiguration\";\r\n }\r\n\r\n public getSamplers(samplers: string[]): void {\r\n samplers.push(\"detailSampler\");\r\n }\r\n\r\n public getUniforms(): { ubo?: Array<{ name: string; size: number; type: string }>; vertex?: string; fragment?: string } {\r\n return {\r\n ubo: [\r\n { name: \"vDetailInfos\", size: 4, type: \"vec4\" },\r\n { name: \"detailMatrix\", size: 16, type: \"mat4\" },\r\n ],\r\n };\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"material.detailMapConfiguration.js","sourceRoot":"","sources":["../../../../lts/core/generated/Materials/material.detailMapConfiguration.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport type { Nullable } from \"../types\";\r\nimport { Material } from \"./material\";\r\nimport { serialize, expandToProperty, serializeAsTexture } from \"../Misc/decorators\";\r\nimport { MaterialFlags } from \"./materialFlags\";\r\nimport { MaterialHelper } from \"./materialHelper\";\r\nimport type { BaseTexture } from \"./Textures/baseTexture\";\r\nimport type { UniformBuffer } from \"./uniformBuffer\";\r\nimport type { IAnimatable } from \"../Animations/animatable.interface\";\r\nimport { MaterialDefines } from \"./materialDefines\";\r\nimport { MaterialPluginBase } from \"./materialPluginBase\";\r\nimport { Constants } from \"../Engines/constants\";\r\n\r\ndeclare type Engine = import(\"../Engines/engine\").Engine;\r\ndeclare type Scene = import(\"../scene\").Scene;\r\ndeclare type StandardMaterial = import(\"./standardMaterial\").StandardMaterial;\r\ndeclare type PBRBaseMaterial = import(\"./PBR/pbrBaseMaterial\").PBRBaseMaterial;\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class MaterialDetailMapDefines extends MaterialDefines {\r\n DETAIL = false;\r\n DETAILDIRECTUV = 0;\r\n DETAIL_NORMALBLENDMETHOD = 0;\r\n}\r\n\r\n/**\r\n * Plugin that implements the detail map component of a material\r\n *\r\n * Inspired from:\r\n * Unity: https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@9.0/manual/Mask-Map-and-Detail-Map.html and https://docs.unity3d.com/Manual/StandardShaderMaterialParameterDetail.html\r\n * Unreal: https://docs.unrealengine.com/en-US/Engine/Rendering/Materials/HowTo/DetailTexturing/index.html\r\n * Cryengine: https://docs.cryengine.com/display/SDKDOC2/Detail+Maps\r\n */\r\nexport class DetailMapConfiguration extends MaterialPluginBase {\r\n private _texture: Nullable<BaseTexture> = null;\r\n /**\r\n * The detail texture of the material.\r\n */\r\n @serializeAsTexture(\"detailTexture\")\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public texture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Defines how strongly the detail diffuse/albedo channel is blended with the regular diffuse/albedo texture\r\n * Bigger values mean stronger blending\r\n */\r\n @serialize()\r\n public diffuseBlendLevel = 1;\r\n\r\n /**\r\n * Defines how strongly the detail roughness channel is blended with the regular roughness value\r\n * Bigger values mean stronger blending. Only used with PBR materials\r\n */\r\n @serialize()\r\n public roughnessBlendLevel = 1;\r\n\r\n /**\r\n * Defines how strong the bump effect from the detail map is\r\n * Bigger values mean stronger effect\r\n */\r\n @serialize()\r\n public bumpLevel = 1;\r\n\r\n private _normalBlendMethod = Material.MATERIAL_NORMALBLENDMETHOD_WHITEOUT;\r\n /**\r\n * The method used to blend the bump and detail normals together\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public normalBlendMethod: number;\r\n\r\n private _isEnabled = false;\r\n /**\r\n * Enable or disable the detail map on this material\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public isEnabled = false;\r\n\r\n /** @internal */\r\n private _internalMarkAllSubMeshesAsTexturesDirty: () => void;\r\n\r\n /** @internal */\r\n public _markAllSubMeshesAsTexturesDirty(): void {\r\n this._enable(this._isEnabled);\r\n this._internalMarkAllSubMeshesAsTexturesDirty();\r\n }\r\n\r\n constructor(material: PBRBaseMaterial | StandardMaterial, addToPluginList = true) {\r\n super(material, \"DetailMap\", 140, new MaterialDetailMapDefines(), addToPluginList);\r\n\r\n this._internalMarkAllSubMeshesAsTexturesDirty = material._dirtyCallbacks[Constants.MATERIAL_TextureDirtyFlag];\r\n }\r\n\r\n public isReadyForSubMesh(defines: MaterialDetailMapDefines, scene: Scene, engine: Engine): boolean {\r\n if (!this._isEnabled) {\r\n return true;\r\n }\r\n\r\n if (defines._areTexturesDirty && scene.texturesEnabled) {\r\n if (engine.getCaps().standardDerivatives && this._texture && MaterialFlags.DetailTextureEnabled) {\r\n // Detail texture cannot be not blocking.\r\n if (!this._texture.isReady()) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public prepareDefines(defines: MaterialDetailMapDefines, scene: Scene): void {\r\n if (this._isEnabled) {\r\n defines.DETAIL_NORMALBLENDMETHOD = this._normalBlendMethod;\r\n\r\n const engine = scene.getEngine();\r\n\r\n if (defines._areTexturesDirty) {\r\n if (engine.getCaps().standardDerivatives && this._texture && MaterialFlags.DetailTextureEnabled && this._isEnabled) {\r\n MaterialHelper.PrepareDefinesForMergedUV(this._texture, defines, \"DETAIL\");\r\n defines.DETAIL_NORMALBLENDMETHOD = this._normalBlendMethod;\r\n } else {\r\n defines.DETAIL = false;\r\n }\r\n }\r\n } else {\r\n defines.DETAIL = false;\r\n }\r\n }\r\n\r\n public bindForSubMesh(uniformBuffer: UniformBuffer, scene: Scene): void {\r\n if (!this._isEnabled) {\r\n return;\r\n }\r\n\r\n const isFrozen = this._material.isFrozen;\r\n\r\n if (!uniformBuffer.useUbo || !isFrozen || !uniformBuffer.isSync) {\r\n if (this._texture && MaterialFlags.DetailTextureEnabled) {\r\n uniformBuffer.updateFloat4(\"vDetailInfos\", this._texture.coordinatesIndex, this.diffuseBlendLevel, this.bumpLevel, this.roughnessBlendLevel);\r\n MaterialHelper.BindTextureMatrix(this._texture, uniformBuffer, \"detail\");\r\n }\r\n }\r\n\r\n // Textures\r\n if (scene.texturesEnabled) {\r\n if (this._texture && MaterialFlags.DetailTextureEnabled) {\r\n uniformBuffer.setTexture(\"detailSampler\", this._texture);\r\n }\r\n }\r\n }\r\n\r\n public hasTexture(texture: BaseTexture): boolean {\r\n if (this._texture === texture) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public getActiveTextures(activeTextures: BaseTexture[]): void {\r\n if (this._texture) {\r\n activeTextures.push(this._texture);\r\n }\r\n }\r\n\r\n public getAnimatables(animatables: IAnimatable[]): void {\r\n if (this._texture && this._texture.animations && this._texture.animations.length > 0) {\r\n animatables.push(this._texture);\r\n }\r\n }\r\n\r\n public dispose(forceDisposeTextures?: boolean): void {\r\n if (forceDisposeTextures) {\r\n this._texture?.dispose();\r\n }\r\n }\r\n\r\n public getClassName(): string {\r\n return \"DetailMapConfiguration\";\r\n }\r\n\r\n public getSamplers(samplers: string[]): void {\r\n samplers.push(\"detailSampler\");\r\n }\r\n\r\n public getUniforms(): { ubo?: Array<{ name: string; size: number; type: string }>; vertex?: string; fragment?: string } {\r\n return {\r\n ubo: [\r\n { name: \"vDetailInfos\", size: 4, type: \"vec4\" },\r\n { name: \"detailMatrix\", size: 16, type: \"mat4\" },\r\n ],\r\n };\r\n }\r\n}\r\n"]}
@@ -16,229 +16,6 @@ import { MaterialPluginEvent } from "./materialPluginEvent.js";
16
16
  * Base class for the main features of a material in Babylon.js
17
17
  */
18
18
  export class Material {
19
- /**
20
- * Creates a material instance
21
- * @param name defines the name of the material
22
- * @param scene defines the scene to reference
23
- * @param doNotAdd specifies if the material should be added to the scene
24
- */
25
- constructor(name, scene, doNotAdd) {
26
- /**
27
- * Custom shadow depth material to use for shadow rendering instead of the in-built one
28
- */
29
- this.shadowDepthWrapper = null;
30
- /**
31
- * Gets or sets a boolean indicating that the material is allowed (if supported) to do shader hot swapping.
32
- * This means that the material can keep using a previous shader while a new one is being compiled.
33
- * This is mostly used when shader parallel compilation is supported (true by default)
34
- */
35
- this.allowShaderHotSwapping = true;
36
- /**
37
- * Gets or sets user defined metadata
38
- */
39
- this.metadata = null;
40
- /**
41
- * For internal use only. Please do not use.
42
- */
43
- this.reservedDataStore = null;
44
- /**
45
- * Specifies if the ready state should be checked on each call
46
- */
47
- this.checkReadyOnEveryCall = false;
48
- /**
49
- * Specifies if the ready state should be checked once
50
- */
51
- this.checkReadyOnlyOnce = false;
52
- /**
53
- * The state of the material
54
- */
55
- this.state = "";
56
- /**
57
- * The alpha value of the material
58
- */
59
- this._alpha = 1.0;
60
- /**
61
- * Specifies if back face culling is enabled
62
- */
63
- this._backFaceCulling = true;
64
- /**
65
- * Specifies if back or front faces should be culled (when culling is enabled)
66
- */
67
- this._cullBackFaces = true;
68
- this._blockDirtyMechanism = false;
69
- /**
70
- * Callback triggered when the material is compiled
71
- */
72
- this.onCompiled = null;
73
- /**
74
- * Callback triggered when an error occurs
75
- */
76
- this.onError = null;
77
- /**
78
- * Callback triggered to get the render target textures
79
- */
80
- this.getRenderTargetTextures = null;
81
- /**
82
- * Specifies if the material should be serialized
83
- */
84
- this.doNotSerialize = false;
85
- /**
86
- * @internal
87
- */
88
- this._storeEffectOnSubMeshes = false;
89
- /**
90
- * Stores the animations for the material
91
- */
92
- this.animations = null;
93
- /**
94
- * An event triggered when the material is disposed
95
- */
96
- this.onDisposeObservable = new Observable();
97
- /**
98
- * An observer which watches for dispose events
99
- */
100
- this._onDisposeObserver = null;
101
- this._onUnBindObservable = null;
102
- /**
103
- * An observer which watches for bind events
104
- */
105
- this._onBindObserver = null;
106
- /**
107
- * Stores the value of the alpha mode
108
- */
109
- this._alphaMode = 2;
110
- /**
111
- * Stores the state of the need depth pre-pass value
112
- */
113
- this._needDepthPrePass = false;
114
- /**
115
- * Specifies if depth writing should be disabled
116
- */
117
- this.disableDepthWrite = false;
118
- /**
119
- * Specifies if color writing should be disabled
120
- */
121
- this.disableColorWrite = false;
122
- /**
123
- * Specifies if depth writing should be forced
124
- */
125
- this.forceDepthWrite = false;
126
- /**
127
- * Specifies the depth function that should be used. 0 means the default engine function
128
- */
129
- this.depthFunction = 0;
130
- /**
131
- * Specifies if there should be a separate pass for culling
132
- */
133
- this.separateCullingPass = false;
134
- /**
135
- * Stores the state specifying if fog should be enabled
136
- */
137
- this._fogEnabled = true;
138
- /**
139
- * Stores the size of points
140
- */
141
- this.pointSize = 1.0;
142
- /**
143
- * Stores the z offset Factor value
144
- */
145
- this.zOffset = 0;
146
- /**
147
- * Stores the z offset Units value
148
- */
149
- this.zOffsetUnits = 0;
150
- /**
151
- * Gives access to the stencil properties of the material
152
- */
153
- this.stencil = new MaterialStencilState();
154
- /**
155
- * Specifies if uniform buffers should be used
156
- */
157
- this._useUBO = false;
158
- /**
159
- * Stores the fill mode state
160
- */
161
- this._fillMode = Material.TriangleFillMode;
162
- /**
163
- * Specifies if the depth write state should be cached
164
- */
165
- this._cachedDepthWriteState = false;
166
- /**
167
- * Specifies if the color write state should be cached
168
- */
169
- this._cachedColorWriteState = false;
170
- /**
171
- * Specifies if the depth function state should be cached
172
- */
173
- this._cachedDepthFunctionState = 0;
174
- /** @internal */
175
- this._indexInSceneMaterialArray = -1;
176
- /** @internal */
177
- this.meshMap = null;
178
- /** @internal */
179
- this._parentContainer = null;
180
- /** @internal */
181
- this._uniformBufferLayoutBuilt = false;
182
- this._eventInfo = {}; // will be initialized before each event notification
183
- /** @internal */
184
- this._callbackPluginEventGeneric = () => void 0;
185
- /** @internal */
186
- this._callbackPluginEventIsReadyForSubMesh = () => void 0;
187
- /** @internal */
188
- this._callbackPluginEventPrepareDefines = () => void 0;
189
- /** @internal */
190
- this._callbackPluginEventPrepareDefinesBeforeAttributes = () => void 0;
191
- /** @internal */
192
- this._callbackPluginEventHardBindForSubMesh = () => void 0;
193
- /** @internal */
194
- this._callbackPluginEventBindForSubMesh = () => void 0;
195
- /** @internal */
196
- this._callbackPluginEventHasRenderTargetTextures = () => void 0;
197
- /** @internal */
198
- this._callbackPluginEventFillRenderTargetTextures = () => void 0;
199
- /**
200
- * Enforces alpha test in opaque or blend mode in order to improve the performances of some situations.
201
- */
202
- this._forceAlphaTest = false;
203
- /**
204
- * The transparency mode of the material.
205
- */
206
- this._transparencyMode = null;
207
- this.name = name;
208
- const setScene = scene || EngineStore.LastCreatedScene;
209
- if (!setScene) {
210
- return;
211
- }
212
- this._scene = setScene;
213
- this._dirtyCallbacks = {};
214
- this._dirtyCallbacks[1] = this._markAllSubMeshesAsTexturesDirty.bind(this);
215
- this._dirtyCallbacks[2] = this._markAllSubMeshesAsLightsDirty.bind(this);
216
- this._dirtyCallbacks[4] = this._markAllSubMeshesAsFresnelDirty.bind(this);
217
- this._dirtyCallbacks[8] = this._markAllSubMeshesAsAttributesDirty.bind(this);
218
- this._dirtyCallbacks[16] = this._markAllSubMeshesAsMiscDirty.bind(this);
219
- this._dirtyCallbacks[32] = this._markAllSubMeshesAsPrePassDirty.bind(this);
220
- this._dirtyCallbacks[63] = this._markAllSubMeshesAsAllDirty.bind(this);
221
- this.id = name || Tools.RandomId();
222
- this.uniqueId = this._scene.getUniqueId();
223
- this._materialContext = this._scene.getEngine().createMaterialContext();
224
- this._drawWrapper = new DrawWrapper(this._scene.getEngine(), false);
225
- this._drawWrapper.materialContext = this._materialContext;
226
- if (this._scene.useRightHandedSystem) {
227
- this.sideOrientation = Material.ClockWiseSideOrientation;
228
- }
229
- else {
230
- this.sideOrientation = Material.CounterClockWiseSideOrientation;
231
- }
232
- this._uniformBuffer = new UniformBuffer(this._scene.getEngine(), undefined, undefined, name);
233
- this._useUBO = this.getScene().getEngine().supportsUniformBuffers;
234
- if (!doNotAdd) {
235
- this._scene.addMaterial(this);
236
- }
237
- if (this._scene.useMaterialMeshMap) {
238
- this.meshMap = {};
239
- }
240
- Material.OnEventObservable.notifyObservers(this, MaterialPluginEvent.Created);
241
- }
242
19
  /**
243
20
  * If the material can be rendered to several textures with MRT extension
244
21
  */
@@ -513,6 +290,229 @@ export class Material {
513
290
  _setDrawWrapper(drawWrapper) {
514
291
  this._drawWrapper = drawWrapper;
515
292
  }
293
+ /**
294
+ * Creates a material instance
295
+ * @param name defines the name of the material
296
+ * @param scene defines the scene to reference
297
+ * @param doNotAdd specifies if the material should be added to the scene
298
+ */
299
+ constructor(name, scene, doNotAdd) {
300
+ /**
301
+ * Custom shadow depth material to use for shadow rendering instead of the in-built one
302
+ */
303
+ this.shadowDepthWrapper = null;
304
+ /**
305
+ * Gets or sets a boolean indicating that the material is allowed (if supported) to do shader hot swapping.
306
+ * This means that the material can keep using a previous shader while a new one is being compiled.
307
+ * This is mostly used when shader parallel compilation is supported (true by default)
308
+ */
309
+ this.allowShaderHotSwapping = true;
310
+ /**
311
+ * Gets or sets user defined metadata
312
+ */
313
+ this.metadata = null;
314
+ /**
315
+ * For internal use only. Please do not use.
316
+ */
317
+ this.reservedDataStore = null;
318
+ /**
319
+ * Specifies if the ready state should be checked on each call
320
+ */
321
+ this.checkReadyOnEveryCall = false;
322
+ /**
323
+ * Specifies if the ready state should be checked once
324
+ */
325
+ this.checkReadyOnlyOnce = false;
326
+ /**
327
+ * The state of the material
328
+ */
329
+ this.state = "";
330
+ /**
331
+ * The alpha value of the material
332
+ */
333
+ this._alpha = 1.0;
334
+ /**
335
+ * Specifies if back face culling is enabled
336
+ */
337
+ this._backFaceCulling = true;
338
+ /**
339
+ * Specifies if back or front faces should be culled (when culling is enabled)
340
+ */
341
+ this._cullBackFaces = true;
342
+ this._blockDirtyMechanism = false;
343
+ /**
344
+ * Callback triggered when the material is compiled
345
+ */
346
+ this.onCompiled = null;
347
+ /**
348
+ * Callback triggered when an error occurs
349
+ */
350
+ this.onError = null;
351
+ /**
352
+ * Callback triggered to get the render target textures
353
+ */
354
+ this.getRenderTargetTextures = null;
355
+ /**
356
+ * Specifies if the material should be serialized
357
+ */
358
+ this.doNotSerialize = false;
359
+ /**
360
+ * @internal
361
+ */
362
+ this._storeEffectOnSubMeshes = false;
363
+ /**
364
+ * Stores the animations for the material
365
+ */
366
+ this.animations = null;
367
+ /**
368
+ * An event triggered when the material is disposed
369
+ */
370
+ this.onDisposeObservable = new Observable();
371
+ /**
372
+ * An observer which watches for dispose events
373
+ */
374
+ this._onDisposeObserver = null;
375
+ this._onUnBindObservable = null;
376
+ /**
377
+ * An observer which watches for bind events
378
+ */
379
+ this._onBindObserver = null;
380
+ /**
381
+ * Stores the value of the alpha mode
382
+ */
383
+ this._alphaMode = 2;
384
+ /**
385
+ * Stores the state of the need depth pre-pass value
386
+ */
387
+ this._needDepthPrePass = false;
388
+ /**
389
+ * Specifies if depth writing should be disabled
390
+ */
391
+ this.disableDepthWrite = false;
392
+ /**
393
+ * Specifies if color writing should be disabled
394
+ */
395
+ this.disableColorWrite = false;
396
+ /**
397
+ * Specifies if depth writing should be forced
398
+ */
399
+ this.forceDepthWrite = false;
400
+ /**
401
+ * Specifies the depth function that should be used. 0 means the default engine function
402
+ */
403
+ this.depthFunction = 0;
404
+ /**
405
+ * Specifies if there should be a separate pass for culling
406
+ */
407
+ this.separateCullingPass = false;
408
+ /**
409
+ * Stores the state specifying if fog should be enabled
410
+ */
411
+ this._fogEnabled = true;
412
+ /**
413
+ * Stores the size of points
414
+ */
415
+ this.pointSize = 1.0;
416
+ /**
417
+ * Stores the z offset Factor value
418
+ */
419
+ this.zOffset = 0;
420
+ /**
421
+ * Stores the z offset Units value
422
+ */
423
+ this.zOffsetUnits = 0;
424
+ /**
425
+ * Gives access to the stencil properties of the material
426
+ */
427
+ this.stencil = new MaterialStencilState();
428
+ /**
429
+ * Specifies if uniform buffers should be used
430
+ */
431
+ this._useUBO = false;
432
+ /**
433
+ * Stores the fill mode state
434
+ */
435
+ this._fillMode = Material.TriangleFillMode;
436
+ /**
437
+ * Specifies if the depth write state should be cached
438
+ */
439
+ this._cachedDepthWriteState = false;
440
+ /**
441
+ * Specifies if the color write state should be cached
442
+ */
443
+ this._cachedColorWriteState = false;
444
+ /**
445
+ * Specifies if the depth function state should be cached
446
+ */
447
+ this._cachedDepthFunctionState = 0;
448
+ /** @internal */
449
+ this._indexInSceneMaterialArray = -1;
450
+ /** @internal */
451
+ this.meshMap = null;
452
+ /** @internal */
453
+ this._parentContainer = null;
454
+ /** @internal */
455
+ this._uniformBufferLayoutBuilt = false;
456
+ this._eventInfo = {}; // will be initialized before each event notification
457
+ /** @internal */
458
+ this._callbackPluginEventGeneric = () => void 0;
459
+ /** @internal */
460
+ this._callbackPluginEventIsReadyForSubMesh = () => void 0;
461
+ /** @internal */
462
+ this._callbackPluginEventPrepareDefines = () => void 0;
463
+ /** @internal */
464
+ this._callbackPluginEventPrepareDefinesBeforeAttributes = () => void 0;
465
+ /** @internal */
466
+ this._callbackPluginEventHardBindForSubMesh = () => void 0;
467
+ /** @internal */
468
+ this._callbackPluginEventBindForSubMesh = () => void 0;
469
+ /** @internal */
470
+ this._callbackPluginEventHasRenderTargetTextures = () => void 0;
471
+ /** @internal */
472
+ this._callbackPluginEventFillRenderTargetTextures = () => void 0;
473
+ /**
474
+ * Enforces alpha test in opaque or blend mode in order to improve the performances of some situations.
475
+ */
476
+ this._forceAlphaTest = false;
477
+ /**
478
+ * The transparency mode of the material.
479
+ */
480
+ this._transparencyMode = null;
481
+ this.name = name;
482
+ const setScene = scene || EngineStore.LastCreatedScene;
483
+ if (!setScene) {
484
+ return;
485
+ }
486
+ this._scene = setScene;
487
+ this._dirtyCallbacks = {};
488
+ this._dirtyCallbacks[1] = this._markAllSubMeshesAsTexturesDirty.bind(this);
489
+ this._dirtyCallbacks[2] = this._markAllSubMeshesAsLightsDirty.bind(this);
490
+ this._dirtyCallbacks[4] = this._markAllSubMeshesAsFresnelDirty.bind(this);
491
+ this._dirtyCallbacks[8] = this._markAllSubMeshesAsAttributesDirty.bind(this);
492
+ this._dirtyCallbacks[16] = this._markAllSubMeshesAsMiscDirty.bind(this);
493
+ this._dirtyCallbacks[32] = this._markAllSubMeshesAsPrePassDirty.bind(this);
494
+ this._dirtyCallbacks[63] = this._markAllSubMeshesAsAllDirty.bind(this);
495
+ this.id = name || Tools.RandomId();
496
+ this.uniqueId = this._scene.getUniqueId();
497
+ this._materialContext = this._scene.getEngine().createMaterialContext();
498
+ this._drawWrapper = new DrawWrapper(this._scene.getEngine(), false);
499
+ this._drawWrapper.materialContext = this._materialContext;
500
+ if (this._scene.useRightHandedSystem) {
501
+ this.sideOrientation = Material.ClockWiseSideOrientation;
502
+ }
503
+ else {
504
+ this.sideOrientation = Material.CounterClockWiseSideOrientation;
505
+ }
506
+ this._uniformBuffer = new UniformBuffer(this._scene.getEngine(), undefined, undefined, name);
507
+ this._useUBO = this.getScene().getEngine().supportsUniformBuffers;
508
+ if (!doNotAdd) {
509
+ this._scene.addMaterial(this);
510
+ }
511
+ if (this._scene.useMaterialMeshMap) {
512
+ this.meshMap = {};
513
+ }
514
+ Material.OnEventObservable.notifyObservers(this, MaterialPluginEvent.Created);
515
+ }
516
516
  /**
517
517
  * Returns a string representation of the current material
518
518
  * @param fullDetails defines a boolean indicating which levels of logging is desired