@babylonjs/core 6.8.0 → 6.8.1

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 (365) hide show
  1. package/Actions/abstractActionManager.js.map +1 -1
  2. package/Actions/action.js.map +1 -1
  3. package/Animations/animation.js.map +1 -1
  4. package/Animations/animationGroup.d.ts +5 -0
  5. package/Animations/animationGroup.js +12 -0
  6. package/Animations/animationGroup.js.map +1 -1
  7. package/Animations/easing.js.map +1 -1
  8. package/Audio/audioSceneComponent.js.map +1 -1
  9. package/Audio/sound.js.map +1 -1
  10. package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -1
  11. package/Behaviors/Cameras/bouncingBehavior.js.map +1 -1
  12. package/Behaviors/Cameras/framingBehavior.js.map +1 -1
  13. package/Behaviors/Meshes/fadeInOutBehavior.js.map +1 -1
  14. package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
  15. package/Bones/bone.js.map +1 -1
  16. package/Bones/boneIKController.js.map +1 -1
  17. package/Bones/boneLookController.js.map +1 -1
  18. package/Buffers/dataBuffer.js.map +1 -1
  19. package/Cameras/Inputs/BaseCameraMouseWheelInput.js.map +1 -1
  20. package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
  21. package/Cameras/Inputs/arcRotateCameraGamepadInput.js.map +1 -1
  22. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js.map +1 -1
  23. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js.map +1 -1
  24. package/Cameras/Inputs/arcRotateCameraPointersInput.js.map +1 -1
  25. package/Cameras/Inputs/flyCameraKeyboardInput.js.map +1 -1
  26. package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
  27. package/Cameras/Inputs/followCameraKeyboardMoveInput.js.map +1 -1
  28. package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
  29. package/Cameras/Inputs/followCameraPointersInput.js.map +1 -1
  30. package/Cameras/Inputs/freeCameraGamepadInput.js.map +1 -1
  31. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js.map +1 -1
  32. package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
  33. package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
  34. package/Cameras/VR/vrExperienceHelper.js.map +1 -1
  35. package/Cameras/arcRotateCamera.js.map +1 -1
  36. package/Cameras/camera.js.map +1 -1
  37. package/Cameras/flyCamera.js.map +1 -1
  38. package/Cameras/followCamera.js.map +1 -1
  39. package/Cameras/freeCamera.js.map +1 -1
  40. package/Cameras/targetCamera.js.map +1 -1
  41. package/Collisions/collider.js.map +1 -1
  42. package/Compute/computeEffect.js.map +1 -1
  43. package/Compute/computeShader.js +1 -5
  44. package/Compute/computeShader.js.map +1 -1
  45. package/Culling/Octrees/octree.js.map +1 -1
  46. package/Culling/boundingBox.js.map +1 -1
  47. package/Culling/boundingInfo.js.map +1 -1
  48. package/Culling/boundingSphere.js.map +1 -1
  49. package/Debug/debugLayer.js +1 -9
  50. package/Debug/debugLayer.js.map +1 -1
  51. package/Debug/skeletonViewer.js.map +1 -1
  52. package/Engines/Extensions/engine.cubeTexture.js +1 -6
  53. package/Engines/Extensions/engine.cubeTexture.js.map +1 -1
  54. package/Engines/Extensions/engine.multiRender.js.map +1 -1
  55. package/Engines/Extensions/engine.renderTarget.js +1 -6
  56. package/Engines/Extensions/engine.renderTarget.js.map +1 -1
  57. package/Engines/Extensions/engine.renderTargetCube.js +1 -9
  58. package/Engines/Extensions/engine.renderTargetCube.js.map +1 -1
  59. package/Engines/Extensions/engine.webVR.js +1 -5
  60. package/Engines/Extensions/engine.webVR.js.map +1 -1
  61. package/Engines/Processors/Expressions/Operators/shaderDefineArithmeticOperator.js +3 -0
  62. package/Engines/Processors/Expressions/Operators/shaderDefineArithmeticOperator.js.map +1 -1
  63. package/Engines/Processors/shaderCodeInliner.js.map +1 -1
  64. package/Engines/Processors/shaderProcessor.js +10 -3
  65. package/Engines/Processors/shaderProcessor.js.map +1 -1
  66. package/Engines/WebGPU/Extensions/engine.cubeTexture.js +1 -7
  67. package/Engines/WebGPU/Extensions/engine.cubeTexture.js.map +1 -1
  68. package/Engines/WebGPU/Extensions/engine.renderTarget.js +1 -8
  69. package/Engines/WebGPU/Extensions/engine.renderTarget.js.map +1 -1
  70. package/Engines/WebGPU/Extensions/engine.renderTargetCube.js +1 -10
  71. package/Engines/WebGPU/Extensions/engine.renderTargetCube.js.map +1 -1
  72. package/Engines/WebGPU/webgpuCacheBindGroups.js.map +1 -1
  73. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  74. package/Engines/WebGPU/webgpuCacheSampler.js +1 -6
  75. package/Engines/WebGPU/webgpuCacheSampler.js.map +1 -1
  76. package/Engines/WebGPU/webgpuShaderProcessor.js.map +1 -1
  77. package/Engines/WebGPU/webgpuTintWASM.js +1 -4
  78. package/Engines/WebGPU/webgpuTintWASM.js.map +1 -1
  79. package/Engines/engine.js.map +1 -1
  80. package/Engines/nativeEngine.js.map +1 -1
  81. package/Engines/nullEngine.js +1 -9
  82. package/Engines/nullEngine.js.map +1 -1
  83. package/Engines/thinEngine.js +3 -2
  84. package/Engines/thinEngine.js.map +1 -1
  85. package/Engines/webgpuEngine.js +3 -14
  86. package/Engines/webgpuEngine.js.map +1 -1
  87. package/Gamepads/Controllers/gearVRController.js.map +1 -1
  88. package/Gamepads/Controllers/oculusTouchController.js.map +1 -1
  89. package/Gamepads/Controllers/poseEnabledController.js.map +1 -1
  90. package/Gamepads/Controllers/windowsMotionController.js.map +1 -1
  91. package/Gamepads/gamepad.js.map +1 -1
  92. package/Gizmos/cameraGizmo.js.map +1 -1
  93. package/Gizmos/gizmo.js.map +1 -1
  94. package/Gizmos/lightGizmo.js.map +1 -1
  95. package/Gizmos/planeRotationGizmo.js.map +1 -1
  96. package/Helpers/environmentHelper.js +2 -8
  97. package/Helpers/environmentHelper.js.map +1 -1
  98. package/Helpers/textureDome.js.map +1 -1
  99. package/Inputs/scene.inputManager.js +4 -1
  100. package/Inputs/scene.inputManager.js.map +1 -1
  101. package/Layers/effectLayer.js +1 -8
  102. package/Layers/effectLayer.js.map +1 -1
  103. package/Layers/glowLayer.js +1 -12
  104. package/Layers/glowLayer.js.map +1 -1
  105. package/Layers/highlightLayer.js +1 -11
  106. package/Layers/highlightLayer.js.map +1 -1
  107. package/Legacy/legacy.js +1 -1
  108. package/Legacy/legacy.js.map +1 -1
  109. package/LensFlares/lensFlareSystem.js.map +1 -1
  110. package/Lights/Shadows/shadowGenerator.js +1 -4
  111. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  112. package/Lights/directionalLight.js.map +1 -1
  113. package/Lights/hemisphericLight.js.map +1 -1
  114. package/Lights/light.js.map +1 -1
  115. package/Lights/spotLight.js.map +1 -1
  116. package/Loading/loadingScreen.js.map +1 -1
  117. package/Materials/Background/backgroundMaterial.js.map +1 -1
  118. package/Materials/Node/Blocks/Dual/currentScreenBlock.d.ts +1 -1
  119. package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
  120. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
  121. package/Materials/Node/Blocks/Dual/sceneDepthBlock.d.ts +1 -1
  122. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js.map +1 -1
  123. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
  124. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js.map +1 -1
  125. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js.map +1 -1
  126. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
  127. package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
  128. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  129. package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
  130. package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
  131. package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
  132. package/Materials/Node/Blocks/addBlock.js +2 -0
  133. package/Materials/Node/Blocks/addBlock.js.map +1 -1
  134. package/Materials/Node/Blocks/clampBlock.js.map +1 -1
  135. package/Materials/Node/Blocks/cloudBlock.js.map +1 -1
  136. package/Materials/Node/Blocks/customBlock.d.ts +1 -0
  137. package/Materials/Node/Blocks/customBlock.js +18 -2
  138. package/Materials/Node/Blocks/customBlock.js.map +1 -1
  139. package/Materials/Node/Blocks/divideBlock.js +2 -0
  140. package/Materials/Node/Blocks/divideBlock.js.map +1 -1
  141. package/Materials/Node/Blocks/meshAttributeExistsBlock.js.map +1 -1
  142. package/Materials/Node/Blocks/multiplyBlock.js +2 -0
  143. package/Materials/Node/Blocks/multiplyBlock.js.map +1 -1
  144. package/Materials/Node/Blocks/remapBlock.js.map +1 -1
  145. package/Materials/Node/Blocks/subtractBlock.js +2 -0
  146. package/Materials/Node/Blocks/subtractBlock.js.map +1 -1
  147. package/Materials/Node/Blocks/triPlanarBlock.js.map +1 -1
  148. package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
  149. package/Materials/Node/nodeMaterial.js +2 -8
  150. package/Materials/Node/nodeMaterial.js.map +1 -1
  151. package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
  152. package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
  153. package/Materials/PBR/pbrBaseMaterial.js +1 -5
  154. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  155. package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
  156. package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
  157. package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -1
  158. package/Materials/PBR/pbrMaterial.d.ts +2 -1
  159. package/Materials/PBR/pbrMaterial.js +6 -13
  160. package/Materials/PBR/pbrMaterial.js.map +1 -1
  161. package/Materials/PBR/pbrMetallicRoughnessMaterial.js.map +1 -1
  162. package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
  163. package/Materials/PBR/pbrSpecularGlossinessMaterial.js.map +1 -1
  164. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  165. package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
  166. package/Materials/Textures/baseTexture.js.map +1 -1
  167. package/Materials/Textures/cubeTexture.js.map +1 -1
  168. package/Materials/Textures/equiRectangularCubeTexture.js.map +1 -1
  169. package/Materials/Textures/hdrCubeTexture.js.map +1 -1
  170. package/Materials/Textures/htmlElementTexture.js +1 -4
  171. package/Materials/Textures/htmlElementTexture.js.map +1 -1
  172. package/Materials/Textures/internalTexture.js.map +1 -1
  173. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  174. package/Materials/Textures/texture.js.map +1 -1
  175. package/Materials/Textures/videoTexture.js +9 -22
  176. package/Materials/Textures/videoTexture.js.map +1 -1
  177. package/Materials/colorCurves.js.map +1 -1
  178. package/Materials/effect.js.map +1 -1
  179. package/Materials/greasedLinePluginMaterial.d.ts +307 -0
  180. package/Materials/greasedLinePluginMaterial.js +553 -0
  181. package/Materials/greasedLinePluginMaterial.js.map +1 -0
  182. package/Materials/imageProcessingConfiguration.js.map +1 -1
  183. package/Materials/index.d.ts +1 -0
  184. package/Materials/index.js +1 -0
  185. package/Materials/index.js.map +1 -1
  186. package/Materials/material.d.ts +3 -0
  187. package/Materials/material.decalMapConfiguration.js.map +1 -1
  188. package/Materials/material.detailMapConfiguration.js.map +1 -1
  189. package/Materials/material.js +40 -5
  190. package/Materials/material.js.map +1 -1
  191. package/Materials/materialPluginBase.d.ts +2 -2
  192. package/Materials/materialPluginBase.js +2 -2
  193. package/Materials/materialPluginBase.js.map +1 -1
  194. package/Materials/materialPluginManager.d.ts +3 -2
  195. package/Materials/materialPluginManager.js +3 -1
  196. package/Materials/materialPluginManager.js.map +1 -1
  197. package/Materials/shaderMaterial.d.ts +3 -3
  198. package/Materials/shaderMaterial.js +6 -19
  199. package/Materials/shaderMaterial.js.map +1 -1
  200. package/Materials/standardMaterial.d.ts +2 -1
  201. package/Materials/standardMaterial.js +4 -1
  202. package/Materials/standardMaterial.js.map +1 -1
  203. package/Materials/uniformBuffer.js.map +1 -1
  204. package/Maths/math.vector.d.ts +2 -1
  205. package/Maths/math.vector.js +3 -2
  206. package/Maths/math.vector.js.map +1 -1
  207. package/Meshes/Builders/decalBuilder.js +4 -4
  208. package/Meshes/Builders/decalBuilder.js.map +1 -1
  209. package/Meshes/Builders/greasedLineBuilder.d.ts +105 -0
  210. package/Meshes/Builders/greasedLineBuilder.js +330 -0
  211. package/Meshes/Builders/greasedLineBuilder.js.map +1 -0
  212. package/Meshes/Builders/index.d.ts +1 -0
  213. package/Meshes/Builders/index.js +1 -0
  214. package/Meshes/Builders/index.js.map +1 -1
  215. package/Meshes/abstractMesh.d.ts +1 -1
  216. package/Meshes/abstractMesh.js +3 -2
  217. package/Meshes/abstractMesh.js.map +1 -1
  218. package/Meshes/greasedLineMesh.d.ts +189 -0
  219. package/Meshes/greasedLineMesh.js +437 -0
  220. package/Meshes/greasedLineMesh.js.map +1 -0
  221. package/Meshes/index.d.ts +1 -0
  222. package/Meshes/index.js +1 -0
  223. package/Meshes/index.js.map +1 -1
  224. package/Meshes/mesh.d.ts +4 -0
  225. package/Meshes/mesh.js +20 -10
  226. package/Meshes/mesh.js.map +1 -1
  227. package/Meshes/mesh.vertexData.js.map +1 -1
  228. package/Meshes/meshUVSpaceRenderer.js +1 -8
  229. package/Meshes/meshUVSpaceRenderer.js.map +1 -1
  230. package/Meshes/transformNode.js.map +1 -1
  231. package/Misc/basis.js.map +1 -1
  232. package/Misc/deepCopier.js +7 -1
  233. package/Misc/deepCopier.js.map +1 -1
  234. package/Misc/dumpTools.d.ts +4 -3
  235. package/Misc/dumpTools.js +5 -4
  236. package/Misc/dumpTools.js.map +1 -1
  237. package/Misc/environmentTextureTools.js +1 -1
  238. package/Misc/environmentTextureTools.js.map +1 -1
  239. package/Misc/fileTools.js +10 -10
  240. package/Misc/fileTools.js.map +1 -1
  241. package/Misc/greasedLineTools.d.ts +141 -0
  242. package/Misc/greasedLineTools.js +263 -0
  243. package/Misc/greasedLineTools.js.map +1 -0
  244. package/Misc/index.d.ts +1 -0
  245. package/Misc/index.js +1 -0
  246. package/Misc/index.js.map +1 -1
  247. package/Misc/khronosTextureContainer.js.map +1 -1
  248. package/Misc/sceneOptimizer.js.map +1 -1
  249. package/Misc/screenshotTools.d.ts +15 -5
  250. package/Misc/screenshotTools.js +23 -13
  251. package/Misc/screenshotTools.js.map +1 -1
  252. package/Misc/smartArray.js.map +1 -1
  253. package/Misc/tools.d.ts +21 -9
  254. package/Misc/tools.js +21 -9
  255. package/Misc/tools.js.map +1 -1
  256. package/Misc/videoRecorder.js +1 -4
  257. package/Misc/videoRecorder.js.map +1 -1
  258. package/Misc/virtualJoystick.js +1 -4
  259. package/Misc/virtualJoystick.js.map +1 -1
  260. package/Misc/webRequest.js.map +1 -1
  261. package/Morph/morphTarget.js.map +1 -1
  262. package/Morph/morphTargetManager.js.map +1 -1
  263. package/Offline/database.js.map +1 -1
  264. package/Particles/baseParticleSystem.js.map +1 -1
  265. package/Particles/gpuParticleSystem.js +2 -6
  266. package/Particles/gpuParticleSystem.js.map +1 -1
  267. package/Particles/particle.js.map +1 -1
  268. package/Particles/particleSystem.js +1 -1
  269. package/Particles/particleSystem.js.map +1 -1
  270. package/Particles/particleSystemSet.js.map +1 -1
  271. package/Physics/physicsHelper.js +4 -4
  272. package/Physics/physicsHelper.js.map +1 -1
  273. package/Physics/physicsRaycastResult.d.ts +3 -1
  274. package/Physics/physicsRaycastResult.js +10 -1
  275. package/Physics/physicsRaycastResult.js.map +1 -1
  276. package/Physics/v1/Plugins/ammoJSPlugin.js.map +1 -1
  277. package/Physics/v1/physicsImpostor.js.map +1 -1
  278. package/Physics/v2/IPhysicsEnginePlugin.d.ts +10 -0
  279. package/Physics/v2/IPhysicsEnginePlugin.js.map +1 -1
  280. package/Physics/v2/Plugins/havokPlugin.d.ts +3 -2
  281. package/Physics/v2/Plugins/havokPlugin.js +9 -6
  282. package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
  283. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js.map +1 -1
  284. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
  285. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js.map +1 -1
  286. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js.map +1 -1
  287. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js.map +1 -1
  288. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
  289. package/PostProcesses/blackAndWhitePostProcess.js.map +1 -1
  290. package/PostProcesses/bloomMergePostProcess.js.map +1 -1
  291. package/PostProcesses/blurPostProcess.js.map +1 -1
  292. package/PostProcesses/circleOfConfusionPostProcess.js.map +1 -1
  293. package/PostProcesses/colorCorrectionPostProcess.js.map +1 -1
  294. package/PostProcesses/convolutionPostProcess.js.map +1 -1
  295. package/PostProcesses/depthOfFieldBlurPostProcess.js.map +1 -1
  296. package/PostProcesses/extractHighlightsPostProcess.js.map +1 -1
  297. package/PostProcesses/filterPostProcess.js.map +1 -1
  298. package/PostProcesses/grainPostProcess.js.map +1 -1
  299. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  300. package/PostProcesses/motionBlurPostProcess.js.map +1 -1
  301. package/PostProcesses/postProcess.js.map +1 -1
  302. package/PostProcesses/refractionPostProcess.js.map +1 -1
  303. package/PostProcesses/screenSpaceCurvaturePostProcess.js.map +1 -1
  304. package/PostProcesses/screenSpaceReflectionPostProcess.js.map +1 -1
  305. package/PostProcesses/sharpenPostProcess.js.map +1 -1
  306. package/PostProcesses/volumetricLightScatteringPostProcess.js.map +1 -1
  307. package/Probes/reflectionProbe.js.map +1 -1
  308. package/Rendering/depthPeelingRenderer.js.map +1 -1
  309. package/Rendering/depthRenderer.js.map +1 -1
  310. package/Rendering/geometryBufferRenderer.js.map +1 -1
  311. package/Rendering/outlineRenderer.js.map +1 -1
  312. package/Rendering/prePassRenderer.js.map +1 -1
  313. package/Rendering/renderingGroup.js.map +1 -1
  314. package/Rendering/renderingManager.js.map +1 -1
  315. package/Rendering/subSurfaceConfiguration.js.map +1 -1
  316. package/Rendering/utilityLayerRenderer.js.map +1 -1
  317. package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js +4 -2
  318. package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js.map +1 -1
  319. package/Shaders/ShadersInclude/pbrDebug.js +3 -1
  320. package/Shaders/ShadersInclude/pbrDebug.js.map +1 -1
  321. package/Sprites/spriteManager.js.map +1 -1
  322. package/XR/features/WebXRAnchorSystem.js.map +1 -1
  323. package/XR/features/WebXRBackgroundRemover.js.map +1 -1
  324. package/XR/features/WebXRControllerMovement.js.map +1 -1
  325. package/XR/features/WebXRControllerPhysics.js +4 -13
  326. package/XR/features/WebXRControllerPhysics.js.map +1 -1
  327. package/XR/features/WebXRControllerPointerSelection.js.map +1 -1
  328. package/XR/features/WebXRControllerTeleportation.js.map +1 -1
  329. package/XR/features/WebXRDOMOverlay.js.map +1 -1
  330. package/XR/features/WebXRDepthSensing.js.map +1 -1
  331. package/XR/features/WebXREyeTracking.js.map +1 -1
  332. package/XR/features/WebXRFeaturePointSystem.js.map +1 -1
  333. package/XR/features/WebXRHandTracking.js +2 -8
  334. package/XR/features/WebXRHandTracking.js.map +1 -1
  335. package/XR/features/WebXRHitTest.js.map +1 -1
  336. package/XR/features/WebXRHitTestLegacy.js.map +1 -1
  337. package/XR/features/WebXRImageTracking.js.map +1 -1
  338. package/XR/features/WebXRLayers.js +2 -2
  339. package/XR/features/WebXRLayers.js.map +1 -1
  340. package/XR/features/WebXRLightEstimation.js.map +1 -1
  341. package/XR/features/WebXRMeshDetector.js.map +1 -1
  342. package/XR/features/WebXRNearInteraction.js.map +1 -1
  343. package/XR/features/WebXRPlaneDetector.js.map +1 -1
  344. package/XR/features/WebXRSpaceWarp.js.map +1 -1
  345. package/XR/motionController/webXRAbstractMotionController.js +1 -4
  346. package/XR/motionController/webXRAbstractMotionController.js.map +1 -1
  347. package/XR/motionController/webXRControllerComponent.js.map +1 -1
  348. package/XR/motionController/webXRGenericMotionController.js.map +1 -1
  349. package/XR/motionController/webXRHTCViveMotionController.js.map +1 -1
  350. package/XR/motionController/webXRMicrosoftMixedRealityController.js.map +1 -1
  351. package/XR/motionController/webXROculusTouchMotionController.js.map +1 -1
  352. package/XR/webXRCamera.js.map +1 -1
  353. package/XR/webXRDefaultExperience.js +6 -28
  354. package/XR/webXRDefaultExperience.js.map +1 -1
  355. package/XR/webXRFeaturesManager.js +1 -4
  356. package/XR/webXRFeaturesManager.js.map +1 -1
  357. package/XR/webXRInput.js +1 -6
  358. package/XR/webXRInput.js.map +1 -1
  359. package/abstractScene.js.map +1 -1
  360. package/assetContainer.js +1 -4
  361. package/assetContainer.js.map +1 -1
  362. package/node.js.map +1 -1
  363. package/package.json +2 -4
  364. package/scene.js +4 -10
  365. package/scene.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"engine.renderTarget.js","sourceRoot":"","sources":["../../../../../../lts/core/generated/Engines/WebGPU/Extensions/engine.renderTarget.ts"],"names":[],"mappings":"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","sourcesContent":["import { InternalTexture, InternalTextureSource } from \"../../../Materials/Textures/internalTexture\";\r\nimport type { RenderTargetCreationOptions, DepthTextureCreationOptions, TextureSize } from \"../../../Materials/Textures/textureCreationOptions\";\r\nimport type { Nullable } from \"../../../types\";\r\nimport { Constants } from \"../../constants\";\r\nimport type { RenderTargetWrapper } from \"../../renderTargetWrapper\";\r\nimport { WebGPUEngine } from \"../../webgpuEngine\";\r\nimport { WebGPURenderTargetWrapper } from \"../webgpuRenderTargetWrapper\";\r\n\r\nWebGPUEngine.prototype._createHardwareRenderTargetWrapper = function (isMulti: boolean, isCube: boolean, size: TextureSize): WebGPURenderTargetWrapper {\r\n const rtWrapper = new WebGPURenderTargetWrapper(isMulti, isCube, size, this);\r\n this._renderTargetWrapperCache.push(rtWrapper);\r\n return rtWrapper;\r\n};\r\n\r\nWebGPUEngine.prototype.createRenderTargetTexture = function (size: TextureSize, options: boolean | RenderTargetCreationOptions): WebGPURenderTargetWrapper {\r\n const rtWrapper = this._createHardwareRenderTargetWrapper(false, false, size) as WebGPURenderTargetWrapper;\r\n\r\n const fullOptions: RenderTargetCreationOptions = {};\r\n\r\n if (options !== undefined && typeof options === \"object\") {\r\n fullOptions.generateMipMaps = options.generateMipMaps;\r\n fullOptions.generateDepthBuffer = options.generateDepthBuffer === undefined ? true : options.generateDepthBuffer;\r\n fullOptions.generateStencilBuffer = fullOptions.generateDepthBuffer && options.generateStencilBuffer;\r\n fullOptions.samplingMode = options.samplingMode === undefined ? Constants.TEXTURE_TRILINEAR_SAMPLINGMODE : options.samplingMode;\r\n fullOptions.creationFlags = options.creationFlags ?? 0;\r\n fullOptions.noColorAttachment = !!options.noColorAttachment;\r\n fullOptions.samples = options.samples;\r\n fullOptions.label = options.label;\r\n } else {\r\n fullOptions.generateMipMaps = <boolean>options;\r\n fullOptions.generateDepthBuffer = true;\r\n fullOptions.generateStencilBuffer = false;\r\n fullOptions.samplingMode = Constants.TEXTURE_TRILINEAR_SAMPLINGMODE;\r\n fullOptions.creationFlags = 0;\r\n fullOptions.noColorAttachment = false;\r\n }\r\n\r\n const texture = fullOptions.noColorAttachment ? null : this._createInternalTexture(size, options, true, InternalTextureSource.RenderTarget);\r\n\r\n rtWrapper._samples = fullOptions.samples ?? 1;\r\n rtWrapper._generateDepthBuffer = fullOptions.generateDepthBuffer;\r\n rtWrapper._generateStencilBuffer = fullOptions.generateStencilBuffer ? true : false;\r\n\r\n rtWrapper.setTextures(texture);\r\n\r\n if (rtWrapper._generateDepthBuffer || rtWrapper._generateStencilBuffer) {\r\n rtWrapper.createDepthStencilTexture(\r\n 0,\r\n this._caps.textureFloatLinearFiltering &&\r\n (fullOptions.samplingMode === undefined ||\r\n fullOptions.samplingMode === Constants.TEXTURE_BILINEAR_SAMPLINGMODE ||\r\n fullOptions.samplingMode === Constants.TEXTURE_LINEAR_LINEAR ||\r\n fullOptions.samplingMode === Constants.TEXTURE_TRILINEAR_SAMPLINGMODE ||\r\n fullOptions.samplingMode === Constants.TEXTURE_LINEAR_LINEAR_MIPLINEAR ||\r\n fullOptions.samplingMode === Constants.TEXTURE_NEAREST_LINEAR_MIPNEAREST ||\r\n fullOptions.samplingMode === Constants.TEXTURE_NEAREST_LINEAR_MIPLINEAR ||\r\n fullOptions.samplingMode === Constants.TEXTURE_NEAREST_LINEAR ||\r\n fullOptions.samplingMode === Constants.TEXTURE_LINEAR_LINEAR_MIPNEAREST),\r\n rtWrapper._generateStencilBuffer,\r\n rtWrapper.samples,\r\n fullOptions.generateStencilBuffer ? Constants.TEXTUREFORMAT_DEPTH24_STENCIL8 : Constants.TEXTUREFORMAT_DEPTH32_FLOAT,\r\n fullOptions.label ? fullOptions.label + \"-DepthStencil\" : undefined\r\n );\r\n }\r\n\r\n if (texture) {\r\n if (options !== undefined && typeof options === \"object\" && options.createMipMaps && !fullOptions.generateMipMaps) {\r\n texture.generateMipMaps = true;\r\n }\r\n\r\n this._textureHelper.createGPUTextureForInternalTexture(texture, undefined, undefined, undefined, fullOptions.creationFlags);\r\n\r\n if (options !== undefined && typeof options === \"object\" && options.createMipMaps && !fullOptions.generateMipMaps) {\r\n texture.generateMipMaps = false;\r\n }\r\n }\r\n\r\n return rtWrapper;\r\n};\r\n\r\nWebGPUEngine.prototype._createDepthStencilTexture = function (size: TextureSize, options: DepthTextureCreationOptions): InternalTexture {\r\n const internalTexture = new InternalTexture(this, InternalTextureSource.DepthStencil);\r\n\r\n internalTexture.label = options.label;\r\n\r\n const internalOptions = {\r\n bilinearFiltering: false,\r\n comparisonFunction: 0,\r\n generateStencil: false,\r\n samples: 1,\r\n depthTextureFormat: options.generateStencil ? Constants.TEXTUREFORMAT_DEPTH24_STENCIL8 : Constants.TEXTUREFORMAT_DEPTH32_FLOAT,\r\n ...options,\r\n };\r\n\r\n internalTexture.format = internalOptions.depthTextureFormat;\r\n\r\n this._setupDepthStencilTexture(\r\n internalTexture,\r\n size,\r\n internalOptions.generateStencil,\r\n internalOptions.bilinearFiltering,\r\n internalOptions.comparisonFunction,\r\n internalOptions.samples\r\n );\r\n\r\n this._textureHelper.createGPUTextureForInternalTexture(internalTexture);\r\n\r\n this._internalTexturesCache.push(internalTexture);\r\n\r\n return internalTexture;\r\n};\r\n\r\nWebGPUEngine.prototype._setupDepthStencilTexture = function (\r\n internalTexture: InternalTexture,\r\n size: TextureSize,\r\n generateStencil: boolean,\r\n bilinearFiltering: boolean,\r\n comparisonFunction: number,\r\n samples = 1\r\n): void {\r\n const width = (<{ width: number; height: number; layers?: number }>size).width || <number>size;\r\n const height = (<{ width: number; height: number; layers?: number }>size).height || <number>size;\r\n const layers = (<{ width: number; height: number; layers?: number }>size).layers || 0;\r\n\r\n internalTexture.baseWidth = width;\r\n internalTexture.baseHeight = height;\r\n internalTexture.width = width;\r\n internalTexture.height = height;\r\n internalTexture.is2DArray = layers > 0;\r\n internalTexture.depth = layers;\r\n internalTexture.isReady = true;\r\n internalTexture.samples = samples;\r\n internalTexture.generateMipMaps = false;\r\n internalTexture.samplingMode = bilinearFiltering ? Constants.TEXTURE_BILINEAR_SAMPLINGMODE : Constants.TEXTURE_NEAREST_SAMPLINGMODE;\r\n internalTexture.type = Constants.TEXTURETYPE_FLOAT;\r\n internalTexture._comparisonFunction = comparisonFunction;\r\n internalTexture._cachedWrapU = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n internalTexture._cachedWrapV = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n};\r\n\r\nWebGPUEngine.prototype.updateRenderTargetTextureSampleCount = function (rtWrapper: Nullable<RenderTargetWrapper>, samples: number): number {\r\n if (!rtWrapper || !rtWrapper.texture || rtWrapper.samples === samples) {\r\n return samples;\r\n }\r\n\r\n samples = Math.min(samples, this.getCaps().maxMSAASamples);\r\n\r\n this._textureHelper.createMSAATexture(rtWrapper.texture, samples);\r\n\r\n if (rtWrapper._depthStencilTexture) {\r\n this._textureHelper.createMSAATexture(rtWrapper._depthStencilTexture, samples);\r\n rtWrapper._depthStencilTexture.samples = samples;\r\n }\r\n\r\n rtWrapper._samples = samples;\r\n rtWrapper.texture.samples = samples;\r\n\r\n return samples;\r\n};\r\n"]}
1
+ {"version":3,"file":"engine.renderTarget.js","sourceRoot":"","sources":["../../../../../../lts/core/generated/Engines/WebGPU/Extensions/engine.renderTarget.ts"],"names":[],"mappings":"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","sourcesContent":["import { InternalTexture, InternalTextureSource } from \"../../../Materials/Textures/internalTexture\";\r\nimport type { RenderTargetCreationOptions, DepthTextureCreationOptions, TextureSize } from \"../../../Materials/Textures/textureCreationOptions\";\r\nimport type { Nullable } from \"../../../types\";\r\nimport { Constants } from \"../../constants\";\r\nimport type { RenderTargetWrapper } from \"../../renderTargetWrapper\";\r\nimport { WebGPUEngine } from \"../../webgpuEngine\";\r\nimport { WebGPURenderTargetWrapper } from \"../webgpuRenderTargetWrapper\";\r\n\r\nWebGPUEngine.prototype._createHardwareRenderTargetWrapper = function (isMulti: boolean, isCube: boolean, size: TextureSize): WebGPURenderTargetWrapper {\r\n const rtWrapper = new WebGPURenderTargetWrapper(isMulti, isCube, size, this);\r\n this._renderTargetWrapperCache.push(rtWrapper);\r\n return rtWrapper;\r\n};\r\n\r\nWebGPUEngine.prototype.createRenderTargetTexture = function (size: TextureSize, options: boolean | RenderTargetCreationOptions): WebGPURenderTargetWrapper {\r\n const rtWrapper = this._createHardwareRenderTargetWrapper(false, false, size) as WebGPURenderTargetWrapper;\r\n\r\n const fullOptions: RenderTargetCreationOptions = {};\r\n\r\n if (options !== undefined && typeof options === \"object\") {\r\n fullOptions.generateMipMaps = options.generateMipMaps;\r\n fullOptions.generateDepthBuffer = options.generateDepthBuffer === undefined ? true : options.generateDepthBuffer;\r\n fullOptions.generateStencilBuffer = fullOptions.generateDepthBuffer && options.generateStencilBuffer;\r\n fullOptions.samplingMode = options.samplingMode === undefined ? Constants.TEXTURE_TRILINEAR_SAMPLINGMODE : options.samplingMode;\r\n fullOptions.creationFlags = options.creationFlags ?? 0;\r\n fullOptions.noColorAttachment = !!options.noColorAttachment;\r\n fullOptions.samples = options.samples;\r\n fullOptions.label = options.label;\r\n } else {\r\n fullOptions.generateMipMaps = <boolean>options;\r\n fullOptions.generateDepthBuffer = true;\r\n fullOptions.generateStencilBuffer = false;\r\n fullOptions.samplingMode = Constants.TEXTURE_TRILINEAR_SAMPLINGMODE;\r\n fullOptions.creationFlags = 0;\r\n fullOptions.noColorAttachment = false;\r\n }\r\n\r\n const texture = fullOptions.noColorAttachment ? null : this._createInternalTexture(size, options, true, InternalTextureSource.RenderTarget);\r\n\r\n rtWrapper._samples = fullOptions.samples ?? 1;\r\n rtWrapper._generateDepthBuffer = fullOptions.generateDepthBuffer;\r\n rtWrapper._generateStencilBuffer = fullOptions.generateStencilBuffer ? true : false;\r\n\r\n rtWrapper.setTextures(texture);\r\n\r\n if (rtWrapper._generateDepthBuffer || rtWrapper._generateStencilBuffer) {\r\n rtWrapper.createDepthStencilTexture(\r\n 0,\r\n this._caps.textureFloatLinearFiltering &&\r\n (fullOptions.samplingMode === undefined ||\r\n fullOptions.samplingMode === Constants.TEXTURE_BILINEAR_SAMPLINGMODE ||\r\n fullOptions.samplingMode === Constants.TEXTURE_LINEAR_LINEAR ||\r\n fullOptions.samplingMode === Constants.TEXTURE_TRILINEAR_SAMPLINGMODE ||\r\n fullOptions.samplingMode === Constants.TEXTURE_LINEAR_LINEAR_MIPLINEAR ||\r\n fullOptions.samplingMode === Constants.TEXTURE_NEAREST_LINEAR_MIPNEAREST ||\r\n fullOptions.samplingMode === Constants.TEXTURE_NEAREST_LINEAR_MIPLINEAR ||\r\n fullOptions.samplingMode === Constants.TEXTURE_NEAREST_LINEAR ||\r\n fullOptions.samplingMode === Constants.TEXTURE_LINEAR_LINEAR_MIPNEAREST),\r\n rtWrapper._generateStencilBuffer,\r\n rtWrapper.samples,\r\n fullOptions.generateStencilBuffer ? Constants.TEXTUREFORMAT_DEPTH24_STENCIL8 : Constants.TEXTUREFORMAT_DEPTH32_FLOAT,\r\n fullOptions.label ? fullOptions.label + \"-DepthStencil\" : undefined\r\n );\r\n }\r\n\r\n if (texture) {\r\n if (options !== undefined && typeof options === \"object\" && options.createMipMaps && !fullOptions.generateMipMaps) {\r\n texture.generateMipMaps = true;\r\n }\r\n\r\n this._textureHelper.createGPUTextureForInternalTexture(texture, undefined, undefined, undefined, fullOptions.creationFlags);\r\n\r\n if (options !== undefined && typeof options === \"object\" && options.createMipMaps && !fullOptions.generateMipMaps) {\r\n texture.generateMipMaps = false;\r\n }\r\n }\r\n\r\n return rtWrapper;\r\n};\r\n\r\nWebGPUEngine.prototype._createDepthStencilTexture = function (size: TextureSize, options: DepthTextureCreationOptions): InternalTexture {\r\n const internalTexture = new InternalTexture(this, InternalTextureSource.DepthStencil);\r\n\r\n internalTexture.label = options.label;\r\n\r\n const internalOptions = {\r\n bilinearFiltering: false,\r\n comparisonFunction: 0,\r\n generateStencil: false,\r\n samples: 1,\r\n depthTextureFormat: options.generateStencil ? Constants.TEXTUREFORMAT_DEPTH24_STENCIL8 : Constants.TEXTUREFORMAT_DEPTH32_FLOAT,\r\n ...options,\r\n };\r\n\r\n internalTexture.format = internalOptions.depthTextureFormat;\r\n\r\n this._setupDepthStencilTexture(\r\n internalTexture,\r\n size,\r\n internalOptions.generateStencil,\r\n internalOptions.bilinearFiltering,\r\n internalOptions.comparisonFunction,\r\n internalOptions.samples\r\n );\r\n\r\n this._textureHelper.createGPUTextureForInternalTexture(internalTexture);\r\n\r\n this._internalTexturesCache.push(internalTexture);\r\n\r\n return internalTexture;\r\n};\r\n\r\nWebGPUEngine.prototype._setupDepthStencilTexture = function (\r\n internalTexture: InternalTexture,\r\n size: TextureSize,\r\n generateStencil: boolean,\r\n bilinearFiltering: boolean,\r\n comparisonFunction: number,\r\n samples = 1\r\n): void {\r\n const width = (<{ width: number; height: number; layers?: number }>size).width || <number>size;\r\n const height = (<{ width: number; height: number; layers?: number }>size).height || <number>size;\r\n const layers = (<{ width: number; height: number; layers?: number }>size).layers || 0;\r\n\r\n internalTexture.baseWidth = width;\r\n internalTexture.baseHeight = height;\r\n internalTexture.width = width;\r\n internalTexture.height = height;\r\n internalTexture.is2DArray = layers > 0;\r\n internalTexture.depth = layers;\r\n internalTexture.isReady = true;\r\n internalTexture.samples = samples;\r\n internalTexture.generateMipMaps = false;\r\n internalTexture.samplingMode = bilinearFiltering ? Constants.TEXTURE_BILINEAR_SAMPLINGMODE : Constants.TEXTURE_NEAREST_SAMPLINGMODE;\r\n internalTexture.type = Constants.TEXTURETYPE_FLOAT;\r\n internalTexture._comparisonFunction = comparisonFunction;\r\n internalTexture._cachedWrapU = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n internalTexture._cachedWrapV = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n};\r\n\r\nWebGPUEngine.prototype.updateRenderTargetTextureSampleCount = function (rtWrapper: Nullable<RenderTargetWrapper>, samples: number): number {\r\n if (!rtWrapper || !rtWrapper.texture || rtWrapper.samples === samples) {\r\n return samples;\r\n }\r\n\r\n samples = Math.min(samples, this.getCaps().maxMSAASamples);\r\n\r\n this._textureHelper.createMSAATexture(rtWrapper.texture, samples);\r\n\r\n if (rtWrapper._depthStencilTexture) {\r\n this._textureHelper.createMSAATexture(rtWrapper._depthStencilTexture, samples);\r\n rtWrapper._depthStencilTexture.samples = samples;\r\n }\r\n\r\n rtWrapper._samples = samples;\r\n rtWrapper.texture.samples = samples;\r\n\r\n return samples;\r\n};\r\n"]}
@@ -3,16 +3,7 @@ import { InternalTexture, InternalTextureSource } from "../../../Materials/Textu
3
3
  import { WebGPUEngine } from "../../webgpuEngine.js";
4
4
  WebGPUEngine.prototype.createRenderTargetCubeTexture = function (size, options) {
5
5
  const rtWrapper = this._createHardwareRenderTargetWrapper(false, true, size);
6
- const fullOptions = {
7
- generateMipMaps: true,
8
- generateDepthBuffer: true,
9
- generateStencilBuffer: false,
10
- type: 0,
11
- samplingMode: 3,
12
- format: 5,
13
- samples: 1,
14
- ...options,
15
- };
6
+ const fullOptions = Object.assign({ generateMipMaps: true, generateDepthBuffer: true, generateStencilBuffer: false, type: 0, samplingMode: 3, format: 5, samples: 1 }, options);
16
7
  fullOptions.generateStencilBuffer = fullOptions.generateDepthBuffer && fullOptions.generateStencilBuffer;
17
8
  rtWrapper._generateDepthBuffer = fullOptions.generateDepthBuffer;
18
9
  rtWrapper._generateStencilBuffer = fullOptions.generateStencilBuffer;
@@ -1 +1 @@
1
- {"version":3,"file":"engine.renderTargetCube.js","sourceRoot":"","sources":["../../../../../../lts/core/generated/Engines/WebGPU/Extensions/engine.renderTargetCube.ts"],"names":[],"mappings":"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","sourcesContent":["import { InternalTexture, InternalTextureSource } from \"../../../Materials/Textures/internalTexture\";\r\nimport type { RenderTargetCreationOptions } from \"../../../Materials/Textures/textureCreationOptions\";\r\nimport { Constants } from \"../../constants\";\r\nimport type { RenderTargetWrapper } from \"../../renderTargetWrapper\";\r\nimport { WebGPUEngine } from \"../../webgpuEngine\";\r\n\r\nWebGPUEngine.prototype.createRenderTargetCubeTexture = function (size: number, options?: RenderTargetCreationOptions): RenderTargetWrapper {\r\n const rtWrapper = this._createHardwareRenderTargetWrapper(false, true, size);\r\n\r\n const fullOptions = {\r\n generateMipMaps: true,\r\n generateDepthBuffer: true,\r\n generateStencilBuffer: false,\r\n type: Constants.TEXTURETYPE_UNSIGNED_INT,\r\n samplingMode: Constants.TEXTURE_TRILINEAR_SAMPLINGMODE,\r\n format: Constants.TEXTUREFORMAT_RGBA,\r\n samples: 1,\r\n ...options,\r\n };\r\n fullOptions.generateStencilBuffer = fullOptions.generateDepthBuffer && fullOptions.generateStencilBuffer;\r\n\r\n rtWrapper._generateDepthBuffer = fullOptions.generateDepthBuffer;\r\n rtWrapper._generateStencilBuffer = fullOptions.generateStencilBuffer;\r\n\r\n const texture = new InternalTexture(this, InternalTextureSource.RenderTarget);\r\n\r\n texture.width = size;\r\n texture.height = size;\r\n texture.depth = 0;\r\n texture.isReady = true;\r\n texture.isCube = true;\r\n texture.samples = fullOptions.samples;\r\n texture.generateMipMaps = fullOptions.generateMipMaps;\r\n texture.samplingMode = fullOptions.samplingMode;\r\n texture.type = fullOptions.type;\r\n texture.format = fullOptions.format;\r\n\r\n this._internalTexturesCache.push(texture);\r\n rtWrapper.setTextures(texture);\r\n\r\n if (rtWrapper._generateDepthBuffer || rtWrapper._generateStencilBuffer) {\r\n rtWrapper.createDepthStencilTexture(\r\n 0,\r\n fullOptions.samplingMode === undefined ||\r\n fullOptions.samplingMode === Constants.TEXTURE_BILINEAR_SAMPLINGMODE ||\r\n fullOptions.samplingMode === Constants.TEXTURE_LINEAR_LINEAR ||\r\n fullOptions.samplingMode === Constants.TEXTURE_TRILINEAR_SAMPLINGMODE ||\r\n fullOptions.samplingMode === Constants.TEXTURE_LINEAR_LINEAR_MIPLINEAR ||\r\n fullOptions.samplingMode === Constants.TEXTURE_NEAREST_LINEAR_MIPNEAREST ||\r\n fullOptions.samplingMode === Constants.TEXTURE_NEAREST_LINEAR_MIPLINEAR ||\r\n fullOptions.samplingMode === Constants.TEXTURE_NEAREST_LINEAR ||\r\n fullOptions.samplingMode === Constants.TEXTURE_LINEAR_LINEAR_MIPNEAREST,\r\n rtWrapper._generateStencilBuffer,\r\n rtWrapper.samples\r\n );\r\n }\r\n\r\n if (options && options.createMipMaps && !fullOptions.generateMipMaps) {\r\n texture.generateMipMaps = true;\r\n }\r\n\r\n this._textureHelper.createGPUTextureForInternalTexture(texture);\r\n\r\n if (options && options.createMipMaps && !fullOptions.generateMipMaps) {\r\n texture.generateMipMaps = false;\r\n }\r\n\r\n return rtWrapper;\r\n};\r\n"]}
1
+ {"version":3,"file":"engine.renderTargetCube.js","sourceRoot":"","sources":["../../../../../../lts/core/generated/Engines/WebGPU/Extensions/engine.renderTargetCube.ts"],"names":[],"mappings":"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","sourcesContent":["import { InternalTexture, InternalTextureSource } from \"../../../Materials/Textures/internalTexture\";\r\nimport type { RenderTargetCreationOptions } from \"../../../Materials/Textures/textureCreationOptions\";\r\nimport { Constants } from \"../../constants\";\r\nimport type { RenderTargetWrapper } from \"../../renderTargetWrapper\";\r\nimport { WebGPUEngine } from \"../../webgpuEngine\";\r\n\r\nWebGPUEngine.prototype.createRenderTargetCubeTexture = function (size: number, options?: RenderTargetCreationOptions): RenderTargetWrapper {\r\n const rtWrapper = this._createHardwareRenderTargetWrapper(false, true, size);\r\n\r\n const fullOptions = {\r\n generateMipMaps: true,\r\n generateDepthBuffer: true,\r\n generateStencilBuffer: false,\r\n type: Constants.TEXTURETYPE_UNSIGNED_INT,\r\n samplingMode: Constants.TEXTURE_TRILINEAR_SAMPLINGMODE,\r\n format: Constants.TEXTUREFORMAT_RGBA,\r\n samples: 1,\r\n ...options,\r\n };\r\n fullOptions.generateStencilBuffer = fullOptions.generateDepthBuffer && fullOptions.generateStencilBuffer;\r\n\r\n rtWrapper._generateDepthBuffer = fullOptions.generateDepthBuffer;\r\n rtWrapper._generateStencilBuffer = fullOptions.generateStencilBuffer;\r\n\r\n const texture = new InternalTexture(this, InternalTextureSource.RenderTarget);\r\n\r\n texture.width = size;\r\n texture.height = size;\r\n texture.depth = 0;\r\n texture.isReady = true;\r\n texture.isCube = true;\r\n texture.samples = fullOptions.samples;\r\n texture.generateMipMaps = fullOptions.generateMipMaps;\r\n texture.samplingMode = fullOptions.samplingMode;\r\n texture.type = fullOptions.type;\r\n texture.format = fullOptions.format;\r\n\r\n this._internalTexturesCache.push(texture);\r\n rtWrapper.setTextures(texture);\r\n\r\n if (rtWrapper._generateDepthBuffer || rtWrapper._generateStencilBuffer) {\r\n rtWrapper.createDepthStencilTexture(\r\n 0,\r\n fullOptions.samplingMode === undefined ||\r\n fullOptions.samplingMode === Constants.TEXTURE_BILINEAR_SAMPLINGMODE ||\r\n fullOptions.samplingMode === Constants.TEXTURE_LINEAR_LINEAR ||\r\n fullOptions.samplingMode === Constants.TEXTURE_TRILINEAR_SAMPLINGMODE ||\r\n fullOptions.samplingMode === Constants.TEXTURE_LINEAR_LINEAR_MIPLINEAR ||\r\n fullOptions.samplingMode === Constants.TEXTURE_NEAREST_LINEAR_MIPNEAREST ||\r\n fullOptions.samplingMode === Constants.TEXTURE_NEAREST_LINEAR_MIPLINEAR ||\r\n fullOptions.samplingMode === Constants.TEXTURE_NEAREST_LINEAR ||\r\n fullOptions.samplingMode === Constants.TEXTURE_LINEAR_LINEAR_MIPNEAREST,\r\n rtWrapper._generateStencilBuffer,\r\n rtWrapper.samples\r\n );\r\n }\r\n\r\n if (options && options.createMipMaps && !fullOptions.generateMipMaps) {\r\n texture.generateMipMaps = true;\r\n }\r\n\r\n this._textureHelper.createGPUTextureForInternalTexture(texture);\r\n\r\n if (options && options.createMipMaps && !fullOptions.generateMipMaps) {\r\n texture.generateMipMaps = false;\r\n }\r\n\r\n return rtWrapper;\r\n};\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"webgpuCacheBindGroups.js","sourceRoot":"","sources":["../../../../../lts/core/generated/Engines/WebGPU/webgpuCacheBindGroups.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from \"../../Misc/logger\";\r\nimport type { WebGPUCacheSampler } from \"./webgpuCacheSampler\";\r\nimport type { WebGPUMaterialContext } from \"./webgpuMaterialContext\";\r\nimport type { WebGPUPipelineContext } from \"./webgpuPipelineContext\";\r\nimport type { WebGPUEngine } from \"../webgpuEngine\";\r\nimport type { WebGPUHardwareTexture } from \"./webgpuHardwareTexture\";\r\nimport type { InternalTexture } from \"../../Materials/Textures/internalTexture\";\r\nimport type { ExternalTexture } from \"../../Materials/Textures/externalTexture\";\r\nimport type { WebGPUDrawContext } from \"./webgpuDrawContext\";\r\n\r\nclass WebGPUBindGroupCacheNode {\r\n public values: { [id: number]: WebGPUBindGroupCacheNode };\r\n public bindGroups: GPUBindGroup[];\r\n\r\n constructor() {\r\n this.values = {};\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class WebGPUCacheBindGroups {\r\n public static NumBindGroupsCreatedTotal = 0;\r\n public static NumBindGroupsCreatedLastFrame = 0;\r\n public static NumBindGroupsLookupLastFrame = 0;\r\n public static NumBindGroupsNoLookupLastFrame = 0;\r\n\r\n private static _Cache: WebGPUBindGroupCacheNode = new WebGPUBindGroupCacheNode();\r\n\r\n private static _NumBindGroupsCreatedCurrentFrame = 0;\r\n private static _NumBindGroupsLookupCurrentFrame = 0;\r\n private static _NumBindGroupsNoLookupCurrentFrame = 0;\r\n\r\n private _device: GPUDevice;\r\n private _cacheSampler: WebGPUCacheSampler;\r\n private _engine: WebGPUEngine;\r\n\r\n public disabled = false;\r\n\r\n public static get Statistics() {\r\n return {\r\n totalCreated: WebGPUCacheBindGroups.NumBindGroupsCreatedTotal,\r\n lastFrameCreated: WebGPUCacheBindGroups.NumBindGroupsCreatedLastFrame,\r\n lookupLastFrame: WebGPUCacheBindGroups.NumBindGroupsLookupLastFrame,\r\n noLookupLastFrame: WebGPUCacheBindGroups.NumBindGroupsNoLookupLastFrame,\r\n };\r\n }\r\n\r\n constructor(device: GPUDevice, cacheSampler: WebGPUCacheSampler, engine: WebGPUEngine) {\r\n this._device = device;\r\n this._cacheSampler = cacheSampler;\r\n this._engine = engine;\r\n }\r\n\r\n public endFrame(): void {\r\n WebGPUCacheBindGroups.NumBindGroupsCreatedLastFrame = WebGPUCacheBindGroups._NumBindGroupsCreatedCurrentFrame;\r\n WebGPUCacheBindGroups.NumBindGroupsLookupLastFrame = WebGPUCacheBindGroups._NumBindGroupsLookupCurrentFrame;\r\n WebGPUCacheBindGroups.NumBindGroupsNoLookupLastFrame = WebGPUCacheBindGroups._NumBindGroupsNoLookupCurrentFrame;\r\n WebGPUCacheBindGroups._NumBindGroupsCreatedCurrentFrame = 0;\r\n WebGPUCacheBindGroups._NumBindGroupsLookupCurrentFrame = 0;\r\n WebGPUCacheBindGroups._NumBindGroupsNoLookupCurrentFrame = 0;\r\n }\r\n\r\n /**\r\n * Cache is currently based on the uniform/storage buffers, samplers and textures used by the binding groups.\r\n * Note that all uniform buffers have an offset of 0 in Babylon and we don't have a use case where we would have the same buffer used with different capacity values:\r\n * that means we don't need to factor in the offset/size of the buffer in the cache, only the id\r\n * @param webgpuPipelineContext\r\n * @param drawContext\r\n * @param materialContext\r\n */\r\n public getBindGroups(webgpuPipelineContext: WebGPUPipelineContext, drawContext: WebGPUDrawContext, materialContext: WebGPUMaterialContext): GPUBindGroup[] {\r\n let bindGroups: GPUBindGroup[] | undefined = undefined;\r\n let node = WebGPUCacheBindGroups._Cache;\r\n\r\n const cacheIsDisabled = this.disabled || materialContext.forceBindGroupCreation;\r\n if (!cacheIsDisabled) {\r\n if (!drawContext.isDirty(materialContext.updateId) && !materialContext.isDirty) {\r\n WebGPUCacheBindGroups._NumBindGroupsNoLookupCurrentFrame++;\r\n return drawContext.bindGroups!;\r\n }\r\n\r\n for (const bufferName of webgpuPipelineContext.shaderProcessingContext.bufferNames) {\r\n const uboId = drawContext.buffers[bufferName]?.uniqueId ?? 0;\r\n let nextNode = node.values[uboId];\r\n if (!nextNode) {\r\n nextNode = new WebGPUBindGroupCacheNode();\r\n node.values[uboId] = nextNode;\r\n }\r\n node = nextNode;\r\n }\r\n\r\n for (const samplerName of webgpuPipelineContext.shaderProcessingContext.samplerNames) {\r\n const samplerHashCode = materialContext.samplers[samplerName]?.hashCode ?? 0;\r\n let nextNode = node.values[samplerHashCode];\r\n if (!nextNode) {\r\n nextNode = new WebGPUBindGroupCacheNode();\r\n node.values[samplerHashCode] = nextNode;\r\n }\r\n node = nextNode;\r\n }\r\n\r\n for (const textureName of webgpuPipelineContext.shaderProcessingContext.textureNames) {\r\n const textureId = materialContext.textures[textureName]?.texture?.uniqueId ?? 0;\r\n let nextNode = node.values[textureId];\r\n if (!nextNode) {\r\n nextNode = new WebGPUBindGroupCacheNode();\r\n node.values[textureId] = nextNode;\r\n }\r\n node = nextNode;\r\n }\r\n\r\n bindGroups = node.bindGroups;\r\n }\r\n\r\n drawContext.resetIsDirty(materialContext.updateId);\r\n materialContext.isDirty = false;\r\n\r\n if (bindGroups) {\r\n drawContext.bindGroups = bindGroups;\r\n WebGPUCacheBindGroups._NumBindGroupsLookupCurrentFrame++;\r\n return bindGroups;\r\n }\r\n\r\n bindGroups = [];\r\n drawContext.bindGroups = bindGroups;\r\n\r\n if (!cacheIsDisabled) {\r\n node.bindGroups = bindGroups;\r\n }\r\n\r\n WebGPUCacheBindGroups.NumBindGroupsCreatedTotal++;\r\n WebGPUCacheBindGroups._NumBindGroupsCreatedCurrentFrame++;\r\n\r\n const bindGroupLayouts = webgpuPipelineContext.bindGroupLayouts[materialContext.textureState];\r\n for (let i = 0; i < webgpuPipelineContext.shaderProcessingContext.bindGroupLayoutEntries.length; i++) {\r\n const setDefinition = webgpuPipelineContext.shaderProcessingContext.bindGroupLayoutEntries[i];\r\n\r\n const entries = webgpuPipelineContext.shaderProcessingContext.bindGroupEntries[i];\r\n for (let j = 0; j < setDefinition.length; j++) {\r\n const entry = webgpuPipelineContext.shaderProcessingContext.bindGroupLayoutEntries[i][j];\r\n const entryInfo = webgpuPipelineContext.shaderProcessingContext.bindGroupLayoutEntryInfo[i][entry.binding];\r\n const name = entryInfo.nameInArrayOfTexture ?? entryInfo.name;\r\n\r\n if (entry.sampler) {\r\n const bindingInfo = materialContext.samplers[name];\r\n if (bindingInfo) {\r\n const sampler = bindingInfo.sampler;\r\n if (!sampler) {\r\n if (this._engine.dbgSanityChecks) {\r\n Logger.Error(\r\n `Trying to bind a null sampler! entry=${JSON.stringify(entry)}, name=${name}, bindingInfo=${JSON.stringify(\r\n bindingInfo,\r\n (key: string, value: any) => (key === \"texture\" ? \"<no dump>\" : value)\r\n )}, materialContext.uniqueId=${materialContext.uniqueId}`,\r\n 50\r\n );\r\n }\r\n continue;\r\n }\r\n entries[j].resource = this._cacheSampler.getSampler(sampler, false, bindingInfo.hashCode);\r\n } else {\r\n Logger.Error(\r\n `Sampler \"${name}\" could not be bound. entry=${JSON.stringify(entry)}, materialContext=${JSON.stringify(materialContext, (key: string, value: any) =>\r\n key === \"texture\" || key === \"sampler\" ? \"<no dump>\" : value\r\n )}`,\r\n 50\r\n );\r\n }\r\n } else if (entry.texture || entry.storageTexture) {\r\n const bindingInfo = materialContext.textures[name];\r\n if (bindingInfo) {\r\n if (this._engine.dbgSanityChecks && bindingInfo.texture === null) {\r\n Logger.Error(\r\n `Trying to bind a null texture! entry=${JSON.stringify(entry)}, bindingInfo=${JSON.stringify(bindingInfo, (key: string, value: any) =>\r\n key === \"texture\" ? \"<no dump>\" : value\r\n )}, materialContext.uniqueId=${materialContext.uniqueId}`,\r\n 50\r\n );\r\n continue;\r\n }\r\n const hardwareTexture = (bindingInfo.texture as InternalTexture)._hardwareTexture as WebGPUHardwareTexture;\r\n\r\n if (\r\n this._engine.dbgSanityChecks &&\r\n (!hardwareTexture || (entry.texture && !hardwareTexture.view) || (entry.storageTexture && !hardwareTexture.viewForWriting))\r\n ) {\r\n Logger.Error(\r\n `Trying to bind a null gpu texture or view! entry=${JSON.stringify(entry)}, name=${name}, bindingInfo=${JSON.stringify(\r\n bindingInfo,\r\n (key: string, value: any) => (key === \"texture\" ? \"<no dump>\" : value)\r\n )}, isReady=${bindingInfo.texture?.isReady}, materialContext.uniqueId=${materialContext.uniqueId}`,\r\n 50\r\n );\r\n continue;\r\n }\r\n\r\n entries[j].resource = entry.storageTexture ? hardwareTexture.viewForWriting! : hardwareTexture.view!;\r\n } else {\r\n Logger.Error(\r\n `Texture \"${name}\" could not be bound. entry=${JSON.stringify(entry)}, materialContext=${JSON.stringify(materialContext, (key: string, value: any) =>\r\n key === \"texture\" || key === \"sampler\" ? \"<no dump>\" : value\r\n )}`,\r\n 50\r\n );\r\n }\r\n } else if (entry.externalTexture) {\r\n const bindingInfo = materialContext.textures[name];\r\n if (bindingInfo) {\r\n if (this._engine.dbgSanityChecks && bindingInfo.texture === null) {\r\n Logger.Error(\r\n `Trying to bind a null external texture! entry=${JSON.stringify(entry)}, name=${name}, bindingInfo=${JSON.stringify(\r\n bindingInfo,\r\n (key: string, value: any) => (key === \"texture\" ? \"<no dump>\" : value)\r\n )}, materialContext.uniqueId=${materialContext.uniqueId}`,\r\n 50\r\n );\r\n continue;\r\n }\r\n const externalTexture = (bindingInfo.texture as ExternalTexture).underlyingResource;\r\n\r\n if (this._engine.dbgSanityChecks && !externalTexture) {\r\n Logger.Error(\r\n `Trying to bind a null gpu external texture! entry=${JSON.stringify(entry)}, name=${name}, bindingInfo=${JSON.stringify(\r\n bindingInfo,\r\n (key: string, value: any) => (key === \"texture\" ? \"<no dump>\" : value)\r\n )}, isReady=${bindingInfo.texture?.isReady}, materialContext.uniqueId=${materialContext.uniqueId}`,\r\n 50\r\n );\r\n continue;\r\n }\r\n\r\n entries[j].resource = this._device.importExternalTexture({ source: externalTexture });\r\n } else {\r\n Logger.Error(\r\n `Texture \"${name}\" could not be bound. entry=${JSON.stringify(entry)}, materialContext=${JSON.stringify(materialContext, (key: string, value: any) =>\r\n key === \"texture\" || key === \"sampler\" ? \"<no dump>\" : value\r\n )}`,\r\n 50\r\n );\r\n }\r\n } else if (entry.buffer) {\r\n const dataBuffer = drawContext.buffers[name];\r\n if (dataBuffer) {\r\n const webgpuBuffer = dataBuffer.underlyingResource as GPUBuffer;\r\n (entries[j].resource as GPUBufferBinding).buffer = webgpuBuffer;\r\n (entries[j].resource as GPUBufferBinding).size = dataBuffer.capacity;\r\n } else {\r\n Logger.Error(\r\n `Can't find buffer \"${name}\". entry=${JSON.stringify(entry)}, buffers=${JSON.stringify(drawContext.buffers)}, drawContext.uniqueId=${\r\n drawContext.uniqueId\r\n }`,\r\n 50\r\n );\r\n }\r\n }\r\n }\r\n\r\n const groupLayout = bindGroupLayouts[i];\r\n bindGroups[i] = this._device.createBindGroup({\r\n layout: groupLayout,\r\n entries,\r\n });\r\n }\r\n\r\n return bindGroups;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"webgpuCacheBindGroups.js","sourceRoot":"","sources":["../../../../../lts/core/generated/Engines/WebGPU/webgpuCacheBindGroups.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from \"../../Misc/logger\";\r\nimport type { WebGPUCacheSampler } from \"./webgpuCacheSampler\";\r\nimport type { WebGPUMaterialContext } from \"./webgpuMaterialContext\";\r\nimport type { WebGPUPipelineContext } from \"./webgpuPipelineContext\";\r\nimport type { WebGPUEngine } from \"../webgpuEngine\";\r\nimport type { WebGPUHardwareTexture } from \"./webgpuHardwareTexture\";\r\nimport type { InternalTexture } from \"../../Materials/Textures/internalTexture\";\r\nimport type { ExternalTexture } from \"../../Materials/Textures/externalTexture\";\r\nimport type { WebGPUDrawContext } from \"./webgpuDrawContext\";\r\n\r\nclass WebGPUBindGroupCacheNode {\r\n public values: { [id: number]: WebGPUBindGroupCacheNode };\r\n public bindGroups: GPUBindGroup[];\r\n\r\n constructor() {\r\n this.values = {};\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class WebGPUCacheBindGroups {\r\n public static NumBindGroupsCreatedTotal = 0;\r\n public static NumBindGroupsCreatedLastFrame = 0;\r\n public static NumBindGroupsLookupLastFrame = 0;\r\n public static NumBindGroupsNoLookupLastFrame = 0;\r\n\r\n private static _Cache: WebGPUBindGroupCacheNode = new WebGPUBindGroupCacheNode();\r\n\r\n private static _NumBindGroupsCreatedCurrentFrame = 0;\r\n private static _NumBindGroupsLookupCurrentFrame = 0;\r\n private static _NumBindGroupsNoLookupCurrentFrame = 0;\r\n\r\n private _device: GPUDevice;\r\n private _cacheSampler: WebGPUCacheSampler;\r\n private _engine: WebGPUEngine;\r\n\r\n public disabled = false;\r\n\r\n public static get Statistics() {\r\n return {\r\n totalCreated: WebGPUCacheBindGroups.NumBindGroupsCreatedTotal,\r\n lastFrameCreated: WebGPUCacheBindGroups.NumBindGroupsCreatedLastFrame,\r\n lookupLastFrame: WebGPUCacheBindGroups.NumBindGroupsLookupLastFrame,\r\n noLookupLastFrame: WebGPUCacheBindGroups.NumBindGroupsNoLookupLastFrame,\r\n };\r\n }\r\n\r\n constructor(device: GPUDevice, cacheSampler: WebGPUCacheSampler, engine: WebGPUEngine) {\r\n this._device = device;\r\n this._cacheSampler = cacheSampler;\r\n this._engine = engine;\r\n }\r\n\r\n public endFrame(): void {\r\n WebGPUCacheBindGroups.NumBindGroupsCreatedLastFrame = WebGPUCacheBindGroups._NumBindGroupsCreatedCurrentFrame;\r\n WebGPUCacheBindGroups.NumBindGroupsLookupLastFrame = WebGPUCacheBindGroups._NumBindGroupsLookupCurrentFrame;\r\n WebGPUCacheBindGroups.NumBindGroupsNoLookupLastFrame = WebGPUCacheBindGroups._NumBindGroupsNoLookupCurrentFrame;\r\n WebGPUCacheBindGroups._NumBindGroupsCreatedCurrentFrame = 0;\r\n WebGPUCacheBindGroups._NumBindGroupsLookupCurrentFrame = 0;\r\n WebGPUCacheBindGroups._NumBindGroupsNoLookupCurrentFrame = 0;\r\n }\r\n\r\n /**\r\n * Cache is currently based on the uniform/storage buffers, samplers and textures used by the binding groups.\r\n * Note that all uniform buffers have an offset of 0 in Babylon and we don't have a use case where we would have the same buffer used with different capacity values:\r\n * that means we don't need to factor in the offset/size of the buffer in the cache, only the id\r\n * @param webgpuPipelineContext\r\n * @param drawContext\r\n * @param materialContext\r\n */\r\n public getBindGroups(webgpuPipelineContext: WebGPUPipelineContext, drawContext: WebGPUDrawContext, materialContext: WebGPUMaterialContext): GPUBindGroup[] {\r\n let bindGroups: GPUBindGroup[] | undefined = undefined;\r\n let node = WebGPUCacheBindGroups._Cache;\r\n\r\n const cacheIsDisabled = this.disabled || materialContext.forceBindGroupCreation;\r\n if (!cacheIsDisabled) {\r\n if (!drawContext.isDirty(materialContext.updateId) && !materialContext.isDirty) {\r\n WebGPUCacheBindGroups._NumBindGroupsNoLookupCurrentFrame++;\r\n return drawContext.bindGroups!;\r\n }\r\n\r\n for (const bufferName of webgpuPipelineContext.shaderProcessingContext.bufferNames) {\r\n const uboId = drawContext.buffers[bufferName]?.uniqueId ?? 0;\r\n let nextNode = node.values[uboId];\r\n if (!nextNode) {\r\n nextNode = new WebGPUBindGroupCacheNode();\r\n node.values[uboId] = nextNode;\r\n }\r\n node = nextNode;\r\n }\r\n\r\n for (const samplerName of webgpuPipelineContext.shaderProcessingContext.samplerNames) {\r\n const samplerHashCode = materialContext.samplers[samplerName]?.hashCode ?? 0;\r\n let nextNode = node.values[samplerHashCode];\r\n if (!nextNode) {\r\n nextNode = new WebGPUBindGroupCacheNode();\r\n node.values[samplerHashCode] = nextNode;\r\n }\r\n node = nextNode;\r\n }\r\n\r\n for (const textureName of webgpuPipelineContext.shaderProcessingContext.textureNames) {\r\n const textureId = materialContext.textures[textureName]?.texture?.uniqueId ?? 0;\r\n let nextNode = node.values[textureId];\r\n if (!nextNode) {\r\n nextNode = new WebGPUBindGroupCacheNode();\r\n node.values[textureId] = nextNode;\r\n }\r\n node = nextNode;\r\n }\r\n\r\n bindGroups = node.bindGroups;\r\n }\r\n\r\n drawContext.resetIsDirty(materialContext.updateId);\r\n materialContext.isDirty = false;\r\n\r\n if (bindGroups) {\r\n drawContext.bindGroups = bindGroups;\r\n WebGPUCacheBindGroups._NumBindGroupsLookupCurrentFrame++;\r\n return bindGroups;\r\n }\r\n\r\n bindGroups = [];\r\n drawContext.bindGroups = bindGroups;\r\n\r\n if (!cacheIsDisabled) {\r\n node.bindGroups = bindGroups;\r\n }\r\n\r\n WebGPUCacheBindGroups.NumBindGroupsCreatedTotal++;\r\n WebGPUCacheBindGroups._NumBindGroupsCreatedCurrentFrame++;\r\n\r\n const bindGroupLayouts = webgpuPipelineContext.bindGroupLayouts[materialContext.textureState];\r\n for (let i = 0; i < webgpuPipelineContext.shaderProcessingContext.bindGroupLayoutEntries.length; i++) {\r\n const setDefinition = webgpuPipelineContext.shaderProcessingContext.bindGroupLayoutEntries[i];\r\n\r\n const entries = webgpuPipelineContext.shaderProcessingContext.bindGroupEntries[i];\r\n for (let j = 0; j < setDefinition.length; j++) {\r\n const entry = webgpuPipelineContext.shaderProcessingContext.bindGroupLayoutEntries[i][j];\r\n const entryInfo = webgpuPipelineContext.shaderProcessingContext.bindGroupLayoutEntryInfo[i][entry.binding];\r\n const name = entryInfo.nameInArrayOfTexture ?? entryInfo.name;\r\n\r\n if (entry.sampler) {\r\n const bindingInfo = materialContext.samplers[name];\r\n if (bindingInfo) {\r\n const sampler = bindingInfo.sampler;\r\n if (!sampler) {\r\n if (this._engine.dbgSanityChecks) {\r\n Logger.Error(\r\n `Trying to bind a null sampler! entry=${JSON.stringify(entry)}, name=${name}, bindingInfo=${JSON.stringify(\r\n bindingInfo,\r\n (key: string, value: any) => (key === \"texture\" ? \"<no dump>\" : value)\r\n )}, materialContext.uniqueId=${materialContext.uniqueId}`,\r\n 50\r\n );\r\n }\r\n continue;\r\n }\r\n entries[j].resource = this._cacheSampler.getSampler(sampler, false, bindingInfo.hashCode);\r\n } else {\r\n Logger.Error(\r\n `Sampler \"${name}\" could not be bound. entry=${JSON.stringify(entry)}, materialContext=${JSON.stringify(materialContext, (key: string, value: any) =>\r\n key === \"texture\" || key === \"sampler\" ? \"<no dump>\" : value\r\n )}`,\r\n 50\r\n );\r\n }\r\n } else if (entry.texture || entry.storageTexture) {\r\n const bindingInfo = materialContext.textures[name];\r\n if (bindingInfo) {\r\n if (this._engine.dbgSanityChecks && bindingInfo.texture === null) {\r\n Logger.Error(\r\n `Trying to bind a null texture! entry=${JSON.stringify(entry)}, bindingInfo=${JSON.stringify(bindingInfo, (key: string, value: any) =>\r\n key === \"texture\" ? \"<no dump>\" : value\r\n )}, materialContext.uniqueId=${materialContext.uniqueId}`,\r\n 50\r\n );\r\n continue;\r\n }\r\n const hardwareTexture = (bindingInfo.texture as InternalTexture)._hardwareTexture as WebGPUHardwareTexture;\r\n\r\n if (\r\n this._engine.dbgSanityChecks &&\r\n (!hardwareTexture || (entry.texture && !hardwareTexture.view) || (entry.storageTexture && !hardwareTexture.viewForWriting))\r\n ) {\r\n Logger.Error(\r\n `Trying to bind a null gpu texture or view! entry=${JSON.stringify(entry)}, name=${name}, bindingInfo=${JSON.stringify(\r\n bindingInfo,\r\n (key: string, value: any) => (key === \"texture\" ? \"<no dump>\" : value)\r\n )}, isReady=${bindingInfo.texture?.isReady}, materialContext.uniqueId=${materialContext.uniqueId}`,\r\n 50\r\n );\r\n continue;\r\n }\r\n\r\n entries[j].resource = entry.storageTexture ? hardwareTexture.viewForWriting! : hardwareTexture.view!;\r\n } else {\r\n Logger.Error(\r\n `Texture \"${name}\" could not be bound. entry=${JSON.stringify(entry)}, materialContext=${JSON.stringify(materialContext, (key: string, value: any) =>\r\n key === \"texture\" || key === \"sampler\" ? \"<no dump>\" : value\r\n )}`,\r\n 50\r\n );\r\n }\r\n } else if (entry.externalTexture) {\r\n const bindingInfo = materialContext.textures[name];\r\n if (bindingInfo) {\r\n if (this._engine.dbgSanityChecks && bindingInfo.texture === null) {\r\n Logger.Error(\r\n `Trying to bind a null external texture! entry=${JSON.stringify(entry)}, name=${name}, bindingInfo=${JSON.stringify(\r\n bindingInfo,\r\n (key: string, value: any) => (key === \"texture\" ? \"<no dump>\" : value)\r\n )}, materialContext.uniqueId=${materialContext.uniqueId}`,\r\n 50\r\n );\r\n continue;\r\n }\r\n const externalTexture = (bindingInfo.texture as ExternalTexture).underlyingResource;\r\n\r\n if (this._engine.dbgSanityChecks && !externalTexture) {\r\n Logger.Error(\r\n `Trying to bind a null gpu external texture! entry=${JSON.stringify(entry)}, name=${name}, bindingInfo=${JSON.stringify(\r\n bindingInfo,\r\n (key: string, value: any) => (key === \"texture\" ? \"<no dump>\" : value)\r\n )}, isReady=${bindingInfo.texture?.isReady}, materialContext.uniqueId=${materialContext.uniqueId}`,\r\n 50\r\n );\r\n continue;\r\n }\r\n\r\n entries[j].resource = this._device.importExternalTexture({ source: externalTexture });\r\n } else {\r\n Logger.Error(\r\n `Texture \"${name}\" could not be bound. entry=${JSON.stringify(entry)}, materialContext=${JSON.stringify(materialContext, (key: string, value: any) =>\r\n key === \"texture\" || key === \"sampler\" ? \"<no dump>\" : value\r\n )}`,\r\n 50\r\n );\r\n }\r\n } else if (entry.buffer) {\r\n const dataBuffer = drawContext.buffers[name];\r\n if (dataBuffer) {\r\n const webgpuBuffer = dataBuffer.underlyingResource as GPUBuffer;\r\n (entries[j].resource as GPUBufferBinding).buffer = webgpuBuffer;\r\n (entries[j].resource as GPUBufferBinding).size = dataBuffer.capacity;\r\n } else {\r\n Logger.Error(\r\n `Can't find buffer \"${name}\". entry=${JSON.stringify(entry)}, buffers=${JSON.stringify(drawContext.buffers)}, drawContext.uniqueId=${\r\n drawContext.uniqueId\r\n }`,\r\n 50\r\n );\r\n }\r\n }\r\n }\r\n\r\n const groupLayout = bindGroupLayouts[i];\r\n bindGroups[i] = this._device.createBindGroup({\r\n layout: groupLayout,\r\n entries,\r\n });\r\n }\r\n\r\n return bindGroups;\r\n }\r\n}\r\n"]}