@babylonjs/core 7.19.1 → 7.20.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (273) hide show
  1. package/Bones/bone.js +3 -3
  2. package/Bones/bone.js.map +1 -1
  3. package/Bones/boneLookController.js +3 -3
  4. package/Bones/boneLookController.js.map +1 -1
  5. package/Buffers/buffer.nonFloatVertexBuffers.js +1 -1
  6. package/Buffers/buffer.nonFloatVertexBuffers.js.map +1 -1
  7. package/Collisions/gpuPicker.d.ts +8 -2
  8. package/Collisions/gpuPicker.js +41 -20
  9. package/Collisions/gpuPicker.js.map +1 -1
  10. package/Compat/compatibilityOptions.d.ts +13 -6
  11. package/Compat/compatibilityOptions.js +20 -4
  12. package/Compat/compatibilityOptions.js.map +1 -1
  13. package/Compat/index.d.ts +1 -1
  14. package/Compat/index.js +1 -1
  15. package/Compat/index.js.map +1 -1
  16. package/Culling/boundingBox.js +5 -5
  17. package/Culling/boundingBox.js.map +1 -1
  18. package/Culling/boundingInfo.js +2 -2
  19. package/Culling/boundingInfo.js.map +1 -1
  20. package/Culling/boundingSphere.js +2 -2
  21. package/Culling/boundingSphere.js.map +1 -1
  22. package/Culling/ray.js +2 -2
  23. package/Culling/ray.js.map +1 -1
  24. package/Debug/debugLayer.d.ts +3 -0
  25. package/Debug/debugLayer.js +15 -0
  26. package/Debug/debugLayer.js.map +1 -1
  27. package/Engines/Processors/shaderProcessor.d.ts +1 -0
  28. package/Engines/Processors/shaderProcessor.js +1 -0
  29. package/Engines/Processors/shaderProcessor.js.map +1 -1
  30. package/Engines/WebGPU/Extensions/engine.rawTexture.js +1 -0
  31. package/Engines/WebGPU/Extensions/engine.rawTexture.js.map +1 -1
  32. package/Engines/WebGPU/webgpuShaderProcessingContext.d.ts +1 -1
  33. package/Engines/WebGPU/webgpuShaderProcessingContext.js +4 -2
  34. package/Engines/WebGPU/webgpuShaderProcessingContext.js.map +1 -1
  35. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.d.ts +2 -1
  36. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +12 -5
  37. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
  38. package/Engines/WebGPU/webgpuTextureManager.d.ts +1 -4
  39. package/Engines/WebGPU/webgpuTextureManager.js +90 -75
  40. package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
  41. package/Engines/abstractEngine.d.ts +2 -2
  42. package/Engines/abstractEngine.js +2 -2
  43. package/Engines/abstractEngine.js.map +1 -1
  44. package/Engines/engine.js +11 -2
  45. package/Engines/engine.js.map +1 -1
  46. package/Engines/nativeEngine.d.ts +1 -1
  47. package/Engines/nativeEngine.js +2 -1
  48. package/Engines/nativeEngine.js.map +1 -1
  49. package/Engines/thinEngine.d.ts +1 -1
  50. package/Engines/thinEngine.functions.d.ts +1 -1
  51. package/Engines/thinEngine.functions.js +2 -1
  52. package/Engines/thinEngine.functions.js.map +1 -1
  53. package/Engines/thinEngine.js +2 -2
  54. package/Engines/thinEngine.js.map +1 -1
  55. package/Engines/webgpuEngine.d.ts +9 -5
  56. package/Engines/webgpuEngine.js +35 -22
  57. package/Engines/webgpuEngine.js.map +1 -1
  58. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDoNBlock.d.ts +2 -2
  59. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDoNBlock.js +1 -1
  60. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDoNBlock.js.map +1 -1
  61. package/Layers/effectLayer.d.ts +16 -1
  62. package/Layers/effectLayer.js +32 -2
  63. package/Layers/effectLayer.js.map +1 -1
  64. package/Layers/glowLayer.d.ts +1 -2
  65. package/Layers/glowLayer.js +16 -3
  66. package/Layers/glowLayer.js.map +1 -1
  67. package/Layers/highlightLayer.d.ts +5 -4
  68. package/Layers/highlightLayer.js +35 -11
  69. package/Layers/highlightLayer.js.map +1 -1
  70. package/Layers/index.d.ts +10 -0
  71. package/Layers/index.js +12 -0
  72. package/Layers/index.js.map +1 -1
  73. package/Lights/Shadows/index.d.ts +8 -0
  74. package/Lights/Shadows/index.js +9 -0
  75. package/Lights/Shadows/index.js.map +1 -1
  76. package/Lights/Shadows/shadowGenerator.d.ts +18 -5
  77. package/Lights/Shadows/shadowGenerator.js +44 -5
  78. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  79. package/Loading/sceneLoader.d.ts +155 -16
  80. package/Loading/sceneLoader.js +197 -99
  81. package/Loading/sceneLoader.js.map +1 -1
  82. package/Materials/Node/nodeMaterial.js +8 -1
  83. package/Materials/Node/nodeMaterial.js.map +1 -1
  84. package/Materials/Node/nodeMaterialBuildState.js +1 -1
  85. package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
  86. package/Materials/Textures/Loaders/hdrTextureLoader.js +3 -3
  87. package/Materials/Textures/Loaders/hdrTextureLoader.js.map +1 -1
  88. package/Materials/Textures/hdrCubeTexture.js +2 -2
  89. package/Materials/Textures/hdrCubeTexture.js.map +1 -1
  90. package/Materials/Textures/renderTargetTexture.js +2 -2
  91. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  92. package/Materials/Textures/texture.js +3 -3
  93. package/Materials/Textures/texture.js.map +1 -1
  94. package/Materials/effect.functions.d.ts +1 -1
  95. package/Materials/effect.functions.js +6 -3
  96. package/Materials/effect.functions.js.map +1 -1
  97. package/Materials/effect.js +1 -1
  98. package/Materials/effect.js.map +1 -1
  99. package/Materials/standardMaterial.d.ts +1 -1
  100. package/Materials/standardMaterial.js +1 -1
  101. package/Materials/standardMaterial.js.map +1 -1
  102. package/Maths/math.color.js +3 -3
  103. package/Maths/math.color.js.map +1 -1
  104. package/Maths/math.constants.d.ts +1 -2
  105. package/Maths/math.constants.js +1 -2
  106. package/Maths/math.constants.js.map +1 -1
  107. package/Maths/math.like.d.ts +9 -0
  108. package/Maths/math.like.js.map +1 -1
  109. package/Maths/math.vector.d.ts +23 -23
  110. package/Maths/math.vector.js +56 -25
  111. package/Maths/math.vector.js.map +1 -1
  112. package/Meshes/Builders/boxBuilder.js +5 -5
  113. package/Meshes/Builders/boxBuilder.js.map +1 -1
  114. package/Meshes/Builders/capsuleBuilder.js +4 -4
  115. package/Meshes/Builders/capsuleBuilder.js.map +1 -1
  116. package/Meshes/Builders/cylinderBuilder.js +8 -8
  117. package/Meshes/Builders/cylinderBuilder.js.map +1 -1
  118. package/Meshes/Builders/decalBuilder.js +3 -3
  119. package/Meshes/Builders/decalBuilder.js.map +1 -1
  120. package/Meshes/Builders/discBuilder.js +3 -3
  121. package/Meshes/Builders/discBuilder.js.map +1 -1
  122. package/Meshes/Builders/goldbergBuilder.js +2 -2
  123. package/Meshes/Builders/goldbergBuilder.js.map +1 -1
  124. package/Meshes/Builders/groundBuilder.js +2 -2
  125. package/Meshes/Builders/groundBuilder.js.map +1 -1
  126. package/Meshes/Builders/icoSphereBuilder.js +2 -2
  127. package/Meshes/Builders/icoSphereBuilder.js.map +1 -1
  128. package/Meshes/Builders/planeBuilder.js +5 -5
  129. package/Meshes/Builders/planeBuilder.js.map +1 -1
  130. package/Meshes/Builders/polygonBuilder.js +4 -4
  131. package/Meshes/Builders/polygonBuilder.js.map +1 -1
  132. package/Meshes/Builders/polyhedronBuilder.js +3 -3
  133. package/Meshes/Builders/polyhedronBuilder.js.map +1 -1
  134. package/Meshes/Builders/ribbonBuilder.js +4 -4
  135. package/Meshes/Builders/ribbonBuilder.js.map +1 -1
  136. package/Meshes/Builders/sphereBuilder.js +2 -2
  137. package/Meshes/Builders/sphereBuilder.js.map +1 -1
  138. package/Meshes/Builders/tiledBoxBuilder.js +2 -2
  139. package/Meshes/Builders/tiledBoxBuilder.js.map +1 -1
  140. package/Meshes/Builders/torusBuilder.js +2 -2
  141. package/Meshes/Builders/torusBuilder.js.map +1 -1
  142. package/Meshes/Builders/torusKnotBuilder.js +2 -2
  143. package/Meshes/Builders/torusKnotBuilder.js.map +1 -1
  144. package/Meshes/geometry.js +7 -7
  145. package/Meshes/geometry.js.map +1 -1
  146. package/Misc/HighDynamicRange/hdr.d.ts +40 -42
  147. package/Misc/HighDynamicRange/hdr.js +209 -202
  148. package/Misc/HighDynamicRange/hdr.js.map +1 -1
  149. package/Misc/HighDynamicRange/index.d.ts +1 -1
  150. package/Misc/HighDynamicRange/index.js +1 -1
  151. package/Misc/HighDynamicRange/index.js.map +1 -1
  152. package/Misc/arrayTools.d.ts +12 -17
  153. package/Misc/arrayTools.js +18 -23
  154. package/Misc/arrayTools.js.map +1 -1
  155. package/Misc/dumpTools.d.ts +50 -47
  156. package/Misc/dumpTools.js +153 -143
  157. package/Misc/dumpTools.js.map +1 -1
  158. package/Misc/environmentTextureTools.js +2 -2
  159. package/Misc/environmentTextureTools.js.map +1 -1
  160. package/Misc/equirectangularCapture.js +2 -2
  161. package/Misc/equirectangularCapture.js.map +1 -1
  162. package/Misc/index.d.ts +6 -1
  163. package/Misc/index.js +7 -1
  164. package/Misc/index.js.map +1 -1
  165. package/Misc/rgbdTextureTools.d.ts +1 -0
  166. package/Misc/rgbdTextureTools.js +16 -2
  167. package/Misc/rgbdTextureTools.js.map +1 -1
  168. package/Misc/screenshotTools.js +3 -3
  169. package/Misc/screenshotTools.js.map +1 -1
  170. package/Physics/v1/physicsImpostor.js +2 -2
  171. package/Physics/v1/physicsImpostor.js.map +1 -1
  172. package/Physics/v2/Plugins/havokPlugin.js +2 -2
  173. package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
  174. package/PostProcesses/blurPostProcess.d.ts +6 -0
  175. package/PostProcesses/blurPostProcess.js +20 -2
  176. package/PostProcesses/blurPostProcess.js.map +1 -1
  177. package/PostProcesses/index.d.ts +8 -0
  178. package/PostProcesses/index.js +10 -0
  179. package/PostProcesses/index.js.map +1 -1
  180. package/PostProcesses/passPostProcess.d.ts +2 -0
  181. package/PostProcesses/passPostProcess.js +24 -2
  182. package/PostProcesses/passPostProcess.js.map +1 -1
  183. package/PostProcesses/postProcess.d.ts +17 -2
  184. package/PostProcesses/postProcess.js +38 -1
  185. package/PostProcesses/postProcess.js.map +1 -1
  186. package/Shaders/ShadersInclude/pbrDebug.js +1 -1
  187. package/Shaders/ShadersInclude/pbrDebug.js.map +1 -1
  188. package/ShadersWGSL/ShadersInclude/bayerDitherFunctions.d.ts +5 -0
  189. package/ShadersWGSL/ShadersInclude/bayerDitherFunctions.js +17 -0
  190. package/ShadersWGSL/ShadersInclude/bayerDitherFunctions.js.map +1 -0
  191. package/ShadersWGSL/ShadersInclude/imageProcessingFunctions.js +1 -1
  192. package/ShadersWGSL/ShadersInclude/imageProcessingFunctions.js.map +1 -1
  193. package/ShadersWGSL/ShadersInclude/kernelBlurFragment.d.ts +5 -0
  194. package/ShadersWGSL/ShadersInclude/kernelBlurFragment.js +20 -0
  195. package/ShadersWGSL/ShadersInclude/kernelBlurFragment.js.map +1 -0
  196. package/ShadersWGSL/ShadersInclude/kernelBlurFragment2.d.ts +5 -0
  197. package/ShadersWGSL/ShadersInclude/kernelBlurFragment2.js +19 -0
  198. package/ShadersWGSL/ShadersInclude/kernelBlurFragment2.js.map +1 -0
  199. package/ShadersWGSL/ShadersInclude/kernelBlurVaryingDeclaration.d.ts +5 -0
  200. package/ShadersWGSL/ShadersInclude/kernelBlurVaryingDeclaration.js +9 -0
  201. package/ShadersWGSL/ShadersInclude/kernelBlurVaryingDeclaration.js.map +1 -0
  202. package/ShadersWGSL/ShadersInclude/kernelBlurVertex.d.ts +5 -0
  203. package/ShadersWGSL/ShadersInclude/kernelBlurVertex.js +9 -0
  204. package/ShadersWGSL/ShadersInclude/kernelBlurVertex.js.map +1 -0
  205. package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js +4 -4
  206. package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js.map +1 -1
  207. package/ShadersWGSL/ShadersInclude/pbrBRDFFunctions.js +1 -1
  208. package/ShadersWGSL/ShadersInclude/pbrBRDFFunctions.js.map +1 -1
  209. package/ShadersWGSL/ShadersInclude/pbrDebug.js +1 -1
  210. package/ShadersWGSL/ShadersInclude/pbrDebug.js.map +1 -1
  211. package/ShadersWGSL/ShadersInclude/shadowMapFragment.js +5 -5
  212. package/ShadersWGSL/ShadersInclude/shadowMapFragment.js.map +1 -1
  213. package/ShadersWGSL/ShadersInclude/shadowMapFragmentExtraDeclaration.d.ts +7 -0
  214. package/ShadersWGSL/ShadersInclude/shadowMapFragmentExtraDeclaration.js +26 -0
  215. package/ShadersWGSL/ShadersInclude/shadowMapFragmentExtraDeclaration.js.map +1 -0
  216. package/ShadersWGSL/ShadersInclude/shadowMapFragmentSoftTransparentShadow.d.ts +5 -0
  217. package/ShadersWGSL/ShadersInclude/shadowMapFragmentSoftTransparentShadow.js +12 -0
  218. package/ShadersWGSL/ShadersInclude/shadowMapFragmentSoftTransparentShadow.js.map +1 -0
  219. package/ShadersWGSL/ShadersInclude/shadowMapVertexExtraDeclaration.d.ts +5 -0
  220. package/ShadersWGSL/ShadersInclude/shadowMapVertexExtraDeclaration.js +19 -0
  221. package/ShadersWGSL/ShadersInclude/shadowMapVertexExtraDeclaration.js.map +1 -0
  222. package/ShadersWGSL/ShadersInclude/shadowMapVertexMetric.js +4 -4
  223. package/ShadersWGSL/ShadersInclude/shadowMapVertexMetric.js.map +1 -1
  224. package/ShadersWGSL/ShadersInclude/shadowMapVertexNormalBias.d.ts +5 -0
  225. package/ShadersWGSL/ShadersInclude/shadowMapVertexNormalBias.js +17 -0
  226. package/ShadersWGSL/ShadersInclude/shadowMapVertexNormalBias.js.map +1 -0
  227. package/ShadersWGSL/background.fragment.js +1 -1
  228. package/ShadersWGSL/background.fragment.js.map +1 -1
  229. package/ShadersWGSL/default.fragment.js +2 -2
  230. package/ShadersWGSL/default.fragment.js.map +1 -1
  231. package/ShadersWGSL/depthBoxBlur.fragment.d.ts +5 -0
  232. package/ShadersWGSL/depthBoxBlur.fragment.js +14 -0
  233. package/ShadersWGSL/depthBoxBlur.fragment.js.map +1 -0
  234. package/ShadersWGSL/glowBlurPostProcess.fragment.d.ts +5 -0
  235. package/ShadersWGSL/glowBlurPostProcess.fragment.js +15 -0
  236. package/ShadersWGSL/glowBlurPostProcess.fragment.js.map +1 -0
  237. package/ShadersWGSL/glowMapGeneration.fragment.d.ts +8 -0
  238. package/ShadersWGSL/glowMapGeneration.fragment.js +74 -0
  239. package/ShadersWGSL/glowMapGeneration.fragment.js.map +1 -0
  240. package/ShadersWGSL/glowMapGeneration.vertex.d.ts +17 -0
  241. package/ShadersWGSL/glowMapGeneration.vertex.js +92 -0
  242. package/ShadersWGSL/glowMapGeneration.vertex.js.map +1 -0
  243. package/ShadersWGSL/glowMapMerge.fragment.d.ts +5 -0
  244. package/ShadersWGSL/glowMapMerge.fragment.js +32 -0
  245. package/ShadersWGSL/glowMapMerge.fragment.js.map +1 -0
  246. package/ShadersWGSL/glowMapMerge.vertex.d.ts +5 -0
  247. package/ShadersWGSL/glowMapMerge.vertex.js +16 -0
  248. package/ShadersWGSL/glowMapMerge.vertex.js.map +1 -0
  249. package/ShadersWGSL/kernelBlur.fragment.d.ts +9 -0
  250. package/ShadersWGSL/kernelBlur.fragment.js +48 -0
  251. package/ShadersWGSL/kernelBlur.fragment.js.map +1 -0
  252. package/ShadersWGSL/kernelBlur.vertex.d.ts +7 -0
  253. package/ShadersWGSL/kernelBlur.vertex.js +21 -0
  254. package/ShadersWGSL/kernelBlur.vertex.js.map +1 -0
  255. package/ShadersWGSL/pass.fragment.d.ts +5 -0
  256. package/ShadersWGSL/pass.fragment.js +12 -0
  257. package/ShadersWGSL/pass.fragment.js.map +1 -0
  258. package/ShadersWGSL/passCube.fragment.d.ts +5 -0
  259. package/ShadersWGSL/passCube.fragment.js +31 -0
  260. package/ShadersWGSL/passCube.fragment.js.map +1 -0
  261. package/ShadersWGSL/rgbdDecode.fragment.d.ts +6 -0
  262. package/ShadersWGSL/rgbdDecode.fragment.js +14 -0
  263. package/ShadersWGSL/rgbdDecode.fragment.js.map +1 -0
  264. package/ShadersWGSL/rgbdEncode.fragment.d.ts +6 -0
  265. package/ShadersWGSL/rgbdEncode.fragment.js +14 -0
  266. package/ShadersWGSL/rgbdEncode.fragment.js.map +1 -0
  267. package/ShadersWGSL/shadowMap.fragment.d.ts +9 -0
  268. package/ShadersWGSL/shadowMap.fragment.js +39 -0
  269. package/ShadersWGSL/shadowMap.fragment.js.map +1 -0
  270. package/ShadersWGSL/shadowMap.vertex.d.ts +22 -0
  271. package/ShadersWGSL/shadowMap.vertex.js +89 -0
  272. package/ShadersWGSL/shadowMap.vertex.js.map +1 -0
  273. package/package.json +1 -1
@@ -24,122 +24,115 @@ import * as WebGPUConstants from "./webgpuConstants.js";
24
24
 
25
25
  import { WebGPUHardwareTexture } from "./webgpuHardwareTexture.js";
26
26
  import { WebGPUTextureHelper } from "./webgpuTextureHelper.js";
27
+ import { Finalize, Initialize, Process } from "../Processors/shaderProcessor.js";
27
28
  // TODO WEBGPU improve mipmap generation by using compute shaders
28
- // TODO WEBGPU use WGSL instead of GLSL
29
29
  const mipmapVertexSource = `
30
- const vec2 pos[4] = vec2[4](vec2(-1.0f, 1.0f), vec2(1.0f, 1.0f), vec2(-1.0f, -1.0f), vec2(1.0f, -1.0f));
31
- const vec2 tex[4] = vec2[4](vec2(0.0f, 0.0f), vec2(1.0f, 0.0f), vec2(0.0f, 1.0f), vec2(1.0f, 1.0f));
30
+ const pos = array<vec2<f32>, 4>( vec2f(-1.0f, 1.0f), vec2f(1.0f, 1.0f), vec2f(-1.0f, -1.0f), vec2f(1.0f, -1.0f));
31
+ const tex = array<vec2<f32>, 4>( vec2f(0.0f, 0.0f), vec2f(1.0f, 0.0f), vec2f(0.0f, 1.0f), vec2f(1.0f, 1.0f));
32
32
 
33
- layout(location = 0) out vec2 vTex;
33
+ varying vTex: vec2f;
34
34
 
35
- void main() {
36
- vTex = tex[gl_VertexIndex];
37
- gl_Position = vec4(pos[gl_VertexIndex], 0.0, 1.0);
35
+ @vertex
36
+ fn main(input : VertexInputs) -> FragmentInputs {
37
+ vertexOutputs.vTex = tex[input.vertexIndex];
38
+ vertexOutputs.position = vec4f(pos[input.vertexIndex], 0.0, 1.0);
38
39
  }
39
40
  `;
40
41
  const mipmapFragmentSource = `
41
- layout(set = 0, binding = 0) uniform sampler imgSampler;
42
- layout(set = 0, binding = 1) uniform texture2D img;
42
+ var imgSampler: sampler;
43
+ var img: texture_2d<f32>;
43
44
 
44
- layout(location = 0) in vec2 vTex;
45
- layout(location = 0) out vec4 outColor;
45
+ varying vTex: vec2f;
46
46
 
47
- void main() {
48
- outColor = texture(sampler2D(img, imgSampler), vTex);
47
+ @fragment
48
+ fn main(input: FragmentInputs) -> FragmentOutputs {
49
+ fragmentOutputs.color = textureSample(img, imgSampler, input.vTex);
49
50
  }
50
51
  `;
51
52
  const invertYPreMultiplyAlphaVertexSource = `
52
- #extension GL_EXT_samplerless_texture_functions : enable
53
-
54
- const vec2 pos[4] = vec2[4](vec2(-1.0f, 1.0f), vec2(1.0f, 1.0f), vec2(-1.0f, -1.0f), vec2(1.0f, -1.0f));
55
- const vec2 tex[4] = vec2[4](vec2(0.0f, 0.0f), vec2(1.0f, 0.0f), vec2(0.0f, 1.0f), vec2(1.0f, 1.0f));
53
+ const pos = array<vec2<f32>, 4>( vec2f(-1.0f, 1.0f), vec2f(1.0f, 1.0f), vec2f(-1.0f, -1.0f), vec2f(1.0f, -1.0f));
54
+ const tex = array<vec2<f32>, 4>( vec2f(0.0f, 0.0f), vec2f(1.0f, 0.0f), vec2f(0.0f, 1.0f), vec2f(1.0f, 1.0f));
56
55
 
57
- layout(set = 0, binding = 0) uniform texture2D img;
56
+ var img: texture_2d<f32>;
58
57
 
59
58
  #ifdef INVERTY
60
- layout(location = 0) out flat ivec2 vTextureSize;
59
+ varying vTextureSize: vec2f;
61
60
  #endif
62
61
 
63
- void main() {
62
+ @vertex
63
+ fn main(input : VertexInputs) -> FragmentInputs {
64
64
  #ifdef INVERTY
65
- vTextureSize = textureSize(img, 0);
65
+ vertexOutputs.vTextureSize = vec2f(textureDimensions(img, 0));
66
66
  #endif
67
- gl_Position = vec4(pos[gl_VertexIndex], 0.0, 1.0);
67
+ vertexOutputs.position = vec4f(pos[input.vertexIndex], 0.0, 1.0);
68
68
  }
69
69
  `;
70
70
  const invertYPreMultiplyAlphaFragmentSource = `
71
- #extension GL_EXT_samplerless_texture_functions : enable
72
-
73
- layout(set = 0, binding = 0) uniform texture2D img;
71
+ var img: texture_2d<f32>;
74
72
 
75
73
  #ifdef INVERTY
76
- layout(location = 0) in flat ivec2 vTextureSize;
74
+ varying vTextureSize: vec2f;
77
75
  #endif
78
- layout(location = 0) out vec4 outColor;
79
76
 
80
- void main() {
77
+ @fragment
78
+ fn main(input: FragmentInputs) -> FragmentOutputs {
81
79
  #ifdef INVERTY
82
- vec4 color = texelFetch(img, ivec2(gl_FragCoord.x, vTextureSize.y - gl_FragCoord.y), 0);
80
+ var color: vec4f = textureLoad(img, vec2i(i32(input.position.x), i32(input.vTextureSize.y - input.position.y)), 0);
83
81
  #else
84
- vec4 color = texelFetch(img, ivec2(gl_FragCoord.xy), 0);
82
+ var color: vec4f = textureLoad(img, vec2i(input.position.xy), 0);
85
83
  #endif
86
84
  #ifdef PREMULTIPLYALPHA
87
- color.rgb *= color.a;
85
+ fragmentOutputs.color = vec4f(color.rgb * color.a, color.a);
88
86
  #endif
89
- outColor = color;
87
+ fragmentOutputs.color = color;
90
88
  }
91
89
  `;
92
90
  const invertYPreMultiplyAlphaWithOfstVertexSource = invertYPreMultiplyAlphaVertexSource;
93
91
  const invertYPreMultiplyAlphaWithOfstFragmentSource = `
94
- #extension GL_EXT_samplerless_texture_functions : enable
95
-
96
- layout(set = 0, binding = 0) uniform texture2D img;
97
- layout(set = 0, binding = 1) uniform Params {
98
- float ofstX;
99
- float ofstY;
100
- float width;
101
- float height;
102
- };
92
+ var img: texture_2d<f32>;
93
+ uniform ofstX: f32;
94
+ uniform ofstY: f32;
95
+ uniform width: f32;
96
+ uniform height: f32;
103
97
 
104
98
  #ifdef INVERTY
105
- layout(location = 0) in flat ivec2 vTextureSize;
99
+ varying vTextureSize: vec2f;
106
100
  #endif
107
- layout(location = 0) out vec4 outColor;
108
101
 
109
- void main() {
110
- if (gl_FragCoord.x < ofstX || gl_FragCoord.x >= ofstX + width) {
102
+ @fragment
103
+ fn main(input: FragmentInputs) -> FragmentOutputs {
104
+ if (input.position.x < uniforms.ofstX || input.position.x >= uniforms.ofstX + uniforms.width) {
111
105
  discard;
112
106
  }
113
- if (gl_FragCoord.y < ofstY || gl_FragCoord.y >= ofstY + height) {
107
+ if (input.position.y < uniforms.ofstY || input.position.y >= uniforms.ofstY + uniforms.height) {
114
108
  discard;
115
109
  }
116
110
  #ifdef INVERTY
117
- vec4 color = texelFetch(img, ivec2(gl_FragCoord.x, ofstY + height - (gl_FragCoord.y - ofstY)), 0);
111
+ var color: vec4f = textureLoad(img, vec2i(i32(input.position.x), i32(uniforms.ofstY + uniforms.height - (input.position.y - uniforms.ofstY))), 0);
118
112
  #else
119
- vec4 color = texelFetch(img, ivec2(gl_FragCoord.xy), 0);
113
+ var color: vec4f = textureLoad(img, vec2i(input.position.xy), 0);
120
114
  #endif
121
115
  #ifdef PREMULTIPLYALPHA
122
- color.rgb *= color.a;
116
+ color = vec4f(color.rgb * color.a, color.a);
123
117
  #endif
124
- outColor = color;
118
+ fragmentOutputs.color = color;
125
119
  }
126
120
  `;
127
121
  const clearVertexSource = `
128
- const vec2 pos[4] = vec2[4](vec2(-1.0f, 1.0f), vec2(1.0f, 1.0f), vec2(-1.0f, -1.0f), vec2(1.0f, -1.0f));
122
+ const pos = array<vec2<f32>, 4>( vec2f(-1.0f, 1.0f), vec2f(1.0f, 1.0f), vec2f(-1.0f, -1.0f), vec2f(1.0f, -1.0f));
129
123
 
130
- void main() {
131
- gl_Position = vec4(pos[gl_VertexIndex], 0.0, 1.0);
124
+ @vertex
125
+ fn main(input : VertexInputs) -> FragmentInputs {
126
+ vertexOutputs.position = vec4f(pos[input.vertexIndex], 0.0, 1.0);
132
127
  }
133
128
  `;
134
129
  const clearFragmentSource = `
135
- layout(set = 0, binding = 0) uniform Uniforms {
136
- uniform vec4 color;
137
- };
130
+ uniform color: vec4f;
138
131
 
139
- layout(location = 0) out vec4 outColor;
140
132
 
141
- void main() {
142
- outColor = color;
133
+ @fragment
134
+ fn main(input: FragmentInputs) -> FragmentOutputs {
135
+ fragmentOutputs.color = uniforms.color;
143
136
  }
144
137
  `;
145
138
  const copyVideoToTextureVertexSource = `
@@ -264,7 +257,7 @@ export class WebGPUTextureManager {
264
257
  //------------------------------------------------------------------------------
265
258
  // Initialization / Helpers
266
259
  //------------------------------------------------------------------------------
267
- constructor(engine, device, glslang, tintWASM, bufferManager, enabledExtensions) {
260
+ constructor(engine, device, bufferManager, enabledExtensions) {
268
261
  this._pipelines = {};
269
262
  this._compiledShaders = [];
270
263
  this._videoPipelines = {};
@@ -272,8 +265,6 @@ export class WebGPUTextureManager {
272
265
  this._deferredReleaseTextures = [];
273
266
  this._engine = engine;
274
267
  this._device = device;
275
- this._glslang = glslang;
276
- this._tintWASM = tintWASM;
277
268
  this._bufferManager = bufferManager;
278
269
  if (enabledExtensions.indexOf("rg11b10ufloat-renderable" /* WebGPUConstants.FeatureName.RG11B10UFloatRenderable */) !== -1) {
279
270
  const keys = Object.keys(renderableTextureFormatToIndex);
@@ -300,7 +291,7 @@ export class WebGPUTextureManager {
300
291
  }
301
292
  let pipelineAndBGL = this._pipelines[format][index];
302
293
  if (!pipelineAndBGL) {
303
- let defines = "#version 450\n";
294
+ let defines = "";
304
295
  if (type === PipelineType.InvertYPremultiplyAlpha || type === PipelineType.InvertYPremultiplyAlphaWithOfst) {
305
296
  if (params.invertY) {
306
297
  defines += "#define INVERTY\n";
@@ -311,17 +302,41 @@ export class WebGPUTextureManager {
311
302
  }
312
303
  let modules = this._compiledShaders[index];
313
304
  if (!modules) {
314
- let vertexCode = this._glslang.compileGLSL(defines + shadersForPipelineType[type].vertex, "vertex");
315
- let fragmentCode = this._glslang.compileGLSL(defines + shadersForPipelineType[type].fragment, "fragment");
316
- if (this._tintWASM) {
317
- vertexCode = this._tintWASM.convertSpirV2WGSL(vertexCode);
318
- fragmentCode = this._tintWASM.convertSpirV2WGSL(fragmentCode);
319
- }
305
+ let vertexCode = shadersForPipelineType[type].vertex;
306
+ let fragmentCode = shadersForPipelineType[type].fragment;
307
+ const processorOptions = {
308
+ defines: defines.split("\n"),
309
+ indexParameters: null,
310
+ isFragment: false,
311
+ shouldUseHighPrecisionShader: true,
312
+ processor: this._engine._getShaderProcessor(1 /* ShaderLanguage.WGSL */),
313
+ supportsUniformBuffers: true,
314
+ shadersRepository: "",
315
+ includesShadersStore: {},
316
+ version: (this._engine.version * 100).toString(),
317
+ platformName: this._engine.shaderPlatformName,
318
+ processingContext: this._engine._getShaderProcessingContext(1 /* ShaderLanguage.WGSL */, true),
319
+ isNDCHalfZRange: this._engine.isNDCHalfZRange,
320
+ useReverseDepthBuffer: this._engine.useReverseDepthBuffer,
321
+ };
322
+ Initialize(processorOptions);
323
+ // Disable special additions not needed here
324
+ processorOptions.processor.pureMode = true;
325
+ Process(vertexCode, processorOptions, (migratedVertexCode) => {
326
+ vertexCode = migratedVertexCode;
327
+ }, this._engine);
328
+ processorOptions.isFragment = true;
329
+ Process(fragmentCode, processorOptions, (migratedFragmentCode) => {
330
+ fragmentCode = migratedFragmentCode;
331
+ }, this._engine);
332
+ const final = Finalize(vertexCode, fragmentCode, processorOptions);
333
+ // Restore
334
+ processorOptions.processor.pureMode = false;
320
335
  const vertexModule = this._device.createShaderModule({
321
- code: vertexCode,
336
+ code: final.vertexCode,
322
337
  });
323
338
  const fragmentModule = this._device.createShaderModule({
324
- code: fragmentCode,
339
+ code: final.fragmentCode,
325
340
  });
326
341
  modules = this._compiledShaders[index] = [vertexModule, fragmentModule];
327
342
  }
@@ -730,10 +745,6 @@ export class WebGPUTextureManager {
730
745
  entries: [
731
746
  {
732
747
  binding: 0,
733
- resource: this._mipmapSampler,
734
- },
735
- {
736
- binding: 1,
737
748
  resource: gpuTexture.createView({
738
749
  format,
739
750
  dimension: is3D ? "3d" /* WebGPUConstants.TextureViewDimension.E3d */ : "2d" /* WebGPUConstants.TextureViewDimension.E2d */,
@@ -743,6 +754,10 @@ export class WebGPUTextureManager {
743
754
  baseArrayLayer: faceIndex,
744
755
  }),
745
756
  },
757
+ {
758
+ binding: 1,
759
+ resource: this._mipmapSampler,
760
+ },
746
761
  ],
747
762
  });
748
763
  if (webgpuHardwareTexture) {