@onerjs/core 8.53.4 → 8.53.6

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":"meshDebugPluginMaterial.pure.js","sourceRoot":"","sources":["../../../../dev/core/src/Materials/meshDebugPluginMaterial.pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;;AAE7D,yDAAyD;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAI/D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGtF,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,iBAAiB,GAAG;;;;;OAKnB,CAAC;AAER,MAAM,uBAAuB,GAAG;;;;;OAKzB,CAAC;AAER,MAAM,aAAa,GAAG;;;;;;;;;;;;;;OAcf,CAAC;AAER,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;OAcrB,CAAC;AAER,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;OAmBlB,CAAC;AAER,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;OAmBxB,CAAC;AAER,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4CrB,CAAC;AAER,MAAM,yBAAyB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4C3B,CAAC;AAER,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BjB,CAAC;AAER,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCvB,CAAC;AAER,MAAM,qBAAqB,GAAG;IAC1B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC;IAC3B,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;IACzB,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;IAC3B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;IAC1B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC;IAC3B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;IACzB,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC;IACzB,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\n/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { MaterialPluginBase } from \"./materialPluginBase.pure\";\r\nimport { type Scene } from \"../scene.pure\";\r\nimport { type UniformBuffer } from \"./uniformBuffer\";\r\nimport { type FloatArray, type Nullable } from \"../types\";\r\nimport { MaterialDefines } from \"./materialDefines\";\r\nimport { type PBRBaseMaterial } from \"./PBR/pbrBaseMaterial.pure\";\r\nimport { type StandardMaterial } from \"./standardMaterial.pure\";\r\nimport { Color3 } from \"core/Maths/math\";\r\nimport { type Mesh } from \"core/Meshes/mesh.pure\";\r\nimport { Logger } from \"core/Misc/logger\";\r\nimport { expandToProperty, serialize, serializeAsColor3 } from \"core/Misc/decorators\";\r\nimport { type AbstractMesh } from \"core/Meshes/abstractMesh.pure\";\r\nimport { ShaderLanguage } from \"./shaderLanguage\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\n\r\nconst vertexDefinitions = `#if defined(DBG_ENABLED)\r\nattribute float dbg_initialPass;\r\nvarying vec3 dbg_vBarycentric;\r\nflat varying vec3 dbg_vVertexWorldPos;\r\nflat varying float dbg_vPass;\r\n#endif`;\r\n\r\nconst vertexDefinitionsWebGPU = `#if defined(DBG_ENABLED)\r\nattribute dbg_initialPass: f32;\r\nvarying dbg_vBarycentric: vec3f;\r\nflat varying dbg_vVertexWorldPos: vec3f;\r\nflat varying dbg_vPass: f32;\r\n#endif`;\r\n\r\nconst vertexMainEnd = `#if defined(DBG_ENABLED)\r\nfloat dbg_vertexIndex = mod(float(gl_VertexID), 3.);\r\nif (dbg_vertexIndex == 0.0) { \r\n dbg_vBarycentric = vec3(1.,0.,0.); \r\n}\r\nelse if (dbg_vertexIndex == 1.0) { \r\n dbg_vBarycentric = vec3(0.,1.,0.); \r\n}\r\nelse { \r\n dbg_vBarycentric = vec3(0.,0.,1.); \r\n}\r\n\r\ndbg_vVertexWorldPos = vPositionW;\r\ndbg_vPass = dbg_initialPass;\r\n#endif`;\r\n\r\nconst vertexMainEndWebGPU = `#if defined(DBG_ENABLED)\r\nvar dbg_vertexIndex = f32(input.vertexIndex) % 3.;\r\nif (dbg_vertexIndex == 0.0) { \r\n vertexOutputs.dbg_vBarycentric = vec3f(1.,0.,0.); \r\n}\r\nelse if (dbg_vertexIndex == 1.0) { \r\n vertexOutputs.dbg_vBarycentric = vec3f(0.,1.,0.); \r\n}\r\nelse { \r\n vertexOutputs.dbg_vBarycentric = vec3f(0.,0.,1.); \r\n}\r\n\r\nvertexOutputs.dbg_vVertexWorldPos = vertexOutputs.vPositionW;\r\nvertexOutputs.dbg_vPass = input.dbg_initialPass;\r\n#endif`;\r\n\r\nconst fragmentUniforms = `#if defined(DBG_ENABLED)\r\nuniform vec3 dbg_shadedDiffuseColor;\r\nuniform vec4 dbg_shadedSpecularColorPower;\r\nuniform vec3 dbg_thicknessRadiusScale;\r\n\r\n#if DBG_MODE == 2 || DBG_MODE == 3\r\n uniform vec3 dbg_vertexColor;\r\n#endif\r\n\r\n#if DBG_MODE == 1\r\n uniform vec3 dbg_wireframeTrianglesColor;\r\n#elif DBG_MODE == 3\r\n uniform vec3 dbg_wireframeVerticesColor;\r\n#elif DBG_MODE == 4 || DBG_MODE == 5\r\n uniform vec3 dbg_uvPrimaryColor;\r\n uniform vec3 dbg_uvSecondaryColor;\r\n#elif DBG_MODE == 7\r\n uniform vec3 dbg_materialColor;\r\n#endif\r\n#endif`;\r\n\r\nconst fragmentUniformsWebGPU = `#if defined(DBG_ENABLED)\r\nuniform dbg_shadedDiffuseColor: vec3f;\r\nuniform dbg_shadedSpecularColorPower: vec4f;\r\nuniform dbg_thicknessRadiusScale: vec3f;\r\n\r\n#if DBG_MODE == 2 || DBG_MODE == 3\r\n uniform dbg_vertexColor: vec3f;\r\n#endif\r\n\r\n#if DBG_MODE == 1\r\n uniform dbg_wireframeTrianglesColor: vec3f;\r\n#elif DBG_MODE == 3\r\n uniform dbg_wireframeVerticesColor: vec3f;\r\n#elif DBG_MODE == 4 || DBG_MODE == 5\r\n uniform dbg_uvPrimaryColor: vec3f;\r\n uniform dbg_uvSecondaryColor: vec3f;\r\n#elif DBG_MODE == 7\r\n uniform dbg_materialColor: vec3f;\r\n#endif\r\n#endif`;\r\n\r\nconst fragmentDefinitions = `#if defined(DBG_ENABLED)\r\nvarying vec3 dbg_vBarycentric;\r\nflat varying vec3 dbg_vVertexWorldPos;\r\nflat varying float dbg_vPass;\r\n\r\n#if !defined(DBG_MULTIPLY)\r\n vec3 dbg_applyShading(vec3 color) {\r\n vec3 N = vNormalW.xyz;\r\n vec3 L = normalize(vEyePosition.xyz - vPositionW.xyz);\r\n vec3 H = normalize(L + L);\r\n float LdotN = clamp(dot(L,N), 0., 1.);\r\n float HdotN = clamp(dot(H,N), 0., 1.);\r\n float specTerm = pow(HdotN, dbg_shadedSpecularColorPower.w);\r\n color *= (LdotN / PI);\r\n color += dbg_shadedSpecularColorPower.rgb * (specTerm / PI);\r\n return color;\r\n }\r\n#endif\r\n\r\n#if DBG_MODE == 1 || DBG_MODE == 3\r\n float dbg_edgeFactor() {\r\n vec3 d = fwidth(dbg_vBarycentric);\r\n vec3 a3 = smoothstep(vec3(0.), d * dbg_thicknessRadiusScale.x, dbg_vBarycentric);\r\n return min(min(a3.x, a3.y), a3.z);\r\n }\r\n#endif\r\n\r\n#if DBG_MODE == 2 || DBG_MODE == 3\r\n float dbg_cornerFactor() {\r\n vec3 worldPos = vPositionW;\r\n float dist = length(worldPos - dbg_vVertexWorldPos);\r\n float camDist = length(worldPos - vEyePosition.xyz);\r\n float d = sqrt(camDist) * .001;\r\n return smoothstep((dbg_thicknessRadiusScale.y * d), ((dbg_thicknessRadiusScale.y * 1.01) * d), dist);\r\n }\r\n#endif\r\n\r\n#if (DBG_MODE == 4 && defined(UV1)) || (DBG_MODE == 5 && defined(UV2))\r\n float dbg_checkerboardFactor(vec2 uv) {\r\n vec2 f = fract(uv * dbg_thicknessRadiusScale.z);\r\n f -= .5;\r\n return (f.x * f.y) > 0. ? 1. : 0.;\r\n }\r\n#endif\r\n#endif`;\r\n\r\nconst fragmentDefinitionsWebGPU = `#if defined(DBG_ENABLED)\r\nvarying dbg_vBarycentric: vec3f;\r\nflat varying dbg_vVertexWorldPos: vec3f;\r\nflat varying dbg_vPass: f32;\r\n\r\n#if !defined(DBG_MULTIPLY)\r\n fn dbg_applyShading(color: vec3f) -> vec3f {\r\n var N = fragmentInputs.vNormalW.xyz;\r\n var L = normalize(scene.vEyePosition.xyz - fragmentInputs.vPositionW.xyz);\r\n var H = normalize(L + L);\r\n var LdotN = clamp(dot(L,N), 0., 1.);\r\n var HdotN = clamp(dot(H,N), 0., 1.);\r\n var specTerm = pow(HdotN, uniforms.dbg_shadedSpecularColorPower.w);\r\n var result = color * (LdotN / PI);\r\n result += uniforms.dbg_shadedSpecularColorPower.rgb * (specTerm / PI);\r\n return result;\r\n }\r\n#endif\r\n\r\n#if DBG_MODE == 1 || DBG_MODE == 3\r\n fn dbg_edgeFactor() -> f32 {\r\n var d = fwidth(fragmentInputs.dbg_vBarycentric);\r\n var a3 = smoothstep(vec3f(0.), d * uniforms.dbg_thicknessRadiusScale.x, fragmentInputs.dbg_vBarycentric);\r\n return min(min(a3.x, a3.y), a3.z);\r\n }\r\n#endif\r\n\r\n#if DBG_MODE == 2 || DBG_MODE == 3\r\n fn dbg_cornerFactor() -> f32 {\r\n let worldPos = fragmentInputs.vPositionW;\r\n let dist = length(worldPos - fragmentInputs.dbg_vVertexWorldPos);\r\n let camDist = length(worldPos - scene.vEyePosition.xyz);\r\n let d = sqrt(camDist) * .001;\r\n return smoothstep((uniforms.dbg_thicknessRadiusScale.y * d), ((uniforms.dbg_thicknessRadiusScale.y * 1.01) * d), dist);\r\n }\r\n#endif\r\n\r\n#if (DBG_MODE == 4 && defined(UV1)) || (DBG_MODE == 5 && defined(UV2))\r\n fn dbg_checkerboardFactor(uv: vec2f) -> f32 {\r\n var f = fract(uv * uniforms.dbg_thicknessRadiusScale.z);\r\n f -= .5;\r\n return select(0.0, 1.0, (f.x * f.y) > 0.0);\r\n }\r\n#endif\r\n#endif`;\r\n\r\nconst fragmentMainEnd = `#if defined(DBG_ENABLED)\r\nvec3 dbg_color = vec3(1.);\r\n#if DBG_MODE == 1\r\n dbg_color = mix(dbg_wireframeTrianglesColor, vec3(1.), dbg_edgeFactor());\r\n#elif DBG_MODE == 2 || DBG_MODE == 3\r\n float dbg_cornerFactor = dbg_cornerFactor();\r\n if (dbg_vPass == 0. && dbg_cornerFactor == 1.) discard;\r\n dbg_color = mix(dbg_vertexColor, vec3(1.), dbg_cornerFactor);\r\n #if DBG_MODE == 3\r\n dbg_color *= mix(dbg_wireframeVerticesColor, vec3(1.), dbg_edgeFactor());\r\n #endif\r\n#elif DBG_MODE == 4 && defined(MAINUV1)\r\n dbg_color = mix(dbg_uvPrimaryColor, dbg_uvSecondaryColor, dbg_checkerboardFactor(vMainUV1));\r\n#elif DBG_MODE == 5 && defined(MAINUV2)\r\n dbg_color = mix(dbg_uvPrimaryColor, dbg_uvSecondaryColor, dbg_checkerboardFactor(vMainUV2));\r\n#elif DBG_MODE == 6 && defined(VERTEXCOLOR)\r\n dbg_color = vColor.rgb;\r\n#elif DBG_MODE == 7\r\n dbg_color = dbg_materialColor;\r\n#endif\r\n\r\n#if defined(DBG_MULTIPLY)\r\n gl_FragColor *= vec4(dbg_color, 1.);\r\n#else\r\n #if DBG_MODE != 6\r\n gl_FragColor = vec4(dbg_applyShading(dbg_shadedDiffuseColor) * dbg_color, 1.);\r\n #else\r\n gl_FragColor = vec4(dbg_color, 1.);\r\n #endif\r\n#endif\r\n#endif`;\r\n\r\nconst fragmentMainEndWebGPU = `#if defined(DBG_ENABLED)\r\nvar dbg_color = vec3f(1.);\r\n#if DBG_MODE == 1\r\n dbg_color = mix(uniforms.dbg_wireframeTrianglesColor, vec3f(1.), dbg_edgeFactor());\r\n#elif DBG_MODE == 2 || DBG_MODE == 3\r\n let dbg_cornerFactor = dbg_cornerFactor();\r\n if (fragmentInputs.dbg_vPass == 0.0 && dbg_cornerFactor == 1.0) {\r\n discard;\r\n }\r\n dbg_color = mix(uniforms.dbg_vertexColor, vec3f(1.), dbg_cornerFactor);\r\n #if DBG_MODE == 3\r\n dbg_color *= mix(uniforms.dbg_wireframeVerticesColor, vec3f(1.), dbg_edgeFactor());\r\n #endif\r\n#elif DBG_MODE == 4 && defined(MAINUV1)\r\n dbg_color = mix(uniforms.dbg_uvPrimaryColor, uniforms.dbg_uvSecondaryColor, dbg_checkerboardFactor(fragmentInputs.vMainUV1));\r\n#elif DBG_MODE == 5 && defined(MAINUV2)\r\n dbg_color = mix(uniforms.dbg_uvPrimaryColor, uniforms.dbg_uvSecondaryColor, dbg_checkerboardFactor(fragmentInputs.vMainUV2));\r\n#elif DBG_MODE == 6 && defined(VERTEXCOLOR)\r\n dbg_color = fragmentInputs.vColor.rgb;\r\n#elif DBG_MODE == 7\r\n dbg_color = uniforms.dbg_materialColor;\r\n#endif\r\n\r\n#if defined(DBG_MULTIPLY)\r\n fragmentOutputs.color *= vec4f(dbg_color, 1.);\r\n#else\r\n #if DBG_MODE != 6\r\n fragmentOutputs.color = vec4f(dbg_applyShading(uniforms.dbg_shadedDiffuseColor) * dbg_color, 1.);\r\n #else\r\n fragmentOutputs.color = vec4f(dbg_color, 1.);\r\n #endif\r\n#endif\r\n#endif`;\r\n\r\nconst defaultMaterialColors = [\r\n new Color3(0.98, 0.26, 0.38),\r\n new Color3(0.47, 0.75, 0.3),\r\n new Color3(0, 0.26, 0.77),\r\n new Color3(0.97, 0.6, 0.76),\r\n new Color3(0.19, 0.63, 0.78),\r\n new Color3(0.98, 0.8, 0.6),\r\n new Color3(0.65, 0.43, 0.15),\r\n new Color3(0.15, 0.47, 0.22),\r\n new Color3(0.67, 0.71, 0.86),\r\n new Color3(0.09, 0.46, 0.56),\r\n new Color3(0.8, 0.98, 0.02),\r\n new Color3(0.39, 0.29, 0.13),\r\n new Color3(0.53, 0.63, 0.06),\r\n new Color3(0.95, 0.96, 0.41),\r\n new Color3(1, 0.72, 0.94),\r\n new Color3(0.63, 0.08, 0.31),\r\n new Color3(0.66, 0.96, 0.95),\r\n new Color3(0.22, 0.14, 0.19),\r\n new Color3(0.14, 0.65, 0.59),\r\n new Color3(0.93, 1, 0.68),\r\n new Color3(0.93, 0.14, 0.44),\r\n new Color3(0.47, 0.86, 0.67),\r\n new Color3(0.85, 0.07, 0.78),\r\n new Color3(0.53, 0.64, 0.98),\r\n new Color3(0.43, 0.37, 0.56),\r\n new Color3(0.71, 0.65, 0.25),\r\n new Color3(0.66, 0.19, 0.01),\r\n new Color3(0.94, 0.53, 0.12),\r\n new Color3(0.41, 0.44, 0.44),\r\n new Color3(0.24, 0.71, 0.96),\r\n new Color3(0.57, 0.28, 0.56),\r\n new Color3(0.44, 0.98, 0.42),\r\n];\r\n\r\n/**\r\n * Supported visualizations of MeshDebugPluginMaterial\r\n */\r\nexport const enum MeshDebugMode {\r\n /**\r\n * Material without any mesh debug visualization\r\n */\r\n NONE = 0,\r\n /**\r\n * A wireframe of the mesh\r\n * NOTE: For this mode to work correctly, convertToUnIndexedMesh() or MeshDebugPluginMaterial.PrepareMeshForTrianglesAndVerticesMode() must first be called on mesh.\r\n */\r\n TRIANGLES = 1,\r\n /**\r\n * Points drawn over vertices of mesh\r\n * NOTE: For this mode to work correctly, MeshDebugPluginMaterial.PrepareMeshForTrianglesAndVerticesMode() must first be called on mesh.\r\n */\r\n VERTICES = 2,\r\n /**\r\n * A wireframe of the mesh, with points drawn over vertices\r\n * NOTE: For this mode to work correctly, MeshDebugPluginMaterial.PrepareMeshForTrianglesAndVerticesMode() must first be called on mesh.\r\n */\r\n TRIANGLES_VERTICES = 3,\r\n /**\r\n * A checkerboard grid of the mesh's UV set 0\r\n */\r\n UV0 = 4,\r\n /**\r\n * A checkerboard grid of the mesh's UV set 1\r\n */\r\n UV1 = 5,\r\n /**\r\n * The mesh's vertex colors displayed as the primary texture\r\n */\r\n VERTEXCOLORS = 6,\r\n /**\r\n * An arbitrary, distinguishable color to identify the material\r\n */\r\n MATERIALIDS = 7,\r\n}\r\n\r\n/**\r\n * Options for MeshDebugPluginMaterial visualizations\r\n */\r\nexport interface MeshDebugOptions {\r\n /**\r\n * The mesh debug visualization.\r\n * Defaults to NONE.\r\n */\r\n mode?: MeshDebugMode;\r\n /**\r\n * Whether the mesh debug visualization should multiply with color underneath.\r\n * Defaults to true.\r\n */\r\n multiply?: boolean;\r\n /**\r\n * Diffuse color used to shade the mesh.\r\n * Defaults to (1.0, 1.0, 1.0).\r\n */\r\n shadedDiffuseColor?: Color3;\r\n /**\r\n * Specular color used to shade the mesh.\r\n * Defaults to (0.8, 0.8, 0.8).\r\n */\r\n shadedSpecularColor?: Color3;\r\n /**\r\n * Specular power used to shade the mesh.\r\n * Defaults to 10.\r\n */\r\n shadedSpecularPower?: number;\r\n /**\r\n * Width of edge lines in TRIANGLES and TRIANGLE_VERTICES modes.\r\n * Defaults to 0.7.\r\n */\r\n wireframeThickness?: number;\r\n /**\r\n * Color of edge lines in TRIANGLES mode.\r\n * Defaults to (0.0, 0.0, 0.0).\r\n */\r\n wireframeTrianglesColor?: Color3;\r\n /**\r\n * Color of edge lines in TRIANGLES_VERTICES modes.\r\n * Defaults to (0.8, 0.8, 0.8).\r\n */\r\n wireframeVerticesColor?: Color3;\r\n /**\r\n * Color of vertices in TRIANGLES_VERTICES and VERTICES mode.\r\n * Defaults to (0.0, 0.0, 0.0).\r\n */\r\n vertexColor?: Color3;\r\n /**\r\n * Radius of dots drawn over vertices in TRIANGLE_VERTICES and VERTICES mode.\r\n * Defaults to 1.2.\r\n */\r\n vertexRadius?: number;\r\n /**\r\n * Size of tiles in UV1 or UV2 modes.\r\n * Defaults to 20.\r\n */\r\n uvScale?: number;\r\n /**\r\n * 1st color of checkerboard grid in UV1 or UV2 modes.\r\n * Defaults to (1.0, 1.0, 1.0).\r\n */\r\n uvPrimaryColor?: Color3;\r\n /**\r\n * 2nd color of checkerboard grid in UV1 or UV2 modes.\r\n * Defaults to (0.5, 0.5, 0.5).\r\n */\r\n uvSecondaryColor?: Color3;\r\n}\r\n\r\n/** @internal */\r\nclass MeshDebugDefines extends MaterialDefines {\r\n /**\r\n * Current mesh debug visualization.\r\n * Defaults to NONE.\r\n */\r\n DBG_MODE: MeshDebugMode = MeshDebugMode.NONE;\r\n /**\r\n * Whether the mesh debug visualization multiplies with colors underneath.\r\n * Defaults to true.\r\n */\r\n DBG_MULTIPLY: boolean = true;\r\n /**\r\n * Whether the mesh debug plugin is enabled in the material.\r\n * Defaults to true.\r\n */\r\n DBG_ENABLED: boolean = true;\r\n}\r\n\r\n/**\r\n * Plugin that implements various mesh debug visualizations,\r\n * List of available visualizations can be found in MeshDebugMode enum.\r\n */\r\nexport class MeshDebugPluginMaterial extends MaterialPluginBase {\r\n /**\r\n * Total number of instances of the plugin.\r\n * Starts at 0.\r\n */\r\n private static _PluginCount: number = 0;\r\n\r\n /**\r\n * Color palette used for MATERIALIDS mode.\r\n * Defaults to `defaultMaterialColors`\r\n */\r\n public static MaterialColors: Color3[] = defaultMaterialColors;\r\n\r\n /**\r\n * Material ID color of this plugin instance.\r\n * Taken from index `_PluginCount` of `MaterialColors` at time of instantiation.\r\n */\r\n @serializeAsColor3()\r\n private _materialColor: Color3;\r\n\r\n /**\r\n * Whether the mesh debug plugin is enabled in the material.\r\n * Defaults to true in constructor.\r\n */\r\n @serialize()\r\n private _isEnabled: boolean;\r\n\r\n private _mode: MeshDebugMode;\r\n /**\r\n * The mesh debug visualization.\r\n * Defaults to NONE.\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllDefinesAsDirty\")\r\n public mode: MeshDebugMode;\r\n\r\n private _multiply: boolean;\r\n /**\r\n * Whether the mesh debug visualization should multiply with color underneath.\r\n * Defaults to true.\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllDefinesAsDirty\")\r\n public multiply: boolean;\r\n\r\n /**\r\n * Diffuse color used to shade the mesh.\r\n * Defaults to (1.0, 1.0, 1.0).\r\n */\r\n @serializeAsColor3()\r\n public shadedDiffuseColor: Color3;\r\n\r\n /**\r\n * Specular color used to shade the mesh.\r\n * Defaults to (0.8, 0.8, 0.8).\r\n */\r\n @serializeAsColor3()\r\n public shadedSpecularColor: Color3;\r\n\r\n /**\r\n * Specular power used to shade the mesh.\r\n * Defaults to 10.\r\n */\r\n @serialize()\r\n public shadedSpecularPower: number;\r\n\r\n /**\r\n * Width of edge lines in TRIANGLES and TRIANGLE_VERTICES modes.\r\n * Defaults to 0.7.\r\n */\r\n @serialize()\r\n public wireframeThickness: number;\r\n\r\n /**\r\n * Color of edge lines in TRIANGLES mode.\r\n * Defaults to (0.0, 0.0, 0.0).\r\n */\r\n @serializeAsColor3()\r\n public wireframeTrianglesColor: Color3;\r\n\r\n /**\r\n * Color of edge lines in TRIANGLES_VERTICES modes.\r\n * Defaults to (0.8, 0.8, 0.8).\r\n */\r\n @serializeAsColor3()\r\n public wireframeVerticesColor: Color3;\r\n\r\n /**\r\n * Color of vertices in TRIANGLES_VERTICES and VERTICES mode.\r\n * Defaults to (0.0, 0.0, 0.0).\r\n */\r\n @serializeAsColor3()\r\n public vertexColor: Color3;\r\n\r\n /**\r\n * Radius of dots drawn over vertices in TRIANGLE_VERTICES and VERTICES mode.\r\n * Defaults to 1.2.\r\n */\r\n @serialize()\r\n public vertexRadius: number;\r\n\r\n /**\r\n * Size of tiles in UV1 or UV2 modes.\r\n * Defaults to 20.\r\n */\r\n @serialize()\r\n public uvScale: number;\r\n\r\n /**\r\n * 1st color of checkerboard grid in UV1 or UV2 modes.\r\n * Defaults to (1.0, 1.0, 1.0).\r\n */\r\n @serializeAsColor3()\r\n public uvPrimaryColor: Color3;\r\n\r\n /**\r\n * 2nd color of checkerboard grid in UV1 or UV2 modes.\r\n * Defaults to (0.5, 0.5, 0.5).\r\n */\r\n @serializeAsColor3()\r\n public uvSecondaryColor: Color3;\r\n\r\n /** @internal */\r\n protected _markAllDefinesAsDirty(): void {\r\n this._enable(this._isEnabled);\r\n this.markAllDefinesAsDirty();\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating that the plugin is compatible with a given shader language.\r\n * @param shaderLanguage The shader language to use.\r\n * @returns true if the plugin is compatible with the shader language\r\n */\r\n public override isCompatible(shaderLanguage: ShaderLanguage): boolean {\r\n switch (shaderLanguage) {\r\n case ShaderLanguage.GLSL:\r\n case ShaderLanguage.WGSL:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Creates a new MeshDebugPluginMaterial\r\n * @param material Material to attach the mesh debug plugin to\r\n * @param options Options for the mesh debug plugin\r\n */\r\n constructor(material: PBRBaseMaterial | StandardMaterial, options: MeshDebugOptions = {}) {\r\n const defines = new MeshDebugDefines();\r\n defines.DBG_MODE = options.mode ?? defines.DBG_MODE;\r\n defines.DBG_MULTIPLY = options.multiply ?? defines.DBG_MULTIPLY;\r\n super(material, \"MeshDebug\", 200, defines, true, true);\r\n\r\n this._mode = defines.DBG_MODE;\r\n this._multiply = defines.DBG_MULTIPLY;\r\n this.shadedDiffuseColor = options.shadedDiffuseColor ?? new Color3(1, 1, 1);\r\n this.shadedSpecularColor = options.shadedSpecularColor ?? new Color3(0.8, 0.8, 0.8);\r\n this.shadedSpecularPower = options.shadedSpecularPower ?? 10;\r\n this.wireframeThickness = options.wireframeThickness ?? 0.7;\r\n this.wireframeTrianglesColor = options.wireframeTrianglesColor ?? new Color3(0, 0, 0);\r\n this.wireframeVerticesColor = options.wireframeVerticesColor ?? new Color3(0.8, 0.8, 0.8);\r\n this.vertexColor = options.vertexColor ?? new Color3(0, 0, 0);\r\n this.vertexRadius = options.vertexRadius ?? 1.2;\r\n this.uvScale = options.uvScale ?? 20;\r\n this.uvPrimaryColor = options.uvPrimaryColor ?? new Color3(1, 1, 1);\r\n this.uvSecondaryColor = options.uvSecondaryColor ?? new Color3(0.5, 0.5, 0.5);\r\n\r\n this._materialColor = MeshDebugPluginMaterial.MaterialColors[MeshDebugPluginMaterial._PluginCount++ % MeshDebugPluginMaterial.MaterialColors.length];\r\n this.isEnabled = true;\r\n }\r\n\r\n /**\r\n * Get the class name\r\n * @returns Class name\r\n */\r\n public override getClassName() {\r\n return \"MeshDebugPluginMaterial\";\r\n }\r\n\r\n /**\r\n * Gets whether the mesh debug plugin is enabled in the material.\r\n */\r\n public get isEnabled(): boolean {\r\n return this._isEnabled;\r\n }\r\n /**\r\n * Sets whether the mesh debug plugin is enabled in the material.\r\n * @param value enabled\r\n */\r\n public set isEnabled(value: boolean) {\r\n if (this._isEnabled === value) {\r\n return;\r\n }\r\n if (!this._material.getScene().getEngine().isWebGPU && this._material.getScene().getEngine().version == 1) {\r\n Logger.Error(\"MeshDebugPluginMaterial is not supported on WebGL 1.0.\");\r\n this._isEnabled = false;\r\n return;\r\n }\r\n this._isEnabled = value;\r\n this._markAllDefinesAsDirty();\r\n }\r\n\r\n /**\r\n * Prepare the defines\r\n * @param defines Mesh debug defines\r\n * @param scene Scene\r\n * @param mesh Mesh associated with material\r\n */\r\n public override prepareDefines(defines: MeshDebugDefines, scene: Scene, mesh: AbstractMesh) {\r\n if (\r\n (this._mode == MeshDebugMode.VERTICES || this._mode == MeshDebugMode.TRIANGLES || this._mode == MeshDebugMode.TRIANGLES_VERTICES) &&\r\n !mesh.isVerticesDataPresent(\"dbg_initialPass\")\r\n ) {\r\n Logger.Warn(\r\n \"For best results with TRIANGLES, TRIANGLES_VERTICES, or VERTICES modes, please use MeshDebugPluginMaterial.PrepareMeshForTrianglesAndVerticesMode() on mesh.\",\r\n 1\r\n );\r\n }\r\n\r\n defines.DBG_MODE = this._mode;\r\n defines.DBG_MULTIPLY = this._multiply;\r\n defines.DBG_ENABLED = this._isEnabled;\r\n }\r\n\r\n /**\r\n * Get the shader attributes\r\n * @param attributes Array of attributes\r\n */\r\n public override getAttributes(attributes: string[]) {\r\n attributes.push(\"dbg_initialPass\");\r\n }\r\n\r\n /**\r\n * Get the shader uniforms\r\n * @param shaderLanguage The shader language to use.\r\n * @returns Uniforms\r\n */\r\n public override getUniforms(shaderLanguage = ShaderLanguage.GLSL) {\r\n return {\r\n ubo: [\r\n { name: \"dbg_shadedDiffuseColor\", size: 3, type: \"vec3\" },\r\n { name: \"dbg_shadedSpecularColorPower\", size: 4, type: \"vec4\" }, // shadedSpecularColor, shadedSpecularPower\r\n { name: \"dbg_thicknessRadiusScale\", size: 3, type: \"vec3\" }, // wireframeThickness, vertexRadius, uvScale\r\n { name: \"dbg_wireframeTrianglesColor\", size: 3, type: \"vec3\" },\r\n { name: \"dbg_wireframeVerticesColor\", size: 3, type: \"vec3\" },\r\n { name: \"dbg_vertexColor\", size: 3, type: \"vec3\" },\r\n { name: \"dbg_uvPrimaryColor\", size: 3, type: \"vec3\" },\r\n { name: \"dbg_uvSecondaryColor\", size: 3, type: \"vec3\" },\r\n { name: \"dbg_materialColor\", size: 3, type: \"vec3\" },\r\n ],\r\n fragment: shaderLanguage === ShaderLanguage.GLSL ? fragmentUniforms : fragmentUniformsWebGPU,\r\n };\r\n }\r\n\r\n /**\r\n * Bind the uniform buffer\r\n * @param uniformBuffer Uniform buffer\r\n */\r\n public override bindForSubMesh(uniformBuffer: UniformBuffer): void {\r\n if (!this._isEnabled) {\r\n return;\r\n }\r\n uniformBuffer.updateFloat3(\"dbg_shadedDiffuseColor\", this.shadedDiffuseColor.r, this.shadedDiffuseColor.g, this.shadedDiffuseColor.b);\r\n uniformBuffer.updateFloat4(\"dbg_shadedSpecularColorPower\", this.shadedSpecularColor.r, this.shadedSpecularColor.g, this.shadedSpecularColor.b, this.shadedSpecularPower);\r\n uniformBuffer.updateFloat3(\"dbg_thicknessRadiusScale\", this.wireframeThickness, this.vertexRadius, this.uvScale);\r\n uniformBuffer.updateColor3(\"dbg_wireframeTrianglesColor\", this.wireframeTrianglesColor);\r\n uniformBuffer.updateColor3(\"dbg_wireframeVerticesColor\", this.wireframeVerticesColor);\r\n uniformBuffer.updateColor3(\"dbg_vertexColor\", this.vertexColor);\r\n uniformBuffer.updateColor3(\"dbg_uvPrimaryColor\", this.uvPrimaryColor);\r\n uniformBuffer.updateColor3(\"dbg_uvSecondaryColor\", this.uvSecondaryColor);\r\n uniformBuffer.updateColor3(\"dbg_materialColor\", this._materialColor);\r\n }\r\n\r\n /**\r\n * Get shader code\r\n * @param shaderType \"vertex\" or \"fragment\"\r\n * @param shaderLanguage The shader language to use.\r\n * @returns Shader code\r\n */\r\n public override getCustomCode(shaderType: string, shaderLanguage = ShaderLanguage.GLSL): Nullable<{ [pointName: string]: string }> {\r\n if (shaderLanguage === ShaderLanguage.WGSL) {\r\n return shaderType === \"vertex\"\r\n ? {\r\n CUSTOM_VERTEX_DEFINITIONS: vertexDefinitionsWebGPU,\r\n CUSTOM_VERTEX_MAIN_END: vertexMainEndWebGPU,\r\n }\r\n : {\r\n CUSTOM_FRAGMENT_DEFINITIONS: fragmentDefinitionsWebGPU,\r\n CUSTOM_FRAGMENT_MAIN_END: fragmentMainEndWebGPU,\r\n };\r\n }\r\n\r\n return shaderType === \"vertex\"\r\n ? {\r\n CUSTOM_VERTEX_DEFINITIONS: vertexDefinitions,\r\n CUSTOM_VERTEX_MAIN_END: vertexMainEnd,\r\n }\r\n : {\r\n CUSTOM_FRAGMENT_DEFINITIONS: fragmentDefinitions,\r\n CUSTOM_FRAGMENT_MAIN_END: fragmentMainEnd,\r\n };\r\n }\r\n\r\n /**\r\n * Resets static variables of the plugin to their original state\r\n */\r\n public static Reset(): void {\r\n this._PluginCount = 0;\r\n this.MaterialColors = defaultMaterialColors;\r\n }\r\n\r\n /**\r\n * Renders triangles in a mesh 3 times by tripling the indices in the index buffer.\r\n * Used to prepare a mesh to be rendered in `TRIANGLES`, `VERTICES`, or `TRIANGLES_VERTICES` modes.\r\n * NOTE: This is a destructive operation. The mesh's index buffer and vertex buffers are modified, and a new vertex buffer is allocated.\r\n * If you'd like the ability to revert these changes, toggle the optional `returnRollback` flag.\r\n * @param mesh the mesh to target\r\n * @param returnRollback whether or not to return a function that reverts mesh to its initial state. Default: false.\r\n * @returns a rollback function if `returnRollback` is true, otherwise an empty function.\r\n */\r\n public static PrepareMeshForTrianglesAndVerticesMode(mesh: Mesh, returnRollback: boolean = false): () => void {\r\n let rollback = () => {};\r\n\r\n if (mesh.getTotalIndices() == 0) {\r\n return rollback;\r\n }\r\n\r\n if (returnRollback) {\r\n const kinds = mesh.getVerticesDataKinds();\r\n const indices = mesh.getIndices()!;\r\n const data: { [kind: string]: FloatArray } = {};\r\n for (const kind of kinds) {\r\n data[kind] = mesh.getVerticesData(kind)!;\r\n }\r\n\r\n rollback = function () {\r\n mesh.setIndices(indices);\r\n for (const kind of kinds) {\r\n const stride = mesh.getVertexBuffer(kind)!.getStrideSize();\r\n mesh.setVerticesData(kind, data[kind], undefined, stride);\r\n }\r\n mesh.removeVerticesData(\"dbg_initialPass\");\r\n };\r\n }\r\n\r\n let indices = Array.from(mesh.getIndices()!);\r\n const newIndices1 = [];\r\n for (let i = 0; i < indices.length; i += 3) {\r\n newIndices1.push(indices[i + 1], indices[i + 2], indices[i + 0]);\r\n }\r\n mesh.setIndices(indices.concat(newIndices1));\r\n\r\n mesh.convertToUnIndexedMesh();\r\n\r\n mesh.isUnIndexed = false;\r\n\r\n indices = Array.from(mesh.getIndices()!);\r\n const newIndices2 = [];\r\n for (let i = indices.length / 2; i < indices.length; i += 3) {\r\n newIndices2.push(indices[i + 1], indices[i + 2], indices[i + 0]);\r\n }\r\n mesh.setIndices(indices.concat(newIndices2));\r\n\r\n const num = mesh.getTotalVertices();\r\n const mid = num / 2;\r\n const pass = new Array(num).fill(1, 0, mid).fill(0, mid, num);\r\n mesh.setVerticesData(\"dbg_initialPass\", pass, false, 1);\r\n\r\n return rollback;\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for meshDebugPluginMaterial.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterMeshDebugPluginMaterial(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n RegisterClass(\"BABYLON.MeshDebugPluginMaterial\", MeshDebugPluginMaterial);\r\n}\r\n"]}
1
+ {"version":3,"file":"meshDebugPluginMaterial.pure.js","sourceRoot":"","sources":["../../../../dev/core/src/Materials/meshDebugPluginMaterial.pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;;AAE7D,yDAAyD;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAI/D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGtF,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,iBAAiB,GAAG;;;;;OAKnB,CAAC;AAER,MAAM,uBAAuB,GAAG;;;;;OAKzB,CAAC;AAER,MAAM,aAAa,GAAG;;;;;;;;;;;;;;OAcf,CAAC;AAER,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;OAcrB,CAAC;AAER,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;OAmBlB,CAAC;AAER,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;OAmBxB,CAAC;AAER,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4CrB,CAAC;AAER,MAAM,yBAAyB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4C3B,CAAC;AAER,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BjB,CAAC;AAER,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCvB,CAAC;AAER,MAAM,qBAAqB,GAAG;IAC1B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC;IAC3B,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;IACzB,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;IAC3B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;IAC1B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC;IAC3B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;IACzB,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC;IACzB,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\n/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { MaterialPluginBase } from \"./materialPluginBase.pure\";\r\nimport { type Scene } from \"../scene.pure\";\r\nimport { type UniformBuffer } from \"./uniformBuffer\";\r\nimport { type FloatArray, type Nullable } from \"../types\";\r\nimport { MaterialDefines } from \"./materialDefines\";\r\nimport { type PBRBaseMaterial } from \"./PBR/pbrBaseMaterial.pure\";\r\nimport { type StandardMaterial } from \"./standardMaterial.pure\";\r\nimport { Color3 } from \"core/Maths/math\";\r\nimport { type Mesh } from \"core/Meshes/mesh.pure\";\r\nimport { Logger } from \"core/Misc/logger\";\r\nimport { expandToProperty, serialize, serializeAsColor3 } from \"core/Misc/decorators\";\r\nimport { type AbstractMesh } from \"core/Meshes/abstractMesh.pure\";\r\nimport { ShaderLanguage } from \"./shaderLanguage\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\n\r\nconst vertexDefinitions = `#if defined(DBG_ENABLED)\r\nattribute float dbg_initialPass;\r\nvarying vec3 dbg_vBarycentric;\r\nflat varying vec3 dbg_vVertexWorldPos;\r\nflat varying float dbg_vPass;\r\n#endif`;\r\n\r\nconst vertexDefinitionsWebGPU = `#if defined(DBG_ENABLED)\r\nattribute dbg_initialPass: f32;\r\nvarying dbg_vBarycentric: vec3f;\r\nflat varying dbg_vVertexWorldPos: vec3f;\r\nflat varying dbg_vPass: f32;\r\n#endif`;\r\n\r\nconst vertexMainEnd = `#if defined(DBG_ENABLED)\r\nfloat dbg_vertexIndex = mod(float(gl_VertexID), 3.);\r\nif (dbg_vertexIndex == 0.0) { \r\n dbg_vBarycentric = vec3(1.,0.,0.); \r\n}\r\nelse if (dbg_vertexIndex == 1.0) { \r\n dbg_vBarycentric = vec3(0.,1.,0.); \r\n}\r\nelse { \r\n dbg_vBarycentric = vec3(0.,0.,1.); \r\n}\r\n\r\ndbg_vVertexWorldPos = vPositionW;\r\ndbg_vPass = dbg_initialPass;\r\n#endif`;\r\n\r\nconst vertexMainEndWebGPU = `#if defined(DBG_ENABLED)\r\nvar dbg_vertexIndex = f32(input.vertexIndex) % 3.;\r\nif (dbg_vertexIndex == 0.0) { \r\n vertexOutputs.dbg_vBarycentric = vec3f(1.,0.,0.); \r\n}\r\nelse if (dbg_vertexIndex == 1.0) { \r\n vertexOutputs.dbg_vBarycentric = vec3f(0.,1.,0.); \r\n}\r\nelse { \r\n vertexOutputs.dbg_vBarycentric = vec3f(0.,0.,1.); \r\n}\r\n\r\nvertexOutputs.dbg_vVertexWorldPos = vertexOutputs.vPositionW;\r\nvertexOutputs.dbg_vPass = input.dbg_initialPass;\r\n#endif`;\r\n\r\nconst fragmentUniforms = `#if defined(DBG_ENABLED)\r\nuniform vec3 dbg_shadedDiffuseColor;\r\nuniform vec4 dbg_shadedSpecularColorPower;\r\nuniform vec3 dbg_thicknessRadiusScale;\r\n\r\n#if DBG_MODE == 2 || DBG_MODE == 3\r\n uniform vec3 dbg_vertexColor;\r\n#endif\r\n\r\n#if DBG_MODE == 1\r\n uniform vec3 dbg_wireframeTrianglesColor;\r\n#elif DBG_MODE == 3\r\n uniform vec3 dbg_wireframeVerticesColor;\r\n#elif DBG_MODE == 4 || DBG_MODE == 5\r\n uniform vec3 dbg_uvPrimaryColor;\r\n uniform vec3 dbg_uvSecondaryColor;\r\n#elif DBG_MODE == 7\r\n uniform vec3 dbg_materialColor;\r\n#endif\r\n#endif`;\r\n\r\nconst fragmentUniformsWebGPU = `#if defined(DBG_ENABLED)\r\nuniform dbg_shadedDiffuseColor: vec3f;\r\nuniform dbg_shadedSpecularColorPower: vec4f;\r\nuniform dbg_thicknessRadiusScale: vec3f;\r\n\r\n#if DBG_MODE == 2 || DBG_MODE == 3\r\n uniform dbg_vertexColor: vec3f;\r\n#endif\r\n\r\n#if DBG_MODE == 1\r\n uniform dbg_wireframeTrianglesColor: vec3f;\r\n#elif DBG_MODE == 3\r\n uniform dbg_wireframeVerticesColor: vec3f;\r\n#elif DBG_MODE == 4 || DBG_MODE == 5\r\n uniform dbg_uvPrimaryColor: vec3f;\r\n uniform dbg_uvSecondaryColor: vec3f;\r\n#elif DBG_MODE == 7\r\n uniform dbg_materialColor: vec3f;\r\n#endif\r\n#endif`;\r\n\r\nconst fragmentDefinitions = `#if defined(DBG_ENABLED)\r\nvarying vec3 dbg_vBarycentric;\r\nflat varying vec3 dbg_vVertexWorldPos;\r\nflat varying float dbg_vPass;\r\n\r\n#if !defined(DBG_MULTIPLY)\r\n vec3 dbg_applyShading(vec3 color) {\r\n vec3 N = vNormalW.xyz;\r\n vec3 L = normalize(vEyePosition.xyz - vPositionW.xyz);\r\n vec3 H = normalize(L + L);\r\n float LdotN = clamp(dot(L,N), 0., 1.);\r\n float HdotN = clamp(dot(H,N), 0., 1.);\r\n float specTerm = pow(HdotN, dbg_shadedSpecularColorPower.w);\r\n color *= (LdotN / PI);\r\n color += dbg_shadedSpecularColorPower.rgb * (specTerm / PI);\r\n return color;\r\n }\r\n#endif\r\n\r\n#if DBG_MODE == 1 || DBG_MODE == 3\r\n float dbg_edgeFactor() {\r\n vec3 d = fwidth(dbg_vBarycentric);\r\n vec3 a3 = smoothstep(vec3(0.), d * dbg_thicknessRadiusScale.x, dbg_vBarycentric);\r\n return min(min(a3.x, a3.y), a3.z);\r\n }\r\n#endif\r\n\r\n#if DBG_MODE == 2 || DBG_MODE == 3\r\n float dbg_cornerFactor() {\r\n vec3 worldPos = vPositionW;\r\n float dist = length(worldPos - dbg_vVertexWorldPos);\r\n float camDist = length(worldPos - vEyePosition.xyz);\r\n float d = sqrt(camDist) * .001;\r\n return smoothstep((dbg_thicknessRadiusScale.y * d), ((dbg_thicknessRadiusScale.y * 1.01) * d), dist);\r\n }\r\n#endif\r\n\r\n#if (DBG_MODE == 4 && defined(UV1)) || (DBG_MODE == 5 && defined(UV2))\r\n float dbg_checkerboardFactor(vec2 uv) {\r\n vec2 f = fract(uv * dbg_thicknessRadiusScale.z);\r\n f -= .5;\r\n return (f.x * f.y) > 0. ? 1. : 0.;\r\n }\r\n#endif\r\n#endif`;\r\n\r\nconst fragmentDefinitionsWebGPU = `#if defined(DBG_ENABLED)\r\nvarying dbg_vBarycentric: vec3f;\r\nflat varying dbg_vVertexWorldPos: vec3f;\r\nflat varying dbg_vPass: f32;\r\n\r\n#if !defined(DBG_MULTIPLY)\r\n fn dbg_applyShading(color: vec3f) -> vec3f {\r\n var N = fragmentInputs.vNormalW.xyz;\r\n var L = normalize(scene.vEyePosition.xyz - fragmentInputs.vPositionW.xyz);\r\n var H = normalize(L + L);\r\n var LdotN = clamp(dot(L,N), 0., 1.);\r\n var HdotN = clamp(dot(H,N), 0., 1.);\r\n var specTerm = pow(HdotN, uniforms.dbg_shadedSpecularColorPower.w);\r\n var result = color * (LdotN / PI);\r\n result += uniforms.dbg_shadedSpecularColorPower.rgb * (specTerm / PI);\r\n return result;\r\n }\r\n#endif\r\n\r\n#if DBG_MODE == 1 || DBG_MODE == 3\r\n fn dbg_edgeFactor() -> f32 {\r\n var d = fwidth(fragmentInputs.dbg_vBarycentric);\r\n var a3 = smoothstep(vec3f(0.), d * uniforms.dbg_thicknessRadiusScale.x, fragmentInputs.dbg_vBarycentric);\r\n return min(min(a3.x, a3.y), a3.z);\r\n }\r\n#endif\r\n\r\n#if DBG_MODE == 2 || DBG_MODE == 3\r\n fn dbg_cornerFactor() -> f32 {\r\n let worldPos = fragmentInputs.vPositionW;\r\n let dist = length(worldPos - fragmentInputs.dbg_vVertexWorldPos);\r\n let camDist = length(worldPos - scene.vEyePosition.xyz);\r\n let d = sqrt(camDist) * .001;\r\n return smoothstep((uniforms.dbg_thicknessRadiusScale.y * d), ((uniforms.dbg_thicknessRadiusScale.y * 1.01) * d), dist);\r\n }\r\n#endif\r\n\r\n#if (DBG_MODE == 4 && defined(UV1)) || (DBG_MODE == 5 && defined(UV2))\r\n fn dbg_checkerboardFactor(uv: vec2f) -> f32 {\r\n var f = fract(uv * uniforms.dbg_thicknessRadiusScale.z);\r\n f -= .5;\r\n return select(0.0, 1.0, (f.x * f.y) > 0.0);\r\n }\r\n#endif\r\n#endif`;\r\n\r\nconst fragmentMainEnd = `#if defined(DBG_ENABLED)\r\nvec3 dbg_color = vec3(1.);\r\n#if DBG_MODE == 1\r\n dbg_color = mix(dbg_wireframeTrianglesColor, vec3(1.), dbg_edgeFactor());\r\n#elif DBG_MODE == 2 || DBG_MODE == 3\r\n float dbg_cornerFactor = dbg_cornerFactor();\r\n if (dbg_vPass == 0. && dbg_cornerFactor == 1.) discard;\r\n dbg_color = mix(dbg_vertexColor, vec3(1.), dbg_cornerFactor);\r\n #if DBG_MODE == 3\r\n dbg_color *= mix(dbg_wireframeVerticesColor, vec3(1.), dbg_edgeFactor());\r\n #endif\r\n#elif DBG_MODE == 4 && defined(MAINUV1)\r\n dbg_color = mix(dbg_uvPrimaryColor, dbg_uvSecondaryColor, dbg_checkerboardFactor(vMainUV1));\r\n#elif DBG_MODE == 5 && defined(MAINUV2)\r\n dbg_color = mix(dbg_uvPrimaryColor, dbg_uvSecondaryColor, dbg_checkerboardFactor(vMainUV2));\r\n#elif DBG_MODE == 6 && defined(VERTEXCOLOR)\r\n dbg_color = vColor.rgb;\r\n#elif DBG_MODE == 7\r\n dbg_color = dbg_materialColor;\r\n#endif\r\n\r\n#if defined(DBG_MULTIPLY)\r\n gl_FragColor *= vec4(dbg_color, 1.);\r\n#else\r\n #if DBG_MODE != 6\r\n gl_FragColor = vec4(dbg_applyShading(dbg_shadedDiffuseColor) * dbg_color, 1.);\r\n #else\r\n gl_FragColor = vec4(dbg_color, 1.);\r\n #endif\r\n#endif\r\n#endif`;\r\n\r\nconst fragmentMainEndWebGPU = `#if defined(DBG_ENABLED)\r\nvar dbg_color = vec3f(1.);\r\n#if DBG_MODE == 1\r\n dbg_color = mix(uniforms.dbg_wireframeTrianglesColor, vec3f(1.), dbg_edgeFactor());\r\n#elif DBG_MODE == 2 || DBG_MODE == 3\r\n let dbg_cornerFactor = dbg_cornerFactor();\r\n if (fragmentInputs.dbg_vPass == 0.0 && dbg_cornerFactor == 1.0) {\r\n discard;\r\n }\r\n dbg_color = mix(uniforms.dbg_vertexColor, vec3f(1.), dbg_cornerFactor);\r\n #if DBG_MODE == 3\r\n dbg_color *= mix(uniforms.dbg_wireframeVerticesColor, vec3f(1.), dbg_edgeFactor());\r\n #endif\r\n#elif DBG_MODE == 4 && defined(MAINUV1)\r\n dbg_color = mix(uniforms.dbg_uvPrimaryColor, uniforms.dbg_uvSecondaryColor, dbg_checkerboardFactor(fragmentInputs.vMainUV1));\r\n#elif DBG_MODE == 5 && defined(MAINUV2)\r\n dbg_color = mix(uniforms.dbg_uvPrimaryColor, uniforms.dbg_uvSecondaryColor, dbg_checkerboardFactor(fragmentInputs.vMainUV2));\r\n#elif DBG_MODE == 6 && defined(VERTEXCOLOR)\r\n dbg_color = fragmentInputs.vColor.rgb;\r\n#elif DBG_MODE == 7\r\n dbg_color = uniforms.dbg_materialColor;\r\n#endif\r\n\r\n#if defined(DBG_MULTIPLY)\r\n fragmentOutputs.color *= vec4f(dbg_color, 1.);\r\n#else\r\n #if DBG_MODE != 6\r\n fragmentOutputs.color = vec4f(dbg_applyShading(uniforms.dbg_shadedDiffuseColor) * dbg_color, 1.);\r\n #else\r\n fragmentOutputs.color = vec4f(dbg_color, 1.);\r\n #endif\r\n#endif\r\n#endif`;\r\n\r\nconst defaultMaterialColors = [\r\n new Color3(0.98, 0.26, 0.38),\r\n new Color3(0.47, 0.75, 0.3),\r\n new Color3(0, 0.26, 0.77),\r\n new Color3(0.97, 0.6, 0.76),\r\n new Color3(0.19, 0.63, 0.78),\r\n new Color3(0.98, 0.8, 0.6),\r\n new Color3(0.65, 0.43, 0.15),\r\n new Color3(0.15, 0.47, 0.22),\r\n new Color3(0.67, 0.71, 0.86),\r\n new Color3(0.09, 0.46, 0.56),\r\n new Color3(0.8, 0.98, 0.02),\r\n new Color3(0.39, 0.29, 0.13),\r\n new Color3(0.53, 0.63, 0.06),\r\n new Color3(0.95, 0.96, 0.41),\r\n new Color3(1, 0.72, 0.94),\r\n new Color3(0.63, 0.08, 0.31),\r\n new Color3(0.66, 0.96, 0.95),\r\n new Color3(0.22, 0.14, 0.19),\r\n new Color3(0.14, 0.65, 0.59),\r\n new Color3(0.93, 1, 0.68),\r\n new Color3(0.93, 0.14, 0.44),\r\n new Color3(0.47, 0.86, 0.67),\r\n new Color3(0.85, 0.07, 0.78),\r\n new Color3(0.53, 0.64, 0.98),\r\n new Color3(0.43, 0.37, 0.56),\r\n new Color3(0.71, 0.65, 0.25),\r\n new Color3(0.66, 0.19, 0.01),\r\n new Color3(0.94, 0.53, 0.12),\r\n new Color3(0.41, 0.44, 0.44),\r\n new Color3(0.24, 0.71, 0.96),\r\n new Color3(0.57, 0.28, 0.56),\r\n new Color3(0.44, 0.98, 0.42),\r\n];\r\n\r\n/**\r\n * Supported visualizations of MeshDebugPluginMaterial\r\n */\r\nexport const enum MeshDebugMode {\r\n /**\r\n * Material without any mesh debug visualization\r\n */\r\n NONE = 0,\r\n /**\r\n * A wireframe of the mesh\r\n * NOTE: For this mode to work correctly, convertToUnIndexedMesh() or MeshDebugPluginMaterial.PrepareMeshForTrianglesAndVerticesMode() must first be called on mesh.\r\n */\r\n TRIANGLES = 1,\r\n /**\r\n * Points drawn over vertices of mesh\r\n * NOTE: For this mode to work correctly, MeshDebugPluginMaterial.PrepareMeshForTrianglesAndVerticesMode() must first be called on mesh.\r\n */\r\n VERTICES = 2,\r\n /**\r\n * A wireframe of the mesh, with points drawn over vertices\r\n * NOTE: For this mode to work correctly, MeshDebugPluginMaterial.PrepareMeshForTrianglesAndVerticesMode() must first be called on mesh.\r\n */\r\n TRIANGLES_VERTICES = 3,\r\n /**\r\n * A checkerboard grid of the mesh's UV set 0\r\n */\r\n UV0 = 4,\r\n /**\r\n * A checkerboard grid of the mesh's UV set 1\r\n */\r\n UV1 = 5,\r\n /**\r\n * The mesh's vertex colors displayed as the primary texture\r\n */\r\n VERTEXCOLORS = 6,\r\n /**\r\n * An arbitrary, distinguishable color to identify the material\r\n */\r\n MATERIALIDS = 7,\r\n}\r\n\r\n/**\r\n * Options for MeshDebugPluginMaterial visualizations\r\n */\r\nexport interface MeshDebugOptions {\r\n /**\r\n * The mesh debug visualization.\r\n * Defaults to NONE.\r\n */\r\n mode?: MeshDebugMode;\r\n /**\r\n * Whether the mesh debug visualization should multiply with color underneath.\r\n * Defaults to true.\r\n */\r\n multiply?: boolean;\r\n /**\r\n * Diffuse color used to shade the mesh.\r\n * Defaults to (1.0, 1.0, 1.0).\r\n */\r\n shadedDiffuseColor?: Color3;\r\n /**\r\n * Specular color used to shade the mesh.\r\n * Defaults to (0.8, 0.8, 0.8).\r\n */\r\n shadedSpecularColor?: Color3;\r\n /**\r\n * Specular power used to shade the mesh.\r\n * Defaults to 10.\r\n */\r\n shadedSpecularPower?: number;\r\n /**\r\n * Width of edge lines in TRIANGLES and TRIANGLE_VERTICES modes.\r\n * Defaults to 0.7.\r\n */\r\n wireframeThickness?: number;\r\n /**\r\n * Color of edge lines in TRIANGLES mode.\r\n * Defaults to (0.0, 0.0, 0.0).\r\n */\r\n wireframeTrianglesColor?: Color3;\r\n /**\r\n * Color of edge lines in TRIANGLES_VERTICES modes.\r\n * Defaults to (0.8, 0.8, 0.8).\r\n */\r\n wireframeVerticesColor?: Color3;\r\n /**\r\n * Color of vertices in TRIANGLES_VERTICES and VERTICES mode.\r\n * Defaults to (0.0, 0.0, 0.0).\r\n */\r\n vertexColor?: Color3;\r\n /**\r\n * Radius of dots drawn over vertices in TRIANGLE_VERTICES and VERTICES mode.\r\n * Defaults to 1.2.\r\n */\r\n vertexRadius?: number;\r\n /**\r\n * Size of tiles in UV1 or UV2 modes.\r\n * Defaults to 20.\r\n */\r\n uvScale?: number;\r\n /**\r\n * 1st color of checkerboard grid in UV1 or UV2 modes.\r\n * Defaults to (1.0, 1.0, 1.0).\r\n */\r\n uvPrimaryColor?: Color3;\r\n /**\r\n * 2nd color of checkerboard grid in UV1 or UV2 modes.\r\n * Defaults to (0.5, 0.5, 0.5).\r\n */\r\n uvSecondaryColor?: Color3;\r\n}\r\n\r\n/** @internal */\r\nclass MeshDebugDefines extends MaterialDefines {\r\n /**\r\n * Current mesh debug visualization.\r\n * Defaults to NONE.\r\n */\r\n DBG_MODE: MeshDebugMode = MeshDebugMode.NONE;\r\n /**\r\n * Whether the mesh debug visualization multiplies with colors underneath.\r\n * Defaults to true.\r\n */\r\n DBG_MULTIPLY: boolean = true;\r\n /**\r\n * Whether the mesh debug plugin is enabled in the material.\r\n * Defaults to true.\r\n */\r\n DBG_ENABLED: boolean = true;\r\n}\r\n\r\n/**\r\n * Plugin that implements various mesh debug visualizations,\r\n * List of available visualizations can be found in MeshDebugMode enum.\r\n */\r\nexport class MeshDebugPluginMaterial extends MaterialPluginBase {\r\n /**\r\n * Total number of instances of the plugin.\r\n * Starts at 0.\r\n */\r\n private static _PluginCount: number = 0;\r\n\r\n /**\r\n * Color palette used for MATERIALIDS mode.\r\n * Defaults to `defaultMaterialColors`\r\n */\r\n public static MaterialColors: Color3[] = defaultMaterialColors;\r\n\r\n /**\r\n * Material ID color of this plugin instance.\r\n * Taken from index `_PluginCount` of `MaterialColors` at time of instantiation.\r\n */\r\n @serializeAsColor3()\r\n private _materialColor: Color3;\r\n\r\n /**\r\n * Whether the mesh debug plugin is enabled in the material.\r\n * Defaults to true in constructor.\r\n */\r\n @serialize()\r\n private _isEnabled: boolean;\r\n\r\n private _mode: MeshDebugMode;\r\n /**\r\n * The mesh debug visualization.\r\n * Defaults to NONE.\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllDefinesAsDirty\")\r\n public accessor mode: MeshDebugMode;\r\n\r\n private _multiply: boolean;\r\n /**\r\n * Whether the mesh debug visualization should multiply with color underneath.\r\n * Defaults to true.\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllDefinesAsDirty\")\r\n public accessor multiply: boolean;\r\n\r\n /**\r\n * Diffuse color used to shade the mesh.\r\n * Defaults to (1.0, 1.0, 1.0).\r\n */\r\n @serializeAsColor3()\r\n public shadedDiffuseColor: Color3;\r\n\r\n /**\r\n * Specular color used to shade the mesh.\r\n * Defaults to (0.8, 0.8, 0.8).\r\n */\r\n @serializeAsColor3()\r\n public shadedSpecularColor: Color3;\r\n\r\n /**\r\n * Specular power used to shade the mesh.\r\n * Defaults to 10.\r\n */\r\n @serialize()\r\n public shadedSpecularPower: number;\r\n\r\n /**\r\n * Width of edge lines in TRIANGLES and TRIANGLE_VERTICES modes.\r\n * Defaults to 0.7.\r\n */\r\n @serialize()\r\n public wireframeThickness: number;\r\n\r\n /**\r\n * Color of edge lines in TRIANGLES mode.\r\n * Defaults to (0.0, 0.0, 0.0).\r\n */\r\n @serializeAsColor3()\r\n public wireframeTrianglesColor: Color3;\r\n\r\n /**\r\n * Color of edge lines in TRIANGLES_VERTICES modes.\r\n * Defaults to (0.8, 0.8, 0.8).\r\n */\r\n @serializeAsColor3()\r\n public wireframeVerticesColor: Color3;\r\n\r\n /**\r\n * Color of vertices in TRIANGLES_VERTICES and VERTICES mode.\r\n * Defaults to (0.0, 0.0, 0.0).\r\n */\r\n @serializeAsColor3()\r\n public vertexColor: Color3;\r\n\r\n /**\r\n * Radius of dots drawn over vertices in TRIANGLE_VERTICES and VERTICES mode.\r\n * Defaults to 1.2.\r\n */\r\n @serialize()\r\n public vertexRadius: number;\r\n\r\n /**\r\n * Size of tiles in UV1 or UV2 modes.\r\n * Defaults to 20.\r\n */\r\n @serialize()\r\n public uvScale: number;\r\n\r\n /**\r\n * 1st color of checkerboard grid in UV1 or UV2 modes.\r\n * Defaults to (1.0, 1.0, 1.0).\r\n */\r\n @serializeAsColor3()\r\n public uvPrimaryColor: Color3;\r\n\r\n /**\r\n * 2nd color of checkerboard grid in UV1 or UV2 modes.\r\n * Defaults to (0.5, 0.5, 0.5).\r\n */\r\n @serializeAsColor3()\r\n public uvSecondaryColor: Color3;\r\n\r\n /** @internal */\r\n protected _markAllDefinesAsDirty(): void {\r\n this._enable(this._isEnabled);\r\n this.markAllDefinesAsDirty();\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating that the plugin is compatible with a given shader language.\r\n * @param shaderLanguage The shader language to use.\r\n * @returns true if the plugin is compatible with the shader language\r\n */\r\n public override isCompatible(shaderLanguage: ShaderLanguage): boolean {\r\n switch (shaderLanguage) {\r\n case ShaderLanguage.GLSL:\r\n case ShaderLanguage.WGSL:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Creates a new MeshDebugPluginMaterial\r\n * @param material Material to attach the mesh debug plugin to\r\n * @param options Options for the mesh debug plugin\r\n */\r\n constructor(material: PBRBaseMaterial | StandardMaterial, options: MeshDebugOptions = {}) {\r\n const defines = new MeshDebugDefines();\r\n defines.DBG_MODE = options.mode ?? defines.DBG_MODE;\r\n defines.DBG_MULTIPLY = options.multiply ?? defines.DBG_MULTIPLY;\r\n super(material, \"MeshDebug\", 200, defines, true, true);\r\n\r\n this._mode = defines.DBG_MODE;\r\n this._multiply = defines.DBG_MULTIPLY;\r\n this.shadedDiffuseColor = options.shadedDiffuseColor ?? new Color3(1, 1, 1);\r\n this.shadedSpecularColor = options.shadedSpecularColor ?? new Color3(0.8, 0.8, 0.8);\r\n this.shadedSpecularPower = options.shadedSpecularPower ?? 10;\r\n this.wireframeThickness = options.wireframeThickness ?? 0.7;\r\n this.wireframeTrianglesColor = options.wireframeTrianglesColor ?? new Color3(0, 0, 0);\r\n this.wireframeVerticesColor = options.wireframeVerticesColor ?? new Color3(0.8, 0.8, 0.8);\r\n this.vertexColor = options.vertexColor ?? new Color3(0, 0, 0);\r\n this.vertexRadius = options.vertexRadius ?? 1.2;\r\n this.uvScale = options.uvScale ?? 20;\r\n this.uvPrimaryColor = options.uvPrimaryColor ?? new Color3(1, 1, 1);\r\n this.uvSecondaryColor = options.uvSecondaryColor ?? new Color3(0.5, 0.5, 0.5);\r\n\r\n this._materialColor = MeshDebugPluginMaterial.MaterialColors[MeshDebugPluginMaterial._PluginCount++ % MeshDebugPluginMaterial.MaterialColors.length];\r\n this.isEnabled = true;\r\n }\r\n\r\n /**\r\n * Get the class name\r\n * @returns Class name\r\n */\r\n public override getClassName() {\r\n return \"MeshDebugPluginMaterial\";\r\n }\r\n\r\n /**\r\n * Gets whether the mesh debug plugin is enabled in the material.\r\n */\r\n public get isEnabled(): boolean {\r\n return this._isEnabled;\r\n }\r\n /**\r\n * Sets whether the mesh debug plugin is enabled in the material.\r\n * @param value enabled\r\n */\r\n public set isEnabled(value: boolean) {\r\n if (this._isEnabled === value) {\r\n return;\r\n }\r\n if (!this._material.getScene().getEngine().isWebGPU && this._material.getScene().getEngine().version == 1) {\r\n Logger.Error(\"MeshDebugPluginMaterial is not supported on WebGL 1.0.\");\r\n this._isEnabled = false;\r\n return;\r\n }\r\n this._isEnabled = value;\r\n this._markAllDefinesAsDirty();\r\n }\r\n\r\n /**\r\n * Prepare the defines\r\n * @param defines Mesh debug defines\r\n * @param scene Scene\r\n * @param mesh Mesh associated with material\r\n */\r\n public override prepareDefines(defines: MeshDebugDefines, scene: Scene, mesh: AbstractMesh) {\r\n if (\r\n (this._mode == MeshDebugMode.VERTICES || this._mode == MeshDebugMode.TRIANGLES || this._mode == MeshDebugMode.TRIANGLES_VERTICES) &&\r\n !mesh.isVerticesDataPresent(\"dbg_initialPass\")\r\n ) {\r\n Logger.Warn(\r\n \"For best results with TRIANGLES, TRIANGLES_VERTICES, or VERTICES modes, please use MeshDebugPluginMaterial.PrepareMeshForTrianglesAndVerticesMode() on mesh.\",\r\n 1\r\n );\r\n }\r\n\r\n defines.DBG_MODE = this._mode;\r\n defines.DBG_MULTIPLY = this._multiply;\r\n defines.DBG_ENABLED = this._isEnabled;\r\n }\r\n\r\n /**\r\n * Get the shader attributes\r\n * @param attributes Array of attributes\r\n */\r\n public override getAttributes(attributes: string[]) {\r\n attributes.push(\"dbg_initialPass\");\r\n }\r\n\r\n /**\r\n * Get the shader uniforms\r\n * @param shaderLanguage The shader language to use.\r\n * @returns Uniforms\r\n */\r\n public override getUniforms(shaderLanguage = ShaderLanguage.GLSL) {\r\n return {\r\n ubo: [\r\n { name: \"dbg_shadedDiffuseColor\", size: 3, type: \"vec3\" },\r\n { name: \"dbg_shadedSpecularColorPower\", size: 4, type: \"vec4\" }, // shadedSpecularColor, shadedSpecularPower\r\n { name: \"dbg_thicknessRadiusScale\", size: 3, type: \"vec3\" }, // wireframeThickness, vertexRadius, uvScale\r\n { name: \"dbg_wireframeTrianglesColor\", size: 3, type: \"vec3\" },\r\n { name: \"dbg_wireframeVerticesColor\", size: 3, type: \"vec3\" },\r\n { name: \"dbg_vertexColor\", size: 3, type: \"vec3\" },\r\n { name: \"dbg_uvPrimaryColor\", size: 3, type: \"vec3\" },\r\n { name: \"dbg_uvSecondaryColor\", size: 3, type: \"vec3\" },\r\n { name: \"dbg_materialColor\", size: 3, type: \"vec3\" },\r\n ],\r\n fragment: shaderLanguage === ShaderLanguage.GLSL ? fragmentUniforms : fragmentUniformsWebGPU,\r\n };\r\n }\r\n\r\n /**\r\n * Bind the uniform buffer\r\n * @param uniformBuffer Uniform buffer\r\n */\r\n public override bindForSubMesh(uniformBuffer: UniformBuffer): void {\r\n if (!this._isEnabled) {\r\n return;\r\n }\r\n uniformBuffer.updateFloat3(\"dbg_shadedDiffuseColor\", this.shadedDiffuseColor.r, this.shadedDiffuseColor.g, this.shadedDiffuseColor.b);\r\n uniformBuffer.updateFloat4(\"dbg_shadedSpecularColorPower\", this.shadedSpecularColor.r, this.shadedSpecularColor.g, this.shadedSpecularColor.b, this.shadedSpecularPower);\r\n uniformBuffer.updateFloat3(\"dbg_thicknessRadiusScale\", this.wireframeThickness, this.vertexRadius, this.uvScale);\r\n uniformBuffer.updateColor3(\"dbg_wireframeTrianglesColor\", this.wireframeTrianglesColor);\r\n uniformBuffer.updateColor3(\"dbg_wireframeVerticesColor\", this.wireframeVerticesColor);\r\n uniformBuffer.updateColor3(\"dbg_vertexColor\", this.vertexColor);\r\n uniformBuffer.updateColor3(\"dbg_uvPrimaryColor\", this.uvPrimaryColor);\r\n uniformBuffer.updateColor3(\"dbg_uvSecondaryColor\", this.uvSecondaryColor);\r\n uniformBuffer.updateColor3(\"dbg_materialColor\", this._materialColor);\r\n }\r\n\r\n /**\r\n * Get shader code\r\n * @param shaderType \"vertex\" or \"fragment\"\r\n * @param shaderLanguage The shader language to use.\r\n * @returns Shader code\r\n */\r\n public override getCustomCode(shaderType: string, shaderLanguage = ShaderLanguage.GLSL): Nullable<{ [pointName: string]: string }> {\r\n if (shaderLanguage === ShaderLanguage.WGSL) {\r\n return shaderType === \"vertex\"\r\n ? {\r\n CUSTOM_VERTEX_DEFINITIONS: vertexDefinitionsWebGPU,\r\n CUSTOM_VERTEX_MAIN_END: vertexMainEndWebGPU,\r\n }\r\n : {\r\n CUSTOM_FRAGMENT_DEFINITIONS: fragmentDefinitionsWebGPU,\r\n CUSTOM_FRAGMENT_MAIN_END: fragmentMainEndWebGPU,\r\n };\r\n }\r\n\r\n return shaderType === \"vertex\"\r\n ? {\r\n CUSTOM_VERTEX_DEFINITIONS: vertexDefinitions,\r\n CUSTOM_VERTEX_MAIN_END: vertexMainEnd,\r\n }\r\n : {\r\n CUSTOM_FRAGMENT_DEFINITIONS: fragmentDefinitions,\r\n CUSTOM_FRAGMENT_MAIN_END: fragmentMainEnd,\r\n };\r\n }\r\n\r\n /**\r\n * Resets static variables of the plugin to their original state\r\n */\r\n public static Reset(): void {\r\n this._PluginCount = 0;\r\n this.MaterialColors = defaultMaterialColors;\r\n }\r\n\r\n /**\r\n * Renders triangles in a mesh 3 times by tripling the indices in the index buffer.\r\n * Used to prepare a mesh to be rendered in `TRIANGLES`, `VERTICES`, or `TRIANGLES_VERTICES` modes.\r\n * NOTE: This is a destructive operation. The mesh's index buffer and vertex buffers are modified, and a new vertex buffer is allocated.\r\n * If you'd like the ability to revert these changes, toggle the optional `returnRollback` flag.\r\n * @param mesh the mesh to target\r\n * @param returnRollback whether or not to return a function that reverts mesh to its initial state. Default: false.\r\n * @returns a rollback function if `returnRollback` is true, otherwise an empty function.\r\n */\r\n public static PrepareMeshForTrianglesAndVerticesMode(mesh: Mesh, returnRollback: boolean = false): () => void {\r\n let rollback = () => {};\r\n\r\n if (mesh.getTotalIndices() == 0) {\r\n return rollback;\r\n }\r\n\r\n if (returnRollback) {\r\n const kinds = mesh.getVerticesDataKinds();\r\n const indices = mesh.getIndices()!;\r\n const data: { [kind: string]: FloatArray } = {};\r\n for (const kind of kinds) {\r\n data[kind] = mesh.getVerticesData(kind)!;\r\n }\r\n\r\n rollback = function () {\r\n mesh.setIndices(indices);\r\n for (const kind of kinds) {\r\n const stride = mesh.getVertexBuffer(kind)!.getStrideSize();\r\n mesh.setVerticesData(kind, data[kind], undefined, stride);\r\n }\r\n mesh.removeVerticesData(\"dbg_initialPass\");\r\n };\r\n }\r\n\r\n let indices = Array.from(mesh.getIndices()!);\r\n const newIndices1 = [];\r\n for (let i = 0; i < indices.length; i += 3) {\r\n newIndices1.push(indices[i + 1], indices[i + 2], indices[i + 0]);\r\n }\r\n mesh.setIndices(indices.concat(newIndices1));\r\n\r\n mesh.convertToUnIndexedMesh();\r\n\r\n mesh.isUnIndexed = false;\r\n\r\n indices = Array.from(mesh.getIndices()!);\r\n const newIndices2 = [];\r\n for (let i = indices.length / 2; i < indices.length; i += 3) {\r\n newIndices2.push(indices[i + 1], indices[i + 2], indices[i + 0]);\r\n }\r\n mesh.setIndices(indices.concat(newIndices2));\r\n\r\n const num = mesh.getTotalVertices();\r\n const mid = num / 2;\r\n const pass = new Array(num).fill(1, 0, mid).fill(0, mid, num);\r\n mesh.setVerticesData(\"dbg_initialPass\", pass, false, 1);\r\n\r\n return rollback;\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for meshDebugPluginMaterial.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterMeshDebugPluginMaterial(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n RegisterClass(\"BABYLON.MeshDebugPluginMaterial\", MeshDebugPluginMaterial);\r\n}\r\n"]}
@@ -265,56 +265,56 @@ export declare class StandardMaterial extends StandardMaterialBase {
265
265
  /**
266
266
  * The basic texture of the material as viewed under a light.
267
267
  */
268
- diffuseTexture: Nullable<BaseTexture>;
268
+ accessor diffuseTexture: Nullable<BaseTexture>;
269
269
  private _ambientTexture;
270
270
  /**
271
271
  * AKA Occlusion Texture in other nomenclature, it helps adding baked shadows into your material.
272
272
  */
273
- ambientTexture: Nullable<BaseTexture>;
273
+ accessor ambientTexture: Nullable<BaseTexture>;
274
274
  private _opacityTexture;
275
275
  /**
276
276
  * Define the transparency of the material from a texture.
277
277
  * The final alpha value can be read either from the red channel (if texture.getAlphaFromRGB is false)
278
278
  * or from the luminance or the current texel (if texture.getAlphaFromRGB is true)
279
279
  */
280
- opacityTexture: Nullable<BaseTexture>;
280
+ accessor opacityTexture: Nullable<BaseTexture>;
281
281
  private _reflectionTexture;
282
282
  /**
283
283
  * Define the texture used to display the reflection.
284
284
  * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/reflectionTexture#how-to-obtain-reflections-and-refractions
285
285
  */
286
- reflectionTexture: Nullable<BaseTexture>;
286
+ accessor reflectionTexture: Nullable<BaseTexture>;
287
287
  private _emissiveTexture;
288
288
  /**
289
289
  * Define texture of the material as if self lit.
290
290
  * This will be mixed in the final result even in the absence of light.
291
291
  */
292
- emissiveTexture: Nullable<BaseTexture>;
292
+ accessor emissiveTexture: Nullable<BaseTexture>;
293
293
  private _specularTexture;
294
294
  /**
295
295
  * Define how the color and intensity of the highlight given by the light in the material.
296
296
  */
297
- specularTexture: Nullable<BaseTexture>;
297
+ accessor specularTexture: Nullable<BaseTexture>;
298
298
  private _bumpTexture;
299
299
  /**
300
300
  * Bump mapping is a technique to simulate bump and dents on a rendered surface.
301
301
  * 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.
302
302
  * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/moreMaterials#bump-map
303
303
  */
304
- bumpTexture: Nullable<BaseTexture>;
304
+ accessor bumpTexture: Nullable<BaseTexture>;
305
305
  private _lightmapTexture;
306
306
  /**
307
307
  * Complex lighting can be computationally expensive to compute at runtime.
308
308
  * To save on computation, lightmaps may be used to store calculated lighting in a texture which will be applied to a given mesh.
309
309
  * @see https://doc.babylonjs.com/features/featuresDeepDive/lights/lights_introduction#lightmaps
310
310
  */
311
- lightmapTexture: Nullable<BaseTexture>;
311
+ accessor lightmapTexture: Nullable<BaseTexture>;
312
312
  private _refractionTexture;
313
313
  /**
314
314
  * Define the texture used to display the refraction.
315
315
  * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/reflectionTexture#how-to-obtain-reflections-and-refractions
316
316
  */
317
- refractionTexture: Nullable<BaseTexture>;
317
+ accessor refractionTexture: Nullable<BaseTexture>;
318
318
  /**
319
319
  * The color of the material lit by the environmental background lighting.
320
320
  * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/materials_introduction#ambient-color-example
@@ -343,54 +343,54 @@ export declare class StandardMaterial extends StandardMaterialBase {
343
343
  /**
344
344
  * Does the transparency come from the diffuse texture alpha channel.
345
345
  */
346
- useAlphaFromDiffuseTexture: boolean;
346
+ accessor useAlphaFromDiffuseTexture: boolean;
347
347
  private _useEmissiveAsIllumination;
348
348
  /**
349
349
  * If true, the emissive value is added into the end result, otherwise it is multiplied in.
350
350
  */
351
- useEmissiveAsIllumination: boolean;
351
+ accessor useEmissiveAsIllumination: boolean;
352
352
  private _linkEmissiveWithDiffuse;
353
353
  /**
354
354
  * If true, some kind of energy conservation will prevent the end result to be more than 1 by reducing
355
355
  * the emissive level when the final color is close to one.
356
356
  */
357
- linkEmissiveWithDiffuse: boolean;
357
+ accessor linkEmissiveWithDiffuse: boolean;
358
358
  private _useSpecularOverAlpha;
359
359
  /**
360
360
  * Specifies that the material will keep the specular highlights over a transparent surface (only the most luminous ones).
361
361
  * A car glass is a good exemple of that. When sun reflects on it you can not see what is behind.
362
362
  */
363
- useSpecularOverAlpha: boolean;
363
+ accessor useSpecularOverAlpha: boolean;
364
364
  private _useReflectionOverAlpha;
365
365
  /**
366
366
  * Specifies that the material will keeps the reflection highlights over a transparent surface (only the most luminous ones).
367
367
  * A car glass is a good exemple of that. When the street lights reflects on it you can not see what is behind.
368
368
  */
369
- useReflectionOverAlpha: boolean;
369
+ accessor useReflectionOverAlpha: boolean;
370
370
  private _disableLighting;
371
371
  /**
372
372
  * Does lights from the scene impacts this material.
373
373
  * It can be a nice trick for performance to disable lighting on a fully emissive material.
374
374
  */
375
- disableLighting: boolean;
375
+ accessor disableLighting: boolean;
376
376
  private _useObjectSpaceNormalMap;
377
377
  /**
378
378
  * Allows using an object space normal map (instead of tangent space).
379
379
  */
380
- useObjectSpaceNormalMap: boolean;
380
+ accessor useObjectSpaceNormalMap: boolean;
381
381
  private _useParallax;
382
382
  /**
383
383
  * Is parallax enabled or not.
384
384
  * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/parallaxMapping
385
385
  */
386
- useParallax: boolean;
386
+ accessor useParallax: boolean;
387
387
  private _useParallaxOcclusion;
388
388
  /**
389
389
  * Is parallax occlusion enabled or not.
390
390
  * If true, the outcome is way more realistic than traditional Parallax but you can expect a performance hit that worthes consideration.
391
391
  * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/parallaxMapping
392
392
  */
393
- useParallaxOcclusion: boolean;
393
+ accessor useParallaxOcclusion: boolean;
394
394
  /**
395
395
  * 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.
396
396
  */
@@ -399,7 +399,7 @@ export declare class StandardMaterial extends StandardMaterialBase {
399
399
  /**
400
400
  * Helps to define how blurry the reflections should appears in the material.
401
401
  */
402
- roughness: number;
402
+ accessor roughness: number;
403
403
  /**
404
404
  * In case of refraction, define the value of the index of refraction.
405
405
  * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/reflectionTexture#how-to-obtain-reflections-and-refractions
@@ -419,73 +419,73 @@ export declare class StandardMaterial extends StandardMaterialBase {
419
419
  /**
420
420
  * In case of light mapping, define whether the map contains light or shadow informations.
421
421
  */
422
- useLightmapAsShadowmap: boolean;
422
+ accessor useLightmapAsShadowmap: boolean;
423
423
  private _diffuseFresnelParameters;
424
424
  /**
425
425
  * Define the diffuse fresnel parameters of the material.
426
426
  * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/fresnelParameters
427
427
  */
428
- diffuseFresnelParameters: FresnelParameters;
428
+ accessor diffuseFresnelParameters: FresnelParameters;
429
429
  private _opacityFresnelParameters;
430
430
  /**
431
431
  * Define the opacity fresnel parameters of the material.
432
432
  * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/fresnelParameters
433
433
  */
434
- opacityFresnelParameters: FresnelParameters;
434
+ accessor opacityFresnelParameters: FresnelParameters;
435
435
  private _reflectionFresnelParameters;
436
436
  /**
437
437
  * Define the reflection fresnel parameters of the material.
438
438
  * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/fresnelParameters
439
439
  */
440
- reflectionFresnelParameters: FresnelParameters;
440
+ accessor reflectionFresnelParameters: FresnelParameters;
441
441
  private _refractionFresnelParameters;
442
442
  /**
443
443
  * Define the refraction fresnel parameters of the material.
444
444
  * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/fresnelParameters
445
445
  */
446
- refractionFresnelParameters: FresnelParameters;
446
+ accessor refractionFresnelParameters: FresnelParameters;
447
447
  private _emissiveFresnelParameters;
448
448
  /**
449
449
  * Define the emissive fresnel parameters of the material.
450
450
  * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/fresnelParameters
451
451
  */
452
- emissiveFresnelParameters: FresnelParameters;
452
+ accessor emissiveFresnelParameters: FresnelParameters;
453
453
  private _useReflectionFresnelFromSpecular;
454
454
  /**
455
455
  * If true automatically deducts the fresnels values from the material specularity.
456
456
  * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/fresnelParameters
457
457
  */
458
- useReflectionFresnelFromSpecular: boolean;
458
+ accessor useReflectionFresnelFromSpecular: boolean;
459
459
  private _useGlossinessFromSpecularMapAlpha;
460
460
  /**
461
461
  * Defines if the glossiness/roughness of the material should be read from the specular map alpha channel
462
462
  */
463
- useGlossinessFromSpecularMapAlpha: boolean;
463
+ accessor useGlossinessFromSpecularMapAlpha: boolean;
464
464
  private _maxSimultaneousLights;
465
465
  /**
466
466
  * Defines the maximum number of lights that can be used in the material
467
467
  */
468
- maxSimultaneousLights: number;
468
+ accessor maxSimultaneousLights: number;
469
469
  private _invertNormalMapX;
470
470
  /**
471
471
  * If sets to true, x component of normal map value will invert (x = 1.0 - x).
472
472
  */
473
- invertNormalMapX: boolean;
473
+ accessor invertNormalMapX: boolean;
474
474
  private _invertNormalMapY;
475
475
  /**
476
476
  * If sets to true, y component of normal map value will invert (y = 1.0 - y).
477
477
  */
478
- invertNormalMapY: boolean;
478
+ accessor invertNormalMapY: boolean;
479
479
  private _twoSidedLighting;
480
480
  /**
481
481
  * If sets to true and backfaceCulling is false, normals will be flipped on the backside.
482
482
  */
483
- twoSidedLighting: boolean;
483
+ accessor twoSidedLighting: boolean;
484
484
  private _applyDecalMapAfterDetailMap;
485
485
  /**
486
486
  * If sets to true, the decal map will be applied after the detail map. Else, it is applied before (default: false)
487
487
  */
488
- applyDecalMapAfterDetailMap: boolean;
488
+ accessor applyDecalMapAfterDetailMap: boolean;
489
489
  private _shadersLoaded;
490
490
  private _vertexPullingMetadata;
491
491
  /**