@babylonjs/core 5.0.0-beta.1 → 5.0.0-beta.5

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 (513) hide show
  1. package/Audio/sound.js +3 -1
  2. package/Audio/sound.js.map +1 -1
  3. package/Behaviors/Meshes/baseSixDofDragBehavior.js +29 -26
  4. package/Behaviors/Meshes/baseSixDofDragBehavior.js.map +1 -1
  5. package/Behaviors/Meshes/pointerDragBehavior.js +2 -0
  6. package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
  7. package/Bones/bone.d.ts +2 -1
  8. package/Bones/bone.js +28 -18
  9. package/Bones/bone.js.map +1 -1
  10. package/Bones/skeleton.js +3 -3
  11. package/Bones/skeleton.js.map +1 -1
  12. package/Buffers/buffer.js +2 -2
  13. package/Buffers/buffer.js.map +1 -1
  14. package/Cameras/Inputs/freeCameraTouchInput.js +2 -4
  15. package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
  16. package/Cameras/camera.js +1 -1
  17. package/Cameras/camera.js.map +1 -1
  18. package/Compute/computeEffect.js +2 -2
  19. package/Compute/computeEffect.js.map +1 -1
  20. package/Culling/ray.d.ts +6 -4
  21. package/Culling/ray.js +33 -11
  22. package/Culling/ray.js.map +1 -1
  23. package/Debug/axesViewer.d.ts +1 -0
  24. package/Debug/axesViewer.js +1 -0
  25. package/Debug/axesViewer.js.map +1 -1
  26. package/Debug/debugLayer.js +1 -1
  27. package/Debug/debugLayer.js.map +1 -1
  28. package/DeviceInput/Helpers/eventFactory.d.ts +1 -1
  29. package/DeviceInput/Helpers/eventFactory.js +1 -1
  30. package/DeviceInput/Helpers/eventFactory.js.map +1 -1
  31. package/DeviceInput/InputDevices/deviceEnums.d.ts +52 -1
  32. package/DeviceInput/InputDevices/deviceEnums.js +52 -0
  33. package/DeviceInput/InputDevices/deviceEnums.js.map +1 -1
  34. package/DeviceInput/InputDevices/deviceSource.d.ts +35 -0
  35. package/DeviceInput/InputDevices/deviceSource.js +38 -0
  36. package/DeviceInput/InputDevices/deviceSource.js.map +1 -0
  37. package/DeviceInput/InputDevices/deviceSourceManager.d.ts +14 -72
  38. package/DeviceInput/InputDevices/deviceSourceManager.js +10 -180
  39. package/DeviceInput/InputDevices/deviceSourceManager.js.map +1 -1
  40. package/DeviceInput/InputDevices/deviceTypes.d.ts +2 -2
  41. package/DeviceInput/InputDevices/deviceTypes.js.map +1 -1
  42. package/DeviceInput/{Interfaces → InputDevices}/inputInterfaces.d.ts +1 -5
  43. package/DeviceInput/{Interfaces → InputDevices}/inputInterfaces.js +0 -0
  44. package/DeviceInput/InputDevices/inputInterfaces.js.map +1 -0
  45. package/DeviceInput/InputDevices/internalDeviceSourceManager.d.ts +46 -0
  46. package/DeviceInput/InputDevices/internalDeviceSourceManager.js +144 -0
  47. package/DeviceInput/InputDevices/internalDeviceSourceManager.js.map +1 -0
  48. package/DeviceInput/{Implementations → InputDevices}/nativeDeviceInputSystem.d.ts +3 -7
  49. package/DeviceInput/{Implementations → InputDevices}/nativeDeviceInputSystem.js +9 -15
  50. package/DeviceInput/InputDevices/nativeDeviceInputSystem.js.map +1 -0
  51. package/DeviceInput/{Implementations → InputDevices}/webDeviceInputSystem.d.ts +11 -15
  52. package/DeviceInput/{Implementations → InputDevices}/webDeviceInputSystem.js +105 -82
  53. package/DeviceInput/InputDevices/webDeviceInputSystem.js.map +1 -0
  54. package/DeviceInput/index.d.ts +1 -5
  55. package/DeviceInput/index.js +1 -5
  56. package/DeviceInput/index.js.map +1 -1
  57. package/Engines/Extensions/engine.cubeTexture.js +1 -1
  58. package/Engines/Extensions/engine.cubeTexture.js.map +1 -1
  59. package/Engines/Extensions/engine.multiview.d.ts +5 -0
  60. package/Engines/Extensions/engine.multiview.js +4 -1
  61. package/Engines/Extensions/engine.multiview.js.map +1 -1
  62. package/Engines/Native/nativeInterfaces.d.ts +2 -1
  63. package/Engines/Native/nativeInterfaces.js.map +1 -1
  64. package/Engines/Processors/Expressions/shaderDefineExpression.js +1 -1
  65. package/Engines/Processors/Expressions/shaderDefineExpression.js.map +1 -1
  66. package/Engines/Processors/shaderCodeInliner.js +13 -13
  67. package/Engines/Processors/shaderCodeInliner.js.map +1 -1
  68. package/Engines/WebGPU/webgpuCacheBindGroups.js +9 -9
  69. package/Engines/WebGPU/webgpuCacheBindGroups.js.map +1 -1
  70. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +5 -7
  71. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  72. package/Engines/WebGPU/webgpuCacheRenderPipelineTree.d.ts +1 -1
  73. package/Engines/WebGPU/webgpuCacheRenderPipelineTree.js.map +1 -1
  74. package/Engines/WebGPU/webgpuCacheSampler.d.ts +2 -0
  75. package/Engines/WebGPU/webgpuCacheSampler.js +23 -2
  76. package/Engines/WebGPU/webgpuCacheSampler.js.map +1 -1
  77. package/Engines/WebGPU/webgpuComputeContext.js +1 -1
  78. package/Engines/WebGPU/webgpuComputeContext.js.map +1 -1
  79. package/Engines/WebGPU/webgpuDrawContext.d.ts +1 -1
  80. package/Engines/WebGPU/webgpuDrawContext.js +3 -3
  81. package/Engines/WebGPU/webgpuDrawContext.js.map +1 -1
  82. package/Engines/WebGPU/webgpuHardwareTexture.d.ts +0 -1
  83. package/Engines/WebGPU/webgpuHardwareTexture.js +0 -3
  84. package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
  85. package/Engines/WebGPU/webgpuPipelineContext.d.ts +0 -8
  86. package/Engines/WebGPU/webgpuPipelineContext.js.map +1 -1
  87. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js +13 -13
  88. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js.map +1 -1
  89. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +30 -30
  90. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
  91. package/Engines/WebGPU/webgpuTextureHelper.d.ts +0 -1
  92. package/Engines/WebGPU/webgpuTextureHelper.js +8 -30
  93. package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
  94. package/Engines/engine.d.ts +2 -7
  95. package/Engines/engine.js +2 -6
  96. package/Engines/engine.js.map +1 -1
  97. package/Engines/engineCapabilities.d.ts +2 -0
  98. package/Engines/engineCapabilities.js.map +1 -1
  99. package/Engines/nativeEngine.d.ts +1 -0
  100. package/Engines/nativeEngine.js +37 -11
  101. package/Engines/nativeEngine.js.map +1 -1
  102. package/Engines/nullEngine.js +2 -1
  103. package/Engines/nullEngine.js.map +1 -1
  104. package/Engines/thinEngine.d.ts +11 -2
  105. package/Engines/thinEngine.js +33 -21
  106. package/Engines/thinEngine.js.map +1 -1
  107. package/Engines/webgpuEngine.d.ts +3 -7
  108. package/Engines/webgpuEngine.js +11 -22
  109. package/Engines/webgpuEngine.js.map +1 -1
  110. package/Gamepads/Controllers/daydreamController.js +1 -1
  111. package/Gamepads/Controllers/daydreamController.js.map +1 -1
  112. package/Gamepads/gamepadManager.js +1 -1
  113. package/Gamepads/gamepadManager.js.map +1 -1
  114. package/Gizmos/gizmoManager.d.ts +2 -0
  115. package/Gizmos/gizmoManager.js +28 -24
  116. package/Gizmos/gizmoManager.js.map +1 -1
  117. package/Inputs/scene.inputManager.d.ts +1 -1
  118. package/Inputs/scene.inputManager.js +5 -8
  119. package/Inputs/scene.inputManager.js.map +1 -1
  120. package/Instrumentation/sceneInstrumentation.js +2 -2
  121. package/Instrumentation/sceneInstrumentation.js.map +1 -1
  122. package/Layers/layer.d.ts +2 -2
  123. package/Layers/layer.js.map +1 -1
  124. package/Lights/Shadows/cascadedShadowGenerator.js +2 -2
  125. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  126. package/Lights/Shadows/shadowGenerator.js +2 -2
  127. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  128. package/Loading/Plugins/babylonFileLoader.js +114 -28
  129. package/Loading/Plugins/babylonFileLoader.js.map +1 -1
  130. package/Loading/loadingScreen.js +8 -8
  131. package/Loading/loadingScreen.js.map +1 -1
  132. package/Loading/sceneLoader.js +3 -3
  133. package/Loading/sceneLoader.js.map +1 -1
  134. package/Materials/Node/Blocks/Dual/clipPlanesBlock.d.ts +37 -0
  135. package/Materials/Node/Blocks/Dual/clipPlanesBlock.js +117 -0
  136. package/Materials/Node/Blocks/Dual/clipPlanesBlock.js.map +1 -0
  137. package/Materials/Node/Blocks/Dual/currentScreenBlock.js +12 -12
  138. package/Materials/Node/Blocks/Dual/currentScreenBlock.js.map +1 -1
  139. package/Materials/Node/Blocks/Dual/fogBlock.js +5 -5
  140. package/Materials/Node/Blocks/Dual/fogBlock.js.map +1 -1
  141. package/Materials/Node/Blocks/Dual/imageSourceBlock.js +11 -11
  142. package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
  143. package/Materials/Node/Blocks/Dual/index.d.ts +1 -0
  144. package/Materials/Node/Blocks/Dual/index.js +1 -0
  145. package/Materials/Node/Blocks/Dual/index.js.map +1 -1
  146. package/Materials/Node/Blocks/Dual/lightBlock.js +10 -10
  147. package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
  148. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +26 -26
  149. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
  150. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js +1 -1
  151. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js.map +1 -1
  152. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js +7 -7
  153. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js.map +1 -1
  154. package/Materials/Node/Blocks/Dual/textureBlock.js +30 -30
  155. package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
  156. package/Materials/Node/Blocks/Fragment/derivativeBlock.js +2 -2
  157. package/Materials/Node/Blocks/Fragment/derivativeBlock.js.map +1 -1
  158. package/Materials/Node/Blocks/Fragment/discardBlock.js +1 -1
  159. package/Materials/Node/Blocks/Fragment/discardBlock.js.map +1 -1
  160. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js +1 -1
  161. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js.map +1 -1
  162. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +10 -10
  163. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
  164. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js +7 -7
  165. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js.map +1 -1
  166. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js +12 -12
  167. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
  168. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js +1 -1
  169. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js.map +1 -1
  170. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js +7 -7
  171. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js.map +1 -1
  172. package/Materials/Node/Blocks/Fragment/twirlBlock.js +4 -4
  173. package/Materials/Node/Blocks/Fragment/twirlBlock.js.map +1 -1
  174. package/Materials/Node/Blocks/Input/inputBlock.d.ts +2 -1
  175. package/Materials/Node/Blocks/Input/inputBlock.js +29 -24
  176. package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
  177. package/Materials/Node/Blocks/PBR/anisotropyBlock.js +5 -5
  178. package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
  179. package/Materials/Node/Blocks/PBR/clearCoatBlock.js +5 -5
  180. package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
  181. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +33 -33
  182. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  183. package/Materials/Node/Blocks/PBR/reflectionBlock.js +11 -11
  184. package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
  185. package/Materials/Node/Blocks/PBR/refractionBlock.js +11 -11
  186. package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
  187. package/Materials/Node/Blocks/PBR/sheenBlock.js +3 -3
  188. package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
  189. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js +1 -1
  190. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js.map +1 -1
  191. package/Materials/Node/Blocks/Particle/particleBlendMultiplyBlock.js +1 -1
  192. package/Materials/Node/Blocks/Particle/particleBlendMultiplyBlock.js.map +1 -1
  193. package/Materials/Node/Blocks/Particle/particleRampGradientBlock.js +1 -1
  194. package/Materials/Node/Blocks/Particle/particleRampGradientBlock.js.map +1 -1
  195. package/Materials/Node/Blocks/Particle/particleTextureBlock.js +7 -7
  196. package/Materials/Node/Blocks/Particle/particleTextureBlock.js.map +1 -1
  197. package/Materials/Node/Blocks/Vertex/bonesBlock.js +3 -3
  198. package/Materials/Node/Blocks/Vertex/bonesBlock.js.map +1 -1
  199. package/Materials/Node/Blocks/Vertex/instancesBlock.js +3 -3
  200. package/Materials/Node/Blocks/Vertex/instancesBlock.js.map +1 -1
  201. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js +5 -5
  202. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js.map +1 -1
  203. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js +16 -16
  204. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
  205. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js +1 -1
  206. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js.map +1 -1
  207. package/Materials/Node/Blocks/addBlock.js +1 -1
  208. package/Materials/Node/Blocks/addBlock.js.map +1 -1
  209. package/Materials/Node/Blocks/arcTan2Block.js +1 -1
  210. package/Materials/Node/Blocks/arcTan2Block.js.map +1 -1
  211. package/Materials/Node/Blocks/clampBlock.js +3 -3
  212. package/Materials/Node/Blocks/clampBlock.js.map +1 -1
  213. package/Materials/Node/Blocks/cloudBlock.js +7 -7
  214. package/Materials/Node/Blocks/cloudBlock.js.map +1 -1
  215. package/Materials/Node/Blocks/colorMergerBlock.js +8 -8
  216. package/Materials/Node/Blocks/colorMergerBlock.js.map +1 -1
  217. package/Materials/Node/Blocks/colorSplitterBlock.js +5 -5
  218. package/Materials/Node/Blocks/colorSplitterBlock.js.map +1 -1
  219. package/Materials/Node/Blocks/conditionalBlock.js +10 -10
  220. package/Materials/Node/Blocks/conditionalBlock.js.map +1 -1
  221. package/Materials/Node/Blocks/crossBlock.js +1 -1
  222. package/Materials/Node/Blocks/crossBlock.js.map +1 -1
  223. package/Materials/Node/Blocks/customBlock.js +1 -1
  224. package/Materials/Node/Blocks/customBlock.js.map +1 -1
  225. package/Materials/Node/Blocks/desaturateBlock.js +4 -4
  226. package/Materials/Node/Blocks/desaturateBlock.js.map +1 -1
  227. package/Materials/Node/Blocks/distanceBlock.js +1 -1
  228. package/Materials/Node/Blocks/distanceBlock.js.map +1 -1
  229. package/Materials/Node/Blocks/divideBlock.js +1 -1
  230. package/Materials/Node/Blocks/divideBlock.js.map +1 -1
  231. package/Materials/Node/Blocks/dotBlock.js +1 -1
  232. package/Materials/Node/Blocks/dotBlock.js.map +1 -1
  233. package/Materials/Node/Blocks/elbowBlock.d.ts +27 -0
  234. package/Materials/Node/Blocks/elbowBlock.js +60 -0
  235. package/Materials/Node/Blocks/elbowBlock.js.map +1 -0
  236. package/Materials/Node/Blocks/fresnelBlock.js +2 -2
  237. package/Materials/Node/Blocks/fresnelBlock.js.map +1 -1
  238. package/Materials/Node/Blocks/gradientBlock.js +8 -8
  239. package/Materials/Node/Blocks/gradientBlock.js.map +1 -1
  240. package/Materials/Node/Blocks/index.d.ts +1 -0
  241. package/Materials/Node/Blocks/index.js +1 -0
  242. package/Materials/Node/Blocks/index.js.map +1 -1
  243. package/Materials/Node/Blocks/lengthBlock.js +1 -1
  244. package/Materials/Node/Blocks/lengthBlock.js.map +1 -1
  245. package/Materials/Node/Blocks/lerpBlock.js +1 -1
  246. package/Materials/Node/Blocks/lerpBlock.js.map +1 -1
  247. package/Materials/Node/Blocks/matrixBuilderBlock.js +1 -1
  248. package/Materials/Node/Blocks/matrixBuilderBlock.js.map +1 -1
  249. package/Materials/Node/Blocks/maxBlock.js +1 -1
  250. package/Materials/Node/Blocks/maxBlock.js.map +1 -1
  251. package/Materials/Node/Blocks/minBlock.js +1 -1
  252. package/Materials/Node/Blocks/minBlock.js.map +1 -1
  253. package/Materials/Node/Blocks/modBlock.js +1 -1
  254. package/Materials/Node/Blocks/modBlock.js.map +1 -1
  255. package/Materials/Node/Blocks/multiplyBlock.js +1 -1
  256. package/Materials/Node/Blocks/multiplyBlock.js.map +1 -1
  257. package/Materials/Node/Blocks/nLerpBlock.js +1 -1
  258. package/Materials/Node/Blocks/nLerpBlock.js.map +1 -1
  259. package/Materials/Node/Blocks/negateBlock.js +1 -1
  260. package/Materials/Node/Blocks/negateBlock.js.map +1 -1
  261. package/Materials/Node/Blocks/normalBlendBlock.js +5 -5
  262. package/Materials/Node/Blocks/normalBlendBlock.js.map +1 -1
  263. package/Materials/Node/Blocks/normalizeBlock.js +1 -1
  264. package/Materials/Node/Blocks/normalizeBlock.js.map +1 -1
  265. package/Materials/Node/Blocks/oneMinusBlock.js +1 -1
  266. package/Materials/Node/Blocks/oneMinusBlock.js.map +1 -1
  267. package/Materials/Node/Blocks/posterizeBlock.js +1 -1
  268. package/Materials/Node/Blocks/posterizeBlock.js.map +1 -1
  269. package/Materials/Node/Blocks/powBlock.js +1 -1
  270. package/Materials/Node/Blocks/powBlock.js.map +1 -1
  271. package/Materials/Node/Blocks/randomNumberBlock.js +2 -2
  272. package/Materials/Node/Blocks/randomNumberBlock.js.map +1 -1
  273. package/Materials/Node/Blocks/reciprocalBlock.js +1 -1
  274. package/Materials/Node/Blocks/reciprocalBlock.js.map +1 -1
  275. package/Materials/Node/Blocks/reflectBlock.js +1 -1
  276. package/Materials/Node/Blocks/reflectBlock.js.map +1 -1
  277. package/Materials/Node/Blocks/refractBlock.js +1 -1
  278. package/Materials/Node/Blocks/refractBlock.js.map +1 -1
  279. package/Materials/Node/Blocks/remapBlock.js +3 -3
  280. package/Materials/Node/Blocks/remapBlock.js.map +1 -1
  281. package/Materials/Node/Blocks/replaceColorBlock.js +3 -3
  282. package/Materials/Node/Blocks/replaceColorBlock.js.map +1 -1
  283. package/Materials/Node/Blocks/rotate2dBlock.js +1 -1
  284. package/Materials/Node/Blocks/rotate2dBlock.js.map +1 -1
  285. package/Materials/Node/Blocks/scaleBlock.js +1 -1
  286. package/Materials/Node/Blocks/scaleBlock.js.map +1 -1
  287. package/Materials/Node/Blocks/simplexPerlin3DBlock.js +1 -1
  288. package/Materials/Node/Blocks/simplexPerlin3DBlock.js.map +1 -1
  289. package/Materials/Node/Blocks/smoothStepBlock.js +1 -1
  290. package/Materials/Node/Blocks/smoothStepBlock.js.map +1 -1
  291. package/Materials/Node/Blocks/stepBlock.js +1 -1
  292. package/Materials/Node/Blocks/stepBlock.js.map +1 -1
  293. package/Materials/Node/Blocks/subtractBlock.js +1 -1
  294. package/Materials/Node/Blocks/subtractBlock.js.map +1 -1
  295. package/Materials/Node/Blocks/transformBlock.js +13 -13
  296. package/Materials/Node/Blocks/transformBlock.js.map +1 -1
  297. package/Materials/Node/Blocks/trigonometryBlock.js +2 -2
  298. package/Materials/Node/Blocks/trigonometryBlock.js.map +1 -1
  299. package/Materials/Node/Blocks/vectorMergerBlock.js +22 -22
  300. package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
  301. package/Materials/Node/Blocks/vectorSplitterBlock.js +8 -8
  302. package/Materials/Node/Blocks/vectorSplitterBlock.js.map +1 -1
  303. package/Materials/Node/Blocks/viewDirectionBlock.js +1 -1
  304. package/Materials/Node/Blocks/viewDirectionBlock.js.map +1 -1
  305. package/Materials/Node/Blocks/voronoiNoiseBlock.js +5 -5
  306. package/Materials/Node/Blocks/voronoiNoiseBlock.js.map +1 -1
  307. package/Materials/Node/Blocks/waveBlock.js +3 -3
  308. package/Materials/Node/Blocks/waveBlock.js.map +1 -1
  309. package/Materials/Node/Blocks/worleyNoise3DBlock.js +5 -5
  310. package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
  311. package/Materials/Node/Enums/nodeMaterialSystemValues.d.ts +3 -1
  312. package/Materials/Node/Enums/nodeMaterialSystemValues.js +2 -0
  313. package/Materials/Node/Enums/nodeMaterialSystemValues.js.map +1 -1
  314. package/Materials/Node/nodeMaterial.d.ts +4 -0
  315. package/Materials/Node/nodeMaterial.js +20 -10
  316. package/Materials/Node/nodeMaterial.js.map +1 -1
  317. package/Materials/Node/nodeMaterialBlock.js +12 -12
  318. package/Materials/Node/nodeMaterialBlock.js.map +1 -1
  319. package/Materials/Node/nodeMaterialBuildState.js +24 -24
  320. package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
  321. package/Materials/Node/nodeMaterialBuildStateSharedData.js +1 -1
  322. package/Materials/Node/nodeMaterialBuildStateSharedData.js.map +1 -1
  323. package/Materials/PBR/pbrBaseMaterial.js +2 -2
  324. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  325. package/Materials/PBR/pbrMaterial.js +1 -2
  326. package/Materials/PBR/pbrMaterial.js.map +1 -1
  327. package/Materials/Textures/Loaders/ktxTextureLoader.js +1 -1
  328. package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
  329. package/Materials/Textures/MultiviewRenderTarget.d.ts +1 -0
  330. package/Materials/Textures/MultiviewRenderTarget.js +10 -2
  331. package/Materials/Textures/MultiviewRenderTarget.js.map +1 -1
  332. package/Materials/Textures/Procedurals/proceduralTexture.js +1 -1
  333. package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
  334. package/Materials/Textures/equiRectangularCubeTexture.js +1 -1
  335. package/Materials/Textures/equiRectangularCubeTexture.js.map +1 -1
  336. package/Materials/Textures/mirrorTexture.js +2 -2
  337. package/Materials/Textures/mirrorTexture.js.map +1 -1
  338. package/Materials/Textures/renderTargetTexture.js +2 -2
  339. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  340. package/Materials/Textures/videoTexture.js +1 -0
  341. package/Materials/Textures/videoTexture.js.map +1 -1
  342. package/Materials/effect.js +3 -3
  343. package/Materials/effect.js.map +1 -1
  344. package/Materials/material.d.ts +2 -0
  345. package/Materials/material.js +4 -1
  346. package/Materials/material.js.map +1 -1
  347. package/Materials/materialHelper.js +1 -1
  348. package/Materials/materialHelper.js.map +1 -1
  349. package/Materials/materialPluginManager.js +3 -3
  350. package/Materials/materialPluginManager.js.map +1 -1
  351. package/Materials/multiMaterial.d.ts +2 -0
  352. package/Materials/multiMaterial.js +12 -10
  353. package/Materials/multiMaterial.js.map +1 -1
  354. package/Materials/shaderMaterial.js +1 -1
  355. package/Materials/shaderMaterial.js.map +1 -1
  356. package/Materials/shadowDepthWrapper.js +1 -1
  357. package/Materials/shadowDepthWrapper.js.map +1 -1
  358. package/Materials/standardMaterial.d.ts +0 -5
  359. package/Materials/standardMaterial.js +1 -10
  360. package/Materials/standardMaterial.js.map +1 -1
  361. package/Maths/math.path.d.ts +1 -0
  362. package/Maths/math.path.js +1 -0
  363. package/Maths/math.path.js.map +1 -1
  364. package/Maths/math.size.js +1 -1
  365. package/Maths/math.size.js.map +1 -1
  366. package/Maths/math.vector.d.ts +1 -0
  367. package/Maths/math.vector.js +36 -19
  368. package/Maths/math.vector.js.map +1 -1
  369. package/Meshes/Builders/cylinderBuilder.d.ts +1 -1
  370. package/Meshes/Builders/cylinderBuilder.js +1 -1
  371. package/Meshes/Builders/cylinderBuilder.js.map +1 -1
  372. package/Meshes/Builders/geodesicBuilder.d.ts +1 -0
  373. package/Meshes/Builders/geodesicBuilder.js +1 -0
  374. package/Meshes/Builders/geodesicBuilder.js.map +1 -1
  375. package/Meshes/Builders/goldbergBuilder.d.ts +1 -0
  376. package/Meshes/Builders/goldbergBuilder.js +1 -0
  377. package/Meshes/Builders/goldbergBuilder.js.map +1 -1
  378. package/Meshes/Builders/linesBuilder.js.map +1 -1
  379. package/Meshes/Builders/tiledBoxBuilder.d.ts +30 -11
  380. package/Meshes/Builders/tiledBoxBuilder.js +30 -11
  381. package/Meshes/Builders/tiledBoxBuilder.js.map +1 -1
  382. package/Meshes/Builders/tiledPlaneBuilder.d.ts +21 -16
  383. package/Meshes/Builders/tiledPlaneBuilder.js +21 -16
  384. package/Meshes/Builders/tiledPlaneBuilder.js.map +1 -1
  385. package/Meshes/Compression/dracoCompression.d.ts +3 -0
  386. package/Meshes/Compression/dracoCompression.js +23 -7
  387. package/Meshes/Compression/dracoCompression.js.map +1 -1
  388. package/Meshes/abstractMesh.d.ts +6 -0
  389. package/Meshes/abstractMesh.js +14 -0
  390. package/Meshes/abstractMesh.js.map +1 -1
  391. package/Meshes/mesh.js +21 -6
  392. package/Meshes/mesh.js.map +1 -1
  393. package/Meshes/mesh.lts.d.ts +1 -1
  394. package/Meshes/mesh.lts.js.map +1 -1
  395. package/Meshes/mesh.vertexData.d.ts +1 -1
  396. package/Meshes/mesh.vertexData.js +2 -2
  397. package/Meshes/mesh.vertexData.js.map +1 -1
  398. package/Misc/PerformanceViewer/performanceViewerCollector.js +36 -19
  399. package/Misc/PerformanceViewer/performanceViewerCollector.js.map +1 -1
  400. package/Misc/assetsManager.d.ts +1 -0
  401. package/Misc/assetsManager.js +13 -0
  402. package/Misc/assetsManager.js.map +1 -1
  403. package/Misc/basis.js +1 -1
  404. package/Misc/basis.js.map +1 -1
  405. package/Misc/devTools.js +1 -1
  406. package/Misc/devTools.js.map +1 -1
  407. package/Misc/environmentTextureTools.js +2 -2
  408. package/Misc/environmentTextureTools.js.map +1 -1
  409. package/Misc/fileTools.js +7 -5
  410. package/Misc/fileTools.js.map +1 -1
  411. package/Misc/index.d.ts +1 -0
  412. package/Misc/index.js +1 -0
  413. package/Misc/index.js.map +1 -1
  414. package/Misc/khronosTextureContainer2.js +4 -3
  415. package/Misc/khronosTextureContainer2.js.map +1 -1
  416. package/Misc/reflector.js +6 -6
  417. package/Misc/reflector.js.map +1 -1
  418. package/Misc/tools.js +15 -13
  419. package/Misc/tools.js.map +1 -1
  420. package/Misc/uniqueIdGenerator.js +1 -1
  421. package/Misc/uniqueIdGenerator.js.map +1 -1
  422. package/Offline/database.js +1 -1
  423. package/Offline/database.js.map +1 -1
  424. package/Particles/baseParticleSystem.d.ts +4 -1
  425. package/Particles/baseParticleSystem.js +20 -5
  426. package/Particles/baseParticleSystem.js.map +1 -1
  427. package/Particles/gpuParticleSystem.js +2 -1
  428. package/Particles/gpuParticleSystem.js.map +1 -1
  429. package/Particles/particleHelper.js +2 -2
  430. package/Particles/particleHelper.js.map +1 -1
  431. package/Physics/Plugins/ammoJSPlugin.d.ts +5 -1
  432. package/Physics/Plugins/ammoJSPlugin.js +16 -11
  433. package/Physics/Plugins/ammoJSPlugin.js.map +1 -1
  434. package/Physics/physicsEngine.d.ts +1 -0
  435. package/Physics/physicsEngine.js +3 -1
  436. package/Physics/physicsEngine.js.map +1 -1
  437. package/Physics/physicsImpostor.d.ts +2 -2
  438. package/Physics/physicsImpostor.js.map +1 -1
  439. package/PostProcesses/blurPostProcess.js +5 -5
  440. package/PostProcesses/blurPostProcess.js.map +1 -1
  441. package/PostProcesses/imageProcessingPostProcess.js +1 -1
  442. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  443. package/PostProcesses/postProcess.js +1 -1
  444. package/PostProcesses/postProcess.js.map +1 -1
  445. package/PostProcesses/postProcessManager.js +2 -2
  446. package/PostProcesses/postProcessManager.js.map +1 -1
  447. package/Probes/reflectionProbe.js +2 -2
  448. package/Probes/reflectionProbe.js.map +1 -1
  449. package/Rendering/depthPeelingRenderer.js +3 -3
  450. package/Rendering/depthPeelingRenderer.js.map +1 -1
  451. package/Rendering/geometryBufferRenderer.js +8 -8
  452. package/Rendering/geometryBufferRenderer.js.map +1 -1
  453. package/Rendering/outlineRenderer.js +1 -1
  454. package/Rendering/outlineRenderer.js.map +1 -1
  455. package/Rendering/utilityLayerRenderer.js +4 -0
  456. package/Rendering/utilityLayerRenderer.js.map +1 -1
  457. package/Shaders/ShadersInclude/prePassVertex.js +1 -1
  458. package/Shaders/ShadersInclude/prePassVertex.js.map +1 -1
  459. package/Shaders/pbr.fragment.js +1 -1
  460. package/Shaders/pbr.fragment.js.map +1 -1
  461. package/ShadersWGSL/gpuUpdateParticles.compute.js +1 -1
  462. package/ShadersWGSL/gpuUpdateParticles.compute.js.map +1 -1
  463. package/Sprites/spriteManager.js +5 -6
  464. package/Sprites/spriteManager.js.map +1 -1
  465. package/Sprites/spriteMap.js +2 -2
  466. package/Sprites/spriteMap.js.map +1 -1
  467. package/Sprites/spriteRenderer.js +1 -1
  468. package/Sprites/spriteRenderer.js.map +1 -1
  469. package/XR/features/WebXRControllerPointerSelection.js +15 -9
  470. package/XR/features/WebXRControllerPointerSelection.js.map +1 -1
  471. package/XR/features/WebXRDOMOverlay.js +1 -1
  472. package/XR/features/WebXRDOMOverlay.js.map +1 -1
  473. package/XR/features/WebXRHandTracking.js +27 -27
  474. package/XR/features/WebXRHandTracking.js.map +1 -1
  475. package/XR/features/WebXRImageTracking.js +2 -2
  476. package/XR/features/WebXRImageTracking.js.map +1 -1
  477. package/XR/features/WebXRLayers.d.ts +28 -5
  478. package/XR/features/WebXRLayers.js +54 -20
  479. package/XR/features/WebXRLayers.js.map +1 -1
  480. package/XR/features/WebXRNearInteraction.d.ts +35 -3
  481. package/XR/features/WebXRNearInteraction.js +201 -40
  482. package/XR/features/WebXRNearInteraction.js.map +1 -1
  483. package/XR/motionController/webXRAbstractMotionController.js +1 -1
  484. package/XR/motionController/webXRAbstractMotionController.js.map +1 -1
  485. package/XR/motionController/webXRMotionControllerManager.js +2 -2
  486. package/XR/motionController/webXRMotionControllerManager.js.map +1 -1
  487. package/XR/motionController/webXRProfiledMotionController.js +1 -1
  488. package/XR/motionController/webXRProfiledMotionController.js.map +1 -1
  489. package/XR/webXRCamera.js +17 -4
  490. package/XR/webXRCamera.js.map +1 -1
  491. package/XR/webXREnterExitUI.js +2 -2
  492. package/XR/webXREnterExitUI.js.map +1 -1
  493. package/XR/webXRFeaturesManager.js +6 -6
  494. package/XR/webXRFeaturesManager.js.map +1 -1
  495. package/XR/webXRInputSource.js +3 -3
  496. package/XR/webXRInputSource.js.map +1 -1
  497. package/XR/webXRRenderTargetTextureProvider.d.ts +3 -2
  498. package/XR/webXRRenderTargetTextureProvider.js +37 -18
  499. package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
  500. package/XR/webXRSessionManager.js +1 -1
  501. package/XR/webXRSessionManager.js.map +1 -1
  502. package/node.d.ts +1 -1
  503. package/node.js.map +1 -1
  504. package/package.json +22 -13
  505. package/scene.d.ts +5 -2
  506. package/scene.js +31 -5
  507. package/scene.js.map +1 -1
  508. package/DeviceInput/Implementations/nativeDeviceInputSystem.js.map +0 -1
  509. package/DeviceInput/Implementations/webDeviceInputSystem.js.map +0 -1
  510. package/DeviceInput/Interfaces/inputInterfaces.js.map +0 -1
  511. package/DeviceInput/deviceInputSystem.d.ts +0 -60
  512. package/DeviceInput/deviceInputSystem.js +0 -84
  513. package/DeviceInput/deviceInputSystem.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"webgpuComputeContext.js","sourceRoot":"","sources":["../../../../sourceES6/core/Engines/WebGPU/webgpuComputeContext.ts"],"names":[],"mappings":"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","sourcesContent":["import { StorageBuffer } from \"../../Buffers/storageBuffer\";\r\nimport { IComputeContext } from \"../../Compute/IComputeContext\";\r\nimport { BaseTexture } from \"../../Materials/Textures/baseTexture\";\r\nimport { TextureSampler } from \"../../Materials/Textures/textureSampler\";\r\nimport { UniformBuffer } from \"../../Materials/uniformBuffer\";\r\nimport { Logger } from \"../../Misc/logger\";\r\nimport { ComputeBindingList, ComputeBindingMapping, ComputeBindingType } from \"../Extensions/engine.computeShader\";\r\nimport { WebGPUCacheSampler } from \"./webgpuCacheSampler\";\r\nimport * as WebGPUConstants from './webgpuConstants';\r\nimport { WebGPUHardwareTexture } from \"./webgpuHardwareTexture\";\r\n\r\n/** @hidden */\r\nexport class WebGPUComputeContext implements IComputeContext {\r\n private static _Counter = 0;\r\n\r\n public readonly uniqueId: number;\r\n\r\n private _device: GPUDevice;\r\n private _cacheSampler: WebGPUCacheSampler;\r\n private _bindGroups: GPUBindGroup[];\r\n private _bindGroupEntries: GPUBindGroupEntry[][];\r\n\r\n public getBindGroups(bindings: ComputeBindingList, computePipeline: GPUComputePipeline, bindingsMapping?: ComputeBindingMapping): GPUBindGroup[] {\r\n if (!bindingsMapping) {\r\n throw new Error(\"WebGPUComputeContext.getBindGroups: bindingsMapping is required until browsers support reflection for wgsl shaders!\");\r\n }\r\n if (this._bindGroups.length === 0) {\r\n const bindGroupEntriesExist = this._bindGroupEntries.length > 0;\r\n for (const key in bindings) {\r\n const binding = bindings[key],\r\n location = bindingsMapping[key],\r\n group = location.group,\r\n index = location.binding,\r\n type = binding.type,\r\n object = binding.object;\r\n let indexInGroupEntries = binding.indexInGroupEntries;\r\n\r\n let entries = this._bindGroupEntries[group];\r\n if (!entries) {\r\n entries = this._bindGroupEntries[group] = [];\r\n }\r\n\r\n switch (type) {\r\n case ComputeBindingType.Sampler: {\r\n const sampler = object as TextureSampler;\r\n if (indexInGroupEntries !== undefined && bindGroupEntriesExist) {\r\n entries[indexInGroupEntries].resource = this._cacheSampler.getSampler(sampler);\r\n } else {\r\n binding.indexInGroupEntries = entries.length;\r\n entries.push({\r\n binding: index,\r\n resource: this._cacheSampler.getSampler(sampler),\r\n });\r\n }\r\n break;\r\n }\r\n\r\n case ComputeBindingType.Texture:\r\n case ComputeBindingType.TextureWithoutSampler: {\r\n const texture = object as BaseTexture;\r\n const hardwareTexture = texture._texture!._hardwareTexture as WebGPUHardwareTexture;\r\n if (indexInGroupEntries !== undefined && bindGroupEntriesExist) {\r\n if (type === ComputeBindingType.Texture) {\r\n entries[indexInGroupEntries++].resource = this._cacheSampler.getSampler(texture._texture!);\r\n }\r\n entries[indexInGroupEntries].resource = hardwareTexture.view!;\r\n } else {\r\n binding.indexInGroupEntries = entries.length;\r\n if (type === ComputeBindingType.Texture) {\r\n entries.push({\r\n binding: index - 1,\r\n resource: this._cacheSampler.getSampler(texture._texture!),\r\n });\r\n }\r\n entries.push({\r\n binding: index,\r\n resource: hardwareTexture.view!,\r\n });\r\n }\r\n break;\r\n }\r\n\r\n case ComputeBindingType.StorageTexture: {\r\n const texture = object as BaseTexture;\r\n const hardwareTexture = texture._texture!._hardwareTexture as WebGPUHardwareTexture;\r\n if ((hardwareTexture.textureAdditionalUsages & WebGPUConstants.TextureUsage.StorageBinding) === 0) {\r\n Logger.Error(`computeDispatch: The texture (name=${texture.name}, uniqueId=${texture.uniqueId}) is not a storage texture!`, 50);\r\n }\r\n if (indexInGroupEntries !== undefined && bindGroupEntriesExist) {\r\n entries[indexInGroupEntries].resource = hardwareTexture.viewForWriting!;\r\n } else {\r\n binding.indexInGroupEntries = entries.length;\r\n entries.push({\r\n binding: index,\r\n resource: hardwareTexture.viewForWriting!,\r\n });\r\n }\r\n break;\r\n }\r\n\r\n case ComputeBindingType.UniformBuffer:\r\n case ComputeBindingType.StorageBuffer: {\r\n const buffer = type === ComputeBindingType.UniformBuffer ? object as UniformBuffer : object as StorageBuffer;\r\n const dataBuffer = buffer.getBuffer()!;\r\n const webgpuBuffer = dataBuffer.underlyingResource as GPUBuffer;\r\n if (indexInGroupEntries !== undefined && bindGroupEntriesExist) {\r\n (entries[indexInGroupEntries].resource as GPUBufferBinding).buffer = webgpuBuffer;\r\n (entries[indexInGroupEntries].resource as GPUBufferBinding).size = dataBuffer.capacity;\r\n } else {\r\n binding.indexInGroupEntries = entries.length;\r\n entries.push({\r\n binding: index,\r\n resource: {\r\n buffer: webgpuBuffer,\r\n offset: 0,\r\n size: dataBuffer.capacity,\r\n }\r\n });\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n for (let i = 0; i < this._bindGroupEntries.length; ++i) {\r\n const entries = this._bindGroupEntries[i];\r\n if (!entries) {\r\n this._bindGroups[i] = undefined as any;\r\n continue;\r\n }\r\n this._bindGroups[i] = this._device.createBindGroup({\r\n layout: computePipeline.getBindGroupLayout(i),\r\n entries,\r\n });\r\n }\r\n\r\n this._bindGroups.length = this._bindGroupEntries.length;\r\n }\r\n\r\n return this._bindGroups;\r\n }\r\n\r\n constructor(device: GPUDevice, cacheSampler: WebGPUCacheSampler) {\r\n this._device = device;\r\n this._cacheSampler = cacheSampler;\r\n this.uniqueId = WebGPUComputeContext._Counter++;\r\n this._bindGroupEntries = [];\r\n this.clear();\r\n }\r\n\r\n public clear(): void {\r\n this._bindGroups = [];\r\n // Don't reset _bindGroupEntries if they have already been created, they are still ok even if we have to clear _bindGroups (the layout of the compute shader can't change once created)\r\n }\r\n}"]}
1
+ {"version":3,"file":"webgpuComputeContext.js","sourceRoot":"","sources":["../../../../sourceES6/core/Engines/WebGPU/webgpuComputeContext.ts"],"names":[],"mappings":"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","sourcesContent":["import { StorageBuffer } from \"../../Buffers/storageBuffer\";\r\nimport { IComputeContext } from \"../../Compute/IComputeContext\";\r\nimport { BaseTexture } from \"../../Materials/Textures/baseTexture\";\r\nimport { TextureSampler } from \"../../Materials/Textures/textureSampler\";\r\nimport { UniformBuffer } from \"../../Materials/uniformBuffer\";\r\nimport { Logger } from \"../../Misc/logger\";\r\nimport { ComputeBindingList, ComputeBindingMapping, ComputeBindingType } from \"../Extensions/engine.computeShader\";\r\nimport { WebGPUCacheSampler } from \"./webgpuCacheSampler\";\r\nimport * as WebGPUConstants from './webgpuConstants';\r\nimport { WebGPUHardwareTexture } from \"./webgpuHardwareTexture\";\r\n\r\n/** @hidden */\r\nexport class WebGPUComputeContext implements IComputeContext {\r\n private static _Counter = 0;\r\n\r\n public readonly uniqueId: number;\r\n\r\n private _device: GPUDevice;\r\n private _cacheSampler: WebGPUCacheSampler;\r\n private _bindGroups: GPUBindGroup[];\r\n private _bindGroupEntries: GPUBindGroupEntry[][];\r\n\r\n public getBindGroups(bindings: ComputeBindingList, computePipeline: GPUComputePipeline, bindingsMapping?: ComputeBindingMapping): GPUBindGroup[] {\r\n if (!bindingsMapping) {\r\n throw new Error(\"WebGPUComputeContext.getBindGroups: bindingsMapping is required until browsers support reflection for wgsl shaders!\");\r\n }\r\n if (this._bindGroups.length === 0) {\r\n const bindGroupEntriesExist = this._bindGroupEntries.length > 0;\r\n for (const key in bindings) {\r\n const binding = bindings[key],\r\n location = bindingsMapping[key],\r\n group = location.group,\r\n index = location.binding,\r\n type = binding.type,\r\n object = binding.object;\r\n let indexInGroupEntries = binding.indexInGroupEntries;\r\n\r\n let entries = this._bindGroupEntries[group];\r\n if (!entries) {\r\n entries = this._bindGroupEntries[group] = [];\r\n }\r\n\r\n switch (type) {\r\n case ComputeBindingType.Sampler: {\r\n const sampler = object as TextureSampler;\r\n if (indexInGroupEntries !== undefined && bindGroupEntriesExist) {\r\n entries[indexInGroupEntries].resource = this._cacheSampler.getSampler(sampler);\r\n } else {\r\n binding.indexInGroupEntries = entries.length;\r\n entries.push({\r\n binding: index,\r\n resource: this._cacheSampler.getSampler(sampler),\r\n });\r\n }\r\n break;\r\n }\r\n\r\n case ComputeBindingType.Texture:\r\n case ComputeBindingType.TextureWithoutSampler: {\r\n const texture = object as BaseTexture;\r\n const hardwareTexture = texture._texture!._hardwareTexture as WebGPUHardwareTexture;\r\n if (indexInGroupEntries !== undefined && bindGroupEntriesExist) {\r\n if (type === ComputeBindingType.Texture) {\r\n entries[indexInGroupEntries++].resource = this._cacheSampler.getSampler(texture._texture!);\r\n }\r\n entries[indexInGroupEntries].resource = hardwareTexture.view!;\r\n } else {\r\n binding.indexInGroupEntries = entries.length;\r\n if (type === ComputeBindingType.Texture) {\r\n entries.push({\r\n binding: index - 1,\r\n resource: this._cacheSampler.getSampler(texture._texture!),\r\n });\r\n }\r\n entries.push({\r\n binding: index,\r\n resource: hardwareTexture.view!,\r\n });\r\n }\r\n break;\r\n }\r\n\r\n case ComputeBindingType.StorageTexture: {\r\n const texture = object as BaseTexture;\r\n const hardwareTexture = texture._texture!._hardwareTexture as WebGPUHardwareTexture;\r\n if ((hardwareTexture.textureAdditionalUsages & WebGPUConstants.TextureUsage.StorageBinding) === 0) {\r\n Logger.Error(`computeDispatch: The texture (name=${texture.name}, uniqueId=${texture.uniqueId}) is not a storage texture!`, 50);\r\n }\r\n if (indexInGroupEntries !== undefined && bindGroupEntriesExist) {\r\n entries[indexInGroupEntries].resource = hardwareTexture.viewForWriting!;\r\n } else {\r\n binding.indexInGroupEntries = entries.length;\r\n entries.push({\r\n binding: index,\r\n resource: hardwareTexture.viewForWriting!,\r\n });\r\n }\r\n break;\r\n }\r\n\r\n case ComputeBindingType.UniformBuffer:\r\n case ComputeBindingType.StorageBuffer: {\r\n const buffer = type === ComputeBindingType.UniformBuffer ? object as UniformBuffer : object as StorageBuffer;\r\n const dataBuffer = buffer.getBuffer()!;\r\n const webgpuBuffer = dataBuffer.underlyingResource as GPUBuffer;\r\n if (indexInGroupEntries !== undefined && bindGroupEntriesExist) {\r\n (entries[indexInGroupEntries].resource as GPUBufferBinding).buffer = webgpuBuffer;\r\n (entries[indexInGroupEntries].resource as GPUBufferBinding).size = dataBuffer.capacity;\r\n } else {\r\n binding.indexInGroupEntries = entries.length;\r\n entries.push({\r\n binding: index,\r\n resource: {\r\n buffer: webgpuBuffer,\r\n offset: 0,\r\n size: dataBuffer.capacity,\r\n }\r\n });\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n for (let i = 0; i < this._bindGroupEntries.length; ++i) {\r\n const entries = this._bindGroupEntries[i];\r\n if (!entries) {\r\n this._bindGroups[i] = undefined as any;\r\n continue;\r\n }\r\n this._bindGroups[i] = this._device.createBindGroup({\r\n layout: computePipeline.getBindGroupLayout(i),\r\n entries,\r\n });\r\n }\r\n\r\n this._bindGroups.length = this._bindGroupEntries.length;\r\n }\r\n\r\n return this._bindGroups;\r\n }\r\n\r\n constructor(device: GPUDevice, cacheSampler: WebGPUCacheSampler) {\r\n this._device = device;\r\n this._cacheSampler = cacheSampler;\r\n this.uniqueId = WebGPUComputeContext._Counter++;\r\n this._bindGroupEntries = [];\r\n this.clear();\r\n }\r\n\r\n public clear(): void {\r\n this._bindGroups = [];\r\n // Don't reset _bindGroupEntries if they have already been created, they are still ok even if we have to clear _bindGroups (the layout of the compute shader can't change once created)\r\n }\r\n}"]}
@@ -11,8 +11,8 @@ export declare class WebGPUDrawContext implements IDrawContext {
11
11
  buffers: {
12
12
  [name: string]: Nullable<WebGPUDataBuffer>;
13
13
  };
14
- materialContextUpdateId: number;
15
14
  indirectDrawBuffer?: GPUBuffer;
15
+ private _materialContextUpdateId;
16
16
  private _bufferManager;
17
17
  private _useInstancing;
18
18
  private _indirectDrawData?;
@@ -9,11 +9,11 @@ var WebGPUDrawContext = /** @class */ (function () {
9
9
  this.reset();
10
10
  }
11
11
  WebGPUDrawContext.prototype.isDirty = function (materialContextUpdateId) {
12
- return this._isDirty || this.materialContextUpdateId !== materialContextUpdateId;
12
+ return this._isDirty || this._materialContextUpdateId !== materialContextUpdateId;
13
13
  };
14
14
  WebGPUDrawContext.prototype.resetIsDirty = function (materialContextUpdateId) {
15
15
  this._isDirty = false;
16
- this.materialContextUpdateId = materialContextUpdateId;
16
+ this._materialContextUpdateId = materialContextUpdateId;
17
17
  };
18
18
  Object.defineProperty(WebGPUDrawContext.prototype, "useInstancing", {
19
19
  get: function () {
@@ -45,7 +45,7 @@ var WebGPUDrawContext = /** @class */ (function () {
45
45
  WebGPUDrawContext.prototype.reset = function () {
46
46
  this.buffers = {};
47
47
  this._isDirty = true;
48
- this.materialContextUpdateId = 0;
48
+ this._materialContextUpdateId = 0;
49
49
  this.fastBundle = undefined;
50
50
  this.bindGroups = undefined;
51
51
  };
@@ -1 +1 @@
1
- {"version":3,"file":"webgpuDrawContext.js","sourceRoot":"","sources":["../../../../sourceES6/core/Engines/WebGPU/webgpuDrawContext.ts"],"names":[],"mappings":"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","sourcesContent":["import { WebGPUDataBuffer } from \"../../Meshes/WebGPU/webgpuDataBuffer\";\r\nimport { Nullable } from \"../../types\";\r\nimport { IDrawContext } from \"../IDrawContext\";\r\nimport { WebGPUBufferManager } from \"./webgpuBufferManager\";\r\nimport * as WebGPUConstants from './webgpuConstants';\r\n\r\n/** @hidden */\r\nexport class WebGPUDrawContext implements IDrawContext {\r\n private static _Counter = 0;\r\n\r\n public fastBundle?: GPURenderBundle; // used only when compatibilityMode==false (fast mode)\r\n public bindGroups?: GPUBindGroup[]; // cache of the bind groups. Will be reused for the next draw if isDirty==false (and materialContext.isDirty==false)\r\n\r\n public uniqueId: number;\r\n\r\n public buffers: { [name: string]: Nullable<WebGPUDataBuffer> };\r\n\r\n public materialContextUpdateId: number;\r\n public indirectDrawBuffer?: GPUBuffer;\r\n\r\n private _bufferManager: WebGPUBufferManager;\r\n private _useInstancing: boolean;\r\n private _indirectDrawData?: Uint32Array;\r\n private _currentInstanceCount: number;\r\n private _isDirty: boolean;\r\n\r\n public isDirty(materialContextUpdateId: number): boolean {\r\n return this._isDirty || this.materialContextUpdateId !== materialContextUpdateId;\r\n }\r\n\r\n public resetIsDirty(materialContextUpdateId: number): void {\r\n this._isDirty = false;\r\n this.materialContextUpdateId = materialContextUpdateId;\r\n }\r\n\r\n public get useInstancing() {\r\n return this._useInstancing;\r\n }\r\n\r\n public set useInstancing(use: boolean) {\r\n if (this._useInstancing === use) {\r\n return;\r\n }\r\n\r\n if (!use) {\r\n if (this.indirectDrawBuffer) {\r\n this._bufferManager.releaseBuffer(this.indirectDrawBuffer);\r\n }\r\n this.indirectDrawBuffer = undefined;\r\n this._indirectDrawData = undefined;\r\n } else {\r\n this.indirectDrawBuffer = this._bufferManager.createRawBuffer(40, WebGPUConstants.BufferUsage.CopyDst | WebGPUConstants.BufferUsage.Indirect);\r\n this._indirectDrawData = new Uint32Array(5);\r\n this._indirectDrawData[3] = 0;\r\n this._indirectDrawData[4] = 0;\r\n }\r\n\r\n this._useInstancing = use;\r\n this._currentInstanceCount = -1;\r\n }\r\n\r\n constructor(bufferManager: WebGPUBufferManager) {\r\n this._bufferManager = bufferManager;\r\n this.uniqueId = WebGPUDrawContext._Counter++;\r\n this._useInstancing = false;\r\n this._currentInstanceCount = 0;\r\n this.reset();\r\n }\r\n\r\n public reset(): void {\r\n this.buffers = {};\r\n this._isDirty = true;\r\n this.materialContextUpdateId = 0;\r\n this.fastBundle = undefined;\r\n this.bindGroups = undefined;\r\n }\r\n\r\n public setBuffer(name: string, buffer: Nullable<WebGPUDataBuffer>): void {\r\n this._isDirty ||= buffer?.uniqueId !== this.buffers[name]?.uniqueId;\r\n\r\n this.buffers[name] = buffer;\r\n }\r\n\r\n public setIndirectData(indexOrVertexCount: number, instanceCount: number, firstIndexOrVertex: number): void {\r\n if (instanceCount === this._currentInstanceCount || !this.indirectDrawBuffer || !this._indirectDrawData) {\r\n // The current buffer is already up to date so do nothing\r\n // Note that we only check for instanceCount and not indexOrVertexCount nor firstIndexOrVertex because those values\r\n // are supposed to not change during the lifetime of a draw context\r\n return;\r\n }\r\n this._currentInstanceCount = instanceCount;\r\n\r\n this._indirectDrawData![0] = indexOrVertexCount;\r\n this._indirectDrawData![1] = instanceCount;\r\n this._indirectDrawData![2] = firstIndexOrVertex;\r\n\r\n this._bufferManager.setRawData(this.indirectDrawBuffer, 0, this._indirectDrawData, 0, 20);\r\n }\r\n\r\n public dispose(): void {\r\n if (this.indirectDrawBuffer) {\r\n this._bufferManager.releaseBuffer(this.indirectDrawBuffer);\r\n this.indirectDrawBuffer = undefined;\r\n this._indirectDrawData = undefined;\r\n }\r\n this.fastBundle = undefined;\r\n this.bindGroups = undefined;\r\n this.buffers = undefined as any;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"webgpuDrawContext.js","sourceRoot":"","sources":["../../../../sourceES6/core/Engines/WebGPU/webgpuDrawContext.ts"],"names":[],"mappings":"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","sourcesContent":["import { WebGPUDataBuffer } from \"../../Meshes/WebGPU/webgpuDataBuffer\";\r\nimport { Nullable } from \"../../types\";\r\nimport { IDrawContext } from \"../IDrawContext\";\r\nimport { WebGPUBufferManager } from \"./webgpuBufferManager\";\r\nimport * as WebGPUConstants from './webgpuConstants';\r\n\r\n/** @hidden */\r\nexport class WebGPUDrawContext implements IDrawContext {\r\n private static _Counter = 0;\r\n\r\n public fastBundle?: GPURenderBundle; // used only when compatibilityMode==false (fast mode)\r\n public bindGroups?: GPUBindGroup[]; // cache of the bind groups. Will be reused for the next draw if isDirty==false (and materialContext.isDirty==false)\r\n\r\n public uniqueId: number;\r\n\r\n public buffers: { [name: string]: Nullable<WebGPUDataBuffer> };\r\n\r\n public indirectDrawBuffer?: GPUBuffer;\r\n\r\n private _materialContextUpdateId: number;\r\n private _bufferManager: WebGPUBufferManager;\r\n private _useInstancing: boolean;\r\n private _indirectDrawData?: Uint32Array;\r\n private _currentInstanceCount: number;\r\n private _isDirty: boolean;\r\n\r\n public isDirty(materialContextUpdateId: number): boolean {\r\n return this._isDirty || this._materialContextUpdateId !== materialContextUpdateId;\r\n }\r\n\r\n public resetIsDirty(materialContextUpdateId: number): void {\r\n this._isDirty = false;\r\n this._materialContextUpdateId = materialContextUpdateId;\r\n }\r\n\r\n public get useInstancing() {\r\n return this._useInstancing;\r\n }\r\n\r\n public set useInstancing(use: boolean) {\r\n if (this._useInstancing === use) {\r\n return;\r\n }\r\n\r\n if (!use) {\r\n if (this.indirectDrawBuffer) {\r\n this._bufferManager.releaseBuffer(this.indirectDrawBuffer);\r\n }\r\n this.indirectDrawBuffer = undefined;\r\n this._indirectDrawData = undefined;\r\n } else {\r\n this.indirectDrawBuffer = this._bufferManager.createRawBuffer(40, WebGPUConstants.BufferUsage.CopyDst | WebGPUConstants.BufferUsage.Indirect);\r\n this._indirectDrawData = new Uint32Array(5);\r\n this._indirectDrawData[3] = 0;\r\n this._indirectDrawData[4] = 0;\r\n }\r\n\r\n this._useInstancing = use;\r\n this._currentInstanceCount = -1;\r\n }\r\n\r\n constructor(bufferManager: WebGPUBufferManager) {\r\n this._bufferManager = bufferManager;\r\n this.uniqueId = WebGPUDrawContext._Counter++;\r\n this._useInstancing = false;\r\n this._currentInstanceCount = 0;\r\n this.reset();\r\n }\r\n\r\n public reset(): void {\r\n this.buffers = {};\r\n this._isDirty = true;\r\n this._materialContextUpdateId = 0;\r\n this.fastBundle = undefined;\r\n this.bindGroups = undefined;\r\n }\r\n\r\n public setBuffer(name: string, buffer: Nullable<WebGPUDataBuffer>): void {\r\n this._isDirty ||= buffer?.uniqueId !== this.buffers[name]?.uniqueId;\r\n\r\n this.buffers[name] = buffer;\r\n }\r\n\r\n public setIndirectData(indexOrVertexCount: number, instanceCount: number, firstIndexOrVertex: number): void {\r\n if (instanceCount === this._currentInstanceCount || !this.indirectDrawBuffer || !this._indirectDrawData) {\r\n // The current buffer is already up to date so do nothing\r\n // Note that we only check for instanceCount and not indexOrVertexCount nor firstIndexOrVertex because those values\r\n // are supposed to not change during the lifetime of a draw context\r\n return;\r\n }\r\n this._currentInstanceCount = instanceCount;\r\n\r\n this._indirectDrawData![0] = indexOrVertexCount;\r\n this._indirectDrawData![1] = instanceCount;\r\n this._indirectDrawData![2] = firstIndexOrVertex;\r\n\r\n this._bufferManager.setRawData(this.indirectDrawBuffer, 0, this._indirectDrawData, 0, 20);\r\n }\r\n\r\n public dispose(): void {\r\n if (this.indirectDrawBuffer) {\r\n this._bufferManager.releaseBuffer(this.indirectDrawBuffer);\r\n this.indirectDrawBuffer = undefined;\r\n this._indirectDrawData = undefined;\r\n }\r\n this.fastBundle = undefined;\r\n this.bindGroups = undefined;\r\n this.buffers = undefined as any;\r\n }\r\n}\r\n"]}
@@ -44,7 +44,6 @@ export declare class WebGPUHardwareTexture implements HardwareTextureWrapper {
44
44
  textureAdditionalUsages: number;
45
45
  constructor(existingTexture?: Nullable<GPUTexture>);
46
46
  set(hardwareTexture: GPUTexture): void;
47
- setMSAATexture(hardwareTexture: GPUTexture): void;
48
47
  setUsage(textureSource: number, generateMipMaps: boolean, isCube: boolean, width: number, height: number): void;
49
48
  createView(descriptor?: GPUTextureViewDescriptor, createViewForWriting?: boolean): void;
50
49
  reset(): void;
@@ -33,9 +33,6 @@ var WebGPUHardwareTexture = /** @class */ (function () {
33
33
  WebGPUHardwareTexture.prototype.set = function (hardwareTexture) {
34
34
  this._webgpuTexture = hardwareTexture;
35
35
  };
36
- WebGPUHardwareTexture.prototype.setMSAATexture = function (hardwareTexture) {
37
- this._webgpuMSAATexture = hardwareTexture;
38
- };
39
36
  WebGPUHardwareTexture.prototype.setUsage = function (textureSource, generateMipMaps, isCube, width, height) {
40
37
  generateMipMaps = textureSource === InternalTextureSource.RenderTarget ? false : generateMipMaps;
41
38
  this.createView({
@@ -1 +1 @@
1
- {"version":3,"file":"webgpuHardwareTexture.js","sourceRoot":"","sources":["../../../../sourceES6/core/Engines/WebGPU/webgpuHardwareTexture.ts"],"names":[],"mappings":"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","sourcesContent":["import { HardwareTextureWrapper } from '../../Materials/Textures/hardwareTextureWrapper';\r\nimport { InternalTextureSource } from '../../Materials/Textures/internalTexture';\r\nimport { Scalar } from '../../Maths/math.scalar';\r\nimport { Nullable } from '../../types';\r\nimport * as WebGPUConstants from './webgpuConstants';\r\n\r\ndeclare type WebGPUBundleList = import(\"./webgpuBundleList\").WebGPUBundleList;\r\n\r\n/** @hidden */\r\nexport class WebGPUHardwareTexture implements HardwareTextureWrapper {\r\n\r\n /**\r\n * List of bundles collected in the snapshot rendering mode when the texture is a render target texture\r\n * The index in this array is the current layer we are rendering into\r\n * @hidden\r\n */\r\n public _bundleLists: WebGPUBundleList[];\r\n /**\r\n * Current layer we are rendering into when in snapshot rendering mode (if the texture is a render target texture)\r\n * @hidden\r\n */\r\n public _currentLayer: number;\r\n\r\n /**\r\n * Cache of RenderPassDescriptor and BindGroup used when generating mipmaps (see WebGPUTextureHelper.generateMipmaps)\r\n * @hidden\r\n */\r\n public _mipmapGenRenderPassDescr: GPURenderPassDescriptor[][];\r\n /** @hidden */\r\n public _mipmapGenBindGroup: GPUBindGroup[][];\r\n\r\n /**\r\n * Cache for the invertYPreMultiplyAlpha function (see WebGPUTextureHelper)\r\n * @hidden\r\n */\r\n public _copyInvertYTempTexture?: GPUTexture;\r\n /** @hidden */\r\n public _copyInvertYRenderPassDescr: GPURenderPassDescriptor;\r\n /** @hidden */\r\n public _copyInvertYBindGroup: GPUBindGroup;\r\n /** @hidden */\r\n public _copyInvertYBindGroupWithOfst: GPUBindGroup;\r\n\r\n private _webgpuTexture: Nullable<GPUTexture>;\r\n private _webgpuMSAATexture: Nullable<GPUTexture>;\r\n\r\n public get underlyingResource(): Nullable<GPUTexture> {\r\n return this._webgpuTexture;\r\n }\r\n\r\n public get msaaTexture(): Nullable<GPUTexture> {\r\n return this._webgpuMSAATexture;\r\n }\r\n\r\n public set msaaTexture(texture: Nullable<GPUTexture>) {\r\n this._webgpuMSAATexture = texture;\r\n }\r\n\r\n public view: Nullable<GPUTextureView>;\r\n public viewForWriting: Nullable<GPUTextureView>;\r\n public format: GPUTextureFormat = WebGPUConstants.TextureFormat.RGBA8Unorm;\r\n public textureUsages = 0;\r\n public textureAdditionalUsages = 0;\r\n\r\n constructor(existingTexture: Nullable<GPUTexture> = null) {\r\n this._webgpuTexture = existingTexture;\r\n this._webgpuMSAATexture = null;\r\n this.view = null;\r\n this.viewForWriting = null;\r\n }\r\n\r\n public set(hardwareTexture: GPUTexture): void {\r\n this._webgpuTexture = hardwareTexture;\r\n }\r\n\r\n public setMSAATexture(hardwareTexture: GPUTexture): void {\r\n this._webgpuMSAATexture = hardwareTexture;\r\n }\r\n\r\n public setUsage(textureSource: number, generateMipMaps: boolean, isCube: boolean, width: number, height: number): void {\r\n generateMipMaps = textureSource === InternalTextureSource.RenderTarget ? false : generateMipMaps;\r\n\r\n this.createView({\r\n format: this.format,\r\n dimension: isCube ? WebGPUConstants.TextureViewDimension.Cube : WebGPUConstants.TextureViewDimension.E2d,\r\n mipLevelCount: generateMipMaps ? Scalar.ILog2(Math.max(width, height)) + 1 : 1,\r\n baseArrayLayer: 0,\r\n baseMipLevel: 0,\r\n arrayLayerCount: isCube ? 6 : 1,\r\n aspect: WebGPUConstants.TextureAspect.All\r\n });\r\n }\r\n\r\n public createView(descriptor?: GPUTextureViewDescriptor, createViewForWriting = false): void {\r\n this.view = this._webgpuTexture!.createView(descriptor);\r\n if (createViewForWriting && descriptor) {\r\n const saveNumMipMaps = descriptor.mipLevelCount;\r\n descriptor.mipLevelCount = 1;\r\n this.viewForWriting = this._webgpuTexture!.createView(descriptor);\r\n descriptor.mipLevelCount = saveNumMipMaps;\r\n }\r\n }\r\n\r\n public reset(): void {\r\n this._webgpuTexture = null;\r\n this._webgpuMSAATexture = null;\r\n this.view = null;\r\n this.viewForWriting = null;\r\n }\r\n\r\n public release(): void {\r\n this._webgpuTexture?.destroy();\r\n this._webgpuMSAATexture?.destroy();\r\n this._copyInvertYTempTexture?.destroy();\r\n this.reset();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"webgpuHardwareTexture.js","sourceRoot":"","sources":["../../../../sourceES6/core/Engines/WebGPU/webgpuHardwareTexture.ts"],"names":[],"mappings":"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","sourcesContent":["import { HardwareTextureWrapper } from '../../Materials/Textures/hardwareTextureWrapper';\r\nimport { InternalTextureSource } from '../../Materials/Textures/internalTexture';\r\nimport { Scalar } from '../../Maths/math.scalar';\r\nimport { Nullable } from '../../types';\r\nimport * as WebGPUConstants from './webgpuConstants';\r\n\r\ndeclare type WebGPUBundleList = import(\"./webgpuBundleList\").WebGPUBundleList;\r\n\r\n/** @hidden */\r\nexport class WebGPUHardwareTexture implements HardwareTextureWrapper {\r\n\r\n /**\r\n * List of bundles collected in the snapshot rendering mode when the texture is a render target texture\r\n * The index in this array is the current layer we are rendering into\r\n * @hidden\r\n */\r\n public _bundleLists: WebGPUBundleList[];\r\n /**\r\n * Current layer we are rendering into when in snapshot rendering mode (if the texture is a render target texture)\r\n * @hidden\r\n */\r\n public _currentLayer: number;\r\n\r\n /**\r\n * Cache of RenderPassDescriptor and BindGroup used when generating mipmaps (see WebGPUTextureHelper.generateMipmaps)\r\n * @hidden\r\n */\r\n public _mipmapGenRenderPassDescr: GPURenderPassDescriptor[][];\r\n /** @hidden */\r\n public _mipmapGenBindGroup: GPUBindGroup[][];\r\n\r\n /**\r\n * Cache for the invertYPreMultiplyAlpha function (see WebGPUTextureHelper)\r\n * @hidden\r\n */\r\n public _copyInvertYTempTexture?: GPUTexture;\r\n /** @hidden */\r\n public _copyInvertYRenderPassDescr: GPURenderPassDescriptor;\r\n /** @hidden */\r\n public _copyInvertYBindGroup: GPUBindGroup;\r\n /** @hidden */\r\n public _copyInvertYBindGroupWithOfst: GPUBindGroup;\r\n\r\n private _webgpuTexture: Nullable<GPUTexture>;\r\n private _webgpuMSAATexture: Nullable<GPUTexture>;\r\n\r\n public get underlyingResource(): Nullable<GPUTexture> {\r\n return this._webgpuTexture;\r\n }\r\n\r\n public get msaaTexture(): Nullable<GPUTexture> {\r\n return this._webgpuMSAATexture;\r\n }\r\n\r\n public set msaaTexture(texture: Nullable<GPUTexture>) {\r\n this._webgpuMSAATexture = texture;\r\n }\r\n\r\n public view: Nullable<GPUTextureView>;\r\n public viewForWriting: Nullable<GPUTextureView>;\r\n public format: GPUTextureFormat = WebGPUConstants.TextureFormat.RGBA8Unorm;\r\n public textureUsages = 0;\r\n public textureAdditionalUsages = 0;\r\n\r\n constructor(existingTexture: Nullable<GPUTexture> = null) {\r\n this._webgpuTexture = existingTexture;\r\n this._webgpuMSAATexture = null;\r\n this.view = null;\r\n this.viewForWriting = null;\r\n }\r\n\r\n public set(hardwareTexture: GPUTexture): void {\r\n this._webgpuTexture = hardwareTexture;\r\n }\r\n\r\n public setUsage(textureSource: number, generateMipMaps: boolean, isCube: boolean, width: number, height: number): void {\r\n generateMipMaps = textureSource === InternalTextureSource.RenderTarget ? false : generateMipMaps;\r\n\r\n this.createView({\r\n format: this.format,\r\n dimension: isCube ? WebGPUConstants.TextureViewDimension.Cube : WebGPUConstants.TextureViewDimension.E2d,\r\n mipLevelCount: generateMipMaps ? Scalar.ILog2(Math.max(width, height)) + 1 : 1,\r\n baseArrayLayer: 0,\r\n baseMipLevel: 0,\r\n arrayLayerCount: isCube ? 6 : 1,\r\n aspect: WebGPUConstants.TextureAspect.All\r\n });\r\n }\r\n\r\n public createView(descriptor?: GPUTextureViewDescriptor, createViewForWriting = false): void {\r\n this.view = this._webgpuTexture!.createView(descriptor);\r\n if (createViewForWriting && descriptor) {\r\n const saveNumMipMaps = descriptor.mipLevelCount;\r\n descriptor.mipLevelCount = 1;\r\n this.viewForWriting = this._webgpuTexture!.createView(descriptor);\r\n descriptor.mipLevelCount = saveNumMipMaps;\r\n }\r\n }\r\n\r\n public reset(): void {\r\n this._webgpuTexture = null;\r\n this._webgpuMSAATexture = null;\r\n this.view = null;\r\n this.viewForWriting = null;\r\n }\r\n\r\n public release(): void {\r\n this._webgpuTexture?.destroy();\r\n this._webgpuMSAATexture?.destroy();\r\n this._copyInvertYTempTexture?.destroy();\r\n this.reset();\r\n }\r\n}\r\n"]}
@@ -6,14 +6,6 @@ import { WebGPUShaderProcessingContext } from './webgpuShaderProcessingContext';
6
6
  import { UniformBuffer } from "../../Materials/uniformBuffer";
7
7
  import { IMatrixLike, IVector2Like, IVector3Like, IVector4Like, IColor3Like, IColor4Like } from '../../Maths/math.like';
8
8
  /** @hidden */
9
- export interface IWebGPUPipelineContextVertexInputsCache {
10
- indexBuffer: Nullable<GPUBuffer>;
11
- indexOffset: number;
12
- vertexStartSlot: number;
13
- vertexBuffers: GPUBuffer[];
14
- vertexOffsets: number[];
15
- }
16
- /** @hidden */
17
9
  export interface IWebGPURenderPipelineStageDescriptor {
18
10
  vertexStage: GPUProgrammableStage;
19
11
  fragmentStage?: GPUProgrammableStage;
@@ -1 +1 @@
1
- {"version":3,"file":"webgpuPipelineContext.js","sourceRoot":"","sources":["../../../../sourceES6/core/Engines/WebGPU/webgpuPipelineContext.ts"],"names":[],"mappings":"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","sourcesContent":["import { IPipelineContext } from '../IPipelineContext';\r\nimport { Nullable } from '../../types';\r\nimport { WebGPUEngine } from '../webgpuEngine';\r\nimport { Effect } from '../../Materials/effect';\r\nimport { WebGPUShaderProcessingContext } from './webgpuShaderProcessingContext';\r\nimport { UniformBuffer } from \"../../Materials/uniformBuffer\";\r\nimport { IMatrixLike, IVector2Like, IVector3Like, IVector4Like, IColor3Like, IColor4Like } from '../../Maths/math.like';\r\nimport { WebGPUShaderProcessor } from \"./webgpuShaderProcessor\";\r\n\r\n/** @hidden */\r\nexport interface IWebGPUPipelineContextVertexInputsCache {\r\n indexBuffer: Nullable<GPUBuffer>;\r\n indexOffset: number;\r\n\r\n vertexStartSlot: number;\r\n vertexBuffers: GPUBuffer[];\r\n vertexOffsets: number[];\r\n}\r\n\r\n/** @hidden */\r\nexport interface IWebGPURenderPipelineStageDescriptor {\r\n vertexStage: GPUProgrammableStage;\r\n fragmentStage?: GPUProgrammableStage;\r\n}\r\n\r\n/** @hidden */\r\nexport class WebGPUPipelineContext implements IPipelineContext {\r\n public engine: WebGPUEngine;\r\n\r\n public shaderProcessingContext: WebGPUShaderProcessingContext;\r\n\r\n protected _leftOverUniformsByName: { [name: string]: string };\r\n\r\n public sources: {\r\n vertex: string,\r\n fragment: string,\r\n rawVertex: string,\r\n rawFragment: string,\r\n };\r\n\r\n public stages: Nullable<IWebGPURenderPipelineStageDescriptor>;\r\n\r\n public bindGroupLayouts: GPUBindGroupLayout[];\r\n\r\n /**\r\n * Stores the left-over uniform buffer\r\n */\r\n public uniformBuffer: Nullable<UniformBuffer>;\r\n\r\n // Default implementation.\r\n public onCompiled?: () => void;\r\n\r\n public get isAsync() {\r\n return false;\r\n }\r\n\r\n public get isReady(): boolean {\r\n if (this.stages) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /** @hidden */\r\n public _name: string;\r\n\r\n constructor(shaderProcessingContext: WebGPUShaderProcessingContext, engine: WebGPUEngine) {\r\n this._name = \"unnamed\";\r\n this.shaderProcessingContext = shaderProcessingContext;\r\n this._leftOverUniformsByName = {};\r\n this.engine = engine;\r\n }\r\n\r\n public _handlesSpectorRebuildCallback(onCompiled: (program: any) => void): void {\r\n // Nothing to do yet for spector.\r\n }\r\n\r\n public _fillEffectInformation(effect: Effect, uniformBuffersNames: { [key: string]: number }, uniformsNames: string[], uniforms: { [key: string]: Nullable<WebGLUniformLocation> }, samplerList: string[], samplers: { [key: string]: number }, attributesNames: string[], attributes: number[]) {\r\n const engine = this.engine;\r\n\r\n // Prevent Memory Leak by reducing the number of string, refer to the string instead of copy.\r\n effect._fragmentSourceCode = \"\";\r\n effect._vertexSourceCode = \"\";\r\n // this._fragmentSourceCodeOverride = \"\";\r\n // this._vertexSourceCodeOverride = \"\";\r\n\r\n const foundSamplers = this.shaderProcessingContext.availableTextures;\r\n let index: number;\r\n for (index = 0; index < samplerList.length; index++) {\r\n const name = samplerList[index];\r\n const sampler = foundSamplers[samplerList[index]];\r\n\r\n if (sampler == null || sampler == undefined) {\r\n samplerList.splice(index, 1);\r\n index--;\r\n }\r\n else {\r\n samplers[name] = index;\r\n }\r\n }\r\n\r\n for (let attr of engine.getAttributes(this, attributesNames)) {\r\n attributes.push(attr);\r\n }\r\n\r\n // Build the uniform layout for the left over uniforms.\r\n this.buildUniformLayout();\r\n\r\n let attributeNamesFromEffect: string[] = [];\r\n let attributeLocationsFromEffect: number[] = [];\r\n for (index = 0; index < attributesNames.length; index++) {\r\n const location = attributes[index];\r\n if (location >= 0) {\r\n attributeNamesFromEffect.push(attributesNames[index]);\r\n attributeLocationsFromEffect.push(location);\r\n }\r\n }\r\n this.shaderProcessingContext.attributeNamesFromEffect = attributeNamesFromEffect;\r\n this.shaderProcessingContext.attributeLocationsFromEffect = attributeLocationsFromEffect;\r\n }\r\n\r\n /** @hidden */\r\n /**\r\n * Build the uniform buffer used in the material.\r\n */\r\n public buildUniformLayout(): void {\r\n if (!this.shaderProcessingContext.leftOverUniforms.length) {\r\n return;\r\n }\r\n\r\n this.uniformBuffer = new UniformBuffer(this.engine, undefined, undefined, \"leftOver-\" + this._name);\r\n\r\n for (let leftOverUniform of this.shaderProcessingContext.leftOverUniforms) {\r\n const type = leftOverUniform.type.replace(/^(.*?)(<.*>)?$/, \"$1\");\r\n const size = WebGPUShaderProcessor.UniformSizes[type];\r\n this.uniformBuffer.addUniform(leftOverUniform.name, size, leftOverUniform.length);\r\n this._leftOverUniformsByName[leftOverUniform.name] = leftOverUniform.type;\r\n }\r\n\r\n this.uniformBuffer.create();\r\n }\r\n\r\n /**\r\n * Release all associated resources.\r\n **/\r\n public dispose() {\r\n if (this.uniformBuffer) {\r\n this.uniformBuffer.dispose();\r\n }\r\n }\r\n\r\n /**\r\n * Sets an integer value on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param value Value to be set.\r\n */\r\n public setInt(uniformName: string, value: number): void {\r\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\r\n return;\r\n }\r\n this.uniformBuffer.updateInt(uniformName, value);\r\n }\r\n\r\n /**\r\n * Sets an int2 value on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First int in int2.\r\n * @param y Second int in int2.\r\n */\r\n public setInt2(uniformName: string, x: number, y: number): void {\r\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\r\n return;\r\n }\r\n this.uniformBuffer.updateInt2(uniformName, x, y);\r\n }\r\n\r\n /**\r\n * Sets an int3 value on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First int in int3.\r\n * @param y Second int in int3.\r\n * @param z Third int in int3.\r\n */\r\n public setInt3(uniformName: string, x: number, y: number, z: number): void {\r\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\r\n return;\r\n }\r\n this.uniformBuffer.updateInt3(uniformName, x, y, z);\r\n }\r\n\r\n /**\r\n * Sets an int4 value on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First int in int4.\r\n * @param y Second int in int4.\r\n * @param z Third int in int4.\r\n * @param w Fourth int in int4.\r\n */\r\n public setInt4(uniformName: string, x: number, y: number, z: number, w: number): void {\r\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\r\n return;\r\n }\r\n this.uniformBuffer.updateInt4(uniformName, x, y, z, w);\r\n }\r\n\r\n /**\r\n * Sets an int array on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setIntArray(uniformName: string, array: Int32Array): void {\r\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\r\n return;\r\n }\r\n this.uniformBuffer.updateIntArray(uniformName, array);\r\n }\r\n\r\n /**\r\n * Sets an int array 2 on a uniform variable. (Array is specified as single array eg. [1,2,3,4] will result in [[1,2],[3,4]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setIntArray2(uniformName: string, array: Int32Array): void {\r\n this.setIntArray(uniformName, array);\r\n }\r\n\r\n /**\r\n * Sets an int array 3 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6] will result in [[1,2,3],[4,5,6]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setIntArray3(uniformName: string, array: Int32Array): void {\r\n this.setIntArray(uniformName, array);\r\n }\r\n\r\n /**\r\n * Sets an int array 4 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6,7,8] will result in [[1,2,3,4],[5,6,7,8]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setIntArray4(uniformName: string, array: Int32Array): void {\r\n this.setIntArray(uniformName, array);\r\n }\r\n\r\n /**\r\n * Sets an array on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setArray(uniformName: string, array: number[]): void {\r\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\r\n return;\r\n }\r\n this.uniformBuffer.updateArray(uniformName, array);\r\n }\r\n\r\n /**\r\n * Sets an array 2 on a uniform variable. (Array is specified as single array eg. [1,2,3,4] will result in [[1,2],[3,4]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setArray2(uniformName: string, array: number[]): void {\r\n this.setArray(uniformName, array);\r\n }\r\n\r\n /**\r\n * Sets an array 3 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6] will result in [[1,2,3],[4,5,6]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n * @returns this effect.\r\n */\r\n public setArray3(uniformName: string, array: number[]): void {\r\n this.setArray(uniformName, array);\r\n }\r\n\r\n /**\r\n * Sets an array 4 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6,7,8] will result in [[1,2,3,4],[5,6,7,8]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setArray4(uniformName: string, array: number[]): void {\r\n this.setArray(uniformName, array);\r\n }\r\n\r\n /**\r\n * Sets matrices on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param matrices matrices to be set.\r\n */\r\n public setMatrices(uniformName: string, matrices: Float32Array): void {\r\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\r\n return;\r\n }\r\n this.uniformBuffer.updateMatrices(uniformName, matrices);\r\n }\r\n\r\n /**\r\n * Sets matrix on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param matrix matrix to be set.\r\n */\r\n public setMatrix(uniformName: string, matrix: IMatrixLike): void {\r\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\r\n return;\r\n }\r\n this.uniformBuffer.updateMatrix(uniformName, matrix);\r\n }\r\n\r\n /**\r\n * Sets a 3x3 matrix on a uniform variable. (Specified as [1,2,3,4,5,6,7,8,9] will result in [1,2,3][4,5,6][7,8,9] matrix)\r\n * @param uniformName Name of the variable.\r\n * @param matrix matrix to be set.\r\n */\r\n public setMatrix3x3(uniformName: string, matrix: Float32Array): void {\r\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\r\n return;\r\n }\r\n this.uniformBuffer.updateMatrix3x3(uniformName, matrix);\r\n }\r\n\r\n /**\r\n * Sets a 2x2 matrix on a uniform variable. (Specified as [1,2,3,4] will result in [1,2][3,4] matrix)\r\n * @param uniformName Name of the variable.\r\n * @param matrix matrix to be set.\r\n */\r\n public setMatrix2x2(uniformName: string, matrix: Float32Array): void {\r\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\r\n return;\r\n }\r\n this.uniformBuffer.updateMatrix2x2(uniformName, matrix);\r\n }\r\n\r\n /**\r\n * Sets a float on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param value value to be set.\r\n * @returns this effect.\r\n */\r\n public setFloat(uniformName: string, value: number): void {\r\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\r\n return;\r\n }\r\n this.uniformBuffer.updateFloat(uniformName, value);\r\n }\r\n\r\n /**\r\n * Sets a Vector2 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param vector2 vector2 to be set.\r\n */\r\n public setVector2(uniformName: string, vector2: IVector2Like): void {\r\n this.setFloat2(uniformName, vector2.x, vector2.y);\r\n }\r\n\r\n /**\r\n * Sets a float2 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First float in float2.\r\n * @param y Second float in float2.\r\n */\r\n public setFloat2(uniformName: string, x: number, y: number): void {\r\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\r\n return;\r\n }\r\n this.uniformBuffer.updateFloat2(uniformName, x, y);\r\n }\r\n\r\n /**\r\n * Sets a Vector3 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param vector3 Value to be set.\r\n */\r\n public setVector3(uniformName: string, vector3: IVector3Like): void {\r\n this.setFloat3(uniformName, vector3.x, vector3.y, vector3.z);\r\n }\r\n\r\n /**\r\n * Sets a float3 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First float in float3.\r\n * @param y Second float in float3.\r\n * @param z Third float in float3.\r\n */\r\n public setFloat3(uniformName: string, x: number, y: number, z: number): void {\r\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\r\n return;\r\n }\r\n this.uniformBuffer.updateFloat3(uniformName, x, y, z);\r\n }\r\n\r\n /**\r\n * Sets a Vector4 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param vector4 Value to be set.\r\n */\r\n public setVector4(uniformName: string, vector4: IVector4Like): void {\r\n this.setFloat4(uniformName, vector4.x, vector4.y, vector4.z, vector4.w);\r\n }\r\n\r\n /**\r\n * Sets a float4 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First float in float4.\r\n * @param y Second float in float4.\r\n * @param z Third float in float4.\r\n * @param w Fourth float in float4.\r\n * @returns this effect.\r\n */\r\n public setFloat4(uniformName: string, x: number, y: number, z: number, w: number): void {\r\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\r\n return;\r\n }\r\n this.uniformBuffer.updateFloat4(uniformName, x, y, z, w);\r\n }\r\n\r\n /**\r\n * Sets a Color3 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param color3 Value to be set.\r\n */\r\n public setColor3(uniformName: string, color3: IColor3Like): void {\r\n this.setFloat3(uniformName, color3.r, color3.g, color3.b);\r\n }\r\n\r\n /**\r\n * Sets a Color4 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param color3 Value to be set.\r\n * @param alpha Alpha value to be set.\r\n */\r\n public setColor4(uniformName: string, color3: IColor3Like, alpha: number): void {\r\n this.setFloat4(uniformName, color3.r, color3.g, color3.b, alpha);\r\n }\r\n\r\n /**\r\n * Sets a Color4 on a uniform variable\r\n * @param uniformName defines the name of the variable\r\n * @param color4 defines the value to be set\r\n */\r\n public setDirectColor4(uniformName: string, color4: IColor4Like): void {\r\n this.setFloat4(uniformName, color4.r, color4.g, color4.b, color4.a);\r\n }\r\n\r\n public _getVertexShaderCode(): string | null {\r\n return this.sources?.vertex;\r\n }\r\n\r\n public _getFragmentShaderCode(): string | null {\r\n return this.sources?.fragment;\r\n }\r\n}"]}
1
+ {"version":3,"file":"webgpuPipelineContext.js","sourceRoot":"","sources":["../../../../sourceES6/core/Engines/WebGPU/webgpuPipelineContext.ts"],"names":[],"mappings":"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","sourcesContent":["import { IPipelineContext } from '../IPipelineContext';\r\nimport { Nullable } from '../../types';\r\nimport { WebGPUEngine } from '../webgpuEngine';\r\nimport { Effect } from '../../Materials/effect';\r\nimport { WebGPUShaderProcessingContext } from './webgpuShaderProcessingContext';\r\nimport { UniformBuffer } from \"../../Materials/uniformBuffer\";\r\nimport { IMatrixLike, IVector2Like, IVector3Like, IVector4Like, IColor3Like, IColor4Like } from '../../Maths/math.like';\r\nimport { WebGPUShaderProcessor } from \"./webgpuShaderProcessor\";\r\n\r\n/** @hidden */\r\nexport interface IWebGPURenderPipelineStageDescriptor {\r\n vertexStage: GPUProgrammableStage;\r\n fragmentStage?: GPUProgrammableStage;\r\n}\r\n\r\n/** @hidden */\r\nexport class WebGPUPipelineContext implements IPipelineContext {\r\n public engine: WebGPUEngine;\r\n\r\n public shaderProcessingContext: WebGPUShaderProcessingContext;\r\n\r\n protected _leftOverUniformsByName: { [name: string]: string };\r\n\r\n public sources: {\r\n vertex: string,\r\n fragment: string,\r\n rawVertex: string,\r\n rawFragment: string,\r\n };\r\n\r\n public stages: Nullable<IWebGPURenderPipelineStageDescriptor>;\r\n\r\n public bindGroupLayouts: GPUBindGroupLayout[];\r\n\r\n /**\r\n * Stores the left-over uniform buffer\r\n */\r\n public uniformBuffer: Nullable<UniformBuffer>;\r\n\r\n // Default implementation.\r\n public onCompiled?: () => void;\r\n\r\n public get isAsync() {\r\n return false;\r\n }\r\n\r\n public get isReady(): boolean {\r\n if (this.stages) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /** @hidden */\r\n public _name: string;\r\n\r\n constructor(shaderProcessingContext: WebGPUShaderProcessingContext, engine: WebGPUEngine) {\r\n this._name = \"unnamed\";\r\n this.shaderProcessingContext = shaderProcessingContext;\r\n this._leftOverUniformsByName = {};\r\n this.engine = engine;\r\n }\r\n\r\n public _handlesSpectorRebuildCallback(onCompiled: (program: any) => void): void {\r\n // Nothing to do yet for spector.\r\n }\r\n\r\n public _fillEffectInformation(effect: Effect, uniformBuffersNames: { [key: string]: number }, uniformsNames: string[], uniforms: { [key: string]: Nullable<WebGLUniformLocation> }, samplerList: string[], samplers: { [key: string]: number }, attributesNames: string[], attributes: number[]) {\r\n const engine = this.engine;\r\n\r\n // Prevent Memory Leak by reducing the number of string, refer to the string instead of copy.\r\n effect._fragmentSourceCode = \"\";\r\n effect._vertexSourceCode = \"\";\r\n // this._fragmentSourceCodeOverride = \"\";\r\n // this._vertexSourceCodeOverride = \"\";\r\n\r\n const foundSamplers = this.shaderProcessingContext.availableTextures;\r\n let index: number;\r\n for (index = 0; index < samplerList.length; index++) {\r\n const name = samplerList[index];\r\n const sampler = foundSamplers[samplerList[index]];\r\n\r\n if (sampler == null || sampler == undefined) {\r\n samplerList.splice(index, 1);\r\n index--;\r\n }\r\n else {\r\n samplers[name] = index;\r\n }\r\n }\r\n\r\n for (let attr of engine.getAttributes(this, attributesNames)) {\r\n attributes.push(attr);\r\n }\r\n\r\n // Build the uniform layout for the left over uniforms.\r\n this.buildUniformLayout();\r\n\r\n let attributeNamesFromEffect: string[] = [];\r\n let attributeLocationsFromEffect: number[] = [];\r\n for (index = 0; index < attributesNames.length; index++) {\r\n const location = attributes[index];\r\n if (location >= 0) {\r\n attributeNamesFromEffect.push(attributesNames[index]);\r\n attributeLocationsFromEffect.push(location);\r\n }\r\n }\r\n this.shaderProcessingContext.attributeNamesFromEffect = attributeNamesFromEffect;\r\n this.shaderProcessingContext.attributeLocationsFromEffect = attributeLocationsFromEffect;\r\n }\r\n\r\n /** @hidden */\r\n /**\r\n * Build the uniform buffer used in the material.\r\n */\r\n public buildUniformLayout(): void {\r\n if (!this.shaderProcessingContext.leftOverUniforms.length) {\r\n return;\r\n }\r\n\r\n this.uniformBuffer = new UniformBuffer(this.engine, undefined, undefined, \"leftOver-\" + this._name);\r\n\r\n for (let leftOverUniform of this.shaderProcessingContext.leftOverUniforms) {\r\n const type = leftOverUniform.type.replace(/^(.*?)(<.*>)?$/, \"$1\");\r\n const size = WebGPUShaderProcessor.UniformSizes[type];\r\n this.uniformBuffer.addUniform(leftOverUniform.name, size, leftOverUniform.length);\r\n this._leftOverUniformsByName[leftOverUniform.name] = leftOverUniform.type;\r\n }\r\n\r\n this.uniformBuffer.create();\r\n }\r\n\r\n /**\r\n * Release all associated resources.\r\n **/\r\n public dispose() {\r\n if (this.uniformBuffer) {\r\n this.uniformBuffer.dispose();\r\n }\r\n }\r\n\r\n /**\r\n * Sets an integer value on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param value Value to be set.\r\n */\r\n public setInt(uniformName: string, value: number): void {\r\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\r\n return;\r\n }\r\n this.uniformBuffer.updateInt(uniformName, value);\r\n }\r\n\r\n /**\r\n * Sets an int2 value on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First int in int2.\r\n * @param y Second int in int2.\r\n */\r\n public setInt2(uniformName: string, x: number, y: number): void {\r\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\r\n return;\r\n }\r\n this.uniformBuffer.updateInt2(uniformName, x, y);\r\n }\r\n\r\n /**\r\n * Sets an int3 value on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First int in int3.\r\n * @param y Second int in int3.\r\n * @param z Third int in int3.\r\n */\r\n public setInt3(uniformName: string, x: number, y: number, z: number): void {\r\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\r\n return;\r\n }\r\n this.uniformBuffer.updateInt3(uniformName, x, y, z);\r\n }\r\n\r\n /**\r\n * Sets an int4 value on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First int in int4.\r\n * @param y Second int in int4.\r\n * @param z Third int in int4.\r\n * @param w Fourth int in int4.\r\n */\r\n public setInt4(uniformName: string, x: number, y: number, z: number, w: number): void {\r\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\r\n return;\r\n }\r\n this.uniformBuffer.updateInt4(uniformName, x, y, z, w);\r\n }\r\n\r\n /**\r\n * Sets an int array on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setIntArray(uniformName: string, array: Int32Array): void {\r\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\r\n return;\r\n }\r\n this.uniformBuffer.updateIntArray(uniformName, array);\r\n }\r\n\r\n /**\r\n * Sets an int array 2 on a uniform variable. (Array is specified as single array eg. [1,2,3,4] will result in [[1,2],[3,4]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setIntArray2(uniformName: string, array: Int32Array): void {\r\n this.setIntArray(uniformName, array);\r\n }\r\n\r\n /**\r\n * Sets an int array 3 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6] will result in [[1,2,3],[4,5,6]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setIntArray3(uniformName: string, array: Int32Array): void {\r\n this.setIntArray(uniformName, array);\r\n }\r\n\r\n /**\r\n * Sets an int array 4 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6,7,8] will result in [[1,2,3,4],[5,6,7,8]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setIntArray4(uniformName: string, array: Int32Array): void {\r\n this.setIntArray(uniformName, array);\r\n }\r\n\r\n /**\r\n * Sets an array on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setArray(uniformName: string, array: number[]): void {\r\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\r\n return;\r\n }\r\n this.uniformBuffer.updateArray(uniformName, array);\r\n }\r\n\r\n /**\r\n * Sets an array 2 on a uniform variable. (Array is specified as single array eg. [1,2,3,4] will result in [[1,2],[3,4]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setArray2(uniformName: string, array: number[]): void {\r\n this.setArray(uniformName, array);\r\n }\r\n\r\n /**\r\n * Sets an array 3 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6] will result in [[1,2,3],[4,5,6]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n * @returns this effect.\r\n */\r\n public setArray3(uniformName: string, array: number[]): void {\r\n this.setArray(uniformName, array);\r\n }\r\n\r\n /**\r\n * Sets an array 4 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6,7,8] will result in [[1,2,3,4],[5,6,7,8]] in the shader)\r\n * @param uniformName Name of the variable.\r\n * @param array array to be set.\r\n */\r\n public setArray4(uniformName: string, array: number[]): void {\r\n this.setArray(uniformName, array);\r\n }\r\n\r\n /**\r\n * Sets matrices on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param matrices matrices to be set.\r\n */\r\n public setMatrices(uniformName: string, matrices: Float32Array): void {\r\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\r\n return;\r\n }\r\n this.uniformBuffer.updateMatrices(uniformName, matrices);\r\n }\r\n\r\n /**\r\n * Sets matrix on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param matrix matrix to be set.\r\n */\r\n public setMatrix(uniformName: string, matrix: IMatrixLike): void {\r\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\r\n return;\r\n }\r\n this.uniformBuffer.updateMatrix(uniformName, matrix);\r\n }\r\n\r\n /**\r\n * Sets a 3x3 matrix on a uniform variable. (Specified as [1,2,3,4,5,6,7,8,9] will result in [1,2,3][4,5,6][7,8,9] matrix)\r\n * @param uniformName Name of the variable.\r\n * @param matrix matrix to be set.\r\n */\r\n public setMatrix3x3(uniformName: string, matrix: Float32Array): void {\r\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\r\n return;\r\n }\r\n this.uniformBuffer.updateMatrix3x3(uniformName, matrix);\r\n }\r\n\r\n /**\r\n * Sets a 2x2 matrix on a uniform variable. (Specified as [1,2,3,4] will result in [1,2][3,4] matrix)\r\n * @param uniformName Name of the variable.\r\n * @param matrix matrix to be set.\r\n */\r\n public setMatrix2x2(uniformName: string, matrix: Float32Array): void {\r\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\r\n return;\r\n }\r\n this.uniformBuffer.updateMatrix2x2(uniformName, matrix);\r\n }\r\n\r\n /**\r\n * Sets a float on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param value value to be set.\r\n * @returns this effect.\r\n */\r\n public setFloat(uniformName: string, value: number): void {\r\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\r\n return;\r\n }\r\n this.uniformBuffer.updateFloat(uniformName, value);\r\n }\r\n\r\n /**\r\n * Sets a Vector2 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param vector2 vector2 to be set.\r\n */\r\n public setVector2(uniformName: string, vector2: IVector2Like): void {\r\n this.setFloat2(uniformName, vector2.x, vector2.y);\r\n }\r\n\r\n /**\r\n * Sets a float2 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First float in float2.\r\n * @param y Second float in float2.\r\n */\r\n public setFloat2(uniformName: string, x: number, y: number): void {\r\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\r\n return;\r\n }\r\n this.uniformBuffer.updateFloat2(uniformName, x, y);\r\n }\r\n\r\n /**\r\n * Sets a Vector3 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param vector3 Value to be set.\r\n */\r\n public setVector3(uniformName: string, vector3: IVector3Like): void {\r\n this.setFloat3(uniformName, vector3.x, vector3.y, vector3.z);\r\n }\r\n\r\n /**\r\n * Sets a float3 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First float in float3.\r\n * @param y Second float in float3.\r\n * @param z Third float in float3.\r\n */\r\n public setFloat3(uniformName: string, x: number, y: number, z: number): void {\r\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\r\n return;\r\n }\r\n this.uniformBuffer.updateFloat3(uniformName, x, y, z);\r\n }\r\n\r\n /**\r\n * Sets a Vector4 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param vector4 Value to be set.\r\n */\r\n public setVector4(uniformName: string, vector4: IVector4Like): void {\r\n this.setFloat4(uniformName, vector4.x, vector4.y, vector4.z, vector4.w);\r\n }\r\n\r\n /**\r\n * Sets a float4 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param x First float in float4.\r\n * @param y Second float in float4.\r\n * @param z Third float in float4.\r\n * @param w Fourth float in float4.\r\n * @returns this effect.\r\n */\r\n public setFloat4(uniformName: string, x: number, y: number, z: number, w: number): void {\r\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\r\n return;\r\n }\r\n this.uniformBuffer.updateFloat4(uniformName, x, y, z, w);\r\n }\r\n\r\n /**\r\n * Sets a Color3 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param color3 Value to be set.\r\n */\r\n public setColor3(uniformName: string, color3: IColor3Like): void {\r\n this.setFloat3(uniformName, color3.r, color3.g, color3.b);\r\n }\r\n\r\n /**\r\n * Sets a Color4 on a uniform variable.\r\n * @param uniformName Name of the variable.\r\n * @param color3 Value to be set.\r\n * @param alpha Alpha value to be set.\r\n */\r\n public setColor4(uniformName: string, color3: IColor3Like, alpha: number): void {\r\n this.setFloat4(uniformName, color3.r, color3.g, color3.b, alpha);\r\n }\r\n\r\n /**\r\n * Sets a Color4 on a uniform variable\r\n * @param uniformName defines the name of the variable\r\n * @param color4 defines the value to be set\r\n */\r\n public setDirectColor4(uniformName: string, color4: IColor4Like): void {\r\n this.setFloat4(uniformName, color4.r, color4.g, color4.b, color4.a);\r\n }\r\n\r\n public _getVertexShaderCode(): string | null {\r\n return this.sources?.vertex;\r\n }\r\n\r\n public _getFragmentShaderCode(): string | null {\r\n return this.sources?.fragment;\r\n }\r\n}"]}
@@ -34,7 +34,7 @@ var WebGPUShaderProcessorGLSL = /** @class */ (function (_super) {
34
34
  this._textureArrayProcessing.length = 0;
35
35
  };
36
36
  WebGPUShaderProcessorGLSL.prototype.preProcessShaderCode = function (code, isFragment) {
37
- var ubDeclaration = "uniform " + WebGPUShaderProcessor.InternalsUBOName + " {\nfloat yFactor__;\nfloat textureOutputHeight__;\n};\n";
37
+ var ubDeclaration = "uniform ".concat(WebGPUShaderProcessor.InternalsUBOName, " {\nfloat yFactor__;\nfloat textureOutputHeight__;\n};\n");
38
38
  if (isFragment) {
39
39
  return ubDeclaration + "##INJECTCODE##\n" + code;
40
40
  }
@@ -52,15 +52,15 @@ var WebGPUShaderProcessorGLSL = /** @class */ (function (_super) {
52
52
  location_1 = this.webgpuProcessingContext.availableVaryings[name_1];
53
53
  this._missingVaryings[location_1] = "";
54
54
  if (location_1 === undefined) {
55
- Logger.Warn("Invalid fragment shader: The varying named \"" + name_1 + "\" is not declared in the vertex shader! This declaration will be ignored.");
55
+ Logger.Warn("Invalid fragment shader: The varying named \"".concat(name_1, "\" is not declared in the vertex shader! This declaration will be ignored."));
56
56
  }
57
57
  }
58
58
  else {
59
59
  location_1 = this.webgpuProcessingContext.getVaryingNextLocation(varyingType, this._getArraySize(name_1, varyingType, preProcessors)[2]);
60
60
  this.webgpuProcessingContext.availableVaryings[name_1] = location_1;
61
- this._missingVaryings[location_1] = "layout(location = " + location_1 + ") in " + varyingType + " " + name_1 + ";";
61
+ this._missingVaryings[location_1] = "layout(location = ".concat(location_1, ") in ").concat(varyingType, " ").concat(name_1, ";");
62
62
  }
63
- varying = varying.replace(match[0], location_1 === undefined ? "" : "layout(location = " + location_1 + ") " + (isFragment ? "in" : "out") + " " + varyingType + " " + name_1 + ";");
63
+ varying = varying.replace(match[0], location_1 === undefined ? "" : "layout(location = ".concat(location_1, ") ").concat(isFragment ? "in" : "out", " ").concat(varyingType, " ").concat(name_1, ";"));
64
64
  }
65
65
  return varying;
66
66
  };
@@ -74,7 +74,7 @@ var WebGPUShaderProcessorGLSL = /** @class */ (function (_super) {
74
74
  var location_2 = this.webgpuProcessingContext.getAttributeNextLocation(attributeType, this._getArraySize(name_2, attributeType, preProcessors)[2]);
75
75
  this.webgpuProcessingContext.availableAttributes[name_2] = location_2;
76
76
  this.webgpuProcessingContext.orderedAttributes[location_2] = name_2;
77
- attribute = attribute.replace(match[0], "layout(location = " + location_2 + ") in " + attributeType + " " + name_2 + ";");
77
+ attribute = attribute.replace(match[0], "layout(location = ".concat(location_2, ") in ").concat(attributeType, " ").concat(name_2, ";"));
78
78
  }
79
79
  return attribute;
80
80
  };
@@ -131,17 +131,17 @@ var WebGPUShaderProcessorGLSL = /** @class */ (function (_super) {
131
131
  // Manage textures and samplers.
132
132
  if (!isTextureArray) {
133
133
  arraySize = 1;
134
- uniform = "layout(set = " + samplerGroupIndex + ", binding = " + samplerBindingIndex + ") uniform " + componentType + samplerType + " " + samplerName + ";\n layout(set = " + textureInfo.textures[0].groupIndex + ", binding = " + textureInfo.textures[0].bindingIndex + ") uniform " + textureType + " " + name_3 + "Texture;\n #define " + name_3 + " " + componentType + samplerFunction + "(" + name_3 + "Texture, " + samplerName + ")";
134
+ uniform = "layout(set = ".concat(samplerGroupIndex, ", binding = ").concat(samplerBindingIndex, ") uniform ").concat(componentType).concat(samplerType, " ").concat(samplerName, ";\n layout(set = ").concat(textureInfo.textures[0].groupIndex, ", binding = ").concat(textureInfo.textures[0].bindingIndex, ") uniform ").concat(textureType, " ").concat(name_3, "Texture;\n #define ").concat(name_3, " ").concat(componentType).concat(samplerFunction, "(").concat(name_3, "Texture, ").concat(samplerName, ")");
135
135
  }
136
136
  else {
137
137
  var layouts = [];
138
- layouts.push("layout(set = " + samplerGroupIndex + ", binding = " + samplerBindingIndex + ") uniform " + componentType + samplerType + " " + samplerName + ";");
138
+ layouts.push("layout(set = ".concat(samplerGroupIndex, ", binding = ").concat(samplerBindingIndex, ") uniform ").concat(componentType).concat(samplerType, " ").concat(samplerName, ";"));
139
139
  uniform = "\r\n";
140
140
  for (var i = 0; i < arraySize; ++i) {
141
141
  var textureSetIndex = textureInfo.textures[i].groupIndex;
142
142
  var textureBindingIndex = textureInfo.textures[i].bindingIndex;
143
- layouts.push("layout(set = " + textureSetIndex + ", binding = " + textureBindingIndex + ") uniform " + textureType + " " + name_3 + "Texture" + i + ";");
144
- uniform += (i > 0 ? '\r\n' : '') + "#define " + name_3 + i + " " + componentType + samplerFunction + "(" + name_3 + "Texture" + i + ", " + samplerName + ")";
143
+ layouts.push("layout(set = ".concat(textureSetIndex, ", binding = ").concat(textureBindingIndex, ") uniform ").concat(textureType, " ").concat(name_3, "Texture").concat(i, ";"));
144
+ uniform += "".concat(i > 0 ? '\r\n' : '', "#define ").concat(name_3).concat(i, " ").concat(componentType).concat(samplerFunction, "(").concat(name_3, "Texture").concat(i, ", ").concat(samplerName, ")");
145
145
  }
146
146
  uniform = layouts.join('\r\n') + uniform;
147
147
  this._textureArrayProcessing.push(name_3);
@@ -179,7 +179,7 @@ var WebGPUShaderProcessorGLSL = /** @class */ (function (_super) {
179
179
  this.webgpuProcessingContext.availableBuffers[name_4] = uniformBufferInfo;
180
180
  }
181
181
  this._addBufferBindingDescription(name_4, uniformBufferInfo, WebGPUConstants.BufferBindingType.Uniform, !isFragment);
182
- uniformBuffer = uniformBuffer.replace("uniform", "layout(set = " + uniformBufferInfo.binding.groupIndex + ", binding = " + uniformBufferInfo.binding.bindingIndex + ") uniform");
182
+ uniformBuffer = uniformBuffer.replace("uniform", "layout(set = ".concat(uniformBufferInfo.binding.groupIndex, ", binding = ").concat(uniformBufferInfo.binding.bindingIndex, ") uniform"));
183
183
  }
184
184
  return uniformBuffer;
185
185
  };
@@ -244,14 +244,14 @@ var WebGPUShaderProcessorGLSL = /** @class */ (function (_super) {
244
244
  return code;
245
245
  };
246
246
  WebGPUShaderProcessorGLSL.prototype._generateLeftOverUBOCode = function (name, uniformBufferDescription) {
247
- var ubo = "layout(set = " + uniformBufferDescription.binding.groupIndex + ", binding = " + uniformBufferDescription.binding.bindingIndex + ") uniform " + name + " {\n ";
247
+ var ubo = "layout(set = ".concat(uniformBufferDescription.binding.groupIndex, ", binding = ").concat(uniformBufferDescription.binding.bindingIndex, ") uniform ").concat(name, " {\n ");
248
248
  for (var _i = 0, _a = this.webgpuProcessingContext.leftOverUniforms; _i < _a.length; _i++) {
249
249
  var leftOverUniform = _a[_i];
250
250
  if (leftOverUniform.length > 0) {
251
- ubo += " " + leftOverUniform.type + " " + leftOverUniform.name + "[" + leftOverUniform.length + "];\n";
251
+ ubo += " ".concat(leftOverUniform.type, " ").concat(leftOverUniform.name, "[").concat(leftOverUniform.length, "];\n");
252
252
  }
253
253
  else {
254
- ubo += " " + leftOverUniform.type + " " + leftOverUniform.name + ";\n";
254
+ ubo += " ".concat(leftOverUniform.type, " ").concat(leftOverUniform.name, ";\n");
255
255
  }
256
256
  }
257
257
  ubo += "};\n\n";
@@ -1 +1 @@
1
- {"version":3,"file":"webgpuShaderProcessorsGLSL.js","sourceRoot":"","sources":["../../../../sourceES6/core/Engines/WebGPU/webgpuShaderProcessorsGLSL.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 { ShaderLanguage } from \"../../Materials/shaderLanguage\";\r\n\r\n/** @hidden */\r\nexport class WebGPUShaderProcessorGLSL extends WebGPUShaderProcessor {\r\n\r\n protected _missingVaryings: Array<string> = [];\r\n protected _textureArrayProcessing: Array<string> = [];\r\n protected _preProcessors: { [key: string]: string };\r\n\r\n public shaderLanguage = ShaderLanguage.GLSL;\r\n\r\n protected _getArraySize(name: string, type: string, preProcessors: { [key: string]: string }): [string, string, number] {\r\n let length = 0;\r\n const startArray = name.indexOf(\"[\");\r\n const endArray = name.indexOf(\"]\");\r\n if (startArray > 0 && endArray > 0) {\r\n const lengthInString = name.substring(startArray + 1, endArray);\r\n length = +(lengthInString);\r\n if (isNaN(length)) {\r\n length = +(preProcessors[lengthInString.trim()]);\r\n }\r\n name = name.substr(0, startArray);\r\n }\r\n return [name, type, 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._missingVaryings.length = 0;\r\n this._textureArrayProcessing.length = 0;\r\n }\r\n\r\n public preProcessShaderCode(code: string, isFragment: boolean): string {\r\n const ubDeclaration = `uniform ${WebGPUShaderProcessor.InternalsUBOName} {\\nfloat yFactor__;\\nfloat textureOutputHeight__;\\n};\\n`;\r\n\r\n if (isFragment) {\r\n return ubDeclaration + \"##INJECTCODE##\\n\" + code;\r\n }\r\n return ubDeclaration + code;\r\n }\r\n\r\n public varyingProcessor(varying: string, isFragment: boolean, preProcessors: { [key: string]: string }, processingContext: Nullable<ShaderProcessingContext>) {\r\n this._preProcessors = preProcessors;\r\n\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[1];\r\n const name = match[2];\r\n let location: number;\r\n if (isFragment) {\r\n location = this.webgpuProcessingContext.availableVaryings[name];\r\n this._missingVaryings[location] = \"\";\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._missingVaryings[location] = `layout(location = ${location}) in ${varyingType} ${name};`;\r\n }\r\n\r\n varying = varying.replace(match[0], location === undefined ? \"\" : `layout(location = ${location}) ${isFragment ? \"in\" : \"out\"} ${varyingType} ${name};`);\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 this._preProcessors = preProcessors;\r\n\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[1];\r\n const name = match[2];\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 attribute = attribute.replace(match[0], `layout(location = ${location}) in ${attributeType} ${name};`);\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 this._preProcessors = preProcessors;\r\n\r\n const uniformRegex = /\\s*uniform\\s+(?:(?:highp)?|(?:lowp)?)\\s*(\\S+)\\s+(\\S+)\\s*;/gm;\r\n\r\n const match = uniformRegex.exec(uniform);\r\n if (match != null) {\r\n let uniformType = match[1];\r\n let name = match[2];\r\n\r\n if (uniformType.indexOf(\"sampler\") === 0 || uniformType.indexOf(\"sampler\") === 1) {\r\n let arraySize = 0; // 0 means the texture is not declared as an array\r\n\r\n [name, uniformType, arraySize] = this._getArraySize(name, uniformType, preProcessors);\r\n\r\n let textureInfo = this.webgpuProcessingContext.availableTextures[name];\r\n if (!textureInfo) {\r\n textureInfo = {\r\n autoBindSampler: true,\r\n isTextureArray: arraySize > 0,\r\n isStorageTexture: false,\r\n textures: [],\r\n sampleType: WebGPUConstants.TextureSampleType.Float,\r\n };\r\n for (let i = 0; i < (arraySize || 1); ++i) {\r\n textureInfo.textures.push(this.webgpuProcessingContext.getNextFreeUBOBinding());\r\n }\r\n }\r\n\r\n const samplerType = WebGPUShaderProcessor._SamplerTypeByWebGLSamplerType[uniformType] ?? \"sampler\";\r\n const isComparisonSampler = !!WebGPUShaderProcessor._IsComparisonSamplerByWebGPUSamplerType[samplerType];\r\n const samplerBindingType = isComparisonSampler ? WebGPUConstants.SamplerBindingType.Comparison : WebGPUConstants.SamplerBindingType.Filtering;\r\n const samplerName = name + WebGPUShaderProcessor.AutoSamplerSuffix;\r\n\r\n let samplerInfo = this.webgpuProcessingContext.availableSamplers[samplerName];\r\n if (!samplerInfo) {\r\n samplerInfo = {\r\n binding: this.webgpuProcessingContext.getNextFreeUBOBinding(),\r\n type: samplerBindingType,\r\n };\r\n }\r\n\r\n const componentType = uniformType.charAt(0) === 'u' ? 'u' : uniformType.charAt(0) === 'i' ? 'i' : '';\r\n\r\n if (componentType) {\r\n uniformType = uniformType.substr(1);\r\n }\r\n\r\n const sampleType =\r\n isComparisonSampler ? WebGPUConstants.TextureSampleType.Depth :\r\n componentType === 'u' ? WebGPUConstants.TextureSampleType.Uint :\r\n componentType === 'i' ? WebGPUConstants.TextureSampleType.Sint : WebGPUConstants.TextureSampleType.Float;\r\n\r\n textureInfo.sampleType = sampleType;\r\n\r\n const isTextureArray = arraySize > 0;\r\n const samplerGroupIndex = samplerInfo.binding.groupIndex;\r\n const samplerBindingIndex = samplerInfo.binding.bindingIndex;\r\n const samplerFunction = WebGPUShaderProcessor._SamplerFunctionByWebGLSamplerType[uniformType];\r\n const textureType = WebGPUShaderProcessor._TextureTypeByWebGLSamplerType[uniformType];\r\n const textureDimension = WebGPUShaderProcessor._GpuTextureViewDimensionByWebGPUTextureType[textureType];\r\n\r\n // Manage textures and samplers.\r\n if (!isTextureArray) {\r\n arraySize = 1;\r\n uniform = `layout(set = ${samplerGroupIndex}, binding = ${samplerBindingIndex}) uniform ${componentType}${samplerType} ${samplerName};\r\n layout(set = ${textureInfo.textures[0].groupIndex}, binding = ${textureInfo.textures[0].bindingIndex}) uniform ${textureType} ${name}Texture;\r\n #define ${name} ${componentType}${samplerFunction}(${name}Texture, ${samplerName})`;\r\n } else {\r\n let layouts = [];\r\n layouts.push(`layout(set = ${samplerGroupIndex}, binding = ${samplerBindingIndex}) uniform ${componentType}${samplerType} ${samplerName};`);\r\n uniform = `\\r\\n`;\r\n for (let i = 0; i < arraySize; ++i) {\r\n const textureSetIndex = textureInfo.textures[i].groupIndex;\r\n const textureBindingIndex = textureInfo.textures[i].bindingIndex;\r\n\r\n layouts.push(`layout(set = ${textureSetIndex}, binding = ${textureBindingIndex}) uniform ${textureType} ${name}Texture${i};`);\r\n\r\n uniform += `${i > 0 ? '\\r\\n' : ''}#define ${name}${i} ${componentType}${samplerFunction}(${name}Texture${i}, ${samplerName})`;\r\n }\r\n uniform = layouts.join('\\r\\n') + uniform;\r\n this._textureArrayProcessing.push(name);\r\n }\r\n\r\n this.webgpuProcessingContext.availableTextures[name] = textureInfo;\r\n this.webgpuProcessingContext.availableSamplers[samplerName] = samplerInfo;\r\n\r\n this._addSamplerBindingDescription(samplerName, samplerInfo, !isFragment);\r\n\r\n for (let i = 0; i < arraySize; ++i) {\r\n this._addTextureBindingDescription(name, textureInfo, i, textureDimension, null, !isFragment);\r\n }\r\n }\r\n else {\r\n this._addUniformToLeftOverUBO(name, uniformType, preProcessors);\r\n uniform = \"\";\r\n }\r\n }\r\n return uniform;\r\n }\r\n\r\n public uniformBufferProcessor(uniformBuffer: string, isFragment: boolean, processingContext: Nullable<ShaderProcessingContext>): string {\r\n const uboRegex = /uniform\\s+(\\w+)/gm;\r\n\r\n const match = uboRegex.exec(uniformBuffer);\r\n if (match != null) {\r\n const name = match[1];\r\n\r\n let uniformBufferInfo = this.webgpuProcessingContext.availableBuffers[name];\r\n if (!uniformBufferInfo) {\r\n const knownUBO = WebGPUShaderProcessingContext.KnownUBOs[name];\r\n\r\n let binding;\r\n if (knownUBO && knownUBO.binding.groupIndex !== -1) {\r\n binding = knownUBO.binding;\r\n } else {\r\n binding = this.webgpuProcessingContext.getNextFreeUBOBinding();\r\n }\r\n\r\n uniformBufferInfo = { binding };\r\n this.webgpuProcessingContext.availableBuffers[name] = uniformBufferInfo;\r\n }\r\n\r\n this._addBufferBindingDescription(name, uniformBufferInfo, WebGPUConstants.BufferBindingType.Uniform, !isFragment);\r\n\r\n uniformBuffer = uniformBuffer.replace(\"uniform\", `layout(set = ${uniformBufferInfo.binding.groupIndex}, binding = ${uniformBufferInfo.binding.bindingIndex}) uniform`);\r\n }\r\n return uniformBuffer;\r\n }\r\n\r\n public postProcessor(code: string, defines: string[], isFragment: boolean, processingContext: Nullable<ShaderProcessingContext>, engine: ThinEngine) {\r\n const hasDrawBuffersExtension = code.search(/#extension.+GL_EXT_draw_buffers.+require/) !== -1;\r\n\r\n // Remove extensions\r\n var regex = /#extension.+(GL_OVR_multiview2|GL_OES_standard_derivatives|GL_EXT_shader_texture_lod|GL_EXT_frag_depth|GL_EXT_draw_buffers).+(enable|require)/g;\r\n code = code.replace(regex, \"\");\r\n\r\n // Replace instructions\r\n code = code.replace(/texture2D\\s*\\(/g, \"texture(\");\r\n if (isFragment) {\r\n const hasFragCoord = code.indexOf(\"gl_FragCoord\") >= 0;\r\n const fragCoordCode = `\r\n glFragCoord__ = gl_FragCoord;\r\n if (yFactor__ == 1.) {\r\n glFragCoord__.y = textureOutputHeight__ - glFragCoord__.y;\r\n }\r\n `;\r\n\r\n const injectCode = hasFragCoord ? \"vec4 glFragCoord__;\\n\" : \"\";\r\n\r\n code = code.replace(/texture2DLodEXT\\s*\\(/g, \"textureLod(\");\r\n code = code.replace(/textureCubeLodEXT\\s*\\(/g, \"textureLod(\");\r\n code = code.replace(/textureCube\\s*\\(/g, \"texture(\");\r\n code = code.replace(/gl_FragDepthEXT/g, \"gl_FragDepth\");\r\n code = code.replace(/gl_FragColor/g, \"glFragColor\");\r\n code = code.replace(/gl_FragData/g, \"glFragData\");\r\n code = code.replace(/gl_FragCoord/g, \"glFragCoord__\");\r\n code = code.replace(/void\\s+?main\\s*\\(/g, (hasDrawBuffersExtension ? \"\" : \"layout(location = 0) out vec4 glFragColor;\\n\") + \"void main(\");\r\n code = code.replace(/dFdy/g, \"(-yFactor__)*dFdy\"); // will also handle dFdyCoarse and dFdyFine\r\n code = code.replace(\"##INJECTCODE##\", injectCode);\r\n\r\n if (hasFragCoord) {\r\n code = this._injectStartingAndEndingCode(code, \"void main\", fragCoordCode);\r\n }\r\n } else {\r\n code = code.replace(/gl_InstanceID/g, \"gl_InstanceIndex\");\r\n code = code.replace(/gl_VertexID/g, \"gl_VertexIndex\");\r\n var hasMultiviewExtension = defines.indexOf(\"#define MULTIVIEW\") !== -1;\r\n if (hasMultiviewExtension) {\r\n return \"#extension GL_OVR_multiview2 : require\\nlayout (num_views = 2) in;\\n\" + code;\r\n }\r\n }\r\n\r\n // Flip Y + convert z range from [-1,1] to [0,1]\r\n if (!isFragment) {\r\n const lastClosingCurly = code.lastIndexOf(\"}\");\r\n code = code.substring(0, lastClosingCurly);\r\n code += \"gl_Position.y *= yFactor__;\\n\";\r\n if (!engine.isNDCHalfZRange) {\r\n code += \"gl_Position.z = (gl_Position.z + gl_Position.w) / 2.0;\\n\";\r\n }\r\n code += \"}\";\r\n }\r\n\r\n return code;\r\n }\r\n\r\n private _applyTextureArrayProcessing(code: string, name: string): string {\r\n // Replaces the occurrences of name[XX] by nameXX\r\n const regex = new RegExp(name + \"\\\\s*\\\\[(.+)?\\\\]\", \"gm\");\r\n let match = regex.exec(code);\r\n\r\n while (match != null) {\r\n let index = match[1];\r\n let iindex = +(index);\r\n if (this._preProcessors && isNaN(iindex)) {\r\n iindex = +(this._preProcessors[index.trim()]);\r\n }\r\n code = code.replace(match[0], name + iindex);\r\n match = regex.exec(code);\r\n }\r\n\r\n return code;\r\n }\r\n\r\n protected _generateLeftOverUBOCode(name: string, uniformBufferDescription: WebGPUBufferDescription): string {\r\n let ubo = `layout(set = ${uniformBufferDescription.binding.groupIndex}, binding = ${uniformBufferDescription.binding.bindingIndex}) uniform ${name} {\\n `;\r\n for (let leftOverUniform of this.webgpuProcessingContext.leftOverUniforms) {\r\n if (leftOverUniform.length > 0) {\r\n ubo += ` ${leftOverUniform.type} ${leftOverUniform.name}[${leftOverUniform.length}];\\n`;\r\n }\r\n else {\r\n ubo += ` ${leftOverUniform.type} ${leftOverUniform.name};\\n`;\r\n }\r\n }\r\n ubo += \"};\\n\\n\";\r\n\r\n return ubo;\r\n }\r\n\r\n public finalizeShaders(vertexCode: string, fragmentCode: string, processingContext: Nullable<ShaderProcessingContext>): { vertexCode: string, fragmentCode: string } {\r\n // make replacements for texture names in the texture array case\r\n for (let i = 0; i < this._textureArrayProcessing.length; ++i) {\r\n const name = this._textureArrayProcessing[i];\r\n vertexCode = this._applyTextureArrayProcessing(vertexCode, name);\r\n fragmentCode = this._applyTextureArrayProcessing(fragmentCode, name);\r\n }\r\n\r\n // inject the missing varying in the fragment shader\r\n for (let i = 0; i < this._missingVaryings.length; ++i) {\r\n const decl = this._missingVaryings[i];\r\n if (decl && decl.length > 0) {\r\n fragmentCode = decl + \"\\n\" + fragmentCode;\r\n }\r\n }\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 this._collectBindingNames();\r\n this._preCreateBindGroupEntries();\r\n\r\n this._preProcessors = null as any;\r\n\r\n return { vertexCode, fragmentCode };\r\n }\r\n}"]}
1
+ {"version":3,"file":"webgpuShaderProcessorsGLSL.js","sourceRoot":"","sources":["../../../../sourceES6/core/Engines/WebGPU/webgpuShaderProcessorsGLSL.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 { ShaderLanguage } from \"../../Materials/shaderLanguage\";\r\n\r\n/** @hidden */\r\nexport class WebGPUShaderProcessorGLSL extends WebGPUShaderProcessor {\r\n\r\n protected _missingVaryings: Array<string> = [];\r\n protected _textureArrayProcessing: Array<string> = [];\r\n protected _preProcessors: { [key: string]: string };\r\n\r\n public shaderLanguage = ShaderLanguage.GLSL;\r\n\r\n protected _getArraySize(name: string, type: string, preProcessors: { [key: string]: string }): [string, string, number] {\r\n let length = 0;\r\n const startArray = name.indexOf(\"[\");\r\n const endArray = name.indexOf(\"]\");\r\n if (startArray > 0 && endArray > 0) {\r\n const lengthInString = name.substring(startArray + 1, endArray);\r\n length = +(lengthInString);\r\n if (isNaN(length)) {\r\n length = +(preProcessors[lengthInString.trim()]);\r\n }\r\n name = name.substr(0, startArray);\r\n }\r\n return [name, type, 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._missingVaryings.length = 0;\r\n this._textureArrayProcessing.length = 0;\r\n }\r\n\r\n public preProcessShaderCode(code: string, isFragment: boolean): string {\r\n const ubDeclaration = `uniform ${WebGPUShaderProcessor.InternalsUBOName} {\\nfloat yFactor__;\\nfloat textureOutputHeight__;\\n};\\n`;\r\n\r\n if (isFragment) {\r\n return ubDeclaration + \"##INJECTCODE##\\n\" + code;\r\n }\r\n return ubDeclaration + code;\r\n }\r\n\r\n public varyingProcessor(varying: string, isFragment: boolean, preProcessors: { [key: string]: string }, processingContext: Nullable<ShaderProcessingContext>) {\r\n this._preProcessors = preProcessors;\r\n\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[1];\r\n const name = match[2];\r\n let location: number;\r\n if (isFragment) {\r\n location = this.webgpuProcessingContext.availableVaryings[name];\r\n this._missingVaryings[location] = \"\";\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._missingVaryings[location] = `layout(location = ${location}) in ${varyingType} ${name};`;\r\n }\r\n\r\n varying = varying.replace(match[0], location === undefined ? \"\" : `layout(location = ${location}) ${isFragment ? \"in\" : \"out\"} ${varyingType} ${name};`);\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 this._preProcessors = preProcessors;\r\n\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[1];\r\n const name = match[2];\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 attribute = attribute.replace(match[0], `layout(location = ${location}) in ${attributeType} ${name};`);\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 this._preProcessors = preProcessors;\r\n\r\n const uniformRegex = /\\s*uniform\\s+(?:(?:highp)?|(?:lowp)?)\\s*(\\S+)\\s+(\\S+)\\s*;/gm;\r\n\r\n const match = uniformRegex.exec(uniform);\r\n if (match != null) {\r\n let uniformType = match[1];\r\n let name = match[2];\r\n\r\n if (uniformType.indexOf(\"sampler\") === 0 || uniformType.indexOf(\"sampler\") === 1) {\r\n let arraySize = 0; // 0 means the texture is not declared as an array\r\n\r\n [name, uniformType, arraySize] = this._getArraySize(name, uniformType, preProcessors);\r\n\r\n let textureInfo = this.webgpuProcessingContext.availableTextures[name];\r\n if (!textureInfo) {\r\n textureInfo = {\r\n autoBindSampler: true,\r\n isTextureArray: arraySize > 0,\r\n isStorageTexture: false,\r\n textures: [],\r\n sampleType: WebGPUConstants.TextureSampleType.Float,\r\n };\r\n for (let i = 0; i < (arraySize || 1); ++i) {\r\n textureInfo.textures.push(this.webgpuProcessingContext.getNextFreeUBOBinding());\r\n }\r\n }\r\n\r\n const samplerType = WebGPUShaderProcessor._SamplerTypeByWebGLSamplerType[uniformType] ?? \"sampler\";\r\n const isComparisonSampler = !!WebGPUShaderProcessor._IsComparisonSamplerByWebGPUSamplerType[samplerType];\r\n const samplerBindingType = isComparisonSampler ? WebGPUConstants.SamplerBindingType.Comparison : WebGPUConstants.SamplerBindingType.Filtering;\r\n const samplerName = name + WebGPUShaderProcessor.AutoSamplerSuffix;\r\n\r\n let samplerInfo = this.webgpuProcessingContext.availableSamplers[samplerName];\r\n if (!samplerInfo) {\r\n samplerInfo = {\r\n binding: this.webgpuProcessingContext.getNextFreeUBOBinding(),\r\n type: samplerBindingType,\r\n };\r\n }\r\n\r\n const componentType = uniformType.charAt(0) === 'u' ? 'u' : uniformType.charAt(0) === 'i' ? 'i' : '';\r\n\r\n if (componentType) {\r\n uniformType = uniformType.substr(1);\r\n }\r\n\r\n const sampleType =\r\n isComparisonSampler ? WebGPUConstants.TextureSampleType.Depth :\r\n componentType === 'u' ? WebGPUConstants.TextureSampleType.Uint :\r\n componentType === 'i' ? WebGPUConstants.TextureSampleType.Sint : WebGPUConstants.TextureSampleType.Float;\r\n\r\n textureInfo.sampleType = sampleType;\r\n\r\n const isTextureArray = arraySize > 0;\r\n const samplerGroupIndex = samplerInfo.binding.groupIndex;\r\n const samplerBindingIndex = samplerInfo.binding.bindingIndex;\r\n const samplerFunction = WebGPUShaderProcessor._SamplerFunctionByWebGLSamplerType[uniformType];\r\n const textureType = WebGPUShaderProcessor._TextureTypeByWebGLSamplerType[uniformType];\r\n const textureDimension = WebGPUShaderProcessor._GpuTextureViewDimensionByWebGPUTextureType[textureType];\r\n\r\n // Manage textures and samplers.\r\n if (!isTextureArray) {\r\n arraySize = 1;\r\n uniform = `layout(set = ${samplerGroupIndex}, binding = ${samplerBindingIndex}) uniform ${componentType}${samplerType} ${samplerName};\r\n layout(set = ${textureInfo.textures[0].groupIndex}, binding = ${textureInfo.textures[0].bindingIndex}) uniform ${textureType} ${name}Texture;\r\n #define ${name} ${componentType}${samplerFunction}(${name}Texture, ${samplerName})`;\r\n } else {\r\n let layouts = [];\r\n layouts.push(`layout(set = ${samplerGroupIndex}, binding = ${samplerBindingIndex}) uniform ${componentType}${samplerType} ${samplerName};`);\r\n uniform = `\\r\\n`;\r\n for (let i = 0; i < arraySize; ++i) {\r\n const textureSetIndex = textureInfo.textures[i].groupIndex;\r\n const textureBindingIndex = textureInfo.textures[i].bindingIndex;\r\n\r\n layouts.push(`layout(set = ${textureSetIndex}, binding = ${textureBindingIndex}) uniform ${textureType} ${name}Texture${i};`);\r\n\r\n uniform += `${i > 0 ? '\\r\\n' : ''}#define ${name}${i} ${componentType}${samplerFunction}(${name}Texture${i}, ${samplerName})`;\r\n }\r\n uniform = layouts.join('\\r\\n') + uniform;\r\n this._textureArrayProcessing.push(name);\r\n }\r\n\r\n this.webgpuProcessingContext.availableTextures[name] = textureInfo;\r\n this.webgpuProcessingContext.availableSamplers[samplerName] = samplerInfo;\r\n\r\n this._addSamplerBindingDescription(samplerName, samplerInfo, !isFragment);\r\n\r\n for (let i = 0; i < arraySize; ++i) {\r\n this._addTextureBindingDescription(name, textureInfo, i, textureDimension, null, !isFragment);\r\n }\r\n }\r\n else {\r\n this._addUniformToLeftOverUBO(name, uniformType, preProcessors);\r\n uniform = \"\";\r\n }\r\n }\r\n return uniform;\r\n }\r\n\r\n public uniformBufferProcessor(uniformBuffer: string, isFragment: boolean, processingContext: Nullable<ShaderProcessingContext>): string {\r\n const uboRegex = /uniform\\s+(\\w+)/gm;\r\n\r\n const match = uboRegex.exec(uniformBuffer);\r\n if (match != null) {\r\n const name = match[1];\r\n\r\n let uniformBufferInfo = this.webgpuProcessingContext.availableBuffers[name];\r\n if (!uniformBufferInfo) {\r\n const knownUBO = WebGPUShaderProcessingContext.KnownUBOs[name];\r\n\r\n let binding;\r\n if (knownUBO && knownUBO.binding.groupIndex !== -1) {\r\n binding = knownUBO.binding;\r\n } else {\r\n binding = this.webgpuProcessingContext.getNextFreeUBOBinding();\r\n }\r\n\r\n uniformBufferInfo = { binding };\r\n this.webgpuProcessingContext.availableBuffers[name] = uniformBufferInfo;\r\n }\r\n\r\n this._addBufferBindingDescription(name, uniformBufferInfo, WebGPUConstants.BufferBindingType.Uniform, !isFragment);\r\n\r\n uniformBuffer = uniformBuffer.replace(\"uniform\", `layout(set = ${uniformBufferInfo.binding.groupIndex}, binding = ${uniformBufferInfo.binding.bindingIndex}) uniform`);\r\n }\r\n return uniformBuffer;\r\n }\r\n\r\n public postProcessor(code: string, defines: string[], isFragment: boolean, processingContext: Nullable<ShaderProcessingContext>, engine: ThinEngine) {\r\n const hasDrawBuffersExtension = code.search(/#extension.+GL_EXT_draw_buffers.+require/) !== -1;\r\n\r\n // Remove extensions\r\n var regex = /#extension.+(GL_OVR_multiview2|GL_OES_standard_derivatives|GL_EXT_shader_texture_lod|GL_EXT_frag_depth|GL_EXT_draw_buffers).+(enable|require)/g;\r\n code = code.replace(regex, \"\");\r\n\r\n // Replace instructions\r\n code = code.replace(/texture2D\\s*\\(/g, \"texture(\");\r\n if (isFragment) {\r\n const hasFragCoord = code.indexOf(\"gl_FragCoord\") >= 0;\r\n const fragCoordCode = `\r\n glFragCoord__ = gl_FragCoord;\r\n if (yFactor__ == 1.) {\r\n glFragCoord__.y = textureOutputHeight__ - glFragCoord__.y;\r\n }\r\n `;\r\n\r\n const injectCode = hasFragCoord ? \"vec4 glFragCoord__;\\n\" : \"\";\r\n\r\n code = code.replace(/texture2DLodEXT\\s*\\(/g, \"textureLod(\");\r\n code = code.replace(/textureCubeLodEXT\\s*\\(/g, \"textureLod(\");\r\n code = code.replace(/textureCube\\s*\\(/g, \"texture(\");\r\n code = code.replace(/gl_FragDepthEXT/g, \"gl_FragDepth\");\r\n code = code.replace(/gl_FragColor/g, \"glFragColor\");\r\n code = code.replace(/gl_FragData/g, \"glFragData\");\r\n code = code.replace(/gl_FragCoord/g, \"glFragCoord__\");\r\n code = code.replace(/void\\s+?main\\s*\\(/g, (hasDrawBuffersExtension ? \"\" : \"layout(location = 0) out vec4 glFragColor;\\n\") + \"void main(\");\r\n code = code.replace(/dFdy/g, \"(-yFactor__)*dFdy\"); // will also handle dFdyCoarse and dFdyFine\r\n code = code.replace(\"##INJECTCODE##\", injectCode);\r\n\r\n if (hasFragCoord) {\r\n code = this._injectStartingAndEndingCode(code, \"void main\", fragCoordCode);\r\n }\r\n } else {\r\n code = code.replace(/gl_InstanceID/g, \"gl_InstanceIndex\");\r\n code = code.replace(/gl_VertexID/g, \"gl_VertexIndex\");\r\n var hasMultiviewExtension = defines.indexOf(\"#define MULTIVIEW\") !== -1;\r\n if (hasMultiviewExtension) {\r\n return \"#extension GL_OVR_multiview2 : require\\nlayout (num_views = 2) in;\\n\" + code;\r\n }\r\n }\r\n\r\n // Flip Y + convert z range from [-1,1] to [0,1]\r\n if (!isFragment) {\r\n const lastClosingCurly = code.lastIndexOf(\"}\");\r\n code = code.substring(0, lastClosingCurly);\r\n code += \"gl_Position.y *= yFactor__;\\n\";\r\n if (!engine.isNDCHalfZRange) {\r\n code += \"gl_Position.z = (gl_Position.z + gl_Position.w) / 2.0;\\n\";\r\n }\r\n code += \"}\";\r\n }\r\n\r\n return code;\r\n }\r\n\r\n private _applyTextureArrayProcessing(code: string, name: string): string {\r\n // Replaces the occurrences of name[XX] by nameXX\r\n const regex = new RegExp(name + \"\\\\s*\\\\[(.+)?\\\\]\", \"gm\");\r\n let match = regex.exec(code);\r\n\r\n while (match != null) {\r\n let index = match[1];\r\n let iindex = +(index);\r\n if (this._preProcessors && isNaN(iindex)) {\r\n iindex = +(this._preProcessors[index.trim()]);\r\n }\r\n code = code.replace(match[0], name + iindex);\r\n match = regex.exec(code);\r\n }\r\n\r\n return code;\r\n }\r\n\r\n protected _generateLeftOverUBOCode(name: string, uniformBufferDescription: WebGPUBufferDescription): string {\r\n let ubo = `layout(set = ${uniformBufferDescription.binding.groupIndex}, binding = ${uniformBufferDescription.binding.bindingIndex}) uniform ${name} {\\n `;\r\n for (let leftOverUniform of this.webgpuProcessingContext.leftOverUniforms) {\r\n if (leftOverUniform.length > 0) {\r\n ubo += ` ${leftOverUniform.type} ${leftOverUniform.name}[${leftOverUniform.length}];\\n`;\r\n }\r\n else {\r\n ubo += ` ${leftOverUniform.type} ${leftOverUniform.name};\\n`;\r\n }\r\n }\r\n ubo += \"};\\n\\n\";\r\n\r\n return ubo;\r\n }\r\n\r\n public finalizeShaders(vertexCode: string, fragmentCode: string, processingContext: Nullable<ShaderProcessingContext>): { vertexCode: string, fragmentCode: string } {\r\n // make replacements for texture names in the texture array case\r\n for (let i = 0; i < this._textureArrayProcessing.length; ++i) {\r\n const name = this._textureArrayProcessing[i];\r\n vertexCode = this._applyTextureArrayProcessing(vertexCode, name);\r\n fragmentCode = this._applyTextureArrayProcessing(fragmentCode, name);\r\n }\r\n\r\n // inject the missing varying in the fragment shader\r\n for (let i = 0; i < this._missingVaryings.length; ++i) {\r\n const decl = this._missingVaryings[i];\r\n if (decl && decl.length > 0) {\r\n fragmentCode = decl + \"\\n\" + fragmentCode;\r\n }\r\n }\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 this._collectBindingNames();\r\n this._preCreateBindGroupEntries();\r\n\r\n this._preProcessors = null as any;\r\n\r\n return { vertexCode, fragmentCode };\r\n }\r\n}"]}