@babylonjs/core 6.33.1 → 6.34.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (488) hide show
  1. package/Animations/animation.js +1 -1
  2. package/Animations/animation.js.map +1 -1
  3. package/Animations/animationGroup.js +2 -2
  4. package/Animations/animationGroup.js.map +1 -1
  5. package/Animations/animationGroupMask.d.ts +4 -0
  6. package/Animations/animationGroupMask.js +4 -0
  7. package/Animations/animationGroupMask.js.map +1 -1
  8. package/Buffers/storageBuffer.d.ts +2 -1
  9. package/Buffers/storageBuffer.js +3 -2
  10. package/Buffers/storageBuffer.js.map +1 -1
  11. package/Cameras/Inputs/followCameraMouseWheelInput.js +12 -9
  12. package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
  13. package/Cameras/Inputs/followCameraPointersInput.js +28 -9
  14. package/Cameras/Inputs/followCameraPointersInput.js.map +1 -1
  15. package/Cameras/arcRotateCamera.js +1 -1
  16. package/Cameras/arcRotateCamera.js.map +1 -1
  17. package/Cameras/followCameraInputsManager.js +2 -1
  18. package/Cameras/followCameraInputsManager.js.map +1 -1
  19. package/Compute/computeShader.d.ts +5 -0
  20. package/Compute/computeShader.js +42 -32
  21. package/Compute/computeShader.js.map +1 -1
  22. package/Debug/skeletonViewer.js +2 -1
  23. package/Debug/skeletonViewer.js.map +1 -1
  24. package/Engines/Extensions/engine.alpha.js +8 -116
  25. package/Engines/Extensions/engine.alpha.js.map +1 -1
  26. package/Engines/Extensions/engine.cubeTexture.d.ts +1 -1
  27. package/Engines/Extensions/engine.cubeTexture.js +11 -213
  28. package/Engines/Extensions/engine.cubeTexture.js.map +1 -1
  29. package/Engines/Extensions/engine.dynamicBuffer.js +5 -42
  30. package/Engines/Extensions/engine.dynamicBuffer.js.map +1 -1
  31. package/Engines/Extensions/engine.dynamicTexture.d.ts +1 -1
  32. package/Engines/Extensions/engine.dynamicTexture.js +5 -47
  33. package/Engines/Extensions/engine.dynamicTexture.js.map +1 -1
  34. package/Engines/Extensions/engine.multiRender.js +11 -341
  35. package/Engines/Extensions/engine.multiRender.js.map +1 -1
  36. package/Engines/Extensions/engine.multiview.js +6 -57
  37. package/Engines/Extensions/engine.multiview.js.map +1 -1
  38. package/Engines/Extensions/engine.query.d.ts +8 -2
  39. package/Engines/Extensions/engine.query.js +44 -152
  40. package/Engines/Extensions/engine.query.js.map +1 -1
  41. package/Engines/Extensions/engine.rawTexture.d.ts +1 -1
  42. package/Engines/Extensions/engine.rawTexture.js +20 -361
  43. package/Engines/Extensions/engine.rawTexture.js.map +1 -1
  44. package/Engines/Extensions/engine.readTexture.js +6 -112
  45. package/Engines/Extensions/engine.readTexture.js.map +1 -1
  46. package/Engines/Extensions/engine.renderTarget.d.ts +1 -1
  47. package/Engines/Extensions/engine.renderTarget.js +8 -173
  48. package/Engines/Extensions/engine.renderTarget.js.map +1 -1
  49. package/Engines/Extensions/engine.renderTargetCube.js +4 -55
  50. package/Engines/Extensions/engine.renderTargetCube.js.map +1 -1
  51. package/Engines/Extensions/engine.storageBuffer.d.ts +2 -1
  52. package/Engines/Extensions/engine.storageBuffer.js.map +1 -1
  53. package/Engines/Extensions/engine.textureSelector.js +11 -52
  54. package/Engines/Extensions/engine.textureSelector.js.map +1 -1
  55. package/Engines/Extensions/engine.transformFeedback.js +10 -11
  56. package/Engines/Extensions/engine.transformFeedback.js.map +1 -1
  57. package/Engines/Extensions/engine.uniformBuffer.js +9 -59
  58. package/Engines/Extensions/engine.uniformBuffer.js.map +1 -1
  59. package/Engines/Extensions/engine.videoTexture.js +4 -54
  60. package/Engines/Extensions/engine.videoTexture.js.map +1 -1
  61. package/Engines/Extensions/engine.views.d.ts +2 -24
  62. package/Engines/Extensions/engine.views.js +17 -136
  63. package/Engines/Extensions/engine.views.js.map +1 -1
  64. package/Engines/Processors/shaderCodeInliner.js +15 -14
  65. package/Engines/Processors/shaderCodeInliner.js.map +1 -1
  66. package/Engines/WebGPU/Extensions/engine.computeShader.js +7 -4
  67. package/Engines/WebGPU/Extensions/engine.computeShader.js.map +1 -1
  68. package/Engines/WebGPU/Extensions/engine.storageBuffer.js +14 -5
  69. package/Engines/WebGPU/Extensions/engine.storageBuffer.js.map +1 -1
  70. package/Engines/WebGPU/webgpuShaderProcessor.js +2 -1
  71. package/Engines/WebGPU/webgpuShaderProcessor.js.map +1 -1
  72. package/Engines/WebGPU/webgpuTintWASM.js +3 -2
  73. package/Engines/WebGPU/webgpuTintWASM.js.map +1 -1
  74. package/Engines/engine.d.ts +31 -74
  75. package/Engines/engine.js +322 -773
  76. package/Engines/engine.js.map +1 -1
  77. package/Engines/nativeEngine.d.ts +1 -1
  78. package/Engines/nativeEngine.js.map +1 -1
  79. package/Engines/nullEngine.d.ts +1 -1
  80. package/Engines/nullEngine.js.map +1 -1
  81. package/Engines/thinEngine.d.ts +160 -151
  82. package/Engines/thinEngine.js +712 -3280
  83. package/Engines/thinEngine.js.map +1 -1
  84. package/Engines/webgpuEngine.d.ts +5 -8
  85. package/Engines/webgpuEngine.js +143 -112
  86. package/Engines/webgpuEngine.js.map +1 -1
  87. package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.d.ts +296 -0
  88. package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.js +758 -0
  89. package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.js.map +1 -0
  90. package/FlowGraph/Blocks/Data/Math/index.d.ts +1 -5
  91. package/FlowGraph/Blocks/Data/Math/index.js +1 -5
  92. package/FlowGraph/Blocks/Data/Math/index.js.map +1 -1
  93. package/FlowGraph/Blocks/Data/flowGraphBinaryOperationBlock.d.ts +2 -2
  94. package/FlowGraph/Blocks/Data/flowGraphBinaryOperationBlock.js +3 -3
  95. package/FlowGraph/Blocks/Data/flowGraphBinaryOperationBlock.js.map +1 -1
  96. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.d.ts +1 -1
  97. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js +3 -3
  98. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js.map +1 -1
  99. package/FlowGraph/Blocks/Data/flowGraphConstantBlock.d.ts +1 -0
  100. package/FlowGraph/Blocks/Data/flowGraphConstantBlock.js +5 -0
  101. package/FlowGraph/Blocks/Data/flowGraphConstantBlock.js.map +1 -1
  102. package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.d.ts +25 -0
  103. package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.js +22 -0
  104. package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.js.map +1 -0
  105. package/FlowGraph/Blocks/Data/flowGraphGetVariableBlock.d.ts +11 -5
  106. package/FlowGraph/Blocks/Data/flowGraphGetVariableBlock.js +12 -6
  107. package/FlowGraph/Blocks/Data/flowGraphGetVariableBlock.js.map +1 -1
  108. package/FlowGraph/Blocks/Data/flowGraphTernaryOperationBlock.d.ts +19 -0
  109. package/FlowGraph/Blocks/Data/flowGraphTernaryOperationBlock.js +22 -0
  110. package/FlowGraph/Blocks/Data/flowGraphTernaryOperationBlock.js.map +1 -0
  111. package/FlowGraph/Blocks/Data/index.d.ts +1 -0
  112. package/FlowGraph/Blocks/Data/index.js +1 -0
  113. package/FlowGraph/Blocks/Data/index.js.map +1 -1
  114. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.d.ts +10 -5
  115. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.js +15 -5
  116. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.js.map +1 -1
  117. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.d.ts +1 -0
  118. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.js +2 -1
  119. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.js.map +1 -1
  120. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.d.ts +1 -0
  121. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.js +3 -2
  122. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.js.map +1 -1
  123. package/FlowGraph/Blocks/Execution/Animation/flowGraphPauseAnimationBlock.d.ts +2 -2
  124. package/FlowGraph/Blocks/Execution/Animation/flowGraphPauseAnimationBlock.js +3 -3
  125. package/FlowGraph/Blocks/Execution/Animation/flowGraphPauseAnimationBlock.js.map +1 -1
  126. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.d.ts +0 -5
  127. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.js +2 -3
  128. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.js.map +1 -1
  129. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.d.ts +2 -2
  130. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.js +3 -3
  131. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.js.map +1 -1
  132. package/FlowGraph/Blocks/Execution/Audio/flowGraphPlayAudioBlock.d.ts +2 -2
  133. package/FlowGraph/Blocks/Execution/Audio/flowGraphPlayAudioBlock.js +3 -3
  134. package/FlowGraph/Blocks/Execution/Audio/flowGraphPlayAudioBlock.js.map +1 -1
  135. package/FlowGraph/Blocks/Execution/Audio/flowGraphStopAudioBlock.d.ts +2 -2
  136. package/FlowGraph/Blocks/Execution/Audio/flowGraphStopAudioBlock.js +2 -2
  137. package/FlowGraph/Blocks/Execution/Audio/flowGraphStopAudioBlock.js.map +1 -1
  138. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCounterBlock.d.ts +2 -2
  139. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCounterBlock.js +3 -3
  140. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCounterBlock.js.map +1 -1
  141. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDebounceBlock.d.ts +2 -2
  142. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDebounceBlock.js +3 -3
  143. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDebounceBlock.js.map +1 -1
  144. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDoNBlock.d.ts +13 -5
  145. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDoNBlock.js +14 -12
  146. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDoNBlock.js.map +1 -1
  147. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.d.ts +2 -6
  148. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.js +3 -4
  149. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.js.map +1 -1
  150. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSequenceBlock.d.ts +16 -0
  151. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSequenceBlock.js +26 -0
  152. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSequenceBlock.js.map +1 -0
  153. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.d.ts +2 -2
  154. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.js +3 -3
  155. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.js.map +1 -1
  156. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphTimerBlock.d.ts +1 -6
  157. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphTimerBlock.js +4 -4
  158. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphTimerBlock.js.map +1 -1
  159. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWaitAllBlock.d.ts +2 -2
  160. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWaitAllBlock.js +4 -4
  161. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWaitAllBlock.js.map +1 -1
  162. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWhileLoopBlock.d.ts +3 -2
  163. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWhileLoopBlock.js +6 -5
  164. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWhileLoopBlock.js.map +1 -1
  165. package/FlowGraph/Blocks/Execution/ControlFlow/index.d.ts +1 -0
  166. package/FlowGraph/Blocks/Execution/ControlFlow/index.js +1 -0
  167. package/FlowGraph/Blocks/Execution/ControlFlow/index.js.map +1 -1
  168. package/FlowGraph/Blocks/Execution/{flowGraphLogBlock.d.ts → flowGraphConsoleLogBlock.d.ts} +3 -2
  169. package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.js +29 -0
  170. package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.js.map +1 -0
  171. package/FlowGraph/Blocks/Execution/flowGraphSendCustomEventBlock.d.ts +16 -8
  172. package/FlowGraph/Blocks/Execution/flowGraphSendCustomEventBlock.js +17 -10
  173. package/FlowGraph/Blocks/Execution/flowGraphSendCustomEventBlock.js.map +1 -1
  174. package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.d.ts +4 -3
  175. package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.js +7 -6
  176. package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.js.map +1 -1
  177. package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.d.ts +12 -7
  178. package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.js +10 -9
  179. package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.js.map +1 -1
  180. package/FlowGraph/Blocks/Execution/index.d.ts +1 -2
  181. package/FlowGraph/Blocks/Execution/index.js +1 -3
  182. package/FlowGraph/Blocks/Execution/index.js.map +1 -1
  183. package/FlowGraph/flowGraph.d.ts +3 -1
  184. package/FlowGraph/flowGraph.js +6 -2
  185. package/FlowGraph/flowGraph.js.map +1 -1
  186. package/FlowGraph/flowGraphAsyncExecutionBlock.d.ts +6 -2
  187. package/FlowGraph/flowGraphAsyncExecutionBlock.js +2 -1
  188. package/FlowGraph/flowGraphAsyncExecutionBlock.js.map +1 -1
  189. package/FlowGraph/flowGraphBlock.d.ts +7 -2
  190. package/FlowGraph/flowGraphBlock.js +21 -19
  191. package/FlowGraph/flowGraphBlock.js.map +1 -1
  192. package/FlowGraph/flowGraphContext.d.ts +9 -5
  193. package/FlowGraph/flowGraphContext.js +7 -2
  194. package/FlowGraph/flowGraphContext.js.map +1 -1
  195. package/FlowGraph/flowGraphCoordinator.d.ts +4 -5
  196. package/FlowGraph/flowGraphCoordinator.js +12 -7
  197. package/FlowGraph/flowGraphCoordinator.js.map +1 -1
  198. package/FlowGraph/flowGraphEventBlock.js +1 -1
  199. package/FlowGraph/flowGraphEventBlock.js.map +1 -1
  200. package/FlowGraph/flowGraphExecutionBlock.d.ts +4 -2
  201. package/FlowGraph/flowGraphExecutionBlock.js +25 -9
  202. package/FlowGraph/flowGraphExecutionBlock.js.map +1 -1
  203. package/FlowGraph/flowGraphPath.d.ts +20 -2
  204. package/FlowGraph/flowGraphPath.js +27 -7
  205. package/FlowGraph/flowGraphPath.js.map +1 -1
  206. package/FlowGraph/flowGraphWithOnDoneExecutionBlock.d.ts +3 -3
  207. package/FlowGraph/flowGraphWithOnDoneExecutionBlock.js +3 -3
  208. package/FlowGraph/flowGraphWithOnDoneExecutionBlock.js.map +1 -1
  209. package/FlowGraph/index.d.ts +3 -0
  210. package/FlowGraph/index.js +3 -0
  211. package/FlowGraph/index.js.map +1 -1
  212. package/FlowGraph/serialization.js +20 -6
  213. package/FlowGraph/serialization.js.map +1 -1
  214. package/FlowGraph/typeDefinitions.d.ts +33 -0
  215. package/FlowGraph/typeDefinitions.js +2 -0
  216. package/FlowGraph/typeDefinitions.js.map +1 -0
  217. package/Gizmos/axisScaleGizmo.d.ts +1 -0
  218. package/Gizmos/axisScaleGizmo.js +12 -0
  219. package/Gizmos/axisScaleGizmo.js.map +1 -1
  220. package/Gizmos/lightGizmo.js +2 -1
  221. package/Gizmos/lightGizmo.js.map +1 -1
  222. package/Gizmos/rotationGizmo.js +1 -1
  223. package/Gizmos/rotationGizmo.js.map +1 -1
  224. package/Lights/Shadows/cascadedShadowGenerator.js +1 -1
  225. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  226. package/Lights/light.d.ts +15 -0
  227. package/Lights/light.js +18 -0
  228. package/Lights/light.js.map +1 -1
  229. package/Lights/shadowLight.d.ts +18 -1
  230. package/Lights/shadowLight.js +34 -1
  231. package/Lights/shadowLight.js.map +1 -1
  232. package/Materials/Node/Blocks/Dual/lightBlock.js +2 -1
  233. package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
  234. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js +3 -2
  235. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js.map +1 -1
  236. package/Materials/Node/Blocks/Fragment/fragDepthBlock.js +2 -1
  237. package/Materials/Node/Blocks/Fragment/fragDepthBlock.js.map +1 -1
  238. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js +2 -1
  239. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js.map +1 -1
  240. package/Materials/Node/Blocks/PBR/anisotropyBlock.js +2 -1
  241. package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
  242. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +3 -2
  243. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  244. package/Materials/Node/Blocks/PBR/reflectionBlock.js +2 -1
  245. package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
  246. package/Materials/Node/nodeMaterial.js +9 -8
  247. package/Materials/Node/nodeMaterial.js.map +1 -1
  248. package/Materials/Node/nodeMaterialBlock.js +2 -1
  249. package/Materials/Node/nodeMaterialBlock.js.map +1 -1
  250. package/Materials/drawWrapper.js +3 -2
  251. package/Materials/drawWrapper.js.map +1 -1
  252. package/Materials/effect.js +2 -1
  253. package/Materials/effect.js.map +1 -1
  254. package/Materials/material.js +2 -1
  255. package/Materials/material.js.map +1 -1
  256. package/Materials/uniformBuffer.d.ts +4 -1
  257. package/Materials/uniformBuffer.js +5 -2
  258. package/Materials/uniformBuffer.js.map +1 -1
  259. package/Meshes/Node/nodeGeometryBlock.js +11 -2
  260. package/Meshes/Node/nodeGeometryBlock.js.map +1 -1
  261. package/Meshes/abstractMesh.js +3 -1
  262. package/Meshes/abstractMesh.js.map +1 -1
  263. package/Misc/assetsManager.js +2 -2
  264. package/Misc/assetsManager.js.map +1 -1
  265. package/Misc/dds.d.ts +2 -0
  266. package/Misc/dds.js +27 -23
  267. package/Misc/dds.js.map +1 -1
  268. package/Misc/logger.d.ts +3 -3
  269. package/Misc/logger.js +8 -4
  270. package/Misc/logger.js.map +1 -1
  271. package/Misc/sceneSerializer.js +2 -1
  272. package/Misc/sceneSerializer.js.map +1 -1
  273. package/Navigation/Plugins/recastJSPlugin.js +2 -2
  274. package/Navigation/Plugins/recastJSPlugin.js.map +1 -1
  275. package/Physics/v2/Plugins/havokPlugin.js +1 -1
  276. package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
  277. package/Physics/v2/index.d.ts +1 -0
  278. package/Physics/v2/index.js +1 -0
  279. package/Physics/v2/index.js.map +1 -1
  280. package/Physics/v2/ragdoll.d.ts +107 -0
  281. package/Physics/v2/ragdoll.js +228 -0
  282. package/Physics/v2/ragdoll.js.map +1 -0
  283. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js +2 -2
  284. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
  285. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js +3 -2
  286. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js.map +1 -1
  287. package/PostProcesses/index.d.ts +1 -1
  288. package/PostProcesses/index.js +1 -1
  289. package/PostProcesses/index.js.map +1 -1
  290. package/PostProcesses/passPostProcess.d.ts +1 -0
  291. package/PostProcesses/passPostProcess.js +6 -2
  292. package/PostProcesses/passPostProcess.js.map +1 -1
  293. package/PostProcesses/screenSpaceCurvaturePostProcess.js +1 -1
  294. package/PostProcesses/screenSpaceCurvaturePostProcess.js.map +1 -1
  295. package/PostProcesses/screenSpaceReflectionPostProcess.js +3 -2
  296. package/PostProcesses/screenSpaceReflectionPostProcess.js.map +1 -1
  297. package/Rendering/depthPeelingRenderer.js +2 -1
  298. package/Rendering/depthPeelingRenderer.js.map +1 -1
  299. package/Shaders/ShadersInclude/pbrBlockSubSurface.js +3 -2
  300. package/Shaders/ShadersInclude/pbrBlockSubSurface.js.map +1 -1
  301. package/XR/features/WebXRControllerPhysics.js +2 -2
  302. package/XR/features/WebXRControllerPhysics.js.map +1 -1
  303. package/XR/features/WebXRMeshDetector.d.ts +14 -2
  304. package/XR/features/WebXRMeshDetector.js +45 -9
  305. package/XR/features/WebXRMeshDetector.js.map +1 -1
  306. package/XR/features/WebXRWalkingLocomotion.js +1 -1
  307. package/XR/features/WebXRWalkingLocomotion.js.map +1 -1
  308. package/XR/webXRExperienceHelper.js +2 -2
  309. package/XR/webXRExperienceHelper.js.map +1 -1
  310. package/assetContainer.js +2 -2
  311. package/assetContainer.js.map +1 -1
  312. package/esm/Engines/Extensions/alpha/alpha.base.d.ts +34 -0
  313. package/esm/Engines/Extensions/alpha/alpha.base.js +2 -0
  314. package/esm/Engines/Extensions/alpha/alpha.base.js.map +1 -0
  315. package/esm/Engines/Extensions/computeShaders/computeShaders.base.d.ts +87 -0
  316. package/esm/Engines/Extensions/computeShaders/computeShaders.base.js +12 -0
  317. package/esm/Engines/Extensions/computeShaders/computeShaders.base.js.map +1 -0
  318. package/esm/Engines/Extensions/cubeTexture/cubeTexture.base.d.ts +79 -0
  319. package/esm/Engines/Extensions/cubeTexture/cubeTexture.base.js +2 -0
  320. package/esm/Engines/Extensions/cubeTexture/cubeTexture.base.js.map +1 -0
  321. package/esm/Engines/Extensions/debugging/debugging.base.d.ts +11 -0
  322. package/esm/Engines/Extensions/debugging/debugging.base.js +2 -0
  323. package/esm/Engines/Extensions/debugging/debugging.base.js.map +1 -0
  324. package/esm/Engines/Extensions/dynamicBuffer/dynamicBuffer.base.d.ts +20 -0
  325. package/esm/Engines/Extensions/dynamicBuffer/dynamicBuffer.base.js +2 -0
  326. package/esm/Engines/Extensions/dynamicBuffer/dynamicBuffer.base.js.map +1 -0
  327. package/esm/Engines/Extensions/dynamicTexture/dynamicTexture.base.d.ts +26 -0
  328. package/esm/Engines/Extensions/dynamicTexture/dynamicTexture.base.js +2 -0
  329. package/esm/Engines/Extensions/dynamicTexture/dynamicTexture.base.js.map +1 -0
  330. package/esm/Engines/Extensions/engine.extensions.d.ts +67 -0
  331. package/esm/Engines/Extensions/engine.extensions.js +49 -0
  332. package/esm/Engines/Extensions/engine.extensions.js.map +1 -0
  333. package/esm/Engines/Extensions/externalTexture/externalTexture.base.d.ts +16 -0
  334. package/esm/Engines/Extensions/externalTexture/externalTexture.base.js +2 -0
  335. package/esm/Engines/Extensions/externalTexture/externalTexture.base.js.map +1 -0
  336. package/esm/Engines/Extensions/multiRender/multiRender.base.d.ts +54 -0
  337. package/esm/Engines/Extensions/multiRender/multiRender.base.js +2 -0
  338. package/esm/Engines/Extensions/multiRender/multiRender.base.js.map +1 -0
  339. package/esm/Engines/Extensions/multiview/multiview.base.d.ts +67 -0
  340. package/esm/Engines/Extensions/multiview/multiview.base.js +79 -0
  341. package/esm/Engines/Extensions/multiview/multiview.base.js.map +1 -0
  342. package/esm/Engines/Extensions/query/query.base.d.ts +164 -0
  343. package/esm/Engines/Extensions/query/query.base.js +168 -0
  344. package/esm/Engines/Extensions/query/query.base.js.map +1 -0
  345. package/esm/Engines/Extensions/rawTexture/engine.rawTexture.base.d.ts +187 -0
  346. package/esm/Engines/Extensions/rawTexture/engine.rawTexture.base.js +2 -0
  347. package/esm/Engines/Extensions/rawTexture/engine.rawTexture.base.js.map +1 -0
  348. package/esm/Engines/Extensions/readTexture/readTexture.base.d.ts +9 -0
  349. package/esm/Engines/Extensions/readTexture/readTexture.base.js +2 -0
  350. package/esm/Engines/Extensions/readTexture/readTexture.base.js.map +1 -0
  351. package/esm/Engines/Extensions/renderTarget/renderTarget.base.d.ts +35 -0
  352. package/esm/Engines/Extensions/renderTarget/renderTarget.base.js +2 -0
  353. package/esm/Engines/Extensions/renderTarget/renderTarget.base.js.map +1 -0
  354. package/esm/Engines/Extensions/renderTargetCube/renderTargetCube.base.d.ts +12 -0
  355. package/esm/Engines/Extensions/renderTargetCube/renderTargetCube.base.js +2 -0
  356. package/esm/Engines/Extensions/renderTargetCube/renderTargetCube.base.js.map +1 -0
  357. package/esm/Engines/Extensions/storageBuffer/storageBuffer.base.d.ts +36 -0
  358. package/esm/Engines/Extensions/storageBuffer/storageBuffer.base.js +2 -0
  359. package/esm/Engines/Extensions/storageBuffer/storageBuffer.base.js.map +1 -0
  360. package/esm/Engines/Extensions/textureSampler/textureSampler.base.d.ts +11 -0
  361. package/esm/Engines/Extensions/textureSampler/textureSampler.base.js +2 -0
  362. package/esm/Engines/Extensions/textureSampler/textureSampler.base.js.map +1 -0
  363. package/esm/Engines/Extensions/textureSelector/textureSelector.base.d.ts +50 -0
  364. package/esm/Engines/Extensions/textureSelector/textureSelector.base.js +53 -0
  365. package/esm/Engines/Extensions/textureSelector/textureSelector.base.js.map +1 -0
  366. package/esm/Engines/Extensions/transformFeedback/engine.transformFeedback.base.d.ts +42 -0
  367. package/esm/Engines/Extensions/transformFeedback/engine.transformFeedback.base.js +2 -0
  368. package/esm/Engines/Extensions/transformFeedback/engine.transformFeedback.base.js.map +1 -0
  369. package/esm/Engines/Extensions/uniformBuffer/uniformBuffer.base.d.ts +48 -0
  370. package/esm/Engines/Extensions/uniformBuffer/uniformBuffer.base.js +2 -0
  371. package/esm/Engines/Extensions/uniformBuffer/uniformBuffer.base.js.map +1 -0
  372. package/esm/Engines/Extensions/videoTexture/videoTexture.base.d.ts +13 -0
  373. package/esm/Engines/Extensions/videoTexture/videoTexture.base.js +2 -0
  374. package/esm/Engines/Extensions/videoTexture/videoTexture.base.js.map +1 -0
  375. package/esm/Engines/Extensions/views/views.base.d.ts +85 -0
  376. package/esm/Engines/Extensions/views/views.base.js +33 -0
  377. package/esm/Engines/Extensions/views/views.base.js.map +1 -0
  378. package/esm/Engines/WebGL/Extensions/alpha/alpha.webgl.d.ts +8 -0
  379. package/esm/Engines/WebGL/Extensions/alpha/alpha.webgl.js +137 -0
  380. package/esm/Engines/WebGL/Extensions/alpha/alpha.webgl.js.map +1 -0
  381. package/esm/Engines/WebGL/Extensions/cubeTexture/cubeTexture.webgl.d.ts +11 -0
  382. package/esm/Engines/WebGL/Extensions/cubeTexture/cubeTexture.webgl.js +251 -0
  383. package/esm/Engines/WebGL/Extensions/cubeTexture/cubeTexture.webgl.js.map +1 -0
  384. package/esm/Engines/WebGL/Extensions/dynamicBuffer/dynamicBuffer.webgl.d.ts +5 -0
  385. package/esm/Engines/WebGL/Extensions/dynamicBuffer/dynamicBuffer.webgl.js +55 -0
  386. package/esm/Engines/WebGL/Extensions/dynamicBuffer/dynamicBuffer.webgl.js.map +1 -0
  387. package/esm/Engines/WebGL/Extensions/dynamicTexture/dynamicTexture.webgl.d.ts +5 -0
  388. package/esm/Engines/WebGL/Extensions/dynamicTexture/dynamicTexture.webgl.js +65 -0
  389. package/esm/Engines/WebGL/Extensions/dynamicTexture/dynamicTexture.webgl.js.map +1 -0
  390. package/esm/Engines/WebGL/Extensions/multiRender/multiRender.webgl.d.ts +10 -0
  391. package/esm/Engines/WebGL/Extensions/multiRender/multiRender.webgl.js +375 -0
  392. package/esm/Engines/WebGL/Extensions/multiRender/multiRender.webgl.js.map +1 -0
  393. package/esm/Engines/WebGL/Extensions/multiview/multiview.webgl.d.ts +6 -0
  394. package/esm/Engines/WebGL/Extensions/multiview/multiview.webgl.js +77 -0
  395. package/esm/Engines/WebGL/Extensions/multiview/multiview.webgl.js.map +1 -0
  396. package/esm/Engines/WebGL/Extensions/query/query.webgl.d.ts +21 -0
  397. package/esm/Engines/WebGL/Extensions/query/query.webgl.js +220 -0
  398. package/esm/Engines/WebGL/Extensions/query/query.webgl.js.map +1 -0
  399. package/esm/Engines/WebGL/Extensions/rawTexture/engine.rawTexture.webgl.d.ts +15 -0
  400. package/esm/Engines/WebGL/Extensions/rawTexture/engine.rawTexture.webgl.js +392 -0
  401. package/esm/Engines/WebGL/Extensions/rawTexture/engine.rawTexture.webgl.js.map +1 -0
  402. package/esm/Engines/WebGL/Extensions/readTexture/readTexture.webgl.d.ts +17 -0
  403. package/esm/Engines/WebGL/Extensions/readTexture/readTexture.webgl.js +133 -0
  404. package/esm/Engines/WebGL/Extensions/readTexture/readTexture.webgl.js.map +1 -0
  405. package/esm/Engines/WebGL/Extensions/renderTarget/renderTarget.webgl.d.ts +8 -0
  406. package/esm/Engines/WebGL/Extensions/renderTarget/renderTarget.webgl.js +199 -0
  407. package/esm/Engines/WebGL/Extensions/renderTarget/renderTarget.webgl.js.map +1 -0
  408. package/esm/Engines/WebGL/Extensions/renderTargetCube/renderTargetCube.webgl.d.ts +2 -0
  409. package/esm/Engines/WebGL/Extensions/renderTargetCube/renderTargetCube.webgl.js +62 -0
  410. package/esm/Engines/WebGL/Extensions/renderTargetCube/renderTargetCube.webgl.js.map +1 -0
  411. package/esm/Engines/WebGL/Extensions/textureSelector/textureSelector.webgl.d.ts +5 -0
  412. package/esm/Engines/WebGL/Extensions/textureSelector/textureSelector.webgl.js +28 -0
  413. package/esm/Engines/WebGL/Extensions/textureSelector/textureSelector.webgl.js.map +1 -0
  414. package/esm/Engines/WebGL/Extensions/transformFeedback/engine.transformFeedback.webgl.d.ts +11 -0
  415. package/esm/Engines/WebGL/Extensions/transformFeedback/engine.transformFeedback.webgl.js +45 -0
  416. package/esm/Engines/WebGL/Extensions/transformFeedback/engine.transformFeedback.webgl.js.map +1 -0
  417. package/esm/Engines/WebGL/Extensions/uniformBuffer/uniformBuffer.webgl.d.ts +9 -0
  418. package/esm/Engines/WebGL/Extensions/uniformBuffer/uniformBuffer.webgl.js +78 -0
  419. package/esm/Engines/WebGL/Extensions/uniformBuffer/uniformBuffer.webgl.js.map +1 -0
  420. package/esm/Engines/WebGL/Extensions/videoTexture/videoTexture.webgl.d.ts +4 -0
  421. package/esm/Engines/WebGL/Extensions/videoTexture/videoTexture.webgl.js +67 -0
  422. package/esm/Engines/WebGL/Extensions/videoTexture/videoTexture.webgl.js.map +1 -0
  423. package/esm/Engines/WebGL/Extensions/views/views.webgl.d.ts +18 -0
  424. package/esm/Engines/WebGL/Extensions/views/views.webgl.js +152 -0
  425. package/esm/Engines/WebGL/Extensions/views/views.webgl.js.map +1 -0
  426. package/esm/Engines/WebGL/engine.adapterHelpers.d.ts +43 -0
  427. package/esm/Engines/WebGL/engine.adapterHelpers.js +107 -0
  428. package/esm/Engines/WebGL/engine.adapterHelpers.js.map +1 -0
  429. package/esm/Engines/WebGL/engine.webgl.d.ts +1030 -0
  430. package/esm/Engines/WebGL/engine.webgl.js +4083 -0
  431. package/esm/Engines/WebGL/engine.webgl.js.map +1 -0
  432. package/esm/Engines/WebGPU/engine.adapterHelpers.d.ts +7 -0
  433. package/esm/Engines/WebGPU/engine.adapterHelpers.js +20 -0
  434. package/esm/Engines/WebGPU/engine.adapterHelpers.js.map +1 -0
  435. package/esm/Engines/WebGPU/engine.webgpu.constants.d.ts +391 -0
  436. package/esm/Engines/WebGPU/engine.webgpu.constants.js +2 -0
  437. package/esm/Engines/WebGPU/engine.webgpu.constants.js.map +1 -0
  438. package/esm/Engines/WebGPU/engine.webgpu.d.ts +277 -0
  439. package/esm/Engines/WebGPU/engine.webgpu.js +1281 -0
  440. package/esm/Engines/WebGPU/engine.webgpu.js.map +1 -0
  441. package/esm/Engines/engine.adapters.d.ts +32 -0
  442. package/esm/Engines/engine.adapters.js +27 -0
  443. package/esm/Engines/engine.adapters.js.map +1 -0
  444. package/esm/Engines/engine.base.d.ts +807 -0
  445. package/esm/Engines/engine.base.js +1235 -0
  446. package/esm/Engines/engine.base.js.map +1 -0
  447. package/esm/Engines/engine.constants.d.ts +735 -0
  448. package/esm/Engines/engine.constants.js +3 -0
  449. package/esm/Engines/engine.constants.js.map +1 -0
  450. package/esm/Engines/engine.extendable.d.ts +180 -0
  451. package/esm/Engines/engine.extendable.js +477 -0
  452. package/esm/Engines/engine.extendable.js.map +1 -0
  453. package/esm/Engines/engine.interfaces.d.ts +16 -0
  454. package/esm/Engines/engine.interfaces.js +9 -0
  455. package/esm/Engines/engine.interfaces.js.map +1 -0
  456. package/esm/Engines/engine.static.d.ts +215 -0
  457. package/esm/Engines/engine.static.js +345 -0
  458. package/esm/Engines/engine.static.js.map +1 -0
  459. package/esm/Engines/engine.tools.d.ts +20 -0
  460. package/esm/Engines/engine.tools.js +33 -0
  461. package/esm/Engines/engine.tools.js.map +1 -0
  462. package/esm/Engines/public.d.ts +1 -0
  463. package/esm/Engines/public.js +2 -0
  464. package/esm/Engines/public.js.map +1 -0
  465. package/esm/Engines/runtimeEnvironment.d.ts +37 -0
  466. package/esm/Engines/runtimeEnvironment.js +56 -0
  467. package/esm/Engines/runtimeEnvironment.js.map +1 -0
  468. package/package.json +2 -1
  469. package/scene.d.ts +1 -2
  470. package/scene.js +1 -1
  471. package/scene.js.map +1 -1
  472. package/FlowGraph/Blocks/Data/Math/flowGraphMatrixBlocks.d.ts +0 -172
  473. package/FlowGraph/Blocks/Data/Math/flowGraphMatrixBlocks.js +0 -235
  474. package/FlowGraph/Blocks/Data/Math/flowGraphMatrixBlocks.js.map +0 -1
  475. package/FlowGraph/Blocks/Data/Math/flowGraphNumberMathBlocks.d.ts +0 -269
  476. package/FlowGraph/Blocks/Data/Math/flowGraphNumberMathBlocks.js +0 -429
  477. package/FlowGraph/Blocks/Data/Math/flowGraphNumberMathBlocks.js.map +0 -1
  478. package/FlowGraph/Blocks/Data/Math/flowGraphVector2MathBlocks.d.ts +0 -115
  479. package/FlowGraph/Blocks/Data/Math/flowGraphVector2MathBlocks.js +0 -146
  480. package/FlowGraph/Blocks/Data/Math/flowGraphVector2MathBlocks.js.map +0 -1
  481. package/FlowGraph/Blocks/Data/Math/flowGraphVector3MathBlocks.d.ts +0 -155
  482. package/FlowGraph/Blocks/Data/Math/flowGraphVector3MathBlocks.js +0 -190
  483. package/FlowGraph/Blocks/Data/Math/flowGraphVector3MathBlocks.js.map +0 -1
  484. package/FlowGraph/Blocks/Data/Math/flowGraphVector4MathBlocks.d.ts +0 -116
  485. package/FlowGraph/Blocks/Data/Math/flowGraphVector4MathBlocks.js +0 -144
  486. package/FlowGraph/Blocks/Data/Math/flowGraphVector4MathBlocks.js.map +0 -1
  487. package/FlowGraph/Blocks/Execution/flowGraphLogBlock.js +0 -27
  488. package/FlowGraph/Blocks/Execution/flowGraphLogBlock.js.map +0 -1
@@ -1,128 +1,20 @@
1
+ import * as extension from "../../esm/Engines/WebGL/Extensions/alpha/alpha.webgl.js";
1
2
  import { ThinEngine } from "../../Engines/thinEngine.js";
2
-
3
+ import { loadExtension } from "../../esm/Engines/Extensions/engine.extensions.js";
3
4
  ThinEngine.prototype.setAlphaConstants = function (r, g, b, a) {
4
- this._alphaState.setAlphaBlendConstants(r, g, b, a);
5
+ extension.setAlphaConstants(this._engineState, r, g, b, a);
5
6
  };
6
7
  ThinEngine.prototype.setAlphaMode = function (mode, noDepthWriteChange = false) {
7
- if (this._alphaMode === mode) {
8
- if (!noDepthWriteChange) {
9
- // Make sure we still have the correct depth mask according to the alpha mode (a transparent material could have forced writting to the depth buffer, for instance)
10
- const depthMask = mode === 0;
11
- if (this.depthCullingState.depthMask !== depthMask) {
12
- this.depthCullingState.depthMask = depthMask;
13
- }
14
- }
15
- return;
16
- }
17
- switch (mode) {
18
- case 0:
19
- this._alphaState.alphaBlend = false;
20
- break;
21
- case 7:
22
- this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA, this._gl.ONE, this._gl.ONE);
23
- this._alphaState.alphaBlend = true;
24
- break;
25
- case 8:
26
- this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA, this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA);
27
- this._alphaState.alphaBlend = true;
28
- break;
29
- case 2:
30
- this._alphaState.setAlphaBlendFunctionParameters(this._gl.SRC_ALPHA, this._gl.ONE_MINUS_SRC_ALPHA, this._gl.ONE, this._gl.ONE);
31
- this._alphaState.alphaBlend = true;
32
- break;
33
- case 6:
34
- this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE, this._gl.ZERO, this._gl.ONE);
35
- this._alphaState.alphaBlend = true;
36
- break;
37
- case 1:
38
- this._alphaState.setAlphaBlendFunctionParameters(this._gl.SRC_ALPHA, this._gl.ONE, this._gl.ZERO, this._gl.ONE);
39
- this._alphaState.alphaBlend = true;
40
- break;
41
- case 3:
42
- this._alphaState.setAlphaBlendFunctionParameters(this._gl.ZERO, this._gl.ONE_MINUS_SRC_COLOR, this._gl.ONE, this._gl.ONE);
43
- this._alphaState.alphaBlend = true;
44
- break;
45
- case 4:
46
- this._alphaState.setAlphaBlendFunctionParameters(this._gl.DST_COLOR, this._gl.ZERO, this._gl.ONE, this._gl.ONE);
47
- this._alphaState.alphaBlend = true;
48
- break;
49
- case 5:
50
- this._alphaState.setAlphaBlendFunctionParameters(this._gl.SRC_ALPHA, this._gl.ONE_MINUS_SRC_COLOR, this._gl.ONE, this._gl.ONE);
51
- this._alphaState.alphaBlend = true;
52
- break;
53
- case 9:
54
- this._alphaState.setAlphaBlendFunctionParameters(this._gl.CONSTANT_COLOR, this._gl.ONE_MINUS_CONSTANT_COLOR, this._gl.CONSTANT_ALPHA, this._gl.ONE_MINUS_CONSTANT_ALPHA);
55
- this._alphaState.alphaBlend = true;
56
- break;
57
- case 10:
58
- this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE_MINUS_SRC_COLOR, this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA);
59
- this._alphaState.alphaBlend = true;
60
- break;
61
- case 11:
62
- this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE, this._gl.ONE, this._gl.ONE);
63
- this._alphaState.alphaBlend = true;
64
- break;
65
- case 12:
66
- this._alphaState.setAlphaBlendFunctionParameters(this._gl.DST_ALPHA, this._gl.ONE, this._gl.ZERO, this._gl.ZERO);
67
- this._alphaState.alphaBlend = true;
68
- break;
69
- case 13:
70
- this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE_MINUS_DST_COLOR, this._gl.ONE_MINUS_SRC_COLOR, this._gl.ONE_MINUS_DST_ALPHA, this._gl.ONE_MINUS_SRC_ALPHA);
71
- this._alphaState.alphaBlend = true;
72
- break;
73
- case 14:
74
- this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA, this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA);
75
- this._alphaState.alphaBlend = true;
76
- break;
77
- case 15:
78
- this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE, this._gl.ONE, this._gl.ZERO);
79
- this._alphaState.alphaBlend = true;
80
- break;
81
- case 16:
82
- this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE_MINUS_DST_COLOR, this._gl.ONE_MINUS_SRC_COLOR, this._gl.ZERO, this._gl.ONE);
83
- this._alphaState.alphaBlend = true;
84
- break;
85
- case 17:
86
- // Same as ALPHA_COMBINE but accumulates (1 - alpha) values in the alpha channel for a later readout in order independant transparency
87
- this._alphaState.setAlphaBlendFunctionParameters(this._gl.SRC_ALPHA, this._gl.ONE_MINUS_SRC_ALPHA, this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA);
88
- this._alphaState.alphaBlend = true;
89
- break;
90
- }
91
- if (!noDepthWriteChange) {
92
- this.depthCullingState.depthMask = mode === 0;
93
- }
94
- this._alphaMode = mode;
8
+ extension.setAlphaMode(this._engineState, mode, noDepthWriteChange);
95
9
  };
96
10
  ThinEngine.prototype.getAlphaMode = function () {
97
- return this._alphaMode;
11
+ return extension.getAlphaMode(this._engineState);
98
12
  };
99
13
  ThinEngine.prototype.setAlphaEquation = function (equation) {
100
- if (this._alphaEquation === equation) {
101
- return;
102
- }
103
- switch (equation) {
104
- case 0:
105
- this._alphaState.setAlphaEquationParameters(32774, 32774);
106
- break;
107
- case 1:
108
- this._alphaState.setAlphaEquationParameters(32778, 32778);
109
- break;
110
- case 2:
111
- this._alphaState.setAlphaEquationParameters(32779, 32779);
112
- break;
113
- case 3:
114
- this._alphaState.setAlphaEquationParameters(32776, 32776);
115
- break;
116
- case 4:
117
- this._alphaState.setAlphaEquationParameters(32775, 32775);
118
- break;
119
- case 5:
120
- this._alphaState.setAlphaEquationParameters(32775, 32774);
121
- break;
122
- }
123
- this._alphaEquation = equation;
14
+ extension.setAlphaEquation(this._engineState, equation);
124
15
  };
125
16
  ThinEngine.prototype.getAlphaEquation = function () {
126
- return this._alphaEquation;
17
+ return extension.getAlphaEquation(this._engineState);
127
18
  };
19
+ loadExtension(5 /* EngineExtensions.ALPHA */, extension);
128
20
  //# sourceMappingURL=engine.alpha.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine.alpha.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/Extensions/engine.alpha.ts"],"names":[],"mappings":"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","sourcesContent":["import { ThinEngine } from \"../../Engines/thinEngine\";\r\nimport { Constants } from \"../constants\";\r\n\r\ndeclare module \"../../Engines/thinEngine\" {\r\n export interface ThinEngine {\r\n /**\r\n * Sets alpha constants used by some alpha blending modes\r\n * @param r defines the red component\r\n * @param g defines the green component\r\n * @param b defines the blue component\r\n * @param a defines the alpha component\r\n */\r\n setAlphaConstants(r: number, g: number, b: number, a: number): void;\r\n\r\n /**\r\n * Sets the current alpha mode\r\n * @param mode defines the mode to use (one of the Engine.ALPHA_XXX)\r\n * @param noDepthWriteChange defines if depth writing state should remains unchanged (false by default)\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/advanced/transparent_rendering\r\n */\r\n setAlphaMode(mode: number, noDepthWriteChange?: boolean): void;\r\n\r\n /**\r\n * Gets the current alpha mode\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/advanced/transparent_rendering\r\n * @returns the current alpha mode\r\n */\r\n getAlphaMode(): number;\r\n\r\n /**\r\n * Sets the current alpha equation\r\n * @param equation defines the equation to use (one of the Engine.ALPHA_EQUATION_XXX)\r\n */\r\n setAlphaEquation(equation: number): void;\r\n\r\n /**\r\n * Gets the current alpha equation.\r\n * @returns the current alpha equation\r\n */\r\n getAlphaEquation(): number;\r\n }\r\n}\r\n\r\nThinEngine.prototype.setAlphaConstants = function (r: number, g: number, b: number, a: number) {\r\n this._alphaState.setAlphaBlendConstants(r, g, b, a);\r\n};\r\n\r\nThinEngine.prototype.setAlphaMode = function (mode: number, noDepthWriteChange: boolean = false): void {\r\n if (this._alphaMode === mode) {\r\n if (!noDepthWriteChange) {\r\n // Make sure we still have the correct depth mask according to the alpha mode (a transparent material could have forced writting to the depth buffer, for instance)\r\n const depthMask = mode === Constants.ALPHA_DISABLE;\r\n if (this.depthCullingState.depthMask !== depthMask) {\r\n this.depthCullingState.depthMask = depthMask;\r\n }\r\n }\r\n return;\r\n }\r\n\r\n switch (mode) {\r\n case Constants.ALPHA_DISABLE:\r\n this._alphaState.alphaBlend = false;\r\n break;\r\n case Constants.ALPHA_PREMULTIPLIED:\r\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA, this._gl.ONE, this._gl.ONE);\r\n this._alphaState.alphaBlend = true;\r\n break;\r\n case Constants.ALPHA_PREMULTIPLIED_PORTERDUFF:\r\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA, this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA);\r\n this._alphaState.alphaBlend = true;\r\n break;\r\n case Constants.ALPHA_COMBINE:\r\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.SRC_ALPHA, this._gl.ONE_MINUS_SRC_ALPHA, this._gl.ONE, this._gl.ONE);\r\n this._alphaState.alphaBlend = true;\r\n break;\r\n case Constants.ALPHA_ONEONE:\r\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE, this._gl.ZERO, this._gl.ONE);\r\n this._alphaState.alphaBlend = true;\r\n break;\r\n case Constants.ALPHA_ADD:\r\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.SRC_ALPHA, this._gl.ONE, this._gl.ZERO, this._gl.ONE);\r\n this._alphaState.alphaBlend = true;\r\n break;\r\n case Constants.ALPHA_SUBTRACT:\r\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.ZERO, this._gl.ONE_MINUS_SRC_COLOR, this._gl.ONE, this._gl.ONE);\r\n this._alphaState.alphaBlend = true;\r\n break;\r\n case Constants.ALPHA_MULTIPLY:\r\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.DST_COLOR, this._gl.ZERO, this._gl.ONE, this._gl.ONE);\r\n this._alphaState.alphaBlend = true;\r\n break;\r\n case Constants.ALPHA_MAXIMIZED:\r\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.SRC_ALPHA, this._gl.ONE_MINUS_SRC_COLOR, this._gl.ONE, this._gl.ONE);\r\n this._alphaState.alphaBlend = true;\r\n break;\r\n case Constants.ALPHA_INTERPOLATE:\r\n this._alphaState.setAlphaBlendFunctionParameters(\r\n this._gl.CONSTANT_COLOR,\r\n this._gl.ONE_MINUS_CONSTANT_COLOR,\r\n this._gl.CONSTANT_ALPHA,\r\n this._gl.ONE_MINUS_CONSTANT_ALPHA\r\n );\r\n this._alphaState.alphaBlend = true;\r\n break;\r\n case Constants.ALPHA_SCREENMODE:\r\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE_MINUS_SRC_COLOR, this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA);\r\n this._alphaState.alphaBlend = true;\r\n break;\r\n case Constants.ALPHA_ONEONE_ONEONE:\r\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE, this._gl.ONE, this._gl.ONE);\r\n this._alphaState.alphaBlend = true;\r\n break;\r\n case Constants.ALPHA_ALPHATOCOLOR:\r\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.DST_ALPHA, this._gl.ONE, this._gl.ZERO, this._gl.ZERO);\r\n this._alphaState.alphaBlend = true;\r\n break;\r\n case Constants.ALPHA_REVERSEONEMINUS:\r\n this._alphaState.setAlphaBlendFunctionParameters(\r\n this._gl.ONE_MINUS_DST_COLOR,\r\n this._gl.ONE_MINUS_SRC_COLOR,\r\n this._gl.ONE_MINUS_DST_ALPHA,\r\n this._gl.ONE_MINUS_SRC_ALPHA\r\n );\r\n this._alphaState.alphaBlend = true;\r\n break;\r\n case Constants.ALPHA_SRC_DSTONEMINUSSRCALPHA:\r\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA, this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA);\r\n this._alphaState.alphaBlend = true;\r\n break;\r\n case Constants.ALPHA_ONEONE_ONEZERO:\r\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE, this._gl.ONE, this._gl.ZERO);\r\n this._alphaState.alphaBlend = true;\r\n break;\r\n case Constants.ALPHA_EXCLUSION:\r\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE_MINUS_DST_COLOR, this._gl.ONE_MINUS_SRC_COLOR, this._gl.ZERO, this._gl.ONE);\r\n this._alphaState.alphaBlend = true;\r\n break;\r\n case Constants.ALPHA_LAYER_ACCUMULATE:\r\n // Same as ALPHA_COMBINE but accumulates (1 - alpha) values in the alpha channel for a later readout in order independant transparency\r\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.SRC_ALPHA, this._gl.ONE_MINUS_SRC_ALPHA, this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA);\r\n this._alphaState.alphaBlend = true;\r\n break;\r\n }\r\n if (!noDepthWriteChange) {\r\n this.depthCullingState.depthMask = mode === Constants.ALPHA_DISABLE;\r\n }\r\n this._alphaMode = mode;\r\n};\r\n\r\nThinEngine.prototype.getAlphaMode = function (): number {\r\n return this._alphaMode;\r\n};\r\n\r\nThinEngine.prototype.setAlphaEquation = function (equation: number): void {\r\n if (this._alphaEquation === equation) {\r\n return;\r\n }\r\n\r\n switch (equation) {\r\n case Constants.ALPHA_EQUATION_ADD:\r\n this._alphaState.setAlphaEquationParameters(Constants.GL_ALPHA_EQUATION_ADD, Constants.GL_ALPHA_EQUATION_ADD);\r\n break;\r\n case Constants.ALPHA_EQUATION_SUBSTRACT:\r\n this._alphaState.setAlphaEquationParameters(Constants.GL_ALPHA_EQUATION_SUBTRACT, Constants.GL_ALPHA_EQUATION_SUBTRACT);\r\n break;\r\n case Constants.ALPHA_EQUATION_REVERSE_SUBTRACT:\r\n this._alphaState.setAlphaEquationParameters(Constants.GL_ALPHA_EQUATION_REVERSE_SUBTRACT, Constants.GL_ALPHA_EQUATION_REVERSE_SUBTRACT);\r\n break;\r\n case Constants.ALPHA_EQUATION_MAX:\r\n this._alphaState.setAlphaEquationParameters(Constants.GL_ALPHA_EQUATION_MAX, Constants.GL_ALPHA_EQUATION_MAX);\r\n break;\r\n case Constants.ALPHA_EQUATION_MIN:\r\n this._alphaState.setAlphaEquationParameters(Constants.GL_ALPHA_EQUATION_MIN, Constants.GL_ALPHA_EQUATION_MIN);\r\n break;\r\n case Constants.ALPHA_EQUATION_DARKEN:\r\n this._alphaState.setAlphaEquationParameters(Constants.GL_ALPHA_EQUATION_MIN, Constants.GL_ALPHA_EQUATION_ADD);\r\n break;\r\n }\r\n this._alphaEquation = equation;\r\n};\r\n\r\nThinEngine.prototype.getAlphaEquation = function () {\r\n return this._alphaEquation;\r\n};\r\n"]}
1
+ {"version":3,"file":"engine.alpha.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/Extensions/engine.alpha.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,gEAA4D;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAoB,aAAa,EAAE,0DAAsD;AA0ChG,UAAU,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS;IACzF,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/D,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,IAAY,EAAE,qBAA8B,KAAK;IAC3F,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC;AACxE,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG;IAChC,OAAO,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACrD,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,QAAgB;IAC9D,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AAC5D,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,CAAC,gBAAgB,GAAG;IACpC,OAAO,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACzD,CAAC,CAAC;AAEF,aAAa,iCAAyB,SAAS,CAAC,CAAC","sourcesContent":["import * as extension from \"core/esm/Engines/WebGL/Extensions/alpha/alpha.webgl\";\r\nimport { ThinEngine } from \"../../Engines/thinEngine\";\r\nimport { EngineExtensions, loadExtension } from \"core/esm/Engines/Extensions/engine.extensions\";\r\n\r\ndeclare module \"../../Engines/thinEngine\" {\r\n export interface ThinEngine {\r\n /**\r\n * Sets alpha constants used by some alpha blending modes\r\n * @param r defines the red component\r\n * @param g defines the green component\r\n * @param b defines the blue component\r\n * @param a defines the alpha component\r\n */\r\n setAlphaConstants(r: number, g: number, b: number, a: number): void;\r\n\r\n /**\r\n * Sets the current alpha mode\r\n * @param mode defines the mode to use (one of the Engine.ALPHA_XXX)\r\n * @param noDepthWriteChange defines if depth writing state should remains unchanged (false by default)\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/advanced/transparent_rendering\r\n */\r\n setAlphaMode(mode: number, noDepthWriteChange?: boolean): void;\r\n\r\n /**\r\n * Gets the current alpha mode\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/advanced/transparent_rendering\r\n * @returns the current alpha mode\r\n */\r\n getAlphaMode(): number;\r\n\r\n /**\r\n * Sets the current alpha equation\r\n * @param equation defines the equation to use (one of the Engine.ALPHA_EQUATION_XXX)\r\n */\r\n setAlphaEquation(equation: number): void;\r\n\r\n /**\r\n * Gets the current alpha equation.\r\n * @returns the current alpha equation\r\n */\r\n getAlphaEquation(): number;\r\n }\r\n}\r\n\r\nThinEngine.prototype.setAlphaConstants = function (r: number, g: number, b: number, a: number) {\r\n extension.setAlphaConstants(this._engineState, r, g, b, a);\r\n};\r\n\r\nThinEngine.prototype.setAlphaMode = function (mode: number, noDepthWriteChange: boolean = false): void {\r\n extension.setAlphaMode(this._engineState, mode, noDepthWriteChange);\r\n};\r\n\r\nThinEngine.prototype.getAlphaMode = function (): number {\r\n return extension.getAlphaMode(this._engineState);\r\n};\r\n\r\nThinEngine.prototype.setAlphaEquation = function (equation: number): void {\r\n extension.setAlphaEquation(this._engineState, equation);\r\n};\r\n\r\nThinEngine.prototype.getAlphaEquation = function () {\r\n return extension.getAlphaEquation(this._engineState);\r\n};\r\n\r\nloadExtension(EngineExtensions.ALPHA, extension);\r\n"]}
@@ -1,4 +1,4 @@
1
- import { InternalTexture } from "../../Materials/Textures/internalTexture";
1
+ import type { InternalTexture } from "../../Materials/Textures/internalTexture";
2
2
  import type { Nullable } from "../../types";
3
3
  import type { Scene } from "../../scene";
4
4
  import type { DepthTextureCreationOptions } from "../../Materials/Textures/textureCreationOptions";
@@ -1,231 +1,29 @@
1
1
  import { ThinEngine } from "../../Engines/thinEngine.js";
2
- import { InternalTexture, InternalTextureSource } from "../../Materials/Textures/internalTexture.js";
3
- import { Logger } from "../../Misc/logger.js";
4
- import { LoadImage } from "../../Misc/fileTools.js";
5
- import { RandomGUID } from "../../Misc/guid.js";
6
-
2
+ import * as extension from "../../esm/Engines/WebGL/Extensions/cubeTexture/cubeTexture.webgl.js";
3
+ import { loadExtension } from "../../esm/Engines/Extensions/engine.extensions.js";
7
4
  ThinEngine.prototype._createDepthStencilCubeTexture = function (size, options, rtWrapper) {
8
- const internalTexture = new InternalTexture(this, InternalTextureSource.DepthStencil);
9
- internalTexture.isCube = true;
10
- if (this.webGLVersion === 1) {
11
- Logger.Error("Depth cube texture is not supported by WebGL 1.");
12
- return internalTexture;
13
- }
14
- const internalOptions = Object.assign({ bilinearFiltering: false, comparisonFunction: 0, generateStencil: false }, options);
15
- const gl = this._gl;
16
- this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, internalTexture, true);
17
- this._setupDepthStencilTexture(internalTexture, size, internalOptions.generateStencil, internalOptions.bilinearFiltering, internalOptions.comparisonFunction);
18
- rtWrapper._depthStencilTexture = internalTexture;
19
- rtWrapper._depthStencilTextureWithStencil = internalOptions.generateStencil;
20
- // Create the depth/stencil buffer
21
- for (let face = 0; face < 6; face++) {
22
- if (internalOptions.generateStencil) {
23
- gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + face, 0, gl.DEPTH24_STENCIL8, size, size, 0, gl.DEPTH_STENCIL, gl.UNSIGNED_INT_24_8, null);
24
- }
25
- else {
26
- gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + face, 0, gl.DEPTH_COMPONENT24, size, size, 0, gl.DEPTH_COMPONENT, gl.UNSIGNED_INT, null);
27
- }
28
- }
29
- this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, null);
30
- this._internalTexturesCache.push(internalTexture);
31
- return internalTexture;
5
+ return extension._createDepthStencilCubeTexture(this._engineState, size, options, rtWrapper);
32
6
  };
33
7
  ThinEngine.prototype._partialLoadFile = function (url, index, loadedFiles, onfinish, onErrorCallBack = null) {
34
- const onload = (data) => {
35
- loadedFiles[index] = data;
36
- loadedFiles._internalCount++;
37
- if (loadedFiles._internalCount === 6) {
38
- onfinish(loadedFiles);
39
- }
40
- };
41
- const onerror = (request, exception) => {
42
- if (onErrorCallBack && request) {
43
- onErrorCallBack(request.status + " " + request.statusText, exception);
44
- }
45
- };
46
- this._loadFile(url, onload, undefined, undefined, true, onerror);
8
+ extension._partialLoadFile(this._engineState, url, index, loadedFiles, onfinish, onErrorCallBack);
47
9
  };
48
10
  ThinEngine.prototype._cascadeLoadFiles = function (scene, onfinish, files, onError = null) {
49
- const loadedFiles = [];
50
- loadedFiles._internalCount = 0;
51
- for (let index = 0; index < 6; index++) {
52
- this._partialLoadFile(files[index], index, loadedFiles, onfinish, onError);
53
- }
11
+ extension._cascadeLoadFiles(this._engineState, scene, onfinish, files, onError);
54
12
  };
55
13
  ThinEngine.prototype._cascadeLoadImgs = function (scene, texture, onfinish, files, onError = null, mimeType) {
56
- const loadedImages = [];
57
- loadedImages._internalCount = 0;
58
- for (let index = 0; index < 6; index++) {
59
- this._partialLoadImg(files[index], index, loadedImages, scene, texture, onfinish, onError, mimeType);
60
- }
14
+ extension._cascadeLoadImgs(this._engineState, scene, texture, onfinish, files, onError, mimeType);
61
15
  };
62
16
  ThinEngine.prototype._partialLoadImg = function (url, index, loadedImages, scene, texture, onfinish, onErrorCallBack = null, mimeType) {
63
- const tokenPendingData = RandomGUID();
64
- const onload = (img) => {
65
- loadedImages[index] = img;
66
- loadedImages._internalCount++;
67
- if (scene) {
68
- scene.removePendingData(tokenPendingData);
69
- }
70
- if (loadedImages._internalCount === 6 && onfinish) {
71
- onfinish(texture, loadedImages);
72
- }
73
- };
74
- const onerror = (message, exception) => {
75
- if (scene) {
76
- scene.removePendingData(tokenPendingData);
77
- }
78
- if (onErrorCallBack) {
79
- onErrorCallBack(message, exception);
80
- }
81
- };
82
- LoadImage(url, onload, onerror, scene ? scene.offlineProvider : null, mimeType);
83
- if (scene) {
84
- scene.addPendingData(tokenPendingData);
85
- }
17
+ extension._partialLoadImg(this._engineState, url, index, loadedImages, scene, texture, onfinish, onErrorCallBack, mimeType);
86
18
  };
87
19
  ThinEngine.prototype._setCubeMapTextureParams = function (texture, loadMipmap, maxLevel) {
88
- const gl = this._gl;
89
- gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
90
- gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MIN_FILTER, loadMipmap ? gl.LINEAR_MIPMAP_LINEAR : gl.LINEAR);
91
- gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
92
- gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
93
- texture.samplingMode = loadMipmap ? 3 : 2;
94
- if (loadMipmap && this.getCaps().textureMaxLevel && maxLevel !== undefined && maxLevel > 0) {
95
- gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MAX_LEVEL, maxLevel);
96
- texture._maxLodLevel = maxLevel;
97
- }
98
- this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, null);
20
+ extension._setCubeMapTextureParams(this._engineState, texture, loadMipmap, maxLevel);
99
21
  };
100
22
  ThinEngine.prototype.createCubeTextureBase = function (rootUrl, scene, files, noMipmap, onLoad = null, onError = null, format, forcedExtension = null, createPolynomials = false, lodScale = 0, lodOffset = 0, fallback = null, beforeLoadCubeDataCallback = null, imageHandler = null, useSRGBBuffer = false) {
101
- const texture = fallback ? fallback : new InternalTexture(this, InternalTextureSource.Cube);
102
- texture.isCube = true;
103
- texture.url = rootUrl;
104
- texture.generateMipMaps = !noMipmap;
105
- texture._lodGenerationScale = lodScale;
106
- texture._lodGenerationOffset = lodOffset;
107
- texture._useSRGBBuffer = !!useSRGBBuffer && this._caps.supportSRGBBuffers && (this.webGLVersion > 1 || this.isWebGPU || !!noMipmap);
108
- if (texture !== fallback) {
109
- texture.label = rootUrl.substring(0, 60); // default label, can be overriden by the caller
110
- }
111
- if (!this._doNotHandleContextLost) {
112
- texture._extension = forcedExtension;
113
- texture._files = files;
114
- }
115
- const originalRootUrl = rootUrl;
116
- if (this._transformTextureUrl && !fallback) {
117
- rootUrl = this._transformTextureUrl(rootUrl);
118
- }
119
- const rootUrlWithoutUriParams = rootUrl.split("?")[0];
120
- const lastDot = rootUrlWithoutUriParams.lastIndexOf(".");
121
- const extension = forcedExtension ? forcedExtension : lastDot > -1 ? rootUrlWithoutUriParams.substring(lastDot).toLowerCase() : "";
122
- let loader = null;
123
- for (const availableLoader of ThinEngine._TextureLoaders) {
124
- if (availableLoader.canLoad(extension)) {
125
- loader = availableLoader;
126
- break;
127
- }
128
- }
129
- const onInternalError = (request, exception) => {
130
- if (rootUrl === originalRootUrl) {
131
- if (onError && request) {
132
- onError(request.status + " " + request.statusText, exception);
133
- }
134
- }
135
- else {
136
- // fall back to the original url if the transformed url fails to load
137
- Logger.Warn(`Failed to load ${rootUrl}, falling back to the ${originalRootUrl}`);
138
- this.createCubeTextureBase(originalRootUrl, scene, files, !!noMipmap, onLoad, onError, format, forcedExtension, createPolynomials, lodScale, lodOffset, texture, beforeLoadCubeDataCallback, imageHandler, useSRGBBuffer);
139
- }
140
- };
141
- if (loader) {
142
- const onloaddata = (data) => {
143
- if (beforeLoadCubeDataCallback) {
144
- beforeLoadCubeDataCallback(texture, data);
145
- }
146
- loader.loadCubeData(data, texture, createPolynomials, onLoad, onError);
147
- };
148
- if (files && files.length === 6) {
149
- if (loader.supportCascades) {
150
- this._cascadeLoadFiles(scene, (images) => onloaddata(images.map((image) => new Uint8Array(image))), files, onError);
151
- }
152
- else {
153
- if (onError) {
154
- onError("Textures type does not support cascades.");
155
- }
156
- else {
157
- Logger.Warn("Texture loader does not support cascades.");
158
- }
159
- }
160
- }
161
- else {
162
- this._loadFile(rootUrl, (data) => onloaddata(new Uint8Array(data)), undefined, undefined, true, onInternalError);
163
- }
164
- }
165
- else {
166
- if (!files) {
167
- throw new Error("Cannot load cubemap because files were not defined");
168
- }
169
- this._cascadeLoadImgs(scene, texture, (texture, imgs) => {
170
- if (imageHandler) {
171
- imageHandler(texture, imgs);
172
- }
173
- }, files, onError);
174
- }
175
- this._internalTexturesCache.push(texture);
176
- return texture;
23
+ return extension.createCubeTextureBase(this._engineState, rootUrl, scene, files, noMipmap, onLoad, onError, format, forcedExtension, createPolynomials, lodScale, lodOffset, fallback, beforeLoadCubeDataCallback, imageHandler, useSRGBBuffer);
177
24
  };
178
25
  ThinEngine.prototype.createCubeTexture = function (rootUrl, scene, files, noMipmap, onLoad = null, onError = null, format, forcedExtension = null, createPolynomials = false, lodScale = 0, lodOffset = 0, fallback = null, loaderOptions, useSRGBBuffer = false) {
179
- const gl = this._gl;
180
- return this.createCubeTextureBase(rootUrl, scene, files, !!noMipmap, onLoad, onError, format, forcedExtension, createPolynomials, lodScale, lodOffset, fallback, (texture) => this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, texture, true), (texture, imgs) => {
181
- const width = this.needPOTTextures ? ThinEngine.GetExponentOfTwo(imgs[0].width, this._caps.maxCubemapTextureSize) : imgs[0].width;
182
- const height = width;
183
- const faces = [
184
- gl.TEXTURE_CUBE_MAP_POSITIVE_X,
185
- gl.TEXTURE_CUBE_MAP_POSITIVE_Y,
186
- gl.TEXTURE_CUBE_MAP_POSITIVE_Z,
187
- gl.TEXTURE_CUBE_MAP_NEGATIVE_X,
188
- gl.TEXTURE_CUBE_MAP_NEGATIVE_Y,
189
- gl.TEXTURE_CUBE_MAP_NEGATIVE_Z,
190
- ];
191
- this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, texture, true);
192
- this._unpackFlipY(false);
193
- const internalFormat = format ? this._getInternalFormat(format, texture._useSRGBBuffer) : texture._useSRGBBuffer ? this._glSRGBExtensionValues.SRGB8_ALPHA8 : gl.RGBA;
194
- let texelFormat = format ? this._getInternalFormat(format) : gl.RGBA;
195
- if (texture._useSRGBBuffer && this.webGLVersion === 1) {
196
- texelFormat = internalFormat;
197
- }
198
- for (let index = 0; index < faces.length; index++) {
199
- if (imgs[index].width !== width || imgs[index].height !== height) {
200
- this._prepareWorkingCanvas();
201
- if (!this._workingCanvas || !this._workingContext) {
202
- Logger.Warn("Cannot create canvas to resize texture.");
203
- return;
204
- }
205
- this._workingCanvas.width = width;
206
- this._workingCanvas.height = height;
207
- this._workingContext.drawImage(imgs[index], 0, 0, imgs[index].width, imgs[index].height, 0, 0, width, height);
208
- gl.texImage2D(faces[index], 0, internalFormat, texelFormat, gl.UNSIGNED_BYTE, this._workingCanvas);
209
- }
210
- else {
211
- gl.texImage2D(faces[index], 0, internalFormat, texelFormat, gl.UNSIGNED_BYTE, imgs[index]);
212
- }
213
- }
214
- if (!noMipmap) {
215
- gl.generateMipmap(gl.TEXTURE_CUBE_MAP);
216
- }
217
- this._setCubeMapTextureParams(texture, !noMipmap);
218
- texture.width = width;
219
- texture.height = height;
220
- texture.isReady = true;
221
- if (format) {
222
- texture.format = format;
223
- }
224
- texture.onLoadedObservable.notifyObservers(texture);
225
- texture.onLoadedObservable.clear();
226
- if (onLoad) {
227
- onLoad();
228
- }
229
- }, !!useSRGBBuffer);
26
+ return extension.createCubeTexture(this._engineState, rootUrl, scene, files, noMipmap, onLoad, onError, format, forcedExtension, createPolynomials, lodScale, lodOffset, fallback, loaderOptions, useSRGBBuffer);
230
27
  };
28
+ loadExtension(4 /* EngineExtensions.CUBE_TEXTURE */, extension);
231
29
  //# sourceMappingURL=engine.cubeTexture.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine.cubeTexture.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/Extensions/engine.cubeTexture.ts"],"names":[],"mappings":"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","sourcesContent":["import { ThinEngine } from \"../../Engines/thinEngine\";\r\nimport { InternalTexture, InternalTextureSource } from \"../../Materials/Textures/internalTexture\";\r\nimport { Logger } from \"../../Misc/logger\";\r\nimport type { Nullable } from \"../../types\";\r\nimport type { Scene } from \"../../scene\";\r\nimport type { IInternalTextureLoader } from \"../../Materials/Textures/internalTextureLoader\";\r\nimport { LoadImage } from \"../../Misc/fileTools\";\r\nimport { RandomGUID } from \"../../Misc/guid\";\r\nimport type { IWebRequest } from \"../../Misc/interfaces/iWebRequest\";\r\nimport { Constants } from \"../constants\";\r\nimport type { DepthTextureCreationOptions } from \"../../Materials/Textures/textureCreationOptions\";\r\nimport type { RenderTargetWrapper } from \"../renderTargetWrapper\";\r\n\r\ndeclare module \"../../Engines/thinEngine\" {\r\n export interface ThinEngine {\r\n /**\r\n * Creates a depth stencil cube texture.\r\n * This is only available in WebGL 2.\r\n * @param size The size of face edge in the cube texture.\r\n * @param options The options defining the cube texture.\r\n * @param rtWrapper The render target wrapper for which the depth/stencil texture must be created\r\n * @returns The cube texture\r\n */\r\n _createDepthStencilCubeTexture(size: number, options: DepthTextureCreationOptions, rtWrapper: RenderTargetWrapper): InternalTexture;\r\n\r\n /**\r\n * Creates a cube texture\r\n * @param rootUrl defines the url where the files to load is located\r\n * @param scene defines the current scene\r\n * @param files defines the list of files to load (1 per face)\r\n * @param noMipmap defines a boolean indicating that no mipmaps shall be generated (false by default)\r\n * @param onLoad defines an optional callback raised when the texture is loaded\r\n * @param onError defines an optional callback raised if there is an issue to load the texture\r\n * @param format defines the format of the data\r\n * @param forcedExtension defines the extension to use to pick the right loader\r\n * @param createPolynomials if a polynomial sphere should be created for the cube texture\r\n * @param lodScale defines the scale applied to environment texture. This manages the range of LOD level used for IBL according to the roughness\r\n * @param lodOffset defines the offset applied to environment texture. This manages first LOD level used for IBL according to the roughness\r\n * @param fallback defines texture to use while falling back when (compressed) texture file not found.\r\n * @param loaderOptions options to be passed to the loader\r\n * @param useSRGBBuffer defines if the texture must be loaded in a sRGB GPU buffer (if supported by the GPU).\r\n * @returns the cube texture as an InternalTexture\r\n */\r\n createCubeTexture(\r\n rootUrl: string,\r\n scene: Nullable<Scene>,\r\n files: Nullable<string[]>,\r\n noMipmap: boolean | undefined,\r\n onLoad: Nullable<(data?: any) => void>,\r\n onError: Nullable<(message?: string, exception?: any) => void>,\r\n format: number | undefined,\r\n forcedExtension: any,\r\n createPolynomials: boolean,\r\n lodScale: number,\r\n lodOffset: number,\r\n fallback: Nullable<InternalTexture>,\r\n loaderOptions: any,\r\n useSRGBBuffer: boolean\r\n ): InternalTexture;\r\n\r\n /**\r\n * Creates a cube texture\r\n * @param rootUrl defines the url where the files to load is located\r\n * @param scene defines the current scene\r\n * @param files defines the list of files to load (1 per face)\r\n * @param noMipmap defines a boolean indicating that no mipmaps shall be generated (false by default)\r\n * @param onLoad defines an optional callback raised when the texture is loaded\r\n * @param onError defines an optional callback raised if there is an issue to load the texture\r\n * @param format defines the format of the data\r\n * @param forcedExtension defines the extension to use to pick the right loader\r\n * @returns the cube texture as an InternalTexture\r\n */\r\n createCubeTexture(\r\n rootUrl: string,\r\n scene: Nullable<Scene>,\r\n files: Nullable<string[]>,\r\n noMipmap: boolean,\r\n onLoad: Nullable<(data?: any) => void>,\r\n onError: Nullable<(message?: string, exception?: any) => void>,\r\n format: number | undefined,\r\n forcedExtension: any\r\n ): InternalTexture;\r\n\r\n /**\r\n * Creates a cube texture\r\n * @param rootUrl defines the url where the files to load is located\r\n * @param scene defines the current scene\r\n * @param files defines the list of files to load (1 per face)\r\n * @param noMipmap defines a boolean indicating that no mipmaps shall be generated (false by default)\r\n * @param onLoad defines an optional callback raised when the texture is loaded\r\n * @param onError defines an optional callback raised if there is an issue to load the texture\r\n * @param format defines the format of the data\r\n * @param forcedExtension defines the extension to use to pick the right loader\r\n * @param createPolynomials if a polynomial sphere should be created for the cube texture\r\n * @param lodScale defines the scale applied to environment texture. This manages the range of LOD level used for IBL according to the roughness\r\n * @param lodOffset defines the offset applied to environment texture. This manages first LOD level used for IBL according to the roughness\r\n * @returns the cube texture as an InternalTexture\r\n */\r\n createCubeTexture(\r\n rootUrl: string,\r\n scene: Nullable<Scene>,\r\n files: Nullable<string[]>,\r\n noMipmap: boolean,\r\n onLoad: Nullable<(data?: any) => void>,\r\n onError: Nullable<(message?: string, exception?: any) => void>,\r\n format: number | undefined,\r\n forcedExtension: any,\r\n createPolynomials: boolean,\r\n lodScale: number,\r\n lodOffset: number\r\n ): InternalTexture;\r\n\r\n /** @internal */\r\n createCubeTextureBase(\r\n rootUrl: string,\r\n scene: Nullable<Scene>,\r\n files: Nullable<string[]>,\r\n noMipmap: boolean,\r\n onLoad: Nullable<(data?: any) => void>,\r\n onError: Nullable<(message?: string, exception?: any) => void>,\r\n format: number | undefined,\r\n forcedExtension: any,\r\n createPolynomials: boolean,\r\n lodScale: number,\r\n lodOffset: number,\r\n fallback: Nullable<InternalTexture>,\r\n beforeLoadCubeDataCallback: Nullable<(texture: InternalTexture, data: ArrayBufferView | ArrayBufferView[]) => void>,\r\n imageHandler: Nullable<(texture: InternalTexture, imgs: HTMLImageElement[] | ImageBitmap[]) => void>,\r\n useSRGBBuffer: boolean\r\n ): InternalTexture;\r\n\r\n /** @internal */\r\n _partialLoadFile(\r\n url: string,\r\n index: number,\r\n loadedFiles: ArrayBuffer[],\r\n onfinish: (files: ArrayBuffer[]) => void,\r\n onErrorCallBack: Nullable<(message?: string, exception?: any) => void>\r\n ): void;\r\n\r\n /** @internal */\r\n _cascadeLoadFiles(scene: Nullable<Scene>, onfinish: (images: ArrayBuffer[]) => void, files: string[], onError: Nullable<(message?: string, exception?: any) => void>): void;\r\n\r\n /** @internal */\r\n _cascadeLoadImgs(\r\n scene: Nullable<Scene>,\r\n texture: InternalTexture,\r\n onfinish: Nullable<(texture: InternalTexture, images: HTMLImageElement[] | ImageBitmap[]) => void>,\r\n files: string[],\r\n onError: Nullable<(message?: string, exception?: any) => void>,\r\n mimeType?: string\r\n ): void;\r\n\r\n /** @internal */\r\n _partialLoadImg(\r\n url: string,\r\n index: number,\r\n loadedImages: HTMLImageElement[] | ImageBitmap[],\r\n scene: Nullable<Scene>,\r\n texture: InternalTexture,\r\n onfinish: Nullable<(texture: InternalTexture, images: HTMLImageElement[] | ImageBitmap[]) => void>,\r\n onErrorCallBack: Nullable<(message?: string, exception?: any) => void>,\r\n mimeType?: string\r\n ): void;\r\n\r\n /**\r\n * @internal\r\n */\r\n _setCubeMapTextureParams(texture: InternalTexture, loadMipmap: boolean, maxLevel?: number): void;\r\n }\r\n}\r\n\r\nThinEngine.prototype._createDepthStencilCubeTexture = function (size: number, options: DepthTextureCreationOptions, rtWrapper: RenderTargetWrapper): InternalTexture {\r\n const internalTexture = new InternalTexture(this, InternalTextureSource.DepthStencil);\r\n internalTexture.isCube = true;\r\n\r\n if (this.webGLVersion === 1) {\r\n Logger.Error(\"Depth cube texture is not supported by WebGL 1.\");\r\n return internalTexture;\r\n }\r\n\r\n const internalOptions = {\r\n bilinearFiltering: false,\r\n comparisonFunction: 0,\r\n generateStencil: false,\r\n ...options,\r\n };\r\n\r\n const gl = this._gl;\r\n this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, internalTexture, true);\r\n\r\n this._setupDepthStencilTexture(internalTexture, size, internalOptions.generateStencil, internalOptions.bilinearFiltering, internalOptions.comparisonFunction);\r\n\r\n rtWrapper._depthStencilTexture = internalTexture;\r\n rtWrapper._depthStencilTextureWithStencil = internalOptions.generateStencil;\r\n\r\n // Create the depth/stencil buffer\r\n for (let face = 0; face < 6; face++) {\r\n if (internalOptions.generateStencil) {\r\n gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + face, 0, gl.DEPTH24_STENCIL8, size, size, 0, gl.DEPTH_STENCIL, gl.UNSIGNED_INT_24_8, null);\r\n } else {\r\n gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + face, 0, gl.DEPTH_COMPONENT24, size, size, 0, gl.DEPTH_COMPONENT, gl.UNSIGNED_INT, null);\r\n }\r\n }\r\n\r\n this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, null);\r\n\r\n this._internalTexturesCache.push(internalTexture);\r\n\r\n return internalTexture;\r\n};\r\n\r\nThinEngine.prototype._partialLoadFile = function (\r\n url: string,\r\n index: number,\r\n loadedFiles: ArrayBuffer[],\r\n onfinish: (files: ArrayBuffer[]) => void,\r\n onErrorCallBack: Nullable<(message?: string, exception?: any) => void> = null\r\n): void {\r\n const onload = (data: ArrayBuffer) => {\r\n loadedFiles[index] = data;\r\n (<any>loadedFiles)._internalCount++;\r\n\r\n if ((<any>loadedFiles)._internalCount === 6) {\r\n onfinish(loadedFiles);\r\n }\r\n };\r\n\r\n const onerror = (request?: IWebRequest, exception?: any) => {\r\n if (onErrorCallBack && request) {\r\n onErrorCallBack(request.status + \" \" + request.statusText, exception);\r\n }\r\n };\r\n\r\n this._loadFile(url, onload as (data: string | ArrayBuffer) => void, undefined, undefined, true, onerror);\r\n};\r\n\r\nThinEngine.prototype._cascadeLoadFiles = function (\r\n scene: Nullable<Scene>,\r\n onfinish: (images: ArrayBuffer[]) => void,\r\n files: string[],\r\n onError: Nullable<(message?: string, exception?: any) => void> = null\r\n): void {\r\n const loadedFiles: ArrayBuffer[] = [];\r\n (<any>loadedFiles)._internalCount = 0;\r\n\r\n for (let index = 0; index < 6; index++) {\r\n this._partialLoadFile(files[index], index, loadedFiles, onfinish, onError);\r\n }\r\n};\r\n\r\nThinEngine.prototype._cascadeLoadImgs = function (\r\n scene: Nullable<Scene>,\r\n texture: InternalTexture,\r\n onfinish: Nullable<(texture: InternalTexture, images: HTMLImageElement[] | ImageBitmap[]) => void>,\r\n files: string[],\r\n onError: Nullable<(message?: string, exception?: any) => void> = null,\r\n mimeType?: string\r\n) {\r\n const loadedImages: HTMLImageElement[] | ImageBitmap[] = [];\r\n (<any>loadedImages)._internalCount = 0;\r\n\r\n for (let index = 0; index < 6; index++) {\r\n this._partialLoadImg(files[index], index, loadedImages, scene, texture, onfinish, onError, mimeType);\r\n }\r\n};\r\n\r\nThinEngine.prototype._partialLoadImg = function (\r\n url: string,\r\n index: number,\r\n loadedImages: HTMLImageElement[] | ImageBitmap[],\r\n scene: Nullable<Scene>,\r\n texture: InternalTexture,\r\n onfinish: Nullable<(texture: InternalTexture, images: HTMLImageElement[] | ImageBitmap[]) => void>,\r\n onErrorCallBack: Nullable<(message?: string, exception?: any) => void> = null,\r\n mimeType?: string\r\n) {\r\n const tokenPendingData = RandomGUID();\r\n\r\n const onload = (img: HTMLImageElement | ImageBitmap) => {\r\n loadedImages[index] = img;\r\n (<any>loadedImages)._internalCount++;\r\n\r\n if (scene) {\r\n scene.removePendingData(tokenPendingData);\r\n }\r\n\r\n if ((<any>loadedImages)._internalCount === 6 && onfinish) {\r\n onfinish(texture, loadedImages);\r\n }\r\n };\r\n\r\n const onerror = (message?: string, exception?: any) => {\r\n if (scene) {\r\n scene.removePendingData(tokenPendingData);\r\n }\r\n\r\n if (onErrorCallBack) {\r\n onErrorCallBack(message, exception);\r\n }\r\n };\r\n\r\n LoadImage(url, onload, onerror, scene ? scene.offlineProvider : null, mimeType);\r\n if (scene) {\r\n scene.addPendingData(tokenPendingData);\r\n }\r\n};\r\n\r\nThinEngine.prototype._setCubeMapTextureParams = function (texture: InternalTexture, loadMipmap: boolean, maxLevel?: number): void {\r\n const gl = this._gl;\r\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\r\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MIN_FILTER, loadMipmap ? gl.LINEAR_MIPMAP_LINEAR : gl.LINEAR);\r\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\r\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\r\n texture.samplingMode = loadMipmap ? Constants.TEXTURE_TRILINEAR_SAMPLINGMODE : Constants.TEXTURE_LINEAR_LINEAR;\r\n\r\n if (loadMipmap && this.getCaps().textureMaxLevel && maxLevel !== undefined && maxLevel > 0) {\r\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MAX_LEVEL, maxLevel);\r\n texture._maxLodLevel = maxLevel;\r\n }\r\n\r\n this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, null);\r\n};\r\n\r\nThinEngine.prototype.createCubeTextureBase = function (\r\n rootUrl: string,\r\n scene: Nullable<Scene>,\r\n files: Nullable<string[]>,\r\n noMipmap?: boolean,\r\n onLoad: Nullable<(data?: any) => void> = null,\r\n onError: Nullable<(message?: string, exception?: any) => void> = null,\r\n format?: number,\r\n forcedExtension: any = null,\r\n createPolynomials: boolean = false,\r\n lodScale: number = 0,\r\n lodOffset: number = 0,\r\n fallback: Nullable<InternalTexture> = null,\r\n beforeLoadCubeDataCallback: Nullable<(texture: InternalTexture, data: ArrayBufferView | ArrayBufferView[]) => void> = null,\r\n imageHandler: Nullable<(texture: InternalTexture, imgs: HTMLImageElement[] | ImageBitmap[]) => void> = null,\r\n useSRGBBuffer = false\r\n): InternalTexture {\r\n const texture = fallback ? fallback : new InternalTexture(this, InternalTextureSource.Cube);\r\n texture.isCube = true;\r\n texture.url = rootUrl;\r\n texture.generateMipMaps = !noMipmap;\r\n texture._lodGenerationScale = lodScale;\r\n texture._lodGenerationOffset = lodOffset;\r\n texture._useSRGBBuffer = !!useSRGBBuffer && this._caps.supportSRGBBuffers && (this.webGLVersion > 1 || this.isWebGPU || !!noMipmap);\r\n if (texture !== fallback) {\r\n texture.label = rootUrl.substring(0, 60); // default label, can be overriden by the caller\r\n }\r\n\r\n if (!this._doNotHandleContextLost) {\r\n texture._extension = forcedExtension;\r\n texture._files = files;\r\n }\r\n\r\n const originalRootUrl = rootUrl;\r\n if (this._transformTextureUrl && !fallback) {\r\n rootUrl = this._transformTextureUrl(rootUrl);\r\n }\r\n\r\n const rootUrlWithoutUriParams = rootUrl.split(\"?\")[0];\r\n const lastDot = rootUrlWithoutUriParams.lastIndexOf(\".\");\r\n const extension = forcedExtension ? forcedExtension : lastDot > -1 ? rootUrlWithoutUriParams.substring(lastDot).toLowerCase() : \"\";\r\n\r\n let loader: Nullable<IInternalTextureLoader> = null;\r\n for (const availableLoader of ThinEngine._TextureLoaders) {\r\n if (availableLoader.canLoad(extension)) {\r\n loader = availableLoader;\r\n break;\r\n }\r\n }\r\n\r\n const onInternalError = (request?: IWebRequest, exception?: any) => {\r\n if (rootUrl === originalRootUrl) {\r\n if (onError && request) {\r\n onError(request.status + \" \" + request.statusText, exception);\r\n }\r\n } else {\r\n // fall back to the original url if the transformed url fails to load\r\n Logger.Warn(`Failed to load ${rootUrl}, falling back to the ${originalRootUrl}`);\r\n this.createCubeTextureBase(\r\n originalRootUrl,\r\n scene,\r\n files,\r\n !!noMipmap,\r\n onLoad,\r\n onError,\r\n format,\r\n forcedExtension,\r\n createPolynomials,\r\n lodScale,\r\n lodOffset,\r\n texture,\r\n beforeLoadCubeDataCallback,\r\n imageHandler,\r\n useSRGBBuffer\r\n );\r\n }\r\n };\r\n\r\n if (loader) {\r\n const onloaddata = (data: ArrayBufferView | ArrayBufferView[]) => {\r\n if (beforeLoadCubeDataCallback) {\r\n beforeLoadCubeDataCallback(texture, data);\r\n }\r\n loader!.loadCubeData(data, texture, createPolynomials, onLoad, onError);\r\n };\r\n if (files && files.length === 6) {\r\n if (loader.supportCascades) {\r\n this._cascadeLoadFiles(scene, (images) => onloaddata(images.map((image) => new Uint8Array(image))), files, onError);\r\n } else {\r\n if (onError) {\r\n onError(\"Textures type does not support cascades.\");\r\n } else {\r\n Logger.Warn(\"Texture loader does not support cascades.\");\r\n }\r\n }\r\n } else {\r\n this._loadFile(rootUrl, (data) => onloaddata(new Uint8Array(data as ArrayBuffer)), undefined, undefined, true, onInternalError);\r\n }\r\n } else {\r\n if (!files) {\r\n throw new Error(\"Cannot load cubemap because files were not defined\");\r\n }\r\n\r\n this._cascadeLoadImgs(\r\n scene,\r\n texture,\r\n (texture: InternalTexture, imgs: HTMLImageElement[] | ImageBitmap[]) => {\r\n if (imageHandler) {\r\n imageHandler(texture, imgs);\r\n }\r\n },\r\n files,\r\n onError\r\n );\r\n }\r\n\r\n this._internalTexturesCache.push(texture);\r\n\r\n return texture;\r\n};\r\n\r\nThinEngine.prototype.createCubeTexture = function (\r\n rootUrl: string,\r\n scene: Nullable<Scene>,\r\n files: Nullable<string[]>,\r\n noMipmap?: boolean,\r\n onLoad: Nullable<(data?: any) => void> = null,\r\n onError: Nullable<(message?: string, exception?: any) => void> = null,\r\n format?: number,\r\n forcedExtension: any = null,\r\n createPolynomials: boolean = false,\r\n lodScale: number = 0,\r\n lodOffset: number = 0,\r\n fallback: Nullable<InternalTexture> = null,\r\n loaderOptions?: any,\r\n useSRGBBuffer = false\r\n): InternalTexture {\r\n const gl = this._gl;\r\n\r\n return this.createCubeTextureBase(\r\n rootUrl,\r\n scene,\r\n files,\r\n !!noMipmap,\r\n onLoad,\r\n onError,\r\n format,\r\n forcedExtension,\r\n createPolynomials,\r\n lodScale,\r\n lodOffset,\r\n fallback,\r\n (texture: InternalTexture) => this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, texture, true),\r\n (texture: InternalTexture, imgs: HTMLImageElement[] | ImageBitmap[]) => {\r\n const width = this.needPOTTextures ? ThinEngine.GetExponentOfTwo(imgs[0].width, this._caps.maxCubemapTextureSize) : imgs[0].width;\r\n const height = width;\r\n\r\n const faces = [\r\n gl.TEXTURE_CUBE_MAP_POSITIVE_X,\r\n gl.TEXTURE_CUBE_MAP_POSITIVE_Y,\r\n gl.TEXTURE_CUBE_MAP_POSITIVE_Z,\r\n gl.TEXTURE_CUBE_MAP_NEGATIVE_X,\r\n gl.TEXTURE_CUBE_MAP_NEGATIVE_Y,\r\n gl.TEXTURE_CUBE_MAP_NEGATIVE_Z,\r\n ];\r\n\r\n this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, texture, true);\r\n this._unpackFlipY(false);\r\n\r\n const internalFormat = format ? this._getInternalFormat(format, texture._useSRGBBuffer) : texture._useSRGBBuffer ? this._glSRGBExtensionValues.SRGB8_ALPHA8 : gl.RGBA;\r\n let texelFormat = format ? this._getInternalFormat(format) : gl.RGBA;\r\n\r\n if (texture._useSRGBBuffer && this.webGLVersion === 1) {\r\n texelFormat = internalFormat;\r\n }\r\n\r\n for (let index = 0; index < faces.length; index++) {\r\n if (imgs[index].width !== width || imgs[index].height !== height) {\r\n this._prepareWorkingCanvas();\r\n\r\n if (!this._workingCanvas || !this._workingContext) {\r\n Logger.Warn(\"Cannot create canvas to resize texture.\");\r\n return;\r\n }\r\n this._workingCanvas.width = width;\r\n this._workingCanvas.height = height;\r\n\r\n this._workingContext.drawImage(imgs[index], 0, 0, imgs[index].width, imgs[index].height, 0, 0, width, height);\r\n gl.texImage2D(faces[index], 0, internalFormat, texelFormat, gl.UNSIGNED_BYTE, this._workingCanvas as TexImageSource);\r\n } else {\r\n gl.texImage2D(faces[index], 0, internalFormat, texelFormat, gl.UNSIGNED_BYTE, imgs[index]);\r\n }\r\n }\r\n\r\n if (!noMipmap) {\r\n gl.generateMipmap(gl.TEXTURE_CUBE_MAP);\r\n }\r\n\r\n this._setCubeMapTextureParams(texture, !noMipmap);\r\n\r\n texture.width = width;\r\n texture.height = height;\r\n texture.isReady = true;\r\n if (format) {\r\n texture.format = format;\r\n }\r\n\r\n texture.onLoadedObservable.notifyObservers(texture);\r\n texture.onLoadedObservable.clear();\r\n\r\n if (onLoad) {\r\n onLoad();\r\n }\r\n },\r\n !!useSRGBBuffer\r\n );\r\n};\r\n"]}
1
+ {"version":3,"file":"engine.cubeTexture.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/Extensions/engine.cubeTexture.ts"],"names":[],"mappings":"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","sourcesContent":["import { ThinEngine } from \"../../Engines/thinEngine\";\r\nimport type { InternalTexture } from \"../../Materials/Textures/internalTexture\";\r\nimport type { Nullable } from \"../../types\";\r\nimport type { Scene } from \"../../scene\";\r\nimport type { DepthTextureCreationOptions } from \"../../Materials/Textures/textureCreationOptions\";\r\nimport type { RenderTargetWrapper } from \"../renderTargetWrapper\";\r\nimport * as extension from \"core/esm/Engines/WebGL/Extensions/cubeTexture/cubeTexture.webgl\";\r\nimport { EngineExtensions, loadExtension } from \"core/esm/Engines/Extensions/engine.extensions\";\r\n\r\ndeclare module \"../../Engines/thinEngine\" {\r\n export interface ThinEngine {\r\n /**\r\n * Creates a depth stencil cube texture.\r\n * This is only available in WebGL 2.\r\n * @param size The size of face edge in the cube texture.\r\n * @param options The options defining the cube texture.\r\n * @param rtWrapper The render target wrapper for which the depth/stencil texture must be created\r\n * @returns The cube texture\r\n */\r\n _createDepthStencilCubeTexture(size: number, options: DepthTextureCreationOptions, rtWrapper: RenderTargetWrapper): InternalTexture;\r\n\r\n /**\r\n * Creates a cube texture\r\n * @param rootUrl defines the url where the files to load is located\r\n * @param scene defines the current scene\r\n * @param files defines the list of files to load (1 per face)\r\n * @param noMipmap defines a boolean indicating that no mipmaps shall be generated (false by default)\r\n * @param onLoad defines an optional callback raised when the texture is loaded\r\n * @param onError defines an optional callback raised if there is an issue to load the texture\r\n * @param format defines the format of the data\r\n * @param forcedExtension defines the extension to use to pick the right loader\r\n * @param createPolynomials if a polynomial sphere should be created for the cube texture\r\n * @param lodScale defines the scale applied to environment texture. This manages the range of LOD level used for IBL according to the roughness\r\n * @param lodOffset defines the offset applied to environment texture. This manages first LOD level used for IBL according to the roughness\r\n * @param fallback defines texture to use while falling back when (compressed) texture file not found.\r\n * @param loaderOptions options to be passed to the loader\r\n * @param useSRGBBuffer defines if the texture must be loaded in a sRGB GPU buffer (if supported by the GPU).\r\n * @returns the cube texture as an InternalTexture\r\n */\r\n createCubeTexture(\r\n rootUrl: string,\r\n scene: Nullable<Scene>,\r\n files: Nullable<string[]>,\r\n noMipmap: boolean | undefined,\r\n onLoad: Nullable<(data?: any) => void>,\r\n onError: Nullable<(message?: string, exception?: any) => void>,\r\n format: number | undefined,\r\n forcedExtension: any,\r\n createPolynomials: boolean,\r\n lodScale: number,\r\n lodOffset: number,\r\n fallback: Nullable<InternalTexture>,\r\n loaderOptions: any,\r\n useSRGBBuffer: boolean\r\n ): InternalTexture;\r\n\r\n /**\r\n * Creates a cube texture\r\n * @param rootUrl defines the url where the files to load is located\r\n * @param scene defines the current scene\r\n * @param files defines the list of files to load (1 per face)\r\n * @param noMipmap defines a boolean indicating that no mipmaps shall be generated (false by default)\r\n * @param onLoad defines an optional callback raised when the texture is loaded\r\n * @param onError defines an optional callback raised if there is an issue to load the texture\r\n * @param format defines the format of the data\r\n * @param forcedExtension defines the extension to use to pick the right loader\r\n * @returns the cube texture as an InternalTexture\r\n */\r\n createCubeTexture(\r\n rootUrl: string,\r\n scene: Nullable<Scene>,\r\n files: Nullable<string[]>,\r\n noMipmap: boolean,\r\n onLoad: Nullable<(data?: any) => void>,\r\n onError: Nullable<(message?: string, exception?: any) => void>,\r\n format: number | undefined,\r\n forcedExtension: any\r\n ): InternalTexture;\r\n\r\n /**\r\n * Creates a cube texture\r\n * @param rootUrl defines the url where the files to load is located\r\n * @param scene defines the current scene\r\n * @param files defines the list of files to load (1 per face)\r\n * @param noMipmap defines a boolean indicating that no mipmaps shall be generated (false by default)\r\n * @param onLoad defines an optional callback raised when the texture is loaded\r\n * @param onError defines an optional callback raised if there is an issue to load the texture\r\n * @param format defines the format of the data\r\n * @param forcedExtension defines the extension to use to pick the right loader\r\n * @param createPolynomials if a polynomial sphere should be created for the cube texture\r\n * @param lodScale defines the scale applied to environment texture. This manages the range of LOD level used for IBL according to the roughness\r\n * @param lodOffset defines the offset applied to environment texture. This manages first LOD level used for IBL according to the roughness\r\n * @returns the cube texture as an InternalTexture\r\n */\r\n createCubeTexture(\r\n rootUrl: string,\r\n scene: Nullable<Scene>,\r\n files: Nullable<string[]>,\r\n noMipmap: boolean,\r\n onLoad: Nullable<(data?: any) => void>,\r\n onError: Nullable<(message?: string, exception?: any) => void>,\r\n format: number | undefined,\r\n forcedExtension: any,\r\n createPolynomials: boolean,\r\n lodScale: number,\r\n lodOffset: number\r\n ): InternalTexture;\r\n\r\n /** @internal */\r\n createCubeTextureBase(\r\n rootUrl: string,\r\n scene: Nullable<Scene>,\r\n files: Nullable<string[]>,\r\n noMipmap: boolean,\r\n onLoad: Nullable<(data?: any) => void>,\r\n onError: Nullable<(message?: string, exception?: any) => void>,\r\n format: number | undefined,\r\n forcedExtension: any,\r\n createPolynomials: boolean,\r\n lodScale: number,\r\n lodOffset: number,\r\n fallback: Nullable<InternalTexture>,\r\n beforeLoadCubeDataCallback: Nullable<(texture: InternalTexture, data: ArrayBufferView | ArrayBufferView[]) => void>,\r\n imageHandler: Nullable<(texture: InternalTexture, imgs: HTMLImageElement[] | ImageBitmap[]) => void>,\r\n useSRGBBuffer: boolean\r\n ): InternalTexture;\r\n\r\n /** @internal */\r\n _partialLoadFile(\r\n url: string,\r\n index: number,\r\n loadedFiles: ArrayBuffer[],\r\n onfinish: (files: ArrayBuffer[]) => void,\r\n onErrorCallBack: Nullable<(message?: string, exception?: any) => void>\r\n ): void;\r\n\r\n /** @internal */\r\n _cascadeLoadFiles(scene: Nullable<Scene>, onfinish: (images: ArrayBuffer[]) => void, files: string[], onError: Nullable<(message?: string, exception?: any) => void>): void;\r\n\r\n /** @internal */\r\n _cascadeLoadImgs(\r\n scene: Nullable<Scene>,\r\n texture: InternalTexture,\r\n onfinish: Nullable<(texture: InternalTexture, images: HTMLImageElement[] | ImageBitmap[]) => void>,\r\n files: string[],\r\n onError: Nullable<(message?: string, exception?: any) => void>,\r\n mimeType?: string\r\n ): void;\r\n\r\n /** @internal */\r\n _partialLoadImg(\r\n url: string,\r\n index: number,\r\n loadedImages: HTMLImageElement[] | ImageBitmap[],\r\n scene: Nullable<Scene>,\r\n texture: InternalTexture,\r\n onfinish: Nullable<(texture: InternalTexture, images: HTMLImageElement[] | ImageBitmap[]) => void>,\r\n onErrorCallBack: Nullable<(message?: string, exception?: any) => void>,\r\n mimeType?: string\r\n ): void;\r\n\r\n /**\r\n * @internal\r\n */\r\n _setCubeMapTextureParams(texture: InternalTexture, loadMipmap: boolean, maxLevel?: number): void;\r\n }\r\n}\r\n\r\nThinEngine.prototype._createDepthStencilCubeTexture = function (size: number, options: DepthTextureCreationOptions, rtWrapper: RenderTargetWrapper): InternalTexture {\r\n return extension._createDepthStencilCubeTexture(this._engineState, size, options, rtWrapper);\r\n};\r\n\r\nThinEngine.prototype._partialLoadFile = function (\r\n url: string,\r\n index: number,\r\n loadedFiles: ArrayBuffer[],\r\n onfinish: (files: ArrayBuffer[]) => void,\r\n onErrorCallBack: Nullable<(message?: string, exception?: any) => void> = null\r\n): void {\r\n extension._partialLoadFile(this._engineState, url, index, loadedFiles, onfinish, onErrorCallBack);\r\n};\r\n\r\nThinEngine.prototype._cascadeLoadFiles = function (\r\n scene: Nullable<Scene>,\r\n onfinish: (images: ArrayBuffer[]) => void,\r\n files: string[],\r\n onError: Nullable<(message?: string, exception?: any) => void> = null\r\n): void {\r\n extension._cascadeLoadFiles(this._engineState, scene, onfinish, files, onError);\r\n};\r\n\r\nThinEngine.prototype._cascadeLoadImgs = function (\r\n scene: Nullable<Scene>,\r\n texture: InternalTexture,\r\n onfinish: Nullable<(texture: InternalTexture, images: HTMLImageElement[] | ImageBitmap[]) => void>,\r\n files: string[],\r\n onError: Nullable<(message?: string, exception?: any) => void> = null,\r\n mimeType?: string\r\n) {\r\n extension._cascadeLoadImgs(this._engineState, scene, texture, onfinish, files, onError, mimeType);\r\n};\r\n\r\nThinEngine.prototype._partialLoadImg = function (\r\n url: string,\r\n index: number,\r\n loadedImages: HTMLImageElement[] | ImageBitmap[],\r\n scene: Nullable<Scene>,\r\n texture: InternalTexture,\r\n onfinish: Nullable<(texture: InternalTexture, images: HTMLImageElement[] | ImageBitmap[]) => void>,\r\n onErrorCallBack: Nullable<(message?: string, exception?: any) => void> = null,\r\n mimeType?: string\r\n) {\r\n extension._partialLoadImg(this._engineState, url, index, loadedImages, scene, texture, onfinish, onErrorCallBack, mimeType);\r\n};\r\n\r\nThinEngine.prototype._setCubeMapTextureParams = function (texture: InternalTexture, loadMipmap: boolean, maxLevel?: number): void {\r\n extension._setCubeMapTextureParams(this._engineState, texture, loadMipmap, maxLevel);\r\n};\r\n\r\nThinEngine.prototype.createCubeTextureBase = function (\r\n rootUrl: string,\r\n scene: Nullable<Scene>,\r\n files: Nullable<string[]>,\r\n noMipmap?: boolean,\r\n onLoad: Nullable<(data?: any) => void> = null,\r\n onError: Nullable<(message?: string, exception?: any) => void> = null,\r\n format?: number,\r\n forcedExtension: any = null,\r\n createPolynomials: boolean = false,\r\n lodScale: number = 0,\r\n lodOffset: number = 0,\r\n fallback: Nullable<InternalTexture> = null,\r\n beforeLoadCubeDataCallback: Nullable<(texture: InternalTexture, data: ArrayBufferView | ArrayBufferView[]) => void> = null,\r\n imageHandler: Nullable<(texture: InternalTexture, imgs: HTMLImageElement[] | ImageBitmap[]) => void> = null,\r\n useSRGBBuffer = false\r\n): InternalTexture {\r\n return extension.createCubeTextureBase(\r\n this._engineState,\r\n rootUrl,\r\n scene,\r\n files,\r\n noMipmap,\r\n onLoad,\r\n onError,\r\n format,\r\n forcedExtension,\r\n createPolynomials,\r\n lodScale,\r\n lodOffset,\r\n fallback,\r\n beforeLoadCubeDataCallback,\r\n imageHandler,\r\n useSRGBBuffer\r\n );\r\n};\r\n\r\nThinEngine.prototype.createCubeTexture = function (\r\n rootUrl: string,\r\n scene: Nullable<Scene>,\r\n files: Nullable<string[]>,\r\n noMipmap?: boolean,\r\n onLoad: Nullable<(data?: any) => void> = null,\r\n onError: Nullable<(message?: string, exception?: any) => void> = null,\r\n format?: number,\r\n forcedExtension: any = null,\r\n createPolynomials: boolean = false,\r\n lodScale: number = 0,\r\n lodOffset: number = 0,\r\n fallback: Nullable<InternalTexture> = null,\r\n loaderOptions?: any,\r\n useSRGBBuffer: boolean = false\r\n): InternalTexture {\r\n return extension.createCubeTexture(\r\n this._engineState,\r\n rootUrl,\r\n scene,\r\n files,\r\n noMipmap,\r\n onLoad,\r\n onError,\r\n format,\r\n forcedExtension,\r\n createPolynomials,\r\n lodScale,\r\n lodOffset,\r\n fallback,\r\n loaderOptions,\r\n useSRGBBuffer\r\n );\r\n};\r\n\r\nloadExtension(EngineExtensions.CUBE_TEXTURE, extension);\r\n"]}
@@ -1,49 +1,12 @@
1
1
  import { ThinEngine } from "../../Engines/thinEngine.js";
2
+ import * as extension from "../../esm/Engines/WebGL/Extensions/dynamicBuffer/dynamicBuffer.webgl.js";
3
+ import { loadExtension } from "../../esm/Engines/Extensions/engine.extensions.js";
2
4
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3
5
  ThinEngine.prototype.updateDynamicIndexBuffer = function (indexBuffer, indices, offset = 0) {
4
- // Force cache update
5
- this._currentBoundBuffer[this._gl.ELEMENT_ARRAY_BUFFER] = null;
6
- this.bindIndexBuffer(indexBuffer);
7
- let view;
8
- if (indexBuffer.is32Bits) {
9
- // anything else than Uint32Array needs to be converted to Uint32Array
10
- view = indices instanceof Uint32Array ? indices : new Uint32Array(indices);
11
- }
12
- else {
13
- // anything else than Uint16Array needs to be converted to Uint16Array
14
- view = indices instanceof Uint16Array ? indices : new Uint16Array(indices);
15
- }
16
- this._gl.bufferData(this._gl.ELEMENT_ARRAY_BUFFER, view, this._gl.DYNAMIC_DRAW);
17
- this._resetIndexBufferBinding();
6
+ extension.updateDynamicIndexBuffer(this._engineState, indexBuffer, indices, offset);
18
7
  };
19
8
  ThinEngine.prototype.updateDynamicVertexBuffer = function (vertexBuffer, data, byteOffset, byteLength) {
20
- this.bindArrayBuffer(vertexBuffer);
21
- if (byteOffset === undefined) {
22
- byteOffset = 0;
23
- }
24
- const dataLength = data.byteLength || data.length;
25
- if (byteLength === undefined || (byteLength >= dataLength && byteOffset === 0)) {
26
- if (data instanceof Array) {
27
- this._gl.bufferSubData(this._gl.ARRAY_BUFFER, byteOffset, new Float32Array(data));
28
- }
29
- else {
30
- this._gl.bufferSubData(this._gl.ARRAY_BUFFER, byteOffset, data);
31
- }
32
- }
33
- else {
34
- if (data instanceof Array) {
35
- this._gl.bufferSubData(this._gl.ARRAY_BUFFER, 0, new Float32Array(data).subarray(byteOffset, byteOffset + byteLength));
36
- }
37
- else {
38
- if (data instanceof ArrayBuffer) {
39
- data = new Uint8Array(data, byteOffset, byteLength);
40
- }
41
- else {
42
- data = new Uint8Array(data.buffer, data.byteOffset + byteOffset, byteLength);
43
- }
44
- this._gl.bufferSubData(this._gl.ARRAY_BUFFER, 0, data);
45
- }
46
- }
47
- this._resetVertexBufferBinding();
9
+ extension.updateDynamicVertexBuffer(this._engineState, vertexBuffer, data, byteOffset, byteLength);
48
10
  };
11
+ loadExtension(7 /* EngineExtensions.DYNAMIC_BUFFER */, extension);
49
12
  //# sourceMappingURL=engine.dynamicBuffer.js.map