@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
@@ -22,6 +22,101 @@ import "./thinEngine.scissor.js";
22
22
 
23
23
  // Mixins
24
24
  declare global{
25
+ /* eslint-disable babylonjs/available */
26
+ /* eslint-disable @typescript-eslint/naming-convention */
27
+ // Ambient declarations for the WebXR/WebGPU binding module.
28
+ // The community-maintained webxr.d.ts does not yet include XRGPUBinding and its associated
29
+ // types, so they are declared here as a companion (mirroring webxr.nativeextensions.d.ts).
30
+ //
31
+ // Shapes are grounded in the immersive-web/WebXR-WebGPU-Binding explainer + proposed IDL:
32
+ // https://github.com/immersive-web/WebXR-WebGPU-Binding/blob/main/explainer.md
33
+ //
34
+ // The base XR layer/sub-image types (XRSubImage, XRProjectionLayer, XRQuadLayer, XRCylinderLayer,
35
+ // XREquirectLayer, XRCubeLayer, XRCompositionLayer, XRLayerLayout, XRFrame, XRView, XREye,
36
+ // XRSpace, XRRigidTransform) come from webxr.d.ts. The WebGPU adapter opt-in
37
+ // (GPURequestAdapterOptions.xrCompatible) is declared in webgpu.d.ts and intentionally not
38
+ // duplicated here.
39
+
40
+ // XRGPUSubImage : XRSubImage
41
+ interface XRGPUSubImage extends XRSubImage {
42
+ readonly colorTexture: GPUTexture;
43
+ readonly depthStencilTexture?: GPUTexture;
44
+ readonly motionVectorTexture?: GPUTexture;
45
+ getViewDescriptor(): GPUTextureViewDescriptor;
46
+ }
47
+
48
+ abstract class XRGPUSubImage implements XRGPUSubImage {}
49
+
50
+ // dictionary XRGPUProjectionLayerInit
51
+ interface XRGPUProjectionLayerInit {
52
+ colorFormat: GPUTextureFormat;
53
+ depthStencilFormat?: GPUTextureFormat;
54
+ // GPUTextureUsage.RENDER_ATTACHMENT (0x10) per spec default.
55
+ textureUsage?: GPUTextureUsageFlags;
56
+ scaleFactor?: number;
57
+ }
58
+
59
+ // dictionary XRGPULayerInit
60
+ interface XRGPULayerInit {
61
+ colorFormat: GPUTextureFormat;
62
+ depthStencilFormat?: GPUTextureFormat;
63
+ // GPUTextureUsage.RENDER_ATTACHMENT (0x10) per spec default.
64
+ textureUsage?: GPUTextureUsageFlags;
65
+ space: XRSpace;
66
+ mipLevels?: number;
67
+ viewPixelWidth: number;
68
+ viewPixelHeight: number;
69
+ layout?: XRLayerLayout;
70
+ isStatic?: boolean;
71
+ }
72
+
73
+ // dictionary XRGPUQuadLayerInit : XRGPULayerInit
74
+ interface XRGPUQuadLayerInit extends XRGPULayerInit {
75
+ transform?: XRRigidTransform;
76
+ width?: number;
77
+ height?: number;
78
+ }
79
+
80
+ // dictionary XRGPUCylinderLayerInit : XRGPULayerInit
81
+ interface XRGPUCylinderLayerInit extends XRGPULayerInit {
82
+ transform?: XRRigidTransform;
83
+ radius?: number;
84
+ centralAngle?: number;
85
+ aspectRatio?: number;
86
+ }
87
+
88
+ // dictionary XRGPUEquirectLayerInit : XRGPULayerInit
89
+ interface XRGPUEquirectLayerInit extends XRGPULayerInit {
90
+ transform?: XRRigidTransform;
91
+ radius?: number;
92
+ centralHorizontalAngle?: number;
93
+ upperVerticalAngle?: number;
94
+ lowerVerticalAngle?: number;
95
+ }
96
+
97
+ // dictionary XRGPUCubeLayerInit : XRGPULayerInit
98
+ interface XRGPUCubeLayerInit extends XRGPULayerInit {
99
+ orientation?: DOMPointReadOnly;
100
+ }
101
+
102
+ // [Exposed=Window] interface XRGPUBinding
103
+ class XRGPUBinding {
104
+ constructor(session: XRSession, device: GPUDevice);
105
+
106
+ readonly nativeProjectionScaleFactor: number;
107
+
108
+ createProjectionLayer(init?: XRGPUProjectionLayerInit): XRProjectionLayer;
109
+ createQuadLayer(init?: XRGPUQuadLayerInit): XRQuadLayer;
110
+ createCylinderLayer(init?: XRGPUCylinderLayerInit): XRCylinderLayer;
111
+ createEquirectLayer(init?: XRGPUEquirectLayerInit): XREquirectLayer;
112
+ createCubeLayer(init?: XRGPUCubeLayerInit): XRCubeLayer;
113
+
114
+ getSubImage(layer: XRCompositionLayer, frame: XRFrame, eye?: XREye): XRGPUSubImage;
115
+ getViewSubImage(layer: XRProjectionLayer, view: XRView): XRGPUSubImage;
116
+
117
+ getPreferredColorFormat(): GPUTextureFormat;
118
+ }
119
+
25
120
  /* eslint-disable @typescript-eslint/naming-convention */
26
121
  // This file contains native only extensions for WebXR. These APIs are not supported in the browser yet.
27
122
  // They are intended for use with either Babylon Native https://github.com/BabylonJS/BabylonNative or
@@ -1561,6 +1656,119 @@ var OffscreenCanvasRenderingContext2D: {
1561
1656
  new (): OffscreenCanvasRenderingContext2D;
1562
1657
  };
1563
1658
 
1659
+ /* eslint-disable @typescript-eslint/naming-convention */
1660
+ /* eslint-disable no-var */
1661
+ // Type definitions for the WICG HTML-in-Canvas proposal (https://github.com/WICG/html-in-canvas).
1662
+ // These augment the standard DOM, WebGL and WebGPU types so Babylon can consume the API - whether
1663
+ // provided natively (behind chrome://flags/#canvas-draw-element) or by the three-html-render polyfill -
1664
+ // without TypeScript errors. The proposal is experimental; signatures track the explainer IDL and
1665
+ // may change.
1666
+
1667
+ /**
1668
+ * A transferable snapshot of a rendered element, produced by `HTMLCanvasElement.captureElementImage`.
1669
+ */
1670
+ interface ElementImage {
1671
+ readonly width: number;
1672
+ readonly height: number;
1673
+ close(): void;
1674
+ }
1675
+
1676
+ var ElementImage: {
1677
+ prototype: ElementImage;
1678
+ new (): ElementImage;
1679
+ };
1680
+
1681
+ /**
1682
+ * Source rectangle and sizing configuration for `WebGLRenderingContext.texElementImage2D`.
1683
+ */
1684
+ interface WebGLCopyElementImageConfig {
1685
+ sx?: number;
1686
+ sy?: number;
1687
+ swidth?: number;
1688
+ sheight?: number;
1689
+ width?: number;
1690
+ height?: number;
1691
+ }
1692
+
1693
+ /**
1694
+ * Event dispatched on a `<canvas layoutsubtree>` when the rendering of one of its children changes.
1695
+ */
1696
+ interface PaintEvent extends Event {
1697
+ readonly changedElements: ReadonlyArray<Element>;
1698
+ }
1699
+
1700
+ interface HTMLCanvasElementEventMap {
1701
+ paint: PaintEvent;
1702
+ }
1703
+
1704
+ interface HTMLCanvasElement {
1705
+ /** Opts canvas descendants into layout and hit testing so they can be drawn into the canvas. */
1706
+ layoutSubtree: boolean;
1707
+ /** Fired when the rendering of any canvas child has changed. */
1708
+ onpaint: ((this: HTMLCanvasElement, ev: PaintEvent) => any) | null;
1709
+ /** Requests a single `paint` event on the next rendering update, even if nothing changed. */
1710
+ requestPaint(): void;
1711
+ /** Captures a transferable snapshot of the given element. */
1712
+ captureElementImage(element: Element): ElementImage;
1713
+ /** Returns the CSS transform that keeps the element's DOM location in sync with its drawn location. */
1714
+ getElementTransform(element: Element | ElementImage, drawTransform: DOMMatrix): DOMMatrix;
1715
+ }
1716
+
1717
+ interface CanvasRenderingContext2D {
1718
+ drawElementImage(element: Element | ElementImage, dx: number, dy: number): DOMMatrix;
1719
+ drawElementImage(element: Element | ElementImage, dx: number, dy: number, dwidth: number, dheight: number): DOMMatrix;
1720
+ drawElementImage(
1721
+ element: Element | ElementImage,
1722
+ sx: number,
1723
+ sy: number,
1724
+ swidth: number,
1725
+ sheight: number,
1726
+ dx: number,
1727
+ dy: number,
1728
+ dwidth?: number,
1729
+ dheight?: number
1730
+ ): DOMMatrix;
1731
+ }
1732
+
1733
+ interface WebGLRenderingContext {
1734
+ /** Uploads a rendered element (or snapshot) into the currently bound 2D texture (current WICG signature). */
1735
+ texElementImage2D(target: number, internalformat: number, element: Element | ElementImage, config?: WebGLCopyElementImageConfig): void;
1736
+ /** Legacy texImage2D-shaped overload still shipped by some Chrome Canary builds. */
1737
+ texElementImage2D(target: number, level: number, internalformat: number, format: number, type: number, element: Element | ElementImage): void;
1738
+ }
1739
+
1740
+ interface WebGL2RenderingContext {
1741
+ /** Uploads a rendered element (or snapshot) into the currently bound 2D texture (current WICG signature). */
1742
+ texElementImage2D(target: number, internalformat: number, element: Element | ElementImage, config?: WebGLCopyElementImageConfig): void;
1743
+ /** Legacy texImage2D-shaped overload still shipped by some Chrome Canary builds. */
1744
+ texElementImage2D(target: number, level: number, internalformat: number, format: number, type: number, element: Element | ElementImage): void;
1745
+ }
1746
+
1747
+ /**
1748
+ * Source descriptor for `GPUQueue.copyElementImageToTexture`.
1749
+ */
1750
+ interface GPUCopyElementImageSource {
1751
+ source: Element | ElementImage;
1752
+ sx?: number;
1753
+ sy?: number;
1754
+ swidth?: number;
1755
+ sheight?: number;
1756
+ }
1757
+
1758
+ /**
1759
+ * Destination descriptor for `GPUQueue.copyElementImageToTexture`.
1760
+ */
1761
+ interface GPUCopyElementImageDestination {
1762
+ destination: GPUCopyExternalImageDestInfo;
1763
+ width?: number;
1764
+ height?: number;
1765
+ }
1766
+
1767
+ interface GPUQueue {
1768
+ /** Uploads a rendered element (or snapshot) into a destination GPU texture. */
1769
+ copyElementImageToTexture(source: GPUCopyElementImageSource, destination: GPUCopyElementImageDestination): void;
1770
+ }
1771
+
1564
1772
  /* eslint-disable no-var */
1565
1773
  /* eslint-disable @typescript-eslint/naming-convention */
1566
1774
  // Mixins
@@ -1,5 +1,4 @@
1
1
  /** This file must only contain pure code and pure imports */
2
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
3
2
  import { InternalTexture } from "../Materials/Textures/internalTexture.js";
4
3
  import { EngineStore } from "./engineStore.js";
5
4
  import { ThinEngine } from "./thinEngine.pure.js";
@@ -886,18 +885,4 @@ Engine.SCALEMODE_FLOOR = 1;
886
885
  Engine.SCALEMODE_NEAREST = 2;
887
886
  /** Defines that texture rescaling will use a ceil to find the closer power of 2 size */
888
887
  Engine.SCALEMODE_CEILING = 3;
889
- // #region GENERATED_SIDE_EFFECT_STUBS — do not edit, regenerate with `npm run generate:side-effect-stubs`
890
- import { _MissingSideEffect } from "../Misc/devTools.js";
891
- (_a = Engine.prototype).createMultiviewRenderTargetTexture ?? (_a.createMultiviewRenderTargetTexture = _MissingSideEffect("Engine", "createMultiviewRenderTargetTexture"));
892
- (_b = Engine.prototype).bindMultiviewFramebuffer ?? (_b.bindMultiviewFramebuffer = _MissingSideEffect("Engine", "bindMultiviewFramebuffer"));
893
- (_c = Engine.prototype).bindSpaceWarpFramebuffer ?? (_c.bindSpaceWarpFramebuffer = _MissingSideEffect("Engine", "bindSpaceWarpFramebuffer"));
894
- (_d = Engine.prototype).createTransformFeedback ?? (_d.createTransformFeedback = _MissingSideEffect("Engine", "createTransformFeedback"));
895
- (_e = Engine.prototype).deleteTransformFeedback ?? (_e.deleteTransformFeedback = _MissingSideEffect("Engine", "deleteTransformFeedback"));
896
- (_f = Engine.prototype).bindTransformFeedback ?? (_f.bindTransformFeedback = _MissingSideEffect("Engine", "bindTransformFeedback"));
897
- (_g = Engine.prototype).beginTransformFeedback ?? (_g.beginTransformFeedback = _MissingSideEffect("Engine", "beginTransformFeedback"));
898
- (_h = Engine.prototype).endTransformFeedback ?? (_h.endTransformFeedback = _MissingSideEffect("Engine", "endTransformFeedback"));
899
- (_j = Engine.prototype).setTranformFeedbackVaryings ?? (_j.setTranformFeedbackVaryings = _MissingSideEffect("Engine", "setTranformFeedbackVaryings"));
900
- (_k = Engine.prototype).bindTransformFeedbackBuffer ?? (_k.bindTransformFeedbackBuffer = _MissingSideEffect("Engine", "bindTransformFeedbackBuffer"));
901
- (_l = Engine.prototype).readTransformFeedbackBuffer ?? (_l.readTransformFeedbackBuffer = _MissingSideEffect("Engine", "readTransformFeedbackBuffer"));
902
- // #endregion GENERATED_SIDE_EFFECT_STUBS
903
888
  //# sourceMappingURL=engine.pure.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine.pure.js","sourceRoot":"","sources":["../../../../dev/core/src/Engines/engine.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { type Nullable } from \"../types\";\r\nimport { type Scene } from \"../scene.pure\";\r\nimport { InternalTexture, InternalTextureSource } from \"../Materials/Textures/internalTexture\";\r\nimport { type ILoadingScreen } from \"../Loading/loadingScreen.pure\";\r\nimport { EngineStore } from \"./engineStore\";\r\nimport { type WebGLPipelineContext } from \"./WebGL/webGLPipelineContext\";\r\nimport { type IPipelineContext } from \"./IPipelineContext\";\r\nimport { type EngineOptions, ThinEngine } from \"./thinEngine.pure\";\r\nimport { Constants } from \"./constants\";\r\nimport { type IViewportLike, type IColor4Like } from \"../Maths/math.like\";\r\nimport { PerformanceMonitor } from \"../Misc/performanceMonitor\";\r\nimport { type DataBuffer } from \"../Buffers/dataBuffer\";\r\nimport { WebGLDataBuffer } from \"../Meshes/WebGL/webGLDataBuffer\";\r\nimport { Logger } from \"../Misc/logger\";\r\nimport { type RenderTargetWrapper } from \"./renderTargetWrapper\";\r\nimport { WebGLHardwareTexture } from \"./WebGL/webGLHardwareTexture\";\r\nimport { type WebGLRenderTargetWrapper } from \"./WebGL/webGLRenderTargetWrapper\";\r\n\r\nimport { type PostProcess } from \"../PostProcesses/postProcess.pure\";\r\nimport { AbstractEngine } from \"./abstractEngine.pure\";\r\nimport {\r\n CreateImageBitmapFromSource,\r\n ExitFullscreen,\r\n ExitPointerlock,\r\n GetFontOffset,\r\n RequestFullscreen,\r\n RequestPointerlock,\r\n ResizeImageBitmap,\r\n _CommonDispose,\r\n _CommonInit,\r\n} from \"./engine.common\";\r\nimport { PerfCounter } from \"../Misc/perfCounter\";\r\nimport { _RetryWithInterval } from \"core/Misc/timingTools\";\r\nimport { RegisterAbstractEngineDom } from \"./AbstractEngine/abstractEngine.dom.pure\";\r\nimport { RegisterAbstractEngineRenderPass } from \"./AbstractEngine/abstractEngine.renderPass.pure\";\r\n\r\n/**\r\n * The engine class is responsible for interfacing with all lower-level APIs such as WebGL and Audio\r\n */\r\nexport class Engine extends ThinEngine {\r\n // Const statics\r\n\r\n /** Defines that alpha blending is disabled */\r\n public static readonly ALPHA_DISABLE = Constants.ALPHA_DISABLE;\r\n /** Defines that alpha blending to SRC ALPHA * SRC + DEST */\r\n public static readonly ALPHA_ADD = Constants.ALPHA_ADD;\r\n /** Defines that alpha blending to SRC ALPHA * SRC + (1 - SRC ALPHA) * DEST */\r\n public static readonly ALPHA_COMBINE = Constants.ALPHA_COMBINE;\r\n /** Defines that alpha blending to DEST - SRC * DEST */\r\n public static readonly ALPHA_SUBTRACT = Constants.ALPHA_SUBTRACT;\r\n /** Defines that alpha blending to SRC * DEST */\r\n public static readonly ALPHA_MULTIPLY = Constants.ALPHA_MULTIPLY;\r\n /** Defines that alpha blending to SRC ALPHA * SRC + (1 - SRC) * DEST */\r\n public static readonly ALPHA_MAXIMIZED = Constants.ALPHA_MAXIMIZED;\r\n /** Defines that alpha blending to SRC + DEST */\r\n public static readonly ALPHA_ONEONE = Constants.ALPHA_ONEONE;\r\n /** Defines that alpha blending to SRC + (1 - SRC ALPHA) * DEST */\r\n public static readonly ALPHA_PREMULTIPLIED = Constants.ALPHA_PREMULTIPLIED;\r\n /**\r\n * Defines that alpha blending to SRC + (1 - SRC ALPHA) * DEST\r\n * Alpha will be set to (1 - SRC ALPHA) * DEST ALPHA\r\n */\r\n public static readonly ALPHA_PREMULTIPLIED_PORTERDUFF = Constants.ALPHA_PREMULTIPLIED_PORTERDUFF;\r\n /** Defines that alpha blending to CST * SRC + (1 - CST) * DEST */\r\n public static readonly ALPHA_INTERPOLATE = Constants.ALPHA_INTERPOLATE;\r\n /**\r\n * Defines that alpha blending to SRC + (1 - SRC) * DEST\r\n * Alpha will be set to SRC ALPHA + (1 - SRC ALPHA) * DEST ALPHA\r\n */\r\n public static readonly ALPHA_SCREENMODE = Constants.ALPHA_SCREENMODE;\r\n\r\n /** Defines that the resource is not delayed*/\r\n public static readonly DELAYLOADSTATE_NONE = Constants.DELAYLOADSTATE_NONE;\r\n /** Defines that the resource was successfully delay loaded */\r\n public static readonly DELAYLOADSTATE_LOADED = Constants.DELAYLOADSTATE_LOADED;\r\n /** Defines that the resource is currently delay loading */\r\n public static readonly DELAYLOADSTATE_LOADING = Constants.DELAYLOADSTATE_LOADING;\r\n /** Defines that the resource is delayed and has not started loading */\r\n public static readonly DELAYLOADSTATE_NOTLOADED = Constants.DELAYLOADSTATE_NOTLOADED;\r\n\r\n // Depht or Stencil test Constants.\r\n /** Passed to depthFunction or stencilFunction to specify depth or stencil tests will never pass. i.e. Nothing will be drawn */\r\n public static readonly NEVER = Constants.NEVER;\r\n /** Passed to depthFunction or stencilFunction to specify depth or stencil tests will always pass. i.e. Pixels will be drawn in the order they are drawn */\r\n public static readonly ALWAYS = Constants.ALWAYS;\r\n /** Passed to depthFunction or stencilFunction to specify depth or stencil tests will pass if the new depth value is less than the stored value */\r\n public static readonly LESS = Constants.LESS;\r\n /** Passed to depthFunction or stencilFunction to specify depth or stencil tests will pass if the new depth value is equals to the stored value */\r\n public static readonly EQUAL = Constants.EQUAL;\r\n /** Passed to depthFunction or stencilFunction to specify depth or stencil tests will pass if the new depth value is less than or equal to the stored value */\r\n public static readonly LEQUAL = Constants.LEQUAL;\r\n /** Passed to depthFunction or stencilFunction to specify depth or stencil tests will pass if the new depth value is greater than the stored value */\r\n public static readonly GREATER = Constants.GREATER;\r\n /** Passed to depthFunction or stencilFunction to specify depth or stencil tests will pass if the new depth value is greater than or equal to the stored value */\r\n public static readonly GEQUAL = Constants.GEQUAL;\r\n /** Passed to depthFunction or stencilFunction to specify depth or stencil tests will pass if the new depth value is not equal to the stored value */\r\n public static readonly NOTEQUAL = Constants.NOTEQUAL;\r\n\r\n // Stencil Actions Constants.\r\n /** Passed to stencilOperation to specify that stencil value must be kept */\r\n public static readonly KEEP = Constants.KEEP;\r\n /** Passed to stencilOperation to specify that stencil value must be replaced */\r\n public static readonly REPLACE = Constants.REPLACE;\r\n /** Passed to stencilOperation to specify that stencil value must be incremented */\r\n public static readonly INCR = Constants.INCR;\r\n /** Passed to stencilOperation to specify that stencil value must be decremented */\r\n public static readonly DECR = Constants.DECR;\r\n /** Passed to stencilOperation to specify that stencil value must be inverted */\r\n public static readonly INVERT = Constants.INVERT;\r\n /** Passed to stencilOperation to specify that stencil value must be incremented with wrapping */\r\n public static readonly INCR_WRAP = Constants.INCR_WRAP;\r\n /** Passed to stencilOperation to specify that stencil value must be decremented with wrapping */\r\n public static readonly DECR_WRAP = Constants.DECR_WRAP;\r\n\r\n /** Texture is not repeating outside of 0..1 UVs */\r\n public static readonly TEXTURE_CLAMP_ADDRESSMODE = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n /** Texture is repeating outside of 0..1 UVs */\r\n public static readonly TEXTURE_WRAP_ADDRESSMODE = Constants.TEXTURE_WRAP_ADDRESSMODE;\r\n /** Texture is repeating and mirrored */\r\n public static readonly TEXTURE_MIRROR_ADDRESSMODE = Constants.TEXTURE_MIRROR_ADDRESSMODE;\r\n\r\n /** ALPHA */\r\n public static readonly TEXTUREFORMAT_ALPHA = Constants.TEXTUREFORMAT_ALPHA;\r\n /** LUMINANCE */\r\n public static readonly TEXTUREFORMAT_LUMINANCE = Constants.TEXTUREFORMAT_LUMINANCE;\r\n /** LUMINANCE_ALPHA */\r\n public static readonly TEXTUREFORMAT_LUMINANCE_ALPHA = Constants.TEXTUREFORMAT_LUMINANCE_ALPHA;\r\n /** RGB */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public static readonly TEXTUREFORMAT_RGB = Constants.TEXTUREFORMAT_RGB;\r\n /** RGBA */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public static readonly TEXTUREFORMAT_RGBA = Constants.TEXTUREFORMAT_RGBA;\r\n /** RED */\r\n public static readonly TEXTUREFORMAT_RED = Constants.TEXTUREFORMAT_RED;\r\n /** RED (2nd reference) */\r\n public static readonly TEXTUREFORMAT_R = Constants.TEXTUREFORMAT_R;\r\n /** RED unsigned short normed to [0, 1] **/\r\n public static readonly TEXTUREFORMAT_R16_UNORM = Constants.TEXTUREFORMAT_R16_UNORM;\r\n /** RG unsigned short normed to [0, 1] **/\r\n public static readonly TEXTUREFORMAT_RG16_UNORM = Constants.TEXTUREFORMAT_RG16_UNORM;\r\n /** RGB unsigned short normed to [0, 1] **/\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public static readonly TEXTUREFORMAT_RGB16_UNORM = Constants.TEXTUREFORMAT_RGB16_UNORM;\r\n /** RGBA unsigned short normed to [0, 1] **/\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public static readonly TEXTUREFORMAT_RGBA16_UNORM = Constants.TEXTUREFORMAT_RGBA16_UNORM;\r\n /** RED signed short normed to [-1, 1] **/\r\n public static readonly TEXTUREFORMAT_R16_SNORM = Constants.TEXTUREFORMAT_R16_SNORM;\r\n /** RG signed short normed to [-1, 1] **/\r\n public static readonly TEXTUREFORMAT_RG16_SNORM = Constants.TEXTUREFORMAT_RG16_SNORM;\r\n /** RGB signed short normed to [-1, 1] **/\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public static readonly TEXTUREFORMAT_RGB16_SNORM = Constants.TEXTUREFORMAT_RGB16_SNORM;\r\n /** RGBA signed short normed to [-1, 1] **/\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public static readonly TEXTUREFORMAT_RGBA16_SNORM = Constants.TEXTUREFORMAT_RGBA16_SNORM;\r\n /** RG */\r\n public static readonly TEXTUREFORMAT_RG = Constants.TEXTUREFORMAT_RG;\r\n /** RED_INTEGER */\r\n public static readonly TEXTUREFORMAT_RED_INTEGER = Constants.TEXTUREFORMAT_RED_INTEGER;\r\n /** RED_INTEGER (2nd reference) */\r\n public static readonly TEXTUREFORMAT_R_INTEGER = Constants.TEXTUREFORMAT_R_INTEGER;\r\n /** RG_INTEGER */\r\n public static readonly TEXTUREFORMAT_RG_INTEGER = Constants.TEXTUREFORMAT_RG_INTEGER;\r\n /** RGB_INTEGER */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public static readonly TEXTUREFORMAT_RGB_INTEGER = Constants.TEXTUREFORMAT_RGB_INTEGER;\r\n /** RGBA_INTEGER */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public static readonly TEXTUREFORMAT_RGBA_INTEGER = Constants.TEXTUREFORMAT_RGBA_INTEGER;\r\n\r\n /** UNSIGNED_BYTE */\r\n public static readonly TEXTURETYPE_UNSIGNED_BYTE = Constants.TEXTURETYPE_UNSIGNED_BYTE;\r\n /** @deprecated use more explicit TEXTURETYPE_UNSIGNED_BYTE instead. Use TEXTURETYPE_UNSIGNED_INTEGER for 32bits values.*/\r\n public static readonly TEXTURETYPE_UNSIGNED_INT = Constants.TEXTURETYPE_UNSIGNED_INT;\r\n /** FLOAT */\r\n public static readonly TEXTURETYPE_FLOAT = Constants.TEXTURETYPE_FLOAT;\r\n /** HALF_FLOAT */\r\n public static readonly TEXTURETYPE_HALF_FLOAT = Constants.TEXTURETYPE_HALF_FLOAT;\r\n /** BYTE */\r\n public static readonly TEXTURETYPE_BYTE = Constants.TEXTURETYPE_BYTE;\r\n /** SHORT */\r\n public static readonly TEXTURETYPE_SHORT = Constants.TEXTURETYPE_SHORT;\r\n /** UNSIGNED_SHORT */\r\n public static readonly TEXTURETYPE_UNSIGNED_SHORT = Constants.TEXTURETYPE_UNSIGNED_SHORT;\r\n /** INT */\r\n public static readonly TEXTURETYPE_INT = Constants.TEXTURETYPE_INT;\r\n /** UNSIGNED_INT */\r\n public static readonly TEXTURETYPE_UNSIGNED_INTEGER = Constants.TEXTURETYPE_UNSIGNED_INTEGER;\r\n /** UNSIGNED_SHORT_4_4_4_4 */\r\n public static readonly TEXTURETYPE_UNSIGNED_SHORT_4_4_4_4 = Constants.TEXTURETYPE_UNSIGNED_SHORT_4_4_4_4;\r\n /** UNSIGNED_SHORT_5_5_5_1 */\r\n public static readonly TEXTURETYPE_UNSIGNED_SHORT_5_5_5_1 = Constants.TEXTURETYPE_UNSIGNED_SHORT_5_5_5_1;\r\n /** UNSIGNED_SHORT_5_6_5 */\r\n public static readonly TEXTURETYPE_UNSIGNED_SHORT_5_6_5 = Constants.TEXTURETYPE_UNSIGNED_SHORT_5_6_5;\r\n /** UNSIGNED_INT_2_10_10_10_REV */\r\n public static readonly TEXTURETYPE_UNSIGNED_INT_2_10_10_10_REV = Constants.TEXTURETYPE_UNSIGNED_INT_2_10_10_10_REV;\r\n /** UNSIGNED_INT_24_8 */\r\n public static readonly TEXTURETYPE_UNSIGNED_INT_24_8 = Constants.TEXTURETYPE_UNSIGNED_INT_24_8;\r\n /** UNSIGNED_INT_10F_11F_11F_REV */\r\n public static readonly TEXTURETYPE_UNSIGNED_INT_10F_11F_11F_REV = Constants.TEXTURETYPE_UNSIGNED_INT_10F_11F_11F_REV;\r\n /** UNSIGNED_INT_5_9_9_9_REV */\r\n public static readonly TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV = Constants.TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV;\r\n /** FLOAT_32_UNSIGNED_INT_24_8_REV */\r\n public static readonly TEXTURETYPE_FLOAT_32_UNSIGNED_INT_24_8_REV = Constants.TEXTURETYPE_FLOAT_32_UNSIGNED_INT_24_8_REV;\r\n\r\n /** nearest is mag = nearest and min = nearest and mip = none */\r\n public static readonly TEXTURE_NEAREST_SAMPLINGMODE = Constants.TEXTURE_NEAREST_SAMPLINGMODE;\r\n /** Bilinear is mag = linear and min = linear and mip = nearest */\r\n public static readonly TEXTURE_BILINEAR_SAMPLINGMODE = Constants.TEXTURE_BILINEAR_SAMPLINGMODE;\r\n /** Trilinear is mag = linear and min = linear and mip = linear */\r\n public static readonly TEXTURE_TRILINEAR_SAMPLINGMODE = Constants.TEXTURE_TRILINEAR_SAMPLINGMODE;\r\n /** nearest is mag = nearest and min = nearest and mip = linear */\r\n public static readonly TEXTURE_NEAREST_NEAREST_MIPLINEAR = Constants.TEXTURE_NEAREST_NEAREST_MIPLINEAR;\r\n /** Bilinear is mag = linear and min = linear and mip = nearest */\r\n public static readonly TEXTURE_LINEAR_LINEAR_MIPNEAREST = Constants.TEXTURE_LINEAR_LINEAR_MIPNEAREST;\r\n /** Trilinear is mag = linear and min = linear and mip = linear */\r\n public static readonly TEXTURE_LINEAR_LINEAR_MIPLINEAR = Constants.TEXTURE_LINEAR_LINEAR_MIPLINEAR;\r\n /** mag = nearest and min = nearest and mip = nearest */\r\n public static readonly TEXTURE_NEAREST_NEAREST_MIPNEAREST = Constants.TEXTURE_NEAREST_NEAREST_MIPNEAREST;\r\n /** mag = nearest and min = linear and mip = nearest */\r\n public static readonly TEXTURE_NEAREST_LINEAR_MIPNEAREST = Constants.TEXTURE_NEAREST_LINEAR_MIPNEAREST;\r\n /** mag = nearest and min = linear and mip = linear */\r\n public static readonly TEXTURE_NEAREST_LINEAR_MIPLINEAR = Constants.TEXTURE_NEAREST_LINEAR_MIPLINEAR;\r\n /** mag = nearest and min = linear and mip = none */\r\n public static readonly TEXTURE_NEAREST_LINEAR = Constants.TEXTURE_NEAREST_LINEAR;\r\n /** mag = nearest and min = nearest and mip = none */\r\n public static readonly TEXTURE_NEAREST_NEAREST = Constants.TEXTURE_NEAREST_NEAREST;\r\n /** mag = linear and min = nearest and mip = nearest */\r\n public static readonly TEXTURE_LINEAR_NEAREST_MIPNEAREST = Constants.TEXTURE_LINEAR_NEAREST_MIPNEAREST;\r\n /** mag = linear and min = nearest and mip = linear */\r\n public static readonly TEXTURE_LINEAR_NEAREST_MIPLINEAR = Constants.TEXTURE_LINEAR_NEAREST_MIPLINEAR;\r\n /** mag = linear and min = linear and mip = none */\r\n public static readonly TEXTURE_LINEAR_LINEAR = Constants.TEXTURE_LINEAR_LINEAR;\r\n /** mag = linear and min = nearest and mip = none */\r\n public static readonly TEXTURE_LINEAR_NEAREST = Constants.TEXTURE_LINEAR_NEAREST;\r\n\r\n /** Explicit coordinates mode */\r\n public static readonly TEXTURE_EXPLICIT_MODE = Constants.TEXTURE_EXPLICIT_MODE;\r\n /** Spherical coordinates mode */\r\n public static readonly TEXTURE_SPHERICAL_MODE = Constants.TEXTURE_SPHERICAL_MODE;\r\n /** Planar coordinates mode */\r\n public static readonly TEXTURE_PLANAR_MODE = Constants.TEXTURE_PLANAR_MODE;\r\n /** Cubic coordinates mode */\r\n public static readonly TEXTURE_CUBIC_MODE = Constants.TEXTURE_CUBIC_MODE;\r\n /** Projection coordinates mode */\r\n public static readonly TEXTURE_PROJECTION_MODE = Constants.TEXTURE_PROJECTION_MODE;\r\n /** Skybox coordinates mode */\r\n public static readonly TEXTURE_SKYBOX_MODE = Constants.TEXTURE_SKYBOX_MODE;\r\n /** Inverse Cubic coordinates mode */\r\n public static readonly TEXTURE_INVCUBIC_MODE = Constants.TEXTURE_INVCUBIC_MODE;\r\n /** Equirectangular coordinates mode */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public static readonly TEXTURE_EQUIRECTANGULAR_MODE = Constants.TEXTURE_EQUIRECTANGULAR_MODE;\r\n /** Equirectangular Fixed coordinates mode */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public static readonly TEXTURE_FIXED_EQUIRECTANGULAR_MODE = Constants.TEXTURE_FIXED_EQUIRECTANGULAR_MODE;\r\n /** Equirectangular Fixed Mirrored coordinates mode */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public static readonly TEXTURE_FIXED_EQUIRECTANGULAR_MIRRORED_MODE = Constants.TEXTURE_FIXED_EQUIRECTANGULAR_MIRRORED_MODE;\r\n\r\n // Texture rescaling mode\r\n /** Defines that texture rescaling will use a floor to find the closer power of 2 size */\r\n public static readonly SCALEMODE_FLOOR = Constants.SCALEMODE_FLOOR;\r\n /** Defines that texture rescaling will look for the nearest power of 2 size */\r\n public static readonly SCALEMODE_NEAREST = Constants.SCALEMODE_NEAREST;\r\n /** Defines that texture rescaling will use a ceil to find the closer power of 2 size */\r\n public static readonly SCALEMODE_CEILING = Constants.SCALEMODE_CEILING;\r\n\r\n /**\r\n * Returns the current npm package of the sdk\r\n */\r\n // Not mixed with Version for tooling purpose.\r\n public static override get NpmPackage(): string {\r\n return AbstractEngine.NpmPackage;\r\n }\r\n\r\n /**\r\n * Returns the current version of the framework\r\n */\r\n public static override get Version(): string {\r\n return AbstractEngine.Version;\r\n }\r\n\r\n /** Gets the list of created engines */\r\n public static get Instances(): AbstractEngine[] {\r\n return EngineStore.Instances;\r\n }\r\n\r\n /**\r\n * Gets the latest created engine\r\n */\r\n public static get LastCreatedEngine(): Nullable<AbstractEngine> {\r\n return EngineStore.LastCreatedEngine;\r\n }\r\n\r\n /**\r\n * Gets the latest created scene\r\n */\r\n public static get LastCreatedScene(): Nullable<Scene> {\r\n return EngineStore.LastCreatedScene;\r\n }\r\n\r\n /** @internal */\r\n\r\n // eslint-disable-next-line jsdoc/require-returns-check\r\n /**\r\n * Method called to create the default loading screen.\r\n * This can be overridden in your own app.\r\n * @param canvas The rendering canvas element\r\n * @returns The loading screen\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public static override DefaultLoadingScreenFactory(canvas: HTMLCanvasElement): ILoadingScreen {\r\n return AbstractEngine.DefaultLoadingScreenFactory(canvas);\r\n }\r\n\r\n // Members\r\n\r\n private _rescalePostProcess: Nullable<PostProcess>;\r\n\r\n protected override get _supportsHardwareTextureRescaling() {\r\n return !!Engine._RescalePostProcessFactory;\r\n }\r\n\r\n private _measureFps(): void {\r\n this._performanceMonitor.sampleFrame();\r\n this._fps = this._performanceMonitor.averageFPS;\r\n this._deltaTime = this._performanceMonitor.instantaneousFrameTime || 0;\r\n }\r\n\r\n private _performanceMonitor = new PerformanceMonitor();\r\n /**\r\n * Gets the performance monitor attached to this engine\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/scene/optimize_your_scene#engineinstrumentation\r\n */\r\n public override get performanceMonitor(): PerformanceMonitor {\r\n return this._performanceMonitor;\r\n }\r\n\r\n // Events\r\n\r\n /**\r\n * Creates a new engine\r\n * @param canvasOrContext defines the canvas or WebGL context to use for rendering. If you provide a WebGL context, Babylon.js will not hook events on the canvas (like pointers, keyboards, etc...) so no event observables will be available. This is mostly used when Babylon.js is used as a plugin on a system which already used the WebGL context\r\n * @param antialias defines enable antialiasing (default: false)\r\n * @param options defines further options to be sent to the getContext() function\r\n * @param adaptToDeviceRatio defines whether to adapt to the device's viewport characteristics (default: false)\r\n */\r\n constructor(\r\n canvasOrContext: Nullable<HTMLCanvasElement | OffscreenCanvas | WebGLRenderingContext | WebGL2RenderingContext>,\r\n antialias?: boolean,\r\n options?: EngineOptions,\r\n adaptToDeviceRatio: boolean = false\r\n ) {\r\n RegisterAbstractEngineDom();\r\n RegisterAbstractEngineRenderPass();\r\n super(canvasOrContext, antialias, options, adaptToDeviceRatio);\r\n\r\n this._drawCalls = new PerfCounter();\r\n\r\n if (!canvasOrContext) {\r\n return;\r\n }\r\n\r\n this._features.supportRenderPasses = true;\r\n }\r\n\r\n protected override _initGLContext(): void {\r\n super._initGLContext();\r\n\r\n this._rescalePostProcess = null;\r\n }\r\n\r\n /**\r\n * Shared initialization across engines types.\r\n * @param canvas The canvas associated with this instance of the engine.\r\n */\r\n protected override _sharedInit(canvas: HTMLCanvasElement) {\r\n super._sharedInit(canvas);\r\n\r\n _CommonInit(this, canvas, this._creationOptions);\r\n }\r\n\r\n /**\r\n * Resize an image and returns the image data as an uint8array\r\n * @param image image to resize\r\n * @param bufferWidth destination buffer width\r\n * @param bufferHeight destination buffer height\r\n * @returns an uint8array containing RGBA values of bufferWidth * bufferHeight size\r\n */\r\n public override resizeImageBitmap(image: HTMLImageElement | ImageBitmap, bufferWidth: number, bufferHeight: number): Uint8Array {\r\n return ResizeImageBitmap(this, image, bufferWidth, bufferHeight);\r\n }\r\n\r\n /**\r\n * Engine abstraction for loading and creating an image bitmap from a given source string.\r\n * @param imageSource source to load the image from.\r\n * @param options An object that sets options for the image's extraction.\r\n * @returns ImageBitmap\r\n */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public override async _createImageBitmapFromSource(imageSource: string, options?: ImageBitmapOptions): Promise<ImageBitmap> {\r\n return await CreateImageBitmapFromSource(this, imageSource, options);\r\n }\r\n\r\n /**\r\n * Toggle full screen mode\r\n * @param requestPointerLock defines if a pointer lock should be requested from the user\r\n */\r\n public override switchFullscreen(requestPointerLock: boolean): void {\r\n if (this.isFullscreen) {\r\n this.exitFullscreen();\r\n } else {\r\n this.enterFullscreen(requestPointerLock);\r\n }\r\n }\r\n\r\n /**\r\n * Enters full screen mode\r\n * @param requestPointerLock defines if a pointer lock should be requested from the user\r\n */\r\n public override enterFullscreen(requestPointerLock: boolean): void {\r\n if (!this.isFullscreen) {\r\n this._pointerLockRequested = requestPointerLock;\r\n if (this._renderingCanvas) {\r\n RequestFullscreen(this._renderingCanvas);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Exits full screen mode\r\n */\r\n public override exitFullscreen(): void {\r\n if (this.isFullscreen) {\r\n ExitFullscreen();\r\n }\r\n }\r\n\r\n /** States */\r\n\r\n /**\r\n * Sets a boolean indicating if the dithering state is enabled or disabled\r\n * @param value defines the dithering state\r\n */\r\n public setDitheringState(value: boolean): void {\r\n if (value) {\r\n this._gl.enable(this._gl.DITHER);\r\n } else {\r\n this._gl.disable(this._gl.DITHER);\r\n }\r\n }\r\n\r\n /**\r\n * Sets a boolean indicating if the rasterizer state is enabled or disabled\r\n * @param value defines the rasterizer state\r\n */\r\n public setRasterizerState(value: boolean): void {\r\n if (value) {\r\n this._gl.disable(this._gl.RASTERIZER_DISCARD);\r\n } else {\r\n this._gl.enable(this._gl.RASTERIZER_DISCARD);\r\n }\r\n }\r\n\r\n /**\r\n * Directly set the WebGL Viewport\r\n * @param x defines the x coordinate of the viewport (in screen space)\r\n * @param y defines the y coordinate of the viewport (in screen space)\r\n * @param width defines the width of the viewport (in screen space)\r\n * @param height defines the height of the viewport (in screen space)\r\n * @returns the current viewport Object (if any) that is being replaced by this call. You can restore this viewport later on to go back to the original state\r\n */\r\n public setDirectViewport(x: number, y: number, width: number, height: number): Nullable<IViewportLike> {\r\n const currentViewport = this._cachedViewport;\r\n this._cachedViewport = null;\r\n\r\n this._viewport(x, y, width, height);\r\n\r\n return currentViewport;\r\n }\r\n\r\n /**\r\n * Executes a scissor clear (ie. a clear on a specific portion of the screen)\r\n * @param x defines the x-coordinate of the bottom left corner of the clear rectangle\r\n * @param y defines the y-coordinate of the corner of the clear rectangle\r\n * @param width defines the width of the clear rectangle\r\n * @param height defines the height of the clear rectangle\r\n * @param clearColor defines the clear color\r\n */\r\n public scissorClear(x: number, y: number, width: number, height: number, clearColor: IColor4Like): void {\r\n this.enableScissor(x, y, width, height);\r\n this.clear(clearColor, true, true, true);\r\n this.disableScissor();\r\n }\r\n\r\n /**\r\n * Gets the source code of the vertex shader associated with a specific webGL program\r\n * @param program defines the program to use\r\n * @returns a string containing the source code of the vertex shader associated with the program\r\n */\r\n public getVertexShaderSource(program: WebGLProgram): Nullable<string> {\r\n const shaders = this._gl.getAttachedShaders(program);\r\n\r\n if (!shaders) {\r\n return null;\r\n }\r\n\r\n return this._gl.getShaderSource(shaders[0]);\r\n }\r\n\r\n /**\r\n * Gets the source code of the fragment shader associated with a specific webGL program\r\n * @param program defines the program to use\r\n * @returns a string containing the source code of the fragment shader associated with the program\r\n */\r\n public getFragmentShaderSource(program: WebGLProgram): Nullable<string> {\r\n const shaders = this._gl.getAttachedShaders(program);\r\n\r\n if (!shaders) {\r\n return null;\r\n }\r\n\r\n return this._gl.getShaderSource(shaders[1]);\r\n }\r\n\r\n /**\r\n * sets the object from which width and height will be taken from when getting render width and height\r\n * Will fallback to the gl object\r\n * @param dimensions the framebuffer width and height that will be used.\r\n */\r\n public override set framebufferDimensionsObject(dimensions: Nullable<{ framebufferWidth: number; framebufferHeight: number }>) {\r\n this._framebufferDimensionsObject = dimensions;\r\n if (this._framebufferDimensionsObject) {\r\n this.onResizeObservable.notifyObservers(this);\r\n }\r\n }\r\n\r\n protected override _rebuildBuffers(): void {\r\n // Index / Vertex\r\n for (const scene of this.scenes) {\r\n scene.resetCachedMaterial();\r\n scene._rebuildGeometries();\r\n }\r\n\r\n for (const scene of this._virtualScenes) {\r\n scene.resetCachedMaterial();\r\n scene._rebuildGeometries();\r\n }\r\n\r\n super._rebuildBuffers();\r\n }\r\n\r\n /**\r\n * Get Font size information\r\n * @param font font name\r\n * @returns an object containing ascent, height and descent\r\n */\r\n public override getFontOffset(font: string): { ascent: number; height: number; descent: number } {\r\n return GetFontOffset(font);\r\n }\r\n\r\n /**\r\n * Enters Pointerlock mode\r\n */\r\n public enterPointerlock(): void {\r\n if (this._renderingCanvas) {\r\n RequestPointerlock(this._renderingCanvas);\r\n }\r\n }\r\n\r\n /**\r\n * Exits Pointerlock mode\r\n */\r\n public exitPointerlock(): void {\r\n ExitPointerlock();\r\n }\r\n\r\n /**\r\n * Begin a new frame\r\n */\r\n public override beginFrame(): void {\r\n this._measureFps();\r\n super.beginFrame();\r\n }\r\n\r\n public override _deletePipelineContext(pipelineContext: IPipelineContext): void {\r\n const webGLPipelineContext = pipelineContext as WebGLPipelineContext;\r\n if (webGLPipelineContext && webGLPipelineContext.program) {\r\n if (webGLPipelineContext.transformFeedback) {\r\n this.deleteTransformFeedback(webGLPipelineContext.transformFeedback);\r\n webGLPipelineContext.transformFeedback = null;\r\n }\r\n }\r\n super._deletePipelineContext(pipelineContext);\r\n }\r\n\r\n public override createShaderProgram(\r\n pipelineContext: IPipelineContext,\r\n vertexCode: string,\r\n fragmentCode: string,\r\n defines: Nullable<string>,\r\n context?: WebGLRenderingContext,\r\n transformFeedbackVaryings: Nullable<string[]> = null\r\n ): WebGLProgram {\r\n context = context || this._gl;\r\n\r\n this.onBeforeShaderCompilationObservable.notifyObservers(this);\r\n\r\n const program = super.createShaderProgram(pipelineContext, vertexCode, fragmentCode, defines, context, transformFeedbackVaryings);\r\n this.onAfterShaderCompilationObservable.notifyObservers(this);\r\n\r\n return program;\r\n }\r\n\r\n protected override _createShaderProgram(\r\n pipelineContext: WebGLPipelineContext,\r\n vertexShader: WebGLShader,\r\n fragmentShader: WebGLShader,\r\n context: WebGLRenderingContext,\r\n transformFeedbackVaryings: Nullable<string[]> = null\r\n ): WebGLProgram {\r\n const shaderProgram = context.createProgram();\r\n pipelineContext.program = shaderProgram;\r\n\r\n if (!shaderProgram) {\r\n throw new Error(\"Unable to create program\");\r\n }\r\n\r\n context.attachShader(shaderProgram, vertexShader);\r\n context.attachShader(shaderProgram, fragmentShader);\r\n\r\n if (this.webGLVersion > 1 && transformFeedbackVaryings) {\r\n const transformFeedback = this.createTransformFeedback();\r\n\r\n this.bindTransformFeedback(transformFeedback);\r\n this.setTranformFeedbackVaryings(shaderProgram, transformFeedbackVaryings);\r\n pipelineContext.transformFeedback = transformFeedback;\r\n }\r\n\r\n context.linkProgram(shaderProgram);\r\n\r\n if (this.webGLVersion > 1 && transformFeedbackVaryings) {\r\n this.bindTransformFeedback(null);\r\n }\r\n\r\n pipelineContext.context = context;\r\n pipelineContext.vertexShader = vertexShader;\r\n pipelineContext.fragmentShader = fragmentShader;\r\n\r\n if (!pipelineContext.isParallelCompiled) {\r\n this._finalizePipelineContext(pipelineContext);\r\n }\r\n\r\n return shaderProgram;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _releaseTexture(texture: InternalTexture): void {\r\n super._releaseTexture(texture);\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _releaseRenderTargetWrapper(rtWrapper: RenderTargetWrapper): void {\r\n super._releaseRenderTargetWrapper(rtWrapper);\r\n\r\n // Set output texture of post process to null if the framebuffer has been released/disposed\r\n for (const scene of this.scenes) {\r\n for (const postProcess of scene.postProcesses) {\r\n if (postProcess._outputTexture === rtWrapper) {\r\n postProcess._outputTexture = null;\r\n }\r\n }\r\n for (const camera of scene.cameras) {\r\n for (const postProcess of camera._postProcesses) {\r\n if (postProcess) {\r\n if (postProcess._outputTexture === rtWrapper) {\r\n postProcess._outputTexture = null;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n * Rescales a texture\r\n * @param source input texture\r\n * @param destination destination texture\r\n * @param scene scene to use to render the resize\r\n * @param internalFormat format to use when resizing\r\n * @param onComplete callback to be called when resize has completed\r\n */\r\n public override _rescaleTexture(source: InternalTexture, destination: InternalTexture, scene: Nullable<any>, internalFormat: number, onComplete: () => void): void {\r\n this._gl.texParameteri(this._gl.TEXTURE_2D, this._gl.TEXTURE_MAG_FILTER, this._gl.LINEAR);\r\n this._gl.texParameteri(this._gl.TEXTURE_2D, this._gl.TEXTURE_MIN_FILTER, this._gl.LINEAR);\r\n this._gl.texParameteri(this._gl.TEXTURE_2D, this._gl.TEXTURE_WRAP_S, this._gl.CLAMP_TO_EDGE);\r\n this._gl.texParameteri(this._gl.TEXTURE_2D, this._gl.TEXTURE_WRAP_T, this._gl.CLAMP_TO_EDGE);\r\n\r\n const rtt = this.createRenderTargetTexture(\r\n {\r\n width: destination.width,\r\n height: destination.height,\r\n },\r\n {\r\n generateMipMaps: false,\r\n type: Constants.TEXTURETYPE_UNSIGNED_INT,\r\n samplingMode: Constants.TEXTURE_BILINEAR_SAMPLINGMODE,\r\n generateDepthBuffer: false,\r\n generateStencilBuffer: false,\r\n }\r\n );\r\n\r\n if (!this._rescalePostProcess && Engine._RescalePostProcessFactory) {\r\n this._rescalePostProcess = Engine._RescalePostProcessFactory(this);\r\n }\r\n\r\n if (this._rescalePostProcess) {\r\n this._rescalePostProcess.externalTextureSamplerBinding = true;\r\n const onCompiled = () => {\r\n this._rescalePostProcess!.onApply = function (effect) {\r\n effect._bindTexture(\"textureSampler\", source);\r\n };\r\n\r\n let hostingScene: Scene = scene;\r\n\r\n if (!hostingScene) {\r\n hostingScene = this.scenes[this.scenes.length - 1];\r\n }\r\n hostingScene.postProcessManager.directRender([this._rescalePostProcess!], rtt, true);\r\n\r\n this._bindTextureDirectly(this._gl.TEXTURE_2D, destination, true);\r\n this._gl.copyTexImage2D(this._gl.TEXTURE_2D, 0, internalFormat, 0, 0, destination.width, destination.height, 0);\r\n\r\n this.unBindFramebuffer(rtt);\r\n rtt.dispose();\r\n\r\n if (onComplete) {\r\n onComplete();\r\n }\r\n };\r\n const effect = this._rescalePostProcess.getEffect();\r\n if (effect) {\r\n effect.executeWhenCompiled(onCompiled);\r\n } else {\r\n this._rescalePostProcess.onEffectCreatedObservable.addOnce((effect) => {\r\n effect.executeWhenCompiled(onCompiled);\r\n });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Wraps an external web gl texture in a Babylon texture.\r\n * @param texture defines the external texture\r\n * @param hasMipMaps defines whether the external texture has mip maps (default: false)\r\n * @param samplingMode defines the sampling mode for the external texture (default: Constants.TEXTURE_TRILINEAR_SAMPLINGMODE)\r\n * @param width defines the width for the external texture (default: 0)\r\n * @param height defines the height for the external texture (default: 0)\r\n * @returns the babylon internal texture\r\n */\r\n public wrapWebGLTexture(\r\n texture: WebGLTexture,\r\n hasMipMaps: boolean = false,\r\n samplingMode: number = Constants.TEXTURE_TRILINEAR_SAMPLINGMODE,\r\n width: number = 0,\r\n height: number = 0\r\n ): InternalTexture {\r\n const hardwareTexture = new WebGLHardwareTexture(texture, this._gl);\r\n const internalTexture = new InternalTexture(this, InternalTextureSource.External, true);\r\n internalTexture._hardwareTexture = hardwareTexture;\r\n internalTexture.baseWidth = width;\r\n internalTexture.baseHeight = height;\r\n internalTexture.width = width;\r\n internalTexture.height = height;\r\n internalTexture.isReady = true;\r\n internalTexture.useMipMaps = hasMipMaps;\r\n this.updateTextureSamplingMode(samplingMode, internalTexture);\r\n return internalTexture;\r\n }\r\n\r\n /**\r\n * Replaces the underlying WebGL handle of a texture previously created via {@link wrapWebGLTexture}, preserving\r\n * the InternalTexture identity.\r\n *\r\n * Intended for the context-loss / context-restored flow: when the host application recreates its external resource\r\n * on the new WebGL context, it calls this method to repoint Babylon's wrapper at the new handle without losing\r\n * references held by materials, render-target wrappers, particle systems, etc.\r\n *\r\n * The new handle must describe a texture with the same dimensions the wrapped texture was created with. A WebGL\r\n * handle is opaque (the dimensions can't be introspected), so we can't validate this -- passing a mismatched\r\n * handle is undefined behaviour. Sampling mode and mip-map flag are properties of the logical wrapped texture and\r\n * are re-applied to the new resource. Any render-target wrapper holding this texture as its color attachment has\r\n * its framebuffer rebuilt with the new handle (including a fresh depth/stencil renderbuffer, since the old one\r\n * came from the dead context). If the wrapper is multisampled, the MSAA framebuffer + color renderbuffer + MSAA\r\n * depth/stencil buffer are rebuilt too.\r\n *\r\n * Throws if the target was not produced by {@link wrapWebGLTexture}, if the wrapped texture is part of a multi\r\n * render-target wrapper, or if the wrapper has a depth/stencil texture (these are not supported in this version;\r\n * dispose and re-wrap).\r\n * @param internalTexture defines the wrapped InternalTexture to repoint\r\n * @param texture defines the new WebGL handle to wrap\r\n */\r\n public updateWrappedWebGLTexture(internalTexture: InternalTexture, texture: WebGLTexture): void {\r\n if (internalTexture.source !== InternalTextureSource.External) {\r\n throw new Error(\"updateWrappedWebGLTexture: target InternalTexture was not produced by wrapWebGLTexture.\");\r\n }\r\n\r\n // Pre-validate before mutating any state so a thrown precondition leaves the InternalTexture untouched.\r\n // Note: rtWrapper.texture only returns _textures[0]; walk every attachment to catch the multi-RT case where\r\n // the wrapped texture is at index > 0.\r\n for (const rtWrapper of this._renderTargetWrapperCache) {\r\n if (!rtWrapper.textures?.includes(internalTexture)) {\r\n continue;\r\n }\r\n if (rtWrapper.isMulti) {\r\n throw new Error(\"updateWrappedWebGLTexture: wrapped texture is part of a multi render-target; not supported. Dispose and re-wrap.\");\r\n }\r\n if (rtWrapper._depthStencilTexture) {\r\n // The depth/stencil texture's GL handle was also lost on context restore. Rebuilding it from the\r\n // wrapper's stored depth settings + re-attaching is feasible but non-trivial; v1 rejects and asks\r\n // the caller to dispose + re-wrap (which also recreates the depth/stencil texture via the public API).\r\n throw new Error(\"updateWrappedWebGLTexture: wrapped texture's render-target wrapper has a depth/stencil texture; not supported. Dispose and re-wrap.\");\r\n }\r\n }\r\n\r\n internalTexture._hardwareTexture = new WebGLHardwareTexture(texture, this._gl);\r\n internalTexture.isReady = true;\r\n\r\n // The new GL texture has default sampler state; clear the per-InternalTexture cached sampler params so the\r\n // next _setTexture re-applies them, then drop any binding-cache slot pointing at this InternalTexture so the\r\n // identity short-circuit (this._boundTexturesCache[channel] === internalTexture) doesn't skip the rebind.\r\n internalTexture._cachedCoordinatesMode = null;\r\n internalTexture._cachedWrapU = null;\r\n internalTexture._cachedWrapV = null;\r\n internalTexture._cachedWrapR = null;\r\n internalTexture._cachedAnisotropicFilteringLevel = null;\r\n for (const key in this._boundTexturesCache) {\r\n if (this._boundTexturesCache[key] === internalTexture) {\r\n this._boundTexturesCache[key] = null;\r\n }\r\n }\r\n\r\n this.updateTextureSamplingMode(internalTexture.samplingMode, internalTexture);\r\n\r\n // Rebuild the framebuffer of any render-target wrapper holding this wrapped texture as its color attachment.\r\n // After a context-loss / restore cycle the GL framebuffer + depth/stencil renderbuffer came from the dead\r\n // context; the consumer-supplied new texture is the moment we have a fresh handle to rebuild against.\r\n const gl = this._gl;\r\n for (const rtWrapper of this._renderTargetWrapperCache) {\r\n if (rtWrapper.texture !== internalTexture) {\r\n continue;\r\n }\r\n const webGLRtWrapper = rtWrapper as WebGLRenderTargetWrapper;\r\n const savedSamples = rtWrapper.samples;\r\n const isMSAA = savedSamples > 1;\r\n\r\n if (webGLRtWrapper._framebuffer) {\r\n gl.deleteFramebuffer(webGLRtWrapper._framebuffer);\r\n }\r\n if (!isMSAA && webGLRtWrapper._depthStencilBuffer) {\r\n gl.deleteRenderbuffer(webGLRtWrapper._depthStencilBuffer);\r\n webGLRtWrapper._depthStencilBuffer = null;\r\n }\r\n\r\n const previousFramebuffer = this._currentFramebuffer;\r\n const framebuffer = gl.createFramebuffer();\r\n this._bindUnboundFramebuffer(framebuffer);\r\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\r\n if (!isMSAA) {\r\n webGLRtWrapper._depthStencilBuffer = this._setupFramebufferDepthAttachments(\r\n rtWrapper._generateStencilBuffer,\r\n rtWrapper._generateDepthBuffer,\r\n rtWrapper.width,\r\n rtWrapper.height\r\n );\r\n }\r\n this._bindUnboundFramebuffer(previousFramebuffer);\r\n webGLRtWrapper._framebuffer = framebuffer;\r\n\r\n if (isMSAA) {\r\n // Defer MSAA framebuffer + color renderbuffer + multisampled depth/stencil rebuild to the existing\r\n // helper. The helper early-returns when samples matches the cached value, so zero the cache first\r\n // to force the work; updateRenderTargetTextureSampleCount restores _samples to savedSamples.\r\n rtWrapper._samples = 1;\r\n this.updateRenderTargetTextureSampleCount(webGLRtWrapper, savedSamples);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _uploadImageToTexture(texture: InternalTexture, image: HTMLImageElement | ImageBitmap, faceIndex: number = 0, lod: number = 0) {\r\n const gl = this._gl;\r\n\r\n const textureType = this._getWebGLTextureType(texture.type);\r\n const format = this._getInternalFormat(texture.format);\r\n const internalFormat = this._getRGBABufferInternalSizedFormat(texture.type, format);\r\n\r\n const bindTarget = texture.isCube ? gl.TEXTURE_CUBE_MAP : gl.TEXTURE_2D;\r\n\r\n this._bindTextureDirectly(bindTarget, texture, true);\r\n this._unpackFlipY(texture.invertY);\r\n\r\n let target: GLenum = gl.TEXTURE_2D;\r\n if (texture.isCube) {\r\n target = gl.TEXTURE_CUBE_MAP_POSITIVE_X + faceIndex;\r\n }\r\n\r\n gl.texImage2D(target, lod, internalFormat, format, textureType, image);\r\n this._bindTextureDirectly(bindTarget, null, true);\r\n }\r\n\r\n /**\r\n * Updates a depth texture Comparison Mode and Function.\r\n * If the comparison Function is equal to 0, the mode will be set to none.\r\n * Otherwise, this only works in webgl 2 and requires a shadow sampler in the shader.\r\n * @param texture The texture to set the comparison function for\r\n * @param comparisonFunction The comparison function to set, 0 if no comparison required\r\n */\r\n public updateTextureComparisonFunction(texture: InternalTexture, comparisonFunction: number): void {\r\n if (this.webGLVersion === 1) {\r\n Logger.Error(\"WebGL 1 does not support texture comparison.\");\r\n return;\r\n }\r\n\r\n const gl = this._gl;\r\n\r\n if (texture.isCube) {\r\n this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP, texture, true);\r\n\r\n if (comparisonFunction === 0) {\r\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_COMPARE_FUNC, Constants.LEQUAL);\r\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_COMPARE_MODE, gl.NONE);\r\n } else {\r\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_COMPARE_FUNC, comparisonFunction);\r\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_COMPARE_MODE, gl.COMPARE_REF_TO_TEXTURE);\r\n }\r\n\r\n this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP, null);\r\n } else {\r\n this._bindTextureDirectly(this._gl.TEXTURE_2D, texture, true);\r\n\r\n if (comparisonFunction === 0) {\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_COMPARE_FUNC, Constants.LEQUAL);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_COMPARE_MODE, gl.NONE);\r\n } else {\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_COMPARE_FUNC, comparisonFunction);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_COMPARE_MODE, gl.COMPARE_REF_TO_TEXTURE);\r\n }\r\n\r\n this._bindTextureDirectly(this._gl.TEXTURE_2D, null);\r\n }\r\n\r\n texture._comparisonFunction = comparisonFunction;\r\n }\r\n\r\n /**\r\n * Creates a webGL buffer to use with instantiation\r\n * @param capacity defines the size of the buffer\r\n * @returns the webGL buffer\r\n */\r\n public createInstancesBuffer(capacity: number): DataBuffer {\r\n const buffer = this._gl.createBuffer();\r\n\r\n if (!buffer) {\r\n throw new Error(\"Unable to create instance buffer\");\r\n }\r\n\r\n const result = new WebGLDataBuffer(buffer);\r\n result.capacity = capacity;\r\n\r\n this.bindArrayBuffer(result);\r\n this._gl.bufferData(this._gl.ARRAY_BUFFER, capacity, this._gl.DYNAMIC_DRAW);\r\n\r\n result.references = 1;\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Delete a webGL buffer used with instantiation\r\n * @param buffer defines the webGL buffer to delete\r\n */\r\n public deleteInstancesBuffer(buffer: WebGLBuffer): void {\r\n this._gl.deleteBuffer(buffer);\r\n }\r\n\r\n private async _clientWaitAsync(sync: WebGLSync, flags = 0, intervalms = 10): Promise<void> {\r\n const gl = <WebGL2RenderingContext>(this._gl as any);\r\n return await new Promise((resolve, reject) => {\r\n _RetryWithInterval(\r\n () => {\r\n const res = gl.clientWaitSync(sync, flags, 0);\r\n if (res == gl.WAIT_FAILED) {\r\n throw new Error(\"clientWaitSync failed\");\r\n }\r\n if (res == gl.TIMEOUT_EXPIRED) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n resolve,\r\n reject,\r\n intervalms\r\n );\r\n });\r\n }\r\n\r\n /**\r\n * This function might return null synchronously, so it is technically not async.\r\n * @internal\r\n */\r\n // eslint-disable-next-line no-restricted-syntax\r\n public _readPixelsAsync(x: number, y: number, w: number, h: number, format: number, type: number, outputBuffer: ArrayBufferView): Nullable<Promise<ArrayBufferView>> {\r\n if (this._webGLVersion < 2) {\r\n throw new Error(\"_readPixelsAsync only work on WebGL2+\");\r\n }\r\n\r\n const gl = <WebGL2RenderingContext>(this._gl as any);\r\n const buf = gl.createBuffer();\r\n gl.bindBuffer(gl.PIXEL_PACK_BUFFER, buf);\r\n gl.bufferData(gl.PIXEL_PACK_BUFFER, outputBuffer.byteLength, gl.STREAM_READ);\r\n gl.readPixels(x, y, w, h, format, type, 0);\r\n gl.bindBuffer(gl.PIXEL_PACK_BUFFER, null);\r\n\r\n const sync = gl.fenceSync(gl.SYNC_GPU_COMMANDS_COMPLETE, 0);\r\n if (!sync) {\r\n return null;\r\n }\r\n\r\n gl.flush();\r\n\r\n // eslint-disable-next-line github/no-then\r\n return this._clientWaitAsync(sync, 0, 10).then(() => {\r\n gl.deleteSync(sync);\r\n\r\n gl.bindBuffer(gl.PIXEL_PACK_BUFFER, buf);\r\n gl.getBufferSubData(gl.PIXEL_PACK_BUFFER, 0, outputBuffer);\r\n gl.bindBuffer(gl.PIXEL_PACK_BUFFER, null);\r\n gl.deleteBuffer(buf);\r\n\r\n return outputBuffer;\r\n });\r\n }\r\n\r\n public override dispose(): void {\r\n this.hideLoadingUI();\r\n\r\n // Rescale PP\r\n if (this._rescalePostProcess) {\r\n this._rescalePostProcess.dispose();\r\n }\r\n\r\n _CommonDispose(this, this._renderingCanvas);\r\n\r\n super.dispose();\r\n }\r\n}\r\n\r\n// #region GENERATED_SIDE_EFFECT_STUBS — do not edit, regenerate with `npm run generate:side-effect-stubs`\r\nimport { _MissingSideEffect } from \"../Misc/devTools\";\r\n\r\nEngine.prototype.createMultiviewRenderTargetTexture ??= _MissingSideEffect(\"Engine\", \"createMultiviewRenderTargetTexture\") as any;\r\nEngine.prototype.bindMultiviewFramebuffer ??= _MissingSideEffect(\"Engine\", \"bindMultiviewFramebuffer\") as any;\r\nEngine.prototype.bindSpaceWarpFramebuffer ??= _MissingSideEffect(\"Engine\", \"bindSpaceWarpFramebuffer\") as any;\r\nEngine.prototype.createTransformFeedback ??= _MissingSideEffect(\"Engine\", \"createTransformFeedback\") as any;\r\nEngine.prototype.deleteTransformFeedback ??= _MissingSideEffect(\"Engine\", \"deleteTransformFeedback\") as any;\r\nEngine.prototype.bindTransformFeedback ??= _MissingSideEffect(\"Engine\", \"bindTransformFeedback\") as any;\r\nEngine.prototype.beginTransformFeedback ??= _MissingSideEffect(\"Engine\", \"beginTransformFeedback\") as any;\r\nEngine.prototype.endTransformFeedback ??= _MissingSideEffect(\"Engine\", \"endTransformFeedback\") as any;\r\nEngine.prototype.setTranformFeedbackVaryings ??= _MissingSideEffect(\"Engine\", \"setTranformFeedbackVaryings\") as any;\r\nEngine.prototype.bindTransformFeedbackBuffer ??= _MissingSideEffect(\"Engine\", \"bindTransformFeedbackBuffer\") as any;\r\nEngine.prototype.readTransformFeedbackBuffer ??= _MissingSideEffect(\"Engine\", \"readTransformFeedbackBuffer\") as any;\r\n// #endregion GENERATED_SIDE_EFFECT_STUBS\r\n"]}
1
+ {"version":3,"file":"engine.pure.js","sourceRoot":"","sources":["../../../../dev/core/src/Engines/engine.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { type Nullable } from \"../types\";\r\nimport { type Scene } from \"../scene.pure\";\r\nimport { InternalTexture, InternalTextureSource } from \"../Materials/Textures/internalTexture\";\r\nimport { type ILoadingScreen } from \"../Loading/loadingScreen.pure\";\r\nimport { EngineStore } from \"./engineStore\";\r\nimport { type WebGLPipelineContext } from \"./WebGL/webGLPipelineContext\";\r\nimport { type IPipelineContext } from \"./IPipelineContext\";\r\nimport { type EngineOptions, ThinEngine } from \"./thinEngine.pure\";\r\nimport { Constants } from \"./constants\";\r\nimport { type IViewportLike, type IColor4Like } from \"../Maths/math.like\";\r\nimport { PerformanceMonitor } from \"../Misc/performanceMonitor\";\r\nimport { type DataBuffer } from \"../Buffers/dataBuffer\";\r\nimport { WebGLDataBuffer } from \"../Meshes/WebGL/webGLDataBuffer\";\r\nimport { Logger } from \"../Misc/logger\";\r\nimport { type RenderTargetWrapper } from \"./renderTargetWrapper\";\r\nimport { WebGLHardwareTexture } from \"./WebGL/webGLHardwareTexture\";\r\nimport { type WebGLRenderTargetWrapper } from \"./WebGL/webGLRenderTargetWrapper\";\r\n\r\nimport { type PostProcess } from \"../PostProcesses/postProcess.pure\";\r\nimport { AbstractEngine } from \"./abstractEngine.pure\";\r\nimport {\r\n CreateImageBitmapFromSource,\r\n ExitFullscreen,\r\n ExitPointerlock,\r\n GetFontOffset,\r\n RequestFullscreen,\r\n RequestPointerlock,\r\n ResizeImageBitmap,\r\n _CommonDispose,\r\n _CommonInit,\r\n} from \"./engine.common\";\r\nimport { PerfCounter } from \"../Misc/perfCounter\";\r\nimport { _RetryWithInterval } from \"core/Misc/timingTools\";\r\nimport { RegisterAbstractEngineDom } from \"./AbstractEngine/abstractEngine.dom.pure\";\r\nimport { RegisterAbstractEngineRenderPass } from \"./AbstractEngine/abstractEngine.renderPass.pure\";\r\n\r\n/**\r\n * The engine class is responsible for interfacing with all lower-level APIs such as WebGL and Audio\r\n */\r\nexport class Engine extends ThinEngine {\r\n // Const statics\r\n\r\n /** Defines that alpha blending is disabled */\r\n public static readonly ALPHA_DISABLE = Constants.ALPHA_DISABLE;\r\n /** Defines that alpha blending to SRC ALPHA * SRC + DEST */\r\n public static readonly ALPHA_ADD = Constants.ALPHA_ADD;\r\n /** Defines that alpha blending to SRC ALPHA * SRC + (1 - SRC ALPHA) * DEST */\r\n public static readonly ALPHA_COMBINE = Constants.ALPHA_COMBINE;\r\n /** Defines that alpha blending to DEST - SRC * DEST */\r\n public static readonly ALPHA_SUBTRACT = Constants.ALPHA_SUBTRACT;\r\n /** Defines that alpha blending to SRC * DEST */\r\n public static readonly ALPHA_MULTIPLY = Constants.ALPHA_MULTIPLY;\r\n /** Defines that alpha blending to SRC ALPHA * SRC + (1 - SRC) * DEST */\r\n public static readonly ALPHA_MAXIMIZED = Constants.ALPHA_MAXIMIZED;\r\n /** Defines that alpha blending to SRC + DEST */\r\n public static readonly ALPHA_ONEONE = Constants.ALPHA_ONEONE;\r\n /** Defines that alpha blending to SRC + (1 - SRC ALPHA) * DEST */\r\n public static readonly ALPHA_PREMULTIPLIED = Constants.ALPHA_PREMULTIPLIED;\r\n /**\r\n * Defines that alpha blending to SRC + (1 - SRC ALPHA) * DEST\r\n * Alpha will be set to (1 - SRC ALPHA) * DEST ALPHA\r\n */\r\n public static readonly ALPHA_PREMULTIPLIED_PORTERDUFF = Constants.ALPHA_PREMULTIPLIED_PORTERDUFF;\r\n /** Defines that alpha blending to CST * SRC + (1 - CST) * DEST */\r\n public static readonly ALPHA_INTERPOLATE = Constants.ALPHA_INTERPOLATE;\r\n /**\r\n * Defines that alpha blending to SRC + (1 - SRC) * DEST\r\n * Alpha will be set to SRC ALPHA + (1 - SRC ALPHA) * DEST ALPHA\r\n */\r\n public static readonly ALPHA_SCREENMODE = Constants.ALPHA_SCREENMODE;\r\n\r\n /** Defines that the resource is not delayed*/\r\n public static readonly DELAYLOADSTATE_NONE = Constants.DELAYLOADSTATE_NONE;\r\n /** Defines that the resource was successfully delay loaded */\r\n public static readonly DELAYLOADSTATE_LOADED = Constants.DELAYLOADSTATE_LOADED;\r\n /** Defines that the resource is currently delay loading */\r\n public static readonly DELAYLOADSTATE_LOADING = Constants.DELAYLOADSTATE_LOADING;\r\n /** Defines that the resource is delayed and has not started loading */\r\n public static readonly DELAYLOADSTATE_NOTLOADED = Constants.DELAYLOADSTATE_NOTLOADED;\r\n\r\n // Depht or Stencil test Constants.\r\n /** Passed to depthFunction or stencilFunction to specify depth or stencil tests will never pass. i.e. Nothing will be drawn */\r\n public static readonly NEVER = Constants.NEVER;\r\n /** Passed to depthFunction or stencilFunction to specify depth or stencil tests will always pass. i.e. Pixels will be drawn in the order they are drawn */\r\n public static readonly ALWAYS = Constants.ALWAYS;\r\n /** Passed to depthFunction or stencilFunction to specify depth or stencil tests will pass if the new depth value is less than the stored value */\r\n public static readonly LESS = Constants.LESS;\r\n /** Passed to depthFunction or stencilFunction to specify depth or stencil tests will pass if the new depth value is equals to the stored value */\r\n public static readonly EQUAL = Constants.EQUAL;\r\n /** Passed to depthFunction or stencilFunction to specify depth or stencil tests will pass if the new depth value is less than or equal to the stored value */\r\n public static readonly LEQUAL = Constants.LEQUAL;\r\n /** Passed to depthFunction or stencilFunction to specify depth or stencil tests will pass if the new depth value is greater than the stored value */\r\n public static readonly GREATER = Constants.GREATER;\r\n /** Passed to depthFunction or stencilFunction to specify depth or stencil tests will pass if the new depth value is greater than or equal to the stored value */\r\n public static readonly GEQUAL = Constants.GEQUAL;\r\n /** Passed to depthFunction or stencilFunction to specify depth or stencil tests will pass if the new depth value is not equal to the stored value */\r\n public static readonly NOTEQUAL = Constants.NOTEQUAL;\r\n\r\n // Stencil Actions Constants.\r\n /** Passed to stencilOperation to specify that stencil value must be kept */\r\n public static readonly KEEP = Constants.KEEP;\r\n /** Passed to stencilOperation to specify that stencil value must be replaced */\r\n public static readonly REPLACE = Constants.REPLACE;\r\n /** Passed to stencilOperation to specify that stencil value must be incremented */\r\n public static readonly INCR = Constants.INCR;\r\n /** Passed to stencilOperation to specify that stencil value must be decremented */\r\n public static readonly DECR = Constants.DECR;\r\n /** Passed to stencilOperation to specify that stencil value must be inverted */\r\n public static readonly INVERT = Constants.INVERT;\r\n /** Passed to stencilOperation to specify that stencil value must be incremented with wrapping */\r\n public static readonly INCR_WRAP = Constants.INCR_WRAP;\r\n /** Passed to stencilOperation to specify that stencil value must be decremented with wrapping */\r\n public static readonly DECR_WRAP = Constants.DECR_WRAP;\r\n\r\n /** Texture is not repeating outside of 0..1 UVs */\r\n public static readonly TEXTURE_CLAMP_ADDRESSMODE = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n /** Texture is repeating outside of 0..1 UVs */\r\n public static readonly TEXTURE_WRAP_ADDRESSMODE = Constants.TEXTURE_WRAP_ADDRESSMODE;\r\n /** Texture is repeating and mirrored */\r\n public static readonly TEXTURE_MIRROR_ADDRESSMODE = Constants.TEXTURE_MIRROR_ADDRESSMODE;\r\n\r\n /** ALPHA */\r\n public static readonly TEXTUREFORMAT_ALPHA = Constants.TEXTUREFORMAT_ALPHA;\r\n /** LUMINANCE */\r\n public static readonly TEXTUREFORMAT_LUMINANCE = Constants.TEXTUREFORMAT_LUMINANCE;\r\n /** LUMINANCE_ALPHA */\r\n public static readonly TEXTUREFORMAT_LUMINANCE_ALPHA = Constants.TEXTUREFORMAT_LUMINANCE_ALPHA;\r\n /** RGB */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public static readonly TEXTUREFORMAT_RGB = Constants.TEXTUREFORMAT_RGB;\r\n /** RGBA */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public static readonly TEXTUREFORMAT_RGBA = Constants.TEXTUREFORMAT_RGBA;\r\n /** RED */\r\n public static readonly TEXTUREFORMAT_RED = Constants.TEXTUREFORMAT_RED;\r\n /** RED (2nd reference) */\r\n public static readonly TEXTUREFORMAT_R = Constants.TEXTUREFORMAT_R;\r\n /** RED unsigned short normed to [0, 1] **/\r\n public static readonly TEXTUREFORMAT_R16_UNORM = Constants.TEXTUREFORMAT_R16_UNORM;\r\n /** RG unsigned short normed to [0, 1] **/\r\n public static readonly TEXTUREFORMAT_RG16_UNORM = Constants.TEXTUREFORMAT_RG16_UNORM;\r\n /** RGB unsigned short normed to [0, 1] **/\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public static readonly TEXTUREFORMAT_RGB16_UNORM = Constants.TEXTUREFORMAT_RGB16_UNORM;\r\n /** RGBA unsigned short normed to [0, 1] **/\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public static readonly TEXTUREFORMAT_RGBA16_UNORM = Constants.TEXTUREFORMAT_RGBA16_UNORM;\r\n /** RED signed short normed to [-1, 1] **/\r\n public static readonly TEXTUREFORMAT_R16_SNORM = Constants.TEXTUREFORMAT_R16_SNORM;\r\n /** RG signed short normed to [-1, 1] **/\r\n public static readonly TEXTUREFORMAT_RG16_SNORM = Constants.TEXTUREFORMAT_RG16_SNORM;\r\n /** RGB signed short normed to [-1, 1] **/\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public static readonly TEXTUREFORMAT_RGB16_SNORM = Constants.TEXTUREFORMAT_RGB16_SNORM;\r\n /** RGBA signed short normed to [-1, 1] **/\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public static readonly TEXTUREFORMAT_RGBA16_SNORM = Constants.TEXTUREFORMAT_RGBA16_SNORM;\r\n /** RG */\r\n public static readonly TEXTUREFORMAT_RG = Constants.TEXTUREFORMAT_RG;\r\n /** RED_INTEGER */\r\n public static readonly TEXTUREFORMAT_RED_INTEGER = Constants.TEXTUREFORMAT_RED_INTEGER;\r\n /** RED_INTEGER (2nd reference) */\r\n public static readonly TEXTUREFORMAT_R_INTEGER = Constants.TEXTUREFORMAT_R_INTEGER;\r\n /** RG_INTEGER */\r\n public static readonly TEXTUREFORMAT_RG_INTEGER = Constants.TEXTUREFORMAT_RG_INTEGER;\r\n /** RGB_INTEGER */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public static readonly TEXTUREFORMAT_RGB_INTEGER = Constants.TEXTUREFORMAT_RGB_INTEGER;\r\n /** RGBA_INTEGER */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public static readonly TEXTUREFORMAT_RGBA_INTEGER = Constants.TEXTUREFORMAT_RGBA_INTEGER;\r\n\r\n /** UNSIGNED_BYTE */\r\n public static readonly TEXTURETYPE_UNSIGNED_BYTE = Constants.TEXTURETYPE_UNSIGNED_BYTE;\r\n /** @deprecated use more explicit TEXTURETYPE_UNSIGNED_BYTE instead. Use TEXTURETYPE_UNSIGNED_INTEGER for 32bits values.*/\r\n public static readonly TEXTURETYPE_UNSIGNED_INT = Constants.TEXTURETYPE_UNSIGNED_INT;\r\n /** FLOAT */\r\n public static readonly TEXTURETYPE_FLOAT = Constants.TEXTURETYPE_FLOAT;\r\n /** HALF_FLOAT */\r\n public static readonly TEXTURETYPE_HALF_FLOAT = Constants.TEXTURETYPE_HALF_FLOAT;\r\n /** BYTE */\r\n public static readonly TEXTURETYPE_BYTE = Constants.TEXTURETYPE_BYTE;\r\n /** SHORT */\r\n public static readonly TEXTURETYPE_SHORT = Constants.TEXTURETYPE_SHORT;\r\n /** UNSIGNED_SHORT */\r\n public static readonly TEXTURETYPE_UNSIGNED_SHORT = Constants.TEXTURETYPE_UNSIGNED_SHORT;\r\n /** INT */\r\n public static readonly TEXTURETYPE_INT = Constants.TEXTURETYPE_INT;\r\n /** UNSIGNED_INT */\r\n public static readonly TEXTURETYPE_UNSIGNED_INTEGER = Constants.TEXTURETYPE_UNSIGNED_INTEGER;\r\n /** UNSIGNED_SHORT_4_4_4_4 */\r\n public static readonly TEXTURETYPE_UNSIGNED_SHORT_4_4_4_4 = Constants.TEXTURETYPE_UNSIGNED_SHORT_4_4_4_4;\r\n /** UNSIGNED_SHORT_5_5_5_1 */\r\n public static readonly TEXTURETYPE_UNSIGNED_SHORT_5_5_5_1 = Constants.TEXTURETYPE_UNSIGNED_SHORT_5_5_5_1;\r\n /** UNSIGNED_SHORT_5_6_5 */\r\n public static readonly TEXTURETYPE_UNSIGNED_SHORT_5_6_5 = Constants.TEXTURETYPE_UNSIGNED_SHORT_5_6_5;\r\n /** UNSIGNED_INT_2_10_10_10_REV */\r\n public static readonly TEXTURETYPE_UNSIGNED_INT_2_10_10_10_REV = Constants.TEXTURETYPE_UNSIGNED_INT_2_10_10_10_REV;\r\n /** UNSIGNED_INT_24_8 */\r\n public static readonly TEXTURETYPE_UNSIGNED_INT_24_8 = Constants.TEXTURETYPE_UNSIGNED_INT_24_8;\r\n /** UNSIGNED_INT_10F_11F_11F_REV */\r\n public static readonly TEXTURETYPE_UNSIGNED_INT_10F_11F_11F_REV = Constants.TEXTURETYPE_UNSIGNED_INT_10F_11F_11F_REV;\r\n /** UNSIGNED_INT_5_9_9_9_REV */\r\n public static readonly TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV = Constants.TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV;\r\n /** FLOAT_32_UNSIGNED_INT_24_8_REV */\r\n public static readonly TEXTURETYPE_FLOAT_32_UNSIGNED_INT_24_8_REV = Constants.TEXTURETYPE_FLOAT_32_UNSIGNED_INT_24_8_REV;\r\n\r\n /** nearest is mag = nearest and min = nearest and mip = none */\r\n public static readonly TEXTURE_NEAREST_SAMPLINGMODE = Constants.TEXTURE_NEAREST_SAMPLINGMODE;\r\n /** Bilinear is mag = linear and min = linear and mip = nearest */\r\n public static readonly TEXTURE_BILINEAR_SAMPLINGMODE = Constants.TEXTURE_BILINEAR_SAMPLINGMODE;\r\n /** Trilinear is mag = linear and min = linear and mip = linear */\r\n public static readonly TEXTURE_TRILINEAR_SAMPLINGMODE = Constants.TEXTURE_TRILINEAR_SAMPLINGMODE;\r\n /** nearest is mag = nearest and min = nearest and mip = linear */\r\n public static readonly TEXTURE_NEAREST_NEAREST_MIPLINEAR = Constants.TEXTURE_NEAREST_NEAREST_MIPLINEAR;\r\n /** Bilinear is mag = linear and min = linear and mip = nearest */\r\n public static readonly TEXTURE_LINEAR_LINEAR_MIPNEAREST = Constants.TEXTURE_LINEAR_LINEAR_MIPNEAREST;\r\n /** Trilinear is mag = linear and min = linear and mip = linear */\r\n public static readonly TEXTURE_LINEAR_LINEAR_MIPLINEAR = Constants.TEXTURE_LINEAR_LINEAR_MIPLINEAR;\r\n /** mag = nearest and min = nearest and mip = nearest */\r\n public static readonly TEXTURE_NEAREST_NEAREST_MIPNEAREST = Constants.TEXTURE_NEAREST_NEAREST_MIPNEAREST;\r\n /** mag = nearest and min = linear and mip = nearest */\r\n public static readonly TEXTURE_NEAREST_LINEAR_MIPNEAREST = Constants.TEXTURE_NEAREST_LINEAR_MIPNEAREST;\r\n /** mag = nearest and min = linear and mip = linear */\r\n public static readonly TEXTURE_NEAREST_LINEAR_MIPLINEAR = Constants.TEXTURE_NEAREST_LINEAR_MIPLINEAR;\r\n /** mag = nearest and min = linear and mip = none */\r\n public static readonly TEXTURE_NEAREST_LINEAR = Constants.TEXTURE_NEAREST_LINEAR;\r\n /** mag = nearest and min = nearest and mip = none */\r\n public static readonly TEXTURE_NEAREST_NEAREST = Constants.TEXTURE_NEAREST_NEAREST;\r\n /** mag = linear and min = nearest and mip = nearest */\r\n public static readonly TEXTURE_LINEAR_NEAREST_MIPNEAREST = Constants.TEXTURE_LINEAR_NEAREST_MIPNEAREST;\r\n /** mag = linear and min = nearest and mip = linear */\r\n public static readonly TEXTURE_LINEAR_NEAREST_MIPLINEAR = Constants.TEXTURE_LINEAR_NEAREST_MIPLINEAR;\r\n /** mag = linear and min = linear and mip = none */\r\n public static readonly TEXTURE_LINEAR_LINEAR = Constants.TEXTURE_LINEAR_LINEAR;\r\n /** mag = linear and min = nearest and mip = none */\r\n public static readonly TEXTURE_LINEAR_NEAREST = Constants.TEXTURE_LINEAR_NEAREST;\r\n\r\n /** Explicit coordinates mode */\r\n public static readonly TEXTURE_EXPLICIT_MODE = Constants.TEXTURE_EXPLICIT_MODE;\r\n /** Spherical coordinates mode */\r\n public static readonly TEXTURE_SPHERICAL_MODE = Constants.TEXTURE_SPHERICAL_MODE;\r\n /** Planar coordinates mode */\r\n public static readonly TEXTURE_PLANAR_MODE = Constants.TEXTURE_PLANAR_MODE;\r\n /** Cubic coordinates mode */\r\n public static readonly TEXTURE_CUBIC_MODE = Constants.TEXTURE_CUBIC_MODE;\r\n /** Projection coordinates mode */\r\n public static readonly TEXTURE_PROJECTION_MODE = Constants.TEXTURE_PROJECTION_MODE;\r\n /** Skybox coordinates mode */\r\n public static readonly TEXTURE_SKYBOX_MODE = Constants.TEXTURE_SKYBOX_MODE;\r\n /** Inverse Cubic coordinates mode */\r\n public static readonly TEXTURE_INVCUBIC_MODE = Constants.TEXTURE_INVCUBIC_MODE;\r\n /** Equirectangular coordinates mode */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public static readonly TEXTURE_EQUIRECTANGULAR_MODE = Constants.TEXTURE_EQUIRECTANGULAR_MODE;\r\n /** Equirectangular Fixed coordinates mode */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public static readonly TEXTURE_FIXED_EQUIRECTANGULAR_MODE = Constants.TEXTURE_FIXED_EQUIRECTANGULAR_MODE;\r\n /** Equirectangular Fixed Mirrored coordinates mode */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public static readonly TEXTURE_FIXED_EQUIRECTANGULAR_MIRRORED_MODE = Constants.TEXTURE_FIXED_EQUIRECTANGULAR_MIRRORED_MODE;\r\n\r\n // Texture rescaling mode\r\n /** Defines that texture rescaling will use a floor to find the closer power of 2 size */\r\n public static readonly SCALEMODE_FLOOR = Constants.SCALEMODE_FLOOR;\r\n /** Defines that texture rescaling will look for the nearest power of 2 size */\r\n public static readonly SCALEMODE_NEAREST = Constants.SCALEMODE_NEAREST;\r\n /** Defines that texture rescaling will use a ceil to find the closer power of 2 size */\r\n public static readonly SCALEMODE_CEILING = Constants.SCALEMODE_CEILING;\r\n\r\n /**\r\n * Returns the current npm package of the sdk\r\n */\r\n // Not mixed with Version for tooling purpose.\r\n public static override get NpmPackage(): string {\r\n return AbstractEngine.NpmPackage;\r\n }\r\n\r\n /**\r\n * Returns the current version of the framework\r\n */\r\n public static override get Version(): string {\r\n return AbstractEngine.Version;\r\n }\r\n\r\n /** Gets the list of created engines */\r\n public static get Instances(): AbstractEngine[] {\r\n return EngineStore.Instances;\r\n }\r\n\r\n /**\r\n * Gets the latest created engine\r\n */\r\n public static get LastCreatedEngine(): Nullable<AbstractEngine> {\r\n return EngineStore.LastCreatedEngine;\r\n }\r\n\r\n /**\r\n * Gets the latest created scene\r\n */\r\n public static get LastCreatedScene(): Nullable<Scene> {\r\n return EngineStore.LastCreatedScene;\r\n }\r\n\r\n /** @internal */\r\n\r\n // eslint-disable-next-line jsdoc/require-returns-check\r\n /**\r\n * Method called to create the default loading screen.\r\n * This can be overridden in your own app.\r\n * @param canvas The rendering canvas element\r\n * @returns The loading screen\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public static override DefaultLoadingScreenFactory(canvas: HTMLCanvasElement): ILoadingScreen {\r\n return AbstractEngine.DefaultLoadingScreenFactory(canvas);\r\n }\r\n\r\n // Members\r\n\r\n private _rescalePostProcess: Nullable<PostProcess>;\r\n\r\n protected override get _supportsHardwareTextureRescaling() {\r\n return !!Engine._RescalePostProcessFactory;\r\n }\r\n\r\n private _measureFps(): void {\r\n this._performanceMonitor.sampleFrame();\r\n this._fps = this._performanceMonitor.averageFPS;\r\n this._deltaTime = this._performanceMonitor.instantaneousFrameTime || 0;\r\n }\r\n\r\n private _performanceMonitor = new PerformanceMonitor();\r\n /**\r\n * Gets the performance monitor attached to this engine\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/scene/optimize_your_scene#engineinstrumentation\r\n */\r\n public override get performanceMonitor(): PerformanceMonitor {\r\n return this._performanceMonitor;\r\n }\r\n\r\n // Events\r\n\r\n /**\r\n * Creates a new engine\r\n * @param canvasOrContext defines the canvas or WebGL context to use for rendering. If you provide a WebGL context, Babylon.js will not hook events on the canvas (like pointers, keyboards, etc...) so no event observables will be available. This is mostly used when Babylon.js is used as a plugin on a system which already used the WebGL context\r\n * @param antialias defines enable antialiasing (default: false)\r\n * @param options defines further options to be sent to the getContext() function\r\n * @param adaptToDeviceRatio defines whether to adapt to the device's viewport characteristics (default: false)\r\n */\r\n constructor(\r\n canvasOrContext: Nullable<HTMLCanvasElement | OffscreenCanvas | WebGLRenderingContext | WebGL2RenderingContext>,\r\n antialias?: boolean,\r\n options?: EngineOptions,\r\n adaptToDeviceRatio: boolean = false\r\n ) {\r\n RegisterAbstractEngineDom();\r\n RegisterAbstractEngineRenderPass();\r\n super(canvasOrContext, antialias, options, adaptToDeviceRatio);\r\n\r\n this._drawCalls = new PerfCounter();\r\n\r\n if (!canvasOrContext) {\r\n return;\r\n }\r\n\r\n this._features.supportRenderPasses = true;\r\n }\r\n\r\n protected override _initGLContext(): void {\r\n super._initGLContext();\r\n\r\n this._rescalePostProcess = null;\r\n }\r\n\r\n /**\r\n * Shared initialization across engines types.\r\n * @param canvas The canvas associated with this instance of the engine.\r\n */\r\n protected override _sharedInit(canvas: HTMLCanvasElement) {\r\n super._sharedInit(canvas);\r\n\r\n _CommonInit(this, canvas, this._creationOptions);\r\n }\r\n\r\n /**\r\n * Resize an image and returns the image data as an uint8array\r\n * @param image image to resize\r\n * @param bufferWidth destination buffer width\r\n * @param bufferHeight destination buffer height\r\n * @returns an uint8array containing RGBA values of bufferWidth * bufferHeight size\r\n */\r\n public override resizeImageBitmap(image: HTMLImageElement | ImageBitmap, bufferWidth: number, bufferHeight: number): Uint8Array {\r\n return ResizeImageBitmap(this, image, bufferWidth, bufferHeight);\r\n }\r\n\r\n /**\r\n * Engine abstraction for loading and creating an image bitmap from a given source string.\r\n * @param imageSource source to load the image from.\r\n * @param options An object that sets options for the image's extraction.\r\n * @returns ImageBitmap\r\n */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public override async _createImageBitmapFromSource(imageSource: string, options?: ImageBitmapOptions): Promise<ImageBitmap> {\r\n return await CreateImageBitmapFromSource(this, imageSource, options);\r\n }\r\n\r\n /**\r\n * Toggle full screen mode\r\n * @param requestPointerLock defines if a pointer lock should be requested from the user\r\n */\r\n public override switchFullscreen(requestPointerLock: boolean): void {\r\n if (this.isFullscreen) {\r\n this.exitFullscreen();\r\n } else {\r\n this.enterFullscreen(requestPointerLock);\r\n }\r\n }\r\n\r\n /**\r\n * Enters full screen mode\r\n * @param requestPointerLock defines if a pointer lock should be requested from the user\r\n */\r\n public override enterFullscreen(requestPointerLock: boolean): void {\r\n if (!this.isFullscreen) {\r\n this._pointerLockRequested = requestPointerLock;\r\n if (this._renderingCanvas) {\r\n RequestFullscreen(this._renderingCanvas);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Exits full screen mode\r\n */\r\n public override exitFullscreen(): void {\r\n if (this.isFullscreen) {\r\n ExitFullscreen();\r\n }\r\n }\r\n\r\n /** States */\r\n\r\n /**\r\n * Sets a boolean indicating if the dithering state is enabled or disabled\r\n * @param value defines the dithering state\r\n */\r\n public setDitheringState(value: boolean): void {\r\n if (value) {\r\n this._gl.enable(this._gl.DITHER);\r\n } else {\r\n this._gl.disable(this._gl.DITHER);\r\n }\r\n }\r\n\r\n /**\r\n * Sets a boolean indicating if the rasterizer state is enabled or disabled\r\n * @param value defines the rasterizer state\r\n */\r\n public setRasterizerState(value: boolean): void {\r\n if (value) {\r\n this._gl.disable(this._gl.RASTERIZER_DISCARD);\r\n } else {\r\n this._gl.enable(this._gl.RASTERIZER_DISCARD);\r\n }\r\n }\r\n\r\n /**\r\n * Directly set the WebGL Viewport\r\n * @param x defines the x coordinate of the viewport (in screen space)\r\n * @param y defines the y coordinate of the viewport (in screen space)\r\n * @param width defines the width of the viewport (in screen space)\r\n * @param height defines the height of the viewport (in screen space)\r\n * @returns the current viewport Object (if any) that is being replaced by this call. You can restore this viewport later on to go back to the original state\r\n */\r\n public setDirectViewport(x: number, y: number, width: number, height: number): Nullable<IViewportLike> {\r\n const currentViewport = this._cachedViewport;\r\n this._cachedViewport = null;\r\n\r\n this._viewport(x, y, width, height);\r\n\r\n return currentViewport;\r\n }\r\n\r\n /**\r\n * Executes a scissor clear (ie. a clear on a specific portion of the screen)\r\n * @param x defines the x-coordinate of the bottom left corner of the clear rectangle\r\n * @param y defines the y-coordinate of the corner of the clear rectangle\r\n * @param width defines the width of the clear rectangle\r\n * @param height defines the height of the clear rectangle\r\n * @param clearColor defines the clear color\r\n */\r\n public scissorClear(x: number, y: number, width: number, height: number, clearColor: IColor4Like): void {\r\n this.enableScissor(x, y, width, height);\r\n this.clear(clearColor, true, true, true);\r\n this.disableScissor();\r\n }\r\n\r\n /**\r\n * Gets the source code of the vertex shader associated with a specific webGL program\r\n * @param program defines the program to use\r\n * @returns a string containing the source code of the vertex shader associated with the program\r\n */\r\n public getVertexShaderSource(program: WebGLProgram): Nullable<string> {\r\n const shaders = this._gl.getAttachedShaders(program);\r\n\r\n if (!shaders) {\r\n return null;\r\n }\r\n\r\n return this._gl.getShaderSource(shaders[0]);\r\n }\r\n\r\n /**\r\n * Gets the source code of the fragment shader associated with a specific webGL program\r\n * @param program defines the program to use\r\n * @returns a string containing the source code of the fragment shader associated with the program\r\n */\r\n public getFragmentShaderSource(program: WebGLProgram): Nullable<string> {\r\n const shaders = this._gl.getAttachedShaders(program);\r\n\r\n if (!shaders) {\r\n return null;\r\n }\r\n\r\n return this._gl.getShaderSource(shaders[1]);\r\n }\r\n\r\n /**\r\n * sets the object from which width and height will be taken from when getting render width and height\r\n * Will fallback to the gl object\r\n * @param dimensions the framebuffer width and height that will be used.\r\n */\r\n public override set framebufferDimensionsObject(dimensions: Nullable<{ framebufferWidth: number; framebufferHeight: number }>) {\r\n this._framebufferDimensionsObject = dimensions;\r\n if (this._framebufferDimensionsObject) {\r\n this.onResizeObservable.notifyObservers(this);\r\n }\r\n }\r\n\r\n protected override _rebuildBuffers(): void {\r\n // Index / Vertex\r\n for (const scene of this.scenes) {\r\n scene.resetCachedMaterial();\r\n scene._rebuildGeometries();\r\n }\r\n\r\n for (const scene of this._virtualScenes) {\r\n scene.resetCachedMaterial();\r\n scene._rebuildGeometries();\r\n }\r\n\r\n super._rebuildBuffers();\r\n }\r\n\r\n /**\r\n * Get Font size information\r\n * @param font font name\r\n * @returns an object containing ascent, height and descent\r\n */\r\n public override getFontOffset(font: string): { ascent: number; height: number; descent: number } {\r\n return GetFontOffset(font);\r\n }\r\n\r\n /**\r\n * Enters Pointerlock mode\r\n */\r\n public enterPointerlock(): void {\r\n if (this._renderingCanvas) {\r\n RequestPointerlock(this._renderingCanvas);\r\n }\r\n }\r\n\r\n /**\r\n * Exits Pointerlock mode\r\n */\r\n public exitPointerlock(): void {\r\n ExitPointerlock();\r\n }\r\n\r\n /**\r\n * Begin a new frame\r\n */\r\n public override beginFrame(): void {\r\n this._measureFps();\r\n super.beginFrame();\r\n }\r\n\r\n public override _deletePipelineContext(pipelineContext: IPipelineContext): void {\r\n const webGLPipelineContext = pipelineContext as WebGLPipelineContext;\r\n if (webGLPipelineContext && webGLPipelineContext.program) {\r\n if (webGLPipelineContext.transformFeedback) {\r\n this.deleteTransformFeedback(webGLPipelineContext.transformFeedback);\r\n webGLPipelineContext.transformFeedback = null;\r\n }\r\n }\r\n super._deletePipelineContext(pipelineContext);\r\n }\r\n\r\n public override createShaderProgram(\r\n pipelineContext: IPipelineContext,\r\n vertexCode: string,\r\n fragmentCode: string,\r\n defines: Nullable<string>,\r\n context?: WebGLRenderingContext,\r\n transformFeedbackVaryings: Nullable<string[]> = null\r\n ): WebGLProgram {\r\n context = context || this._gl;\r\n\r\n this.onBeforeShaderCompilationObservable.notifyObservers(this);\r\n\r\n const program = super.createShaderProgram(pipelineContext, vertexCode, fragmentCode, defines, context, transformFeedbackVaryings);\r\n this.onAfterShaderCompilationObservable.notifyObservers(this);\r\n\r\n return program;\r\n }\r\n\r\n protected override _createShaderProgram(\r\n pipelineContext: WebGLPipelineContext,\r\n vertexShader: WebGLShader,\r\n fragmentShader: WebGLShader,\r\n context: WebGLRenderingContext,\r\n transformFeedbackVaryings: Nullable<string[]> = null\r\n ): WebGLProgram {\r\n const shaderProgram = context.createProgram();\r\n pipelineContext.program = shaderProgram;\r\n\r\n if (!shaderProgram) {\r\n throw new Error(\"Unable to create program\");\r\n }\r\n\r\n context.attachShader(shaderProgram, vertexShader);\r\n context.attachShader(shaderProgram, fragmentShader);\r\n\r\n if (this.webGLVersion > 1 && transformFeedbackVaryings) {\r\n const transformFeedback = this.createTransformFeedback();\r\n\r\n this.bindTransformFeedback(transformFeedback);\r\n this.setTranformFeedbackVaryings(shaderProgram, transformFeedbackVaryings);\r\n pipelineContext.transformFeedback = transformFeedback;\r\n }\r\n\r\n context.linkProgram(shaderProgram);\r\n\r\n if (this.webGLVersion > 1 && transformFeedbackVaryings) {\r\n this.bindTransformFeedback(null);\r\n }\r\n\r\n pipelineContext.context = context;\r\n pipelineContext.vertexShader = vertexShader;\r\n pipelineContext.fragmentShader = fragmentShader;\r\n\r\n if (!pipelineContext.isParallelCompiled) {\r\n this._finalizePipelineContext(pipelineContext);\r\n }\r\n\r\n return shaderProgram;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _releaseTexture(texture: InternalTexture): void {\r\n super._releaseTexture(texture);\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _releaseRenderTargetWrapper(rtWrapper: RenderTargetWrapper): void {\r\n super._releaseRenderTargetWrapper(rtWrapper);\r\n\r\n // Set output texture of post process to null if the framebuffer has been released/disposed\r\n for (const scene of this.scenes) {\r\n for (const postProcess of scene.postProcesses) {\r\n if (postProcess._outputTexture === rtWrapper) {\r\n postProcess._outputTexture = null;\r\n }\r\n }\r\n for (const camera of scene.cameras) {\r\n for (const postProcess of camera._postProcesses) {\r\n if (postProcess) {\r\n if (postProcess._outputTexture === rtWrapper) {\r\n postProcess._outputTexture = null;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n * Rescales a texture\r\n * @param source input texture\r\n * @param destination destination texture\r\n * @param scene scene to use to render the resize\r\n * @param internalFormat format to use when resizing\r\n * @param onComplete callback to be called when resize has completed\r\n */\r\n public override _rescaleTexture(source: InternalTexture, destination: InternalTexture, scene: Nullable<any>, internalFormat: number, onComplete: () => void): void {\r\n this._gl.texParameteri(this._gl.TEXTURE_2D, this._gl.TEXTURE_MAG_FILTER, this._gl.LINEAR);\r\n this._gl.texParameteri(this._gl.TEXTURE_2D, this._gl.TEXTURE_MIN_FILTER, this._gl.LINEAR);\r\n this._gl.texParameteri(this._gl.TEXTURE_2D, this._gl.TEXTURE_WRAP_S, this._gl.CLAMP_TO_EDGE);\r\n this._gl.texParameteri(this._gl.TEXTURE_2D, this._gl.TEXTURE_WRAP_T, this._gl.CLAMP_TO_EDGE);\r\n\r\n const rtt = this.createRenderTargetTexture(\r\n {\r\n width: destination.width,\r\n height: destination.height,\r\n },\r\n {\r\n generateMipMaps: false,\r\n type: Constants.TEXTURETYPE_UNSIGNED_INT,\r\n samplingMode: Constants.TEXTURE_BILINEAR_SAMPLINGMODE,\r\n generateDepthBuffer: false,\r\n generateStencilBuffer: false,\r\n }\r\n );\r\n\r\n if (!this._rescalePostProcess && Engine._RescalePostProcessFactory) {\r\n this._rescalePostProcess = Engine._RescalePostProcessFactory(this);\r\n }\r\n\r\n if (this._rescalePostProcess) {\r\n this._rescalePostProcess.externalTextureSamplerBinding = true;\r\n const onCompiled = () => {\r\n this._rescalePostProcess!.onApply = function (effect) {\r\n effect._bindTexture(\"textureSampler\", source);\r\n };\r\n\r\n let hostingScene: Scene = scene;\r\n\r\n if (!hostingScene) {\r\n hostingScene = this.scenes[this.scenes.length - 1];\r\n }\r\n hostingScene.postProcessManager.directRender([this._rescalePostProcess!], rtt, true);\r\n\r\n this._bindTextureDirectly(this._gl.TEXTURE_2D, destination, true);\r\n this._gl.copyTexImage2D(this._gl.TEXTURE_2D, 0, internalFormat, 0, 0, destination.width, destination.height, 0);\r\n\r\n this.unBindFramebuffer(rtt);\r\n rtt.dispose();\r\n\r\n if (onComplete) {\r\n onComplete();\r\n }\r\n };\r\n const effect = this._rescalePostProcess.getEffect();\r\n if (effect) {\r\n effect.executeWhenCompiled(onCompiled);\r\n } else {\r\n this._rescalePostProcess.onEffectCreatedObservable.addOnce((effect) => {\r\n effect.executeWhenCompiled(onCompiled);\r\n });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Wraps an external web gl texture in a Babylon texture.\r\n * @param texture defines the external texture\r\n * @param hasMipMaps defines whether the external texture has mip maps (default: false)\r\n * @param samplingMode defines the sampling mode for the external texture (default: Constants.TEXTURE_TRILINEAR_SAMPLINGMODE)\r\n * @param width defines the width for the external texture (default: 0)\r\n * @param height defines the height for the external texture (default: 0)\r\n * @returns the babylon internal texture\r\n */\r\n public wrapWebGLTexture(\r\n texture: WebGLTexture,\r\n hasMipMaps: boolean = false,\r\n samplingMode: number = Constants.TEXTURE_TRILINEAR_SAMPLINGMODE,\r\n width: number = 0,\r\n height: number = 0\r\n ): InternalTexture {\r\n const hardwareTexture = new WebGLHardwareTexture(texture, this._gl);\r\n const internalTexture = new InternalTexture(this, InternalTextureSource.External, true);\r\n internalTexture._hardwareTexture = hardwareTexture;\r\n internalTexture.baseWidth = width;\r\n internalTexture.baseHeight = height;\r\n internalTexture.width = width;\r\n internalTexture.height = height;\r\n internalTexture.isReady = true;\r\n internalTexture.useMipMaps = hasMipMaps;\r\n this.updateTextureSamplingMode(samplingMode, internalTexture);\r\n return internalTexture;\r\n }\r\n\r\n /**\r\n * Replaces the underlying WebGL handle of a texture previously created via {@link wrapWebGLTexture}, preserving\r\n * the InternalTexture identity.\r\n *\r\n * Intended for the context-loss / context-restored flow: when the host application recreates its external resource\r\n * on the new WebGL context, it calls this method to repoint Babylon's wrapper at the new handle without losing\r\n * references held by materials, render-target wrappers, particle systems, etc.\r\n *\r\n * The new handle must describe a texture with the same dimensions the wrapped texture was created with. A WebGL\r\n * handle is opaque (the dimensions can't be introspected), so we can't validate this -- passing a mismatched\r\n * handle is undefined behaviour. Sampling mode and mip-map flag are properties of the logical wrapped texture and\r\n * are re-applied to the new resource. Any render-target wrapper holding this texture as its color attachment has\r\n * its framebuffer rebuilt with the new handle (including a fresh depth/stencil renderbuffer, since the old one\r\n * came from the dead context). If the wrapper is multisampled, the MSAA framebuffer + color renderbuffer + MSAA\r\n * depth/stencil buffer are rebuilt too.\r\n *\r\n * Throws if the target was not produced by {@link wrapWebGLTexture}, if the wrapped texture is part of a multi\r\n * render-target wrapper, or if the wrapper has a depth/stencil texture (these are not supported in this version;\r\n * dispose and re-wrap).\r\n * @param internalTexture defines the wrapped InternalTexture to repoint\r\n * @param texture defines the new WebGL handle to wrap\r\n */\r\n public updateWrappedWebGLTexture(internalTexture: InternalTexture, texture: WebGLTexture): void {\r\n if (internalTexture.source !== InternalTextureSource.External) {\r\n throw new Error(\"updateWrappedWebGLTexture: target InternalTexture was not produced by wrapWebGLTexture.\");\r\n }\r\n\r\n // Pre-validate before mutating any state so a thrown precondition leaves the InternalTexture untouched.\r\n // Note: rtWrapper.texture only returns _textures[0]; walk every attachment to catch the multi-RT case where\r\n // the wrapped texture is at index > 0.\r\n for (const rtWrapper of this._renderTargetWrapperCache) {\r\n if (!rtWrapper.textures?.includes(internalTexture)) {\r\n continue;\r\n }\r\n if (rtWrapper.isMulti) {\r\n throw new Error(\"updateWrappedWebGLTexture: wrapped texture is part of a multi render-target; not supported. Dispose and re-wrap.\");\r\n }\r\n if (rtWrapper._depthStencilTexture) {\r\n // The depth/stencil texture's GL handle was also lost on context restore. Rebuilding it from the\r\n // wrapper's stored depth settings + re-attaching is feasible but non-trivial; v1 rejects and asks\r\n // the caller to dispose + re-wrap (which also recreates the depth/stencil texture via the public API).\r\n throw new Error(\"updateWrappedWebGLTexture: wrapped texture's render-target wrapper has a depth/stencil texture; not supported. Dispose and re-wrap.\");\r\n }\r\n }\r\n\r\n internalTexture._hardwareTexture = new WebGLHardwareTexture(texture, this._gl);\r\n internalTexture.isReady = true;\r\n\r\n // The new GL texture has default sampler state; clear the per-InternalTexture cached sampler params so the\r\n // next _setTexture re-applies them, then drop any binding-cache slot pointing at this InternalTexture so the\r\n // identity short-circuit (this._boundTexturesCache[channel] === internalTexture) doesn't skip the rebind.\r\n internalTexture._cachedCoordinatesMode = null;\r\n internalTexture._cachedWrapU = null;\r\n internalTexture._cachedWrapV = null;\r\n internalTexture._cachedWrapR = null;\r\n internalTexture._cachedAnisotropicFilteringLevel = null;\r\n for (const key in this._boundTexturesCache) {\r\n if (this._boundTexturesCache[key] === internalTexture) {\r\n this._boundTexturesCache[key] = null;\r\n }\r\n }\r\n\r\n this.updateTextureSamplingMode(internalTexture.samplingMode, internalTexture);\r\n\r\n // Rebuild the framebuffer of any render-target wrapper holding this wrapped texture as its color attachment.\r\n // After a context-loss / restore cycle the GL framebuffer + depth/stencil renderbuffer came from the dead\r\n // context; the consumer-supplied new texture is the moment we have a fresh handle to rebuild against.\r\n const gl = this._gl;\r\n for (const rtWrapper of this._renderTargetWrapperCache) {\r\n if (rtWrapper.texture !== internalTexture) {\r\n continue;\r\n }\r\n const webGLRtWrapper = rtWrapper as WebGLRenderTargetWrapper;\r\n const savedSamples = rtWrapper.samples;\r\n const isMSAA = savedSamples > 1;\r\n\r\n if (webGLRtWrapper._framebuffer) {\r\n gl.deleteFramebuffer(webGLRtWrapper._framebuffer);\r\n }\r\n if (!isMSAA && webGLRtWrapper._depthStencilBuffer) {\r\n gl.deleteRenderbuffer(webGLRtWrapper._depthStencilBuffer);\r\n webGLRtWrapper._depthStencilBuffer = null;\r\n }\r\n\r\n const previousFramebuffer = this._currentFramebuffer;\r\n const framebuffer = gl.createFramebuffer();\r\n this._bindUnboundFramebuffer(framebuffer);\r\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\r\n if (!isMSAA) {\r\n webGLRtWrapper._depthStencilBuffer = this._setupFramebufferDepthAttachments(\r\n rtWrapper._generateStencilBuffer,\r\n rtWrapper._generateDepthBuffer,\r\n rtWrapper.width,\r\n rtWrapper.height\r\n );\r\n }\r\n this._bindUnboundFramebuffer(previousFramebuffer);\r\n webGLRtWrapper._framebuffer = framebuffer;\r\n\r\n if (isMSAA) {\r\n // Defer MSAA framebuffer + color renderbuffer + multisampled depth/stencil rebuild to the existing\r\n // helper. The helper early-returns when samples matches the cached value, so zero the cache first\r\n // to force the work; updateRenderTargetTextureSampleCount restores _samples to savedSamples.\r\n rtWrapper._samples = 1;\r\n this.updateRenderTargetTextureSampleCount(webGLRtWrapper, savedSamples);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _uploadImageToTexture(texture: InternalTexture, image: HTMLImageElement | ImageBitmap, faceIndex: number = 0, lod: number = 0) {\r\n const gl = this._gl;\r\n\r\n const textureType = this._getWebGLTextureType(texture.type);\r\n const format = this._getInternalFormat(texture.format);\r\n const internalFormat = this._getRGBABufferInternalSizedFormat(texture.type, format);\r\n\r\n const bindTarget = texture.isCube ? gl.TEXTURE_CUBE_MAP : gl.TEXTURE_2D;\r\n\r\n this._bindTextureDirectly(bindTarget, texture, true);\r\n this._unpackFlipY(texture.invertY);\r\n\r\n let target: GLenum = gl.TEXTURE_2D;\r\n if (texture.isCube) {\r\n target = gl.TEXTURE_CUBE_MAP_POSITIVE_X + faceIndex;\r\n }\r\n\r\n gl.texImage2D(target, lod, internalFormat, format, textureType, image);\r\n this._bindTextureDirectly(bindTarget, null, true);\r\n }\r\n\r\n /**\r\n * Updates a depth texture Comparison Mode and Function.\r\n * If the comparison Function is equal to 0, the mode will be set to none.\r\n * Otherwise, this only works in webgl 2 and requires a shadow sampler in the shader.\r\n * @param texture The texture to set the comparison function for\r\n * @param comparisonFunction The comparison function to set, 0 if no comparison required\r\n */\r\n public updateTextureComparisonFunction(texture: InternalTexture, comparisonFunction: number): void {\r\n if (this.webGLVersion === 1) {\r\n Logger.Error(\"WebGL 1 does not support texture comparison.\");\r\n return;\r\n }\r\n\r\n const gl = this._gl;\r\n\r\n if (texture.isCube) {\r\n this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP, texture, true);\r\n\r\n if (comparisonFunction === 0) {\r\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_COMPARE_FUNC, Constants.LEQUAL);\r\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_COMPARE_MODE, gl.NONE);\r\n } else {\r\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_COMPARE_FUNC, comparisonFunction);\r\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_COMPARE_MODE, gl.COMPARE_REF_TO_TEXTURE);\r\n }\r\n\r\n this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP, null);\r\n } else {\r\n this._bindTextureDirectly(this._gl.TEXTURE_2D, texture, true);\r\n\r\n if (comparisonFunction === 0) {\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_COMPARE_FUNC, Constants.LEQUAL);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_COMPARE_MODE, gl.NONE);\r\n } else {\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_COMPARE_FUNC, comparisonFunction);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_COMPARE_MODE, gl.COMPARE_REF_TO_TEXTURE);\r\n }\r\n\r\n this._bindTextureDirectly(this._gl.TEXTURE_2D, null);\r\n }\r\n\r\n texture._comparisonFunction = comparisonFunction;\r\n }\r\n\r\n /**\r\n * Creates a webGL buffer to use with instantiation\r\n * @param capacity defines the size of the buffer\r\n * @returns the webGL buffer\r\n */\r\n public createInstancesBuffer(capacity: number): DataBuffer {\r\n const buffer = this._gl.createBuffer();\r\n\r\n if (!buffer) {\r\n throw new Error(\"Unable to create instance buffer\");\r\n }\r\n\r\n const result = new WebGLDataBuffer(buffer);\r\n result.capacity = capacity;\r\n\r\n this.bindArrayBuffer(result);\r\n this._gl.bufferData(this._gl.ARRAY_BUFFER, capacity, this._gl.DYNAMIC_DRAW);\r\n\r\n result.references = 1;\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Delete a webGL buffer used with instantiation\r\n * @param buffer defines the webGL buffer to delete\r\n */\r\n public deleteInstancesBuffer(buffer: WebGLBuffer): void {\r\n this._gl.deleteBuffer(buffer);\r\n }\r\n\r\n private async _clientWaitAsync(sync: WebGLSync, flags = 0, intervalms = 10): Promise<void> {\r\n const gl = <WebGL2RenderingContext>(this._gl as any);\r\n return await new Promise((resolve, reject) => {\r\n _RetryWithInterval(\r\n () => {\r\n const res = gl.clientWaitSync(sync, flags, 0);\r\n if (res == gl.WAIT_FAILED) {\r\n throw new Error(\"clientWaitSync failed\");\r\n }\r\n if (res == gl.TIMEOUT_EXPIRED) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n resolve,\r\n reject,\r\n intervalms\r\n );\r\n });\r\n }\r\n\r\n /**\r\n * This function might return null synchronously, so it is technically not async.\r\n * @internal\r\n */\r\n // eslint-disable-next-line no-restricted-syntax\r\n public _readPixelsAsync(x: number, y: number, w: number, h: number, format: number, type: number, outputBuffer: ArrayBufferView): Nullable<Promise<ArrayBufferView>> {\r\n if (this._webGLVersion < 2) {\r\n throw new Error(\"_readPixelsAsync only work on WebGL2+\");\r\n }\r\n\r\n const gl = <WebGL2RenderingContext>(this._gl as any);\r\n const buf = gl.createBuffer();\r\n gl.bindBuffer(gl.PIXEL_PACK_BUFFER, buf);\r\n gl.bufferData(gl.PIXEL_PACK_BUFFER, outputBuffer.byteLength, gl.STREAM_READ);\r\n gl.readPixels(x, y, w, h, format, type, 0);\r\n gl.bindBuffer(gl.PIXEL_PACK_BUFFER, null);\r\n\r\n const sync = gl.fenceSync(gl.SYNC_GPU_COMMANDS_COMPLETE, 0);\r\n if (!sync) {\r\n return null;\r\n }\r\n\r\n gl.flush();\r\n\r\n // eslint-disable-next-line github/no-then\r\n return this._clientWaitAsync(sync, 0, 10).then(() => {\r\n gl.deleteSync(sync);\r\n\r\n gl.bindBuffer(gl.PIXEL_PACK_BUFFER, buf);\r\n gl.getBufferSubData(gl.PIXEL_PACK_BUFFER, 0, outputBuffer);\r\n gl.bindBuffer(gl.PIXEL_PACK_BUFFER, null);\r\n gl.deleteBuffer(buf);\r\n\r\n return outputBuffer;\r\n });\r\n }\r\n\r\n public override dispose(): void {\r\n this.hideLoadingUI();\r\n\r\n // Rescale PP\r\n if (this._rescalePostProcess) {\r\n this._rescalePostProcess.dispose();\r\n }\r\n\r\n _CommonDispose(this, this._renderingCanvas);\r\n\r\n super.dispose();\r\n }\r\n}\r\n"]}