@babylonjs/core 5.0.0-alpha.60 → 5.0.0-alpha.64

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 (709) hide show
  1. package/Animations/animation.d.ts +20 -0
  2. package/Animations/animation.js +99 -10
  3. package/Animations/animation.js.map +1 -1
  4. package/Animations/animationGroup.d.ts +5 -1
  5. package/Animations/animationGroup.js +19 -1
  6. package/Animations/animationGroup.js.map +1 -1
  7. package/Animations/animationKey.d.ts +4 -0
  8. package/Animations/animationKey.js +4 -0
  9. package/Animations/animationKey.js.map +1 -1
  10. package/Audio/sound.js +15 -1
  11. package/Audio/sound.js.map +1 -1
  12. package/BakedVertexAnimation/bakedVertexAnimationManager.d.ts +130 -0
  13. package/BakedVertexAnimation/bakedVertexAnimationManager.js +134 -0
  14. package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -0
  15. package/BakedVertexAnimation/index.d.ts +2 -0
  16. package/BakedVertexAnimation/index.js +3 -0
  17. package/BakedVertexAnimation/index.js.map +1 -0
  18. package/BakedVertexAnimation/vertexAnimationBaker.d.ts +65 -0
  19. package/BakedVertexAnimation/vertexAnimationBaker.js +155 -0
  20. package/BakedVertexAnimation/vertexAnimationBaker.js.map +1 -0
  21. package/Behaviors/Cameras/autoRotationBehavior.d.ts +5 -0
  22. package/Behaviors/Cameras/autoRotationBehavior.js +7 -0
  23. package/Behaviors/Cameras/autoRotationBehavior.js.map +1 -1
  24. package/Behaviors/Cameras/framingBehavior.d.ts +5 -0
  25. package/Behaviors/Cameras/framingBehavior.js +8 -1
  26. package/Behaviors/Cameras/framingBehavior.js.map +1 -1
  27. package/Behaviors/Meshes/followBehavior.js +1 -1
  28. package/Behaviors/Meshes/followBehavior.js.map +1 -1
  29. package/Behaviors/Meshes/handConstraintBehavior.js +16 -12
  30. package/Behaviors/Meshes/handConstraintBehavior.js.map +1 -1
  31. package/Bones/bone.d.ts +3 -1
  32. package/Bones/bone.js +4 -1
  33. package/Bones/bone.js.map +1 -1
  34. package/Cameras/Inputs/BaseCameraPointersInput.js +4 -6
  35. package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
  36. package/Cameras/Inputs/flyCameraMouseInput.js +4 -4
  37. package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
  38. package/Cameras/Inputs/freeCameraMouseInput.js +4 -4
  39. package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
  40. package/Cameras/VR/vrDeviceOrientationArcRotateCamera.js +1 -1
  41. package/Cameras/VR/vrDeviceOrientationArcRotateCamera.js.map +1 -1
  42. package/Cameras/VR/vrExperienceHelper.d.ts +1 -1
  43. package/Cameras/VR/vrExperienceHelper.js +1 -1
  44. package/Cameras/VR/vrExperienceHelper.js.map +1 -1
  45. package/Cameras/camera.js +8 -2
  46. package/Cameras/camera.js.map +1 -1
  47. package/Cameras/targetCamera.js +1 -1
  48. package/Cameras/targetCamera.js.map +1 -1
  49. package/Culling/boundingBox.d.ts +4 -0
  50. package/Culling/boundingBox.js +8 -0
  51. package/Culling/boundingBox.js.map +1 -1
  52. package/Debug/physicsViewer.js +1 -1
  53. package/Debug/physicsViewer.js.map +1 -1
  54. package/Debug/skeletonViewer.js +2 -2
  55. package/Debug/skeletonViewer.js.map +1 -1
  56. package/DeviceInput/Implementations/{nativeDeviceInputWrapper.d.ts → nativeDeviceInputSystem.d.ts} +11 -22
  57. package/DeviceInput/Implementations/nativeDeviceInputSystem.js +80 -0
  58. package/DeviceInput/Implementations/nativeDeviceInputSystem.js.map +1 -0
  59. package/DeviceInput/Implementations/webDeviceInputSystem.d.ts +7 -20
  60. package/DeviceInput/Implementations/webDeviceInputSystem.js +80 -72
  61. package/DeviceInput/Implementations/webDeviceInputSystem.js.map +1 -1
  62. package/DeviceInput/InputDevices/deviceSourceManager.d.ts +3 -2
  63. package/DeviceInput/InputDevices/deviceSourceManager.js +5 -1
  64. package/DeviceInput/InputDevices/deviceSourceManager.js.map +1 -1
  65. package/DeviceInput/Interfaces/inputInterfaces.d.ts +6 -13
  66. package/DeviceInput/Interfaces/inputInterfaces.js.map +1 -1
  67. package/DeviceInput/deviceInputSystem.d.ts +49 -5
  68. package/DeviceInput/deviceInputSystem.js +66 -9
  69. package/DeviceInput/deviceInputSystem.js.map +1 -1
  70. package/DeviceInput/index.d.ts +1 -1
  71. package/DeviceInput/index.js +1 -1
  72. package/DeviceInput/index.js.map +1 -1
  73. package/Engines/Extensions/engine.dynamicTexture.d.ts +2 -1
  74. package/Engines/Extensions/engine.dynamicTexture.js +2 -1
  75. package/Engines/Extensions/engine.dynamicTexture.js.map +1 -1
  76. package/Engines/Extensions/engine.multiview.js +17 -6
  77. package/Engines/Extensions/engine.multiview.js.map +1 -1
  78. package/Engines/Extensions/engine.views.d.ts +1 -1
  79. package/Engines/Extensions/engine.views.js +1 -1
  80. package/Engines/Extensions/engine.views.js.map +1 -1
  81. package/Engines/Processors/iShaderProcessor.d.ts +1 -1
  82. package/Engines/Processors/iShaderProcessor.js.map +1 -1
  83. package/Engines/Processors/shaderProcessingOptions.d.ts +5 -0
  84. package/Engines/Processors/shaderProcessingOptions.js.map +1 -1
  85. package/Engines/Processors/shaderProcessor.js +8 -2
  86. package/Engines/Processors/shaderProcessor.js.map +1 -1
  87. package/Engines/WebGPU/Extensions/engine.dynamicTexture.js +3 -11
  88. package/Engines/WebGPU/Extensions/engine.dynamicTexture.js.map +1 -1
  89. package/Engines/WebGPU/Extensions/engine.multiRender.js +0 -4
  90. package/Engines/WebGPU/Extensions/engine.multiRender.js.map +1 -1
  91. package/Engines/WebGPU/Extensions/engine.query.js +19 -3
  92. package/Engines/WebGPU/Extensions/engine.query.js.map +1 -1
  93. package/Engines/WebGPU/Extensions/engine.renderTarget.js +0 -4
  94. package/Engines/WebGPU/Extensions/engine.renderTarget.js.map +1 -1
  95. package/Engines/WebGPU/webgpuBufferManager.d.ts +1 -1
  96. package/Engines/WebGPU/webgpuBufferManager.js.map +1 -1
  97. package/Engines/WebGPU/webgpuBundleList.d.ts +13 -0
  98. package/Engines/WebGPU/webgpuBundleList.js +27 -0
  99. package/Engines/WebGPU/webgpuBundleList.js.map +1 -1
  100. package/Engines/WebGPU/webgpuCacheBindGroups.js +3 -3
  101. package/Engines/WebGPU/webgpuCacheBindGroups.js.map +1 -1
  102. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +42 -61
  103. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  104. package/Engines/WebGPU/webgpuCacheSampler.js +6 -4
  105. package/Engines/WebGPU/webgpuCacheSampler.js.map +1 -1
  106. package/Engines/WebGPU/webgpuClearQuad.js +17 -8
  107. package/Engines/WebGPU/webgpuClearQuad.js.map +1 -1
  108. package/Engines/WebGPU/webgpuComputeContext.js +2 -2
  109. package/Engines/WebGPU/webgpuComputeContext.js.map +1 -1
  110. package/Engines/WebGPU/webgpuConstants.d.ts +57 -13
  111. package/Engines/WebGPU/webgpuConstants.js +62 -13
  112. package/Engines/WebGPU/webgpuConstants.js.map +1 -1
  113. package/Engines/WebGPU/webgpuHardwareTexture.d.ts +27 -3
  114. package/Engines/WebGPU/webgpuHardwareTexture.js +12 -2
  115. package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
  116. package/Engines/WebGPU/webgpuShaderProcessingContext.js +2 -0
  117. package/Engines/WebGPU/webgpuShaderProcessingContext.js.map +1 -1
  118. package/Engines/WebGPU/webgpuShaderProcessor.d.ts +2 -0
  119. package/Engines/WebGPU/webgpuShaderProcessor.js +23 -0
  120. package/Engines/WebGPU/webgpuShaderProcessor.js.map +1 -1
  121. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.d.ts +1 -0
  122. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js +17 -1
  123. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js.map +1 -1
  124. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.d.ts +7 -2
  125. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +16 -29
  126. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
  127. package/Engines/WebGPU/webgpuSnapshotRendering.d.ts +27 -0
  128. package/Engines/WebGPU/webgpuSnapshotRendering.js +107 -0
  129. package/Engines/WebGPU/webgpuSnapshotRendering.js.map +1 -0
  130. package/Engines/WebGPU/webgpuTextureHelper.d.ts +4 -4
  131. package/Engines/WebGPU/webgpuTextureHelper.js +277 -83
  132. package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
  133. package/Engines/constants.d.ts +2 -0
  134. package/Engines/constants.js +2 -0
  135. package/Engines/constants.js.map +1 -1
  136. package/Engines/engine.d.ts +157 -46
  137. package/Engines/engine.js +38 -1
  138. package/Engines/engine.js.map +1 -1
  139. package/Engines/engineFeatures.d.ts +2 -0
  140. package/Engines/engineFeatures.js.map +1 -1
  141. package/Engines/index.d.ts +1 -0
  142. package/Engines/index.js +1 -0
  143. package/Engines/index.js.map +1 -1
  144. package/Engines/nativeEngine.js +34 -17
  145. package/Engines/nativeEngine.js.map +1 -1
  146. package/Engines/nullEngine.js +1 -0
  147. package/Engines/nullEngine.js.map +1 -1
  148. package/Engines/renderTargetWrapper.d.ts +1 -1
  149. package/Engines/renderTargetWrapper.js +1 -1
  150. package/Engines/renderTargetWrapper.js.map +1 -1
  151. package/Engines/thinEngine.d.ts +0 -11
  152. package/Engines/thinEngine.js +12 -40
  153. package/Engines/thinEngine.js.map +1 -1
  154. package/Engines/webgpuEngine.d.ts +11 -19
  155. package/Engines/webgpuEngine.js +46 -126
  156. package/Engines/webgpuEngine.js.map +1 -1
  157. package/Gizmos/positionGizmo.js +1 -1
  158. package/Gizmos/positionGizmo.js.map +1 -1
  159. package/Helpers/sceneHelpers.d.ts +3 -3
  160. package/Helpers/sceneHelpers.js +1 -2
  161. package/Helpers/sceneHelpers.js.map +1 -1
  162. package/Inputs/scene.inputManager.js +18 -15
  163. package/Inputs/scene.inputManager.js.map +1 -1
  164. package/Layers/effectLayer.d.ts +13 -1
  165. package/Layers/effectLayer.js +115 -65
  166. package/Layers/effectLayer.js.map +1 -1
  167. package/Layers/glowLayer.d.ts +8 -0
  168. package/Layers/glowLayer.js +7 -3
  169. package/Layers/glowLayer.js.map +1 -1
  170. package/Layers/highlightLayer.d.ts +2 -1
  171. package/Layers/highlightLayer.js +8 -3
  172. package/Layers/highlightLayer.js.map +1 -1
  173. package/Lights/Shadows/cascadedShadowGenerator.d.ts +1 -0
  174. package/Lights/Shadows/cascadedShadowGenerator.js +14 -0
  175. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  176. package/Lights/Shadows/shadowGenerator.d.ts +4 -0
  177. package/Lights/Shadows/shadowGenerator.js +31 -3
  178. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  179. package/Lights/light.js +10 -1
  180. package/Lights/light.js.map +1 -1
  181. package/Lights/pointLight.js +1 -1
  182. package/Lights/pointLight.js.map +1 -1
  183. package/Lights/spotLight.js +1 -1
  184. package/Lights/spotLight.js.map +1 -1
  185. package/Loading/Plugins/babylonFileLoader.js +20 -4
  186. package/Loading/Plugins/babylonFileLoader.js.map +1 -1
  187. package/Materials/Background/backgroundMaterial.js +1 -0
  188. package/Materials/Background/backgroundMaterial.js.map +1 -1
  189. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.d.ts +10 -0
  190. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +31 -0
  191. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
  192. package/Materials/Node/Blocks/Fragment/index.d.ts +2 -0
  193. package/Materials/Node/Blocks/Fragment/index.js +2 -0
  194. package/Materials/Node/Blocks/Fragment/index.js.map +1 -1
  195. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.d.ts +41 -0
  196. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js +128 -0
  197. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js.map +1 -0
  198. package/Materials/Node/Blocks/Fragment/twirlBlock.d.ts +49 -0
  199. package/Materials/Node/Blocks/Fragment/twirlBlock.js +145 -0
  200. package/Materials/Node/Blocks/Fragment/twirlBlock.js.map +1 -0
  201. package/Materials/Node/Blocks/Input/inputBlock.js +1 -1
  202. package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
  203. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.d.ts +1 -0
  204. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js +15 -0
  205. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js.map +1 -1
  206. package/Materials/Node/Blocks/customBlock.d.ts +31 -0
  207. package/Materials/Node/Blocks/customBlock.js +144 -0
  208. package/Materials/Node/Blocks/customBlock.js.map +1 -0
  209. package/Materials/Node/Blocks/index.d.ts +2 -0
  210. package/Materials/Node/Blocks/index.js +2 -0
  211. package/Materials/Node/Blocks/index.js.map +1 -1
  212. package/Materials/Node/Blocks/vectorMergerBlock.js +4 -4
  213. package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
  214. package/Materials/Node/Blocks/voronoiNoiseBlock.d.ts +39 -0
  215. package/Materials/Node/Blocks/voronoiNoiseBlock.js +107 -0
  216. package/Materials/Node/Blocks/voronoiNoiseBlock.js.map +1 -0
  217. package/Materials/Node/Blocks/worleyNoise3DBlock.d.ts +8 -0
  218. package/Materials/Node/Blocks/worleyNoise3DBlock.js +34 -2
  219. package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
  220. package/Materials/Node/nodeMaterial.d.ts +1 -0
  221. package/Materials/Node/nodeMaterial.js +10 -0
  222. package/Materials/Node/nodeMaterial.js.map +1 -1
  223. package/Materials/Node/nodeMaterialBlock.js +1 -1
  224. package/Materials/Node/nodeMaterialBlock.js.map +1 -1
  225. package/Materials/Node/nodeMaterialBuildStateSharedData.d.ts +5 -0
  226. package/Materials/Node/nodeMaterialBuildStateSharedData.js.map +1 -1
  227. package/Materials/PBR/index.d.ts +4 -0
  228. package/Materials/PBR/index.js +4 -0
  229. package/Materials/PBR/index.js.map +1 -1
  230. package/Materials/PBR/pbrAnisotropicConfiguration.d.ts +28 -96
  231. package/Materials/PBR/pbrAnisotropicConfiguration.js +50 -111
  232. package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
  233. package/Materials/PBR/pbrBRDFConfiguration.d.ts +11 -37
  234. package/Materials/PBR/pbrBRDFConfiguration.js +39 -52
  235. package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
  236. package/Materials/PBR/pbrBaseMaterial.d.ts +17 -74
  237. package/Materials/PBR/pbrBaseMaterial.js +75 -183
  238. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  239. package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
  240. package/Materials/PBR/pbrClearCoatConfiguration.d.ts +23 -98
  241. package/Materials/PBR/pbrClearCoatConfiguration.js +91 -143
  242. package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
  243. package/Materials/PBR/pbrSheenConfiguration.d.ts +25 -93
  244. package/Materials/PBR/pbrSheenConfiguration.js +71 -126
  245. package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
  246. package/Materials/PBR/pbrSubSurfaceConfiguration.d.ts +29 -104
  247. package/Materials/PBR/pbrSubSurfaceConfiguration.js +158 -204
  248. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  249. package/Materials/Textures/dynamicTexture.d.ts +3 -2
  250. package/Materials/Textures/dynamicTexture.js +5 -3
  251. package/Materials/Textures/dynamicTexture.js.map +1 -1
  252. package/Materials/Textures/hdrCubeTexture.d.ts +9 -0
  253. package/Materials/Textures/hdrCubeTexture.js +21 -5
  254. package/Materials/Textures/hdrCubeTexture.js.map +1 -1
  255. package/Materials/Textures/mirrorTexture.d.ts +2 -0
  256. package/Materials/Textures/mirrorTexture.js +13 -0
  257. package/Materials/Textures/mirrorTexture.js.map +1 -1
  258. package/Materials/Textures/renderTargetTexture.js +1 -1
  259. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  260. package/Materials/Textures/thinRenderTargetTexture.js +1 -1
  261. package/Materials/Textures/thinRenderTargetTexture.js.map +1 -1
  262. package/Materials/Textures/thinTexture.d.ts +1 -2
  263. package/Materials/Textures/thinTexture.js +2 -4
  264. package/Materials/Textures/thinTexture.js.map +1 -1
  265. package/Materials/Textures/videoTexture.d.ts +1 -1
  266. package/Materials/Textures/videoTexture.js +1 -1
  267. package/Materials/Textures/videoTexture.js.map +1 -1
  268. package/Materials/effect.d.ts +6 -1
  269. package/Materials/effect.js +4 -1
  270. package/Materials/effect.js.map +1 -1
  271. package/Materials/fresnelParameters.d.ts +1 -1
  272. package/Materials/fresnelParameters.js +1 -1
  273. package/Materials/fresnelParameters.js.map +1 -1
  274. package/Materials/imageProcessingConfiguration.d.ts +16 -1
  275. package/Materials/imageProcessingConfiguration.js +31 -0
  276. package/Materials/imageProcessingConfiguration.js.map +1 -1
  277. package/Materials/index.d.ts +4 -0
  278. package/Materials/index.js +4 -0
  279. package/Materials/index.js.map +1 -1
  280. package/Materials/material.d.ts +43 -2
  281. package/Materials/material.detailMapConfiguration.d.ts +29 -87
  282. package/Materials/material.detailMapConfiguration.js +50 -106
  283. package/Materials/material.detailMapConfiguration.js.map +1 -1
  284. package/Materials/material.js +99 -8
  285. package/Materials/material.js.map +1 -1
  286. package/Materials/materialDefines.d.ts +16 -0
  287. package/Materials/materialDefines.js +17 -5
  288. package/Materials/materialDefines.js.map +1 -1
  289. package/Materials/materialHelper.d.ts +15 -1
  290. package/Materials/materialHelper.js +40 -3
  291. package/Materials/materialHelper.js.map +1 -1
  292. package/Materials/materialPluginBase.d.ts +182 -0
  293. package/Materials/materialPluginBase.js +209 -0
  294. package/Materials/materialPluginBase.js.map +1 -0
  295. package/Materials/materialPluginEvent.d.ts +98 -0
  296. package/Materials/materialPluginEvent.js +21 -0
  297. package/Materials/materialPluginEvent.js.map +1 -0
  298. package/Materials/materialPluginFactoryExport.d.ts +40 -0
  299. package/Materials/materialPluginFactoryExport.js +75 -0
  300. package/Materials/materialPluginFactoryExport.js.map +1 -0
  301. package/Materials/materialPluginManager.d.ts +90 -0
  302. package/Materials/materialPluginManager.js +323 -0
  303. package/Materials/materialPluginManager.js.map +1 -0
  304. package/Materials/pushMaterial.d.ts +2 -2
  305. package/Materials/pushMaterial.js +7 -3
  306. package/Materials/pushMaterial.js.map +1 -1
  307. package/Materials/shaderMaterial.d.ts +7 -6
  308. package/Materials/shaderMaterial.js +71 -29
  309. package/Materials/shaderMaterial.js.map +1 -1
  310. package/Materials/shadowDepthWrapper.js +7 -7
  311. package/Materials/shadowDepthWrapper.js.map +1 -1
  312. package/Materials/standardMaterial.d.ts +15 -10
  313. package/Materials/standardMaterial.js +53 -49
  314. package/Materials/standardMaterial.js.map +1 -1
  315. package/Materials/uniformBuffer.js +1 -2
  316. package/Materials/uniformBuffer.js.map +1 -1
  317. package/Maths/math.color.d.ts +20 -0
  318. package/Maths/math.color.js +45 -2
  319. package/Maths/math.color.js.map +1 -1
  320. package/Maths/math.vector.d.ts +14 -9
  321. package/Maths/math.vector.js +36 -17
  322. package/Maths/math.vector.js.map +1 -1
  323. package/Meshes/Builders/boxBuilder.d.ts +1 -1
  324. package/Meshes/Builders/boxBuilder.js +1 -0
  325. package/Meshes/Builders/boxBuilder.js.map +1 -1
  326. package/Meshes/Builders/capsuleBuilder.d.ts +1 -1
  327. package/Meshes/Builders/capsuleBuilder.js +1 -1
  328. package/Meshes/Builders/capsuleBuilder.js.map +1 -1
  329. package/Meshes/Builders/cylinderBuilder.d.ts +17 -17
  330. package/Meshes/Builders/cylinderBuilder.js +1 -0
  331. package/Meshes/Builders/cylinderBuilder.js.map +1 -1
  332. package/Meshes/Builders/discBuilder.d.ts +1 -1
  333. package/Meshes/Builders/discBuilder.js +1 -0
  334. package/Meshes/Builders/discBuilder.js.map +1 -1
  335. package/Meshes/Builders/groundBuilder.d.ts +8 -8
  336. package/Meshes/Builders/groundBuilder.js +2 -0
  337. package/Meshes/Builders/groundBuilder.js.map +1 -1
  338. package/Meshes/Builders/hemisphereBuilder.d.ts +4 -4
  339. package/Meshes/Builders/hemisphereBuilder.js +1 -0
  340. package/Meshes/Builders/hemisphereBuilder.js.map +1 -1
  341. package/Meshes/Builders/icoSphereBuilder.d.ts +1 -1
  342. package/Meshes/Builders/icoSphereBuilder.js +1 -0
  343. package/Meshes/Builders/icoSphereBuilder.js.map +1 -1
  344. package/Meshes/Builders/planeBuilder.d.ts +1 -1
  345. package/Meshes/Builders/planeBuilder.js +1 -0
  346. package/Meshes/Builders/planeBuilder.js.map +1 -1
  347. package/Meshes/Builders/polyhedronBuilder.d.ts +1 -1
  348. package/Meshes/Builders/polyhedronBuilder.js +1 -0
  349. package/Meshes/Builders/polyhedronBuilder.js.map +1 -1
  350. package/Meshes/Builders/sphereBuilder.d.ts +1 -1
  351. package/Meshes/Builders/sphereBuilder.js +1 -0
  352. package/Meshes/Builders/sphereBuilder.js.map +1 -1
  353. package/Meshes/Builders/torusBuilder.d.ts +8 -8
  354. package/Meshes/Builders/torusBuilder.js +1 -0
  355. package/Meshes/Builders/torusBuilder.js.map +1 -1
  356. package/Meshes/Builders/torusKnotBuilder.d.ts +11 -11
  357. package/Meshes/Builders/torusKnotBuilder.js +1 -0
  358. package/Meshes/Builders/torusKnotBuilder.js.map +1 -1
  359. package/Meshes/abstractMesh.d.ts +23 -3
  360. package/Meshes/abstractMesh.js +79 -29
  361. package/Meshes/abstractMesh.js.map +1 -1
  362. package/Meshes/geometry.d.ts +3 -0
  363. package/Meshes/geometry.js +15 -7
  364. package/Meshes/geometry.js.map +1 -1
  365. package/Meshes/linesMesh.d.ts +1 -3
  366. package/Meshes/linesMesh.js +5 -36
  367. package/Meshes/linesMesh.js.map +1 -1
  368. package/Meshes/mesh.d.ts +12 -0
  369. package/Meshes/mesh.js +186 -117
  370. package/Meshes/mesh.js.map +1 -1
  371. package/Meshes/mesh.lts.d.ts +8 -8
  372. package/Meshes/mesh.lts.js.map +1 -1
  373. package/Meshes/mesh.vertexData.d.ts +6 -1
  374. package/Meshes/mesh.vertexData.js +295 -114
  375. package/Meshes/mesh.vertexData.js.map +1 -1
  376. package/Meshes/thinInstanceMesh.js +6 -5
  377. package/Meshes/thinInstanceMesh.js.map +1 -1
  378. package/Meshes/transformNode.d.ts +8 -8
  379. package/Meshes/transformNode.js +41 -26
  380. package/Meshes/transformNode.js.map +1 -1
  381. package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.d.ts +2 -1
  382. package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.js +38 -33
  383. package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.js.map +1 -1
  384. package/Misc/PerformanceViewer/performanceViewerCollector.d.ts +29 -4
  385. package/Misc/PerformanceViewer/performanceViewerCollector.js +36 -12
  386. package/Misc/PerformanceViewer/performanceViewerCollector.js.map +1 -1
  387. package/Misc/assetsManager.d.ts +4 -4
  388. package/Misc/assetsManager.js +2 -2
  389. package/Misc/assetsManager.js.map +1 -1
  390. package/Misc/basis.d.ts +2 -2
  391. package/Misc/basis.js +20 -4
  392. package/Misc/basis.js.map +1 -1
  393. package/Misc/coroutine.d.ts +41 -0
  394. package/Misc/coroutine.js +136 -0
  395. package/Misc/coroutine.js.map +1 -0
  396. package/Misc/index.d.ts +1 -0
  397. package/Misc/index.js +1 -0
  398. package/Misc/index.js.map +1 -1
  399. package/Misc/interfaces/iPerfViewer.d.ts +4 -0
  400. package/Misc/interfaces/iPerfViewer.js.map +1 -1
  401. package/Misc/observableCoroutine.d.ts +9 -10
  402. package/Misc/observableCoroutine.js +34 -39
  403. package/Misc/observableCoroutine.js.map +1 -1
  404. package/Misc/sceneSerializer.js +1 -3
  405. package/Misc/sceneSerializer.js.map +1 -1
  406. package/Misc/tools.d.ts +2 -4
  407. package/Misc/tools.js +6 -10
  408. package/Misc/tools.js.map +1 -1
  409. package/Particles/particleSystem.js +22 -16
  410. package/Particles/particleSystem.js.map +1 -1
  411. package/Particles/solidParticleSystem.js +29 -5
  412. package/Particles/solidParticleSystem.js.map +1 -1
  413. package/Particles/subEmitter.js +1 -0
  414. package/Particles/subEmitter.js.map +1 -1
  415. package/Physics/Plugins/ammoJSPlugin.js +10 -8
  416. package/Physics/Plugins/ammoJSPlugin.js.map +1 -1
  417. package/PostProcesses/imageProcessingPostProcess.js +1 -0
  418. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  419. package/Probes/reflectionProbe.d.ts +2 -0
  420. package/Probes/reflectionProbe.js +21 -0
  421. package/Probes/reflectionProbe.js.map +1 -1
  422. package/Rendering/boundingBoxRenderer.d.ts +3 -0
  423. package/Rendering/boundingBoxRenderer.js +49 -14
  424. package/Rendering/boundingBoxRenderer.js.map +1 -1
  425. package/Rendering/depthPeelingRenderer.d.ts +4 -1
  426. package/Rendering/depthPeelingRenderer.js +34 -9
  427. package/Rendering/depthPeelingRenderer.js.map +1 -1
  428. package/Rendering/depthRenderer.d.ts +1 -1
  429. package/Rendering/depthRenderer.js +2 -2
  430. package/Rendering/depthRenderer.js.map +1 -1
  431. package/Rendering/edgesRenderer.js +3 -1
  432. package/Rendering/edgesRenderer.js.map +1 -1
  433. package/Rendering/geometryBufferRenderer.d.ts +0 -2
  434. package/Rendering/geometryBufferRenderer.js +13 -10
  435. package/Rendering/geometryBufferRenderer.js.map +1 -1
  436. package/Rendering/prePassRenderer.js +6 -6
  437. package/Rendering/prePassRenderer.js.map +1 -1
  438. package/Rendering/renderingGroup.js +5 -1
  439. package/Rendering/renderingGroup.js.map +1 -1
  440. package/Shaders/ShadersInclude/bakedVertexAnimation.d.ts +5 -0
  441. package/Shaders/ShadersInclude/bakedVertexAnimation.js +7 -0
  442. package/Shaders/ShadersInclude/bakedVertexAnimation.js.map +1 -0
  443. package/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.d.ts +5 -0
  444. package/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.js +7 -0
  445. package/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.js.map +1 -0
  446. package/Shaders/ShadersInclude/bonesDeclaration.js +1 -1
  447. package/Shaders/ShadersInclude/bonesDeclaration.js.map +1 -1
  448. package/Shaders/ShadersInclude/bonesVertex.js +1 -1
  449. package/Shaders/ShadersInclude/bonesVertex.js.map +1 -1
  450. package/Shaders/ShadersInclude/defaultFragmentDeclaration.js +1 -1
  451. package/Shaders/ShadersInclude/defaultFragmentDeclaration.js.map +1 -1
  452. package/Shaders/ShadersInclude/defaultUboDeclaration.js +1 -1
  453. package/Shaders/ShadersInclude/defaultUboDeclaration.js.map +1 -1
  454. package/Shaders/ShadersInclude/defaultVertexDeclaration.js +1 -1
  455. package/Shaders/ShadersInclude/defaultVertexDeclaration.js.map +1 -1
  456. package/Shaders/ShadersInclude/pbrBlockImageProcessing.js +1 -1
  457. package/Shaders/ShadersInclude/pbrBlockImageProcessing.js.map +1 -1
  458. package/Shaders/ShadersInclude/pbrFragmentDeclaration.js +1 -1
  459. package/Shaders/ShadersInclude/pbrFragmentDeclaration.js.map +1 -1
  460. package/Shaders/ShadersInclude/pbrUboDeclaration.js +1 -1
  461. package/Shaders/ShadersInclude/pbrUboDeclaration.js.map +1 -1
  462. package/Shaders/ShadersInclude/pbrVertexDeclaration.js +1 -1
  463. package/Shaders/ShadersInclude/pbrVertexDeclaration.js.map +1 -1
  464. package/Shaders/anaglyph.fragment.js +1 -1
  465. package/Shaders/anaglyph.fragment.js.map +1 -1
  466. package/Shaders/background.fragment.js +1 -1
  467. package/Shaders/background.fragment.js.map +1 -1
  468. package/Shaders/background.vertex.d.ts +2 -0
  469. package/Shaders/background.vertex.js +3 -1
  470. package/Shaders/background.vertex.js.map +1 -1
  471. package/Shaders/blackAndWhite.fragment.js +1 -1
  472. package/Shaders/blackAndWhite.fragment.js.map +1 -1
  473. package/Shaders/bloomMerge.fragment.js +1 -1
  474. package/Shaders/bloomMerge.fragment.js.map +1 -1
  475. package/Shaders/blur.fragment.js +1 -1
  476. package/Shaders/blur.fragment.js.map +1 -1
  477. package/Shaders/boundingBoxRenderer.fragment.js +1 -1
  478. package/Shaders/boundingBoxRenderer.fragment.js.map +1 -1
  479. package/Shaders/boundingBoxRenderer.vertex.js +1 -1
  480. package/Shaders/boundingBoxRenderer.vertex.js.map +1 -1
  481. package/Shaders/chromaticAberration.fragment.js +1 -1
  482. package/Shaders/chromaticAberration.fragment.js.map +1 -1
  483. package/Shaders/circleOfConfusion.fragment.js +1 -1
  484. package/Shaders/circleOfConfusion.fragment.js.map +1 -1
  485. package/Shaders/clearQuad.vertex.js +1 -1
  486. package/Shaders/clearQuad.vertex.js.map +1 -1
  487. package/Shaders/color.fragment.js +1 -1
  488. package/Shaders/color.fragment.js.map +1 -1
  489. package/Shaders/color.vertex.d.ts +2 -0
  490. package/Shaders/color.vertex.js +3 -1
  491. package/Shaders/color.vertex.js.map +1 -1
  492. package/Shaders/colorCorrection.fragment.js +1 -1
  493. package/Shaders/colorCorrection.fragment.js.map +1 -1
  494. package/Shaders/convolution.fragment.js +1 -1
  495. package/Shaders/convolution.fragment.js.map +1 -1
  496. package/Shaders/default.fragment.js +1 -1
  497. package/Shaders/default.fragment.js.map +1 -1
  498. package/Shaders/default.vertex.d.ts +2 -0
  499. package/Shaders/default.vertex.js +3 -1
  500. package/Shaders/default.vertex.js.map +1 -1
  501. package/Shaders/depth.fragment.js +1 -1
  502. package/Shaders/depth.fragment.js.map +1 -1
  503. package/Shaders/depth.vertex.d.ts +2 -0
  504. package/Shaders/depth.vertex.js +3 -1
  505. package/Shaders/depth.vertex.js.map +1 -1
  506. package/Shaders/depthBoxBlur.fragment.js +1 -1
  507. package/Shaders/depthBoxBlur.fragment.js.map +1 -1
  508. package/Shaders/depthOfField.fragment.js +1 -1
  509. package/Shaders/depthOfField.fragment.js.map +1 -1
  510. package/Shaders/depthOfFieldMerge.fragment.js +1 -1
  511. package/Shaders/depthOfFieldMerge.fragment.js.map +1 -1
  512. package/Shaders/displayPass.fragment.js +1 -1
  513. package/Shaders/displayPass.fragment.js.map +1 -1
  514. package/Shaders/extractHighlights.fragment.js +1 -1
  515. package/Shaders/extractHighlights.fragment.js.map +1 -1
  516. package/Shaders/filter.fragment.js +1 -1
  517. package/Shaders/filter.fragment.js.map +1 -1
  518. package/Shaders/fxaa.vertex.js +1 -1
  519. package/Shaders/fxaa.vertex.js.map +1 -1
  520. package/Shaders/geometry.vertex.d.ts +2 -0
  521. package/Shaders/geometry.vertex.js +3 -1
  522. package/Shaders/geometry.vertex.js.map +1 -1
  523. package/Shaders/glowBlurPostProcess.fragment.js +1 -1
  524. package/Shaders/glowBlurPostProcess.fragment.js.map +1 -1
  525. package/Shaders/glowMapGeneration.fragment.js +1 -1
  526. package/Shaders/glowMapGeneration.fragment.js.map +1 -1
  527. package/Shaders/glowMapGeneration.vertex.d.ts +2 -0
  528. package/Shaders/glowMapGeneration.vertex.js +3 -1
  529. package/Shaders/glowMapGeneration.vertex.js.map +1 -1
  530. package/Shaders/glowMapMerge.fragment.js +1 -1
  531. package/Shaders/glowMapMerge.fragment.js.map +1 -1
  532. package/Shaders/glowMapMerge.vertex.js +1 -1
  533. package/Shaders/glowMapMerge.vertex.js.map +1 -1
  534. package/Shaders/grain.fragment.js +1 -1
  535. package/Shaders/grain.fragment.js.map +1 -1
  536. package/Shaders/hdrFiltering.vertex.js +1 -1
  537. package/Shaders/hdrFiltering.vertex.js.map +1 -1
  538. package/Shaders/highlights.fragment.js +1 -1
  539. package/Shaders/highlights.fragment.js.map +1 -1
  540. package/Shaders/imageProcessing.fragment.js +1 -1
  541. package/Shaders/imageProcessing.fragment.js.map +1 -1
  542. package/Shaders/kernelBlur.fragment.js +1 -1
  543. package/Shaders/kernelBlur.fragment.js.map +1 -1
  544. package/Shaders/kernelBlur.vertex.js +1 -1
  545. package/Shaders/kernelBlur.vertex.js.map +1 -1
  546. package/Shaders/layer.fragment.js +1 -1
  547. package/Shaders/layer.fragment.js.map +1 -1
  548. package/Shaders/layer.vertex.js +1 -1
  549. package/Shaders/layer.vertex.js.map +1 -1
  550. package/Shaders/lensFlare.fragment.js +1 -1
  551. package/Shaders/lensFlare.fragment.js.map +1 -1
  552. package/Shaders/lensFlare.vertex.js +1 -1
  553. package/Shaders/lensFlare.vertex.js.map +1 -1
  554. package/Shaders/lensHighlights.fragment.js +1 -1
  555. package/Shaders/lensHighlights.fragment.js.map +1 -1
  556. package/Shaders/line.fragment.js +1 -1
  557. package/Shaders/line.fragment.js.map +1 -1
  558. package/Shaders/line.vertex.js +1 -1
  559. package/Shaders/line.vertex.js.map +1 -1
  560. package/Shaders/minmaxRedux.fragment.js +1 -1
  561. package/Shaders/minmaxRedux.fragment.js.map +1 -1
  562. package/Shaders/motionBlur.fragment.js +1 -1
  563. package/Shaders/motionBlur.fragment.js.map +1 -1
  564. package/Shaders/noise.fragment.js +1 -1
  565. package/Shaders/noise.fragment.js.map +1 -1
  566. package/Shaders/outline.fragment.js +1 -1
  567. package/Shaders/outline.fragment.js.map +1 -1
  568. package/Shaders/outline.vertex.d.ts +2 -0
  569. package/Shaders/outline.vertex.js +3 -1
  570. package/Shaders/outline.vertex.js.map +1 -1
  571. package/Shaders/particles.fragment.js +1 -1
  572. package/Shaders/particles.fragment.js.map +1 -1
  573. package/Shaders/particles.vertex.js +1 -1
  574. package/Shaders/particles.vertex.js.map +1 -1
  575. package/Shaders/pass.fragment.js +1 -1
  576. package/Shaders/pass.fragment.js.map +1 -1
  577. package/Shaders/passCube.fragment.js +1 -1
  578. package/Shaders/passCube.fragment.js.map +1 -1
  579. package/Shaders/pbr.fragment.js +1 -1
  580. package/Shaders/pbr.fragment.js.map +1 -1
  581. package/Shaders/pbr.vertex.d.ts +2 -0
  582. package/Shaders/pbr.vertex.js +3 -1
  583. package/Shaders/pbr.vertex.js.map +1 -1
  584. package/Shaders/postprocess.vertex.js +1 -1
  585. package/Shaders/postprocess.vertex.js.map +1 -1
  586. package/Shaders/procedural.vertex.js +1 -1
  587. package/Shaders/procedural.vertex.js.map +1 -1
  588. package/Shaders/rgbdDecode.fragment.js +1 -1
  589. package/Shaders/rgbdDecode.fragment.js.map +1 -1
  590. package/Shaders/rgbdEncode.fragment.js +1 -1
  591. package/Shaders/rgbdEncode.fragment.js.map +1 -1
  592. package/Shaders/screenSpaceCurvature.fragment.js +1 -1
  593. package/Shaders/screenSpaceCurvature.fragment.js.map +1 -1
  594. package/Shaders/shadowMap.fragment.js +1 -1
  595. package/Shaders/shadowMap.fragment.js.map +1 -1
  596. package/Shaders/shadowMap.vertex.d.ts +2 -0
  597. package/Shaders/shadowMap.vertex.js +3 -1
  598. package/Shaders/shadowMap.vertex.js.map +1 -1
  599. package/Shaders/sharpen.fragment.js +1 -1
  600. package/Shaders/sharpen.fragment.js.map +1 -1
  601. package/Shaders/sprites.fragment.js +1 -1
  602. package/Shaders/sprites.fragment.js.map +1 -1
  603. package/Shaders/sprites.vertex.js +1 -1
  604. package/Shaders/sprites.vertex.js.map +1 -1
  605. package/Shaders/ssaoCombine.fragment.js +1 -1
  606. package/Shaders/ssaoCombine.fragment.js.map +1 -1
  607. package/Shaders/standard.fragment.js +1 -1
  608. package/Shaders/standard.fragment.js.map +1 -1
  609. package/Shaders/stereoscopicInterlace.fragment.js +1 -1
  610. package/Shaders/stereoscopicInterlace.fragment.js.map +1 -1
  611. package/Shaders/subSurfaceScattering.fragment.js +1 -1
  612. package/Shaders/subSurfaceScattering.fragment.js.map +1 -1
  613. package/Shaders/tonemap.fragment.js +1 -1
  614. package/Shaders/tonemap.fragment.js.map +1 -1
  615. package/Shaders/volumetricLightScattering.fragment.js +1 -1
  616. package/Shaders/volumetricLightScattering.fragment.js.map +1 -1
  617. package/Shaders/volumetricLightScatteringPass.fragment.js +1 -1
  618. package/Shaders/volumetricLightScatteringPass.fragment.js.map +1 -1
  619. package/Shaders/volumetricLightScatteringPass.vertex.d.ts +2 -0
  620. package/Shaders/volumetricLightScatteringPass.vertex.js +3 -1
  621. package/Shaders/volumetricLightScatteringPass.vertex.js.map +1 -1
  622. package/Shaders/vrDistortionCorrection.fragment.js +1 -1
  623. package/Shaders/vrDistortionCorrection.fragment.js.map +1 -1
  624. package/Shaders/vrMultiviewToSingleview.fragment.js +1 -1
  625. package/Shaders/vrMultiviewToSingleview.fragment.js.map +1 -1
  626. package/ShadersWGSL/ShadersInclude/bakedVertexAnimation.d.ts +5 -0
  627. package/ShadersWGSL/ShadersInclude/bakedVertexAnimation.js +7 -0
  628. package/ShadersWGSL/ShadersInclude/bakedVertexAnimation.js.map +1 -0
  629. package/ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration.d.ts +5 -0
  630. package/ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration.js +7 -0
  631. package/ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration.js.map +1 -0
  632. package/ShadersWGSL/ShadersInclude/bonesDeclaration.js +1 -1
  633. package/ShadersWGSL/ShadersInclude/bonesDeclaration.js.map +1 -1
  634. package/ShadersWGSL/ShadersInclude/bonesVertex.js +1 -1
  635. package/ShadersWGSL/ShadersInclude/bonesVertex.js.map +1 -1
  636. package/ShadersWGSL/ShadersInclude/clipPlaneFragment.d.ts +5 -0
  637. package/ShadersWGSL/ShadersInclude/clipPlaneFragment.js +7 -0
  638. package/ShadersWGSL/ShadersInclude/clipPlaneFragment.js.map +1 -0
  639. package/ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration.d.ts +5 -0
  640. package/ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration.js +7 -0
  641. package/ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration.js.map +1 -0
  642. package/ShadersWGSL/ShadersInclude/clipPlaneVertex.d.ts +5 -0
  643. package/ShadersWGSL/ShadersInclude/clipPlaneVertex.js +7 -0
  644. package/ShadersWGSL/ShadersInclude/clipPlaneVertex.js.map +1 -0
  645. package/ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration.d.ts +5 -0
  646. package/ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration.js +7 -0
  647. package/ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration.js.map +1 -0
  648. package/XR/features/WebXRControllerPointerSelection.d.ts +14 -0
  649. package/XR/features/WebXRControllerPointerSelection.js +55 -21
  650. package/XR/features/WebXRControllerPointerSelection.js.map +1 -1
  651. package/XR/features/WebXRHandTracking.d.ts +2 -0
  652. package/XR/features/WebXRHandTracking.js +34 -14
  653. package/XR/features/WebXRHandTracking.js.map +1 -1
  654. package/XR/features/WebXRLayers.d.ts +78 -0
  655. package/XR/features/WebXRLayers.js +243 -0
  656. package/XR/features/WebXRLayers.js.map +1 -0
  657. package/XR/features/WebXRNearInteraction.d.ts +1 -0
  658. package/XR/features/WebXRNearInteraction.js +2 -0
  659. package/XR/features/WebXRNearInteraction.js.map +1 -1
  660. package/XR/features/WebXRPlaneDetector.js +8 -12
  661. package/XR/features/WebXRPlaneDetector.js.map +1 -1
  662. package/XR/features/index.d.ts +1 -0
  663. package/XR/features/index.js +1 -0
  664. package/XR/features/index.js.map +1 -1
  665. package/XR/native/index.d.ts +1 -0
  666. package/XR/native/index.js +2 -0
  667. package/XR/native/index.js.map +1 -0
  668. package/XR/native/nativeXRRenderTarget.d.ts +44 -0
  669. package/XR/native/nativeXRRenderTarget.js +81 -0
  670. package/XR/native/nativeXRRenderTarget.js.map +1 -0
  671. package/XR/webXRCamera.js +2 -10
  672. package/XR/webXRCamera.js.map +1 -1
  673. package/XR/webXRExperienceHelper.js +15 -13
  674. package/XR/webXRExperienceHelper.js.map +1 -1
  675. package/XR/webXRFeaturesManager.d.ts +4 -0
  676. package/XR/webXRFeaturesManager.js +5 -1
  677. package/XR/webXRFeaturesManager.js.map +1 -1
  678. package/XR/webXRLayerWrapper.d.ts +48 -0
  679. package/XR/webXRLayerWrapper.js +60 -0
  680. package/XR/webXRLayerWrapper.js.map +1 -0
  681. package/XR/webXRManagedOutputCanvas.d.ts +2 -1
  682. package/XR/webXRManagedOutputCanvas.js +36 -29
  683. package/XR/webXRManagedOutputCanvas.js.map +1 -1
  684. package/XR/webXRRenderTargetTextureProvider.d.ts +55 -0
  685. package/XR/webXRRenderTargetTextureProvider.js +63 -0
  686. package/XR/webXRRenderTargetTextureProvider.js.map +1 -0
  687. package/XR/webXRSessionManager.d.ts +30 -7
  688. package/XR/webXRSessionManager.js +62 -64
  689. package/XR/webXRSessionManager.js.map +1 -1
  690. package/XR/webXRTypes.d.ts +1 -1
  691. package/XR/webXRTypes.js.map +1 -1
  692. package/XR/webXRWebGLLayer.d.ts +36 -0
  693. package/XR/webXRWebGLLayer.js +69 -0
  694. package/XR/webXRWebGLLayer.js.map +1 -0
  695. package/abstractScene.d.ts +1 -1
  696. package/abstractScene.js +1 -1
  697. package/abstractScene.js.map +1 -1
  698. package/index.d.ts +1 -0
  699. package/index.js +1 -0
  700. package/index.js.map +1 -1
  701. package/node.d.ts +30 -1
  702. package/node.js +12 -0
  703. package/node.js.map +1 -1
  704. package/package.json +87 -6
  705. package/scene.d.ts +14 -0
  706. package/scene.js +31 -0
  707. package/scene.js.map +1 -1
  708. package/DeviceInput/Implementations/nativeDeviceInputWrapper.js +0 -66
  709. package/DeviceInput/Implementations/nativeDeviceInputWrapper.js.map +0 -1
@@ -1,5 +1,6 @@
1
- import { NativeDeviceInputWrapper } from './Implementations/nativeDeviceInputWrapper.js';
2
- import { WebDeviceInputSystem } from './Implementations/webDeviceInputSystem.js';
1
+ import { Observable } from '../Misc/observable.js';
2
+ import { NativeDeviceInputSystemImpl } from './Implementations/nativeDeviceInputSystem.js';
3
+ import { WebDeviceInputSystemImpl } from './Implementations/webDeviceInputSystem.js';
3
4
  /**
4
5
  * This class will take all inputs from Keyboard, Pointer, and
5
6
  * any Gamepads and provide a polling system that all devices
@@ -7,20 +8,76 @@ import { WebDeviceInputSystem } from './Implementations/webDeviceInputSystem.js'
7
8
  * pointer device and one keyboard.
8
9
  */
9
10
  var DeviceInputSystem = /** @class */ (function () {
10
- function DeviceInputSystem() {
11
- }
12
11
  /**
13
- * Creates a new DeviceInputSystem instance or returns existing one in engine
14
- * @param engine Engine to assign input system to
15
- * @returns The new instance
12
+ * DeviceInputSystem constructor
13
+ * @param deviceInputSystem Web or Native implementation of DeviceInputSystem
16
14
  */
17
- DeviceInputSystem.Create = function (engine) {
15
+ function DeviceInputSystem(deviceInputSystem) {
16
+ var _this = this;
17
+ this._deviceInputSystem = deviceInputSystem;
18
+ this.onDeviceConnectedObservable = new Observable();
19
+ this.onDeviceDisconnectedObservable = new Observable();
20
+ this.onInputChangedObservable = new Observable();
21
+ this._deviceInputSystem.onDeviceConnected = function (deviceType, deviceSlot) {
22
+ _this.onDeviceConnectedObservable.notifyObservers({ deviceType: deviceType, deviceSlot: deviceSlot });
23
+ };
24
+ this._deviceInputSystem.onDeviceDisconnected = function (deviceType, deviceSlot) {
25
+ _this.onDeviceDisconnectedObservable.notifyObservers({ deviceType: deviceType, deviceSlot: deviceSlot });
26
+ };
27
+ this._deviceInputSystem.onInputChanged = function (deviceEvent) {
28
+ _this.onInputChangedObservable.notifyObservers(deviceEvent);
29
+ };
30
+ }
31
+ /** @hidden */
32
+ DeviceInputSystem._Create = function (engine) {
18
33
  // If running in Babylon Native, then defer to the native input system, which has the same public contract
19
34
  if (!engine.deviceInputSystem) {
20
- engine.deviceInputSystem = (typeof _native !== 'undefined' && _native.DeviceInputSystem) ? new NativeDeviceInputWrapper(new _native.DeviceInputSystem()) : new WebDeviceInputSystem(engine);
35
+ var selectedDIS = void 0;
36
+ if (typeof _native !== 'undefined') {
37
+ selectedDIS = (_native.DeviceInputSystem) ? new NativeDeviceInputSystemImpl(new _native.DeviceInputSystem()) : new NativeDeviceInputSystemImpl();
38
+ }
39
+ else {
40
+ selectedDIS = new WebDeviceInputSystemImpl(engine);
41
+ }
42
+ if (selectedDIS) {
43
+ engine.deviceInputSystem = new DeviceInputSystem(selectedDIS);
44
+ }
21
45
  }
22
46
  return engine.deviceInputSystem;
23
47
  };
48
+ /**
49
+ * Configure events to talk with DeviceInputSystem
50
+ */
51
+ DeviceInputSystem.prototype.configureEvents = function () {
52
+ this._deviceInputSystem.configureEvents();
53
+ };
54
+ /**
55
+ * Checks for current device input value, given an id and input index. Throws exception if requested device not initialized.
56
+ * @param deviceType Enum specifiying device type
57
+ * @param deviceSlot "Slot" or index that device is referenced in
58
+ * @param inputIndex Id of input to be checked
59
+ * @returns Current value of input
60
+ */
61
+ DeviceInputSystem.prototype.pollInput = function (deviceType, deviceSlot, inputIndex) {
62
+ return this._deviceInputSystem.pollInput(deviceType, deviceSlot, inputIndex);
63
+ };
64
+ /**
65
+ * Check if there's an instance of device on given DeviceInputSystem
66
+ * @param deviceType Enum specifiying device type
67
+ * @returns
68
+ */
69
+ DeviceInputSystem.prototype.isDeviceAvailable = function (deviceType) {
70
+ return this._deviceInputSystem.isDeviceAvailable(deviceType);
71
+ };
72
+ /**
73
+ * Dispose of DeviceInputSystem sub-elements
74
+ */
75
+ DeviceInputSystem.prototype.dispose = function () {
76
+ this.onDeviceConnectedObservable.clear();
77
+ this.onDeviceDisconnectedObservable.clear();
78
+ this.onInputChangedObservable.clear();
79
+ this._deviceInputSystem.dispose();
80
+ };
24
81
  return DeviceInputSystem;
25
82
  }());
26
83
  export { DeviceInputSystem };
@@ -1 +1 @@
1
- {"version":3,"file":"deviceInputSystem.js","sourceRoot":"","sources":["../../../sourceES6/core/DeviceInput/deviceInputSystem.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAK9E;;;;;GAKG;AACH;IAAA;IAcA,CAAC;IAbG;;;;OAIG;IACW,wBAAM,GAApB,UAAqB,MAAc;QAC/B,0GAA0G;QAC1G,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE;YAC3B,MAAM,CAAC,iBAAiB,GAAG,CAAC,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,wBAAwB,CAAC,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC;SAC/L;QAED,OAAO,MAAM,CAAC,iBAAiB,CAAC;IACpC,CAAC;IACL,wBAAC;AAAD,CAAC,AAdD,IAcC","sourcesContent":["import { Engine } from '../Engines/engine';\r\nimport { INative } from '../Engines/Native/nativeInterfaces';\r\nimport { NativeDeviceInputWrapper } from './Implementations/nativeDeviceInputWrapper';\r\nimport { WebDeviceInputSystem } from './Implementations/webDeviceInputSystem';\r\nimport { IDeviceInputSystem } from './Interfaces/inputInterfaces';\r\n\r\ndeclare const _native: INative;\r\n\r\n/**\r\n * This class will take all inputs from Keyboard, Pointer, and\r\n * any Gamepads and provide a polling system that all devices\r\n * will use. This class assumes that there will only be one\r\n * pointer device and one keyboard.\r\n */\r\nexport class DeviceInputSystem {\r\n /**\r\n * Creates a new DeviceInputSystem instance or returns existing one in engine\r\n * @param engine Engine to assign input system to\r\n * @returns The new instance\r\n */\r\n public static Create(engine: Engine): IDeviceInputSystem {\r\n // If running in Babylon Native, then defer to the native input system, which has the same public contract\r\n if (!engine.deviceInputSystem) {\r\n engine.deviceInputSystem = (typeof _native !== 'undefined' && _native.DeviceInputSystem) ? new NativeDeviceInputWrapper(new _native.DeviceInputSystem()) : new WebDeviceInputSystem(engine);\r\n }\r\n\r\n return engine.deviceInputSystem;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"deviceInputSystem.js","sourceRoot":"","sources":["../../../sourceES6/core/DeviceInput/deviceInputSystem.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AACxF,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAMlF;;;;;GAKG;AACH;IAsCI;;;OAGG;IACH,2BAAY,iBAAqC;QAAjD,iBAiBC;QAhBG,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;QAC5C,IAAI,CAAC,2BAA2B,GAAG,IAAI,UAAU,EAAE,CAAC;QACpD,IAAI,CAAC,8BAA8B,GAAG,IAAI,UAAU,EAAE,CAAC;QACvD,IAAI,CAAC,wBAAwB,GAAG,IAAI,UAAU,EAAgB,CAAC;QAE/D,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,GAAG,UAAC,UAAU,EAAE,UAAU;YAC/D,KAAI,CAAC,2BAA2B,CAAC,eAAe,CAAC,EAAE,UAAU,YAAA,EAAE,UAAU,YAAA,EAAE,CAAC,CAAC;QACjF,CAAC,CAAC;QAEF,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,GAAG,UAAC,UAAU,EAAE,UAAU;YAClE,KAAI,CAAC,8BAA8B,CAAC,eAAe,CAAC,EAAE,UAAU,YAAA,EAAE,UAAU,YAAA,EAAE,CAAC,CAAC;QACpF,CAAC,CAAC;QAEF,IAAI,CAAC,kBAAkB,CAAC,cAAc,GAAG,UAAC,WAAW;YACjD,KAAI,CAAC,wBAAwB,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAC/D,CAAC,CAAC;IACN,CAAC;IA1CD,cAAc;IACA,yBAAO,GAArB,UAAsB,MAAc;QAChC,0GAA0G;QAC1G,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE;YAC3B,IAAI,WAAW,SAAA,CAAC;YAEhB,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;gBAChC,WAAW,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,2BAA2B,CAAC,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,2BAA2B,EAAE,CAAC;aACpJ;iBACI;gBACD,WAAW,GAAG,IAAI,wBAAwB,CAAC,MAAM,CAAC,CAAC;aACtD;YAED,IAAI,WAAW,EAAE;gBACb,MAAM,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,WAAW,CAAC,CAAC;aACjE;SACJ;QAED,OAAO,MAAM,CAAC,iBAAiB,CAAC;IACpC,CAAC;IAyBD;;OAEG;IACI,2CAAe,GAAtB;QACI,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,CAAC;IAC9C,CAAC;IAED;;;;;;OAMG;IACI,qCAAS,GAAhB,UAAiB,UAAsB,EAAE,UAAkB,EAAE,UAAkB;QAC3E,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IACjF,CAAC;IAED;;;;OAIG;IACI,6CAAiB,GAAxB,UAAyB,UAAsB;QAC3C,OAAO,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACI,mCAAO,GAAd;QACI,IAAI,CAAC,2BAA2B,CAAC,KAAK,EAAE,CAAC;QACzC,IAAI,CAAC,8BAA8B,CAAC,KAAK,EAAE,CAAC;QAC5C,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAC;QACtC,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;IACtC,CAAC;IACL,wBAAC;AAAD,CAAC,AAjGD,IAiGC","sourcesContent":["import { Engine } from '../Engines/engine';\r\nimport { INative } from '../Engines/Native/nativeInterfaces';\r\nimport { Observable } from '../Misc/observable';\r\nimport { NativeDeviceInputSystemImpl } from './Implementations/nativeDeviceInputSystem';\r\nimport { WebDeviceInputSystemImpl } from './Implementations/webDeviceInputSystem';\r\nimport { DeviceType } from './InputDevices/deviceEnums';\r\nimport { IDeviceEvent, IDeviceInputSystem } from './Interfaces/inputInterfaces';\r\n\r\ndeclare const _native: INative;\r\n\r\n/**\r\n * This class will take all inputs from Keyboard, Pointer, and\r\n * any Gamepads and provide a polling system that all devices\r\n * will use. This class assumes that there will only be one\r\n * pointer device and one keyboard.\r\n */\r\nexport class DeviceInputSystem {\r\n // Observables\r\n /**\r\n * Observable for devices being connected\r\n */\r\n public readonly onDeviceConnectedObservable: Observable<{ deviceType: DeviceType; deviceSlot: number; }>;\r\n /**\r\n * Observable for devices being disconnected\r\n */\r\n public readonly onDeviceDisconnectedObservable: Observable<{ deviceType: DeviceType; deviceSlot: number; }>;\r\n /**\r\n * Observable for changes to device input\r\n */\r\n public readonly onInputChangedObservable: Observable<IDeviceEvent>;\r\n\r\n private _deviceInputSystem: IDeviceInputSystem;\r\n\r\n /** @hidden */\r\n public static _Create(engine: Engine): DeviceInputSystem {\r\n // If running in Babylon Native, then defer to the native input system, which has the same public contract\r\n if (!engine.deviceInputSystem) {\r\n let selectedDIS;\r\n\r\n if (typeof _native !== 'undefined') {\r\n selectedDIS = (_native.DeviceInputSystem) ? new NativeDeviceInputSystemImpl(new _native.DeviceInputSystem()) : new NativeDeviceInputSystemImpl();\r\n }\r\n else {\r\n selectedDIS = new WebDeviceInputSystemImpl(engine);\r\n }\r\n\r\n if (selectedDIS) {\r\n engine.deviceInputSystem = new DeviceInputSystem(selectedDIS);\r\n }\r\n }\r\n\r\n return engine.deviceInputSystem;\r\n }\r\n\r\n /**\r\n * DeviceInputSystem constructor\r\n * @param deviceInputSystem Web or Native implementation of DeviceInputSystem\r\n */\r\n constructor(deviceInputSystem: IDeviceInputSystem) {\r\n this._deviceInputSystem = deviceInputSystem;\r\n this.onDeviceConnectedObservable = new Observable();\r\n this.onDeviceDisconnectedObservable = new Observable();\r\n this.onInputChangedObservable = new Observable<IDeviceEvent>();\r\n\r\n this._deviceInputSystem.onDeviceConnected = (deviceType, deviceSlot) => {\r\n this.onDeviceConnectedObservable.notifyObservers({ deviceType, deviceSlot });\r\n };\r\n\r\n this._deviceInputSystem.onDeviceDisconnected = (deviceType, deviceSlot) => {\r\n this.onDeviceDisconnectedObservable.notifyObservers({ deviceType, deviceSlot });\r\n };\r\n\r\n this._deviceInputSystem.onInputChanged = (deviceEvent) => {\r\n this.onInputChangedObservable.notifyObservers(deviceEvent);\r\n };\r\n }\r\n\r\n /**\r\n * Configure events to talk with DeviceInputSystem\r\n */\r\n public configureEvents() {\r\n this._deviceInputSystem.configureEvents();\r\n }\r\n\r\n /**\r\n * Checks for current device input value, given an id and input index. Throws exception if requested device not initialized.\r\n * @param deviceType Enum specifiying device type\r\n * @param deviceSlot \"Slot\" or index that device is referenced in\r\n * @param inputIndex Id of input to be checked\r\n * @returns Current value of input\r\n */\r\n public pollInput(deviceType: DeviceType, deviceSlot: number, inputIndex: number): number {\r\n return this._deviceInputSystem.pollInput(deviceType, deviceSlot, inputIndex);\r\n }\r\n\r\n /**\r\n * Check if there's an instance of device on given DeviceInputSystem\r\n * @param deviceType Enum specifiying device type\r\n * @returns\r\n */\r\n public isDeviceAvailable(deviceType: DeviceType): boolean {\r\n return this._deviceInputSystem.isDeviceAvailable(deviceType);\r\n }\r\n\r\n /**\r\n * Dispose of DeviceInputSystem sub-elements\r\n */\r\n public dispose() {\r\n this.onDeviceConnectedObservable.clear();\r\n this.onDeviceDisconnectedObservable.clear();\r\n this.onInputChangedObservable.clear();\r\n this._deviceInputSystem.dispose();\r\n }\r\n}\r\n"]}
@@ -2,7 +2,7 @@ export * from "./deviceInputSystem";
2
2
  export * from "./InputDevices/deviceEnums";
3
3
  export * from "./InputDevices/deviceTypes";
4
4
  export * from "./Helpers/eventFactory";
5
- export * from "./Implementations/nativeDeviceInputWrapper";
5
+ export * from "./Implementations/nativeDeviceInputSystem";
6
6
  export * from "./Implementations/webDeviceInputSystem";
7
7
  import "./InputDevices/deviceSourceManager";
8
8
  export * from "./InputDevices/deviceSourceManager";
@@ -2,7 +2,7 @@ export * from "./deviceInputSystem.js";
2
2
  export * from "./InputDevices/deviceEnums.js";
3
3
  export * from "./InputDevices/deviceTypes.js";
4
4
  export * from "./Helpers/eventFactory.js";
5
- export * from "./Implementations/nativeDeviceInputWrapper.js";
5
+ export * from "./Implementations/nativeDeviceInputSystem.js";
6
6
  export * from "./Implementations/webDeviceInputSystem.js";
7
7
  import "./InputDevices/deviceSourceManager.js";
8
8
  export * from "./InputDevices/deviceSourceManager.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../sourceES6/core/DeviceInput/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAE3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4CAA4C,CAAC;AAC3D,cAAc,wCAAwC,CAAC;AAEvD,OAAO,oCAAoC,CAAC;AAC5C,cAAc,oCAAoC,CAAC","sourcesContent":["export * from \"./deviceInputSystem\";\r\nexport * from \"./InputDevices/deviceEnums\";\r\nexport * from \"./InputDevices/deviceTypes\";\r\n\r\nexport * from \"./Helpers/eventFactory\";\r\nexport * from \"./Implementations/nativeDeviceInputWrapper\";\r\nexport * from \"./Implementations/webDeviceInputSystem\";\r\n\r\nimport \"./InputDevices/deviceSourceManager\";\r\nexport * from \"./InputDevices/deviceSourceManager\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../sourceES6/core/DeviceInput/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAE3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,2CAA2C,CAAC;AAC1D,cAAc,wCAAwC,CAAC;AAEvD,OAAO,oCAAoC,CAAC;AAC5C,cAAc,oCAAoC,CAAC","sourcesContent":["export * from \"./deviceInputSystem\";\r\nexport * from \"./InputDevices/deviceEnums\";\r\nexport * from \"./InputDevices/deviceTypes\";\r\n\r\nexport * from \"./Helpers/eventFactory\";\r\nexport * from \"./Implementations/nativeDeviceInputSystem\";\r\nexport * from \"./Implementations/webDeviceInputSystem\";\r\n\r\nimport \"./InputDevices/deviceSourceManager\";\r\nexport * from \"./InputDevices/deviceSourceManager\";\r\n"]}
@@ -20,7 +20,8 @@ declare module "../../Engines/thinEngine" {
20
20
  * @param premulAlpha defines if alpha is stored as premultiplied
21
21
  * @param format defines the format of the data
22
22
  * @param forceBindTexture if the texture should be forced to be bound eg. after a graphics context loss (Default: false)
23
+ * @param allowGPUOptimization true to allow some specific GPU optimizations (subject to engine feature "allowGPUOptimizationsForGUI" being true)
23
24
  */
24
- updateDynamicTexture(texture: Nullable<InternalTexture>, source: ImageBitmap | ImageData | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas | ICanvas, invertY?: boolean, premulAlpha?: boolean, format?: number, forceBindTexture?: boolean): void;
25
+ updateDynamicTexture(texture: Nullable<InternalTexture>, source: ImageBitmap | ImageData | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas | ICanvas, invertY?: boolean, premulAlpha?: boolean, format?: number, forceBindTexture?: boolean, allowGPUOptimization?: boolean): void;
25
26
  }
26
27
  }
@@ -18,9 +18,10 @@ ThinEngine.prototype.createDynamicTexture = function (width, height, generateMip
18
18
  this._internalTexturesCache.push(texture);
19
19
  return texture;
20
20
  };
21
- ThinEngine.prototype.updateDynamicTexture = function (texture, source, invertY, premulAlpha, format, forceBindTexture) {
21
+ ThinEngine.prototype.updateDynamicTexture = function (texture, source, invertY, premulAlpha, format, forceBindTexture, allowGPUOptimization) {
22
22
  if (premulAlpha === void 0) { premulAlpha = false; }
23
23
  if (forceBindTexture === void 0) { forceBindTexture = false; }
24
+ if (allowGPUOptimization === void 0) { allowGPUOptimization = false; }
24
25
  if (!texture) {
25
26
  return;
26
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"engine.dynamicTexture.js","sourceRoot":"","sources":["../../../../sourceES6/core/Engines/Extensions/engine.dynamicTexture.ts"],"names":[],"mappings":"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","sourcesContent":["import { ThinEngine } from \"../../Engines/thinEngine\";\r\nimport { InternalTexture, InternalTextureSource } from '../../Materials/Textures/internalTexture';\r\nimport { Nullable } from '../../types';\r\nimport { ICanvas } from \"../ICanvas\";\r\n\r\ndeclare module \"../../Engines/thinEngine\" {\r\n export interface ThinEngine {\r\n /**\r\n * Creates a dynamic texture\r\n * @param width defines the width of the texture\r\n * @param height defines the height of the texture\r\n * @param generateMipMaps defines if the engine should generate the mip levels\r\n * @param samplingMode defines the required sampling mode (Texture.NEAREST_SAMPLINGMODE by default)\r\n * @returns the dynamic texture inside an InternalTexture\r\n */\r\n createDynamicTexture(width: number, height: number, generateMipMaps: boolean, samplingMode: number): InternalTexture;\r\n\r\n /**\r\n * Update the content of a dynamic texture\r\n * @param texture defines the texture to update\r\n * @param source defines the source containing the data\r\n * @param invertY defines if data must be stored with Y axis inverted\r\n * @param premulAlpha defines if alpha is stored as premultiplied\r\n * @param format defines the format of the data\r\n * @param forceBindTexture if the texture should be forced to be bound eg. after a graphics context loss (Default: false)\r\n */\r\n updateDynamicTexture(texture: Nullable<InternalTexture>,\r\n source: ImageBitmap | ImageData | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas | ICanvas,\r\n invertY?: boolean, premulAlpha?: boolean, format?: number, forceBindTexture?: boolean): void;\r\n }\r\n}\r\n\r\nThinEngine.prototype.createDynamicTexture = function (width: number, height: number, generateMipMaps: boolean, samplingMode: number): InternalTexture {\r\n var texture = new InternalTexture(this, InternalTextureSource.Dynamic);\r\n texture.baseWidth = width;\r\n texture.baseHeight = height;\r\n\r\n if (generateMipMaps) {\r\n width = this.needPOTTextures ? ThinEngine.GetExponentOfTwo(width, this._caps.maxTextureSize) : width;\r\n height = this.needPOTTextures ? ThinEngine.GetExponentOfTwo(height, this._caps.maxTextureSize) : height;\r\n }\r\n\r\n // this.resetTextureCache();\r\n texture.width = width;\r\n texture.height = height;\r\n texture.isReady = false;\r\n texture.generateMipMaps = generateMipMaps;\r\n texture.samplingMode = samplingMode;\r\n\r\n this.updateTextureSamplingMode(samplingMode, texture);\r\n\r\n this._internalTexturesCache.push(texture);\r\n\r\n return texture;\r\n};\r\n\r\nThinEngine.prototype.updateDynamicTexture = function (texture: Nullable<InternalTexture>,\r\n source: ImageBitmap | ImageData | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas,\r\n invertY?: boolean,\r\n premulAlpha: boolean = false,\r\n format?: number,\r\n forceBindTexture: boolean = false): void {\r\n if (!texture) {\r\n return;\r\n }\r\n\r\n const gl = this._gl;\r\n const target = gl.TEXTURE_2D;\r\n\r\n const wasPreviouslyBound = this._bindTextureDirectly(target, texture, true, forceBindTexture);\r\n\r\n this._unpackFlipY(invertY === undefined ? texture.invertY : invertY);\r\n\r\n if (premulAlpha) {\r\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, 1);\r\n }\r\n\r\n const textureType = this._getWebGLTextureType(texture.type);\r\n const glformat = this._getInternalFormat(format ? format : texture.format);\r\n const internalFormat = this._getRGBABufferInternalSizedFormat(texture.type, glformat);\r\n\r\n gl.texImage2D(target, 0, internalFormat, glformat, textureType, source as TexImageSource);\r\n\r\n if (texture.generateMipMaps) {\r\n gl.generateMipmap(target);\r\n }\r\n\r\n if (!wasPreviouslyBound) {\r\n this._bindTextureDirectly(target, null);\r\n }\r\n\r\n if (premulAlpha) {\r\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, 0);\r\n }\r\n\r\n texture.isReady = true;\r\n};"]}
1
+ {"version":3,"file":"engine.dynamicTexture.js","sourceRoot":"","sources":["../../../../sourceES6/core/Engines/Extensions/engine.dynamicTexture.ts"],"names":[],"mappings":"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","sourcesContent":["import { ThinEngine } from \"../../Engines/thinEngine\";\r\nimport { InternalTexture, InternalTextureSource } from '../../Materials/Textures/internalTexture';\r\nimport { Nullable } from '../../types';\r\nimport { ICanvas } from \"../ICanvas\";\r\n\r\ndeclare module \"../../Engines/thinEngine\" {\r\n export interface ThinEngine {\r\n /**\r\n * Creates a dynamic texture\r\n * @param width defines the width of the texture\r\n * @param height defines the height of the texture\r\n * @param generateMipMaps defines if the engine should generate the mip levels\r\n * @param samplingMode defines the required sampling mode (Texture.NEAREST_SAMPLINGMODE by default)\r\n * @returns the dynamic texture inside an InternalTexture\r\n */\r\n createDynamicTexture(width: number, height: number, generateMipMaps: boolean, samplingMode: number): InternalTexture;\r\n\r\n /**\r\n * Update the content of a dynamic texture\r\n * @param texture defines the texture to update\r\n * @param source defines the source containing the data\r\n * @param invertY defines if data must be stored with Y axis inverted\r\n * @param premulAlpha defines if alpha is stored as premultiplied\r\n * @param format defines the format of the data\r\n * @param forceBindTexture if the texture should be forced to be bound eg. after a graphics context loss (Default: false)\r\n * @param allowGPUOptimization true to allow some specific GPU optimizations (subject to engine feature \"allowGPUOptimizationsForGUI\" being true)\r\n */\r\n updateDynamicTexture(texture: Nullable<InternalTexture>,\r\n source: ImageBitmap | ImageData | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas | ICanvas,\r\n invertY?: boolean, premulAlpha?: boolean, format?: number, forceBindTexture?: boolean, allowGPUOptimization?: boolean): void;\r\n }\r\n}\r\n\r\nThinEngine.prototype.createDynamicTexture = function (width: number, height: number, generateMipMaps: boolean, samplingMode: number): InternalTexture {\r\n var texture = new InternalTexture(this, InternalTextureSource.Dynamic);\r\n texture.baseWidth = width;\r\n texture.baseHeight = height;\r\n\r\n if (generateMipMaps) {\r\n width = this.needPOTTextures ? ThinEngine.GetExponentOfTwo(width, this._caps.maxTextureSize) : width;\r\n height = this.needPOTTextures ? ThinEngine.GetExponentOfTwo(height, this._caps.maxTextureSize) : height;\r\n }\r\n\r\n // this.resetTextureCache();\r\n texture.width = width;\r\n texture.height = height;\r\n texture.isReady = false;\r\n texture.generateMipMaps = generateMipMaps;\r\n texture.samplingMode = samplingMode;\r\n\r\n this.updateTextureSamplingMode(samplingMode, texture);\r\n\r\n this._internalTexturesCache.push(texture);\r\n\r\n return texture;\r\n};\r\n\r\nThinEngine.prototype.updateDynamicTexture = function (texture: Nullable<InternalTexture>,\r\n source: ImageBitmap | ImageData | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas,\r\n invertY?: boolean,\r\n premulAlpha: boolean = false,\r\n format?: number,\r\n forceBindTexture: boolean = false,\r\n allowGPUOptimization: boolean = false,\r\n ): void {\r\n if (!texture) {\r\n return;\r\n }\r\n\r\n const gl = this._gl;\r\n const target = gl.TEXTURE_2D;\r\n\r\n const wasPreviouslyBound = this._bindTextureDirectly(target, texture, true, forceBindTexture);\r\n\r\n this._unpackFlipY(invertY === undefined ? texture.invertY : invertY);\r\n\r\n if (premulAlpha) {\r\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, 1);\r\n }\r\n\r\n const textureType = this._getWebGLTextureType(texture.type);\r\n const glformat = this._getInternalFormat(format ? format : texture.format);\r\n const internalFormat = this._getRGBABufferInternalSizedFormat(texture.type, glformat);\r\n\r\n gl.texImage2D(target, 0, internalFormat, glformat, textureType, source as TexImageSource);\r\n\r\n if (texture.generateMipMaps) {\r\n gl.generateMipmap(target);\r\n }\r\n\r\n if (!wasPreviouslyBound) {\r\n this._bindTextureDirectly(target, null);\r\n }\r\n\r\n if (premulAlpha) {\r\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, 0);\r\n }\r\n\r\n texture.isReady = true;\r\n};"]}
@@ -57,15 +57,26 @@ Camera.prototype._resizeOrCreateMultiviewTexture = function (width, height) {
57
57
  this._multiviewTexture = new MultiviewRenderTarget(this.getScene(), { width: width, height: height });
58
58
  }
59
59
  };
60
+ function createMultiviewUbo(engine, name) {
61
+ var ubo = new UniformBuffer(engine, undefined, true, name);
62
+ ubo.addUniform("viewProjection", 16);
63
+ ubo.addUniform("viewProjectionR", 16);
64
+ ubo.addUniform("view", 16);
65
+ ubo.addUniform("projection", 16);
66
+ ubo.addUniform("viewPosition", 4);
67
+ return ubo;
68
+ }
69
+ var currentCreateSceneUniformBuffer = Scene.prototype.createSceneUniformBuffer;
60
70
  Scene.prototype._transformMatrixR = Matrix.Zero();
61
71
  Scene.prototype._multiviewSceneUbo = null;
62
72
  Scene.prototype._createMultiviewUbo = function () {
63
- this._multiviewSceneUbo = new UniformBuffer(this.getEngine(), undefined, true, "scene_multiview");
64
- this._multiviewSceneUbo.addUniform("viewProjection", 16);
65
- this._multiviewSceneUbo.addUniform("viewProjectionR", 16);
66
- this._multiviewSceneUbo.addUniform("view", 16);
67
- this._multiviewSceneUbo.addUniform("projection", 16);
68
- this._multiviewSceneUbo.addUniform("viewPosition", 4);
73
+ this._multiviewSceneUbo = createMultiviewUbo(this.getEngine(), "scene_multiview");
74
+ };
75
+ Scene.prototype.createSceneUniformBuffer = function (name) {
76
+ if (this._multiviewSceneUbo) {
77
+ return createMultiviewUbo(this.getEngine(), name);
78
+ }
79
+ return currentCreateSceneUniformBuffer.bind(this)(name);
69
80
  };
70
81
  Scene.prototype._updateMultiviewUbo = function (viewR, projectionR) {
71
82
  if (viewR && projectionR) {
@@ -1 +1 @@
1
- {"version":3,"file":"engine.multiview.js","sourceRoot":"","sources":["../../../../sourceES6/core/Engines/Extensions/engine.multiview.ts"],"names":[],"mappings":"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","sourcesContent":["import { Camera } from \"../../Cameras/camera\";\r\nimport { Engine } from \"../../Engines/engine\";\r\nimport { Scene } from \"../../scene\";\r\nimport { InternalTexture, InternalTextureSource } from '../../Materials/Textures/internalTexture';\r\nimport { Nullable } from '../../types';\r\nimport { RenderTargetTexture } from '../../Materials/Textures/renderTargetTexture';\r\nimport { Matrix, TmpVectors } from '../../Maths/math.vector';\r\nimport { UniformBuffer } from '../../Materials/uniformBuffer';\r\nimport { MultiviewRenderTarget } from '../../Materials/Textures/MultiviewRenderTarget';\r\nimport { Frustum } from '../../Maths/math.frustum';\r\nimport { WebGLRenderTargetWrapper } from \"../WebGL/webGLRenderTargetWrapper\";\r\nimport { RenderTargetWrapper } from \"../renderTargetWrapper\";\r\n\r\ndeclare module \"../../Engines/engine\" {\r\n export interface Engine {\r\n /**\r\n * Creates a new multiview render target\r\n * @param width defines the width of the texture\r\n * @param height defines the height of the texture\r\n * @returns the created multiview render target wrapper\r\n */\r\n createMultiviewRenderTargetTexture(width: number, height: number): RenderTargetWrapper;\r\n\r\n /**\r\n * Binds a multiview render target wrapper to be drawn to\r\n * @param multiviewTexture render target wrapper to bind\r\n */\r\n bindMultiviewFramebuffer(multiviewTexture: RenderTargetWrapper): void;\r\n }\r\n}\r\n\r\nEngine.prototype.createMultiviewRenderTargetTexture = function (width: number, height: number) {\r\n var gl = this._gl;\r\n\r\n if (!this.getCaps().multiview) {\r\n throw \"Multiview is not supported\";\r\n }\r\n\r\n const rtWrapper = this._createHardwareRenderTargetWrapper(false, false, { width, height }) as WebGLRenderTargetWrapper;\r\n\r\n rtWrapper._framebuffer = gl.createFramebuffer();\r\n\r\n var internalTexture = new InternalTexture(this, InternalTextureSource.Unknown, true);\r\n internalTexture.width = width;\r\n internalTexture.height = height;\r\n\r\n rtWrapper._colorTextureArray = gl.createTexture();\r\n gl.bindTexture(gl.TEXTURE_2D_ARRAY, rtWrapper._colorTextureArray);\r\n (gl as any).texStorage3D(gl.TEXTURE_2D_ARRAY, 1, gl.RGBA8, width, height, 2);\r\n\r\n rtWrapper._depthStencilTextureArray = gl.createTexture();\r\n gl.bindTexture(gl.TEXTURE_2D_ARRAY, rtWrapper._depthStencilTextureArray);\r\n (gl as any).texStorage3D(gl.TEXTURE_2D_ARRAY, 1, (gl as any).DEPTH32F_STENCIL8, width, height, 2);\r\n\r\n internalTexture.isReady = true;\r\n\r\n rtWrapper.setTextures(internalTexture);\r\n\r\n return rtWrapper;\r\n};\r\n\r\nEngine.prototype.bindMultiviewFramebuffer = function (_multiviewTexture: RenderTargetWrapper) {\r\n const multiviewTexture = _multiviewTexture as WebGLRenderTargetWrapper;\r\n\r\n var gl: any = this._gl;\r\n var ext = this.getCaps().oculusMultiview || this.getCaps().multiview;\r\n\r\n this.bindFramebuffer(multiviewTexture, undefined, undefined, undefined, true);\r\n gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, multiviewTexture._framebuffer);\r\n if (multiviewTexture._colorTextureArray && multiviewTexture._depthStencilTextureArray) {\r\n if (this.getCaps().oculusMultiview) {\r\n ext.framebufferTextureMultisampleMultiviewOVR(gl.DRAW_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, multiviewTexture._colorTextureArray, 0, multiviewTexture.samples, 0, 2);\r\n ext.framebufferTextureMultisampleMultiviewOVR(gl.DRAW_FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, multiviewTexture._depthStencilTextureArray, 0, multiviewTexture.samples, 0, 2);\r\n } else {\r\n ext.framebufferTextureMultiviewOVR(gl.DRAW_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, multiviewTexture._colorTextureArray, 0, 0, 2);\r\n ext.framebufferTextureMultiviewOVR(gl.DRAW_FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, multiviewTexture._depthStencilTextureArray, 0, 0, 2);\r\n }\r\n } else {\r\n throw \"Invalid multiview frame buffer\";\r\n }\r\n};\r\n\r\ndeclare module \"../../Cameras/camera\" {\r\n export interface Camera {\r\n /**\r\n * @hidden\r\n * For cameras that cannot use multiview images to display directly. (e.g. webVR camera will render to multiview texture, then copy to each eye texture and go from there)\r\n */\r\n _useMultiviewToSingleView: boolean;\r\n /**\r\n * @hidden\r\n * For cameras that cannot use multiview images to display directly. (e.g. webVR camera will render to multiview texture, then copy to each eye texture and go from there)\r\n */\r\n _multiviewTexture: Nullable<RenderTargetTexture>;\r\n\r\n /**\r\n * @hidden\r\n * ensures the multiview texture of the camera exists and has the specified width/height\r\n * @param width height to set on the multiview texture\r\n * @param height width to set on the multiview texture\r\n */\r\n _resizeOrCreateMultiviewTexture(width: number, height: number): void;\r\n }\r\n}\r\n\r\nCamera.prototype._useMultiviewToSingleView = false;\r\n\r\nCamera.prototype._multiviewTexture = null;\r\n\r\nCamera.prototype._resizeOrCreateMultiviewTexture = function (width: number, height: number) {\r\n if (!this._multiviewTexture) {\r\n this._multiviewTexture = new MultiviewRenderTarget(this.getScene(), { width: width, height: height });\r\n } else if (this._multiviewTexture.getRenderWidth() != width || this._multiviewTexture.getRenderHeight() != height) {\r\n this._multiviewTexture.dispose();\r\n this._multiviewTexture = new MultiviewRenderTarget(this.getScene(), { width: width, height: height });\r\n }\r\n};\r\n\r\ndeclare module \"../../scene\" {\r\n export interface Scene {\r\n /** @hidden */\r\n _transformMatrixR: Matrix;\r\n /** @hidden */\r\n _multiviewSceneUbo: Nullable<UniformBuffer>;\r\n /** @hidden */\r\n _createMultiviewUbo(): void;\r\n /** @hidden */\r\n _updateMultiviewUbo(viewR?: Matrix, projectionR?: Matrix): void;\r\n /** @hidden */\r\n _renderMultiviewToSingleView(camera: Camera): void;\r\n }\r\n}\r\n\r\nScene.prototype._transformMatrixR = Matrix.Zero();\r\nScene.prototype._multiviewSceneUbo = null;\r\nScene.prototype._createMultiviewUbo = function () {\r\n this._multiviewSceneUbo = new UniformBuffer(this.getEngine(), undefined, true, \"scene_multiview\");\r\n this._multiviewSceneUbo.addUniform(\"viewProjection\", 16);\r\n this._multiviewSceneUbo.addUniform(\"viewProjectionR\", 16);\r\n this._multiviewSceneUbo.addUniform(\"view\", 16);\r\n this._multiviewSceneUbo.addUniform(\"projection\", 16);\r\n this._multiviewSceneUbo.addUniform(\"viewPosition\", 4);\r\n};\r\nScene.prototype._updateMultiviewUbo = function (viewR?: Matrix, projectionR?: Matrix) {\r\n if (viewR && projectionR) {\r\n viewR.multiplyToRef(projectionR, this._transformMatrixR);\r\n }\r\n\r\n if (viewR && projectionR) {\r\n viewR.multiplyToRef(projectionR, TmpVectors.Matrix[0]);\r\n Frustum.GetRightPlaneToRef(TmpVectors.Matrix[0], this._frustumPlanes[3]); // Replace right plane by second camera right plane\r\n }\r\n\r\n if (this._multiviewSceneUbo) {\r\n this._multiviewSceneUbo.updateMatrix(\"viewProjection\", this.getTransformMatrix());\r\n this._multiviewSceneUbo.updateMatrix(\"viewProjectionR\", this._transformMatrixR);\r\n this._multiviewSceneUbo.updateMatrix(\"view\", this._viewMatrix);\r\n this._multiviewSceneUbo.updateMatrix(\"projection\", this._projectionMatrix);\r\n }\r\n};\r\nScene.prototype._renderMultiviewToSingleView = function (camera: Camera) {\r\n // Multiview is only able to be displayed directly for API's such as webXR\r\n // This displays a multiview image by rendering to the multiview image and then\r\n // copying the result into the sub cameras instead of rendering them and proceeding as normal from there\r\n\r\n // Render to a multiview texture\r\n camera._resizeOrCreateMultiviewTexture(\r\n (camera._rigPostProcess && camera._rigPostProcess && camera._rigPostProcess.width > 0) ? camera._rigPostProcess.width : this.getEngine().getRenderWidth(true),\r\n (camera._rigPostProcess && camera._rigPostProcess && camera._rigPostProcess.height > 0) ? camera._rigPostProcess.height : this.getEngine().getRenderHeight(true)\r\n );\r\n if (!this._multiviewSceneUbo) {\r\n this._createMultiviewUbo();\r\n }\r\n camera.outputRenderTarget = camera._multiviewTexture;\r\n this._renderForCamera(camera);\r\n camera.outputRenderTarget = null;\r\n\r\n // Consume the multiview texture through a shader for each eye\r\n for (var index = 0; index < camera._rigCameras.length; index++) {\r\n var engine = this.getEngine();\r\n this._activeCamera = camera._rigCameras[index];\r\n engine.setViewport(this._activeCamera.viewport);\r\n if (this.postProcessManager) {\r\n this.postProcessManager._prepareFrame();\r\n this.postProcessManager._finalizeFrame(this._activeCamera.isIntermediate);\r\n }\r\n }\r\n};"]}
1
+ {"version":3,"file":"engine.multiview.js","sourceRoot":"","sources":["../../../../sourceES6/core/Engines/Extensions/engine.multiview.ts"],"names":[],"mappings":"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","sourcesContent":["import { Camera } from \"../../Cameras/camera\";\r\nimport { Engine } from \"../../Engines/engine\";\r\nimport { Scene } from \"../../scene\";\r\nimport { InternalTexture, InternalTextureSource } from '../../Materials/Textures/internalTexture';\r\nimport { Nullable } from '../../types';\r\nimport { RenderTargetTexture } from '../../Materials/Textures/renderTargetTexture';\r\nimport { Matrix, TmpVectors } from '../../Maths/math.vector';\r\nimport { UniformBuffer } from '../../Materials/uniformBuffer';\r\nimport { MultiviewRenderTarget } from '../../Materials/Textures/MultiviewRenderTarget';\r\nimport { Frustum } from '../../Maths/math.frustum';\r\nimport { WebGLRenderTargetWrapper } from \"../WebGL/webGLRenderTargetWrapper\";\r\nimport { RenderTargetWrapper } from \"../renderTargetWrapper\";\r\n\r\ndeclare module \"../../Engines/engine\" {\r\n export interface Engine {\r\n /**\r\n * Creates a new multiview render target\r\n * @param width defines the width of the texture\r\n * @param height defines the height of the texture\r\n * @returns the created multiview render target wrapper\r\n */\r\n createMultiviewRenderTargetTexture(width: number, height: number): RenderTargetWrapper;\r\n\r\n /**\r\n * Binds a multiview render target wrapper to be drawn to\r\n * @param multiviewTexture render target wrapper to bind\r\n */\r\n bindMultiviewFramebuffer(multiviewTexture: RenderTargetWrapper): void;\r\n }\r\n}\r\n\r\nEngine.prototype.createMultiviewRenderTargetTexture = function (width: number, height: number) {\r\n var gl = this._gl;\r\n\r\n if (!this.getCaps().multiview) {\r\n throw \"Multiview is not supported\";\r\n }\r\n\r\n const rtWrapper = this._createHardwareRenderTargetWrapper(false, false, { width, height }) as WebGLRenderTargetWrapper;\r\n\r\n rtWrapper._framebuffer = gl.createFramebuffer();\r\n\r\n var internalTexture = new InternalTexture(this, InternalTextureSource.Unknown, true);\r\n internalTexture.width = width;\r\n internalTexture.height = height;\r\n\r\n rtWrapper._colorTextureArray = gl.createTexture();\r\n gl.bindTexture(gl.TEXTURE_2D_ARRAY, rtWrapper._colorTextureArray);\r\n (gl as any).texStorage3D(gl.TEXTURE_2D_ARRAY, 1, gl.RGBA8, width, height, 2);\r\n\r\n rtWrapper._depthStencilTextureArray = gl.createTexture();\r\n gl.bindTexture(gl.TEXTURE_2D_ARRAY, rtWrapper._depthStencilTextureArray);\r\n (gl as any).texStorage3D(gl.TEXTURE_2D_ARRAY, 1, (gl as any).DEPTH32F_STENCIL8, width, height, 2);\r\n\r\n internalTexture.isReady = true;\r\n\r\n rtWrapper.setTextures(internalTexture);\r\n\r\n return rtWrapper;\r\n};\r\n\r\nEngine.prototype.bindMultiviewFramebuffer = function (_multiviewTexture: RenderTargetWrapper) {\r\n const multiviewTexture = _multiviewTexture as WebGLRenderTargetWrapper;\r\n\r\n var gl: any = this._gl;\r\n var ext = this.getCaps().oculusMultiview || this.getCaps().multiview;\r\n\r\n this.bindFramebuffer(multiviewTexture, undefined, undefined, undefined, true);\r\n gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, multiviewTexture._framebuffer);\r\n if (multiviewTexture._colorTextureArray && multiviewTexture._depthStencilTextureArray) {\r\n if (this.getCaps().oculusMultiview) {\r\n ext.framebufferTextureMultisampleMultiviewOVR(gl.DRAW_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, multiviewTexture._colorTextureArray, 0, multiviewTexture.samples, 0, 2);\r\n ext.framebufferTextureMultisampleMultiviewOVR(gl.DRAW_FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, multiviewTexture._depthStencilTextureArray, 0, multiviewTexture.samples, 0, 2);\r\n } else {\r\n ext.framebufferTextureMultiviewOVR(gl.DRAW_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, multiviewTexture._colorTextureArray, 0, 0, 2);\r\n ext.framebufferTextureMultiviewOVR(gl.DRAW_FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, multiviewTexture._depthStencilTextureArray, 0, 0, 2);\r\n }\r\n } else {\r\n throw \"Invalid multiview frame buffer\";\r\n }\r\n};\r\n\r\ndeclare module \"../../Cameras/camera\" {\r\n export interface Camera {\r\n /**\r\n * @hidden\r\n * For cameras that cannot use multiview images to display directly. (e.g. webVR camera will render to multiview texture, then copy to each eye texture and go from there)\r\n */\r\n _useMultiviewToSingleView: boolean;\r\n /**\r\n * @hidden\r\n * For cameras that cannot use multiview images to display directly. (e.g. webVR camera will render to multiview texture, then copy to each eye texture and go from there)\r\n */\r\n _multiviewTexture: Nullable<RenderTargetTexture>;\r\n\r\n /**\r\n * @hidden\r\n * ensures the multiview texture of the camera exists and has the specified width/height\r\n * @param width height to set on the multiview texture\r\n * @param height width to set on the multiview texture\r\n */\r\n _resizeOrCreateMultiviewTexture(width: number, height: number): void;\r\n }\r\n}\r\n\r\nCamera.prototype._useMultiviewToSingleView = false;\r\n\r\nCamera.prototype._multiviewTexture = null;\r\n\r\nCamera.prototype._resizeOrCreateMultiviewTexture = function (width: number, height: number) {\r\n if (!this._multiviewTexture) {\r\n this._multiviewTexture = new MultiviewRenderTarget(this.getScene(), { width: width, height: height });\r\n } else if (this._multiviewTexture.getRenderWidth() != width || this._multiviewTexture.getRenderHeight() != height) {\r\n this._multiviewTexture.dispose();\r\n this._multiviewTexture = new MultiviewRenderTarget(this.getScene(), { width: width, height: height });\r\n }\r\n};\r\n\r\ndeclare module \"../../scene\" {\r\n export interface Scene {\r\n /** @hidden */\r\n _transformMatrixR: Matrix;\r\n /** @hidden */\r\n _multiviewSceneUbo: Nullable<UniformBuffer>;\r\n /** @hidden */\r\n _createMultiviewUbo(): void;\r\n /** @hidden */\r\n _updateMultiviewUbo(viewR?: Matrix, projectionR?: Matrix): void;\r\n /** @hidden */\r\n _renderMultiviewToSingleView(camera: Camera): void;\r\n }\r\n}\r\n\r\nfunction createMultiviewUbo(engine: Engine, name?: string) {\r\n const ubo = new UniformBuffer(engine, undefined, true, name);\r\n ubo.addUniform(\"viewProjection\", 16);\r\n ubo.addUniform(\"viewProjectionR\", 16);\r\n ubo.addUniform(\"view\", 16);\r\n ubo.addUniform(\"projection\", 16);\r\n ubo.addUniform(\"viewPosition\", 4);\r\n return ubo;\r\n}\r\n\r\nconst currentCreateSceneUniformBuffer = Scene.prototype.createSceneUniformBuffer;\r\n\r\nScene.prototype._transformMatrixR = Matrix.Zero();\r\nScene.prototype._multiviewSceneUbo = null;\r\nScene.prototype._createMultiviewUbo = function () {\r\n this._multiviewSceneUbo = createMultiviewUbo(this.getEngine(), \"scene_multiview\");\r\n};\r\nScene.prototype.createSceneUniformBuffer = function (name?: string): UniformBuffer {\r\n if (this._multiviewSceneUbo) {\r\n return createMultiviewUbo(this.getEngine(), name);\r\n }\r\n return currentCreateSceneUniformBuffer.bind(this)(name);\r\n};\r\nScene.prototype._updateMultiviewUbo = function (viewR?: Matrix, projectionR?: Matrix) {\r\n if (viewR && projectionR) {\r\n viewR.multiplyToRef(projectionR, this._transformMatrixR);\r\n }\r\n\r\n if (viewR && projectionR) {\r\n viewR.multiplyToRef(projectionR, TmpVectors.Matrix[0]);\r\n Frustum.GetRightPlaneToRef(TmpVectors.Matrix[0], this._frustumPlanes[3]); // Replace right plane by second camera right plane\r\n }\r\n\r\n if (this._multiviewSceneUbo) {\r\n this._multiviewSceneUbo.updateMatrix(\"viewProjection\", this.getTransformMatrix());\r\n this._multiviewSceneUbo.updateMatrix(\"viewProjectionR\", this._transformMatrixR);\r\n this._multiviewSceneUbo.updateMatrix(\"view\", this._viewMatrix);\r\n this._multiviewSceneUbo.updateMatrix(\"projection\", this._projectionMatrix);\r\n }\r\n};\r\nScene.prototype._renderMultiviewToSingleView = function (camera: Camera) {\r\n // Multiview is only able to be displayed directly for API's such as webXR\r\n // This displays a multiview image by rendering to the multiview image and then\r\n // copying the result into the sub cameras instead of rendering them and proceeding as normal from there\r\n\r\n // Render to a multiview texture\r\n camera._resizeOrCreateMultiviewTexture(\r\n (camera._rigPostProcess && camera._rigPostProcess && camera._rigPostProcess.width > 0) ? camera._rigPostProcess.width : this.getEngine().getRenderWidth(true),\r\n (camera._rigPostProcess && camera._rigPostProcess && camera._rigPostProcess.height > 0) ? camera._rigPostProcess.height : this.getEngine().getRenderHeight(true)\r\n );\r\n if (!this._multiviewSceneUbo) {\r\n this._createMultiviewUbo();\r\n }\r\n camera.outputRenderTarget = camera._multiviewTexture;\r\n this._renderForCamera(camera);\r\n camera.outputRenderTarget = null;\r\n\r\n // Consume the multiview texture through a shader for each eye\r\n for (var index = 0; index < camera._rigCameras.length; index++) {\r\n var engine = this.getEngine();\r\n this._activeCamera = camera._rigCameras[index];\r\n engine.setViewport(this._activeCamera.viewport);\r\n if (this.postProcessManager) {\r\n this.postProcessManager._prepareFrame();\r\n this.postProcessManager._finalizeFrame(this._activeCamera.isIntermediate);\r\n }\r\n }\r\n};"]}
@@ -2,7 +2,7 @@ import { Camera } from '../../Cameras/camera';
2
2
  import { Nullable } from '../../types';
3
3
  /**
4
4
  * Class used to define an additional view for the engine
5
- * @see https://doc.babylonjs.com/how_to/multi_canvases
5
+ * @see https://doc.babylonjs.com/divingDeeper/scene/multiCanvas
6
6
  */
7
7
  export declare class EngineView {
8
8
  /** Defines the canvas where to render the view */
@@ -1,7 +1,7 @@
1
1
  import { Engine } from "../engine.js";
2
2
  /**
3
3
  * Class used to define an additional view for the engine
4
- * @see https://doc.babylonjs.com/how_to/multi_canvases
4
+ * @see https://doc.babylonjs.com/divingDeeper/scene/multiCanvas
5
5
  */
6
6
  var EngineView = /** @class */ (function () {
7
7
  function EngineView() {
@@ -1 +1 @@
1
- {"version":3,"file":"engine.views.js","sourceRoot":"","sources":["../../../../sourceES6/core/Engines/Extensions/engine.views.ts"],"names":[],"mappings":"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","sourcesContent":["import { Engine } from \"../engine\";\r\nimport { Camera } from '../../Cameras/camera';\r\nimport { Nullable } from '../../types';\r\nimport { Scene } from '../../scene';\r\n\r\n/**\r\n * Class used to define an additional view for the engine\r\n * @see https://doc.babylonjs.com/how_to/multi_canvases\r\n */\r\nexport class EngineView {\r\n /** Defines the canvas where to render the view */\r\n target: HTMLCanvasElement;\r\n /** Defines an optional camera used to render the view (will use active camera else) */\r\n camera?: Camera;\r\n /** Indicates if the destination view canvas should be cleared before copying the parent canvas. Can help if the scene clear color has alpha < 1 */\r\n clearBeforeCopy?: boolean;\r\n /** Indicates if the view is enabled (true by default) */\r\n enabled: boolean;\r\n /** Defines a custom function to handle canvas size changes. (the canvas to render into is provided to the callback) */\r\n customResize?: (canvas: HTMLCanvasElement) => void;\r\n}\r\n\r\ndeclare module \"../../Engines/engine\" {\r\n export interface Engine {\r\n\r\n /**\r\n * Gets or sets the HTML element to use for attaching events\r\n */\r\n inputElement: Nullable<HTMLElement>;\r\n\r\n /**\r\n * Gets the current engine view\r\n * @see https://doc.babylonjs.com/how_to/multi_canvases\r\n */\r\n activeView: Nullable<EngineView>;\r\n\r\n /** Gets or sets the list of views */\r\n views: EngineView[];\r\n\r\n /**\r\n * Register a new child canvas\r\n * @param canvas defines the canvas to register\r\n * @param camera defines an optional camera to use with this canvas (it will overwrite the scene.camera for this view)\r\n * @param clearBeforeCopy Indicates if the destination view canvas should be cleared before copying the parent canvas. Can help if the scene clear color has alpha < 1\r\n * @returns the associated view\r\n */\r\n registerView(canvas: HTMLCanvasElement, camera?: Camera, clearBeforeCopy?: boolean): EngineView;\r\n\r\n /**\r\n * Remove a registered child canvas\r\n * @param canvas defines the canvas to remove\r\n * @returns the current engine\r\n */\r\n unRegisterView(canvas: HTMLCanvasElement): Engine;\r\n }\r\n}\r\n\r\nEngine.prototype.getInputElement = function (): Nullable<HTMLElement> {\r\n return this.inputElement || this.getRenderingCanvas();\r\n};\r\n\r\nEngine.prototype.registerView = function (canvas: HTMLCanvasElement, camera?: Camera, clearBeforeCopy?: boolean): EngineView {\r\n if (!this.views) {\r\n this.views = [];\r\n }\r\n\r\n for (var view of this.views) {\r\n if (view.target === canvas) {\r\n return view;\r\n }\r\n }\r\n\r\n let masterCanvas = this.getRenderingCanvas();\r\n if (masterCanvas) {\r\n canvas.width = masterCanvas.width;\r\n canvas.height = masterCanvas.height;\r\n }\r\n\r\n let newView = { target: canvas, camera, clearBeforeCopy, enabled: true };\r\n this.views.push(newView);\r\n\r\n if (camera) {\r\n camera.onDisposeObservable.add(() => {\r\n this.unRegisterView(canvas);\r\n });\r\n }\r\n\r\n return newView;\r\n};\r\n\r\nEngine.prototype.unRegisterView = function (canvas: HTMLCanvasElement): Engine {\r\n if (!this.views) {\r\n return this;\r\n }\r\n\r\n for (var view of this.views) {\r\n if (view.target === canvas) {\r\n let index = this.views.indexOf(view);\r\n\r\n if (index !== -1) {\r\n this.views.splice(index, 1);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\nEngine.prototype._renderViews = function () {\r\n if (!this.views) {\r\n return false;\r\n }\r\n\r\n let parent = this.getRenderingCanvas();\r\n\r\n if (!parent) {\r\n return false;\r\n }\r\n\r\n for (var view of this.views) {\r\n if (!view.enabled) {\r\n continue;\r\n }\r\n let canvas = view.target;\r\n let context = canvas.getContext(\"2d\");\r\n if (!context) {\r\n continue;\r\n }\r\n let camera = view.camera;\r\n let previewCamera: Nullable<Camera> = null;\r\n let scene: Nullable<Scene> = null;\r\n if (camera) {\r\n scene = camera.getScene();\r\n\r\n if (scene.activeCameras && scene.activeCameras.length) {\r\n continue;\r\n }\r\n\r\n this.activeView = view;\r\n\r\n previewCamera = scene.activeCamera;\r\n scene.activeCamera = camera;\r\n }\r\n\r\n if (view.customResize) {\r\n view.customResize(canvas);\r\n }\r\n else {\r\n // Set sizes\r\n const width = Math.floor(canvas.clientWidth / this._hardwareScalingLevel);\r\n const height = Math.floor(canvas.clientHeight / this._hardwareScalingLevel);\r\n\r\n const dimsChanged =\r\n width !== canvas.width || parent.width !== canvas.width ||\r\n height !== canvas.height || parent.height !== canvas.height;\r\n if (canvas.clientWidth && canvas.clientHeight && dimsChanged) {\r\n canvas.width = width;\r\n canvas.height = height;\r\n this.setSize(width, height);\r\n }\r\n }\r\n\r\n if (!parent.width || !parent.height) {\r\n return false;\r\n }\r\n\r\n // Render the frame\r\n this._renderFrame();\r\n\r\n this.flushFramebuffer();\r\n\r\n // Copy to target\r\n if (view.clearBeforeCopy) {\r\n context.clearRect(0, 0, parent.width, parent.height);\r\n }\r\n context.drawImage(parent, 0, 0);\r\n\r\n // Restore\r\n if (previewCamera && scene) {\r\n scene.activeCamera = previewCamera;\r\n }\r\n }\r\n\r\n this.activeView = null;\r\n\r\n return true;\r\n};\r\n"]}
1
+ {"version":3,"file":"engine.views.js","sourceRoot":"","sources":["../../../../sourceES6/core/Engines/Extensions/engine.views.ts"],"names":[],"mappings":"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","sourcesContent":["import { Engine } from \"../engine\";\r\nimport { Camera } from '../../Cameras/camera';\r\nimport { Nullable } from '../../types';\r\nimport { Scene } from '../../scene';\r\n\r\n/**\r\n * Class used to define an additional view for the engine\r\n * @see https://doc.babylonjs.com/divingDeeper/scene/multiCanvas\r\n */\r\nexport class EngineView {\r\n /** Defines the canvas where to render the view */\r\n target: HTMLCanvasElement;\r\n /** Defines an optional camera used to render the view (will use active camera else) */\r\n camera?: Camera;\r\n /** Indicates if the destination view canvas should be cleared before copying the parent canvas. Can help if the scene clear color has alpha < 1 */\r\n clearBeforeCopy?: boolean;\r\n /** Indicates if the view is enabled (true by default) */\r\n enabled: boolean;\r\n /** Defines a custom function to handle canvas size changes. (the canvas to render into is provided to the callback) */\r\n customResize?: (canvas: HTMLCanvasElement) => void;\r\n}\r\n\r\ndeclare module \"../../Engines/engine\" {\r\n export interface Engine {\r\n\r\n /**\r\n * Gets or sets the HTML element to use for attaching events\r\n */\r\n inputElement: Nullable<HTMLElement>;\r\n\r\n /**\r\n * Gets the current engine view\r\n * @see https://doc.babylonjs.com/how_to/multi_canvases\r\n */\r\n activeView: Nullable<EngineView>;\r\n\r\n /** Gets or sets the list of views */\r\n views: EngineView[];\r\n\r\n /**\r\n * Register a new child canvas\r\n * @param canvas defines the canvas to register\r\n * @param camera defines an optional camera to use with this canvas (it will overwrite the scene.camera for this view)\r\n * @param clearBeforeCopy Indicates if the destination view canvas should be cleared before copying the parent canvas. Can help if the scene clear color has alpha < 1\r\n * @returns the associated view\r\n */\r\n registerView(canvas: HTMLCanvasElement, camera?: Camera, clearBeforeCopy?: boolean): EngineView;\r\n\r\n /**\r\n * Remove a registered child canvas\r\n * @param canvas defines the canvas to remove\r\n * @returns the current engine\r\n */\r\n unRegisterView(canvas: HTMLCanvasElement): Engine;\r\n }\r\n}\r\n\r\nEngine.prototype.getInputElement = function (): Nullable<HTMLElement> {\r\n return this.inputElement || this.getRenderingCanvas();\r\n};\r\n\r\nEngine.prototype.registerView = function (canvas: HTMLCanvasElement, camera?: Camera, clearBeforeCopy?: boolean): EngineView {\r\n if (!this.views) {\r\n this.views = [];\r\n }\r\n\r\n for (var view of this.views) {\r\n if (view.target === canvas) {\r\n return view;\r\n }\r\n }\r\n\r\n let masterCanvas = this.getRenderingCanvas();\r\n if (masterCanvas) {\r\n canvas.width = masterCanvas.width;\r\n canvas.height = masterCanvas.height;\r\n }\r\n\r\n let newView = { target: canvas, camera, clearBeforeCopy, enabled: true };\r\n this.views.push(newView);\r\n\r\n if (camera) {\r\n camera.onDisposeObservable.add(() => {\r\n this.unRegisterView(canvas);\r\n });\r\n }\r\n\r\n return newView;\r\n};\r\n\r\nEngine.prototype.unRegisterView = function (canvas: HTMLCanvasElement): Engine {\r\n if (!this.views) {\r\n return this;\r\n }\r\n\r\n for (var view of this.views) {\r\n if (view.target === canvas) {\r\n let index = this.views.indexOf(view);\r\n\r\n if (index !== -1) {\r\n this.views.splice(index, 1);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\nEngine.prototype._renderViews = function () {\r\n if (!this.views) {\r\n return false;\r\n }\r\n\r\n let parent = this.getRenderingCanvas();\r\n\r\n if (!parent) {\r\n return false;\r\n }\r\n\r\n for (var view of this.views) {\r\n if (!view.enabled) {\r\n continue;\r\n }\r\n let canvas = view.target;\r\n let context = canvas.getContext(\"2d\");\r\n if (!context) {\r\n continue;\r\n }\r\n let camera = view.camera;\r\n let previewCamera: Nullable<Camera> = null;\r\n let scene: Nullable<Scene> = null;\r\n if (camera) {\r\n scene = camera.getScene();\r\n\r\n if (scene.activeCameras && scene.activeCameras.length) {\r\n continue;\r\n }\r\n\r\n this.activeView = view;\r\n\r\n previewCamera = scene.activeCamera;\r\n scene.activeCamera = camera;\r\n }\r\n\r\n if (view.customResize) {\r\n view.customResize(canvas);\r\n }\r\n else {\r\n // Set sizes\r\n const width = Math.floor(canvas.clientWidth / this._hardwareScalingLevel);\r\n const height = Math.floor(canvas.clientHeight / this._hardwareScalingLevel);\r\n\r\n const dimsChanged =\r\n width !== canvas.width || parent.width !== canvas.width ||\r\n height !== canvas.height || parent.height !== canvas.height;\r\n if (canvas.clientWidth && canvas.clientHeight && dimsChanged) {\r\n canvas.width = width;\r\n canvas.height = height;\r\n this.setSize(width, height);\r\n }\r\n }\r\n\r\n if (!parent.width || !parent.height) {\r\n return false;\r\n }\r\n\r\n // Render the frame\r\n this._renderFrame();\r\n\r\n this.flushFramebuffer();\r\n\r\n // Copy to target\r\n if (view.clearBeforeCopy) {\r\n context.clearRect(0, 0, parent.width, parent.height);\r\n }\r\n context.drawImage(parent, 0, 0);\r\n\r\n // Restore\r\n if (previewCamera && scene) {\r\n scene.activeCamera = previewCamera;\r\n }\r\n }\r\n\r\n this.activeView = null;\r\n\r\n return true;\r\n};\r\n"]}
@@ -9,7 +9,7 @@ export interface IShaderProcessor {
9
9
  uniformBufferRegexp?: RegExp;
10
10
  textureRegexp?: RegExp;
11
11
  noPrecision?: boolean;
12
- preProcessShaderCode?: (code: string) => string;
12
+ preProcessShaderCode?: (code: string, isFragment: boolean) => string;
13
13
  attributeProcessor?: (attribute: string, preProcessors: {
14
14
  [key: string]: string;
15
15
  }, processingContext: Nullable<ShaderProcessingContext>) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"iShaderProcessor.js","sourceRoot":"","sources":["../../../../sourceES6/core/Engines/Processors/iShaderProcessor.ts"],"names":[],"mappings":"","sourcesContent":["import { ShaderLanguage } from \"../../Materials/shaderLanguage\";\r\nimport { Nullable } from \"../../types\";\r\nimport { ShaderProcessingContext } from \"./shaderProcessingOptions\";\r\n\r\ndeclare type ThinEngine = import(\"../thinEngine\").ThinEngine;\r\n\r\n/** @hidden */\r\nexport interface IShaderProcessor {\r\n shaderLanguage: ShaderLanguage;\r\n\r\n uniformRegexp?: RegExp;\r\n uniformBufferRegexp?: RegExp;\r\n textureRegexp?: RegExp;\r\n noPrecision?: boolean;\r\n\r\n preProcessShaderCode?: (code: string) => string;\r\n attributeProcessor?: (attribute: string, preProcessors: { [key: string]: string }, processingContext: Nullable<ShaderProcessingContext>) => string;\r\n varyingProcessor?: (varying: string, isFragment: boolean, preProcessors: { [key: string]: string }, processingContext: Nullable<ShaderProcessingContext>) => string;\r\n uniformProcessor?: (uniform: string, isFragment: boolean, preProcessors: { [key: string]: string }, processingContext: Nullable<ShaderProcessingContext>) => string;\r\n uniformBufferProcessor?: (uniformBuffer: string, isFragment: boolean, processingContext: Nullable<ShaderProcessingContext>) => string;\r\n textureProcessor?: (texture: string, isFragment: boolean, preProcessors: { [key: string]: string }, processingContext: Nullable<ShaderProcessingContext>) => string;\r\n endOfUniformBufferProcessor?: (closingBracketLine: string, isFragment: boolean, processingContext: Nullable<ShaderProcessingContext>) => string;\r\n lineProcessor?: (line: string, isFragment: boolean, processingContext: Nullable<ShaderProcessingContext>) => string;\r\n preProcessor?: (code: string, defines: string[], isFragment: boolean, processingContext: Nullable<ShaderProcessingContext>) => string;\r\n postProcessor?: (code: string, defines: string[], isFragment: boolean, processingContext: Nullable<ShaderProcessingContext>, engine: ThinEngine) => string;\r\n initializeShaders?: (processingContext: Nullable<ShaderProcessingContext>) => void;\r\n finalizeShaders?: (vertexCode: string, fragmentCode: string, processingContext: Nullable<ShaderProcessingContext>) => { vertexCode: string, fragmentCode: string };\r\n}\r\n"]}
1
+ {"version":3,"file":"iShaderProcessor.js","sourceRoot":"","sources":["../../../../sourceES6/core/Engines/Processors/iShaderProcessor.ts"],"names":[],"mappings":"","sourcesContent":["import { ShaderLanguage } from \"../../Materials/shaderLanguage\";\r\nimport { Nullable } from \"../../types\";\r\nimport { ShaderProcessingContext } from \"./shaderProcessingOptions\";\r\n\r\ndeclare type ThinEngine = import(\"../thinEngine\").ThinEngine;\r\n\r\n/** @hidden */\r\nexport interface IShaderProcessor {\r\n shaderLanguage: ShaderLanguage;\r\n\r\n uniformRegexp?: RegExp;\r\n uniformBufferRegexp?: RegExp;\r\n textureRegexp?: RegExp;\r\n noPrecision?: boolean;\r\n\r\n preProcessShaderCode?: (code: string, isFragment: boolean) => string;\r\n attributeProcessor?: (attribute: string, preProcessors: { [key: string]: string }, processingContext: Nullable<ShaderProcessingContext>) => string;\r\n varyingProcessor?: (varying: string, isFragment: boolean, preProcessors: { [key: string]: string }, processingContext: Nullable<ShaderProcessingContext>) => string;\r\n uniformProcessor?: (uniform: string, isFragment: boolean, preProcessors: { [key: string]: string }, processingContext: Nullable<ShaderProcessingContext>) => string;\r\n uniformBufferProcessor?: (uniformBuffer: string, isFragment: boolean, processingContext: Nullable<ShaderProcessingContext>) => string;\r\n textureProcessor?: (texture: string, isFragment: boolean, preProcessors: { [key: string]: string }, processingContext: Nullable<ShaderProcessingContext>) => string;\r\n endOfUniformBufferProcessor?: (closingBracketLine: string, isFragment: boolean, processingContext: Nullable<ShaderProcessingContext>) => string;\r\n lineProcessor?: (line: string, isFragment: boolean, processingContext: Nullable<ShaderProcessingContext>) => string;\r\n preProcessor?: (code: string, defines: string[], isFragment: boolean, processingContext: Nullable<ShaderProcessingContext>) => string;\r\n postProcessor?: (code: string, defines: string[], isFragment: boolean, processingContext: Nullable<ShaderProcessingContext>, engine: ThinEngine) => string;\r\n initializeShaders?: (processingContext: Nullable<ShaderProcessingContext>) => void;\r\n finalizeShaders?: (vertexCode: string, fragmentCode: string, processingContext: Nullable<ShaderProcessingContext>) => { vertexCode: string, fragmentCode: string };\r\n}\r\n"]}
@@ -1,5 +1,9 @@
1
1
  import { IShaderProcessor } from './iShaderProcessor';
2
2
  import { Nullable } from '../../types';
3
+ /**
4
+ * Function for custom code generation
5
+ */
6
+ export declare type ShaderCustomProcessingFunction = (shaderType: string, code: string) => string;
3
7
  /** @hidden */
4
8
  export interface ShaderProcessingContext {
5
9
  }
@@ -21,4 +25,5 @@ export interface ProcessingOptions {
21
25
  processingContext: Nullable<ShaderProcessingContext>;
22
26
  isNDCHalfZRange: boolean;
23
27
  useReverseDepthBuffer: boolean;
28
+ processCodeAfterIncludes?: ShaderCustomProcessingFunction;
24
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"shaderProcessingOptions.js","sourceRoot":"","sources":["../../../../sourceES6/core/Engines/Processors/shaderProcessingOptions.ts"],"names":[],"mappings":"","sourcesContent":["import { IShaderProcessor } from './iShaderProcessor';\r\nimport { Nullable } from '../../types';\r\n\r\n/** @hidden */\r\nexport interface ShaderProcessingContext { }\r\n\r\n/** @hidden */\r\nexport interface ProcessingOptions {\r\n defines: string[];\r\n indexParameters: any;\r\n isFragment: boolean;\r\n shouldUseHighPrecisionShader: boolean;\r\n supportsUniformBuffers: boolean;\r\n shadersRepository: string;\r\n includesShadersStore: { [key: string]: string };\r\n processor: Nullable<IShaderProcessor>;\r\n version: string;\r\n platformName: string;\r\n lookForClosingBracketForUniformBuffer?: boolean;\r\n processingContext: Nullable<ShaderProcessingContext>;\r\n isNDCHalfZRange: boolean;\r\n useReverseDepthBuffer: boolean;\r\n}"]}
1
+ {"version":3,"file":"shaderProcessingOptions.js","sourceRoot":"","sources":["../../../../sourceES6/core/Engines/Processors/shaderProcessingOptions.ts"],"names":[],"mappings":"","sourcesContent":["import { IShaderProcessor } from './iShaderProcessor';\r\nimport { Nullable } from '../../types';\r\n\r\n/**\r\n * Function for custom code generation\r\n */\r\nexport type ShaderCustomProcessingFunction = (shaderType: string, code: string) => string;\r\n\r\n/** @hidden */\r\nexport interface ShaderProcessingContext { }\r\n\r\n/** @hidden */\r\nexport interface ProcessingOptions {\r\n defines: string[];\r\n indexParameters: any;\r\n isFragment: boolean;\r\n shouldUseHighPrecisionShader: boolean;\r\n supportsUniformBuffers: boolean;\r\n shadersRepository: string;\r\n includesShadersStore: { [key: string]: string };\r\n processor: Nullable<IShaderProcessor>;\r\n version: string;\r\n platformName: string;\r\n lookForClosingBracketForUniformBuffer?: boolean;\r\n processingContext: Nullable<ShaderProcessingContext>;\r\n isNDCHalfZRange: boolean;\r\n useReverseDepthBuffer: boolean;\r\n processCodeAfterIncludes?: ShaderCustomProcessingFunction;\r\n}"]}
@@ -24,9 +24,12 @@ var ShaderProcessor = /** @class */ (function () {
24
24
  var _this = this;
25
25
  var _a;
26
26
  if ((_a = options.processor) === null || _a === void 0 ? void 0 : _a.preProcessShaderCode) {
27
- sourceCode = options.processor.preProcessShaderCode(sourceCode);
27
+ sourceCode = options.processor.preProcessShaderCode(sourceCode, options.isFragment);
28
28
  }
29
29
  this._ProcessIncludes(sourceCode, options, function (codeWithIncludes) {
30
+ if (options.processCodeAfterIncludes) {
31
+ codeWithIncludes = options.processCodeAfterIncludes(options.isFragment ? "fragment" : "vertex", codeWithIncludes);
32
+ }
30
33
  var migratedCode = _this._ProcessShaderConversion(codeWithIncludes, options, engine);
31
34
  callback(migratedCode);
32
35
  });
@@ -35,9 +38,12 @@ var ShaderProcessor = /** @class */ (function () {
35
38
  var _this = this;
36
39
  var _a;
37
40
  if ((_a = options.processor) === null || _a === void 0 ? void 0 : _a.preProcessShaderCode) {
38
- sourceCode = options.processor.preProcessShaderCode(sourceCode);
41
+ sourceCode = options.processor.preProcessShaderCode(sourceCode, options.isFragment);
39
42
  }
40
43
  this._ProcessIncludes(sourceCode, options, function (codeWithIncludes) {
44
+ if (options.processCodeAfterIncludes) {
45
+ codeWithIncludes = options.processCodeAfterIncludes(options.isFragment ? "fragment" : "vertex", codeWithIncludes);
46
+ }
41
47
  var migratedCode = _this._ApplyPreProcessing(codeWithIncludes, options, engine);
42
48
  callback(migratedCode);
43
49
  });