@babylonjs/core 5.0.0-alpha.59 → 5.0.0-alpha.62

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 (400) hide show
  1. package/Animations/animation.d.ts +20 -0
  2. package/Animations/animation.js +57 -8
  3. package/Animations/animation.js.map +1 -1
  4. package/Animations/animationKey.d.ts +4 -0
  5. package/Animations/animationKey.js +4 -0
  6. package/Animations/animationKey.js.map +1 -1
  7. package/Audio/sound.js +1 -1
  8. package/Audio/sound.js.map +1 -1
  9. package/BakedVertexAnimation/bakedVertexAnimationManager.d.ts +130 -0
  10. package/BakedVertexAnimation/bakedVertexAnimationManager.js +134 -0
  11. package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -0
  12. package/BakedVertexAnimation/index.d.ts +2 -0
  13. package/BakedVertexAnimation/index.js +3 -0
  14. package/BakedVertexAnimation/index.js.map +1 -0
  15. package/BakedVertexAnimation/vertexAnimationBaker.d.ts +65 -0
  16. package/BakedVertexAnimation/vertexAnimationBaker.js +155 -0
  17. package/BakedVertexAnimation/vertexAnimationBaker.js.map +1 -0
  18. package/Behaviors/Cameras/autoRotationBehavior.d.ts +5 -0
  19. package/Behaviors/Cameras/autoRotationBehavior.js +7 -0
  20. package/Behaviors/Cameras/autoRotationBehavior.js.map +1 -1
  21. package/Behaviors/Cameras/framingBehavior.d.ts +5 -0
  22. package/Behaviors/Cameras/framingBehavior.js +8 -1
  23. package/Behaviors/Cameras/framingBehavior.js.map +1 -1
  24. package/Bones/bone.d.ts +3 -1
  25. package/Bones/bone.js +4 -1
  26. package/Bones/bone.js.map +1 -1
  27. package/Cameras/Inputs/BaseCameraPointersInput.js +4 -6
  28. package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
  29. package/Cameras/Inputs/flyCameraMouseInput.js +4 -4
  30. package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
  31. package/Cameras/Inputs/freeCameraMouseInput.js +4 -4
  32. package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
  33. package/Cameras/camera.js +8 -2
  34. package/Cameras/camera.js.map +1 -1
  35. package/Cameras/targetCamera.js +1 -1
  36. package/Cameras/targetCamera.js.map +1 -1
  37. package/Culling/boundingBox.d.ts +4 -0
  38. package/Culling/boundingBox.js +8 -0
  39. package/Culling/boundingBox.js.map +1 -1
  40. package/Debug/physicsViewer.js +1 -1
  41. package/Debug/physicsViewer.js.map +1 -1
  42. package/Debug/skeletonViewer.js +2 -2
  43. package/Debug/skeletonViewer.js.map +1 -1
  44. package/DeviceInput/Implementations/nativeDeviceInputWrapper.d.ts +6 -1
  45. package/DeviceInput/Implementations/nativeDeviceInputWrapper.js +16 -1
  46. package/DeviceInput/Implementations/nativeDeviceInputWrapper.js.map +1 -1
  47. package/DeviceInput/Implementations/webDeviceInputSystem.js +10 -10
  48. package/DeviceInput/Implementations/webDeviceInputSystem.js.map +1 -1
  49. package/DeviceInput/deviceInputSystem.js +6 -1
  50. package/DeviceInput/deviceInputSystem.js.map +1 -1
  51. package/Engines/Extensions/engine.dynamicTexture.d.ts +2 -1
  52. package/Engines/Extensions/engine.dynamicTexture.js +2 -1
  53. package/Engines/Extensions/engine.dynamicTexture.js.map +1 -1
  54. package/Engines/Extensions/engine.multiview.js +17 -6
  55. package/Engines/Extensions/engine.multiview.js.map +1 -1
  56. package/Engines/WebGPU/Extensions/engine.dynamicTexture.js +3 -11
  57. package/Engines/WebGPU/Extensions/engine.dynamicTexture.js.map +1 -1
  58. package/Engines/WebGPU/Extensions/engine.multiRender.js +0 -4
  59. package/Engines/WebGPU/Extensions/engine.multiRender.js.map +1 -1
  60. package/Engines/WebGPU/Extensions/engine.query.js +19 -3
  61. package/Engines/WebGPU/Extensions/engine.query.js.map +1 -1
  62. package/Engines/WebGPU/Extensions/engine.renderTarget.js +0 -4
  63. package/Engines/WebGPU/Extensions/engine.renderTarget.js.map +1 -1
  64. package/Engines/WebGPU/webgpuBundleList.d.ts +13 -0
  65. package/Engines/WebGPU/webgpuBundleList.js +27 -0
  66. package/Engines/WebGPU/webgpuBundleList.js.map +1 -1
  67. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +42 -61
  68. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  69. package/Engines/WebGPU/webgpuCacheSampler.js +6 -4
  70. package/Engines/WebGPU/webgpuCacheSampler.js.map +1 -1
  71. package/Engines/WebGPU/webgpuConstants.d.ts +57 -13
  72. package/Engines/WebGPU/webgpuConstants.js +62 -13
  73. package/Engines/WebGPU/webgpuConstants.js.map +1 -1
  74. package/Engines/WebGPU/webgpuHardwareTexture.d.ts +25 -2
  75. package/Engines/WebGPU/webgpuHardwareTexture.js +2 -1
  76. package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
  77. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.d.ts +6 -0
  78. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +6 -0
  79. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
  80. package/Engines/WebGPU/webgpuSnapshotRendering.d.ts +27 -0
  81. package/Engines/WebGPU/webgpuSnapshotRendering.js +107 -0
  82. package/Engines/WebGPU/webgpuSnapshotRendering.js.map +1 -0
  83. package/Engines/WebGPU/webgpuTextureHelper.d.ts +4 -4
  84. package/Engines/WebGPU/webgpuTextureHelper.js +273 -80
  85. package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
  86. package/Engines/constants.d.ts +2 -0
  87. package/Engines/constants.js +2 -0
  88. package/Engines/constants.js.map +1 -1
  89. package/Engines/engine.d.ts +94 -40
  90. package/Engines/engine.js +43 -1
  91. package/Engines/engine.js.map +1 -1
  92. package/Engines/engineFeatures.d.ts +2 -0
  93. package/Engines/engineFeatures.js.map +1 -1
  94. package/Engines/index.d.ts +1 -0
  95. package/Engines/index.js +1 -0
  96. package/Engines/index.js.map +1 -1
  97. package/Engines/nativeEngine.js +49 -23
  98. package/Engines/nativeEngine.js.map +1 -1
  99. package/Engines/nullEngine.js +1 -0
  100. package/Engines/nullEngine.js.map +1 -1
  101. package/Engines/thinEngine.d.ts +0 -11
  102. package/Engines/thinEngine.js +12 -40
  103. package/Engines/thinEngine.js.map +1 -1
  104. package/Engines/webgpuEngine.d.ts +6 -6
  105. package/Engines/webgpuEngine.js +28 -71
  106. package/Engines/webgpuEngine.js.map +1 -1
  107. package/Helpers/sceneHelpers.d.ts +3 -3
  108. package/Helpers/sceneHelpers.js +1 -2
  109. package/Helpers/sceneHelpers.js.map +1 -1
  110. package/Inputs/scene.inputManager.js +12 -14
  111. package/Inputs/scene.inputManager.js.map +1 -1
  112. package/Layers/effectLayer.d.ts +13 -1
  113. package/Layers/effectLayer.js +115 -65
  114. package/Layers/effectLayer.js.map +1 -1
  115. package/Layers/highlightLayer.d.ts +2 -1
  116. package/Layers/highlightLayer.js +6 -3
  117. package/Layers/highlightLayer.js.map +1 -1
  118. package/Lights/Shadows/cascadedShadowGenerator.d.ts +1 -0
  119. package/Lights/Shadows/cascadedShadowGenerator.js +14 -0
  120. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  121. package/Lights/Shadows/shadowGenerator.d.ts +4 -0
  122. package/Lights/Shadows/shadowGenerator.js +31 -3
  123. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  124. package/Lights/light.js +7 -1
  125. package/Lights/light.js.map +1 -1
  126. package/Lights/pointLight.js +1 -1
  127. package/Lights/pointLight.js.map +1 -1
  128. package/Lights/spotLight.js +1 -1
  129. package/Lights/spotLight.js.map +1 -1
  130. package/Loading/Plugins/babylonFileLoader.js +17 -4
  131. package/Loading/Plugins/babylonFileLoader.js.map +1 -1
  132. package/Materials/Background/backgroundMaterial.js +1 -0
  133. package/Materials/Background/backgroundMaterial.js.map +1 -1
  134. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.d.ts +10 -0
  135. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +31 -0
  136. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
  137. package/Materials/Node/Blocks/Fragment/index.d.ts +2 -0
  138. package/Materials/Node/Blocks/Fragment/index.js +2 -0
  139. package/Materials/Node/Blocks/Fragment/index.js.map +1 -1
  140. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.d.ts +41 -0
  141. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js +128 -0
  142. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js.map +1 -0
  143. package/Materials/Node/Blocks/Fragment/twirlBlock.d.ts +49 -0
  144. package/Materials/Node/Blocks/Fragment/twirlBlock.js +145 -0
  145. package/Materials/Node/Blocks/Fragment/twirlBlock.js.map +1 -0
  146. package/Materials/Node/Blocks/Input/inputBlock.js +1 -1
  147. package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
  148. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.d.ts +1 -0
  149. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js +15 -0
  150. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js.map +1 -1
  151. package/Materials/Node/Blocks/customBlock.d.ts +31 -0
  152. package/Materials/Node/Blocks/customBlock.js +144 -0
  153. package/Materials/Node/Blocks/customBlock.js.map +1 -0
  154. package/Materials/Node/Blocks/index.d.ts +2 -0
  155. package/Materials/Node/Blocks/index.js +2 -0
  156. package/Materials/Node/Blocks/index.js.map +1 -1
  157. package/Materials/Node/Blocks/vectorMergerBlock.js +4 -4
  158. package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
  159. package/Materials/Node/Blocks/voronoiNoiseBlock.d.ts +39 -0
  160. package/Materials/Node/Blocks/voronoiNoiseBlock.js +107 -0
  161. package/Materials/Node/Blocks/voronoiNoiseBlock.js.map +1 -0
  162. package/Materials/Node/Blocks/worleyNoise3DBlock.d.ts +8 -0
  163. package/Materials/Node/Blocks/worleyNoise3DBlock.js +34 -2
  164. package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
  165. package/Materials/Node/nodeMaterial.d.ts +1 -0
  166. package/Materials/Node/nodeMaterial.js +2 -0
  167. package/Materials/Node/nodeMaterial.js.map +1 -1
  168. package/Materials/Node/nodeMaterialBuildStateSharedData.d.ts +5 -0
  169. package/Materials/Node/nodeMaterialBuildStateSharedData.js.map +1 -1
  170. package/Materials/PBR/pbrBaseMaterial.d.ts +2 -0
  171. package/Materials/PBR/pbrBaseMaterial.js +12 -5
  172. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  173. package/Materials/PBR/pbrSubSurfaceConfiguration.d.ts +11 -0
  174. package/Materials/PBR/pbrSubSurfaceConfiguration.js +18 -3
  175. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  176. package/Materials/Textures/dynamicTexture.d.ts +2 -1
  177. package/Materials/Textures/dynamicTexture.js +4 -2
  178. package/Materials/Textures/dynamicTexture.js.map +1 -1
  179. package/Materials/Textures/hdrCubeTexture.d.ts +9 -0
  180. package/Materials/Textures/hdrCubeTexture.js +21 -5
  181. package/Materials/Textures/hdrCubeTexture.js.map +1 -1
  182. package/Materials/Textures/mirrorTexture.d.ts +2 -0
  183. package/Materials/Textures/mirrorTexture.js +13 -0
  184. package/Materials/Textures/mirrorTexture.js.map +1 -1
  185. package/Materials/Textures/thinRenderTargetTexture.js +1 -1
  186. package/Materials/Textures/thinRenderTargetTexture.js.map +1 -1
  187. package/Materials/Textures/thinTexture.d.ts +1 -2
  188. package/Materials/Textures/thinTexture.js +2 -4
  189. package/Materials/Textures/thinTexture.js.map +1 -1
  190. package/Materials/imageProcessingConfiguration.d.ts +16 -1
  191. package/Materials/imageProcessingConfiguration.js +31 -0
  192. package/Materials/imageProcessingConfiguration.js.map +1 -1
  193. package/Materials/materialHelper.d.ts +15 -1
  194. package/Materials/materialHelper.js +40 -3
  195. package/Materials/materialHelper.js.map +1 -1
  196. package/Materials/pushMaterial.d.ts +2 -2
  197. package/Materials/pushMaterial.js +7 -3
  198. package/Materials/pushMaterial.js.map +1 -1
  199. package/Materials/shaderMaterial.d.ts +6 -5
  200. package/Materials/shaderMaterial.js +70 -28
  201. package/Materials/shaderMaterial.js.map +1 -1
  202. package/Materials/shadowDepthWrapper.js +7 -7
  203. package/Materials/shadowDepthWrapper.js.map +1 -1
  204. package/Materials/standardMaterial.d.ts +2 -0
  205. package/Materials/standardMaterial.js +11 -1
  206. package/Materials/standardMaterial.js.map +1 -1
  207. package/Materials/uniformBuffer.js +1 -2
  208. package/Materials/uniformBuffer.js.map +1 -1
  209. package/Maths/math.color.d.ts +20 -0
  210. package/Maths/math.color.js +45 -2
  211. package/Maths/math.color.js.map +1 -1
  212. package/Maths/math.vector.d.ts +14 -9
  213. package/Maths/math.vector.js +36 -17
  214. package/Maths/math.vector.js.map +1 -1
  215. package/Meshes/Builders/boxBuilder.d.ts +1 -1
  216. package/Meshes/Builders/boxBuilder.js +1 -0
  217. package/Meshes/Builders/boxBuilder.js.map +1 -1
  218. package/Meshes/Builders/cylinderBuilder.d.ts +17 -17
  219. package/Meshes/Builders/cylinderBuilder.js +1 -0
  220. package/Meshes/Builders/cylinderBuilder.js.map +1 -1
  221. package/Meshes/Builders/discBuilder.d.ts +1 -1
  222. package/Meshes/Builders/discBuilder.js +1 -0
  223. package/Meshes/Builders/discBuilder.js.map +1 -1
  224. package/Meshes/Builders/groundBuilder.d.ts +8 -8
  225. package/Meshes/Builders/groundBuilder.js +2 -0
  226. package/Meshes/Builders/groundBuilder.js.map +1 -1
  227. package/Meshes/Builders/hemisphereBuilder.d.ts +4 -4
  228. package/Meshes/Builders/hemisphereBuilder.js +1 -0
  229. package/Meshes/Builders/hemisphereBuilder.js.map +1 -1
  230. package/Meshes/Builders/icoSphereBuilder.d.ts +1 -1
  231. package/Meshes/Builders/icoSphereBuilder.js +1 -0
  232. package/Meshes/Builders/icoSphereBuilder.js.map +1 -1
  233. package/Meshes/Builders/planeBuilder.d.ts +1 -1
  234. package/Meshes/Builders/planeBuilder.js +1 -0
  235. package/Meshes/Builders/planeBuilder.js.map +1 -1
  236. package/Meshes/Builders/polyhedronBuilder.d.ts +1 -1
  237. package/Meshes/Builders/polyhedronBuilder.js +1 -0
  238. package/Meshes/Builders/polyhedronBuilder.js.map +1 -1
  239. package/Meshes/Builders/sphereBuilder.d.ts +1 -1
  240. package/Meshes/Builders/sphereBuilder.js +1 -0
  241. package/Meshes/Builders/sphereBuilder.js.map +1 -1
  242. package/Meshes/Builders/torusBuilder.d.ts +8 -8
  243. package/Meshes/Builders/torusBuilder.js +1 -0
  244. package/Meshes/Builders/torusBuilder.js.map +1 -1
  245. package/Meshes/Builders/torusKnotBuilder.d.ts +11 -11
  246. package/Meshes/Builders/torusKnotBuilder.js +1 -0
  247. package/Meshes/Builders/torusKnotBuilder.js.map +1 -1
  248. package/Meshes/abstractMesh.d.ts +22 -2
  249. package/Meshes/abstractMesh.js +78 -28
  250. package/Meshes/abstractMesh.js.map +1 -1
  251. package/Meshes/geometry.d.ts +3 -0
  252. package/Meshes/geometry.js +15 -7
  253. package/Meshes/geometry.js.map +1 -1
  254. package/Meshes/linesMesh.d.ts +0 -2
  255. package/Meshes/linesMesh.js +3 -35
  256. package/Meshes/linesMesh.js.map +1 -1
  257. package/Meshes/mesh.d.ts +12 -0
  258. package/Meshes/mesh.js +186 -117
  259. package/Meshes/mesh.js.map +1 -1
  260. package/Meshes/mesh.vertexData.d.ts +6 -1
  261. package/Meshes/mesh.vertexData.js +295 -114
  262. package/Meshes/mesh.vertexData.js.map +1 -1
  263. package/Meshes/thinInstanceMesh.js +6 -5
  264. package/Meshes/thinInstanceMesh.js.map +1 -1
  265. package/Meshes/transformNode.d.ts +8 -8
  266. package/Meshes/transformNode.js +25 -17
  267. package/Meshes/transformNode.js.map +1 -1
  268. package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.d.ts +1 -0
  269. package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.js +13 -8
  270. package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.js.map +1 -1
  271. package/Misc/PerformanceViewer/performanceViewerCollector.js +1 -1
  272. package/Misc/PerformanceViewer/performanceViewerCollector.js.map +1 -1
  273. package/Misc/basis.d.ts +3 -2
  274. package/Misc/basis.js +31 -15
  275. package/Misc/basis.js.map +1 -1
  276. package/Misc/coroutine.d.ts +45 -0
  277. package/Misc/coroutine.js +123 -0
  278. package/Misc/coroutine.js.map +1 -0
  279. package/Misc/index.d.ts +1 -0
  280. package/Misc/index.js +1 -0
  281. package/Misc/index.js.map +1 -1
  282. package/Misc/observableCoroutine.d.ts +9 -10
  283. package/Misc/observableCoroutine.js +31 -39
  284. package/Misc/observableCoroutine.js.map +1 -1
  285. package/Misc/sceneSerializer.js +0 -3
  286. package/Misc/sceneSerializer.js.map +1 -1
  287. package/Misc/tools.d.ts +2 -4
  288. package/Misc/tools.js +6 -10
  289. package/Misc/tools.js.map +1 -1
  290. package/Particles/particleSystem.js +19 -16
  291. package/Particles/particleSystem.js.map +1 -1
  292. package/Particles/solidParticleSystem.js +29 -5
  293. package/Particles/solidParticleSystem.js.map +1 -1
  294. package/Particles/subEmitter.js +1 -0
  295. package/Particles/subEmitter.js.map +1 -1
  296. package/Physics/Plugins/ammoJSPlugin.js +10 -8
  297. package/Physics/Plugins/ammoJSPlugin.js.map +1 -1
  298. package/PostProcesses/imageProcessingPostProcess.js +1 -0
  299. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  300. package/Probes/reflectionProbe.d.ts +2 -0
  301. package/Probes/reflectionProbe.js +21 -0
  302. package/Probes/reflectionProbe.js.map +1 -1
  303. package/Rendering/boundingBoxRenderer.d.ts +3 -0
  304. package/Rendering/boundingBoxRenderer.js +49 -14
  305. package/Rendering/boundingBoxRenderer.js.map +1 -1
  306. package/Rendering/depthRenderer.d.ts +1 -1
  307. package/Rendering/depthRenderer.js +2 -2
  308. package/Rendering/depthRenderer.js.map +1 -1
  309. package/Rendering/edgesRenderer.js +3 -1
  310. package/Rendering/edgesRenderer.js.map +1 -1
  311. package/Rendering/geometryBufferRenderer.d.ts +0 -2
  312. package/Rendering/geometryBufferRenderer.js +13 -10
  313. package/Rendering/geometryBufferRenderer.js.map +1 -1
  314. package/Shaders/ShadersInclude/bakedVertexAnimation.d.ts +5 -0
  315. package/Shaders/ShadersInclude/bakedVertexAnimation.js +7 -0
  316. package/Shaders/ShadersInclude/bakedVertexAnimation.js.map +1 -0
  317. package/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.d.ts +5 -0
  318. package/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.js +7 -0
  319. package/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.js.map +1 -0
  320. package/Shaders/ShadersInclude/bonesDeclaration.js +1 -1
  321. package/Shaders/ShadersInclude/bonesDeclaration.js.map +1 -1
  322. package/Shaders/ShadersInclude/bonesVertex.js +1 -1
  323. package/Shaders/ShadersInclude/bonesVertex.js.map +1 -1
  324. package/Shaders/ShadersInclude/pbrBlockImageProcessing.js +1 -1
  325. package/Shaders/ShadersInclude/pbrBlockImageProcessing.js.map +1 -1
  326. package/Shaders/ShadersInclude/shadowsFragmentFunctions.js +1 -1
  327. package/Shaders/ShadersInclude/shadowsFragmentFunctions.js.map +1 -1
  328. package/Shaders/background.fragment.js +1 -1
  329. package/Shaders/background.fragment.js.map +1 -1
  330. package/Shaders/background.vertex.d.ts +2 -0
  331. package/Shaders/background.vertex.js +3 -1
  332. package/Shaders/background.vertex.js.map +1 -1
  333. package/Shaders/color.vertex.d.ts +2 -0
  334. package/Shaders/color.vertex.js +3 -1
  335. package/Shaders/color.vertex.js.map +1 -1
  336. package/Shaders/default.vertex.d.ts +2 -0
  337. package/Shaders/default.vertex.js +3 -1
  338. package/Shaders/default.vertex.js.map +1 -1
  339. package/Shaders/depth.vertex.d.ts +2 -0
  340. package/Shaders/depth.vertex.js +3 -1
  341. package/Shaders/depth.vertex.js.map +1 -1
  342. package/Shaders/geometry.vertex.d.ts +2 -0
  343. package/Shaders/geometry.vertex.js +3 -1
  344. package/Shaders/geometry.vertex.js.map +1 -1
  345. package/Shaders/glowMapGeneration.vertex.d.ts +2 -0
  346. package/Shaders/glowMapGeneration.vertex.js +3 -1
  347. package/Shaders/glowMapGeneration.vertex.js.map +1 -1
  348. package/Shaders/outline.vertex.d.ts +2 -0
  349. package/Shaders/outline.vertex.js +3 -1
  350. package/Shaders/outline.vertex.js.map +1 -1
  351. package/Shaders/pbr.vertex.d.ts +2 -0
  352. package/Shaders/pbr.vertex.js +3 -1
  353. package/Shaders/pbr.vertex.js.map +1 -1
  354. package/Shaders/shadowMap.vertex.d.ts +2 -0
  355. package/Shaders/shadowMap.vertex.js +3 -1
  356. package/Shaders/shadowMap.vertex.js.map +1 -1
  357. package/Shaders/volumetricLightScatteringPass.vertex.d.ts +2 -0
  358. package/Shaders/volumetricLightScatteringPass.vertex.js +3 -1
  359. package/Shaders/volumetricLightScatteringPass.vertex.js.map +1 -1
  360. package/ShadersWGSL/ShadersInclude/bakedVertexAnimation.d.ts +5 -0
  361. package/ShadersWGSL/ShadersInclude/bakedVertexAnimation.js +7 -0
  362. package/ShadersWGSL/ShadersInclude/bakedVertexAnimation.js.map +1 -0
  363. package/ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration.d.ts +5 -0
  364. package/ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration.js +7 -0
  365. package/ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration.js.map +1 -0
  366. package/ShadersWGSL/ShadersInclude/bonesDeclaration.js +1 -1
  367. package/ShadersWGSL/ShadersInclude/bonesDeclaration.js.map +1 -1
  368. package/ShadersWGSL/ShadersInclude/bonesVertex.js +1 -1
  369. package/ShadersWGSL/ShadersInclude/bonesVertex.js.map +1 -1
  370. package/ShadersWGSL/ShadersInclude/clipPlaneFragment.d.ts +5 -0
  371. package/ShadersWGSL/ShadersInclude/clipPlaneFragment.js +7 -0
  372. package/ShadersWGSL/ShadersInclude/clipPlaneFragment.js.map +1 -0
  373. package/ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration.d.ts +5 -0
  374. package/ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration.js +7 -0
  375. package/ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration.js.map +1 -0
  376. package/ShadersWGSL/ShadersInclude/clipPlaneVertex.d.ts +5 -0
  377. package/ShadersWGSL/ShadersInclude/clipPlaneVertex.js +7 -0
  378. package/ShadersWGSL/ShadersInclude/clipPlaneVertex.js.map +1 -0
  379. package/ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration.d.ts +5 -0
  380. package/ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration.js +7 -0
  381. package/ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration.js.map +1 -0
  382. package/Sprites/spriteRenderer.d.ts +1 -0
  383. package/Sprites/spriteRenderer.js +13 -1
  384. package/Sprites/spriteRenderer.js.map +1 -1
  385. package/XR/features/WebXRControllerPointerSelection.d.ts +14 -0
  386. package/XR/features/WebXRControllerPointerSelection.js +38 -10
  387. package/XR/features/WebXRControllerPointerSelection.js.map +1 -1
  388. package/XR/features/WebXRNearInteraction.d.ts +1 -0
  389. package/XR/features/WebXRNearInteraction.js +2 -0
  390. package/XR/features/WebXRNearInteraction.js.map +1 -1
  391. package/index.d.ts +1 -0
  392. package/index.js +1 -0
  393. package/index.js.map +1 -1
  394. package/node.d.ts +30 -1
  395. package/node.js +12 -0
  396. package/node.js.map +1 -1
  397. package/package.json +52 -1
  398. package/scene.d.ts +10 -0
  399. package/scene.js +27 -0
  400. package/scene.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"webgpuShaderProcessorsWGSL.js","sourceRoot":"","sources":["../../../../sourceES6/core/Engines/WebGPU/webgpuShaderProcessorsWGSL.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,6BAA6B,EAA2B,MAAM,iCAAiC,CAAC;AACzG,OAAO,KAAK,eAAe,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAEnE,OAAO,mDAAmD,CAAC;AAC3D,OAAO,8CAA8C,CAAC;AACtD,OAAO,uDAAuD,CAAC;AAC/D,OAAO,kDAAkD,CAAC;AAC1D,OAAO,qDAAqD,CAAC;AAC7D,OAAO,qDAAqD,CAAC;AAC7D,OAAO,gEAAgE,CAAC;AACxE,OAAO,2DAA2D,CAAC;AACnE,OAAO,sEAAsE,CAAC;AAC9E,OAAO,sDAAsD,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,IAAM,wBAAwB,GAAG,aAAa,CAAC;AAC/C,IAAM,0BAA0B,GAAG,eAAe,CAAC;AACnD,IAAM,oBAAoB,GAAG,aAAa,CAAC;AAE3C,IAAM,yBAAyB,GAAG,cAAc,CAAC;AACjD,IAAM,wBAAwB,GAAG,gBAAgB,CAAC;AAClD,IAAM,sBAAsB,GAAG,cAAc,CAAC;AAC9C,IAAM,qBAAqB,GAAG,cAAc,CAAC;AAE7C,IAAM,eAAe,GAAG,UAAU,CAAC;AAEnC,IAAM,8CAA8C,GAAyD;IACzG,YAAY,EAAE,eAAe,CAAC,oBAAoB,CAAC,GAAG;IACtD,YAAY,EAAE,eAAe,CAAC,oBAAoB,CAAC,GAAG;IACtD,kBAAkB,EAAE,eAAe,CAAC,oBAAoB,CAAC,QAAQ;IACjE,YAAY,EAAE,eAAe,CAAC,oBAAoB,CAAC,GAAG;IACtD,cAAc,EAAE,eAAe,CAAC,oBAAoB,CAAC,IAAI;IACzD,oBAAoB,EAAE,eAAe,CAAC,oBAAoB,CAAC,SAAS;IACpE,yBAAyB,EAAE,eAAe,CAAC,oBAAoB,CAAC,GAAG;IACnE,kBAAkB,EAAE,eAAe,CAAC,oBAAoB,CAAC,GAAG;IAC5D,wBAAwB,EAAE,eAAe,CAAC,oBAAoB,CAAC,QAAQ;IACvE,oBAAoB,EAAE,eAAe,CAAC,oBAAoB,CAAC,IAAI;IAC/D,0BAA0B,EAAE,eAAe,CAAC,oBAAoB,CAAC,SAAS;IAC1E,+BAA+B,EAAE,eAAe,CAAC,oBAAoB,CAAC,GAAG;IACzE,oBAAoB,EAAE,eAAe,CAAC,oBAAoB,CAAC,GAAG;IAC9D,oBAAoB,EAAE,eAAe,CAAC,oBAAoB,CAAC,GAAG;IAC9D,0BAA0B,EAAE,eAAe,CAAC,oBAAoB,CAAC,QAAQ;IACzE,oBAAoB,EAAE,eAAe,CAAC,oBAAoB,CAAC,GAAG;IAC9D,kBAAkB,EAAE,IAAI;CAC3B,CAAC;AAED,cAAc;AACf;IAA+C,6CAAqB;IAApE;QAAA,qEAibC;QAxaU,oBAAc,GAAG,cAAc,CAAC,IAAI,CAAC;QACrC,mBAAa,GAAG,gCAAgC,CAAC;QACjD,mBAAa,GAAG,sFAAsF,CAAC;QACvG,iBAAW,GAAG,IAAI,CAAC;;IAqa9B,CAAC;IAnaa,iDAAa,GAAvB,UAAwB,IAAY,EAAE,WAAmB,EAAE,aAAwC;QAC/F,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,IAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE;YACnD,IAAI,UAAU,GAAG,QAAQ,CAAC;YAC1B,OAAO,UAAU,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE;gBACvG,UAAU,EAAE,CAAC;aAChB;YACD,IAAM,cAAc,GAAG,WAAW,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;YACvE,MAAM,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC;YAC3B,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;gBACf,MAAM,GAAG,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;aACpD;YACD,OAAO,UAAU,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,EAAE;gBACzG,UAAU,EAAE,CAAC;aAChB;YACD,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;SACrF;QAED,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAEM,qDAAiB,GAAxB,UAAyB,iBAAoD;QACzE,IAAI,CAAC,uBAAuB,GAAG,iBAAkD,CAAC;QAElF,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;IAChC,CAAC;IAEM,wDAAoB,GAA3B,UAA4B,IAAY;QACpC,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAEM,oDAAgB,GAAvB,UAAwB,OAAe,EAAE,UAAmB,EAAE,aAAwC,EAAE,iBAAoD;QACxJ,IAAM,YAAY,GAAG,gEAAgE,CAAC;QACtF,IAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,KAAK,KAAK,IAAI,EAAE;YAChB,IAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAM,MAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,UAAgB,CAAC;YACrB,IAAI,UAAU,EAAE;gBACZ,UAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,MAAI,CAAC,CAAC;gBAChE,IAAI,UAAQ,KAAK,SAAS,EAAE;oBACxB,MAAM,CAAC,IAAI,CAAC,kDAA+C,MAAI,+EAA2E,CAAC,CAAC;iBAC/I;aACJ;iBACI;gBACD,UAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,sBAAsB,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,MAAI,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrI,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,MAAI,CAAC,GAAG,UAAQ,CAAC;gBAChE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAc,UAAQ,YAAO,MAAI,WAAM,WAAW,MAAG,CAAC,CAAC;gBAC/E,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,kBAAgB,MAAI,WAAM,WAAW,MAAG,CAAC,CAAC;gBACtE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAI,CAAC,CAAC;aACrC;YAED,OAAO,GAAG,EAAE,CAAC;SAChB;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAEM,sDAAkB,GAAzB,UAA0B,SAAiB,EAAE,aAAwC,EAAE,iBAAoD;QACvI,IAAM,WAAW,GAAG,uCAAuC,CAAC;QAC5D,IAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,KAAK,KAAK,IAAI,EAAE;YAChB,IAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAM,MAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,IAAM,UAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,wBAAwB,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,MAAI,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAEjJ,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,MAAI,CAAC,GAAG,UAAQ,CAAC;YAClE,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,UAAQ,CAAC,GAAG,MAAI,CAAC;YAEhE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAc,UAAQ,YAAO,MAAI,WAAM,aAAa,MAAG,CAAC,CAAC;YACnF,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,kBAAgB,MAAI,WAAM,aAAa,MAAG,CAAC,CAAC;YAC1E,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAI,CAAC,CAAC;YACpC,SAAS,GAAG,EAAE,CAAC;SAClB;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAEM,oDAAgB,GAAvB,UAAwB,OAAe,EAAE,UAAmB,EAAE,aAAwC,EAAE,iBAAoD;QACxJ,IAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,KAAK,KAAK,IAAI,EAAE;YAChB,IAAI,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,MAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAEpB,IAAI,CAAC,wBAAwB,CAAC,MAAI,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;YAEhE,OAAO,GAAG,EAAE,CAAC;SAChB;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAEM,oDAAgB,GAAvB,UAAwB,OAAe,EAAE,UAAmB,EAAE,aAAwC,EAAE,iBAAoD;QACxJ,IAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,KAAK,KAAK,IAAI,EAAE;YAChB,IAAM,MAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB;YAC9C,IAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,4DAA4D;YACnF,IAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACpC,IAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,oCAAoC;YAClE,IAAM,gBAAgB,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAC5D,IAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,iCAAiC;YACjE,IAAM,oBAAoB,GAAG,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAsB,CAAC,CAAC,CAAC,IAAI,CAAC;YAEzI,IAAI,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,MAAI,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxF,IAAI,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,MAAI,CAAC,CAAC;YACvE,IAAI,CAAC,WAAW,EAAE;gBACd,WAAW,GAAG;oBACV,cAAc,EAAE,SAAS,GAAG,CAAC;oBAC7B,gBAAgB,kBAAA;oBAChB,QAAQ,EAAE,EAAE;oBACZ,UAAU,EAAE,eAAe,CAAC,iBAAiB,CAAC,KAAK;iBACtD,CAAC;gBACF,SAAS,GAAG,SAAS,IAAI,CAAC,CAAC;gBAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,EAAE;oBAChC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,qBAAqB,EAAE,CAAC,CAAC;iBACnF;aACJ;iBAAM;gBACH,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC;aAC3C;YAED,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,MAAI,CAAC,GAAG,WAAW,CAAC;YAEnE,IAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxD,IAAM,gBAAgB,GAAG,8CAA8C,CAAC,WAAW,CAAC,CAAC;YACrF,IAAM,UAAU,GACZ,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;gBAC1D,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;oBAClE,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,iBAAiB,CAAC,KAAK,CAAC;YAE/G,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC;YAEpC,IAAI,gBAAgB,KAAK,SAAS,EAAE;gBAChC,MAAM,6EAA0E,WAAW,QAAI,CAAC;aACnG;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,EAAE;gBAC1B,IAAA,KAA+B,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAApD,UAAU,gBAAA,EAAE,YAAY,kBAA4B,CAAC;gBAE7D,IAAI,CAAC,KAAK,CAAC,EAAE;oBACT,OAAO,GAAG,aAAW,UAAU,mBAAc,YAAY,YAAO,OAAS,CAAC;iBAC7E;gBAED,IAAI,CAAC,6BAA6B,CAAC,MAAI,EAAE,WAAW,EAAE,CAAC,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,CAAC,UAAU,CAAC,CAAC;aACjH;SACJ;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAEM,iDAAa,GAApB,UAAqB,IAAY,EAAE,OAAiB,EAAE,UAAmB,EAAE,iBAAoD,EAAE,MAAkB;QAC/I,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,mDAAe,GAAtB,UAAuB,UAAkB,EAAE,YAAoB,EAAE,iBAAoD;QACjH,8FAA8F;QAC9F,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACrD,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAE1D,yIAAyI;QACzI,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC1D,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAE/D,4BAA4B;QAC5B,IAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE7C,UAAU,GAAG,WAAW,GAAG,UAAU,CAAC;QACtC,YAAY,GAAG,WAAW,GAAG,YAAY,CAAC;QAE1C,cAAc;QACd,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAE3D,IAAI,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QAE5D,IAAI,iBAAiB,GAAG,kBAAgB,wBAAwB,8BAAyB,0BAA0B,8BAAyB,oBAAoB,oBAAiB,CAAC;QAElL,IAAI,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QAEtE,IAAI,YAAY,GAAG,6HAA6H,CAAC;QACjJ,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,YAAY,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACnD;QACD,YAAY,IAAI,QAAQ,CAAC;QAEzB,IAAI,oBAAoB,GAAG,0EAA0E,CAAC;QACtG,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/B,oBAAoB,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACzD;QACD,oBAAoB,IAAI,QAAQ,CAAC;QAEjC,UAAU,GAAG,iBAAiB,GAAG,YAAY,GAAG,oBAAoB,GAAG,oBAAoB,GAAG,YAAY,GAAG,UAAU,CAAC;QAExH,IAAI,kBAAkB,GAAG,uCAAqC,wBAAwB,iCAA4B,0BAA0B,8BAA2B,CAAC;QAExK,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;YACtD,IAAM,MAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;YACzC,kBAAkB,IAAI,OAAK,MAAI,iBAAY,MAAI,QAAK,CAAC;SACxD;QAED,IAAI,gBAAgB,GAAG,yBAAuB,oBAAoB,mDAAgD,CAAC;QAEnH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;YACpD,IAAM,MAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACvC,gBAAgB,IAAI,cAAY,MAAI,WAAM,MAAI,QAAK,CAAC;SACvD;QAED,gBAAgB,IAAI,kBAAkB,CAAC;QAEvC,UAAU,GAAG,IAAI,CAAC,4BAA4B,CAAC,UAAU,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;QAEjG,gBAAgB;QAChB,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAE/D,IAAI,mBAAmB,GAAG,kBAAgB,yBAAyB,oCAA+B,wBAAwB,+BAA0B,qBAAqB,oCAA+B,sBAAsB,cAAW,CAAC;QAE1O,IAAI,sBAAsB,GAAG,2HAA2H,CAAC;QACzJ,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/B,sBAAsB,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC3D;QACD,sBAAsB,IAAI,QAAQ,CAAC;QAEnC,IAAI,eAAe,GAAG,kEAAkE,CAAC;QAEzF,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,OAAO,CAAC,YAAY,EAAE;YAClB,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;YACxD,IAAI,GAAG,GAAG,CAAC,EAAE;gBACT,MAAM;aACT;YACD,IAAM,SAAS,GAAG,GAAG,CAAC;YACtB,YAAY,GAAG,IAAI,CAAC;YACpB,OAAO,GAAG,GAAG,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;gBACjD,IAAI,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;oBAC1E,YAAY,GAAG,KAAK,CAAC;oBACrB,MAAM;iBACT;gBACD,GAAG,EAAE,CAAC;aACT;YACD,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC;SACxB;QAED,IAAI,YAAY,EAAE;YACd,eAAe,IAAI,6CAA6C,CAAC;SACpE;QAED,eAAe,IAAI,MAAM,CAAC;QAE1B,YAAY,GAAG,mBAAmB,GAAG,sBAAsB,GAAG,YAAY,GAAG,eAAe,GAAG,YAAY,CAAC;QAE5G,IAAI,oBAAoB,GAAG,wCAAsC,yBAAyB,8BAAyB,wBAAwB,4BAAyB,CAAC;QAErK,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;YACpD,IAAM,MAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACvC,oBAAoB,IAAI,OAAK,MAAI,iBAAY,MAAI,QAAK,CAAC;SAC1D;QAED,IAAI,kBAAkB,GAAG,sBAAoB,qBAAqB,QAAK,CAAC;QAExE,IAAI,YAAY,EAAE;YACd,kBAAkB,IAAI,0BAAwB,sBAAsB,QAAK,CAAC;SAC7E;QAED,kBAAkB,IAAI,kBAAkB,CAAC;QAEzC,YAAY,GAAG,IAAI,CAAC,4BAA4B,CAAC,YAAY,EAAE,oBAAoB,EAAE,kBAAkB,CAAC,CAAC;QAEzG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAElC,OAAO,EAAE,UAAU,YAAA,EAAE,YAAY,cAAA,EAAE,CAAC;IACxC,CAAC;IAES,4DAAwB,GAAlC,UAAmC,IAAY,EAAE,wBAAiD;QAC9F,IAAI,GAAG,GAAG,sBAAoB,IAAI,SAAM,CAAC;QACzC,KAA4B,UAA6C,EAA7C,KAAA,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,EAA7C,cAA6C,EAA7C,IAA6C,EAAE;YAAtE,IAAI,eAAe,SAAA;YACpB,IAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;YAClE,IAAM,IAAI,GAAG,qBAAqB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAEtD,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC5B,IAAI,IAAI,IAAI,CAAC,EAAE;oBACX,GAAG,IAAI,oBAAkB,eAAe,CAAC,IAAI,gCAA2B,eAAe,CAAC,IAAI,UAAK,eAAe,CAAC,MAAM,SAAM,CAAC;iBACjI;qBAAM;oBACH,GAAG,IAAI,MAAI,eAAe,CAAC,IAAI,iBAAY,eAAe,CAAC,IAAI,UAAK,eAAe,CAAC,MAAM,SAAM,CAAC;iBACpG;aACJ;iBACI;gBACD,GAAG,IAAI,OAAK,eAAe,CAAC,IAAI,WAAM,eAAe,CAAC,IAAI,QAAK,CAAC;aACnE;SACJ;QACD,GAAG,IAAI,MAAM,CAAC;QAEd,GAAG,IAAI,aAAW,wBAAwB,CAAC,OAAO,CAAC,UAAU,mBAAc,wBAAwB,CAAC,OAAO,CAAC,YAAY,yBAAoB,eAAe,WAAM,IAAI,QAAK,CAAC;QAE3K,OAAO,GAAG,CAAC;IACf,CAAC;IAEO,gEAA4B,GAApC,UAAqC,IAAY,EAAE,YAAqB,EAAE,UAAmB;QACzF,IAAI,YAAY,EAAE;YACd,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAClC,IAAI,GAAG,IAAI,CAAC,EAAE;gBACV,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG;gBAC1D,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;oBACnB,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,GAAG;oBAC3D,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;wBACnB,IAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;wBACzC,IAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;wBACtC,IAAI,GAAG,KAAK,GAAG,YAAY,GAAG,KAAK,CAAC;qBACvC;iBACJ;aACJ;SACJ;QAED,IAAI,UAAU,EAAE;YACZ,IAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAC/C,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;YAC3C,IAAI,IAAI,UAAU,GAAG,KAAK,CAAC;SAC9B;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,oDAAgB,GAAxB,UAAyB,IAAY,EAAE,QAAiB;QACpD,IAAM,aAAa,GAAG,6DAA6D,CAAC;QAEpF,OAAO,IAAI,EAAE;YACT,IAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,KAAK,KAAK,IAAI,EAAE;gBAChB,MAAM;aACT;YAED,IAAM,MAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB;YAC9C,IAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,gCAAgC;YAC9D,IAAM,WAAW,GAAG,MAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,KAAK,MAAI,CAAC,MAAM,GAAG,qBAAqB,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,MAAI,CAAC,SAAS,CAAC,CAAC,EAAE,MAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC7N,IAAM,kBAAkB,GAAG,WAAW,KAAK,oBAAoB,CAAC,CAAC,CAAC,eAAe,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,kBAAkB,CAAC,SAAS,CAAC;YAE/J,IAAI,WAAW,EAAE;gBACb,IAAM,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;gBAChF,IAAI,WAAW,EAAE;oBACb,WAAW,CAAC,eAAe,GAAG,IAAI,CAAC;iBACtC;aACJ;YAED,IAAI,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,MAAI,CAAC,CAAC;YACvE,IAAI,CAAC,WAAW,EAAE;gBACd,WAAW,GAAG;oBACV,OAAO,EAAE,IAAI,CAAC,uBAAuB,CAAC,qBAAqB,EAAE;oBAC7D,IAAI,EAAE,kBAAkB;iBAC3B,CAAC;gBACF,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,MAAI,CAAC,GAAG,WAAW,CAAC;aACtE;YAED,IAAI,CAAC,6BAA6B,CAAC,MAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;YAEhE,IAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAM,UAAU,GAAG,aAAW,WAAW,CAAC,OAAO,CAAC,UAAU,mBAAc,WAAW,CAAC,OAAO,CAAC,YAAY,SAAM,CAAC;YACjH,IAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAE1C,IAAI,GAAG,KAAK,GAAG,UAAU,GAAG,KAAK,CAAC;YAElC,aAAa,CAAC,SAAS,IAAI,UAAU,CAAC,MAAM,CAAC;SAChD;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,yDAAqB,GAA7B,UAA8B,IAAY,EAAE,QAAiB;QACzD,IAAM,uBAAuB,GAAG,mFAAmF,CAAC;QAEpH,OAAO,IAAI,EAAE;YACT,IAAM,KAAK,GAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjD,IAAI,KAAK,KAAK,IAAI,EAAE;gBAChB,MAAM;aACT;YAED,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,MAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACpB,IAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAE5B,IAAI,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,MAAI,CAAC,CAAC;YACrE,IAAI,CAAC,UAAU,EAAE;gBACb,IAAM,QAAQ,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,6BAA6B,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAEjG,IAAI,OAAO,SAAA,CAAC;gBACZ,IAAI,QAAQ,EAAE;oBACV,MAAI,GAAG,UAAU,CAAC;oBAClB,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;oBAC3B,IAAI,OAAO,CAAC,UAAU,KAAK,CAAC,CAAC,EAAE;wBAC3B,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,qBAAqB,EAAE,CAAC;qBAClE;iBACJ;qBAAM;oBACH,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,qBAAqB,EAAE,CAAC;iBAClE;gBAED,UAAU,GAAG,EAAE,OAAO,SAAA,EAAE,CAAC;gBACzB,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,MAAI,CAAC,GAAG,UAAU,CAAC;aACpE;YAED,IAAI,CAAC,4BAA4B,CAAC,MAAI,EAAE,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,MAAI,CAAC,EAAE,UAAU,KAAK,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAErS,IAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC;YACjD,IAAM,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC;YAErD,IAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAM,UAAU,GAAG,aAAW,UAAU,mBAAc,YAAY,SAAM,CAAC;YACzE,IAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAE1C,IAAI,GAAG,KAAK,GAAG,UAAU,GAAG,KAAK,CAAC;YAElC,uBAAuB,CAAC,SAAS,IAAI,UAAU,CAAC,MAAM,CAAC;SAC1D;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAEL,gCAAC;AAAD,CAAC,AAjbD,CAA+C,qBAAqB,GAibnE","sourcesContent":["import { Nullable } from '../../types';\r\nimport { ShaderProcessingContext } from \"../Processors/shaderProcessingOptions\";\r\nimport { WebGPUShaderProcessingContext, WebGPUBufferDescription } from './webgpuShaderProcessingContext';\r\nimport * as WebGPUConstants from './webgpuConstants';\r\nimport { Logger } from '../../Misc/logger';\r\nimport { ThinEngine } from \"../thinEngine\";\r\nimport { WebGPUShaderProcessor } from \"./webgpuShaderProcessor\";\r\nimport { RemoveComments } from \"../../Misc/codeStringParsingTools\";\r\n\r\nimport \"../../ShadersWGSL/ShadersInclude/bonesDeclaration\";\r\nimport \"../../ShadersWGSL/ShadersInclude/bonesVertex\";\r\nimport \"../../ShadersWGSL/ShadersInclude/instancesDeclaration\";\r\nimport \"../../ShadersWGSL/ShadersInclude/instancesVertex\";\r\nimport \"../../ShadersWGSL/ShadersInclude/meshUboDeclaration\";\r\nimport \"../../ShadersWGSL/ShadersInclude/morphTargetsVertex\";\r\nimport \"../../ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration\";\r\nimport \"../../ShadersWGSL/ShadersInclude/morphTargetsVertexGlobal\";\r\nimport \"../../ShadersWGSL/ShadersInclude/morphTargetsVertexGlobalDeclaration\";\r\nimport \"../../ShadersWGSL/ShadersInclude/sceneUboDeclaration\";\r\nimport { ShaderLanguage } from \"../../Materials/shaderLanguage\";\r\n\r\nconst builtInName_vertex_index = \"gl_VertexID\";\r\nconst builtInName_instance_index = \"gl_InstanceID\";\r\nconst builtInName_position = \"gl_Position\";\r\n\r\nconst builtInName_position_frag = \"gl_FragCoord\";\r\nconst builtInName_front_facing = \"gl_FrontFacing\";\r\nconst builtInName_frag_depth = \"gl_FragDepth\";\r\nconst builtInName_FragColor = \"gl_FragColor\";\r\n\r\nconst leftOverVarName = \"uniforms\";\r\n\r\nconst gpuTextureViewDimensionByWebGPUTextureFunction: { [key: string]: Nullable<GPUTextureViewDimension> } = {\r\n \"texture_1d\": WebGPUConstants.TextureViewDimension.E1d,\r\n \"texture_2d\": WebGPUConstants.TextureViewDimension.E2d,\r\n \"texture_2d_array\": WebGPUConstants.TextureViewDimension.E2dArray,\r\n \"texture_3d\": WebGPUConstants.TextureViewDimension.E3d,\r\n \"texture_cube\": WebGPUConstants.TextureViewDimension.Cube,\r\n \"texture_cube_array\": WebGPUConstants.TextureViewDimension.CubeArray,\r\n \"texture_multisampled_2d\": WebGPUConstants.TextureViewDimension.E2d,\r\n \"texture_depth_2d\": WebGPUConstants.TextureViewDimension.E2d,\r\n \"texture_depth_2d_array\": WebGPUConstants.TextureViewDimension.E2dArray,\r\n \"texture_depth_cube\": WebGPUConstants.TextureViewDimension.Cube,\r\n \"texture_depth_cube_array\": WebGPUConstants.TextureViewDimension.CubeArray,\r\n \"texture_depth_multisampled_2d\": WebGPUConstants.TextureViewDimension.E2d,\r\n \"texture_storage_1d\": WebGPUConstants.TextureViewDimension.E1d,\r\n \"texture_storage_2d\": WebGPUConstants.TextureViewDimension.E2d,\r\n \"texture_storage_2d_array\": WebGPUConstants.TextureViewDimension.E2dArray,\r\n \"texture_storage_3d\": WebGPUConstants.TextureViewDimension.E3d,\r\n \"texture_external\": null\r\n};\r\n\r\n /** @hidden */\r\nexport class WebGPUShaderProcessorWGSL extends WebGPUShaderProcessor {\r\n\r\n protected _attributesWGSL: string[];\r\n protected _attributesDeclWGSL: string[];\r\n protected _attributeNamesWGSL: string[];\r\n protected _varyingsWGSL: string[];\r\n protected _varyingsDeclWGSL: string[];\r\n protected _varyingNamesWGSL: string[];\r\n\r\n public shaderLanguage = ShaderLanguage.WGSL;\r\n public uniformRegexp = /uniform\\s+(\\w+)\\s*:\\s*(.+)\\s*;/;\r\n public textureRegexp = /var\\s+(\\w+)\\s*:\\s*((array<\\s*)?(texture_\\w+)\\s*(<\\s*(.+)\\s*>)?\\s*(,\\s*\\w+\\s*>\\s*)?);/;\r\n public noPrecision = true;\r\n\r\n protected _getArraySize(name: string, uniformType: string, preProcessors: { [key: string]: string }): [string, string, number] {\r\n let length = 0;\r\n\r\n const endArray = uniformType.lastIndexOf(\">\");\r\n if (uniformType.indexOf(\"array\") >= 0 && endArray > 0) {\r\n let startArray = endArray;\r\n while (startArray > 0 && uniformType.charAt(startArray) !== ' ' && uniformType.charAt(startArray) !== ',') {\r\n startArray--;\r\n }\r\n const lengthInString = uniformType.substring(startArray + 1, endArray);\r\n length = +(lengthInString);\r\n if (isNaN(length)) {\r\n length = +(preProcessors[lengthInString.trim()]);\r\n }\r\n while (startArray > 0 && (uniformType.charAt(startArray) === ' ' || uniformType.charAt(startArray) === ',')) {\r\n startArray--;\r\n }\r\n uniformType = uniformType.substring(uniformType.indexOf(\"<\") + 1, startArray + 1);\r\n }\r\n\r\n return [name, uniformType, length];\r\n }\r\n\r\n public initializeShaders(processingContext: Nullable<ShaderProcessingContext>): void {\r\n this.webgpuProcessingContext = processingContext as WebGPUShaderProcessingContext;\r\n\r\n this._attributesWGSL = [];\r\n this._attributesDeclWGSL = [];\r\n this._attributeNamesWGSL = [];\r\n this._varyingsWGSL = [];\r\n this._varyingsDeclWGSL = [];\r\n this._varyingNamesWGSL = [];\r\n }\r\n\r\n public preProcessShaderCode(code: string): string {\r\n return RemoveComments(code);\r\n }\r\n\r\n public varyingProcessor(varying: string, isFragment: boolean, preProcessors: { [key: string]: string }, processingContext: Nullable<ShaderProcessingContext>) {\r\n const varyingRegex = /\\s*varying\\s+(?:(?:highp)?|(?:lowp)?)\\s*(\\S+)\\s*:\\s*(.+)\\s*;/gm;\r\n const match = varyingRegex.exec(varying);\r\n if (match !== null) {\r\n const varyingType = match[2];\r\n const name = match[1];\r\n let location: number;\r\n if (isFragment) {\r\n location = this.webgpuProcessingContext.availableVaryings[name];\r\n if (location === undefined) {\r\n Logger.Warn(`Invalid fragment shader: The varying named \"${name}\" is not declared in the vertex shader! This declaration will be ignored.`);\r\n }\r\n }\r\n else {\r\n location = this.webgpuProcessingContext.getVaryingNextLocation(varyingType, this._getArraySize(name, varyingType, preProcessors)[2]);\r\n this.webgpuProcessingContext.availableVaryings[name] = location;\r\n this._varyingsWGSL.push(`[[location(${location})]] ${name} : ${varyingType};`);\r\n this._varyingsDeclWGSL.push(`var<private> ${name} : ${varyingType};`);\r\n this._varyingNamesWGSL.push(name);\r\n }\r\n\r\n varying = \"\";\r\n }\r\n return varying;\r\n }\r\n\r\n public attributeProcessor(attribute: string, preProcessors: { [key: string]: string }, processingContext: Nullable<ShaderProcessingContext>) {\r\n const attribRegex = /\\s*attribute\\s+(\\S+)\\s*:\\s*(.+)\\s*;/gm;\r\n const match = attribRegex.exec(attribute);\r\n if (match !== null) {\r\n const attributeType = match[2];\r\n const name = match[1];\r\n const location = this.webgpuProcessingContext.getAttributeNextLocation(attributeType, this._getArraySize(name, attributeType, preProcessors)[2]);\r\n\r\n this.webgpuProcessingContext.availableAttributes[name] = location;\r\n this.webgpuProcessingContext.orderedAttributes[location] = name;\r\n\r\n this._attributesWGSL.push(`[[location(${location})]] ${name} : ${attributeType};`);\r\n this._attributesDeclWGSL.push(`var<private> ${name} : ${attributeType};`);\r\n this._attributeNamesWGSL.push(name);\r\n attribute = \"\";\r\n }\r\n return attribute;\r\n }\r\n\r\n public uniformProcessor(uniform: string, isFragment: boolean, preProcessors: { [key: string]: string }, processingContext: Nullable<ShaderProcessingContext>): string {\r\n const match = this.uniformRegexp.exec(uniform);\r\n if (match !== null) {\r\n let uniformType = match[2];\r\n let name = match[1];\r\n\r\n this._addUniformToLeftOverUBO(name, uniformType, preProcessors);\r\n\r\n uniform = \"\";\r\n }\r\n return uniform;\r\n }\r\n\r\n public textureProcessor(texture: string, isFragment: boolean, preProcessors: { [key: string]: string }, processingContext: Nullable<ShaderProcessingContext>): string {\r\n const match = this.textureRegexp.exec(texture);\r\n if (match !== null) {\r\n const name = match[1]; // name of the variable\r\n const type = match[2]; // texture_2d<f32> or array<texture_2d_array<f32>, 5> for eg\r\n const isArrayOfTexture = !!match[3];\r\n const textureFunc = match[4]; // texture_2d, texture_depth_2d, etc\r\n const isStorageTexture = textureFunc.indexOf(\"storage\") > 0;\r\n const componentType = match[6]; // f32 or i32 or u32 or undefined\r\n const storageTextureFormat = isStorageTexture ? componentType.substring(0, componentType.indexOf(\",\")).trim() as GPUTextureFormat : null;\r\n\r\n let arraySize = isArrayOfTexture ? this._getArraySize(name, type, preProcessors)[2] : 0;\r\n let textureInfo = this.webgpuProcessingContext.availableTextures[name];\r\n if (!textureInfo) {\r\n textureInfo = {\r\n isTextureArray: arraySize > 0,\r\n isStorageTexture,\r\n textures: [],\r\n sampleType: WebGPUConstants.TextureSampleType.Float,\r\n };\r\n arraySize = arraySize || 1;\r\n for (let i = 0; i < arraySize; ++i) {\r\n textureInfo.textures.push(this.webgpuProcessingContext.getNextFreeUBOBinding());\r\n }\r\n } else {\r\n arraySize = textureInfo.textures.length;\r\n }\r\n\r\n this.webgpuProcessingContext.availableTextures[name] = textureInfo;\r\n\r\n const isDepthTexture = textureFunc.indexOf(\"depth\") > 0;\r\n const textureDimension = gpuTextureViewDimensionByWebGPUTextureFunction[textureFunc];\r\n const sampleType =\r\n isDepthTexture ? WebGPUConstants.TextureSampleType.Depth :\r\n componentType === 'u32' ? WebGPUConstants.TextureSampleType.Uint :\r\n componentType === 'i32' ? WebGPUConstants.TextureSampleType.Sint : WebGPUConstants.TextureSampleType.Float;\r\n\r\n textureInfo.sampleType = sampleType;\r\n\r\n if (textureDimension === undefined) {\r\n throw `Can't get the texture dimension corresponding to the texture function \"${textureFunc}\"!`;\r\n }\r\n\r\n for (let i = 0; i < arraySize; ++i) {\r\n const { groupIndex, bindingIndex } = textureInfo.textures[i];\r\n\r\n if (i === 0) {\r\n texture = `[[group(${groupIndex}), binding(${bindingIndex})]] ${texture}`;\r\n }\r\n\r\n this._addTextureBindingDescription(name, textureInfo, i, textureDimension, storageTextureFormat, !isFragment);\r\n }\r\n }\r\n\r\n return texture;\r\n }\r\n\r\n public postProcessor(code: string, defines: string[], isFragment: boolean, processingContext: Nullable<ShaderProcessingContext>, engine: ThinEngine) {\r\n return code;\r\n }\r\n\r\n public finalizeShaders(vertexCode: string, fragmentCode: string, processingContext: Nullable<ShaderProcessingContext>): { vertexCode: string, fragmentCode: string } {\r\n // Add the group/binding info to the sampler declaration (var xxx: sampler|sampler_comparison)\r\n vertexCode = this._processSamplers(vertexCode, true);\r\n fragmentCode = this._processSamplers(fragmentCode, false);\r\n\r\n // Add the group/binding info to the uniform/storage buffer declarations (var<uniform> XXX:YYY or var<storage(,read_write|read)> XXX:YYY)\r\n vertexCode = this._processCustomBuffers(vertexCode, true);\r\n fragmentCode = this._processCustomBuffers(fragmentCode, false);\r\n\r\n // Builds the leftover UBOs.\r\n const leftOverUBO = this._buildLeftOverUBO();\r\n\r\n vertexCode = leftOverUBO + vertexCode;\r\n fragmentCode = leftOverUBO + fragmentCode;\r\n\r\n // Vertex code\r\n vertexCode = vertexCode.replace(/#define /g, \"//#define \");\r\n\r\n let varyingsDecl = this._varyingsDeclWGSL.join(\"\\n\") + \"\\n\";\r\n\r\n let vertexBuiltinDecl = `var<private> ${builtInName_vertex_index} : u32;\\nvar<private> ${builtInName_instance_index} : u32;\\nvar<private> ${builtInName_position} : vec4<f32>;\\n`;\r\n\r\n let vertexAttributesDecl = this._attributesDeclWGSL.join(\"\\n\") + \"\\n\";\r\n\r\n let vertexInputs = \"struct VertexInputs {\\n [[builtin(vertex_index)]] vertexIndex : u32;\\n [[builtin(instance_index)]] instanceIndex : u32;\\n\";\r\n if (this._attributesWGSL.length > 0) {\r\n vertexInputs += this._attributesWGSL.join(\"\\n\");\r\n }\r\n vertexInputs += \"\\n};\\n\";\r\n\r\n let vertexFragmentInputs = \"struct FragmentInputs {\\n [[builtin(position)]] position : vec4<f32>;\\n\";\r\n if (this._varyingsWGSL.length > 0) {\r\n vertexFragmentInputs += this._varyingsWGSL.join(\"\\n\");\r\n }\r\n vertexFragmentInputs += \"\\n};\\n\";\r\n\r\n vertexCode = vertexBuiltinDecl + vertexInputs + vertexAttributesDecl + vertexFragmentInputs + varyingsDecl + vertexCode;\r\n\r\n let vertexStartingCode = ` var output : FragmentInputs;\\n ${builtInName_vertex_index} = input.vertexIndex;\\n ${builtInName_instance_index} = input.instanceIndex;\\n`;\r\n\r\n for (let i = 0; i < this._attributeNamesWGSL.length; ++i) {\r\n const name = this._attributeNamesWGSL[i];\r\n vertexStartingCode += ` ${name} = input.${name};\\n`;\r\n }\r\n\r\n let vertexEndingCode = ` output.position = ${builtInName_position};\\n output.position.y = -output.position.y;\\n`;\r\n\r\n for (let i = 0; i < this._varyingNamesWGSL.length; ++i) {\r\n const name = this._varyingNamesWGSL[i];\r\n vertexEndingCode += ` output.${name} = ${name};\\n`;\r\n }\r\n\r\n vertexEndingCode += \" return output;\";\r\n\r\n vertexCode = this._injectStartingAndEndingCode(vertexCode, vertexStartingCode, vertexEndingCode);\r\n\r\n // fragment code\r\n fragmentCode = fragmentCode.replace(/#define /g, \"//#define \");\r\n\r\n let fragmentBuiltinDecl = `var<private> ${builtInName_position_frag} : vec4<f32>;\\nvar<private> ${builtInName_front_facing} : bool;\\nvar<private> ${builtInName_FragColor} : vec4<f32>;\\nvar<private> ${builtInName_frag_depth} : f32;\\n`;\r\n\r\n let fragmentFragmentInputs = \"struct FragmentInputs {\\n [[builtin(position)]] position : vec4<f32>;\\n [[builtin(front_facing)]] frontFacing : bool;\\n\";\r\n if (this._varyingsWGSL.length > 0) {\r\n fragmentFragmentInputs += this._varyingsWGSL.join(\"\\n\");\r\n }\r\n fragmentFragmentInputs += \"\\n};\\n\";\r\n\r\n let fragmentOutputs = \"struct FragmentOutputs {\\n [[location(0)]] color : vec4<f32>;\\n\";\r\n\r\n let hasFragDepth = false;\r\n let idx = 0;\r\n while (!hasFragDepth) {\r\n idx = fragmentCode.indexOf(builtInName_frag_depth, idx);\r\n if (idx < 0) {\r\n break;\r\n }\r\n const saveIndex = idx;\r\n hasFragDepth = true;\r\n while (idx > 1 && fragmentCode.charAt(idx) !== '\\n') {\r\n if (fragmentCode.charAt(idx) === '/' && fragmentCode.charAt(idx - 1) === '/') {\r\n hasFragDepth = false;\r\n break;\r\n }\r\n idx--;\r\n }\r\n idx = saveIndex + 12;\r\n }\r\n\r\n if (hasFragDepth) {\r\n fragmentOutputs += \" [[builtin(frag_depth)]] fragDepth: f32;\\n\";\r\n }\r\n\r\n fragmentOutputs += \"};\\n\";\r\n\r\n fragmentCode = fragmentBuiltinDecl + fragmentFragmentInputs + varyingsDecl + fragmentOutputs + fragmentCode;\r\n\r\n let fragmentStartingCode = ` var output : FragmentOutputs;\\n ${builtInName_position_frag} = input.position;\\n ${builtInName_front_facing} = input.frontFacing;\\n`;\r\n\r\n for (let i = 0; i < this._varyingNamesWGSL.length; ++i) {\r\n const name = this._varyingNamesWGSL[i];\r\n fragmentStartingCode += ` ${name} = input.${name};\\n`;\r\n }\r\n\r\n let fragmentEndingCode = ` output.color = ${builtInName_FragColor};\\n`;\r\n\r\n if (hasFragDepth) {\r\n fragmentEndingCode += ` output.fragDepth = ${builtInName_frag_depth};\\n`;\r\n }\r\n\r\n fragmentEndingCode += \" return output;\";\r\n\r\n fragmentCode = this._injectStartingAndEndingCode(fragmentCode, fragmentStartingCode, fragmentEndingCode);\r\n\r\n this._collectBindingNames();\r\n this._preCreateBindGroupEntries();\r\n\r\n return { vertexCode, fragmentCode };\r\n }\r\n\r\n protected _generateLeftOverUBOCode(name: string, uniformBufferDescription: WebGPUBufferDescription): string {\r\n let ubo = `[[block]] struct ${name} {\\n`;\r\n for (let leftOverUniform of this.webgpuProcessingContext.leftOverUniforms) {\r\n const type = leftOverUniform.type.replace(/^(.*?)(<.*>)?$/, \"$1\");\r\n const size = WebGPUShaderProcessor.UniformSizes[type];\r\n\r\n if (leftOverUniform.length > 0) {\r\n if (size <= 2) {\r\n ubo += ` [[align(16)]] ${leftOverUniform.name} : [[stride(16)]] array<${leftOverUniform.type}, ${leftOverUniform.length}>;\\n`;\r\n } else {\r\n ubo += ` ${leftOverUniform.name} : array<${leftOverUniform.type}, ${leftOverUniform.length}>;\\n`;\r\n }\r\n }\r\n else {\r\n ubo += ` ${leftOverUniform.name} : ${leftOverUniform.type};\\n`;\r\n }\r\n }\r\n ubo += \"};\\n\";\r\n\r\n ubo += `[[group(${uniformBufferDescription.binding.groupIndex}), binding(${uniformBufferDescription.binding.bindingIndex})]] var<uniform> ${leftOverVarName} : ${name};\\n`;\r\n\r\n return ubo;\r\n }\r\n\r\n private _injectStartingAndEndingCode(code: string, startingCode?: string, endingCode?: string): string {\r\n if (startingCode) {\r\n let idx = code.indexOf(\"fn main\");\r\n if (idx >= 0) {\r\n while (idx++ < code.length && code.charAt(idx) != '{') { }\r\n if (idx < code.length) {\r\n while (idx++ < code.length && code.charAt(idx) != '\\n') { }\r\n if (idx < code.length) {\r\n const part1 = code.substring(0, idx + 1);\r\n const part2 = code.substring(idx + 1);\r\n code = part1 + startingCode + part2;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (endingCode) {\r\n const lastClosingCurly = code.lastIndexOf(\"}\");\r\n code = code.substring(0, lastClosingCurly);\r\n code += endingCode + \"\\n}\";\r\n }\r\n\r\n return code;\r\n }\r\n\r\n private _processSamplers(code: string, isVertex: boolean): string {\r\n const samplerRegexp = /var\\s+(\\w+Sampler)\\s*:\\s*(sampler|sampler_comparison)\\s*;/gm;\r\n\r\n while (true) {\r\n const match = samplerRegexp.exec(code);\r\n if (match === null) {\r\n break;\r\n }\r\n\r\n const name = match[1]; // name of the variable\r\n const samplerType = match[2]; // sampler or sampler_comparison\r\n const textureName = name.indexOf(WebGPUShaderProcessor.AutoSamplerSuffix) === name.length - WebGPUShaderProcessor.AutoSamplerSuffix.length ? name.substring(0, name.indexOf(WebGPUShaderProcessor.AutoSamplerSuffix)) : null;\r\n const samplerBindingType = samplerType === \"sampler_comparison\" ? WebGPUConstants.SamplerBindingType.Comparison : WebGPUConstants.SamplerBindingType.Filtering;\r\n\r\n if (textureName) {\r\n const textureInfo = this.webgpuProcessingContext.availableTextures[textureName];\r\n if (textureInfo) {\r\n textureInfo.autoBindSampler = true;\r\n }\r\n }\r\n\r\n let samplerInfo = this.webgpuProcessingContext.availableSamplers[name];\r\n if (!samplerInfo) {\r\n samplerInfo = {\r\n binding: this.webgpuProcessingContext.getNextFreeUBOBinding(),\r\n type: samplerBindingType,\r\n };\r\n this.webgpuProcessingContext.availableSamplers[name] = samplerInfo;\r\n }\r\n\r\n this._addSamplerBindingDescription(name, samplerInfo, isVertex);\r\n\r\n const part1 = code.substring(0, match.index);\r\n const insertPart = `[[group(${samplerInfo.binding.groupIndex}), binding(${samplerInfo.binding.bindingIndex})]] `;\r\n const part2 = code.substring(match.index);\r\n\r\n code = part1 + insertPart + part2;\r\n\r\n samplerRegexp.lastIndex += insertPart.length;\r\n }\r\n\r\n return code;\r\n }\r\n\r\n private _processCustomBuffers(code: string, isVertex: boolean): string {\r\n const instantiateBufferRegexp = /var<\\s*(uniform|storage)\\s*(,\\s*(read|read_write)\\s*)?>\\s+(\\S+)\\s*:\\s*(\\S+)\\s*;/gm;\r\n\r\n while (true) {\r\n const match = instantiateBufferRegexp.exec(code);\r\n if (match === null) {\r\n break;\r\n }\r\n\r\n let type = match[1];\r\n let decoration = match[3];\r\n let name = match[4];\r\n const structName = match[5];\r\n\r\n let bufferInfo = this.webgpuProcessingContext.availableBuffers[name];\r\n if (!bufferInfo) {\r\n const knownUBO = type === \"uniform\" ? WebGPUShaderProcessingContext.KnownUBOs[structName] : null;\r\n\r\n let binding;\r\n if (knownUBO) {\r\n name = structName;\r\n binding = knownUBO.binding;\r\n if (binding.groupIndex === -1) {\r\n binding = this.webgpuProcessingContext.getNextFreeUBOBinding();\r\n }\r\n } else {\r\n binding = this.webgpuProcessingContext.getNextFreeUBOBinding();\r\n }\r\n\r\n bufferInfo = { binding };\r\n this.webgpuProcessingContext.availableBuffers[name] = bufferInfo;\r\n }\r\n\r\n this._addBufferBindingDescription(name, this.webgpuProcessingContext.availableBuffers[name], decoration === \"read_write\" ? WebGPUConstants.BufferBindingType.Storage : type === \"storage\" ? WebGPUConstants.BufferBindingType.ReadOnlyStorage : WebGPUConstants.BufferBindingType.Uniform, isVertex);\r\n\r\n const groupIndex = bufferInfo.binding.groupIndex;\r\n const bindingIndex = bufferInfo.binding.bindingIndex;\r\n\r\n const part1 = code.substring(0, match.index);\r\n const insertPart = `[[group(${groupIndex}), binding(${bindingIndex})]] `;\r\n const part2 = code.substring(match.index);\r\n\r\n code = part1 + insertPart + part2;\r\n\r\n instantiateBufferRegexp.lastIndex += insertPart.length;\r\n }\r\n\r\n return code;\r\n }\r\n\r\n}"]}
1
+ {"version":3,"file":"webgpuShaderProcessorsWGSL.js","sourceRoot":"","sources":["../../../../sourceES6/core/Engines/WebGPU/webgpuShaderProcessorsWGSL.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from '../../types';\r\nimport { ShaderProcessingContext } from \"../Processors/shaderProcessingOptions\";\r\nimport { WebGPUShaderProcessingContext, WebGPUBufferDescription } from './webgpuShaderProcessingContext';\r\nimport * as WebGPUConstants from './webgpuConstants';\r\nimport { Logger } from '../../Misc/logger';\r\nimport { ThinEngine } from \"../thinEngine\";\r\nimport { WebGPUShaderProcessor } from \"./webgpuShaderProcessor\";\r\nimport { RemoveComments } from \"../../Misc/codeStringParsingTools\";\r\n\r\nimport \"../../ShadersWGSL/ShadersInclude/bonesDeclaration\";\r\nimport \"../../ShadersWGSL/ShadersInclude/bonesVertex\";\r\nimport \"../../ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration\";\r\nimport \"../../ShadersWGSL/ShadersInclude/bakedVertexAnimation\";\r\nimport \"../../ShadersWGSL/ShadersInclude/clipPlaneFragment\";\r\nimport \"../../ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration\";\r\nimport \"../../ShadersWGSL/ShadersInclude/clipPlaneVertex\";\r\nimport \"../../ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration\";\r\nimport \"../../ShadersWGSL/ShadersInclude/instancesDeclaration\";\r\nimport \"../../ShadersWGSL/ShadersInclude/instancesVertex\";\r\nimport \"../../ShadersWGSL/ShadersInclude/meshUboDeclaration\";\r\nimport \"../../ShadersWGSL/ShadersInclude/morphTargetsVertex\";\r\nimport \"../../ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration\";\r\nimport \"../../ShadersWGSL/ShadersInclude/morphTargetsVertexGlobal\";\r\nimport \"../../ShadersWGSL/ShadersInclude/morphTargetsVertexGlobalDeclaration\";\r\nimport \"../../ShadersWGSL/ShadersInclude/sceneUboDeclaration\";\r\nimport { ShaderLanguage } from \"../../Materials/shaderLanguage\";\r\n\r\nconst builtInName_vertex_index = \"gl_VertexID\";\r\nconst builtInName_instance_index = \"gl_InstanceID\";\r\nconst builtInName_position = \"gl_Position\";\r\n\r\nconst builtInName_position_frag = \"gl_FragCoord\";\r\nconst builtInName_front_facing = \"gl_FrontFacing\";\r\nconst builtInName_frag_depth = \"gl_FragDepth\";\r\nconst builtInName_FragColor = \"gl_FragColor\";\r\n\r\nconst leftOverVarName = \"uniforms\";\r\n\r\nconst gpuTextureViewDimensionByWebGPUTextureFunction: { [key: string]: Nullable<GPUTextureViewDimension> } = {\r\n \"texture_1d\": WebGPUConstants.TextureViewDimension.E1d,\r\n \"texture_2d\": WebGPUConstants.TextureViewDimension.E2d,\r\n \"texture_2d_array\": WebGPUConstants.TextureViewDimension.E2dArray,\r\n \"texture_3d\": WebGPUConstants.TextureViewDimension.E3d,\r\n \"texture_cube\": WebGPUConstants.TextureViewDimension.Cube,\r\n \"texture_cube_array\": WebGPUConstants.TextureViewDimension.CubeArray,\r\n \"texture_multisampled_2d\": WebGPUConstants.TextureViewDimension.E2d,\r\n \"texture_depth_2d\": WebGPUConstants.TextureViewDimension.E2d,\r\n \"texture_depth_2d_array\": WebGPUConstants.TextureViewDimension.E2dArray,\r\n \"texture_depth_cube\": WebGPUConstants.TextureViewDimension.Cube,\r\n \"texture_depth_cube_array\": WebGPUConstants.TextureViewDimension.CubeArray,\r\n \"texture_depth_multisampled_2d\": WebGPUConstants.TextureViewDimension.E2d,\r\n \"texture_storage_1d\": WebGPUConstants.TextureViewDimension.E1d,\r\n \"texture_storage_2d\": WebGPUConstants.TextureViewDimension.E2d,\r\n \"texture_storage_2d_array\": WebGPUConstants.TextureViewDimension.E2dArray,\r\n \"texture_storage_3d\": WebGPUConstants.TextureViewDimension.E3d,\r\n \"texture_external\": null\r\n};\r\n\r\n /** @hidden */\r\nexport class WebGPUShaderProcessorWGSL extends WebGPUShaderProcessor {\r\n\r\n protected _attributesWGSL: string[];\r\n protected _attributesDeclWGSL: string[];\r\n protected _attributeNamesWGSL: string[];\r\n protected _varyingsWGSL: string[];\r\n protected _varyingsDeclWGSL: string[];\r\n protected _varyingNamesWGSL: string[];\r\n\r\n public shaderLanguage = ShaderLanguage.WGSL;\r\n public uniformRegexp = /uniform\\s+(\\w+)\\s*:\\s*(.+)\\s*;/;\r\n public textureRegexp = /var\\s+(\\w+)\\s*:\\s*((array<\\s*)?(texture_\\w+)\\s*(<\\s*(.+)\\s*>)?\\s*(,\\s*\\w+\\s*>\\s*)?);/;\r\n public noPrecision = true;\r\n\r\n protected _getArraySize(name: string, uniformType: string, preProcessors: { [key: string]: string }): [string, string, number] {\r\n let length = 0;\r\n\r\n const endArray = uniformType.lastIndexOf(\">\");\r\n if (uniformType.indexOf(\"array\") >= 0 && endArray > 0) {\r\n let startArray = endArray;\r\n while (startArray > 0 && uniformType.charAt(startArray) !== ' ' && uniformType.charAt(startArray) !== ',') {\r\n startArray--;\r\n }\r\n const lengthInString = uniformType.substring(startArray + 1, endArray);\r\n length = +(lengthInString);\r\n if (isNaN(length)) {\r\n length = +(preProcessors[lengthInString.trim()]);\r\n }\r\n while (startArray > 0 && (uniformType.charAt(startArray) === ' ' || uniformType.charAt(startArray) === ',')) {\r\n startArray--;\r\n }\r\n uniformType = uniformType.substring(uniformType.indexOf(\"<\") + 1, startArray + 1);\r\n }\r\n\r\n return [name, uniformType, length];\r\n }\r\n\r\n public initializeShaders(processingContext: Nullable<ShaderProcessingContext>): void {\r\n this.webgpuProcessingContext = processingContext as WebGPUShaderProcessingContext;\r\n\r\n this._attributesWGSL = [];\r\n this._attributesDeclWGSL = [];\r\n this._attributeNamesWGSL = [];\r\n this._varyingsWGSL = [];\r\n this._varyingsDeclWGSL = [];\r\n this._varyingNamesWGSL = [];\r\n }\r\n\r\n public preProcessShaderCode(code: string): string {\r\n return RemoveComments(code);\r\n }\r\n\r\n public varyingProcessor(varying: string, isFragment: boolean, preProcessors: { [key: string]: string }, processingContext: Nullable<ShaderProcessingContext>) {\r\n const varyingRegex = /\\s*varying\\s+(?:(?:highp)?|(?:lowp)?)\\s*(\\S+)\\s*:\\s*(.+)\\s*;/gm;\r\n const match = varyingRegex.exec(varying);\r\n if (match !== null) {\r\n const varyingType = match[2];\r\n const name = match[1];\r\n let location: number;\r\n if (isFragment) {\r\n location = this.webgpuProcessingContext.availableVaryings[name];\r\n if (location === undefined) {\r\n Logger.Warn(`Invalid fragment shader: The varying named \"${name}\" is not declared in the vertex shader! This declaration will be ignored.`);\r\n }\r\n }\r\n else {\r\n location = this.webgpuProcessingContext.getVaryingNextLocation(varyingType, this._getArraySize(name, varyingType, preProcessors)[2]);\r\n this.webgpuProcessingContext.availableVaryings[name] = location;\r\n this._varyingsWGSL.push(`[[location(${location})]] ${name} : ${varyingType};`);\r\n this._varyingsDeclWGSL.push(`var<private> ${name} : ${varyingType};`);\r\n this._varyingNamesWGSL.push(name);\r\n }\r\n\r\n varying = \"\";\r\n }\r\n return varying;\r\n }\r\n\r\n public attributeProcessor(attribute: string, preProcessors: { [key: string]: string }, processingContext: Nullable<ShaderProcessingContext>) {\r\n const attribRegex = /\\s*attribute\\s+(\\S+)\\s*:\\s*(.+)\\s*;/gm;\r\n const match = attribRegex.exec(attribute);\r\n if (match !== null) {\r\n const attributeType = match[2];\r\n const name = match[1];\r\n const location = this.webgpuProcessingContext.getAttributeNextLocation(attributeType, this._getArraySize(name, attributeType, preProcessors)[2]);\r\n\r\n this.webgpuProcessingContext.availableAttributes[name] = location;\r\n this.webgpuProcessingContext.orderedAttributes[location] = name;\r\n\r\n this._attributesWGSL.push(`[[location(${location})]] ${name} : ${attributeType};`);\r\n this._attributesDeclWGSL.push(`var<private> ${name} : ${attributeType};`);\r\n this._attributeNamesWGSL.push(name);\r\n attribute = \"\";\r\n }\r\n return attribute;\r\n }\r\n\r\n public uniformProcessor(uniform: string, isFragment: boolean, preProcessors: { [key: string]: string }, processingContext: Nullable<ShaderProcessingContext>): string {\r\n const match = this.uniformRegexp.exec(uniform);\r\n if (match !== null) {\r\n let uniformType = match[2];\r\n let name = match[1];\r\n\r\n this._addUniformToLeftOverUBO(name, uniformType, preProcessors);\r\n\r\n uniform = \"\";\r\n }\r\n return uniform;\r\n }\r\n\r\n public textureProcessor(texture: string, isFragment: boolean, preProcessors: { [key: string]: string }, processingContext: Nullable<ShaderProcessingContext>): string {\r\n const match = this.textureRegexp.exec(texture);\r\n if (match !== null) {\r\n const name = match[1]; // name of the variable\r\n const type = match[2]; // texture_2d<f32> or array<texture_2d_array<f32>, 5> for eg\r\n const isArrayOfTexture = !!match[3];\r\n const textureFunc = match[4]; // texture_2d, texture_depth_2d, etc\r\n const isStorageTexture = textureFunc.indexOf(\"storage\") > 0;\r\n const componentType = match[6]; // f32 or i32 or u32 or undefined\r\n const storageTextureFormat = isStorageTexture ? componentType.substring(0, componentType.indexOf(\",\")).trim() as GPUTextureFormat : null;\r\n\r\n let arraySize = isArrayOfTexture ? this._getArraySize(name, type, preProcessors)[2] : 0;\r\n let textureInfo = this.webgpuProcessingContext.availableTextures[name];\r\n if (!textureInfo) {\r\n textureInfo = {\r\n isTextureArray: arraySize > 0,\r\n isStorageTexture,\r\n textures: [],\r\n sampleType: WebGPUConstants.TextureSampleType.Float,\r\n };\r\n arraySize = arraySize || 1;\r\n for (let i = 0; i < arraySize; ++i) {\r\n textureInfo.textures.push(this.webgpuProcessingContext.getNextFreeUBOBinding());\r\n }\r\n } else {\r\n arraySize = textureInfo.textures.length;\r\n }\r\n\r\n this.webgpuProcessingContext.availableTextures[name] = textureInfo;\r\n\r\n const isDepthTexture = textureFunc.indexOf(\"depth\") > 0;\r\n const textureDimension = gpuTextureViewDimensionByWebGPUTextureFunction[textureFunc];\r\n const sampleType =\r\n isDepthTexture ? WebGPUConstants.TextureSampleType.Depth :\r\n componentType === 'u32' ? WebGPUConstants.TextureSampleType.Uint :\r\n componentType === 'i32' ? WebGPUConstants.TextureSampleType.Sint : WebGPUConstants.TextureSampleType.Float;\r\n\r\n textureInfo.sampleType = sampleType;\r\n\r\n if (textureDimension === undefined) {\r\n throw `Can't get the texture dimension corresponding to the texture function \"${textureFunc}\"!`;\r\n }\r\n\r\n for (let i = 0; i < arraySize; ++i) {\r\n const { groupIndex, bindingIndex } = textureInfo.textures[i];\r\n\r\n if (i === 0) {\r\n texture = `[[group(${groupIndex}), binding(${bindingIndex})]] ${texture}`;\r\n }\r\n\r\n this._addTextureBindingDescription(name, textureInfo, i, textureDimension, storageTextureFormat, !isFragment);\r\n }\r\n }\r\n\r\n return texture;\r\n }\r\n\r\n public postProcessor(code: string, defines: string[], isFragment: boolean, processingContext: Nullable<ShaderProcessingContext>, engine: ThinEngine) {\r\n return code;\r\n }\r\n\r\n public finalizeShaders(vertexCode: string, fragmentCode: string, processingContext: Nullable<ShaderProcessingContext>): { vertexCode: string, fragmentCode: string } {\r\n // Add the group/binding info to the sampler declaration (var xxx: sampler|sampler_comparison)\r\n vertexCode = this._processSamplers(vertexCode, true);\r\n fragmentCode = this._processSamplers(fragmentCode, false);\r\n\r\n // Add the group/binding info to the uniform/storage buffer declarations (var<uniform> XXX:YYY or var<storage(,read_write|read)> XXX:YYY)\r\n vertexCode = this._processCustomBuffers(vertexCode, true);\r\n fragmentCode = this._processCustomBuffers(fragmentCode, false);\r\n\r\n // Builds the leftover UBOs.\r\n const leftOverUBO = this._buildLeftOverUBO();\r\n\r\n vertexCode = leftOverUBO + vertexCode;\r\n fragmentCode = leftOverUBO + fragmentCode;\r\n\r\n // Vertex code\r\n vertexCode = vertexCode.replace(/#define /g, \"//#define \");\r\n\r\n let varyingsDecl = this._varyingsDeclWGSL.join(\"\\n\") + \"\\n\";\r\n\r\n let vertexBuiltinDecl = `var<private> ${builtInName_vertex_index} : u32;\\nvar<private> ${builtInName_instance_index} : u32;\\nvar<private> ${builtInName_position} : vec4<f32>;\\n`;\r\n\r\n let vertexAttributesDecl = this._attributesDeclWGSL.join(\"\\n\") + \"\\n\";\r\n\r\n let vertexInputs = \"struct VertexInputs {\\n [[builtin(vertex_index)]] vertexIndex : u32;\\n [[builtin(instance_index)]] instanceIndex : u32;\\n\";\r\n if (this._attributesWGSL.length > 0) {\r\n vertexInputs += this._attributesWGSL.join(\"\\n\");\r\n }\r\n vertexInputs += \"\\n};\\n\";\r\n\r\n let vertexFragmentInputs = \"struct FragmentInputs {\\n [[builtin(position)]] position : vec4<f32>;\\n\";\r\n if (this._varyingsWGSL.length > 0) {\r\n vertexFragmentInputs += this._varyingsWGSL.join(\"\\n\");\r\n }\r\n vertexFragmentInputs += \"\\n};\\n\";\r\n\r\n vertexCode = vertexBuiltinDecl + vertexInputs + vertexAttributesDecl + vertexFragmentInputs + varyingsDecl + vertexCode;\r\n\r\n let vertexStartingCode = ` var output : FragmentInputs;\\n ${builtInName_vertex_index} = input.vertexIndex;\\n ${builtInName_instance_index} = input.instanceIndex;\\n`;\r\n\r\n for (let i = 0; i < this._attributeNamesWGSL.length; ++i) {\r\n const name = this._attributeNamesWGSL[i];\r\n vertexStartingCode += ` ${name} = input.${name};\\n`;\r\n }\r\n\r\n let vertexEndingCode = ` output.position = ${builtInName_position};\\n output.position.y = -output.position.y;\\n`;\r\n\r\n for (let i = 0; i < this._varyingNamesWGSL.length; ++i) {\r\n const name = this._varyingNamesWGSL[i];\r\n vertexEndingCode += ` output.${name} = ${name};\\n`;\r\n }\r\n\r\n vertexEndingCode += \" return output;\";\r\n\r\n vertexCode = this._injectStartingAndEndingCode(vertexCode, vertexStartingCode, vertexEndingCode);\r\n\r\n // fragment code\r\n fragmentCode = fragmentCode.replace(/#define /g, \"//#define \");\r\n\r\n let fragmentBuiltinDecl = `var<private> ${builtInName_position_frag} : vec4<f32>;\\nvar<private> ${builtInName_front_facing} : bool;\\nvar<private> ${builtInName_FragColor} : vec4<f32>;\\nvar<private> ${builtInName_frag_depth} : f32;\\n`;\r\n\r\n let fragmentFragmentInputs = \"struct FragmentInputs {\\n [[builtin(position)]] position : vec4<f32>;\\n [[builtin(front_facing)]] frontFacing : bool;\\n\";\r\n if (this._varyingsWGSL.length > 0) {\r\n fragmentFragmentInputs += this._varyingsWGSL.join(\"\\n\");\r\n }\r\n fragmentFragmentInputs += \"\\n};\\n\";\r\n\r\n let fragmentOutputs = \"struct FragmentOutputs {\\n [[location(0)]] color : vec4<f32>;\\n\";\r\n\r\n let hasFragDepth = false;\r\n let idx = 0;\r\n while (!hasFragDepth) {\r\n idx = fragmentCode.indexOf(builtInName_frag_depth, idx);\r\n if (idx < 0) {\r\n break;\r\n }\r\n const saveIndex = idx;\r\n hasFragDepth = true;\r\n while (idx > 1 && fragmentCode.charAt(idx) !== '\\n') {\r\n if (fragmentCode.charAt(idx) === '/' && fragmentCode.charAt(idx - 1) === '/') {\r\n hasFragDepth = false;\r\n break;\r\n }\r\n idx--;\r\n }\r\n idx = saveIndex + 12;\r\n }\r\n\r\n if (hasFragDepth) {\r\n fragmentOutputs += \" [[builtin(frag_depth)]] fragDepth: f32;\\n\";\r\n }\r\n\r\n fragmentOutputs += \"};\\n\";\r\n\r\n fragmentCode = fragmentBuiltinDecl + fragmentFragmentInputs + varyingsDecl + fragmentOutputs + fragmentCode;\r\n\r\n let fragmentStartingCode = ` var output : FragmentOutputs;\\n ${builtInName_position_frag} = input.position;\\n ${builtInName_front_facing} = input.frontFacing;\\n`;\r\n\r\n for (let i = 0; i < this._varyingNamesWGSL.length; ++i) {\r\n const name = this._varyingNamesWGSL[i];\r\n fragmentStartingCode += ` ${name} = input.${name};\\n`;\r\n }\r\n\r\n let fragmentEndingCode = ` output.color = ${builtInName_FragColor};\\n`;\r\n\r\n if (hasFragDepth) {\r\n fragmentEndingCode += ` output.fragDepth = ${builtInName_frag_depth};\\n`;\r\n }\r\n\r\n fragmentEndingCode += \" return output;\";\r\n\r\n fragmentCode = this._injectStartingAndEndingCode(fragmentCode, fragmentStartingCode, fragmentEndingCode);\r\n\r\n this._collectBindingNames();\r\n this._preCreateBindGroupEntries();\r\n\r\n return { vertexCode, fragmentCode };\r\n }\r\n\r\n protected _generateLeftOverUBOCode(name: string, uniformBufferDescription: WebGPUBufferDescription): string {\r\n let ubo = `[[block]] struct ${name} {\\n`;\r\n for (let leftOverUniform of this.webgpuProcessingContext.leftOverUniforms) {\r\n const type = leftOverUniform.type.replace(/^(.*?)(<.*>)?$/, \"$1\");\r\n const size = WebGPUShaderProcessor.UniformSizes[type];\r\n\r\n if (leftOverUniform.length > 0) {\r\n if (size <= 2) {\r\n ubo += ` [[align(16)]] ${leftOverUniform.name} : [[stride(16)]] array<${leftOverUniform.type}, ${leftOverUniform.length}>;\\n`;\r\n } else {\r\n ubo += ` ${leftOverUniform.name} : array<${leftOverUniform.type}, ${leftOverUniform.length}>;\\n`;\r\n }\r\n }\r\n else {\r\n ubo += ` ${leftOverUniform.name} : ${leftOverUniform.type};\\n`;\r\n }\r\n }\r\n ubo += \"};\\n\";\r\n\r\n ubo += `[[group(${uniformBufferDescription.binding.groupIndex}), binding(${uniformBufferDescription.binding.bindingIndex})]] var<uniform> ${leftOverVarName} : ${name};\\n`;\r\n\r\n return ubo;\r\n }\r\n\r\n private _injectStartingAndEndingCode(code: string, startingCode?: string, endingCode?: string): string {\r\n if (startingCode) {\r\n let idx = code.indexOf(\"fn main\");\r\n if (idx >= 0) {\r\n while (idx++ < code.length && code.charAt(idx) != '{') { }\r\n if (idx < code.length) {\r\n while (idx++ < code.length && code.charAt(idx) != '\\n') { }\r\n if (idx < code.length) {\r\n const part1 = code.substring(0, idx + 1);\r\n const part2 = code.substring(idx + 1);\r\n code = part1 + startingCode + part2;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (endingCode) {\r\n const lastClosingCurly = code.lastIndexOf(\"}\");\r\n code = code.substring(0, lastClosingCurly);\r\n code += endingCode + \"\\n}\";\r\n }\r\n\r\n return code;\r\n }\r\n\r\n private _processSamplers(code: string, isVertex: boolean): string {\r\n const samplerRegexp = /var\\s+(\\w+Sampler)\\s*:\\s*(sampler|sampler_comparison)\\s*;/gm;\r\n\r\n while (true) {\r\n const match = samplerRegexp.exec(code);\r\n if (match === null) {\r\n break;\r\n }\r\n\r\n const name = match[1]; // name of the variable\r\n const samplerType = match[2]; // sampler or sampler_comparison\r\n const textureName = name.indexOf(WebGPUShaderProcessor.AutoSamplerSuffix) === name.length - WebGPUShaderProcessor.AutoSamplerSuffix.length ? name.substring(0, name.indexOf(WebGPUShaderProcessor.AutoSamplerSuffix)) : null;\r\n const samplerBindingType = samplerType === \"sampler_comparison\" ? WebGPUConstants.SamplerBindingType.Comparison : WebGPUConstants.SamplerBindingType.Filtering;\r\n\r\n if (textureName) {\r\n const textureInfo = this.webgpuProcessingContext.availableTextures[textureName];\r\n if (textureInfo) {\r\n textureInfo.autoBindSampler = true;\r\n }\r\n }\r\n\r\n let samplerInfo = this.webgpuProcessingContext.availableSamplers[name];\r\n if (!samplerInfo) {\r\n samplerInfo = {\r\n binding: this.webgpuProcessingContext.getNextFreeUBOBinding(),\r\n type: samplerBindingType,\r\n };\r\n this.webgpuProcessingContext.availableSamplers[name] = samplerInfo;\r\n }\r\n\r\n this._addSamplerBindingDescription(name, samplerInfo, isVertex);\r\n\r\n const part1 = code.substring(0, match.index);\r\n const insertPart = `[[group(${samplerInfo.binding.groupIndex}), binding(${samplerInfo.binding.bindingIndex})]] `;\r\n const part2 = code.substring(match.index);\r\n\r\n code = part1 + insertPart + part2;\r\n\r\n samplerRegexp.lastIndex += insertPart.length;\r\n }\r\n\r\n return code;\r\n }\r\n\r\n private _processCustomBuffers(code: string, isVertex: boolean): string {\r\n const instantiateBufferRegexp = /var<\\s*(uniform|storage)\\s*(,\\s*(read|read_write)\\s*)?>\\s+(\\S+)\\s*:\\s*(\\S+)\\s*;/gm;\r\n\r\n while (true) {\r\n const match = instantiateBufferRegexp.exec(code);\r\n if (match === null) {\r\n break;\r\n }\r\n\r\n let type = match[1];\r\n let decoration = match[3];\r\n let name = match[4];\r\n const structName = match[5];\r\n\r\n let bufferInfo = this.webgpuProcessingContext.availableBuffers[name];\r\n if (!bufferInfo) {\r\n const knownUBO = type === \"uniform\" ? WebGPUShaderProcessingContext.KnownUBOs[structName] : null;\r\n\r\n let binding;\r\n if (knownUBO) {\r\n name = structName;\r\n binding = knownUBO.binding;\r\n if (binding.groupIndex === -1) {\r\n binding = this.webgpuProcessingContext.getNextFreeUBOBinding();\r\n }\r\n } else {\r\n binding = this.webgpuProcessingContext.getNextFreeUBOBinding();\r\n }\r\n\r\n bufferInfo = { binding };\r\n this.webgpuProcessingContext.availableBuffers[name] = bufferInfo;\r\n }\r\n\r\n this._addBufferBindingDescription(name, this.webgpuProcessingContext.availableBuffers[name], decoration === \"read_write\" ? WebGPUConstants.BufferBindingType.Storage : type === \"storage\" ? WebGPUConstants.BufferBindingType.ReadOnlyStorage : WebGPUConstants.BufferBindingType.Uniform, isVertex);\r\n\r\n const groupIndex = bufferInfo.binding.groupIndex;\r\n const bindingIndex = bufferInfo.binding.bindingIndex;\r\n\r\n const part1 = code.substring(0, match.index);\r\n const insertPart = `[[group(${groupIndex}), binding(${bindingIndex})]] `;\r\n const part2 = code.substring(match.index);\r\n\r\n code = part1 + insertPart + part2;\r\n\r\n instantiateBufferRegexp.lastIndex += insertPart.length;\r\n }\r\n\r\n return code;\r\n }\r\n\r\n}"]}
@@ -0,0 +1,27 @@
1
+ import { Nullable } from "../../types";
2
+ import { WebGPUEngine } from "../webgpuEngine";
3
+ import { WebGPUBundleList } from "./webgpuBundleList";
4
+ import { WebGPUHardwareTexture } from "./webgpuHardwareTexture";
5
+ /** @hidden */
6
+ export declare class WebGPUSnapshotRendering {
7
+ private _engine;
8
+ private _record;
9
+ private _play;
10
+ private _mainPassBundleList;
11
+ private _modeSaved;
12
+ private _bundleList;
13
+ private _bundleListRenderTarget;
14
+ private _enabled;
15
+ private _mode;
16
+ constructor(engine: WebGPUEngine, renderingMode: number, bundleList: WebGPUBundleList, bundleListRenderTarget: WebGPUBundleList);
17
+ get enabled(): boolean;
18
+ get play(): boolean;
19
+ get record(): boolean;
20
+ set enabled(activate: boolean);
21
+ get mode(): number;
22
+ set mode(mode: number);
23
+ endMainRenderPass(): void;
24
+ endRenderTargetPass(currentRenderPass: GPURenderPassEncoder, gpuWrapper: WebGPUHardwareTexture): boolean;
25
+ endFrame(mainRenderPass: Nullable<GPURenderPassEncoder>): void;
26
+ reset(): void;
27
+ }
@@ -0,0 +1,107 @@
1
+ /** @hidden */
2
+ var WebGPUSnapshotRendering = /** @class */ (function () {
3
+ function WebGPUSnapshotRendering(engine, renderingMode, bundleList, bundleListRenderTarget) {
4
+ this._record = false;
5
+ this._play = false;
6
+ this._mainPassBundleList = [];
7
+ this._enabled = false;
8
+ this._engine = engine;
9
+ this._mode = renderingMode;
10
+ this._bundleList = bundleList;
11
+ this._bundleListRenderTarget = bundleListRenderTarget;
12
+ }
13
+ Object.defineProperty(WebGPUSnapshotRendering.prototype, "enabled", {
14
+ get: function () {
15
+ return this._enabled;
16
+ },
17
+ set: function (activate) {
18
+ this._mainPassBundleList.length = 0;
19
+ this._record = this._enabled = activate;
20
+ this._play = false;
21
+ if (activate) {
22
+ this._modeSaved = this._mode;
23
+ this._mode = 0; // need to reset to standard for the recording pass to avoid some code being bypassed
24
+ }
25
+ },
26
+ enumerable: false,
27
+ configurable: true
28
+ });
29
+ Object.defineProperty(WebGPUSnapshotRendering.prototype, "play", {
30
+ get: function () {
31
+ return this._play;
32
+ },
33
+ enumerable: false,
34
+ configurable: true
35
+ });
36
+ Object.defineProperty(WebGPUSnapshotRendering.prototype, "record", {
37
+ get: function () {
38
+ return this._record;
39
+ },
40
+ enumerable: false,
41
+ configurable: true
42
+ });
43
+ Object.defineProperty(WebGPUSnapshotRendering.prototype, "mode", {
44
+ get: function () {
45
+ return this._mode;
46
+ },
47
+ set: function (mode) {
48
+ if (this._record) {
49
+ this._modeSaved = mode;
50
+ }
51
+ else {
52
+ this._mode = mode;
53
+ }
54
+ },
55
+ enumerable: false,
56
+ configurable: true
57
+ });
58
+ WebGPUSnapshotRendering.prototype.endMainRenderPass = function () {
59
+ if (this._record) {
60
+ this._mainPassBundleList.push(this._bundleList.clone());
61
+ }
62
+ };
63
+ WebGPUSnapshotRendering.prototype.endRenderTargetPass = function (currentRenderPass, gpuWrapper) {
64
+ var _a, _b, _c, _d;
65
+ if (this._play) {
66
+ (_b = (_a = gpuWrapper._bundleLists) === null || _a === void 0 ? void 0 : _a[gpuWrapper._currentLayer]) === null || _b === void 0 ? void 0 : _b.run(currentRenderPass);
67
+ if (this._mode === 1) {
68
+ this._engine._reportDrawCall((_d = (_c = gpuWrapper._bundleLists) === null || _c === void 0 ? void 0 : _c[gpuWrapper._currentLayer]) === null || _d === void 0 ? void 0 : _d.numDrawCalls);
69
+ }
70
+ }
71
+ else if (this._record) {
72
+ if (!gpuWrapper._bundleLists) {
73
+ gpuWrapper._bundleLists = [];
74
+ }
75
+ gpuWrapper._bundleLists[gpuWrapper._currentLayer] = this._bundleListRenderTarget.clone();
76
+ gpuWrapper._bundleLists[gpuWrapper._currentLayer].run(currentRenderPass);
77
+ this._bundleListRenderTarget.reset();
78
+ }
79
+ else {
80
+ return false;
81
+ }
82
+ return true;
83
+ };
84
+ WebGPUSnapshotRendering.prototype.endFrame = function (mainRenderPass) {
85
+ if (this._record) {
86
+ this._mainPassBundleList.push(this._bundleList.clone());
87
+ this._record = false;
88
+ this._play = true;
89
+ this._mode = this._modeSaved;
90
+ }
91
+ if (mainRenderPass !== null && this._play) {
92
+ for (var i = 0; i < this._mainPassBundleList.length; ++i) {
93
+ this._mainPassBundleList[i].run(mainRenderPass);
94
+ if (this._mode === 1) {
95
+ this._engine._reportDrawCall(this._mainPassBundleList[i].numDrawCalls);
96
+ }
97
+ }
98
+ }
99
+ };
100
+ WebGPUSnapshotRendering.prototype.reset = function () {
101
+ this.enabled = false;
102
+ this.enabled = true;
103
+ };
104
+ return WebGPUSnapshotRendering;
105
+ }());
106
+ export { WebGPUSnapshotRendering };
107
+ //# sourceMappingURL=webgpuSnapshotRendering.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgpuSnapshotRendering.js","sourceRoot":"","sources":["../../../../sourceES6/core/Engines/WebGPU/webgpuSnapshotRendering.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"../../types\";\r\n\r\nimport { WebGPUEngine } from \"../webgpuEngine\";\r\nimport { WebGPUBundleList } from \"./webgpuBundleList\";\r\nimport { WebGPUHardwareTexture } from \"./webgpuHardwareTexture\";\r\n\r\n/** @hidden */\r\nexport class WebGPUSnapshotRendering {\r\n private _engine: WebGPUEngine;\r\n\r\n private _record = false;\r\n private _play = false;\r\n private _mainPassBundleList: WebGPUBundleList[] = [];\r\n private _modeSaved: number;\r\n private _bundleList: WebGPUBundleList;\r\n private _bundleListRenderTarget: WebGPUBundleList;\r\n\r\n private _enabled = false;\r\n private _mode: number;\r\n\r\n constructor(engine: WebGPUEngine, renderingMode: number, bundleList: WebGPUBundleList, bundleListRenderTarget: WebGPUBundleList) {\r\n this._engine = engine;\r\n this._mode = renderingMode;\r\n this._bundleList = bundleList;\r\n this._bundleListRenderTarget = bundleListRenderTarget;\r\n }\r\n\r\n public get enabled(): boolean {\r\n return this._enabled;\r\n }\r\n\r\n public get play() {\r\n return this._play;\r\n }\r\n\r\n public get record() {\r\n return this._record;\r\n }\r\n\r\n public set enabled(activate: boolean) {\r\n this._mainPassBundleList.length = 0;\r\n this._record = this._enabled = activate;\r\n this._play = false;\r\n if (activate) {\r\n this._modeSaved = this._mode;\r\n this._mode = 0; // need to reset to standard for the recording pass to avoid some code being bypassed\r\n }\r\n }\r\n\r\n public get mode(): number {\r\n return this._mode;\r\n }\r\n\r\n public set mode(mode: number) {\r\n if (this._record) {\r\n this._modeSaved = mode;\r\n } else {\r\n this._mode = mode;\r\n }\r\n }\r\n\r\n public endMainRenderPass(): void {\r\n if (this._record) {\r\n this._mainPassBundleList.push(this._bundleList.clone());\r\n }\r\n }\r\n\r\n public endRenderTargetPass(currentRenderPass: GPURenderPassEncoder, gpuWrapper: WebGPUHardwareTexture): boolean {\r\n if (this._play) {\r\n gpuWrapper._bundleLists?.[gpuWrapper._currentLayer]?.run(currentRenderPass);\r\n if (this._mode === 1) {\r\n this._engine._reportDrawCall(gpuWrapper._bundleLists?.[gpuWrapper._currentLayer]?.numDrawCalls);\r\n }\r\n } else if (this._record) {\r\n if (!gpuWrapper._bundleLists) {\r\n gpuWrapper._bundleLists = [];\r\n }\r\n gpuWrapper._bundleLists[gpuWrapper._currentLayer] = this._bundleListRenderTarget.clone();\r\n gpuWrapper._bundleLists[gpuWrapper._currentLayer].run(currentRenderPass);\r\n this._bundleListRenderTarget.reset();\r\n } else {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public endFrame(mainRenderPass: Nullable<GPURenderPassEncoder>): void {\r\n if (this._record) {\r\n this._mainPassBundleList.push(this._bundleList.clone());\r\n this._record = false;\r\n this._play = true;\r\n this._mode = this._modeSaved;\r\n }\r\n\r\n if (mainRenderPass !== null && this._play) {\r\n for (let i = 0; i < this._mainPassBundleList.length; ++i) {\r\n this._mainPassBundleList[i].run(mainRenderPass);\r\n if (this._mode === 1) {\r\n this._engine._reportDrawCall(this._mainPassBundleList[i].numDrawCalls);\r\n }\r\n }\r\n }\r\n }\r\n\r\n public reset(): void {\r\n this.enabled = false;\r\n this.enabled = true;\r\n }\r\n}\r\n"]}
@@ -34,7 +34,7 @@ export declare class WebGPUTextureHelper {
34
34
  static IsCompressedFormat(format: GPUTextureFormat): boolean;
35
35
  static GetWebGPUTextureFormat(type: number, format: number, useSRGBBuffer?: boolean): GPUTextureFormat;
36
36
  static GetNumChannelsFromWebGPUTextureFormat(format: GPUTextureFormat): number;
37
- invertYPreMultiplyAlpha(gpuTexture: GPUTexture, width: number, height: number, format: GPUTextureFormat, invertY?: boolean, premultiplyAlpha?: boolean, faceIndex?: number, mipLevel?: number, layers?: number, commandEncoder?: GPUCommandEncoder): void;
37
+ invertYPreMultiplyAlpha(gpuOrHdwTexture: GPUTexture | WebGPUHardwareTexture, width: number, height: number, format: GPUTextureFormat, invertY?: boolean, premultiplyAlpha?: boolean, faceIndex?: number, mipLevel?: number, layers?: number, commandEncoder?: GPUCommandEncoder, allowGPUOptimization?: boolean): void;
38
38
  copyWithInvertY(srcTextureView: GPUTextureView, format: GPUTextureFormat, renderPassDescriptor: GPURenderPassDescriptor, commandEncoder?: GPUCommandEncoder): void;
39
39
  createTexture(imageBitmap: ImageBitmap | {
40
40
  width: number;
@@ -45,12 +45,12 @@ export declare class WebGPUTextureHelper {
45
45
  width: number;
46
46
  height: number;
47
47
  }, hasMipmaps?: boolean, generateMipmaps?: boolean, invertY?: boolean, premultiplyAlpha?: boolean, format?: GPUTextureFormat, sampleCount?: number, commandEncoder?: GPUCommandEncoder, usage?: number, additionalUsages?: number): GPUTexture;
48
- generateCubeMipmaps(gpuTexture: GPUTexture, format: GPUTextureFormat, mipLevelCount: number, commandEncoder?: GPUCommandEncoder): void;
49
- generateMipmaps(gpuTexture: GPUTexture, format: GPUTextureFormat, mipLevelCount: number, faceIndex?: number, commandEncoder?: GPUCommandEncoder): void;
48
+ generateCubeMipmaps(gpuTexture: GPUTexture | WebGPUHardwareTexture, format: GPUTextureFormat, mipLevelCount: number, commandEncoder?: GPUCommandEncoder): void;
49
+ generateMipmaps(gpuOrHdwTexture: GPUTexture | WebGPUHardwareTexture, format: GPUTextureFormat, mipLevelCount: number, faceIndex?: number, commandEncoder?: GPUCommandEncoder): void;
50
50
  createGPUTextureForInternalTexture(texture: InternalTexture, width?: number, height?: number, depth?: number, creationFlags?: number): WebGPUHardwareTexture;
51
51
  createMSAATexture(texture: InternalTexture, samples: number): void;
52
52
  updateCubeTextures(imageBitmaps: ImageBitmap[] | Uint8Array[], gpuTexture: GPUTexture, width: number, height: number, format: GPUTextureFormat, invertY?: boolean, premultiplyAlpha?: boolean, offsetX?: number, offsetY?: number, commandEncoder?: GPUCommandEncoder): void;
53
- updateTexture(imageBitmap: ImageBitmap | Uint8Array | HTMLCanvasElement | OffscreenCanvas, texture: GPUTexture | InternalTexture, width: number, height: number, layers: number, format: GPUTextureFormat, faceIndex?: number, mipLevel?: number, invertY?: boolean, premultiplyAlpha?: boolean, offsetX?: number, offsetY?: number, commandEncoder?: GPUCommandEncoder): void;
53
+ updateTexture(imageBitmap: ImageBitmap | Uint8Array | HTMLCanvasElement | OffscreenCanvas, texture: GPUTexture | InternalTexture, width: number, height: number, layers: number, format: GPUTextureFormat, faceIndex?: number, mipLevel?: number, invertY?: boolean, premultiplyAlpha?: boolean, offsetX?: number, offsetY?: number, commandEncoder?: GPUCommandEncoder, allowGPUOptimization?: boolean): void;
54
54
  readPixels(texture: GPUTexture, x: number, y: number, width: number, height: number, format: GPUTextureFormat, faceIndex?: number, mipLevel?: number, buffer?: Nullable<ArrayBufferView>, noDataConversion?: boolean): Promise<ArrayBufferView>;
55
55
  releaseTexture(texture: InternalTexture | GPUTexture): void;
56
56
  destroyDeferredTextures(): void;