@babylonjs/core 7.3.1 → 7.3.3

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 (510) hide show
  1. package/Actions/condition.js.map +1 -1
  2. package/Actions/directActions.js.map +1 -1
  3. package/Actions/directAudioActions.js.map +1 -1
  4. package/Actions/interpolateValueAction.js.map +1 -1
  5. package/Animations/easing.js.map +1 -1
  6. package/Behaviors/Meshes/sixDofDragBehavior.js.map +1 -1
  7. package/Bones/bone.js.map +1 -1
  8. package/Cameras/Inputs/arcRotateCameraPointersInput.js.map +1 -1
  9. package/Cameras/Inputs/followCameraPointersInput.js.map +1 -1
  10. package/Cameras/Inputs/freeCameraMouseWheelInput.js.map +1 -1
  11. package/Cameras/Stereoscopic/anaglyphArcRotateCamera.js.map +1 -1
  12. package/Cameras/Stereoscopic/anaglyphFreeCamera.js.map +1 -1
  13. package/Cameras/Stereoscopic/anaglyphGamepadCamera.js.map +1 -1
  14. package/Cameras/Stereoscopic/anaglyphUniversalCamera.js.map +1 -1
  15. package/Cameras/Stereoscopic/stereoscopicArcRotateCamera.js.map +1 -1
  16. package/Cameras/Stereoscopic/stereoscopicFreeCamera.js.map +1 -1
  17. package/Cameras/Stereoscopic/stereoscopicGamepadCamera.js.map +1 -1
  18. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js.map +1 -1
  19. package/Cameras/Stereoscopic/stereoscopicUniversalCamera.js.map +1 -1
  20. package/Cameras/VR/vrDeviceOrientationArcRotateCamera.js.map +1 -1
  21. package/Cameras/VR/vrDeviceOrientationFreeCamera.js.map +1 -1
  22. package/Cameras/VR/vrDeviceOrientationGamepadCamera.js.map +1 -1
  23. package/Cameras/VR/vrExperienceHelper.js.map +1 -1
  24. package/Cameras/arcRotateCamera.js.map +1 -1
  25. package/Cameras/camera.js.map +1 -1
  26. package/Cameras/deviceOrientationCamera.js.map +1 -1
  27. package/Cameras/flyCamera.js.map +1 -1
  28. package/Cameras/followCamera.js.map +1 -1
  29. package/Cameras/freeCamera.js.map +1 -1
  30. package/Cameras/freeCameraInputsManager.js.map +1 -1
  31. package/Cameras/gamepadCamera.js.map +1 -1
  32. package/Cameras/targetCamera.js.map +1 -1
  33. package/Cameras/touchCamera.js.map +1 -1
  34. package/Cameras/universalCamera.js.map +1 -1
  35. package/Cameras/virtualJoysticksCamera.js.map +1 -1
  36. package/Compute/computeEffect.js +4 -4
  37. package/Compute/computeEffect.js.map +1 -1
  38. package/Debug/boneAxesViewer.js.map +1 -1
  39. package/Engines/IPipelineContext.d.ts +3 -0
  40. package/Engines/IPipelineContext.js.map +1 -1
  41. package/Engines/Native/nativePipelineContext.d.ts +2 -0
  42. package/Engines/Native/nativePipelineContext.js +3 -0
  43. package/Engines/Native/nativePipelineContext.js.map +1 -1
  44. package/Engines/Native/nativeRenderTargetWrapper.js.map +1 -1
  45. package/Engines/Processors/Expressions/Operators/shaderDefineAndOperator.js.map +1 -1
  46. package/Engines/Processors/Expressions/Operators/shaderDefineArithmeticOperator.js.map +1 -1
  47. package/Engines/Processors/Expressions/Operators/shaderDefineIsDefinedOperator.js.map +1 -1
  48. package/Engines/Processors/Expressions/Operators/shaderDefineOrOperator.js.map +1 -1
  49. package/Engines/Processors/iShaderProcessor.d.ts +3 -2
  50. package/Engines/Processors/iShaderProcessor.js.map +1 -1
  51. package/Engines/Processors/shaderCodeConditionNode.js.map +1 -1
  52. package/Engines/Processors/shaderCodeTestNode.js.map +1 -1
  53. package/Engines/Processors/shaderProcessor.d.ts +15 -23
  54. package/Engines/Processors/shaderProcessor.js +332 -320
  55. package/Engines/Processors/shaderProcessor.js.map +1 -1
  56. package/Engines/WebGL/webGLPipelineContext.d.ts +2 -0
  57. package/Engines/WebGL/webGLPipelineContext.js +3 -0
  58. package/Engines/WebGL/webGLPipelineContext.js.map +1 -1
  59. package/Engines/WebGL/webGLRenderTargetWrapper.js.map +1 -1
  60. package/Engines/WebGL/webGLShaderProcessors.d.ts +3 -2
  61. package/Engines/WebGL/webGLShaderProcessors.js +2 -2
  62. package/Engines/WebGL/webGLShaderProcessors.js.map +1 -1
  63. package/Engines/WebGPU/Extensions/engine.computeShader.js +1 -1
  64. package/Engines/WebGPU/Extensions/engine.computeShader.js.map +1 -1
  65. package/Engines/WebGPU/Extensions/engine.rawTexture.js +10 -10
  66. package/Engines/WebGPU/Extensions/engine.rawTexture.js.map +1 -1
  67. package/Engines/WebGPU/webgpuCacheRenderPipelineTree.js.map +1 -1
  68. package/Engines/WebGPU/webgpuDepthCullingState.js.map +1 -1
  69. package/Engines/WebGPU/webgpuHardwareTexture.d.ts +2 -0
  70. package/Engines/WebGPU/webgpuHardwareTexture.js +2 -0
  71. package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
  72. package/Engines/WebGPU/webgpuPipelineContext.d.ts +2 -0
  73. package/Engines/WebGPU/webgpuPipelineContext.js +3 -0
  74. package/Engines/WebGPU/webgpuPipelineContext.js.map +1 -1
  75. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.d.ts +3 -2
  76. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js +2 -4
  77. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js.map +1 -1
  78. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
  79. package/Engines/WebGPU/webgpuStencilStateComposer.js.map +1 -1
  80. package/Engines/abstractEngine.d.ts +10 -5
  81. package/Engines/abstractEngine.functions.d.ts +38 -0
  82. package/Engines/abstractEngine.functions.js +75 -0
  83. package/Engines/abstractEngine.functions.js.map +1 -0
  84. package/Engines/abstractEngine.js +34 -14
  85. package/Engines/abstractEngine.js.map +1 -1
  86. package/Engines/constants.d.ts +2 -0
  87. package/Engines/constants.js +2 -0
  88. package/Engines/constants.js.map +1 -1
  89. package/Engines/engine.d.ts +0 -8
  90. package/Engines/engine.js +0 -28
  91. package/Engines/engine.js.map +1 -1
  92. package/Engines/nativeEngine.js.map +1 -1
  93. package/Engines/nullEngine.js.map +1 -1
  94. package/Engines/thinEngine.d.ts +11 -6
  95. package/Engines/thinEngine.functions.d.ts +96 -0
  96. package/Engines/thinEngine.functions.js +249 -0
  97. package/Engines/thinEngine.functions.js.map +1 -0
  98. package/Engines/thinEngine.js +50 -129
  99. package/Engines/thinEngine.js.map +1 -1
  100. package/Engines/webgpuEngine.js +5 -1
  101. package/Engines/webgpuEngine.js.map +1 -1
  102. package/Events/keyboardEvents.js.map +1 -1
  103. package/FlowGraph/Blocks/Data/flowGraphBinaryOperationBlock.js.map +1 -1
  104. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js.map +1 -1
  105. package/FlowGraph/Blocks/Data/flowGraphConditionalDataBlock.js.map +1 -1
  106. package/FlowGraph/Blocks/Data/flowGraphConstantBlock.js.map +1 -1
  107. package/FlowGraph/Blocks/Data/flowGraphConstantOperationBlock.js.map +1 -1
  108. package/FlowGraph/Blocks/Data/flowGraphCoordinateTransformBlock.js.map +1 -1
  109. package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.js.map +1 -1
  110. package/FlowGraph/Blocks/Data/flowGraphGetVariableBlock.js.map +1 -1
  111. package/FlowGraph/Blocks/Data/flowGraphTernaryOperationBlock.js.map +1 -1
  112. package/FlowGraph/Blocks/Data/flowGraphUnaryOperationBlock.js.map +1 -1
  113. package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.js.map +1 -1
  114. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.js.map +1 -1
  115. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.js.map +1 -1
  116. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.js.map +1 -1
  117. package/FlowGraph/Blocks/Execution/Animation/flowGraphPauseAnimationBlock.js.map +1 -1
  118. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.js.map +1 -1
  119. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.js.map +1 -1
  120. package/FlowGraph/Blocks/Execution/Audio/flowGraphPlayAudioBlock.js.map +1 -1
  121. package/FlowGraph/Blocks/Execution/Audio/flowGraphStopAudioBlock.js.map +1 -1
  122. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphBranchBlock.js.map +1 -1
  123. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCounterBlock.js.map +1 -1
  124. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDebounceBlock.js.map +1 -1
  125. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDoNBlock.js.map +1 -1
  126. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphFlipFlopBlock.js.map +1 -1
  127. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.js.map +1 -1
  128. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphMultiGateBlock.js.map +1 -1
  129. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSequenceBlock.js.map +1 -1
  130. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSwitchBlock.js.map +1 -1
  131. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.js.map +1 -1
  132. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphTimerBlock.js.map +1 -1
  133. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWaitAllBlock.js.map +1 -1
  134. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWhileLoopBlock.js.map +1 -1
  135. package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.js.map +1 -1
  136. package/FlowGraph/Blocks/Execution/flowGraphSendCustomEventBlock.js.map +1 -1
  137. package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.js.map +1 -1
  138. package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.js.map +1 -1
  139. package/FlowGraph/flowGraphDataConnection.js.map +1 -1
  140. package/FlowGraph/flowGraphExecutionBlock.js.map +1 -1
  141. package/FlowGraph/flowGraphSignalConnection.js.map +1 -1
  142. package/Gamepads/dualShockGamepad.js.map +1 -1
  143. package/Gamepads/gamepad.js.map +1 -1
  144. package/Gamepads/xboxGamepad.js.map +1 -1
  145. package/Gizmos/axisDragGizmo.js.map +1 -1
  146. package/Gizmos/axisScaleGizmo.js.map +1 -1
  147. package/Gizmos/boundingBoxGizmo.js.map +1 -1
  148. package/Gizmos/cameraGizmo.js.map +1 -1
  149. package/Gizmos/lightGizmo.js.map +1 -1
  150. package/Gizmos/planeDragGizmo.js.map +1 -1
  151. package/Gizmos/planeRotationGizmo.js.map +1 -1
  152. package/Gizmos/positionGizmo.js.map +1 -1
  153. package/Gizmos/rotationGizmo.js.map +1 -1
  154. package/Gizmos/scaleGizmo.js.map +1 -1
  155. package/Helpers/photoDome.js.map +1 -1
  156. package/Helpers/textureDome.js.map +1 -1
  157. package/Helpers/videoDome.js.map +1 -1
  158. package/Layers/glowLayer.js.map +1 -1
  159. package/Layers/highlightLayer.js.map +1 -1
  160. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  161. package/Lights/directionalLight.js.map +1 -1
  162. package/Lights/hemisphericLight.js.map +1 -1
  163. package/Lights/light.js.map +1 -1
  164. package/Lights/pointLight.js.map +1 -1
  165. package/Lights/shadowLight.js.map +1 -1
  166. package/Lights/spotLight.js.map +1 -1
  167. package/Materials/Background/backgroundMaterial.js.map +1 -1
  168. package/Materials/GaussianSplatting/gaussianSplattingMaterial.js.map +1 -1
  169. package/Materials/GreasedLine/greasedLinePluginMaterial.js.map +1 -1
  170. package/Materials/GreasedLine/greasedLineSimpleMaterial.js.map +1 -1
  171. package/Materials/Node/Blocks/Dual/clipPlanesBlock.js.map +1 -1
  172. package/Materials/Node/Blocks/Dual/currentScreenBlock.js.map +1 -1
  173. package/Materials/Node/Blocks/Dual/fogBlock.js.map +1 -1
  174. package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
  175. package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
  176. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
  177. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js.map +1 -1
  178. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js.map +1 -1
  179. package/Materials/Node/Blocks/Dual/textureBlock.js +3 -3
  180. package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
  181. package/Materials/Node/Blocks/Fragment/TBNBlock.js.map +1 -1
  182. package/Materials/Node/Blocks/Fragment/derivativeBlock.js.map +1 -1
  183. package/Materials/Node/Blocks/Fragment/discardBlock.js.map +1 -1
  184. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js.map +1 -1
  185. package/Materials/Node/Blocks/Fragment/fragDepthBlock.js.map +1 -1
  186. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
  187. package/Materials/Node/Blocks/Fragment/frontFacingBlock.js.map +1 -1
  188. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js.map +1 -1
  189. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js.map +1 -1
  190. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
  191. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.js.map +1 -1
  192. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js.map +1 -1
  193. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js.map +1 -1
  194. package/Materials/Node/Blocks/Fragment/shadowMapBlock.js.map +1 -1
  195. package/Materials/Node/Blocks/Fragment/twirlBlock.js.map +1 -1
  196. package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
  197. package/Materials/Node/Blocks/Input/prePassTextureBlock.js.map +1 -1
  198. package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
  199. package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
  200. package/Materials/Node/Blocks/PBR/iridescenceBlock.js.map +1 -1
  201. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  202. package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
  203. package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
  204. package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
  205. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js.map +1 -1
  206. package/Materials/Node/Blocks/Particle/particleBlendMultiplyBlock.js.map +1 -1
  207. package/Materials/Node/Blocks/Particle/particleRampGradientBlock.js.map +1 -1
  208. package/Materials/Node/Blocks/Particle/particleTextureBlock.js.map +1 -1
  209. package/Materials/Node/Blocks/Teleport/teleportInBlock.js.map +1 -1
  210. package/Materials/Node/Blocks/Teleport/teleportOutBlock.js.map +1 -1
  211. package/Materials/Node/Blocks/Vertex/bonesBlock.js.map +1 -1
  212. package/Materials/Node/Blocks/Vertex/instancesBlock.js.map +1 -1
  213. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js.map +1 -1
  214. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
  215. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js.map +1 -1
  216. package/Materials/Node/Blocks/addBlock.js.map +1 -1
  217. package/Materials/Node/Blocks/arcTan2Block.js.map +1 -1
  218. package/Materials/Node/Blocks/biPlanarBlock.js.map +1 -1
  219. package/Materials/Node/Blocks/clampBlock.js.map +1 -1
  220. package/Materials/Node/Blocks/cloudBlock.js.map +1 -1
  221. package/Materials/Node/Blocks/colorMergerBlock.js.map +1 -1
  222. package/Materials/Node/Blocks/colorSplitterBlock.js.map +1 -1
  223. package/Materials/Node/Blocks/conditionalBlock.js.map +1 -1
  224. package/Materials/Node/Blocks/crossBlock.js.map +1 -1
  225. package/Materials/Node/Blocks/curveBlock.js.map +1 -1
  226. package/Materials/Node/Blocks/customBlock.js.map +1 -1
  227. package/Materials/Node/Blocks/desaturateBlock.js.map +1 -1
  228. package/Materials/Node/Blocks/distanceBlock.js.map +1 -1
  229. package/Materials/Node/Blocks/divideBlock.js.map +1 -1
  230. package/Materials/Node/Blocks/dotBlock.js.map +1 -1
  231. package/Materials/Node/Blocks/elbowBlock.js.map +1 -1
  232. package/Materials/Node/Blocks/fresnelBlock.js.map +1 -1
  233. package/Materials/Node/Blocks/gradientBlock.js.map +1 -1
  234. package/Materials/Node/Blocks/lengthBlock.js.map +1 -1
  235. package/Materials/Node/Blocks/lerpBlock.js.map +1 -1
  236. package/Materials/Node/Blocks/matrixBuilderBlock.js.map +1 -1
  237. package/Materials/Node/Blocks/matrixDeterminantBlock.js.map +1 -1
  238. package/Materials/Node/Blocks/matrixTransposeBlock.js.map +1 -1
  239. package/Materials/Node/Blocks/maxBlock.js.map +1 -1
  240. package/Materials/Node/Blocks/meshAttributeExistsBlock.js.map +1 -1
  241. package/Materials/Node/Blocks/minBlock.js.map +1 -1
  242. package/Materials/Node/Blocks/modBlock.js.map +1 -1
  243. package/Materials/Node/Blocks/multiplyBlock.js.map +1 -1
  244. package/Materials/Node/Blocks/nLerpBlock.js.map +1 -1
  245. package/Materials/Node/Blocks/negateBlock.js.map +1 -1
  246. package/Materials/Node/Blocks/normalBlendBlock.js.map +1 -1
  247. package/Materials/Node/Blocks/normalizeBlock.js.map +1 -1
  248. package/Materials/Node/Blocks/oneMinusBlock.js.map +1 -1
  249. package/Materials/Node/Blocks/posterizeBlock.js.map +1 -1
  250. package/Materials/Node/Blocks/powBlock.js.map +1 -1
  251. package/Materials/Node/Blocks/randomNumberBlock.js.map +1 -1
  252. package/Materials/Node/Blocks/reciprocalBlock.js.map +1 -1
  253. package/Materials/Node/Blocks/reflectBlock.js.map +1 -1
  254. package/Materials/Node/Blocks/refractBlock.js.map +1 -1
  255. package/Materials/Node/Blocks/remapBlock.js.map +1 -1
  256. package/Materials/Node/Blocks/replaceColorBlock.js.map +1 -1
  257. package/Materials/Node/Blocks/rotate2dBlock.js.map +1 -1
  258. package/Materials/Node/Blocks/scaleBlock.js.map +1 -1
  259. package/Materials/Node/Blocks/simplexPerlin3DBlock.js.map +1 -1
  260. package/Materials/Node/Blocks/smoothStepBlock.js.map +1 -1
  261. package/Materials/Node/Blocks/stepBlock.js.map +1 -1
  262. package/Materials/Node/Blocks/subtractBlock.js.map +1 -1
  263. package/Materials/Node/Blocks/transformBlock.js.map +1 -1
  264. package/Materials/Node/Blocks/triPlanarBlock.js.map +1 -1
  265. package/Materials/Node/Blocks/trigonometryBlock.js.map +1 -1
  266. package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
  267. package/Materials/Node/Blocks/vectorSplitterBlock.js.map +1 -1
  268. package/Materials/Node/Blocks/viewDirectionBlock.js.map +1 -1
  269. package/Materials/Node/Blocks/voronoiNoiseBlock.js.map +1 -1
  270. package/Materials/Node/Blocks/waveBlock.js.map +1 -1
  271. package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
  272. package/Materials/Node/nodeMaterial.js.map +1 -1
  273. package/Materials/Node/nodeMaterialConnectionPointCustomObject.js.map +1 -1
  274. package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
  275. package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
  276. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  277. package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
  278. package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
  279. package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -1
  280. package/Materials/PBR/pbrMaterial.js.map +1 -1
  281. package/Materials/PBR/pbrMetallicRoughnessMaterial.js.map +1 -1
  282. package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
  283. package/Materials/PBR/pbrSpecularGlossinessMaterial.js.map +1 -1
  284. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  285. package/Materials/Textures/MultiviewRenderTarget.js.map +1 -1
  286. package/Materials/Textures/Procedurals/customProceduralTexture.js.map +1 -1
  287. package/Materials/Textures/Procedurals/noiseProceduralTexture.js.map +1 -1
  288. package/Materials/Textures/Procedurals/proceduralTexture.d.ts +9 -1
  289. package/Materials/Textures/Procedurals/proceduralTexture.js +16 -0
  290. package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
  291. package/Materials/Textures/baseTexture.js.map +1 -1
  292. package/Materials/Textures/colorGradingTexture.js.map +1 -1
  293. package/Materials/Textures/cubeTexture.js.map +1 -1
  294. package/Materials/Textures/dynamicTexture.js.map +1 -1
  295. package/Materials/Textures/equiRectangularCubeTexture.js +1 -1
  296. package/Materials/Textures/equiRectangularCubeTexture.js.map +1 -1
  297. package/Materials/Textures/hdrCubeTexture.js.map +1 -1
  298. package/Materials/Textures/htmlElementTexture.js.map +1 -1
  299. package/Materials/Textures/internalTexture.js.map +1 -1
  300. package/Materials/Textures/mirrorTexture.js.map +1 -1
  301. package/Materials/Textures/multiRenderTarget.js.map +1 -1
  302. package/Materials/Textures/prePassRenderTarget.js.map +1 -1
  303. package/Materials/Textures/rawCubeTexture.js.map +1 -1
  304. package/Materials/Textures/refractionTexture.js.map +1 -1
  305. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  306. package/Materials/Textures/texture.js.map +1 -1
  307. package/Materials/Textures/thinRenderTargetTexture.js.map +1 -1
  308. package/Materials/Textures/videoTexture.js.map +1 -1
  309. package/Materials/effect.d.ts +11 -6
  310. package/Materials/effect.functions.d.ts +86 -0
  311. package/Materials/effect.functions.js +185 -0
  312. package/Materials/effect.functions.js.map +1 -0
  313. package/Materials/effect.js +94 -153
  314. package/Materials/effect.js.map +1 -1
  315. package/Materials/effect.webgl.functions.d.ts +13 -0
  316. package/Materials/effect.webgl.functions.js +83 -0
  317. package/Materials/effect.webgl.functions.js.map +1 -0
  318. package/Materials/material.decalMapConfiguration.js.map +1 -1
  319. package/Materials/material.detailMapConfiguration.js.map +1 -1
  320. package/Materials/materialPluginManager.js +2 -2
  321. package/Materials/materialPluginManager.js.map +1 -1
  322. package/Materials/meshDebugPluginMaterial.js.map +1 -1
  323. package/Materials/multiMaterial.js.map +1 -1
  324. package/Materials/pushMaterial.js.map +1 -1
  325. package/Materials/shaderMaterial.js.map +1 -1
  326. package/Materials/standardMaterial.js.map +1 -1
  327. package/Meshes/Compression/dracoCompression.js.map +1 -1
  328. package/Meshes/Compression/dracoCompressionWorker.d.ts +1 -1
  329. package/Meshes/Compression/dracoCompressionWorker.js +21 -10
  330. package/Meshes/Compression/dracoCompressionWorker.js.map +1 -1
  331. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
  332. package/Meshes/GreasedLine/greasedLineBaseMesh.js.map +1 -1
  333. package/Meshes/GreasedLine/greasedLineMesh.js.map +1 -1
  334. package/Meshes/GreasedLine/greasedLineRibbonMesh.js.map +1 -1
  335. package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js.map +1 -1
  336. package/Meshes/Node/Blocks/Instances/instantiateBlock.js.map +1 -1
  337. package/Meshes/Node/Blocks/Instances/instantiateLinearBlock.js.map +1 -1
  338. package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.js.map +1 -1
  339. package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.js.map +1 -1
  340. package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.js.map +1 -1
  341. package/Meshes/Node/Blocks/Instances/instantiateRadialBlock.js.map +1 -1
  342. package/Meshes/Node/Blocks/Matrices/alignBlock.js.map +1 -1
  343. package/Meshes/Node/Blocks/Matrices/rotationXBlock.js.map +1 -1
  344. package/Meshes/Node/Blocks/Matrices/rotationYBlock.js.map +1 -1
  345. package/Meshes/Node/Blocks/Matrices/rotationZBlock.js.map +1 -1
  346. package/Meshes/Node/Blocks/Matrices/scalingBlock.js.map +1 -1
  347. package/Meshes/Node/Blocks/Matrices/translationBlock.js.map +1 -1
  348. package/Meshes/Node/Blocks/Set/setColorsBlock.js.map +1 -1
  349. package/Meshes/Node/Blocks/Set/setMaterialIDBlock.js.map +1 -1
  350. package/Meshes/Node/Blocks/Set/setNormalsBlock.js.map +1 -1
  351. package/Meshes/Node/Blocks/Set/setPositionsBlock.js.map +1 -1
  352. package/Meshes/Node/Blocks/Set/setTangentsBlock.js.map +1 -1
  353. package/Meshes/Node/Blocks/Set/setUVsBlock.js.map +1 -1
  354. package/Meshes/Node/Blocks/Sources/boxBlock.js.map +1 -1
  355. package/Meshes/Node/Blocks/Sources/capsuleBlock.js.map +1 -1
  356. package/Meshes/Node/Blocks/Sources/cylinderBlock.js.map +1 -1
  357. package/Meshes/Node/Blocks/Sources/discBlock.js.map +1 -1
  358. package/Meshes/Node/Blocks/Sources/gridBlock.js.map +1 -1
  359. package/Meshes/Node/Blocks/Sources/icoSphereBlock.js.map +1 -1
  360. package/Meshes/Node/Blocks/Sources/meshBlock.js.map +1 -1
  361. package/Meshes/Node/Blocks/Sources/nullBlock.js.map +1 -1
  362. package/Meshes/Node/Blocks/Sources/planeBlock.js.map +1 -1
  363. package/Meshes/Node/Blocks/Sources/sphereBlock.js.map +1 -1
  364. package/Meshes/Node/Blocks/Sources/torusBlock.js.map +1 -1
  365. package/Meshes/Node/Blocks/Teleport/teleportInBlock.js.map +1 -1
  366. package/Meshes/Node/Blocks/Teleport/teleportOutBlock.js.map +1 -1
  367. package/Meshes/Node/Blocks/Textures/geometryTextureBlock.js.map +1 -1
  368. package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.js.map +1 -1
  369. package/Meshes/Node/Blocks/booleanGeometryBlock.js.map +1 -1
  370. package/Meshes/Node/Blocks/boundingBlock.js.map +1 -1
  371. package/Meshes/Node/Blocks/computeNormalsBlock.js.map +1 -1
  372. package/Meshes/Node/Blocks/conditionBlock.js.map +1 -1
  373. package/Meshes/Node/Blocks/debugBlock.js.map +1 -1
  374. package/Meshes/Node/Blocks/geometryArcTan2Block.js.map +1 -1
  375. package/Meshes/Node/Blocks/geometryClampBlock.js.map +1 -1
  376. package/Meshes/Node/Blocks/geometryCollectionBlock.js.map +1 -1
  377. package/Meshes/Node/Blocks/geometryCrossBlock.js.map +1 -1
  378. package/Meshes/Node/Blocks/geometryCurveBlock.js.map +1 -1
  379. package/Meshes/Node/Blocks/geometryDesaturateBlock.js.map +1 -1
  380. package/Meshes/Node/Blocks/geometryDistanceBlock.js.map +1 -1
  381. package/Meshes/Node/Blocks/geometryDotBlock.js.map +1 -1
  382. package/Meshes/Node/Blocks/geometryElbowBlock.js.map +1 -1
  383. package/Meshes/Node/Blocks/geometryInfoBlock.js.map +1 -1
  384. package/Meshes/Node/Blocks/geometryInputBlock.js.map +1 -1
  385. package/Meshes/Node/Blocks/geometryLengthBlock.js.map +1 -1
  386. package/Meshes/Node/Blocks/geometryLerpBlock.js.map +1 -1
  387. package/Meshes/Node/Blocks/geometryModBlock.js.map +1 -1
  388. package/Meshes/Node/Blocks/geometryNLerpBlock.js.map +1 -1
  389. package/Meshes/Node/Blocks/geometryOptimizeBlock.js.map +1 -1
  390. package/Meshes/Node/Blocks/geometryOutputBlock.js.map +1 -1
  391. package/Meshes/Node/Blocks/geometryPosterizeBlock.js.map +1 -1
  392. package/Meshes/Node/Blocks/geometryPowBlock.js.map +1 -1
  393. package/Meshes/Node/Blocks/geometryReplaceColorBlock.js.map +1 -1
  394. package/Meshes/Node/Blocks/geometryRotate2dBlock.js.map +1 -1
  395. package/Meshes/Node/Blocks/geometrySmoothStepBlock.js.map +1 -1
  396. package/Meshes/Node/Blocks/geometryStepBlock.js.map +1 -1
  397. package/Meshes/Node/Blocks/geometryTransformBlock.js.map +1 -1
  398. package/Meshes/Node/Blocks/geometryTrigonometryBlock.js.map +1 -1
  399. package/Meshes/Node/Blocks/intFloatConverterBlock.js.map +1 -1
  400. package/Meshes/Node/Blocks/mapRangeBlock.js.map +1 -1
  401. package/Meshes/Node/Blocks/mappingBlock.js.map +1 -1
  402. package/Meshes/Node/Blocks/mathBlock.js.map +1 -1
  403. package/Meshes/Node/Blocks/matrixComposeBlock.js.map +1 -1
  404. package/Meshes/Node/Blocks/mergeGeometryBlock.js.map +1 -1
  405. package/Meshes/Node/Blocks/noiseBlock.js.map +1 -1
  406. package/Meshes/Node/Blocks/normalizeVectorBlock.js.map +1 -1
  407. package/Meshes/Node/Blocks/randomBlock.js.map +1 -1
  408. package/Meshes/Node/Blocks/vectorConverterBlock.js.map +1 -1
  409. package/Meshes/Node/nodeGeometryBlock.js +1 -0
  410. package/Meshes/Node/nodeGeometryBlock.js.map +1 -1
  411. package/Meshes/WebGL/webGLDataBuffer.js.map +1 -1
  412. package/Meshes/WebGPU/webgpuDataBuffer.js.map +1 -1
  413. package/Meshes/abstractMesh.js.map +1 -1
  414. package/Meshes/geodesicMesh.js.map +1 -1
  415. package/Meshes/goldbergMesh.js.map +1 -1
  416. package/Meshes/groundMesh.js.map +1 -1
  417. package/Meshes/instancedMesh.js.map +1 -1
  418. package/Meshes/linesMesh.js.map +1 -1
  419. package/Meshes/mesh.js.map +1 -1
  420. package/Meshes/trailMesh.js.map +1 -1
  421. package/Meshes/transformNode.js.map +1 -1
  422. package/Misc/assetsManager.js.map +1 -1
  423. package/Misc/depthReducer.js.map +1 -1
  424. package/Misc/fileTools.js +4 -3
  425. package/Misc/fileTools.js.map +1 -1
  426. package/Misc/sceneOptimizer.js.map +1 -1
  427. package/Misc/smartArray.js.map +1 -1
  428. package/Misc/workerPool.js.map +1 -1
  429. package/Particles/EmitterTypes/cylinderParticleEmitter.js.map +1 -1
  430. package/Particles/EmitterTypes/sphereParticleEmitter.js.map +1 -1
  431. package/Particles/gpuParticleSystem.js.map +1 -1
  432. package/Particles/particleSystem.js.map +1 -1
  433. package/Particles/thinParticleSystem.js.map +1 -1
  434. package/Physics/physicsRaycastResult.js.map +1 -1
  435. package/Physics/proximityCastResult.js.map +1 -1
  436. package/Physics/v1/physicsJoint.js.map +1 -1
  437. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js.map +1 -1
  438. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js.map +1 -1
  439. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
  440. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js.map +1 -1
  441. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js.map +1 -1
  442. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js.map +1 -1
  443. package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.js.map +1 -1
  444. package/PostProcesses/anaglyphPostProcess.js.map +1 -1
  445. package/PostProcesses/blackAndWhitePostProcess.js.map +1 -1
  446. package/PostProcesses/bloomMergePostProcess.js.map +1 -1
  447. package/PostProcesses/blurPostProcess.js.map +1 -1
  448. package/PostProcesses/chromaticAberrationPostProcess.js.map +1 -1
  449. package/PostProcesses/circleOfConfusionPostProcess.js.map +1 -1
  450. package/PostProcesses/colorCorrectionPostProcess.js.map +1 -1
  451. package/PostProcesses/convolutionPostProcess.js.map +1 -1
  452. package/PostProcesses/depthOfFieldBlurPostProcess.js.map +1 -1
  453. package/PostProcesses/depthOfFieldMergePostProcess.js.map +1 -1
  454. package/PostProcesses/displayPassPostProcess.js.map +1 -1
  455. package/PostProcesses/extractHighlightsPostProcess.js.map +1 -1
  456. package/PostProcesses/filterPostProcess.js.map +1 -1
  457. package/PostProcesses/fxaaPostProcess.js.map +1 -1
  458. package/PostProcesses/grainPostProcess.js.map +1 -1
  459. package/PostProcesses/highlightsPostProcess.js.map +1 -1
  460. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  461. package/PostProcesses/motionBlurPostProcess.js.map +1 -1
  462. package/PostProcesses/passPostProcess.js.map +1 -1
  463. package/PostProcesses/refractionPostProcess.js.map +1 -1
  464. package/PostProcesses/screenSpaceCurvaturePostProcess.js.map +1 -1
  465. package/PostProcesses/screenSpaceReflectionPostProcess.js.map +1 -1
  466. package/PostProcesses/sharpenPostProcess.js.map +1 -1
  467. package/PostProcesses/stereoscopicInterlacePostProcess.js.map +1 -1
  468. package/PostProcesses/subSurfaceScatteringPostProcess.js.map +1 -1
  469. package/PostProcesses/tonemapPostProcess.js.map +1 -1
  470. package/PostProcesses/volumetricLightScatteringPostProcess.js.map +1 -1
  471. package/PostProcesses/vrDistortionCorrectionPostProcess.js.map +1 -1
  472. package/PostProcesses/vrMultiviewToSingleviewPostProcess.js.map +1 -1
  473. package/Rendering/GlobalIllumination/giRSMManager.js.map +1 -1
  474. package/Rendering/edgesRenderer.js.map +1 -1
  475. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js.map +1 -1
  476. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js.map +1 -1
  477. package/Rendering/reflectiveShadowMap.js.map +1 -1
  478. package/Sprites/sprite.js.map +1 -1
  479. package/Sprites/spritePackedManager.js.map +1 -1
  480. package/XR/features/Layers/WebXRCompositionLayer.js.map +1 -1
  481. package/XR/features/Layers/WebXRProjectionLayer.js.map +1 -1
  482. package/XR/features/WebXRAnchorSystem.js.map +1 -1
  483. package/XR/features/WebXRBackgroundRemover.js.map +1 -1
  484. package/XR/features/WebXRControllerMovement.js.map +1 -1
  485. package/XR/features/WebXRControllerPhysics.js.map +1 -1
  486. package/XR/features/WebXRControllerPointerSelection.js.map +1 -1
  487. package/XR/features/WebXRControllerTeleportation.js.map +1 -1
  488. package/XR/features/WebXRDOMOverlay.js.map +1 -1
  489. package/XR/features/WebXRDepthSensing.js.map +1 -1
  490. package/XR/features/WebXREyeTracking.js.map +1 -1
  491. package/XR/features/WebXRFeaturePointSystem.js.map +1 -1
  492. package/XR/features/WebXRHandTracking.js.map +1 -1
  493. package/XR/features/WebXRHitTest.js.map +1 -1
  494. package/XR/features/WebXRHitTestLegacy.js.map +1 -1
  495. package/XR/features/WebXRImageTracking.js.map +1 -1
  496. package/XR/features/WebXRLayers.js.map +1 -1
  497. package/XR/features/WebXRLightEstimation.js.map +1 -1
  498. package/XR/features/WebXRMeshDetector.js.map +1 -1
  499. package/XR/features/WebXRNearInteraction.js.map +1 -1
  500. package/XR/features/WebXRPlaneDetector.js.map +1 -1
  501. package/XR/features/WebXRRawCameraAccess.js.map +1 -1
  502. package/XR/features/WebXRSpaceWarp.js.map +1 -1
  503. package/XR/features/WebXRWalkingLocomotion.js.map +1 -1
  504. package/XR/motionController/webXRProfiledMotionController.js.map +1 -1
  505. package/XR/native/nativeXRRenderTarget.js.map +1 -1
  506. package/XR/webXRCamera.js.map +1 -1
  507. package/XR/webXRWebGLLayer.js.map +1 -1
  508. package/assets/Draco/draco_wasm_wrapper.js +115 -115
  509. package/package.json +1 -1
  510. package/scene.js.map +1 -1
@@ -10,6 +10,7 @@ import { ShaderDefineExpression } from "./Expressions/shaderDefineExpression.js"
10
10
  import { ShaderDefineArithmeticOperator } from "./Expressions/Operators/shaderDefineArithmeticOperator.js";
11
11
  import { _WarnImport } from "../../Misc/devTools.js";
12
12
  import { ShaderLanguage } from "../../Materials/shaderLanguage.js";
13
+ import { _getGlobalDefines } from "../abstractEngine.functions.js";
13
14
  const regexSE = /defined\s*?\((.+?)\)/g;
14
15
  const regexSERevert = /defined\s*?\[(.+?)\]/g;
15
16
  const regexShaderInclude = /#include\s?<(.+)>(\((.*)\))*(\[(.*)\])*/g;
@@ -17,375 +18,387 @@ const regexShaderDecl = /__decl__/;
17
18
  const regexLightX = /light\{X\}.(\w*)/g;
18
19
  const regexX = /\{X\}/g;
19
20
  const reusableMatches = [];
21
+ const _MoveCursorRegex = /(#ifdef)|(#else)|(#elif)|(#endif)|(#ifndef)|(#if)/;
22
+ export function Initialize(options) {
23
+ if (options.processor && options.processor.initializeShaders) {
24
+ options.processor.initializeShaders(options.processingContext);
25
+ }
26
+ }
20
27
  /** @internal */
21
- export class ShaderProcessor {
22
- static Initialize(options) {
23
- if (options.processor && options.processor.initializeShaders) {
24
- options.processor.initializeShaders(options.processingContext);
25
- }
28
+ export function Process(sourceCode, options, callback, engine) {
29
+ if (options.processor?.preProcessShaderCode) {
30
+ sourceCode = options.processor.preProcessShaderCode(sourceCode, options.isFragment);
26
31
  }
27
- static Process(sourceCode, options, callback, engine) {
28
- if (options.processor?.preProcessShaderCode) {
29
- sourceCode = options.processor.preProcessShaderCode(sourceCode, options.isFragment);
32
+ _ProcessIncludes(sourceCode, options, (codeWithIncludes) => {
33
+ if (options.processCodeAfterIncludes) {
34
+ codeWithIncludes = options.processCodeAfterIncludes(options.isFragment ? "fragment" : "vertex", codeWithIncludes);
30
35
  }
31
- this._ProcessIncludes(sourceCode, options, (codeWithIncludes) => {
32
- if (options.processCodeAfterIncludes) {
33
- codeWithIncludes = options.processCodeAfterIncludes(options.isFragment ? "fragment" : "vertex", codeWithIncludes);
34
- }
35
- const migratedCode = this._ProcessShaderConversion(codeWithIncludes, options, engine);
36
- callback(migratedCode, codeWithIncludes);
37
- });
36
+ const migratedCode = _ProcessShaderConversion(codeWithIncludes, options, engine);
37
+ callback(migratedCode, codeWithIncludes);
38
+ });
39
+ }
40
+ /** @internal */
41
+ export function PreProcess(sourceCode, options, callback, engine) {
42
+ if (options.processor?.preProcessShaderCode) {
43
+ sourceCode = options.processor.preProcessShaderCode(sourceCode, options.isFragment);
38
44
  }
39
- static PreProcess(sourceCode, options, callback, engine) {
40
- if (options.processor?.preProcessShaderCode) {
41
- sourceCode = options.processor.preProcessShaderCode(sourceCode, options.isFragment);
45
+ _ProcessIncludes(sourceCode, options, (codeWithIncludes) => {
46
+ if (options.processCodeAfterIncludes) {
47
+ codeWithIncludes = options.processCodeAfterIncludes(options.isFragment ? "fragment" : "vertex", codeWithIncludes);
42
48
  }
43
- this._ProcessIncludes(sourceCode, options, (codeWithIncludes) => {
44
- if (options.processCodeAfterIncludes) {
45
- codeWithIncludes = options.processCodeAfterIncludes(options.isFragment ? "fragment" : "vertex", codeWithIncludes);
46
- }
47
- const migratedCode = this._ApplyPreProcessing(codeWithIncludes, options, engine);
48
- callback(migratedCode, codeWithIncludes);
49
- });
49
+ const migratedCode = _ApplyPreProcessing(codeWithIncludes, options, engine);
50
+ callback(migratedCode, codeWithIncludes);
51
+ });
52
+ }
53
+ /** @internal */
54
+ export function Finalize(vertexCode, fragmentCode, options) {
55
+ if (!options.processor || !options.processor.finalizeShaders) {
56
+ return { vertexCode, fragmentCode };
50
57
  }
51
- static Finalize(vertexCode, fragmentCode, options) {
52
- if (!options.processor || !options.processor.finalizeShaders) {
53
- return { vertexCode, fragmentCode };
54
- }
55
- return options.processor.finalizeShaders(vertexCode, fragmentCode, options.processingContext);
58
+ return options.processor.finalizeShaders(vertexCode, fragmentCode, options.processingContext);
59
+ }
60
+ function _ProcessPrecision(source, options) {
61
+ if (options.processor?.noPrecision) {
62
+ return source;
56
63
  }
57
- static _ProcessPrecision(source, options) {
58
- if (options.processor?.noPrecision) {
59
- return source;
60
- }
61
- const shouldUseHighPrecisionShader = options.shouldUseHighPrecisionShader;
62
- if (source.indexOf("precision highp float") === -1) {
63
- if (!shouldUseHighPrecisionShader) {
64
- source = "precision mediump float;\n" + source;
65
- }
66
- else {
67
- source = "precision highp float;\n" + source;
68
- }
64
+ const shouldUseHighPrecisionShader = options.shouldUseHighPrecisionShader;
65
+ if (source.indexOf("precision highp float") === -1) {
66
+ if (!shouldUseHighPrecisionShader) {
67
+ source = "precision mediump float;\n" + source;
69
68
  }
70
69
  else {
71
- if (!shouldUseHighPrecisionShader) {
72
- // Moving highp to mediump
73
- source = source.replace("precision highp float", "precision mediump float");
74
- }
70
+ source = "precision highp float;\n" + source;
75
71
  }
76
- return source;
77
72
  }
78
- static _ExtractOperation(expression) {
79
- const regex = /defined\((.+)\)/;
80
- const match = regex.exec(expression);
81
- if (match && match.length) {
82
- return new ShaderDefineIsDefinedOperator(match[1].trim(), expression[0] === "!");
73
+ else {
74
+ if (!shouldUseHighPrecisionShader) {
75
+ // Moving highp to mediump
76
+ source = source.replace("precision highp float", "precision mediump float");
83
77
  }
84
- const operators = ["==", "!=", ">=", "<=", "<", ">"];
85
- let operator = "";
86
- let indexOperator = 0;
87
- for (operator of operators) {
88
- indexOperator = expression.indexOf(operator);
89
- if (indexOperator > -1) {
90
- break;
91
- }
92
- }
93
- if (indexOperator === -1) {
94
- return new ShaderDefineIsDefinedOperator(expression);
78
+ }
79
+ return source;
80
+ }
81
+ function _ExtractOperation(expression) {
82
+ const regex = /defined\((.+)\)/;
83
+ const match = regex.exec(expression);
84
+ if (match && match.length) {
85
+ return new ShaderDefineIsDefinedOperator(match[1].trim(), expression[0] === "!");
86
+ }
87
+ const operators = ["==", "!=", ">=", "<=", "<", ">"];
88
+ let operator = "";
89
+ let indexOperator = 0;
90
+ for (operator of operators) {
91
+ indexOperator = expression.indexOf(operator);
92
+ if (indexOperator > -1) {
93
+ break;
95
94
  }
96
- const define = expression.substring(0, indexOperator).trim();
97
- const value = expression.substring(indexOperator + operator.length).trim();
98
- return new ShaderDefineArithmeticOperator(define, operator, value);
99
95
  }
100
- static _BuildSubExpression(expression) {
101
- expression = expression.replace(regexSE, "defined[$1]");
102
- const postfix = ShaderDefineExpression.infixToPostfix(expression);
103
- const stack = [];
104
- for (const c of postfix) {
105
- if (c !== "||" && c !== "&&") {
106
- stack.push(c);
96
+ if (indexOperator === -1) {
97
+ return new ShaderDefineIsDefinedOperator(expression);
98
+ }
99
+ const define = expression.substring(0, indexOperator).trim();
100
+ const value = expression.substring(indexOperator + operator.length).trim();
101
+ return new ShaderDefineArithmeticOperator(define, operator, value);
102
+ }
103
+ function _BuildSubExpression(expression) {
104
+ expression = expression.replace(regexSE, "defined[$1]");
105
+ const postfix = ShaderDefineExpression.infixToPostfix(expression);
106
+ const stack = [];
107
+ for (const c of postfix) {
108
+ if (c !== "||" && c !== "&&") {
109
+ stack.push(c);
110
+ }
111
+ else if (stack.length >= 2) {
112
+ let v1 = stack[stack.length - 1], v2 = stack[stack.length - 2];
113
+ stack.length -= 2;
114
+ const operator = c == "&&" ? new ShaderDefineAndOperator() : new ShaderDefineOrOperator();
115
+ if (typeof v1 === "string") {
116
+ v1 = v1.replace(regexSERevert, "defined($1)");
107
117
  }
108
- else if (stack.length >= 2) {
109
- let v1 = stack[stack.length - 1], v2 = stack[stack.length - 2];
110
- stack.length -= 2;
111
- const operator = c == "&&" ? new ShaderDefineAndOperator() : new ShaderDefineOrOperator();
112
- if (typeof v1 === "string") {
113
- v1 = v1.replace(regexSERevert, "defined($1)");
114
- }
115
- if (typeof v2 === "string") {
116
- v2 = v2.replace(regexSERevert, "defined($1)");
117
- }
118
- operator.leftOperand = typeof v2 === "string" ? this._ExtractOperation(v2) : v2;
119
- operator.rightOperand = typeof v1 === "string" ? this._ExtractOperation(v1) : v1;
120
- stack.push(operator);
118
+ if (typeof v2 === "string") {
119
+ v2 = v2.replace(regexSERevert, "defined($1)");
121
120
  }
121
+ operator.leftOperand = typeof v2 === "string" ? _ExtractOperation(v2) : v2;
122
+ operator.rightOperand = typeof v1 === "string" ? _ExtractOperation(v1) : v1;
123
+ stack.push(operator);
122
124
  }
123
- let result = stack[stack.length - 1];
124
- if (typeof result === "string") {
125
- result = result.replace(regexSERevert, "defined($1)");
126
- }
127
- // note: stack.length !== 1 if there was an error in the parsing
128
- return typeof result === "string" ? this._ExtractOperation(result) : result;
129
125
  }
130
- static _BuildExpression(line, start) {
131
- const node = new ShaderCodeTestNode();
132
- const command = line.substring(0, start);
133
- let expression = line.substring(start);
134
- expression = expression.substring(0, (expression.indexOf("//") + 1 || expression.length + 1) - 1).trim();
135
- if (command === "#ifdef") {
136
- node.testExpression = new ShaderDefineIsDefinedOperator(expression);
137
- }
138
- else if (command === "#ifndef") {
139
- node.testExpression = new ShaderDefineIsDefinedOperator(expression, true);
140
- }
141
- else {
142
- node.testExpression = this._BuildSubExpression(expression);
143
- }
144
- return node;
126
+ let result = stack[stack.length - 1];
127
+ if (typeof result === "string") {
128
+ result = result.replace(regexSERevert, "defined($1)");
145
129
  }
146
- static _MoveCursorWithinIf(cursor, rootNode, ifNode) {
147
- let line = cursor.currentLine;
148
- while (this._MoveCursor(cursor, ifNode)) {
149
- line = cursor.currentLine;
150
- const first5 = line.substring(0, 5).toLowerCase();
151
- if (first5 === "#else") {
152
- const elseNode = new ShaderCodeNode();
153
- rootNode.children.push(elseNode);
154
- this._MoveCursor(cursor, elseNode);
155
- return;
156
- }
157
- else if (first5 === "#elif") {
158
- const elifNode = this._BuildExpression(line, 5);
159
- rootNode.children.push(elifNode);
160
- ifNode = elifNode;
161
- }
130
+ // note: stack.length !== 1 if there was an error in the parsing
131
+ return typeof result === "string" ? _ExtractOperation(result) : result;
132
+ }
133
+ function _BuildExpression(line, start) {
134
+ const node = new ShaderCodeTestNode();
135
+ const command = line.substring(0, start);
136
+ let expression = line.substring(start);
137
+ expression = expression.substring(0, (expression.indexOf("//") + 1 || expression.length + 1) - 1).trim();
138
+ if (command === "#ifdef") {
139
+ node.testExpression = new ShaderDefineIsDefinedOperator(expression);
140
+ }
141
+ else if (command === "#ifndef") {
142
+ node.testExpression = new ShaderDefineIsDefinedOperator(expression, true);
143
+ }
144
+ else {
145
+ node.testExpression = _BuildSubExpression(expression);
146
+ }
147
+ return node;
148
+ }
149
+ function _MoveCursorWithinIf(cursor, rootNode, ifNode) {
150
+ let line = cursor.currentLine;
151
+ while (_MoveCursor(cursor, ifNode)) {
152
+ line = cursor.currentLine;
153
+ const first5 = line.substring(0, 5).toLowerCase();
154
+ if (first5 === "#else") {
155
+ const elseNode = new ShaderCodeNode();
156
+ rootNode.children.push(elseNode);
157
+ _MoveCursor(cursor, elseNode);
158
+ return;
159
+ }
160
+ else if (first5 === "#elif") {
161
+ const elifNode = _BuildExpression(line, 5);
162
+ rootNode.children.push(elifNode);
163
+ ifNode = elifNode;
162
164
  }
163
165
  }
164
- static _MoveCursor(cursor, rootNode) {
165
- while (cursor.canRead) {
166
- cursor.lineIndex++;
167
- const line = cursor.currentLine;
168
- if (line.indexOf("#") >= 0) {
169
- const matches = ShaderProcessor._MoveCursorRegex.exec(line);
170
- if (matches && matches.length) {
171
- const keyword = matches[0];
172
- switch (keyword) {
173
- case "#ifdef": {
174
- const newRootNode = new ShaderCodeConditionNode();
175
- rootNode.children.push(newRootNode);
176
- const ifNode = this._BuildExpression(line, 6);
177
- newRootNode.children.push(ifNode);
178
- this._MoveCursorWithinIf(cursor, newRootNode, ifNode);
179
- break;
180
- }
181
- case "#else":
182
- case "#elif":
183
- return true;
184
- case "#endif":
185
- return false;
186
- case "#ifndef": {
187
- const newRootNode = new ShaderCodeConditionNode();
188
- rootNode.children.push(newRootNode);
189
- const ifNode = this._BuildExpression(line, 7);
190
- newRootNode.children.push(ifNode);
191
- this._MoveCursorWithinIf(cursor, newRootNode, ifNode);
192
- break;
193
- }
194
- case "#if": {
195
- const newRootNode = new ShaderCodeConditionNode();
196
- const ifNode = this._BuildExpression(line, 3);
197
- rootNode.children.push(newRootNode);
198
- newRootNode.children.push(ifNode);
199
- this._MoveCursorWithinIf(cursor, newRootNode, ifNode);
200
- break;
201
- }
166
+ }
167
+ function _MoveCursor(cursor, rootNode) {
168
+ while (cursor.canRead) {
169
+ cursor.lineIndex++;
170
+ const line = cursor.currentLine;
171
+ if (line.indexOf("#") >= 0) {
172
+ const matches = _MoveCursorRegex.exec(line);
173
+ if (matches && matches.length) {
174
+ const keyword = matches[0];
175
+ switch (keyword) {
176
+ case "#ifdef": {
177
+ const newRootNode = new ShaderCodeConditionNode();
178
+ rootNode.children.push(newRootNode);
179
+ const ifNode = _BuildExpression(line, 6);
180
+ newRootNode.children.push(ifNode);
181
+ _MoveCursorWithinIf(cursor, newRootNode, ifNode);
182
+ break;
183
+ }
184
+ case "#else":
185
+ case "#elif":
186
+ return true;
187
+ case "#endif":
188
+ return false;
189
+ case "#ifndef": {
190
+ const newRootNode = new ShaderCodeConditionNode();
191
+ rootNode.children.push(newRootNode);
192
+ const ifNode = _BuildExpression(line, 7);
193
+ newRootNode.children.push(ifNode);
194
+ _MoveCursorWithinIf(cursor, newRootNode, ifNode);
195
+ break;
196
+ }
197
+ case "#if": {
198
+ const newRootNode = new ShaderCodeConditionNode();
199
+ const ifNode = _BuildExpression(line, 3);
200
+ rootNode.children.push(newRootNode);
201
+ newRootNode.children.push(ifNode);
202
+ _MoveCursorWithinIf(cursor, newRootNode, ifNode);
203
+ break;
202
204
  }
203
- continue;
204
205
  }
206
+ continue;
205
207
  }
206
- const newNode = new ShaderCodeNode();
207
- newNode.line = line;
208
- rootNode.children.push(newNode);
209
- // Detect additional defines
210
- if (line[0] === "#" && line[1] === "d") {
211
- const split = line.replace(";", "").split(" ");
212
- newNode.additionalDefineKey = split[1];
213
- if (split.length === 3) {
214
- newNode.additionalDefineValue = split[2];
215
- }
208
+ }
209
+ const newNode = new ShaderCodeNode();
210
+ newNode.line = line;
211
+ rootNode.children.push(newNode);
212
+ // Detect additional defines
213
+ if (line[0] === "#" && line[1] === "d") {
214
+ const split = line.replace(";", "").split(" ");
215
+ newNode.additionalDefineKey = split[1];
216
+ if (split.length === 3) {
217
+ newNode.additionalDefineValue = split[2];
216
218
  }
217
219
  }
218
- return false;
219
220
  }
220
- static _EvaluatePreProcessors(sourceCode, preprocessors, options) {
221
- const rootNode = new ShaderCodeNode();
222
- const cursor = new ShaderCodeCursor();
223
- cursor.lineIndex = -1;
224
- cursor.lines = sourceCode.split("\n");
225
- // Decompose (We keep it in 2 steps so it is easier to maintain and perf hit is insignificant)
226
- this._MoveCursor(cursor, rootNode);
227
- // Recompose
228
- return rootNode.process(preprocessors, options);
221
+ return false;
222
+ }
223
+ function _EvaluatePreProcessors(sourceCode, preprocessors, options) {
224
+ const rootNode = new ShaderCodeNode();
225
+ const cursor = new ShaderCodeCursor();
226
+ cursor.lineIndex = -1;
227
+ cursor.lines = sourceCode.split("\n");
228
+ // Decompose (We keep it in 2 steps so it is easier to maintain and perf hit is insignificant)
229
+ _MoveCursor(cursor, rootNode);
230
+ // Recompose
231
+ return rootNode.process(preprocessors, options);
232
+ }
233
+ function _PreparePreProcessors(options, engine) {
234
+ const defines = options.defines;
235
+ const preprocessors = {};
236
+ for (const define of defines) {
237
+ const keyValue = define.replace("#define", "").replace(";", "").trim();
238
+ const split = keyValue.split(" ");
239
+ preprocessors[split[0]] = split.length > 1 ? split[1] : "";
229
240
  }
230
- static _PreparePreProcessors(options, engine) {
231
- const defines = options.defines;
232
- const preprocessors = {};
233
- for (const define of defines) {
234
- const keyValue = define.replace("#define", "").replace(";", "").trim();
235
- const split = keyValue.split(" ");
236
- preprocessors[split[0]] = split.length > 1 ? split[1] : "";
237
- }
238
- if (options.processor?.shaderLanguage === ShaderLanguage.GLSL) {
239
- preprocessors["GL_ES"] = "true";
240
- }
241
- preprocessors["__VERSION__"] = options.version;
242
- preprocessors[options.platformName] = "true";
243
- engine._getGlobalDefines(preprocessors);
244
- return preprocessors;
241
+ if (options.processor?.shaderLanguage === ShaderLanguage.GLSL) {
242
+ preprocessors["GL_ES"] = "true";
243
+ }
244
+ preprocessors["__VERSION__"] = options.version;
245
+ preprocessors[options.platformName] = "true";
246
+ _getGlobalDefines(preprocessors, engine?.isNDCHalfZRange, engine?.useReverseDepthBuffer, engine?.useExactSrgbConversions);
247
+ return preprocessors;
248
+ }
249
+ function _ProcessShaderConversion(sourceCode, options, engine) {
250
+ let preparedSourceCode = _ProcessPrecision(sourceCode, options);
251
+ if (!options.processor) {
252
+ return preparedSourceCode;
245
253
  }
246
- static _ProcessShaderConversion(sourceCode, options, engine) {
247
- let preparedSourceCode = this._ProcessPrecision(sourceCode, options);
248
- if (!options.processor) {
254
+ // Already converted
255
+ if (options.processor.shaderLanguage === ShaderLanguage.GLSL && preparedSourceCode.indexOf("#version 3") !== -1) {
256
+ preparedSourceCode = preparedSourceCode.replace("#version 300 es", "");
257
+ if (!options.processor.parseGLES3) {
249
258
  return preparedSourceCode;
250
259
  }
251
- // Already converted
252
- if (options.processor.shaderLanguage === ShaderLanguage.GLSL && preparedSourceCode.indexOf("#version 3") !== -1) {
253
- preparedSourceCode = preparedSourceCode.replace("#version 300 es", "");
254
- if (!options.processor.parseGLES3) {
255
- return preparedSourceCode;
260
+ }
261
+ const defines = options.defines;
262
+ const preprocessors = _PreparePreProcessors(options, engine);
263
+ // General pre processing
264
+ if (options.processor.preProcessor) {
265
+ preparedSourceCode = options.processor.preProcessor(preparedSourceCode, defines, options.isFragment, options.processingContext);
266
+ }
267
+ preparedSourceCode = _EvaluatePreProcessors(preparedSourceCode, preprocessors, options);
268
+ // Post processing
269
+ if (options.processor.postProcessor) {
270
+ preparedSourceCode = options.processor.postProcessor(preparedSourceCode, defines, options.isFragment, options.processingContext, engine
271
+ ? {
272
+ drawBuffersExtensionDisabled: engine.getCaps().drawBuffersExtension ? false : true,
256
273
  }
257
- }
258
- const defines = options.defines;
259
- const preprocessors = this._PreparePreProcessors(options, engine);
260
- // General pre processing
261
- if (options.processor.preProcessor) {
262
- preparedSourceCode = options.processor.preProcessor(preparedSourceCode, defines, options.isFragment, options.processingContext);
263
- }
264
- preparedSourceCode = this._EvaluatePreProcessors(preparedSourceCode, preprocessors, options);
265
- // Post processing
266
- if (options.processor.postProcessor) {
267
- preparedSourceCode = options.processor.postProcessor(preparedSourceCode, defines, options.isFragment, options.processingContext, engine);
268
- }
269
- // Inline functions tagged with #define inline
270
- if (engine._features.needShaderCodeInlining) {
271
- preparedSourceCode = engine.inlineShaderCode(preparedSourceCode);
272
- }
273
- return preparedSourceCode;
274
+ : {});
274
275
  }
275
- static _ApplyPreProcessing(sourceCode, options, engine) {
276
- let preparedSourceCode = sourceCode;
277
- const defines = options.defines;
278
- const preprocessors = this._PreparePreProcessors(options, engine);
279
- // General pre processing
280
- if (options.processor?.preProcessor) {
281
- preparedSourceCode = options.processor.preProcessor(preparedSourceCode, defines, options.isFragment, options.processingContext);
282
- }
283
- preparedSourceCode = this._EvaluatePreProcessors(preparedSourceCode, preprocessors, options);
284
- // Post processing
285
- if (options.processor?.postProcessor) {
286
- preparedSourceCode = options.processor.postProcessor(preparedSourceCode, defines, options.isFragment, options.processingContext, engine);
287
- }
288
- // Inline functions tagged with #define inline
289
- if (engine._features.needShaderCodeInlining) {
290
- preparedSourceCode = engine.inlineShaderCode(preparedSourceCode);
291
- }
292
- return preparedSourceCode;
276
+ // Inline functions tagged with #define inline
277
+ if (engine?._features.needShaderCodeInlining) {
278
+ preparedSourceCode = engine.inlineShaderCode(preparedSourceCode);
293
279
  }
294
- /** @internal */
295
- static _ProcessIncludes(sourceCode, options, callback) {
296
- reusableMatches.length = 0;
297
- let match;
298
- // stay back-compat to the old matchAll syntax
299
- while ((match = regexShaderInclude.exec(sourceCode)) !== null) {
300
- reusableMatches.push(match);
280
+ return preparedSourceCode;
281
+ }
282
+ function _ApplyPreProcessing(sourceCode, options, engine) {
283
+ let preparedSourceCode = sourceCode;
284
+ const defines = options.defines;
285
+ const preprocessors = _PreparePreProcessors(options, engine);
286
+ // General pre processing
287
+ if (options.processor?.preProcessor) {
288
+ preparedSourceCode = options.processor.preProcessor(preparedSourceCode, defines, options.isFragment, options.processingContext);
289
+ }
290
+ preparedSourceCode = _EvaluatePreProcessors(preparedSourceCode, preprocessors, options);
291
+ // Post processing
292
+ if (options.processor?.postProcessor) {
293
+ preparedSourceCode = options.processor.postProcessor(preparedSourceCode, defines, options.isFragment, options.processingContext, engine
294
+ ? {
295
+ drawBuffersExtensionDisabled: engine.getCaps().drawBuffersExtension ? false : true,
296
+ }
297
+ : {});
298
+ }
299
+ // Inline functions tagged with #define inline
300
+ if (engine._features.needShaderCodeInlining) {
301
+ preparedSourceCode = engine.inlineShaderCode(preparedSourceCode);
302
+ }
303
+ return preparedSourceCode;
304
+ }
305
+ /** @internal */
306
+ export function _ProcessIncludes(sourceCode, options, callback) {
307
+ reusableMatches.length = 0;
308
+ let match;
309
+ // stay back-compat to the old matchAll syntax
310
+ while ((match = regexShaderInclude.exec(sourceCode)) !== null) {
311
+ reusableMatches.push(match);
312
+ }
313
+ let returnValue = String(sourceCode);
314
+ let parts = [sourceCode];
315
+ let keepProcessing = false;
316
+ for (const match of reusableMatches) {
317
+ let includeFile = match[1];
318
+ // Uniform declaration
319
+ if (includeFile.indexOf("__decl__") !== -1) {
320
+ includeFile = includeFile.replace(regexShaderDecl, "");
321
+ if (options.supportsUniformBuffers) {
322
+ includeFile = includeFile.replace("Vertex", "Ubo").replace("Fragment", "Ubo");
323
+ }
324
+ includeFile = includeFile + "Declaration";
301
325
  }
302
- let returnValue = String(sourceCode);
303
- let parts = [sourceCode];
304
- let keepProcessing = false;
305
- for (const match of reusableMatches) {
306
- let includeFile = match[1];
307
- // Uniform declaration
308
- if (includeFile.indexOf("__decl__") !== -1) {
309
- includeFile = includeFile.replace(regexShaderDecl, "");
310
- if (options.supportsUniformBuffers) {
311
- includeFile = includeFile.replace("Vertex", "Ubo").replace("Fragment", "Ubo");
326
+ if (options.includesShadersStore[includeFile]) {
327
+ // Substitution
328
+ let includeContent = options.includesShadersStore[includeFile];
329
+ if (match[2]) {
330
+ const splits = match[3].split(",");
331
+ for (let index = 0; index < splits.length; index += 2) {
332
+ const source = new RegExp(splits[index], "g");
333
+ const dest = splits[index + 1];
334
+ includeContent = includeContent.replace(source, dest);
312
335
  }
313
- includeFile = includeFile + "Declaration";
314
336
  }
315
- if (options.includesShadersStore[includeFile]) {
316
- // Substitution
317
- let includeContent = options.includesShadersStore[includeFile];
318
- if (match[2]) {
319
- const splits = match[3].split(",");
320
- for (let index = 0; index < splits.length; index += 2) {
321
- const source = new RegExp(splits[index], "g");
322
- const dest = splits[index + 1];
323
- includeContent = includeContent.replace(source, dest);
337
+ if (match[4]) {
338
+ const indexString = match[5];
339
+ if (indexString.indexOf("..") !== -1) {
340
+ const indexSplits = indexString.split("..");
341
+ const minIndex = parseInt(indexSplits[0]);
342
+ let maxIndex = parseInt(indexSplits[1]);
343
+ let sourceIncludeContent = includeContent.slice(0);
344
+ includeContent = "";
345
+ if (isNaN(maxIndex)) {
346
+ maxIndex = options.indexParameters[indexSplits[1]];
324
347
  }
325
- }
326
- if (match[4]) {
327
- const indexString = match[5];
328
- if (indexString.indexOf("..") !== -1) {
329
- const indexSplits = indexString.split("..");
330
- const minIndex = parseInt(indexSplits[0]);
331
- let maxIndex = parseInt(indexSplits[1]);
332
- let sourceIncludeContent = includeContent.slice(0);
333
- includeContent = "";
334
- if (isNaN(maxIndex)) {
335
- maxIndex = options.indexParameters[indexSplits[1]];
336
- }
337
- for (let i = minIndex; i < maxIndex; i++) {
338
- if (!options.supportsUniformBuffers) {
339
- // Ubo replacement
340
- sourceIncludeContent = sourceIncludeContent.replace(regexLightX, (str, p1) => {
341
- return p1 + "{X}";
342
- });
343
- }
344
- includeContent += sourceIncludeContent.replace(regexX, i.toString()) + "\n";
345
- }
346
- }
347
- else {
348
+ for (let i = minIndex; i < maxIndex; i++) {
348
349
  if (!options.supportsUniformBuffers) {
349
350
  // Ubo replacement
350
- includeContent = includeContent.replace(regexLightX, (str, p1) => {
351
+ sourceIncludeContent = sourceIncludeContent.replace(regexLightX, (str, p1) => {
351
352
  return p1 + "{X}";
352
353
  });
353
354
  }
354
- includeContent = includeContent.replace(regexX, indexString);
355
+ includeContent += sourceIncludeContent.replace(regexX, i.toString()) + "\n";
355
356
  }
356
357
  }
357
- // Replace
358
- // Split all parts on match[0] and intersperse the parts with the include content
359
- const newParts = [];
360
- for (const part of parts) {
361
- const splitPart = part.split(match[0]);
362
- for (let i = 0; i < splitPart.length - 1; i++) {
363
- newParts.push(splitPart[i]);
364
- newParts.push(includeContent);
358
+ else {
359
+ if (!options.supportsUniformBuffers) {
360
+ // Ubo replacement
361
+ includeContent = includeContent.replace(regexLightX, (str, p1) => {
362
+ return p1 + "{X}";
363
+ });
365
364
  }
366
- newParts.push(splitPart[splitPart.length - 1]);
365
+ includeContent = includeContent.replace(regexX, indexString);
367
366
  }
368
- parts = newParts;
369
- keepProcessing = keepProcessing || includeContent.indexOf("#include<") >= 0 || includeContent.indexOf("#include <") >= 0;
370
367
  }
371
- else {
372
- const includeShaderUrl = options.shadersRepository + "ShadersInclude/" + includeFile + ".fx";
373
- ShaderProcessor._FileToolsLoadFile(includeShaderUrl, (fileContent) => {
374
- options.includesShadersStore[includeFile] = fileContent;
375
- this._ProcessIncludes(parts.join(""), options, callback);
376
- });
377
- return;
368
+ // Replace
369
+ // Split all parts on match[0] and intersperse the parts with the include content
370
+ const newParts = [];
371
+ for (const part of parts) {
372
+ const splitPart = part.split(match[0]);
373
+ for (let i = 0; i < splitPart.length - 1; i++) {
374
+ newParts.push(splitPart[i]);
375
+ newParts.push(includeContent);
376
+ }
377
+ newParts.push(splitPart[splitPart.length - 1]);
378
378
  }
379
- }
380
- reusableMatches.length = 0;
381
- returnValue = parts.join("");
382
- if (keepProcessing) {
383
- this._ProcessIncludes(returnValue.toString(), options, callback);
379
+ parts = newParts;
380
+ keepProcessing = keepProcessing || includeContent.indexOf("#include<") >= 0 || includeContent.indexOf("#include <") >= 0;
384
381
  }
385
382
  else {
386
- callback(returnValue);
383
+ const includeShaderUrl = options.shadersRepository + "ShadersInclude/" + includeFile + ".fx";
384
+ _functionContainer.loadFile(includeShaderUrl, (fileContent) => {
385
+ options.includesShadersStore[includeFile] = fileContent;
386
+ _ProcessIncludes(parts.join(""), options, callback);
387
+ });
388
+ return;
387
389
  }
388
390
  }
391
+ reusableMatches.length = 0;
392
+ returnValue = parts.join("");
393
+ if (keepProcessing) {
394
+ _ProcessIncludes(returnValue.toString(), options, callback);
395
+ }
396
+ else {
397
+ callback(returnValue);
398
+ }
399
+ }
400
+ /** @internal */
401
+ export const _functionContainer = {
389
402
  /**
390
403
  * Loads a file from a url
391
404
  * @param url url to load
@@ -397,9 +410,8 @@ export class ShaderProcessor {
397
410
  * @returns a file request object
398
411
  * @internal
399
412
  */
400
- static _FileToolsLoadFile(url, onSuccess, onProgress, offlineProvider, useArrayBuffer, onError) {
413
+ loadFile: (url, onSuccess, onProgress, offlineProvider, useArrayBuffer, onError) => {
401
414
  throw _WarnImport("FileTools");
402
- }
403
- }
404
- ShaderProcessor._MoveCursorRegex = /(#ifdef)|(#else)|(#elif)|(#endif)|(#ifndef)|(#if)/;
415
+ },
416
+ };
405
417
  //# sourceMappingURL=shaderProcessor.js.map