@onerjs/core 8.53.5 → 8.53.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (841) hide show
  1. package/Animations/animationGroup.d.ts +0 -1
  2. package/Animations/animationGroup.js +0 -1
  3. package/Animations/animationGroup.js.map +1 -1
  4. package/Animations/animationGroup.pure.js +2 -0
  5. package/Animations/animationGroup.pure.js.map +1 -1
  6. package/Animations/runtimeAnimation.js +11 -0
  7. package/Animations/runtimeAnimation.js.map +1 -1
  8. package/Audio/audioSceneComponent.pure.js +1 -1
  9. package/AudioV2/abstractAudio/abstractSound.d.ts +2 -1
  10. package/AudioV2/abstractAudio/abstractSound.js +7 -2
  11. package/AudioV2/abstractAudio/abstractSound.js.map +1 -1
  12. package/AudioV2/abstractAudio/abstractSoundInstance.d.ts +3 -1
  13. package/AudioV2/abstractAudio/abstractSoundInstance.js.map +1 -1
  14. package/AudioV2/abstractAudio/staticSound.d.ts +6 -0
  15. package/AudioV2/abstractAudio/staticSound.js +17 -1
  16. package/AudioV2/abstractAudio/staticSound.js.map +1 -1
  17. package/AudioV2/abstractAudio/staticSoundInstance.d.ts +4 -2
  18. package/AudioV2/abstractAudio/staticSoundInstance.js.map +1 -1
  19. package/AudioV2/abstractAudio/streamingSound.d.ts +6 -0
  20. package/AudioV2/abstractAudio/streamingSound.js +9 -1
  21. package/AudioV2/abstractAudio/streamingSound.js.map +1 -1
  22. package/AudioV2/webAudio/webAudioStaticSound.d.ts +7 -1
  23. package/AudioV2/webAudio/webAudioStaticSound.js +56 -8
  24. package/AudioV2/webAudio/webAudioStaticSound.js.map +1 -1
  25. package/AudioV2/webAudio/webAudioStreamingSound.d.ts +3 -1
  26. package/AudioV2/webAudio/webAudioStreamingSound.js +16 -4
  27. package/AudioV2/webAudio/webAudioStreamingSound.js.map +1 -1
  28. package/BakedVertexAnimation/bakedVertexAnimationManager.d.ts +2 -2
  29. package/BakedVertexAnimation/bakedVertexAnimationManager.js +151 -121
  30. package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -1
  31. package/Behaviors/Cameras/interpolatingBehavior.d.ts +17 -2
  32. package/Behaviors/Cameras/interpolatingBehavior.js +53 -23
  33. package/Behaviors/Cameras/interpolatingBehavior.js.map +1 -1
  34. package/Bones/bone.pure.js +3 -3
  35. package/Buffers/buffer.pure.js +0 -12
  36. package/Buffers/buffer.pure.js.map +1 -1
  37. package/Cameras/Inputs/BaseCameraMouseWheelInput.js +141 -126
  38. package/Cameras/Inputs/BaseCameraMouseWheelInput.js.map +1 -1
  39. package/Cameras/Inputs/BaseCameraPointersInput.d.ts +2 -1
  40. package/Cameras/Inputs/BaseCameraPointersInput.js +290 -277
  41. package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
  42. package/Cameras/Inputs/arcRotateCameraGamepadInput.js +115 -102
  43. package/Cameras/Inputs/arcRotateCameraGamepadInput.js.map +1 -1
  44. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.d.ts +3 -0
  45. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js +334 -273
  46. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js.map +1 -1
  47. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js +273 -258
  48. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js.map +1 -1
  49. package/Cameras/Inputs/arcRotateCameraPointersInput.js +237 -213
  50. package/Cameras/Inputs/arcRotateCameraPointersInput.js.map +1 -1
  51. package/Cameras/Inputs/flyCameraKeyboardInput.js +199 -168
  52. package/Cameras/Inputs/flyCameraKeyboardInput.js.map +1 -1
  53. package/Cameras/Inputs/flyCameraMouseInput.js +243 -229
  54. package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
  55. package/Cameras/Inputs/followCameraKeyboardMoveInput.js +311 -266
  56. package/Cameras/Inputs/followCameraKeyboardMoveInput.js.map +1 -1
  57. package/Cameras/Inputs/followCameraMouseWheelInput.js +139 -119
  58. package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
  59. package/Cameras/Inputs/followCameraPointersInput.js +239 -203
  60. package/Cameras/Inputs/followCameraPointersInput.js.map +1 -1
  61. package/Cameras/Inputs/freeCameraGamepadInput.js +127 -114
  62. package/Cameras/Inputs/freeCameraGamepadInput.js.map +1 -1
  63. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js +278 -244
  64. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js.map +1 -1
  65. package/Cameras/Inputs/freeCameraMouseInput.js +216 -202
  66. package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
  67. package/Cameras/Inputs/freeCameraMouseWheelInput.js +368 -353
  68. package/Cameras/Inputs/freeCameraMouseWheelInput.js.map +1 -1
  69. package/Cameras/Inputs/freeCameraTouchInput.js +185 -172
  70. package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
  71. package/Cameras/Inputs/geospatialCameraKeyboardInput.d.ts +2 -0
  72. package/Cameras/Inputs/geospatialCameraKeyboardInput.js +291 -246
  73. package/Cameras/Inputs/geospatialCameraKeyboardInput.js.map +1 -1
  74. package/Cameras/Inputs/geospatialCameraPointersInput.d.ts +11 -1
  75. package/Cameras/Inputs/geospatialCameraPointersInput.js +18 -2
  76. package/Cameras/Inputs/geospatialCameraPointersInput.js.map +1 -1
  77. package/Cameras/Inputs/orbitCameraPointersInput.js +112 -96
  78. package/Cameras/Inputs/orbitCameraPointersInput.js.map +1 -1
  79. package/Cameras/VR/vrExperienceHelper.d.ts +0 -2
  80. package/Cameras/VR/vrExperienceHelper.js +0 -2
  81. package/Cameras/VR/vrExperienceHelper.js.map +1 -1
  82. package/Cameras/VR/vrExperienceHelper.pure.js +5 -0
  83. package/Cameras/VR/vrExperienceHelper.pure.js.map +1 -1
  84. package/Cameras/arcRotateCamera.pure.js +1559 -1479
  85. package/Cameras/arcRotateCamera.pure.js.map +1 -1
  86. package/Cameras/camera.pure.js +1225 -1178
  87. package/Cameras/camera.pure.js.map +1 -1
  88. package/Cameras/flyCamera.pure.js +369 -351
  89. package/Cameras/flyCamera.pure.js.map +1 -1
  90. package/Cameras/followCamera.pure.js +229 -192
  91. package/Cameras/followCamera.pure.js.map +1 -1
  92. package/Cameras/freeCamera.pure.js +373 -351
  93. package/Cameras/freeCamera.pure.js.map +1 -1
  94. package/Cameras/geospatialCamera.pure.d.ts +30 -7
  95. package/Cameras/geospatialCamera.pure.js +502 -457
  96. package/Cameras/geospatialCamera.pure.js.map +1 -1
  97. package/Cameras/geospatialCameraMovement.js +2 -2
  98. package/Cameras/geospatialCameraMovement.js.map +1 -1
  99. package/Cameras/targetCamera.pure.d.ts +7 -0
  100. package/Cameras/targetCamera.pure.js +550 -509
  101. package/Cameras/targetCamera.pure.js.map +1 -1
  102. package/Cameras/universalCamera.pure.js +98 -85
  103. package/Cameras/universalCamera.pure.js.map +1 -1
  104. package/Collisions/gpuPicker.d.ts +111 -4
  105. package/Collisions/gpuPicker.js +696 -119
  106. package/Collisions/gpuPicker.js.map +1 -1
  107. package/Compute/computeShader.pure.js +372 -355
  108. package/Compute/computeShader.pure.js.map +1 -1
  109. package/Culling/Helper/transformFeedbackBoundingHelper.pure.js +2 -2
  110. package/Decorators/nodeDecorator.d.ts +11 -1
  111. package/Decorators/nodeDecorator.js +43 -6
  112. package/Decorators/nodeDecorator.js.map +1 -1
  113. package/Engines/AbstractEngine/abstractEngine.loadFile.pure.js +8 -0
  114. package/Engines/AbstractEngine/abstractEngine.loadFile.pure.js.map +1 -1
  115. package/Engines/Native/nativeHelpers.js +15 -0
  116. package/Engines/Native/nativeHelpers.js.map +1 -1
  117. package/Engines/Native/nativeInterfaces.d.ts +7 -2
  118. package/Engines/Native/nativeInterfaces.js.map +1 -1
  119. package/Engines/Native/nativeRenderTargetWrapper.d.ts +5 -0
  120. package/Engines/Native/nativeRenderTargetWrapper.js +35 -1
  121. package/Engines/Native/nativeRenderTargetWrapper.js.map +1 -1
  122. package/Engines/Processors/shaderProcessor.js +5 -3
  123. package/Engines/Processors/shaderProcessor.js.map +1 -1
  124. package/Engines/WebGPU/Extensions/engine.videoTexture.pure.js +16 -3
  125. package/Engines/WebGPU/Extensions/engine.videoTexture.pure.js.map +1 -1
  126. package/Engines/WebGPU/webgpuClearQuad.pure.js +7 -1
  127. package/Engines/WebGPU/webgpuClearQuad.pure.js.map +1 -1
  128. package/Engines/abstractEngine.functions.d.ts +8 -2
  129. package/Engines/abstractEngine.functions.js +12 -4
  130. package/Engines/abstractEngine.functions.js.map +1 -1
  131. package/Engines/abstractEngine.pure.d.ts +20 -1
  132. package/Engines/abstractEngine.pure.js +21 -134
  133. package/Engines/abstractEngine.pure.js.map +1 -1
  134. package/Engines/engine.d.ts +208 -0
  135. package/Engines/engine.pure.js +0 -15
  136. package/Engines/engine.pure.js.map +1 -1
  137. package/Engines/nullEngine.pure.d.ts +66 -0
  138. package/Engines/nullEngine.pure.js +97 -0
  139. package/Engines/nullEngine.pure.js.map +1 -1
  140. package/Engines/thinEngine.pure.d.ts +0 -13
  141. package/Engines/thinEngine.pure.js +4 -23
  142. package/Engines/thinEngine.pure.js.map +1 -1
  143. package/Engines/thinNativeEngine.d.ts +0 -1
  144. package/Engines/thinNativeEngine.js +0 -1
  145. package/Engines/thinNativeEngine.js.map +1 -1
  146. package/Engines/thinNativeEngine.pure.d.ts +27 -0
  147. package/Engines/thinNativeEngine.pure.js +383 -17
  148. package/Engines/thinNativeEngine.pure.js.map +1 -1
  149. package/Engines/webgpuEngine.d.ts +1 -0
  150. package/Engines/webgpuEngine.js +1 -0
  151. package/Engines/webgpuEngine.js.map +1 -1
  152. package/Engines/webgpuEngine.pure.d.ts +9 -0
  153. package/Engines/webgpuEngine.pure.js +7 -0
  154. package/Engines/webgpuEngine.pure.js.map +1 -1
  155. package/FlowGraph/flowGraph.js +9 -0
  156. package/FlowGraph/flowGraph.js.map +1 -1
  157. package/FlowGraph/flowGraphContext.js +597 -584
  158. package/FlowGraph/flowGraphContext.js.map +1 -1
  159. package/FlowGraph/flowGraphDataConnection.pure.d.ts +14 -0
  160. package/FlowGraph/flowGraphDataConnection.pure.js +38 -1
  161. package/FlowGraph/flowGraphDataConnection.pure.js.map +1 -1
  162. package/FlowGraph/serialization.d.ts +11 -0
  163. package/FlowGraph/serialization.js +11 -1
  164. package/FlowGraph/serialization.js.map +1 -1
  165. package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.pure.js +182 -170
  166. package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.pure.js.map +1 -1
  167. package/FrameGraph/Node/Blocks/Layers/highlightLayerBlock.pure.js +196 -184
  168. package/FrameGraph/Node/Blocks/Layers/highlightLayerBlock.pure.js.map +1 -1
  169. package/FrameGraph/Node/Blocks/Layers/selectionOutlineLayerBlock.pure.js +222 -210
  170. package/FrameGraph/Node/Blocks/Layers/selectionOutlineLayerBlock.pure.js.map +1 -1
  171. package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js +123 -111
  172. package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js.map +1 -1
  173. package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js +158 -146
  174. package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js.map +1 -1
  175. package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.pure.js +63 -51
  176. package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.pure.js.map +1 -1
  177. package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.pure.js +122 -110
  178. package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.pure.js.map +1 -1
  179. package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.pure.js +76 -64
  180. package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.pure.js.map +1 -1
  181. package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.pure.js +89 -77
  182. package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.pure.js.map +1 -1
  183. package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.pure.js +134 -122
  184. package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.pure.js.map +1 -1
  185. package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.pure.js +58 -46
  186. package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.pure.js.map +1 -1
  187. package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.pure.js +107 -95
  188. package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.pure.js.map +1 -1
  189. package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.pure.js +181 -169
  190. package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.pure.js.map +1 -1
  191. package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.pure.js +63 -51
  192. package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.pure.js.map +1 -1
  193. package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.pure.js +63 -51
  194. package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.pure.js.map +1 -1
  195. package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.pure.js +76 -64
  196. package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.pure.js.map +1 -1
  197. package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.pure.js +246 -234
  198. package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.pure.js.map +1 -1
  199. package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.pure.js +108 -96
  200. package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.pure.js.map +1 -1
  201. package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.pure.js +87 -75
  202. package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.pure.js.map +1 -1
  203. package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.pure.js +76 -64
  204. package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.pure.js.map +1 -1
  205. package/FrameGraph/Node/Blocks/PostProcesses/ssao2PostProcessBlock.pure.js +313 -301
  206. package/FrameGraph/Node/Blocks/PostProcesses/ssao2PostProcessBlock.pure.js.map +1 -1
  207. package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.pure.js +502 -490
  208. package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.pure.js.map +1 -1
  209. package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.pure.js +147 -135
  210. package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.pure.js.map +1 -1
  211. package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.pure.js +90 -78
  212. package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.pure.js.map +1 -1
  213. package/FrameGraph/Node/Blocks/PostProcesses/volumetricLightingBlock.pure.js +179 -167
  214. package/FrameGraph/Node/Blocks/PostProcesses/volumetricLightingBlock.pure.js.map +1 -1
  215. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +462 -451
  216. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
  217. package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js +265 -253
  218. package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js.map +1 -1
  219. package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.pure.js +204 -192
  220. package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.pure.js.map +1 -1
  221. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js +611 -550
  222. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js.map +1 -1
  223. package/FrameGraph/Node/Blocks/Rendering/iblShadowsRendererBlock.pure.js +320 -308
  224. package/FrameGraph/Node/Blocks/Rendering/iblShadowsRendererBlock.pure.js.map +1 -1
  225. package/FrameGraph/Node/Blocks/Rendering/utilityLayerRendererBlock.pure.js +87 -75
  226. package/FrameGraph/Node/Blocks/Rendering/utilityLayerRendererBlock.pure.js.map +1 -1
  227. package/FrameGraph/Node/Blocks/Textures/clearBlock.pure.js +154 -142
  228. package/FrameGraph/Node/Blocks/Textures/clearBlock.pure.js.map +1 -1
  229. package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.pure.js +150 -138
  230. package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.pure.js.map +1 -1
  231. package/FrameGraph/Node/Blocks/inputBlock.pure.js +270 -256
  232. package/FrameGraph/Node/Blocks/inputBlock.pure.js.map +1 -1
  233. package/FrameGraph/Node/Blocks/lightingVolumeBlock.pure.js +95 -83
  234. package/FrameGraph/Node/Blocks/lightingVolumeBlock.pure.js.map +1 -1
  235. package/FrameGraph/Node/nodeRenderGraph.js +715 -693
  236. package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
  237. package/FrameGraph/Node/nodeRenderGraphBlock.js +548 -533
  238. package/FrameGraph/Node/nodeRenderGraphBlock.js.map +1 -1
  239. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.d.ts +2 -2
  240. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js +43 -51
  241. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js.map +1 -1
  242. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.d.ts +0 -1
  243. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.js +0 -1
  244. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.js.map +1 -1
  245. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.d.ts +0 -1
  246. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.js +66 -35
  247. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.js.map +1 -1
  248. package/Helpers/environmentHelper.js +2 -2
  249. package/Helpers/environmentHelper.js.map +1 -1
  250. package/Layers/effectLayer.js +529 -519
  251. package/Layers/effectLayer.js.map +1 -1
  252. package/Layers/glowLayer.pure.js +428 -413
  253. package/Layers/glowLayer.pure.js.map +1 -1
  254. package/Layers/highlightLayer.pure.js +473 -458
  255. package/Layers/highlightLayer.pure.js.map +1 -1
  256. package/Layers/selectionOutlineLayer.pure.js +360 -345
  257. package/Layers/selectionOutlineLayer.pure.js.map +1 -1
  258. package/Lights/Clustered/clusteredLightContainer.pure.d.ts +1 -1
  259. package/Lights/Clustered/clusteredLightContainer.pure.js +583 -558
  260. package/Lights/Clustered/clusteredLightContainer.pure.js.map +1 -1
  261. package/Lights/Shadows/shadowGenerator.js +6 -1
  262. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  263. package/Lights/areaLight.pure.js +61 -39
  264. package/Lights/areaLight.pure.js.map +1 -1
  265. package/Lights/directionalLight.pure.js +308 -284
  266. package/Lights/directionalLight.pure.js.map +1 -1
  267. package/Lights/hemisphericLight.pure.js +123 -104
  268. package/Lights/hemisphericLight.pure.js.map +1 -1
  269. package/Lights/light.d.ts +5 -3
  270. package/Lights/light.js +869 -827
  271. package/Lights/light.js.map +1 -1
  272. package/Lights/pointLight.pure.js +185 -174
  273. package/Lights/pointLight.pure.js.map +1 -1
  274. package/Lights/rectAreaLight.pure.d.ts +17 -0
  275. package/Lights/rectAreaLight.pure.js +238 -159
  276. package/Lights/rectAreaLight.pure.js.map +1 -1
  277. package/Lights/shadowLight.js +280 -268
  278. package/Lights/shadowLight.js.map +1 -1
  279. package/Lights/spotLight.pure.js +460 -427
  280. package/Lights/spotLight.pure.js.map +1 -1
  281. package/Loading/Plugins/babylonFileLoader.pure.js +17 -5
  282. package/Loading/Plugins/babylonFileLoader.pure.js.map +1 -1
  283. package/Loading/sceneLoader.d.ts +5 -1
  284. package/Loading/sceneLoader.js +299 -402
  285. package/Loading/sceneLoader.js.map +1 -1
  286. package/Materials/Background/backgroundMaterial.pure.d.ts +18 -18
  287. package/Materials/Background/backgroundMaterial.pure.js +949 -794
  288. package/Materials/Background/backgroundMaterial.pure.js.map +1 -1
  289. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.d.ts +15 -0
  290. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js +34 -1
  291. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js.map +1 -1
  292. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.d.ts +9 -0
  293. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js +26 -2
  294. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js.map +1 -1
  295. package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.d.ts +2 -1
  296. package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js +169 -149
  297. package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js.map +1 -1
  298. package/Materials/Node/Blocks/Dual/imageSourceBlock.pure.js +1 -1
  299. package/Materials/Node/Blocks/Dual/lightBlock.pure.js +442 -429
  300. package/Materials/Node/Blocks/Dual/lightBlock.pure.js.map +1 -1
  301. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.pure.js +396 -383
  302. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.pure.js.map +1 -1
  303. package/Materials/Node/Blocks/Dual/sceneDepthBlock.pure.js +237 -220
  304. package/Materials/Node/Blocks/Dual/sceneDepthBlock.pure.js.map +1 -1
  305. package/Materials/Node/Blocks/Dual/textureBlock.pure.js +1 -1
  306. package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.pure.js +150 -133
  307. package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.pure.js.map +1 -1
  308. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js +265 -250
  309. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js.map +1 -1
  310. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.pure.js +159 -142
  311. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.pure.js.map +1 -1
  312. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.pure.js +214 -201
  313. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.pure.js.map +1 -1
  314. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.pure.js +419 -400
  315. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.pure.js.map +1 -1
  316. package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js +3 -1
  317. package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js.map +1 -1
  318. package/Materials/Node/Blocks/PBR/clearCoatBlock.pure.js +302 -289
  319. package/Materials/Node/Blocks/PBR/clearCoatBlock.pure.js.map +1 -1
  320. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js +1327 -1272
  321. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js.map +1 -1
  322. package/Materials/Node/Blocks/PBR/reflectionBlock.pure.js +352 -337
  323. package/Materials/Node/Blocks/PBR/reflectionBlock.pure.js.map +1 -1
  324. package/Materials/Node/Blocks/PBR/refractionBlock.pure.js +297 -277
  325. package/Materials/Node/Blocks/PBR/refractionBlock.pure.js.map +1 -1
  326. package/Materials/Node/Blocks/PBR/sheenBlock.pure.js +146 -131
  327. package/Materials/Node/Blocks/PBR/sheenBlock.pure.js.map +1 -1
  328. package/Materials/Node/Blocks/PBR/subSurfaceBlock.pure.js +158 -145
  329. package/Materials/Node/Blocks/PBR/subSurfaceBlock.pure.js.map +1 -1
  330. package/Materials/Node/Blocks/clampBlock.pure.js +92 -77
  331. package/Materials/Node/Blocks/clampBlock.pure.js.map +1 -1
  332. package/Materials/Node/Blocks/cloudBlock.pure.js +145 -132
  333. package/Materials/Node/Blocks/cloudBlock.pure.js.map +1 -1
  334. package/Materials/Node/Blocks/conditionalBlock.pure.js +182 -169
  335. package/Materials/Node/Blocks/conditionalBlock.pure.js.map +1 -1
  336. package/Materials/Node/Blocks/curveBlock.pure.js +259 -246
  337. package/Materials/Node/Blocks/curveBlock.pure.js.map +1 -1
  338. package/Materials/Node/Blocks/debugBlock.pure.js +119 -106
  339. package/Materials/Node/Blocks/debugBlock.pure.js.map +1 -1
  340. package/Materials/Node/Blocks/loopBlock.pure.js +123 -110
  341. package/Materials/Node/Blocks/loopBlock.pure.js.map +1 -1
  342. package/Materials/Node/Blocks/meshAttributeExistsBlock.pure.js +185 -172
  343. package/Materials/Node/Blocks/meshAttributeExistsBlock.pure.js.map +1 -1
  344. package/Materials/Node/Blocks/remapBlock.pure.js +127 -112
  345. package/Materials/Node/Blocks/remapBlock.pure.js.map +1 -1
  346. package/Materials/Node/Blocks/transformBlock.pure.js +196 -185
  347. package/Materials/Node/Blocks/transformBlock.pure.js.map +1 -1
  348. package/Materials/Node/Blocks/triPlanarBlock.pure.js +451 -438
  349. package/Materials/Node/Blocks/triPlanarBlock.pure.js.map +1 -1
  350. package/Materials/Node/Blocks/trigonometryBlock.pure.js +184 -171
  351. package/Materials/Node/Blocks/trigonometryBlock.pure.js.map +1 -1
  352. package/Materials/Node/Blocks/waveBlock.pure.js +97 -84
  353. package/Materials/Node/Blocks/waveBlock.pure.js.map +1 -1
  354. package/Materials/Node/Blocks/worleyNoise3DBlock.pure.js +276 -263
  355. package/Materials/Node/Blocks/worleyNoise3DBlock.pure.js.map +1 -1
  356. package/Materials/Node/nodeMaterial.pure.js +1765 -1737
  357. package/Materials/Node/nodeMaterial.pure.js.map +1 -1
  358. package/Materials/Node/nodeMaterialBuildState.d.ts +3 -3
  359. package/Materials/PBR/openpbrMaterial.pure.d.ts +102 -102
  360. package/Materials/PBR/openpbrMaterial.pure.js +3115 -2243
  361. package/Materials/PBR/openpbrMaterial.pure.js.map +1 -1
  362. package/Materials/PBR/pbrAnisotropicConfiguration.d.ts +3 -3
  363. package/Materials/PBR/pbrAnisotropicConfiguration.js +255 -227
  364. package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
  365. package/Materials/PBR/pbrBRDFConfiguration.d.ts +9 -9
  366. package/Materials/PBR/pbrBRDFConfiguration.js +203 -155
  367. package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
  368. package/Materials/PBR/pbrBaseMaterial.pure.d.ts +1 -1
  369. package/Materials/PBR/pbrBaseMaterial.pure.js +1751 -1736
  370. package/Materials/PBR/pbrBaseMaterial.pure.js.map +1 -1
  371. package/Materials/PBR/pbrBaseSimpleMaterial.d.ts +13 -13
  372. package/Materials/PBR/pbrBaseSimpleMaterial.js +205 -117
  373. package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
  374. package/Materials/PBR/pbrClearCoatConfiguration.d.ts +9 -9
  375. package/Materials/PBR/pbrClearCoatConfiguration.js +464 -406
  376. package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
  377. package/Materials/PBR/pbrIridescenceConfiguration.d.ts +3 -3
  378. package/Materials/PBR/pbrIridescenceConfiguration.js +271 -239
  379. package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -1
  380. package/Materials/PBR/pbrMaterial.pure.d.ts +66 -66
  381. package/Materials/PBR/pbrMaterial.pure.js +1041 -685
  382. package/Materials/PBR/pbrMaterial.pure.js.map +1 -1
  383. package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.d.ts +5 -5
  384. package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.js +176 -115
  385. package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.js.map +1 -1
  386. package/Materials/PBR/pbrSheenConfiguration.d.ts +7 -7
  387. package/Materials/PBR/pbrSheenConfiguration.js +314 -270
  388. package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
  389. package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.d.ts +5 -5
  390. package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.js +172 -117
  391. package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.js.map +1 -1
  392. package/Materials/PBR/pbrSubSurfaceConfiguration.d.ts +16 -16
  393. package/Materials/PBR/pbrSubSurfaceConfiguration.js +864 -764
  394. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  395. package/Materials/Textures/HTML/htmlInCanvasPolyfill.d.ts +43 -0
  396. package/Materials/Textures/HTML/htmlInCanvasPolyfill.js +64 -0
  397. package/Materials/Textures/HTML/htmlInCanvasPolyfill.js.map +1 -0
  398. package/Materials/Textures/HTML/htmlInteractionManager.d.ts +69 -0
  399. package/Materials/Textures/HTML/htmlInteractionManager.js +130 -0
  400. package/Materials/Textures/HTML/htmlInteractionManager.js.map +1 -0
  401. package/Materials/Textures/HTML/htmlRaycastInteractionManager.d.ts +84 -0
  402. package/Materials/Textures/HTML/htmlRaycastInteractionManager.js +246 -0
  403. package/Materials/Textures/HTML/htmlRaycastInteractionManager.js.map +1 -0
  404. package/Materials/Textures/HTML/htmlTexture.d.ts +148 -0
  405. package/Materials/Textures/HTML/htmlTexture.js +455 -0
  406. package/Materials/Textures/HTML/htmlTexture.js.map +1 -0
  407. package/Materials/Textures/HTML/index.d.ts +4 -0
  408. package/Materials/Textures/HTML/index.js +5 -0
  409. package/Materials/Textures/HTML/index.js.map +1 -0
  410. package/Materials/Textures/HTML/pure.d.ts +5 -0
  411. package/Materials/Textures/HTML/pure.js +6 -0
  412. package/Materials/Textures/HTML/pure.js.map +1 -0
  413. package/Materials/Textures/Procedurals/proceduralTexture.pure.js +671 -643
  414. package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
  415. package/Materials/Textures/baseTexture.pure.js +880 -825
  416. package/Materials/Textures/baseTexture.pure.js.map +1 -1
  417. package/Materials/Textures/cubeTexture.d.ts +0 -1
  418. package/Materials/Textures/cubeTexture.js +0 -1
  419. package/Materials/Textures/cubeTexture.js.map +1 -1
  420. package/Materials/Textures/cubeTexture.pure.js +368 -333
  421. package/Materials/Textures/cubeTexture.pure.js.map +1 -1
  422. package/Materials/Textures/dynamicTexture.d.ts +0 -1
  423. package/Materials/Textures/dynamicTexture.js +0 -1
  424. package/Materials/Textures/dynamicTexture.js.map +1 -1
  425. package/Materials/Textures/dynamicTexture.pure.js +2 -0
  426. package/Materials/Textures/dynamicTexture.pure.js.map +1 -1
  427. package/Materials/Textures/htmlElementTexture.d.ts +0 -2
  428. package/Materials/Textures/htmlElementTexture.js +0 -2
  429. package/Materials/Textures/htmlElementTexture.js.map +1 -1
  430. package/Materials/Textures/htmlElementTexture.pure.js +4 -0
  431. package/Materials/Textures/htmlElementTexture.pure.js.map +1 -1
  432. package/Materials/Textures/index.d.ts +1 -0
  433. package/Materials/Textures/index.js +1 -1
  434. package/Materials/Textures/index.js.map +1 -1
  435. package/Materials/Textures/multiRenderTarget.d.ts +0 -1
  436. package/Materials/Textures/multiRenderTarget.js +0 -1
  437. package/Materials/Textures/multiRenderTarget.js.map +1 -1
  438. package/Materials/Textures/multiRenderTarget.pure.js +2 -0
  439. package/Materials/Textures/multiRenderTarget.pure.js.map +1 -1
  440. package/Materials/Textures/pure.d.ts +1 -0
  441. package/Materials/Textures/pure.js +1 -0
  442. package/Materials/Textures/pure.js.map +1 -1
  443. package/Materials/Textures/texture.pure.js +961 -923
  444. package/Materials/Textures/texture.pure.js.map +1 -1
  445. package/Materials/Textures/videoTexture.pure.d.ts +3 -0
  446. package/Materials/Textures/videoTexture.pure.js +450 -401
  447. package/Materials/Textures/videoTexture.pure.js.map +1 -1
  448. package/Materials/colorCurves.pure.js +510 -477
  449. package/Materials/colorCurves.pure.js.map +1 -1
  450. package/Materials/effect.pure.js +0 -7
  451. package/Materials/effect.pure.js.map +1 -1
  452. package/Materials/imageProcessing.js +12 -4
  453. package/Materials/imageProcessing.js.map +1 -1
  454. package/Materials/imageProcessingConfiguration.pure.js +647 -587
  455. package/Materials/imageProcessingConfiguration.pure.js.map +1 -1
  456. package/Materials/material.decalMapConfiguration.pure.d.ts +2 -2
  457. package/Materials/material.decalMapConfiguration.pure.js +149 -130
  458. package/Materials/material.decalMapConfiguration.pure.js.map +1 -1
  459. package/Materials/material.detailMapConfiguration.d.ts +3 -3
  460. package/Materials/material.detailMapConfiguration.js +213 -175
  461. package/Materials/material.detailMapConfiguration.js.map +1 -1
  462. package/Materials/material.pure.js +1815 -1721
  463. package/Materials/material.pure.js.map +1 -1
  464. package/Materials/materialPluginBase.pure.js +270 -249
  465. package/Materials/materialPluginBase.pure.js.map +1 -1
  466. package/Materials/materialPluginManager.pure.js +18 -8
  467. package/Materials/materialPluginManager.pure.js.map +1 -1
  468. package/Materials/materialStencilState.js +211 -200
  469. package/Materials/materialStencilState.js.map +1 -1
  470. package/Materials/meshDebugPluginMaterial.pure.d.ts +2 -2
  471. package/Materials/meshDebugPluginMaterial.pure.js +397 -275
  472. package/Materials/meshDebugPluginMaterial.pure.js.map +1 -1
  473. package/Materials/standardMaterial.pure.d.ts +32 -32
  474. package/Materials/standardMaterial.pure.js +1804 -1394
  475. package/Materials/standardMaterial.pure.js.map +1 -1
  476. package/Maths/math.color.pure.js +5 -5
  477. package/Maths/math.functions.js +38 -30
  478. package/Maths/math.functions.js.map +1 -1
  479. package/Maths/math.vector.pure.js +25 -25
  480. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +18 -8
  481. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
  482. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +86 -1
  483. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +255 -104
  484. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
  485. package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.d.ts +39 -0
  486. package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js +322 -0
  487. package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js.map +1 -0
  488. package/Meshes/GreasedLine/greasedLineMesh.pure.js +4 -4
  489. package/Meshes/GreasedLine/greasedLineRibbonMesh.pure.js +3 -3
  490. package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js +107 -94
  491. package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js.map +1 -1
  492. package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.pure.js +276 -263
  493. package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.pure.js.map +1 -1
  494. package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.pure.js +247 -232
  495. package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.pure.js.map +1 -1
  496. package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.pure.js +299 -284
  497. package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.pure.js.map +1 -1
  498. package/Meshes/Node/Blocks/Set/aggregatorBlock.pure.js +196 -181
  499. package/Meshes/Node/Blocks/Set/aggregatorBlock.pure.js.map +1 -1
  500. package/Meshes/Node/Blocks/Set/latticeBlock.pure.js +198 -179
  501. package/Meshes/Node/Blocks/Set/latticeBlock.pure.js.map +1 -1
  502. package/Meshes/Node/Blocks/Set/setColorsBlock.pure.js +151 -138
  503. package/Meshes/Node/Blocks/Set/setColorsBlock.pure.js.map +1 -1
  504. package/Meshes/Node/Blocks/Set/setMaterialIDBlock.pure.js +107 -94
  505. package/Meshes/Node/Blocks/Set/setMaterialIDBlock.pure.js.map +1 -1
  506. package/Meshes/Node/Blocks/Set/setNormalsBlock.pure.js +138 -125
  507. package/Meshes/Node/Blocks/Set/setNormalsBlock.pure.js.map +1 -1
  508. package/Meshes/Node/Blocks/Set/setPositionsBlock.pure.js +213 -200
  509. package/Meshes/Node/Blocks/Set/setPositionsBlock.pure.js.map +1 -1
  510. package/Meshes/Node/Blocks/Set/setTangentsBlock.pure.js +138 -125
  511. package/Meshes/Node/Blocks/Set/setTangentsBlock.pure.js.map +1 -1
  512. package/Meshes/Node/Blocks/Set/setUVsBlock.pure.js +179 -164
  513. package/Meshes/Node/Blocks/Set/setUVsBlock.pure.js.map +1 -1
  514. package/Meshes/Node/Blocks/Sources/boxBlock.pure.js +183 -170
  515. package/Meshes/Node/Blocks/Sources/boxBlock.pure.js.map +1 -1
  516. package/Meshes/Node/Blocks/Sources/capsuleBlock.pure.js +125 -112
  517. package/Meshes/Node/Blocks/Sources/capsuleBlock.pure.js.map +1 -1
  518. package/Meshes/Node/Blocks/Sources/cylinderBlock.pure.js +153 -140
  519. package/Meshes/Node/Blocks/Sources/cylinderBlock.pure.js.map +1 -1
  520. package/Meshes/Node/Blocks/Sources/discBlock.pure.js +112 -99
  521. package/Meshes/Node/Blocks/Sources/discBlock.pure.js.map +1 -1
  522. package/Meshes/Node/Blocks/Sources/gridBlock.pure.js +133 -120
  523. package/Meshes/Node/Blocks/Sources/gridBlock.pure.js.map +1 -1
  524. package/Meshes/Node/Blocks/Sources/icoSphereBlock.pure.js +128 -115
  525. package/Meshes/Node/Blocks/Sources/icoSphereBlock.pure.js.map +1 -1
  526. package/Meshes/Node/Blocks/Sources/meshBlock.pure.js +116 -103
  527. package/Meshes/Node/Blocks/Sources/meshBlock.pure.js.map +1 -1
  528. package/Meshes/Node/Blocks/Sources/planeBlock.pure.js +160 -147
  529. package/Meshes/Node/Blocks/Sources/planeBlock.pure.js.map +1 -1
  530. package/Meshes/Node/Blocks/Sources/sphereBlock.pure.js +144 -131
  531. package/Meshes/Node/Blocks/Sources/sphereBlock.pure.js.map +1 -1
  532. package/Meshes/Node/Blocks/Sources/torusBlock.pure.js +112 -99
  533. package/Meshes/Node/Blocks/Sources/torusBlock.pure.js.map +1 -1
  534. package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.pure.js +200 -185
  535. package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.pure.js.map +1 -1
  536. package/Meshes/Node/Blocks/bevelBlock.pure.js +111 -98
  537. package/Meshes/Node/Blocks/bevelBlock.pure.js.map +1 -1
  538. package/Meshes/Node/Blocks/booleanGeometryBlock.pure.js +182 -165
  539. package/Meshes/Node/Blocks/booleanGeometryBlock.pure.js.map +1 -1
  540. package/Meshes/Node/Blocks/cleanGeometryBlock.pure.js +89 -76
  541. package/Meshes/Node/Blocks/cleanGeometryBlock.pure.js.map +1 -1
  542. package/Meshes/Node/Blocks/conditionBlock.pure.js +184 -169
  543. package/Meshes/Node/Blocks/conditionBlock.pure.js.map +1 -1
  544. package/Meshes/Node/Blocks/extrudeGeometryBlock.pure.js +270 -255
  545. package/Meshes/Node/Blocks/extrudeGeometryBlock.pure.js.map +1 -1
  546. package/Meshes/Node/Blocks/geometryCollectionBlock.pure.js +172 -159
  547. package/Meshes/Node/Blocks/geometryCollectionBlock.pure.js.map +1 -1
  548. package/Meshes/Node/Blocks/geometryCurveBlock.pure.js +230 -217
  549. package/Meshes/Node/Blocks/geometryCurveBlock.pure.js.map +1 -1
  550. package/Meshes/Node/Blocks/geometryEaseBlock.pure.js +256 -245
  551. package/Meshes/Node/Blocks/geometryEaseBlock.pure.js.map +1 -1
  552. package/Meshes/Node/Blocks/geometryOptimizeBlock.pure.js +206 -189
  553. package/Meshes/Node/Blocks/geometryOptimizeBlock.pure.js.map +1 -1
  554. package/Meshes/Node/Blocks/geometryTransformBlock.pure.js +166 -153
  555. package/Meshes/Node/Blocks/geometryTransformBlock.pure.js.map +1 -1
  556. package/Meshes/Node/Blocks/geometryTrigonometryBlock.pure.js +221 -208
  557. package/Meshes/Node/Blocks/geometryTrigonometryBlock.pure.js.map +1 -1
  558. package/Meshes/Node/Blocks/mappingBlock.pure.js +150 -137
  559. package/Meshes/Node/Blocks/mappingBlock.pure.js.map +1 -1
  560. package/Meshes/Node/Blocks/mathBlock.pure.js +269 -256
  561. package/Meshes/Node/Blocks/mathBlock.pure.js.map +1 -1
  562. package/Meshes/Node/Blocks/mergeGeometryBlock.pure.js +141 -128
  563. package/Meshes/Node/Blocks/mergeGeometryBlock.pure.js.map +1 -1
  564. package/Meshes/Node/Blocks/randomBlock.pure.js +161 -148
  565. package/Meshes/Node/Blocks/randomBlock.pure.js.map +1 -1
  566. package/Meshes/Node/Blocks/subdivideBlock.pure.js +102 -87
  567. package/Meshes/Node/Blocks/subdivideBlock.pure.js.map +1 -1
  568. package/Meshes/Node/nodeGeometry.js +560 -538
  569. package/Meshes/Node/nodeGeometry.js.map +1 -1
  570. package/Meshes/Node/nodeGeometryBlock.js +473 -458
  571. package/Meshes/Node/nodeGeometryBlock.js.map +1 -1
  572. package/Meshes/abstractMesh.pure.js +2218 -2207
  573. package/Meshes/abstractMesh.pure.js.map +1 -1
  574. package/Meshes/geometry.js +30 -15
  575. package/Meshes/geometry.js.map +1 -1
  576. package/Meshes/mesh.pure.js +26 -14
  577. package/Meshes/mesh.pure.js.map +1 -1
  578. package/Meshes/mesh.vertexData.js +1665 -1655
  579. package/Meshes/mesh.vertexData.js.map +1 -1
  580. package/Meshes/transformNode.pure.js +1400 -1372
  581. package/Meshes/transformNode.pure.js.map +1 -1
  582. package/Misc/decorators.d.ts +34 -19
  583. package/Misc/decorators.functions.d.ts +33 -2
  584. package/Misc/decorators.functions.js +114 -35
  585. package/Misc/decorators.functions.js.map +1 -1
  586. package/Misc/decorators.js +96 -68
  587. package/Misc/decorators.js.map +1 -1
  588. package/Misc/decorators.serialization.js +47 -40
  589. package/Misc/decorators.serialization.js.map +1 -1
  590. package/Misc/decorators.serializationUtilities.d.ts +24 -0
  591. package/Misc/decorators.serializationUtilities.js +20 -0
  592. package/Misc/decorators.serializationUtilities.js.map +1 -0
  593. package/Misc/dumpTools.pure.js +43 -33
  594. package/Misc/dumpTools.pure.js.map +1 -1
  595. package/Misc/fileTools.pure.js +8 -0
  596. package/Misc/fileTools.pure.js.map +1 -1
  597. package/Misc/observable.pure.js +0 -7
  598. package/Misc/observable.pure.js.map +1 -1
  599. package/Misc/snapshotRenderingHelper.d.ts +4 -1
  600. package/Misc/snapshotRenderingHelper.js.map +1 -1
  601. package/Misc/symbolMetadataPolyfill.d.ts +11 -0
  602. package/Misc/symbolMetadataPolyfill.js +22 -0
  603. package/Misc/symbolMetadataPolyfill.js.map +1 -0
  604. package/Misc/tools.pure.js +2 -2
  605. package/Misc/tools.pure.js.map +1 -1
  606. package/Morph/morphTarget.js +382 -365
  607. package/Morph/morphTarget.js.map +1 -1
  608. package/Particles/Node/Blocks/Conditions/particleConditionBlock.pure.js +160 -145
  609. package/Particles/Node/Blocks/Conditions/particleConditionBlock.pure.js.map +1 -1
  610. package/Particles/Node/Blocks/Emitters/coneShapeBlock.pure.js +187 -174
  611. package/Particles/Node/Blocks/Emitters/coneShapeBlock.pure.js.map +1 -1
  612. package/Particles/Node/Blocks/Emitters/meshShapeBlock.pure.js +238 -219
  613. package/Particles/Node/Blocks/Emitters/meshShapeBlock.pure.js.map +1 -1
  614. package/Particles/Node/Blocks/Emitters/setupSpriteSheetBlock.pure.js +140 -115
  615. package/Particles/Node/Blocks/Emitters/setupSpriteSheetBlock.pure.js.map +1 -1
  616. package/Particles/Node/Blocks/Emitters/sphereShapeBlock.pure.js +157 -144
  617. package/Particles/Node/Blocks/Emitters/sphereShapeBlock.pure.js.map +1 -1
  618. package/Particles/Node/Blocks/Triggers/particleTriggerBlock.pure.js +133 -119
  619. package/Particles/Node/Blocks/Triggers/particleTriggerBlock.pure.js.map +1 -1
  620. package/Particles/Node/Blocks/Update/alignAngleBlock.pure.js +93 -80
  621. package/Particles/Node/Blocks/Update/alignAngleBlock.pure.js.map +1 -1
  622. package/Particles/Node/Blocks/particleDebugBlock.pure.js +117 -105
  623. package/Particles/Node/Blocks/particleDebugBlock.pure.js.map +1 -1
  624. package/Particles/Node/Blocks/particleFloatToIntBlock.pure.js +105 -92
  625. package/Particles/Node/Blocks/particleFloatToIntBlock.pure.js.map +1 -1
  626. package/Particles/Node/Blocks/particleGradientValueBlock.pure.js +82 -69
  627. package/Particles/Node/Blocks/particleGradientValueBlock.pure.js.map +1 -1
  628. package/Particles/Node/Blocks/particleLocalVariableBlock.pure.js +113 -101
  629. package/Particles/Node/Blocks/particleLocalVariableBlock.pure.js.map +1 -1
  630. package/Particles/Node/Blocks/particleMathBlock.pure.js +278 -265
  631. package/Particles/Node/Blocks/particleMathBlock.pure.js.map +1 -1
  632. package/Particles/Node/Blocks/particleNumberMathBlock.pure.js +155 -142
  633. package/Particles/Node/Blocks/particleNumberMathBlock.pure.js.map +1 -1
  634. package/Particles/Node/Blocks/particleRandomBlock.pure.js +156 -143
  635. package/Particles/Node/Blocks/particleRandomBlock.pure.js.map +1 -1
  636. package/Particles/Node/Blocks/particleTrigonometryBlock.pure.js +217 -204
  637. package/Particles/Node/Blocks/particleTrigonometryBlock.pure.js.map +1 -1
  638. package/Particles/Node/Blocks/particleVectorMathBlock.pure.js +106 -93
  639. package/Particles/Node/Blocks/particleVectorMathBlock.pure.js.map +1 -1
  640. package/Particles/Node/Blocks/systemBlock.pure.js +366 -330
  641. package/Particles/Node/Blocks/systemBlock.pure.js.map +1 -1
  642. package/Particles/Node/nodeParticleBlock.js +339 -324
  643. package/Particles/Node/nodeParticleBlock.js.map +1 -1
  644. package/Particles/Node/nodeParticleSystemSet.js +494 -473
  645. package/Particles/Node/nodeParticleSystemSet.js.map +1 -1
  646. package/Particles/gpuParticleSystem.d.ts +0 -1
  647. package/Particles/gpuParticleSystem.js +0 -1
  648. package/Particles/gpuParticleSystem.js.map +1 -1
  649. package/Particles/gpuParticleSystem.pure.d.ts +4 -3
  650. package/Particles/gpuParticleSystem.pure.js +27 -16
  651. package/Particles/gpuParticleSystem.pure.js.map +1 -1
  652. package/Particles/particleSystem.pure.js +57 -2
  653. package/Particles/particleSystem.pure.js.map +1 -1
  654. package/Particles/thinParticleSystem.d.ts +0 -1
  655. package/Particles/thinParticleSystem.js +0 -1
  656. package/Particles/thinParticleSystem.js.map +1 -1
  657. package/Particles/thinParticleSystem.pure.js +2 -0
  658. package/Particles/thinParticleSystem.pure.js.map +1 -1
  659. package/Particles/webgl2ParticleSystem.pure.js +2 -0
  660. package/Particles/webgl2ParticleSystem.pure.js.map +1 -1
  661. package/Physics/v1/physicsImpostor.pure.js +4 -4
  662. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.js +675 -656
  663. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.js.map +1 -1
  664. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.d.ts +0 -1
  665. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js +0 -1
  666. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js.map +1 -1
  667. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js +521 -486
  668. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js.map +1 -1
  669. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.d.ts +0 -1
  670. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js +0 -1
  671. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js.map +1 -1
  672. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.pure.js +241 -220
  673. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.pure.js.map +1 -1
  674. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.pure.js +852 -835
  675. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.pure.js.map +1 -1
  676. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.pure.js +1135 -1073
  677. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.pure.js.map +1 -1
  678. package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.pure.js +319 -303
  679. package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.pure.js.map +1 -1
  680. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js +212 -199
  681. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
  682. package/PostProcesses/blackAndWhitePostProcess.pure.js +67 -55
  683. package/PostProcesses/blackAndWhitePostProcess.pure.js.map +1 -1
  684. package/PostProcesses/bloomMergePostProcess.pure.js +74 -62
  685. package/PostProcesses/bloomMergePostProcess.pure.js.map +1 -1
  686. package/PostProcesses/blurPostProcess.pure.js +127 -115
  687. package/PostProcesses/blurPostProcess.pure.js.map +1 -1
  688. package/PostProcesses/chromaticAberrationPostProcess.pure.js +130 -118
  689. package/PostProcesses/chromaticAberrationPostProcess.pure.js.map +1 -1
  690. package/PostProcesses/circleOfConfusionPostProcess.pure.js +115 -104
  691. package/PostProcesses/circleOfConfusionPostProcess.pure.js.map +1 -1
  692. package/PostProcesses/colorCorrectionPostProcess.pure.js +55 -43
  693. package/PostProcesses/colorCorrectionPostProcess.pure.js.map +1 -1
  694. package/PostProcesses/convolutionPostProcess.pure.js +96 -84
  695. package/PostProcesses/convolutionPostProcess.pure.js.map +1 -1
  696. package/PostProcesses/extractHighlightsPostProcess.pure.js +68 -57
  697. package/PostProcesses/extractHighlightsPostProcess.pure.js.map +1 -1
  698. package/PostProcesses/filterPostProcess.pure.js +66 -54
  699. package/PostProcesses/filterPostProcess.pure.js.map +1 -1
  700. package/PostProcesses/fxaaPostProcess.pure.js.map +1 -1
  701. package/PostProcesses/grainPostProcess.pure.js +82 -70
  702. package/PostProcesses/grainPostProcess.pure.js.map +1 -1
  703. package/PostProcesses/imageProcessingPostProcess.js +334 -322
  704. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  705. package/PostProcesses/motionBlurPostProcess.pure.js +246 -235
  706. package/PostProcesses/motionBlurPostProcess.pure.js.map +1 -1
  707. package/PostProcesses/passPostProcess.pure.js +75 -63
  708. package/PostProcesses/passPostProcess.pure.js.map +1 -1
  709. package/PostProcesses/postProcess.pure.js +899 -835
  710. package/PostProcesses/postProcess.pure.js.map +1 -1
  711. package/PostProcesses/refractionPostProcess.pure.js +114 -87
  712. package/PostProcesses/refractionPostProcess.pure.js.map +1 -1
  713. package/PostProcesses/screenSpaceCurvaturePostProcess.pure.js +108 -96
  714. package/PostProcesses/screenSpaceCurvaturePostProcess.pure.js.map +1 -1
  715. package/PostProcesses/screenSpaceReflectionPostProcess.pure.js +241 -220
  716. package/PostProcesses/screenSpaceReflectionPostProcess.pure.js.map +1 -1
  717. package/PostProcesses/sharpenPostProcess.pure.js +86 -74
  718. package/PostProcesses/sharpenPostProcess.pure.js.map +1 -1
  719. package/PostProcesses/tonemapPostProcess.pure.js +82 -70
  720. package/PostProcesses/tonemapPostProcess.pure.js.map +1 -1
  721. package/PostProcesses/volumetricLightScatteringPostProcess.pure.js +500 -465
  722. package/PostProcesses/volumetricLightScatteringPostProcess.pure.js.map +1 -1
  723. package/PostProcesses/vrMultiviewToSingleviewPostProcess.d.ts +0 -1
  724. package/PostProcesses/vrMultiviewToSingleviewPostProcess.js +0 -1
  725. package/PostProcesses/vrMultiviewToSingleviewPostProcess.js.map +1 -1
  726. package/PostProcesses/vrMultiviewToSingleviewPostProcess.pure.js +2 -0
  727. package/PostProcesses/vrMultiviewToSingleviewPostProcess.pure.js.map +1 -1
  728. package/Probes/reflectionProbe.pure.js +238 -224
  729. package/Probes/reflectionProbe.pure.js.map +1 -1
  730. package/Rendering/GlobalIllumination/giRSMManager.pure.d.ts +1 -1
  731. package/Rendering/GlobalIllumination/giRSMManager.pure.js +138 -105
  732. package/Rendering/GlobalIllumination/giRSMManager.pure.js.map +1 -1
  733. package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.d.ts +1 -1
  734. package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.js +155 -138
  735. package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.js.map +1 -1
  736. package/Rendering/IBLShadows/iblShadowsRenderPipeline.d.ts +0 -2
  737. package/Rendering/IBLShadows/iblShadowsRenderPipeline.js +0 -2
  738. package/Rendering/IBLShadows/iblShadowsRenderPipeline.js.map +1 -1
  739. package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js +5 -0
  740. package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js.map +1 -1
  741. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.d.ts +0 -1
  742. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js +0 -1
  743. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js.map +1 -1
  744. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.d.ts +1 -0
  745. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js +34 -0
  746. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js.map +1 -1
  747. package/Rendering/edgesRenderer.pure.js.map +1 -1
  748. package/Rendering/prePassRenderer.d.ts +0 -2
  749. package/Rendering/prePassRenderer.js +0 -2
  750. package/Rendering/prePassRenderer.js.map +1 -1
  751. package/Rendering/prePassRenderer.pure.js +2 -0
  752. package/Rendering/prePassRenderer.pure.js.map +1 -1
  753. package/Rendering/reflectiveShadowMap.pure.d.ts +1 -1
  754. package/Rendering/reflectiveShadowMap.pure.js +151 -130
  755. package/Rendering/reflectiveShadowMap.pure.js.map +1 -1
  756. package/Rendering/thinDepthPeelingRenderer.d.ts +0 -1
  757. package/Rendering/thinDepthPeelingRenderer.js +0 -1
  758. package/Rendering/thinDepthPeelingRenderer.js.map +1 -1
  759. package/Shaders/ShadersInclude/gaussianSplatting.js +1 -0
  760. package/Shaders/ShadersInclude/gaussianSplatting.js.map +1 -1
  761. package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js +35 -5
  762. package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
  763. package/Shaders/gaussianSplatting.fragment.js +17 -1
  764. package/Shaders/gaussianSplatting.fragment.js.map +1 -1
  765. package/Shaders/gaussianSplatting.vertex.js +1 -1
  766. package/Shaders/gaussianSplatting.vertex.js.map +1 -1
  767. package/Shaders/gaussianSplattingDepth.vertex.js +1 -1
  768. package/Shaders/gaussianSplattingDepth.vertex.js.map +1 -1
  769. package/Shaders/picking.fragment.js +39 -3
  770. package/Shaders/picking.fragment.js.map +1 -1
  771. package/ShadersWGSL/ShadersInclude/gaussianSplatting.js +3 -1
  772. package/ShadersWGSL/ShadersInclude/gaussianSplatting.js.map +1 -1
  773. package/ShadersWGSL/ShadersInclude/helperFunctions.js +2 -2
  774. package/ShadersWGSL/ShadersInclude/helperFunctions.js.map +1 -1
  775. package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js +39 -7
  776. package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
  777. package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js +4 -3
  778. package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js.map +1 -1
  779. package/ShadersWGSL/gaussianSplatting.fragment.js +14 -1
  780. package/ShadersWGSL/gaussianSplatting.fragment.js.map +1 -1
  781. package/ShadersWGSL/gaussianSplatting.vertex.js +2 -2
  782. package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
  783. package/ShadersWGSL/gaussianSplattingDepth.vertex.js +2 -2
  784. package/ShadersWGSL/gaussianSplattingDepth.vertex.js.map +1 -1
  785. package/ShadersWGSL/lightingVolume.compute.js +2 -2
  786. package/ShadersWGSL/lightingVolume.compute.js.map +1 -1
  787. package/ShadersWGSL/picking.fragment.js +22 -1
  788. package/ShadersWGSL/picking.fragment.js.map +1 -1
  789. package/XR/features/Layers/WebXRCompositionLayer.d.ts +3 -2
  790. package/XR/features/Layers/WebXRCompositionLayer.js +2 -2
  791. package/XR/features/Layers/WebXRCompositionLayer.js.map +1 -1
  792. package/XR/features/Layers/WebXRWebGPUCompositionLayer.d.ts +59 -0
  793. package/XR/features/Layers/WebXRWebGPUCompositionLayer.js +120 -0
  794. package/XR/features/Layers/WebXRWebGPUCompositionLayer.js.map +1 -0
  795. package/XR/features/Layers/WebXRWebGPUProjectionLayer.d.ts +25 -0
  796. package/XR/features/Layers/WebXRWebGPUProjectionLayer.js +69 -0
  797. package/XR/features/Layers/WebXRWebGPUProjectionLayer.js.map +1 -0
  798. package/XR/features/WebXRLayers.pure.d.ts +8 -0
  799. package/XR/features/WebXRLayers.pure.js +43 -6
  800. package/XR/features/WebXRLayers.pure.js.map +1 -1
  801. package/XR/native/nativeXRRenderTarget.d.ts +2 -2
  802. package/XR/native/nativeXRRenderTarget.js +2 -2
  803. package/XR/native/nativeXRRenderTarget.js.map +1 -1
  804. package/XR/webXRExperienceHelper.js +10 -1
  805. package/XR/webXRExperienceHelper.js.map +1 -1
  806. package/XR/webXRGraphicsBinding.d.ts +90 -0
  807. package/XR/webXRGraphicsBinding.js +85 -0
  808. package/XR/webXRGraphicsBinding.js.map +1 -0
  809. package/XR/webXRLayerRenderTargetTexture.d.ts +24 -0
  810. package/XR/webXRLayerRenderTargetTexture.js +30 -0
  811. package/XR/webXRLayerRenderTargetTexture.js.map +1 -0
  812. package/XR/webXRManagedOutputCanvas.d.ts +14 -0
  813. package/XR/webXRManagedOutputCanvas.js +24 -5
  814. package/XR/webXRManagedOutputCanvas.js.map +1 -1
  815. package/XR/webXRRenderTargetTextureProvider.d.ts +25 -4
  816. package/XR/webXRRenderTargetTextureProvider.js +33 -35
  817. package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
  818. package/XR/webXRSessionManager.d.ts +11 -0
  819. package/XR/webXRSessionManager.js +37 -0
  820. package/XR/webXRSessionManager.js.map +1 -1
  821. package/XR/webXRTypes.d.ts +9 -6
  822. package/XR/webXRTypes.js.map +1 -1
  823. package/XR/webXRWebGLLayer.d.ts +2 -2
  824. package/XR/webXRWebGLLayer.js +2 -2
  825. package/XR/webXRWebGLLayer.js.map +1 -1
  826. package/XR/webXRWebGLRenderTargetTextureProvider.d.ts +12 -0
  827. package/XR/webXRWebGLRenderTargetTextureProvider.js +58 -0
  828. package/XR/webXRWebGLRenderTargetTextureProvider.js.map +1 -0
  829. package/XR/webXRWebGPURenderTargetTextureProvider.d.ts +69 -0
  830. package/XR/webXRWebGPURenderTargetTextureProvider.js +148 -0
  831. package/XR/webXRWebGPURenderTargetTextureProvider.js.map +1 -0
  832. package/index.d.ts +1 -0
  833. package/index.js +1 -0
  834. package/index.js.map +1 -1
  835. package/node.js +878 -845
  836. package/node.js.map +1 -1
  837. package/package.json +8 -14
  838. package/scene.pure.d.ts +12 -0
  839. package/scene.pure.js +36 -0
  840. package/scene.pure.js.map +1 -1
  841. package/tslib.es6.js +304 -150
@@ -1 +1 @@
1
- {"version":3,"file":"standardMaterial.pure.js","sourceRoot":"","sources":["../../../../dev/core/src/Materials/standardMaterial.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { serialize, serializeAsColor3, expandToProperty, serializeAsFresnelParameters, serializeAsTexture } from \"../Misc/decorators\";\r\nimport { SmartArray } from \"../Misc/smartArray\";\r\nimport { type IAnimatable } from \"../Animations/animatable.interface\";\r\nimport { type Nullable } from \"../types\";\r\nimport { Scene } from \"../scene.pure\";\r\nimport { type Matrix } from \"../Maths/math.vector.pure\";\r\nimport { Color3, TmpColors } from \"../Maths/math.color.pure\";\r\nimport { VertexBuffer } from \"../Buffers/buffer.pure\";\r\nimport { type SubMesh } from \"../Meshes/subMesh.pure\";\r\nimport { type AbstractMesh } from \"../Meshes/abstractMesh.pure\";\r\nimport { type Mesh } from \"../Meshes/mesh.pure\";\r\nimport { PrePassConfiguration } from \"./prePassConfiguration\";\r\nimport { ImageProcessingDefinesMixin } from \"./imageProcessingConfiguration.defines\";\r\nimport { ImageProcessingConfiguration } from \"./imageProcessingConfiguration.pure\";\r\nimport { type FresnelParameters } from \"./fresnelParameters.pure\";\r\nimport { Material } from \"../Materials/material.pure\";\r\nimport { type ICustomShaderNameResolveOptions } from \"../Materials/material\";\r\nimport { MaterialPluginEvent } from \"./materialPluginEvent\";\r\nimport { MaterialDefines } from \"../Materials/materialDefines\";\r\nimport { PushMaterial } from \"./pushMaterial\";\r\nimport { type BaseTexture } from \"../Materials/Textures/baseTexture.pure\";\r\nimport { type CubeTexture } from \"../Materials/Textures/cubeTexture.pure\";\r\nimport { type RenderTargetTexture } from \"../Materials/Textures/renderTargetTexture.pure\";\r\nimport { MaterialFlags } from \"./materialFlags\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport { EffectFallbacks } from \"./effectFallbacks\";\r\nimport { type Effect, type IEffectCreationOptions } from \"./effect.pure\";\r\nimport { DetailMapConfiguration } from \"./material.detailMapConfiguration\";\r\nimport { AddClipPlaneUniforms, BindClipPlane } from \"./clipPlaneMaterialHelper\";\r\nimport { PrepareVertexPullingUniforms, BindVertexPullingUniforms, type IVertexPullingMetadata } from \"./vertexPullingHelper.functions\";\r\n\r\nimport {\r\n BindBonesParameters,\r\n BindFogParameters,\r\n BindLights,\r\n BindLogDepth,\r\n BindMorphTargetParameters,\r\n BindTextureMatrix,\r\n BindIBLParameters,\r\n HandleFallbacksForShadows,\r\n PrepareAttributesForBakedVertexAnimation,\r\n PrepareAttributesForBones,\r\n PrepareAttributesForInstances,\r\n PrepareAttributesForMorphTargets,\r\n PrepareDefinesForAttributes,\r\n PrepareDefinesForFrameBoundValues,\r\n PrepareDefinesForLights,\r\n PrepareDefinesForIBL,\r\n PrepareDefinesForMergedUV,\r\n PrepareDefinesForMisc,\r\n PrepareDefinesForMultiview,\r\n PrepareDefinesForOIT,\r\n PrepareDefinesForPrePass,\r\n PrepareUniformsAndSamplersForIBL,\r\n PrepareUniformsAndSamplersList,\r\n PrepareUniformLayoutForIBL,\r\n AreLightsTexturesReady,\r\n} from \"./materialHelper.functions\";\r\nimport { SerializationHelper } from \"../Misc/decorators.serialization\";\r\nimport { ShaderLanguage } from \"./shaderLanguage\";\r\nimport { MaterialHelperGeometryRendering } from \"./materialHelper.geometryrendering\";\r\nimport { UVDefinesMixin } from \"./uv.defines\";\r\nimport { PrepassDefinesMixin } from \"./prepass.defines\";\r\nimport { ImageProcessingMixin } from \"./imageProcessing\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\n\r\n/* eslint-disable @typescript-eslint/naming-convention */\r\n\r\nconst onCreatedEffectParameters = { effect: null as unknown as Effect, subMesh: null as unknown as Nullable<SubMesh> };\r\n\r\nclass StandardMaterialDefinesBase extends PrepassDefinesMixin(UVDefinesMixin(MaterialDefines)) {}\r\n\r\n/** @internal */\r\nexport class StandardMaterialDefines extends ImageProcessingDefinesMixin(StandardMaterialDefinesBase) {\r\n public DIFFUSE = false;\r\n public DIFFUSEDIRECTUV = 0;\r\n public BAKED_VERTEX_ANIMATION_TEXTURE = false;\r\n public AMBIENT = false;\r\n public AMBIENTDIRECTUV = 0;\r\n public OPACITY = false;\r\n public OPACITYDIRECTUV = 0;\r\n public OPACITYRGB = false;\r\n public REFLECTION = false;\r\n public EMISSIVE = false;\r\n public EMISSIVEDIRECTUV = 0;\r\n public SPECULAR = false;\r\n public SPECULARDIRECTUV = 0;\r\n public BUMP = false;\r\n public BUMPDIRECTUV = 0;\r\n public PARALLAX = false;\r\n public PARALLAX_RHS = false;\r\n public PARALLAXOCCLUSION = false;\r\n public SPECULAROVERALPHA = false;\r\n public CLIPPLANE = false;\r\n public CLIPPLANE2 = false;\r\n public CLIPPLANE3 = false;\r\n public CLIPPLANE4 = false;\r\n public CLIPPLANE5 = false;\r\n public CLIPPLANE6 = false;\r\n public ALPHATEST = false;\r\n public DEPTHPREPASS = false;\r\n public ALPHAFROMDIFFUSE = false;\r\n public POINTSIZE = false;\r\n public FOG = false;\r\n public SPECULARTERM = false;\r\n public DIFFUSEFRESNEL = false;\r\n public OPACITYFRESNEL = false;\r\n public REFLECTIONFRESNEL = false;\r\n public REFRACTIONFRESNEL = false;\r\n public EMISSIVEFRESNEL = false;\r\n public FRESNEL = false;\r\n public NORMAL = false;\r\n public TANGENT = false;\r\n public VERTEXCOLOR = false;\r\n public VERTEXALPHA = false;\r\n public NUM_BONE_INFLUENCERS = 0;\r\n public BonesPerMesh = 0;\r\n public BONETEXTURE = false;\r\n public BONES_VELOCITY_ENABLED = false;\r\n public INSTANCES = false;\r\n public THIN_INSTANCES = false;\r\n public INSTANCESCOLOR = false;\r\n public GLOSSINESS = false;\r\n public ROUGHNESS = false;\r\n public EMISSIVEASILLUMINATION = false;\r\n public LINKEMISSIVEWITHDIFFUSE = false;\r\n public REFLECTIONFRESNELFROMSPECULAR = false;\r\n public LIGHTMAP = false;\r\n public LIGHTMAPDIRECTUV = 0;\r\n public OBJECTSPACE_NORMALMAP = false;\r\n public USELIGHTMAPASSHADOWMAP = false;\r\n public REFLECTIONMAP_3D = false;\r\n public REFLECTIONMAP_SPHERICAL = false;\r\n public REFLECTIONMAP_PLANAR = false;\r\n public REFLECTIONMAP_CUBIC = false;\r\n public USE_LOCAL_REFLECTIONMAP_CUBIC = false;\r\n public USE_LOCAL_REFRACTIONMAP_CUBIC = false;\r\n public REFLECTIONMAP_PROJECTION = false;\r\n public REFLECTIONMAP_SKYBOX = false;\r\n public REFLECTIONMAP_EXPLICIT = false;\r\n public REFLECTIONMAP_EQUIRECTANGULAR = false;\r\n public REFLECTIONMAP_EQUIRECTANGULAR_FIXED = false;\r\n public REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED = false;\r\n public REFLECTIONMAP_OPPOSITEZ = false;\r\n public INVERTCUBICMAP = false;\r\n public LOGARITHMICDEPTH = false;\r\n public REFRACTION = false;\r\n public REFRACTIONMAP_3D = false;\r\n public REFLECTIONOVERALPHA = false;\r\n public TWOSIDEDLIGHTING = false;\r\n public SHADOWFLOAT = false;\r\n public MORPHTARGETS = false;\r\n public MORPHTARGETS_POSITION = false;\r\n public MORPHTARGETS_NORMAL = false;\r\n public MORPHTARGETS_TANGENT = false;\r\n public MORPHTARGETS_UV = false;\r\n public MORPHTARGETS_UV2 = false;\r\n public MORPHTARGETS_COLOR = false;\r\n public MORPHTARGETTEXTURE_HASPOSITIONS = false;\r\n public MORPHTARGETTEXTURE_HASNORMALS = false;\r\n public MORPHTARGETTEXTURE_HASTANGENTS = false;\r\n public MORPHTARGETTEXTURE_HASUVS = false;\r\n public MORPHTARGETTEXTURE_HASUV2S = false;\r\n public MORPHTARGETTEXTURE_HASCOLORS = false;\r\n public NUM_MORPH_INFLUENCERS = 0;\r\n public MORPHTARGETS_TEXTURE = false;\r\n public NONUNIFORMSCALING = false; // https://playground.babylonjs.com#V6DWIH\r\n public PREMULTIPLYALPHA = false; // https://playground.babylonjs.com#LNVJJ7\r\n public ALPHATEST_AFTERALLALPHACOMPUTATIONS = false;\r\n public ALPHABLEND = true;\r\n\r\n public RGBDLIGHTMAP = false;\r\n public RGBDREFLECTION = false;\r\n public RGBDREFRACTION = false;\r\n public MULTIVIEW = false;\r\n public ORDER_INDEPENDENT_TRANSPARENCY = false;\r\n public ORDER_INDEPENDENT_TRANSPARENCY_16BITS = false;\r\n public CAMERA_ORTHOGRAPHIC = false;\r\n public CAMERA_PERSPECTIVE = false;\r\n public AREALIGHTSUPPORTED = true;\r\n public USE_VERTEX_PULLING = false;\r\n public VERTEX_PULLING_USE_INDEX_BUFFER = false;\r\n public VERTEX_PULLING_INDEX_BUFFER_32BITS = false;\r\n public RIGHT_HANDED = false;\r\n\r\n public CLUSTLIGHT_SLICES = 0;\r\n public CLUSTLIGHT_BATCH = 0;\r\n\r\n /**\r\n * If the reflection texture on this material is in linear color space\r\n * @internal\r\n */\r\n public IS_REFLECTION_LINEAR = false;\r\n /**\r\n * If the refraction texture on this material is in linear color space\r\n * @internal\r\n */\r\n public IS_REFRACTION_LINEAR = false;\r\n\r\n public DECAL_AFTER_DETAIL = false;\r\n\r\n public TEXTURE_REPETITION_MODE = 0;\r\n\r\n /**\r\n * Initializes the Standard Material defines.\r\n * @param externalProperties The external properties\r\n */\r\n constructor(externalProperties?: { [name: string]: { type: string; default: any } }) {\r\n super(externalProperties);\r\n this.rebuild();\r\n }\r\n}\r\n\r\nclass StandardMaterialBase extends ImageProcessingMixin(PushMaterial) {}\r\n/**\r\n * This is the default material used in Babylon. It is the best trade off between quality\r\n * and performances.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/materials_introduction\r\n */\r\nexport class StandardMaterial extends StandardMaterialBase {\r\n /**\r\n * Force all the standard materials to compile to glsl even on WebGPU engines.\r\n * False by default. This is mostly meant for backward compatibility.\r\n */\r\n public static ForceGLSL = false;\r\n\r\n @serializeAsTexture(\"diffuseTexture\")\r\n private _diffuseTexture: Nullable<BaseTexture> = null;\r\n /**\r\n * The basic texture of the material as viewed under a light.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesAndMiscDirty\")\r\n public diffuseTexture: Nullable<BaseTexture>;\r\n\r\n @serializeAsTexture(\"ambientTexture\")\r\n private _ambientTexture: Nullable<BaseTexture> = null;\r\n /**\r\n * AKA Occlusion Texture in other nomenclature, it helps adding baked shadows into your material.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public ambientTexture: Nullable<BaseTexture>;\r\n\r\n @serializeAsTexture(\"opacityTexture\")\r\n private _opacityTexture: Nullable<BaseTexture> = null;\r\n /**\r\n * Define the transparency of the material from a texture.\r\n * The final alpha value can be read either from the red channel (if texture.getAlphaFromRGB is false)\r\n * or from the luminance or the current texel (if texture.getAlphaFromRGB is true)\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesAndMiscDirty\")\r\n public opacityTexture: Nullable<BaseTexture>;\r\n\r\n @serializeAsTexture(\"reflectionTexture\")\r\n private _reflectionTexture: Nullable<BaseTexture> = null;\r\n /**\r\n * Define the texture used to display the reflection.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/reflectionTexture#how-to-obtain-reflections-and-refractions\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public reflectionTexture: Nullable<BaseTexture>;\r\n\r\n @serializeAsTexture(\"emissiveTexture\")\r\n private _emissiveTexture: Nullable<BaseTexture> = null;\r\n /**\r\n * Define texture of the material as if self lit.\r\n * This will be mixed in the final result even in the absence of light.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public emissiveTexture: Nullable<BaseTexture>;\r\n\r\n @serializeAsTexture(\"specularTexture\")\r\n private _specularTexture: Nullable<BaseTexture> = null;\r\n /**\r\n * Define how the color and intensity of the highlight given by the light in the material.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public specularTexture: Nullable<BaseTexture>;\r\n\r\n @serializeAsTexture(\"bumpTexture\")\r\n private _bumpTexture: Nullable<BaseTexture> = null;\r\n /**\r\n * Bump mapping is a technique to simulate bump and dents on a rendered surface.\r\n * These are made by creating a normal map from an image. The means to do this can be found on the web, a search for 'normal map generator' will bring up free and paid for methods of doing this.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/moreMaterials#bump-map\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public bumpTexture: Nullable<BaseTexture>;\r\n\r\n @serializeAsTexture(\"lightmapTexture\")\r\n private _lightmapTexture: Nullable<BaseTexture> = null;\r\n /**\r\n * Complex lighting can be computationally expensive to compute at runtime.\r\n * To save on computation, lightmaps may be used to store calculated lighting in a texture which will be applied to a given mesh.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/lights/lights_introduction#lightmaps\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public lightmapTexture: Nullable<BaseTexture>;\r\n\r\n @serializeAsTexture(\"refractionTexture\")\r\n private _refractionTexture: Nullable<BaseTexture> = null;\r\n /**\r\n * Define the texture used to display the refraction.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/reflectionTexture#how-to-obtain-reflections-and-refractions\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public refractionTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * The color of the material lit by the environmental background lighting.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/materials_introduction#ambient-color-example\r\n */\r\n @serializeAsColor3(\"ambient\")\r\n public ambientColor = new Color3(0, 0, 0);\r\n\r\n /**\r\n * The basic color of the material as viewed under a light.\r\n */\r\n @serializeAsColor3(\"diffuse\")\r\n public diffuseColor = new Color3(1, 1, 1);\r\n\r\n /**\r\n * Define how the color and intensity of the highlight given by the light in the material.\r\n */\r\n @serializeAsColor3(\"specular\")\r\n public specularColor = new Color3(1, 1, 1);\r\n\r\n /**\r\n * Define the color of the material as if self lit.\r\n * This will be mixed in the final result even in the absence of light.\r\n */\r\n @serializeAsColor3(\"emissive\")\r\n public emissiveColor = new Color3(0, 0, 0);\r\n\r\n /**\r\n * Defines how sharp are the highlights in the material.\r\n * The bigger the value the sharper giving a more glossy feeling to the result.\r\n * Reversely, the smaller the value the blurrier giving a more rough feeling to the result.\r\n */\r\n @serialize()\r\n public specularPower = 64;\r\n\r\n @serialize(\"useAlphaFromDiffuseTexture\")\r\n private _useAlphaFromDiffuseTexture = false;\r\n /**\r\n * Does the transparency come from the diffuse texture alpha channel.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesAndMiscDirty\")\r\n public useAlphaFromDiffuseTexture: boolean;\r\n\r\n @serialize(\"useEmissiveAsIllumination\")\r\n private _useEmissiveAsIllumination = false;\r\n /**\r\n * If true, the emissive value is added into the end result, otherwise it is multiplied in.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public useEmissiveAsIllumination: boolean;\r\n\r\n @serialize(\"linkEmissiveWithDiffuse\")\r\n private _linkEmissiveWithDiffuse = false;\r\n /**\r\n * If true, some kind of energy conservation will prevent the end result to be more than 1 by reducing\r\n * the emissive level when the final color is close to one.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public linkEmissiveWithDiffuse: boolean;\r\n\r\n @serialize(\"useSpecularOverAlpha\")\r\n private _useSpecularOverAlpha = false;\r\n /**\r\n * Specifies that the material will keep the specular highlights over a transparent surface (only the most luminous ones).\r\n * A car glass is a good exemple of that. When sun reflects on it you can not see what is behind.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public useSpecularOverAlpha: boolean;\r\n\r\n @serialize(\"useReflectionOverAlpha\")\r\n private _useReflectionOverAlpha = false;\r\n /**\r\n * Specifies that the material will keeps the reflection highlights over a transparent surface (only the most luminous ones).\r\n * A car glass is a good exemple of that. When the street lights reflects on it you can not see what is behind.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public useReflectionOverAlpha: boolean;\r\n\r\n @serialize(\"disableLighting\")\r\n private _disableLighting = false;\r\n /**\r\n * Does lights from the scene impacts this material.\r\n * It can be a nice trick for performance to disable lighting on a fully emissive material.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsLightsDirty\")\r\n public disableLighting: boolean;\r\n\r\n @serialize(\"useObjectSpaceNormalMap\")\r\n private _useObjectSpaceNormalMap = false;\r\n /**\r\n * Allows using an object space normal map (instead of tangent space).\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public useObjectSpaceNormalMap: boolean;\r\n\r\n @serialize(\"useParallax\")\r\n private _useParallax = false;\r\n /**\r\n * Is parallax enabled or not.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/parallaxMapping\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public useParallax: boolean;\r\n\r\n @serialize(\"useParallaxOcclusion\")\r\n private _useParallaxOcclusion = false;\r\n /**\r\n * Is parallax occlusion enabled or not.\r\n * If true, the outcome is way more realistic than traditional Parallax but you can expect a performance hit that worthes consideration.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/parallaxMapping\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public useParallaxOcclusion: boolean;\r\n\r\n /**\r\n * Apply a scaling factor that determine which \"depth\" the height map should reprensent. A value between 0.05 and 0.1 is reasonnable in Parallax, you can reach 0.2 using Parallax Occlusion.\r\n */\r\n @serialize()\r\n public parallaxScaleBias = 0.05;\r\n\r\n @serialize(\"roughness\")\r\n private _roughness = 0;\r\n /**\r\n * Helps to define how blurry the reflections should appears in the material.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public roughness: number;\r\n\r\n /**\r\n * In case of refraction, define the value of the index of refraction.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/reflectionTexture#how-to-obtain-reflections-and-refractions\r\n */\r\n @serialize()\r\n public indexOfRefraction = 0.98;\r\n\r\n /**\r\n * Invert the refraction texture alongside the y axis.\r\n * It can be useful with procedural textures or probe for instance.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/reflectionTexture#how-to-obtain-reflections-and-refractions\r\n */\r\n @serialize()\r\n public invertRefractionY = true;\r\n\r\n /**\r\n * Defines the alpha limits in alpha test mode.\r\n */\r\n @serialize()\r\n public alphaCutOff = 0.4;\r\n\r\n @serialize(\"useLightmapAsShadowmap\")\r\n private _useLightmapAsShadowmap = false;\r\n /**\r\n * In case of light mapping, define whether the map contains light or shadow informations.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public useLightmapAsShadowmap: boolean;\r\n\r\n // Fresnel\r\n @serializeAsFresnelParameters(\"diffuseFresnelParameters\")\r\n private _diffuseFresnelParameters: FresnelParameters;\r\n /**\r\n * Define the diffuse fresnel parameters of the material.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/fresnelParameters\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsFresnelDirty\")\r\n public diffuseFresnelParameters: FresnelParameters;\r\n\r\n @serializeAsFresnelParameters(\"opacityFresnelParameters\")\r\n private _opacityFresnelParameters: FresnelParameters;\r\n /**\r\n * Define the opacity fresnel parameters of the material.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/fresnelParameters\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsFresnelAndMiscDirty\")\r\n public opacityFresnelParameters: FresnelParameters;\r\n\r\n @serializeAsFresnelParameters(\"reflectionFresnelParameters\")\r\n private _reflectionFresnelParameters: FresnelParameters;\r\n /**\r\n * Define the reflection fresnel parameters of the material.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/fresnelParameters\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsFresnelDirty\")\r\n public reflectionFresnelParameters: FresnelParameters;\r\n\r\n @serializeAsFresnelParameters(\"refractionFresnelParameters\")\r\n private _refractionFresnelParameters: FresnelParameters;\r\n /**\r\n * Define the refraction fresnel parameters of the material.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/fresnelParameters\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsFresnelDirty\")\r\n public refractionFresnelParameters: FresnelParameters;\r\n\r\n @serializeAsFresnelParameters(\"emissiveFresnelParameters\")\r\n private _emissiveFresnelParameters: FresnelParameters;\r\n /**\r\n * Define the emissive fresnel parameters of the material.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/fresnelParameters\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsFresnelDirty\")\r\n public emissiveFresnelParameters: FresnelParameters;\r\n\r\n @serialize(\"useReflectionFresnelFromSpecular\")\r\n private _useReflectionFresnelFromSpecular = false;\r\n /**\r\n * If true automatically deducts the fresnels values from the material specularity.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/fresnelParameters\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsFresnelDirty\")\r\n public useReflectionFresnelFromSpecular: boolean;\r\n\r\n @serialize(\"useGlossinessFromSpecularMapAlpha\")\r\n private _useGlossinessFromSpecularMapAlpha = false;\r\n /**\r\n * Defines if the glossiness/roughness of the material should be read from the specular map alpha channel\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public useGlossinessFromSpecularMapAlpha: boolean;\r\n\r\n @serialize(\"maxSimultaneousLights\")\r\n private _maxSimultaneousLights = 4;\r\n /**\r\n * Defines the maximum number of lights that can be used in the material\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsLightsDirty\")\r\n public maxSimultaneousLights: number;\r\n\r\n @serialize(\"invertNormalMapX\")\r\n private _invertNormalMapX = false;\r\n /**\r\n * If sets to true, x component of normal map value will invert (x = 1.0 - x).\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public invertNormalMapX: boolean;\r\n\r\n @serialize(\"invertNormalMapY\")\r\n private _invertNormalMapY = false;\r\n /**\r\n * If sets to true, y component of normal map value will invert (y = 1.0 - y).\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public invertNormalMapY: boolean;\r\n\r\n @serialize(\"twoSidedLighting\")\r\n private _twoSidedLighting = false;\r\n /**\r\n * If sets to true and backfaceCulling is false, normals will be flipped on the backside.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public twoSidedLighting: boolean;\r\n\r\n @serialize(\"applyDecalMapAfterDetailMap\")\r\n private _applyDecalMapAfterDetailMap = false;\r\n /**\r\n * If sets to true, the decal map will be applied after the detail map. Else, it is applied before (default: false)\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsMiscDirty\")\r\n public applyDecalMapAfterDetailMap: boolean;\r\n\r\n private _shadersLoaded = false;\r\n private _vertexPullingMetadata: Map<string, IVertexPullingMetadata> | null = null;\r\n\r\n /**\r\n * Defines additional PrePass parameters for the material.\r\n */\r\n public readonly prePassConfiguration: PrePassConfiguration;\r\n\r\n /**\r\n * Can this material render to prepass\r\n */\r\n public override get isPrePassCapable(): boolean {\r\n return !this.disableDepthWrite;\r\n }\r\n\r\n /**\r\n * Can this material render to several textures at once\r\n */\r\n public override get canRenderToMRT() {\r\n return true;\r\n }\r\n\r\n /**\r\n * Defines the detail map parameters for the material.\r\n */\r\n public readonly detailMap: DetailMapConfiguration;\r\n\r\n protected _renderTargets = new SmartArray<RenderTargetTexture>(16);\r\n protected _globalAmbientColor = new Color3(0, 0, 0);\r\n protected _cacheHasRenderTargetTextures = false;\r\n\r\n /**\r\n * Instantiates a new standard material.\r\n * This is the default material used in Babylon. It is the best trade off between quality\r\n * and performances.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/materials_introduction\r\n * @param name Define the name of the material in the scene\r\n * @param scene Define the scene the material belong to\r\n * @param forceGLSL Use the GLSL code generation for the shader (even on WebGPU). Default is false\r\n */\r\n constructor(name: string, scene?: Scene, forceGLSL = false) {\r\n super(name, scene, undefined, forceGLSL || StandardMaterial.ForceGLSL);\r\n\r\n this.detailMap = new DetailMapConfiguration(this);\r\n\r\n // Setup the default processing configuration to the scene.\r\n this._attachImageProcessingConfiguration(null);\r\n this.prePassConfiguration = new PrePassConfiguration();\r\n\r\n this.getRenderTargetTextures = (): SmartArray<RenderTargetTexture> => {\r\n this._renderTargets.reset();\r\n\r\n if (StandardMaterial.ReflectionTextureEnabled && this._reflectionTexture && this._reflectionTexture.isRenderTarget) {\r\n this._renderTargets.push(<RenderTargetTexture>this._reflectionTexture);\r\n }\r\n\r\n if (StandardMaterial.RefractionTextureEnabled && this._refractionTexture && this._refractionTexture.isRenderTarget) {\r\n this._renderTargets.push(<RenderTargetTexture>this._refractionTexture);\r\n }\r\n\r\n this._eventInfo.renderTargets = this._renderTargets;\r\n this._callbackPluginEventFillRenderTargetTextures(this._eventInfo);\r\n\r\n return this._renderTargets;\r\n };\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating that current material needs to register RTT\r\n */\r\n public override get hasRenderTargetTextures(): boolean {\r\n if (StandardMaterial.ReflectionTextureEnabled && this._reflectionTexture && this._reflectionTexture.isRenderTarget) {\r\n return true;\r\n }\r\n\r\n if (StandardMaterial.RefractionTextureEnabled && this._refractionTexture && this._refractionTexture.isRenderTarget) {\r\n return true;\r\n }\r\n\r\n return this._cacheHasRenderTargetTextures;\r\n }\r\n\r\n /**\r\n * Gets the current class name of the material e.g. \"StandardMaterial\"\r\n * Mainly use in serialization.\r\n * @returns the class name\r\n */\r\n public override getClassName(): string {\r\n return \"StandardMaterial\";\r\n }\r\n\r\n /**\r\n * Specifies if the material will require alpha blending\r\n * @returns a boolean specifying if alpha blending is needed\r\n */\r\n public override needAlphaBlending(): boolean {\r\n if (this._hasTransparencyMode) {\r\n return this._transparencyModeIsBlend;\r\n }\r\n\r\n if (this._disableAlphaBlending) {\r\n return false;\r\n }\r\n\r\n return (\r\n this.alpha < 1.0 ||\r\n this._opacityTexture != null ||\r\n this._shouldUseAlphaFromDiffuseTexture() ||\r\n (this._opacityFresnelParameters && this._opacityFresnelParameters.isEnabled)\r\n );\r\n }\r\n\r\n /**\r\n * Specifies if this material should be rendered in alpha test mode\r\n * @returns a boolean specifying if an alpha test is needed.\r\n */\r\n public override needAlphaTesting(): boolean {\r\n if (this._hasTransparencyMode) {\r\n return this._transparencyModeIsTest;\r\n }\r\n\r\n return this._hasAlphaChannel() && (this._transparencyMode == null || this._transparencyMode === Material.MATERIAL_ALPHATEST);\r\n }\r\n\r\n /**\r\n * @returns whether or not the alpha value of the diffuse texture should be used for alpha blending.\r\n */\r\n protected _shouldUseAlphaFromDiffuseTexture(): boolean {\r\n return this._diffuseTexture != null && this._diffuseTexture.hasAlpha && this._useAlphaFromDiffuseTexture && this._transparencyMode !== Material.MATERIAL_OPAQUE;\r\n }\r\n\r\n /**\r\n * @returns whether or not there is a usable alpha channel for transparency.\r\n */\r\n protected _hasAlphaChannel(): boolean {\r\n return (this._diffuseTexture != null && this._diffuseTexture.hasAlpha) || this._opacityTexture != null;\r\n }\r\n\r\n /**\r\n * Get the texture used for alpha test purpose.\r\n * @returns the diffuse texture in case of the standard material.\r\n */\r\n public override getAlphaTestTexture(): Nullable<BaseTexture> {\r\n return this._diffuseTexture;\r\n }\r\n\r\n /**\r\n * Get if the submesh is ready to be used and all its information available.\r\n * Child classes can use it to update shaders\r\n * @param mesh defines the mesh to check\r\n * @param subMesh defines which submesh to check\r\n * @param useInstances specifies that instances should be used\r\n * @returns a boolean indicating that the submesh is ready or not\r\n */\r\n public override isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances: boolean = false): boolean {\r\n if (!this._uniformBufferLayoutBuilt) {\r\n this.buildUniformLayout();\r\n }\r\n\r\n const drawWrapper = subMesh._drawWrapper;\r\n\r\n if (drawWrapper.effect && this.isFrozen) {\r\n if (drawWrapper._wasPreviouslyReady && drawWrapper._wasPreviouslyUsingInstances === useInstances) {\r\n return true;\r\n }\r\n }\r\n\r\n if (!subMesh.materialDefines) {\r\n this._callbackPluginEventGeneric(MaterialPluginEvent.GetDefineNames, this._eventInfo);\r\n subMesh.materialDefines = new StandardMaterialDefines(this._eventInfo.defineNames);\r\n }\r\n\r\n const scene = this.getScene();\r\n const defines = <StandardMaterialDefines>subMesh.materialDefines;\r\n if (this._isReadyForSubMesh(subMesh)) {\r\n return true;\r\n }\r\n\r\n const engine = scene.getEngine();\r\n\r\n // Lights\r\n defines._needNormals = PrepareDefinesForLights(scene, mesh, defines, true, this._maxSimultaneousLights, this._disableLighting);\r\n\r\n if (!AreLightsTexturesReady(scene, mesh, this._maxSimultaneousLights, this._disableLighting)) {\r\n return false;\r\n }\r\n\r\n // Multiview\r\n PrepareDefinesForMultiview(scene, defines);\r\n\r\n // PrePass\r\n const oit = this.needAlphaBlendingForMesh(mesh) && this.getScene().useOrderIndependentTransparency;\r\n PrepareDefinesForPrePass(scene, defines, this.canRenderToMRT && !oit);\r\n\r\n // Order independant transparency\r\n PrepareDefinesForOIT(scene, defines, oit);\r\n\r\n MaterialHelperGeometryRendering.PrepareDefines(engine.currentRenderPassId, mesh, defines);\r\n\r\n // Textures\r\n if (defines._areTexturesDirty) {\r\n this._eventInfo.hasRenderTargetTextures = false;\r\n this._callbackPluginEventHasRenderTargetTextures(this._eventInfo);\r\n this._cacheHasRenderTargetTextures = this._eventInfo.hasRenderTargetTextures;\r\n defines._needUVs = false;\r\n for (let i = 1; i <= Constants.MAX_SUPPORTED_UV_SETS; ++i) {\r\n defines[\"MAINUV\" + i] = false;\r\n }\r\n if (scene.texturesEnabled) {\r\n defines.DIFFUSEDIRECTUV = 0;\r\n defines.BUMPDIRECTUV = 0;\r\n defines.AMBIENTDIRECTUV = 0;\r\n defines.OPACITYDIRECTUV = 0;\r\n defines.EMISSIVEDIRECTUV = 0;\r\n defines.SPECULARDIRECTUV = 0;\r\n defines.LIGHTMAPDIRECTUV = 0;\r\n\r\n if (this._diffuseTexture && StandardMaterial.DiffuseTextureEnabled) {\r\n if (!this._diffuseTexture.isReadyOrNotBlocking()) {\r\n return false;\r\n } else {\r\n PrepareDefinesForMergedUV(this._diffuseTexture, defines, \"DIFFUSE\");\r\n }\r\n } else {\r\n defines.DIFFUSE = false;\r\n }\r\n\r\n if (this._ambientTexture && StandardMaterial.AmbientTextureEnabled) {\r\n if (!this._ambientTexture.isReadyOrNotBlocking()) {\r\n return false;\r\n } else {\r\n PrepareDefinesForMergedUV(this._ambientTexture, defines, \"AMBIENT\");\r\n }\r\n } else {\r\n defines.AMBIENT = false;\r\n }\r\n\r\n if (this._opacityTexture && StandardMaterial.OpacityTextureEnabled) {\r\n if (!this._opacityTexture.isReadyOrNotBlocking()) {\r\n return false;\r\n } else {\r\n PrepareDefinesForMergedUV(this._opacityTexture, defines, \"OPACITY\");\r\n defines.OPACITYRGB = this._opacityTexture.getAlphaFromRGB;\r\n }\r\n } else {\r\n defines.OPACITY = false;\r\n }\r\n if (this._reflectionTexture && StandardMaterial.ReflectionTextureEnabled) {\r\n defines.ROUGHNESS = this._roughness > 0;\r\n defines.REFLECTIONOVERALPHA = this._useReflectionOverAlpha;\r\n } else {\r\n defines.ROUGHNESS = false;\r\n defines.REFLECTIONOVERALPHA = false;\r\n }\r\n if (!PrepareDefinesForIBL(scene, this._reflectionTexture, defines)) {\r\n return false;\r\n }\r\n\r\n if (this._emissiveTexture && StandardMaterial.EmissiveTextureEnabled) {\r\n if (!this._emissiveTexture.isReadyOrNotBlocking()) {\r\n return false;\r\n } else {\r\n PrepareDefinesForMergedUV(this._emissiveTexture, defines, \"EMISSIVE\");\r\n }\r\n } else {\r\n defines.EMISSIVE = false;\r\n }\r\n\r\n if (this._lightmapTexture && StandardMaterial.LightmapTextureEnabled) {\r\n if (!this._lightmapTexture.isReadyOrNotBlocking()) {\r\n return false;\r\n } else {\r\n PrepareDefinesForMergedUV(this._lightmapTexture, defines, \"LIGHTMAP\");\r\n defines.USELIGHTMAPASSHADOWMAP = this._useLightmapAsShadowmap;\r\n defines.RGBDLIGHTMAP = this._lightmapTexture.isRGBD;\r\n }\r\n } else {\r\n defines.LIGHTMAP = false;\r\n }\r\n\r\n if (this._specularTexture && StandardMaterial.SpecularTextureEnabled) {\r\n if (!this._specularTexture.isReadyOrNotBlocking()) {\r\n return false;\r\n } else {\r\n PrepareDefinesForMergedUV(this._specularTexture, defines, \"SPECULAR\");\r\n defines.GLOSSINESS = this._useGlossinessFromSpecularMapAlpha;\r\n }\r\n } else {\r\n defines.SPECULAR = false;\r\n }\r\n\r\n if (scene.getEngine().getCaps().standardDerivatives && this._bumpTexture && StandardMaterial.BumpTextureEnabled) {\r\n // Bump texture can not be not blocking.\r\n if (!this._bumpTexture.isReady()) {\r\n return false;\r\n } else {\r\n PrepareDefinesForMergedUV(this._bumpTexture, defines, \"BUMP\");\r\n\r\n defines.PARALLAX = this._useParallax;\r\n defines.PARALLAX_RHS = scene.useRightHandedSystem;\r\n defines.PARALLAXOCCLUSION = this._useParallaxOcclusion;\r\n }\r\n\r\n defines.OBJECTSPACE_NORMALMAP = this._useObjectSpaceNormalMap;\r\n } else {\r\n defines.BUMP = false;\r\n defines.PARALLAX = false;\r\n defines.PARALLAX_RHS = false;\r\n defines.PARALLAXOCCLUSION = false;\r\n }\r\n\r\n if (this._refractionTexture && StandardMaterial.RefractionTextureEnabled) {\r\n if (!this._refractionTexture.isReadyOrNotBlocking()) {\r\n return false;\r\n } else {\r\n defines._needUVs = true;\r\n defines.REFRACTION = true;\r\n\r\n defines.REFRACTIONMAP_3D = this._refractionTexture.isCube;\r\n defines.RGBDREFRACTION = this._refractionTexture.isRGBD;\r\n defines.USE_LOCAL_REFRACTIONMAP_CUBIC = (<any>this._refractionTexture).boundingBoxSize ? true : false;\r\n }\r\n } else {\r\n defines.REFRACTION = false;\r\n }\r\n\r\n defines.TWOSIDEDLIGHTING = !this._backFaceCulling && this._twoSidedLighting;\r\n } else {\r\n defines.DIFFUSE = false;\r\n defines.AMBIENT = false;\r\n defines.OPACITY = false;\r\n defines.REFLECTION = false;\r\n defines.EMISSIVE = false;\r\n defines.LIGHTMAP = false;\r\n defines.BUMP = false;\r\n defines.REFRACTION = false;\r\n }\r\n\r\n defines.ALPHAFROMDIFFUSE = this._shouldUseAlphaFromDiffuseTexture();\r\n\r\n defines.EMISSIVEASILLUMINATION = this._useEmissiveAsIllumination;\r\n\r\n defines.LINKEMISSIVEWITHDIFFUSE = this._linkEmissiveWithDiffuse;\r\n\r\n defines.SPECULAROVERALPHA = this._useSpecularOverAlpha;\r\n\r\n defines.PREMULTIPLYALPHA = this.alphaMode === Constants.ALPHA_PREMULTIPLIED || this.alphaMode === Constants.ALPHA_PREMULTIPLIED_PORTERDUFF;\r\n\r\n defines.ALPHATEST_AFTERALLALPHACOMPUTATIONS = this.transparencyMode !== null;\r\n\r\n defines.ALPHABLEND = this.transparencyMode === null || this.needAlphaBlendingForMesh(mesh); // check on null for backward compatibility\r\n\r\n defines.TEXTURE_REPETITION_MODE = engine.version > 1 || engine.isWebGPU ? this.textureRepetitionMode : 0;\r\n }\r\n\r\n this._eventInfo.isReadyForSubMesh = true;\r\n this._eventInfo.defines = defines;\r\n this._eventInfo.subMesh = subMesh;\r\n this._callbackPluginEventIsReadyForSubMesh(this._eventInfo);\r\n\r\n if (!this._eventInfo.isReadyForSubMesh) {\r\n return false;\r\n }\r\n\r\n if (defines._areImageProcessingDirty && this._imageProcessingConfiguration) {\r\n if (!this._imageProcessingConfiguration.isReady()) {\r\n return false;\r\n }\r\n\r\n this._imageProcessingConfiguration.prepareDefines(defines);\r\n\r\n defines.IS_REFLECTION_LINEAR = this.reflectionTexture != null && !this.reflectionTexture.gammaSpace;\r\n defines.IS_REFRACTION_LINEAR = this.refractionTexture != null && !this.refractionTexture.gammaSpace;\r\n }\r\n\r\n if (defines._areFresnelDirty) {\r\n if (StandardMaterial.FresnelEnabled) {\r\n // Fresnel\r\n if (\r\n this._diffuseFresnelParameters ||\r\n this._opacityFresnelParameters ||\r\n this._emissiveFresnelParameters ||\r\n this._refractionFresnelParameters ||\r\n this._reflectionFresnelParameters\r\n ) {\r\n defines.DIFFUSEFRESNEL = this._diffuseFresnelParameters && this._diffuseFresnelParameters.isEnabled;\r\n\r\n defines.OPACITYFRESNEL = this._opacityFresnelParameters && this._opacityFresnelParameters.isEnabled;\r\n\r\n defines.REFLECTIONFRESNEL = this._reflectionFresnelParameters && this._reflectionFresnelParameters.isEnabled;\r\n\r\n defines.REFLECTIONFRESNELFROMSPECULAR = this._useReflectionFresnelFromSpecular;\r\n\r\n defines.REFRACTIONFRESNEL = this._refractionFresnelParameters && this._refractionFresnelParameters.isEnabled;\r\n\r\n defines.EMISSIVEFRESNEL = this._emissiveFresnelParameters && this._emissiveFresnelParameters.isEnabled;\r\n\r\n defines._needNormals = true;\r\n defines.FRESNEL = true;\r\n }\r\n } else {\r\n defines.FRESNEL = false;\r\n }\r\n }\r\n\r\n // Check if lights are ready\r\n if (defines[\"AREALIGHTUSED\"] || defines[\"CLUSTLIGHT_BATCH\"]) {\r\n for (let index = 0; index < mesh.lightSources.length; index++) {\r\n if (!mesh.lightSources[index]._isReady()) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n // Misc.\r\n PrepareDefinesForMisc(\r\n mesh,\r\n scene,\r\n this._useLogarithmicDepth,\r\n this.pointsCloud,\r\n this.fogEnabled,\r\n this.needAlphaTestingForMesh(mesh),\r\n defines,\r\n this._applyDecalMapAfterDetailMap,\r\n this._useVertexPulling,\r\n subMesh.getRenderingMesh(),\r\n this._isVertexOutputInvariant\r\n );\r\n\r\n // Values that need to be evaluated on every frame\r\n PrepareDefinesForFrameBoundValues(scene, engine, this, defines, useInstances, null, subMesh.getRenderingMesh().hasThinInstances);\r\n\r\n // External config\r\n this._eventInfo.defines = defines;\r\n this._eventInfo.mesh = mesh;\r\n this._callbackPluginEventPrepareDefinesBeforeAttributes(this._eventInfo);\r\n\r\n // Attribs\r\n PrepareDefinesForAttributes(mesh, defines, true, true, true);\r\n\r\n // External config\r\n this._callbackPluginEventPrepareDefines(this._eventInfo);\r\n\r\n // Get correct effect\r\n let forceWasNotReadyPreviously = false;\r\n\r\n if (defines.isDirty) {\r\n const lightDisposed = defines._areLightsDisposed;\r\n defines.markAsProcessed();\r\n\r\n // Fallbacks\r\n const fallbacks = new EffectFallbacks();\r\n if (defines.REFLECTION) {\r\n fallbacks.addFallback(0, \"REFLECTION\");\r\n }\r\n\r\n if (defines.SPECULAR) {\r\n fallbacks.addFallback(0, \"SPECULAR\");\r\n }\r\n\r\n if (defines.BUMP) {\r\n fallbacks.addFallback(0, \"BUMP\");\r\n }\r\n\r\n if (defines.PARALLAX) {\r\n fallbacks.addFallback(1, \"PARALLAX\");\r\n }\r\n\r\n if (defines.PARALLAX_RHS) {\r\n fallbacks.addFallback(1, \"PARALLAX_RHS\");\r\n }\r\n\r\n if (defines.PARALLAXOCCLUSION) {\r\n fallbacks.addFallback(0, \"PARALLAXOCCLUSION\");\r\n }\r\n\r\n if (defines.SPECULAROVERALPHA) {\r\n fallbacks.addFallback(0, \"SPECULAROVERALPHA\");\r\n }\r\n\r\n if (defines.FOG) {\r\n fallbacks.addFallback(1, \"FOG\");\r\n }\r\n\r\n if (defines.POINTSIZE) {\r\n fallbacks.addFallback(0, \"POINTSIZE\");\r\n }\r\n\r\n if (defines.LOGARITHMICDEPTH) {\r\n fallbacks.addFallback(0, \"LOGARITHMICDEPTH\");\r\n }\r\n\r\n HandleFallbacksForShadows(defines, fallbacks, this._maxSimultaneousLights);\r\n\r\n if (defines.SPECULARTERM) {\r\n fallbacks.addFallback(0, \"SPECULARTERM\");\r\n }\r\n\r\n if (defines.DIFFUSEFRESNEL) {\r\n fallbacks.addFallback(1, \"DIFFUSEFRESNEL\");\r\n }\r\n\r\n if (defines.OPACITYFRESNEL) {\r\n fallbacks.addFallback(2, \"OPACITYFRESNEL\");\r\n }\r\n\r\n if (defines.REFLECTIONFRESNEL) {\r\n fallbacks.addFallback(3, \"REFLECTIONFRESNEL\");\r\n }\r\n\r\n if (defines.EMISSIVEFRESNEL) {\r\n fallbacks.addFallback(4, \"EMISSIVEFRESNEL\");\r\n }\r\n\r\n if (defines.FRESNEL) {\r\n fallbacks.addFallback(4, \"FRESNEL\");\r\n }\r\n\r\n if (defines.MULTIVIEW) {\r\n fallbacks.addFallback(0, \"MULTIVIEW\");\r\n }\r\n\r\n //Attributes\r\n const attribs = [VertexBuffer.PositionKind];\r\n\r\n if (defines.NORMAL) {\r\n attribs.push(VertexBuffer.NormalKind);\r\n }\r\n\r\n if (defines.TANGENT) {\r\n attribs.push(VertexBuffer.TangentKind);\r\n }\r\n\r\n for (let i = 1; i <= Constants.MAX_SUPPORTED_UV_SETS; ++i) {\r\n if (defines[\"UV\" + i]) {\r\n attribs.push(`uv${i === 1 ? \"\" : i}`);\r\n }\r\n }\r\n\r\n if (defines.VERTEXCOLOR) {\r\n attribs.push(VertexBuffer.ColorKind);\r\n }\r\n\r\n PrepareAttributesForBones(attribs, mesh, defines, fallbacks);\r\n PrepareAttributesForInstances(attribs, defines);\r\n PrepareAttributesForMorphTargets(attribs, mesh, defines);\r\n PrepareAttributesForBakedVertexAnimation(attribs, mesh, defines);\r\n\r\n let shaderName = \"default\";\r\n\r\n const uniforms = [\r\n \"world\",\r\n \"view\",\r\n \"viewProjection\",\r\n \"vEyePosition\",\r\n \"vLightsType\",\r\n \"vAmbientColor\",\r\n \"vDiffuseColor\",\r\n \"vSpecularColor\",\r\n \"vEmissiveColor\",\r\n \"visibility\",\r\n \"vFogInfos\",\r\n \"vFogColor\",\r\n \"pointSize\",\r\n \"vDiffuseInfos\",\r\n \"vAmbientInfos\",\r\n \"vOpacityInfos\",\r\n \"vEmissiveInfos\",\r\n \"vSpecularInfos\",\r\n \"vBumpInfos\",\r\n \"vLightmapInfos\",\r\n \"vRefractionInfos\",\r\n \"mBones\",\r\n \"diffuseMatrix\",\r\n \"ambientMatrix\",\r\n \"opacityMatrix\",\r\n \"emissiveMatrix\",\r\n \"specularMatrix\",\r\n \"bumpMatrix\",\r\n \"normalMatrix\",\r\n \"lightmapMatrix\",\r\n \"refractionMatrix\",\r\n \"diffuseLeftColor\",\r\n \"diffuseRightColor\",\r\n \"opacityParts\",\r\n \"reflectionLeftColor\",\r\n \"reflectionRightColor\",\r\n \"emissiveLeftColor\",\r\n \"emissiveRightColor\",\r\n \"refractionLeftColor\",\r\n \"refractionRightColor\",\r\n \"vRefractionPosition\",\r\n \"vRefractionSize\",\r\n \"logarithmicDepthConstant\",\r\n \"vTangentSpaceParams\",\r\n \"alphaCutOff\",\r\n \"boneTextureInfo\",\r\n \"morphTargetTextureInfo\",\r\n \"morphTargetTextureIndices\",\r\n \"cameraInfo\",\r\n \"vTextureRepetitionHexTilingParams\",\r\n ];\r\n\r\n const samplers = [\r\n \"diffuseSampler\",\r\n \"ambientSampler\",\r\n \"opacitySampler\",\r\n \"reflectionCubeSampler\",\r\n \"reflection2DSampler\",\r\n \"emissiveSampler\",\r\n \"specularSampler\",\r\n \"bumpSampler\",\r\n \"lightmapSampler\",\r\n \"refractionCubeSampler\",\r\n \"refraction2DSampler\",\r\n \"boneSampler\",\r\n \"morphTargets\",\r\n \"oitDepthSampler\",\r\n \"oitFrontColorSampler\",\r\n \"areaLightsLTC1Sampler\",\r\n \"areaLightsLTC2Sampler\",\r\n ];\r\n\r\n PrepareUniformsAndSamplersForIBL(uniforms, samplers, false);\r\n const uniformBuffers = [\"Material\", \"Scene\", \"Mesh\"];\r\n\r\n const indexParameters = { maxSimultaneousLights: this._maxSimultaneousLights, maxSimultaneousMorphTargets: defines.NUM_MORPH_INFLUENCERS };\r\n\r\n this._eventInfo.fallbacks = fallbacks;\r\n this._eventInfo.fallbackRank = 0;\r\n this._eventInfo.defines = defines;\r\n this._eventInfo.uniforms = uniforms;\r\n this._eventInfo.attributes = attribs;\r\n this._eventInfo.samplers = samplers;\r\n this._eventInfo.uniformBuffersNames = uniformBuffers;\r\n this._eventInfo.customCode = undefined;\r\n this._eventInfo.mesh = mesh;\r\n this._eventInfo.indexParameters = indexParameters;\r\n this._callbackPluginEventGeneric(MaterialPluginEvent.PrepareEffect, this._eventInfo);\r\n\r\n MaterialHelperGeometryRendering.AddUniformsAndSamplers(uniforms, samplers);\r\n\r\n PrePassConfiguration.AddUniforms(uniforms);\r\n PrePassConfiguration.AddSamplers(samplers);\r\n\r\n if (ImageProcessingConfiguration) {\r\n ImageProcessingConfiguration.PrepareUniforms(uniforms, defines);\r\n ImageProcessingConfiguration.PrepareSamplers(samplers, defines);\r\n }\r\n\r\n PrepareUniformsAndSamplersList(<IEffectCreationOptions>{\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: defines,\r\n maxSimultaneousLights: this._maxSimultaneousLights,\r\n shaderLanguage: this._shaderLanguage,\r\n });\r\n\r\n AddClipPlaneUniforms(uniforms);\r\n\r\n // Vertex pulling metadata uniforms\r\n if (this._useVertexPulling) {\r\n const renderingMesh = subMesh.getRenderingMesh();\r\n const geometry = renderingMesh?.geometry;\r\n if (geometry) {\r\n this._vertexPullingMetadata = PrepareVertexPullingUniforms(geometry);\r\n if (this._vertexPullingMetadata) {\r\n this._vertexPullingMetadata.forEach((_, attribute) => {\r\n uniforms.push(`vp_${attribute}_info`);\r\n });\r\n }\r\n }\r\n } else {\r\n this._vertexPullingMetadata = null;\r\n }\r\n\r\n const csnrOptions: ICustomShaderNameResolveOptions = {};\r\n\r\n if (this.customShaderNameResolve) {\r\n shaderName = this.customShaderNameResolve(shaderName, uniforms, uniformBuffers, samplers, defines, attribs, csnrOptions);\r\n }\r\n\r\n const join = defines.toString();\r\n\r\n const previousEffect = subMesh.effect;\r\n const effect = scene.getEngine().createEffect(\r\n shaderName,\r\n <IEffectCreationOptions>{\r\n attributes: attribs,\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: join,\r\n fallbacks: fallbacks,\r\n onCompiled: this.onCompiled,\r\n onError: this.onError,\r\n indexParameters,\r\n processFinalCode: csnrOptions.processFinalCode,\r\n processCodeAfterIncludes: this._eventInfo.customCode,\r\n multiTarget: defines.PREPASS,\r\n shaderLanguage: this._shaderLanguage,\r\n extraInitializationsAsync: this._shadersLoaded\r\n ? undefined\r\n : async () => {\r\n if (this._shaderLanguage === ShaderLanguage.WGSL) {\r\n await Promise.all([import(\"../ShadersWGSL/default.vertex\"), import(\"../ShadersWGSL/default.fragment\")]);\r\n } else {\r\n await Promise.all([import(\"../Shaders/default.vertex\"), import(\"../Shaders/default.fragment\")]);\r\n }\r\n this._shadersLoaded = true;\r\n },\r\n },\r\n engine\r\n );\r\n\r\n this._eventInfo.customCode = undefined;\r\n\r\n if (effect) {\r\n if (this._onEffectCreatedObservable) {\r\n onCreatedEffectParameters.effect = effect;\r\n onCreatedEffectParameters.subMesh = subMesh;\r\n this._onEffectCreatedObservable.notifyObservers(onCreatedEffectParameters);\r\n }\r\n\r\n // Use previous effect while new one is compiling\r\n if (this.allowShaderHotSwapping && previousEffect && !effect.isReady()) {\r\n defines.markAsUnprocessed();\r\n\r\n forceWasNotReadyPreviously = this.isFrozen;\r\n\r\n if (lightDisposed) {\r\n // re register in case it takes more than one frame.\r\n defines._areLightsDisposed = true;\r\n return false;\r\n }\r\n } else {\r\n scene.resetCachedMaterial();\r\n subMesh.setEffect(effect, defines, this._materialContext);\r\n }\r\n }\r\n }\r\n\r\n if (!subMesh.effect || !subMesh.effect.isReady()) {\r\n return false;\r\n }\r\n\r\n defines._renderId = scene.getRenderId();\r\n drawWrapper._wasPreviouslyReady = forceWasNotReadyPreviously ? false : true;\r\n drawWrapper._wasPreviouslyUsingInstances = useInstances;\r\n\r\n this._checkScenePerformancePriority();\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Builds the material UBO layouts.\r\n * Used internally during the effect preparation.\r\n */\r\n public override buildUniformLayout(): void {\r\n // Order is important !\r\n const ubo = this._uniformBuffer;\r\n ubo.addUniform(\"diffuseLeftColor\", 4);\r\n ubo.addUniform(\"diffuseRightColor\", 4);\r\n ubo.addUniform(\"opacityParts\", 4);\r\n ubo.addUniform(\"reflectionLeftColor\", 4);\r\n ubo.addUniform(\"reflectionRightColor\", 4);\r\n ubo.addUniform(\"refractionLeftColor\", 4);\r\n ubo.addUniform(\"refractionRightColor\", 4);\r\n ubo.addUniform(\"emissiveLeftColor\", 4);\r\n ubo.addUniform(\"emissiveRightColor\", 4);\r\n\r\n ubo.addUniform(\"vDiffuseInfos\", 2);\r\n ubo.addUniform(\"vAmbientInfos\", 2);\r\n ubo.addUniform(\"vOpacityInfos\", 2);\r\n ubo.addUniform(\"vEmissiveInfos\", 2);\r\n ubo.addUniform(\"vLightmapInfos\", 2);\r\n ubo.addUniform(\"vSpecularInfos\", 2);\r\n ubo.addUniform(\"vBumpInfos\", 3);\r\n\r\n ubo.addUniform(\"diffuseMatrix\", 16);\r\n ubo.addUniform(\"ambientMatrix\", 16);\r\n ubo.addUniform(\"opacityMatrix\", 16);\r\n ubo.addUniform(\"emissiveMatrix\", 16);\r\n ubo.addUniform(\"lightmapMatrix\", 16);\r\n ubo.addUniform(\"specularMatrix\", 16);\r\n ubo.addUniform(\"bumpMatrix\", 16);\r\n ubo.addUniform(\"vTangentSpaceParams\", 2);\r\n ubo.addUniform(\"pointSize\", 1);\r\n ubo.addUniform(\"alphaCutOff\", 1);\r\n ubo.addUniform(\"refractionMatrix\", 16);\r\n ubo.addUniform(\"vRefractionInfos\", 4);\r\n ubo.addUniform(\"vRefractionPosition\", 3);\r\n ubo.addUniform(\"vRefractionSize\", 3);\r\n ubo.addUniform(\"vSpecularColor\", 4);\r\n ubo.addUniform(\"vEmissiveColor\", 3);\r\n ubo.addUniform(\"vDiffuseColor\", 4);\r\n ubo.addUniform(\"vAmbientColor\", 3);\r\n ubo.addUniform(\"cameraInfo\", 4);\r\n ubo.addUniform(\"vTextureRepetitionHexTilingParams\", 4);\r\n\r\n PrepareUniformLayoutForIBL(ubo, false, true);\r\n\r\n super.buildUniformLayout();\r\n }\r\n\r\n /**\r\n * Binds the submesh to this material by preparing the effect and shader to draw\r\n * @param world defines the world transformation matrix\r\n * @param mesh defines the mesh containing the submesh\r\n * @param subMesh defines the submesh to bind the material to\r\n */\r\n public override bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void {\r\n const scene = this.getScene();\r\n\r\n const defines = <StandardMaterialDefines>subMesh.materialDefines;\r\n if (!defines) {\r\n return;\r\n }\r\n\r\n const effect = subMesh.effect;\r\n if (!effect) {\r\n return;\r\n }\r\n this._activeEffect = effect;\r\n\r\n // Matrices Mesh.\r\n mesh.getMeshUniformBuffer().bindToEffect(effect, \"Mesh\");\r\n mesh.transferToEffect(world);\r\n\r\n // Binding unconditionally\r\n this._uniformBuffer.bindToEffect(effect, \"Material\");\r\n\r\n this.prePassConfiguration.bindForSubMesh(this._activeEffect, scene, mesh, world, this.isFrozen);\r\n\r\n MaterialHelperGeometryRendering.Bind(scene.getEngine().currentRenderPassId, this._activeEffect, mesh, world, this);\r\n\r\n const camera = scene.activeCamera;\r\n if (camera) {\r\n this._uniformBuffer.updateFloat4(\"cameraInfo\", camera.minZ, camera.maxZ, 0, 0);\r\n } else {\r\n this._uniformBuffer.updateFloat4(\"cameraInfo\", 0, 0, 0, 0);\r\n }\r\n\r\n const hexParams = this.textureRepetitionHexTilingParams;\r\n this._uniformBuffer.updateFloat4(\"vTextureRepetitionHexTilingParams\", hexParams[0], hexParams[1], hexParams[2], hexParams[3]);\r\n\r\n this._eventInfo.subMesh = subMesh;\r\n this._callbackPluginEventHardBindForSubMesh(this._eventInfo);\r\n\r\n // Normal Matrix\r\n if (defines.OBJECTSPACE_NORMALMAP) {\r\n world.toNormalMatrix(this._normalMatrix);\r\n this.bindOnlyNormalMatrix(this._normalMatrix);\r\n }\r\n\r\n const mustRebind = this._mustRebind(scene, effect, subMesh, mesh.visibility);\r\n const needToAlwaysBindUniformBuffers = scene.getEngine()._features.needToAlwaysBindUniformBuffers;\r\n\r\n // Bones\r\n BindBonesParameters(mesh, effect);\r\n\r\n // Vertex pulling\r\n if (this._vertexPullingMetadata) {\r\n BindVertexPullingUniforms(effect, this._vertexPullingMetadata);\r\n }\r\n\r\n const ubo = this._uniformBuffer;\r\n if (mustRebind) {\r\n this.bindViewProjection(effect);\r\n if (!ubo.useUbo || !this.isFrozen || !ubo.isSync || subMesh._drawWrapper._forceRebindOnNextCall) {\r\n if (StandardMaterial.FresnelEnabled && defines.FRESNEL) {\r\n // Fresnel\r\n if (this.diffuseFresnelParameters && this.diffuseFresnelParameters.isEnabled) {\r\n ubo.updateColor4(\"diffuseLeftColor\", this.diffuseFresnelParameters.leftColor, this.diffuseFresnelParameters.power);\r\n ubo.updateColor4(\"diffuseRightColor\", this.diffuseFresnelParameters.rightColor, this.diffuseFresnelParameters.bias);\r\n }\r\n\r\n if (this.opacityFresnelParameters && this.opacityFresnelParameters.isEnabled) {\r\n const opacityParts = TmpColors.Color3[0];\r\n opacityParts.set(\r\n this.opacityFresnelParameters.leftColor.toLuminance(),\r\n this.opacityFresnelParameters.rightColor.toLuminance(),\r\n this.opacityFresnelParameters.bias\r\n );\r\n ubo.updateColor4(\"opacityParts\", opacityParts, this.opacityFresnelParameters.power);\r\n }\r\n\r\n if (this.reflectionFresnelParameters && this.reflectionFresnelParameters.isEnabled) {\r\n ubo.updateColor4(\"reflectionLeftColor\", this.reflectionFresnelParameters.leftColor, this.reflectionFresnelParameters.power);\r\n ubo.updateColor4(\"reflectionRightColor\", this.reflectionFresnelParameters.rightColor, this.reflectionFresnelParameters.bias);\r\n }\r\n\r\n if (this.refractionFresnelParameters && this.refractionFresnelParameters.isEnabled) {\r\n ubo.updateColor4(\"refractionLeftColor\", this.refractionFresnelParameters.leftColor, this.refractionFresnelParameters.power);\r\n ubo.updateColor4(\"refractionRightColor\", this.refractionFresnelParameters.rightColor, this.refractionFresnelParameters.bias);\r\n }\r\n\r\n if (this.emissiveFresnelParameters && this.emissiveFresnelParameters.isEnabled) {\r\n ubo.updateColor4(\"emissiveLeftColor\", this.emissiveFresnelParameters.leftColor, this.emissiveFresnelParameters.power);\r\n ubo.updateColor4(\"emissiveRightColor\", this.emissiveFresnelParameters.rightColor, this.emissiveFresnelParameters.bias);\r\n }\r\n }\r\n\r\n // Textures\r\n if (scene.texturesEnabled) {\r\n if (this._diffuseTexture && StandardMaterial.DiffuseTextureEnabled) {\r\n ubo.updateFloat2(\"vDiffuseInfos\", this._diffuseTexture.coordinatesIndex, this._diffuseTexture.level);\r\n BindTextureMatrix(this._diffuseTexture, ubo, \"diffuse\");\r\n }\r\n\r\n if (this._ambientTexture && StandardMaterial.AmbientTextureEnabled) {\r\n ubo.updateFloat2(\"vAmbientInfos\", this._ambientTexture.coordinatesIndex, this._ambientTexture.level);\r\n BindTextureMatrix(this._ambientTexture, ubo, \"ambient\");\r\n }\r\n\r\n if (this._opacityTexture && StandardMaterial.OpacityTextureEnabled) {\r\n ubo.updateFloat2(\"vOpacityInfos\", this._opacityTexture.coordinatesIndex, this._opacityTexture.level);\r\n BindTextureMatrix(this._opacityTexture, ubo, \"opacity\");\r\n }\r\n\r\n if (this._hasAlphaChannel()) {\r\n ubo.updateFloat(\"alphaCutOff\", this.alphaCutOff);\r\n }\r\n\r\n BindIBLParameters(scene, defines, ubo, Color3.White(), this._reflectionTexture, false, false, true, false, false, false, this.roughness);\r\n if (!this._reflectionTexture || !StandardMaterial.ReflectionTextureEnabled) {\r\n ubo.updateFloat2(\"vReflectionInfos\", 0.0, this.roughness);\r\n }\r\n\r\n if (this._emissiveTexture && StandardMaterial.EmissiveTextureEnabled) {\r\n ubo.updateFloat2(\"vEmissiveInfos\", this._emissiveTexture.coordinatesIndex, this._emissiveTexture.level);\r\n BindTextureMatrix(this._emissiveTexture, ubo, \"emissive\");\r\n }\r\n\r\n if (this._lightmapTexture && StandardMaterial.LightmapTextureEnabled) {\r\n ubo.updateFloat2(\"vLightmapInfos\", this._lightmapTexture.coordinatesIndex, this._lightmapTexture.level);\r\n BindTextureMatrix(this._lightmapTexture, ubo, \"lightmap\");\r\n }\r\n\r\n if (this._specularTexture && StandardMaterial.SpecularTextureEnabled) {\r\n ubo.updateFloat2(\"vSpecularInfos\", this._specularTexture.coordinatesIndex, this._specularTexture.level);\r\n BindTextureMatrix(this._specularTexture, ubo, \"specular\");\r\n }\r\n\r\n if (this._bumpTexture && scene.getEngine().getCaps().standardDerivatives && StandardMaterial.BumpTextureEnabled) {\r\n ubo.updateFloat3(\"vBumpInfos\", this._bumpTexture.coordinatesIndex, 1.0 / this._bumpTexture.level, this.parallaxScaleBias);\r\n BindTextureMatrix(this._bumpTexture, ubo, \"bump\");\r\n\r\n if (scene._mirroredCameraPosition) {\r\n ubo.updateFloat2(\"vTangentSpaceParams\", this._invertNormalMapX ? 1.0 : -1.0, this._invertNormalMapY ? 1.0 : -1.0);\r\n } else {\r\n ubo.updateFloat2(\"vTangentSpaceParams\", this._invertNormalMapX ? -1.0 : 1.0, this._invertNormalMapY ? -1.0 : 1.0);\r\n }\r\n }\r\n\r\n if (this._refractionTexture && StandardMaterial.RefractionTextureEnabled) {\r\n let depth = 1.0;\r\n if (!this._refractionTexture.isCube) {\r\n ubo.updateMatrix(\"refractionMatrix\", this._refractionTexture.getReflectionTextureMatrix());\r\n\r\n if ((<any>this._refractionTexture).depth) {\r\n depth = (<any>this._refractionTexture).depth;\r\n }\r\n }\r\n ubo.updateFloat4(\"vRefractionInfos\", this._refractionTexture.level, this.indexOfRefraction, depth, this.invertRefractionY ? -1 : 1);\r\n\r\n if ((<any>this._refractionTexture).boundingBoxSize) {\r\n const cubeTexture = <CubeTexture>this._refractionTexture;\r\n\r\n ubo.updateVector3(\"vRefractionPosition\", cubeTexture.boundingBoxPosition);\r\n ubo.updateVector3(\"vRefractionSize\", cubeTexture.boundingBoxSize);\r\n }\r\n }\r\n }\r\n\r\n // Point size\r\n if (this.pointsCloud) {\r\n ubo.updateFloat(\"pointSize\", this.pointSize);\r\n }\r\n\r\n ubo.updateColor4(\"vSpecularColor\", this.specularColor, this.specularPower);\r\n\r\n ubo.updateColor3(\"vEmissiveColor\", StandardMaterial.EmissiveTextureEnabled ? this.emissiveColor : Color3.BlackReadOnly);\r\n ubo.updateColor4(\"vDiffuseColor\", this.diffuseColor, this.alpha);\r\n\r\n scene.ambientColor.multiplyToRef(this.ambientColor, this._globalAmbientColor);\r\n ubo.updateColor3(\"vAmbientColor\", this._globalAmbientColor);\r\n }\r\n\r\n // Textures\r\n if (scene.texturesEnabled) {\r\n if (this._diffuseTexture && StandardMaterial.DiffuseTextureEnabled) {\r\n effect.setTexture(\"diffuseSampler\", this._diffuseTexture);\r\n }\r\n\r\n if (this._ambientTexture && StandardMaterial.AmbientTextureEnabled) {\r\n effect.setTexture(\"ambientSampler\", this._ambientTexture);\r\n }\r\n\r\n if (this._opacityTexture && StandardMaterial.OpacityTextureEnabled) {\r\n effect.setTexture(\"opacitySampler\", this._opacityTexture);\r\n }\r\n\r\n if (this._reflectionTexture && StandardMaterial.ReflectionTextureEnabled) {\r\n if (this._reflectionTexture.isCube) {\r\n effect.setTexture(\"reflectionCubeSampler\", this._reflectionTexture);\r\n } else {\r\n effect.setTexture(\"reflection2DSampler\", this._reflectionTexture);\r\n }\r\n }\r\n\r\n if (this._emissiveTexture && StandardMaterial.EmissiveTextureEnabled) {\r\n effect.setTexture(\"emissiveSampler\", this._emissiveTexture);\r\n }\r\n\r\n if (this._lightmapTexture && StandardMaterial.LightmapTextureEnabled) {\r\n effect.setTexture(\"lightmapSampler\", this._lightmapTexture);\r\n }\r\n\r\n if (this._specularTexture && StandardMaterial.SpecularTextureEnabled) {\r\n effect.setTexture(\"specularSampler\", this._specularTexture);\r\n }\r\n\r\n if (this._bumpTexture && scene.getEngine().getCaps().standardDerivatives && StandardMaterial.BumpTextureEnabled) {\r\n effect.setTexture(\"bumpSampler\", this._bumpTexture);\r\n }\r\n\r\n if (this._refractionTexture && StandardMaterial.RefractionTextureEnabled) {\r\n if (this._refractionTexture.isCube) {\r\n effect.setTexture(\"refractionCubeSampler\", this._refractionTexture);\r\n } else {\r\n effect.setTexture(\"refraction2DSampler\", this._refractionTexture);\r\n }\r\n }\r\n }\r\n\r\n // OIT with depth peeling\r\n if (this.getScene().useOrderIndependentTransparency && this.needAlphaBlendingForMesh(mesh)) {\r\n this.getScene().depthPeelingRenderer!.bind(effect);\r\n }\r\n\r\n this._eventInfo.subMesh = subMesh;\r\n this._callbackPluginEventBindForSubMesh(this._eventInfo);\r\n\r\n // Clip plane\r\n BindClipPlane(effect, this, scene);\r\n\r\n // Colors\r\n this.bindEyePosition(effect);\r\n } else if (needToAlwaysBindUniformBuffers) {\r\n this._needToBindSceneUbo = true;\r\n }\r\n\r\n // Lights\r\n if ((mustRebind || !this.isFrozen || needToAlwaysBindUniformBuffers) && scene.lightsEnabled && !this._disableLighting) {\r\n BindLights(scene, mesh, effect, defines, this._maxSimultaneousLights);\r\n }\r\n\r\n if (mustRebind || !this.isFrozen) {\r\n // View\r\n if (\r\n (scene.fogEnabled && mesh.applyFog && scene.fogMode !== Scene.FOGMODE_NONE) ||\r\n this._reflectionTexture ||\r\n this._refractionTexture ||\r\n mesh.receiveShadows ||\r\n defines.PREPASS ||\r\n defines[\"CLUSTLIGHT_BATCH\"]\r\n ) {\r\n this.bindView(effect);\r\n }\r\n\r\n // Fog\r\n BindFogParameters(scene, mesh, effect);\r\n\r\n // Morph targets\r\n if (defines.NUM_MORPH_INFLUENCERS) {\r\n BindMorphTargetParameters(mesh, effect);\r\n }\r\n\r\n if (defines.BAKED_VERTEX_ANIMATION_TEXTURE) {\r\n mesh.bakedVertexAnimationManager?.bind(effect, defines.INSTANCES);\r\n }\r\n\r\n // Log. depth\r\n if (this.useLogarithmicDepth) {\r\n BindLogDepth(defines, effect, scene);\r\n }\r\n\r\n // image processing\r\n if (this._imageProcessingConfiguration && !this._imageProcessingConfiguration.applyByPostProcess) {\r\n this._imageProcessingConfiguration.bind(this._activeEffect);\r\n }\r\n }\r\n\r\n this._afterBind(mesh, this._activeEffect, subMesh);\r\n ubo.update();\r\n }\r\n\r\n /**\r\n * Get the list of animatables in the material.\r\n * @returns the list of animatables object used in the material\r\n */\r\n public override getAnimatables(): IAnimatable[] {\r\n const results = super.getAnimatables();\r\n\r\n if (this._diffuseTexture && this._diffuseTexture.animations && this._diffuseTexture.animations.length > 0) {\r\n results.push(this._diffuseTexture);\r\n }\r\n\r\n if (this._ambientTexture && this._ambientTexture.animations && this._ambientTexture.animations.length > 0) {\r\n results.push(this._ambientTexture);\r\n }\r\n\r\n if (this._opacityTexture && this._opacityTexture.animations && this._opacityTexture.animations.length > 0) {\r\n results.push(this._opacityTexture);\r\n }\r\n\r\n if (this._reflectionTexture && this._reflectionTexture.animations && this._reflectionTexture.animations.length > 0) {\r\n results.push(this._reflectionTexture);\r\n }\r\n\r\n if (this._emissiveTexture && this._emissiveTexture.animations && this._emissiveTexture.animations.length > 0) {\r\n results.push(this._emissiveTexture);\r\n }\r\n\r\n if (this._specularTexture && this._specularTexture.animations && this._specularTexture.animations.length > 0) {\r\n results.push(this._specularTexture);\r\n }\r\n\r\n if (this._bumpTexture && this._bumpTexture.animations && this._bumpTexture.animations.length > 0) {\r\n results.push(this._bumpTexture);\r\n }\r\n\r\n if (this._lightmapTexture && this._lightmapTexture.animations && this._lightmapTexture.animations.length > 0) {\r\n results.push(this._lightmapTexture);\r\n }\r\n\r\n if (this._refractionTexture && this._refractionTexture.animations && this._refractionTexture.animations.length > 0) {\r\n results.push(this._refractionTexture);\r\n }\r\n\r\n return results;\r\n }\r\n\r\n /**\r\n * Gets the active textures from the material\r\n * @returns an array of textures\r\n */\r\n public override getActiveTextures(): BaseTexture[] {\r\n const activeTextures = super.getActiveTextures();\r\n\r\n if (this._diffuseTexture) {\r\n activeTextures.push(this._diffuseTexture);\r\n }\r\n\r\n if (this._ambientTexture) {\r\n activeTextures.push(this._ambientTexture);\r\n }\r\n\r\n if (this._opacityTexture) {\r\n activeTextures.push(this._opacityTexture);\r\n }\r\n\r\n if (this._reflectionTexture) {\r\n activeTextures.push(this._reflectionTexture);\r\n }\r\n\r\n if (this._emissiveTexture) {\r\n activeTextures.push(this._emissiveTexture);\r\n }\r\n\r\n if (this._specularTexture) {\r\n activeTextures.push(this._specularTexture);\r\n }\r\n\r\n if (this._bumpTexture) {\r\n activeTextures.push(this._bumpTexture);\r\n }\r\n\r\n if (this._lightmapTexture) {\r\n activeTextures.push(this._lightmapTexture);\r\n }\r\n\r\n if (this._refractionTexture) {\r\n activeTextures.push(this._refractionTexture);\r\n }\r\n\r\n return activeTextures;\r\n }\r\n\r\n /**\r\n * Specifies if the material uses a texture\r\n * @param texture defines the texture to check against the material\r\n * @returns a boolean specifying if the material uses the texture\r\n */\r\n public override hasTexture(texture: BaseTexture): boolean {\r\n if (super.hasTexture(texture)) {\r\n return true;\r\n }\r\n\r\n if (this._diffuseTexture === texture) {\r\n return true;\r\n }\r\n\r\n if (this._ambientTexture === texture) {\r\n return true;\r\n }\r\n\r\n if (this._opacityTexture === texture) {\r\n return true;\r\n }\r\n\r\n if (this._reflectionTexture === texture) {\r\n return true;\r\n }\r\n\r\n if (this._emissiveTexture === texture) {\r\n return true;\r\n }\r\n\r\n if (this._specularTexture === texture) {\r\n return true;\r\n }\r\n\r\n if (this._bumpTexture === texture) {\r\n return true;\r\n }\r\n\r\n if (this._lightmapTexture === texture) {\r\n return true;\r\n }\r\n\r\n if (this._refractionTexture === texture) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Disposes the material\r\n * @param forceDisposeEffect specifies if effects should be forcefully disposed\r\n * @param forceDisposeTextures specifies if textures should be forcefully disposed\r\n */\r\n public override dispose(forceDisposeEffect?: boolean, forceDisposeTextures?: boolean): void {\r\n if (forceDisposeTextures) {\r\n this._diffuseTexture?.dispose();\r\n this._ambientTexture?.dispose();\r\n this._opacityTexture?.dispose();\r\n this._reflectionTexture?.dispose();\r\n this._emissiveTexture?.dispose();\r\n this._specularTexture?.dispose();\r\n this._bumpTexture?.dispose();\r\n this._lightmapTexture?.dispose();\r\n this._refractionTexture?.dispose();\r\n }\r\n\r\n if (this._imageProcessingConfiguration && this._imageProcessingObserver) {\r\n this._imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingObserver);\r\n }\r\n\r\n super.dispose(forceDisposeEffect, forceDisposeTextures);\r\n }\r\n\r\n /**\r\n * Makes a duplicate of the material, and gives it a new name\r\n * @param name defines the new name for the duplicated material\r\n * @param cloneTexturesOnlyOnce - if a texture is used in more than one channel (e.g diffuse and opacity), only clone it once and reuse it on the other channels. Default false.\r\n * @param rootUrl defines the root URL to use to load textures\r\n * @returns the cloned material\r\n */\r\n public override clone(name: string, cloneTexturesOnlyOnce: boolean = true, rootUrl = \"\"): StandardMaterial {\r\n const result = SerializationHelper.Clone(() => new StandardMaterial(name, this.getScene()), this, { cloneTexturesOnlyOnce });\r\n\r\n result.name = name;\r\n result.id = name;\r\n\r\n this.stencil.copyTo(result.stencil);\r\n\r\n this._clonePlugins(result, rootUrl);\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Creates a standard material from parsed material data\r\n * @param source defines the JSON representation of the material\r\n * @param scene defines the hosting scene\r\n * @param rootUrl defines the root URL to use to load textures and relative dependencies\r\n * @returns a new standard material\r\n */\r\n public static override Parse(source: any, scene: Scene, rootUrl: string): StandardMaterial {\r\n const material = SerializationHelper.Parse(() => new StandardMaterial(source.name, scene), source, scene, rootUrl);\r\n\r\n if (source.stencil) {\r\n material.stencil.parse(source.stencil, scene, rootUrl);\r\n }\r\n\r\n Material._ParsePlugins(source, material, scene, rootUrl);\r\n\r\n return material;\r\n }\r\n\r\n // Flags used to enable or disable a type of texture for all Standard Materials\r\n /**\r\n * Are diffuse textures enabled in the application.\r\n */\r\n public static get DiffuseTextureEnabled(): boolean {\r\n return MaterialFlags.DiffuseTextureEnabled;\r\n }\r\n public static set DiffuseTextureEnabled(value: boolean) {\r\n MaterialFlags.DiffuseTextureEnabled = value;\r\n }\r\n\r\n /**\r\n * Are detail textures enabled in the application.\r\n */\r\n public static get DetailTextureEnabled(): boolean {\r\n return MaterialFlags.DetailTextureEnabled;\r\n }\r\n public static set DetailTextureEnabled(value: boolean) {\r\n MaterialFlags.DetailTextureEnabled = value;\r\n }\r\n\r\n /**\r\n * Are ambient textures enabled in the application.\r\n */\r\n public static get AmbientTextureEnabled(): boolean {\r\n return MaterialFlags.AmbientTextureEnabled;\r\n }\r\n public static set AmbientTextureEnabled(value: boolean) {\r\n MaterialFlags.AmbientTextureEnabled = value;\r\n }\r\n\r\n /**\r\n * Are opacity textures enabled in the application.\r\n */\r\n public static get OpacityTextureEnabled(): boolean {\r\n return MaterialFlags.OpacityTextureEnabled;\r\n }\r\n public static set OpacityTextureEnabled(value: boolean) {\r\n MaterialFlags.OpacityTextureEnabled = value;\r\n }\r\n\r\n /**\r\n * Are reflection textures enabled in the application.\r\n */\r\n public static get ReflectionTextureEnabled(): boolean {\r\n return MaterialFlags.ReflectionTextureEnabled;\r\n }\r\n public static set ReflectionTextureEnabled(value: boolean) {\r\n MaterialFlags.ReflectionTextureEnabled = value;\r\n }\r\n\r\n /**\r\n * Are emissive textures enabled in the application.\r\n */\r\n public static get EmissiveTextureEnabled(): boolean {\r\n return MaterialFlags.EmissiveTextureEnabled;\r\n }\r\n public static set EmissiveTextureEnabled(value: boolean) {\r\n MaterialFlags.EmissiveTextureEnabled = value;\r\n }\r\n\r\n /**\r\n * Are specular textures enabled in the application.\r\n */\r\n public static get SpecularTextureEnabled(): boolean {\r\n return MaterialFlags.SpecularTextureEnabled;\r\n }\r\n public static set SpecularTextureEnabled(value: boolean) {\r\n MaterialFlags.SpecularTextureEnabled = value;\r\n }\r\n\r\n /**\r\n * Are bump textures enabled in the application.\r\n */\r\n public static get BumpTextureEnabled(): boolean {\r\n return MaterialFlags.BumpTextureEnabled;\r\n }\r\n public static set BumpTextureEnabled(value: boolean) {\r\n MaterialFlags.BumpTextureEnabled = value;\r\n }\r\n\r\n /**\r\n * Are lightmap textures enabled in the application.\r\n */\r\n public static get LightmapTextureEnabled(): boolean {\r\n return MaterialFlags.LightmapTextureEnabled;\r\n }\r\n public static set LightmapTextureEnabled(value: boolean) {\r\n MaterialFlags.LightmapTextureEnabled = value;\r\n }\r\n\r\n /**\r\n * Are refraction textures enabled in the application.\r\n */\r\n public static get RefractionTextureEnabled(): boolean {\r\n return MaterialFlags.RefractionTextureEnabled;\r\n }\r\n public static set RefractionTextureEnabled(value: boolean) {\r\n MaterialFlags.RefractionTextureEnabled = value;\r\n }\r\n\r\n /**\r\n * Are color grading textures enabled in the application.\r\n */\r\n public static get ColorGradingTextureEnabled(): boolean {\r\n return MaterialFlags.ColorGradingTextureEnabled;\r\n }\r\n public static set ColorGradingTextureEnabled(value: boolean) {\r\n MaterialFlags.ColorGradingTextureEnabled = value;\r\n }\r\n\r\n /**\r\n * Are fresnels enabled in the application.\r\n */\r\n public static get FresnelEnabled(): boolean {\r\n return MaterialFlags.FresnelEnabled;\r\n }\r\n public static set FresnelEnabled(value: boolean) {\r\n MaterialFlags.FresnelEnabled = value;\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for standardMaterial.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterStandardMaterial(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n RegisterClass(\"BABYLON.StandardMaterial\", StandardMaterial);\r\n\r\n Scene.DefaultMaterialFactory = (scene: Scene) => {\r\n return new StandardMaterial(\"default material\", scene);\r\n };\r\n}\r\n\r\n// #region GENERATED_SIDE_EFFECT_STUBS — do not edit, regenerate with `npm run generate:side-effect-stubs`\r\nimport { _MissingSideEffectProperty } from \"../Misc/devTools\";\r\n\r\nif (!Object.getOwnPropertyDescriptor(StandardMaterial.prototype, \"decalMap\")) {\r\n Object.defineProperty(StandardMaterial.prototype, \"decalMap\", _MissingSideEffectProperty(\"StandardMaterial\", \"decalMap\"));\r\n}\r\n// #endregion GENERATED_SIDE_EFFECT_STUBS\r\n"]}
1
+ {"version":3,"file":"standardMaterial.pure.js","sourceRoot":"","sources":["../../../../dev/core/src/Materials/standardMaterial.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { serialize, serializeAsColor3, expandToProperty, serializeAsFresnelParameters, serializeAsTexture } from \"../Misc/decorators\";\r\nimport { SmartArray } from \"../Misc/smartArray\";\r\nimport { type IAnimatable } from \"../Animations/animatable.interface\";\r\nimport { type Nullable } from \"../types\";\r\nimport { Scene } from \"../scene.pure\";\r\nimport { type Matrix } from \"../Maths/math.vector.pure\";\r\nimport { Color3, TmpColors } from \"../Maths/math.color.pure\";\r\nimport { VertexBuffer } from \"../Buffers/buffer.pure\";\r\nimport { type SubMesh } from \"../Meshes/subMesh.pure\";\r\nimport { type AbstractMesh } from \"../Meshes/abstractMesh.pure\";\r\nimport { type Mesh } from \"../Meshes/mesh.pure\";\r\nimport { PrePassConfiguration } from \"./prePassConfiguration\";\r\nimport { ImageProcessingDefinesMixin } from \"./imageProcessingConfiguration.defines\";\r\nimport { ImageProcessingConfiguration, RegisterImageProcessingConfiguration } from \"./imageProcessingConfiguration.pure\";\r\nimport { type FresnelParameters } from \"./fresnelParameters.pure\";\r\nimport { Material } from \"../Materials/material.pure\";\r\nimport { type ICustomShaderNameResolveOptions } from \"../Materials/material\";\r\nimport { MaterialPluginEvent } from \"./materialPluginEvent\";\r\nimport { MaterialDefines } from \"../Materials/materialDefines\";\r\nimport { PushMaterial } from \"./pushMaterial\";\r\nimport { type BaseTexture } from \"../Materials/Textures/baseTexture.pure\";\r\nimport { type CubeTexture } from \"../Materials/Textures/cubeTexture.pure\";\r\nimport { type RenderTargetTexture } from \"../Materials/Textures/renderTargetTexture.pure\";\r\nimport { MaterialFlags } from \"./materialFlags\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport { EffectFallbacks } from \"./effectFallbacks\";\r\nimport { type Effect, type IEffectCreationOptions } from \"./effect.pure\";\r\nimport { DetailMapConfiguration } from \"./material.detailMapConfiguration\";\r\nimport { AddClipPlaneUniforms, BindClipPlane } from \"./clipPlaneMaterialHelper\";\r\nimport { PrepareVertexPullingUniforms, BindVertexPullingUniforms, type IVertexPullingMetadata } from \"./vertexPullingHelper.functions\";\r\n\r\nimport {\r\n BindBonesParameters,\r\n BindFogParameters,\r\n BindLights,\r\n BindLogDepth,\r\n BindMorphTargetParameters,\r\n BindTextureMatrix,\r\n BindIBLParameters,\r\n HandleFallbacksForShadows,\r\n PrepareAttributesForBakedVertexAnimation,\r\n PrepareAttributesForBones,\r\n PrepareAttributesForInstances,\r\n PrepareAttributesForMorphTargets,\r\n PrepareDefinesForAttributes,\r\n PrepareDefinesForFrameBoundValues,\r\n PrepareDefinesForLights,\r\n PrepareDefinesForIBL,\r\n PrepareDefinesForMergedUV,\r\n PrepareDefinesForMisc,\r\n PrepareDefinesForMultiview,\r\n PrepareDefinesForOIT,\r\n PrepareDefinesForPrePass,\r\n PrepareUniformsAndSamplersForIBL,\r\n PrepareUniformsAndSamplersList,\r\n PrepareUniformLayoutForIBL,\r\n AreLightsTexturesReady,\r\n} from \"./materialHelper.functions\";\r\nimport { SerializationHelper } from \"../Misc/decorators.serialization\";\r\nimport { ShaderLanguage } from \"./shaderLanguage\";\r\nimport { MaterialHelperGeometryRendering } from \"./materialHelper.geometryrendering\";\r\nimport { UVDefinesMixin } from \"./uv.defines\";\r\nimport { PrepassDefinesMixin } from \"./prepass.defines\";\r\nimport { ImageProcessingMixin } from \"./imageProcessing\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\n\r\n/* eslint-disable @typescript-eslint/naming-convention */\r\n\r\nconst onCreatedEffectParameters = { effect: null as unknown as Effect, subMesh: null as unknown as Nullable<SubMesh> };\r\n\r\nclass StandardMaterialDefinesBase extends PrepassDefinesMixin(UVDefinesMixin(MaterialDefines)) {}\r\n\r\n/** @internal */\r\nexport class StandardMaterialDefines extends ImageProcessingDefinesMixin(StandardMaterialDefinesBase) {\r\n public DIFFUSE = false;\r\n public DIFFUSEDIRECTUV = 0;\r\n public BAKED_VERTEX_ANIMATION_TEXTURE = false;\r\n public AMBIENT = false;\r\n public AMBIENTDIRECTUV = 0;\r\n public OPACITY = false;\r\n public OPACITYDIRECTUV = 0;\r\n public OPACITYRGB = false;\r\n public REFLECTION = false;\r\n public EMISSIVE = false;\r\n public EMISSIVEDIRECTUV = 0;\r\n public SPECULAR = false;\r\n public SPECULARDIRECTUV = 0;\r\n public BUMP = false;\r\n public BUMPDIRECTUV = 0;\r\n public PARALLAX = false;\r\n public PARALLAX_RHS = false;\r\n public PARALLAXOCCLUSION = false;\r\n public SPECULAROVERALPHA = false;\r\n public CLIPPLANE = false;\r\n public CLIPPLANE2 = false;\r\n public CLIPPLANE3 = false;\r\n public CLIPPLANE4 = false;\r\n public CLIPPLANE5 = false;\r\n public CLIPPLANE6 = false;\r\n public ALPHATEST = false;\r\n public DEPTHPREPASS = false;\r\n public ALPHAFROMDIFFUSE = false;\r\n public POINTSIZE = false;\r\n public FOG = false;\r\n public SPECULARTERM = false;\r\n public DIFFUSEFRESNEL = false;\r\n public OPACITYFRESNEL = false;\r\n public REFLECTIONFRESNEL = false;\r\n public REFRACTIONFRESNEL = false;\r\n public EMISSIVEFRESNEL = false;\r\n public FRESNEL = false;\r\n public NORMAL = false;\r\n public TANGENT = false;\r\n public VERTEXCOLOR = false;\r\n public VERTEXALPHA = false;\r\n public NUM_BONE_INFLUENCERS = 0;\r\n public BonesPerMesh = 0;\r\n public BONETEXTURE = false;\r\n public BONES_VELOCITY_ENABLED = false;\r\n public INSTANCES = false;\r\n public THIN_INSTANCES = false;\r\n public INSTANCESCOLOR = false;\r\n public GLOSSINESS = false;\r\n public ROUGHNESS = false;\r\n public EMISSIVEASILLUMINATION = false;\r\n public LINKEMISSIVEWITHDIFFUSE = false;\r\n public REFLECTIONFRESNELFROMSPECULAR = false;\r\n public LIGHTMAP = false;\r\n public LIGHTMAPDIRECTUV = 0;\r\n public OBJECTSPACE_NORMALMAP = false;\r\n public USELIGHTMAPASSHADOWMAP = false;\r\n public REFLECTIONMAP_3D = false;\r\n public REFLECTIONMAP_SPHERICAL = false;\r\n public REFLECTIONMAP_PLANAR = false;\r\n public REFLECTIONMAP_CUBIC = false;\r\n public USE_LOCAL_REFLECTIONMAP_CUBIC = false;\r\n public USE_LOCAL_REFRACTIONMAP_CUBIC = false;\r\n public REFLECTIONMAP_PROJECTION = false;\r\n public REFLECTIONMAP_SKYBOX = false;\r\n public REFLECTIONMAP_EXPLICIT = false;\r\n public REFLECTIONMAP_EQUIRECTANGULAR = false;\r\n public REFLECTIONMAP_EQUIRECTANGULAR_FIXED = false;\r\n public REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED = false;\r\n public REFLECTIONMAP_OPPOSITEZ = false;\r\n public INVERTCUBICMAP = false;\r\n public LOGARITHMICDEPTH = false;\r\n public REFRACTION = false;\r\n public REFRACTIONMAP_3D = false;\r\n public REFLECTIONOVERALPHA = false;\r\n public TWOSIDEDLIGHTING = false;\r\n public SHADOWFLOAT = false;\r\n public MORPHTARGETS = false;\r\n public MORPHTARGETS_POSITION = false;\r\n public MORPHTARGETS_NORMAL = false;\r\n public MORPHTARGETS_TANGENT = false;\r\n public MORPHTARGETS_UV = false;\r\n public MORPHTARGETS_UV2 = false;\r\n public MORPHTARGETS_COLOR = false;\r\n public MORPHTARGETTEXTURE_HASPOSITIONS = false;\r\n public MORPHTARGETTEXTURE_HASNORMALS = false;\r\n public MORPHTARGETTEXTURE_HASTANGENTS = false;\r\n public MORPHTARGETTEXTURE_HASUVS = false;\r\n public MORPHTARGETTEXTURE_HASUV2S = false;\r\n public MORPHTARGETTEXTURE_HASCOLORS = false;\r\n public NUM_MORPH_INFLUENCERS = 0;\r\n public MORPHTARGETS_TEXTURE = false;\r\n public NONUNIFORMSCALING = false; // https://playground.babylonjs.com#V6DWIH\r\n public PREMULTIPLYALPHA = false; // https://playground.babylonjs.com#LNVJJ7\r\n public ALPHATEST_AFTERALLALPHACOMPUTATIONS = false;\r\n public ALPHABLEND = true;\r\n\r\n public RGBDLIGHTMAP = false;\r\n public RGBDREFLECTION = false;\r\n public RGBDREFRACTION = false;\r\n public MULTIVIEW = false;\r\n public ORDER_INDEPENDENT_TRANSPARENCY = false;\r\n public ORDER_INDEPENDENT_TRANSPARENCY_16BITS = false;\r\n public CAMERA_ORTHOGRAPHIC = false;\r\n public CAMERA_PERSPECTIVE = false;\r\n public AREALIGHTSUPPORTED = true;\r\n public USE_VERTEX_PULLING = false;\r\n public VERTEX_PULLING_USE_INDEX_BUFFER = false;\r\n public VERTEX_PULLING_INDEX_BUFFER_32BITS = false;\r\n public RIGHT_HANDED = false;\r\n\r\n public CLUSTLIGHT_SLICES = 0;\r\n public CLUSTLIGHT_BATCH = 0;\r\n\r\n /**\r\n * If the reflection texture on this material is in linear color space\r\n * @internal\r\n */\r\n public IS_REFLECTION_LINEAR = false;\r\n /**\r\n * If the refraction texture on this material is in linear color space\r\n * @internal\r\n */\r\n public IS_REFRACTION_LINEAR = false;\r\n\r\n public DECAL_AFTER_DETAIL = false;\r\n\r\n public TEXTURE_REPETITION_MODE = 0;\r\n\r\n /**\r\n * Initializes the Standard Material defines.\r\n * @param externalProperties The external properties\r\n */\r\n constructor(externalProperties?: { [name: string]: { type: string; default: any } }) {\r\n super(externalProperties);\r\n this.rebuild();\r\n }\r\n}\r\n\r\nclass StandardMaterialBase extends ImageProcessingMixin(PushMaterial) {}\r\n/**\r\n * This is the default material used in Babylon. It is the best trade off between quality\r\n * and performances.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/materials_introduction\r\n */\r\nexport class StandardMaterial extends StandardMaterialBase {\r\n /**\r\n * Force all the standard materials to compile to glsl even on WebGPU engines.\r\n * False by default. This is mostly meant for backward compatibility.\r\n */\r\n public static ForceGLSL = false;\r\n\r\n @serializeAsTexture(\"diffuseTexture\")\r\n private _diffuseTexture: Nullable<BaseTexture> = null;\r\n /**\r\n * The basic texture of the material as viewed under a light.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesAndMiscDirty\")\r\n public accessor diffuseTexture: Nullable<BaseTexture>;\r\n\r\n @serializeAsTexture(\"ambientTexture\")\r\n private _ambientTexture: Nullable<BaseTexture> = null;\r\n /**\r\n * AKA Occlusion Texture in other nomenclature, it helps adding baked shadows into your material.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor ambientTexture: Nullable<BaseTexture>;\r\n\r\n @serializeAsTexture(\"opacityTexture\")\r\n private _opacityTexture: Nullable<BaseTexture> = null;\r\n /**\r\n * Define the transparency of the material from a texture.\r\n * The final alpha value can be read either from the red channel (if texture.getAlphaFromRGB is false)\r\n * or from the luminance or the current texel (if texture.getAlphaFromRGB is true)\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesAndMiscDirty\")\r\n public accessor opacityTexture: Nullable<BaseTexture>;\r\n\r\n @serializeAsTexture(\"reflectionTexture\")\r\n private _reflectionTexture: Nullable<BaseTexture> = null;\r\n /**\r\n * Define the texture used to display the reflection.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/reflectionTexture#how-to-obtain-reflections-and-refractions\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor reflectionTexture: Nullable<BaseTexture>;\r\n\r\n @serializeAsTexture(\"emissiveTexture\")\r\n private _emissiveTexture: Nullable<BaseTexture> = null;\r\n /**\r\n * Define texture of the material as if self lit.\r\n * This will be mixed in the final result even in the absence of light.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor emissiveTexture: Nullable<BaseTexture>;\r\n\r\n @serializeAsTexture(\"specularTexture\")\r\n private _specularTexture: Nullable<BaseTexture> = null;\r\n /**\r\n * Define how the color and intensity of the highlight given by the light in the material.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor specularTexture: Nullable<BaseTexture>;\r\n\r\n @serializeAsTexture(\"bumpTexture\")\r\n private _bumpTexture: Nullable<BaseTexture> = null;\r\n /**\r\n * Bump mapping is a technique to simulate bump and dents on a rendered surface.\r\n * These are made by creating a normal map from an image. The means to do this can be found on the web, a search for 'normal map generator' will bring up free and paid for methods of doing this.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/moreMaterials#bump-map\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor bumpTexture: Nullable<BaseTexture>;\r\n\r\n @serializeAsTexture(\"lightmapTexture\")\r\n private _lightmapTexture: Nullable<BaseTexture> = null;\r\n /**\r\n * Complex lighting can be computationally expensive to compute at runtime.\r\n * To save on computation, lightmaps may be used to store calculated lighting in a texture which will be applied to a given mesh.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/lights/lights_introduction#lightmaps\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor lightmapTexture: Nullable<BaseTexture>;\r\n\r\n @serializeAsTexture(\"refractionTexture\")\r\n private _refractionTexture: Nullable<BaseTexture> = null;\r\n /**\r\n * Define the texture used to display the refraction.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/reflectionTexture#how-to-obtain-reflections-and-refractions\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor refractionTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * The color of the material lit by the environmental background lighting.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/materials_introduction#ambient-color-example\r\n */\r\n @serializeAsColor3(\"ambient\")\r\n public ambientColor = new Color3(0, 0, 0);\r\n\r\n /**\r\n * The basic color of the material as viewed under a light.\r\n */\r\n @serializeAsColor3(\"diffuse\")\r\n public diffuseColor = new Color3(1, 1, 1);\r\n\r\n /**\r\n * Define how the color and intensity of the highlight given by the light in the material.\r\n */\r\n @serializeAsColor3(\"specular\")\r\n public specularColor = new Color3(1, 1, 1);\r\n\r\n /**\r\n * Define the color of the material as if self lit.\r\n * This will be mixed in the final result even in the absence of light.\r\n */\r\n @serializeAsColor3(\"emissive\")\r\n public emissiveColor = new Color3(0, 0, 0);\r\n\r\n /**\r\n * Defines how sharp are the highlights in the material.\r\n * The bigger the value the sharper giving a more glossy feeling to the result.\r\n * Reversely, the smaller the value the blurrier giving a more rough feeling to the result.\r\n */\r\n @serialize()\r\n public specularPower = 64;\r\n\r\n @serialize(\"useAlphaFromDiffuseTexture\")\r\n private _useAlphaFromDiffuseTexture = false;\r\n /**\r\n * Does the transparency come from the diffuse texture alpha channel.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesAndMiscDirty\")\r\n public accessor useAlphaFromDiffuseTexture: boolean;\r\n\r\n @serialize(\"useEmissiveAsIllumination\")\r\n private _useEmissiveAsIllumination = false;\r\n /**\r\n * If true, the emissive value is added into the end result, otherwise it is multiplied in.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor useEmissiveAsIllumination: boolean;\r\n\r\n @serialize(\"linkEmissiveWithDiffuse\")\r\n private _linkEmissiveWithDiffuse = false;\r\n /**\r\n * If true, some kind of energy conservation will prevent the end result to be more than 1 by reducing\r\n * the emissive level when the final color is close to one.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor linkEmissiveWithDiffuse: boolean;\r\n\r\n @serialize(\"useSpecularOverAlpha\")\r\n private _useSpecularOverAlpha = false;\r\n /**\r\n * Specifies that the material will keep the specular highlights over a transparent surface (only the most luminous ones).\r\n * A car glass is a good exemple of that. When sun reflects on it you can not see what is behind.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor useSpecularOverAlpha: boolean;\r\n\r\n @serialize(\"useReflectionOverAlpha\")\r\n private _useReflectionOverAlpha = false;\r\n /**\r\n * Specifies that the material will keeps the reflection highlights over a transparent surface (only the most luminous ones).\r\n * A car glass is a good exemple of that. When the street lights reflects on it you can not see what is behind.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor useReflectionOverAlpha: boolean;\r\n\r\n @serialize(\"disableLighting\")\r\n private _disableLighting = false;\r\n /**\r\n * Does lights from the scene impacts this material.\r\n * It can be a nice trick for performance to disable lighting on a fully emissive material.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsLightsDirty\")\r\n public accessor disableLighting: boolean;\r\n\r\n @serialize(\"useObjectSpaceNormalMap\")\r\n private _useObjectSpaceNormalMap = false;\r\n /**\r\n * Allows using an object space normal map (instead of tangent space).\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor useObjectSpaceNormalMap: boolean;\r\n\r\n @serialize(\"useParallax\")\r\n private _useParallax = false;\r\n /**\r\n * Is parallax enabled or not.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/parallaxMapping\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor useParallax: boolean;\r\n\r\n @serialize(\"useParallaxOcclusion\")\r\n private _useParallaxOcclusion = false;\r\n /**\r\n * Is parallax occlusion enabled or not.\r\n * If true, the outcome is way more realistic than traditional Parallax but you can expect a performance hit that worthes consideration.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/parallaxMapping\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor useParallaxOcclusion: boolean;\r\n\r\n /**\r\n * Apply a scaling factor that determine which \"depth\" the height map should reprensent. A value between 0.05 and 0.1 is reasonnable in Parallax, you can reach 0.2 using Parallax Occlusion.\r\n */\r\n @serialize()\r\n public parallaxScaleBias = 0.05;\r\n\r\n @serialize(\"roughness\")\r\n private _roughness = 0;\r\n /**\r\n * Helps to define how blurry the reflections should appears in the material.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor roughness: number;\r\n\r\n /**\r\n * In case of refraction, define the value of the index of refraction.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/reflectionTexture#how-to-obtain-reflections-and-refractions\r\n */\r\n @serialize()\r\n public indexOfRefraction = 0.98;\r\n\r\n /**\r\n * Invert the refraction texture alongside the y axis.\r\n * It can be useful with procedural textures or probe for instance.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/reflectionTexture#how-to-obtain-reflections-and-refractions\r\n */\r\n @serialize()\r\n public invertRefractionY = true;\r\n\r\n /**\r\n * Defines the alpha limits in alpha test mode.\r\n */\r\n @serialize()\r\n public alphaCutOff = 0.4;\r\n\r\n @serialize(\"useLightmapAsShadowmap\")\r\n private _useLightmapAsShadowmap = false;\r\n /**\r\n * In case of light mapping, define whether the map contains light or shadow informations.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor useLightmapAsShadowmap: boolean;\r\n\r\n // Fresnel\r\n @serializeAsFresnelParameters(\"diffuseFresnelParameters\")\r\n private _diffuseFresnelParameters: FresnelParameters;\r\n /**\r\n * Define the diffuse fresnel parameters of the material.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/fresnelParameters\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsFresnelDirty\")\r\n public accessor diffuseFresnelParameters: FresnelParameters;\r\n\r\n @serializeAsFresnelParameters(\"opacityFresnelParameters\")\r\n private _opacityFresnelParameters: FresnelParameters;\r\n /**\r\n * Define the opacity fresnel parameters of the material.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/fresnelParameters\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsFresnelAndMiscDirty\")\r\n public accessor opacityFresnelParameters: FresnelParameters;\r\n\r\n @serializeAsFresnelParameters(\"reflectionFresnelParameters\")\r\n private _reflectionFresnelParameters: FresnelParameters;\r\n /**\r\n * Define the reflection fresnel parameters of the material.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/fresnelParameters\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsFresnelDirty\")\r\n public accessor reflectionFresnelParameters: FresnelParameters;\r\n\r\n @serializeAsFresnelParameters(\"refractionFresnelParameters\")\r\n private _refractionFresnelParameters: FresnelParameters;\r\n /**\r\n * Define the refraction fresnel parameters of the material.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/fresnelParameters\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsFresnelDirty\")\r\n public accessor refractionFresnelParameters: FresnelParameters;\r\n\r\n @serializeAsFresnelParameters(\"emissiveFresnelParameters\")\r\n private _emissiveFresnelParameters: FresnelParameters;\r\n /**\r\n * Define the emissive fresnel parameters of the material.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/fresnelParameters\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsFresnelDirty\")\r\n public accessor emissiveFresnelParameters: FresnelParameters;\r\n\r\n @serialize(\"useReflectionFresnelFromSpecular\")\r\n private _useReflectionFresnelFromSpecular = false;\r\n /**\r\n * If true automatically deducts the fresnels values from the material specularity.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/fresnelParameters\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsFresnelDirty\")\r\n public accessor useReflectionFresnelFromSpecular: boolean;\r\n\r\n @serialize(\"useGlossinessFromSpecularMapAlpha\")\r\n private _useGlossinessFromSpecularMapAlpha = false;\r\n /**\r\n * Defines if the glossiness/roughness of the material should be read from the specular map alpha channel\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor useGlossinessFromSpecularMapAlpha: boolean;\r\n\r\n @serialize(\"maxSimultaneousLights\")\r\n private _maxSimultaneousLights = 4;\r\n /**\r\n * Defines the maximum number of lights that can be used in the material\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsLightsDirty\")\r\n public accessor maxSimultaneousLights: number;\r\n\r\n @serialize(\"invertNormalMapX\")\r\n private _invertNormalMapX = false;\r\n /**\r\n * If sets to true, x component of normal map value will invert (x = 1.0 - x).\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor invertNormalMapX: boolean;\r\n\r\n @serialize(\"invertNormalMapY\")\r\n private _invertNormalMapY = false;\r\n /**\r\n * If sets to true, y component of normal map value will invert (y = 1.0 - y).\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor invertNormalMapY: boolean;\r\n\r\n @serialize(\"twoSidedLighting\")\r\n private _twoSidedLighting = false;\r\n /**\r\n * If sets to true and backfaceCulling is false, normals will be flipped on the backside.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor twoSidedLighting: boolean;\r\n\r\n @serialize(\"applyDecalMapAfterDetailMap\")\r\n private _applyDecalMapAfterDetailMap = false;\r\n /**\r\n * If sets to true, the decal map will be applied after the detail map. Else, it is applied before (default: false)\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsMiscDirty\")\r\n public accessor applyDecalMapAfterDetailMap: boolean;\r\n\r\n private _shadersLoaded = false;\r\n private _vertexPullingMetadata: Map<string, IVertexPullingMetadata> | null = null;\r\n\r\n /**\r\n * Defines additional PrePass parameters for the material.\r\n */\r\n public readonly prePassConfiguration: PrePassConfiguration;\r\n\r\n /**\r\n * Can this material render to prepass\r\n */\r\n public override get isPrePassCapable(): boolean {\r\n return !this.disableDepthWrite;\r\n }\r\n\r\n /**\r\n * Can this material render to several textures at once\r\n */\r\n public override get canRenderToMRT() {\r\n return true;\r\n }\r\n\r\n /**\r\n * Defines the detail map parameters for the material.\r\n */\r\n public readonly detailMap: DetailMapConfiguration;\r\n\r\n protected _renderTargets = new SmartArray<RenderTargetTexture>(16);\r\n protected _globalAmbientColor = new Color3(0, 0, 0);\r\n protected _cacheHasRenderTargetTextures = false;\r\n\r\n /**\r\n * Instantiates a new standard material.\r\n * This is the default material used in Babylon. It is the best trade off between quality\r\n * and performances.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/materials_introduction\r\n * @param name Define the name of the material in the scene\r\n * @param scene Define the scene the material belong to\r\n * @param forceGLSL Use the GLSL code generation for the shader (even on WebGPU). Default is false\r\n */\r\n constructor(name: string, scene?: Scene, forceGLSL = false) {\r\n super(name, scene, undefined, forceGLSL || StandardMaterial.ForceGLSL);\r\n\r\n this.detailMap = new DetailMapConfiguration(this);\r\n\r\n // Setup the default processing configuration to the scene.\r\n this._attachImageProcessingConfiguration(null);\r\n this.prePassConfiguration = new PrePassConfiguration();\r\n\r\n this.getRenderTargetTextures = (): SmartArray<RenderTargetTexture> => {\r\n this._renderTargets.reset();\r\n\r\n if (StandardMaterial.ReflectionTextureEnabled && this._reflectionTexture && this._reflectionTexture.isRenderTarget) {\r\n this._renderTargets.push(<RenderTargetTexture>this._reflectionTexture);\r\n }\r\n\r\n if (StandardMaterial.RefractionTextureEnabled && this._refractionTexture && this._refractionTexture.isRenderTarget) {\r\n this._renderTargets.push(<RenderTargetTexture>this._refractionTexture);\r\n }\r\n\r\n this._eventInfo.renderTargets = this._renderTargets;\r\n this._callbackPluginEventFillRenderTargetTextures(this._eventInfo);\r\n\r\n return this._renderTargets;\r\n };\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating that current material needs to register RTT\r\n */\r\n public override get hasRenderTargetTextures(): boolean {\r\n if (StandardMaterial.ReflectionTextureEnabled && this._reflectionTexture && this._reflectionTexture.isRenderTarget) {\r\n return true;\r\n }\r\n\r\n if (StandardMaterial.RefractionTextureEnabled && this._refractionTexture && this._refractionTexture.isRenderTarget) {\r\n return true;\r\n }\r\n\r\n return this._cacheHasRenderTargetTextures;\r\n }\r\n\r\n /**\r\n * Gets the current class name of the material e.g. \"StandardMaterial\"\r\n * Mainly use in serialization.\r\n * @returns the class name\r\n */\r\n public override getClassName(): string {\r\n return \"StandardMaterial\";\r\n }\r\n\r\n /**\r\n * Specifies if the material will require alpha blending\r\n * @returns a boolean specifying if alpha blending is needed\r\n */\r\n public override needAlphaBlending(): boolean {\r\n if (this._hasTransparencyMode) {\r\n return this._transparencyModeIsBlend;\r\n }\r\n\r\n if (this._disableAlphaBlending) {\r\n return false;\r\n }\r\n\r\n return (\r\n this.alpha < 1.0 ||\r\n this._opacityTexture != null ||\r\n this._shouldUseAlphaFromDiffuseTexture() ||\r\n (this._opacityFresnelParameters && this._opacityFresnelParameters.isEnabled)\r\n );\r\n }\r\n\r\n /**\r\n * Specifies if this material should be rendered in alpha test mode\r\n * @returns a boolean specifying if an alpha test is needed.\r\n */\r\n public override needAlphaTesting(): boolean {\r\n if (this._hasTransparencyMode) {\r\n return this._transparencyModeIsTest;\r\n }\r\n\r\n return this._hasAlphaChannel() && (this._transparencyMode == null || this._transparencyMode === Material.MATERIAL_ALPHATEST);\r\n }\r\n\r\n /**\r\n * @returns whether or not the alpha value of the diffuse texture should be used for alpha blending.\r\n */\r\n protected _shouldUseAlphaFromDiffuseTexture(): boolean {\r\n return this._diffuseTexture != null && this._diffuseTexture.hasAlpha && this._useAlphaFromDiffuseTexture && this._transparencyMode !== Material.MATERIAL_OPAQUE;\r\n }\r\n\r\n /**\r\n * @returns whether or not there is a usable alpha channel for transparency.\r\n */\r\n protected _hasAlphaChannel(): boolean {\r\n return (this._diffuseTexture != null && this._diffuseTexture.hasAlpha) || this._opacityTexture != null;\r\n }\r\n\r\n /**\r\n * Get the texture used for alpha test purpose.\r\n * @returns the diffuse texture in case of the standard material.\r\n */\r\n public override getAlphaTestTexture(): Nullable<BaseTexture> {\r\n return this._diffuseTexture;\r\n }\r\n\r\n /**\r\n * Get if the submesh is ready to be used and all its information available.\r\n * Child classes can use it to update shaders\r\n * @param mesh defines the mesh to check\r\n * @param subMesh defines which submesh to check\r\n * @param useInstances specifies that instances should be used\r\n * @returns a boolean indicating that the submesh is ready or not\r\n */\r\n public override isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances: boolean = false): boolean {\r\n if (!this._uniformBufferLayoutBuilt) {\r\n this.buildUniformLayout();\r\n }\r\n\r\n const drawWrapper = subMesh._drawWrapper;\r\n\r\n if (drawWrapper.effect && this.isFrozen) {\r\n if (drawWrapper._wasPreviouslyReady && drawWrapper._wasPreviouslyUsingInstances === useInstances) {\r\n return true;\r\n }\r\n }\r\n\r\n if (!subMesh.materialDefines) {\r\n this._callbackPluginEventGeneric(MaterialPluginEvent.GetDefineNames, this._eventInfo);\r\n subMesh.materialDefines = new StandardMaterialDefines(this._eventInfo.defineNames);\r\n }\r\n\r\n const scene = this.getScene();\r\n const defines = <StandardMaterialDefines>subMesh.materialDefines;\r\n if (this._isReadyForSubMesh(subMesh)) {\r\n return true;\r\n }\r\n\r\n const engine = scene.getEngine();\r\n\r\n // Lights\r\n defines._needNormals = PrepareDefinesForLights(scene, mesh, defines, true, this._maxSimultaneousLights, this._disableLighting);\r\n\r\n if (!AreLightsTexturesReady(scene, mesh, this._maxSimultaneousLights, this._disableLighting)) {\r\n return false;\r\n }\r\n\r\n // Multiview\r\n PrepareDefinesForMultiview(scene, defines);\r\n\r\n // PrePass\r\n const oit = this.needAlphaBlendingForMesh(mesh) && this.getScene().useOrderIndependentTransparency;\r\n PrepareDefinesForPrePass(scene, defines, this.canRenderToMRT && !oit);\r\n\r\n // Order independant transparency\r\n PrepareDefinesForOIT(scene, defines, oit);\r\n\r\n MaterialHelperGeometryRendering.PrepareDefines(engine.currentRenderPassId, mesh, defines);\r\n\r\n // Textures\r\n if (defines._areTexturesDirty) {\r\n this._eventInfo.hasRenderTargetTextures = false;\r\n this._callbackPluginEventHasRenderTargetTextures(this._eventInfo);\r\n this._cacheHasRenderTargetTextures = this._eventInfo.hasRenderTargetTextures;\r\n defines._needUVs = false;\r\n for (let i = 1; i <= Constants.MAX_SUPPORTED_UV_SETS; ++i) {\r\n defines[\"MAINUV\" + i] = false;\r\n }\r\n if (scene.texturesEnabled) {\r\n defines.DIFFUSEDIRECTUV = 0;\r\n defines.BUMPDIRECTUV = 0;\r\n defines.AMBIENTDIRECTUV = 0;\r\n defines.OPACITYDIRECTUV = 0;\r\n defines.EMISSIVEDIRECTUV = 0;\r\n defines.SPECULARDIRECTUV = 0;\r\n defines.LIGHTMAPDIRECTUV = 0;\r\n\r\n if (this._diffuseTexture && StandardMaterial.DiffuseTextureEnabled) {\r\n if (!this._diffuseTexture.isReadyOrNotBlocking()) {\r\n return false;\r\n } else {\r\n PrepareDefinesForMergedUV(this._diffuseTexture, defines, \"DIFFUSE\");\r\n }\r\n } else {\r\n defines.DIFFUSE = false;\r\n }\r\n\r\n if (this._ambientTexture && StandardMaterial.AmbientTextureEnabled) {\r\n if (!this._ambientTexture.isReadyOrNotBlocking()) {\r\n return false;\r\n } else {\r\n PrepareDefinesForMergedUV(this._ambientTexture, defines, \"AMBIENT\");\r\n }\r\n } else {\r\n defines.AMBIENT = false;\r\n }\r\n\r\n if (this._opacityTexture && StandardMaterial.OpacityTextureEnabled) {\r\n if (!this._opacityTexture.isReadyOrNotBlocking()) {\r\n return false;\r\n } else {\r\n PrepareDefinesForMergedUV(this._opacityTexture, defines, \"OPACITY\");\r\n defines.OPACITYRGB = this._opacityTexture.getAlphaFromRGB;\r\n }\r\n } else {\r\n defines.OPACITY = false;\r\n }\r\n if (this._reflectionTexture && StandardMaterial.ReflectionTextureEnabled) {\r\n defines.ROUGHNESS = this._roughness > 0;\r\n defines.REFLECTIONOVERALPHA = this._useReflectionOverAlpha;\r\n } else {\r\n defines.ROUGHNESS = false;\r\n defines.REFLECTIONOVERALPHA = false;\r\n }\r\n if (!PrepareDefinesForIBL(scene, this._reflectionTexture, defines)) {\r\n return false;\r\n }\r\n\r\n if (this._emissiveTexture && StandardMaterial.EmissiveTextureEnabled) {\r\n if (!this._emissiveTexture.isReadyOrNotBlocking()) {\r\n return false;\r\n } else {\r\n PrepareDefinesForMergedUV(this._emissiveTexture, defines, \"EMISSIVE\");\r\n }\r\n } else {\r\n defines.EMISSIVE = false;\r\n }\r\n\r\n if (this._lightmapTexture && StandardMaterial.LightmapTextureEnabled) {\r\n if (!this._lightmapTexture.isReadyOrNotBlocking()) {\r\n return false;\r\n } else {\r\n PrepareDefinesForMergedUV(this._lightmapTexture, defines, \"LIGHTMAP\");\r\n defines.USELIGHTMAPASSHADOWMAP = this._useLightmapAsShadowmap;\r\n defines.RGBDLIGHTMAP = this._lightmapTexture.isRGBD;\r\n }\r\n } else {\r\n defines.LIGHTMAP = false;\r\n }\r\n\r\n if (this._specularTexture && StandardMaterial.SpecularTextureEnabled) {\r\n if (!this._specularTexture.isReadyOrNotBlocking()) {\r\n return false;\r\n } else {\r\n PrepareDefinesForMergedUV(this._specularTexture, defines, \"SPECULAR\");\r\n defines.GLOSSINESS = this._useGlossinessFromSpecularMapAlpha;\r\n }\r\n } else {\r\n defines.SPECULAR = false;\r\n }\r\n\r\n if (scene.getEngine().getCaps().standardDerivatives && this._bumpTexture && StandardMaterial.BumpTextureEnabled) {\r\n // Bump texture can not be not blocking.\r\n if (!this._bumpTexture.isReady()) {\r\n return false;\r\n } else {\r\n PrepareDefinesForMergedUV(this._bumpTexture, defines, \"BUMP\");\r\n\r\n defines.PARALLAX = this._useParallax;\r\n defines.PARALLAX_RHS = scene.useRightHandedSystem;\r\n defines.PARALLAXOCCLUSION = this._useParallaxOcclusion;\r\n }\r\n\r\n defines.OBJECTSPACE_NORMALMAP = this._useObjectSpaceNormalMap;\r\n } else {\r\n defines.BUMP = false;\r\n defines.PARALLAX = false;\r\n defines.PARALLAX_RHS = false;\r\n defines.PARALLAXOCCLUSION = false;\r\n }\r\n\r\n if (this._refractionTexture && StandardMaterial.RefractionTextureEnabled) {\r\n if (!this._refractionTexture.isReadyOrNotBlocking()) {\r\n return false;\r\n } else {\r\n defines._needUVs = true;\r\n defines.REFRACTION = true;\r\n\r\n defines.REFRACTIONMAP_3D = this._refractionTexture.isCube;\r\n defines.RGBDREFRACTION = this._refractionTexture.isRGBD;\r\n defines.USE_LOCAL_REFRACTIONMAP_CUBIC = (<any>this._refractionTexture).boundingBoxSize ? true : false;\r\n }\r\n } else {\r\n defines.REFRACTION = false;\r\n }\r\n\r\n defines.TWOSIDEDLIGHTING = !this._backFaceCulling && this._twoSidedLighting;\r\n } else {\r\n defines.DIFFUSE = false;\r\n defines.AMBIENT = false;\r\n defines.OPACITY = false;\r\n defines.REFLECTION = false;\r\n defines.EMISSIVE = false;\r\n defines.LIGHTMAP = false;\r\n defines.BUMP = false;\r\n defines.REFRACTION = false;\r\n }\r\n\r\n defines.ALPHAFROMDIFFUSE = this._shouldUseAlphaFromDiffuseTexture();\r\n\r\n defines.EMISSIVEASILLUMINATION = this._useEmissiveAsIllumination;\r\n\r\n defines.LINKEMISSIVEWITHDIFFUSE = this._linkEmissiveWithDiffuse;\r\n\r\n defines.SPECULAROVERALPHA = this._useSpecularOverAlpha;\r\n\r\n defines.PREMULTIPLYALPHA = this.alphaMode === Constants.ALPHA_PREMULTIPLIED || this.alphaMode === Constants.ALPHA_PREMULTIPLIED_PORTERDUFF;\r\n\r\n defines.ALPHATEST_AFTERALLALPHACOMPUTATIONS = this.transparencyMode !== null;\r\n\r\n defines.ALPHABLEND = this.transparencyMode === null || this.needAlphaBlendingForMesh(mesh); // check on null for backward compatibility\r\n\r\n defines.TEXTURE_REPETITION_MODE = engine.version > 1 || engine.isWebGPU ? this.textureRepetitionMode : 0;\r\n }\r\n\r\n this._eventInfo.isReadyForSubMesh = true;\r\n this._eventInfo.defines = defines;\r\n this._eventInfo.subMesh = subMesh;\r\n this._callbackPluginEventIsReadyForSubMesh(this._eventInfo);\r\n\r\n if (!this._eventInfo.isReadyForSubMesh) {\r\n return false;\r\n }\r\n\r\n if (defines._areImageProcessingDirty && this._imageProcessingConfiguration) {\r\n if (!this._imageProcessingConfiguration.isReady()) {\r\n return false;\r\n }\r\n\r\n this._imageProcessingConfiguration.prepareDefines(defines);\r\n\r\n defines.IS_REFLECTION_LINEAR = this.reflectionTexture != null && !this.reflectionTexture.gammaSpace;\r\n defines.IS_REFRACTION_LINEAR = this.refractionTexture != null && !this.refractionTexture.gammaSpace;\r\n }\r\n\r\n if (defines._areFresnelDirty) {\r\n if (StandardMaterial.FresnelEnabled) {\r\n // Fresnel\r\n if (\r\n this._diffuseFresnelParameters ||\r\n this._opacityFresnelParameters ||\r\n this._emissiveFresnelParameters ||\r\n this._refractionFresnelParameters ||\r\n this._reflectionFresnelParameters\r\n ) {\r\n defines.DIFFUSEFRESNEL = this._diffuseFresnelParameters && this._diffuseFresnelParameters.isEnabled;\r\n\r\n defines.OPACITYFRESNEL = this._opacityFresnelParameters && this._opacityFresnelParameters.isEnabled;\r\n\r\n defines.REFLECTIONFRESNEL = this._reflectionFresnelParameters && this._reflectionFresnelParameters.isEnabled;\r\n\r\n defines.REFLECTIONFRESNELFROMSPECULAR = this._useReflectionFresnelFromSpecular;\r\n\r\n defines.REFRACTIONFRESNEL = this._refractionFresnelParameters && this._refractionFresnelParameters.isEnabled;\r\n\r\n defines.EMISSIVEFRESNEL = this._emissiveFresnelParameters && this._emissiveFresnelParameters.isEnabled;\r\n\r\n defines._needNormals = true;\r\n defines.FRESNEL = true;\r\n }\r\n } else {\r\n defines.FRESNEL = false;\r\n }\r\n }\r\n\r\n // Check if lights are ready\r\n if (defines[\"AREALIGHTUSED\"] || defines[\"CLUSTLIGHT_BATCH\"]) {\r\n for (let index = 0; index < mesh.lightSources.length; index++) {\r\n if (!mesh.lightSources[index]._isReady()) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n // Misc.\r\n PrepareDefinesForMisc(\r\n mesh,\r\n scene,\r\n this._useLogarithmicDepth,\r\n this.pointsCloud,\r\n this.fogEnabled,\r\n this.needAlphaTestingForMesh(mesh),\r\n defines,\r\n this._applyDecalMapAfterDetailMap,\r\n this._useVertexPulling,\r\n subMesh.getRenderingMesh(),\r\n this._isVertexOutputInvariant\r\n );\r\n\r\n // Values that need to be evaluated on every frame\r\n PrepareDefinesForFrameBoundValues(scene, engine, this, defines, useInstances, null, subMesh.getRenderingMesh().hasThinInstances);\r\n\r\n // External config\r\n this._eventInfo.defines = defines;\r\n this._eventInfo.mesh = mesh;\r\n this._callbackPluginEventPrepareDefinesBeforeAttributes(this._eventInfo);\r\n\r\n // Attribs\r\n PrepareDefinesForAttributes(mesh, defines, true, true, true);\r\n\r\n // External config\r\n this._callbackPluginEventPrepareDefines(this._eventInfo);\r\n\r\n // Get correct effect\r\n let forceWasNotReadyPreviously = false;\r\n\r\n if (defines.isDirty) {\r\n const lightDisposed = defines._areLightsDisposed;\r\n defines.markAsProcessed();\r\n\r\n // Fallbacks\r\n const fallbacks = new EffectFallbacks();\r\n if (defines.REFLECTION) {\r\n fallbacks.addFallback(0, \"REFLECTION\");\r\n }\r\n\r\n if (defines.SPECULAR) {\r\n fallbacks.addFallback(0, \"SPECULAR\");\r\n }\r\n\r\n if (defines.BUMP) {\r\n fallbacks.addFallback(0, \"BUMP\");\r\n }\r\n\r\n if (defines.PARALLAX) {\r\n fallbacks.addFallback(1, \"PARALLAX\");\r\n }\r\n\r\n if (defines.PARALLAX_RHS) {\r\n fallbacks.addFallback(1, \"PARALLAX_RHS\");\r\n }\r\n\r\n if (defines.PARALLAXOCCLUSION) {\r\n fallbacks.addFallback(0, \"PARALLAXOCCLUSION\");\r\n }\r\n\r\n if (defines.SPECULAROVERALPHA) {\r\n fallbacks.addFallback(0, \"SPECULAROVERALPHA\");\r\n }\r\n\r\n if (defines.FOG) {\r\n fallbacks.addFallback(1, \"FOG\");\r\n }\r\n\r\n if (defines.POINTSIZE) {\r\n fallbacks.addFallback(0, \"POINTSIZE\");\r\n }\r\n\r\n if (defines.LOGARITHMICDEPTH) {\r\n fallbacks.addFallback(0, \"LOGARITHMICDEPTH\");\r\n }\r\n\r\n HandleFallbacksForShadows(defines, fallbacks, this._maxSimultaneousLights);\r\n\r\n if (defines.SPECULARTERM) {\r\n fallbacks.addFallback(0, \"SPECULARTERM\");\r\n }\r\n\r\n if (defines.DIFFUSEFRESNEL) {\r\n fallbacks.addFallback(1, \"DIFFUSEFRESNEL\");\r\n }\r\n\r\n if (defines.OPACITYFRESNEL) {\r\n fallbacks.addFallback(2, \"OPACITYFRESNEL\");\r\n }\r\n\r\n if (defines.REFLECTIONFRESNEL) {\r\n fallbacks.addFallback(3, \"REFLECTIONFRESNEL\");\r\n }\r\n\r\n if (defines.EMISSIVEFRESNEL) {\r\n fallbacks.addFallback(4, \"EMISSIVEFRESNEL\");\r\n }\r\n\r\n if (defines.FRESNEL) {\r\n fallbacks.addFallback(4, \"FRESNEL\");\r\n }\r\n\r\n if (defines.MULTIVIEW) {\r\n fallbacks.addFallback(0, \"MULTIVIEW\");\r\n }\r\n\r\n //Attributes\r\n const attribs = [VertexBuffer.PositionKind];\r\n\r\n if (defines.NORMAL) {\r\n attribs.push(VertexBuffer.NormalKind);\r\n }\r\n\r\n if (defines.TANGENT) {\r\n attribs.push(VertexBuffer.TangentKind);\r\n }\r\n\r\n for (let i = 1; i <= Constants.MAX_SUPPORTED_UV_SETS; ++i) {\r\n if (defines[\"UV\" + i]) {\r\n attribs.push(`uv${i === 1 ? \"\" : i}`);\r\n }\r\n }\r\n\r\n if (defines.VERTEXCOLOR) {\r\n attribs.push(VertexBuffer.ColorKind);\r\n }\r\n\r\n PrepareAttributesForBones(attribs, mesh, defines, fallbacks);\r\n PrepareAttributesForInstances(attribs, defines);\r\n PrepareAttributesForMorphTargets(attribs, mesh, defines);\r\n PrepareAttributesForBakedVertexAnimation(attribs, mesh, defines);\r\n\r\n let shaderName = \"default\";\r\n\r\n const uniforms = [\r\n \"world\",\r\n \"view\",\r\n \"viewProjection\",\r\n \"vEyePosition\",\r\n \"vLightsType\",\r\n \"vAmbientColor\",\r\n \"vDiffuseColor\",\r\n \"vSpecularColor\",\r\n \"vEmissiveColor\",\r\n \"visibility\",\r\n \"vFogInfos\",\r\n \"vFogColor\",\r\n \"pointSize\",\r\n \"vDiffuseInfos\",\r\n \"vAmbientInfos\",\r\n \"vOpacityInfos\",\r\n \"vEmissiveInfos\",\r\n \"vSpecularInfos\",\r\n \"vBumpInfos\",\r\n \"vLightmapInfos\",\r\n \"vRefractionInfos\",\r\n \"mBones\",\r\n \"diffuseMatrix\",\r\n \"ambientMatrix\",\r\n \"opacityMatrix\",\r\n \"emissiveMatrix\",\r\n \"specularMatrix\",\r\n \"bumpMatrix\",\r\n \"normalMatrix\",\r\n \"lightmapMatrix\",\r\n \"refractionMatrix\",\r\n \"diffuseLeftColor\",\r\n \"diffuseRightColor\",\r\n \"opacityParts\",\r\n \"reflectionLeftColor\",\r\n \"reflectionRightColor\",\r\n \"emissiveLeftColor\",\r\n \"emissiveRightColor\",\r\n \"refractionLeftColor\",\r\n \"refractionRightColor\",\r\n \"vRefractionPosition\",\r\n \"vRefractionSize\",\r\n \"logarithmicDepthConstant\",\r\n \"vTangentSpaceParams\",\r\n \"alphaCutOff\",\r\n \"boneTextureInfo\",\r\n \"morphTargetTextureInfo\",\r\n \"morphTargetTextureIndices\",\r\n \"cameraInfo\",\r\n \"vTextureRepetitionHexTilingParams\",\r\n ];\r\n\r\n const samplers = [\r\n \"diffuseSampler\",\r\n \"ambientSampler\",\r\n \"opacitySampler\",\r\n \"reflectionCubeSampler\",\r\n \"reflection2DSampler\",\r\n \"emissiveSampler\",\r\n \"specularSampler\",\r\n \"bumpSampler\",\r\n \"lightmapSampler\",\r\n \"refractionCubeSampler\",\r\n \"refraction2DSampler\",\r\n \"boneSampler\",\r\n \"morphTargets\",\r\n \"oitDepthSampler\",\r\n \"oitFrontColorSampler\",\r\n \"areaLightsLTC1Sampler\",\r\n \"areaLightsLTC2Sampler\",\r\n ];\r\n\r\n PrepareUniformsAndSamplersForIBL(uniforms, samplers, false);\r\n const uniformBuffers = [\"Material\", \"Scene\", \"Mesh\"];\r\n\r\n const indexParameters = { maxSimultaneousLights: this._maxSimultaneousLights, maxSimultaneousMorphTargets: defines.NUM_MORPH_INFLUENCERS };\r\n\r\n this._eventInfo.fallbacks = fallbacks;\r\n this._eventInfo.fallbackRank = 0;\r\n this._eventInfo.defines = defines;\r\n this._eventInfo.uniforms = uniforms;\r\n this._eventInfo.attributes = attribs;\r\n this._eventInfo.samplers = samplers;\r\n this._eventInfo.uniformBuffersNames = uniformBuffers;\r\n this._eventInfo.customCode = undefined;\r\n this._eventInfo.mesh = mesh;\r\n this._eventInfo.indexParameters = indexParameters;\r\n this._callbackPluginEventGeneric(MaterialPluginEvent.PrepareEffect, this._eventInfo);\r\n\r\n MaterialHelperGeometryRendering.AddUniformsAndSamplers(uniforms, samplers);\r\n\r\n PrePassConfiguration.AddUniforms(uniforms);\r\n PrePassConfiguration.AddSamplers(samplers);\r\n\r\n if (ImageProcessingConfiguration) {\r\n ImageProcessingConfiguration.PrepareUniforms(uniforms, defines);\r\n ImageProcessingConfiguration.PrepareSamplers(samplers, defines);\r\n }\r\n\r\n PrepareUniformsAndSamplersList(<IEffectCreationOptions>{\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: defines,\r\n maxSimultaneousLights: this._maxSimultaneousLights,\r\n shaderLanguage: this._shaderLanguage,\r\n });\r\n\r\n AddClipPlaneUniforms(uniforms);\r\n\r\n // Vertex pulling metadata uniforms\r\n if (this._useVertexPulling) {\r\n const renderingMesh = subMesh.getRenderingMesh();\r\n const geometry = renderingMesh?.geometry;\r\n if (geometry) {\r\n this._vertexPullingMetadata = PrepareVertexPullingUniforms(geometry);\r\n if (this._vertexPullingMetadata) {\r\n this._vertexPullingMetadata.forEach((_, attribute) => {\r\n uniforms.push(`vp_${attribute}_info`);\r\n });\r\n }\r\n }\r\n } else {\r\n this._vertexPullingMetadata = null;\r\n }\r\n\r\n const csnrOptions: ICustomShaderNameResolveOptions = {};\r\n\r\n if (this.customShaderNameResolve) {\r\n shaderName = this.customShaderNameResolve(shaderName, uniforms, uniformBuffers, samplers, defines, attribs, csnrOptions);\r\n }\r\n\r\n const join = defines.toString();\r\n\r\n const previousEffect = subMesh.effect;\r\n const effect = scene.getEngine().createEffect(\r\n shaderName,\r\n <IEffectCreationOptions>{\r\n attributes: attribs,\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: join,\r\n fallbacks: fallbacks,\r\n onCompiled: this.onCompiled,\r\n onError: this.onError,\r\n indexParameters,\r\n processFinalCode: csnrOptions.processFinalCode,\r\n processCodeAfterIncludes: this._eventInfo.customCode,\r\n multiTarget: defines.PREPASS,\r\n shaderLanguage: this._shaderLanguage,\r\n extraInitializationsAsync: this._shadersLoaded\r\n ? undefined\r\n : async () => {\r\n if (this._shaderLanguage === ShaderLanguage.WGSL) {\r\n await Promise.all([import(\"../ShadersWGSL/default.vertex\"), import(\"../ShadersWGSL/default.fragment\")]);\r\n } else {\r\n await Promise.all([import(\"../Shaders/default.vertex\"), import(\"../Shaders/default.fragment\")]);\r\n }\r\n this._shadersLoaded = true;\r\n },\r\n },\r\n engine\r\n );\r\n\r\n this._eventInfo.customCode = undefined;\r\n\r\n if (effect) {\r\n if (this._onEffectCreatedObservable) {\r\n onCreatedEffectParameters.effect = effect;\r\n onCreatedEffectParameters.subMesh = subMesh;\r\n this._onEffectCreatedObservable.notifyObservers(onCreatedEffectParameters);\r\n }\r\n\r\n // Use previous effect while new one is compiling\r\n if (this.allowShaderHotSwapping && previousEffect && !effect.isReady()) {\r\n defines.markAsUnprocessed();\r\n\r\n forceWasNotReadyPreviously = this.isFrozen;\r\n\r\n if (lightDisposed) {\r\n // re register in case it takes more than one frame.\r\n defines._areLightsDisposed = true;\r\n return false;\r\n }\r\n } else {\r\n scene.resetCachedMaterial();\r\n subMesh.setEffect(effect, defines, this._materialContext);\r\n }\r\n }\r\n }\r\n\r\n if (!subMesh.effect || !subMesh.effect.isReady()) {\r\n return false;\r\n }\r\n\r\n defines._renderId = scene.getRenderId();\r\n drawWrapper._wasPreviouslyReady = forceWasNotReadyPreviously ? false : true;\r\n drawWrapper._wasPreviouslyUsingInstances = useInstances;\r\n\r\n this._checkScenePerformancePriority();\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Builds the material UBO layouts.\r\n * Used internally during the effect preparation.\r\n */\r\n public override buildUniformLayout(): void {\r\n // Order is important !\r\n const ubo = this._uniformBuffer;\r\n ubo.addUniform(\"diffuseLeftColor\", 4);\r\n ubo.addUniform(\"diffuseRightColor\", 4);\r\n ubo.addUniform(\"opacityParts\", 4);\r\n ubo.addUniform(\"reflectionLeftColor\", 4);\r\n ubo.addUniform(\"reflectionRightColor\", 4);\r\n ubo.addUniform(\"refractionLeftColor\", 4);\r\n ubo.addUniform(\"refractionRightColor\", 4);\r\n ubo.addUniform(\"emissiveLeftColor\", 4);\r\n ubo.addUniform(\"emissiveRightColor\", 4);\r\n\r\n ubo.addUniform(\"vDiffuseInfos\", 2);\r\n ubo.addUniform(\"vAmbientInfos\", 2);\r\n ubo.addUniform(\"vOpacityInfos\", 2);\r\n ubo.addUniform(\"vEmissiveInfos\", 2);\r\n ubo.addUniform(\"vLightmapInfos\", 2);\r\n ubo.addUniform(\"vSpecularInfos\", 2);\r\n ubo.addUniform(\"vBumpInfos\", 3);\r\n\r\n ubo.addUniform(\"diffuseMatrix\", 16);\r\n ubo.addUniform(\"ambientMatrix\", 16);\r\n ubo.addUniform(\"opacityMatrix\", 16);\r\n ubo.addUniform(\"emissiveMatrix\", 16);\r\n ubo.addUniform(\"lightmapMatrix\", 16);\r\n ubo.addUniform(\"specularMatrix\", 16);\r\n ubo.addUniform(\"bumpMatrix\", 16);\r\n ubo.addUniform(\"vTangentSpaceParams\", 2);\r\n ubo.addUniform(\"pointSize\", 1);\r\n ubo.addUniform(\"alphaCutOff\", 1);\r\n ubo.addUniform(\"refractionMatrix\", 16);\r\n ubo.addUniform(\"vRefractionInfos\", 4);\r\n ubo.addUniform(\"vRefractionPosition\", 3);\r\n ubo.addUniform(\"vRefractionSize\", 3);\r\n ubo.addUniform(\"vSpecularColor\", 4);\r\n ubo.addUniform(\"vEmissiveColor\", 3);\r\n ubo.addUniform(\"vDiffuseColor\", 4);\r\n ubo.addUniform(\"vAmbientColor\", 3);\r\n ubo.addUniform(\"cameraInfo\", 4);\r\n ubo.addUniform(\"vTextureRepetitionHexTilingParams\", 4);\r\n\r\n PrepareUniformLayoutForIBL(ubo, false, true);\r\n\r\n super.buildUniformLayout();\r\n }\r\n\r\n /**\r\n * Binds the submesh to this material by preparing the effect and shader to draw\r\n * @param world defines the world transformation matrix\r\n * @param mesh defines the mesh containing the submesh\r\n * @param subMesh defines the submesh to bind the material to\r\n */\r\n public override bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void {\r\n const scene = this.getScene();\r\n\r\n const defines = <StandardMaterialDefines>subMesh.materialDefines;\r\n if (!defines) {\r\n return;\r\n }\r\n\r\n const effect = subMesh.effect;\r\n if (!effect) {\r\n return;\r\n }\r\n this._activeEffect = effect;\r\n\r\n // Matrices Mesh.\r\n mesh.getMeshUniformBuffer().bindToEffect(effect, \"Mesh\");\r\n mesh.transferToEffect(world);\r\n\r\n // Binding unconditionally\r\n this._uniformBuffer.bindToEffect(effect, \"Material\");\r\n\r\n this.prePassConfiguration.bindForSubMesh(this._activeEffect, scene, mesh, world, this.isFrozen);\r\n\r\n MaterialHelperGeometryRendering.Bind(scene.getEngine().currentRenderPassId, this._activeEffect, mesh, world, this);\r\n\r\n const camera = scene.activeCamera;\r\n if (camera) {\r\n this._uniformBuffer.updateFloat4(\"cameraInfo\", camera.minZ, camera.maxZ, 0, 0);\r\n } else {\r\n this._uniformBuffer.updateFloat4(\"cameraInfo\", 0, 0, 0, 0);\r\n }\r\n\r\n const hexParams = this.textureRepetitionHexTilingParams;\r\n this._uniformBuffer.updateFloat4(\"vTextureRepetitionHexTilingParams\", hexParams[0], hexParams[1], hexParams[2], hexParams[3]);\r\n\r\n this._eventInfo.subMesh = subMesh;\r\n this._callbackPluginEventHardBindForSubMesh(this._eventInfo);\r\n\r\n // Normal Matrix\r\n if (defines.OBJECTSPACE_NORMALMAP) {\r\n world.toNormalMatrix(this._normalMatrix);\r\n this.bindOnlyNormalMatrix(this._normalMatrix);\r\n }\r\n\r\n const mustRebind = this._mustRebind(scene, effect, subMesh, mesh.visibility);\r\n const needToAlwaysBindUniformBuffers = scene.getEngine()._features.needToAlwaysBindUniformBuffers;\r\n\r\n // Bones\r\n BindBonesParameters(mesh, effect);\r\n\r\n // Vertex pulling\r\n if (this._vertexPullingMetadata) {\r\n BindVertexPullingUniforms(effect, this._vertexPullingMetadata);\r\n }\r\n\r\n const ubo = this._uniformBuffer;\r\n if (mustRebind) {\r\n this.bindViewProjection(effect);\r\n if (!ubo.useUbo || !this.isFrozen || !ubo.isSync || subMesh._drawWrapper._forceRebindOnNextCall) {\r\n if (StandardMaterial.FresnelEnabled && defines.FRESNEL) {\r\n // Fresnel\r\n if (this.diffuseFresnelParameters && this.diffuseFresnelParameters.isEnabled) {\r\n ubo.updateColor4(\"diffuseLeftColor\", this.diffuseFresnelParameters.leftColor, this.diffuseFresnelParameters.power);\r\n ubo.updateColor4(\"diffuseRightColor\", this.diffuseFresnelParameters.rightColor, this.diffuseFresnelParameters.bias);\r\n }\r\n\r\n if (this.opacityFresnelParameters && this.opacityFresnelParameters.isEnabled) {\r\n const opacityParts = TmpColors.Color3[0];\r\n opacityParts.set(\r\n this.opacityFresnelParameters.leftColor.toLuminance(),\r\n this.opacityFresnelParameters.rightColor.toLuminance(),\r\n this.opacityFresnelParameters.bias\r\n );\r\n ubo.updateColor4(\"opacityParts\", opacityParts, this.opacityFresnelParameters.power);\r\n }\r\n\r\n if (this.reflectionFresnelParameters && this.reflectionFresnelParameters.isEnabled) {\r\n ubo.updateColor4(\"reflectionLeftColor\", this.reflectionFresnelParameters.leftColor, this.reflectionFresnelParameters.power);\r\n ubo.updateColor4(\"reflectionRightColor\", this.reflectionFresnelParameters.rightColor, this.reflectionFresnelParameters.bias);\r\n }\r\n\r\n if (this.refractionFresnelParameters && this.refractionFresnelParameters.isEnabled) {\r\n ubo.updateColor4(\"refractionLeftColor\", this.refractionFresnelParameters.leftColor, this.refractionFresnelParameters.power);\r\n ubo.updateColor4(\"refractionRightColor\", this.refractionFresnelParameters.rightColor, this.refractionFresnelParameters.bias);\r\n }\r\n\r\n if (this.emissiveFresnelParameters && this.emissiveFresnelParameters.isEnabled) {\r\n ubo.updateColor4(\"emissiveLeftColor\", this.emissiveFresnelParameters.leftColor, this.emissiveFresnelParameters.power);\r\n ubo.updateColor4(\"emissiveRightColor\", this.emissiveFresnelParameters.rightColor, this.emissiveFresnelParameters.bias);\r\n }\r\n }\r\n\r\n // Textures\r\n if (scene.texturesEnabled) {\r\n if (this._diffuseTexture && StandardMaterial.DiffuseTextureEnabled) {\r\n ubo.updateFloat2(\"vDiffuseInfos\", this._diffuseTexture.coordinatesIndex, this._diffuseTexture.level);\r\n BindTextureMatrix(this._diffuseTexture, ubo, \"diffuse\");\r\n }\r\n\r\n if (this._ambientTexture && StandardMaterial.AmbientTextureEnabled) {\r\n ubo.updateFloat2(\"vAmbientInfos\", this._ambientTexture.coordinatesIndex, this._ambientTexture.level);\r\n BindTextureMatrix(this._ambientTexture, ubo, \"ambient\");\r\n }\r\n\r\n if (this._opacityTexture && StandardMaterial.OpacityTextureEnabled) {\r\n ubo.updateFloat2(\"vOpacityInfos\", this._opacityTexture.coordinatesIndex, this._opacityTexture.level);\r\n BindTextureMatrix(this._opacityTexture, ubo, \"opacity\");\r\n }\r\n\r\n if (this._hasAlphaChannel()) {\r\n ubo.updateFloat(\"alphaCutOff\", this.alphaCutOff);\r\n }\r\n\r\n BindIBLParameters(scene, defines, ubo, Color3.White(), this._reflectionTexture, false, false, true, false, false, false, this.roughness);\r\n if (!this._reflectionTexture || !StandardMaterial.ReflectionTextureEnabled) {\r\n ubo.updateFloat2(\"vReflectionInfos\", 0.0, this.roughness);\r\n }\r\n\r\n if (this._emissiveTexture && StandardMaterial.EmissiveTextureEnabled) {\r\n ubo.updateFloat2(\"vEmissiveInfos\", this._emissiveTexture.coordinatesIndex, this._emissiveTexture.level);\r\n BindTextureMatrix(this._emissiveTexture, ubo, \"emissive\");\r\n }\r\n\r\n if (this._lightmapTexture && StandardMaterial.LightmapTextureEnabled) {\r\n ubo.updateFloat2(\"vLightmapInfos\", this._lightmapTexture.coordinatesIndex, this._lightmapTexture.level);\r\n BindTextureMatrix(this._lightmapTexture, ubo, \"lightmap\");\r\n }\r\n\r\n if (this._specularTexture && StandardMaterial.SpecularTextureEnabled) {\r\n ubo.updateFloat2(\"vSpecularInfos\", this._specularTexture.coordinatesIndex, this._specularTexture.level);\r\n BindTextureMatrix(this._specularTexture, ubo, \"specular\");\r\n }\r\n\r\n if (this._bumpTexture && scene.getEngine().getCaps().standardDerivatives && StandardMaterial.BumpTextureEnabled) {\r\n ubo.updateFloat3(\"vBumpInfos\", this._bumpTexture.coordinatesIndex, 1.0 / this._bumpTexture.level, this.parallaxScaleBias);\r\n BindTextureMatrix(this._bumpTexture, ubo, \"bump\");\r\n\r\n if (scene._mirroredCameraPosition) {\r\n ubo.updateFloat2(\"vTangentSpaceParams\", this._invertNormalMapX ? 1.0 : -1.0, this._invertNormalMapY ? 1.0 : -1.0);\r\n } else {\r\n ubo.updateFloat2(\"vTangentSpaceParams\", this._invertNormalMapX ? -1.0 : 1.0, this._invertNormalMapY ? -1.0 : 1.0);\r\n }\r\n }\r\n\r\n if (this._refractionTexture && StandardMaterial.RefractionTextureEnabled) {\r\n let depth = 1.0;\r\n if (!this._refractionTexture.isCube) {\r\n ubo.updateMatrix(\"refractionMatrix\", this._refractionTexture.getReflectionTextureMatrix());\r\n\r\n if ((<any>this._refractionTexture).depth) {\r\n depth = (<any>this._refractionTexture).depth;\r\n }\r\n }\r\n ubo.updateFloat4(\"vRefractionInfos\", this._refractionTexture.level, this.indexOfRefraction, depth, this.invertRefractionY ? -1 : 1);\r\n\r\n if ((<any>this._refractionTexture).boundingBoxSize) {\r\n const cubeTexture = <CubeTexture>this._refractionTexture;\r\n\r\n ubo.updateVector3(\"vRefractionPosition\", cubeTexture.boundingBoxPosition);\r\n ubo.updateVector3(\"vRefractionSize\", cubeTexture.boundingBoxSize);\r\n }\r\n }\r\n }\r\n\r\n // Point size\r\n if (this.pointsCloud) {\r\n ubo.updateFloat(\"pointSize\", this.pointSize);\r\n }\r\n\r\n ubo.updateColor4(\"vSpecularColor\", this.specularColor, this.specularPower);\r\n\r\n ubo.updateColor3(\"vEmissiveColor\", StandardMaterial.EmissiveTextureEnabled ? this.emissiveColor : Color3.BlackReadOnly);\r\n ubo.updateColor4(\"vDiffuseColor\", this.diffuseColor, this.alpha);\r\n\r\n scene.ambientColor.multiplyToRef(this.ambientColor, this._globalAmbientColor);\r\n ubo.updateColor3(\"vAmbientColor\", this._globalAmbientColor);\r\n }\r\n\r\n // Textures\r\n if (scene.texturesEnabled) {\r\n if (this._diffuseTexture && StandardMaterial.DiffuseTextureEnabled) {\r\n effect.setTexture(\"diffuseSampler\", this._diffuseTexture);\r\n }\r\n\r\n if (this._ambientTexture && StandardMaterial.AmbientTextureEnabled) {\r\n effect.setTexture(\"ambientSampler\", this._ambientTexture);\r\n }\r\n\r\n if (this._opacityTexture && StandardMaterial.OpacityTextureEnabled) {\r\n effect.setTexture(\"opacitySampler\", this._opacityTexture);\r\n }\r\n\r\n if (this._reflectionTexture && StandardMaterial.ReflectionTextureEnabled) {\r\n if (this._reflectionTexture.isCube) {\r\n effect.setTexture(\"reflectionCubeSampler\", this._reflectionTexture);\r\n } else {\r\n effect.setTexture(\"reflection2DSampler\", this._reflectionTexture);\r\n }\r\n }\r\n\r\n if (this._emissiveTexture && StandardMaterial.EmissiveTextureEnabled) {\r\n effect.setTexture(\"emissiveSampler\", this._emissiveTexture);\r\n }\r\n\r\n if (this._lightmapTexture && StandardMaterial.LightmapTextureEnabled) {\r\n effect.setTexture(\"lightmapSampler\", this._lightmapTexture);\r\n }\r\n\r\n if (this._specularTexture && StandardMaterial.SpecularTextureEnabled) {\r\n effect.setTexture(\"specularSampler\", this._specularTexture);\r\n }\r\n\r\n if (this._bumpTexture && scene.getEngine().getCaps().standardDerivatives && StandardMaterial.BumpTextureEnabled) {\r\n effect.setTexture(\"bumpSampler\", this._bumpTexture);\r\n }\r\n\r\n if (this._refractionTexture && StandardMaterial.RefractionTextureEnabled) {\r\n if (this._refractionTexture.isCube) {\r\n effect.setTexture(\"refractionCubeSampler\", this._refractionTexture);\r\n } else {\r\n effect.setTexture(\"refraction2DSampler\", this._refractionTexture);\r\n }\r\n }\r\n }\r\n\r\n // OIT with depth peeling\r\n if (this.getScene().useOrderIndependentTransparency && this.needAlphaBlendingForMesh(mesh)) {\r\n this.getScene().depthPeelingRenderer!.bind(effect);\r\n }\r\n\r\n this._eventInfo.subMesh = subMesh;\r\n this._callbackPluginEventBindForSubMesh(this._eventInfo);\r\n\r\n // Clip plane\r\n BindClipPlane(effect, this, scene);\r\n\r\n // Colors\r\n this.bindEyePosition(effect);\r\n } else if (needToAlwaysBindUniformBuffers) {\r\n this._needToBindSceneUbo = true;\r\n }\r\n\r\n // Lights\r\n if ((mustRebind || !this.isFrozen || needToAlwaysBindUniformBuffers) && scene.lightsEnabled && !this._disableLighting) {\r\n BindLights(scene, mesh, effect, defines, this._maxSimultaneousLights);\r\n }\r\n\r\n if (mustRebind || !this.isFrozen) {\r\n // View\r\n if (\r\n (scene.fogEnabled && mesh.applyFog && scene.fogMode !== Scene.FOGMODE_NONE) ||\r\n this._reflectionTexture ||\r\n this._refractionTexture ||\r\n mesh.receiveShadows ||\r\n defines.PREPASS ||\r\n defines[\"CLUSTLIGHT_BATCH\"]\r\n ) {\r\n this.bindView(effect);\r\n }\r\n\r\n // Fog\r\n BindFogParameters(scene, mesh, effect);\r\n\r\n // Morph targets\r\n if (defines.NUM_MORPH_INFLUENCERS) {\r\n BindMorphTargetParameters(mesh, effect);\r\n }\r\n\r\n if (defines.BAKED_VERTEX_ANIMATION_TEXTURE) {\r\n mesh.bakedVertexAnimationManager?.bind(effect, defines.INSTANCES);\r\n }\r\n\r\n // Log. depth\r\n if (this.useLogarithmicDepth) {\r\n BindLogDepth(defines, effect, scene);\r\n }\r\n\r\n // image processing\r\n if (this._imageProcessingConfiguration && !this._imageProcessingConfiguration.applyByPostProcess) {\r\n this._imageProcessingConfiguration.bind(this._activeEffect);\r\n }\r\n }\r\n\r\n this._afterBind(mesh, this._activeEffect, subMesh);\r\n ubo.update();\r\n }\r\n\r\n /**\r\n * Get the list of animatables in the material.\r\n * @returns the list of animatables object used in the material\r\n */\r\n public override getAnimatables(): IAnimatable[] {\r\n const results = super.getAnimatables();\r\n\r\n if (this._diffuseTexture && this._diffuseTexture.animations && this._diffuseTexture.animations.length > 0) {\r\n results.push(this._diffuseTexture);\r\n }\r\n\r\n if (this._ambientTexture && this._ambientTexture.animations && this._ambientTexture.animations.length > 0) {\r\n results.push(this._ambientTexture);\r\n }\r\n\r\n if (this._opacityTexture && this._opacityTexture.animations && this._opacityTexture.animations.length > 0) {\r\n results.push(this._opacityTexture);\r\n }\r\n\r\n if (this._reflectionTexture && this._reflectionTexture.animations && this._reflectionTexture.animations.length > 0) {\r\n results.push(this._reflectionTexture);\r\n }\r\n\r\n if (this._emissiveTexture && this._emissiveTexture.animations && this._emissiveTexture.animations.length > 0) {\r\n results.push(this._emissiveTexture);\r\n }\r\n\r\n if (this._specularTexture && this._specularTexture.animations && this._specularTexture.animations.length > 0) {\r\n results.push(this._specularTexture);\r\n }\r\n\r\n if (this._bumpTexture && this._bumpTexture.animations && this._bumpTexture.animations.length > 0) {\r\n results.push(this._bumpTexture);\r\n }\r\n\r\n if (this._lightmapTexture && this._lightmapTexture.animations && this._lightmapTexture.animations.length > 0) {\r\n results.push(this._lightmapTexture);\r\n }\r\n\r\n if (this._refractionTexture && this._refractionTexture.animations && this._refractionTexture.animations.length > 0) {\r\n results.push(this._refractionTexture);\r\n }\r\n\r\n return results;\r\n }\r\n\r\n /**\r\n * Gets the active textures from the material\r\n * @returns an array of textures\r\n */\r\n public override getActiveTextures(): BaseTexture[] {\r\n const activeTextures = super.getActiveTextures();\r\n\r\n if (this._diffuseTexture) {\r\n activeTextures.push(this._diffuseTexture);\r\n }\r\n\r\n if (this._ambientTexture) {\r\n activeTextures.push(this._ambientTexture);\r\n }\r\n\r\n if (this._opacityTexture) {\r\n activeTextures.push(this._opacityTexture);\r\n }\r\n\r\n if (this._reflectionTexture) {\r\n activeTextures.push(this._reflectionTexture);\r\n }\r\n\r\n if (this._emissiveTexture) {\r\n activeTextures.push(this._emissiveTexture);\r\n }\r\n\r\n if (this._specularTexture) {\r\n activeTextures.push(this._specularTexture);\r\n }\r\n\r\n if (this._bumpTexture) {\r\n activeTextures.push(this._bumpTexture);\r\n }\r\n\r\n if (this._lightmapTexture) {\r\n activeTextures.push(this._lightmapTexture);\r\n }\r\n\r\n if (this._refractionTexture) {\r\n activeTextures.push(this._refractionTexture);\r\n }\r\n\r\n return activeTextures;\r\n }\r\n\r\n /**\r\n * Specifies if the material uses a texture\r\n * @param texture defines the texture to check against the material\r\n * @returns a boolean specifying if the material uses the texture\r\n */\r\n public override hasTexture(texture: BaseTexture): boolean {\r\n if (super.hasTexture(texture)) {\r\n return true;\r\n }\r\n\r\n if (this._diffuseTexture === texture) {\r\n return true;\r\n }\r\n\r\n if (this._ambientTexture === texture) {\r\n return true;\r\n }\r\n\r\n if (this._opacityTexture === texture) {\r\n return true;\r\n }\r\n\r\n if (this._reflectionTexture === texture) {\r\n return true;\r\n }\r\n\r\n if (this._emissiveTexture === texture) {\r\n return true;\r\n }\r\n\r\n if (this._specularTexture === texture) {\r\n return true;\r\n }\r\n\r\n if (this._bumpTexture === texture) {\r\n return true;\r\n }\r\n\r\n if (this._lightmapTexture === texture) {\r\n return true;\r\n }\r\n\r\n if (this._refractionTexture === texture) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Disposes the material\r\n * @param forceDisposeEffect specifies if effects should be forcefully disposed\r\n * @param forceDisposeTextures specifies if textures should be forcefully disposed\r\n */\r\n public override dispose(forceDisposeEffect?: boolean, forceDisposeTextures?: boolean): void {\r\n if (forceDisposeTextures) {\r\n this._diffuseTexture?.dispose();\r\n this._ambientTexture?.dispose();\r\n this._opacityTexture?.dispose();\r\n this._reflectionTexture?.dispose();\r\n this._emissiveTexture?.dispose();\r\n this._specularTexture?.dispose();\r\n this._bumpTexture?.dispose();\r\n this._lightmapTexture?.dispose();\r\n this._refractionTexture?.dispose();\r\n }\r\n\r\n if (this._imageProcessingConfiguration && this._imageProcessingObserver) {\r\n this._imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingObserver);\r\n }\r\n\r\n super.dispose(forceDisposeEffect, forceDisposeTextures);\r\n }\r\n\r\n /**\r\n * Makes a duplicate of the material, and gives it a new name\r\n * @param name defines the new name for the duplicated material\r\n * @param cloneTexturesOnlyOnce - if a texture is used in more than one channel (e.g diffuse and opacity), only clone it once and reuse it on the other channels. Default false.\r\n * @param rootUrl defines the root URL to use to load textures\r\n * @returns the cloned material\r\n */\r\n public override clone(name: string, cloneTexturesOnlyOnce: boolean = true, rootUrl = \"\"): StandardMaterial {\r\n const result = SerializationHelper.Clone(() => new StandardMaterial(name, this.getScene()), this, { cloneTexturesOnlyOnce });\r\n\r\n result.name = name;\r\n result.id = name;\r\n\r\n this.stencil.copyTo(result.stencil);\r\n\r\n this._clonePlugins(result, rootUrl);\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Creates a standard material from parsed material data\r\n * @param source defines the JSON representation of the material\r\n * @param scene defines the hosting scene\r\n * @param rootUrl defines the root URL to use to load textures and relative dependencies\r\n * @returns a new standard material\r\n */\r\n public static override Parse(source: any, scene: Scene, rootUrl: string): StandardMaterial {\r\n const material = SerializationHelper.Parse(() => new StandardMaterial(source.name, scene), source, scene, rootUrl);\r\n\r\n if (source.stencil) {\r\n material.stencil.parse(source.stencil, scene, rootUrl);\r\n }\r\n\r\n Material._ParsePlugins(source, material, scene, rootUrl);\r\n\r\n return material;\r\n }\r\n\r\n // Flags used to enable or disable a type of texture for all Standard Materials\r\n /**\r\n * Are diffuse textures enabled in the application.\r\n */\r\n public static get DiffuseTextureEnabled(): boolean {\r\n return MaterialFlags.DiffuseTextureEnabled;\r\n }\r\n public static set DiffuseTextureEnabled(value: boolean) {\r\n MaterialFlags.DiffuseTextureEnabled = value;\r\n }\r\n\r\n /**\r\n * Are detail textures enabled in the application.\r\n */\r\n public static get DetailTextureEnabled(): boolean {\r\n return MaterialFlags.DetailTextureEnabled;\r\n }\r\n public static set DetailTextureEnabled(value: boolean) {\r\n MaterialFlags.DetailTextureEnabled = value;\r\n }\r\n\r\n /**\r\n * Are ambient textures enabled in the application.\r\n */\r\n public static get AmbientTextureEnabled(): boolean {\r\n return MaterialFlags.AmbientTextureEnabled;\r\n }\r\n public static set AmbientTextureEnabled(value: boolean) {\r\n MaterialFlags.AmbientTextureEnabled = value;\r\n }\r\n\r\n /**\r\n * Are opacity textures enabled in the application.\r\n */\r\n public static get OpacityTextureEnabled(): boolean {\r\n return MaterialFlags.OpacityTextureEnabled;\r\n }\r\n public static set OpacityTextureEnabled(value: boolean) {\r\n MaterialFlags.OpacityTextureEnabled = value;\r\n }\r\n\r\n /**\r\n * Are reflection textures enabled in the application.\r\n */\r\n public static get ReflectionTextureEnabled(): boolean {\r\n return MaterialFlags.ReflectionTextureEnabled;\r\n }\r\n public static set ReflectionTextureEnabled(value: boolean) {\r\n MaterialFlags.ReflectionTextureEnabled = value;\r\n }\r\n\r\n /**\r\n * Are emissive textures enabled in the application.\r\n */\r\n public static get EmissiveTextureEnabled(): boolean {\r\n return MaterialFlags.EmissiveTextureEnabled;\r\n }\r\n public static set EmissiveTextureEnabled(value: boolean) {\r\n MaterialFlags.EmissiveTextureEnabled = value;\r\n }\r\n\r\n /**\r\n * Are specular textures enabled in the application.\r\n */\r\n public static get SpecularTextureEnabled(): boolean {\r\n return MaterialFlags.SpecularTextureEnabled;\r\n }\r\n public static set SpecularTextureEnabled(value: boolean) {\r\n MaterialFlags.SpecularTextureEnabled = value;\r\n }\r\n\r\n /**\r\n * Are bump textures enabled in the application.\r\n */\r\n public static get BumpTextureEnabled(): boolean {\r\n return MaterialFlags.BumpTextureEnabled;\r\n }\r\n public static set BumpTextureEnabled(value: boolean) {\r\n MaterialFlags.BumpTextureEnabled = value;\r\n }\r\n\r\n /**\r\n * Are lightmap textures enabled in the application.\r\n */\r\n public static get LightmapTextureEnabled(): boolean {\r\n return MaterialFlags.LightmapTextureEnabled;\r\n }\r\n public static set LightmapTextureEnabled(value: boolean) {\r\n MaterialFlags.LightmapTextureEnabled = value;\r\n }\r\n\r\n /**\r\n * Are refraction textures enabled in the application.\r\n */\r\n public static get RefractionTextureEnabled(): boolean {\r\n return MaterialFlags.RefractionTextureEnabled;\r\n }\r\n public static set RefractionTextureEnabled(value: boolean) {\r\n MaterialFlags.RefractionTextureEnabled = value;\r\n }\r\n\r\n /**\r\n * Are color grading textures enabled in the application.\r\n */\r\n public static get ColorGradingTextureEnabled(): boolean {\r\n return MaterialFlags.ColorGradingTextureEnabled;\r\n }\r\n public static set ColorGradingTextureEnabled(value: boolean) {\r\n MaterialFlags.ColorGradingTextureEnabled = value;\r\n }\r\n\r\n /**\r\n * Are fresnels enabled in the application.\r\n */\r\n public static get FresnelEnabled(): boolean {\r\n return MaterialFlags.FresnelEnabled;\r\n }\r\n public static set FresnelEnabled(value: boolean) {\r\n MaterialFlags.FresnelEnabled = value;\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for standardMaterial.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterStandardMaterial(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n // StandardMaterial serializes its image processing configuration, so the parser must be registered for clone/parse to work.\r\n RegisterImageProcessingConfiguration();\r\n\r\n RegisterClass(\"BABYLON.StandardMaterial\", StandardMaterial);\r\n\r\n Scene.DefaultMaterialFactory = (scene: Scene) => {\r\n return new StandardMaterial(\"default material\", scene);\r\n };\r\n}\r\n\r\n// #region GENERATED_SIDE_EFFECT_STUBS — do not edit, regenerate with `npm run generate:side-effect-stubs`\r\nimport { _MissingSideEffectProperty } from \"../Misc/devTools\";\r\n\r\nif (!Object.getOwnPropertyDescriptor(StandardMaterial.prototype, \"decalMap\")) {\r\n Object.defineProperty(StandardMaterial.prototype, \"decalMap\", _MissingSideEffectProperty(\"StandardMaterial\", \"decalMap\"));\r\n}\r\n// #endregion GENERATED_SIDE_EFFECT_STUBS\r\n"]}