@babylonjs/core 7.19.1 → 7.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/Buffers/buffer.nonFloatVertexBuffers.js +1 -1
  2. package/Buffers/buffer.nonFloatVertexBuffers.js.map +1 -1
  3. package/Collisions/gpuPicker.d.ts +8 -2
  4. package/Collisions/gpuPicker.js +41 -20
  5. package/Collisions/gpuPicker.js.map +1 -1
  6. package/Engines/Processors/shaderProcessor.d.ts +1 -0
  7. package/Engines/Processors/shaderProcessor.js +1 -0
  8. package/Engines/Processors/shaderProcessor.js.map +1 -1
  9. package/Engines/WebGPU/Extensions/engine.rawTexture.js +1 -0
  10. package/Engines/WebGPU/Extensions/engine.rawTexture.js.map +1 -1
  11. package/Engines/WebGPU/webgpuShaderProcessingContext.d.ts +1 -1
  12. package/Engines/WebGPU/webgpuShaderProcessingContext.js +4 -2
  13. package/Engines/WebGPU/webgpuShaderProcessingContext.js.map +1 -1
  14. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.d.ts +2 -1
  15. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +12 -5
  16. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
  17. package/Engines/WebGPU/webgpuTextureManager.d.ts +1 -4
  18. package/Engines/WebGPU/webgpuTextureManager.js +90 -75
  19. package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
  20. package/Engines/abstractEngine.d.ts +2 -2
  21. package/Engines/abstractEngine.js +2 -2
  22. package/Engines/abstractEngine.js.map +1 -1
  23. package/Engines/nativeEngine.d.ts +1 -1
  24. package/Engines/nativeEngine.js +2 -1
  25. package/Engines/nativeEngine.js.map +1 -1
  26. package/Engines/thinEngine.d.ts +1 -1
  27. package/Engines/thinEngine.functions.d.ts +1 -1
  28. package/Engines/thinEngine.functions.js +2 -1
  29. package/Engines/thinEngine.functions.js.map +1 -1
  30. package/Engines/thinEngine.js +2 -2
  31. package/Engines/thinEngine.js.map +1 -1
  32. package/Engines/webgpuEngine.d.ts +9 -5
  33. package/Engines/webgpuEngine.js +35 -22
  34. package/Engines/webgpuEngine.js.map +1 -1
  35. package/Layers/effectLayer.d.ts +16 -1
  36. package/Layers/effectLayer.js +32 -2
  37. package/Layers/effectLayer.js.map +1 -1
  38. package/Layers/glowLayer.d.ts +1 -2
  39. package/Layers/glowLayer.js +16 -3
  40. package/Layers/glowLayer.js.map +1 -1
  41. package/Layers/highlightLayer.d.ts +5 -4
  42. package/Layers/highlightLayer.js +36 -11
  43. package/Layers/highlightLayer.js.map +1 -1
  44. package/Layers/index.d.ts +10 -0
  45. package/Layers/index.js +12 -0
  46. package/Layers/index.js.map +1 -1
  47. package/Lights/Shadows/index.d.ts +8 -0
  48. package/Lights/Shadows/index.js +9 -0
  49. package/Lights/Shadows/index.js.map +1 -1
  50. package/Lights/Shadows/shadowGenerator.d.ts +18 -5
  51. package/Lights/Shadows/shadowGenerator.js +44 -5
  52. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  53. package/Loading/sceneLoader.d.ts +155 -16
  54. package/Loading/sceneLoader.js +197 -99
  55. package/Loading/sceneLoader.js.map +1 -1
  56. package/Materials/Node/nodeMaterial.js +8 -1
  57. package/Materials/Node/nodeMaterial.js.map +1 -1
  58. package/Materials/Node/nodeMaterialBuildState.js +1 -1
  59. package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
  60. package/Materials/effect.functions.d.ts +1 -1
  61. package/Materials/effect.functions.js +6 -3
  62. package/Materials/effect.functions.js.map +1 -1
  63. package/Materials/effect.js +1 -1
  64. package/Materials/effect.js.map +1 -1
  65. package/Materials/standardMaterial.d.ts +1 -1
  66. package/Materials/standardMaterial.js +1 -1
  67. package/Materials/standardMaterial.js.map +1 -1
  68. package/Maths/math.constants.d.ts +1 -2
  69. package/Maths/math.constants.js +1 -2
  70. package/Maths/math.constants.js.map +1 -1
  71. package/Maths/math.like.d.ts +9 -0
  72. package/Maths/math.like.js.map +1 -1
  73. package/Maths/math.vector.d.ts +23 -23
  74. package/Maths/math.vector.js +43 -11
  75. package/Maths/math.vector.js.map +1 -1
  76. package/Misc/index.d.ts +4 -0
  77. package/Misc/index.js +5 -0
  78. package/Misc/index.js.map +1 -1
  79. package/Misc/rgbdTextureTools.d.ts +1 -0
  80. package/Misc/rgbdTextureTools.js +15 -2
  81. package/Misc/rgbdTextureTools.js.map +1 -1
  82. package/PostProcesses/blurPostProcess.d.ts +6 -0
  83. package/PostProcesses/blurPostProcess.js +21 -2
  84. package/PostProcesses/blurPostProcess.js.map +1 -1
  85. package/PostProcesses/index.d.ts +8 -0
  86. package/PostProcesses/index.js +10 -0
  87. package/PostProcesses/index.js.map +1 -1
  88. package/PostProcesses/passPostProcess.d.ts +2 -0
  89. package/PostProcesses/passPostProcess.js +26 -2
  90. package/PostProcesses/passPostProcess.js.map +1 -1
  91. package/PostProcesses/postProcess.d.ts +11 -2
  92. package/PostProcesses/postProcess.js +17 -1
  93. package/PostProcesses/postProcess.js.map +1 -1
  94. package/ShadersWGSL/ShadersInclude/bayerDitherFunctions.d.ts +5 -0
  95. package/ShadersWGSL/ShadersInclude/bayerDitherFunctions.js +17 -0
  96. package/ShadersWGSL/ShadersInclude/bayerDitherFunctions.js.map +1 -0
  97. package/ShadersWGSL/ShadersInclude/imageProcessingFunctions.js +1 -1
  98. package/ShadersWGSL/ShadersInclude/imageProcessingFunctions.js.map +1 -1
  99. package/ShadersWGSL/ShadersInclude/kernelBlurFragment.d.ts +5 -0
  100. package/ShadersWGSL/ShadersInclude/kernelBlurFragment.js +20 -0
  101. package/ShadersWGSL/ShadersInclude/kernelBlurFragment.js.map +1 -0
  102. package/ShadersWGSL/ShadersInclude/kernelBlurFragment2.d.ts +5 -0
  103. package/ShadersWGSL/ShadersInclude/kernelBlurFragment2.js +19 -0
  104. package/ShadersWGSL/ShadersInclude/kernelBlurFragment2.js.map +1 -0
  105. package/ShadersWGSL/ShadersInclude/kernelBlurVaryingDeclaration.d.ts +5 -0
  106. package/ShadersWGSL/ShadersInclude/kernelBlurVaryingDeclaration.js +9 -0
  107. package/ShadersWGSL/ShadersInclude/kernelBlurVaryingDeclaration.js.map +1 -0
  108. package/ShadersWGSL/ShadersInclude/kernelBlurVertex.d.ts +5 -0
  109. package/ShadersWGSL/ShadersInclude/kernelBlurVertex.js +9 -0
  110. package/ShadersWGSL/ShadersInclude/kernelBlurVertex.js.map +1 -0
  111. package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js +4 -4
  112. package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js.map +1 -1
  113. package/ShadersWGSL/ShadersInclude/pbrBRDFFunctions.js +1 -1
  114. package/ShadersWGSL/ShadersInclude/pbrBRDFFunctions.js.map +1 -1
  115. package/ShadersWGSL/ShadersInclude/shadowMapFragment.js +5 -5
  116. package/ShadersWGSL/ShadersInclude/shadowMapFragment.js.map +1 -1
  117. package/ShadersWGSL/ShadersInclude/shadowMapFragmentExtraDeclaration.d.ts +7 -0
  118. package/ShadersWGSL/ShadersInclude/shadowMapFragmentExtraDeclaration.js +26 -0
  119. package/ShadersWGSL/ShadersInclude/shadowMapFragmentExtraDeclaration.js.map +1 -0
  120. package/ShadersWGSL/ShadersInclude/shadowMapFragmentSoftTransparentShadow.d.ts +5 -0
  121. package/ShadersWGSL/ShadersInclude/shadowMapFragmentSoftTransparentShadow.js +12 -0
  122. package/ShadersWGSL/ShadersInclude/shadowMapFragmentSoftTransparentShadow.js.map +1 -0
  123. package/ShadersWGSL/ShadersInclude/shadowMapVertexExtraDeclaration.d.ts +5 -0
  124. package/ShadersWGSL/ShadersInclude/shadowMapVertexExtraDeclaration.js +19 -0
  125. package/ShadersWGSL/ShadersInclude/shadowMapVertexExtraDeclaration.js.map +1 -0
  126. package/ShadersWGSL/ShadersInclude/shadowMapVertexMetric.js +4 -4
  127. package/ShadersWGSL/ShadersInclude/shadowMapVertexMetric.js.map +1 -1
  128. package/ShadersWGSL/ShadersInclude/shadowMapVertexNormalBias.d.ts +5 -0
  129. package/ShadersWGSL/ShadersInclude/shadowMapVertexNormalBias.js +17 -0
  130. package/ShadersWGSL/ShadersInclude/shadowMapVertexNormalBias.js.map +1 -0
  131. package/ShadersWGSL/default.fragment.js +2 -2
  132. package/ShadersWGSL/default.fragment.js.map +1 -1
  133. package/ShadersWGSL/depthBoxBlur.fragment.d.ts +5 -0
  134. package/ShadersWGSL/depthBoxBlur.fragment.js +14 -0
  135. package/ShadersWGSL/depthBoxBlur.fragment.js.map +1 -0
  136. package/ShadersWGSL/glowBlurPostProcess.fragment.d.ts +5 -0
  137. package/ShadersWGSL/glowBlurPostProcess.fragment.js +15 -0
  138. package/ShadersWGSL/glowBlurPostProcess.fragment.js.map +1 -0
  139. package/ShadersWGSL/glowMapGeneration.fragment.d.ts +8 -0
  140. package/ShadersWGSL/glowMapGeneration.fragment.js +74 -0
  141. package/ShadersWGSL/glowMapGeneration.fragment.js.map +1 -0
  142. package/ShadersWGSL/glowMapGeneration.vertex.d.ts +17 -0
  143. package/ShadersWGSL/glowMapGeneration.vertex.js +92 -0
  144. package/ShadersWGSL/glowMapGeneration.vertex.js.map +1 -0
  145. package/ShadersWGSL/glowMapMerge.fragment.d.ts +5 -0
  146. package/ShadersWGSL/glowMapMerge.fragment.js +32 -0
  147. package/ShadersWGSL/glowMapMerge.fragment.js.map +1 -0
  148. package/ShadersWGSL/glowMapMerge.vertex.d.ts +5 -0
  149. package/ShadersWGSL/glowMapMerge.vertex.js +16 -0
  150. package/ShadersWGSL/glowMapMerge.vertex.js.map +1 -0
  151. package/ShadersWGSL/kernelBlur.fragment.d.ts +9 -0
  152. package/ShadersWGSL/kernelBlur.fragment.js +48 -0
  153. package/ShadersWGSL/kernelBlur.fragment.js.map +1 -0
  154. package/ShadersWGSL/kernelBlur.vertex.d.ts +7 -0
  155. package/ShadersWGSL/kernelBlur.vertex.js +21 -0
  156. package/ShadersWGSL/kernelBlur.vertex.js.map +1 -0
  157. package/ShadersWGSL/pass.fragment.d.ts +5 -0
  158. package/ShadersWGSL/pass.fragment.js +12 -0
  159. package/ShadersWGSL/pass.fragment.js.map +1 -0
  160. package/ShadersWGSL/passCube.fragment.d.ts +5 -0
  161. package/ShadersWGSL/passCube.fragment.js +31 -0
  162. package/ShadersWGSL/passCube.fragment.js.map +1 -0
  163. package/ShadersWGSL/rgbdDecode.fragment.d.ts +6 -0
  164. package/ShadersWGSL/rgbdDecode.fragment.js +14 -0
  165. package/ShadersWGSL/rgbdDecode.fragment.js.map +1 -0
  166. package/ShadersWGSL/rgbdEncode.fragment.d.ts +6 -0
  167. package/ShadersWGSL/rgbdEncode.fragment.js +14 -0
  168. package/ShadersWGSL/rgbdEncode.fragment.js.map +1 -0
  169. package/ShadersWGSL/shadowMap.fragment.d.ts +9 -0
  170. package/ShadersWGSL/shadowMap.fragment.js +39 -0
  171. package/ShadersWGSL/shadowMap.fragment.js.map +1 -0
  172. package/ShadersWGSL/shadowMap.vertex.d.ts +22 -0
  173. package/ShadersWGSL/shadowMap.vertex.js +89 -0
  174. package/ShadersWGSL/shadowMap.vertex.js.map +1 -0
  175. package/package.json +1 -1
package/Layers/index.d.ts CHANGED
@@ -4,3 +4,13 @@ export * from "./glowLayer";
4
4
  export * from "./highlightLayer";
5
5
  export * from "./layer";
6
6
  export * from "./layerSceneComponent";
7
+ export * from "../Shaders/glowMapGeneration.fragment";
8
+ export * from "../Shaders/glowMapGeneration.vertex";
9
+ export * from "../ShadersWGSL/glowMapGeneration.fragment";
10
+ export * from "../ShadersWGSL/glowMapGeneration.vertex";
11
+ export * from "../Shaders/glowMapMerge.fragment";
12
+ export * from "../Shaders/glowMapMerge.vertex";
13
+ export * from "../Shaders/glowBlurPostProcess.fragment";
14
+ export * from "../ShadersWGSL/glowMapMerge.fragment";
15
+ export * from "../ShadersWGSL/glowMapMerge.vertex";
16
+ export * from "../ShadersWGSL/glowBlurPostProcess.fragment";
package/Layers/index.js CHANGED
@@ -4,4 +4,16 @@ export * from "./glowLayer.js";
4
4
  export * from "./highlightLayer.js";
5
5
  export * from "./layer.js";
6
6
  export * from "./layerSceneComponent.js";
7
+ // EffectLayer
8
+ export * from "../Shaders/glowMapGeneration.fragment.js";
9
+ export * from "../Shaders/glowMapGeneration.vertex.js";
10
+ export * from "../ShadersWGSL/glowMapGeneration.fragment.js";
11
+ export * from "../ShadersWGSL/glowMapGeneration.vertex.js";
12
+ // Highlights
13
+ export * from "../Shaders/glowMapMerge.fragment.js";
14
+ export * from "../Shaders/glowMapMerge.vertex.js";
15
+ export * from "../Shaders/glowBlurPostProcess.fragment.js";
16
+ export * from "../ShadersWGSL/glowMapMerge.fragment.js";
17
+ export * from "../ShadersWGSL/glowMapMerge.vertex.js";
18
+ export * from "../ShadersWGSL/glowBlurPostProcess.fragment.js";
7
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../dev/core/src/Layers/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,uBAAuB,CAAC","sourcesContent":["export * from \"./effectLayer\";\r\nexport * from \"./effectLayerSceneComponent\";\r\nexport * from \"./glowLayer\";\r\nexport * from \"./highlightLayer\";\r\nexport * from \"./layer\";\r\nexport * from \"./layerSceneComponent\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../dev/core/src/Layers/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,uBAAuB,CAAC;AAEtC,cAAc;AACd,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC;AACpD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yCAAyC,CAAC;AAExD,aAAa;AACb,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yCAAyC,CAAC;AACxD,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AACnD,cAAc,6CAA6C,CAAC","sourcesContent":["export * from \"./effectLayer\";\r\nexport * from \"./effectLayerSceneComponent\";\r\nexport * from \"./glowLayer\";\r\nexport * from \"./highlightLayer\";\r\nexport * from \"./layer\";\r\nexport * from \"./layerSceneComponent\";\r\n\r\n// EffectLayer\r\nexport * from \"../Shaders/glowMapGeneration.fragment\";\r\nexport * from \"../Shaders/glowMapGeneration.vertex\";\r\nexport * from \"../ShadersWGSL/glowMapGeneration.fragment\";\r\nexport * from \"../ShadersWGSL/glowMapGeneration.vertex\";\r\n\r\n// Highlights\r\nexport * from \"../Shaders/glowMapMerge.fragment\";\r\nexport * from \"../Shaders/glowMapMerge.vertex\";\r\nexport * from \"../Shaders/glowBlurPostProcess.fragment\";\r\nexport * from \"../ShadersWGSL/glowMapMerge.fragment\";\r\nexport * from \"../ShadersWGSL/glowMapMerge.vertex\";\r\nexport * from \"../ShadersWGSL/glowBlurPostProcess.fragment\";\r\n"]}
@@ -1,3 +1,11 @@
1
1
  export * from "./shadowGenerator";
2
2
  export * from "./cascadedShadowGenerator";
3
3
  export * from "./shadowGeneratorSceneComponent";
4
+ export * from "../../ShadersWGSL/shadowMap.fragment";
5
+ export * from "../../ShadersWGSL/shadowMap.vertex";
6
+ export * from "../../ShadersWGSL/depthBoxBlur.fragment";
7
+ export * from "../../ShadersWGSL/ShadersInclude/shadowMapFragmentSoftTransparentShadow";
8
+ export * from "../../Shaders/shadowMap.fragment";
9
+ export * from "../../Shaders/shadowMap.vertex";
10
+ export * from "../../Shaders/depthBoxBlur.fragment";
11
+ export * from "../../Shaders/ShadersInclude/shadowMapFragmentSoftTransparentShadow";
@@ -1,4 +1,13 @@
1
1
  export * from "./shadowGenerator.js";
2
2
  export * from "./cascadedShadowGenerator.js";
3
3
  export * from "./shadowGeneratorSceneComponent.js";
4
+ // Blur postprocess
5
+ export * from "../../ShadersWGSL/shadowMap.fragment.js";
6
+ export * from "../../ShadersWGSL/shadowMap.vertex.js";
7
+ export * from "../../ShadersWGSL/depthBoxBlur.fragment.js";
8
+ export * from "../../ShadersWGSL/ShadersInclude/shadowMapFragmentSoftTransparentShadow.js";
9
+ export * from "../../Shaders/shadowMap.fragment.js";
10
+ export * from "../../Shaders/shadowMap.vertex.js";
11
+ export * from "../../Shaders/depthBoxBlur.fragment.js";
12
+ export * from "../../Shaders/ShadersInclude/shadowMapFragmentSoftTransparentShadow.js";
4
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../dev/core/src/Lights/Shadows/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iCAAiC,CAAC","sourcesContent":["export * from \"./shadowGenerator\";\r\nexport * from \"./cascadedShadowGenerator\";\r\nexport * from \"./shadowGeneratorSceneComponent\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../dev/core/src/Lights/Shadows/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iCAAiC,CAAC;AAEhD,mBAAmB;AACnB,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AACnD,cAAc,yCAAyC,CAAC;AACxD,cAAc,yEAAyE,CAAC;AACxF,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qCAAqC,CAAC;AACpD,cAAc,qEAAqE,CAAC","sourcesContent":["export * from \"./shadowGenerator\";\r\nexport * from \"./cascadedShadowGenerator\";\r\nexport * from \"./shadowGeneratorSceneComponent\";\r\n\r\n// Blur postprocess\r\nexport * from \"../../ShadersWGSL/shadowMap.fragment\";\r\nexport * from \"../../ShadersWGSL/shadowMap.vertex\";\r\nexport * from \"../../ShadersWGSL/depthBoxBlur.fragment\";\r\nexport * from \"../../ShadersWGSL/ShadersInclude/shadowMapFragmentSoftTransparentShadow\";\r\nexport * from \"../../Shaders/shadowMap.fragment\";\r\nexport * from \"../../Shaders/shadowMap.vertex\";\r\nexport * from \"../../Shaders/depthBoxBlur.fragment\";\r\nexport * from \"../../Shaders/ShadersInclude/shadowMapFragmentSoftTransparentShadow\";\r\n"]}
@@ -13,11 +13,8 @@ import { PostProcess } from "../../PostProcesses/postProcess";
13
13
  import { Observable } from "../../Misc/observable";
14
14
  import type { UniformBuffer } from "../../Materials/uniformBuffer";
15
15
  import type { Camera } from "../../Cameras/camera";
16
- import "../../Shaders/shadowMap.fragment";
17
- import "../../Shaders/shadowMap.vertex";
18
- import "../../Shaders/depthBoxBlur.fragment";
19
- import "../../Shaders/ShadersInclude/shadowMapFragmentSoftTransparentShadow";
20
16
  import type { BaseTexture } from "../../Materials/Textures/baseTexture";
17
+ import { ShaderLanguage } from "../../Materials/shaderLanguage.js";
21
18
  /**
22
19
  * Defines the options associated with the creation of a custom shader for a shadow generator.
23
20
  */
@@ -117,12 +114,19 @@ export interface IShadowGenerator {
117
114
  * Default implementation IShadowGenerator.
118
115
  * This is the main object responsible of generating shadows in the framework.
119
116
  * Documentation: https://doc.babylonjs.com/features/featuresDeepDive/lights/shadows
117
+ * #IFYDRS#0: WebGL
118
+ * #IFYDRS#835: WebGPU
120
119
  */
121
120
  export declare class ShadowGenerator implements IShadowGenerator {
122
121
  /**
123
122
  * Name of the shadow generator class
124
123
  */
125
124
  static CLASSNAME: string;
125
+ /**
126
+ * Force all the shadow generators to compile to glsl even on WebGPU engines.
127
+ * False by default. This is mostly meant for backward compatibility.
128
+ */
129
+ static ForceGLSL: boolean;
126
130
  /**
127
131
  * Shadow generator mode None: no filtering applied.
128
132
  */
@@ -477,6 +481,12 @@ export declare class ShadowGenerator implements IShadowGenerator {
477
481
  * @returns the light generating the shadow
478
482
  */
479
483
  getLight(): IShadowLight;
484
+ /** Shader language used by the generator */
485
+ protected _shaderLanguage: ShaderLanguage;
486
+ /**
487
+ * Gets the shader language used in this generator.
488
+ */
489
+ get shaderLanguage(): ShaderLanguage;
480
490
  /**
481
491
  * If true the shadow map is generated by rendering the back face of the mesh instead of the front face.
482
492
  * This can help with self-shadowing as the geometry making up the back of objects is slightly offset.
@@ -528,11 +538,14 @@ export declare class ShadowGenerator implements IShadowGenerator {
528
538
  * @param usefullFloatFirst By default the generator will try to use half float textures but if you need precision (for self shadowing for instance), you can use this option to enforce full float texture.
529
539
  * @param camera Camera associated with this shadow generator (default: null). If null, takes the scene active camera at the time we need to access it
530
540
  * @param useRedTextureType Forces the generator to use a Red instead of a RGBA type for the shadow map texture format (default: false)
541
+ * @param forceGLSL defines a boolean indicating if the shader must be compiled in GLSL even if we are using WebGPU
531
542
  */
532
- constructor(mapSize: number, light: IShadowLight, usefullFloatFirst?: boolean, camera?: Nullable<Camera>, useRedTextureType?: boolean);
543
+ constructor(mapSize: number, light: IShadowLight, usefullFloatFirst?: boolean, camera?: Nullable<Camera>, useRedTextureType?: boolean, forceGLSL?: boolean);
533
544
  protected _initializeGenerator(): void;
534
545
  protected _createTargetRenderTexture(): void;
535
546
  protected _initializeShadowMap(): void;
547
+ private _shadersLoaded;
548
+ private _initShaderSourceAsync;
536
549
  protected _initializeBlurRTTAndPostProcesses(): void;
537
550
  protected _renderForShadowMap(opaqueSubMeshes: SmartArray<SubMesh>, alphaTestSubMeshes: SmartArray<SubMesh>, transparentSubMeshes: SmartArray<SubMesh>, depthOnlySubMeshes: SmartArray<SubMesh>): void;
538
551
  protected _bindCustomEffectForRenderSubMeshForShadowMap(subMesh: SubMesh, effect: Effect, mesh: AbstractMesh): void;
@@ -12,16 +12,14 @@ import { _WarnImport } from "../../Misc/devTools.js";
12
12
  import { EffectFallbacks } from "../../Materials/effectFallbacks.js";
13
13
  import { RenderingManager } from "../../Rendering/renderingManager.js";
14
14
  import { DrawWrapper } from "../../Materials/drawWrapper.js";
15
- import "../../Shaders/shadowMap.fragment.js";
16
- import "../../Shaders/shadowMap.vertex.js";
17
- import "../../Shaders/depthBoxBlur.fragment.js";
18
- import "../../Shaders/ShadersInclude/shadowMapFragmentSoftTransparentShadow.js";
19
15
  import { addClipPlaneUniforms, bindClipPlane, prepareStringDefinesForClipPlanes } from "../../Materials/clipPlaneMaterialHelper.js";
20
16
  import { BindMorphTargetParameters, BindSceneUniformBuffer, PrepareAttributesForMorphTargetsInfluencers, PushAttributesForInstances, } from "../../Materials/materialHelper.functions.js";
21
17
  /**
22
18
  * Default implementation IShadowGenerator.
23
19
  * This is the main object responsible of generating shadows in the framework.
24
20
  * Documentation: https://doc.babylonjs.com/features/featuresDeepDive/lights/shadows
21
+ * #IFYDRS#0: WebGL
22
+ * #IFYDRS#835: WebGPU
25
23
  */
26
24
  export class ShadowGenerator {
27
25
  /**
@@ -465,6 +463,12 @@ export class ShadowGenerator {
465
463
  getLight() {
466
464
  return this._light;
467
465
  }
466
+ /**
467
+ * Gets the shader language used in this generator.
468
+ */
469
+ get shaderLanguage() {
470
+ return this._shaderLanguage;
471
+ }
468
472
  _getCamera() {
469
473
  return this._camera ?? this._scene.activeCamera;
470
474
  }
@@ -489,8 +493,9 @@ export class ShadowGenerator {
489
493
  * @param usefullFloatFirst By default the generator will try to use half float textures but if you need precision (for self shadowing for instance), you can use this option to enforce full float texture.
490
494
  * @param camera Camera associated with this shadow generator (default: null). If null, takes the scene active camera at the time we need to access it
491
495
  * @param useRedTextureType Forces the generator to use a Red instead of a RGBA type for the shadow map texture format (default: false)
496
+ * @param forceGLSL defines a boolean indicating if the shader must be compiled in GLSL even if we are using WebGPU
492
497
  */
493
- constructor(mapSize, light, usefullFloatFirst, camera, useRedTextureType) {
498
+ constructor(mapSize, light, usefullFloatFirst, camera, useRedTextureType, forceGLSL = false) {
494
499
  /**
495
500
  * Observable triggered before the shadow is rendered. Can be used to update internal effect state
496
501
  */
@@ -537,6 +542,8 @@ export class ShadowGenerator {
537
542
  * Controls the extent to which the shadows fade out at the edge of the frustum
538
543
  */
539
544
  this.frustumEdgeFalloff = 0;
545
+ /** Shader language used by the generator */
546
+ this._shaderLanguage = 0 /* ShaderLanguage.GLSL */;
540
547
  /**
541
548
  * If true the shadow map is generated by rendering the back face of the mesh instead of the front face.
542
549
  * This can help with self-shadowing as the geometry making up the back of objects is slightly offset.
@@ -552,11 +559,13 @@ export class ShadowGenerator {
552
559
  this._currentFaceIndex = 0;
553
560
  this._currentFaceIndexCache = 0;
554
561
  this._defaultTextureMatrix = Matrix.Identity();
562
+ this._shadersLoaded = false;
555
563
  this._mapSize = mapSize;
556
564
  this._light = light;
557
565
  this._scene = light.getScene();
558
566
  this._camera = camera ?? null;
559
567
  this._useRedTextureType = !!useRedTextureType;
568
+ this._initShaderSourceAsync(forceGLSL);
560
569
  let shadowGenerators = light._shadowGenerators;
561
570
  if (!shadowGenerators) {
562
571
  shadowGenerators = light._shadowGenerators = new Map();
@@ -701,6 +710,27 @@ export class ShadowGenerator {
701
710
  this._shadowMap.setRenderingAutoClearDepthStencil(i, false);
702
711
  }
703
712
  }
713
+ async _initShaderSourceAsync(forceGLSL = false) {
714
+ const engine = this._scene.getEngine();
715
+ if (engine.isWebGPU && !forceGLSL && !ShadowGenerator.ForceGLSL) {
716
+ this._shaderLanguage = 1 /* ShaderLanguage.WGSL */;
717
+ await Promise.all([
718
+ import("../../ShadersWGSL/shadowMap.fragment.js"),
719
+ import("../../ShadersWGSL/shadowMap.vertex.js"),
720
+ import("../../ShadersWGSL/depthBoxBlur.fragment.js"),
721
+ import("../../ShadersWGSL/ShadersInclude/shadowMapFragmentSoftTransparentShadow.js"),
722
+ ]);
723
+ }
724
+ else {
725
+ await Promise.all([
726
+ import("../../Shaders/shadowMap.fragment.js"),
727
+ import("../../Shaders/shadowMap.vertex.js"),
728
+ import("../../Shaders/depthBoxBlur.fragment.js"),
729
+ import("../../Shaders/ShadersInclude/shadowMapFragmentSoftTransparentShadow.js"),
730
+ ]);
731
+ }
732
+ this._shadersLoaded = true;
733
+ }
704
734
  _initializeBlurRTTAndPostProcesses() {
705
735
  const engine = this._scene.getEngine();
706
736
  const targetSize = this._mapSize / this.blurScale;
@@ -1011,6 +1041,9 @@ export class ShadowGenerator {
1011
1041
  * @returns true if ready otherwise, false
1012
1042
  */
1013
1043
  isReady(subMesh, useInstances, isTransparent) {
1044
+ if (!this._shadersLoaded) {
1045
+ return false;
1046
+ }
1014
1047
  const material = subMesh.getMaterial(), shadowDepthWrapper = material?.shadowDepthWrapper;
1015
1048
  this._opacityTexture = null;
1016
1049
  if (!material) {
@@ -1193,6 +1226,7 @@ export class ShadowGenerator {
1193
1226
  onCompiled: null,
1194
1227
  onError: null,
1195
1228
  indexParameters: { maxSimultaneousMorphTargets: morphInfluencers },
1229
+ shaderLanguage: this._shaderLanguage,
1196
1230
  }, engine);
1197
1231
  subMeshEffect.setEffect(effect, cachedDefines);
1198
1232
  }
@@ -1590,6 +1624,11 @@ export class ShadowGenerator {
1590
1624
  * Name of the shadow generator class
1591
1625
  */
1592
1626
  ShadowGenerator.CLASSNAME = "ShadowGenerator";
1627
+ /**
1628
+ * Force all the shadow generators to compile to glsl even on WebGPU engines.
1629
+ * False by default. This is mostly meant for backward compatibility.
1630
+ */
1631
+ ShadowGenerator.ForceGLSL = false;
1593
1632
  /**
1594
1633
  * Shadow generator mode None: no filtering applied.
1595
1634
  */